From 022f0f993ca69620e10e4165f210b9ae23c4e6b6 Mon Sep 17 00:00:00 2001 From: Splitbot Date: Thu, 20 Jan 2022 00:00:54 +0000 Subject: [PATCH] Update docs (latest: v0.3.0) - Versions created: 10 - v0.2.9 - v0.2.8 - v0.2.7 - v0.2.6 - v0.2.5 - v0.2.4 - v0.2.3 - v0.2.2 - v0.2.1 - v0.2.0 - v0.1.4 - v0.1.3 - v0.1.2 - v0.1.1 - v0.1.0 - Versions modified: None - Versions deleted: None - Versions unchanged: 15 --- .../archive/v0.2.10/bloom-filter.cast | 960 ++++ .../casts/versioned/archive/v0.2.10/dbt.cast | 2217 +++++++++ .../archive/v0.2.10/import-from-csv.cast | 619 +++ .../archive/v0.2.10/import-from-mongo.cast | 657 +++ .../versioned/archive/v0.2.10/metadata.json | 23 + .../archive/v0.2.10/pg-replication.cast | 1401 ++++++ .../versioned/archive/v0.2.10/postgrest.cast | 1202 +++++ .../archive/v0.2.10/push-to-other-engine.cast | 918 ++++ .../versioned/archive/v0.2.10/splitfiles.cast | 1294 +++++ .../archive/v0.2.10/splitgraph-cloud.cast | 1338 +++++ .../archive/v0.2.10/us-election.cast | 447 ++ .../archive/v0.2.11/bloom-filter.cast | 983 ++++ .../casts/versioned/archive/v0.2.11/dbt.cast | 2226 +++++++++ .../archive/v0.2.11/import-from-csv.cast | 597 +++ .../archive/v0.2.11/import-from-mongo.cast | 657 +++ .../versioned/archive/v0.2.11/metadata.json | 23 + .../archive/v0.2.11/pg-replication.cast | 1407 ++++++ .../versioned/archive/v0.2.11/postgrest.cast | 1097 +++++ .../archive/v0.2.11/push-to-other-engine.cast | 922 ++++ .../versioned/archive/v0.2.11/splitfiles.cast | 1295 +++++ .../archive/v0.2.11/splitgraph-cloud.cast | 1338 +++++ .../archive/v0.2.11/us-election.cast | 446 ++ .../archive/v0.2.12/bloom-filter.cast | 955 ++++ .../casts/versioned/archive/v0.2.12/dbt.cast | 2431 +++++++++ .../archive/v0.2.12/import-from-csv.cast | 612 +++ .../archive/v0.2.12/import-from-mongo.cast | 660 +++ .../versioned/archive/v0.2.12/metadata.json | 23 + .../archive/v0.2.12/pg-replication.cast | 1398 ++++++ .../versioned/archive/v0.2.12/postgrest.cast | 1191 +++++ .../archive/v0.2.12/push-to-other-engine.cast | 893 ++++ .../versioned/archive/v0.2.12/splitfiles.cast | 1296 +++++ .../archive/v0.2.12/splitgraph-cloud.cast | 1338 +++++ .../archive/v0.2.12/us-election.cast | 456 ++ .../archive/v0.2.13/bloom-filter.cast | 960 ++++ .../casts/versioned/archive/v0.2.13/dbt.cast | 2337 +++++++++ .../archive/v0.2.13/import-from-csv.cast | 612 +++ .../archive/v0.2.13/import-from-mongo.cast | 669 +++ .../versioned/archive/v0.2.13/metadata.json | 23 + .../archive/v0.2.13/pg-replication.cast | 1404 ++++++ .../versioned/archive/v0.2.13/postgrest.cast | 1100 +++++ .../archive/v0.2.13/push-to-other-engine.cast | 889 ++++ .../versioned/archive/v0.2.13/splitfiles.cast | 1294 +++++ .../archive/v0.2.13/splitgraph-cloud.cast | 1340 +++++ .../archive/v0.2.13/us-election.cast | 447 ++ .../archive/v0.2.14/bloom-filter.cast | 979 ++++ .../casts/versioned/archive/v0.2.14/dbt.cast | 2207 +++++++++ .../archive/v0.2.14/import-from-csv.cast | 608 +++ .../archive/v0.2.14/import-from-mongo.cast | 669 +++ .../versioned/archive/v0.2.14/metadata.json | 23 + .../archive/v0.2.14/pg-replication.cast | 1402 ++++++ .../versioned/archive/v0.2.14/postgrest.cast | 1153 +++++ .../archive/v0.2.14/push-to-other-engine.cast | 889 ++++ .../versioned/archive/v0.2.14/splitfiles.cast | 1297 +++++ .../archive/v0.2.14/splitgraph-cloud.cast | 1340 +++++ .../archive/v0.2.14/us-election.cast | 422 ++ .../archive/v0.2.15/bloom-filter.cast | 966 ++++ .../casts/versioned/archive/v0.2.15/dbt.cast | 2229 +++++++++ .../archive/v0.2.15/import-from-csv.cast | 591 +++ .../archive/v0.2.15/import-from-mongo.cast | 669 +++ .../versioned/archive/v0.2.15/metadata.json | 23 + .../archive/v0.2.15/pg-replication.cast | 1407 ++++++ .../versioned/archive/v0.2.15/postgrest.cast | 1116 +++++ .../archive/v0.2.15/push-to-other-engine.cast | 887 ++++ .../versioned/archive/v0.2.15/splitfiles.cast | 1297 +++++ .../archive/v0.2.15/splitgraph-cloud.cast | 1336 +++++ .../archive/v0.2.15/us-election.cast | 421 ++ .../archive/v0.2.16/bloom-filter.cast | 958 ++++ .../casts/versioned/archive/v0.2.16/dbt.cast | 2322 +++++++++ .../archive/v0.2.16/import-from-csv.cast | 601 +++ .../archive/v0.2.16/import-from-mongo.cast | 669 +++ .../versioned/archive/v0.2.16/metadata.json | 23 + .../archive/v0.2.16/pg-replication.cast | 1405 ++++++ .../versioned/archive/v0.2.16/postgrest.cast | 1133 +++++ .../archive/v0.2.16/push-to-other-engine.cast | 920 ++++ .../versioned/archive/v0.2.16/splitfiles.cast | 1300 +++++ .../archive/v0.2.16/splitgraph-cloud.cast | 1338 +++++ .../archive/v0.2.16/us-election.cast | 422 ++ .../archive/v0.2.17/bloom-filter.cast | 960 ++++ .../casts/versioned/archive/v0.2.17/dbt.cast | 2348 +++++++++ .../archive/v0.2.17/import-from-csv.cast | 633 +++ .../archive/v0.2.17/import-from-mongo.cast | 669 +++ .../versioned/archive/v0.2.17/metadata.json | 23 + .../archive/v0.2.17/pg-replication.cast | 1401 ++++++ .../versioned/archive/v0.2.17/postgrest.cast | 1631 +++++++ .../archive/v0.2.17/push-to-other-engine.cast | 923 ++++ .../versioned/archive/v0.2.17/splitfiles.cast | 1301 +++++ .../archive/v0.2.17/splitgraph-cloud.cast | 1339 +++++ .../archive/v0.2.17/us-election.cast | 423 ++ .../archive/v0.2.18/bloom-filter.cast | 972 ++++ .../casts/versioned/archive/v0.2.18/dbt.cast | 2403 +++++++++ .../archive/v0.2.18/import-from-csv.cast | 607 +++ .../archive/v0.2.18/import-from-mongo.cast | 688 +++ .../versioned/archive/v0.2.18/metadata.json | 23 + .../archive/v0.2.18/pg-replication.cast | 1399 ++++++ .../versioned/archive/v0.2.18/postgrest.cast | 1421 ++++++ .../archive/v0.2.18/push-to-other-engine.cast | 920 ++++ .../versioned/archive/v0.2.18/splitfiles.cast | 1296 +++++ .../archive/v0.2.18/splitgraph-cloud.cast | 1341 +++++ .../archive/v0.2.18/us-election.cast | 423 ++ .../archive/v0.3.0/bloom-filter.cast | 968 ++++ .../casts/versioned/archive/v0.3.0/dbt.cast | 2281 +++++++++ .../archive/v0.3.0/import-from-csv.cast | 594 +++ .../archive/v0.3.0/import-from-mongo.cast | 669 +++ .../versioned/archive/v0.3.0/metadata.json | 23 + .../archive/v0.3.0/pg-replication.cast | 1399 ++++++ .../versioned/archive/v0.3.0/postgrest.cast | 1239 +++++ .../archive/v0.3.0/push-to-other-engine.cast | 888 ++++ .../versioned/archive/v0.3.0/splitfiles.cast | 1296 +++++ .../archive/v0.3.0/splitgraph-cloud.cast | 1339 +++++ .../versioned/archive/v0.3.0/us-election.cast | 423 ++ .../casts/versioned/latest/bloom-filter.cast | 1833 +++---- content/casts/versioned/latest/dbt.cast | 4340 +++++++++-------- .../versioned/latest/import-from-csv.cast | 1138 +++-- .../versioned/latest/import-from-mongo.cast | 1230 ++--- content/casts/versioned/latest/metadata.json | 24 +- .../versioned/latest/pg-replication.cast | 2498 +++++----- content/casts/versioned/latest/postgrest.cast | 1961 ++++---- .../latest/push-to-other-engine.cast | 1667 ++++--- .../casts/versioned/latest/splitfiles.cast | 2150 ++++---- .../versioned/latest/splitgraph-cloud.cast | 2502 +++++----- .../casts/versioned/latest/us-election.cast | 646 ++- content/docs-manifest.json | 200 +- .../0000_engine-add.mdx | 1 + .../0005_sharing-images/0001_push.mdx | 4 +- .../0007_splitgraph-cloud/0000_cloud-add.mdx | 10 + ...d-register.mdx => 0001_cloud-register.mdx} | 0 ...1_cloud-login.mdx => 0002_cloud-login.mdx} | 0 ...login-api.mdx => 0003_cloud-login-api.mdx} | 0 .../0004_cloud-token.mdx | 9 + ...{0003_cloud-sql.mdx => 0005_cloud-sql.mdx} | 0 ...004_cloud-curl.mdx => 0006_cloud-curl.mdx} | 0 .../0007_cloud-readme.mdx | 11 + ...ription.mdx => 0008_cloud-description.mdx} | 0 ...d-metadata.mdx => 0009_cloud-metadata.mdx} | 0 ...cloud-search.mdx => 0010_cloud-search.mdx} | 0 .../0007_splitgraph-cloud/0011_cloud-dump.mdx | 15 + .../0007_splitgraph-cloud/0012_cloud-load.mdx | 20 + .../0007_splitgraph-cloud/0013_cloud-sync.mdx | 25 + .../0014_cloud-status.mdx | 14 + .../0007_splitgraph-cloud/0015_cloud-logs.mdx | 12 + .../0016_cloud-upload.mdx | 13 + .../0017_cloud-download.mdx | 12 + .../0018_cloud-plugins.mdx | 12 + .../0007_splitgraph-cloud/0019_cloud-stub.mdx | 9 + .../0020_cloud-validate.mdx | 9 + .../0007_splitgraph-cloud/0021_cloud-seed.mdx | 10 + .../0000_checkout.mdx | 30 + .../0001_commit.mdx | 59 + .../0002_tag.mdx | 36 + .../0003_import.mdx | 32 + .../0004_reindex.mdx | 19 + .../metadata.json | 1 + .../0001_image-information/0000_log.mdx | 18 + .../0001_image-information/0001_diff.mdx | 25 + .../0001_image-information/0002_object.mdx | 14 + .../0001_image-information/0003_objects.mdx | 9 + .../0001_image-information/0004_show.mdx | 14 + .../0001_image-information/0005_table.mdx | 12 + .../0001_image-information/0006_sql.mdx | 34 + .../0001_image-information/0007_status.mdx | 12 + .../0001_image-information/metadata.json | 1 + .../0000_engine-add.mdx | 26 + .../0001_engine-delete.mdx | 11 + .../0002_engine-list.mdx | 13 + .../0003_engine-start.mdx | 7 + .../0004_engine-stop.mdx | 7 + .../0005_engine-upgrade.mdx | 15 + .../0006_engine-log.mdx | 9 + .../0007_engine-configure.mdx | 10 + .../0008_engine-version.mdx | 5 + .../0002_engine-management/metadata.json | 1 + .../0000_csv-export.mdx | 25 + .../0001_csv-import.mdx | 25 + .../0003_data-import-export/0002_mount.mdx | 10 + .../0003_singer-target.mdx | 23 + .../0003_data-import-export/metadata.json | 1 + .../v0.2.10/0004_miscellaneous/0000_rm.mdx | 40 + .../v0.2.10/0004_miscellaneous/0001_init.mdx | 25 + .../0004_miscellaneous/0002_cleanup.mdx | 7 + .../v0.2.10/0004_miscellaneous/0003_prune.mdx | 20 + .../0004_miscellaneous/0004_config.mdx | 33 + .../v0.2.10/0004_miscellaneous/0005_dump.mdx | 9 + .../v0.2.10/0004_miscellaneous/0006_eval.mdx | 39 + .../0004_miscellaneous/0007_upgrade.mdx | 17 + .../v0.2.10/0004_miscellaneous/metadata.json | 1 + .../0005_sharing-images/0000_clone.mdx | 15 + .../v0.2.10/0005_sharing-images/0001_push.mdx | 30 + .../v0.2.10/0005_sharing-images/0002_pull.mdx | 11 + .../0005_sharing-images/0003_upstream.mdx | 29 + .../v0.2.10/0005_sharing-images/metadata.json | 1 + .../0006_splitfile-execution/0000_build.mdx | 29 + .../0006_splitfile-execution/0001_rebuild.mdx | 27 + .../0002_provenance.mdx | 62 + .../0003_dependents.mdx | 21 + .../0006_splitfile-execution/metadata.json | 1 + .../0000_cloud-register.mdx | 18 + .../0001_cloud-login.mdx | 23 + .../0002_cloud-login-api.mdx | 15 + .../0007_splitgraph-cloud/0003_cloud-sql.mdx | 20 + .../0007_splitgraph-cloud/0004_cloud-curl.mdx | 32 + .../0005_cloud-readme.mdx | 0 .../0006_cloud-description.mdx | 11 + .../0007_cloud-metadata.mdx | 41 + .../0008_cloud-search.mdx | 12 + .../0007_splitgraph-cloud/metadata.json | 1 + .../9000_versions/v0.2.10/metadata.json | 23 + .../0000_checkout.mdx | 30 + .../0001_commit.mdx | 59 + .../0002_tag.mdx | 36 + .../0003_import.mdx | 32 + .../0004_reindex.mdx | 19 + .../metadata.json | 1 + .../0001_image-information/0000_log.mdx | 18 + .../0001_image-information/0001_diff.mdx | 25 + .../0001_image-information/0002_object.mdx | 14 + .../0001_image-information/0003_objects.mdx | 9 + .../0001_image-information/0004_show.mdx | 14 + .../0001_image-information/0005_table.mdx | 12 + .../0001_image-information/0006_sql.mdx | 34 + .../0001_image-information/0007_status.mdx | 12 + .../0001_image-information/metadata.json | 1 + .../0000_engine-add.mdx | 26 + .../0001_engine-delete.mdx | 11 + .../0002_engine-list.mdx | 13 + .../0003_engine-start.mdx | 7 + .../0004_engine-stop.mdx | 7 + .../0005_engine-upgrade.mdx | 15 + .../0006_engine-log.mdx | 9 + .../0007_engine-configure.mdx | 10 + .../0008_engine-version.mdx | 5 + .../0002_engine-management/metadata.json | 1 + .../0000_csv-export.mdx | 25 + .../0001_csv-import.mdx | 25 + .../0003_data-import-export/0002_mount.mdx | 10 + .../0003_singer-target.mdx | 23 + .../0003_data-import-export/metadata.json | 1 + .../v0.2.11/0004_miscellaneous/0000_rm.mdx | 40 + .../v0.2.11/0004_miscellaneous/0001_init.mdx | 25 + .../0004_miscellaneous/0002_cleanup.mdx | 7 + .../v0.2.11/0004_miscellaneous/0003_prune.mdx | 20 + .../0004_miscellaneous/0004_config.mdx | 33 + .../v0.2.11/0004_miscellaneous/0005_dump.mdx | 9 + .../v0.2.11/0004_miscellaneous/0006_eval.mdx | 39 + .../0004_miscellaneous/0007_upgrade.mdx | 17 + .../v0.2.11/0004_miscellaneous/metadata.json | 1 + .../0005_sharing-images/0000_clone.mdx | 15 + .../v0.2.11/0005_sharing-images/0001_push.mdx | 30 + .../v0.2.11/0005_sharing-images/0002_pull.mdx | 11 + .../0005_sharing-images/0003_upstream.mdx | 29 + .../v0.2.11/0005_sharing-images/metadata.json | 1 + .../0006_splitfile-execution/0000_build.mdx | 29 + .../0006_splitfile-execution/0001_rebuild.mdx | 27 + .../0002_provenance.mdx | 62 + .../0003_dependents.mdx | 21 + .../0006_splitfile-execution/metadata.json | 1 + .../0000_cloud-register.mdx | 18 + .../0001_cloud-login.mdx | 23 + .../0002_cloud-login-api.mdx | 15 + .../0007_splitgraph-cloud/0003_cloud-sql.mdx | 20 + .../0007_splitgraph-cloud/0004_cloud-curl.mdx | 32 + .../0005_cloud-readme.mdx | 11 + .../0006_cloud-description.mdx | 11 + .../0007_cloud-metadata.mdx | 41 + .../0008_cloud-search.mdx | 12 + .../0007_splitgraph-cloud/metadata.json | 1 + .../9000_versions/v0.2.11/metadata.json | 23 + .../0000_checkout.mdx | 30 + .../0001_commit.mdx | 59 + .../0002_tag.mdx | 36 + .../0003_import.mdx | 32 + .../0004_reindex.mdx | 19 + .../metadata.json | 1 + .../0001_image-information/0000_log.mdx | 18 + .../0001_image-information/0001_diff.mdx | 25 + .../0001_image-information/0002_object.mdx | 14 + .../0001_image-information/0003_objects.mdx | 9 + .../0001_image-information/0004_show.mdx | 14 + .../0001_image-information/0005_table.mdx | 12 + .../0001_image-information/0006_sql.mdx | 34 + .../0001_image-information/0007_status.mdx | 12 + .../0001_image-information/metadata.json | 1 + .../0000_engine-add.mdx | 26 + .../0001_engine-delete.mdx | 11 + .../0002_engine-list.mdx | 13 + .../0003_engine-start.mdx | 7 + .../0004_engine-stop.mdx | 7 + .../0005_engine-upgrade.mdx | 15 + .../0006_engine-log.mdx | 9 + .../0007_engine-configure.mdx | 10 + .../0008_engine-version.mdx | 5 + .../0002_engine-management/metadata.json | 1 + .../0000_csv-export.mdx | 25 + .../0001_csv-import.mdx | 25 + .../0003_data-import-export/0002_mount.mdx | 10 + .../0003_singer-target.mdx | 23 + .../0003_data-import-export/metadata.json | 1 + .../v0.2.12/0004_miscellaneous/0000_rm.mdx | 40 + .../v0.2.12/0004_miscellaneous/0001_init.mdx | 25 + .../0004_miscellaneous/0002_cleanup.mdx | 7 + .../v0.2.12/0004_miscellaneous/0003_prune.mdx | 20 + .../0004_miscellaneous/0004_config.mdx | 33 + .../v0.2.12/0004_miscellaneous/0005_dump.mdx | 9 + .../v0.2.12/0004_miscellaneous/0006_eval.mdx | 39 + .../0004_miscellaneous/0007_upgrade.mdx | 17 + .../v0.2.12/0004_miscellaneous/metadata.json | 1 + .../0005_sharing-images/0000_clone.mdx | 15 + .../v0.2.12/0005_sharing-images/0001_push.mdx | 30 + .../v0.2.12/0005_sharing-images/0002_pull.mdx | 11 + .../0005_sharing-images/0003_upstream.mdx | 29 + .../v0.2.12/0005_sharing-images/metadata.json | 1 + .../0006_splitfile-execution/0000_build.mdx | 29 + .../0006_splitfile-execution/0001_rebuild.mdx | 27 + .../0002_provenance.mdx | 62 + .../0003_dependents.mdx | 21 + .../0006_splitfile-execution/metadata.json | 1 + .../0000_cloud-register.mdx | 18 + .../0001_cloud-login.mdx | 23 + .../0002_cloud-login-api.mdx | 15 + .../0007_splitgraph-cloud/0003_cloud-sql.mdx | 20 + .../0007_splitgraph-cloud/0004_cloud-curl.mdx | 32 + .../0005_cloud-readme.mdx | 11 + .../0006_cloud-description.mdx | 11 + .../0007_cloud-metadata.mdx | 41 + .../0008_cloud-search.mdx | 12 + .../0007_splitgraph-cloud/metadata.json | 1 + .../9000_versions/v0.2.12/metadata.json | 23 + .../0000_checkout.mdx | 30 + .../0001_commit.mdx | 59 + .../0002_tag.mdx | 36 + .../0003_import.mdx | 32 + .../0004_reindex.mdx | 19 + .../metadata.json | 1 + .../0001_image-information/0000_log.mdx | 18 + .../0001_image-information/0001_diff.mdx | 25 + .../0001_image-information/0002_object.mdx | 14 + .../0001_image-information/0003_objects.mdx | 9 + .../0001_image-information/0004_show.mdx | 14 + .../0001_image-information/0005_table.mdx | 12 + .../0001_image-information/0006_sql.mdx | 34 + .../0001_image-information/0007_status.mdx | 12 + .../0001_image-information/metadata.json | 1 + .../0000_engine-add.mdx | 26 + .../0001_engine-delete.mdx | 11 + .../0002_engine-list.mdx | 13 + .../0003_engine-start.mdx | 7 + .../0004_engine-stop.mdx | 7 + .../0005_engine-upgrade.mdx | 15 + .../0006_engine-log.mdx | 9 + .../0007_engine-configure.mdx | 10 + .../0008_engine-version.mdx | 5 + .../0002_engine-management/metadata.json | 1 + .../0000_csv-export.mdx | 25 + .../0001_csv-import.mdx | 25 + .../0003_data-import-export/0002_mount.mdx | 10 + .../0003_singer-target.mdx | 23 + .../0003_data-import-export/metadata.json | 1 + .../v0.2.13/0004_miscellaneous/0000_rm.mdx | 40 + .../v0.2.13/0004_miscellaneous/0001_init.mdx | 25 + .../0004_miscellaneous/0002_cleanup.mdx | 7 + .../v0.2.13/0004_miscellaneous/0003_prune.mdx | 20 + .../0004_miscellaneous/0004_config.mdx | 33 + .../v0.2.13/0004_miscellaneous/0005_dump.mdx | 9 + .../v0.2.13/0004_miscellaneous/0006_eval.mdx | 39 + .../0004_miscellaneous/0007_upgrade.mdx | 17 + .../v0.2.13/0004_miscellaneous/metadata.json | 1 + .../0005_sharing-images/0000_clone.mdx | 15 + .../v0.2.13/0005_sharing-images/0001_push.mdx | 30 + .../v0.2.13/0005_sharing-images/0002_pull.mdx | 11 + .../0005_sharing-images/0003_upstream.mdx | 29 + .../v0.2.13/0005_sharing-images/metadata.json | 1 + .../0006_splitfile-execution/0000_build.mdx | 29 + .../0006_splitfile-execution/0001_rebuild.mdx | 27 + .../0002_provenance.mdx | 62 + .../0003_dependents.mdx | 21 + .../0006_splitfile-execution/metadata.json | 1 + .../0000_cloud-register.mdx | 18 + .../0001_cloud-login.mdx | 23 + .../0002_cloud-login-api.mdx | 15 + .../0007_splitgraph-cloud/0003_cloud-sql.mdx | 20 + .../0007_splitgraph-cloud/0004_cloud-curl.mdx | 32 + .../0005_cloud-readme.mdx | 11 + .../0006_cloud-description.mdx | 11 + .../0007_cloud-metadata.mdx | 41 + .../0008_cloud-search.mdx | 12 + .../0007_splitgraph-cloud/metadata.json | 1 + .../9000_versions/v0.2.13/metadata.json | 23 + .../0000_checkout.mdx | 30 + .../0001_commit.mdx | 59 + .../0002_tag.mdx | 36 + .../0003_import.mdx | 32 + .../0004_reindex.mdx | 19 + .../metadata.json | 1 + .../0001_image-information/0000_log.mdx | 18 + .../0001_image-information/0001_diff.mdx | 25 + .../0001_image-information/0002_object.mdx | 14 + .../0001_image-information/0003_objects.mdx | 9 + .../0001_image-information/0004_show.mdx | 14 + .../0001_image-information/0005_table.mdx | 12 + .../0001_image-information/0006_sql.mdx | 34 + .../0001_image-information/0007_status.mdx | 12 + .../0001_image-information/metadata.json | 1 + .../0000_engine-add.mdx | 26 + .../0001_engine-delete.mdx | 11 + .../0002_engine-list.mdx | 13 + .../0003_engine-start.mdx | 7 + .../0004_engine-stop.mdx | 7 + .../0005_engine-upgrade.mdx | 15 + .../0006_engine-log.mdx | 9 + .../0007_engine-configure.mdx | 10 + .../0008_engine-version.mdx | 5 + .../0002_engine-management/metadata.json | 1 + .../0000_csv-export.mdx | 25 + .../0001_csv-import.mdx | 25 + .../0003_data-import-export/0002_mount.mdx | 10 + .../0003_singer-target.mdx | 23 + .../0003_data-import-export/metadata.json | 1 + .../v0.2.14/0004_miscellaneous/0000_rm.mdx | 40 + .../v0.2.14/0004_miscellaneous/0001_init.mdx | 25 + .../0004_miscellaneous/0002_cleanup.mdx | 7 + .../v0.2.14/0004_miscellaneous/0003_prune.mdx | 20 + .../0004_miscellaneous/0004_config.mdx | 33 + .../v0.2.14/0004_miscellaneous/0005_dump.mdx | 9 + .../v0.2.14/0004_miscellaneous/0006_eval.mdx | 39 + .../0004_miscellaneous/0007_upgrade.mdx | 17 + .../v0.2.14/0004_miscellaneous/metadata.json | 1 + .../0005_sharing-images/0000_clone.mdx | 15 + .../v0.2.14/0005_sharing-images/0001_push.mdx | 30 + .../v0.2.14/0005_sharing-images/0002_pull.mdx | 11 + .../0005_sharing-images/0003_upstream.mdx | 29 + .../v0.2.14/0005_sharing-images/metadata.json | 1 + .../0006_splitfile-execution/0000_build.mdx | 29 + .../0006_splitfile-execution/0001_rebuild.mdx | 27 + .../0002_provenance.mdx | 62 + .../0003_dependents.mdx | 21 + .../0006_splitfile-execution/metadata.json | 1 + .../0000_cloud-register.mdx | 18 + .../0001_cloud-login.mdx | 23 + .../0002_cloud-login-api.mdx | 15 + .../0007_splitgraph-cloud/0003_cloud-sql.mdx | 20 + .../0007_splitgraph-cloud/0004_cloud-curl.mdx | 32 + .../0005_cloud-readme.mdx | 11 + .../0006_cloud-description.mdx | 11 + .../0007_cloud-metadata.mdx | 41 + .../0008_cloud-search.mdx | 12 + .../0007_splitgraph-cloud/0009_cloud-dump.mdx | 15 + .../0007_splitgraph-cloud/0010_cloud-load.mdx | 67 + .../0007_splitgraph-cloud/metadata.json | 1 + .../9000_versions/v0.2.14/metadata.json | 23 + .../0000_checkout.mdx | 30 + .../0001_commit.mdx | 59 + .../0002_tag.mdx | 36 + .../0003_import.mdx | 32 + .../0004_reindex.mdx | 19 + .../metadata.json | 1 + .../0001_image-information/0000_log.mdx | 18 + .../0001_image-information/0001_diff.mdx | 25 + .../0001_image-information/0002_object.mdx | 14 + .../0001_image-information/0003_objects.mdx | 9 + .../0001_image-information/0004_show.mdx | 14 + .../0001_image-information/0005_table.mdx | 12 + .../0001_image-information/0006_sql.mdx | 34 + .../0001_image-information/0007_status.mdx | 12 + .../0001_image-information/metadata.json | 1 + .../0000_engine-add.mdx | 26 + .../0001_engine-delete.mdx | 11 + .../0002_engine-list.mdx | 13 + .../0003_engine-start.mdx | 7 + .../0004_engine-stop.mdx | 7 + .../0005_engine-upgrade.mdx | 15 + .../0006_engine-log.mdx | 9 + .../0007_engine-configure.mdx | 10 + .../0008_engine-version.mdx | 5 + .../0002_engine-management/metadata.json | 1 + .../0000_csv-export.mdx | 25 + .../0001_csv-import.mdx | 25 + .../0003_data-import-export/0002_mount.mdx | 10 + .../0003_singer-target.mdx | 23 + .../0003_data-import-export/metadata.json | 1 + .../v0.2.15/0004_miscellaneous/0000_rm.mdx | 40 + .../v0.2.15/0004_miscellaneous/0001_init.mdx | 25 + .../0004_miscellaneous/0002_cleanup.mdx | 7 + .../v0.2.15/0004_miscellaneous/0003_prune.mdx | 20 + .../0004_miscellaneous/0004_config.mdx | 33 + .../v0.2.15/0004_miscellaneous/0005_dump.mdx | 9 + .../v0.2.15/0004_miscellaneous/0006_eval.mdx | 39 + .../0004_miscellaneous/0007_upgrade.mdx | 17 + .../v0.2.15/0004_miscellaneous/metadata.json | 1 + .../0005_sharing-images/0000_clone.mdx | 15 + .../v0.2.15/0005_sharing-images/0001_push.mdx | 30 + .../v0.2.15/0005_sharing-images/0002_pull.mdx | 11 + .../0005_sharing-images/0003_upstream.mdx | 29 + .../v0.2.15/0005_sharing-images/metadata.json | 1 + .../0006_splitfile-execution/0000_build.mdx | 29 + .../0006_splitfile-execution/0001_rebuild.mdx | 27 + .../0002_provenance.mdx | 62 + .../0003_dependents.mdx | 21 + .../0006_splitfile-execution/metadata.json | 1 + .../0007_splitgraph-cloud/0000_cloud-add.mdx | 10 + .../0001_cloud-register.mdx | 18 + .../0002_cloud-login.mdx | 23 + .../0003_cloud-login-api.mdx | 15 + .../0007_splitgraph-cloud/0004_cloud-sql.mdx | 20 + .../0007_splitgraph-cloud/0005_cloud-curl.mdx | 32 + .../0006_cloud-readme.mdx | 11 + .../0007_cloud-description.mdx | 11 + .../0008_cloud-metadata.mdx | 41 + .../0009_cloud-search.mdx | 12 + .../0007_splitgraph-cloud/0010_cloud-dump.mdx | 15 + .../0007_splitgraph-cloud/0011_cloud-load.mdx | 67 + .../0012_cloud-token.mdx | 9 + .../0007_splitgraph-cloud/metadata.json | 1 + .../9000_versions/v0.2.15/metadata.json | 23 + .../0000_checkout.mdx | 30 + .../0001_commit.mdx | 59 + .../0002_tag.mdx | 36 + .../0003_import.mdx | 32 + .../0004_reindex.mdx | 19 + .../metadata.json | 1 + .../0001_image-information/0000_log.mdx | 18 + .../0001_image-information/0001_diff.mdx | 25 + .../0001_image-information/0002_object.mdx | 14 + .../0001_image-information/0003_objects.mdx | 9 + .../0001_image-information/0004_show.mdx | 14 + .../0001_image-information/0005_table.mdx | 12 + .../0001_image-information/0006_sql.mdx | 34 + .../0001_image-information/0007_status.mdx | 12 + .../0001_image-information/metadata.json | 1 + .../0000_engine-add.mdx | 26 + .../0001_engine-delete.mdx | 11 + .../0002_engine-list.mdx | 13 + .../0003_engine-start.mdx | 7 + .../0004_engine-stop.mdx | 7 + .../0005_engine-upgrade.mdx | 15 + .../0006_engine-log.mdx | 9 + .../0007_engine-configure.mdx | 10 + .../0008_engine-version.mdx | 5 + .../0002_engine-management/metadata.json | 1 + .../0000_csv-export.mdx | 25 + .../0001_csv-import.mdx | 25 + .../0003_data-import-export/0002_mount.mdx | 10 + .../0003_singer-target.mdx | 23 + .../0003_data-import-export/metadata.json | 1 + .../v0.2.16/0004_miscellaneous/0000_rm.mdx | 40 + .../v0.2.16/0004_miscellaneous/0001_init.mdx | 25 + .../0004_miscellaneous/0002_cleanup.mdx | 7 + .../v0.2.16/0004_miscellaneous/0003_prune.mdx | 20 + .../0004_miscellaneous/0004_config.mdx | 33 + .../v0.2.16/0004_miscellaneous/0005_dump.mdx | 9 + .../v0.2.16/0004_miscellaneous/0006_eval.mdx | 39 + .../0004_miscellaneous/0007_upgrade.mdx | 17 + .../v0.2.16/0004_miscellaneous/metadata.json | 1 + .../0005_sharing-images/0000_clone.mdx | 15 + .../v0.2.16/0005_sharing-images/0001_push.mdx | 30 + .../v0.2.16/0005_sharing-images/0002_pull.mdx | 11 + .../0005_sharing-images/0003_upstream.mdx | 29 + .../v0.2.16/0005_sharing-images/metadata.json | 1 + .../0006_splitfile-execution/0000_build.mdx | 29 + .../0006_splitfile-execution/0001_rebuild.mdx | 27 + .../0002_provenance.mdx | 62 + .../0003_dependents.mdx | 21 + .../0006_splitfile-execution/metadata.json | 1 + .../0007_splitgraph-cloud/0000_cloud-add.mdx | 10 + .../0001_cloud-register.mdx | 18 + .../0002_cloud-login.mdx | 23 + .../0003_cloud-login-api.mdx | 15 + .../0007_splitgraph-cloud/0004_cloud-sql.mdx | 20 + .../0007_splitgraph-cloud/0005_cloud-curl.mdx | 32 + .../0006_cloud-readme.mdx | 11 + .../0007_cloud-description.mdx | 11 + .../0008_cloud-metadata.mdx | 41 + .../0009_cloud-search.mdx | 12 + .../0007_splitgraph-cloud/0010_cloud-dump.mdx | 15 + .../0007_splitgraph-cloud/0011_cloud-load.mdx | 67 + .../0012_cloud-token.mdx | 9 + .../0007_splitgraph-cloud/metadata.json | 1 + .../9000_versions/v0.2.16/metadata.json | 23 + .../0000_checkout.mdx | 30 + .../0001_commit.mdx | 59 + .../0002_tag.mdx | 36 + .../0003_import.mdx | 32 + .../0004_reindex.mdx | 19 + .../metadata.json | 1 + .../0001_image-information/0000_log.mdx | 18 + .../0001_image-information/0001_diff.mdx | 25 + .../0001_image-information/0002_object.mdx | 14 + .../0001_image-information/0003_objects.mdx | 9 + .../0001_image-information/0004_show.mdx | 14 + .../0001_image-information/0005_table.mdx | 12 + .../0001_image-information/0006_sql.mdx | 34 + .../0001_image-information/0007_status.mdx | 12 + .../0001_image-information/metadata.json | 1 + .../0000_engine-add.mdx | 26 + .../0001_engine-delete.mdx | 11 + .../0002_engine-list.mdx | 13 + .../0003_engine-start.mdx | 7 + .../0004_engine-stop.mdx | 7 + .../0005_engine-upgrade.mdx | 15 + .../0006_engine-log.mdx | 9 + .../0007_engine-configure.mdx | 10 + .../0008_engine-version.mdx | 5 + .../0002_engine-management/metadata.json | 1 + .../0000_csv-export.mdx | 25 + .../0001_csv-import.mdx | 25 + .../0003_data-import-export/0002_mount.mdx | 10 + .../0003_singer-target.mdx | 23 + .../0003_data-import-export/metadata.json | 1 + .../v0.2.17/0004_miscellaneous/0000_rm.mdx | 40 + .../v0.2.17/0004_miscellaneous/0001_init.mdx | 25 + .../0004_miscellaneous/0002_cleanup.mdx | 7 + .../v0.2.17/0004_miscellaneous/0003_prune.mdx | 20 + .../0004_miscellaneous/0004_config.mdx | 33 + .../v0.2.17/0004_miscellaneous/0005_dump.mdx | 9 + .../v0.2.17/0004_miscellaneous/0006_eval.mdx | 39 + .../0004_miscellaneous/0007_upgrade.mdx | 17 + .../v0.2.17/0004_miscellaneous/metadata.json | 1 + .../0005_sharing-images/0000_clone.mdx | 15 + .../v0.2.17/0005_sharing-images/0001_push.mdx | 30 + .../v0.2.17/0005_sharing-images/0002_pull.mdx | 11 + .../0005_sharing-images/0003_upstream.mdx | 29 + .../v0.2.17/0005_sharing-images/metadata.json | 1 + .../0006_splitfile-execution/0000_build.mdx | 29 + .../0006_splitfile-execution/0001_rebuild.mdx | 27 + .../0002_provenance.mdx | 62 + .../0003_dependents.mdx | 21 + .../0006_splitfile-execution/metadata.json | 1 + .../0007_splitgraph-cloud/0000_cloud-add.mdx | 10 + .../0001_cloud-register.mdx | 18 + .../0002_cloud-login.mdx | 23 + .../0003_cloud-login-api.mdx | 15 + .../0007_splitgraph-cloud/0004_cloud-sql.mdx | 20 + .../0007_splitgraph-cloud/0005_cloud-curl.mdx | 32 + .../0006_cloud-readme.mdx | 11 + .../0007_cloud-description.mdx | 11 + .../0008_cloud-metadata.mdx | 41 + .../0009_cloud-search.mdx | 12 + .../0007_splitgraph-cloud/0010_cloud-dump.mdx | 15 + .../0007_splitgraph-cloud/0011_cloud-load.mdx | 67 + .../0012_cloud-token.mdx | 9 + .../0007_splitgraph-cloud/metadata.json | 1 + .../9000_versions/v0.2.17/metadata.json | 23 + .../0000_checkout.mdx | 30 + .../0001_commit.mdx | 59 + .../0002_tag.mdx | 36 + .../0003_import.mdx | 32 + .../0004_reindex.mdx | 19 + .../metadata.json | 1 + .../0001_image-information/0000_log.mdx | 18 + .../0001_image-information/0001_diff.mdx | 25 + .../0001_image-information/0002_object.mdx | 14 + .../0001_image-information/0003_objects.mdx | 9 + .../0001_image-information/0004_show.mdx | 14 + .../0001_image-information/0005_table.mdx | 12 + .../0001_image-information/0006_sql.mdx | 34 + .../0001_image-information/0007_status.mdx | 12 + .../0001_image-information/metadata.json | 1 + .../0000_engine-add.mdx | 26 + .../0001_engine-delete.mdx | 11 + .../0002_engine-list.mdx | 13 + .../0003_engine-start.mdx | 7 + .../0004_engine-stop.mdx | 7 + .../0005_engine-upgrade.mdx | 15 + .../0006_engine-log.mdx | 9 + .../0007_engine-configure.mdx | 10 + .../0008_engine-version.mdx | 5 + .../0002_engine-management/metadata.json | 1 + .../0000_csv-export.mdx | 25 + .../0001_csv-import.mdx | 25 + .../0003_data-import-export/0002_mount.mdx | 10 + .../0003_singer-target.mdx | 23 + .../0003_data-import-export/metadata.json | 1 + .../v0.2.18/0004_miscellaneous/0000_rm.mdx | 40 + .../v0.2.18/0004_miscellaneous/0001_init.mdx | 25 + .../0004_miscellaneous/0002_cleanup.mdx | 7 + .../v0.2.18/0004_miscellaneous/0003_prune.mdx | 20 + .../0004_miscellaneous/0004_config.mdx | 33 + .../v0.2.18/0004_miscellaneous/0005_dump.mdx | 9 + .../v0.2.18/0004_miscellaneous/0006_eval.mdx | 39 + .../0004_miscellaneous/0007_upgrade.mdx | 17 + .../v0.2.18/0004_miscellaneous/metadata.json | 1 + .../0005_sharing-images/0000_clone.mdx | 15 + .../v0.2.18/0005_sharing-images/0001_push.mdx | 30 + .../v0.2.18/0005_sharing-images/0002_pull.mdx | 11 + .../0005_sharing-images/0003_upstream.mdx | 29 + .../v0.2.18/0005_sharing-images/metadata.json | 1 + .../0006_splitfile-execution/0000_build.mdx | 29 + .../0006_splitfile-execution/0001_rebuild.mdx | 27 + .../0002_provenance.mdx | 62 + .../0003_dependents.mdx | 21 + .../0006_splitfile-execution/metadata.json | 1 + .../0007_splitgraph-cloud/0000_cloud-add.mdx | 10 + .../0001_cloud-register.mdx | 18 + .../0002_cloud-login.mdx | 23 + .../0003_cloud-login-api.mdx | 15 + .../0007_splitgraph-cloud/0004_cloud-sql.mdx | 20 + .../0007_splitgraph-cloud/0005_cloud-curl.mdx | 32 + .../0006_cloud-readme.mdx | 11 + .../0007_cloud-description.mdx | 11 + .../0008_cloud-metadata.mdx | 41 + .../0009_cloud-search.mdx | 12 + .../0007_splitgraph-cloud/0010_cloud-dump.mdx | 15 + .../0007_splitgraph-cloud/0011_cloud-load.mdx | 67 + .../0012_cloud-token.mdx | 9 + .../0007_splitgraph-cloud/metadata.json | 1 + .../9000_versions/v0.2.18/metadata.json | 23 + .../0000_checkout.mdx | 30 + .../0001_commit.mdx | 59 + .../0002_tag.mdx | 36 + .../0003_import.mdx | 32 + .../0004_reindex.mdx | 19 + .../metadata.json | 1 + .../0001_image-information/0000_log.mdx | 18 + .../0001_image-information/0001_diff.mdx | 25 + .../0001_image-information/0002_object.mdx | 14 + .../0001_image-information/0003_objects.mdx | 9 + .../0001_image-information/0004_show.mdx | 14 + .../0001_image-information/0005_table.mdx | 12 + .../0001_image-information/0006_sql.mdx | 34 + .../0001_image-information/0007_status.mdx | 12 + .../0001_image-information/metadata.json | 1 + .../0000_engine-add.mdx | 27 + .../0001_engine-delete.mdx | 11 + .../0002_engine-list.mdx | 13 + .../0003_engine-start.mdx | 7 + .../0004_engine-stop.mdx | 7 + .../0005_engine-upgrade.mdx | 15 + .../0006_engine-log.mdx | 9 + .../0007_engine-configure.mdx | 10 + .../0008_engine-version.mdx | 5 + .../0002_engine-management/metadata.json | 1 + .../0000_csv-export.mdx | 25 + .../0001_csv-import.mdx | 25 + .../0003_data-import-export/0002_mount.mdx | 10 + .../0003_singer-target.mdx | 23 + .../0003_data-import-export/metadata.json | 1 + .../v0.3.0/0004_miscellaneous/0000_rm.mdx | 40 + .../v0.3.0/0004_miscellaneous/0001_init.mdx | 25 + .../0004_miscellaneous/0002_cleanup.mdx | 7 + .../v0.3.0/0004_miscellaneous/0003_prune.mdx | 20 + .../v0.3.0/0004_miscellaneous/0004_config.mdx | 33 + .../v0.3.0/0004_miscellaneous/0005_dump.mdx | 9 + .../v0.3.0/0004_miscellaneous/0006_eval.mdx | 39 + .../0004_miscellaneous/0007_upgrade.mdx | 17 + .../v0.3.0/0004_miscellaneous/metadata.json | 1 + .../v0.3.0/0005_sharing-images/0000_clone.mdx | 15 + .../v0.3.0/0005_sharing-images/0001_push.mdx | 30 + .../v0.3.0/0005_sharing-images/0002_pull.mdx | 11 + .../0005_sharing-images/0003_upstream.mdx | 29 + .../v0.3.0/0005_sharing-images/metadata.json | 1 + .../0006_splitfile-execution/0000_build.mdx | 29 + .../0006_splitfile-execution/0001_rebuild.mdx | 27 + .../0002_provenance.mdx | 62 + .../0003_dependents.mdx | 21 + .../0006_splitfile-execution/metadata.json | 1 + .../0007_splitgraph-cloud/0000_cloud-add.mdx | 10 + .../0001_cloud-register.mdx | 18 + .../0002_cloud-login.mdx | 23 + .../0003_cloud-login-api.mdx | 15 + .../0004_cloud-token.mdx | 9 + .../0007_splitgraph-cloud/0005_cloud-sql.mdx | 20 + .../0007_splitgraph-cloud/0006_cloud-curl.mdx | 32 + .../0007_cloud-readme.mdx | 11 + .../0008_cloud-description.mdx | 11 + .../0009_cloud-metadata.mdx | 41 + .../0010_cloud-search.mdx | 12 + .../0007_splitgraph-cloud/0011_cloud-dump.mdx | 15 + .../0007_splitgraph-cloud/0012_cloud-load.mdx | 20 + .../0007_splitgraph-cloud/0013_cloud-sync.mdx | 25 + .../0014_cloud-status.mdx | 14 + .../0007_splitgraph-cloud/0015_cloud-logs.mdx | 12 + .../0016_cloud-upload.mdx | 13 + .../0017_cloud-download.mdx | 12 + .../0018_cloud-plugins.mdx | 12 + .../0007_splitgraph-cloud/0019_cloud-stub.mdx | 9 + .../0020_cloud-validate.mdx | 9 + .../0007_splitgraph-cloud/0021_cloud-seed.mdx | 10 + .../0007_splitgraph-cloud/metadata.json | 1 + .../9000_versions/v0.3.0/metadata.json | 23 + content/docs/9000_sgr/metadata.json | 22 +- .../9000_versions/v0.2.10/metadata.json | 23 + .../v0.2.10/splitgraph.cloud.mdx | 209 + .../v0.2.10/splitgraph.commandline.mdx | 365 ++ .../v0.2.10/splitgraph.config.mdx | 392 ++ .../v0.2.10/splitgraph.core.indexing.mdx | 141 + .../9000_versions/v0.2.10/splitgraph.core.mdx | 2021 ++++++++ .../v0.2.10/splitgraph.core.sql.mdx | 120 + .../v0.2.10/splitgraph.engine.mdx | 565 +++ .../v0.2.10/splitgraph.engine.postgres.mdx | 450 ++ .../v0.2.10/splitgraph.hooks.data_source.mdx | 515 ++ .../v0.2.10/splitgraph.hooks.mdx | 366 ++ .../v0.2.10/splitgraph.ingestion.csv.mdx | 174 + .../v0.2.10/splitgraph.ingestion.mdx | 197 + .../splitgraph.ingestion.snowflake.mdx | 87 + .../v0.2.10/splitgraph.ingestion.socrata.mdx | 175 + .../9000_versions/v0.2.10/splitgraph.mdx | 330 ++ .../v0.2.10/splitgraph.splitfile.mdx | 89 + .../9000_versions/v0.2.11/metadata.json | 23 + .../v0.2.11/splitgraph.cloud.mdx | 209 + .../v0.2.11/splitgraph.commandline.mdx | 365 ++ .../v0.2.11/splitgraph.config.mdx | 392 ++ .../v0.2.11/splitgraph.core.indexing.mdx | 141 + .../9000_versions/v0.2.11/splitgraph.core.mdx | 2021 ++++++++ .../v0.2.11/splitgraph.core.sql.mdx | 118 + .../v0.2.11/splitgraph.engine.mdx | 565 +++ .../v0.2.11/splitgraph.engine.postgres.mdx | 450 ++ .../v0.2.11/splitgraph.hooks.data_source.mdx | 515 ++ .../v0.2.11/splitgraph.hooks.mdx | 366 ++ .../v0.2.11/splitgraph.ingestion.csv.mdx | 174 + .../v0.2.11/splitgraph.ingestion.mdx | 197 + .../splitgraph.ingestion.snowflake.mdx | 87 + .../v0.2.11/splitgraph.ingestion.socrata.mdx | 175 + .../9000_versions/v0.2.11/splitgraph.mdx | 337 ++ .../v0.2.11/splitgraph.splitfile.mdx | 89 + .../9000_versions/v0.2.12/metadata.json | 23 + .../v0.2.12/splitgraph.cloud.mdx | 209 + .../v0.2.12/splitgraph.commandline.mdx | 365 ++ .../v0.2.12/splitgraph.config.mdx | 392 ++ .../v0.2.12/splitgraph.core.indexing.mdx | 141 + .../9000_versions/v0.2.12/splitgraph.core.mdx | 2021 ++++++++ .../v0.2.12/splitgraph.core.sql.mdx | 118 + .../v0.2.12/splitgraph.engine.mdx | 565 +++ .../v0.2.12/splitgraph.engine.postgres.mdx | 450 ++ .../v0.2.12/splitgraph.hooks.data_source.mdx | 515 ++ .../v0.2.12/splitgraph.hooks.mdx | 366 ++ .../v0.2.12/splitgraph.ingestion.csv.mdx | 164 + .../v0.2.12/splitgraph.ingestion.mdx | 203 + .../splitgraph.ingestion.snowflake.mdx | 87 + .../v0.2.12/splitgraph.ingestion.socrata.mdx | 175 + .../9000_versions/v0.2.12/splitgraph.mdx | 337 ++ .../v0.2.12/splitgraph.splitfile.mdx | 89 + .../9000_versions/v0.2.13/metadata.json | 23 + .../v0.2.13/splitgraph.cloud.mdx | 209 + .../v0.2.13/splitgraph.commandline.mdx | 360 ++ .../v0.2.13/splitgraph.config.mdx | 392 ++ .../v0.2.13/splitgraph.core.indexing.mdx | 141 + .../9000_versions/v0.2.13/splitgraph.core.mdx | 2050 ++++++++ .../v0.2.13/splitgraph.core.sql.mdx | 118 + .../v0.2.13/splitgraph.engine.mdx | 565 +++ .../v0.2.13/splitgraph.engine.postgres.mdx | 456 ++ .../v0.2.13/splitgraph.hooks.data_source.mdx | 565 +++ .../v0.2.13/splitgraph.hooks.mdx | 366 ++ .../v0.2.13/splitgraph.ingestion.csv.mdx | 283 ++ .../v0.2.13/splitgraph.ingestion.mdx | 204 + .../splitgraph.ingestion.snowflake.mdx | 92 + .../v0.2.13/splitgraph.ingestion.socrata.mdx | 171 + .../9000_versions/v0.2.13/splitgraph.mdx | 343 ++ .../v0.2.13/splitgraph.splitfile.mdx | 89 + .../9000_versions/v0.2.14/metadata.json | 23 + .../v0.2.14/splitgraph.cloud.mdx | 244 + .../v0.2.14/splitgraph.commandline.mdx | 360 ++ .../v0.2.14/splitgraph.config.mdx | 392 ++ .../v0.2.14/splitgraph.core.indexing.mdx | 141 + .../9000_versions/v0.2.14/splitgraph.core.mdx | 2050 ++++++++ .../v0.2.14/splitgraph.core.sql.mdx | 118 + .../v0.2.14/splitgraph.engine.mdx | 565 +++ .../v0.2.14/splitgraph.engine.postgres.mdx | 456 ++ .../v0.2.14/splitgraph.hooks.data_source.mdx | 565 +++ .../v0.2.14/splitgraph.hooks.mdx | 366 ++ .../v0.2.14/splitgraph.ingestion.csv.mdx | 283 ++ .../v0.2.14/splitgraph.ingestion.mdx | 204 + .../splitgraph.ingestion.snowflake.mdx | 92 + .../v0.2.14/splitgraph.ingestion.socrata.mdx | 171 + .../9000_versions/v0.2.14/splitgraph.mdx | 343 ++ .../v0.2.14/splitgraph.splitfile.mdx | 89 + .../9000_versions/v0.2.15/metadata.json | 23 + .../9000_versions/v0.2.15/modules.mdx | 118 + .../v0.2.15/splitgraph.cloud.mdx | 870 ++++ .../v0.2.15/splitgraph.commandline.mdx | 335 ++ .../v0.2.15/splitgraph.config.mdx | 392 ++ .../v0.2.15/splitgraph.core.indexing.mdx | 141 + .../9000_versions/v0.2.15/splitgraph.core.mdx | 2067 ++++++++ .../v0.2.15/splitgraph.core.sql.mdx | 118 + .../v0.2.15/splitgraph.engine.mdx | 565 +++ .../v0.2.15/splitgraph.engine.postgres.mdx | 456 ++ .../v0.2.15/splitgraph.hooks.data_source.mdx | 531 ++ .../v0.2.15/splitgraph.hooks.mdx | 366 ++ .../v0.2.15/splitgraph.ingestion.airbyte.mdx | 652 +++ .../v0.2.15/splitgraph.ingestion.csv.mdx | 299 ++ .../v0.2.15/splitgraph.ingestion.mdx | 222 + .../v0.2.15/splitgraph.ingestion.singer.mdx | 243 + .../splitgraph.ingestion.snowflake.mdx | 92 + .../v0.2.15/splitgraph.ingestion.socrata.mdx | 182 + .../9000_versions/v0.2.15/splitgraph.mdx | 369 ++ .../v0.2.15/splitgraph.splitfile.mdx | 89 + .../v0.2.15/splitgraph.utils.mdx | 46 + .../9000_versions/v0.2.16/metadata.json | 23 + .../9000_versions/v0.2.16/modules.mdx | 118 + .../v0.2.16/splitgraph.cloud.mdx | 875 ++++ .../v0.2.16/splitgraph.commandline.mdx | 335 ++ .../v0.2.16/splitgraph.config.mdx | 392 ++ .../v0.2.16/splitgraph.core.indexing.mdx | 141 + .../9000_versions/v0.2.16/splitgraph.core.mdx | 2060 ++++++++ .../v0.2.16/splitgraph.core.sql.mdx | 118 + .../v0.2.16/splitgraph.engine.mdx | 565 +++ .../v0.2.16/splitgraph.engine.postgres.mdx | 456 ++ .../v0.2.16/splitgraph.hooks.data_source.mdx | 536 ++ .../v0.2.16/splitgraph.hooks.mdx | 366 ++ .../v0.2.16/splitgraph.ingestion.airbyte.mdx | 667 +++ .../v0.2.16/splitgraph.ingestion.csv.mdx | 299 ++ .../v0.2.16/splitgraph.ingestion.mdx | 222 + .../v0.2.16/splitgraph.ingestion.singer.mdx | 243 + .../splitgraph.ingestion.snowflake.mdx | 92 + .../v0.2.16/splitgraph.ingestion.socrata.mdx | 182 + .../9000_versions/v0.2.16/splitgraph.mdx | 369 ++ .../v0.2.16/splitgraph.splitfile.mdx | 89 + .../v0.2.16/splitgraph.utils.mdx | 51 + .../9000_versions/v0.2.17/metadata.json | 23 + .../9000_versions/v0.2.17/modules.mdx | 118 + .../v0.2.17/splitgraph.cloud.mdx | 885 ++++ .../v0.2.17/splitgraph.commandline.mdx | 245 + .../v0.2.17/splitgraph.config.mdx | 392 ++ .../v0.2.17/splitgraph.core.indexing.mdx | 141 + .../9000_versions/v0.2.17/splitgraph.core.mdx | 2142 ++++++++ .../v0.2.17/splitgraph.core.sql.mdx | 118 + .../v0.2.17/splitgraph.engine.mdx | 565 +++ .../v0.2.17/splitgraph.engine.postgres.mdx | 456 ++ .../v0.2.17/splitgraph.hooks.data_source.mdx | 537 ++ .../v0.2.17/splitgraph.hooks.mdx | 366 ++ .../v0.2.17/splitgraph.ingestion.airbyte.mdx | 667 +++ .../v0.2.17/splitgraph.ingestion.csv.mdx | 303 ++ .../v0.2.17/splitgraph.ingestion.mdx | 227 + .../v0.2.17/splitgraph.ingestion.singer.mdx | 238 + .../splitgraph.ingestion.snowflake.mdx | 97 + .../v0.2.17/splitgraph.ingestion.socrata.mdx | 181 + .../9000_versions/v0.2.17/splitgraph.mdx | 369 ++ .../v0.2.17/splitgraph.splitfile.mdx | 89 + .../v0.2.17/splitgraph.utils.mdx | 51 + .../9000_versions/v0.2.18/metadata.json | 23 + .../9000_versions/v0.2.18/modules.mdx | 118 + .../v0.2.18/splitgraph.cloud.mdx | 885 ++++ .../v0.2.18/splitgraph.commandline.mdx | 245 + .../v0.2.18/splitgraph.config.mdx | 392 ++ .../v0.2.18/splitgraph.core.indexing.mdx | 141 + .../9000_versions/v0.2.18/splitgraph.core.mdx | 2156 ++++++++ .../v0.2.18/splitgraph.core.sql.mdx | 118 + .../v0.2.18/splitgraph.engine.mdx | 565 +++ .../v0.2.18/splitgraph.engine.postgres.mdx | 456 ++ .../v0.2.18/splitgraph.hooks.data_source.mdx | 537 ++ .../v0.2.18/splitgraph.hooks.mdx | 366 ++ .../v0.2.18/splitgraph.ingestion.airbyte.mdx | 667 +++ .../v0.2.18/splitgraph.ingestion.csv.mdx | 320 ++ .../v0.2.18/splitgraph.ingestion.mdx | 232 + .../v0.2.18/splitgraph.ingestion.singer.mdx | 238 + .../splitgraph.ingestion.snowflake.mdx | 97 + .../v0.2.18/splitgraph.ingestion.socrata.mdx | 182 + .../9000_versions/v0.2.18/splitgraph.mdx | 369 ++ .../v0.2.18/splitgraph.splitfile.mdx | 94 + .../v0.2.18/splitgraph.utils.mdx | 51 + .../9000_versions/v0.3.0/metadata.json | 23 + .../9000_versions/v0.3.0/modules.mdx | 123 + .../9000_versions/v0.3.0/splitgraph.cloud.mdx | 921 ++++ .../v0.3.0/splitgraph.commandline.mdx | 289 ++ .../v0.3.0/splitgraph.config.mdx | 400 ++ .../v0.3.0/splitgraph.core.indexing.mdx | 141 + .../9000_versions/v0.3.0/splitgraph.core.mdx | 2230 +++++++++ .../v0.3.0/splitgraph.core.sql.mdx | 118 + .../v0.3.0/splitgraph.engine.mdx | 565 +++ .../v0.3.0/splitgraph.engine.postgres.mdx | 456 ++ .../v0.3.0/splitgraph.hooks.data_source.mdx | 565 +++ .../9000_versions/v0.3.0/splitgraph.hooks.mdx | 366 ++ .../v0.3.0/splitgraph.ingestion.airbyte.mdx | 667 +++ .../v0.3.0/splitgraph.ingestion.csv.mdx | 320 ++ .../v0.3.0/splitgraph.ingestion.mdx | 234 + .../v0.3.0/splitgraph.ingestion.singer.mdx | 239 + .../v0.3.0/splitgraph.ingestion.snowflake.mdx | 97 + .../v0.3.0/splitgraph.ingestion.socrata.mdx | 182 + .../9000_versions/v0.3.0/splitgraph.mdx | 383 ++ .../v0.3.0/splitgraph.splitfile.mdx | 73 + .../9000_versions/v0.3.0/splitgraph.utils.mdx | 69 + content/docs/9500_python-api/metadata.json | 22 +- content/docs/9500_python-api/modules.mdx | 123 + .../docs/9500_python-api/splitgraph.cloud.mdx | 856 +++- .../splitgraph.commandline.mdx | 350 +- .../9500_python-api/splitgraph.config.mdx | 230 +- .../splitgraph.core.indexing.mdx | 58 +- .../docs/9500_python-api/splitgraph.core.mdx | 1156 +++-- .../9500_python-api/splitgraph.core.sql.mdx | 38 +- .../9500_python-api/splitgraph.engine.mdx | 252 +- .../splitgraph.engine.postgres.mdx | 220 +- .../splitgraph.hooks.data_source.mdx | 504 +- .../docs/9500_python-api/splitgraph.hooks.mdx | 160 +- .../splitgraph.ingestion.airbyte.mdx | 667 +++ .../splitgraph.ingestion.csv.mdx | 322 +- .../9500_python-api/splitgraph.ingestion.mdx | 165 +- .../splitgraph.ingestion.singer.mdx | 239 + .../splitgraph.ingestion.snowflake.mdx | 80 +- .../splitgraph.ingestion.socrata.mdx | 145 +- content/docs/9500_python-api/splitgraph.mdx | 173 +- .../9500_python-api/splitgraph.splitfile.mdx | 68 +- .../docs/9500_python-api/splitgraph.utils.mdx | 69 + 989 files changed, 210968 insertions(+), 11782 deletions(-) create mode 100644 content/casts/versioned/archive/v0.2.10/bloom-filter.cast create mode 100644 content/casts/versioned/archive/v0.2.10/dbt.cast create mode 100644 content/casts/versioned/archive/v0.2.10/import-from-csv.cast create mode 100644 content/casts/versioned/archive/v0.2.10/import-from-mongo.cast create mode 100644 content/casts/versioned/archive/v0.2.10/metadata.json create mode 100644 content/casts/versioned/archive/v0.2.10/pg-replication.cast create mode 100644 content/casts/versioned/archive/v0.2.10/postgrest.cast create mode 100644 content/casts/versioned/archive/v0.2.10/push-to-other-engine.cast create mode 100644 content/casts/versioned/archive/v0.2.10/splitfiles.cast create mode 100644 content/casts/versioned/archive/v0.2.10/splitgraph-cloud.cast create mode 100644 content/casts/versioned/archive/v0.2.10/us-election.cast create mode 100644 content/casts/versioned/archive/v0.2.11/bloom-filter.cast create mode 100644 content/casts/versioned/archive/v0.2.11/dbt.cast create mode 100644 content/casts/versioned/archive/v0.2.11/import-from-csv.cast create mode 100644 content/casts/versioned/archive/v0.2.11/import-from-mongo.cast create mode 100644 content/casts/versioned/archive/v0.2.11/metadata.json create mode 100644 content/casts/versioned/archive/v0.2.11/pg-replication.cast create mode 100644 content/casts/versioned/archive/v0.2.11/postgrest.cast create mode 100644 content/casts/versioned/archive/v0.2.11/push-to-other-engine.cast create mode 100644 content/casts/versioned/archive/v0.2.11/splitfiles.cast create mode 100644 content/casts/versioned/archive/v0.2.11/splitgraph-cloud.cast create mode 100644 content/casts/versioned/archive/v0.2.11/us-election.cast create mode 100644 content/casts/versioned/archive/v0.2.12/bloom-filter.cast create mode 100644 content/casts/versioned/archive/v0.2.12/dbt.cast create mode 100644 content/casts/versioned/archive/v0.2.12/import-from-csv.cast create mode 100644 content/casts/versioned/archive/v0.2.12/import-from-mongo.cast create mode 100644 content/casts/versioned/archive/v0.2.12/metadata.json create mode 100644 content/casts/versioned/archive/v0.2.12/pg-replication.cast create mode 100644 content/casts/versioned/archive/v0.2.12/postgrest.cast create mode 100644 content/casts/versioned/archive/v0.2.12/push-to-other-engine.cast create mode 100644 content/casts/versioned/archive/v0.2.12/splitfiles.cast create mode 100644 content/casts/versioned/archive/v0.2.12/splitgraph-cloud.cast create mode 100644 content/casts/versioned/archive/v0.2.12/us-election.cast create mode 100644 content/casts/versioned/archive/v0.2.13/bloom-filter.cast create mode 100644 content/casts/versioned/archive/v0.2.13/dbt.cast create mode 100644 content/casts/versioned/archive/v0.2.13/import-from-csv.cast create mode 100644 content/casts/versioned/archive/v0.2.13/import-from-mongo.cast create mode 100644 content/casts/versioned/archive/v0.2.13/metadata.json create mode 100644 content/casts/versioned/archive/v0.2.13/pg-replication.cast create mode 100644 content/casts/versioned/archive/v0.2.13/postgrest.cast create mode 100644 content/casts/versioned/archive/v0.2.13/push-to-other-engine.cast create mode 100644 content/casts/versioned/archive/v0.2.13/splitfiles.cast create mode 100644 content/casts/versioned/archive/v0.2.13/splitgraph-cloud.cast create mode 100644 content/casts/versioned/archive/v0.2.13/us-election.cast create mode 100644 content/casts/versioned/archive/v0.2.14/bloom-filter.cast create mode 100644 content/casts/versioned/archive/v0.2.14/dbt.cast create mode 100644 content/casts/versioned/archive/v0.2.14/import-from-csv.cast create mode 100644 content/casts/versioned/archive/v0.2.14/import-from-mongo.cast create mode 100644 content/casts/versioned/archive/v0.2.14/metadata.json create mode 100644 content/casts/versioned/archive/v0.2.14/pg-replication.cast create mode 100644 content/casts/versioned/archive/v0.2.14/postgrest.cast create mode 100644 content/casts/versioned/archive/v0.2.14/push-to-other-engine.cast create mode 100644 content/casts/versioned/archive/v0.2.14/splitfiles.cast create mode 100644 content/casts/versioned/archive/v0.2.14/splitgraph-cloud.cast create mode 100644 content/casts/versioned/archive/v0.2.14/us-election.cast create mode 100644 content/casts/versioned/archive/v0.2.15/bloom-filter.cast create mode 100644 content/casts/versioned/archive/v0.2.15/dbt.cast create mode 100644 content/casts/versioned/archive/v0.2.15/import-from-csv.cast create mode 100644 content/casts/versioned/archive/v0.2.15/import-from-mongo.cast create mode 100644 content/casts/versioned/archive/v0.2.15/metadata.json create mode 100644 content/casts/versioned/archive/v0.2.15/pg-replication.cast create mode 100644 content/casts/versioned/archive/v0.2.15/postgrest.cast create mode 100644 content/casts/versioned/archive/v0.2.15/push-to-other-engine.cast create mode 100644 content/casts/versioned/archive/v0.2.15/splitfiles.cast create mode 100644 content/casts/versioned/archive/v0.2.15/splitgraph-cloud.cast create mode 100644 content/casts/versioned/archive/v0.2.15/us-election.cast create mode 100644 content/casts/versioned/archive/v0.2.16/bloom-filter.cast create mode 100644 content/casts/versioned/archive/v0.2.16/dbt.cast create mode 100644 content/casts/versioned/archive/v0.2.16/import-from-csv.cast create mode 100644 content/casts/versioned/archive/v0.2.16/import-from-mongo.cast create mode 100644 content/casts/versioned/archive/v0.2.16/metadata.json create mode 100644 content/casts/versioned/archive/v0.2.16/pg-replication.cast create mode 100644 content/casts/versioned/archive/v0.2.16/postgrest.cast create mode 100644 content/casts/versioned/archive/v0.2.16/push-to-other-engine.cast create mode 100644 content/casts/versioned/archive/v0.2.16/splitfiles.cast create mode 100644 content/casts/versioned/archive/v0.2.16/splitgraph-cloud.cast create mode 100644 content/casts/versioned/archive/v0.2.16/us-election.cast create mode 100644 content/casts/versioned/archive/v0.2.17/bloom-filter.cast create mode 100644 content/casts/versioned/archive/v0.2.17/dbt.cast create mode 100644 content/casts/versioned/archive/v0.2.17/import-from-csv.cast create mode 100644 content/casts/versioned/archive/v0.2.17/import-from-mongo.cast create mode 100644 content/casts/versioned/archive/v0.2.17/metadata.json create mode 100644 content/casts/versioned/archive/v0.2.17/pg-replication.cast create mode 100644 content/casts/versioned/archive/v0.2.17/postgrest.cast create mode 100644 content/casts/versioned/archive/v0.2.17/push-to-other-engine.cast create mode 100644 content/casts/versioned/archive/v0.2.17/splitfiles.cast create mode 100644 content/casts/versioned/archive/v0.2.17/splitgraph-cloud.cast create mode 100644 content/casts/versioned/archive/v0.2.17/us-election.cast create mode 100644 content/casts/versioned/archive/v0.2.18/bloom-filter.cast create mode 100644 content/casts/versioned/archive/v0.2.18/dbt.cast create mode 100644 content/casts/versioned/archive/v0.2.18/import-from-csv.cast create mode 100644 content/casts/versioned/archive/v0.2.18/import-from-mongo.cast create mode 100644 content/casts/versioned/archive/v0.2.18/metadata.json create mode 100644 content/casts/versioned/archive/v0.2.18/pg-replication.cast create mode 100644 content/casts/versioned/archive/v0.2.18/postgrest.cast create mode 100644 content/casts/versioned/archive/v0.2.18/push-to-other-engine.cast create mode 100644 content/casts/versioned/archive/v0.2.18/splitfiles.cast create mode 100644 content/casts/versioned/archive/v0.2.18/splitgraph-cloud.cast create mode 100644 content/casts/versioned/archive/v0.2.18/us-election.cast create mode 100644 content/casts/versioned/archive/v0.3.0/bloom-filter.cast create mode 100644 content/casts/versioned/archive/v0.3.0/dbt.cast create mode 100644 content/casts/versioned/archive/v0.3.0/import-from-csv.cast create mode 100644 content/casts/versioned/archive/v0.3.0/import-from-mongo.cast create mode 100644 content/casts/versioned/archive/v0.3.0/metadata.json create mode 100644 content/casts/versioned/archive/v0.3.0/pg-replication.cast create mode 100644 content/casts/versioned/archive/v0.3.0/postgrest.cast create mode 100644 content/casts/versioned/archive/v0.3.0/push-to-other-engine.cast create mode 100644 content/casts/versioned/archive/v0.3.0/splitfiles.cast create mode 100644 content/casts/versioned/archive/v0.3.0/splitgraph-cloud.cast create mode 100644 content/casts/versioned/archive/v0.3.0/us-election.cast create mode 100644 content/docs/9000_sgr/0007_splitgraph-cloud/0000_cloud-add.mdx rename content/docs/9000_sgr/0007_splitgraph-cloud/{0000_cloud-register.mdx => 0001_cloud-register.mdx} (100%) rename content/docs/9000_sgr/0007_splitgraph-cloud/{0001_cloud-login.mdx => 0002_cloud-login.mdx} (100%) rename content/docs/9000_sgr/0007_splitgraph-cloud/{0002_cloud-login-api.mdx => 0003_cloud-login-api.mdx} (100%) create mode 100644 content/docs/9000_sgr/0007_splitgraph-cloud/0004_cloud-token.mdx rename content/docs/9000_sgr/0007_splitgraph-cloud/{0003_cloud-sql.mdx => 0005_cloud-sql.mdx} (100%) rename content/docs/9000_sgr/0007_splitgraph-cloud/{0004_cloud-curl.mdx => 0006_cloud-curl.mdx} (100%) create mode 100644 content/docs/9000_sgr/0007_splitgraph-cloud/0007_cloud-readme.mdx rename content/docs/9000_sgr/0007_splitgraph-cloud/{0006_cloud-description.mdx => 0008_cloud-description.mdx} (100%) rename content/docs/9000_sgr/0007_splitgraph-cloud/{0007_cloud-metadata.mdx => 0009_cloud-metadata.mdx} (100%) rename content/docs/9000_sgr/0007_splitgraph-cloud/{0008_cloud-search.mdx => 0010_cloud-search.mdx} (100%) create mode 100644 content/docs/9000_sgr/0007_splitgraph-cloud/0011_cloud-dump.mdx create mode 100644 content/docs/9000_sgr/0007_splitgraph-cloud/0012_cloud-load.mdx create mode 100644 content/docs/9000_sgr/0007_splitgraph-cloud/0013_cloud-sync.mdx create mode 100644 content/docs/9000_sgr/0007_splitgraph-cloud/0014_cloud-status.mdx create mode 100644 content/docs/9000_sgr/0007_splitgraph-cloud/0015_cloud-logs.mdx create mode 100644 content/docs/9000_sgr/0007_splitgraph-cloud/0016_cloud-upload.mdx create mode 100644 content/docs/9000_sgr/0007_splitgraph-cloud/0017_cloud-download.mdx create mode 100644 content/docs/9000_sgr/0007_splitgraph-cloud/0018_cloud-plugins.mdx create mode 100644 content/docs/9000_sgr/0007_splitgraph-cloud/0019_cloud-stub.mdx create mode 100644 content/docs/9000_sgr/0007_splitgraph-cloud/0020_cloud-validate.mdx create mode 100644 content/docs/9000_sgr/0007_splitgraph-cloud/0021_cloud-seed.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0000_checkout.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0001_commit.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0002_tag.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0003_import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0004_reindex.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0000_log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0001_diff.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0002_object.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0003_objects.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0004_show.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0005_table.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0006_sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0007_status.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0000_engine-add.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0001_engine-delete.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0002_engine-list.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0003_engine-start.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0004_engine-stop.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0005_engine-upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0006_engine-log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0007_engine-configure.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0008_engine-version.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/0000_csv-export.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/0001_csv-import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/0002_mount.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/0003_singer-target.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0000_rm.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0001_init.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0002_cleanup.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0003_prune.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0004_config.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0005_dump.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0006_eval.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0007_upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/0000_clone.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/0001_push.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/0002_pull.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/0003_upstream.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/0000_build.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/0001_rebuild.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/0002_provenance.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/0003_dependents.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0000_cloud-register.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0001_cloud-login.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0002_cloud-login-api.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0003_cloud-sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0004_cloud-curl.mdx rename content/docs/9000_sgr/{ => 9000_versions/v0.2.10}/0007_splitgraph-cloud/0005_cloud-readme.mdx (100%) create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0006_cloud-description.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0007_cloud-metadata.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0008_cloud-search.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.10/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0000_checkout.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0001_commit.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0002_tag.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0003_import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0004_reindex.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0000_log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0001_diff.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0002_object.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0003_objects.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0004_show.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0005_table.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0006_sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0007_status.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0000_engine-add.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0001_engine-delete.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0002_engine-list.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0003_engine-start.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0004_engine-stop.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0005_engine-upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0006_engine-log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0007_engine-configure.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0008_engine-version.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/0000_csv-export.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/0001_csv-import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/0002_mount.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/0003_singer-target.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0000_rm.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0001_init.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0002_cleanup.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0003_prune.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0004_config.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0005_dump.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0006_eval.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0007_upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/0000_clone.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/0001_push.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/0002_pull.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/0003_upstream.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/0000_build.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/0001_rebuild.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/0002_provenance.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/0003_dependents.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0000_cloud-register.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0001_cloud-login.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0002_cloud-login-api.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0003_cloud-sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0004_cloud-curl.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0005_cloud-readme.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0006_cloud-description.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0007_cloud-metadata.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0008_cloud-search.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.11/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0000_checkout.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0001_commit.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0002_tag.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0003_import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0004_reindex.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0000_log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0001_diff.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0002_object.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0003_objects.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0004_show.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0005_table.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0006_sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0007_status.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0000_engine-add.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0001_engine-delete.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0002_engine-list.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0003_engine-start.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0004_engine-stop.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0005_engine-upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0006_engine-log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0007_engine-configure.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0008_engine-version.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/0000_csv-export.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/0001_csv-import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/0002_mount.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/0003_singer-target.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0000_rm.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0001_init.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0002_cleanup.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0003_prune.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0004_config.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0005_dump.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0006_eval.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0007_upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/0000_clone.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/0001_push.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/0002_pull.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/0003_upstream.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/0000_build.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/0001_rebuild.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/0002_provenance.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/0003_dependents.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0000_cloud-register.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0001_cloud-login.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0002_cloud-login-api.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0003_cloud-sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0004_cloud-curl.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0005_cloud-readme.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0006_cloud-description.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0007_cloud-metadata.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0008_cloud-search.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.12/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0000_checkout.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0001_commit.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0002_tag.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0003_import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0004_reindex.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0000_log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0001_diff.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0002_object.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0003_objects.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0004_show.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0005_table.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0006_sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0007_status.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0000_engine-add.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0001_engine-delete.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0002_engine-list.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0003_engine-start.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0004_engine-stop.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0005_engine-upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0006_engine-log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0007_engine-configure.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0008_engine-version.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/0000_csv-export.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/0001_csv-import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/0002_mount.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/0003_singer-target.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0000_rm.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0001_init.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0002_cleanup.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0003_prune.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0004_config.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0005_dump.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0006_eval.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0007_upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/0000_clone.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/0001_push.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/0002_pull.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/0003_upstream.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/0000_build.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/0001_rebuild.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/0002_provenance.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/0003_dependents.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0000_cloud-register.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0001_cloud-login.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0002_cloud-login-api.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0003_cloud-sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0004_cloud-curl.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0005_cloud-readme.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0006_cloud-description.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0007_cloud-metadata.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0008_cloud-search.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.13/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0000_checkout.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0001_commit.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0002_tag.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0003_import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0004_reindex.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0000_log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0001_diff.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0002_object.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0003_objects.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0004_show.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0005_table.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0006_sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0007_status.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0000_engine-add.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0001_engine-delete.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0002_engine-list.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0003_engine-start.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0004_engine-stop.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0005_engine-upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0006_engine-log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0007_engine-configure.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0008_engine-version.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/0000_csv-export.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/0001_csv-import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/0002_mount.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/0003_singer-target.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0000_rm.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0001_init.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0002_cleanup.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0003_prune.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0004_config.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0005_dump.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0006_eval.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0007_upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/0000_clone.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/0001_push.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/0002_pull.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/0003_upstream.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/0000_build.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/0001_rebuild.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/0002_provenance.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/0003_dependents.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0000_cloud-register.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0001_cloud-login.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0002_cloud-login-api.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0003_cloud-sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0004_cloud-curl.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0005_cloud-readme.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0006_cloud-description.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0007_cloud-metadata.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0008_cloud-search.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0009_cloud-dump.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0010_cloud-load.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.14/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0000_checkout.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0001_commit.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0002_tag.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0003_import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0004_reindex.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0000_log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0001_diff.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0002_object.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0003_objects.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0004_show.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0005_table.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0006_sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0007_status.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0000_engine-add.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0001_engine-delete.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0002_engine-list.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0003_engine-start.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0004_engine-stop.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0005_engine-upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0006_engine-log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0007_engine-configure.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0008_engine-version.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/0000_csv-export.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/0001_csv-import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/0002_mount.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/0003_singer-target.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0000_rm.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0001_init.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0002_cleanup.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0003_prune.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0004_config.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0005_dump.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0006_eval.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0007_upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/0000_clone.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/0001_push.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/0002_pull.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/0003_upstream.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/0000_build.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/0001_rebuild.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/0002_provenance.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/0003_dependents.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0000_cloud-add.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0001_cloud-register.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0002_cloud-login.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0003_cloud-login-api.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0004_cloud-sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0005_cloud-curl.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0006_cloud-readme.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0007_cloud-description.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0008_cloud-metadata.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0009_cloud-search.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0010_cloud-dump.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0011_cloud-load.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0012_cloud-token.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.15/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0000_checkout.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0001_commit.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0002_tag.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0003_import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0004_reindex.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0000_log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0001_diff.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0002_object.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0003_objects.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0004_show.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0005_table.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0006_sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0007_status.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0000_engine-add.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0001_engine-delete.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0002_engine-list.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0003_engine-start.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0004_engine-stop.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0005_engine-upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0006_engine-log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0007_engine-configure.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0008_engine-version.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/0000_csv-export.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/0001_csv-import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/0002_mount.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/0003_singer-target.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0000_rm.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0001_init.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0002_cleanup.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0003_prune.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0004_config.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0005_dump.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0006_eval.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0007_upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/0000_clone.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/0001_push.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/0002_pull.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/0003_upstream.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/0000_build.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/0001_rebuild.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/0002_provenance.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/0003_dependents.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0000_cloud-add.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0001_cloud-register.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0002_cloud-login.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0003_cloud-login-api.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0004_cloud-sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0005_cloud-curl.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0006_cloud-readme.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0007_cloud-description.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0008_cloud-metadata.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0009_cloud-search.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0010_cloud-dump.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0011_cloud-load.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0012_cloud-token.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.16/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0000_checkout.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0001_commit.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0002_tag.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0003_import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0004_reindex.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0000_log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0001_diff.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0002_object.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0003_objects.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0004_show.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0005_table.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0006_sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0007_status.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0000_engine-add.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0001_engine-delete.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0002_engine-list.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0003_engine-start.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0004_engine-stop.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0005_engine-upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0006_engine-log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0007_engine-configure.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0008_engine-version.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/0000_csv-export.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/0001_csv-import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/0002_mount.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/0003_singer-target.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0000_rm.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0001_init.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0002_cleanup.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0003_prune.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0004_config.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0005_dump.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0006_eval.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0007_upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/0000_clone.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/0001_push.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/0002_pull.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/0003_upstream.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/0000_build.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/0001_rebuild.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/0002_provenance.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/0003_dependents.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0000_cloud-add.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0001_cloud-register.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0002_cloud-login.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0003_cloud-login-api.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0004_cloud-sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0005_cloud-curl.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0006_cloud-readme.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0007_cloud-description.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0008_cloud-metadata.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0009_cloud-search.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0010_cloud-dump.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0011_cloud-load.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0012_cloud-token.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.17/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0000_checkout.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0001_commit.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0002_tag.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0003_import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0004_reindex.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0000_log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0001_diff.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0002_object.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0003_objects.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0004_show.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0005_table.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0006_sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0007_status.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0000_engine-add.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0001_engine-delete.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0002_engine-list.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0003_engine-start.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0004_engine-stop.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0005_engine-upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0006_engine-log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0007_engine-configure.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0008_engine-version.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/0000_csv-export.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/0001_csv-import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/0002_mount.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/0003_singer-target.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0000_rm.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0001_init.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0002_cleanup.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0003_prune.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0004_config.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0005_dump.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0006_eval.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0007_upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/0000_clone.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/0001_push.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/0002_pull.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/0003_upstream.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/0000_build.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/0001_rebuild.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/0002_provenance.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/0003_dependents.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0000_cloud-add.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0001_cloud-register.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0002_cloud-login.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0003_cloud-login-api.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0004_cloud-sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0005_cloud-curl.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0006_cloud-readme.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0007_cloud-description.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0008_cloud-metadata.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0009_cloud-search.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0010_cloud-dump.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0011_cloud-load.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0012_cloud-token.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.2.18/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0000_checkout.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0001_commit.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0002_tag.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0003_import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0004_reindex.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0000_log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0001_diff.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0002_object.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0003_objects.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0004_show.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0005_table.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0006_sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0007_status.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0000_engine-add.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0001_engine-delete.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0002_engine-list.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0003_engine-start.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0004_engine-stop.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0005_engine-upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0006_engine-log.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0007_engine-configure.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0008_engine-version.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/0000_csv-export.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/0001_csv-import.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/0002_mount.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/0003_singer-target.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0000_rm.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0001_init.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0002_cleanup.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0003_prune.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0004_config.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0005_dump.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0006_eval.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0007_upgrade.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/0000_clone.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/0001_push.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/0002_pull.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/0003_upstream.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/0000_build.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/0001_rebuild.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/0002_provenance.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/0003_dependents.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0000_cloud-add.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0001_cloud-register.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0002_cloud-login.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0003_cloud-login-api.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0004_cloud-token.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0005_cloud-sql.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0006_cloud-curl.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0007_cloud-readme.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0008_cloud-description.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0009_cloud-metadata.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0010_cloud-search.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0011_cloud-dump.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0012_cloud-load.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0013_cloud-sync.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0014_cloud-status.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0015_cloud-logs.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0016_cloud-upload.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0017_cloud-download.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0018_cloud-plugins.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0019_cloud-stub.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0020_cloud-validate.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0021_cloud-seed.mdx create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/metadata.json create mode 100644 content/docs/9000_sgr/9000_versions/v0.3.0/metadata.json create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.10/metadata.json create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.cloud.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.commandline.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.config.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.core.indexing.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.core.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.core.sql.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.engine.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.engine.postgres.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.hooks.data_source.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.hooks.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.ingestion.csv.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.ingestion.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.ingestion.snowflake.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.ingestion.socrata.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.splitfile.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.11/metadata.json create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.cloud.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.commandline.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.config.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.core.indexing.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.core.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.core.sql.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.engine.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.engine.postgres.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.hooks.data_source.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.hooks.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.ingestion.csv.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.ingestion.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.ingestion.snowflake.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.ingestion.socrata.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.splitfile.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.12/metadata.json create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.cloud.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.commandline.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.config.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.core.indexing.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.core.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.core.sql.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.engine.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.engine.postgres.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.hooks.data_source.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.hooks.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.ingestion.csv.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.ingestion.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.ingestion.snowflake.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.ingestion.socrata.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.splitfile.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.13/metadata.json create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.cloud.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.commandline.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.config.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.core.indexing.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.core.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.core.sql.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.engine.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.engine.postgres.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.hooks.data_source.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.hooks.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.ingestion.csv.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.ingestion.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.ingestion.snowflake.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.ingestion.socrata.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.splitfile.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.14/metadata.json create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.cloud.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.commandline.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.config.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.core.indexing.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.core.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.core.sql.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.engine.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.engine.postgres.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.hooks.data_source.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.hooks.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.ingestion.csv.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.ingestion.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.ingestion.snowflake.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.ingestion.socrata.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.splitfile.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/metadata.json create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/modules.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.cloud.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.commandline.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.config.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.core.indexing.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.core.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.core.sql.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.engine.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.engine.postgres.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.hooks.data_source.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.hooks.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.airbyte.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.csv.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.singer.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.snowflake.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.socrata.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.splitfile.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.utils.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/metadata.json create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/modules.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.cloud.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.commandline.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.config.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.core.indexing.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.core.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.core.sql.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.engine.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.engine.postgres.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.hooks.data_source.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.hooks.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.airbyte.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.csv.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.singer.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.snowflake.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.socrata.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.splitfile.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.utils.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/metadata.json create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/modules.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.cloud.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.commandline.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.config.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.core.indexing.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.core.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.core.sql.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.engine.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.engine.postgres.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.hooks.data_source.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.hooks.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.airbyte.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.csv.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.singer.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.snowflake.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.socrata.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.splitfile.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.utils.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/metadata.json create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/modules.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.cloud.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.commandline.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.config.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.core.indexing.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.core.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.core.sql.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.engine.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.engine.postgres.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.hooks.data_source.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.hooks.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.airbyte.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.csv.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.singer.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.snowflake.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.socrata.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.splitfile.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.utils.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/metadata.json create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/modules.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.cloud.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.commandline.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.config.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.core.indexing.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.core.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.core.sql.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.engine.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.engine.postgres.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.hooks.data_source.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.hooks.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.airbyte.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.csv.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.singer.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.snowflake.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.socrata.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.splitfile.mdx create mode 100644 content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.utils.mdx create mode 100644 content/docs/9500_python-api/modules.mdx create mode 100644 content/docs/9500_python-api/splitgraph.ingestion.airbyte.mdx create mode 100644 content/docs/9500_python-api/splitgraph.ingestion.singer.mdx create mode 100644 content/docs/9500_python-api/splitgraph.utils.mdx diff --git a/content/casts/versioned/archive/v0.2.10/bloom-filter.cast b/content/casts/versioned/archive/v0.2.10/bloom-filter.cast new file mode 100644 index 00000000..1319b03d --- /dev/null +++ b/content/casts/versioned/archive/v0.2.10/bloom-filter.cast @@ -0,0 +1,960 @@ +{"version": 2, "width": 100, "height": 56, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1616004508, "metadata": {"tss": [{"h": "This example will use the 2016 US presidential election dataset", "ts": 0.06}, {"h": "The table is sorted by voting precinct and so queries that filter by that", "ts": 8.512580509185788}, {"h": "Currently we have no fragments in cache. Let's run this query and check the cache again", "ts": 18.43031702041617}, {"h": "Since default indexing in Splitgraph is done by min-max values for every column", "ts": 30.136944866180528}, {"h": "Let's download the whole dataset and add a bloom filter index on county_name", "ts": 40.43337363243131}, {"h": "Check the metadata of a new object to see details about the bloom filter structure", "ts": 70.57816734314008}, {"h": "Plan the query again: because the bloom filter can drop most fragments -", "ts": 98.07816734314008}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # This example will use the 2016 US presidential election dataset"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # to show off how indexing with a bloom filter can improve query performance.\r\n"] +[0.18, "o", "$ #\r\n"] +[0.21, "o", "$ # First, clone the whole dataset without downloading it.\r\n"] +[0.24, "o", "$"] +[0.27, "o", " "] +[0.30000000000000004, "o", "s"] +[0.33000000000000007, "o", "g"] +[0.3600000000000001, "o", "r"] +[0.3900000000000001, "o", " "] +[0.42000000000000015, "o", "c"] +[0.4500000000000002, "o", "l"] +[0.4800000000000002, "o", "o"] +[0.5100000000000002, "o", "n"] +[0.5400000000000003, "o", "e"] +[0.5700000000000003, "o", " "] +[0.6000000000000003, "o", "s"] +[0.6300000000000003, "o", "p"] +[0.6600000000000004, "o", "l"] +[0.6900000000000004, "o", "i"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "g"] +[0.7800000000000005, "o", "r"] +[0.8100000000000005, "o", "a"] +[0.8400000000000005, "o", "p"] +[0.8700000000000006, "o", "h"] +[0.9000000000000006, "o", "/"] +[0.9300000000000006, "o", "2"] +[0.9600000000000006, "o", "0"] +[0.9900000000000007, "o", "1"] +[1.0200000000000007, "o", "6"] +[1.0500000000000007, "o", "_"] +[1.0800000000000007, "o", "e"] +[1.1100000000000008, "o", "l"] +[1.1400000000000008, "o", "e"] +[1.1700000000000008, "o", "c"] +[1.2000000000000008, "o", "t"] +[1.2300000000000009, "o", "i"] +[1.260000000000001, "o", "o"] +[1.290000000000001, "o", "n"] +[1.320000000000001, "o", "\r\n"] +[1.350000000000001, "o", "\u001b[0m"] +[1.380000000000001, "o", "\r\n"] +[2.272580509185792, "o", "Gathering remote metadata...\r\n"] +[3.272580509185792, "o", "Fetched metadata for 1 image, 1 table, 20 objects and 1 tag.\r\n"] +[3.3025805091857916, "o", "\u001b[1m"] +[3.3325805091857914, "o", "\u001b[36m"] +[3.362580509185791, "o", "\u001b[91m"] +[3.392580509185791, "o", "$"] +[3.422580509185791, "o", " "] +[3.4525805091857906, "o", "\u001b[0m"] +[8.482580509185789, "o", "\u001b[H"] +[8.512580509185788, "o", "\u001b[J"] +[8.542580509185788, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The table is sorted by voting precinct and so queries that filter by that"] +[8.572580509185787, "o", "\r\n"] +[8.602580509185787, "o", "$ # (or by state, since precinct FIPS codes have the state as the prefix)\r\n"] +[8.632580509185786, "o", "$ # will use and download fewer fragments (6MiB/27MiB)\r\n"] +[8.662580509185785, "o", "$"] +[8.692580509185785, "o", " "] +[8.722580509185784, "o", "s"] +[8.752580509185783, "o", "g"] +[8.782580509185783, "o", "r"] +[8.812580509185782, "o", " "] +[8.842580509185781, "o", "s"] +[8.87258050918578, "o", "q"] +[8.90258050918578, "o", "l"] +[8.93258050918578, "o", " "] +[8.962580509185779, "o", "-"] +[8.992580509185778, "o", "-"] +[9.022580509185778, "o", "i"] +[9.052580509185777, "o", "m"] +[9.082580509185776, "o", "a"] +[9.112580509185776, "o", "g"] +[9.142580509185775, "o", "e"] +[9.172580509185774, "o", " "] +[9.202580509185774, "o", "s"] +[9.232580509185773, "o", "p"] +[9.262580509185772, "o", "l"] +[9.292580509185772, "o", "i"] +[9.322580509185771, "o", "t"] +[9.35258050918577, "o", "g"] +[9.38258050918577, "o", "r"] +[9.41258050918577, "o", "a"] +[9.442580509185769, "o", "p"] +[9.472580509185768, "o", "h"] +[9.502580509185767, "o", "/"] +[9.532580509185767, "o", "2"] +[9.562580509185766, "o", "0"] +[9.592580509185765, "o", "1"] +[9.622580509185765, "o", "6"] +[9.652580509185764, "o", "_"] +[9.682580509185764, "o", "e"] +[9.712580509185763, "o", "l"] +[9.742580509185762, "o", "e"] +[9.772580509185762, "o", "c"] +[9.802580509185761, "o", "t"] +[9.83258050918576, "o", "i"] +[9.86258050918576, "o", "o"] +[9.892580509185759, "o", "n"] +[9.922580509185758, "o", ":"] +[9.952580509185758, "o", "l"] +[9.982580509185757, "o", "a"] +[10.012580509185756, "o", "t"] +[10.042580509185756, "o", "e"] +[10.072580509185755, "o", "s"] +[10.102580509185755, "o", "t"] +[10.132580509185754, "o", " "] +[10.162580509185753, "o", "\\"] +[10.192580509185753, "o", "\r\n "] +[10.222580509185752, "o", "\""] +[10.252580509185751, "o", "E"] +[10.28258050918575, "o", "X"] +[10.31258050918575, "o", "P"] +[10.34258050918575, "o", "L"] +[10.372580509185749, "o", "A"] +[10.402580509185748, "o", "I"] +[10.432580509185748, "o", "N"] +[10.462580509185747, "o", " "] +[10.492580509185746, "o", "S"] +[10.522580509185746, "o", "E"] +[10.552580509185745, "o", "L"] +[10.582580509185744, "o", "E"] +[10.612580509185744, "o", "C"] +[10.642580509185743, "o", "T"] +[10.672580509185742, "o", " "] +[10.702580509185742, "o", "S"] +[10.732580509185741, "o", "U"] +[10.76258050918574, "o", "M"] +[10.79258050918574, "o", "("] +[10.82258050918574, "o", "v"] +[10.852580509185739, "o", "o"] +[10.882580509185738, "o", "t"] +[10.912580509185737, "o", "e"] +[10.942580509185737, "o", "s"] +[10.972580509185736, "o", ")"] +[11.002580509185735, "o", " "] +[11.032580509185735, "o", "F"] +[11.062580509185734, "o", "R"] +[11.092580509185733, "o", "O"] +[11.122580509185733, "o", "M"] +[11.152580509185732, "o", " "] +[11.182580509185732, "o", "p"] +[11.212580509185731, "o", "r"] +[11.24258050918573, "o", "e"] +[11.27258050918573, "o", "c"] +[11.302580509185729, "o", "i"] +[11.332580509185728, "o", "n"] +[11.362580509185728, "o", "c"] +[11.392580509185727, "o", "t"] +[11.422580509185726, "o", "_"] +[11.452580509185726, "o", "r"] +[11.482580509185725, "o", "e"] +[11.512580509185725, "o", "s"] +[11.542580509185724, "o", "u"] +[11.572580509185723, "o", "l"] +[11.602580509185723, "o", "t"] +[11.632580509185722, "o", "s"] +[11.662580509185721, "o", " "] +[11.69258050918572, "o", "W"] +[11.72258050918572, "o", "H"] +[11.75258050918572, "o", "E"] +[11.782580509185719, "o", "R"] +[11.812580509185718, "o", "E"] +[11.842580509185717, "o", " "] +[11.872580509185717, "o", "s"] +[11.902580509185716, "o", "t"] +[11.932580509185716, "o", "a"] +[11.962580509185715, "o", "t"] +[11.992580509185714, "o", "e"] +[12.022580509185714, "o", " "] +[12.052580509185713, "o", "="] +[12.082580509185712, "o", " "] +[12.112580509185712, "o", "'"] +[12.142580509185711, "o", "N"] +[12.17258050918571, "o", "e"] +[12.20258050918571, "o", "w"] +[12.23258050918571, "o", " "] +[12.262580509185709, "o", "Y"] +[12.292580509185708, "o", "o"] +[12.322580509185707, "o", "r"] +[12.352580509185707, "o", "k"] +[12.382580509185706, "o", "'"] +[12.412580509185705, "o", "\""] +[12.442580509185705, "o", "\r\n"] +[12.472580509185704, "o", "\u001b[0m"] +[12.502580509185703, "o", "\r\n"] +[13.190317020416172, "o", "Aggregate (cost=9785903.09..9785903.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..9784680.00 rows=489234 width=20)\r\nFilter: ((state)::text = 'New York'::text)\r\nMulticorn: Original Multicorn quals: [state = New York]\r\nMulticorn: CNF quals: [[('state', '=', 'New York')]]\r\nMulticorn: Objects removed by filter: 15\r\nMulticorn: Scan through 5 object(s) (6.63 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Deforming true\r\n"] +[13.220317020416172, "o", "\u001b[1m"] +[13.25031702041617, "o", "\u001b[36m"] +[13.28031702041617, "o", "\u001b[91m"] +[13.31031702041617, "o", "$"] +[13.340317020416169, "o", " "] +[13.370317020416168, "o", "\u001b[0m"] +[18.400317020416168, "o", "\u001b[H"] +[18.43031702041617, "o", "\u001b[J"] +[18.46031702041617, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Currently we have no fragments in cache. Let's run this query and check the cache again"] +[18.49031702041617, "o", "\r\n"] +[18.520317020416172, "o", "$"] +[18.550317020416173, "o", " "] +[18.580317020416175, "o", "s"] +[18.610317020416176, "o", "g"] +[18.640317020416177, "o", "r"] +[18.670317020416178, "o", " "] +[18.70031702041618, "o", "o"] +[18.73031702041618, "o", "b"] +[18.76031702041618, "o", "j"] +[18.790317020416182, "o", "e"] +[18.820317020416184, "o", "c"] +[18.850317020416185, "o", "t"] +[18.880317020416186, "o", "s"] +[18.910317020416187, "o", " "] +[18.940317020416188, "o", "-"] +[18.97031702041619, "o", "-"] +[19.00031702041619, "o", "l"] +[19.03031702041619, "o", "o"] +[19.060317020416193, "o", "c"] +[19.090317020416194, "o", "a"] +[19.120317020416195, "o", "l"] +[19.150317020416196, "o", "\r\n"] +[19.180317020416197, "o", "$"] +[19.2103170204162, "o", " "] +[19.2403170204162, "o", "s"] +[19.2703170204162, "o", "g"] +[19.300317020416202, "o", "r"] +[19.330317020416203, "o", " "] +[19.360317020416204, "o", "s"] +[19.390317020416205, "o", "q"] +[19.420317020416206, "o", "l"] +[19.450317020416207, "o", " "] +[19.48031702041621, "o", "-"] +[19.51031702041621, "o", "-"] +[19.54031702041621, "o", "i"] +[19.570317020416212, "o", "m"] +[19.600317020416213, "o", "a"] +[19.630317020416214, "o", "g"] +[19.660317020416215, "o", "e"] +[19.690317020416217, "o", " "] +[19.720317020416218, "o", "s"] +[19.75031702041622, "o", "p"] +[19.78031702041622, "o", "l"] +[19.81031702041622, "o", "i"] +[19.840317020416222, "o", "t"] +[19.870317020416223, "o", "g"] +[19.900317020416225, "o", "r"] +[19.930317020416226, "o", "a"] +[19.960317020416227, "o", "p"] +[19.990317020416228, "o", "h"] +[20.02031702041623, "o", "/"] +[20.05031702041623, "o", "2"] +[20.08031702041623, "o", "0"] +[20.110317020416232, "o", "1"] +[20.140317020416234, "o", "6"] +[20.170317020416235, "o", "_"] +[20.200317020416236, "o", "e"] +[20.230317020416237, "o", "l"] +[20.260317020416238, "o", "e"] +[20.29031702041624, "o", "c"] +[20.32031702041624, "o", "t"] +[20.35031702041624, "o", "i"] +[20.380317020416243, "o", "o"] +[20.410317020416244, "o", "n"] +[20.440317020416245, "o", ":"] +[20.470317020416246, "o", "l"] +[20.500317020416247, "o", "a"] +[20.53031702041625, "o", "t"] +[20.56031702041625, "o", "e"] +[20.59031702041625, "o", "s"] +[20.620317020416252, "o", "t"] +[20.650317020416253, "o", " "] +[20.680317020416254, "o", "\\"] +[20.710317020416255, "o", "\r\n "] +[20.740317020416256, "o", "\""] +[20.770317020416257, "o", "S"] +[20.80031702041626, "o", "E"] +[20.83031702041626, "o", "L"] +[20.86031702041626, "o", "E"] +[20.890317020416262, "o", "C"] +[20.920317020416263, "o", "T"] +[20.950317020416264, "o", " "] +[20.980317020416265, "o", "S"] +[21.010317020416267, "o", "U"] +[21.040317020416268, "o", "M"] +[21.07031702041627, "o", "("] +[21.10031702041627, "o", "v"] +[21.13031702041627, "o", "o"] +[21.160317020416272, "o", "t"] +[21.190317020416273, "o", "e"] +[21.220317020416275, "o", "s"] +[21.250317020416276, "o", ")"] +[21.280317020416277, "o", " "] +[21.310317020416278, "o", "F"] +[21.34031702041628, "o", "R"] +[21.37031702041628, "o", "O"] +[21.40031702041628, "o", "M"] +[21.430317020416283, "o", " "] +[21.460317020416284, "o", "p"] +[21.490317020416285, "o", "r"] +[21.520317020416286, "o", "e"] +[21.550317020416287, "o", "c"] +[21.580317020416288, "o", "i"] +[21.61031702041629, "o", "n"] +[21.64031702041629, "o", "c"] +[21.67031702041629, "o", "t"] +[21.700317020416293, "o", "_"] +[21.730317020416294, "o", "r"] +[21.760317020416295, "o", "e"] +[21.790317020416296, "o", "s"] +[21.820317020416297, "o", "u"] +[21.8503170204163, "o", "l"] +[21.8803170204163, "o", "t"] +[21.9103170204163, "o", "s"] +[21.940317020416302, "o", " "] +[21.970317020416303, "o", "W"] +[22.000317020416304, "o", "H"] +[22.030317020416305, "o", "E"] +[22.060317020416306, "o", "R"] +[22.090317020416308, "o", "E"] +[22.12031702041631, "o", " "] +[22.15031702041631, "o", "s"] +[22.18031702041631, "o", "t"] +[22.210317020416312, "o", "a"] +[22.240317020416313, "o", "t"] +[22.270317020416314, "o", "e"] +[22.300317020416315, "o", " "] +[22.330317020416317, "o", "="] +[22.360317020416318, "o", " "] +[22.39031702041632, "o", "'"] +[22.42031702041632, "o", "N"] +[22.45031702041632, "o", "e"] +[22.480317020416322, "o", "w"] +[22.510317020416323, "o", " "] +[22.540317020416325, "o", "Y"] +[22.570317020416326, "o", "o"] +[22.600317020416327, "o", "r"] +[22.630317020416328, "o", "k"] +[22.66031702041633, "o", "'"] +[22.69031702041633, "o", "\""] +[22.72031702041633, "o", "\r\n"] +[22.750317020416333, "o", "$"] +[22.780317020416334, "o", " "] +[22.810317020416335, "o", "s"] +[22.840317020416336, "o", "g"] +[22.870317020416337, "o", "r"] +[22.900317020416338, "o", " "] +[22.93031702041634, "o", "o"] +[22.96031702041634, "o", "b"] +[22.99031702041634, "o", "j"] +[23.020317020416343, "o", "e"] +[23.050317020416344, "o", "c"] +[23.080317020416345, "o", "t"] +[23.110317020416346, "o", "s"] +[23.140317020416347, "o", " "] +[23.17031702041635, "o", "-"] +[23.20031702041635, "o", "-"] +[23.23031702041635, "o", "l"] +[23.260317020416352, "o", "o"] +[23.290317020416353, "o", "c"] +[23.320317020416354, "o", "a"] +[23.350317020416355, "o", "l"] +[23.380317020416356, "o", "\r\n"] +[23.410317020416358, "o", "\u001b[0m"] +[23.44031702041636, "o", "\r\n"] +[23.67258726120005, "o", "\r\n"] +[24.67258726120005, "o", "7.91188e+06\r\n"] +[24.89694486618052, "o", "o65dbd9dc992982689ec65866ab733be69c897c659d93488457a2fccb63e97c\r\no974b20261ee5f1ac124a8445a65c00e6377cfabb93b5db92bd60fc7ca3fcee\r\no9c33b53f1a4872c598ad9d08aaafd78fabce1f16ef4c5e19ad9756b9b85fda\r\no9d4cf85101cc4d431c895998cf1cad642f1fe6cd923c8209f2df38441afeeb\r\noc438159794e378ca23c306143ccdc7ce1683045f80a511aeeabb19302be63d\r\n"] +[24.92694486618052, "o", "\u001b[1m"] +[24.95694486618052, "o", "\u001b[36m"] +[24.986944866180522, "o", "\u001b[91m"] +[25.016944866180523, "o", "$"] +[25.046944866180525, "o", " "] +[25.076944866180526, "o", "\u001b[0m"] +[30.106944866180527, "o", "\u001b[H"] +[30.136944866180528, "o", "\u001b[J"] +[30.16694486618053, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Since default indexing in Splitgraph is done by min-max values for every column"] +[30.19694486618053, "o", "\r\n"] +[30.22694486618053, "o", "$ # in every fragment, it's going to do worse if multiple fragments span the same value\r\n"] +[30.256944866180532, "o", "$"] +[30.286944866180534, "o", " "] +[30.316944866180535, "o", "s"] +[30.346944866180536, "o", "g"] +[30.376944866180537, "o", "r"] +[30.406944866180538, "o", " "] +[30.43694486618054, "o", "s"] +[30.46694486618054, "o", "q"] +[30.49694486618054, "o", "l"] +[30.526944866180543, "o", " "] +[30.556944866180544, "o", "-"] +[30.586944866180545, "o", "-"] +[30.616944866180546, "o", "i"] +[30.646944866180547, "o", "m"] +[30.67694486618055, "o", "a"] +[30.70694486618055, "o", "g"] +[30.73694486618055, "o", "e"] +[30.766944866180552, "o", " "] +[30.796944866180553, "o", "s"] +[30.826944866180554, "o", "p"] +[30.856944866180555, "o", "l"] +[30.886944866180556, "o", "i"] +[30.916944866180557, "o", "t"] +[30.94694486618056, "o", "g"] +[30.97694486618056, "o", "r"] +[31.00694486618056, "o", "a"] +[31.036944866180562, "o", "p"] +[31.066944866180563, "o", "h"] +[31.096944866180564, "o", "/"] +[31.126944866180565, "o", "2"] +[31.156944866180567, "o", "0"] +[31.186944866180568, "o", "1"] +[31.21694486618057, "o", "6"] +[31.24694486618057, "o", "_"] +[31.27694486618057, "o", "e"] +[31.306944866180572, "o", "l"] +[31.336944866180573, "o", "e"] +[31.366944866180575, "o", "c"] +[31.396944866180576, "o", "t"] +[31.426944866180577, "o", "i"] +[31.456944866180578, "o", "o"] +[31.48694486618058, "o", "n"] +[31.51694486618058, "o", ":"] +[31.54694486618058, "o", "l"] +[31.576944866180582, "o", "a"] +[31.606944866180584, "o", "t"] +[31.636944866180585, "o", "e"] +[31.666944866180586, "o", "s"] +[31.696944866180587, "o", "t"] +[31.726944866180588, "o", " "] +[31.75694486618059, "o", "\\"] +[31.78694486618059, "o", "\r\n "] +[31.81694486618059, "o", "\""] +[31.846944866180593, "o", "E"] +[31.876944866180594, "o", "X"] +[31.906944866180595, "o", "P"] +[31.936944866180596, "o", "L"] +[31.966944866180597, "o", "A"] +[31.9969448661806, "o", "I"] +[32.0269448661806, "o", "N"] +[32.0569448661806, "o", " "] +[32.0869448661806, "o", "S"] +[32.1169448661806, "o", "E"] +[32.146944866180604, "o", "L"] +[32.176944866180605, "o", "E"] +[32.206944866180606, "o", "C"] +[32.23694486618061, "o", "T"] +[32.26694486618061, "o", " "] +[32.29694486618061, "o", "S"] +[32.32694486618061, "o", "U"] +[32.35694486618061, "o", "M"] +[32.38694486618061, "o", "("] +[32.416944866180614, "o", "v"] +[32.446944866180615, "o", "o"] +[32.47694486618062, "o", "t"] +[32.50694486618062, "o", "e"] +[32.53694486618062, "o", "s"] +[32.56694486618062, "o", ")"] +[32.59694486618062, "o", " "] +[32.62694486618062, "o", "F"] +[32.65694486618062, "o", "R"] +[32.686944866180625, "o", "O"] +[32.716944866180626, "o", "M"] +[32.74694486618063, "o", " "] +[32.77694486618063, "o", "p"] +[32.80694486618063, "o", "r"] +[32.83694486618063, "o", "e"] +[32.86694486618063, "o", "c"] +[32.89694486618063, "o", "i"] +[32.926944866180634, "o", "n"] +[32.956944866180635, "o", "c"] +[32.986944866180636, "o", "t"] +[33.01694486618064, "o", "_"] +[33.04694486618064, "o", "r"] +[33.07694486618064, "o", "e"] +[33.10694486618064, "o", "s"] +[33.13694486618064, "o", "u"] +[33.16694486618064, "o", "l"] +[33.196944866180644, "o", "t"] +[33.226944866180645, "o", "s"] +[33.256944866180646, "o", " "] +[33.28694486618065, "o", "W"] +[33.31694486618065, "o", "H"] +[33.34694486618065, "o", "E"] +[33.37694486618065, "o", "R"] +[33.40694486618065, "o", "E"] +[33.43694486618065, "o", " "] +[33.466944866180654, "o", "c"] +[33.496944866180655, "o", "o"] +[33.526944866180656, "o", "u"] +[33.55694486618066, "o", "n"] +[33.58694486618066, "o", "t"] +[33.61694486618066, "o", "y"] +[33.64694486618066, "o", "_"] +[33.67694486618066, "o", "n"] +[33.70694486618066, "o", "a"] +[33.736944866180664, "o", "m"] +[33.766944866180665, "o", "e"] +[33.79694486618067, "o", " "] +[33.82694486618067, "o", "="] +[33.85694486618067, "o", " "] +[33.88694486618067, "o", "'"] +[33.91694486618067, "o", "N"] +[33.94694486618067, "o", "e"] +[33.97694486618067, "o", "w"] +[34.006944866180675, "o", " "] +[34.036944866180676, "o", "Y"] +[34.06694486618068, "o", "o"] +[34.09694486618068, "o", "r"] +[34.12694486618068, "o", "k"] +[34.15694486618068, "o", " "] +[34.18694486618068, "o", "C"] +[34.21694486618068, "o", "o"] +[34.246944866180684, "o", "u"] +[34.276944866180685, "o", "n"] +[34.306944866180686, "o", "t"] +[34.33694486618069, "o", "y"] +[34.36694486618069, "o", "'"] +[34.39694486618069, "o", "\""] +[34.42694486618069, "o", "\r\n"] +[34.45694486618069, "o", "\u001b[0m"] +[34.48694486618069, "o", "\r\n"] +[35.19335646629361, "o", "Aggregate (cost=37789403.09..37789403.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..37784680.00 rows=1889234 width=20)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 1\r\nMulticorn: Scan through 19 object(s) (25.51 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true,"] +[35.1933736324313, "o", " Deforming true\r\n"] +[35.223373632431304, "o", "\u001b[1m"] +[35.253373632431305, "o", "\u001b[36m"] +[35.28337363243131, "o", "\u001b[91m"] +[35.31337363243131, "o", "$"] +[35.34337363243131, "o", " "] +[35.37337363243131, "o", "\u001b[0m"] +[40.40337363243131, "o", "\u001b[H"] +[40.43337363243131, "o", "\u001b[J"] +[40.46337363243131, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Let's download the whole dataset and add a bloom filter index on county_name"] +[40.493373632431314, "o", "\r\n"] +[40.523373632431316, "o", "$"] +[40.55337363243132, "o", " "] +[40.58337363243132, "o", "s"] +[40.61337363243132, "o", "g"] +[40.64337363243132, "o", "r"] +[40.67337363243132, "o", " "] +[40.70337363243132, "o", "r"] +[40.733373632431324, "o", "e"] +[40.763373632431325, "o", "i"] +[40.793373632431326, "o", "n"] +[40.82337363243133, "o", "d"] +[40.85337363243133, "o", "e"] +[40.88337363243133, "o", "x"] +[40.91337363243133, "o", " "] +[40.94337363243133, "o", "-"] +[40.97337363243133, "o", "i"] +[41.003373632431334, "o", " "] +[41.033373632431335, "o", "'"] +[41.063373632431336, "o", "{"] +[41.09337363243134, "o", "\""] +[41.12337363243134, "o", "b"] +[41.15337363243134, "o", "l"] +[41.18337363243134, "o", "o"] +[41.21337363243134, "o", "o"] +[41.24337363243134, "o", "m"] +[41.273373632431344, "o", "\""] +[41.303373632431345, "o", ":"] +[41.333373632431346, "o", " "] +[41.36337363243135, "o", "{"] +[41.39337363243135, "o", "\""] +[41.42337363243135, "o", "c"] +[41.45337363243135, "o", "o"] +[41.48337363243135, "o", "u"] +[41.51337363243135, "o", "n"] +[41.543373632431354, "o", "t"] +[41.573373632431355, "o", "y"] +[41.60337363243136, "o", "_"] +[41.63337363243136, "o", "n"] +[41.66337363243136, "o", "a"] +[41.69337363243136, "o", "m"] +[41.72337363243136, "o", "e"] +[41.75337363243136, "o", "\""] +[41.78337363243136, "o", ":"] +[41.813373632431365, "o", " "] +[41.843373632431366, "o", "{"] +[41.87337363243137, "o", "\""] +[41.90337363243137, "o", "p"] +[41.93337363243137, "o", "r"] +[41.96337363243137, "o", "o"] +[41.99337363243137, "o", "b"] +[42.02337363243137, "o", "a"] +[42.053373632431374, "o", "b"] +[42.083373632431375, "o", "i"] +[42.113373632431376, "o", "l"] +[42.14337363243138, "o", "i"] +[42.17337363243138, "o", "t"] +[42.20337363243138, "o", "y"] +[42.23337363243138, "o", "\""] +[42.26337363243138, "o", ":"] +[42.29337363243138, "o", " "] +[42.323373632431384, "o", "0"] +[42.353373632431385, "o", "."] +[42.383373632431386, "o", "0"] +[42.41337363243139, "o", "1"] +[42.44337363243139, "o", "}"] +[42.47337363243139, "o", "}"] +[42.50337363243139, "o", "}"] +[42.53337363243139, "o", "'"] +[42.56337363243139, "o", " "] +[42.593373632431394, "o", "\\"] +[42.623373632431395, "o", "\r\n "] +[42.653373632431396, "o", "s"] +[42.6833736324314, "o", "p"] +[42.7133736324314, "o", "l"] +[42.7433736324314, "o", "i"] +[42.7733736324314, "o", "t"] +[42.8033736324314, "o", "g"] +[42.8333736324314, "o", "r"] +[42.863373632431404, "o", "a"] +[42.893373632431405, "o", "p"] +[42.92337363243141, "o", "h"] +[42.95337363243141, "o", "/"] +[42.98337363243141, "o", "2"] +[43.01337363243141, "o", "0"] +[43.04337363243141, "o", "1"] +[43.07337363243141, "o", "6"] +[43.10337363243141, "o", "_"] +[43.133373632431415, "o", "e"] +[43.163373632431416, "o", "l"] +[43.19337363243142, "o", "e"] +[43.22337363243142, "o", "c"] +[43.25337363243142, "o", "t"] +[43.28337363243142, "o", "i"] +[43.31337363243142, "o", "o"] +[43.34337363243142, "o", "n"] +[43.373373632431424, "o", ":"] +[43.403373632431425, "o", "l"] +[43.433373632431426, "o", "a"] +[43.46337363243143, "o", "t"] +[43.49337363243143, "o", "e"] +[43.52337363243143, "o", "s"] +[43.55337363243143, "o", "t"] +[43.58337363243143, "o", " "] +[43.61337363243143, "o", "p"] +[43.643373632431434, "o", "r"] +[43.673373632431435, "o", "e"] +[43.703373632431436, "o", "c"] +[43.73337363243144, "o", "i"] +[43.76337363243144, "o", "n"] +[43.79337363243144, "o", "c"] +[43.82337363243144, "o", "t"] +[43.85337363243144, "o", "_"] +[43.88337363243144, "o", "r"] +[43.913373632431444, "o", "e"] +[43.943373632431445, "o", "s"] +[43.973373632431446, "o", "u"] +[44.00337363243145, "o", "l"] +[44.03337363243145, "o", "t"] +[44.06337363243145, "o", "s"] +[44.09337363243145, "o", "\r\n"] +[44.12337363243145, "o", "\u001b[0m"] +[44.15337363243145, "o", "\r\n"] +[44.382462177277034, "o", "Reindexing table splitgraph/2016_election:3835145ada3f07cad99087d1b1071122d58c48783cbfe4694c101d35651fba90/precinct_results\r\n"] +[44.41457262992901, "o", "Need to download 20 objects (20.19 MiB), cache occupancy: 6.63 MiB/10.00 GiB\r\n"] +[44.47186103820843, "o", "Fetching 15 objects, total size 20.19 MiB\r\n"] +[44.47453657150311, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (ca446922b2844ed19f8e6c8b35edbe31@data.splitgraph.com:5432/sgregistry)...\r\n"] +[45.47453657150311, "o", "\r 0%| | 0/15 [00:00 Foreign Scan on precinct_results (cost=20.00..4000000.00 rows=200000 width=20)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 18\r\nMulticorn: Scan through 2 object(s) (2.64 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Defo"] +[103.10190057754576, "o", "rming true\r\n"] +[103.13190057754576, "o", "\u001b[1m"] +[103.16190057754577, "o", "\u001b[36m"] +[103.19190057754577, "o", "\u001b[91m"] +[103.22190057754577, "o", "$"] +[103.25190057754577, "o", " "] +[103.28190057754577, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.10/dbt.cast b/content/casts/versioned/archive/v0.2.10/dbt.cast new file mode 100644 index 00000000..ee189435 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.10/dbt.cast @@ -0,0 +1,2217 @@ +{"version": 2, "width": 100, "height": 48, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1616004604, "metadata": {"tss": [{"h": "dbt must be installed for this to work (pip install dbt)", "ts": 0.06}, {"h": "Ingest the initial data (in CSV) from this branch of the project.", "ts": 11.559999999999999}, {"h": "Snapshot the initial data with Splitgraph.", "ts": 26.270662584304905}, {"h": "Inspect the original data", "ts": 35.316450147629}, {"h": "The status column in the raw_orders table in the initial dataset can", "ts": 48.316450147629}, {"h": "Commit this dataset and check out the original data", "ts": 59.03215530395549}, {"h": "Check out the 'serious' version of the dbt project that uses data from", "ts": 68.84281974792536}, {"h": "Check that dbt is set up to connect to the Splitgraph engine.", "ts": 75.82998613357607}, {"h": "Now run the dbt models.", "ts": 99.32998613357607}, {"h": "Take a look at the built dataset and commit it.", "ts": 119.82998613357607}, {"h": "Check out the new version of the raw dataset and run dbt against it as well.", "ts": 134.32998613357609}, {"h": "Create an image from the new data.", "ts": 155.82998613357609}, {"h": "We now have two versions of the source and the target dataset.", "ts": 165.82998613357609}, {"h": "Inspect the difference between the two datasets that dbt built.", "ts": 173.2330741786964}, {"h": "Run a sample query: how much in bank transfer refunds did we process?", "ts": 182.7330741786964}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # dbt must be installed for this to work (pip install dbt)"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Clone the Jaffle Shop dbt example project\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "d"] +[0.27, "o", "b"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "-"] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "v"] +[0.4500000000000002, "o", "e"] +[0.4800000000000002, "o", "r"] +[0.5100000000000002, "o", "s"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "n"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "$"] +[0.6900000000000004, "o", " "] +[0.7200000000000004, "o", "g"] +[0.7500000000000004, "o", "i"] +[0.7800000000000005, "o", "t"] +[0.8100000000000005, "o", " "] +[0.8400000000000005, "o", "c"] +[0.8700000000000006, "o", "l"] +[0.9000000000000006, "o", "o"] +[0.9300000000000006, "o", "n"] +[0.9600000000000006, "o", "e"] +[0.9900000000000007, "o", " "] +[1.0200000000000007, "o", "h"] +[1.0500000000000007, "o", "t"] +[1.0800000000000007, "o", "t"] +[1.1100000000000008, "o", "p"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", ":"] +[1.2000000000000008, "o", "/"] +[1.2300000000000009, "o", "/"] +[1.260000000000001, "o", "g"] +[1.290000000000001, "o", "i"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", "h"] +[1.380000000000001, "o", "u"] +[1.410000000000001, "o", "b"] +[1.440000000000001, "o", "."] +[1.470000000000001, "o", "c"] +[1.500000000000001, "o", "o"] +[1.5300000000000011, "o", "m"] +[1.5600000000000012, "o", "/"] +[1.5900000000000012, "o", "f"] +[1.6200000000000012, "o", "i"] +[1.6500000000000012, "o", "s"] +[1.6800000000000013, "o", "h"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "o"] +[1.7700000000000014, "o", "w"] +[1.8000000000000014, "o", "n"] +[1.8300000000000014, "o", "-"] +[1.8600000000000014, "o", "a"] +[1.8900000000000015, "o", "n"] +[1.9200000000000015, "o", "a"] +[1.9500000000000015, "o", "l"] +[1.9800000000000015, "o", "y"] +[2.0100000000000016, "o", "t"] +[2.0400000000000014, "o", "i"] +[2.070000000000001, "o", "c"] +[2.100000000000001, "o", "s"] +[2.130000000000001, "o", "/"] +[2.1600000000000006, "o", "j"] +[2.1900000000000004, "o", "a"] +[2.22, "o", "f"] +[2.25, "o", "f"] +[2.28, "o", "l"] +[2.3099999999999996, "o", "e"] +[2.3399999999999994, "o", "_"] +[2.369999999999999, "o", "s"] +[2.399999999999999, "o", "h"] +[2.429999999999999, "o", "o"] +[2.4599999999999986, "o", "p"] +[2.4899999999999984, "o", "."] +[2.5199999999999982, "o", "g"] +[2.549999999999998, "o", "i"] +[2.579999999999998, "o", "t"] +[2.6099999999999977, "o", "\r\n"] +[2.6399999999999975, "o", "\u001b[0m"] +[2.6699999999999973, "o", "\r\n"] +[3.6699999999999973, "o", "installed version: 0.18.0\r\n latest version: 0.19.0\r\n\r\nYour version of dbt is out of date! You can find instructions for upgrading here:\r\nhttps://docs.getdbt.com/docs/installation\r\n\r\nPlugins:\r\n - postgres: 0.18.0\r\n - redshift: 0.18.0\r\n - snowflake: 0.18.0\r\n - bigquery: 0.18.0\r\n"] +[3.6703647804260227, "o", "\u001b[0m"] +[3.6723298263549777, "o", "Cloning into 'jaffle_shop'...\r\n"] +[3.8771211338043186, "o", "remote: Enumerating objects: 37, done. \r\nremote: Counting objects: 2% (1/37) \rremote: Counting objects: 5% (2/37) \r"] +[3.8771301937103244, "o", "remote: Counting objects: 8% (3/37) \rremote: Counting objects: 10% (4/37) \rremote: Counting objects: 13% (5/37) \rremote: Counting objects: 16% (6/37) \rremote: Counting objects: 18% (7/37) \rremote: Counting objects: 21% (8/37) \rremote: Counting objects: 24% (9/37) \rremote: Counting objects: 27% (10/37) \rremote: Counting objects: 29% (11/37) \rremote: Counting objects: 32% (12/37) \rremote: Counting objects: 35% (13/37) \rre"] +[3.8771378231048557, "o", "mote: Counting objects: 37% (14/37) \rremote: Counting objects: 40% (15/37) \rremote: Counting objects: 43% (16/37) \rremote: Counting objects: 45% (17/37) \rremote: Counting objects: 48% (18/37) \r"] +[3.8771442604064914, "o", "remote: Counting objects: 51% (19/37) \r"] +[3.87715260505676, "o", "remote: Counting objects: 54% (20/37) \rremote: Counting objects: 56% (21/37) \r"] +[3.8771578502655, "o", "remote: Counting objects: 59% (22/37) \rremote: Counting objects: 62% (23/37) \r"] +[3.8771628570556613, "o", "remote: Counting objects: 64% (24/37) \r"] +[3.8771676254272434, "o", "remote: Counting objects: 67% (25/37) \rremote: Counting objects: 70% (26/37) \r"] +[3.877171916961667, "o", "remote: Counting objects: 72% (27/37) \r"] +[3.877180738449094, "o", "remote: Counting objects: 75% (28/37) \r"] +[3.877185506820676, "o", "remote: Counting objects: 78% (29/37) \rremote: Counting objects: 81% (30/37) \r"] +[3.877190036773679, "o", "remote: Counting objects: 83% (31/37) \r"] +[3.8771959972381564, "o", "remote: Counting objects: 86% (32/37) \rremote: Counting objects: 89% (33/37) \r"] +[3.8772005271911594, "o", "remote: Counting objects: 91% (34/37) \r"] +[3.877204818725583, "o", "remote: Counting objects: 94% (35/37) \r"] +[3.8772098255157443, "o", "remote: Counting objects: 97% (36/37) \r"] +[3.8772148323059055, "o", "remote: Counting objects: 100% (37/37) \r"] +[3.8772191238403293, "o", "remote: Counting objects: 100% (37/37), done. \r\n"] +[3.877225799560544, "o", "remote: Compressing objects: 3% (1/27) \r"] +[3.877230567932126, "o", "remote: Compressing objects: 7% (2/27) \r"] +[3.877234621047971, "o", "remote: Compressing objects: 11% (3/27) \r"] +[3.877239151000974, "o", "remote: Compressing objects: 14% (4/27) \r"] +[3.877244396209714, "o", "remote: Compressing objects: 18% (5/27) \rremote: Compressing objects: 22% (6/27) \r"] +[3.880869312286374, "o", "remote: Compressing objects: 25% (7/27) \r"] +[3.885350151062009, "o", "remote: Compressing objects: 29% (8/27) \rremote: Compressing objects: 33% (9/27) \rremote: Compressing objects: 37% (10/27) \rremote: Compressing objects: 40% (11/27) \rremote: Compressing objects: 44% (12/27) \rremote: Compressing objects: 48% (13/27) \rremote: Compressing objects: 51% (14/27) \rremote: Compressing objects: 55% (15/27) \rremote: Compressing objects: 59% (16/27) \rremote: Compressing objects: 62% (17/27) \rremote: Compre"] +[3.8853675556182834, "o", "ssing objects: 66% (18/27) \rremote: Compressing objects: 70% (19/27) \rremote: Compressing objects: 74% (20/27) \rremote: Compressing objects: 77% (21/27) \rremote: Compressing objects: 81% (22/27) \rremote: Compressing objects: 85% (23/27) \rremote: Compressing objects: 88% (24/27) \rremote: Compressing objects: 92% (25/27) \rremote: Compressing objects: 96% (26/27) \rremote: Compressing objects: 100% (27/27) \rremote: Compressing object"] +[3.8853866291046115, "o", "s: 100% (27/27), done. \r\n"] +[3.8869234752655, "o", "Receiving objects: 0% (1/394)\r"] +[3.8869523239135715, "o", "Receiving objects: 1% (4/394)\r"] +[3.887044830322263, "o", "Receiving objects: 2% (8/394)\r"] +[3.8871406745910617, "o", "Receiving objects: 3% (12/394)\r"] +[3.887214345932004, "o", "Receiving objects: 4% (16/394)\r"] +[3.887278003692624, "o", "Receiving objects: 5% (20/394)\r"] +[3.8874196243286105, "o", "Receiving objects: 6% (24/394)\r"] +[3.8874971103668186, "o", "Receiving objects: 7% (28/394)\r"] +[3.887573165893552, "o", "Receiving objects: 8% (32/394)\r"] +[3.888075990676877, "o", "Receiving objects: 9% (36/394)\r"] +[3.888275308609006, "o", "Receiving objects: 10% (40/394)\r"] +[3.888434810638425, "o", "Receiving objects: 11% (44/394)\r"] +[3.8885435295104953, "o", "Receiving objects: 12% (48/394)\r"] +[3.888606472015378, "o", "Receiving objects: 13% (52/394)\r"] +[3.888662500381467, "o", "Receiving objects: 14% (56/394)\r"] +[3.8887459468841525, "o", "Receiving objects: 15% (60/394)\r"] +[3.8887950611114475, "o", "Receiving objects: 16% (64/394)\r"] +[3.8888696861267062, "o", "Receiving objects: 17% (67/394)\r"] +[3.888961000442502, "o", "Receiving objects: 18% (71/394)\r"] +[3.889120264053342, "o", "Receiving objects: 19% (75/394)\r"] +[3.8893443775176975, "o", "Receiving objects: 20% (79/394)\r"] +[3.8896400165557834, "o", "Receiving objects: 21% (83/394)\r"] +[3.8898169231414768, "o", "Receiving objects: 22% (87/394)\r"] +[3.8898987007141086, "o", "Receiving objects: 23% (91/394)\r"] +[3.8914336395263645, "o", "Receiving objects: 24% (95/394)\r"] +[3.8916548919677707, "o", "Receiving objects: 25% (99/394)\r"] +[3.8917416763305637, "o", "Receiving objects: 26% (103/394)\r"] +[3.89198939323425, "o", "Receiving objects: 27% (107/394)\r"] +[3.892406387329099, "o", "Receiving objects: 28% (111/394)\r"] +[3.8924969863891574, "o", "Receiving objects: 29% (115/394)\r"] +[3.892568273544309, "o", "Receiving objects: 30% (119/394)\r"] +[3.892627162933347, "o", "Receiving objects: 31% (123/394)\r"] +[3.895638866424558, "o", "Receiving objects: 32% (127/394)\r"] +[3.8956729602813693, "o", "Receiving objects: 33% (131/394)\r"] +[3.8957435321807834, "o", "Receiving objects: 34% (134/394)\r"] +[3.8958141040801975, "o", "Receiving objects: 35% (138/394)\r"] +[3.896127386093137, "o", "Receiving objects: 36% (142/394)\r"] +[3.896151466369626, "o", "Receiving objects: 37% (146/394)\r"] +[3.89668385505676, "o", "Receiving objects: 38% (150/394)\r"] +[3.896799249649045, "o", "Receiving objects: 39% (154/394)\r"] +[3.8968404960632297, "o", "Receiving objects: 40% (158/394)\r"] +[3.8969110679626437, "o", "Receiving objects: 41% (162/394)\r"] +[3.8969523143768283, "o", "Receiving objects: 42% (166/394)\r"] +[3.8969830703735324, "o", "Receiving objects: 43% (170/394)\r"] +[3.897024555206296, "o", "Receiving objects: 44% (174/394)\r"] +[3.8970712852478, "o", "Receiving objects: 45% (178/394)\r"] +[3.8970915508270236, "o", "Receiving objects: 46% (182/394)\r"] +[3.897118492126462, "o", "Receiving objects: 47% (186/394)\r"] +[3.89719597816467, "o", "Receiving objects: 48% (190/394)\r"] +[3.897224349975583, "o", "Receiving objects: 49% (194/394)\r"] +[3.897273464202878, "o", "Receiving objects: 50% (197/394)\r"] +[3.8972977828979465, "o", "Receiving objects: 51% (201/394)\r"] +[3.8973168563842746, "o", "Receiving objects: 52% (205/394)\r"] +[3.897348327636716, "o", "Receiving objects: 53% (209/394)\r"] +[3.8973802757263156, "o", "Receiving objects: 54% (213/394)\r"] +[3.8974007797241184, "o", "Receiving objects: 55% (217/394)\r"] +[3.8974193763732883, "o", "Receiving objects: 56% (221/394)\r"] +[3.897439880371091, "o", "Receiving objects: 57% (225/394)\r"] +[3.897473020553586, "o", "Receiving objects: 58% (229/394)\r"] +[3.8975094985961887, "o", "Receiving objects: 59% (233/394)\r"] +[3.897545261383054, "o", "Receiving objects: 60% (237/394)\r"] +[3.897575778961179, "o", "Receiving objects: 61% (241/394)\r"] +[3.8976103496551486, "o", "Receiving objects: 62% (245/394)\r"] +[3.8976525497436496, "o", "Receiving objects: 63% (249/394)\r"] +[3.8977131080627414, "o", "Receiving objects: 64% (253/394)\r"] +[3.897747678756711, "o", "Receiving objects: 65% (257/394)\r"] +[3.897768659591672, "o", "Receiving objects: 66% (261/394)\r"] +[3.8978070449829074, "o", "Receiving objects: 67% (264/394)\r"] +[3.8978797626495334, "o", "Receiving objects: 68% (268/394)\r"] +[3.897906703948972, "o", "Receiving objects: 69% (272/394)\r"] +[3.8979334068298312, "o", "Receiving objects: 70% (276/394)\r"] +[3.89802925109863, "o", "Receiving objects: 71% (280/394)\r"] +[3.898064775466916, "o", "Receiving objects: 72% (284/394)\r"] +[3.898097438812253, "o", "Receiving objects: 73% (288/394)\r"] +[3.8981539440155, "o", "Receiving objects: 74% (292/394)\r"] +[3.8981780242919895, "o", "Receiving objects: 75% (296/394)\r"] +[3.8982092571258518, "o", "Receiving objects: 76% (300/394)\r"] +[3.8982414436340305, "o", "Receiving objects: 77% (304/394)\r"] +[3.8982691001892062, "o", "Receiving objects: 78% (308/394)\r"] +[3.8983284664154025, "o", "Receiving objects: 79% (312/394)\r"] +[3.8984038066863986, "o", "Receiving objects: 80% (316/394)\r"] +[3.898462934494016, "o", "Receiving objects: 81% (320/394)\r"] +[3.898500843048093, "o", "Receiving objects: 82% (324/394)\r"] +[3.8985273075103732, "o", "Receiving objects: 83% (328/394)\r"] +[3.8985609245300266, "o", "Receiving objects: 84% (331/394)\r"] +[3.898610754013059, "o", "Receiving objects: 85% (335/394)\r"] +[3.898639364242551, "o", "Receiving objects: 86% (339/394)\r"] +[3.8986612987518283, "o", "Receiving objects: 87% (343/394)\r"] +[3.8986901473998996, "o", "Receiving objects: 88% (347/394)\r"] +[3.898717088699338, "o", "Receiving objects: 89% (351/394)\r"] +[3.898822469711301, "o", "Receiving objects: 90% (355/394)\r"] +[3.898862047195432, "o", "Receiving objects: 91% (359/394)\r"] +[3.8989576530456516, "o", "Receiving objects: 92% (363/394)\r"] +[3.8990120124816867, "o", "Receiving objects: 93% (367/394)\r"] +[3.8990461063384982, "o", "Receiving objects: 94% (371/394)\r"] +[3.9008170795440646, "o", "remote: Total 394 (delta 14), reused 18 (delta 4), pack-reused 357 \r\n"] +[3.9016036224365207, "o", "Receiving objects: 95% (375/394)\r"] +[3.9024483394622775, "o", "Receiving objects: 96% (379/394)\r"] +[3.902482433319089, "o", "Receiving objects: 97% (383/394)\r"] +[3.902503652572629, "o", "Receiving objects: 98% (387/394)\r"] +[3.9030896854400607, "o", "Receiving objects: 99% (391/394)\r"] +[3.903127832412717, "o", "Receiving objects: 100% (394/394)\r"] +[3.903156442642209, "o", "Receiving objects: 100% (394/394), 289.21 KiB | 16.07 MiB/s, done."] +[3.9031709861755344, "o", "\r\n"] +[3.903366966247556, "o", "Resolving deltas: 0% (0/176)\r"] +[3.9034368228912326, "o", "Resolving deltas: 1% (2/176)\r"] +[3.9035233688354465, "o", "Resolving deltas: 2% (4/176)\r"] +[3.903578920364377, "o", "Resolving deltas: 3% (6/176)\r"] +[3.90361802101135, "o", "Resolving deltas: 4% (8/176)\r"] +[3.9036473464965793, "o", "Resolving deltas: 5% (9/176)\r"] +[3.903679533004758, "o", "Resolving deltas: 6% (11/176)\r"] +[3.9037129116058322, "o", "Resolving deltas: 7% (13/176)\r"] +[3.9037462902069064, "o", "Resolving deltas: 8% (15/176)\r"] +[3.9037741851806613, "o", "Resolving deltas: 9% (16/176)\r"] +[3.9038147163391086, "o", "Resolving deltas: 10% (18/176)\r"] +[3.903848571777341, "o", "Resolving deltas: 11% (20/176)\r"] +[3.903876466751096, "o", "Resolving deltas: 12% (22/176)\r"] +[3.9038988780975314, "o", "Resolving deltas: 13% (23/176)\r"] +[3.903938217163083, "o", "Resolving deltas: 14% (25/176)\r"] +[3.903970165252683, "o", "Resolving deltas: 15% (27/176)\r"] +[3.903996629714963, "o", "Resolving deltas: 16% (29/176)\r"] +[3.9040240478515598, "o", "Resolving deltas: 17% (30/176)\r"] +[3.904050273895261, "o", "Resolving deltas: 18% (32/176)\r"] +[3.9040848445892307, "o", "Resolving deltas: 19% (34/176)\r"] +[3.904115839004514, "o", "Resolving deltas: 20% (36/176)\r"] +[3.9041430187225314, "o", "Resolving deltas: 21% (37/176)\r"] +[3.9041737747192355, "o", "Resolving deltas: 22% (39/176)\r"] +[3.904271049499509, "o", "Resolving deltas: 23% (41/176)\r"] +[3.9043380451202365, "o", "Resolving deltas: 24% (43/176)\r"] +[3.9043866825103732, "o", "Resolving deltas: 25% (44/176)\r"] +[3.904433174133298, "o", "Resolving deltas: 26% (46/176)\r"] +[3.904468698501584, "o", "Resolving deltas: 27% (48/176)\r"] +[3.9045895767211887, "o", "Resolving deltas: 28% (50/176)\r"] +[3.904686613082883, "o", "Resolving deltas: 29% (52/176)\r"] +[3.9047280979156467, "o", "Resolving deltas: 30% (53/176)\r"] +[3.9047557544708225, "o", "Resolving deltas: 31% (55/176)\r"] +[3.904790325164792, "o", "Resolving deltas: 32% (57/176)\r"] +[3.904825611114499, "o", "Resolving deltas: 33% (59/176)\r"] +[3.905099554061887, "o", "Resolving deltas: 34% (60/176)\r"] +[3.905494613647458, "o", "Resolving deltas: 35% (62/176)\r"] +[3.9057180118560764, "o", "Resolving deltas: 36% (64/176)\r"] +[3.905989093780515, "o", "Resolving deltas: 37% (66/176)\r"] +[3.906020326614377, "o", "Resolving deltas: 38% (67/176)\r"] +[3.9060491752624484, "o", "Resolving deltas: 39% (69/176)\r"] +[3.906087799072263, "o", "Resolving deltas: 40% (71/176)\r"] +[3.9061266613006564, "o", "Resolving deltas: 41% (73/176)\r"] +[3.906155986785886, "o", "Resolving deltas: 42% (74/176)\r"] +[3.906184358596799, "o", "Resolving deltas: 43% (76/176)\r"] +[3.9062203598022434, "o", "Resolving deltas: 44% (78/176)\r"] +[3.9062701892852756, "o", "Resolving deltas: 45% (80/176)\r"] +[3.9063052368164035, "o", "Resolving deltas: 46% (81/176)\r"] +[3.906346244812009, "o", "Resolving deltas: 47% (83/176)\r"] +[3.906388206481931, "o", "Resolving deltas: 48% (85/176)\r"] +[3.906430406570432, "o", "Resolving deltas: 49% (87/176)\r"] +[3.906480236053464, "o", "Resolving deltas: 50% (88/176)\r"] +[3.9065236282348605, "o", "Resolving deltas: 51% (90/176)\r"] +[3.906576080322263, "o", "Resolving deltas: 52% (92/176)\r"] +[3.9066321086883518, "o", "Resolving deltas: 53% (94/176)\r"] +[3.906658334732053, "o", "Resolving deltas: 54% (96/176)\r"] +[3.9066802692413303, "o", "Resolving deltas: 55% (97/176)\r"] +[3.9067117404937717, "o", "Resolving deltas: 56% (99/176)\r"] +[3.906745357513425, "o", "Resolving deltas: 57% (101/176)\r"] +[3.906773014068601, "o", "Resolving deltas: 58% (103/176)\r"] +[3.9068004322051975, "o", "Resolving deltas: 59% (104/176)\r"] +[3.906827850341794, "o", "Resolving deltas: 60% (106/176)\r"] +[3.9068640899658176, "o", "Resolving deltas: 61% (108/176)\r"] +[3.9069222640991184, "o", "Resolving deltas: 62% (110/176)\r"] +[3.9069551658630344, "o", "Resolving deltas: 63% (111/176)\r"] +[3.906982345581052, "o", "Resolving deltas: 64% (113/176)\r"] +[3.9104930591583225, "o", "Resolving deltas: 65% (115/176)\r"] +[3.911660833358762, "o", "Resolving deltas: 66% (117/176)\r"] +[3.911668224334714, "o", "Resolving deltas: 67% (118/176)\r"] +[3.9118148517608615, "o", "Resolving deltas: 68% (120/176)\r"] +[3.912194414138791, "o", "Resolving deltas: 69% (122/176)\r"] +[3.912215394973752, "o", "Resolving deltas: 70% (124/176)\r"] +[3.9125069808959934, "o", "Resolving deltas: 71% (125/176)\r"] +[3.9128338527679416, "o", "Resolving deltas: 72% (127/176)\r"] +[3.913149757385251, "o", "Resolving deltas: 73% (129/176)\r"] +[3.913222236633298, "o", "Resolving deltas: 74% (131/176)\r"] +[3.9132558536529514, "o", "Resolving deltas: 75% (132/176)\r"] +[3.9132868480682346, "o", "Resolving deltas: 76% (134/176)\r"] +[3.91332523345947, "o", "Resolving deltas: 77% (136/176)\r"] +[3.913400573730466, "o", "Resolving deltas: 78% (138/176)\r"] +[3.913428468704221, "o", "Resolving deltas: 79% (140/176)\r"] +[3.913461608886716, "o", "Resolving deltas: 80% (141/176)\r"] +[3.913491649627683, "o", "Resolving deltas: 81% (143/176)\r"] +[3.913517637252805, "o", "Resolving deltas: 82% (145/176)\r"] +[3.913552923202512, "o", "Resolving deltas: 83% (147/176)\r"] +[3.9135748577117893, "o", "Resolving deltas: 84% (148/176)\r"] +[3.9136132431030246, "o", "Resolving deltas: 85% (150/176)\r"] +[3.913717432022092, "o", "Resolving deltas: 86% (152/176)\r"] +[3.9137632083892795, "o", "Resolving deltas: 87% (154/176)\r"] +[3.9138001632690402, "o", "Resolving deltas: 88% (155/176)\r"] +[3.913830204010007, "o", "Resolving deltas: 89% (157/176)\r"] +[3.9138597679138156, "o", "Resolving deltas: 90% (159/176)\r"] +[3.9138943386077854, "o", "Resolving deltas: 91% (161/176)\r"] +[3.913919849395749, "o", "Resolving deltas: 92% (162/176)\r"] +[3.9139675331115695, "o", "Resolving deltas: 93% (164/176)\r"] +[3.9139951896667453, "o", "Resolving deltas: 94% (166/176)\r"] +[3.914027376174924, "o", "Resolving deltas: 95% (168/176)\r"] +[3.9140500259399387, "o", "Resolving deltas: 96% (169/176)\r"] +[3.9140874576568576, "o", "Resolving deltas: 97% (171/176)\r"] +[3.916297597885129, "o", "Resolving deltas: 98% (173/176)\r"] +[3.917729301452634, "o", "Resolving deltas: 99% (175/176)\r"] +[3.918067617416379, "o", "Resolving deltas: 100% (176/176)\r"] +[3.918130559921262, "o", "Resolving deltas: 100% (176/176), done.\r\n"] +[3.9481305599212617, "o", "\u001b[1m"] +[3.9781305599212615, "o", "\u001b[36m"] +[4.008130559921262, "o", "\u001b[91m"] +[4.038130559921262, "o", "$"] +[4.068130559921262, "o", " "] +[4.0981305599212625, "o", "\u001b[0m"] +[11.53, "o", "\u001b[H"] +[11.559999999999999, "o", "\u001b[J"] +[11.589999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the initial data (in CSV) from this branch of the project."] +[11.619999999999997, "o", "\r\n"] +[11.649999999999997, "o", "$"] +[11.679999999999996, "o", " "] +[11.709999999999996, "o", "s"] +[11.739999999999995, "o", "g"] +[11.769999999999994, "o", "r"] +[11.799999999999994, "o", " "] +[11.829999999999993, "o", "i"] +[11.859999999999992, "o", "n"] +[11.889999999999992, "o", "i"] +[11.919999999999991, "o", "t"] +[11.94999999999999, "o", " "] +[11.97999999999999, "o", "r"] +[12.00999999999999, "o", "a"] +[12.039999999999988, "o", "w"] +[12.069999999999988, "o", "_"] +[12.099999999999987, "o", "j"] +[12.129999999999987, "o", "a"] +[12.159999999999986, "o", "f"] +[12.189999999999985, "o", "f"] +[12.219999999999985, "o", "l"] +[12.249999999999984, "o", "e"] +[12.279999999999983, "o", "_"] +[12.309999999999983, "o", "s"] +[12.339999999999982, "o", "h"] +[12.369999999999981, "o", "o"] +[12.39999999999998, "o", "p"] +[12.42999999999998, "o", "\r\n"] +[12.45999999999998, "o", "$"] +[12.489999999999979, "o", " "] +[12.519999999999978, "o", "s"] +[12.549999999999978, "o", "g"] +[12.579999999999977, "o", "r"] +[12.609999999999976, "o", " "] +[12.639999999999976, "o", "c"] +[12.669999999999975, "o", "s"] +[12.699999999999974, "o", "v"] +[12.729999999999974, "o", " "] +[12.759999999999973, "o", "i"] +[12.789999999999973, "o", "m"] +[12.819999999999972, "o", "p"] +[12.849999999999971, "o", "o"] +[12.87999999999997, "o", "r"] +[12.90999999999997, "o", "t"] +[12.93999999999997, "o", " "] +[12.969999999999969, "o", "-"] +[12.999999999999968, "o", "f"] +[13.029999999999967, "o", " "] +[13.059999999999967, "o", "j"] +[13.089999999999966, "o", "a"] +[13.119999999999965, "o", "f"] +[13.149999999999965, "o", "f"] +[13.179999999999964, "o", "l"] +[13.209999999999964, "o", "e"] +[13.239999999999963, "o", "_"] +[13.269999999999962, "o", "s"] +[13.299999999999962, "o", "h"] +[13.329999999999961, "o", "o"] +[13.35999999999996, "o", "p"] +[13.38999999999996, "o", "/"] +[13.419999999999959, "o", "d"] +[13.449999999999958, "o", "a"] +[13.479999999999958, "o", "t"] +[13.509999999999957, "o", "a"] +[13.539999999999957, "o", "/"] +[13.569999999999956, "o", "r"] +[13.599999999999955, "o", "a"] +[13.629999999999955, "o", "w"] +[13.659999999999954, "o", "_"] +[13.689999999999953, "o", "c"] +[13.719999999999953, "o", "u"] +[13.749999999999952, "o", "s"] +[13.779999999999951, "o", "t"] +[13.80999999999995, "o", "o"] +[13.83999999999995, "o", "m"] +[13.86999999999995, "o", "e"] +[13.899999999999949, "o", "r"] +[13.929999999999948, "o", "s"] +[13.959999999999948, "o", "."] +[13.989999999999947, "o", "c"] +[14.019999999999946, "o", "s"] +[14.049999999999946, "o", "v"] +[14.079999999999945, "o", " "] +[14.109999999999944, "o", "-"] +[14.139999999999944, "o", "k"] +[14.169999999999943, "o", " "] +[14.199999999999942, "o", "i"] +[14.229999999999942, "o", "d"] +[14.259999999999941, "o", " "] +[14.28999999999994, "o", "r"] +[14.31999999999994, "o", "a"] +[14.34999999999994, "o", "w"] +[14.379999999999939, "o", "_"] +[14.409999999999938, "o", "j"] +[14.439999999999937, "o", "a"] +[14.469999999999937, "o", "f"] +[14.499999999999936, "o", "f"] +[14.529999999999935, "o", "l"] +[14.559999999999935, "o", "e"] +[14.589999999999934, "o", "_"] +[14.619999999999933, "o", "s"] +[14.649999999999933, "o", "h"] +[14.679999999999932, "o", "o"] +[14.709999999999932, "o", "p"] +[14.739999999999931, "o", " "] +[14.76999999999993, "o", "c"] +[14.79999999999993, "o", "u"] +[14.829999999999929, "o", "s"] +[14.859999999999928, "o", "t"] +[14.889999999999928, "o", "o"] +[14.919999999999927, "o", "m"] +[14.949999999999926, "o", "e"] +[14.979999999999926, "o", "r"] +[15.009999999999925, "o", "s"] +[15.039999999999925, "o", "\r\n"] +[15.069999999999924, "o", "$"] +[15.099999999999923, "o", " "] +[15.129999999999923, "o", "s"] +[15.159999999999922, "o", "g"] +[15.189999999999921, "o", "r"] +[15.21999999999992, "o", " "] +[15.24999999999992, "o", "c"] +[15.27999999999992, "o", "s"] +[15.309999999999919, "o", "v"] +[15.339999999999918, "o", " "] +[15.369999999999918, "o", "i"] +[15.399999999999917, "o", "m"] +[15.429999999999916, "o", "p"] +[15.459999999999916, "o", "o"] +[15.489999999999915, "o", "r"] +[15.519999999999914, "o", "t"] +[15.549999999999914, "o", " "] +[15.579999999999913, "o", "-"] +[15.609999999999912, "o", "f"] +[15.639999999999912, "o", " "] +[15.669999999999911, "o", "j"] +[15.69999999999991, "o", "a"] +[15.72999999999991, "o", "f"] +[15.75999999999991, "o", "f"] +[15.789999999999909, "o", "l"] +[15.819999999999908, "o", "e"] +[15.849999999999907, "o", "_"] +[15.879999999999907, "o", "s"] +[15.909999999999906, "o", "h"] +[15.939999999999905, "o", "o"] +[15.969999999999905, "o", "p"] +[15.999999999999904, "o", "/"] +[16.029999999999905, "o", "d"] +[16.059999999999906, "o", "a"] +[16.089999999999907, "o", "t"] +[16.11999999999991, "o", "a"] +[16.14999999999991, "o", "/"] +[16.17999999999991, "o", "r"] +[16.209999999999912, "o", "a"] +[16.239999999999913, "o", "w"] +[16.269999999999914, "o", "_"] +[16.299999999999915, "o", "o"] +[16.329999999999917, "o", "r"] +[16.359999999999918, "o", "d"] +[16.38999999999992, "o", "e"] +[16.41999999999992, "o", "r"] +[16.44999999999992, "o", "s"] +[16.479999999999922, "o", "."] +[16.509999999999923, "o", "c"] +[16.539999999999925, "o", "s"] +[16.569999999999926, "o", "v"] +[16.599999999999927, "o", " "] +[16.629999999999928, "o", "-"] +[16.65999999999993, "o", "k"] +[16.68999999999993, "o", " "] +[16.71999999999993, "o", "i"] +[16.749999999999932, "o", "d"] +[16.779999999999934, "o", " "] +[16.809999999999935, "o", "-"] +[16.839999999999936, "o", "t"] +[16.869999999999937, "o", " "] +[16.899999999999938, "o", "o"] +[16.92999999999994, "o", "r"] +[16.95999999999994, "o", "d"] +[16.98999999999994, "o", "e"] +[17.019999999999943, "o", "r"] +[17.049999999999944, "o", "_"] +[17.079999999999945, "o", "d"] +[17.109999999999946, "o", "a"] +[17.139999999999947, "o", "t"] +[17.16999999999995, "o", "e"] +[17.19999999999995, "o", " "] +[17.22999999999995, "o", "t"] +[17.259999999999952, "o", "i"] +[17.289999999999953, "o", "m"] +[17.319999999999954, "o", "e"] +[17.349999999999955, "o", "s"] +[17.379999999999956, "o", "t"] +[17.409999999999958, "o", "a"] +[17.43999999999996, "o", "m"] +[17.46999999999996, "o", "p"] +[17.49999999999996, "o", " "] +[17.529999999999962, "o", "r"] +[17.559999999999963, "o", "a"] +[17.589999999999964, "o", "w"] +[17.619999999999965, "o", "_"] +[17.649999999999967, "o", "j"] +[17.679999999999968, "o", "a"] +[17.70999999999997, "o", "f"] +[17.73999999999997, "o", "f"] +[17.76999999999997, "o", "l"] +[17.799999999999972, "o", "e"] +[17.829999999999973, "o", "_"] +[17.859999999999975, "o", "s"] +[17.889999999999976, "o", "h"] +[17.919999999999977, "o", "o"] +[17.949999999999978, "o", "p"] +[17.97999999999998, "o", " "] +[18.00999999999998, "o", "o"] +[18.03999999999998, "o", "r"] +[18.069999999999983, "o", "d"] +[18.099999999999984, "o", "e"] +[18.129999999999985, "o", "r"] +[18.159999999999986, "o", "s"] +[18.189999999999987, "o", "\r\n"] +[18.219999999999988, "o", "$"] +[18.24999999999999, "o", " "] +[18.27999999999999, "o", "s"] +[18.30999999999999, "o", "g"] +[18.339999999999993, "o", "r"] +[18.369999999999994, "o", " "] +[18.399999999999995, "o", "c"] +[18.429999999999996, "o", "s"] +[18.459999999999997, "o", "v"] +[18.49, "o", " "] +[18.52, "o", "i"] +[18.55, "o", "m"] +[18.580000000000002, "o", "p"] +[18.610000000000003, "o", "o"] +[18.640000000000004, "o", "r"] +[18.670000000000005, "o", "t"] +[18.700000000000006, "o", " "] +[18.730000000000008, "o", "-"] +[18.76000000000001, "o", "f"] +[18.79000000000001, "o", " "] +[18.82000000000001, "o", "j"] +[18.850000000000012, "o", "a"] +[18.880000000000013, "o", "f"] +[18.910000000000014, "o", "f"] +[18.940000000000015, "o", "l"] +[18.970000000000017, "o", "e"] +[19.000000000000018, "o", "_"] +[19.03000000000002, "o", "s"] +[19.06000000000002, "o", "h"] +[19.09000000000002, "o", "o"] +[19.120000000000022, "o", "p"] +[19.150000000000023, "o", "/"] +[19.180000000000025, "o", "d"] +[19.210000000000026, "o", "a"] +[19.240000000000027, "o", "t"] +[19.270000000000028, "o", "a"] +[19.30000000000003, "o", "/"] +[19.33000000000003, "o", "r"] +[19.36000000000003, "o", "a"] +[19.390000000000033, "o", "w"] +[19.420000000000034, "o", "_"] +[19.450000000000035, "o", "p"] +[19.480000000000036, "o", "a"] +[19.510000000000037, "o", "y"] +[19.54000000000004, "o", "m"] +[19.57000000000004, "o", "e"] +[19.60000000000004, "o", "n"] +[19.63000000000004, "o", "t"] +[19.660000000000043, "o", "s"] +[19.690000000000044, "o", "."] +[19.720000000000045, "o", "c"] +[19.750000000000046, "o", "s"] +[19.780000000000047, "o", "v"] +[19.81000000000005, "o", " "] +[19.84000000000005, "o", "-"] +[19.87000000000005, "o", "k"] +[19.900000000000052, "o", " "] +[19.930000000000053, "o", "i"] +[19.960000000000054, "o", "d"] +[19.990000000000055, "o", " "] +[20.020000000000056, "o", "r"] +[20.050000000000058, "o", "a"] +[20.08000000000006, "o", "w"] +[20.11000000000006, "o", "_"] +[20.14000000000006, "o", "j"] +[20.170000000000062, "o", "a"] +[20.200000000000063, "o", "f"] +[20.230000000000064, "o", "f"] +[20.260000000000066, "o", "l"] +[20.290000000000067, "o", "e"] +[20.320000000000068, "o", "_"] +[20.35000000000007, "o", "s"] +[20.38000000000007, "o", "h"] +[20.41000000000007, "o", "o"] +[20.440000000000072, "o", "p"] +[20.470000000000073, "o", " "] +[20.500000000000075, "o", "p"] +[20.530000000000076, "o", "a"] +[20.560000000000077, "o", "y"] +[20.590000000000078, "o", "m"] +[20.62000000000008, "o", "e"] +[20.65000000000008, "o", "n"] +[20.68000000000008, "o", "t"] +[20.710000000000083, "o", "s"] +[20.740000000000084, "o", "\r\n"] +[20.770000000000085, "o", "\u001b[0m"] +[20.800000000000086, "o", "\r\n"] +[21.030662584304896, "o", "Initialized empty repository raw_jaffle_shop\r\n"] +[21.060662584304897, "o", "\u001b[1m"] +[21.090662584304898, "o", "\u001b[36m"] +[21.1206625843049, "o", "\u001b[91m"] +[21.1506625843049, "o", "$"] +[21.1806625843049, "o", " "] +[21.210662584304902, "o", "\u001b[0m"] +[26.240662584304904, "o", "\u001b[H"] +[26.270662584304905, "o", "\u001b[J"] +[26.300662584304906, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Snapshot the initial data with Splitgraph."] +[26.330662584304907, "o", "\r\n"] +[26.360662584304908, "o", "$"] +[26.39066258430491, "o", " "] +[26.42066258430491, "o", "s"] +[26.45066258430491, "o", "g"] +[26.480662584304913, "o", "r"] +[26.510662584304914, "o", " "] +[26.540662584304915, "o", "d"] +[26.570662584304916, "o", "i"] +[26.600662584304917, "o", "f"] +[26.63066258430492, "o", "f"] +[26.66066258430492, "o", " "] +[26.69066258430492, "o", "r"] +[26.72066258430492, "o", "a"] +[26.750662584304923, "o", "w"] +[26.780662584304924, "o", "_"] +[26.810662584304925, "o", "j"] +[26.840662584304926, "o", "a"] +[26.870662584304927, "o", "f"] +[26.90066258430493, "o", "f"] +[26.93066258430493, "o", "l"] +[26.96066258430493, "o", "e"] +[26.990662584304932, "o", "_"] +[27.020662584304933, "o", "s"] +[27.050662584304934, "o", "h"] +[27.080662584304935, "o", "o"] +[27.110662584304936, "o", "p"] +[27.140662584304938, "o", "\r\n"] +[27.17066258430494, "o", "$"] +[27.20066258430494, "o", " "] +[27.23066258430494, "o", "s"] +[27.260662584304942, "o", "g"] +[27.290662584304943, "o", "r"] +[27.320662584304944, "o", " "] +[27.350662584304946, "o", "c"] +[27.380662584304947, "o", "o"] +[27.410662584304948, "o", "m"] +[27.44066258430495, "o", "m"] +[27.47066258430495, "o", "i"] +[27.50066258430495, "o", "t"] +[27.530662584304952, "o", " "] +[27.560662584304954, "o", "r"] +[27.590662584304955, "o", "a"] +[27.620662584304956, "o", "w"] +[27.650662584304957, "o", "_"] +[27.680662584304958, "o", "j"] +[27.71066258430496, "o", "a"] +[27.74066258430496, "o", "f"] +[27.77066258430496, "o", "f"] +[27.800662584304963, "o", "l"] +[27.830662584304964, "o", "e"] +[27.860662584304965, "o", "_"] +[27.890662584304966, "o", "s"] +[27.920662584304967, "o", "h"] +[27.95066258430497, "o", "o"] +[27.98066258430497, "o", "p"] +[28.01066258430497, "o", "\r\n"] +[28.04066258430497, "o", "$"] +[28.070662584304973, "o", " "] +[28.100662584304974, "o", "s"] +[28.130662584304975, "o", "g"] +[28.160662584304976, "o", "r"] +[28.190662584304977, "o", " "] +[28.22066258430498, "o", "t"] +[28.25066258430498, "o", "a"] +[28.28066258430498, "o", "g"] +[28.310662584304982, "o", " "] +[28.340662584304983, "o", "r"] +[28.370662584304984, "o", "a"] +[28.400662584304985, "o", "w"] +[28.430662584304986, "o", "_"] +[28.460662584304988, "o", "j"] +[28.49066258430499, "o", "a"] +[28.52066258430499, "o", "f"] +[28.55066258430499, "o", "f"] +[28.580662584304992, "o", "l"] +[28.610662584304993, "o", "e"] +[28.640662584304994, "o", "_"] +[28.670662584304996, "o", "s"] +[28.700662584304997, "o", "h"] +[28.730662584304998, "o", "o"] +[28.760662584305, "o", "p"] +[28.790662584305, "o", " "] +[28.820662584305, "o", "a"] +[28.850662584305002, "o", "s"] +[28.880662584305004, "o", "o"] +[28.910662584305005, "o", "f"] +[28.940662584305006, "o", "_"] +[28.970662584305007, "o", "2"] +[29.000662584305008, "o", "0"] +[29.03066258430501, "o", "1"] +[29.06066258430501, "o", "8"] +[29.09066258430501, "o", "0"] +[29.120662584305013, "o", "4"] +[29.150662584305014, "o", "0"] +[29.180662584305015, "o", "9"] +[29.210662584305016, "o", "\r\n"] +[29.240662584305017, "o", "\u001b[0m"] +[29.27066258430502, "o", "\r\n"] +[29.492443838119716, "o", "Between 000000000000 and the current working copy: \r\n"] +[29.492455043792933, "o", "customers: table added\r\norders: table added\r\npayments: table added\r\n"] +[29.711688079834193, "o", "Committing raw_jaffle_shop...\r\n"] +[29.731158056259364, "o", "Processing table orders\r\n"] +[29.80891541481039, "o", "Processing table payments\r\n"] +[29.83130148887655, "o", "Processing table customers\r\n"] +[29.860757150650233, "o", "Committed raw_jaffle_shop as d5378e7be636.\r\n"] +[30.076450147628993, "o", "Tagged raw_jaffle_shop:d5378e7be636868ccc47258807cdce7945d1291ccdc73b817d47ce175993377c with asof_20180409.\r\n"] +[30.106450147628994, "o", "\u001b[1m"] +[30.136450147628995, "o", "\u001b[36m"] +[30.166450147628996, "o", "\u001b[91m"] +[30.196450147628997, "o", "$"] +[30.226450147629, "o", " "] +[30.256450147629, "o", "\u001b[0m"] +[35.286450147629, "o", "\u001b[H"] +[35.316450147629, "o", "\u001b[J"] +[35.346450147629, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the original data"] +[35.376450147629, "o", "\r\n"] +[35.406450147629, "o", "$"] +[35.436450147629, "o", " "] +[35.466450147629004, "o", "s"] +[35.496450147629005, "o", "g"] +[35.526450147629006, "o", "r"] +[35.55645014762901, "o", " "] +[35.58645014762901, "o", "s"] +[35.61645014762901, "o", "h"] +[35.64645014762901, "o", "o"] +[35.67645014762901, "o", "w"] +[35.70645014762901, "o", " "] +[35.736450147629014, "o", "r"] +[35.766450147629016, "o", "a"] +[35.79645014762902, "o", "w"] +[35.82645014762902, "o", "_"] +[35.85645014762902, "o", "j"] +[35.88645014762902, "o", "a"] +[35.91645014762902, "o", "f"] +[35.94645014762902, "o", "f"] +[35.97645014762902, "o", "l"] +[36.006450147629025, "o", "e"] +[36.036450147629026, "o", "_"] +[36.06645014762903, "o", "s"] +[36.09645014762903, "o", "h"] +[36.12645014762903, "o", "o"] +[36.15645014762903, "o", "p"] +[36.18645014762903, "o", ":"] +[36.21645014762903, "o", "a"] +[36.246450147629034, "o", "s"] +[36.276450147629035, "o", "o"] +[36.306450147629036, "o", "f"] +[36.33645014762904, "o", "_"] +[36.36645014762904, "o", "2"] +[36.39645014762904, "o", "0"] +[36.42645014762904, "o", "1"] +[36.45645014762904, "o", "8"] +[36.48645014762904, "o", "0"] +[36.516450147629044, "o", "4"] +[36.546450147629045, "o", "0"] +[36.576450147629046, "o", "9"] +[36.60645014762905, "o", "\r\n"] +[36.63645014762905, "o", "$"] +[36.66645014762905, "o", " "] +[36.69645014762905, "o", "s"] +[36.72645014762905, "o", "g"] +[36.75645014762905, "o", "r"] +[36.786450147629054, "o", " "] +[36.816450147629055, "o", "t"] +[36.84645014762906, "o", "a"] +[36.87645014762906, "o", "b"] +[36.90645014762906, "o", "l"] +[36.93645014762906, "o", "e"] +[36.96645014762906, "o", " "] +[36.99645014762906, "o", "r"] +[37.02645014762906, "o", "a"] +[37.056450147629064, "o", "w"] +[37.086450147629066, "o", "_"] +[37.11645014762907, "o", "j"] +[37.14645014762907, "o", "a"] +[37.17645014762907, "o", "f"] +[37.20645014762907, "o", "f"] +[37.23645014762907, "o", "l"] +[37.26645014762907, "o", "e"] +[37.29645014762907, "o", "_"] +[37.326450147629075, "o", "s"] +[37.356450147629076, "o", "h"] +[37.38645014762908, "o", "o"] +[37.41645014762908, "o", "p"] +[37.44645014762908, "o", ":"] +[37.47645014762908, "o", "a"] +[37.50645014762908, "o", "s"] +[37.53645014762908, "o", "o"] +[37.566450147629084, "o", "f"] +[37.596450147629085, "o", "_"] +[37.626450147629086, "o", "2"] +[37.65645014762909, "o", "0"] +[37.68645014762909, "o", "1"] +[37.71645014762909, "o", "8"] +[37.74645014762909, "o", "0"] +[37.77645014762909, "o", "4"] +[37.80645014762909, "o", "0"] +[37.836450147629094, "o", "9"] +[37.866450147629095, "o", " "] +[37.896450147629096, "o", "o"] +[37.9264501476291, "o", "r"] +[37.9564501476291, "o", "d"] +[37.9864501476291, "o", "e"] +[38.0164501476291, "o", "r"] +[38.0464501476291, "o", "s"] +[38.0764501476291, "o", "\r\n"] +[38.106450147629104, "o", "\u001b[0m"] +[38.136450147629105, "o", "\r\n"] +[38.348791694641434, "o", "Image raw_jaffle_shop:d5378e7be636868ccc47258807cdce7945d1291ccdc73b817d47ce175993377c\r\n\r\n"] +[38.3488172054294, "o", "Created at 2021-03-17T18:10:18.608162\r\n"] +[38.350123500824296, "o", "Size: 7.58 KiB\r\nParent: 0000000000000000000000000000000000000000000000000000000000000000\r\n"] +[38.35013875961336, "o", "\r\nTables:\r\n"] +[38.35111961364778, "o", " customers\r\n orders\r\n payments\r\n"] +[38.564702367782914, "o", "Table raw_jaffle_shop:d5378e7be636868ccc47258807cdce7945d1291ccdc73b817d47ce175993377c/orders\r\n\r\n"] +[38.565869903564774, "o", "Size: 1.73 KiB\r\n"] +[38.56680593490633, "o", "Rows: 99\r\n"] +[38.5668233394626, "o", "Columns: \r\n id (integer, PK)\r\n user_id (integer)\r\n order_date (timestamp without time zone)\r\n status (character varying)\r\n\r\nObjects: \r\n o7e3ffa6e2141edde30498e4c4a6a2b510d8b7e479081aafe154d31ca4436bd\r\n"] +[38.5968233394626, "o", "\u001b[1m"] +[38.626823339462604, "o", "\u001b[36m"] +[38.656823339462605, "o", "\u001b[91m"] +[38.686823339462606, "o", "$"] +[38.71682333946261, "o", " "] +[38.74682333946261, "o", "\u001b[0m"] +[48.286450147629, "o", "\u001b[H"] +[48.316450147629, "o", "\u001b[J"] +[48.346450147629, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The status column in the raw_orders table in the initial dataset can"] +[48.376450147629, "o", "\r\n"] +[48.406450147629, "o", "$ # change through time. Pretend that some jaffles were actually returned.\r\n"] +[48.436450147629, "o", "$"] +[48.466450147629004, "o", " "] +[48.496450147629005, "o", "s"] +[48.526450147629006, "o", "g"] +[48.55645014762901, "o", "r"] +[48.58645014762901, "o", " "] +[48.61645014762901, "o", "s"] +[48.64645014762901, "o", "q"] +[48.67645014762901, "o", "l"] +[48.70645014762901, "o", " "] +[48.736450147629014, "o", "-"] +[48.766450147629016, "o", "s"] +[48.79645014762902, "o", " "] +[48.82645014762902, "o", "r"] +[48.85645014762902, "o", "a"] +[48.88645014762902, "o", "w"] +[48.91645014762902, "o", "_"] +[48.94645014762902, "o", "j"] +[48.97645014762902, "o", "a"] +[49.006450147629025, "o", "f"] +[49.036450147629026, "o", "f"] +[49.06645014762903, "o", "l"] +[49.09645014762903, "o", "e"] +[49.12645014762903, "o", "_"] +[49.15645014762903, "o", "s"] +[49.18645014762903, "o", "h"] +[49.21645014762903, "o", "o"] +[49.246450147629034, "o", "p"] +[49.276450147629035, "o", " "] +[49.306450147629036, "o", "\""] +[49.33645014762904, "o", "U"] +[49.36645014762904, "o", "P"] +[49.39645014762904, "o", "D"] +[49.42645014762904, "o", "A"] +[49.45645014762904, "o", "T"] +[49.48645014762904, "o", "E"] +[49.516450147629044, "o", " "] +[49.546450147629045, "o", "o"] +[49.576450147629046, "o", "r"] +[49.60645014762905, "o", "d"] +[49.63645014762905, "o", "e"] +[49.66645014762905, "o", "r"] +[49.69645014762905, "o", "s"] +[49.72645014762905, "o", " "] +[49.75645014762905, "o", "S"] +[49.786450147629054, "o", "E"] +[49.816450147629055, "o", "T"] +[49.84645014762906, "o", " "] +[49.87645014762906, "o", "s"] +[49.90645014762906, "o", "t"] +[49.93645014762906, "o", "a"] +[49.96645014762906, "o", "t"] +[49.99645014762906, "o", "u"] +[50.02645014762906, "o", "s"] +[50.056450147629064, "o", " "] +[50.086450147629066, "o", "="] +[50.11645014762907, "o", " "] +[50.14645014762907, "o", "'"] +[50.17645014762907, "o", "r"] +[50.20645014762907, "o", "e"] +[50.23645014762907, "o", "t"] +[50.26645014762907, "o", "u"] +[50.29645014762907, "o", "r"] +[50.326450147629075, "o", "n"] +[50.356450147629076, "o", "e"] +[50.38645014762908, "o", "d"] +[50.41645014762908, "o", "'"] +[50.44645014762908, "o", " "] +[50.47645014762908, "o", "\\"] +[50.50645014762908, "o", "\r\n "] +[50.53645014762908, "o", "W"] +[50.566450147629084, "o", "H"] +[50.596450147629085, "o", "E"] +[50.626450147629086, "o", "R"] +[50.65645014762909, "o", "E"] +[50.68645014762909, "o", " "] +[50.71645014762909, "o", "s"] +[50.74645014762909, "o", "t"] +[50.77645014762909, "o", "a"] +[50.80645014762909, "o", "t"] +[50.836450147629094, "o", "u"] +[50.866450147629095, "o", "s"] +[50.896450147629096, "o", " "] +[50.9264501476291, "o", "="] +[50.9564501476291, "o", " "] +[50.9864501476291, "o", "'"] +[51.0164501476291, "o", "r"] +[51.0464501476291, "o", "e"] +[51.0764501476291, "o", "t"] +[51.106450147629104, "o", "u"] +[51.136450147629105, "o", "r"] +[51.16645014762911, "o", "n"] +[51.19645014762911, "o", "_"] +[51.22645014762911, "o", "p"] +[51.25645014762911, "o", "e"] +[51.28645014762911, "o", "n"] +[51.31645014762911, "o", "d"] +[51.34645014762911, "o", "i"] +[51.376450147629114, "o", "n"] +[51.406450147629116, "o", "g"] +[51.43645014762912, "o", "'"] +[51.46645014762912, "o", " "] +[51.49645014762912, "o", "O"] +[51.52645014762912, "o", "R"] +[51.55645014762912, "o", " "] +[51.58645014762912, "o", "o"] +[51.61645014762912, "o", "r"] +[51.646450147629125, "o", "d"] +[51.676450147629126, "o", "e"] +[51.70645014762913, "o", "r"] +[51.73645014762913, "o", "_"] +[51.76645014762913, "o", "d"] +[51.79645014762913, "o", "a"] +[51.82645014762913, "o", "t"] +[51.85645014762913, "o", "e"] +[51.886450147629134, "o", " "] +[51.916450147629135, "o", "="] +[51.946450147629136, "o", " "] +[51.97645014762914, "o", "'"] +[52.00645014762914, "o", "2"] +[52.03645014762914, "o", "0"] +[52.06645014762914, "o", "1"] +[52.09645014762914, "o", "8"] +[52.12645014762914, "o", "-"] +[52.156450147629144, "o", "0"] +[52.186450147629145, "o", "3"] +[52.216450147629146, "o", "-"] +[52.24645014762915, "o", "2"] +[52.27645014762915, "o", "6"] +[52.30645014762915, "o", "'"] +[52.33645014762915, "o", "\""] +[52.36645014762915, "o", "\r\n"] +[52.39645014762915, "o", "$"] +[52.426450147629154, "o", " "] +[52.456450147629155, "o", "s"] +[52.48645014762916, "o", "g"] +[52.51645014762916, "o", "r"] +[52.54645014762916, "o", " "] +[52.57645014762916, "o", "d"] +[52.60645014762916, "o", "i"] +[52.63645014762916, "o", "f"] +[52.66645014762916, "o", "f"] +[52.696450147629164, "o", " "] +[52.726450147629166, "o", "-"] +[52.75645014762917, "o", "v"] +[52.78645014762917, "o", " "] +[52.81645014762917, "o", "r"] +[52.84645014762917, "o", "a"] +[52.87645014762917, "o", "w"] +[52.90645014762917, "o", "_"] +[52.936450147629174, "o", "j"] +[52.966450147629175, "o", "a"] +[52.996450147629176, "o", "f"] +[53.02645014762918, "o", "f"] +[53.05645014762918, "o", "l"] +[53.08645014762918, "o", "e"] +[53.11645014762918, "o", "_"] +[53.14645014762918, "o", "s"] +[53.17645014762918, "o", "h"] +[53.206450147629184, "o", "o"] +[53.236450147629185, "o", "p"] +[53.266450147629186, "o", "\r\n"] +[53.29645014762919, "o", "\u001b[0m"] +[53.32645014762919, "o", "\r\n"] +[53.792141237259315, "o", "Between d5378e7be636 and the current working copy: \r\ncustomers: no changes.\r\norders: added 5 rows, removed 5 rows.\r\n- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending')\r\n- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending')\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped')\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned')\r\n+ (52, 54, dateti"] +[53.79215530395548, "o", "me.datetime(2018, 2, 25, 0, 0), 'returned')\r\n+ (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\npayments: no changes.\r\n"] +[53.82215530395548, "o", "\u001b[1m"] +[53.852155303955485, "o", "\u001b[36m"] +[53.882155303955486, "o", "\u001b[91m"] +[53.91215530395549, "o", "$"] +[53.94215530395549, "o", " "] +[53.97215530395549, "o", "\u001b[0m"] +[59.00215530395549, "o", "\u001b[H"] +[59.03215530395549, "o", "\u001b[J"] +[59.06215530395549, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit this dataset and check out the original data"] +[59.092155303955494, "o", "\r\n"] +[59.122155303955495, "o", "$"] +[59.152155303955496, "o", " "] +[59.1821553039555, "o", "s"] +[59.2121553039555, "o", "g"] +[59.2421553039555, "o", "r"] +[59.2721553039555, "o", " "] +[59.3021553039555, "o", "c"] +[59.3321553039555, "o", "o"] +[59.362155303955504, "o", "m"] +[59.392155303955505, "o", "m"] +[59.422155303955506, "o", "i"] +[59.45215530395551, "o", "t"] +[59.48215530395551, "o", " "] +[59.51215530395551, "o", "r"] +[59.54215530395551, "o", "a"] +[59.57215530395551, "o", "w"] +[59.60215530395551, "o", "_"] +[59.632155303955514, "o", "j"] +[59.662155303955515, "o", "a"] +[59.692155303955516, "o", "f"] +[59.72215530395552, "o", "f"] +[59.75215530395552, "o", "l"] +[59.78215530395552, "o", "e"] +[59.81215530395552, "o", "_"] +[59.84215530395552, "o", "s"] +[59.87215530395552, "o", "h"] +[59.902155303955524, "o", "o"] +[59.932155303955525, "o", "p"] +[59.96215530395553, "o", "\r\n"] +[59.99215530395553, "o", "$"] +[60.02215530395553, "o", " "] +[60.05215530395553, "o", "s"] +[60.08215530395553, "o", "g"] +[60.11215530395553, "o", "r"] +[60.14215530395553, "o", " "] +[60.172155303955535, "o", "t"] +[60.202155303955536, "o", "a"] +[60.23215530395554, "o", "g"] +[60.26215530395554, "o", " "] +[60.29215530395554, "o", "r"] +[60.32215530395554, "o", "a"] +[60.35215530395554, "o", "w"] +[60.38215530395554, "o", "_"] +[60.412155303955544, "o", "j"] +[60.442155303955545, "o", "a"] +[60.472155303955546, "o", "f"] +[60.50215530395555, "o", "f"] +[60.53215530395555, "o", "l"] +[60.56215530395555, "o", "e"] +[60.59215530395555, "o", "_"] +[60.62215530395555, "o", "s"] +[60.65215530395555, "o", "h"] +[60.682155303955554, "o", "o"] +[60.712155303955555, "o", "p"] +[60.742155303955556, "o", " "] +[60.77215530395556, "o", "a"] +[60.80215530395556, "o", "s"] +[60.83215530395556, "o", "o"] +[60.86215530395556, "o", "f"] +[60.89215530395556, "o", "_"] +[60.92215530395556, "o", "2"] +[60.952155303955564, "o", "0"] +[60.982155303955565, "o", "1"] +[61.012155303955566, "o", "8"] +[61.04215530395557, "o", "0"] +[61.07215530395557, "o", "4"] +[61.10215530395557, "o", "1"] +[61.13215530395557, "o", "0"] +[61.16215530395557, "o", "\r\n"] +[61.19215530395557, "o", "$"] +[61.222155303955574, "o", " "] +[61.252155303955576, "o", "s"] +[61.28215530395558, "o", "g"] +[61.31215530395558, "o", "r"] +[61.34215530395558, "o", " "] +[61.37215530395558, "o", "c"] +[61.40215530395558, "o", "h"] +[61.43215530395558, "o", "e"] +[61.46215530395558, "o", "c"] +[61.492155303955585, "o", "k"] +[61.522155303955586, "o", "o"] +[61.55215530395559, "o", "u"] +[61.58215530395559, "o", "t"] +[61.61215530395559, "o", " "] +[61.64215530395559, "o", "r"] +[61.67215530395559, "o", "a"] +[61.70215530395559, "o", "w"] +[61.732155303955594, "o", "_"] +[61.762155303955595, "o", "j"] +[61.792155303955596, "o", "a"] +[61.8221553039556, "o", "f"] +[61.8521553039556, "o", "f"] +[61.8821553039556, "o", "l"] +[61.9121553039556, "o", "e"] +[61.9421553039556, "o", "_"] +[61.9721553039556, "o", "s"] +[62.002155303955604, "o", "h"] +[62.032155303955605, "o", "o"] +[62.062155303955606, "o", "p"] +[62.09215530395561, "o", ":"] +[62.12215530395561, "o", "a"] +[62.15215530395561, "o", "s"] +[62.18215530395561, "o", "o"] +[62.21215530395561, "o", "f"] +[62.24215530395561, "o", "_"] +[62.272155303955614, "o", "2"] +[62.302155303955615, "o", "0"] +[62.332155303955616, "o", "1"] +[62.36215530395562, "o", "8"] +[62.39215530395562, "o", "0"] +[62.42215530395562, "o", "4"] +[62.45215530395562, "o", "0"] +[62.48215530395562, "o", "9"] +[62.51215530395562, "o", "\r\n"] +[62.542155303955624, "o", "\u001b[0m"] +[62.572155303955626, "o", "\r\n"] +[62.78666693687494, "o", "Committing raw_jaffle_shop...\r\n"] +[62.80599863052423, "o", "Storing and indexing table orders\r\n"] +[62.89586050033624, "o", "Committed raw_jaffle_shop as f37ff0476c43.\r\n"] +[63.11947137832696, "o", "Tagged raw_jaffle_shop:f37ff0476c43f897af6695c2243e15ff06a10a0c0aaab561e2404a209c67497a with asof_20180410.\r\n"] +[63.60281974792535, "o", "Checked out raw_jaffle_shop:d5378e7be636.\r\n"] +[63.63281974792535, "o", "\u001b[1m"] +[63.662819747925354, "o", "\u001b[36m"] +[63.692819747925356, "o", "\u001b[91m"] +[63.72281974792536, "o", "$"] +[63.75281974792536, "o", " "] +[63.78281974792536, "o", "\u001b[0m"] +[68.81281974792536, "o", "\u001b[H"] +[68.84281974792536, "o", "\u001b[J"] +[68.87281974792536, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the 'serious' version of the dbt project that uses data from"] +[68.90281974792536, "o", "\r\n"] +[68.93281974792536, "o", "$ # the actual warehouse rather than seed data.\r\n"] +[68.96281974792537, "o", "$"] +[68.99281974792537, "o", " "] +[69.02281974792537, "o", "c"] +[69.05281974792537, "o", "d"] +[69.08281974792537, "o", " "] +[69.11281974792537, "o", "j"] +[69.14281974792537, "o", "a"] +[69.17281974792537, "o", "f"] +[69.20281974792537, "o", "f"] +[69.23281974792538, "o", "l"] +[69.26281974792538, "o", "e"] +[69.29281974792538, "o", "_"] +[69.32281974792538, "o", "s"] +[69.35281974792538, "o", "h"] +[69.38281974792538, "o", "o"] +[69.41281974792538, "o", "p"] +[69.44281974792538, "o", " "] +[69.47281974792539, "o", "&"] +[69.50281974792539, "o", "&"] +[69.53281974792539, "o", " "] +[69.56281974792539, "o", "g"] +[69.59281974792539, "o", "i"] +[69.62281974792539, "o", "t"] +[69.65281974792539, "o", " "] +[69.6828197479254, "o", "c"] +[69.7128197479254, "o", "h"] +[69.7428197479254, "o", "e"] +[69.7728197479254, "o", "c"] +[69.8028197479254, "o", "k"] +[69.8328197479254, "o", "o"] +[69.8628197479254, "o", "u"] +[69.8928197479254, "o", "t"] +[69.9228197479254, "o", " "] +[69.9528197479254, "o", "d"] +[69.9828197479254, "o", "e"] +[70.0128197479254, "o", "m"] +[70.0428197479254, "o", "o"] +[70.07281974792541, "o", "/"] +[70.10281974792541, "o", "m"] +[70.13281974792541, "o", "a"] +[70.16281974792541, "o", "s"] +[70.19281974792541, "o", "t"] +[70.22281974792541, "o", "e"] +[70.25281974792541, "o", "r"] +[70.28281974792542, "o", " "] +[70.31281974792542, "o", "-"] +[70.34281974792542, "o", "-"] +[70.37281974792542, "o", "f"] +[70.40281974792542, "o", "o"] +[70.43281974792542, "o", "r"] +[70.46281974792542, "o", "c"] +[70.49281974792542, "o", "e"] +[70.52281974792542, "o", "\r\n"] +[70.55281974792543, "o", "\u001b[0m"] +[70.58281974792543, "o", "\r\n"] +[70.58954792022767, "o", "Branch 'demo/master' set up to track remote branch 'demo/master' from 'origin'.\r\n"] +[70.58998613357606, "o", "Switched to a new branch 'demo/master'\r\n"] +[70.61998613357606, "o", "\u001b[1m"] +[70.64998613357606, "o", "\u001b[36m"] +[70.67998613357607, "o", "\u001b[91m"] +[70.70998613357607, "o", "$"] +[70.73998613357607, "o", " "] +[70.76998613357607, "o", "\u001b[0m"] +[75.79998613357607, "o", "\u001b[H"] +[75.82998613357607, "o", "\u001b[J"] +[75.85998613357607, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check that dbt is set up to connect to the Splitgraph engine."] +[75.88998613357607, "o", "\r\n"] +[75.91998613357607, "o", "$ # We will be outputting data into the dbt_jaffle repository, so set that up.\r\n"] +[75.94998613357608, "o", "$"] +[75.97998613357608, "o", " "] +[76.00998613357608, "o", "c"] +[76.03998613357608, "o", "a"] +[76.06998613357608, "o", "t"] +[76.09998613357608, "o", " "] +[76.12998613357608, "o", "."] +[76.15998613357608, "o", "d"] +[76.18998613357608, "o", "b"] +[76.21998613357609, "o", "t"] +[76.24998613357609, "o", "/"] +[76.27998613357609, "o", "p"] +[76.30998613357609, "o", "r"] +[76.33998613357609, "o", "o"] +[76.36998613357609, "o", "f"] +[76.39998613357609, "o", "i"] +[76.4299861335761, "o", "l"] +[76.4599861335761, "o", "e"] +[76.4899861335761, "o", "s"] +[76.5199861335761, "o", "."] +[76.5499861335761, "o", "y"] +[76.5799861335761, "o", "m"] +[76.6099861335761, "o", "l"] +[76.6399861335761, "o", "\r\n"] +[76.6699861335761, "o", "$"] +[76.6999861335761, "o", " "] +[76.7299861335761, "o", "d"] +[76.7599861335761, "o", "b"] +[76.78998613357611, "o", "t"] +[76.81998613357611, "o", " "] +[76.84998613357611, "o", "d"] +[76.87998613357611, "o", "e"] +[76.90998613357611, "o", "b"] +[76.93998613357611, "o", "u"] +[76.96998613357611, "o", "g"] +[76.99998613357612, "o", " "] +[77.02998613357612, "o", "-"] +[77.05998613357612, "o", "-"] +[77.08998613357612, "o", "p"] +[77.11998613357612, "o", "r"] +[77.14998613357612, "o", "o"] +[77.17998613357612, "o", "f"] +[77.20998613357612, "o", "i"] +[77.23998613357612, "o", "l"] +[77.26998613357613, "o", "e"] +[77.29998613357613, "o", "s"] +[77.32998613357613, "o", "-"] +[77.35998613357613, "o", "d"] +[77.38998613357613, "o", "i"] +[77.41998613357613, "o", "r"] +[77.44998613357613, "o", " "] +[77.47998613357613, "o", "."] +[77.50998613357613, "o", "d"] +[77.53998613357614, "o", "b"] +[77.56998613357614, "o", "t"] +[77.59998613357614, "o", " "] +[77.62998613357614, "o", "-"] +[77.65998613357614, "o", "-"] +[77.68998613357614, "o", "p"] +[77.71998613357614, "o", "r"] +[77.74998613357614, "o", "o"] +[77.77998613357614, "o", "j"] +[77.80998613357615, "o", "e"] +[77.83998613357615, "o", "c"] +[77.86998613357615, "o", "t"] +[77.89998613357615, "o", "-"] +[77.92998613357615, "o", "d"] +[77.95998613357615, "o", "i"] +[77.98998613357615, "o", "r"] +[78.01998613357615, "o", " "] +[78.04998613357616, "o", "j"] +[78.07998613357616, "o", "a"] +[78.10998613357616, "o", "f"] +[78.13998613357616, "o", "f"] +[78.16998613357616, "o", "l"] +[78.19998613357616, "o", "e"] +[78.22998613357616, "o", "_"] +[78.25998613357616, "o", "s"] +[78.28998613357616, "o", "h"] +[78.31998613357617, "o", "o"] +[78.34998613357617, "o", "p"] +[78.37998613357617, "o", "\r\n"] +[78.40998613357617, "o", "$"] +[78.43998613357617, "o", " "] +[78.46998613357617, "o", "s"] +[78.49998613357617, "o", "g"] +[78.52998613357617, "o", "r"] +[78.55998613357617, "o", " "] +[78.58998613357618, "o", "i"] +[78.61998613357618, "o", "n"] +[78.64998613357618, "o", "i"] +[78.67998613357618, "o", "t"] +[78.70998613357618, "o", " "] +[78.73998613357618, "o", "d"] +[78.76998613357618, "o", "b"] +[78.79998613357618, "o", "t"] +[78.82998613357618, "o", "_"] +[78.85998613357619, "o", "j"] +[78.88998613357619, "o", "a"] +[78.91998613357619, "o", "f"] +[78.94998613357619, "o", "f"] +[78.97998613357619, "o", "l"] +[79.00998613357619, "o", "e"] +[79.03998613357619, "o", "\r\n"] +[79.0699861335762, "o", "\u001b[0m"] +[79.0999861335762, "o", "\r\n"] +[79.10150176048354, "o", "jaffle_shop:\r\n target: splitgraph\r\n outputs:\r\n splitgraph:\r\n type: postgres\r\n host: localhost\r\n user: sgr\r\n pass: supersecure\r\n port: 5432\r\n dbname: splitgraph\r\n # The final schema that dbt writes to is a combination of this profile schema\r\n # and the schema specified in the model.\r\n schema: \"dbt_jaffle\"\r\n threads: 4\r\n"] +[80.08875089645461, "o", "Running with dbt=0.18.0\r\n"] +[80.09703069686965, "o", "dbt version: 0.18.0\r\n"] +[80.0970483398445, "o", "python version: 3.7.10\r\npython path: /opt/hostedtoolcache/Python/3.7.10/x64/bin/python\r\nos info: Linux-5.4.0-1040-azure-x86_64-with-debian-buster-sid\r\nUsing profiles.yml file at .dbt/profiles.yml\r\nUsing dbt_project.yml file at /home/runner/work/splitgraph/splitgraph/examples/dbt/jaffle_shop/dbt_project.yml\r\n\r\n"] +[80.16851836204604, "o", "Configuration:\r\n profiles.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n dbt_project.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n\r\nRequired dependencies:\r\n"] +[80.17467409133987, "o", " - git [\u001b[32mOK found\u001b[0m]\r\n\r\n"] +[80.17468386650161, "o", "Connection:\r\n"] +[80.1750000095375, "o", " host: localhost\r\n port: 5432\r\n user: sgr\r\n database: splitgraph\r\n schema: dbt_jaffle\r\n search_path: None\r\n keepalives_idle: 0\r\n sslmode: None\r\n"] +[80.19004350662307, "o", " Connection test: \u001b[32mOK connection ok\u001b[0m"] +[80.1900740242012, "o", "\r\n"] +[80.19009834289626, "o", "\r\n"] +[80.33474951744155, "o", "\u001b[0m"] +[80.58936506271438, "o", "Initialized empty repository dbt_jaffle\r\n"] +[80.61936506271438, "o", "\u001b[1m"] +[80.64936506271438, "o", "\u001b[36m"] +[80.67936506271438, "o", "\u001b[91m"] +[80.70936506271438, "o", "$"] +[80.73936506271438, "o", " "] +[80.76936506271439, "o", "\u001b[0m"] +[99.29998613357607, "o", "\u001b[H"] +[99.32998613357607, "o", "\u001b[J"] +[99.35998613357607, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now run the dbt models."] +[99.38998613357607, "o", "\r\n"] +[99.41998613357607, "o", "$"] +[99.44998613357608, "o", " "] +[99.47998613357608, "o", "c"] +[99.50998613357608, "o", "d"] +[99.53998613357608, "o", " "] +[99.56998613357608, "o", "j"] +[99.59998613357608, "o", "a"] +[99.62998613357608, "o", "f"] +[99.65998613357608, "o", "f"] +[99.68998613357608, "o", "l"] +[99.71998613357609, "o", "e"] +[99.74998613357609, "o", "_"] +[99.77998613357609, "o", "s"] +[99.80998613357609, "o", "h"] +[99.83998613357609, "o", "o"] +[99.86998613357609, "o", "p"] +[99.89998613357609, "o", " "] +[99.9299861335761, "o", "&"] +[99.9599861335761, "o", "&"] +[99.9899861335761, "o", " "] +[100.0199861335761, "o", "d"] +[100.0499861335761, "o", "b"] +[100.0799861335761, "o", "t"] +[100.1099861335761, "o", " "] +[100.1399861335761, "o", "r"] +[100.1699861335761, "o", "u"] +[100.1999861335761, "o", "n"] +[100.2299861335761, "o", " "] +[100.2599861335761, "o", "-"] +[100.28998613357611, "o", "-"] +[100.31998613357611, "o", "p"] +[100.34998613357611, "o", "r"] +[100.37998613357611, "o", "o"] +[100.40998613357611, "o", "f"] +[100.43998613357611, "o", "i"] +[100.46998613357611, "o", "l"] +[100.49998613357612, "o", "e"] +[100.52998613357612, "o", "s"] +[100.55998613357612, "o", "-"] +[100.58998613357612, "o", "d"] +[100.61998613357612, "o", "i"] +[100.64998613357612, "o", "r"] +[100.67998613357612, "o", " "] +[100.70998613357612, "o", "."] +[100.73998613357612, "o", "."] +[100.76998613357613, "o", "/"] +[100.79998613357613, "o", "."] +[100.82998613357613, "o", "d"] +[100.85998613357613, "o", "b"] +[100.88998613357613, "o", "t"] +[100.91998613357613, "o", "\r\n"] +[100.94998613357613, "o", "\u001b[0m"] +[100.97998613357613, "o", "\r\n"] +[101.93513888359139, "o", "Running with dbt=0.18.0\r\n"] +[102.35253304481576, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[103.2498554611213, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[103.25260299682687, "o", "\r\n"] +[103.5716020488746, "o", "18:10:26 | Concurrency: 4 threads (target='splitgraph')\r\n"] +[103.5716738128669, "o", "18:10:26 | \r\n"] +[103.5794944190986, "o", "18:10:26 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]"] +[103.57953471183846, "o", "\r\n"] +[103.58101791381905, "o", "18:10:26 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]\r\n"] +[103.5814258480079, "o", "18:10:26 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]"] +[103.5814566040046, "o", "\r\n"] +[103.58192175865243, "o", "18:10:26 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]"] +[103.58194273948739, "o", "\r\n"] +[103.89753693580697, "o", "18:10:27 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.30s]"] +[103.89756077766488, "o", "\r\n"] +[103.90214532852242, "o", "18:10:27 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.32s]\r\n"] +[103.90996331214974, "o", "18:10:27 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.33s]\r\n"] +[103.91904872894357, "o", "18:10:27 | 5 of 9 START table model dbt_jaffle.order_payments................... [RUN]"] +[103.91909355163644, "o", "\r\n"] +[103.9230584526069, "o", "18:10:27 | 6 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]"] +[103.92312258720467, "o", "\r\n"] +[103.9234508895881, "o", "18:10:27 | 7 of 9 START table model dbt_jaffle.customer_payments................ [RUN]\r\n"] +[103.92429012298653, "o", "18:10:27 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.34s]\r\n"] +[104.09831875801156, "o", "18:10:27 | 5 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.17s]"] +[104.1004425907142, "o", "\r\n"] +[104.10112303733895, "o", "18:10:27 | 6 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.18s]"] +[104.10115546226571, "o", "\r\n"] +[104.10384005546639, "o", "18:10:27 | 8 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]"] +[104.10387176513741, "o", "\r\n"] +[104.1055535697944, "o", "18:10:27 | 7 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.18s]\r\n"] +[104.1251794719703, "o", "18:10:27 | 9 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]\r\n"] +[104.21973079681466, "o", "18:10:27 | 8 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.11s]\r\n"] +[104.24167436599801, "o", "18:10:27 | 9 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.11s]\r\n"] +[104.31056994438241, "o", "18:10:27 | \r\n"] +[104.31068343162606, "o", "18:10:27 | Finished running 4 view models, 5 table models in 1.06s."] +[104.31079834938119, "o", "\r\n"] +[104.34177416801522, "o", "\r\n"] +[104.34183973312447, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[104.34199851989815, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[104.37090987205575, "o", "\u001b[0m"] +[104.40090987205575, "o", "\u001b[1m"] +[104.43090987205575, "o", "\u001b[36m"] +[104.46090987205575, "o", "\u001b[91m"] +[104.49090987205575, "o", "$"] +[104.52090987205575, "o", " "] +[104.55090987205575, "o", "\u001b[0m"] +[119.79998613357607, "o", "\u001b[H"] +[119.82998613357607, "o", "\u001b[J"] +[119.85998613357607, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Take a look at the built dataset and commit it."] +[119.88998613357607, "o", "\r\n"] +[119.91998613357607, "o", "$ # Note Splitgraph doesn't currently support storing views\r\n"] +[119.94998613357608, "o", "$ # that dbt uses as a staging point for the initial data.\r\n"] +[119.97998613357608, "o", "$"] +[120.00998613357608, "o", " "] +[120.03998613357608, "o", "s"] +[120.06998613357608, "o", "g"] +[120.09998613357608, "o", "r"] +[120.12998613357608, "o", " "] +[120.15998613357608, "o", "d"] +[120.18998613357608, "o", "i"] +[120.21998613357609, "o", "f"] +[120.24998613357609, "o", "f"] +[120.27998613357609, "o", " "] +[120.30998613357609, "o", "d"] +[120.33998613357609, "o", "b"] +[120.36998613357609, "o", "t"] +[120.39998613357609, "o", "_"] +[120.4299861335761, "o", "j"] +[120.4599861335761, "o", "a"] +[120.4899861335761, "o", "f"] +[120.5199861335761, "o", "f"] +[120.5499861335761, "o", "l"] +[120.5799861335761, "o", "e"] +[120.6099861335761, "o", "\r\n"] +[120.6399861335761, "o", "$"] +[120.6699861335761, "o", " "] +[120.6999861335761, "o", "s"] +[120.7299861335761, "o", "g"] +[120.7599861335761, "o", "r"] +[120.78998613357611, "o", " "] +[120.81998613357611, "o", "c"] +[120.84998613357611, "o", "o"] +[120.87998613357611, "o", "m"] +[120.90998613357611, "o", "m"] +[120.93998613357611, "o", "i"] +[120.96998613357611, "o", "t"] +[120.99998613357612, "o", " "] +[121.02998613357612, "o", "d"] +[121.05998613357612, "o", "b"] +[121.08998613357612, "o", "t"] +[121.11998613357612, "o", "_"] +[121.14998613357612, "o", "j"] +[121.17998613357612, "o", "a"] +[121.20998613357612, "o", "f"] +[121.23998613357612, "o", "f"] +[121.26998613357613, "o", "l"] +[121.29998613357613, "o", "e"] +[121.32998613357613, "o", "\r\n"] +[121.35998613357613, "o", "$"] +[121.38998613357613, "o", " "] +[121.41998613357613, "o", "s"] +[121.44998613357613, "o", "g"] +[121.47998613357613, "o", "r"] +[121.50998613357613, "o", " "] +[121.53998613357614, "o", "t"] +[121.56998613357614, "o", "a"] +[121.59998613357614, "o", "g"] +[121.62998613357614, "o", " "] +[121.65998613357614, "o", "d"] +[121.68998613357614, "o", "b"] +[121.71998613357614, "o", "t"] +[121.74998613357614, "o", "_"] +[121.77998613357614, "o", "j"] +[121.80998613357615, "o", "a"] +[121.83998613357615, "o", "f"] +[121.86998613357615, "o", "f"] +[121.89998613357615, "o", "l"] +[121.92998613357615, "o", "e"] +[121.95998613357615, "o", " "] +[121.98998613357615, "o", "a"] +[122.01998613357615, "o", "s"] +[122.04998613357616, "o", "o"] +[122.07998613357616, "o", "f"] +[122.10998613357616, "o", "_"] +[122.13998613357616, "o", "2"] +[122.16998613357616, "o", "0"] +[122.19998613357616, "o", "1"] +[122.22998613357616, "o", "8"] +[122.25998613357616, "o", "0"] +[122.28998613357616, "o", "4"] +[122.31998613357617, "o", "0"] +[122.34998613357617, "o", "9"] +[122.37998613357617, "o", "\r\n"] +[122.40998613357617, "o", "\u001b[0m"] +[122.43998613357617, "o", "\r\n"] +[122.67317452430798, "o", "Between 000000000000 and the current working copy: \r\n"] +[122.67318954467846, "o", "customer_orders: table added\r\ncustomer_payments: table added\r\ndim_customers: table added\r\nfct_orders: table added\r\norder_payments: table added\r\nstg_jaffle_shop__customers: untracked\r\nstg_jaffle_shop__orders: untracked\r\nstg_jaffle_shop__payments: untracked\r\nstg_stripe__payments: untracked\r\n"] +[122.88450183868481, "o", "Committing dbt_jaffle...\r\n"] +[122.89751186370923, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[122.89830722808911, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[122.89926137924267, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[122.90005865097119, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[122.90816607475354, "o", "Processing table order_payments\r\n"] +[122.98713388443066, "o", "Processing table customer_payments\r\n"] +[123.00683321952893, "o", "Processing table customer_orders\r\n"] +[123.02964749336316, "o", "Processing table fct_orders\r\n"] +[123.05511584281994, "o", "Processing table dim_customers\r\n"] +[123.08733882904126, "o", "Committed dbt_jaffle as 266577211f0d.\r\n"] +[123.31462826728894, "o", "Tagged dbt_jaffle:266577211f0db70af7dd2719e9c6fca34e07d8d326fc4dcf86cb857882dd4bd6 with asof_20180409.\r\n"] +[123.34462826728894, "o", "\u001b[1m"] +[123.37462826728894, "o", "\u001b[36m"] +[123.40462826728894, "o", "\u001b[91m"] +[123.43462826728894, "o", "$"] +[123.46462826728894, "o", " "] +[123.49462826728895, "o", "\u001b[0m"] +[134.29998613357608, "o", "\u001b[H"] +[134.32998613357609, "o", "\u001b[J"] +[134.3599861335761, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the new version of the raw dataset and run dbt against it as well."] +[134.3899861335761, "o", "\r\n"] +[134.4199861335761, "o", "$"] +[134.4499861335761, "o", " "] +[134.4799861335761, "o", "s"] +[134.5099861335761, "o", "g"] +[134.5399861335761, "o", "r"] +[134.5699861335761, "o", " "] +[134.5999861335761, "o", "c"] +[134.6299861335761, "o", "h"] +[134.6599861335761, "o", "e"] +[134.6899861335761, "o", "c"] +[134.7199861335761, "o", "k"] +[134.7499861335761, "o", "o"] +[134.7799861335761, "o", "u"] +[134.8099861335761, "o", "t"] +[134.8399861335761, "o", " "] +[134.8699861335761, "o", "r"] +[134.8999861335761, "o", "a"] +[134.9299861335761, "o", "w"] +[134.9599861335761, "o", "_"] +[134.9899861335761, "o", "j"] +[135.0199861335761, "o", "a"] +[135.0499861335761, "o", "f"] +[135.0799861335761, "o", "f"] +[135.10998613357611, "o", "l"] +[135.13998613357612, "o", "e"] +[135.16998613357612, "o", "_"] +[135.19998613357612, "o", "s"] +[135.22998613357612, "o", "h"] +[135.25998613357612, "o", "o"] +[135.28998613357612, "o", "p"] +[135.31998613357612, "o", ":"] +[135.34998613357612, "o", "a"] +[135.37998613357612, "o", "s"] +[135.40998613357613, "o", "o"] +[135.43998613357613, "o", "f"] +[135.46998613357613, "o", "_"] +[135.49998613357613, "o", "2"] +[135.52998613357613, "o", "0"] +[135.55998613357613, "o", "1"] +[135.58998613357613, "o", "8"] +[135.61998613357613, "o", "0"] +[135.64998613357614, "o", "4"] +[135.67998613357614, "o", "1"] +[135.70998613357614, "o", "0"] +[135.73998613357614, "o", "\r\n"] +[135.76998613357614, "o", "$"] +[135.79998613357614, "o", " "] +[135.82998613357614, "o", "c"] +[135.85998613357614, "o", "d"] +[135.88998613357614, "o", " "] +[135.91998613357615, "o", "j"] +[135.94998613357615, "o", "a"] +[135.97998613357615, "o", "f"] +[136.00998613357615, "o", "f"] +[136.03998613357615, "o", "l"] +[136.06998613357615, "o", "e"] +[136.09998613357615, "o", "_"] +[136.12998613357615, "o", "s"] +[136.15998613357615, "o", "h"] +[136.18998613357616, "o", "o"] +[136.21998613357616, "o", "p"] +[136.24998613357616, "o", " "] +[136.27998613357616, "o", "&"] +[136.30998613357616, "o", "&"] +[136.33998613357616, "o", " "] +[136.36998613357616, "o", "d"] +[136.39998613357616, "o", "b"] +[136.42998613357616, "o", "t"] +[136.45998613357617, "o", " "] +[136.48998613357617, "o", "r"] +[136.51998613357617, "o", "u"] +[136.54998613357617, "o", "n"] +[136.57998613357617, "o", " "] +[136.60998613357617, "o", "-"] +[136.63998613357617, "o", "-"] +[136.66998613357617, "o", "p"] +[136.69998613357618, "o", "r"] +[136.72998613357618, "o", "o"] +[136.75998613357618, "o", "f"] +[136.78998613357618, "o", "i"] +[136.81998613357618, "o", "l"] +[136.84998613357618, "o", "e"] +[136.87998613357618, "o", "s"] +[136.90998613357618, "o", "-"] +[136.93998613357618, "o", "d"] +[136.96998613357619, "o", "i"] +[136.9999861335762, "o", "r"] +[137.0299861335762, "o", " "] +[137.0599861335762, "o", "."] +[137.0899861335762, "o", "."] +[137.1199861335762, "o", "/"] +[137.1499861335762, "o", "."] +[137.1799861335762, "o", "d"] +[137.2099861335762, "o", "b"] +[137.2399861335762, "o", "t"] +[137.2699861335762, "o", "\r\n"] +[137.2999861335762, "o", "\u001b[0m"] +[137.3299861335762, "o", "\r\n"] +[137.79835108757095, "o", "Checked out raw_jaffle_shop:f37ff0476c43.\r\n"] +[138.76268962860183, "o", "Running with dbt=0.18.0\r\n"] +[139.18024496078567, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[140.07622412681656, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[140.0788944149025, "o", "\r\n"] +[140.51048091888504, "o", "18:10:32 | Concurrency: 4 threads (target='splitgraph')\r\n"] +[140.51057461738662, "o", "18:10:32 | \r\n"] +[140.5191653156288, "o", "18:10:32 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]"] +[140.51920942306594, "o", "\r\n"] +[140.51966432571487, "o", "18:10:32 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]"] +[140.51968435287552, "o", "\r\n"] +[140.53251604080276, "o", "18:10:32 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]\r\n"] +[140.54906848907547, "o", "18:10:32 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]\r\n"] +[140.81561855316238, "o", "18:10:32 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.28s]"] +[140.81564191818313, "o", "\r\n"] +[140.81992463111953, "o", "18:10:32 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.28s]\r\n"] +[140.8275528335579, "o", "18:10:32 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.27s]\r\n"] +[140.8284504795082, "o", "18:10:32 | 5 of 9 START table model dbt_jaffle.order_payments................... [RUN]\r\n"] +[140.84318140983657, "o", "18:10:32 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.31s]"] +[140.8432131195076, "o", "\r\n"] +[140.87488368988113, "o", "18:10:32 | 6 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]\r\n"] +[140.87573913574295, "o", "18:10:32 | 7 of 9 START table model dbt_jaffle.customer_payments................ [RUN]\r\n"] +[141.02103475570755, "o", "18:10:33 | 5 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.19s]\r\n"] +[141.03507546424942, "o", "18:10:33 | 8 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]"] +[141.037051477433, "o", "\r\n"] +[141.0388291263588, "o", "18:10:33 | 6 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.16s]"] +[141.0388632202156, "o", "\r\n"] +[141.06453660965042, "o", "18:10:33 | 7 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.19s]"] +[141.06457308769302, "o", "\r\n"] +[141.0764174842842, "o", "18:10:33 | 9 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]"] +[141.07646397590713, "o", "\r\n"] +[141.18142370224075, "o", "18:10:33 | 8 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.14s]"] +[141.18146852493362, "o", "\r\n"] +[141.1950230979927, "o", "18:10:33 | 9 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.12s]\r\n"] +[141.2774126911171, "o", "18:10:33 | \r\n"] +[141.2774868392952, "o", "18:10:33 | Finished running 4 view models, 5 table models in 1.20s."] +[141.27770380020218, "o", "\r\n"] +[141.31138614654617, "o", "\r\n"] +[141.3116686725624, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[141.31205157280044, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[141.34113744735794, "o", "\u001b[0m"] +[141.37113744735794, "o", "\u001b[1m"] +[141.40113744735794, "o", "\u001b[36m"] +[141.43113744735794, "o", "\u001b[91m"] +[141.46113744735794, "o", "$"] +[141.49113744735794, "o", " "] +[141.52113744735794, "o", "\u001b[0m"] +[155.79998613357608, "o", "\u001b[H"] +[155.82998613357609, "o", "\u001b[J"] +[155.8599861335761, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create an image from the new data."] +[155.8899861335761, "o", "\r\n"] +[155.9199861335761, "o", "$"] +[155.9499861335761, "o", " "] +[155.9799861335761, "o", "s"] +[156.0099861335761, "o", "g"] +[156.0399861335761, "o", "r"] +[156.0699861335761, "o", " "] +[156.0999861335761, "o", "c"] +[156.1299861335761, "o", "o"] +[156.1599861335761, "o", "m"] +[156.1899861335761, "o", "m"] +[156.2199861335761, "o", "i"] +[156.2499861335761, "o", "t"] +[156.2799861335761, "o", " "] +[156.3099861335761, "o", "d"] +[156.3399861335761, "o", "b"] +[156.3699861335761, "o", "t"] +[156.3999861335761, "o", "_"] +[156.4299861335761, "o", "j"] +[156.4599861335761, "o", "a"] +[156.4899861335761, "o", "f"] +[156.5199861335761, "o", "f"] +[156.5499861335761, "o", "l"] +[156.5799861335761, "o", "e"] +[156.60998613357611, "o", "\r\n"] +[156.63998613357612, "o", "$"] +[156.66998613357612, "o", " "] +[156.69998613357612, "o", "s"] +[156.72998613357612, "o", "g"] +[156.75998613357612, "o", "r"] +[156.78998613357612, "o", " "] +[156.81998613357612, "o", "t"] +[156.84998613357612, "o", "a"] +[156.87998613357612, "o", "g"] +[156.90998613357613, "o", " "] +[156.93998613357613, "o", "d"] +[156.96998613357613, "o", "b"] +[156.99998613357613, "o", "t"] +[157.02998613357613, "o", "_"] +[157.05998613357613, "o", "j"] +[157.08998613357613, "o", "a"] +[157.11998613357613, "o", "f"] +[157.14998613357614, "o", "f"] +[157.17998613357614, "o", "l"] +[157.20998613357614, "o", "e"] +[157.23998613357614, "o", " "] +[157.26998613357614, "o", "a"] +[157.29998613357614, "o", "s"] +[157.32998613357614, "o", "o"] +[157.35998613357614, "o", "f"] +[157.38998613357614, "o", "_"] +[157.41998613357615, "o", "2"] +[157.44998613357615, "o", "0"] +[157.47998613357615, "o", "1"] +[157.50998613357615, "o", "8"] +[157.53998613357615, "o", "0"] +[157.56998613357615, "o", "4"] +[157.59998613357615, "o", "1"] +[157.62998613357615, "o", "0"] +[157.65998613357615, "o", "\r\n"] +[157.68998613357616, "o", "\u001b[0m"] +[157.71998613357616, "o", "\r\n"] +[157.93620222091747, "o", "Committing dbt_jaffle...\r\n"] +[157.95846574783397, "o", "Processing table order_payments\r\n"] +[158.01809924125743, "o", "Object o87940f703edacc7113c37ae83a6abe6293f48cbb940171ef03875a066b0c5c already exists, skipping\r\n"] +[158.0367488193519, "o", "Processing table fct_orders\r\n"] +[158.06169836998058, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[158.06307547569347, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[158.06431954383922, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[158.06557147979808, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[158.07309573173595, "o", "Processing table customer_orders\r\n"] +[158.0783955383308, "o", "Object o0fafb9e76c06e221af3aa558b0a751b176857a09b2d75ca00826becbd12ef5 already exists, skipping\r\n"] +[158.09209650039745, "o", "Processing table customer_payments\r\n"] +[158.0971931743629, "o", "Object o47a7af4dc6d74898da55e6c760eac4d702db25633cfab4e28e6df77cf00098 already exists, skipping\r\n"] +[158.11052911758495, "o", "Processing table dim_customers\r\n"] +[158.11655014038158, "o", "Object o9656926ef986d89e326952a43869eaf3dc59905ff22aba22cd3dd67a834dc5 already exists, skipping\r\n"] +[158.14119761467052, "o", "Committed dbt_jaffle as 74c74f104aae.\r\n"] +[158.3648466396339, "o", "Tagged dbt_jaffle:74c74f104aae8806eaf6d862a534aaa8d7c1d9f843da1ad098f7b6f7ce0d7102 with asof_20180410.\r\n"] +[158.3948466396339, "o", "\u001b[1m"] +[158.4248466396339, "o", "\u001b[36m"] +[158.4548466396339, "o", "\u001b[91m"] +[158.4848466396339, "o", "$"] +[158.5148466396339, "o", " "] +[158.5448466396339, "o", "\u001b[0m"] +[165.79998613357608, "o", "\u001b[H"] +[165.82998613357609, "o", "\u001b[J"] +[165.8599861335761, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We now have two versions of the source and the target dataset."] +[165.8899861335761, "o", "\r\n"] +[165.9199861335761, "o", "$"] +[165.9499861335761, "o", " "] +[165.9799861335761, "o", "s"] +[166.0099861335761, "o", "g"] +[166.0399861335761, "o", "r"] +[166.0699861335761, "o", " "] +[166.0999861335761, "o", "l"] +[166.1299861335761, "o", "o"] +[166.1599861335761, "o", "g"] +[166.1899861335761, "o", " "] +[166.2199861335761, "o", "-"] +[166.2499861335761, "o", "t"] +[166.2799861335761, "o", " "] +[166.3099861335761, "o", "r"] +[166.3399861335761, "o", "a"] +[166.3699861335761, "o", "w"] +[166.3999861335761, "o", "_"] +[166.4299861335761, "o", "j"] +[166.4599861335761, "o", "a"] +[166.4899861335761, "o", "f"] +[166.5199861335761, "o", "f"] +[166.5499861335761, "o", "l"] +[166.5799861335761, "o", "e"] +[166.60998613357611, "o", "_"] +[166.63998613357612, "o", "s"] +[166.66998613357612, "o", "h"] +[166.69998613357612, "o", "o"] +[166.72998613357612, "o", "p"] +[166.75998613357612, "o", "\r\n"] +[166.78998613357612, "o", "$"] +[166.81998613357612, "o", " "] +[166.84998613357612, "o", "s"] +[166.87998613357612, "o", "g"] +[166.90998613357613, "o", "r"] +[166.93998613357613, "o", " "] +[166.96998613357613, "o", "l"] +[166.99998613357613, "o", "o"] +[167.02998613357613, "o", "g"] +[167.05998613357613, "o", " "] +[167.08998613357613, "o", "-"] +[167.11998613357613, "o", "t"] +[167.14998613357614, "o", " "] +[167.17998613357614, "o", "d"] +[167.20998613357614, "o", "b"] +[167.23998613357614, "o", "t"] +[167.26998613357614, "o", "_"] +[167.29998613357614, "o", "j"] +[167.32998613357614, "o", "a"] +[167.35998613357614, "o", "f"] +[167.38998613357614, "o", "f"] +[167.41998613357615, "o", "l"] +[167.44998613357615, "o", "e"] +[167.47998613357615, "o", "\r\n"] +[167.50998613357615, "o", "\u001b[0m"] +[167.53998613357615, "o", "\r\n"] +[167.76281619072032, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-03-17 18:10:16\u001b[0m\r\n \u2514 \u001b[1m\u001b[91md5378e7be6\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-03-17 18:10:18\u001b[0m\r\n \u2514 \u001b[1m\u001b[91mf37ff0476c\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-03-17 18:10:21\u001b[0m\r\n"] +[167.9930741786964, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-03-17 18:10:24\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m266577211f\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-03-17 18:10:28\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m74c74f104a\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-03-17 18:10:33\u001b[0m\r\n"] +[168.0230741786964, "o", "\u001b[1m"] +[168.0530741786964, "o", "\u001b[36m"] +[168.0830741786964, "o", "\u001b[91m"] +[168.1130741786964, "o", "$"] +[168.1430741786964, "o", " "] +[168.1730741786964, "o", "\u001b[0m"] +[173.2030741786964, "o", "\u001b[H"] +[173.2330741786964, "o", "\u001b[J"] +[173.2630741786964, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the difference between the two datasets that dbt built."] +[173.2930741786964, "o", "\r\n"] +[173.3230741786964, "o", "$"] +[173.3530741786964, "o", " "] +[173.3830741786964, "o", "s"] +[173.4130741786964, "o", "g"] +[173.4430741786964, "o", "r"] +[173.4730741786964, "o", " "] +[173.5030741786964, "o", "d"] +[173.5330741786964, "o", "i"] +[173.5630741786964, "o", "f"] +[173.5930741786964, "o", "f"] +[173.6230741786964, "o", " "] +[173.65307417869641, "o", "d"] +[173.68307417869642, "o", "b"] +[173.71307417869642, "o", "t"] +[173.74307417869642, "o", "_"] +[173.77307417869642, "o", "j"] +[173.80307417869642, "o", "a"] +[173.83307417869642, "o", "f"] +[173.86307417869642, "o", "f"] +[173.89307417869642, "o", "l"] +[173.92307417869642, "o", "e"] +[173.95307417869643, "o", " "] +[173.98307417869643, "o", "a"] +[174.01307417869643, "o", "s"] +[174.04307417869643, "o", "o"] +[174.07307417869643, "o", "f"] +[174.10307417869643, "o", "_"] +[174.13307417869643, "o", "2"] +[174.16307417869643, "o", "0"] +[174.19307417869643, "o", "1"] +[174.22307417869644, "o", "8"] +[174.25307417869644, "o", "0"] +[174.28307417869644, "o", "4"] +[174.31307417869644, "o", "0"] +[174.34307417869644, "o", "9"] +[174.37307417869644, "o", " "] +[174.40307417869644, "o", "a"] +[174.43307417869644, "o", "s"] +[174.46307417869644, "o", "o"] +[174.49307417869645, "o", "f"] +[174.52307417869645, "o", "_"] +[174.55307417869645, "o", "2"] +[174.58307417869645, "o", "0"] +[174.61307417869645, "o", "1"] +[174.64307417869645, "o", "8"] +[174.67307417869645, "o", "0"] +[174.70307417869645, "o", "4"] +[174.73307417869646, "o", "1"] +[174.76307417869646, "o", "0"] +[174.79307417869646, "o", " "] +[174.82307417869646, "o", "-"] +[174.85307417869646, "o", "-"] +[174.88307417869646, "o", "v"] +[174.91307417869646, "o", "e"] +[174.94307417869646, "o", "r"] +[174.97307417869646, "o", "b"] +[175.00307417869647, "o", "o"] +[175.03307417869647, "o", "s"] +[175.06307417869647, "o", "e"] +[175.09307417869647, "o", "\r\n"] +[175.12307417869647, "o", "\u001b[0m"] +[175.15307417869647, "o", "\r\n"] +[175.55305448532184, "o", "Between 266577211f0d and 74c74f104aae: \r\n"] +[175.55330077171405, "o", "customer_orders: no changes.\r\ncustomer_payments: no changes.\r\ndim_customers: no changes.\r\nfct_orders: added 5 rows, removed 5 rows.\r\n- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending', 0, 0, 0, 23, 23)\r\n- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending', 0, 0, 15, 0, 15)\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 0, 25, 0, 25)\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped', 0, 0, 17, 0, 17)\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'plac"] +[175.55330887794574, "o", "ed', 0, 23, 0, 0, 23)\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned', 0, 0, 0, 23, 23)\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned', 0, 0, 15, 0, 15)\r\n+ (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 25, 0, 25)\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 17, 0, 17)\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 23, 0, 0, 23)\r\n"] +[175.55352583885272, "o", "order_payments: no changes.\r\n"] +[175.58352583885272, "o", "\u001b[1m"] +[175.61352583885272, "o", "\u001b[36m"] +[175.64352583885272, "o", "\u001b[91m"] +[175.67352583885273, "o", "$"] +[175.70352583885273, "o", " "] +[175.73352583885273, "o", "\u001b[0m"] +[182.7030741786964, "o", "\u001b[H"] +[182.7330741786964, "o", "\u001b[J"] +[182.7630741786964, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a sample query: how much in bank transfer refunds did we process?"] +[182.7930741786964, "o", "\r\n"] +[182.8230741786964, "o", "$"] +[182.8530741786964, "o", " "] +[182.8830741786964, "o", "s"] +[182.9130741786964, "o", "g"] +[182.9430741786964, "o", "r"] +[182.9730741786964, "o", " "] +[183.0030741786964, "o", "s"] +[183.0330741786964, "o", "q"] +[183.0630741786964, "o", "l"] +[183.0930741786964, "o", " "] +[183.1230741786964, "o", "-"] +[183.15307417869641, "o", "i"] +[183.18307417869642, "o", " "] +[183.21307417869642, "o", "d"] +[183.24307417869642, "o", "b"] +[183.27307417869642, "o", "t"] +[183.30307417869642, "o", "_"] +[183.33307417869642, "o", "j"] +[183.36307417869642, "o", "a"] +[183.39307417869642, "o", "f"] +[183.42307417869642, "o", "f"] +[183.45307417869643, "o", "l"] +[183.48307417869643, "o", "e"] +[183.51307417869643, "o", ":"] +[183.54307417869643, "o", "a"] +[183.57307417869643, "o", "s"] +[183.60307417869643, "o", "o"] +[183.63307417869643, "o", "f"] +[183.66307417869643, "o", "_"] +[183.69307417869643, "o", "2"] +[183.72307417869644, "o", "0"] +[183.75307417869644, "o", "1"] +[183.78307417869644, "o", "8"] +[183.81307417869644, "o", "0"] +[183.84307417869644, "o", "4"] +[183.87307417869644, "o", "0"] +[183.90307417869644, "o", "9"] +[183.93307417869644, "o", " "] +[183.96307417869644, "o", "\""] +[183.99307417869645, "o", "S"] +[184.02307417869645, "o", "E"] +[184.05307417869645, "o", "L"] +[184.08307417869645, "o", "E"] +[184.11307417869645, "o", "C"] +[184.14307417869645, "o", "T"] +[184.17307417869645, "o", " "] +[184.20307417869645, "o", "s"] +[184.23307417869646, "o", "u"] +[184.26307417869646, "o", "m"] +[184.29307417869646, "o", "("] +[184.32307417869646, "o", "b"] +[184.35307417869646, "o", "a"] +[184.38307417869646, "o", "n"] +[184.41307417869646, "o", "k"] +[184.44307417869646, "o", "_"] +[184.47307417869646, "o", "t"] +[184.50307417869647, "o", "r"] +[184.53307417869647, "o", "a"] +[184.56307417869647, "o", "n"] +[184.59307417869647, "o", "s"] +[184.62307417869647, "o", "f"] +[184.65307417869647, "o", "e"] +[184.68307417869647, "o", "r"] +[184.71307417869647, "o", "_"] +[184.74307417869647, "o", "a"] +[184.77307417869648, "o", "m"] +[184.80307417869648, "o", "o"] +[184.83307417869648, "o", "u"] +[184.86307417869648, "o", "n"] +[184.89307417869648, "o", "t"] +[184.92307417869648, "o", ")"] +[184.95307417869648, "o", " "] +[184.98307417869648, "o", "F"] +[185.01307417869648, "o", "R"] +[185.0430741786965, "o", "O"] +[185.0730741786965, "o", "M"] +[185.1030741786965, "o", " "] +[185.1330741786965, "o", "f"] +[185.1630741786965, "o", "c"] +[185.1930741786965, "o", "t"] +[185.2230741786965, "o", "_"] +[185.2530741786965, "o", "o"] +[185.2830741786965, "o", "r"] +[185.3130741786965, "o", "d"] +[185.3430741786965, "o", "e"] +[185.3730741786965, "o", "r"] +[185.4030741786965, "o", "s"] +[185.4330741786965, "o", " "] +[185.4630741786965, "o", "W"] +[185.4930741786965, "o", "H"] +[185.5230741786965, "o", "E"] +[185.5530741786965, "o", "R"] +[185.5830741786965, "o", "E"] +[185.6130741786965, "o", " "] +[185.6430741786965, "o", "s"] +[185.6730741786965, "o", "t"] +[185.7030741786965, "o", "a"] +[185.7330741786965, "o", "t"] +[185.7630741786965, "o", "u"] +[185.79307417869651, "o", "s"] +[185.82307417869652, "o", " "] +[185.85307417869652, "o", "="] +[185.88307417869652, "o", " "] +[185.91307417869652, "o", "'"] +[185.94307417869652, "o", "r"] +[185.97307417869652, "o", "e"] +[186.00307417869652, "o", "t"] +[186.03307417869652, "o", "u"] +[186.06307417869652, "o", "r"] +[186.09307417869653, "o", "n"] +[186.12307417869653, "o", "e"] +[186.15307417869653, "o", "d"] +[186.18307417869653, "o", "'"] +[186.21307417869653, "o", "\""] +[186.24307417869653, "o", "\r\n"] +[186.27307417869653, "o", "$"] +[186.30307417869653, "o", " "] +[186.33307417869653, "o", "s"] +[186.36307417869654, "o", "g"] +[186.39307417869654, "o", "r"] +[186.42307417869654, "o", " "] +[186.45307417869654, "o", "s"] +[186.48307417869654, "o", "q"] +[186.51307417869654, "o", "l"] +[186.54307417869654, "o", " "] +[186.57307417869654, "o", "-"] +[186.60307417869655, "o", "i"] +[186.63307417869655, "o", " "] +[186.66307417869655, "o", "d"] +[186.69307417869655, "o", "b"] +[186.72307417869655, "o", "t"] +[186.75307417869655, "o", "_"] +[186.78307417869655, "o", "j"] +[186.81307417869655, "o", "a"] +[186.84307417869655, "o", "f"] +[186.87307417869656, "o", "f"] +[186.90307417869656, "o", "l"] +[186.93307417869656, "o", "e"] +[186.96307417869656, "o", ":"] +[186.99307417869656, "o", "a"] +[187.02307417869656, "o", "s"] +[187.05307417869656, "o", "o"] +[187.08307417869656, "o", "f"] +[187.11307417869656, "o", "_"] +[187.14307417869657, "o", "2"] +[187.17307417869657, "o", "0"] +[187.20307417869657, "o", "1"] +[187.23307417869657, "o", "8"] +[187.26307417869657, "o", "0"] +[187.29307417869657, "o", "4"] +[187.32307417869657, "o", "1"] +[187.35307417869657, "o", "0"] +[187.38307417869657, "o", " "] +[187.41307417869658, "o", "\""] +[187.44307417869658, "o", "S"] +[187.47307417869658, "o", "E"] +[187.50307417869658, "o", "L"] +[187.53307417869658, "o", "E"] +[187.56307417869658, "o", "C"] +[187.59307417869658, "o", "T"] +[187.62307417869658, "o", " "] +[187.65307417869658, "o", "s"] +[187.6830741786966, "o", "u"] +[187.7130741786966, "o", "m"] +[187.7430741786966, "o", "("] +[187.7730741786966, "o", "b"] +[187.8030741786966, "o", "a"] +[187.8330741786966, "o", "n"] +[187.8630741786966, "o", "k"] +[187.8930741786966, "o", "_"] +[187.9230741786966, "o", "t"] +[187.9530741786966, "o", "r"] +[187.9830741786966, "o", "a"] +[188.0130741786966, "o", "n"] +[188.0430741786966, "o", "s"] +[188.0730741786966, "o", "f"] +[188.1030741786966, "o", "e"] +[188.1330741786966, "o", "r"] +[188.1630741786966, "o", "_"] +[188.1930741786966, "o", "a"] +[188.2230741786966, "o", "m"] +[188.2530741786966, "o", "o"] +[188.2830741786966, "o", "u"] +[188.3130741786966, "o", "n"] +[188.3430741786966, "o", "t"] +[188.3730741786966, "o", ")"] +[188.4030741786966, "o", " "] +[188.43307417869661, "o", "F"] +[188.46307417869662, "o", "R"] +[188.49307417869662, "o", "O"] +[188.52307417869662, "o", "M"] +[188.55307417869662, "o", " "] +[188.58307417869662, "o", "f"] +[188.61307417869662, "o", "c"] +[188.64307417869662, "o", "t"] +[188.67307417869662, "o", "_"] +[188.70307417869662, "o", "o"] +[188.73307417869663, "o", "r"] +[188.76307417869663, "o", "d"] +[188.79307417869663, "o", "e"] +[188.82307417869663, "o", "r"] +[188.85307417869663, "o", "s"] +[188.88307417869663, "o", " "] +[188.91307417869663, "o", "W"] +[188.94307417869663, "o", "H"] +[188.97307417869663, "o", "E"] +[189.00307417869664, "o", "R"] +[189.03307417869664, "o", "E"] +[189.06307417869664, "o", " "] +[189.09307417869664, "o", "s"] +[189.12307417869664, "o", "t"] +[189.15307417869664, "o", "a"] +[189.18307417869664, "o", "t"] +[189.21307417869664, "o", "u"] +[189.24307417869665, "o", "s"] +[189.27307417869665, "o", " "] +[189.30307417869665, "o", "="] +[189.33307417869665, "o", " "] +[189.36307417869665, "o", "'"] +[189.39307417869665, "o", "r"] +[189.42307417869665, "o", "e"] +[189.45307417869665, "o", "t"] +[189.48307417869665, "o", "u"] +[189.51307417869666, "o", "r"] +[189.54307417869666, "o", "n"] +[189.57307417869666, "o", "e"] +[189.60307417869666, "o", "d"] +[189.63307417869666, "o", "'"] +[189.66307417869666, "o", "\""] +[189.69307417869666, "o", "\r\n"] +[189.72307417869666, "o", "\u001b[0m"] +[189.75307417869666, "o", "\r\n"] +[190.4277973270426, "o", "3\r\n"] +[191.0938289260874, "o", "60\r\n"] +[191.1238289260874, "o", "\u001b[1m"] +[191.1538289260874, "o", "\u001b[36m"] +[191.18382892608741, "o", "\u001b[91m"] +[191.21382892608742, "o", "$"] +[191.24382892608742, "o", " "] +[191.27382892608742, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.10/import-from-csv.cast b/content/casts/versioned/archive/v0.2.10/import-from-csv.cast new file mode 100644 index 00000000..1673bf2d --- /dev/null +++ b/content/casts/versioned/archive/v0.2.10/import-from-csv.cast @@ -0,0 +1,619 @@ +{"version": 2, "width": 100, "height": 45, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1616004555, "metadata": {"tss": [{"h": "Inspect the data file", "ts": 0.06}, {"h": "Initialize the repository", "ts": 6.502044200897219}, {"h": "Ingest the data into a new table (wrapper around COPY FROM STDIN)", "ts": 27.50204420089722}, {"h": "The data is now in a table but not committed as a Splitgraph image", "ts": 36.19204420089736}, {"h": "Create a new image and tag it", "ts": 43.48679404258749}, {"h": "Inspect the image", "ts": 51.38384224891692}, {"h": "Inspect the table", "ts": 58.080033769607894}, {"h": "Inspect object metadata", "ts": 77.5800337696079}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the data file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # (originally from https://data.townofcary.org/api/v2/catalog/datasets/rdu-weather-history/exports/csv)\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "h"] +[0.27, "o", "e"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "d"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "n"] +[0.4500000000000002, "o", "5"] +[0.4800000000000002, "o", " "] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", "d"] +[0.5700000000000003, "o", "u"] +[0.6000000000000003, "o", "-"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "-"] +[0.8700000000000006, "o", "h"] +[0.9000000000000006, "o", "i"] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "t"] +[0.9900000000000007, "o", "o"] +[1.0200000000000007, "o", "r"] +[1.0500000000000007, "o", "y"] +[1.0800000000000007, "o", "."] +[1.1100000000000008, "o", "c"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", "v"] +[1.2000000000000008, "o", "\r\n"] +[1.2300000000000009, "o", "\u001b[0m"] +[1.260000000000001, "o", "\r\n"] +[1.2620358562469491, "o", "date;temperaturemin;temperaturemax;precipitation;snowfall;snowdepth;avgwindspeed;fastest2minwinddir;fastest2minwindspeed;fastest5secwinddir;fastest5secwindspeed;fog;fogheavy;mist;rain;fogground;ice;glaze;drizzle;snow;freezingrain;smokehaze;thunder;highwind;hail;blowingsnow;dust;freezingfog\r\r\n2007-01-06;50.0;71.1;0.13;0.0;0.0;8.05;230;17.9;230;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-09;30.0;55.0;0.0;0.0;0.0;7.61;280;23.04;270;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;N"] +[1.2620442008972177, "o", "o;No\r\r\n2007-01-14;50.0;73.9;0.0;0.0;0.0;8.5;230;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-15;57.0;73.9;0.0;0.0;0.0;13.2;230;23.94;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n"] +[1.2920442008972177, "o", "\u001b[1m"] +[1.3220442008972177, "o", "\u001b[36m"] +[1.3520442008972178, "o", "\u001b[91m"] +[1.3820442008972178, "o", "$"] +[1.4120442008972178, "o", " "] +[1.4420442008972179, "o", "\u001b[0m"] +[6.472044200897218, "o", "\u001b[H"] +[6.502044200897219, "o", "\u001b[J"] +[6.532044200897219, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the repository"] +[6.562044200897219, "o", "\r\n"] +[6.592044200897219, "o", "$"] +[6.62204420089722, "o", " "] +[6.65204420089722, "o", "s"] +[6.68204420089722, "o", "g"] +[6.71204420089722, "o", "r"] +[6.742044200897221, "o", " "] +[6.772044200897221, "o", "i"] +[6.802044200897221, "o", "n"] +[6.832044200897221, "o", "i"] +[6.862044200897222, "o", "t"] +[6.892044200897222, "o", " "] +[6.922044200897222, "o", "d"] +[6.952044200897222, "o", "e"] +[6.9820442008972226, "o", "m"] +[7.012044200897223, "o", "o"] +[7.042044200897223, "o", "/"] +[7.072044200897223, "o", "w"] +[7.1020442008972235, "o", "e"] +[7.132044200897224, "o", "a"] +[7.162044200897224, "o", "t"] +[7.192044200897224, "o", "h"] +[7.2220442008972245, "o", "e"] +[7.252044200897225, "o", "r"] +[7.282044200897225, "o", "\r\n"] +[7.312044200897225, "o", "$"] +[7.3420442008972255, "o", " "] +[7.372044200897226, "o", "s"] +[7.402044200897226, "o", "g"] +[7.432044200897226, "o", "r"] +[7.4620442008972265, "o", " "] +[7.492044200897227, "o", "c"] +[7.522044200897227, "o", "s"] +[7.552044200897227, "o", "v"] +[7.5820442008972275, "o", " "] +[7.612044200897228, "o", "i"] +[7.642044200897228, "o", "m"] +[7.672044200897228, "o", "p"] +[7.7020442008972285, "o", "o"] +[7.732044200897229, "o", "r"] +[7.762044200897229, "o", "t"] +[7.792044200897229, "o", " "] +[7.8220442008972295, "o", "-"] +[7.85204420089723, "o", "-"] +[7.88204420089723, "o", "h"] +[7.91204420089723, "o", "e"] +[7.9420442008972305, "o", "l"] +[7.972044200897231, "o", "p"] +[8.002044200897231, "o", "\r\n"] +[8.03204420089723, "o", "\u001b[0m"] +[8.06204420089723, "o", "\r\n"] +[8.304485616683973, "o", "Initialized empty repository demo/weather\r\n"] +[8.495715436935438, "o", "Usage: sgr csv import [OPTIONS] REPOSITORY TABLE\r\n\r\n Import a CSV file into a checked-out Splitgraph repository. This doesn't\r\n create a new image, use sgr commit after the import and any adjustments\r\n (e.g. adding primary keys or converting column types) to do so.\r\n\r\n If the target table doesn't exist, this will create a new table.\r\n\r\n If the target table does exist, this will try and patch the new values in\r\n by updating rows that exist in the current table (as per its primary key\r\n constraints) an"] +[8.495735464096082, "o", "d inserting new ones. Rows existing in the current table\r\n but missing in the CSV won't be deleted.\r\n\r\n If -r is passed, the table will instead be deleted and recreated from the\r\n CSV file if it exists.\r\n\r\nOptions:\r\n -f, --file FILENAME File name to import data from, default\r\n stdin.\r\n\r\n -r, --replace Replace the table if it already exists.\r\n -k, --primary-key TEXT Use the specified column(s) as primary\r\n "] +[8.49574380874635, "o", " key(s)\r\n\r\n -t, --override-type ...\r\n Explicitly set types of these columns to PG\r\n types\r\n\r\n --encoding TEXT Encoding to use for the CSV file\r\n --separator TEXT CSV separator to use\r\n --no-header Treats the first line of the CSV as data\r\n rather than a header.\r\n\r\n --skip-schema-check Skips checking that the dataframe is\r\n "] +[8.495754299163831, "o", " compatible with the target schema.\r\n\r\n --help Show this message and exit.\r\n"] +[8.52575429916383, "o", "\u001b[1m"] +[8.55575429916383, "o", "\u001b[36m"] +[8.58575429916383, "o", "\u001b[91m"] +[8.615754299163829, "o", "$"] +[8.645754299163828, "o", " "] +[8.675754299163827, "o", "\u001b[0m"] +[27.47204420089722, "o", "\u001b[H"] +[27.50204420089722, "o", "\u001b[J"] +[27.53204420089722, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the data into a new table (wrapper around COPY FROM STDIN)"] +[27.562044200897223, "o", "\r\n"] +[27.592044200897224, "o", "$"] +[27.622044200897225, "o", " "] +[27.652044200897226, "o", "s"] +[27.682044200897227, "o", "g"] +[27.71204420089723, "o", "r"] +[27.74204420089723, "o", " "] +[27.77204420089723, "o", "c"] +[27.80204420089723, "o", "s"] +[27.832044200897233, "o", "v"] +[27.862044200897234, "o", " "] +[27.892044200897235, "o", "i"] +[27.922044200897236, "o", "m"] +[27.952044200897237, "o", "p"] +[27.98204420089724, "o", "o"] +[28.01204420089724, "o", "r"] +[28.04204420089724, "o", "t"] +[28.072044200897242, "o", " "] +[28.102044200897243, "o", "-"] +[28.132044200897244, "o", "f"] +[28.162044200897245, "o", " "] +[28.192044200897246, "o", "r"] +[28.222044200897248, "o", "d"] +[28.25204420089725, "o", "u"] +[28.28204420089725, "o", "-"] +[28.31204420089725, "o", "w"] +[28.342044200897252, "o", "e"] +[28.372044200897253, "o", "a"] +[28.402044200897254, "o", "t"] +[28.432044200897256, "o", "h"] +[28.462044200897257, "o", "e"] +[28.492044200897258, "o", "r"] +[28.52204420089726, "o", "-"] +[28.55204420089726, "o", "h"] +[28.58204420089726, "o", "i"] +[28.612044200897262, "o", "s"] +[28.642044200897264, "o", "t"] +[28.672044200897265, "o", "o"] +[28.702044200897266, "o", "r"] +[28.732044200897267, "o", "y"] +[28.762044200897268, "o", "."] +[28.79204420089727, "o", "c"] +[28.82204420089727, "o", "s"] +[28.85204420089727, "o", "v"] +[28.882044200897273, "o", " "] +[28.912044200897274, "o", "\\"] +[28.942044200897275, "o", "\r\n "] +[28.972044200897276, "o", "-"] +[29.002044200897277, "o", "k"] +[29.03204420089728, "o", " "] +[29.06204420089728, "o", "d"] +[29.09204420089728, "o", "a"] +[29.12204420089728, "o", "t"] +[29.152044200897283, "o", "e"] +[29.182044200897284, "o", " "] +[29.212044200897285, "o", "\\"] +[29.242044200897286, "o", "\r\n "] +[29.272044200897287, "o", "-"] +[29.30204420089729, "o", "t"] +[29.33204420089729, "o", " "] +[29.36204420089729, "o", "d"] +[29.392044200897292, "o", "a"] +[29.422044200897293, "o", "t"] +[29.452044200897294, "o", "e"] +[29.482044200897295, "o", " "] +[29.512044200897297, "o", "t"] +[29.542044200897298, "o", "i"] +[29.5720442008973, "o", "m"] +[29.6020442008973, "o", "e"] +[29.6320442008973, "o", "s"] +[29.662044200897302, "o", "t"] +[29.692044200897303, "o", "a"] +[29.722044200897304, "o", "m"] +[29.752044200897306, "o", "p"] +[29.782044200897307, "o", " "] +[29.812044200897308, "o", "\\"] +[29.84204420089731, "o", "\r\n "] +[29.87204420089731, "o", "-"] +[29.90204420089731, "o", "-"] +[29.932044200897312, "o", "s"] +[29.962044200897314, "o", "e"] +[29.992044200897315, "o", "p"] +[30.022044200897316, "o", "a"] +[30.052044200897317, "o", "r"] +[30.082044200897318, "o", "a"] +[30.11204420089732, "o", "t"] +[30.14204420089732, "o", "o"] +[30.17204420089732, "o", "r"] +[30.202044200897323, "o", " "] +[30.232044200897324, "o", "\""] +[30.262044200897325, "o", ";"] +[30.292044200897326, "o", "\""] +[30.322044200897327, "o", " "] +[30.35204420089733, "o", "\\"] +[30.38204420089733, "o", "\r\n "] +[30.41204420089733, "o", "d"] +[30.44204420089733, "o", "e"] +[30.472044200897333, "o", "m"] +[30.502044200897334, "o", "o"] +[30.532044200897335, "o", "/"] +[30.562044200897336, "o", "w"] +[30.592044200897337, "o", "e"] +[30.62204420089734, "o", "a"] +[30.65204420089734, "o", "t"] +[30.68204420089734, "o", "h"] +[30.712044200897342, "o", "e"] +[30.742044200897343, "o", "r"] +[30.772044200897344, "o", " "] +[30.802044200897345, "o", "r"] +[30.832044200897347, "o", "d"] +[30.862044200897348, "o", "u"] +[30.89204420089735, "o", "\r\n"] +[30.92204420089735, "o", "\u001b[0m"] +[30.95204420089735, "o", "\r\n"] +[30.982044200897352, "o", "\u001b[1m"] +[31.012044200897353, "o", "\u001b[36m"] +[31.042044200897355, "o", "\u001b[91m"] +[31.072044200897356, "o", "$"] +[31.102044200897357, "o", " "] +[31.132044200897358, "o", "\u001b[0m"] +[36.162044200897355, "o", "\u001b[H"] +[36.19204420089736, "o", "\u001b[J"] +[36.22204420089736, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The data is now in a table but not committed as a Splitgraph image"] +[36.25204420089736, "o", "\r\n"] +[36.28204420089736, "o", "$"] +[36.31204420089736, "o", " "] +[36.34204420089736, "o", "s"] +[36.37204420089736, "o", "g"] +[36.402044200897365, "o", "r"] +[36.432044200897366, "o", " "] +[36.46204420089737, "o", "s"] +[36.49204420089737, "o", "t"] +[36.52204420089737, "o", "a"] +[36.55204420089737, "o", "t"] +[36.58204420089737, "o", "u"] +[36.61204420089737, "o", "s"] +[36.642044200897374, "o", " "] +[36.672044200897375, "o", "d"] +[36.702044200897376, "o", "e"] +[36.73204420089738, "o", "m"] +[36.76204420089738, "o", "o"] +[36.79204420089738, "o", "/"] +[36.82204420089738, "o", "w"] +[36.85204420089738, "o", "e"] +[36.88204420089738, "o", "a"] +[36.912044200897384, "o", "t"] +[36.942044200897385, "o", "h"] +[36.972044200897386, "o", "e"] +[37.00204420089739, "o", "r"] +[37.03204420089739, "o", "\r\n"] +[37.06204420089739, "o", "$"] +[37.09204420089739, "o", " "] +[37.12204420089739, "o", "s"] +[37.15204420089739, "o", "g"] +[37.182044200897394, "o", "r"] +[37.212044200897395, "o", " "] +[37.242044200897396, "o", "d"] +[37.2720442008974, "o", "i"] +[37.3020442008974, "o", "f"] +[37.3320442008974, "o", "f"] +[37.3620442008974, "o", " "] +[37.3920442008974, "o", "d"] +[37.4220442008974, "o", "e"] +[37.452044200897404, "o", "m"] +[37.482044200897406, "o", "o"] +[37.51204420089741, "o", "/"] +[37.54204420089741, "o", "w"] +[37.57204420089741, "o", "e"] +[37.60204420089741, "o", "a"] +[37.63204420089741, "o", "t"] +[37.66204420089741, "o", "h"] +[37.69204420089741, "o", "e"] +[37.722044200897415, "o", "r"] +[37.752044200897416, "o", "\r\n"] +[37.78204420089742, "o", "\u001b[0m"] +[37.81204420089742, "o", "\r\n"] +[38.0224924659731, "o", "demo/weather: on image 0000000000000000000000000000000000000000000000000000000000000000.\r\n"] +[38.24677926063558, "o", "Between 000000000000 and the current working copy: \r\n"] +[38.24679404258748, "o", "rdu: table added\r\n"] +[38.27679404258748, "o", "\u001b[1m"] +[38.306794042587484, "o", "\u001b[36m"] +[38.336794042587485, "o", "\u001b[91m"] +[38.366794042587486, "o", "$"] +[38.39679404258749, "o", " "] +[38.42679404258749, "o", "\u001b[0m"] +[43.45679404258749, "o", "\u001b[H"] +[43.48679404258749, "o", "\u001b[J"] +[43.51679404258749, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a new image and tag it"] +[43.54679404258749, "o", "\r\n"] +[43.576794042587494, "o", "$"] +[43.606794042587495, "o", " "] +[43.636794042587496, "o", "s"] +[43.6667940425875, "o", "g"] +[43.6967940425875, "o", "r"] +[43.7267940425875, "o", " "] +[43.7567940425875, "o", "c"] +[43.7867940425875, "o", "o"] +[43.8167940425875, "o", "m"] +[43.846794042587504, "o", "m"] +[43.876794042587505, "o", "i"] +[43.90679404258751, "o", "t"] +[43.93679404258751, "o", " "] +[43.96679404258751, "o", "d"] +[43.99679404258751, "o", "e"] +[44.02679404258751, "o", "m"] +[44.05679404258751, "o", "o"] +[44.08679404258751, "o", "/"] +[44.116794042587514, "o", "w"] +[44.146794042587516, "o", "e"] +[44.17679404258752, "o", "a"] +[44.20679404258752, "o", "t"] +[44.23679404258752, "o", "h"] +[44.26679404258752, "o", "e"] +[44.29679404258752, "o", "r"] +[44.32679404258752, "o", "\r\n"] +[44.356794042587524, "o", "$"] +[44.386794042587525, "o", " "] +[44.416794042587526, "o", "s"] +[44.44679404258753, "o", "g"] +[44.47679404258753, "o", "r"] +[44.50679404258753, "o", " "] +[44.53679404258753, "o", "t"] +[44.56679404258753, "o", "a"] +[44.59679404258753, "o", "g"] +[44.626794042587534, "o", " "] +[44.656794042587535, "o", "d"] +[44.686794042587536, "o", "e"] +[44.71679404258754, "o", "m"] +[44.74679404258754, "o", "o"] +[44.77679404258754, "o", "/"] +[44.80679404258754, "o", "w"] +[44.83679404258754, "o", "e"] +[44.86679404258754, "o", "a"] +[44.896794042587544, "o", "t"] +[44.926794042587545, "o", "h"] +[44.956794042587546, "o", "e"] +[44.98679404258755, "o", "r"] +[45.01679404258755, "o", " "] +[45.04679404258755, "o", "i"] +[45.07679404258755, "o", "n"] +[45.10679404258755, "o", "i"] +[45.13679404258755, "o", "t"] +[45.166794042587554, "o", "i"] +[45.196794042587555, "o", "a"] +[45.22679404258756, "o", "l"] +[45.25679404258756, "o", "_"] +[45.28679404258756, "o", "d"] +[45.31679404258756, "o", "a"] +[45.34679404258756, "o", "t"] +[45.37679404258756, "o", "a"] +[45.40679404258756, "o", "\r\n"] +[45.436794042587564, "o", "\u001b[0m"] +[45.466794042587566, "o", "\r\n"] +[45.682118206024455, "o", "Committing demo/weather...\r\n"] +[45.70567682266264, "o", "Processing table rdu\r\n"] +[45.91367843627958, "o", "Committed demo/weather as 41017ab502a6.\r\n"] +[46.14384224891691, "o", "Tagged demo/weather:41017ab502a6ff1487ae8b739861915a77944449d04c42d26f6516bdf2e426d0 with initial_data.\r\n"] +[46.17384224891691, "o", "\u001b[1m"] +[46.203842248916914, "o", "\u001b[36m"] +[46.233842248916915, "o", "\u001b[91m"] +[46.263842248916916, "o", "$"] +[46.29384224891692, "o", " "] +[46.32384224891692, "o", "\u001b[0m"] +[51.35384224891692, "o", "\u001b[H"] +[51.38384224891692, "o", "\u001b[J"] +[51.41384224891692, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image"] +[51.44384224891692, "o", "\r\n"] +[51.473842248916924, "o", "$"] +[51.503842248916925, "o", " "] +[51.533842248916926, "o", "s"] +[51.56384224891693, "o", "g"] +[51.59384224891693, "o", "r"] +[51.62384224891693, "o", " "] +[51.65384224891693, "o", "s"] +[51.68384224891693, "o", "h"] +[51.71384224891693, "o", "o"] +[51.743842248916934, "o", "w"] +[51.773842248916935, "o", " "] +[51.803842248916936, "o", "d"] +[51.83384224891694, "o", "e"] +[51.86384224891694, "o", "m"] +[51.89384224891694, "o", "o"] +[51.92384224891694, "o", "/"] +[51.95384224891694, "o", "w"] +[51.98384224891694, "o", "e"] +[52.013842248916944, "o", "a"] +[52.043842248916945, "o", "t"] +[52.07384224891695, "o", "h"] +[52.10384224891695, "o", "e"] +[52.13384224891695, "o", "r"] +[52.16384224891695, "o", ":"] +[52.19384224891695, "o", "i"] +[52.22384224891695, "o", "n"] +[52.25384224891695, "o", "i"] +[52.283842248916955, "o", "t"] +[52.313842248916956, "o", "i"] +[52.34384224891696, "o", "a"] +[52.37384224891696, "o", "l"] +[52.40384224891696, "o", "_"] +[52.43384224891696, "o", "d"] +[52.46384224891696, "o", "a"] +[52.49384224891696, "o", "t"] +[52.523842248916964, "o", "a"] +[52.553842248916965, "o", "\r\n"] +[52.583842248916966, "o", "\u001b[0m"] +[52.61384224891697, "o", "\r\n"] +[52.83792614936863, "o", "Image demo/weather:41017ab502a6ff1487ae8b739861915a77944449d04c42d26f6516bdf2e426d0\r\n\r\n"] +[52.83794999122654, "o", "Created at 2021-03-17T18:09:26.245300\r\n"] +[52.83948111534153, "o", "Size: 109.61 KiB\r\nParent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[52.840033769607885, "o", " rdu\r\n"] +[52.870033769607886, "o", "\u001b[1m"] +[52.90003376960789, "o", "\u001b[36m"] +[52.93003376960789, "o", "\u001b[91m"] +[52.96003376960789, "o", "$"] +[52.99003376960789, "o", " "] +[53.02003376960789, "o", "\u001b[0m"] +[58.05003376960789, "o", "\u001b[H"] +[58.080033769607894, "o", "\u001b[J"] +[58.110033769607895, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the table"] +[58.140033769607896, "o", "\r\n"] +[58.1700337696079, "o", "$"] +[58.2000337696079, "o", " "] +[58.2300337696079, "o", "s"] +[58.2600337696079, "o", "g"] +[58.2900337696079, "o", "r"] +[58.3200337696079, "o", " "] +[58.350033769607904, "o", "t"] +[58.380033769607905, "o", "a"] +[58.41003376960791, "o", "b"] +[58.44003376960791, "o", "l"] +[58.47003376960791, "o", "e"] +[58.50003376960791, "o", " "] +[58.53003376960791, "o", "d"] +[58.56003376960791, "o", "e"] +[58.59003376960791, "o", "m"] +[58.620033769607915, "o", "o"] +[58.650033769607916, "o", "/"] +[58.68003376960792, "o", "w"] +[58.71003376960792, "o", "e"] +[58.74003376960792, "o", "a"] +[58.77003376960792, "o", "t"] +[58.80003376960792, "o", "h"] +[58.83003376960792, "o", "e"] +[58.860033769607924, "o", "r"] +[58.890033769607925, "o", ":"] +[58.920033769607926, "o", "i"] +[58.95003376960793, "o", "n"] +[58.98003376960793, "o", "i"] +[59.01003376960793, "o", "t"] +[59.04003376960793, "o", "i"] +[59.07003376960793, "o", "a"] +[59.10003376960793, "o", "l"] +[59.130033769607934, "o", "_"] +[59.160033769607935, "o", "d"] +[59.190033769607936, "o", "a"] +[59.22003376960794, "o", "t"] +[59.25003376960794, "o", "a"] +[59.28003376960794, "o", " "] +[59.31003376960794, "o", "r"] +[59.34003376960794, "o", "d"] +[59.37003376960794, "o", "u"] +[59.400033769607944, "o", "\r\n"] +[59.430033769607945, "o", "\u001b[0m"] +[59.460033769607946, "o", "\r\n"] +[59.69282853126566, "o", "Table demo/weather:41017ab502a6ff1487ae8b739861915a77944449d04c42d26f6516bdf2e426d0/rdu\r\n"] +[59.692925567627356, "o", "\r\n"] +[59.697765941620275, "o", "Size: 109.61 KiB\r\n"] +[59.69922959327738, "o", "Rows: 4633\r\n"] +[59.69927179336588, "o", "Columns: \r\n"] +[59.69930970191996, "o", " date (timestamp without time zone, PK)\r\n"] +[59.69934165000956, "o", " temperaturemin (numeric)\r\n"] +[59.699373121262, "o", " temperaturemax (numeric)\r\n"] +[59.69940268516581, "o", " precipitation (numeric)\r\n"] +[59.699435110092566, "o", " snowfall (numeric)\r\n"] +[59.699467058182165, "o", " snowdepth (numeric)\r\n"] +[59.69949805259745, "o", " avgwindspeed (numeric)\r\n"] +[59.699530715942785, "o", " fastest2minwinddir (integer)\r\n"] +[59.699562425613806, "o", " fastest2minwindspeed (numeric)\r\n"] +[59.699594612121984, "o", " fastest5secwinddir (integer)\r\n"] +[59.69962489128153, "o", " fastest5secwindspeed (numeric)\r\n"] +[59.69965397834818, "o", " fog (character varying)\r\n"] +[59.69968425750773, "o", " fogheavy (character varying)\r\n"] +[59.69971501350443, "o", " mist (character varying)\r\n"] +[59.69974720001261, "o", " rain (character varying)\r\n"] +[59.699777717590734, "o", " fogground (character varying)\r\n"] +[59.69980728149454, "o", " ice (character varying)\r\n"] +[59.69983803749125, "o", " glaze (character varying)\r\n"] +[59.69986640930216, "o", " drizzle (character varying)\r\n"] +[59.699896926880285, "o", " snow (character varying)\r\n"] +[59.69992720603983, "o", " freezingrain (character varying)\r\n"] +[59.69995581626932, "o", " smokehaze (character varying)\r\n"] +[59.6999891948704, "o", " thunder (character varying)\r\n"] +[59.70002042770426, "o", " highwind (character varying)\r\n"] +[59.700050945282385, "o", " hail (character varying)\r\n"] +[59.700083131790564, "o", " blowingsnow (character varying)\r\n"] +[59.700111980438635, "o", " dust (character varying)\r\n"] +[59.70014249801676, "o", " freezingfog (character varying)\r\n"] +[59.70017230033915, "o", "\r\n"] +[59.70020305633585, "o", "Objects: \r\n"] +[59.7002333354954, "o", " ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] +[59.7302333354954, "o", "\u001b[1m"] +[59.7602333354954, "o", "\u001b[36m"] +[59.7902333354954, "o", "\u001b[91m"] +[59.8202333354954, "o", "$"] +[59.8502333354954, "o", " "] +[59.880233335495404, "o", "\u001b[0m"] +[77.5500337696079, "o", "\u001b[H"] +[77.5800337696079, "o", "\u001b[J"] +[77.6100337696079, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect object metadata"] +[77.6400337696079, "o", "\r\n"] +[77.6700337696079, "o", "$"] +[77.7000337696079, "o", " "] +[77.7300337696079, "o", "s"] +[77.7600337696079, "o", "g"] +[77.7900337696079, "o", "r"] +[77.8200337696079, "o", " "] +[77.8500337696079, "o", "o"] +[77.8800337696079, "o", "b"] +[77.9100337696079, "o", "j"] +[77.94003376960791, "o", "e"] +[77.97003376960791, "o", "c"] +[78.00003376960791, "o", "t"] +[78.03003376960791, "o", " "] +[78.06003376960791, "o", "o"] +[78.09003376960791, "o", "b"] +[78.12003376960791, "o", "7"] +[78.15003376960792, "o", "9"] +[78.18003376960792, "o", "9"] +[78.21003376960792, "o", "c"] +[78.24003376960792, "o", "a"] +[78.27003376960792, "o", "7"] +[78.30003376960792, "o", "6"] +[78.33003376960792, "o", "1"] +[78.36003376960792, "o", "e"] +[78.39003376960792, "o", "a"] +[78.42003376960793, "o", "6"] +[78.45003376960793, "o", "3"] +[78.48003376960793, "o", "8"] +[78.51003376960793, "o", "c"] +[78.54003376960793, "o", "0"] +[78.57003376960793, "o", "d"] +[78.60003376960793, "o", "b"] +[78.63003376960793, "o", "b"] +[78.66003376960794, "o", "4"] +[78.69003376960794, "o", "d"] +[78.72003376960794, "o", "f"] +[78.75003376960794, "o", "3"] +[78.78003376960794, "o", "e"] +[78.81003376960794, "o", "5"] +[78.84003376960794, "o", "9"] +[78.87003376960794, "o", "a"] +[78.90003376960794, "o", "b"] +[78.93003376960795, "o", "6"] +[78.96003376960795, "o", "a"] +[78.99003376960795, "o", "9"] +[79.02003376960795, "o", "9"] +[79.05003376960795, "o", "5"] +[79.08003376960795, "o", "d"] +[79.11003376960795, "o", "8"] +[79.14003376960795, "o", "7"] +[79.17003376960795, "o", "9"] +[79.20003376960796, "o", "9"] +[79.23003376960796, "o", "9"] +[79.26003376960796, "o", "9"] +[79.29003376960796, "o", "0"] +[79.32003376960796, "o", "9"] +[79.35003376960796, "o", "d"] +[79.38003376960796, "o", "0"] +[79.41003376960796, "o", "0"] +[79.44003376960796, "o", "8"] +[79.47003376960797, "o", "a"] +[79.50003376960797, "o", "3"] +[79.53003376960797, "o", "4"] +[79.56003376960797, "o", "9"] +[79.59003376960797, "o", "5"] +[79.62003376960797, "o", "7"] +[79.65003376960797, "o", "1"] +[79.68003376960797, "o", "1"] +[79.71003376960797, "o", "c"] +[79.74003376960798, "o", "9"] +[79.77003376960798, "o", "0"] +[79.80003376960798, "o", "0"] +[79.83003376960798, "o", "9"] +[79.86003376960798, "o", "f"] +[79.89003376960798, "o", "8"] +[79.92003376960798, "o", "f"] +[79.95003376960798, "o", "\r\n"] +[79.98003376960799, "o", "\u001b[0m"] +[80.01003376960799, "o", "\r\n"] +[80.21877090454146, "o", "Object ID: ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n\r\n"] +[80.21949331283614, "o", "Namespace: demo\r\nFormat: FRAG\r\nSize: 109.61 KiB\r\nCreated: 2021-03-17 18:09:26.449772\r\nRows inserted: 4633\r\nInsertion hash: 4b49b5701a582aa5c418238e4bf75c84d0dcd2ec993fb4e7fe1d0dfcf6ef6877\r\nRows deleted: 0\r\nDeletion hash: 0000000000000000000000000000000000000000000000000000000000000000\r\nColumn index:\r\n fog: ['No', 'Yes']\r\n ice: ['No', 'Yes']\r\n date: ['2007-01-01 00:00:00', '2019-09-07 00:00:00']\r\n dust: ['No', 'Yes']\r\n hail: ['No', 'Yes']\r\n mist: ['No', 'Yes']\r\n rain: ['No', 'Yes']\r\n snow: ['No', 'Ye"] +[80.21950785636946, "o", "s']\r\n glaze: ['No', 'Yes']\r\n drizzle: ['No', 'Yes']\r\n thunder: ['No', 'Yes']\r\n fogheavy: ['No', 'Yes']\r\n highwind: ['No', 'Yes']\r\n snowfall: ['0.0', '7.01']\r\n fogground: ['No', 'Yes']\r\n smokehaze: ['No', 'Yes']\r\n snowdepth: ['0.0', '5.91']\r\n blowingsnow: ['No', 'Yes']\r\n freezingfog: ['No', 'Yes']\r\n avgwindspeed: ['0.0', '20.36']\r\n freezingrain: ['No', 'Yes']\r\n precipitation: ['0.0', '6.45']\r\n temperaturemax: ['23.2', '105.1']\r\n temperaturemin: ['4.1', '80.1']\r\n fastest2minwinddir: [10, 360]"] +[80.21951333999678, "o", "\r\n fastest5secwinddir: [10, 360]\r\n fastest2minwindspeed: ['4.92', '59.95']\r\n fastest5secwindspeed: ['6.93', '86.12']\r\n\r\n"] +[80.23880283355757, "o", "Location: created locally\r\n"] +[80.26880283355757, "o", "\u001b[1m"] +[80.29880283355757, "o", "\u001b[36m"] +[80.32880283355757, "o", "\u001b[91m"] +[80.35880283355758, "o", "$"] +[80.38880283355758, "o", " "] +[80.41880283355758, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.10/import-from-mongo.cast b/content/casts/versioned/archive/v0.2.10/import-from-mongo.cast new file mode 100644 index 00000000..0818c152 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.10/import-from-mongo.cast @@ -0,0 +1,657 @@ +{"version": 2, "width": 100, "height": 35, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1616004570, "metadata": {"tss": [{"h": "Inspect the config file", "ts": 0.06}, {"h": "Do some preliminary cleanup", "ts": 6.0600000000000005}, {"h": "Mount the Mongo database", "ts": 12.234279413223273}, {"h": "Check the contents of the new table", "ts": 29.234279413223277}, {"h": "Import the data into a new Splitgraph repository", "ts": 36.12842194557197}, {"h": "Alternatively, data can be imported from other databases with Splitfiles", "ts": 44.93272521019}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the config file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "c"] +[0.24, "o", "a"] +[0.27, "o", "t"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "."] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "g"] +[0.42000000000000015, "o", "c"] +[0.4500000000000002, "o", "o"] +[0.4800000000000002, "o", "n"] +[0.5100000000000002, "o", "f"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "g"] +[0.6000000000000003, "o", "\r\n"] +[0.6300000000000003, "o", "\u001b[0m"] +[0.6600000000000004, "o", "\r\n"] +[0.6612488365173343, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[data_sources]\r\nmongo_fdw=splitgraph.hooks.data_source.MongoDataSource\r\n"] +[0.6912488365173344, "o", "\u001b[1m"] +[0.7212488365173344, "o", "\u001b[36m"] +[0.7512488365173344, "o", "\u001b[91m"] +[0.7812488365173345, "o", "$"] +[0.8112488365173345, "o", " "] +[0.8412488365173345, "o", "\u001b[0m"] +[6.03, "o", "\u001b[H"] +[6.0600000000000005, "o", "\u001b[J"] +[6.090000000000001, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Do some preliminary cleanup"] +[6.120000000000001, "o", "\r\n"] +[6.150000000000001, "o", "$"] +[6.1800000000000015, "o", " "] +[6.210000000000002, "o", "s"] +[6.240000000000002, "o", "g"] +[6.270000000000002, "o", "r"] +[6.3000000000000025, "o", " "] +[6.330000000000003, "o", "r"] +[6.360000000000003, "o", "m"] +[6.390000000000003, "o", " "] +[6.4200000000000035, "o", "-"] +[6.450000000000004, "o", "y"] +[6.480000000000004, "o", " "] +[6.510000000000004, "o", "s"] +[6.5400000000000045, "o", "t"] +[6.570000000000005, "o", "a"] +[6.600000000000005, "o", "g"] +[6.630000000000005, "o", "i"] +[6.6600000000000055, "o", "n"] +[6.690000000000006, "o", "g"] +[6.720000000000006, "o", "\r\n"] +[6.750000000000006, "o", "\u001b[0m"] +[6.7800000000000065, "o", "\r\n"] +[6.994279413223273, "o", "Postgres schema staging will be deleted.\r\n"] +[7.024279413223273, "o", "\u001b[1m"] +[7.054279413223274, "o", "\u001b[36m"] +[7.084279413223274, "o", "\u001b[91m"] +[7.114279413223274, "o", "$"] +[7.144279413223274, "o", " "] +[7.174279413223275, "o", "\u001b[0m"] +[12.204279413223274, "o", "\u001b[H"] +[12.234279413223273, "o", "\u001b[J"] +[12.264279413223273, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Mount the Mongo database"] +[12.294279413223272, "o", "\r\n"] +[12.324279413223271, "o", "$"] +[12.35427941322327, "o", " "] +[12.38427941322327, "o", "s"] +[12.41427941322327, "o", "g"] +[12.444279413223269, "o", "r"] +[12.474279413223268, "o", " "] +[12.504279413223268, "o", "m"] +[12.534279413223267, "o", "o"] +[12.564279413223266, "o", "u"] +[12.594279413223266, "o", "n"] +[12.624279413223265, "o", "t"] +[12.654279413223264, "o", " "] +[12.684279413223264, "o", "m"] +[12.714279413223263, "o", "o"] +[12.744279413223262, "o", "n"] +[12.774279413223262, "o", "g"] +[12.804279413223261, "o", "o"] +[12.83427941322326, "o", "_"] +[12.86427941322326, "o", "f"] +[12.89427941322326, "o", "d"] +[12.924279413223259, "o", "w"] +[12.954279413223258, "o", " "] +[12.984279413223257, "o", "-"] +[13.014279413223257, "o", "-"] +[13.044279413223256, "o", "h"] +[13.074279413223255, "o", "e"] +[13.104279413223255, "o", "l"] +[13.134279413223254, "o", "p"] +[13.164279413223253, "o", "\r\n"] +[13.194279413223253, "o", "$"] +[13.224279413223252, "o", " "] +[13.254279413223252, "o", "s"] +[13.284279413223251, "o", "g"] +[13.31427941322325, "o", "r"] +[13.34427941322325, "o", " "] +[13.374279413223249, "o", "m"] +[13.404279413223248, "o", "o"] +[13.434279413223248, "o", "u"] +[13.464279413223247, "o", "n"] +[13.494279413223246, "o", "t"] +[13.524279413223246, "o", " "] +[13.554279413223245, "o", "m"] +[13.584279413223245, "o", "o"] +[13.614279413223244, "o", "n"] +[13.644279413223243, "o", "g"] +[13.674279413223243, "o", "o"] +[13.704279413223242, "o", "_"] +[13.734279413223241, "o", "f"] +[13.76427941322324, "o", "d"] +[13.79427941322324, "o", "w"] +[13.82427941322324, "o", " "] +[13.854279413223239, "o", "s"] +[13.884279413223238, "o", "t"] +[13.914279413223237, "o", "a"] +[13.944279413223237, "o", "g"] +[13.974279413223236, "o", "i"] +[14.004279413223236, "o", "n"] +[14.034279413223235, "o", "g"] +[14.064279413223234, "o", " "] +[14.094279413223234, "o", "-"] +[14.124279413223233, "o", "c"] +[14.154279413223232, "o", " "] +[14.184279413223232, "o", "o"] +[14.214279413223231, "o", "r"] +[14.24427941322323, "o", "i"] +[14.27427941322323, "o", "g"] +[14.30427941322323, "o", "i"] +[14.334279413223229, "o", "n"] +[14.364279413223228, "o", "r"] +[14.394279413223227, "o", "o"] +[14.424279413223227, "o", ":"] +[14.454279413223226, "o", "o"] +[14.484279413223225, "o", "r"] +[14.514279413223225, "o", "i"] +[14.544279413223224, "o", "g"] +[14.574279413223223, "o", "i"] +[14.604279413223223, "o", "n"] +[14.634279413223222, "o", "p"] +[14.664279413223221, "o", "a"] +[14.69427941322322, "o", "s"] +[14.72427941322322, "o", "s"] +[14.75427941322322, "o", "@"] +[14.784279413223219, "o", "m"] +[14.814279413223218, "o", "o"] +[14.844279413223218, "o", "n"] +[14.874279413223217, "o", "g"] +[14.904279413223216, "o", "o"] +[14.934279413223216, "o", ":"] +[14.964279413223215, "o", "2"] +[14.994279413223214, "o", "7"] +[15.024279413223214, "o", "0"] +[15.054279413223213, "o", "1"] +[15.084279413223213, "o", "7"] +[15.114279413223212, "o", " "] +[15.144279413223211, "o", "-"] +[15.17427941322321, "o", "o"] +[15.20427941322321, "o", " "] +[15.23427941322321, "o", "'"] +[15.264279413223209, "o", "{"] +[15.294279413223208, "o", "\""] +[15.324279413223207, "o", "t"] +[15.354279413223207, "o", "a"] +[15.384279413223206, "o", "b"] +[15.414279413223205, "o", "l"] +[15.444279413223205, "o", "e"] +[15.474279413223204, "o", "s"] +[15.504279413223204, "o", "\""] +[15.534279413223203, "o", ":"] +[15.564279413223202, "o", " "] +[15.594279413223202, "o", "{"] +[15.624279413223201, "o", "\""] +[15.6542794132232, "o", "s"] +[15.6842794132232, "o", "t"] +[15.714279413223199, "o", "u"] +[15.744279413223198, "o", "f"] +[15.774279413223198, "o", "f"] +[15.804279413223197, "o", "\""] +[15.834279413223197, "o", ":"] +[15.864279413223196, "o", " "] +[15.894279413223195, "o", "{"] +[15.924279413223195, "o", "\r\n "] +[15.954279413223194, "o", "\""] +[15.984279413223193, "o", "o"] +[16.014279413223193, "o", "p"] +[16.044279413223194, "o", "t"] +[16.074279413223195, "o", "i"] +[16.104279413223196, "o", "o"] +[16.134279413223197, "o", "n"] +[16.1642794132232, "o", "s"] +[16.1942794132232, "o", "\""] +[16.2242794132232, "o", ":"] +[16.254279413223202, "o", "\r\n "] +[16.284279413223203, "o", "{"] +[16.314279413223204, "o", "\r\n "] +[16.344279413223205, "o", "\""] +[16.374279413223206, "o", "d"] +[16.404279413223207, "o", "b"] +[16.43427941322321, "o", "\""] +[16.46427941322321, "o", ":"] +[16.49427941322321, "o", " "] +[16.524279413223212, "o", "\""] +[16.554279413223213, "o", "o"] +[16.584279413223214, "o", "r"] +[16.614279413223215, "o", "i"] +[16.644279413223217, "o", "g"] +[16.674279413223218, "o", "i"] +[16.70427941322322, "o", "n"] +[16.73427941322322, "o", "d"] +[16.76427941322322, "o", "b"] +[16.794279413223222, "o", "\""] +[16.824279413223223, "o", ","] +[16.854279413223225, "o", "\r\n "] +[16.884279413223226, "o", "\""] +[16.914279413223227, "o", "c"] +[16.944279413223228, "o", "o"] +[16.97427941322323, "o", "l"] +[17.00427941322323, "o", "l"] +[17.03427941322323, "o", "\""] +[17.064279413223232, "o", ":"] +[17.094279413223234, "o", " "] +[17.124279413223235, "o", "\""] +[17.154279413223236, "o", "s"] +[17.184279413223237, "o", "t"] +[17.214279413223238, "o", "u"] +[17.24427941322324, "o", "f"] +[17.27427941322324, "o", "f"] +[17.30427941322324, "o", "\""] +[17.334279413223243, "o", "\r\n "] +[17.364279413223244, "o", "}"] +[17.394279413223245, "o", ","] +[17.424279413223246, "o", "\r\n "] +[17.454279413223247, "o", "\""] +[17.48427941322325, "o", "s"] +[17.51427941322325, "o", "c"] +[17.54427941322325, "o", "h"] +[17.574279413223252, "o", "e"] +[17.604279413223253, "o", "m"] +[17.634279413223254, "o", "a"] +[17.664279413223255, "o", "\""] +[17.694279413223256, "o", ":"] +[17.724279413223258, "o", " "] +[17.75427941322326, "o", "{"] +[17.78427941322326, "o", "\r\n "] +[17.81427941322326, "o", "\""] +[17.844279413223262, "o", "n"] +[17.874279413223263, "o", "a"] +[17.904279413223264, "o", "m"] +[17.934279413223265, "o", "e"] +[17.964279413223267, "o", "\""] +[17.994279413223268, "o", ":"] +[18.02427941322327, "o", " "] +[18.05427941322327, "o", "\""] +[18.08427941322327, "o", "t"] +[18.114279413223272, "o", "e"] +[18.144279413223273, "o", "x"] +[18.174279413223275, "o", "t"] +[18.204279413223276, "o", "\""] +[18.234279413223277, "o", ","] +[18.264279413223278, "o", "\r\n "] +[18.29427941322328, "o", "\""] +[18.32427941322328, "o", "d"] +[18.35427941322328, "o", "u"] +[18.384279413223283, "o", "r"] +[18.414279413223284, "o", "a"] +[18.444279413223285, "o", "t"] +[18.474279413223286, "o", "i"] +[18.504279413223287, "o", "o"] +[18.534279413223288, "o", "n"] +[18.56427941322329, "o", "\""] +[18.59427941322329, "o", ":"] +[18.62427941322329, "o", " "] +[18.654279413223293, "o", "\""] +[18.684279413223294, "o", "n"] +[18.714279413223295, "o", "u"] +[18.744279413223296, "o", "m"] +[18.774279413223297, "o", "e"] +[18.8042794132233, "o", "r"] +[18.8342794132233, "o", "i"] +[18.8642794132233, "o", "c"] +[18.894279413223302, "o", "\""] +[18.924279413223303, "o", ","] +[18.954279413223304, "o", "\r\n "] +[18.984279413223305, "o", "\""] +[19.014279413223306, "o", "h"] +[19.044279413223308, "o", "a"] +[19.07427941322331, "o", "p"] +[19.10427941322331, "o", "p"] +[19.13427941322331, "o", "y"] +[19.164279413223312, "o", "\""] +[19.194279413223313, "o", ":"] +[19.224279413223314, "o", " "] +[19.254279413223315, "o", "\""] +[19.284279413223317, "o", "b"] +[19.314279413223318, "o", "o"] +[19.34427941322332, "o", "o"] +[19.37427941322332, "o", "l"] +[19.40427941322332, "o", "e"] +[19.434279413223322, "o", "a"] +[19.464279413223323, "o", "n"] +[19.494279413223325, "o", "\""] +[19.524279413223326, "o", "}"] +[19.554279413223327, "o", "}"] +[19.584279413223328, "o", "}"] +[19.61427941322333, "o", "}"] +[19.64427941322333, "o", "'"] +[19.67427941322333, "o", "\r\n"] +[19.704279413223333, "o", "\u001b[0m"] +[19.734279413223334, "o", "\r\n"] +[19.92285229682929, "o", "Usage: sgr mount mongo_fdw [OPTIONS] SCHEMA\r\n\r\n Mount a Mongo database.\r\n\r\n Mounts one or more collections on a remote Mongo database as a set of\r\n foreign tables locally.\r\n\r\nOptions:\r\n -c, --connection TEXT Connection string in the form\r\n username:password@server:port\r\n\r\n -o, --handler-options JSON JSON-encoded dictionary or @filename.json with\r\n handler options:\r\n \r\n tables: A di"] +[19.922869701385565, "o", "ctionary of form { \"table_name\":\r\n { \"schema\": {\"col1\": \"type1\"...},\r\n \"options\": {\"db\": , \"coll\":\r\n } } }\r\n\r\n --help Show this message and exit.\r\n"] +[20.189450283050604, "o", "Mounting table stuff\r\n"] +[20.219450283050605, "o", "\u001b[1m"] +[20.249450283050606, "o", "\u001b[36m"] +[20.279450283050608, "o", "\u001b[91m"] +[20.30945028305061, "o", "$"] +[20.33945028305061, "o", " "] +[20.36945028305061, "o", "\u001b[0m"] +[29.204279413223276, "o", "\u001b[H"] +[29.234279413223277, "o", "\u001b[J"] +[29.264279413223278, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the contents of the new table"] +[29.29427941322328, "o", "\r\n"] +[29.32427941322328, "o", "$"] +[29.35427941322328, "o", " "] +[29.384279413223283, "o", "s"] +[29.414279413223284, "o", "g"] +[29.444279413223285, "o", "r"] +[29.474279413223286, "o", " "] +[29.504279413223287, "o", "s"] +[29.534279413223288, "o", "q"] +[29.56427941322329, "o", "l"] +[29.59427941322329, "o", " "] +[29.62427941322329, "o", "-"] +[29.654279413223293, "o", "s"] +[29.684279413223294, "o", " "] +[29.714279413223295, "o", "s"] +[29.744279413223296, "o", "t"] +[29.774279413223297, "o", "a"] +[29.8042794132233, "o", "g"] +[29.8342794132233, "o", "i"] +[29.8642794132233, "o", "n"] +[29.894279413223302, "o", "g"] +[29.924279413223303, "o", " "] +[29.954279413223304, "o", "\""] +[29.984279413223305, "o", "S"] +[30.014279413223306, "o", "E"] +[30.044279413223308, "o", "L"] +[30.07427941322331, "o", "E"] +[30.10427941322331, "o", "C"] +[30.13427941322331, "o", "T"] +[30.164279413223312, "o", " "] +[30.194279413223313, "o", "*"] +[30.224279413223314, "o", " "] +[30.254279413223315, "o", "F"] +[30.284279413223317, "o", "R"] +[30.314279413223318, "o", "O"] +[30.34427941322332, "o", "M"] +[30.37427941322332, "o", " "] +[30.40427941322332, "o", "s"] +[30.434279413223322, "o", "t"] +[30.464279413223323, "o", "u"] +[30.494279413223325, "o", "f"] +[30.524279413223326, "o", "f"] +[30.554279413223327, "o", "\""] +[30.584279413223328, "o", "\r\n"] +[30.61427941322333, "o", "\u001b[0m"] +[30.64427941322333, "o", "\r\n"] +[30.888421945571963, "o", "Alex 12 False 605245e62094d91f9dd0e023\r\nJames 2 True 605245e62094d91f9dd0e024\r\nAlice 98765 True 605245e62094d91f9dd0e025\r\n"] +[30.918421945571964, "o", "\u001b[1m"] +[30.948421945571965, "o", "\u001b[36m"] +[30.978421945571966, "o", "\u001b[91m"] +[31.008421945571968, "o", "$"] +[31.03842194557197, "o", " "] +[31.06842194557197, "o", "\u001b[0m"] +[36.09842194557197, "o", "\u001b[H"] +[36.12842194557197, "o", "\u001b[J"] +[36.15842194557197, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Import the data into a new Splitgraph repository"] +[36.188421945571974, "o", "\r\n"] +[36.218421945571976, "o", "$"] +[36.24842194557198, "o", " "] +[36.27842194557198, "o", "s"] +[36.30842194557198, "o", "g"] +[36.33842194557198, "o", "r"] +[36.36842194557198, "o", " "] +[36.39842194557198, "o", "i"] +[36.42842194557198, "o", "m"] +[36.458421945571985, "o", "p"] +[36.488421945571986, "o", "o"] +[36.51842194557199, "o", "r"] +[36.54842194557199, "o", "t"] +[36.57842194557199, "o", " "] +[36.60842194557199, "o", "s"] +[36.63842194557199, "o", "t"] +[36.66842194557199, "o", "a"] +[36.698421945571994, "o", "g"] +[36.728421945571995, "o", "i"] +[36.758421945571996, "o", "n"] +[36.788421945572, "o", "g"] +[36.818421945572, "o", " "] +[36.848421945572, "o", "\""] +[36.878421945572, "o", "S"] +[36.908421945572, "o", "E"] +[36.938421945572, "o", "L"] +[36.968421945572004, "o", "E"] +[36.998421945572005, "o", "C"] +[37.028421945572006, "o", "T"] +[37.05842194557201, "o", " "] +[37.08842194557201, "o", "n"] +[37.11842194557201, "o", "a"] +[37.14842194557201, "o", "m"] +[37.17842194557201, "o", "e"] +[37.20842194557201, "o", ","] +[37.238421945572014, "o", " "] +[37.268421945572015, "o", "d"] +[37.29842194557202, "o", "u"] +[37.32842194557202, "o", "r"] +[37.35842194557202, "o", "a"] +[37.38842194557202, "o", "t"] +[37.41842194557202, "o", "i"] +[37.44842194557202, "o", "o"] +[37.47842194557202, "o", "n"] +[37.508421945572024, "o", ","] +[37.538421945572026, "o", " "] +[37.56842194557203, "o", "h"] +[37.59842194557203, "o", "a"] +[37.62842194557203, "o", "p"] +[37.65842194557203, "o", "p"] +[37.68842194557203, "o", "y"] +[37.71842194557203, "o", " "] +[37.748421945572034, "o", "F"] +[37.778421945572035, "o", "R"] +[37.808421945572036, "o", "O"] +[37.83842194557204, "o", "M"] +[37.86842194557204, "o", " "] +[37.89842194557204, "o", "s"] +[37.92842194557204, "o", "t"] +[37.95842194557204, "o", "u"] +[37.98842194557204, "o", "f"] +[38.018421945572044, "o", "f"] +[38.048421945572045, "o", "\""] +[38.078421945572046, "o", " "] +[38.10842194557205, "o", "m"] +[38.13842194557205, "o", "y"] +[38.16842194557205, "o", "/"] +[38.19842194557205, "o", "r"] +[38.22842194557205, "o", "e"] +[38.25842194557205, "o", "p"] +[38.288421945572054, "o", "o"] +[38.318421945572055, "o", "s"] +[38.348421945572056, "o", "i"] +[38.37842194557206, "o", "t"] +[38.40842194557206, "o", "o"] +[38.43842194557206, "o", "r"] +[38.46842194557206, "o", "y"] +[38.49842194557206, "o", " "] +[38.52842194557206, "o", "s"] +[38.558421945572064, "o", "t"] +[38.588421945572065, "o", "u"] +[38.61842194557207, "o", "f"] +[38.64842194557207, "o", "f"] +[38.67842194557207, "o", "\r\n"] +[38.70842194557207, "o", "\u001b[0m"] +[38.73842194557207, "o", "\r\n"] +[39.437777547836475, "o", "Processing table sg_tmp_1359fde5e09841f04b7fb4536eb90b69\r\n"] +[39.69272521018999, "o", "my/repository:stuff has been imported from staging:SELECT name, duration, happy FROM stuff\r\n"] +[39.72272521018999, "o", "\u001b[1m"] +[39.75272521018999, "o", "\u001b[36m"] +[39.782725210189994, "o", "\u001b[91m"] +[39.812725210189996, "o", "$"] +[39.84272521019, "o", " "] +[39.87272521019, "o", "\u001b[0m"] +[44.90272521019, "o", "\u001b[H"] +[44.93272521019, "o", "\u001b[J"] +[44.96272521019, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Alternatively, data can be imported from other databases with Splitfiles"] +[44.99272521019, "o", "\r\n"] +[45.02272521019, "o", "$"] +[45.052725210190005, "o", " "] +[45.082725210190006, "o", "c"] +[45.11272521019001, "o", "a"] +[45.14272521019001, "o", "t"] +[45.17272521019001, "o", " "] +[45.20272521019001, "o", "m"] +[45.23272521019001, "o", "o"] +[45.26272521019001, "o", "n"] +[45.292725210190014, "o", "g"] +[45.322725210190015, "o", "o"] +[45.352725210190016, "o", "_"] +[45.38272521019002, "o", "i"] +[45.41272521019002, "o", "m"] +[45.44272521019002, "o", "p"] +[45.47272521019002, "o", "o"] +[45.50272521019002, "o", "r"] +[45.53272521019002, "o", "t"] +[45.562725210190024, "o", "."] +[45.592725210190025, "o", "s"] +[45.622725210190026, "o", "p"] +[45.65272521019003, "o", "l"] +[45.68272521019003, "o", "i"] +[45.71272521019003, "o", "t"] +[45.74272521019003, "o", "f"] +[45.77272521019003, "o", "i"] +[45.80272521019003, "o", "l"] +[45.832725210190034, "o", "e"] +[45.862725210190035, "o", "\r\n"] +[45.89272521019004, "o", "$"] +[45.92272521019004, "o", " "] +[45.95272521019004, "o", "s"] +[45.98272521019004, "o", "g"] +[46.01272521019004, "o", "r"] +[46.04272521019004, "o", " "] +[46.07272521019004, "o", "b"] +[46.102725210190044, "o", "u"] +[46.132725210190046, "o", "i"] +[46.16272521019005, "o", "l"] +[46.19272521019005, "o", "d"] +[46.22272521019005, "o", " "] +[46.25272521019005, "o", "m"] +[46.28272521019005, "o", "o"] +[46.31272521019005, "o", "n"] +[46.34272521019005, "o", "g"] +[46.372725210190055, "o", "o"] +[46.402725210190056, "o", "_"] +[46.43272521019006, "o", "i"] +[46.46272521019006, "o", "m"] +[46.49272521019006, "o", "p"] +[46.52272521019006, "o", "o"] +[46.55272521019006, "o", "r"] +[46.58272521019006, "o", "t"] +[46.612725210190064, "o", "."] +[46.642725210190065, "o", "s"] +[46.672725210190066, "o", "p"] +[46.70272521019007, "o", "l"] +[46.73272521019007, "o", "i"] +[46.76272521019007, "o", "t"] +[46.79272521019007, "o", "f"] +[46.82272521019007, "o", "i"] +[46.85272521019007, "o", "l"] +[46.882725210190074, "o", "e"] +[46.912725210190075, "o", "\r\n"] +[46.942725210190076, "o", "\u001b[0m"] +[46.97272521019008, "o", "\r\n"] +[46.97438007354762, "o", "FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"tables\": {\"stuff\": {\r\n \"options\": {\r\n \"db\": \"origindb\",\r\n \"coll\": \"stuff\"\r\n },\r\n \"schema\": {\r\n \"name\": \"text\",\r\n \"duration\": \"numeric\",\r\n \"happy\": \"boolean\"}}}}'\r\n IMPORT {SELECT * FROM stuff} AS stuff\r\n"] +[47.17641526222255, "o", "Executing Splitfile mongo_import.splitfile with arguments {}\r\n"] +[47.21203762054469, "o", "\u001b[1m\r\nStep 1/1 : FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"t...\u001b[0m\r\n"] +[47.28708487510707, "o", "Mounting table stuff\r\n"] +[47.78966766357448, "o", "Processing table sg_tmp_9144d05267a2da2c4722ab0cb23ad490\r\n"] +[48.08945876121547, "o", "Successfully built mongo_import:301bc68dc79a.\r\n"] +[48.11945876121547, "o", "\u001b[1m"] +[48.14945876121547, "o", "\u001b[36m"] +[48.17945876121547, "o", "\u001b[91m"] +[48.20945876121547, "o", "$"] +[48.239458761215474, "o", " "] +[48.269458761215475, "o", "\u001b[0m"] +[54.90272521019, "o", "\u001b[H"] +[54.93272521019, "o", "\u001b[J"] +[54.96272521019, "o", "\u001b[1m"] +[54.99272521019, "o", "\u001b[36m"] +[55.02272521019, "o", "\u001b[91m"] +[55.052725210190005, "o", "$"] +[55.082725210190006, "o", " "] +[55.11272521019001, "o", "s"] +[55.14272521019001, "o", "g"] +[55.17272521019001, "o", "r"] +[55.20272521019001, "o", " "] +[55.23272521019001, "o", "s"] +[55.26272521019001, "o", "h"] +[55.292725210190014, "o", "o"] +[55.322725210190015, "o", "w"] +[55.352725210190016, "o", " "] +[55.38272521019002, "o", "m"] +[55.41272521019002, "o", "o"] +[55.44272521019002, "o", "n"] +[55.47272521019002, "o", "g"] +[55.50272521019002, "o", "o"] +[55.53272521019002, "o", "_"] +[55.562725210190024, "o", "i"] +[55.592725210190025, "o", "m"] +[55.622725210190026, "o", "p"] +[55.65272521019003, "o", "o"] +[55.68272521019003, "o", "r"] +[55.71272521019003, "o", "t"] +[55.74272521019003, "o", ":"] +[55.77272521019003, "o", "l"] +[55.80272521019003, "o", "a"] +[55.832725210190034, "o", "t"] +[55.862725210190035, "o", "e"] +[55.89272521019004, "o", "s"] +[55.92272521019004, "o", "t"] +[55.95272521019004, "o", "\r\n"] +[55.98272521019004, "o", "$"] +[56.01272521019004, "o", " "] +[56.04272521019004, "o", "s"] +[56.07272521019004, "o", "g"] +[56.102725210190044, "o", "r"] +[56.132725210190046, "o", " "] +[56.16272521019005, "o", "s"] +[56.19272521019005, "o", "q"] +[56.22272521019005, "o", "l"] +[56.25272521019005, "o", " "] +[56.28272521019005, "o", "-"] +[56.31272521019005, "o", "s"] +[56.34272521019005, "o", " "] +[56.372725210190055, "o", "m"] +[56.402725210190056, "o", "o"] +[56.43272521019006, "o", "n"] +[56.46272521019006, "o", "g"] +[56.49272521019006, "o", "o"] +[56.52272521019006, "o", "_"] +[56.55272521019006, "o", "i"] +[56.58272521019006, "o", "m"] +[56.612725210190064, "o", "p"] +[56.642725210190065, "o", "o"] +[56.672725210190066, "o", "r"] +[56.70272521019007, "o", "t"] +[56.73272521019007, "o", " "] +[56.76272521019007, "o", "\""] +[56.79272521019007, "o", "S"] +[56.82272521019007, "o", "E"] +[56.85272521019007, "o", "L"] +[56.882725210190074, "o", "E"] +[56.912725210190075, "o", "C"] +[56.942725210190076, "o", "T"] +[56.97272521019008, "o", " "] +[57.00272521019008, "o", "*"] +[57.03272521019008, "o", " "] +[57.06272521019008, "o", "F"] +[57.09272521019008, "o", "R"] +[57.12272521019008, "o", "O"] +[57.152725210190084, "o", "M"] +[57.182725210190085, "o", " "] +[57.21272521019009, "o", "s"] +[57.24272521019009, "o", "t"] +[57.27272521019009, "o", "u"] +[57.30272521019009, "o", "f"] +[57.33272521019009, "o", "f"] +[57.36272521019009, "o", "\""] +[57.39272521019009, "o", "\r\n"] +[57.422725210190094, "o", "\u001b[0m"] +[57.452725210190096, "o", "\r\n"] +[57.666334905624666, "o", "Image mongo_import:301bc68dc79acd7b8e73c0d9620403a4a6b1f01e08a6665ef07ecd3c27e71036\r\n"] +[57.66635231018094, "o", "Importing 1 table from mongo_fdw_tmp_staging\r\nCreated at 2021-03-17T18:09:50.953155\r\n"] +[57.6682420158389, "o", "Size: 589.00 B\r\n"] +[57.66825012207059, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[57.66914395332364, "o", " stuff\r\n"] +[57.90812019348172, "o", "Alex 12 False 605245e62094d91f9dd0e023\r\nAlice 98765 True 605245e62094d91f9dd0e025\r\nJames 2 True 605245e62094d91f9dd0e024\r\n"] +[57.93812019348172, "o", "\u001b[1m"] +[57.968120193481724, "o", "\u001b[36m"] +[57.998120193481725, "o", "\u001b[91m"] +[58.028120193481726, "o", "$"] +[58.05812019348173, "o", " "] +[58.08812019348173, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.10/metadata.json b/content/casts/versioned/archive/v0.2.10/metadata.json new file mode 100644 index 00000000..8e585004 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.10/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.10", + "updated_at": "2022-01-20T00:00:50.289Z", + "release": { + "id": 39960104, + "tag_name": "v0.2.10", + "target_commitish": "3688be4452e0a98e4510876b085b29a61d9c73be", + "created_at": "2021-03-17T17:52:24Z", + "published_at": "2021-03-17T18:18:59Z", + "assets": [ + { + "id": 33604378, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/33604378", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-03-17T18:18:16Z", + "updated_at": "2021-03-17T18:18:16Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.10/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/casts/versioned/archive/v0.2.10/pg-replication.cast b/content/casts/versioned/archive/v0.2.10/pg-replication.cast new file mode 100644 index 00000000..aff11360 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.10/pg-replication.cast @@ -0,0 +1,1401 @@ +{"version": 2, "width": 100, "height": 21, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1616004639, "metadata": {"tss": [{"h": "The configuration file for sgr contains credentials for the", "ts": 0.06}, {"h": "The origin database has been set up with a couple of tables.", "ts": 10.059999999999999}, {"h": "Create a publication on the origin database", "ts": 19.427869367599406}, {"h": "Create a schema with the same name and same tables", "ts": 28.20786936759955}, {"h": "Set up replication from the origin database.", "ts": 38.20786936759955}, {"h": "Check the data on the engine", "ts": 49.147869367599775}, {"h": "Commit the data as an initial image", "ts": 57.43130787849466}, {"h": "Make a change on the origin database", "ts": 67.05529802322442}, {"h": "The change propagates to the subscriber and gets", "ts": 83.12529802322484}, {"h": "Committing creates a new image, snapshotting the state.", "ts": 89.7880926513682}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The configuration file for sgr contains credentials for the"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # origin database: this is just so that we can use sgr to query it\r\n"] +[0.18, "o", "$ # (replication can be set up through any PostgreSQL client)\r\n"] +[0.21, "o", "$"] +[0.24, "o", " "] +[0.27, "o", "c"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "t"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "."] +[0.42000000000000015, "o", "s"] +[0.4500000000000002, "o", "g"] +[0.4800000000000002, "o", "c"] +[0.5100000000000002, "o", "o"] +[0.5400000000000003, "o", "n"] +[0.5700000000000003, "o", "f"] +[0.6000000000000003, "o", "i"] +[0.6300000000000003, "o", "g"] +[0.6600000000000004, "o", "\r\n"] +[0.6900000000000004, "o", "\u001b[0m"] +[0.7200000000000004, "o", "\r\n"] +[0.7212347698211674, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n; Add the origin database here so that we can\r\n; use sgr to talk to it (can use any pg client)\r\n[remote:origin]\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=originuser\r\nSG_ENGINE_PWD=originpass\r\nSG_ENGINE_DB=originuser\r\n"] +[0.7512347698211674, "o", "\u001b[1m"] +[0.7812347698211675, "o", "\u001b[36m"] +[0.8112347698211675, "o", "\u001b[91m"] +[0.8412347698211675, "o", "$"] +[0.8712347698211675, "o", " "] +[0.9012347698211676, "o", "\u001b[0m"] +[10.03, "o", "\u001b[H"] +[10.059999999999999, "o", "\u001b[J"] +[10.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The origin database has been set up with a couple of tables."] +[10.119999999999997, "o", "\r\n"] +[10.149999999999997, "o", "$"] +[10.179999999999996, "o", " "] +[10.209999999999996, "o", "s"] +[10.239999999999995, "o", "g"] +[10.269999999999994, "o", "r"] +[10.299999999999994, "o", " "] +[10.329999999999993, "o", "s"] +[10.359999999999992, "o", "q"] +[10.389999999999992, "o", "l"] +[10.419999999999991, "o", " "] +[10.44999999999999, "o", "-"] +[10.47999999999999, "o", "r"] +[10.50999999999999, "o", " "] +[10.539999999999988, "o", "o"] +[10.569999999999988, "o", "r"] +[10.599999999999987, "o", "i"] +[10.629999999999987, "o", "g"] +[10.659999999999986, "o", "i"] +[10.689999999999985, "o", "n"] +[10.719999999999985, "o", " "] +[10.749999999999984, "o", "\""] +[10.779999999999983, "o", "S"] +[10.809999999999983, "o", "E"] +[10.839999999999982, "o", "L"] +[10.869999999999981, "o", "E"] +[10.89999999999998, "o", "C"] +[10.92999999999998, "o", "T"] +[10.95999999999998, "o", " "] +[10.989999999999979, "o", "*"] +[11.019999999999978, "o", " "] +[11.049999999999978, "o", "F"] +[11.079999999999977, "o", "R"] +[11.109999999999976, "o", "O"] +[11.139999999999976, "o", "M"] +[11.169999999999975, "o", " "] +[11.199999999999974, "o", "p"] +[11.229999999999974, "o", "r"] +[11.259999999999973, "o", "o"] +[11.289999999999973, "o", "d"] +[11.319999999999972, "o", "u"] +[11.349999999999971, "o", "c"] +[11.37999999999997, "o", "t"] +[11.40999999999997, "o", "i"] +[11.43999999999997, "o", "o"] +[11.469999999999969, "o", "n"] +[11.499999999999968, "o", "_"] +[11.529999999999967, "o", "d"] +[11.559999999999967, "o", "a"] +[11.589999999999966, "o", "t"] +[11.619999999999965, "o", "a"] +[11.649999999999965, "o", "."] +[11.679999999999964, "o", "c"] +[11.709999999999964, "o", "u"] +[11.739999999999963, "o", "s"] +[11.769999999999962, "o", "t"] +[11.799999999999962, "o", "o"] +[11.829999999999961, "o", "m"] +[11.85999999999996, "o", "e"] +[11.88999999999996, "o", "r"] +[11.919999999999959, "o", "s"] +[11.949999999999958, "o", "\""] +[11.979999999999958, "o", "\r\n"] +[12.009999999999957, "o", "$"] +[12.039999999999957, "o", " "] +[12.069999999999956, "o", "s"] +[12.099999999999955, "o", "g"] +[12.129999999999955, "o", "r"] +[12.159999999999954, "o", " "] +[12.189999999999953, "o", "s"] +[12.219999999999953, "o", "q"] +[12.249999999999952, "o", "l"] +[12.279999999999951, "o", " "] +[12.30999999999995, "o", "-"] +[12.33999999999995, "o", "r"] +[12.36999999999995, "o", " "] +[12.399999999999949, "o", "o"] +[12.429999999999948, "o", "r"] +[12.459999999999948, "o", "i"] +[12.489999999999947, "o", "g"] +[12.519999999999946, "o", "i"] +[12.549999999999946, "o", "n"] +[12.579999999999945, "o", " "] +[12.609999999999944, "o", "\""] +[12.639999999999944, "o", "S"] +[12.669999999999943, "o", "E"] +[12.699999999999942, "o", "L"] +[12.729999999999942, "o", "E"] +[12.759999999999941, "o", "C"] +[12.78999999999994, "o", "T"] +[12.81999999999994, "o", " "] +[12.84999999999994, "o", "*"] +[12.879999999999939, "o", " "] +[12.909999999999938, "o", "F"] +[12.939999999999937, "o", "R"] +[12.969999999999937, "o", "O"] +[12.999999999999936, "o", "M"] +[13.029999999999935, "o", " "] +[13.059999999999935, "o", "p"] +[13.089999999999934, "o", "r"] +[13.119999999999933, "o", "o"] +[13.149999999999933, "o", "d"] +[13.179999999999932, "o", "u"] +[13.209999999999932, "o", "c"] +[13.239999999999931, "o", "t"] +[13.26999999999993, "o", "i"] +[13.29999999999993, "o", "o"] +[13.329999999999929, "o", "n"] +[13.359999999999928, "o", "_"] +[13.389999999999928, "o", "d"] +[13.419999999999927, "o", "a"] +[13.449999999999926, "o", "t"] +[13.479999999999926, "o", "a"] +[13.509999999999925, "o", "."] +[13.539999999999925, "o", "o"] +[13.569999999999924, "o", "r"] +[13.599999999999923, "o", "d"] +[13.629999999999923, "o", "e"] +[13.659999999999922, "o", "r"] +[13.689999999999921, "o", "s"] +[13.71999999999992, "o", "\""] +[13.74999999999992, "o", "\r\n"] +[13.77999999999992, "o", "\u001b[0m"] +[13.809999999999919, "o", "\r\n"] +[14.001570043563762, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[14.187869367599406, "o", "1 1 15 Toilet Roll 2020-03-15 12:00:00\r\n2 1 20 Hand Sanitizer 2020-03-16 02:00:00\r\n3 2 5 Pasta 2020-03-21 17:32:11\r\n4 3 50 Surgical Mask 2020-04-01 12:00:01\r\n5 1 50 Surgical Mask 2020-04-02 11:29:42\r\n"] +[14.217869367599405, "o", "\u001b[1m"] +[14.247869367599405, "o", "\u001b[36m"] +[14.277869367599404, "o", "\u001b[91m"] +[14.307869367599404, "o", "$"] +[14.337869367599403, "o", " "] +[14.367869367599402, "o", "\u001b[0m"] +[19.397869367599405, "o", "\u001b[H"] +[19.427869367599406, "o", "\u001b[J"] +[19.457869367599407, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a publication on the origin database"] +[19.48786936759941, "o", "\r\n"] +[19.51786936759941, "o", "$"] +[19.54786936759941, "o", " "] +[19.577869367599412, "o", "s"] +[19.607869367599413, "o", "g"] +[19.637869367599414, "o", "r"] +[19.667869367599415, "o", " "] +[19.697869367599417, "o", "s"] +[19.727869367599418, "o", "q"] +[19.75786936759942, "o", "l"] +[19.78786936759942, "o", " "] +[19.81786936759942, "o", "-"] +[19.847869367599422, "o", "r"] +[19.877869367599423, "o", " "] +[19.907869367599424, "o", "o"] +[19.937869367599426, "o", "r"] +[19.967869367599427, "o", "i"] +[19.997869367599428, "o", "g"] +[20.02786936759943, "o", "i"] +[20.05786936759943, "o", "n"] +[20.08786936759943, "o", " "] +[20.117869367599432, "o", "\""] +[20.147869367599434, "o", "C"] +[20.177869367599435, "o", "R"] +[20.207869367599436, "o", "E"] +[20.237869367599437, "o", "A"] +[20.267869367599438, "o", "T"] +[20.29786936759944, "o", "E"] +[20.32786936759944, "o", " "] +[20.35786936759944, "o", "P"] +[20.387869367599443, "o", "U"] +[20.417869367599444, "o", "B"] +[20.447869367599445, "o", "L"] +[20.477869367599446, "o", "I"] +[20.507869367599447, "o", "C"] +[20.53786936759945, "o", "A"] +[20.56786936759945, "o", "T"] +[20.59786936759945, "o", "I"] +[20.627869367599452, "o", "O"] +[20.657869367599453, "o", "N"] +[20.687869367599454, "o", " "] +[20.717869367599455, "o", "p"] +[20.747869367599456, "o", "u"] +[20.777869367599457, "o", "b"] +[20.80786936759946, "o", "_"] +[20.83786936759946, "o", "o"] +[20.86786936759946, "o", "r"] +[20.897869367599462, "o", "d"] +[20.927869367599463, "o", "e"] +[20.957869367599464, "o", "r"] +[20.987869367599465, "o", "s"] +[21.017869367599467, "o", " "] +[21.047869367599468, "o", "\\"] +[21.07786936759947, "o", "\r\n "] +[21.10786936759947, "o", "F"] +[21.13786936759947, "o", "O"] +[21.167869367599472, "o", "R"] +[21.197869367599473, "o", " "] +[21.227869367599475, "o", "T"] +[21.257869367599476, "o", "A"] +[21.287869367599477, "o", "B"] +[21.317869367599478, "o", "L"] +[21.34786936759948, "o", "E"] +[21.37786936759948, "o", " "] +[21.40786936759948, "o", "p"] +[21.437869367599482, "o", "r"] +[21.467869367599484, "o", "o"] +[21.497869367599485, "o", "d"] +[21.527869367599486, "o", "u"] +[21.557869367599487, "o", "c"] +[21.587869367599488, "o", "t"] +[21.61786936759949, "o", "i"] +[21.64786936759949, "o", "o"] +[21.67786936759949, "o", "n"] +[21.707869367599493, "o", "_"] +[21.737869367599494, "o", "d"] +[21.767869367599495, "o", "a"] +[21.797869367599496, "o", "t"] +[21.827869367599497, "o", "a"] +[21.8578693675995, "o", "."] +[21.8878693675995, "o", "c"] +[21.9178693675995, "o", "u"] +[21.947869367599502, "o", "s"] +[21.977869367599503, "o", "t"] +[22.007869367599504, "o", "o"] +[22.037869367599505, "o", "m"] +[22.067869367599506, "o", "e"] +[22.097869367599507, "o", "r"] +[22.12786936759951, "o", "s"] +[22.15786936759951, "o", ","] +[22.18786936759951, "o", " "] +[22.217869367599512, "o", "p"] +[22.247869367599513, "o", "r"] +[22.277869367599514, "o", "o"] +[22.307869367599515, "o", "d"] +[22.337869367599517, "o", "u"] +[22.367869367599518, "o", "c"] +[22.39786936759952, "o", "t"] +[22.42786936759952, "o", "i"] +[22.45786936759952, "o", "o"] +[22.487869367599522, "o", "n"] +[22.517869367599523, "o", "_"] +[22.547869367599525, "o", "d"] +[22.577869367599526, "o", "a"] +[22.607869367599527, "o", "t"] +[22.637869367599528, "o", "a"] +[22.66786936759953, "o", "."] +[22.69786936759953, "o", "o"] +[22.72786936759953, "o", "r"] +[22.757869367599532, "o", "d"] +[22.787869367599534, "o", "e"] +[22.817869367599535, "o", "r"] +[22.847869367599536, "o", "s"] +[22.877869367599537, "o", "\""] +[22.907869367599538, "o", "\r\n"] +[22.93786936759954, "o", "\u001b[0m"] +[22.96786936759954, "o", "\r\n"] +[22.99786936759954, "o", "\u001b[1m"] +[23.027869367599543, "o", "\u001b[36m"] +[23.057869367599544, "o", "\u001b[91m"] +[23.087869367599545, "o", "$"] +[23.117869367599546, "o", " "] +[23.147869367599547, "o", "\u001b[0m"] +[28.17786936759955, "o", "\u001b[H"] +[28.20786936759955, "o", "\u001b[J"] +[28.23786936759955, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a schema with the same name and same tables"] +[28.267869367599552, "o", "\r\n"] +[28.297869367599553, "o", "$ # on the engine and initialize the repository.\r\n"] +[28.327869367599554, "o", "$"] +[28.357869367599555, "o", " "] +[28.387869367599556, "o", "s"] +[28.417869367599558, "o", "g"] +[28.44786936759956, "o", "r"] +[28.47786936759956, "o", " "] +[28.50786936759956, "o", "i"] +[28.537869367599562, "o", "n"] +[28.567869367599563, "o", "i"] +[28.597869367599564, "o", "t"] +[28.627869367599565, "o", " "] +[28.657869367599567, "o", "p"] +[28.687869367599568, "o", "r"] +[28.71786936759957, "o", "o"] +[28.74786936759957, "o", "d"] +[28.77786936759957, "o", "u"] +[28.807869367599572, "o", "c"] +[28.837869367599573, "o", "t"] +[28.867869367599575, "o", "i"] +[28.897869367599576, "o", "o"] +[28.927869367599577, "o", "n"] +[28.957869367599578, "o", "_"] +[28.98786936759958, "o", "d"] +[29.01786936759958, "o", "a"] +[29.04786936759958, "o", "t"] +[29.077869367599583, "o", "a"] +[29.107869367599584, "o", "\r\n"] +[29.137869367599585, "o", "$"] +[29.167869367599586, "o", " "] +[29.197869367599587, "o", "c"] +[29.227869367599588, "o", "a"] +[29.25786936759959, "o", "t"] +[29.28786936759959, "o", " "] +[29.31786936759959, "o", "e"] +[29.347869367599593, "o", "n"] +[29.377869367599594, "o", "g"] +[29.407869367599595, "o", "i"] +[29.437869367599596, "o", "n"] +[29.467869367599597, "o", "e"] +[29.4978693675996, "o", "/"] +[29.5278693675996, "o", "s"] +[29.5578693675996, "o", "c"] +[29.587869367599602, "o", "h"] +[29.617869367599603, "o", "e"] +[29.647869367599604, "o", "m"] +[29.677869367599605, "o", "a"] +[29.707869367599606, "o", "."] +[29.737869367599608, "o", "s"] +[29.76786936759961, "o", "q"] +[29.79786936759961, "o", "l"] +[29.82786936759961, "o", "\r\n"] +[29.857869367599612, "o", "$"] +[29.887869367599613, "o", " "] +[29.917869367599614, "o", "s"] +[29.947869367599615, "o", "g"] +[29.977869367599617, "o", "r"] +[30.007869367599618, "o", " "] +[30.03786936759962, "o", "s"] +[30.06786936759962, "o", "q"] +[30.09786936759962, "o", "l"] +[30.127869367599622, "o", " "] +[30.157869367599623, "o", "-"] +[30.187869367599625, "o", "s"] +[30.217869367599626, "o", " "] +[30.247869367599627, "o", "p"] +[30.277869367599628, "o", "r"] +[30.30786936759963, "o", "o"] +[30.33786936759963, "o", "d"] +[30.36786936759963, "o", "u"] +[30.397869367599633, "o", "c"] +[30.427869367599634, "o", "t"] +[30.457869367599635, "o", "i"] +[30.487869367599636, "o", "o"] +[30.517869367599637, "o", "n"] +[30.54786936759964, "o", "_"] +[30.57786936759964, "o", "d"] +[30.60786936759964, "o", "a"] +[30.63786936759964, "o", "t"] +[30.667869367599643, "o", "a"] +[30.697869367599644, "o", " "] +[30.727869367599645, "o", "\""] +[30.757869367599646, "o", "$"] +[30.787869367599647, "o", "("] +[30.81786936759965, "o", "c"] +[30.84786936759965, "o", "a"] +[30.87786936759965, "o", "t"] +[30.907869367599652, "o", " "] +[30.937869367599653, "o", "e"] +[30.967869367599654, "o", "n"] +[30.997869367599655, "o", "g"] +[31.027869367599656, "o", "i"] +[31.057869367599658, "o", "n"] +[31.08786936759966, "o", "e"] +[31.11786936759966, "o", "/"] +[31.14786936759966, "o", "s"] +[31.177869367599662, "o", "c"] +[31.207869367599663, "o", "h"] +[31.237869367599664, "o", "e"] +[31.267869367599666, "o", "m"] +[31.297869367599667, "o", "a"] +[31.327869367599668, "o", "."] +[31.35786936759967, "o", "s"] +[31.38786936759967, "o", "q"] +[31.41786936759967, "o", "l"] +[31.447869367599672, "o", ")"] +[31.477869367599673, "o", "\""] +[31.507869367599675, "o", "\r\n"] +[31.537869367599676, "o", "\u001b[0m"] +[31.567869367599677, "o", "\r\n"] +[31.813363256454657, "o", "Initialized empty repository production_data\r\n"] +[31.815120878219794, "o", "CREATE TABLE production_data.customers (\r\n id INTEGER PRIMARY KEY,\r\n name VARCHAR,\r\n registration_time TIMESTAMP\r\n);\r\n\r\nCREATE TABLE production_data.orders (\r\n id INTEGER PRIMARY KEY,\r\n customer_id INTEGER,\r\n quantity INTEGER,\r\n item_name VARCHAR,\r\n placed_time TIMESTAMP\r\n);\r\n"] +[31.845120878219795, "o", "\u001b[1m"] +[31.875120878219796, "o", "\u001b[36m"] +[31.905120878219797, "o", "\u001b[91m"] +[31.9351208782198, "o", "$"] +[31.9651208782198, "o", " "] +[31.9951208782198, "o", "\u001b[0m"] +[38.17786936759955, "o", "\u001b[H"] +[38.20786936759955, "o", "\u001b[J"] +[38.23786936759955, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Set up replication from the origin database."] +[38.26786936759955, "o", "\r\n"] +[38.29786936759955, "o", "$ # This will copy existing data into the tables too.\r\n"] +[38.327869367599554, "o", "$"] +[38.357869367599555, "o", " "] +[38.387869367599556, "o", "s"] +[38.41786936759956, "o", "g"] +[38.44786936759956, "o", "r"] +[38.47786936759956, "o", " "] +[38.50786936759956, "o", "s"] +[38.53786936759956, "o", "q"] +[38.56786936759956, "o", "l"] +[38.597869367599564, "o", " "] +[38.627869367599565, "o", "-"] +[38.65786936759957, "o", "-"] +[38.68786936759957, "o", "n"] +[38.71786936759957, "o", "o"] +[38.74786936759957, "o", "-"] +[38.77786936759957, "o", "t"] +[38.80786936759957, "o", "r"] +[38.83786936759957, "o", "a"] +[38.867869367599575, "o", "n"] +[38.897869367599576, "o", "s"] +[38.92786936759958, "o", "a"] +[38.95786936759958, "o", "c"] +[38.98786936759958, "o", "t"] +[39.01786936759958, "o", "i"] +[39.04786936759958, "o", "o"] +[39.07786936759958, "o", "n"] +[39.107869367599584, "o", " "] +[39.137869367599585, "o", "\""] +[39.167869367599586, "o", "C"] +[39.19786936759959, "o", "R"] +[39.22786936759959, "o", "E"] +[39.25786936759959, "o", "A"] +[39.28786936759959, "o", "T"] +[39.31786936759959, "o", "E"] +[39.34786936759959, "o", " "] +[39.377869367599594, "o", "S"] +[39.407869367599595, "o", "U"] +[39.437869367599596, "o", "B"] +[39.4678693675996, "o", "S"] +[39.4978693675996, "o", "C"] +[39.5278693675996, "o", "R"] +[39.5578693675996, "o", "I"] +[39.5878693675996, "o", "P"] +[39.6178693675996, "o", "T"] +[39.647869367599604, "o", "I"] +[39.677869367599605, "o", "O"] +[39.707869367599606, "o", "N"] +[39.73786936759961, "o", " "] +[39.76786936759961, "o", "s"] +[39.79786936759961, "o", "u"] +[39.82786936759961, "o", "b"] +[39.85786936759961, "o", "_"] +[39.88786936759961, "o", "o"] +[39.917869367599614, "o", "r"] +[39.947869367599615, "o", "d"] +[39.97786936759962, "o", "e"] +[40.00786936759962, "o", "r"] +[40.03786936759962, "o", "s"] +[40.06786936759962, "o", " "] +[40.09786936759962, "o", "\\"] +[40.12786936759962, "o", "\r\n "] +[40.15786936759962, "o", "C"] +[40.187869367599625, "o", "O"] +[40.217869367599626, "o", "N"] +[40.24786936759963, "o", "N"] +[40.27786936759963, "o", "E"] +[40.30786936759963, "o", "C"] +[40.33786936759963, "o", "T"] +[40.36786936759963, "o", "I"] +[40.39786936759963, "o", "O"] +[40.427869367599634, "o", "N"] +[40.457869367599635, "o", " "] +[40.487869367599636, "o", "'"] +[40.51786936759964, "o", "p"] +[40.54786936759964, "o", "o"] +[40.57786936759964, "o", "s"] +[40.60786936759964, "o", "t"] +[40.63786936759964, "o", "g"] +[40.66786936759964, "o", "r"] +[40.697869367599644, "o", "e"] +[40.727869367599645, "o", "s"] +[40.757869367599646, "o", "q"] +[40.78786936759965, "o", "l"] +[40.81786936759965, "o", ":"] +[40.84786936759965, "o", "/"] +[40.87786936759965, "o", "/"] +[40.90786936759965, "o", "o"] +[40.93786936759965, "o", "r"] +[40.967869367599654, "o", "i"] +[40.997869367599655, "o", "g"] +[41.027869367599656, "o", "i"] +[41.05786936759966, "o", "n"] +[41.08786936759966, "o", "u"] +[41.11786936759966, "o", "s"] +[41.14786936759966, "o", "e"] +[41.17786936759966, "o", "r"] +[41.20786936759966, "o", ":"] +[41.237869367599664, "o", "o"] +[41.267869367599666, "o", "r"] +[41.29786936759967, "o", "i"] +[41.32786936759967, "o", "g"] +[41.35786936759967, "o", "i"] +[41.38786936759967, "o", "n"] +[41.41786936759967, "o", "p"] +[41.44786936759967, "o", "a"] +[41.47786936759967, "o", "s"] +[41.507869367599675, "o", "s"] +[41.537869367599676, "o", "@"] +[41.56786936759968, "o", "o"] +[41.59786936759968, "o", "r"] +[41.62786936759968, "o", "i"] +[41.65786936759968, "o", "g"] +[41.68786936759968, "o", "i"] +[41.71786936759968, "o", "n"] +[41.747869367599684, "o", ":"] +[41.777869367599685, "o", "5"] +[41.807869367599686, "o", "4"] +[41.83786936759969, "o", "3"] +[41.86786936759969, "o", "2"] +[41.89786936759969, "o", "/"] +[41.92786936759969, "o", "o"] +[41.95786936759969, "o", "r"] +[41.98786936759969, "o", "i"] +[42.017869367599694, "o", "g"] +[42.047869367599695, "o", "i"] +[42.077869367599696, "o", "n"] +[42.1078693675997, "o", "u"] +[42.1378693675997, "o", "s"] +[42.1678693675997, "o", "e"] +[42.1978693675997, "o", "r"] +[42.2278693675997, "o", "'"] +[42.2578693675997, "o", " "] +[42.287869367599704, "o", "\\"] +[42.317869367599705, "o", "\r\n "] +[42.347869367599706, "o", "P"] +[42.37786936759971, "o", "U"] +[42.40786936759971, "o", "B"] +[42.43786936759971, "o", "L"] +[42.46786936759971, "o", "I"] +[42.49786936759971, "o", "C"] +[42.52786936759971, "o", "A"] +[42.557869367599714, "o", "T"] +[42.587869367599716, "o", "I"] +[42.61786936759972, "o", "O"] +[42.64786936759972, "o", "N"] +[42.67786936759972, "o", " "] +[42.70786936759972, "o", "p"] +[42.73786936759972, "o", "u"] +[42.76786936759972, "o", "b"] +[42.79786936759972, "o", "_"] +[42.827869367599725, "o", "o"] +[42.857869367599726, "o", "r"] +[42.88786936759973, "o", "d"] +[42.91786936759973, "o", "e"] +[42.94786936759973, "o", "r"] +[42.97786936759973, "o", "s"] +[43.00786936759973, "o", " "] +[43.03786936759973, "o", "\\"] +[43.067869367599734, "o", "\r\n "] +[43.097869367599735, "o", "W"] +[43.127869367599736, "o", "I"] +[43.15786936759974, "o", "T"] +[43.18786936759974, "o", "H"] +[43.21786936759974, "o", " "] +[43.24786936759974, "o", "("] +[43.27786936759974, "o", "c"] +[43.30786936759974, "o", "o"] +[43.337869367599744, "o", "p"] +[43.367869367599745, "o", "y"] +[43.397869367599746, "o", "_"] +[43.42786936759975, "o", "d"] +[43.45786936759975, "o", "a"] +[43.48786936759975, "o", "t"] +[43.51786936759975, "o", "a"] +[43.54786936759975, "o", " "] +[43.57786936759975, "o", "="] +[43.607869367599754, "o", " "] +[43.637869367599755, "o", "t"] +[43.66786936759976, "o", "r"] +[43.69786936759976, "o", "u"] +[43.72786936759976, "o", "e"] +[43.75786936759976, "o", ")"] +[43.78786936759976, "o", ";"] +[43.81786936759976, "o", "\""] +[43.84786936759976, "o", "\r\n"] +[43.877869367599764, "o", "\u001b[0m"] +[43.907869367599766, "o", "\r\n"] +[43.93786936759977, "o", "\u001b[1m"] +[43.96786936759977, "o", "\u001b[36m"] +[43.99786936759977, "o", "\u001b[91m"] +[44.02786936759977, "o", "$"] +[44.05786936759977, "o", " "] +[44.08786936759977, "o", "\u001b[0m"] +[49.11786936759977, "o", "\u001b[H"] +[49.147869367599775, "o", "\u001b[J"] +[49.177869367599776, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the data on the engine"] +[49.20786936759978, "o", "\r\n"] +[49.23786936759978, "o", "$"] +[49.26786936759978, "o", " "] +[49.29786936759978, "o", "s"] +[49.32786936759978, "o", "g"] +[49.35786936759978, "o", "r"] +[49.387869367599784, "o", " "] +[49.417869367599785, "o", "d"] +[49.447869367599786, "o", "i"] +[49.47786936759979, "o", "f"] +[49.50786936759979, "o", "f"] +[49.53786936759979, "o", " "] +[49.56786936759979, "o", "p"] +[49.59786936759979, "o", "r"] +[49.62786936759979, "o", "o"] +[49.657869367599794, "o", "d"] +[49.687869367599795, "o", "u"] +[49.717869367599796, "o", "c"] +[49.7478693675998, "o", "t"] +[49.7778693675998, "o", "i"] +[49.8078693675998, "o", "o"] +[49.8378693675998, "o", "n"] +[49.8678693675998, "o", "_"] +[49.8978693675998, "o", "d"] +[49.927869367599804, "o", "a"] +[49.957869367599805, "o", "t"] +[49.98786936759981, "o", "a"] +[50.01786936759981, "o", "\r\n"] +[50.04786936759981, "o", "$"] +[50.07786936759981, "o", " "] +[50.10786936759981, "o", "s"] +[50.13786936759981, "o", "g"] +[50.16786936759981, "o", "r"] +[50.197869367599814, "o", " "] +[50.227869367599816, "o", "s"] +[50.25786936759982, "o", "q"] +[50.28786936759982, "o", "l"] +[50.31786936759982, "o", " "] +[50.34786936759982, "o", "-"] +[50.37786936759982, "o", "s"] +[50.40786936759982, "o", " "] +[50.43786936759982, "o", "p"] +[50.467869367599825, "o", "r"] +[50.497869367599826, "o", "o"] +[50.52786936759983, "o", "d"] +[50.55786936759983, "o", "u"] +[50.58786936759983, "o", "c"] +[50.61786936759983, "o", "t"] +[50.64786936759983, "o", "i"] +[50.67786936759983, "o", "o"] +[50.707869367599834, "o", "n"] +[50.737869367599835, "o", "_"] +[50.767869367599836, "o", "d"] +[50.79786936759984, "o", "a"] +[50.82786936759984, "o", "t"] +[50.85786936759984, "o", "a"] +[50.88786936759984, "o", " "] +[50.91786936759984, "o", "\""] +[50.94786936759984, "o", "S"] +[50.977869367599844, "o", "E"] +[51.007869367599845, "o", "L"] +[51.037869367599846, "o", "E"] +[51.06786936759985, "o", "C"] +[51.09786936759985, "o", "T"] +[51.12786936759985, "o", " "] +[51.15786936759985, "o", "*"] +[51.18786936759985, "o", " "] +[51.21786936759985, "o", "F"] +[51.247869367599854, "o", "R"] +[51.277869367599855, "o", "O"] +[51.30786936759986, "o", "M"] +[51.33786936759986, "o", " "] +[51.36786936759986, "o", "c"] +[51.39786936759986, "o", "u"] +[51.42786936759986, "o", "s"] +[51.45786936759986, "o", "t"] +[51.48786936759986, "o", "o"] +[51.517869367599864, "o", "m"] +[51.547869367599866, "o", "e"] +[51.57786936759987, "o", "r"] +[51.60786936759987, "o", "s"] +[51.63786936759987, "o", "\""] +[51.66786936759987, "o", "\r\n"] +[51.69786936759987, "o", "\u001b[0m"] +[51.72786936759987, "o", "\r\n"] +[51.95112929344216, "o", "Between 000000000000 and the current working copy: \r\n"] +[51.95114431381264, "o", "customers: table added\r\norders: table added\r\n"] +[52.19130787849465, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[52.22130787849465, "o", "\u001b[1m"] +[52.25130787849465, "o", "\u001b[36m"] +[52.28130787849465, "o", "\u001b[91m"] +[52.31130787849465, "o", "$"] +[52.34130787849465, "o", " "] +[52.371307878494655, "o", "\u001b[0m"] +[57.401307878494656, "o", "\u001b[H"] +[57.43130787849466, "o", "\u001b[J"] +[57.46130787849466, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit the data as an initial image"] +[57.49130787849466, "o", "\r\n"] +[57.52130787849466, "o", "$"] +[57.55130787849466, "o", " "] +[57.58130787849466, "o", "s"] +[57.611307878494664, "o", "g"] +[57.641307878494665, "o", "r"] +[57.671307878494666, "o", " "] +[57.70130787849467, "o", "c"] +[57.73130787849467, "o", "o"] +[57.76130787849467, "o", "m"] +[57.79130787849467, "o", "m"] +[57.82130787849467, "o", "i"] +[57.85130787849467, "o", "t"] +[57.881307878494674, "o", " "] +[57.911307878494675, "o", "p"] +[57.941307878494676, "o", "r"] +[57.97130787849468, "o", "o"] +[58.00130787849468, "o", "d"] +[58.03130787849468, "o", "u"] +[58.06130787849468, "o", "c"] +[58.09130787849468, "o", "t"] +[58.12130787849468, "o", "i"] +[58.151307878494684, "o", "o"] +[58.181307878494685, "o", "n"] +[58.21130787849469, "o", "_"] +[58.24130787849469, "o", "d"] +[58.27130787849469, "o", "a"] +[58.30130787849469, "o", "t"] +[58.33130787849469, "o", "a"] +[58.36130787849469, "o", "\r\n"] +[58.39130787849469, "o", "$"] +[58.421307878494694, "o", " "] +[58.451307878494696, "o", "s"] +[58.4813078784947, "o", "g"] +[58.5113078784947, "o", "r"] +[58.5413078784947, "o", " "] +[58.5713078784947, "o", "t"] +[58.6013078784947, "o", "a"] +[58.6313078784947, "o", "g"] +[58.6613078784947, "o", " "] +[58.691307878494705, "o", "p"] +[58.721307878494706, "o", "r"] +[58.75130787849471, "o", "o"] +[58.78130787849471, "o", "d"] +[58.81130787849471, "o", "u"] +[58.84130787849471, "o", "c"] +[58.87130787849471, "o", "t"] +[58.90130787849471, "o", "i"] +[58.931307878494714, "o", "o"] +[58.961307878494715, "o", "n"] +[58.991307878494716, "o", "_"] +[59.02130787849472, "o", "d"] +[59.05130787849472, "o", "a"] +[59.08130787849472, "o", "t"] +[59.11130787849472, "o", "a"] +[59.14130787849472, "o", " "] +[59.17130787849472, "o", "i"] +[59.201307878494724, "o", "n"] +[59.231307878494725, "o", "i"] +[59.261307878494726, "o", "t"] +[59.29130787849473, "o", "i"] +[59.32130787849473, "o", "a"] +[59.35130787849473, "o", "l"] +[59.38130787849473, "o", "_"] +[59.41130787849473, "o", "s"] +[59.44130787849473, "o", "n"] +[59.471307878494734, "o", "a"] +[59.501307878494735, "o", "p"] +[59.53130787849474, "o", "s"] +[59.56130787849474, "o", "h"] +[59.59130787849474, "o", "o"] +[59.62130787849474, "o", "t"] +[59.65130787849474, "o", "\r\n"] +[59.68130787849474, "o", "$"] +[59.71130787849474, "o", " "] +[59.741307878494744, "o", "s"] +[59.771307878494746, "o", "g"] +[59.80130787849475, "o", "r"] +[59.83130787849475, "o", " "] +[59.86130787849475, "o", "s"] +[59.89130787849475, "o", "h"] +[59.92130787849475, "o", "o"] +[59.95130787849475, "o", "w"] +[59.98130787849475, "o", " "] +[60.011307878494755, "o", "p"] +[60.041307878494756, "o", "r"] +[60.07130787849476, "o", "o"] +[60.10130787849476, "o", "d"] +[60.13130787849476, "o", "u"] +[60.16130787849476, "o", "c"] +[60.19130787849476, "o", "t"] +[60.22130787849476, "o", "i"] +[60.251307878494764, "o", "o"] +[60.281307878494765, "o", "n"] +[60.311307878494766, "o", "_"] +[60.34130787849477, "o", "d"] +[60.37130787849477, "o", "a"] +[60.40130787849477, "o", "t"] +[60.43130787849477, "o", "a"] +[60.46130787849477, "o", ":"] +[60.49130787849477, "o", "i"] +[60.521307878494774, "o", "n"] +[60.551307878494775, "o", "i"] +[60.581307878494776, "o", "t"] +[60.61130787849478, "o", "i"] +[60.64130787849478, "o", "a"] +[60.67130787849478, "o", "l"] +[60.70130787849478, "o", "_"] +[60.73130787849478, "o", "s"] +[60.76130787849478, "o", "n"] +[60.791307878494784, "o", "a"] +[60.821307878494785, "o", "p"] +[60.85130787849479, "o", "s"] +[60.88130787849479, "o", "h"] +[60.91130787849479, "o", "o"] +[60.94130787849479, "o", "t"] +[60.97130787849479, "o", "\r\n"] +[61.00130787849479, "o", "\u001b[0m"] +[61.03130787849479, "o", "\r\n"] +[61.248181524277264, "o", "Committing production_data...\r\n"] +[61.271488847733075, "o", "Processing table customers\r\n"] +[61.353145542145306, "o", "Processing table orders\r\n"] +[61.3820044422155, "o", "Committed production_data as cf2dc82e68ac.\r\n"] +[61.59491509437614, "o", "Tagged production_data:cf2dc82e68acd4d6bbc56c11c5e5687aab951e61ece5a7aafbb2f9de882590c7 with initial_snapshot.\r\n"] +[61.81251806259208, "o", "Image production_data:cf2dc82e68acd4d6bbc56c11c5e5687aab951e61ece5a7aafbb2f9de882590c7\r\n"] +[61.812546911240155, "o", "\r\nCreated at 2021-03-17T18:11:26.772359\r\n"] +[61.81429714202934, "o", "Size: 1.11 KiB\r\nParent: 0000000000000000000000000000000000000000000000000000000000000000\r\n"] +[61.81430953979545, "o", "\r\nTables:\r\n"] +[61.81519359588676, "o", " customers\r\n"] +[61.81529802322441, "o", " orders\r\n"] +[61.84529802322441, "o", "\u001b[1m"] +[61.87529802322441, "o", "\u001b[36m"] +[61.90529802322441, "o", "\u001b[91m"] +[61.93529802322441, "o", "$"] +[61.96529802322441, "o", " "] +[61.995298023224414, "o", "\u001b[0m"] +[67.02529802322442, "o", "\u001b[H"] +[67.05529802322442, "o", "\u001b[J"] +[67.08529802322442, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make a change on the origin database"] +[67.11529802322443, "o", "\r\n"] +[67.14529802322443, "o", "$"] +[67.17529802322443, "o", " "] +[67.20529802322443, "o", "s"] +[67.23529802322443, "o", "g"] +[67.26529802322443, "o", "r"] +[67.29529802322443, "o", " "] +[67.32529802322443, "o", "s"] +[67.35529802322444, "o", "q"] +[67.38529802322444, "o", "l"] +[67.41529802322444, "o", " "] +[67.44529802322444, "o", "-"] +[67.47529802322444, "o", "r"] +[67.50529802322444, "o", " "] +[67.53529802322444, "o", "o"] +[67.56529802322444, "o", "r"] +[67.59529802322444, "o", "i"] +[67.62529802322445, "o", "g"] +[67.65529802322445, "o", "i"] +[67.68529802322445, "o", "n"] +[67.71529802322445, "o", " "] +[67.74529802322445, "o", "-"] +[67.77529802322445, "o", "s"] +[67.80529802322445, "o", " "] +[67.83529802322445, "o", "p"] +[67.86529802322445, "o", "r"] +[67.89529802322446, "o", "o"] +[67.92529802322446, "o", "d"] +[67.95529802322446, "o", "u"] +[67.98529802322446, "o", "c"] +[68.01529802322446, "o", "t"] +[68.04529802322446, "o", "i"] +[68.07529802322446, "o", "o"] +[68.10529802322446, "o", "n"] +[68.13529802322446, "o", "_"] +[68.16529802322447, "o", "d"] +[68.19529802322447, "o", "a"] +[68.22529802322447, "o", "t"] +[68.25529802322447, "o", "a"] +[68.28529802322447, "o", " "] +[68.31529802322447, "o", "\""] +[68.34529802322447, "o", "U"] +[68.37529802322447, "o", "P"] +[68.40529802322447, "o", "D"] +[68.43529802322448, "o", "A"] +[68.46529802322448, "o", "T"] +[68.49529802322448, "o", "E"] +[68.52529802322448, "o", " "] +[68.55529802322448, "o", "o"] +[68.58529802322448, "o", "r"] +[68.61529802322448, "o", "d"] +[68.64529802322448, "o", "e"] +[68.67529802322449, "o", "r"] +[68.70529802322449, "o", "s"] +[68.73529802322449, "o", " "] +[68.76529802322449, "o", "\\"] +[68.79529802322449, "o", "\r\n "] +[68.82529802322449, "o", "S"] +[68.85529802322449, "o", "E"] +[68.8852980232245, "o", "T"] +[68.9152980232245, "o", " "] +[68.9452980232245, "o", "q"] +[68.9752980232245, "o", "u"] +[69.0052980232245, "o", "a"] +[69.0352980232245, "o", "n"] +[69.0652980232245, "o", "t"] +[69.0952980232245, "o", "i"] +[69.1252980232245, "o", "t"] +[69.1552980232245, "o", "y"] +[69.1852980232245, "o", " "] +[69.2152980232245, "o", "="] +[69.2452980232245, "o", " "] +[69.27529802322451, "o", "q"] +[69.30529802322451, "o", "u"] +[69.33529802322451, "o", "a"] +[69.36529802322451, "o", "n"] +[69.39529802322451, "o", "t"] +[69.42529802322451, "o", "i"] +[69.45529802322451, "o", "t"] +[69.48529802322452, "o", "y"] +[69.51529802322452, "o", " "] +[69.54529802322452, "o", "+"] +[69.57529802322452, "o", " "] +[69.60529802322452, "o", "5"] +[69.63529802322452, "o", " "] +[69.66529802322452, "o", "W"] +[69.69529802322452, "o", "H"] +[69.72529802322452, "o", "E"] +[69.75529802322453, "o", "R"] +[69.78529802322453, "o", "E"] +[69.81529802322453, "o", " "] +[69.84529802322453, "o", "i"] +[69.87529802322453, "o", "d"] +[69.90529802322453, "o", " "] +[69.93529802322453, "o", "="] +[69.96529802322453, "o", " "] +[69.99529802322454, "o", "2"] +[70.02529802322454, "o", ";"] +[70.05529802322454, "o", " "] +[70.08529802322454, "o", "\\"] +[70.11529802322454, "o", "\r\n "] +[70.14529802322454, "o", "D"] +[70.17529802322454, "o", "E"] +[70.20529802322454, "o", "L"] +[70.23529802322454, "o", "E"] +[70.26529802322455, "o", "T"] +[70.29529802322455, "o", "E"] +[70.32529802322455, "o", " "] +[70.35529802322455, "o", "F"] +[70.38529802322455, "o", "R"] +[70.41529802322455, "o", "O"] +[70.44529802322455, "o", "M"] +[70.47529802322455, "o", " "] +[70.50529802322455, "o", "o"] +[70.53529802322456, "o", "r"] +[70.56529802322456, "o", "d"] +[70.59529802322456, "o", "e"] +[70.62529802322456, "o", "r"] +[70.65529802322456, "o", "s"] +[70.68529802322456, "o", " "] +[70.71529802322456, "o", "W"] +[70.74529802322456, "o", "H"] +[70.77529802322456, "o", "E"] +[70.80529802322457, "o", "R"] +[70.83529802322457, "o", "E"] +[70.86529802322457, "o", " "] +[70.89529802322457, "o", "i"] +[70.92529802322457, "o", "d"] +[70.95529802322457, "o", " "] +[70.98529802322457, "o", "="] +[71.01529802322457, "o", " "] +[71.04529802322457, "o", "5"] +[71.07529802322458, "o", ";"] +[71.10529802322458, "o", " "] +[71.13529802322458, "o", "\\"] +[71.16529802322458, "o", "\r\n "] +[71.19529802322458, "o", "I"] +[71.22529802322458, "o", "N"] +[71.25529802322458, "o", "S"] +[71.28529802322458, "o", "E"] +[71.31529802322459, "o", "R"] +[71.34529802322459, "o", "T"] +[71.37529802322459, "o", " "] +[71.40529802322459, "o", "I"] +[71.43529802322459, "o", "N"] +[71.46529802322459, "o", "T"] +[71.49529802322459, "o", "O"] +[71.5252980232246, "o", " "] +[71.5552980232246, "o", "c"] +[71.5852980232246, "o", "u"] +[71.6152980232246, "o", "s"] +[71.6452980232246, "o", "t"] +[71.6752980232246, "o", "o"] +[71.7052980232246, "o", "m"] +[71.7352980232246, "o", "e"] +[71.7652980232246, "o", "r"] +[71.7952980232246, "o", "s"] +[71.8252980232246, "o", " "] +[71.8552980232246, "o", "("] +[71.8852980232246, "o", "n"] +[71.91529802322461, "o", "a"] +[71.94529802322461, "o", "m"] +[71.97529802322461, "o", "e"] +[72.00529802322461, "o", ","] +[72.03529802322461, "o", " "] +[72.06529802322461, "o", "r"] +[72.09529802322461, "o", "e"] +[72.12529802322462, "o", "g"] +[72.15529802322462, "o", "i"] +[72.18529802322462, "o", "s"] +[72.21529802322462, "o", "t"] +[72.24529802322462, "o", "r"] +[72.27529802322462, "o", "a"] +[72.30529802322462, "o", "t"] +[72.33529802322462, "o", "i"] +[72.36529802322463, "o", "o"] +[72.39529802322463, "o", "n"] +[72.42529802322463, "o", "_"] +[72.45529802322463, "o", "t"] +[72.48529802322463, "o", "i"] +[72.51529802322463, "o", "m"] +[72.54529802322463, "o", "e"] +[72.57529802322463, "o", ")"] +[72.60529802322463, "o", " "] +[72.63529802322464, "o", "V"] +[72.66529802322464, "o", "A"] +[72.69529802322464, "o", "L"] +[72.72529802322464, "o", "U"] +[72.75529802322464, "o", "E"] +[72.78529802322464, "o", "S"] +[72.81529802322464, "o", " "] +[72.84529802322464, "o", "\\"] +[72.87529802322464, "o", "\r\n "] +[72.90529802322465, "o", "("] +[72.93529802322465, "o", "'"] +[72.96529802322465, "o", "J"] +[72.99529802322465, "o", "a"] +[73.02529802322465, "o", "c"] +[73.05529802322465, "o", "k"] +[73.08529802322465, "o", " "] +[73.11529802322465, "o", "S"] +[73.14529802322465, "o", "a"] +[73.17529802322466, "o", "m"] +[73.20529802322466, "o", "p"] +[73.23529802322466, "o", "l"] +[73.26529802322466, "o", "e"] +[73.29529802322466, "o", "'"] +[73.32529802322466, "o", ","] +[73.35529802322466, "o", " "] +[73.38529802322466, "o", "'"] +[73.41529802322466, "o", "2"] +[73.44529802322467, "o", "0"] +[73.47529802322467, "o", "2"] +[73.50529802322467, "o", "0"] +[73.53529802322467, "o", "-"] +[73.56529802322467, "o", "0"] +[73.59529802322467, "o", "4"] +[73.62529802322467, "o", "-"] +[73.65529802322467, "o", "2"] +[73.68529802322468, "o", "0"] +[73.71529802322468, "o", " "] +[73.74529802322468, "o", "1"] +[73.77529802322468, "o", "4"] +[73.80529802322468, "o", ":"] +[73.83529802322468, "o", "0"] +[73.86529802322468, "o", "3"] +[73.89529802322468, "o", ":"] +[73.92529802322468, "o", "4"] +[73.95529802322469, "o", "8"] +[73.98529802322469, "o", "'"] +[74.01529802322469, "o", ")"] +[74.04529802322469, "o", ";"] +[74.07529802322469, "o", " "] +[74.10529802322469, "o", "\\"] +[74.13529802322469, "o", "\r\n "] +[74.1652980232247, "o", "I"] +[74.1952980232247, "o", "N"] +[74.2252980232247, "o", "S"] +[74.2552980232247, "o", "E"] +[74.2852980232247, "o", "R"] +[74.3152980232247, "o", "T"] +[74.3452980232247, "o", " "] +[74.3752980232247, "o", "I"] +[74.4052980232247, "o", "N"] +[74.4352980232247, "o", "T"] +[74.4652980232247, "o", "O"] +[74.4952980232247, "o", " "] +[74.5252980232247, "o", "o"] +[74.55529802322471, "o", "r"] +[74.58529802322471, "o", "d"] +[74.61529802322471, "o", "e"] +[74.64529802322471, "o", "r"] +[74.67529802322471, "o", "s"] +[74.70529802322471, "o", " "] +[74.73529802322471, "o", "("] +[74.76529802322472, "o", "c"] +[74.79529802322472, "o", "u"] +[74.82529802322472, "o", "s"] +[74.85529802322472, "o", "t"] +[74.88529802322472, "o", "o"] +[74.91529802322472, "o", "m"] +[74.94529802322472, "o", "e"] +[74.97529802322472, "o", "r"] +[75.00529802322473, "o", "_"] +[75.03529802322473, "o", "i"] +[75.06529802322473, "o", "d"] +[75.09529802322473, "o", ","] +[75.12529802322473, "o", " "] +[75.15529802322473, "o", "q"] +[75.18529802322473, "o", "u"] +[75.21529802322473, "o", "a"] +[75.24529802322473, "o", "n"] +[75.27529802322474, "o", "t"] +[75.30529802322474, "o", "i"] +[75.33529802322474, "o", "t"] +[75.36529802322474, "o", "y"] +[75.39529802322474, "o", ","] +[75.42529802322474, "o", " "] +[75.45529802322474, "o", "i"] +[75.48529802322474, "o", "t"] +[75.51529802322474, "o", "e"] +[75.54529802322475, "o", "m"] +[75.57529802322475, "o", "_"] +[75.60529802322475, "o", "n"] +[75.63529802322475, "o", "a"] +[75.66529802322475, "o", "m"] +[75.69529802322475, "o", "e"] +[75.72529802322475, "o", ","] +[75.75529802322475, "o", " "] +[75.78529802322475, "o", "p"] +[75.81529802322476, "o", "l"] +[75.84529802322476, "o", "a"] +[75.87529802322476, "o", "c"] +[75.90529802322476, "o", "e"] +[75.93529802322476, "o", "d"] +[75.96529802322476, "o", "_"] +[75.99529802322476, "o", "t"] +[76.02529802322476, "o", "i"] +[76.05529802322476, "o", "m"] +[76.08529802322477, "o", "e"] +[76.11529802322477, "o", ")"] +[76.14529802322477, "o", " "] +[76.17529802322477, "o", "V"] +[76.20529802322477, "o", "A"] +[76.23529802322477, "o", "L"] +[76.26529802322477, "o", "U"] +[76.29529802322477, "o", "E"] +[76.32529802322478, "o", "S"] +[76.35529802322478, "o", " "] +[76.38529802322478, "o", "\\"] +[76.41529802322478, "o", "\r\n "] +[76.44529802322478, "o", "("] +[76.47529802322478, "o", "4"] +[76.50529802322478, "o", ","] +[76.53529802322478, "o", " "] +[76.56529802322478, "o", "5"] +[76.59529802322479, "o", ","] +[76.62529802322479, "o", " "] +[76.65529802322479, "o", "'"] +[76.68529802322479, "o", "T"] +[76.71529802322479, "o", "o"] +[76.74529802322479, "o", "i"] +[76.77529802322479, "o", "l"] +[76.8052980232248, "o", "e"] +[76.8352980232248, "o", "t"] +[76.8652980232248, "o", " "] +[76.8952980232248, "o", "R"] +[76.9252980232248, "o", "o"] +[76.9552980232248, "o", "l"] +[76.9852980232248, "o", "l"] +[77.0152980232248, "o", "'"] +[77.0452980232248, "o", ","] +[77.0752980232248, "o", " "] +[77.1052980232248, "o", "'"] +[77.1352980232248, "o", "2"] +[77.1652980232248, "o", "0"] +[77.19529802322481, "o", "2"] +[77.22529802322481, "o", "0"] +[77.25529802322481, "o", "-"] +[77.28529802322481, "o", "0"] +[77.31529802322481, "o", "4"] +[77.34529802322481, "o", "-"] +[77.37529802322481, "o", "2"] +[77.40529802322482, "o", "0"] +[77.43529802322482, "o", " "] +[77.46529802322482, "o", "1"] +[77.49529802322482, "o", "4"] +[77.52529802322482, "o", ":"] +[77.55529802322482, "o", "0"] +[77.58529802322482, "o", "5"] +[77.61529802322482, "o", ":"] +[77.64529802322483, "o", "1"] +[77.67529802322483, "o", "7"] +[77.70529802322483, "o", "'"] +[77.73529802322483, "o", ")"] +[77.76529802322483, "o", ";"] +[77.79529802322483, "o", "\""] +[77.82529802322483, "o", "\r\n"] +[77.85529802322483, "o", "\u001b[0m"] +[77.88529802322483, "o", "\r\n"] +[77.91529802322484, "o", "\u001b[1m"] +[77.94529802322484, "o", "\u001b[36m"] +[77.97529802322484, "o", "\u001b[91m"] +[78.00529802322484, "o", "$"] +[78.03529802322484, "o", " "] +[78.06529802322484, "o", "\u001b[0m"] +[83.09529802322484, "o", "\u001b[H"] +[83.12529802322484, "o", "\u001b[J"] +[83.15529802322484, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The change propagates to the subscriber and gets"] +[83.18529802322485, "o", "\r\n"] +[83.21529802322485, "o", "$ # captured by Splitgraph's change tracking\r\n"] +[83.24529802322485, "o", "$"] +[83.27529802322485, "o", " "] +[83.30529802322485, "o", "s"] +[83.33529802322485, "o", "g"] +[83.36529802322485, "o", "r"] +[83.39529802322485, "o", " "] +[83.42529802322485, "o", "d"] +[83.45529802322486, "o", "i"] +[83.48529802322486, "o", "f"] +[83.51529802322486, "o", "f"] +[83.54529802322486, "o", " "] +[83.57529802322486, "o", "-"] +[83.60529802322486, "o", "v"] +[83.63529802322486, "o", " "] +[83.66529802322486, "o", "p"] +[83.69529802322486, "o", "r"] +[83.72529802322487, "o", "o"] +[83.75529802322487, "o", "d"] +[83.78529802322487, "o", "u"] +[83.81529802322487, "o", "c"] +[83.84529802322487, "o", "t"] +[83.87529802322487, "o", "i"] +[83.90529802322487, "o", "o"] +[83.93529802322487, "o", "n"] +[83.96529802322488, "o", "_"] +[83.99529802322488, "o", "d"] +[84.02529802322488, "o", "a"] +[84.05529802322488, "o", "t"] +[84.08529802322488, "o", "a"] +[84.11529802322488, "o", "\r\n"] +[84.14529802322488, "o", "\u001b[0m"] +[84.17529802322488, "o", "\r\n"] +[84.54727034568887, "o", "Between cf2dc82e68ac and the current working copy: \r\n"] +[84.54733543396097, "o", "customers: added 1 row.\r\n+ (4, 'Jack Sample', datetime.datetime(2020, 4, 20, 14, 3, 48))\r\n"] +[84.5480926513682, "o", "orders: added 2 rows, removed 2 rows.\r\n- (2, 1, 20, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n- (5, 1, 50, 'Surgical Mask', datetime.datetime(2020, 4, 2, 11, 29, 42))\r\n+ (2, 1, 25, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n+ (6, 4, 5, 'Toilet Roll', datetime.datetime(2020, 4, 20, 14, 5, 17))\r\n"] +[84.5780926513682, "o", "\u001b[1m"] +[84.6080926513682, "o", "\u001b[36m"] +[84.6380926513682, "o", "\u001b[91m"] +[84.6680926513682, "o", "$"] +[84.6980926513682, "o", " "] +[84.7280926513682, "o", "\u001b[0m"] +[89.7580926513682, "o", "\u001b[H"] +[89.7880926513682, "o", "\u001b[J"] +[89.8180926513682, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Committing creates a new image, snapshotting the state."] +[89.8480926513682, "o", "\r\n"] +[89.8780926513682, "o", "$"] +[89.90809265136821, "o", " "] +[89.93809265136821, "o", "s"] +[89.96809265136821, "o", "g"] +[89.99809265136821, "o", "r"] +[90.02809265136821, "o", " "] +[90.05809265136821, "o", "c"] +[90.08809265136821, "o", "o"] +[90.11809265136822, "o", "m"] +[90.14809265136822, "o", "m"] +[90.17809265136822, "o", "i"] +[90.20809265136822, "o", "t"] +[90.23809265136822, "o", " "] +[90.26809265136822, "o", "p"] +[90.29809265136822, "o", "r"] +[90.32809265136822, "o", "o"] +[90.35809265136822, "o", "d"] +[90.38809265136823, "o", "u"] +[90.41809265136823, "o", "c"] +[90.44809265136823, "o", "t"] +[90.47809265136823, "o", "i"] +[90.50809265136823, "o", "o"] +[90.53809265136823, "o", "n"] +[90.56809265136823, "o", "_"] +[90.59809265136823, "o", "d"] +[90.62809265136823, "o", "a"] +[90.65809265136824, "o", "t"] +[90.68809265136824, "o", "a"] +[90.71809265136824, "o", "\r\n"] +[90.74809265136824, "o", "$"] +[90.77809265136824, "o", " "] +[90.80809265136824, "o", "s"] +[90.83809265136824, "o", "g"] +[90.86809265136824, "o", "r"] +[90.89809265136824, "o", " "] +[90.92809265136825, "o", "t"] +[90.95809265136825, "o", "a"] +[90.98809265136825, "o", "g"] +[91.01809265136825, "o", " "] +[91.04809265136825, "o", "p"] +[91.07809265136825, "o", "r"] +[91.10809265136825, "o", "o"] +[91.13809265136825, "o", "d"] +[91.16809265136826, "o", "u"] +[91.19809265136826, "o", "c"] +[91.22809265136826, "o", "t"] +[91.25809265136826, "o", "i"] +[91.28809265136826, "o", "o"] +[91.31809265136826, "o", "n"] +[91.34809265136826, "o", "_"] +[91.37809265136826, "o", "d"] +[91.40809265136826, "o", "a"] +[91.43809265136827, "o", "t"] +[91.46809265136827, "o", "a"] +[91.49809265136827, "o", " "] +[91.52809265136827, "o", "c"] +[91.55809265136827, "o", "u"] +[91.58809265136827, "o", "r"] +[91.61809265136827, "o", "r"] +[91.64809265136827, "o", "e"] +[91.67809265136827, "o", "n"] +[91.70809265136828, "o", "t"] +[91.73809265136828, "o", "_"] +[91.76809265136828, "o", "s"] +[91.79809265136828, "o", "n"] +[91.82809265136828, "o", "a"] +[91.85809265136828, "o", "p"] +[91.88809265136828, "o", "s"] +[91.91809265136828, "o", "h"] +[91.94809265136828, "o", "o"] +[91.97809265136829, "o", "t"] +[92.00809265136829, "o", "\r\n"] +[92.03809265136829, "o", "$"] +[92.06809265136829, "o", " "] +[92.09809265136829, "o", "s"] +[92.12809265136829, "o", "g"] +[92.15809265136829, "o", "r"] +[92.1880926513683, "o", " "] +[92.2180926513683, "o", "s"] +[92.2480926513683, "o", "h"] +[92.2780926513683, "o", "o"] +[92.3080926513683, "o", "w"] +[92.3380926513683, "o", " "] +[92.3680926513683, "o", "p"] +[92.3980926513683, "o", "r"] +[92.4280926513683, "o", "o"] +[92.4580926513683, "o", "d"] +[92.4880926513683, "o", "u"] +[92.5180926513683, "o", "c"] +[92.54809265136831, "o", "t"] +[92.57809265136831, "o", "i"] +[92.60809265136831, "o", "o"] +[92.63809265136831, "o", "n"] +[92.66809265136831, "o", "_"] +[92.69809265136831, "o", "d"] +[92.72809265136831, "o", "a"] +[92.75809265136832, "o", "t"] +[92.78809265136832, "o", "a"] +[92.81809265136832, "o", ":"] +[92.84809265136832, "o", "c"] +[92.87809265136832, "o", "u"] +[92.90809265136832, "o", "r"] +[92.93809265136832, "o", "r"] +[92.96809265136832, "o", "e"] +[92.99809265136832, "o", "n"] +[93.02809265136833, "o", "t"] +[93.05809265136833, "o", "_"] +[93.08809265136833, "o", "s"] +[93.11809265136833, "o", "n"] +[93.14809265136833, "o", "a"] +[93.17809265136833, "o", "p"] +[93.20809265136833, "o", "s"] +[93.23809265136833, "o", "h"] +[93.26809265136833, "o", "o"] +[93.29809265136834, "o", "t"] +[93.32809265136834, "o", "\r\n"] +[93.35809265136834, "o", "\u001b[0m"] +[93.38809265136834, "o", "\r\n"] +[93.60498250961419, "o", "Committing production_data...\r\n"] +[93.64328779220696, "o", "Committed production_data as 860b3a5b5376.\r\n"] +[93.85612977981683, "o", "Tagged production_data:860b3a5b5376f6b1a9cb3b7c5e71f6a6f82d2442af8b0cd2ac3077f13f80ceb4 with current_snapshot.\r\n"] +[94.07230366706963, "o", "Image production_data:860b3a5b5376f6b1a9cb3b7c5e71f6a6f82d2442af8b0cd2ac3077f13f80ceb4\r\n\r\n"] +[94.07232727050896, "o", "Created at 2021-03-17T18:11:28.931033\r\n"] +[94.0739582920086, "o", "Size: 1.11 KiB\r\n"] +[94.07397665023919, "o", "Parent: cf2dc82e68acd4d6bbc56c11c5e5687aab951e61ece5a7aafbb2f9de882590c7\r\n\r\nTables:\r\n"] +[94.07465733528252, "o", " customers\r\n"] +[94.0747820281994, "o", " orders\r\n"] +[94.1047820281994, "o", "\u001b[1m"] +[94.1347820281994, "o", "\u001b[36m"] +[94.1647820281994, "o", "\u001b[91m"] +[94.1947820281994, "o", "$"] +[94.2247820281994, "o", " "] +[94.2547820281994, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.10/postgrest.cast b/content/casts/versioned/archive/v0.2.10/postgrest.cast new file mode 100644 index 00000000..6f97a281 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.10/postgrest.cast @@ -0,0 +1,1202 @@ +{"version": 2, "width": 100, "height": 16, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1616004692, "metadata": {"tss": [{"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 0.06}, {"h": "Also create another image so we can switch between them.", "ts": 12.808899307250988}, {"h": "Check out the original version of the dataset and look at the API spec for it.", "ts": 25.393297986984336}, {"h": "Get all rows in the table", "ts": 37.20990094184903}, {"h": "Run a query selecting one row", "ts": 43.889846735000944}, {"h": "Run the query against the new version of the dataset.", "ts": 52.5663157367711}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "s"] +[0.24, "o", "g"] +[0.27, "o", "r"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "i"] +[0.3600000000000001, "o", "n"] +[0.3900000000000001, "o", "i"] +[0.42000000000000015, "o", "t"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "d"] +[0.5100000000000002, "o", "e"] +[0.5400000000000003, "o", "m"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "/"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "\r\n"] +[0.8700000000000006, "o", "$"] +[0.9000000000000006, "o", " "] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "g"] +[0.9900000000000007, "o", "r"] +[1.0200000000000007, "o", " "] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "s"] +[1.1100000000000008, "o", "v"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "i"] +[1.2000000000000008, "o", "m"] +[1.2300000000000009, "o", "p"] +[1.260000000000001, "o", "o"] +[1.290000000000001, "o", "r"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", " "] +[1.380000000000001, "o", "-"] +[1.410000000000001, "o", "f"] +[1.440000000000001, "o", " "] +[1.470000000000001, "o", "."] +[1.500000000000001, "o", "."] +[1.5300000000000011, "o", "/"] +[1.5600000000000012, "o", "i"] +[1.5900000000000012, "o", "m"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "o"] +[1.6800000000000013, "o", "r"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "-"] +[1.7700000000000014, "o", "f"] +[1.8000000000000014, "o", "r"] +[1.8300000000000014, "o", "o"] +[1.8600000000000014, "o", "m"] +[1.8900000000000015, "o", "-"] +[1.9200000000000015, "o", "c"] +[1.9500000000000015, "o", "s"] +[1.9800000000000015, "o", "v"] +[2.0100000000000016, "o", "/"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "d"] +[2.100000000000001, "o", "u"] +[2.130000000000001, "o", "-"] +[2.1600000000000006, "o", "w"] +[2.1900000000000004, "o", "e"] +[2.22, "o", "a"] +[2.25, "o", "t"] +[2.28, "o", "h"] +[2.3099999999999996, "o", "e"] +[2.3399999999999994, "o", "r"] +[2.369999999999999, "o", "-"] +[2.399999999999999, "o", "h"] +[2.429999999999999, "o", "i"] +[2.4599999999999986, "o", "s"] +[2.4899999999999984, "o", "t"] +[2.5199999999999982, "o", "o"] +[2.549999999999998, "o", "r"] +[2.579999999999998, "o", "y"] +[2.6099999999999977, "o", "."] +[2.6399999999999975, "o", "c"] +[2.6699999999999973, "o", "s"] +[2.699999999999997, "o", "v"] +[2.729999999999997, "o", " "] +[2.7599999999999967, "o", "\\"] +[2.7899999999999965, "o", "\r\n "] +[2.8199999999999963, "o", "-"] +[2.849999999999996, "o", "k"] +[2.879999999999996, "o", " "] +[2.9099999999999957, "o", "d"] +[2.9399999999999955, "o", "a"] +[2.9699999999999953, "o", "t"] +[2.999999999999995, "o", "e"] +[3.029999999999995, "o", " "] +[3.0599999999999947, "o", "\\"] +[3.0899999999999945, "o", "\r\n "] +[3.1199999999999943, "o", "-"] +[3.149999999999994, "o", "t"] +[3.179999999999994, "o", " "] +[3.2099999999999937, "o", "d"] +[3.2399999999999936, "o", "a"] +[3.2699999999999934, "o", "t"] +[3.299999999999993, "o", "e"] +[3.329999999999993, "o", " "] +[3.3599999999999928, "o", "t"] +[3.3899999999999926, "o", "i"] +[3.4199999999999924, "o", "m"] +[3.449999999999992, "o", "e"] +[3.479999999999992, "o", "s"] +[3.509999999999992, "o", "t"] +[3.5399999999999916, "o", "a"] +[3.5699999999999914, "o", "m"] +[3.599999999999991, "o", "p"] +[3.629999999999991, "o", " "] +[3.659999999999991, "o", "\\"] +[3.6899999999999906, "o", "\r\n "] +[3.7199999999999904, "o", "-"] +[3.7499999999999902, "o", "-"] +[3.77999999999999, "o", "s"] +[3.80999999999999, "o", "e"] +[3.8399999999999896, "o", "p"] +[3.8699999999999894, "o", "a"] +[3.8999999999999893, "o", "r"] +[3.929999999999989, "o", "a"] +[3.959999999999989, "o", "t"] +[3.9899999999999887, "o", "o"] +[4.019999999999989, "o", "r"] +[4.049999999999989, "o", " "] +[4.079999999999989, "o", "\""] +[4.10999999999999, "o", ";"] +[4.13999999999999, "o", "\""] +[4.16999999999999, "o", " "] +[4.19999999999999, "o", "\\"] +[4.229999999999991, "o", "\r\n "] +[4.259999999999991, "o", "d"] +[4.289999999999991, "o", "e"] +[4.319999999999991, "o", "m"] +[4.349999999999992, "o", "o"] +[4.379999999999992, "o", "/"] +[4.409999999999992, "o", "w"] +[4.439999999999992, "o", "e"] +[4.469999999999993, "o", "a"] +[4.499999999999993, "o", "t"] +[4.529999999999993, "o", "h"] +[4.559999999999993, "o", "e"] +[4.589999999999994, "o", "r"] +[4.619999999999994, "o", " "] +[4.649999999999994, "o", "r"] +[4.679999999999994, "o", "d"] +[4.709999999999995, "o", "u"] +[4.739999999999995, "o", "\r\n"] +[4.769999999999995, "o", "$"] +[4.799999999999995, "o", " "] +[4.829999999999996, "o", "s"] +[4.859999999999996, "o", "g"] +[4.889999999999996, "o", "r"] +[4.919999999999996, "o", " "] +[4.949999999999997, "o", "c"] +[4.979999999999997, "o", "o"] +[5.009999999999997, "o", "m"] +[5.039999999999997, "o", "m"] +[5.069999999999998, "o", "i"] +[5.099999999999998, "o", "t"] +[5.129999999999998, "o", " "] +[5.159999999999998, "o", "d"] +[5.189999999999999, "o", "e"] +[5.219999999999999, "o", "m"] +[5.249999999999999, "o", "o"] +[5.279999999999999, "o", "/"] +[5.31, "o", "w"] +[5.34, "o", "e"] +[5.37, "o", "a"] +[5.4, "o", "t"] +[5.430000000000001, "o", "h"] +[5.460000000000001, "o", "e"] +[5.490000000000001, "o", "r"] +[5.520000000000001, "o", "\r\n"] +[5.550000000000002, "o", "$"] +[5.580000000000002, "o", " "] +[5.610000000000002, "o", "s"] +[5.640000000000002, "o", "g"] +[5.670000000000003, "o", "r"] +[5.700000000000003, "o", " "] +[5.730000000000003, "o", "t"] +[5.760000000000003, "o", "a"] +[5.790000000000004, "o", "g"] +[5.820000000000004, "o", " "] +[5.850000000000004, "o", "d"] +[5.880000000000004, "o", "e"] +[5.910000000000005, "o", "m"] +[5.940000000000005, "o", "o"] +[5.970000000000005, "o", "/"] +[6.000000000000005, "o", "w"] +[6.030000000000006, "o", "e"] +[6.060000000000006, "o", "a"] +[6.090000000000006, "o", "t"] +[6.120000000000006, "o", "h"] +[6.150000000000007, "o", "e"] +[6.180000000000007, "o", "r"] +[6.210000000000007, "o", " "] +[6.240000000000007, "o", "i"] +[6.270000000000008, "o", "n"] +[6.300000000000008, "o", "i"] +[6.330000000000008, "o", "t"] +[6.360000000000008, "o", "i"] +[6.390000000000009, "o", "a"] +[6.420000000000009, "o", "l"] +[6.450000000000009, "o", "_"] +[6.480000000000009, "o", "d"] +[6.51000000000001, "o", "a"] +[6.54000000000001, "o", "t"] +[6.57000000000001, "o", "a"] +[6.60000000000001, "o", "\r\n"] +[6.6300000000000106, "o", "\u001b[0m"] +[6.660000000000011, "o", "\r\n"] +[6.897098217010509, "o", "Initialized empty repository demo/weather\r\n"] +[7.1119317150116075, "o", "Committing demo/weather...\r\n"] +[7.13437882423402, "o", "Processing table rdu\r\n"] +[7.339793119430553, "o", "Committed demo/weather as 967ba00275f5.\r\n"] +[7.568899307250987, "o", "Tagged demo/weather:967ba00275f56fc2e29054c9c0b80ef7a0cb249bf04a18474a74b5ad32ea15af with initial_data.\r\n"] +[7.598899307250988, "o", "\u001b[1m"] +[7.628899307250988, "o", "\u001b[36m"] +[7.658899307250988, "o", "\u001b[91m"] +[7.688899307250988, "o", "$"] +[7.718899307250989, "o", " "] +[7.748899307250989, "o", "\u001b[0m"] +[12.778899307250988, "o", "\u001b[H"] +[12.808899307250988, "o", "\u001b[J"] +[12.838899307250987, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Also create another image so we can switch between them."] +[12.868899307250986, "o", "\r\n"] +[12.898899307250986, "o", "$"] +[12.928899307250985, "o", " "] +[12.958899307250984, "o", "s"] +[12.988899307250984, "o", "g"] +[13.018899307250983, "o", "r"] +[13.048899307250982, "o", " "] +[13.078899307250982, "o", "s"] +[13.108899307250981, "o", "q"] +[13.13889930725098, "o", "l"] +[13.16889930725098, "o", " "] +[13.19889930725098, "o", "-"] +[13.228899307250979, "o", "s"] +[13.258899307250978, "o", " "] +[13.288899307250977, "o", "d"] +[13.318899307250977, "o", "e"] +[13.348899307250976, "o", "m"] +[13.378899307250975, "o", "o"] +[13.408899307250975, "o", "/"] +[13.438899307250974, "o", "w"] +[13.468899307250974, "o", "e"] +[13.498899307250973, "o", "a"] +[13.528899307250972, "o", "t"] +[13.558899307250972, "o", "h"] +[13.588899307250971, "o", "e"] +[13.61889930725097, "o", "r"] +[13.64889930725097, "o", " "] +[13.678899307250969, "o", "\""] +[13.708899307250968, "o", "U"] +[13.738899307250968, "o", "P"] +[13.768899307250967, "o", "D"] +[13.798899307250966, "o", "A"] +[13.828899307250966, "o", "T"] +[13.858899307250965, "o", "E"] +[13.888899307250965, "o", " "] +[13.918899307250964, "o", "r"] +[13.948899307250963, "o", "d"] +[13.978899307250963, "o", "u"] +[14.008899307250962, "o", " "] +[14.038899307250961, "o", "S"] +[14.06889930725096, "o", "E"] +[14.09889930725096, "o", "T"] +[14.12889930725096, "o", " "] +[14.158899307250959, "o", "p"] +[14.188899307250958, "o", "r"] +[14.218899307250958, "o", "e"] +[14.248899307250957, "o", "c"] +[14.278899307250956, "o", "i"] +[14.308899307250956, "o", "p"] +[14.338899307250955, "o", "i"] +[14.368899307250954, "o", "t"] +[14.398899307250954, "o", "a"] +[14.428899307250953, "o", "t"] +[14.458899307250952, "o", "i"] +[14.488899307250952, "o", "o"] +[14.518899307250951, "o", "n"] +[14.54889930725095, "o", " "] +[14.57889930725095, "o", "="] +[14.60889930725095, "o", " "] +[14.638899307250949, "o", "p"] +[14.668899307250948, "o", "r"] +[14.698899307250947, "o", "e"] +[14.728899307250947, "o", "c"] +[14.758899307250946, "o", "i"] +[14.788899307250945, "o", "p"] +[14.818899307250945, "o", "i"] +[14.848899307250944, "o", "t"] +[14.878899307250943, "o", "a"] +[14.908899307250943, "o", "t"] +[14.938899307250942, "o", "i"] +[14.968899307250942, "o", "o"] +[14.998899307250941, "o", "n"] +[15.02889930725094, "o", " "] +[15.05889930725094, "o", "*"] +[15.088899307250939, "o", " "] +[15.118899307250938, "o", "1"] +[15.148899307250938, "o", "."] +[15.178899307250937, "o", "2"] +[15.208899307250936, "o", " "] +[15.238899307250936, "o", "W"] +[15.268899307250935, "o", "H"] +[15.298899307250934, "o", "E"] +[15.328899307250934, "o", "R"] +[15.358899307250933, "o", "E"] +[15.388899307250933, "o", " "] +[15.418899307250932, "o", "E"] +[15.448899307250931, "o", "X"] +[15.47889930725093, "o", "T"] +[15.50889930725093, "o", "R"] +[15.53889930725093, "o", "A"] +[15.568899307250929, "o", "C"] +[15.598899307250928, "o", "T"] +[15.628899307250927, "o", " "] +[15.658899307250927, "o", "("] +[15.688899307250926, "o", "y"] +[15.718899307250926, "o", "e"] +[15.748899307250925, "o", "a"] +[15.778899307250924, "o", "r"] +[15.808899307250924, "o", " "] +[15.838899307250923, "o", "F"] +[15.868899307250922, "o", "R"] +[15.898899307250922, "o", "O"] +[15.928899307250921, "o", "M"] +[15.95889930725092, "o", " "] +[15.98889930725092, "o", "d"] +[16.01889930725092, "o", "a"] +[16.04889930725092, "o", "t"] +[16.07889930725092, "o", "e"] +[16.108899307250923, "o", ")"] +[16.138899307250924, "o", " "] +[16.168899307250925, "o", "="] +[16.198899307250926, "o", " "] +[16.228899307250927, "o", "2"] +[16.25889930725093, "o", "0"] +[16.28889930725093, "o", "1"] +[16.31889930725093, "o", "2"] +[16.34889930725093, "o", "\""] +[16.378899307250933, "o", "\r\n"] +[16.408899307250934, "o", "$"] +[16.438899307250935, "o", " "] +[16.468899307250936, "o", "s"] +[16.498899307250937, "o", "g"] +[16.52889930725094, "o", "r"] +[16.55889930725094, "o", " "] +[16.58889930725094, "o", "c"] +[16.618899307250942, "o", "o"] +[16.648899307250943, "o", "m"] +[16.678899307250944, "o", "m"] +[16.708899307250945, "o", "i"] +[16.738899307250946, "o", "t"] +[16.768899307250948, "o", " "] +[16.79889930725095, "o", "-"] +[16.82889930725095, "o", "m"] +[16.85889930725095, "o", " "] +[16.888899307250952, "o", "\""] +[16.918899307250953, "o", "R"] +[16.948899307250954, "o", "e"] +[16.978899307250956, "o", "v"] +[17.008899307250957, "o", "i"] +[17.038899307250958, "o", "s"] +[17.06889930725096, "o", "i"] +[17.09889930725096, "o", "o"] +[17.12889930725096, "o", "n"] +[17.158899307250962, "o", " "] +[17.188899307250963, "o", "t"] +[17.218899307250965, "o", "o"] +[17.248899307250966, "o", " "] +[17.278899307250967, "o", "t"] +[17.308899307250968, "o", "h"] +[17.33889930725097, "o", "e"] +[17.36889930725097, "o", " "] +[17.39889930725097, "o", "2"] +[17.428899307250973, "o", "0"] +[17.458899307250974, "o", "1"] +[17.488899307250975, "o", "2"] +[17.518899307250976, "o", " "] +[17.548899307250977, "o", "r"] +[17.57889930725098, "o", "a"] +[17.60889930725098, "o", "i"] +[17.63889930725098, "o", "n"] +[17.66889930725098, "o", "f"] +[17.698899307250983, "o", "a"] +[17.728899307250984, "o", "l"] +[17.758899307250985, "o", "l"] +[17.788899307250986, "o", " "] +[17.818899307250987, "o", "d"] +[17.84889930725099, "o", "a"] +[17.87889930725099, "o", "t"] +[17.90889930725099, "o", "a"] +[17.938899307250992, "o", "\""] +[17.968899307250993, "o", " "] +[17.998899307250994, "o", "d"] +[18.028899307250995, "o", "e"] +[18.058899307250996, "o", "m"] +[18.088899307250998, "o", "o"] +[18.118899307251, "o", "/"] +[18.148899307251, "o", "w"] +[18.178899307251, "o", "e"] +[18.208899307251002, "o", "a"] +[18.238899307251003, "o", "t"] +[18.268899307251004, "o", "h"] +[18.298899307251006, "o", "e"] +[18.328899307251007, "o", "r"] +[18.358899307251008, "o", "\r\n"] +[18.38889930725101, "o", "$"] +[18.41889930725101, "o", " "] +[18.44889930725101, "o", "s"] +[18.478899307251012, "o", "g"] +[18.508899307251014, "o", "r"] +[18.538899307251015, "o", " "] +[18.568899307251016, "o", "t"] +[18.598899307251017, "o", "a"] +[18.628899307251018, "o", "g"] +[18.65889930725102, "o", " "] +[18.68889930725102, "o", "d"] +[18.71889930725102, "o", "e"] +[18.748899307251023, "o", "m"] +[18.778899307251024, "o", "o"] +[18.808899307251025, "o", "/"] +[18.838899307251026, "o", "w"] +[18.868899307251027, "o", "e"] +[18.89889930725103, "o", "a"] +[18.92889930725103, "o", "t"] +[18.95889930725103, "o", "h"] +[18.98889930725103, "o", "e"] +[19.018899307251033, "o", "r"] +[19.048899307251034, "o", " "] +[19.078899307251035, "o", "r"] +[19.108899307251036, "o", "e"] +[19.138899307251037, "o", "v"] +[19.16889930725104, "o", "i"] +[19.19889930725104, "o", "s"] +[19.22889930725104, "o", "e"] +[19.258899307251042, "o", "d"] +[19.288899307251043, "o", "_"] +[19.318899307251044, "o", "d"] +[19.348899307251045, "o", "a"] +[19.378899307251046, "o", "t"] +[19.408899307251048, "o", "a"] +[19.43889930725105, "o", "\r\n"] +[19.46889930725105, "o", "\u001b[0m"] +[19.49889930725105, "o", "\r\n"] +[19.72718152046211, "o", "Committing demo/weather...\r\n"] +[19.75916155815132, "o", "Storing and indexing table rdu\r\n"] +[19.930323209762648, "o", "Committed demo/weather as 67e1a884d7e2.\r\n"] +[20.153297986984327, "o", "Tagged demo/weather:67e1a884d7e2f52d45c47a9f0696786d4441e8242d3d54bd20868f70b726417e with revised_data.\r\n"] +[20.18329798698433, "o", "\u001b[1m"] +[20.21329798698433, "o", "\u001b[36m"] +[20.24329798698433, "o", "\u001b[91m"] +[20.273297986984332, "o", "$"] +[20.303297986984333, "o", " "] +[20.333297986984334, "o", "\u001b[0m"] +[25.363297986984335, "o", "\u001b[H"] +[25.393297986984336, "o", "\u001b[J"] +[25.423297986984338, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the original version of the dataset and look at the API spec for it."] +[25.45329798698434, "o", "\r\n"] +[25.48329798698434, "o", "$ # For this, we need to restart PostgREST so that it picks up the new schema.\r\n"] +[25.51329798698434, "o", "$"] +[25.543297986984342, "o", " "] +[25.573297986984343, "o", "d"] +[25.603297986984344, "o", "o"] +[25.633297986984346, "o", "c"] +[25.663297986984347, "o", "k"] +[25.693297986984348, "o", "e"] +[25.72329798698435, "o", "r"] +[25.75329798698435, "o", "-"] +[25.78329798698435, "o", "c"] +[25.813297986984352, "o", "o"] +[25.843297986984354, "o", "m"] +[25.873297986984355, "o", "p"] +[25.903297986984356, "o", "o"] +[25.933297986984357, "o", "s"] +[25.963297986984358, "o", "e"] +[25.99329798698436, "o", " "] +[26.02329798698436, "o", "-"] +[26.05329798698436, "o", "-"] +[26.083297986984363, "o", "p"] +[26.113297986984364, "o", "r"] +[26.143297986984365, "o", "o"] +[26.173297986984366, "o", "j"] +[26.203297986984367, "o", "e"] +[26.23329798698437, "o", "c"] +[26.26329798698437, "o", "t"] +[26.29329798698437, "o", "-"] +[26.32329798698437, "o", "n"] +[26.353297986984373, "o", "a"] +[26.383297986984374, "o", "m"] +[26.413297986984375, "o", "e"] +[26.443297986984376, "o", " "] +[26.473297986984377, "o", "s"] +[26.50329798698438, "o", "p"] +[26.53329798698438, "o", "l"] +[26.56329798698438, "o", "i"] +[26.593297986984382, "o", "t"] +[26.623297986984383, "o", "g"] +[26.653297986984384, "o", "r"] +[26.683297986984385, "o", "a"] +[26.713297986984387, "o", "p"] +[26.743297986984388, "o", "h"] +[26.77329798698439, "o", "_"] +[26.80329798698439, "o", "e"] +[26.83329798698439, "o", "x"] +[26.863297986984392, "o", "a"] +[26.893297986984393, "o", "m"] +[26.923297986984394, "o", "p"] +[26.953297986984396, "o", "l"] +[26.983297986984397, "o", "e"] +[27.013297986984398, "o", " "] +[27.0432979869844, "o", "r"] +[27.0732979869844, "o", "e"] +[27.1032979869844, "o", "s"] +[27.133297986984402, "o", "t"] +[27.163297986984404, "o", "a"] +[27.193297986984405, "o", "r"] +[27.223297986984406, "o", "t"] +[27.253297986984407, "o", " "] +[27.283297986984408, "o", "p"] +[27.31329798698441, "o", "o"] +[27.34329798698441, "o", "s"] +[27.37329798698441, "o", "t"] +[27.403297986984413, "o", "g"] +[27.433297986984414, "o", "r"] +[27.463297986984415, "o", "e"] +[27.493297986984416, "o", "s"] +[27.523297986984417, "o", "t"] +[27.55329798698442, "o", "\r\n"] +[27.58329798698442, "o", "$"] +[27.61329798698442, "o", " "] +[27.64329798698442, "o", "s"] +[27.673297986984423, "o", "g"] +[27.703297986984424, "o", "r"] +[27.733297986984425, "o", " "] +[27.763297986984426, "o", "c"] +[27.793297986984427, "o", "h"] +[27.82329798698443, "o", "e"] +[27.85329798698443, "o", "c"] +[27.88329798698443, "o", "k"] +[27.913297986984432, "o", "o"] +[27.943297986984433, "o", "u"] +[27.973297986984434, "o", "t"] +[28.003297986984435, "o", " "] +[28.033297986984437, "o", "d"] +[28.063297986984438, "o", "e"] +[28.09329798698444, "o", "m"] +[28.12329798698444, "o", "o"] +[28.15329798698444, "o", "/"] +[28.183297986984442, "o", "w"] +[28.213297986984443, "o", "e"] +[28.243297986984444, "o", "a"] +[28.273297986984446, "o", "t"] +[28.303297986984447, "o", "h"] +[28.333297986984448, "o", "e"] +[28.36329798698445, "o", "r"] +[28.39329798698445, "o", ":"] +[28.42329798698445, "o", "i"] +[28.453297986984452, "o", "n"] +[28.483297986984454, "o", "i"] +[28.513297986984455, "o", "t"] +[28.543297986984456, "o", "i"] +[28.573297986984457, "o", "a"] +[28.603297986984458, "o", "l"] +[28.63329798698446, "o", "_"] +[28.66329798698446, "o", "d"] +[28.69329798698446, "o", "a"] +[28.723297986984463, "o", "t"] +[28.753297986984464, "o", "a"] +[28.783297986984465, "o", "\r\n"] +[28.813297986984466, "o", "$"] +[28.843297986984467, "o", " "] +[28.87329798698447, "o", "c"] +[28.90329798698447, "o", "u"] +[28.93329798698447, "o", "r"] +[28.963297986984472, "o", "l"] +[28.993297986984473, "o", " "] +[29.023297986984474, "o", "h"] +[29.053297986984475, "o", "t"] +[29.083297986984476, "o", "t"] +[29.113297986984477, "o", "p"] +[29.14329798698448, "o", ":"] +[29.17329798698448, "o", "/"] +[29.20329798698448, "o", "/"] +[29.233297986984482, "o", "l"] +[29.263297986984483, "o", "o"] +[29.293297986984484, "o", "c"] +[29.323297986984485, "o", "a"] +[29.353297986984487, "o", "l"] +[29.383297986984488, "o", "h"] +[29.41329798698449, "o", "o"] +[29.44329798698449, "o", "s"] +[29.47329798698449, "o", "t"] +[29.503297986984492, "o", ":"] +[29.533297986984493, "o", "8"] +[29.563297986984495, "o", "0"] +[29.593297986984496, "o", "8"] +[29.623297986984497, "o", "0"] +[29.653297986984498, "o", "/"] +[29.6832979869845, "o", " "] +[29.7132979869845, "o", "|"] +[29.7432979869845, "o", " "] +[29.773297986984502, "o", "c"] +[29.803297986984504, "o", "u"] +[29.833297986984505, "o", "t"] +[29.863297986984506, "o", " "] +[29.893297986984507, "o", "-"] +[29.923297986984508, "o", "c"] +[29.95329798698451, "o", " "] +[29.98329798698451, "o", "-"] +[30.01329798698451, "o", "7"] +[30.043297986984513, "o", "9"] +[30.073297986984514, "o", "3"] +[30.103297986984515, "o", "\r\n"] +[30.133297986984516, "o", "\u001b[0m"] +[30.163297986984517, "o", "\r\n"] +[30.79947719574001, "o", "Restarting splitgraph_example_postgrest_1 ... \r\r\n"] +[31.620414352417257, "o", "\u001b[1A\u001b[2K\r"] +[31.62049541473415, "o", "Restarting splitgraph_example_postgrest_1 ... \u001b[32mdone\u001b[0m\r\u001b[1B"] +[31.93735823631313, "o", "Checked out demo/weather:967ba00275f5.\r\n"] +[31.94763908386257, "o", " "] +[31.94766530990627, "o", " "] +[31.9476843833926, "o", "%"] +[31.947701072693135, "o", " "] +[31.94771800041225, "o", "T"] +[31.94773445129421, "o", "o"] +[31.94775066375759, "o", "t"] +[31.947767114639547, "o", "a"] +[31.947783327102925, "o", "l"] +[31.9478007316592, "o", " "] +[31.94781694412258, "o", " "] +[31.947836017608907, "o", " "] +[31.94785342216518, "o", " "] +[31.947870588302877, "o", "%"] +[31.947887039184835, "o", " "] +[31.947903490066793, "o", "R"] +[31.94791994094875, "o", "e"] +[31.94793639183071, "o", "c"] +[31.947953557968404, "o", "e"] +[31.947970008850362, "o", "i"] +[31.947985982895162, "o", "v"] +[31.94800195693996, "o", "e"] +[31.94801793098476, "o", "d"] +[31.94803438186672, "o", " "] +[31.94805035591152, "o", "%"] +[31.948066568374898, "o", " "] +[31.948080873489644, "o", "X"] +[31.94809780120876, "o", "f"] +[31.948221540451314, "o", "erd Av"] +[31.94823608398464, "o", "erage Speed Time Time Time Current\r\n "] +[31.9482410907748, "o", " "] +[31.948245859146382, "o", " "] +[31.948250865936544, "o", " "] +[31.94825468063381, "o", " "] +[31.948258733749654, "o", " "] +[31.94826254844692, "o", " "] +[31.948266363144185, "o", " "] +[31.94827041626003, "o", " "] +[31.948274946213033, "o", " "] +[31.948279714584615, "o", " "] +[31.948287820816304, "o", " Dload Up"] +[31.948503351211812, "o", "load "] +[31.948508119583394, "o", "Tota"] +[31.94851217269924, "o", "l "] +[31.948515987396505, "o", " "] +[31.94851980209377, "o", "Sp"] +[31.948523855209615, "o", "en"] +[31.948529577255513, "o", "t "] +[31.948533630371358, "o", "Le"] +[31.948537445068624, "o", "ft"] +[31.94854102134731, "o", " "] +[31.948544836044576, "o", "Sp"] +[31.94854936599758, "o", "ee"] +[31.948553419113424, "o", "d"] +[31.948559141159322, "o", "\r\n"] +[31.948563194275167, "o", "\r "] +[31.948567008972432, "o", "0 "] +[31.948570823669698, "o", " "] +[31.948574638366964, "o", " 0"] +[31.94857845306423, "o", " "] +[31.948582029342916, "o", " "] +[31.94858632087734, "o", "0"] +[31.9485913276675, "o", " "] +[31.948595142364766, "o", " "] +[31.948598957062032, "o", "0 "] +[31.948602771759298, "o", " "] +[31.948606824875142, "o", " 0"] +[31.948610877990987, "o", " "] +[31.948614692688253, "o", " "] +[31.948618745804097, "o", " "] +[31.9486232757571, "o", "0 "] +[31.948627328872945, "o", " "] +[31.94863138198879, "o", " "] +[31.948635196686055, "o", " 0"] +[31.94863901138332, "o", " "] +[31.948643302917745, "o", " "] +[31.94864711761501, "o", " "] +[31.948650932312276, "o", " 0"] +[31.948656415939595, "o", " -"] +[31.9486609458926, "o", "-:-"] +[31.948664760589864, "o", "-"] +[31.94866857528713, "o", ":-"] +[31.948672866821553, "o", "- "] +[31.948676919937398, "o", "--"] +[31.948680734634664, "o", ":-"] +[31.94868454933193, "o", "-:"] +[31.948690748214986, "o", "--"] +[31.948696231842305, "o", " -"] +[31.94870028495815, "o", "-:-"] +[31.948704099655416, "o", "-:"] +[31.94870791435268, "o", "--"] +[31.948711490631368, "o", " "] +[31.948715543747213, "o", " "] +[31.948719358444478, "o", " "] +[31.948723173141744, "o", "0"] +[31.96938881874111, "o", "\r100 12010 0 12010 0 0 533k 0 --:--:-- --:--"] +[31.969410514831807, "o", ":-- --:--:-- 533k\r\n"] +[31.96989307403591, "o", "{\"swagger\":\"2.0\",\"info\":{\"version\":\"7.0.1 (UNKNOWN)\",\"title\":\"PostgREST API\",\"description\":\"This is a dynamic API generated by PostgREST\"},\"host\":\"localhost:8080\",\"basePath\":\"/\",\"schemes\":[\"http\"],\"consumes\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"produces\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"paths\":{\"/\":{\"get\":{\"tags\":[\"Introspection\"],\"summary\":\"OpenAPI description (this document)\",\"produces\":[\"application/openapi+json\",\"application/json\"],\"res"] +[31.96990094184902, "o", "ponses\":{\"200\":{\"description\":\"OK\"}}}},\"/rdu\":{\"get\":{\"tags\":[\"rdu\"],\"parameters\":[{\"$ref\":\"#/parameters/rowFilter.rdu.date\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemin\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemax\"},{\"$ref\":\"#/parameters/rowFilter.rdu.precipitation\r\n"] +[31.99990094184902, "o", "\u001b[1m"] +[32.02990094184902, "o", "\u001b[36m"] +[32.05990094184902, "o", "\u001b[91m"] +[32.089900941849024, "o", "$"] +[32.119900941849025, "o", " "] +[32.149900941849026, "o", "\u001b[0m"] +[37.17990094184903, "o", "\u001b[H"] +[37.20990094184903, "o", "\u001b[J"] +[37.23990094184903, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get all rows in the table"] +[37.26990094184903, "o", "\r\n"] +[37.29990094184903, "o", "$"] +[37.32990094184903, "o", " "] +[37.359900941849034, "o", "c"] +[37.389900941849035, "o", "u"] +[37.419900941849036, "o", "r"] +[37.44990094184904, "o", "l"] +[37.47990094184904, "o", " "] +[37.50990094184904, "o", "h"] +[37.53990094184904, "o", "t"] +[37.56990094184904, "o", "t"] +[37.59990094184904, "o", "p"] +[37.629900941849044, "o", ":"] +[37.659900941849045, "o", "/"] +[37.68990094184905, "o", "/"] +[37.71990094184905, "o", "l"] +[37.74990094184905, "o", "o"] +[37.77990094184905, "o", "c"] +[37.80990094184905, "o", "a"] +[37.83990094184905, "o", "l"] +[37.86990094184905, "o", "h"] +[37.899900941849054, "o", "o"] +[37.929900941849056, "o", "s"] +[37.95990094184906, "o", "t"] +[37.98990094184906, "o", ":"] +[38.01990094184906, "o", "8"] +[38.04990094184906, "o", "0"] +[38.07990094184906, "o", "8"] +[38.10990094184906, "o", "0"] +[38.13990094184906, "o", "/"] +[38.169900941849065, "o", "r"] +[38.199900941849066, "o", "d"] +[38.22990094184907, "o", "u"] +[38.25990094184907, "o", " "] +[38.28990094184907, "o", "|"] +[38.31990094184907, "o", " "] +[38.34990094184907, "o", "w"] +[38.37990094184907, "o", "c"] +[38.409900941849074, "o", " "] +[38.439900941849075, "o", "-"] +[38.469900941849076, "o", "l"] +[38.49990094184908, "o", "\r\n"] +[38.52990094184908, "o", "\u001b[0m"] +[38.55990094184908, "o", "\r\n"] +[38.56827897071871, "o", " "] +[38.5682870769504, "o", " % Total % Received % Xfe"] +[38.5682916069034, "o", "rd "] +[38.568295421600666, "o", " A"] +[38.56829923629793, "o", "ve"] +[38.568303527832356, "o", "ra"] +[38.56830734252962, "o", "ge"] +[38.568311634064045, "o", " S"] +[38.56831568717989, "o", "pe"] +[38.568319501877156, "o", "ed"] +[38.56832331657442, "o", " "] +[38.56832713127169, "o", " T"] +[38.56833094596895, "o", "im"] +[38.56833452224764, "o", "e "] +[38.568338098526326, "o", " "] +[38.56834191322359, "o", " T"] +[38.568346204758015, "o", "i"] +[38.56835025787386, "o", "me"] +[38.568354072571125, "o", " "] +[38.56835836410555, "o", " "] +[38.56836265563997, "o", " T"] +[38.56836647033724, "o", "im"] +[38.568370046615925, "o", "e "] +[38.56837386131319, "o", " C"] +[38.568380775451985, "o", "ur"] +[38.56838459014925, "o", "re"] +[38.568388643265095, "o", "nt"] +[38.568394126892414, "o", "\r\n "] +[38.56839841842684, "o", " "] +[38.568401994705525, "o", " "] +[38.56840557098421, "o", " "] +[38.568409624100056, "o", " "] +[38.56841343879732, "o", " "] +[38.56841701507601, "o", " "] +[38.568420829773274, "o", " "] +[38.56842464447054, "o", " "] +[38.568428697586384, "o", " "] +[38.56843227386507, "o", " "] +[38.568436326980915, "o", " "] +[38.56844038009676, "o", " "] +[38.568444194794026, "o", " "] +[38.56844800949129, "o", " "] +[38.568452062607136, "o", " "] +[38.568457307815876, "o", " "] +[38.56846088409456, "o", " D"] +[38.56846493721041, "o", "lo"] +[38.56846875190767, "o", "ad"] +[38.56847280502352, "o", " "] +[38.56847709655794, "o", "U"] +[38.56848091125521, "o", "plo"] +[38.568486633301106, "o", "ad"] +[38.56849068641695, "o", " "] +[38.568494501114216, "o", " T"] +[38.56849855423006, "o", "ot"] +[38.56850236892733, "o", "al"] +[38.56850666046175, "o", " "] +[38.56851023674044, "o", " S"] +[38.5685140514377, "o", "pe"] +[38.56851786613497, "o", "nt"] +[38.56852215766939, "o", " "] +[38.568526449203816, "o", " "] +[38.56853026390108, "o", "Le"] +[38.56853407859835, "o", "ft"] +[38.568537654877034, "o", " "] +[38.56854123115572, "o", "Sp"] +[38.568545284271565, "o", "e"] +[38.568550767898884, "o", "ed\r\n"] +[38.56855505943331, "o", "\r "] +[38.56855911254915, "o", " "] +[38.568563165665, "o", "0 "] +[38.56856745719942, "o", " "] +[38.568571510315266, "o", " "] +[38.56857508659395, "o", "0 "] +[38.56857866287264, "o", " "] +[38.568582715988484, "o", " 0"] +[38.568587961197224, "o", " "] +[38.56859177589449, "o", " "] +[38.568595352173176, "o", " 0"] +[38.56859940528902, "o", " "] +[38.56860298156771, "o", " "] +[38.56860727310213, "o", " 0"] +[38.5686110877994, "o", " "] +[38.56861490249666, "o", " "] +[38.56861895561251, "o", " 0"] +[38.56862300872835, "o", " "] +[38.5686270618442, "o", " "] +[38.56863063812288, "o", " "] +[38.56863469123873, "o", " 0"] +[38.56863850593599, "o", " "] +[38.56864232063326, "o", " "] +[38.568646135330525, "o", " "] +[38.56864995002779, "o", "0 "] +[38.56865567207369, "o", "--"] +[38.56866020202669, "o", ":--"] +[38.56866425514254, "o", ":"] +[38.5686680698398, "o", "-- "] +[38.56867188453707, "o", "--"] +[38.568675460815754, "o", ":-"] +[38.56867927551302, "o", "-:"] +[38.56868452072176, "o", "-- "] +[38.56869000434908, "o", "--"] +[38.568693819046345, "o", ":--"] +[38.56869787216219, "o", ":-"] +[38.56870240211519, "o", "- "] +[38.568707170486775, "o", " "] +[38.56871098518404, "o", " "] +[38.568714799881306, "o", " 0"] +[38.648418846130696, "o", "\r100 2292k 0 2292k 0 0 27.9M 0 --:--:-- --:--:-- --:--:-- 27.9M"] +[38.64844197273287, "o", "\r\n"] +[38.649846735000935, "o", "4632\r\n"] +[38.679846735000936, "o", "\u001b[1m"] +[38.70984673500094, "o", "\u001b[36m"] +[38.73984673500094, "o", "\u001b[91m"] +[38.76984673500094, "o", "$"] +[38.79984673500094, "o", " "] +[38.82984673500094, "o", "\u001b[0m"] +[43.85984673500094, "o", "\u001b[H"] +[43.889846735000944, "o", "\u001b[J"] +[43.919846735000945, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a query selecting one row"] +[43.949846735000946, "o", "\r\n"] +[43.97984673500095, "o", "$"] +[44.00984673500095, "o", " "] +[44.03984673500095, "o", "c"] +[44.06984673500095, "o", "u"] +[44.09984673500095, "o", "r"] +[44.12984673500095, "o", "l"] +[44.159846735000954, "o", " "] +[44.189846735000955, "o", "\""] +[44.21984673500096, "o", "h"] +[44.24984673500096, "o", "t"] +[44.27984673500096, "o", "t"] +[44.30984673500096, "o", "p"] +[44.33984673500096, "o", ":"] +[44.36984673500096, "o", "/"] +[44.39984673500096, "o", "/"] +[44.429846735000964, "o", "l"] +[44.459846735000966, "o", "o"] +[44.48984673500097, "o", "c"] +[44.51984673500097, "o", "a"] +[44.54984673500097, "o", "l"] +[44.57984673500097, "o", "h"] +[44.60984673500097, "o", "o"] +[44.63984673500097, "o", "s"] +[44.669846735000974, "o", "t"] +[44.699846735000975, "o", ":"] +[44.729846735000976, "o", "8"] +[44.75984673500098, "o", "0"] +[44.78984673500098, "o", "8"] +[44.81984673500098, "o", "0"] +[44.84984673500098, "o", "/"] +[44.87984673500098, "o", "r"] +[44.90984673500098, "o", "d"] +[44.939846735000984, "o", "u"] +[44.969846735000985, "o", "?"] +[44.999846735000986, "o", "d"] +[45.02984673500099, "o", "a"] +[45.05984673500099, "o", "t"] +[45.08984673500099, "o", "e"] +[45.11984673500099, "o", "="] +[45.14984673500099, "o", "e"] +[45.17984673500099, "o", "q"] +[45.209846735000994, "o", "."] +[45.239846735000995, "o", "2"] +[45.269846735000996, "o", "0"] +[45.299846735001, "o", "1"] +[45.329846735001, "o", "2"] +[45.359846735001, "o", "-"] +[45.389846735001, "o", "1"] +[45.419846735001, "o", "2"] +[45.449846735001, "o", "-"] +[45.479846735001004, "o", "2"] +[45.509846735001005, "o", "6"] +[45.53984673500101, "o", "&"] +[45.56984673500101, "o", "s"] +[45.59984673500101, "o", "e"] +[45.62984673500101, "o", "l"] +[45.65984673500101, "o", "e"] +[45.68984673500101, "o", "c"] +[45.71984673500101, "o", "t"] +[45.749846735001015, "o", "="] +[45.779846735001016, "o", "d"] +[45.80984673500102, "o", "a"] +[45.83984673500102, "o", "t"] +[45.86984673500102, "o", "e"] +[45.89984673500102, "o", ","] +[45.92984673500102, "o", "t"] +[45.95984673500102, "o", "e"] +[45.989846735001024, "o", "m"] +[46.019846735001025, "o", "p"] +[46.049846735001026, "o", "e"] +[46.07984673500103, "o", "r"] +[46.10984673500103, "o", "a"] +[46.13984673500103, "o", "t"] +[46.16984673500103, "o", "u"] +[46.19984673500103, "o", "r"] +[46.22984673500103, "o", "e"] +[46.259846735001034, "o", "m"] +[46.289846735001035, "o", "i"] +[46.319846735001036, "o", "n"] +[46.34984673500104, "o", ","] +[46.37984673500104, "o", "t"] +[46.40984673500104, "o", "e"] +[46.43984673500104, "o", "m"] +[46.46984673500104, "o", "p"] +[46.49984673500104, "o", "e"] +[46.529846735001044, "o", "r"] +[46.559846735001045, "o", "a"] +[46.589846735001046, "o", "t"] +[46.61984673500105, "o", "u"] +[46.64984673500105, "o", "r"] +[46.67984673500105, "o", "e"] +[46.70984673500105, "o", "m"] +[46.73984673500105, "o", "a"] +[46.76984673500105, "o", "x"] +[46.799846735001054, "o", ","] +[46.829846735001055, "o", "p"] +[46.85984673500106, "o", "r"] +[46.88984673500106, "o", "e"] +[46.91984673500106, "o", "c"] +[46.94984673500106, "o", "i"] +[46.97984673500106, "o", "p"] +[47.00984673500106, "o", "i"] +[47.03984673500106, "o", "t"] +[47.069846735001065, "o", "a"] +[47.099846735001066, "o", "t"] +[47.12984673500107, "o", "i"] +[47.15984673500107, "o", "o"] +[47.18984673500107, "o", "n"] +[47.21984673500107, "o", "\""] +[47.24984673500107, "o", "\r\n"] +[47.27984673500107, "o", "\u001b[0m"] +[47.309846735001074, "o", "\r\n"] +[47.32631573677109, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.41}]"] +[47.356315736771094, "o", "\u001b[1m"] +[47.386315736771095, "o", "\u001b[36m"] +[47.4163157367711, "o", "\u001b[91m"] +[47.4463157367711, "o", "$"] +[47.4763157367711, "o", " "] +[47.5063157367711, "o", "\u001b[0m"] +[52.5363157367711, "o", "\u001b[H"] +[52.5663157367711, "o", "\u001b[J"] +[52.5963157367711, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run the query against the new version of the dataset."] +[52.626315736771105, "o", "\r\n"] +[52.656315736771106, "o", "$ # This time, use layered querying that queries fragments directly without checkout,\r\n"] +[52.68631573677111, "o", "$ # downloading them if they're not local. This is seamless to PostgREST or any other application.\r\n"] +[52.71631573677111, "o", "$"] +[52.74631573677111, "o", " "] +[52.77631573677111, "o", "s"] +[52.80631573677111, "o", "g"] +[52.83631573677111, "o", "r"] +[52.866315736771114, "o", " "] +[52.896315736771115, "o", "c"] +[52.926315736771116, "o", "h"] +[52.95631573677112, "o", "e"] +[52.98631573677112, "o", "c"] +[53.01631573677112, "o", "k"] +[53.04631573677112, "o", "o"] +[53.07631573677112, "o", "u"] +[53.10631573677112, "o", "t"] +[53.136315736771124, "o", " "] +[53.166315736771125, "o", "-"] +[53.196315736771126, "o", "-"] +[53.22631573677113, "o", "l"] +[53.25631573677113, "o", "a"] +[53.28631573677113, "o", "y"] +[53.31631573677113, "o", "e"] +[53.34631573677113, "o", "r"] +[53.37631573677113, "o", "e"] +[53.406315736771134, "o", "d"] +[53.436315736771135, "o", " "] +[53.466315736771136, "o", "d"] +[53.49631573677114, "o", "e"] +[53.52631573677114, "o", "m"] +[53.55631573677114, "o", "o"] +[53.58631573677114, "o", "/"] +[53.61631573677114, "o", "w"] +[53.64631573677114, "o", "e"] +[53.676315736771144, "o", "a"] +[53.706315736771145, "o", "t"] +[53.73631573677115, "o", "h"] +[53.76631573677115, "o", "e"] +[53.79631573677115, "o", "r"] +[53.82631573677115, "o", ":"] +[53.85631573677115, "o", "r"] +[53.88631573677115, "o", "e"] +[53.91631573677115, "o", "v"] +[53.946315736771155, "o", "i"] +[53.976315736771156, "o", "s"] +[54.00631573677116, "o", "e"] +[54.03631573677116, "o", "d"] +[54.06631573677116, "o", "_"] +[54.09631573677116, "o", "d"] +[54.12631573677116, "o", "a"] +[54.15631573677116, "o", "t"] +[54.186315736771164, "o", "a"] +[54.216315736771165, "o", "\r\n"] +[54.246315736771166, "o", "$"] +[54.27631573677117, "o", " "] +[54.30631573677117, "o", "c"] +[54.33631573677117, "o", "u"] +[54.36631573677117, "o", "r"] +[54.39631573677117, "o", "l"] +[54.42631573677117, "o", " "] +[54.456315736771174, "o", "\""] +[54.486315736771175, "o", "h"] +[54.516315736771176, "o", "t"] +[54.54631573677118, "o", "t"] +[54.57631573677118, "o", "p"] +[54.60631573677118, "o", ":"] +[54.63631573677118, "o", "/"] +[54.66631573677118, "o", "/"] +[54.69631573677118, "o", "l"] +[54.726315736771184, "o", "o"] +[54.756315736771185, "o", "c"] +[54.786315736771186, "o", "a"] +[54.81631573677119, "o", "l"] +[54.84631573677119, "o", "h"] +[54.87631573677119, "o", "o"] +[54.90631573677119, "o", "s"] +[54.93631573677119, "o", "t"] +[54.96631573677119, "o", ":"] +[54.996315736771194, "o", "8"] +[55.026315736771195, "o", "0"] +[55.0563157367712, "o", "8"] +[55.0863157367712, "o", "0"] +[55.1163157367712, "o", "/"] +[55.1463157367712, "o", "r"] +[55.1763157367712, "o", "d"] +[55.2063157367712, "o", "u"] +[55.2363157367712, "o", "?"] +[55.266315736771205, "o", "d"] +[55.296315736771206, "o", "a"] +[55.32631573677121, "o", "t"] +[55.35631573677121, "o", "e"] +[55.38631573677121, "o", "="] +[55.41631573677121, "o", "e"] +[55.44631573677121, "o", "q"] +[55.47631573677121, "o", "."] +[55.506315736771214, "o", "2"] +[55.536315736771215, "o", "0"] +[55.566315736771216, "o", "1"] +[55.59631573677122, "o", "2"] +[55.62631573677122, "o", "-"] +[55.65631573677122, "o", "1"] +[55.68631573677122, "o", "2"] +[55.71631573677122, "o", "-"] +[55.74631573677122, "o", "2"] +[55.776315736771224, "o", "6"] +[55.806315736771225, "o", "&"] +[55.836315736771226, "o", "s"] +[55.86631573677123, "o", "e"] +[55.89631573677123, "o", "l"] +[55.92631573677123, "o", "e"] +[55.95631573677123, "o", "c"] +[55.98631573677123, "o", "t"] +[56.01631573677123, "o", "="] +[56.046315736771234, "o", "d"] +[56.076315736771235, "o", "a"] +[56.106315736771236, "o", "t"] +[56.13631573677124, "o", "e"] +[56.16631573677124, "o", ","] +[56.19631573677124, "o", "t"] +[56.22631573677124, "o", "e"] +[56.25631573677124, "o", "m"] +[56.28631573677124, "o", "p"] +[56.316315736771244, "o", "e"] +[56.346315736771245, "o", "r"] +[56.37631573677125, "o", "a"] +[56.40631573677125, "o", "t"] +[56.43631573677125, "o", "u"] +[56.46631573677125, "o", "r"] +[56.49631573677125, "o", "e"] +[56.52631573677125, "o", "m"] +[56.55631573677125, "o", "i"] +[56.586315736771255, "o", "n"] +[56.616315736771256, "o", ","] +[56.64631573677126, "o", "t"] +[56.67631573677126, "o", "e"] +[56.70631573677126, "o", "m"] +[56.73631573677126, "o", "p"] +[56.76631573677126, "o", "e"] +[56.79631573677126, "o", "r"] +[56.826315736771264, "o", "a"] +[56.856315736771265, "o", "t"] +[56.886315736771266, "o", "u"] +[56.91631573677127, "o", "r"] +[56.94631573677127, "o", "e"] +[56.97631573677127, "o", "m"] +[57.00631573677127, "o", "a"] +[57.03631573677127, "o", "x"] +[57.06631573677127, "o", ","] +[57.096315736771274, "o", "p"] +[57.126315736771275, "o", "r"] +[57.156315736771276, "o", "e"] +[57.18631573677128, "o", "c"] +[57.21631573677128, "o", "i"] +[57.24631573677128, "o", "p"] +[57.27631573677128, "o", "i"] +[57.30631573677128, "o", "t"] +[57.33631573677128, "o", "a"] +[57.366315736771284, "o", "t"] +[57.396315736771285, "o", "i"] +[57.426315736771286, "o", "o"] +[57.45631573677129, "o", "n"] +[57.48631573677129, "o", "\""] +[57.51631573677129, "o", "\r\n"] +[57.54631573677129, "o", "\u001b[0m"] +[57.57631573677129, "o", "\r\n"] +[57.99697837829656, "o", "Checked out demo/weather:67e1a884d7e2.\r\n"] +[58.343768215180106, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.692}]"] +[58.37376821518011, "o", "\u001b[1m"] +[58.40376821518011, "o", "\u001b[36m"] +[58.43376821518011, "o", "\u001b[91m"] +[58.46376821518011, "o", "$"] +[58.49376821518011, "o", " "] +[58.52376821518011, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.10/push-to-other-engine.cast b/content/casts/versioned/archive/v0.2.10/push-to-other-engine.cast new file mode 100644 index 00000000..ae43ce5a --- /dev/null +++ b/content/casts/versioned/archive/v0.2.10/push-to-other-engine.cast @@ -0,0 +1,918 @@ +{"version": 2, "width": 100, "height": 26, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1616004714, "metadata": {"tss": [{"h": "The .sgconfig file is written from the point of view of the first engine.", "ts": 0.06}, {"h": "Initialize the two engines", "ts": 9.559999999999999}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 22.060000000000002}, {"h": "Push the dataset out to the other engine", "ts": 34.790257596969866}, {"h": "Check that the dataset exists on the remote engine", "ts": 42.92361719131506}, {"h": "Update the dataset on the local engine", "ts": 49.98301165580793}, {"h": "Inspect our changes", "ts": 61.29575977325504}, {"h": "Push the changes out to the remote engine", "ts": 69.03575977325511}, {"h": "Inspect the dataset on the remote engine", "ts": 76.09166719436723}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The .sgconfig file is written from the point of view of the first engine."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Here, the first engine is local and default and the second one is remote.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "c"] +[0.27, "o", "a"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "."] +[0.3900000000000001, "o", "s"] +[0.42000000000000015, "o", "g"] +[0.4500000000000002, "o", "c"] +[0.4800000000000002, "o", "o"] +[0.5100000000000002, "o", "n"] +[0.5400000000000003, "o", "f"] +[0.5700000000000003, "o", "i"] +[0.6000000000000003, "o", "g"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "\u001b[0m"] +[0.6900000000000004, "o", "\r\n"] +[0.6915430450439457, "o", "[defaults]"] +[0.6921929740905766, "o", "\r\n"] +[0.6922125244140629, "o", "SG_LOGLEVEL=INFO"] +[0.6922232532501225, "o", "\r\n"] +[0.6922330284118656, "o", "SG_ENGINE_HOST=localhost"] +[0.6922447109222416, "o", "\r\n"] +[0.6922547245025639, "o", "SG_ENGINE_PORT=5432"] +[0.6922642612457279, "o", "\r\n"] +[0.6922735595703129, "o", "SG_ENGINE_USER=sgr"] +[0.6922828578948979, "o", "\r\n"] +[0.6922938251495365, "o", "SG_ENGINE_PWD=supersecure"] +[0.6923033618927006, "o", "\r\n"] +[0.6923128986358646, "o", "\r\n"] +[0.6923221969604496, "o", "[remote: engine_2]"] +[0.6923314952850346, "o", "\r\n"] +[0.6923410320281986, "o", "SG_ENGINE_ADMIN_USER=sgr"] +[0.6923503303527836, "o", "\r\n"] +[0.6923777484893803, "o", "SG_ENGINE_ADMIN_PWD=supersecure"] +[0.6923875236511234, "o", "\r\n"] +[0.6923970603942875, "o", "SG_ENGINE_POSTGRES_DB_NAME=splitgraph"] +[0.6924063587188725, "o", "\r\n"] +[0.6924161338806156, "o", "SG_ENGINE_HOST=localhost"] +[0.692426385879517, "o", "\r\n"] +[0.6924392604827885, "o", "SG_ENGINE_PORT=5431"] +[0.6924485588073734, "o", "\r\n"] +[0.6924595260620121, "o", "SG_ENGINE_USER=sgr"] +[0.6924688243865971, "o", "\r\n"] +[0.6924795532226566, "o", "SG_ENGINE_PWD=supersecure"] +[0.6924895668029789, "o", "\r\n"] +[0.6925010108947758, "o", "SG_ENGINE_DB_NAME=splitgraph"] +[0.7225010108947758, "o", "\u001b[1m"] +[0.7525010108947758, "o", "\u001b[36m"] +[0.7825010108947759, "o", "\u001b[91m"] +[0.8125010108947759, "o", "$"] +[0.8425010108947759, "o", " "] +[0.8725010108947759, "o", "\u001b[0m"] +[9.53, "o", "\u001b[H"] +[9.559999999999999, "o", "\u001b[J"] +[9.589999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the two engines"] +[9.619999999999997, "o", "\r\n"] +[9.649999999999997, "o", "$"] +[9.679999999999996, "o", " "] +[9.709999999999996, "o", "s"] +[9.739999999999995, "o", "g"] +[9.769999999999994, "o", "r"] +[9.799999999999994, "o", " "] +[9.829999999999993, "o", "i"] +[9.859999999999992, "o", "n"] +[9.889999999999992, "o", "i"] +[9.919999999999991, "o", "t"] +[9.94999999999999, "o", "\r\n"] +[9.97999999999999, "o", "$"] +[10.00999999999999, "o", " "] +[10.039999999999988, "o", "S"] +[10.069999999999988, "o", "G"] +[10.099999999999987, "o", "_"] +[10.129999999999987, "o", "E"] +[10.159999999999986, "o", "N"] +[10.189999999999985, "o", "G"] +[10.219999999999985, "o", "I"] +[10.249999999999984, "o", "N"] +[10.279999999999983, "o", "E"] +[10.309999999999983, "o", "="] +[10.339999999999982, "o", "e"] +[10.369999999999981, "o", "n"] +[10.39999999999998, "o", "g"] +[10.42999999999998, "o", "i"] +[10.45999999999998, "o", "n"] +[10.489999999999979, "o", "e"] +[10.519999999999978, "o", "_"] +[10.549999999999978, "o", "2"] +[10.579999999999977, "o", " "] +[10.609999999999976, "o", "s"] +[10.639999999999976, "o", "g"] +[10.669999999999975, "o", "r"] +[10.699999999999974, "o", " "] +[10.729999999999974, "o", "i"] +[10.759999999999973, "o", "n"] +[10.789999999999973, "o", "i"] +[10.819999999999972, "o", "t"] +[10.849999999999971, "o", "\r\n"] +[10.87999999999997, "o", "\u001b[0m"] +[10.90999999999997, "o", "\r\n"] +[11.12689224243161, "o", "Initializing engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph)..."] +[11.126938018798798, "o", "\r\n"] +[11.132233295440644, "o", "Waiting for connection...."] +[11.132277641296357, "o", "\r\n"] +[12.132277641296357, "o", "Database splitgraph already exists, skipping\r\n"] +[12.132363233566254, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[12.142518196105927, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.165858182907074, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.16701618194577, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.184959325790375, "o", "Installing Splitgraph API functions...\r\n"] +[12.221016082763642, "o", "Installing CStore management functions...\r\n"] +[12.223932180404633, "o", "Installing the audit trigger...\r\n"] +[12.234525356292695, "o", "Engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph) initialized.\r\n"] +[12.409641180038422, "o", "Initializing engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph)...\r\n"] +[12.418498907089203, "o", "Database splitgraph already exists, skipping\r\n"] +[12.418516311645478, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[12.42862359046933, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.45230284690854, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.45355502128598, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.47140661239621, "o", "Installing Splitgraph API functions...\r\n"] +[12.507479343414277, "o", "Installing CStore management functions...\r\n"] +[12.512746725082367, "o", "Installing the audit trigger...\r\n"] +[12.52570954322812, "o", "Engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph) initialized.\r\n"] +[12.555709543228119, "o", "\u001b[1m"] +[12.585709543228118, "o", "\u001b[36m"] +[12.615709543228117, "o", "\u001b[91m"] +[12.645709543228117, "o", "$"] +[12.675709543228116, "o", " "] +[12.705709543228116, "o", "\u001b[0m"] +[22.03, "o", "\u001b[H"] +[22.060000000000002, "o", "\u001b[J"] +[22.090000000000003, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[22.120000000000005, "o", "\r\n"] +[22.150000000000006, "o", "$"] +[22.180000000000007, "o", " "] +[22.210000000000008, "o", "s"] +[22.24000000000001, "o", "g"] +[22.27000000000001, "o", "r"] +[22.30000000000001, "o", " "] +[22.330000000000013, "o", "i"] +[22.360000000000014, "o", "n"] +[22.390000000000015, "o", "i"] +[22.420000000000016, "o", "t"] +[22.450000000000017, "o", " "] +[22.480000000000018, "o", "d"] +[22.51000000000002, "o", "e"] +[22.54000000000002, "o", "m"] +[22.57000000000002, "o", "o"] +[22.600000000000023, "o", "/"] +[22.630000000000024, "o", "w"] +[22.660000000000025, "o", "e"] +[22.690000000000026, "o", "a"] +[22.720000000000027, "o", "t"] +[22.75000000000003, "o", "h"] +[22.78000000000003, "o", "e"] +[22.81000000000003, "o", "r"] +[22.840000000000032, "o", "\r\n"] +[22.870000000000033, "o", "$"] +[22.900000000000034, "o", " "] +[22.930000000000035, "o", "s"] +[22.960000000000036, "o", "g"] +[22.990000000000038, "o", "r"] +[23.02000000000004, "o", " "] +[23.05000000000004, "o", "c"] +[23.08000000000004, "o", "s"] +[23.110000000000042, "o", "v"] +[23.140000000000043, "o", " "] +[23.170000000000044, "o", "i"] +[23.200000000000045, "o", "m"] +[23.230000000000047, "o", "p"] +[23.260000000000048, "o", "o"] +[23.29000000000005, "o", "r"] +[23.32000000000005, "o", "t"] +[23.35000000000005, "o", " "] +[23.380000000000052, "o", "-"] +[23.410000000000053, "o", "f"] +[23.440000000000055, "o", " "] +[23.470000000000056, "o", "."] +[23.500000000000057, "o", "."] +[23.530000000000058, "o", "/"] +[23.56000000000006, "o", "i"] +[23.59000000000006, "o", "m"] +[23.62000000000006, "o", "p"] +[23.650000000000063, "o", "o"] +[23.680000000000064, "o", "r"] +[23.710000000000065, "o", "t"] +[23.740000000000066, "o", "-"] +[23.770000000000067, "o", "f"] +[23.800000000000068, "o", "r"] +[23.83000000000007, "o", "o"] +[23.86000000000007, "o", "m"] +[23.89000000000007, "o", "-"] +[23.920000000000073, "o", "c"] +[23.950000000000074, "o", "s"] +[23.980000000000075, "o", "v"] +[24.010000000000076, "o", "/"] +[24.040000000000077, "o", "r"] +[24.07000000000008, "o", "d"] +[24.10000000000008, "o", "u"] +[24.13000000000008, "o", "-"] +[24.160000000000082, "o", "w"] +[24.190000000000083, "o", "e"] +[24.220000000000084, "o", "a"] +[24.250000000000085, "o", "t"] +[24.280000000000086, "o", "h"] +[24.310000000000088, "o", "e"] +[24.34000000000009, "o", "r"] +[24.37000000000009, "o", "-"] +[24.40000000000009, "o", "h"] +[24.430000000000092, "o", "i"] +[24.460000000000093, "o", "s"] +[24.490000000000094, "o", "t"] +[24.520000000000095, "o", "o"] +[24.550000000000097, "o", "r"] +[24.580000000000098, "o", "y"] +[24.6100000000001, "o", "."] +[24.6400000000001, "o", "c"] +[24.6700000000001, "o", "s"] +[24.700000000000102, "o", "v"] +[24.730000000000103, "o", " "] +[24.760000000000105, "o", "\\"] +[24.790000000000106, "o", "\r\n "] +[24.820000000000107, "o", "-"] +[24.850000000000108, "o", "k"] +[24.88000000000011, "o", " "] +[24.91000000000011, "o", "d"] +[24.94000000000011, "o", "a"] +[24.970000000000113, "o", "t"] +[25.000000000000114, "o", "e"] +[25.030000000000115, "o", " "] +[25.060000000000116, "o", "\\"] +[25.090000000000117, "o", "\r\n "] +[25.12000000000012, "o", "-"] +[25.15000000000012, "o", "t"] +[25.18000000000012, "o", " "] +[25.21000000000012, "o", "d"] +[25.240000000000123, "o", "a"] +[25.270000000000124, "o", "t"] +[25.300000000000125, "o", "e"] +[25.330000000000126, "o", " "] +[25.360000000000127, "o", "t"] +[25.39000000000013, "o", "i"] +[25.42000000000013, "o", "m"] +[25.45000000000013, "o", "e"] +[25.480000000000132, "o", "s"] +[25.510000000000133, "o", "t"] +[25.540000000000134, "o", "a"] +[25.570000000000135, "o", "m"] +[25.600000000000136, "o", "p"] +[25.630000000000138, "o", " "] +[25.66000000000014, "o", "\\"] +[25.69000000000014, "o", "\r\n "] +[25.72000000000014, "o", "-"] +[25.750000000000142, "o", "-"] +[25.780000000000143, "o", "s"] +[25.810000000000144, "o", "e"] +[25.840000000000146, "o", "p"] +[25.870000000000147, "o", "a"] +[25.900000000000148, "o", "r"] +[25.93000000000015, "o", "a"] +[25.96000000000015, "o", "t"] +[25.99000000000015, "o", "o"] +[26.020000000000152, "o", "r"] +[26.050000000000153, "o", " "] +[26.080000000000155, "o", "\""] +[26.110000000000156, "o", ";"] +[26.140000000000157, "o", "\""] +[26.170000000000158, "o", " "] +[26.20000000000016, "o", "\\"] +[26.23000000000016, "o", "\r\n "] +[26.26000000000016, "o", "d"] +[26.290000000000163, "o", "e"] +[26.320000000000164, "o", "m"] +[26.350000000000165, "o", "o"] +[26.380000000000166, "o", "/"] +[26.410000000000167, "o", "w"] +[26.44000000000017, "o", "e"] +[26.47000000000017, "o", "a"] +[26.50000000000017, "o", "t"] +[26.53000000000017, "o", "h"] +[26.560000000000173, "o", "e"] +[26.590000000000174, "o", "r"] +[26.620000000000175, "o", " "] +[26.650000000000176, "o", "r"] +[26.680000000000177, "o", "d"] +[26.71000000000018, "o", "u"] +[26.74000000000018, "o", "\r\n"] +[26.77000000000018, "o", "$"] +[26.800000000000182, "o", " "] +[26.830000000000183, "o", "s"] +[26.860000000000184, "o", "g"] +[26.890000000000185, "o", "r"] +[26.920000000000186, "o", " "] +[26.950000000000188, "o", "c"] +[26.98000000000019, "o", "o"] +[27.01000000000019, "o", "m"] +[27.04000000000019, "o", "m"] +[27.070000000000192, "o", "i"] +[27.100000000000193, "o", "t"] +[27.130000000000194, "o", " "] +[27.160000000000196, "o", "d"] +[27.190000000000197, "o", "e"] +[27.220000000000198, "o", "m"] +[27.2500000000002, "o", "o"] +[27.2800000000002, "o", "/"] +[27.3100000000002, "o", "w"] +[27.340000000000202, "o", "e"] +[27.370000000000203, "o", "a"] +[27.400000000000205, "o", "t"] +[27.430000000000206, "o", "h"] +[27.460000000000207, "o", "e"] +[27.490000000000208, "o", "r"] +[27.52000000000021, "o", "\r\n"] +[27.55000000000021, "o", "$"] +[27.58000000000021, "o", " "] +[27.610000000000213, "o", "s"] +[27.640000000000214, "o", "g"] +[27.670000000000215, "o", "r"] +[27.700000000000216, "o", " "] +[27.730000000000217, "o", "t"] +[27.76000000000022, "o", "a"] +[27.79000000000022, "o", "g"] +[27.82000000000022, "o", " "] +[27.85000000000022, "o", "d"] +[27.880000000000223, "o", "e"] +[27.910000000000224, "o", "m"] +[27.940000000000225, "o", "o"] +[27.970000000000226, "o", "/"] +[28.000000000000227, "o", "w"] +[28.03000000000023, "o", "e"] +[28.06000000000023, "o", "a"] +[28.09000000000023, "o", "t"] +[28.120000000000232, "o", "h"] +[28.150000000000233, "o", "e"] +[28.180000000000234, "o", "r"] +[28.210000000000235, "o", " "] +[28.240000000000236, "o", "i"] +[28.270000000000238, "o", "n"] +[28.30000000000024, "o", "i"] +[28.33000000000024, "o", "t"] +[28.36000000000024, "o", "i"] +[28.390000000000242, "o", "a"] +[28.420000000000243, "o", "l"] +[28.450000000000244, "o", "_"] +[28.480000000000246, "o", "d"] +[28.510000000000247, "o", "a"] +[28.540000000000248, "o", "t"] +[28.57000000000025, "o", "a"] +[28.60000000000025, "o", "\r\n"] +[28.63000000000025, "o", "\u001b[0m"] +[28.660000000000252, "o", "\r\n"] +[28.884369764328255, "o", "Initialized empty repository demo/weather\r\n"] +[29.105306777954354, "o", "Committing demo/weather...\r\n"] +[29.130797777176156, "o", "Processing table rdu\r\n"] +[29.333585891723885, "o", "Committed demo/weather as 23b49d4532ec.\r\n"] +[29.550257596969857, "o", "Tagged demo/weather:23b49d4532ec02f13792fea7abed236180bfda2d988bfa4ba19c65bfb1349574 with initial_data.\r\n"] +[29.580257596969858, "o", "\u001b[1m"] +[29.61025759696986, "o", "\u001b[36m"] +[29.64025759696986, "o", "\u001b[91m"] +[29.67025759696986, "o", "$"] +[29.700257596969863, "o", " "] +[29.730257596969864, "o", "\u001b[0m"] +[34.760257596969865, "o", "\u001b[H"] +[34.790257596969866, "o", "\u001b[J"] +[34.82025759696987, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset out to the other engine"] +[34.85025759696987, "o", "\r\n"] +[34.88025759696987, "o", "$ # Since by default Splitgraph is configured to use S3 for uploading, we need\r\n"] +[34.91025759696987, "o", "$ # to override the upload handler and upload data to the actual database.\r\n"] +[34.94025759696987, "o", "$"] +[34.97025759696987, "o", " "] +[35.000257596969874, "o", "s"] +[35.030257596969875, "o", "g"] +[35.060257596969876, "o", "r"] +[35.09025759696988, "o", " "] +[35.12025759696988, "o", "p"] +[35.15025759696988, "o", "u"] +[35.18025759696988, "o", "s"] +[35.21025759696988, "o", "h"] +[35.24025759696988, "o", " "] +[35.270257596969884, "o", "d"] +[35.300257596969885, "o", "e"] +[35.330257596969886, "o", "m"] +[35.36025759696989, "o", "o"] +[35.39025759696989, "o", "/"] +[35.42025759696989, "o", "w"] +[35.45025759696989, "o", "e"] +[35.48025759696989, "o", "a"] +[35.51025759696989, "o", "t"] +[35.540257596969894, "o", "h"] +[35.570257596969896, "o", "e"] +[35.6002575969699, "o", "r"] +[35.6302575969699, "o", " "] +[35.6602575969699, "o", "-"] +[35.6902575969699, "o", "-"] +[35.7202575969699, "o", "r"] +[35.7502575969699, "o", "e"] +[35.7802575969699, "o", "m"] +[35.810257596969905, "o", "o"] +[35.840257596969906, "o", "t"] +[35.87025759696991, "o", "e"] +[35.90025759696991, "o", " "] +[35.93025759696991, "o", "e"] +[35.96025759696991, "o", "n"] +[35.99025759696991, "o", "g"] +[36.02025759696991, "o", "i"] +[36.050257596969914, "o", "n"] +[36.080257596969915, "o", "e"] +[36.110257596969916, "o", "_"] +[36.14025759696992, "o", "2"] +[36.17025759696992, "o", " "] +[36.20025759696992, "o", "d"] +[36.23025759696992, "o", "e"] +[36.26025759696992, "o", "m"] +[36.29025759696992, "o", "o"] +[36.320257596969924, "o", "/"] +[36.350257596969925, "o", "w"] +[36.380257596969926, "o", "e"] +[36.41025759696993, "o", "a"] +[36.44025759696993, "o", "t"] +[36.47025759696993, "o", "h"] +[36.50025759696993, "o", "e"] +[36.53025759696993, "o", "r"] +[36.56025759696993, "o", " "] +[36.590257596969934, "o", "-"] +[36.620257596969935, "o", "-"] +[36.65025759696994, "o", "u"] +[36.68025759696994, "o", "p"] +[36.71025759696994, "o", "l"] +[36.74025759696994, "o", "o"] +[36.77025759696994, "o", "a"] +[36.80025759696994, "o", "d"] +[36.83025759696994, "o", "-"] +[36.860257596969944, "o", "h"] +[36.890257596969946, "o", "a"] +[36.92025759696995, "o", "n"] +[36.95025759696995, "o", "d"] +[36.98025759696995, "o", "l"] +[37.01025759696995, "o", "e"] +[37.04025759696995, "o", "r"] +[37.07025759696995, "o", " "] +[37.10025759696995, "o", "D"] +[37.130257596969955, "o", "B"] +[37.160257596969956, "o", "\r\n"] +[37.19025759696996, "o", "\u001b[0m"] +[37.22025759696996, "o", "\r\n"] +[37.39644916534459, "o", "Pushing demo/weather to demo/weather on remote engine_2\r\n"] +[37.39652069091832, "o", "Gathering remote metadata..."] +[37.39663227081334, "o", "\r\n"] +[37.45994170188939, "o", "Uploading 1 object, total size 109.61 KiB\r\n"] +[37.46696885108983, "o", "\r 0%| | 0/1 [00:00 3d5fdb9d7b22\r\n"] +[24.26964446067823, "o", "\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[24.275950632095466, "o", "Executing SQL...\r\n"] +[24.477891645431647, "o", "Committing demo/summary...\r\n"] +[24.507342777252326, "o", "Processing table monthly_summary\r\n"] +[24.59386821746839, "o", " ---> fa7b3db6a3d9\r\n"] +[24.596775255203376, "o", "Successfully built demo/summary:fa7b3db6a3d9.\r\n"] +[24.808127603531013, "o", "Tagged demo/summary:fa7b3db6a3d963e881548f31297d521657968a91c78c590c29c24e719730efab with based_on_initial.\r\n"] +[24.838127603531014, "o", "\u001b[1m"] +[24.868127603531015, "o", "\u001b[36m"] +[24.898127603531016, "o", "\u001b[91m"] +[24.928127603531017, "o", "$"] +[24.95812760353102, "o", " "] +[24.98812760353102, "o", "\u001b[0m"] +[30.01812760353102, "o", "\u001b[H"] +[30.04812760353102, "o", "\u001b[J"] +[30.078127603531023, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Much like with Docker, the build result is cached, so running build again checks out the existing image."] +[30.108127603531024, "o", "\r\n"] +[30.138127603531025, "o", "$"] +[30.168127603531026, "o", " "] +[30.198127603531027, "o", "s"] +[30.22812760353103, "o", "g"] +[30.25812760353103, "o", "r"] +[30.28812760353103, "o", " "] +[30.318127603531032, "o", "b"] +[30.348127603531033, "o", "u"] +[30.378127603531034, "o", "i"] +[30.408127603531035, "o", "l"] +[30.438127603531036, "o", "d"] +[30.468127603531038, "o", " "] +[30.49812760353104, "o", "r"] +[30.52812760353104, "o", "d"] +[30.55812760353104, "o", "u"] +[30.588127603531042, "o", "-"] +[30.618127603531043, "o", "w"] +[30.648127603531044, "o", "e"] +[30.678127603531046, "o", "a"] +[30.708127603531047, "o", "t"] +[30.738127603531048, "o", "h"] +[30.76812760353105, "o", "e"] +[30.79812760353105, "o", "r"] +[30.82812760353105, "o", "-"] +[30.858127603531052, "o", "s"] +[30.888127603531053, "o", "u"] +[30.918127603531055, "o", "m"] +[30.948127603531056, "o", "m"] +[30.978127603531057, "o", "a"] +[31.008127603531058, "o", "r"] +[31.03812760353106, "o", "y"] +[31.06812760353106, "o", "."] +[31.09812760353106, "o", "s"] +[31.128127603531063, "o", "p"] +[31.158127603531064, "o", "l"] +[31.188127603531065, "o", "i"] +[31.218127603531066, "o", "t"] +[31.248127603531067, "o", "f"] +[31.27812760353107, "o", "i"] +[31.30812760353107, "o", "l"] +[31.33812760353107, "o", "e"] +[31.36812760353107, "o", " "] +[31.398127603531073, "o", "-"] +[31.428127603531074, "o", "o"] +[31.458127603531075, "o", " "] +[31.488127603531076, "o", "d"] +[31.518127603531077, "o", "e"] +[31.54812760353108, "o", "m"] +[31.57812760353108, "o", "o"] +[31.60812760353108, "o", "/"] +[31.638127603531082, "o", "s"] +[31.668127603531083, "o", "u"] +[31.698127603531084, "o", "m"] +[31.728127603531085, "o", "m"] +[31.758127603531086, "o", "a"] +[31.788127603531088, "o", "r"] +[31.81812760353109, "o", "y"] +[31.84812760353109, "o", "\r\n"] +[31.87812760353109, "o", "\u001b[0m"] +[31.908127603531092, "o", "\r\n"] +[32.12031298637411, "o", "Executing Splitfile rdu-weather-summary.splitfile with arguments {}\r\n"] +[32.2015355205538, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather IMPORT rdu AS source_data\u001b[0m\r\n"] +[32.20254760742208, "o", "Resolving repository demo/weather\r\n"] +[32.336596546173304, "o", " ---> Using cache\r\n"] +[32.33660894393942, "o", " ---> 3d5fdb9d7b22\r\n\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[32.55598407745382, "o", " ---> Using cache\r\n"] +[32.55599981308004, "o", " ---> fa7b3db6a3d9\r\n"] +[32.55885106086752, "o", "Successfully built demo/summary:fa7b3db6a3d9.\r\n"] +[32.58885106086752, "o", "\u001b[1m"] +[32.61885106086752, "o", "\u001b[36m"] +[32.64885106086752, "o", "\u001b[91m"] +[32.67885106086752, "o", "$"] +[32.708851060867524, "o", " "] +[32.738851060867525, "o", "\u001b[0m"] +[37.768851060867526, "o", "\u001b[H"] +[37.79885106086753, "o", "\u001b[J"] +[37.82885106086753, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the new dataset"] +[37.85885106086753, "o", "\r\n"] +[37.88885106086753, "o", "$"] +[37.91885106086753, "o", " "] +[37.94885106086753, "o", "s"] +[37.978851060867534, "o", "g"] +[38.008851060867535, "o", "r"] +[38.038851060867536, "o", " "] +[38.06885106086754, "o", "s"] +[38.09885106086754, "o", "h"] +[38.12885106086754, "o", "o"] +[38.15885106086754, "o", "w"] +[38.18885106086754, "o", " "] +[38.21885106086754, "o", "d"] +[38.248851060867544, "o", "e"] +[38.278851060867545, "o", "m"] +[38.308851060867546, "o", "o"] +[38.33885106086755, "o", "/"] +[38.36885106086755, "o", "s"] +[38.39885106086755, "o", "u"] +[38.42885106086755, "o", "m"] +[38.45885106086755, "o", "m"] +[38.48885106086755, "o", "a"] +[38.518851060867554, "o", "r"] +[38.548851060867555, "o", "y"] +[38.57885106086756, "o", ":"] +[38.60885106086756, "o", "b"] +[38.63885106086756, "o", "a"] +[38.66885106086756, "o", "s"] +[38.69885106086756, "o", "e"] +[38.72885106086756, "o", "d"] +[38.75885106086756, "o", "_"] +[38.788851060867565, "o", "o"] +[38.818851060867566, "o", "n"] +[38.84885106086757, "o", "_"] +[38.87885106086757, "o", "i"] +[38.90885106086757, "o", "n"] +[38.93885106086757, "o", "i"] +[38.96885106086757, "o", "t"] +[38.99885106086757, "o", "i"] +[39.028851060867574, "o", "a"] +[39.058851060867575, "o", "l"] +[39.088851060867576, "o", "\r\n"] +[39.11885106086758, "o", "$"] +[39.14885106086758, "o", " "] +[39.17885106086758, "o", "s"] +[39.20885106086758, "o", "g"] +[39.23885106086758, "o", "r"] +[39.26885106086758, "o", " "] +[39.298851060867584, "o", "t"] +[39.328851060867585, "o", "a"] +[39.358851060867586, "o", "b"] +[39.38885106086759, "o", "l"] +[39.41885106086759, "o", "e"] +[39.44885106086759, "o", " "] +[39.47885106086759, "o", "d"] +[39.50885106086759, "o", "e"] +[39.53885106086759, "o", "m"] +[39.568851060867594, "o", "o"] +[39.598851060867595, "o", "/"] +[39.628851060867596, "o", "s"] +[39.6588510608676, "o", "u"] +[39.6888510608676, "o", "m"] +[39.7188510608676, "o", "m"] +[39.7488510608676, "o", "a"] +[39.7788510608676, "o", "r"] +[39.8088510608676, "o", "y"] +[39.838851060867604, "o", ":"] +[39.868851060867605, "o", "b"] +[39.89885106086761, "o", "a"] +[39.92885106086761, "o", "s"] +[39.95885106086761, "o", "e"] +[39.98885106086761, "o", "d"] +[40.01885106086761, "o", "_"] +[40.04885106086761, "o", "o"] +[40.07885106086761, "o", "n"] +[40.108851060867615, "o", "_"] +[40.138851060867616, "o", "i"] +[40.16885106086762, "o", "n"] +[40.19885106086762, "o", "i"] +[40.22885106086762, "o", "t"] +[40.25885106086762, "o", "i"] +[40.28885106086762, "o", "a"] +[40.31885106086762, "o", "l"] +[40.348851060867624, "o", " "] +[40.378851060867625, "o", "m"] +[40.408851060867626, "o", "o"] +[40.43885106086763, "o", "n"] +[40.46885106086763, "o", "t"] +[40.49885106086763, "o", "h"] +[40.52885106086763, "o", "l"] +[40.55885106086763, "o", "y"] +[40.58885106086763, "o", "_"] +[40.618851060867634, "o", "s"] +[40.648851060867635, "o", "u"] +[40.678851060867636, "o", "m"] +[40.70885106086764, "o", "m"] +[40.73885106086764, "o", "a"] +[40.76885106086764, "o", "r"] +[40.79885106086764, "o", "y"] +[40.82885106086764, "o", "\r\n"] +[40.85885106086764, "o", "$"] +[40.888851060867644, "o", " "] +[40.918851060867645, "o", "s"] +[40.948851060867646, "o", "g"] +[40.97885106086765, "o", "r"] +[41.00885106086765, "o", " "] +[41.03885106086765, "o", "s"] +[41.06885106086765, "o", "q"] +[41.09885106086765, "o", "l"] +[41.12885106086765, "o", " "] +[41.158851060867654, "o", "-"] +[41.188851060867655, "o", "s"] +[41.21885106086766, "o", " "] +[41.24885106086766, "o", "d"] +[41.27885106086766, "o", "e"] +[41.30885106086766, "o", "m"] +[41.33885106086766, "o", "o"] +[41.36885106086766, "o", "/"] +[41.39885106086766, "o", "s"] +[41.428851060867665, "o", "u"] +[41.458851060867666, "o", "m"] +[41.48885106086767, "o", "m"] +[41.51885106086767, "o", "a"] +[41.54885106086767, "o", "r"] +[41.57885106086767, "o", "y"] +[41.60885106086767, "o", " "] +[41.63885106086767, "o", "\""] +[41.668851060867674, "o", "S"] +[41.698851060867675, "o", "E"] +[41.728851060867676, "o", "L"] +[41.75885106086768, "o", "E"] +[41.78885106086768, "o", "C"] +[41.81885106086768, "o", "T"] +[41.84885106086768, "o", " "] +[41.87885106086768, "o", "*"] +[41.90885106086768, "o", " "] +[41.938851060867684, "o", "F"] +[41.968851060867685, "o", "R"] +[41.998851060867686, "o", "O"] +[42.02885106086769, "o", "M"] +[42.05885106086769, "o", " "] +[42.08885106086769, "o", "m"] +[42.11885106086769, "o", "o"] +[42.14885106086769, "o", "n"] +[42.17885106086769, "o", "t"] +[42.208851060867694, "o", "h"] +[42.238851060867695, "o", "l"] +[42.268851060867696, "o", "y"] +[42.2988510608677, "o", "_"] +[42.3288510608677, "o", "s"] +[42.3588510608677, "o", "u"] +[42.3888510608677, "o", "m"] +[42.4188510608677, "o", "m"] +[42.4488510608677, "o", "a"] +[42.478851060867704, "o", "r"] +[42.508851060867705, "o", "y"] +[42.53885106086771, "o", " "] +[42.56885106086771, "o", "O"] +[42.59885106086771, "o", "R"] +[42.62885106086771, "o", "D"] +[42.65885106086771, "o", "E"] +[42.68885106086771, "o", "R"] +[42.71885106086771, "o", " "] +[42.748851060867715, "o", "B"] +[42.778851060867716, "o", "Y"] +[42.80885106086772, "o", " "] +[42.83885106086772, "o", "m"] +[42.86885106086772, "o", "o"] +[42.89885106086772, "o", "n"] +[42.92885106086772, "o", "t"] +[42.95885106086772, "o", "h"] +[42.988851060867724, "o", " "] +[43.018851060867725, "o", "D"] +[43.048851060867726, "o", "E"] +[43.07885106086773, "o", "S"] +[43.10885106086773, "o", "C"] +[43.13885106086773, "o", " "] +[43.16885106086773, "o", "L"] +[43.19885106086773, "o", "I"] +[43.22885106086773, "o", "M"] +[43.258851060867734, "o", "I"] +[43.288851060867735, "o", "T"] +[43.318851060867736, "o", " "] +[43.34885106086774, "o", "5"] +[43.37885106086774, "o", "\""] +[43.40885106086774, "o", "\r\n"] +[43.43885106086774, "o", "\u001b[0m"] +[43.46885106086774, "o", "\r\n"] +[43.680745811462835, "o", "Image demo/summary:fa7b3db6a3d963e881548f31297d521657968a91c78c590c29c24e719730efab\r\n"] +[43.68077609062238, "o", "CREATE TABLE monthly_summary AS ( SELECT to_char(date, 'YYYYMM') AS month, AVG(precipitation) AS average_precipitation, AVG(snowfall) AS average_snowfall FROM source_data GROUP BY month ORDER BY month ASC)\r\nCreated at 2021-03-17T18:12:58.842997\r\n"] +[43.681677074432805, "o", "Size: 111.78 KiB\r\n"] +[43.68168923378034, "o", "Parent: 3d5fdb9d7b229616693a8eb9264afc54f68864ab3b03fddbb8380af096e00026\r\n\r\nTables:\r\n"] +[43.68221423149152, "o", " monthly_summary\r\n"] +[43.68227860450788, "o", " source_data\r\n"] +[43.891407222748235, "o", "Table demo/summary:fa7b3db6a3d963e881548f31297d521657968a91c78c590c29c24e719730efab/monthly_summary\r\n\r\n"] +[43.89243218421979, "o", "Size: 2.17 KiB\r\n"] +[43.89323708534284, "o", "Rows: 153\r\nColumns: \r\n"] +[43.89324829101606, "o", " month (text)\r\n average_precipitation (numeric)\r\n average_snowfall (numeric)\r\n\r\nObjects: \r\n o5e29c3cf82603335df66690a448ca1f604f0002d5a3496b18c982a5ea835f3\r\n"] +[44.10569831848188, "o", "201909 0.171667 0\r\n201908 0.139032 0\r\n201907 0.117097 0\r\n201906 0.12 0\r\n201905 0.103548 0\r\n"] +[44.13569831848188, "o", "\u001b[1m"] +[44.16569831848188, "o", "\u001b[36m"] +[44.19569831848188, "o", "\u001b[91m"] +[44.22569831848188, "o", "$"] +[44.25569831848188, "o", " "] +[44.285698318481884, "o", "\u001b[0m"] +[52.768851060867526, "o", "\u001b[H"] +[52.79885106086753, "o", "\u001b[J"] +[52.82885106086753, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image's provenance (generated from its metadata)"] +[52.85885106086753, "o", "\r\n"] +[52.88885106086753, "o", "$"] +[52.91885106086753, "o", " "] +[52.94885106086753, "o", "s"] +[52.978851060867534, "o", "g"] +[53.008851060867535, "o", "r"] +[53.038851060867536, "o", " "] +[53.06885106086754, "o", "p"] +[53.09885106086754, "o", "r"] +[53.12885106086754, "o", "o"] +[53.15885106086754, "o", "v"] +[53.18885106086754, "o", "e"] +[53.21885106086754, "o", "n"] +[53.248851060867544, "o", "a"] +[53.278851060867545, "o", "n"] +[53.308851060867546, "o", "c"] +[53.33885106086755, "o", "e"] +[53.36885106086755, "o", " "] +[53.39885106086755, "o", "d"] +[53.42885106086755, "o", "e"] +[53.45885106086755, "o", "m"] +[53.48885106086755, "o", "o"] +[53.518851060867554, "o", "/"] +[53.548851060867555, "o", "s"] +[53.57885106086756, "o", "u"] +[53.60885106086756, "o", "m"] +[53.63885106086756, "o", "m"] +[53.66885106086756, "o", "a"] +[53.69885106086756, "o", "r"] +[53.72885106086756, "o", "y"] +[53.75885106086756, "o", "\r\n"] +[53.788851060867565, "o", "$"] +[53.818851060867566, "o", " "] +[53.84885106086757, "o", "s"] +[53.87885106086757, "o", "g"] +[53.90885106086757, "o", "r"] +[53.93885106086757, "o", " "] +[53.96885106086757, "o", "p"] +[53.99885106086757, "o", "r"] +[54.028851060867574, "o", "o"] +[54.058851060867575, "o", "v"] +[54.088851060867576, "o", "e"] +[54.11885106086758, "o", "n"] +[54.14885106086758, "o", "a"] +[54.17885106086758, "o", "n"] +[54.20885106086758, "o", "c"] +[54.23885106086758, "o", "e"] +[54.26885106086758, "o", " "] +[54.298851060867584, "o", "-"] +[54.328851060867585, "o", "-"] +[54.358851060867586, "o", "f"] +[54.38885106086759, "o", "u"] +[54.41885106086759, "o", "l"] +[54.44885106086759, "o", "l"] +[54.47885106086759, "o", " "] +[54.50885106086759, "o", "d"] +[54.53885106086759, "o", "e"] +[54.568851060867594, "o", "m"] +[54.598851060867595, "o", "o"] +[54.628851060867596, "o", "/"] +[54.6588510608676, "o", "s"] +[54.6888510608676, "o", "u"] +[54.7188510608676, "o", "m"] +[54.7488510608676, "o", "m"] +[54.7788510608676, "o", "a"] +[54.8088510608676, "o", "r"] +[54.838851060867604, "o", "y"] +[54.868851060867605, "o", "\r\n"] +[54.89885106086761, "o", "\u001b[0m"] +[54.92885106086761, "o", "\r\n"] +[55.14166229248077, "o", "demo/summary:fa7b3db6a3d963e881548f31297d521657968a91c78c590c29c24e719730efab depends on:\r\n"] +[55.14171450614959, "o", "demo/weather:251167d1df229e79d146ccb954c4bfdf9f9530c7402f8d234111b50bee0f00a9\r\n"] +[55.348866157532036, "o", "# Splitfile commands used to recreate demo/summary:fa7b3db6a3d963e881548f31297d521657968a91c78c590c29c24e719730efab\r\n"] +[55.34888570785552, "o", "FROM demo/weather:251167d1df229e79d146ccb954c4bfdf9f9530c7402f8d234111b50bee0f00a9 IMPORT rdu AS source_data\r\nSQL {CREATE TABLE monthly_summary\r\n AS SELECT to_char(date, 'YYYYMM') AS month\r\n , avg(precipitation) AS average_precipitation\r\n , avg(snowfall) AS average_snowfall\r\n FROM source_data\r\n GROUP BY month\r\n ORDER BY month ASC}\r\n"] +[55.378885707855524, "o", "\u001b[1m"] +[55.408885707855525, "o", "\u001b[36m"] +[55.438885707855526, "o", "\u001b[91m"] +[55.46888570785553, "o", "$"] +[55.49888570785553, "o", " "] +[55.52888570785553, "o", "\u001b[0m"] +[60.55888570785553, "o", "\u001b[H"] +[60.58888570785553, "o", "\u001b[J"] +[60.61888570785553, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We can also see that a new image has been derived from demo/weather"] +[60.648885707855534, "o", "\r\n"] +[60.678885707855535, "o", "$"] +[60.708885707855536, "o", " "] +[60.73888570785554, "o", "s"] +[60.76888570785554, "o", "g"] +[60.79888570785554, "o", "r"] +[60.82888570785554, "o", " "] +[60.85888570785554, "o", "d"] +[60.88888570785554, "o", "e"] +[60.918885707855544, "o", "p"] +[60.948885707855545, "o", "e"] +[60.97888570785555, "o", "n"] +[61.00888570785555, "o", "d"] +[61.03888570785555, "o", "e"] +[61.06888570785555, "o", "n"] +[61.09888570785555, "o", "t"] +[61.12888570785555, "o", "s"] +[61.15888570785555, "o", " "] +[61.188885707855555, "o", "d"] +[61.218885707855556, "o", "e"] +[61.24888570785556, "o", "m"] +[61.27888570785556, "o", "o"] +[61.30888570785556, "o", "/"] +[61.33888570785556, "o", "w"] +[61.36888570785556, "o", "e"] +[61.39888570785556, "o", "a"] +[61.428885707855564, "o", "t"] +[61.458885707855565, "o", "h"] +[61.488885707855566, "o", "e"] +[61.51888570785557, "o", "r"] +[61.54888570785557, "o", "\r\n"] +[61.57888570785557, "o", "\u001b[0m"] +[61.60888570785557, "o", "\r\n"] +[61.83462637901341, "o", "demo/weather:251167d1df229e79d146ccb954c4bfdf9f9530c7402f8d234111b50bee0f00a9 is depended on by:\r\ndemo/summary:fa7b3db6a3d963e881548f31297d521657968a91c78c590c29c24e719730efab\r\n"] +[61.86462637901341, "o", "\u001b[1m"] +[61.89462637901341, "o", "\u001b[36m"] +[61.92462637901341, "o", "\u001b[91m"] +[61.95462637901341, "o", "$"] +[61.98462637901341, "o", " "] +[62.014626379013414, "o", "\u001b[0m"] +[67.04462637901341, "o", "\u001b[H"] +[67.07462637901341, "o", "\u001b[J"] +[67.10462637901341, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now pretend there's been a revision to the source historical weather data"] +[67.13462637901341, "o", "\r\n"] +[67.16462637901341, "o", "$"] +[67.19462637901341, "o", " "] +[67.22462637901342, "o", "s"] +[67.25462637901342, "o", "g"] +[67.28462637901342, "o", "r"] +[67.31462637901342, "o", " "] +[67.34462637901342, "o", "s"] +[67.37462637901342, "o", "q"] +[67.40462637901342, "o", "l"] +[67.43462637901342, "o", " "] +[67.46462637901342, "o", "-"] +[67.49462637901343, "o", "s"] +[67.52462637901343, "o", " "] +[67.55462637901343, "o", "d"] +[67.58462637901343, "o", "e"] +[67.61462637901343, "o", "m"] +[67.64462637901343, "o", "o"] +[67.67462637901343, "o", "/"] +[67.70462637901343, "o", "w"] +[67.73462637901343, "o", "e"] +[67.76462637901344, "o", "a"] +[67.79462637901344, "o", "t"] +[67.82462637901344, "o", "h"] +[67.85462637901344, "o", "e"] +[67.88462637901344, "o", "r"] +[67.91462637901344, "o", " "] +[67.94462637901344, "o", "\""] +[67.97462637901344, "o", "U"] +[68.00462637901344, "o", "P"] +[68.03462637901345, "o", "D"] +[68.06462637901345, "o", "A"] +[68.09462637901345, "o", "T"] +[68.12462637901345, "o", "E"] +[68.15462637901345, "o", " "] +[68.18462637901345, "o", "r"] +[68.21462637901345, "o", "d"] +[68.24462637901345, "o", "u"] +[68.27462637901345, "o", " "] +[68.30462637901346, "o", "S"] +[68.33462637901346, "o", "E"] +[68.36462637901346, "o", "T"] +[68.39462637901346, "o", " "] +[68.42462637901346, "o", "p"] +[68.45462637901346, "o", "r"] +[68.48462637901346, "o", "e"] +[68.51462637901346, "o", "c"] +[68.54462637901347, "o", "i"] +[68.57462637901347, "o", "p"] +[68.60462637901347, "o", "i"] +[68.63462637901347, "o", "t"] +[68.66462637901347, "o", "a"] +[68.69462637901347, "o", "t"] +[68.72462637901347, "o", "i"] +[68.75462637901347, "o", "o"] +[68.78462637901347, "o", "n"] +[68.81462637901348, "o", " "] +[68.84462637901348, "o", "="] +[68.87462637901348, "o", " "] +[68.90462637901348, "o", "p"] +[68.93462637901348, "o", "r"] +[68.96462637901348, "o", "e"] +[68.99462637901348, "o", "c"] +[69.02462637901348, "o", "i"] +[69.05462637901348, "o", "p"] +[69.08462637901349, "o", "i"] +[69.11462637901349, "o", "t"] +[69.14462637901349, "o", "a"] +[69.17462637901349, "o", "t"] +[69.20462637901349, "o", "i"] +[69.23462637901349, "o", "o"] +[69.26462637901349, "o", "n"] +[69.2946263790135, "o", " "] +[69.3246263790135, "o", "*"] +[69.3546263790135, "o", " "] +[69.3846263790135, "o", "1"] +[69.4146263790135, "o", "."] +[69.4446263790135, "o", "2"] +[69.4746263790135, "o", " "] +[69.5046263790135, "o", "W"] +[69.5346263790135, "o", "H"] +[69.5646263790135, "o", "E"] +[69.5946263790135, "o", "R"] +[69.6246263790135, "o", "E"] +[69.65462637901351, "o", " "] +[69.68462637901351, "o", "E"] +[69.71462637901351, "o", "X"] +[69.74462637901351, "o", "T"] +[69.77462637901351, "o", "R"] +[69.80462637901351, "o", "A"] +[69.83462637901351, "o", "C"] +[69.86462637901352, "o", "T"] +[69.89462637901352, "o", " "] +[69.92462637901352, "o", "("] +[69.95462637901352, "o", "y"] +[69.98462637901352, "o", "e"] +[70.01462637901352, "o", "a"] +[70.04462637901352, "o", "r"] +[70.07462637901352, "o", " "] +[70.10462637901352, "o", "F"] +[70.13462637901353, "o", "R"] +[70.16462637901353, "o", "O"] +[70.19462637901353, "o", "M"] +[70.22462637901353, "o", " "] +[70.25462637901353, "o", "d"] +[70.28462637901353, "o", "a"] +[70.31462637901353, "o", "t"] +[70.34462637901353, "o", "e"] +[70.37462637901353, "o", ")"] +[70.40462637901354, "o", " "] +[70.43462637901354, "o", "="] +[70.46462637901354, "o", " "] +[70.49462637901354, "o", "2"] +[70.52462637901354, "o", "0"] +[70.55462637901354, "o", "1"] +[70.58462637901354, "o", "2"] +[70.61462637901354, "o", "\""] +[70.64462637901354, "o", "\r\n"] +[70.67462637901355, "o", "$"] +[70.70462637901355, "o", " "] +[70.73462637901355, "o", "s"] +[70.76462637901355, "o", "g"] +[70.79462637901355, "o", "r"] +[70.82462637901355, "o", " "] +[70.85462637901355, "o", "c"] +[70.88462637901355, "o", "o"] +[70.91462637901355, "o", "m"] +[70.94462637901356, "o", "m"] +[70.97462637901356, "o", "i"] +[71.00462637901356, "o", "t"] +[71.03462637901356, "o", " "] +[71.06462637901356, "o", "-"] +[71.09462637901356, "o", "m"] +[71.12462637901356, "o", " "] +[71.15462637901356, "o", "\""] +[71.18462637901357, "o", "R"] +[71.21462637901357, "o", "e"] +[71.24462637901357, "o", "v"] +[71.27462637901357, "o", "i"] +[71.30462637901357, "o", "s"] +[71.33462637901357, "o", "i"] +[71.36462637901357, "o", "o"] +[71.39462637901357, "o", "n"] +[71.42462637901357, "o", " "] +[71.45462637901358, "o", "t"] +[71.48462637901358, "o", "o"] +[71.51462637901358, "o", " "] +[71.54462637901358, "o", "t"] +[71.57462637901358, "o", "h"] +[71.60462637901358, "o", "e"] +[71.63462637901358, "o", " "] +[71.66462637901358, "o", "2"] +[71.69462637901358, "o", "0"] +[71.72462637901359, "o", "1"] +[71.75462637901359, "o", "2"] +[71.78462637901359, "o", " "] +[71.81462637901359, "o", "r"] +[71.84462637901359, "o", "a"] +[71.87462637901359, "o", "i"] +[71.90462637901359, "o", "n"] +[71.9346263790136, "o", "f"] +[71.9646263790136, "o", "a"] +[71.9946263790136, "o", "l"] +[72.0246263790136, "o", "l"] +[72.0546263790136, "o", " "] +[72.0846263790136, "o", "d"] +[72.1146263790136, "o", "a"] +[72.1446263790136, "o", "t"] +[72.1746263790136, "o", "a"] +[72.2046263790136, "o", "\""] +[72.2346263790136, "o", " "] +[72.2646263790136, "o", "d"] +[72.29462637901361, "o", "e"] +[72.32462637901361, "o", "m"] +[72.35462637901361, "o", "o"] +[72.38462637901361, "o", "/"] +[72.41462637901361, "o", "w"] +[72.44462637901361, "o", "e"] +[72.47462637901361, "o", "a"] +[72.50462637901362, "o", "t"] +[72.53462637901362, "o", "h"] +[72.56462637901362, "o", "e"] +[72.59462637901362, "o", "r"] +[72.62462637901362, "o", "\r\n"] +[72.65462637901362, "o", "$"] +[72.68462637901362, "o", " "] +[72.71462637901362, "o", "s"] +[72.74462637901362, "o", "g"] +[72.77462637901363, "o", "r"] +[72.80462637901363, "o", " "] +[72.83462637901363, "o", "t"] +[72.86462637901363, "o", "a"] +[72.89462637901363, "o", "g"] +[72.92462637901363, "o", " "] +[72.95462637901363, "o", "d"] +[72.98462637901363, "o", "e"] +[73.01462637901363, "o", "m"] +[73.04462637901364, "o", "o"] +[73.07462637901364, "o", "/"] +[73.10462637901364, "o", "w"] +[73.13462637901364, "o", "e"] +[73.16462637901364, "o", "a"] +[73.19462637901364, "o", "t"] +[73.22462637901364, "o", "h"] +[73.25462637901364, "o", "e"] +[73.28462637901364, "o", "r"] +[73.31462637901365, "o", " "] +[73.34462637901365, "o", "r"] +[73.37462637901365, "o", "e"] +[73.40462637901365, "o", "v"] +[73.43462637901365, "o", "i"] +[73.46462637901365, "o", "s"] +[73.49462637901365, "o", "e"] +[73.52462637901365, "o", "d"] +[73.55462637901365, "o", "_"] +[73.58462637901366, "o", "d"] +[73.61462637901366, "o", "a"] +[73.64462637901366, "o", "t"] +[73.67462637901366, "o", "a"] +[73.70462637901366, "o", "\r\n"] +[73.73462637901366, "o", "\u001b[0m"] +[73.76462637901366, "o", "\r\n"] +[74.01918041229308, "o", "Committing demo/weather...\r\n"] +[74.0526639175421, "o", "Storing and indexing table rdu\r\n"] +[74.23312437057555, "o", "Committed demo/weather as 1c6003b2231a.\r\n"] +[74.45031463623107, "o", "Tagged demo/weather:1c6003b2231ab90d49c79406f2d0b0d621d0813940fa0db5d9bc02a9e46dbe9a with revised_data.\r\n"] +[74.48031463623107, "o", "\u001b[1m"] +[74.51031463623107, "o", "\u001b[36m"] +[74.54031463623107, "o", "\u001b[91m"] +[74.57031463623107, "o", "$"] +[74.60031463623108, "o", " "] +[74.63031463623108, "o", "\u001b[0m"] +[79.66031463623108, "o", "\u001b[H"] +[79.69031463623108, "o", "\u001b[J"] +[79.72031463623108, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Use the derivative image's provenance to rebuild it against the revised version"] +[79.75031463623108, "o", "\r\n"] +[79.78031463623108, "o", "$"] +[79.81031463623108, "o", " "] +[79.84031463623108, "o", "s"] +[79.87031463623109, "o", "g"] +[79.90031463623109, "o", "r"] +[79.93031463623109, "o", " "] +[79.96031463623109, "o", "r"] +[79.99031463623109, "o", "e"] +[80.02031463623109, "o", "b"] +[80.05031463623109, "o", "u"] +[80.0803146362311, "o", "i"] +[80.1103146362311, "o", "l"] +[80.1403146362311, "o", "d"] +[80.1703146362311, "o", " "] +[80.2003146362311, "o", "d"] +[80.2303146362311, "o", "e"] +[80.2603146362311, "o", "m"] +[80.2903146362311, "o", "o"] +[80.3203146362311, "o", "/"] +[80.3503146362311, "o", "s"] +[80.3803146362311, "o", "u"] +[80.4103146362311, "o", "m"] +[80.44031463623111, "o", "m"] +[80.47031463623111, "o", "a"] +[80.50031463623111, "o", "r"] +[80.53031463623111, "o", "y"] +[80.56031463623111, "o", " "] +[80.59031463623111, "o", "-"] +[80.62031463623111, "o", "-"] +[80.65031463623112, "o", "a"] +[80.68031463623112, "o", "g"] +[80.71031463623112, "o", "a"] +[80.74031463623112, "o", "i"] +[80.77031463623112, "o", "n"] +[80.80031463623112, "o", "s"] +[80.83031463623112, "o", "t"] +[80.86031463623112, "o", " "] +[80.89031463623112, "o", "d"] +[80.92031463623113, "o", "e"] +[80.95031463623113, "o", "m"] +[80.98031463623113, "o", "o"] +[81.01031463623113, "o", "/"] +[81.04031463623113, "o", "w"] +[81.07031463623113, "o", "e"] +[81.10031463623113, "o", "a"] +[81.13031463623113, "o", "t"] +[81.16031463623113, "o", "h"] +[81.19031463623114, "o", "e"] +[81.22031463623114, "o", "r"] +[81.25031463623114, "o", ":"] +[81.28031463623114, "o", "r"] +[81.31031463623114, "o", "e"] +[81.34031463623114, "o", "v"] +[81.37031463623114, "o", "i"] +[81.40031463623114, "o", "s"] +[81.43031463623115, "o", "e"] +[81.46031463623115, "o", "d"] +[81.49031463623115, "o", "_"] +[81.52031463623115, "o", "d"] +[81.55031463623115, "o", "a"] +[81.58031463623115, "o", "t"] +[81.61031463623115, "o", "a"] +[81.64031463623115, "o", "\r\n"] +[81.67031463623115, "o", "$"] +[81.70031463623116, "o", " "] +[81.73031463623116, "o", "s"] +[81.76031463623116, "o", "g"] +[81.79031463623116, "o", "r"] +[81.82031463623116, "o", " "] +[81.85031463623116, "o", "t"] +[81.88031463623116, "o", "a"] +[81.91031463623116, "o", "g"] +[81.94031463623116, "o", " "] +[81.97031463623117, "o", "d"] +[82.00031463623117, "o", "e"] +[82.03031463623117, "o", "m"] +[82.06031463623117, "o", "o"] +[82.09031463623117, "o", "/"] +[82.12031463623117, "o", "s"] +[82.15031463623117, "o", "u"] +[82.18031463623117, "o", "m"] +[82.21031463623117, "o", "m"] +[82.24031463623118, "o", "a"] +[82.27031463623118, "o", "r"] +[82.30031463623118, "o", "y"] +[82.33031463623118, "o", " "] +[82.36031463623118, "o", "b"] +[82.39031463623118, "o", "a"] +[82.42031463623118, "o", "s"] +[82.45031463623118, "o", "e"] +[82.48031463623118, "o", "d"] +[82.51031463623119, "o", "_"] +[82.54031463623119, "o", "o"] +[82.57031463623119, "o", "n"] +[82.60031463623119, "o", "_"] +[82.63031463623119, "o", "r"] +[82.66031463623119, "o", "e"] +[82.6903146362312, "o", "v"] +[82.7203146362312, "o", "i"] +[82.7503146362312, "o", "s"] +[82.7803146362312, "o", "e"] +[82.8103146362312, "o", "d"] +[82.8403146362312, "o", "\r\n"] +[82.8703146362312, "o", "\u001b[0m"] +[82.9003146362312, "o", "\r\n"] +[83.11143667221143, "o", "Rerunning demo/summary:fa7b3db6a3d963e881548f31297d521657968a91c78c590c29c24e719730efab against:\r\n"] +[83.1114471626289, "o", "demo/weather:revised_data\r\n"] +[83.19074899673535, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather:revised_data IMPORT rdu AS source_data\u001b[0m\r\n"] +[83.19181782722546, "o", "Resolving repository demo/weather\r\n"] +[83.19561702728345, "o", "Importing 1 table from demo/weather:1c6003b2231a into demo/summary\r\n"] +[83.34109718322827, "o", " ---> b4fbeddd3c30\r\n"] +[83.34116203308179, "o", "\u001b[1m\r\nStep 2/2 : SQL {CREATE TABLE monthly_summary AS SELECT to_char(dat...\u001b[0m\r\n"] +[83.34597761154248, "o", "Executing SQL...\r\n"] +[83.54703814506604, "o", "Committing demo/summary...\r\n"] +[83.57227284431531, "o", "Processing table monthly_summary\r\n"] +[83.66284806251599, "o", " ---> e78e5c37298c\r\n"] +[83.66602689743115, "o", "Successfully built demo/summary:e78e5c37298c.\r\n"] +[83.89940483093335, "o", "Tagged demo/summary:e78e5c37298cdf6bc19340439028d763b5a12e48bc40288c960439906436f527 with based_on_revised.\r\n"] +[83.92940483093335, "o", "\u001b[1m"] +[83.95940483093335, "o", "\u001b[36m"] +[83.98940483093335, "o", "\u001b[91m"] +[84.01940483093335, "o", "$"] +[84.04940483093336, "o", " "] +[84.07940483093336, "o", "\u001b[0m"] +[89.16031463623108, "o", "\u001b[H"] +[89.19031463623108, "o", "\u001b[J"] +[89.22031463623108, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Compare the two resultant datasets"] +[89.25031463623108, "o", "\r\n"] +[89.28031463623108, "o", "$"] +[89.31031463623108, "o", " "] +[89.34031463623108, "o", "s"] +[89.37031463623109, "o", "g"] +[89.40031463623109, "o", "r"] +[89.43031463623109, "o", " "] +[89.46031463623109, "o", "d"] +[89.49031463623109, "o", "i"] +[89.52031463623109, "o", "f"] +[89.55031463623109, "o", "f"] +[89.5803146362311, "o", " "] +[89.6103146362311, "o", "d"] +[89.6403146362311, "o", "e"] +[89.6703146362311, "o", "m"] +[89.7003146362311, "o", "o"] +[89.7303146362311, "o", "/"] +[89.7603146362311, "o", "s"] +[89.7903146362311, "o", "u"] +[89.8203146362311, "o", "m"] +[89.8503146362311, "o", "m"] +[89.8803146362311, "o", "a"] +[89.9103146362311, "o", "r"] +[89.94031463623111, "o", "y"] +[89.97031463623111, "o", " "] +[90.00031463623111, "o", "b"] +[90.03031463623111, "o", "a"] +[90.06031463623111, "o", "s"] +[90.09031463623111, "o", "e"] +[90.12031463623111, "o", "d"] +[90.15031463623112, "o", "_"] +[90.18031463623112, "o", "o"] +[90.21031463623112, "o", "n"] +[90.24031463623112, "o", "_"] +[90.27031463623112, "o", "i"] +[90.30031463623112, "o", "n"] +[90.33031463623112, "o", "i"] +[90.36031463623112, "o", "t"] +[90.39031463623112, "o", "i"] +[90.42031463623113, "o", "a"] +[90.45031463623113, "o", "l"] +[90.48031463623113, "o", " "] +[90.51031463623113, "o", "b"] +[90.54031463623113, "o", "a"] +[90.57031463623113, "o", "s"] +[90.60031463623113, "o", "e"] +[90.63031463623113, "o", "d"] +[90.66031463623113, "o", "_"] +[90.69031463623114, "o", "o"] +[90.72031463623114, "o", "n"] +[90.75031463623114, "o", "_"] +[90.78031463623114, "o", "r"] +[90.81031463623114, "o", "e"] +[90.84031463623114, "o", "v"] +[90.87031463623114, "o", "i"] +[90.90031463623114, "o", "s"] +[90.93031463623115, "o", "e"] +[90.96031463623115, "o", "d"] +[90.99031463623115, "o", " "] +[91.02031463623115, "o", "-"] +[91.05031463623115, "o", "-"] +[91.08031463623115, "o", "v"] +[91.11031463623115, "o", "e"] +[91.14031463623115, "o", "r"] +[91.17031463623115, "o", "b"] +[91.20031463623116, "o", "o"] +[91.23031463623116, "o", "s"] +[91.26031463623116, "o", "e"] +[91.29031463623116, "o", " "] +[91.32031463623116, "o", "-"] +[91.35031463623116, "o", "-"] +[91.38031463623116, "o", "t"] +[91.41031463623116, "o", "a"] +[91.44031463623116, "o", "b"] +[91.47031463623117, "o", "l"] +[91.50031463623117, "o", "e"] +[91.53031463623117, "o", "-"] +[91.56031463623117, "o", "n"] +[91.59031463623117, "o", "a"] +[91.62031463623117, "o", "m"] +[91.65031463623117, "o", "e"] +[91.68031463623117, "o", " "] +[91.71031463623117, "o", "m"] +[91.74031463623118, "o", "o"] +[91.77031463623118, "o", "n"] +[91.80031463623118, "o", "t"] +[91.83031463623118, "o", "h"] +[91.86031463623118, "o", "l"] +[91.89031463623118, "o", "y"] +[91.92031463623118, "o", "_"] +[91.95031463623118, "o", "s"] +[91.98031463623118, "o", "u"] +[92.01031463623119, "o", "m"] +[92.04031463623119, "o", "m"] +[92.07031463623119, "o", "a"] +[92.10031463623119, "o", "r"] +[92.13031463623119, "o", "y"] +[92.16031463623119, "o", "\r\n"] +[92.1903146362312, "o", "\u001b[0m"] +[92.2203146362312, "o", "\r\n"] +[92.5797203922279, "o", "Between fa7b3db6a3d9 and e78e5c37298c: \r\n"] +[92.57999457359386, "o", "monthly_summary: added 12 rows, removed 12 rows.\r\n- ('201201', Decimal('0.06322580645161290323'), Decimal('0E-20'))\r\n- ('201202', Decimal('0.06689655172413793103'), Decimal('0.03137931034482758621'))\r\n- ('201203', Decimal('0.17290322580645161290'), Decimal('0E-20'))\r\n- ('201204', Decimal('0.08766666666666666667'), Decimal('0E-20'))\r\n- ('201205', Decimal('0.12806451612903225806'), Decimal('0E-20'))\r\n- ('201206', Decimal('0.10333333333333333333'), Decimal('0E-20'))\r\n- ('201207', Decimal('0.1496774193548387096"] +[92.58000816345287, "o", "8'), Decimal('0E-20'))\r\n- ('201208', Decimal('0.13000000000000000000'), Decimal('0E-20'))\r\n- ('201209', Decimal('0.26100000000000000000'), Decimal('0E-20'))\r\n- ('201210', Decimal('0.05903225806451612903'), Decimal('0E-20'))\r\n- ('201211', Decimal('0.01866666666666666667'), Decimal('0E-20'))\r\n- ('201212', Decimal('0.09483870967741935484'), Decimal('0E-20'))\r\n+ ('201201', Decimal('0.07587096774193548387'), Decimal('0E-20'))\r\n+ ('201202', Decimal('0.08027586206896551724'), Decimal('0.03137931034482758621'))\r\n+ "] +[92.58001388549877, "o", "('201203', Decimal('0.20748387096774193548'), Decimal('0E-20'))\r\n+ ('201204', Decimal('0.10520000000000000000'), Decimal('0E-20'))\r\n+ ('201205', Decimal('0.15367741935483870968'), Decimal('0E-20'))\r\n+ ('201206', Decimal('0.12400000000000000000'), Decimal('0E-20'))\r\n+ ('201207', Decimal('0.17961290322580645161'), Decimal('0E-20'))\r\n+ ('201208', Decimal('0.15600000000000000000'), Decimal('0E-20'))\r\n+ ('201209', Decimal('0.31320000000000000000'), Decimal('0E-20'))\r\n"] +[92.58015789032055, "o", "+ ('201210', Decimal('0.07083870967741935484'), Decimal('0E-20'))\r\n+ ('201211', Decimal('0.02240000000000000000'), Decimal('0E-20'))\r\n+ ('201212', Decimal('0.11380645161290322581'), Decimal('0E-20'))\r\n"] +[92.61015789032055, "o", "\u001b[1m"] +[92.64015789032055, "o", "\u001b[36m"] +[92.67015789032055, "o", "\u001b[91m"] +[92.70015789032055, "o", "$"] +[92.73015789032056, "o", " "] +[92.76015789032056, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.10/splitgraph-cloud.cast b/content/casts/versioned/archive/v0.2.10/splitgraph-cloud.cast new file mode 100644 index 00000000..02b0df65 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.10/splitgraph-cloud.cast @@ -0,0 +1,1338 @@ +{"version": 2, "width": 100, "height": 22, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1616004733, "metadata": {"tss": [{"h": "Make sure you are registered and logged into Splitgraph Cloud.", "ts": 0.06}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport", "ts": 8.725121831893915}, {"h": "Push the dataset to Splitgraph", "ts": 20.88148960113512}, {"h": "Upload some dataset metadata as well.", "ts": 28.921846647262473}, {"h": "Perform a request against an automatically-generated", "ts": 39.42184664726247}, {"h": "sgr also has a shorthand to access the query API", "ts": 49.150935220718424}, {"h": "You can also run a query against the Splitgraph Data Delivery Network.", "ts": 57.847262191772614}, {"h": "The query API also supports running one-off Splitfile commands against a repository,", "ts": 69.03726219177281}, {"h": "Run another command against the new layer to join the two datasets", "ts": 78.5488724708562}, {"h": "Pull the dataset and check out the new image", "ts": 88.06129894256654}, {"h": "Inspect the generated data", "ts": 100.37276084899972}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make sure you are registered and logged into Splitgraph Cloud."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Test the connection.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "s"] +[0.27, "o", "g"] +[0.30000000000000004, "o", "r"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "q"] +[0.42000000000000015, "o", "l"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "-"] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", " "] +[0.5700000000000003, "o", "d"] +[0.6000000000000003, "o", "a"] +[0.6300000000000003, "o", "t"] +[0.6600000000000004, "o", "a"] +[0.6900000000000004, "o", "."] +[0.7200000000000004, "o", "s"] +[0.7500000000000004, "o", "p"] +[0.7800000000000005, "o", "l"] +[0.8100000000000005, "o", "i"] +[0.8400000000000005, "o", "t"] +[0.8700000000000006, "o", "g"] +[0.9000000000000006, "o", "r"] +[0.9300000000000006, "o", "a"] +[0.9600000000000006, "o", "p"] +[0.9900000000000007, "o", "h"] +[1.0200000000000007, "o", "."] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "o"] +[1.1100000000000008, "o", "m"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "\""] +[1.2000000000000008, "o", "S"] +[1.2300000000000009, "o", "E"] +[1.260000000000001, "o", "L"] +[1.290000000000001, "o", "E"] +[1.320000000000001, "o", "C"] +[1.350000000000001, "o", "T"] +[1.380000000000001, "o", " "] +[1.410000000000001, "o", "s"] +[1.440000000000001, "o", "p"] +[1.470000000000001, "o", "l"] +[1.500000000000001, "o", "i"] +[1.5300000000000011, "o", "t"] +[1.5600000000000012, "o", "g"] +[1.5900000000000012, "o", "r"] +[1.6200000000000012, "o", "a"] +[1.6500000000000012, "o", "p"] +[1.6800000000000013, "o", "h"] +[1.7100000000000013, "o", "_"] +[1.7400000000000013, "o", "a"] +[1.7700000000000014, "o", "p"] +[1.8000000000000014, "o", "i"] +[1.8300000000000014, "o", "."] +[1.8600000000000014, "o", "g"] +[1.8900000000000015, "o", "e"] +[1.9200000000000015, "o", "t"] +[1.9500000000000015, "o", "_"] +[1.9800000000000015, "o", "c"] +[2.0100000000000016, "o", "u"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "r"] +[2.100000000000001, "o", "e"] +[2.130000000000001, "o", "n"] +[2.1600000000000006, "o", "t"] +[2.1900000000000004, "o", "_"] +[2.22, "o", "u"] +[2.25, "o", "s"] +[2.28, "o", "e"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "n"] +[2.369999999999999, "o", "a"] +[2.399999999999999, "o", "m"] +[2.429999999999999, "o", "e"] +[2.4599999999999986, "o", "("] +[2.4899999999999984, "o", ")"] +[2.5199999999999982, "o", "\""] +[2.549999999999998, "o", "\r\n"] +[2.579999999999998, "o", "\u001b[0m"] +[2.6099999999999977, "o", "\r\n"] +[3.4851218318939186, "o", "splitgraph-demo\r\n"] +[3.5151218318939184, "o", "\u001b[1m"] +[3.545121831893918, "o", "\u001b[36m"] +[3.575121831893918, "o", "\u001b[91m"] +[3.6051218318939178, "o", "$"] +[3.6351218318939176, "o", " "] +[3.6651218318939174, "o", "\u001b[0m"] +[8.695121831893916, "o", "\u001b[H"] +[8.725121831893915, "o", "\u001b[J"] +[8.755121831893915, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport"] +[8.785121831893914, "o", "\r\n"] +[8.815121831893913, "o", "$"] +[8.845121831893913, "o", " "] +[8.875121831893912, "o", "s"] +[8.905121831893911, "o", "g"] +[8.93512183189391, "o", "r"] +[8.96512183189391, "o", " "] +[8.99512183189391, "o", "i"] +[9.025121831893909, "o", "n"] +[9.055121831893908, "o", "i"] +[9.085121831893908, "o", "t"] +[9.115121831893907, "o", " "] +[9.145121831893906, "o", "w"] +[9.175121831893906, "o", "e"] +[9.205121831893905, "o", "a"] +[9.235121831893904, "o", "t"] +[9.265121831893904, "o", "h"] +[9.295121831893903, "o", "e"] +[9.325121831893902, "o", "r"] +[9.355121831893902, "o", "\r\n"] +[9.385121831893901, "o", "$"] +[9.4151218318939, "o", " "] +[9.4451218318939, "o", "s"] +[9.4751218318939, "o", "g"] +[9.505121831893899, "o", "r"] +[9.535121831893898, "o", " "] +[9.565121831893897, "o", "c"] +[9.595121831893897, "o", "s"] +[9.625121831893896, "o", "v"] +[9.655121831893895, "o", " "] +[9.685121831893895, "o", "i"] +[9.715121831893894, "o", "m"] +[9.745121831893893, "o", "p"] +[9.775121831893893, "o", "o"] +[9.805121831893892, "o", "r"] +[9.835121831893892, "o", "t"] +[9.865121831893891, "o", " "] +[9.89512183189389, "o", "-"] +[9.92512183189389, "o", "f"] +[9.955121831893889, "o", " "] +[9.985121831893888, "o", "."] +[10.015121831893888, "o", "."] +[10.045121831893887, "o", "/"] +[10.075121831893886, "o", "i"] +[10.105121831893886, "o", "m"] +[10.135121831893885, "o", "p"] +[10.165121831893885, "o", "o"] +[10.195121831893884, "o", "r"] +[10.225121831893883, "o", "t"] +[10.255121831893883, "o", "-"] +[10.285121831893882, "o", "f"] +[10.315121831893881, "o", "r"] +[10.34512183189388, "o", "o"] +[10.37512183189388, "o", "m"] +[10.40512183189388, "o", "-"] +[10.435121831893879, "o", "c"] +[10.465121831893878, "o", "s"] +[10.495121831893877, "o", "v"] +[10.525121831893877, "o", "/"] +[10.555121831893876, "o", "r"] +[10.585121831893876, "o", "d"] +[10.615121831893875, "o", "u"] +[10.645121831893874, "o", "-"] +[10.675121831893874, "o", "w"] +[10.705121831893873, "o", "e"] +[10.735121831893872, "o", "a"] +[10.765121831893872, "o", "t"] +[10.795121831893871, "o", "h"] +[10.82512183189387, "o", "e"] +[10.85512183189387, "o", "r"] +[10.88512183189387, "o", "-"] +[10.915121831893869, "o", "h"] +[10.945121831893868, "o", "i"] +[10.975121831893867, "o", "s"] +[11.005121831893867, "o", "t"] +[11.035121831893866, "o", "o"] +[11.065121831893865, "o", "r"] +[11.095121831893865, "o", "y"] +[11.125121831893864, "o", "."] +[11.155121831893863, "o", "c"] +[11.185121831893863, "o", "s"] +[11.215121831893862, "o", "v"] +[11.245121831893861, "o", " "] +[11.27512183189386, "o", "\\"] +[11.30512183189386, "o", "\r\n "] +[11.33512183189386, "o", "-"] +[11.365121831893859, "o", "k"] +[11.395121831893858, "o", " "] +[11.425121831893858, "o", "d"] +[11.455121831893857, "o", "a"] +[11.485121831893856, "o", "t"] +[11.515121831893856, "o", "e"] +[11.545121831893855, "o", " "] +[11.575121831893854, "o", "\\"] +[11.605121831893854, "o", "\r\n "] +[11.635121831893853, "o", "-"] +[11.665121831893853, "o", "t"] +[11.695121831893852, "o", " "] +[11.725121831893851, "o", "d"] +[11.75512183189385, "o", "a"] +[11.78512183189385, "o", "t"] +[11.81512183189385, "o", "e"] +[11.845121831893849, "o", " "] +[11.875121831893848, "o", "t"] +[11.905121831893847, "o", "i"] +[11.935121831893847, "o", "m"] +[11.965121831893846, "o", "e"] +[11.995121831893846, "o", "s"] +[12.025121831893845, "o", "t"] +[12.055121831893844, "o", "a"] +[12.085121831893844, "o", "m"] +[12.115121831893843, "o", "p"] +[12.145121831893842, "o", " "] +[12.175121831893842, "o", "\\"] +[12.205121831893841, "o", "\r\n "] +[12.23512183189384, "o", "-"] +[12.26512183189384, "o", "-"] +[12.29512183189384, "o", "s"] +[12.325121831893838, "o", "e"] +[12.355121831893838, "o", "p"] +[12.385121831893837, "o", "a"] +[12.415121831893837, "o", "r"] +[12.445121831893836, "o", "a"] +[12.475121831893835, "o", "t"] +[12.505121831893835, "o", "o"] +[12.535121831893834, "o", "r"] +[12.565121831893833, "o", " "] +[12.595121831893833, "o", "\""] +[12.625121831893832, "o", ";"] +[12.655121831893831, "o", "\""] +[12.68512183189383, "o", " "] +[12.71512183189383, "o", "\\"] +[12.74512183189383, "o", "\r\n "] +[12.775121831893829, "o", "w"] +[12.805121831893828, "o", "e"] +[12.835121831893828, "o", "a"] +[12.865121831893827, "o", "t"] +[12.895121831893826, "o", "h"] +[12.925121831893826, "o", "e"] +[12.955121831893825, "o", "r"] +[12.985121831893824, "o", " "] +[13.015121831893824, "o", "r"] +[13.045121831893823, "o", "d"] +[13.075121831893822, "o", "u"] +[13.105121831893822, "o", "\r\n"] +[13.135121831893821, "o", "$"] +[13.16512183189382, "o", " "] +[13.19512183189382, "o", "s"] +[13.22512183189382, "o", "g"] +[13.255121831893819, "o", "r"] +[13.285121831893818, "o", " "] +[13.315121831893817, "o", "c"] +[13.345121831893817, "o", "o"] +[13.375121831893816, "o", "m"] +[13.405121831893815, "o", "m"] +[13.435121831893815, "o", "i"] +[13.465121831893814, "o", "t"] +[13.495121831893814, "o", " "] +[13.525121831893813, "o", "w"] +[13.555121831893812, "o", "e"] +[13.585121831893812, "o", "a"] +[13.615121831893811, "o", "t"] +[13.64512183189381, "o", "h"] +[13.67512183189381, "o", "e"] +[13.705121831893809, "o", "r"] +[13.735121831893808, "o", "\r\n"] +[13.765121831893808, "o", "$"] +[13.795121831893807, "o", " "] +[13.825121831893807, "o", "s"] +[13.855121831893806, "o", "g"] +[13.885121831893805, "o", "r"] +[13.915121831893805, "o", " "] +[13.945121831893804, "o", "t"] +[13.975121831893803, "o", "a"] +[14.005121831893803, "o", "g"] +[14.035121831893802, "o", " "] +[14.065121831893801, "o", "w"] +[14.0951218318938, "o", "e"] +[14.1251218318938, "o", "a"] +[14.1551218318938, "o", "t"] +[14.185121831893799, "o", "h"] +[14.215121831893798, "o", "e"] +[14.245121831893798, "o", "r"] +[14.275121831893797, "o", " "] +[14.305121831893796, "o", "i"] +[14.335121831893796, "o", "n"] +[14.365121831893795, "o", "i"] +[14.395121831893794, "o", "t"] +[14.425121831893794, "o", "i"] +[14.455121831893793, "o", "a"] +[14.485121831893792, "o", "l"] +[14.515121831893792, "o", "_"] +[14.545121831893791, "o", "d"] +[14.57512183189379, "o", "a"] +[14.60512183189379, "o", "t"] +[14.63512183189379, "o", "a"] +[14.665121831893789, "o", "\r\n"] +[14.695121831893788, "o", "\u001b[0m"] +[14.725121831893787, "o", "\r\n"] +[14.951584911346302, "o", "Initialized empty repository weather\r\n"] +[15.180404758453236, "o", "Committing weather...\r\n"] +[15.206496572494373, "o", "Processing table rdu\r\n"] +[15.42292795181261, "o", "Committed weather as ece066c34859.\r\n"] +[15.64148960113512, "o", "Tagged weather:ece066c34859f760ff1c3af36b654ed879a8a1d8d09a08e635d8b69f32930379 with initial_data.\r\n"] +[15.67148960113512, "o", "\u001b[1m"] +[15.701489601135119, "o", "\u001b[36m"] +[15.731489601135118, "o", "\u001b[91m"] +[15.761489601135118, "o", "$"] +[15.791489601135117, "o", " "] +[15.821489601135116, "o", "\u001b[0m"] +[20.851489601135118, "o", "\u001b[H"] +[20.88148960113512, "o", "\u001b[J"] +[20.91148960113512, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset to Splitgraph"] +[20.94148960113512, "o", "\r\n"] +[20.971489601135122, "o", "$"] +[21.001489601135123, "o", " "] +[21.031489601135124, "o", "s"] +[21.061489601135126, "o", "g"] +[21.091489601135127, "o", "r"] +[21.121489601135128, "o", " "] +[21.15148960113513, "o", "p"] +[21.18148960113513, "o", "u"] +[21.21148960113513, "o", "s"] +[21.241489601135132, "o", "h"] +[21.271489601135134, "o", " "] +[21.301489601135135, "o", "w"] +[21.331489601135136, "o", "e"] +[21.361489601135137, "o", "a"] +[21.391489601135138, "o", "t"] +[21.42148960113514, "o", "h"] +[21.45148960113514, "o", "e"] +[21.48148960113514, "o", "r"] +[21.511489601135143, "o", "\r\n"] +[21.541489601135144, "o", "\u001b[0m"] +[21.571489601135145, "o", "\r\n"] +[21.780646352767835, "o", "Pushing weather to splitgraph-demo/weather on remote data.splitgraph.com\r\n"] +[21.780673770904432, "o", "Gathering remote metadata...\r\n"] +[22.780673770904432, "o", "No objects to upload.\r\n"] +[23.676950244903455, "o", "Uploaded metadata for 2 images, 1 table, 0 objects and 1 tag.\r\n"] +[23.681846647262464, "o", "Setting upstream for weather to splitgraph-demo/weather.\r\n"] +[23.711846647262465, "o", "\u001b[1m"] +[23.741846647262467, "o", "\u001b[36m"] +[23.771846647262468, "o", "\u001b[91m"] +[23.80184664726247, "o", "$"] +[23.83184664726247, "o", " "] +[23.86184664726247, "o", "\u001b[0m"] +[28.891846647262472, "o", "\u001b[H"] +[28.921846647262473, "o", "\u001b[J"] +[28.951846647262474, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Upload some dataset metadata as well."] +[28.981846647262476, "o", "\r\n"] +[29.011846647262477, "o", "$"] +[29.041846647262478, "o", " "] +[29.07184664726248, "o", "c"] +[29.10184664726248, "o", "a"] +[29.13184664726248, "o", "t"] +[29.161846647262482, "o", " "] +[29.191846647262484, "o", "d"] +[29.221846647262485, "o", "a"] +[29.251846647262486, "o", "t"] +[29.281846647262487, "o", "a"] +[29.311846647262488, "o", "s"] +[29.34184664726249, "o", "e"] +[29.37184664726249, "o", "t"] +[29.40184664726249, "o", "-"] +[29.431846647262493, "o", "m"] +[29.461846647262494, "o", "e"] +[29.491846647262495, "o", "t"] +[29.521846647262496, "o", "a"] +[29.551846647262497, "o", "d"] +[29.5818466472625, "o", "a"] +[29.6118466472625, "o", "t"] +[29.6418466472625, "o", "a"] +[29.6718466472625, "o", "."] +[29.701846647262503, "o", "y"] +[29.731846647262504, "o", "m"] +[29.761846647262505, "o", "l"] +[29.791846647262506, "o", "\r\n"] +[29.821846647262507, "o", "$"] +[29.85184664726251, "o", " "] +[29.88184664726251, "o", "c"] +[29.91184664726251, "o", "a"] +[29.941846647262512, "o", "t"] +[29.971846647262513, "o", " "] +[30.001846647262514, "o", "d"] +[30.031846647262515, "o", "a"] +[30.061846647262517, "o", "t"] +[30.091846647262518, "o", "a"] +[30.12184664726252, "o", "s"] +[30.15184664726252, "o", "e"] +[30.18184664726252, "o", "t"] +[30.211846647262522, "o", "-"] +[30.241846647262523, "o", "r"] +[30.271846647262524, "o", "e"] +[30.301846647262526, "o", "a"] +[30.331846647262527, "o", "d"] +[30.361846647262528, "o", "m"] +[30.39184664726253, "o", "e"] +[30.42184664726253, "o", "."] +[30.45184664726253, "o", "m"] +[30.481846647262532, "o", "d"] +[30.511846647262534, "o", "\r\n"] +[30.541846647262535, "o", "$"] +[30.571846647262536, "o", " "] +[30.601846647262537, "o", "s"] +[30.631846647262538, "o", "g"] +[30.66184664726254, "o", "r"] +[30.69184664726254, "o", " "] +[30.72184664726254, "o", "c"] +[30.751846647262543, "o", "l"] +[30.781846647262544, "o", "o"] +[30.811846647262545, "o", "u"] +[30.841846647262546, "o", "d"] +[30.871846647262547, "o", " "] +[30.90184664726255, "o", "m"] +[30.93184664726255, "o", "e"] +[30.96184664726255, "o", "t"] +[30.991846647262552, "o", "a"] +[31.021846647262553, "o", "d"] +[31.051846647262554, "o", "a"] +[31.081846647262555, "o", "t"] +[31.111846647262556, "o", "a"] +[31.141846647262557, "o", " "] +[31.17184664726256, "o", "s"] +[31.20184664726256, "o", "p"] +[31.23184664726256, "o", "l"] +[31.261846647262562, "o", "i"] +[31.291846647262563, "o", "t"] +[31.321846647262564, "o", "g"] +[31.351846647262565, "o", "r"] +[31.381846647262567, "o", "a"] +[31.411846647262568, "o", "p"] +[31.44184664726257, "o", "h"] +[31.47184664726257, "o", "-"] +[31.50184664726257, "o", "d"] +[31.531846647262572, "o", "e"] +[31.561846647262573, "o", "m"] +[31.591846647262575, "o", "o"] +[31.621846647262576, "o", "/"] +[31.651846647262577, "o", "w"] +[31.681846647262578, "o", "e"] +[31.71184664726258, "o", "a"] +[31.74184664726258, "o", "t"] +[31.77184664726258, "o", "h"] +[31.801846647262582, "o", "e"] +[31.831846647262584, "o", "r"] +[31.861846647262585, "o", " "] +[31.891846647262586, "o", "d"] +[31.921846647262587, "o", "a"] +[31.951846647262588, "o", "t"] +[31.98184664726259, "o", "a"] +[32.01184664726259, "o", "s"] +[32.04184664726259, "o", "e"] +[32.07184664726259, "o", "t"] +[32.10184664726259, "o", "-"] +[32.13184664726259, "o", "m"] +[32.16184664726259, "o", "e"] +[32.191846647262594, "o", "t"] +[32.221846647262595, "o", "a"] +[32.251846647262596, "o", "d"] +[32.2818466472626, "o", "a"] +[32.3118466472626, "o", "t"] +[32.3418466472626, "o", "a"] +[32.3718466472626, "o", "."] +[32.4018466472626, "o", "y"] +[32.4318466472626, "o", "m"] +[32.461846647262604, "o", "l"] +[32.491846647262605, "o", "\r\n"] +[32.521846647262606, "o", "\u001b[0m"] +[32.55184664726261, "o", "\r\n"] +[32.5534724235535, "o", "# This is a sample dataset metadata file that's used\r\n# to update the dataset's README and description.\r\n\r\nreadme: dataset-readme.md\r\ndescription: Weather history in Raleigh-Durham International airport joined with US domestic flights data (uploaded from Splitgraph release CI)\r\n"] +[32.55502524375919, "o", "# Sample dataset README\r\n\r\nDataset of weather history in Raleigh-Durham International airport, joined with\r\n[US domestic flights data](/splitgraph/domestic_us_flights).\r\n\r\nThis dataset was uploaded from a CI job.\r\n\r\n## Source\r\n\r\n[data.gov](https://catalog.data.gov/dataset/local-weather-archive)\r\n"] +[33.167115354538, "o", "Metadata updated for repository splitgraph-demo/weather.\r\n"] +[33.197115354538, "o", "\u001b[1m"] +[33.227115354538, "o", "\u001b[36m"] +[33.257115354538, "o", "\u001b[91m"] +[33.287115354538, "o", "$"] +[33.317115354538004, "o", " "] +[33.347115354538005, "o", "\u001b[0m"] +[39.39184664726247, "o", "\u001b[H"] +[39.42184664726247, "o", "\u001b[J"] +[39.45184664726247, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Perform a request against an automatically-generated"] +[39.48184664726247, "o", "\r\n"] +[39.51184664726247, "o", "$ # Postgrest (https://postgrest.org) endpoint.\r\n"] +[39.541846647262474, "o", "$"] +[39.571846647262475, "o", " "] +[39.60184664726248, "o", "c"] +[39.63184664726248, "o", "u"] +[39.66184664726248, "o", "r"] +[39.69184664726248, "o", "l"] +[39.72184664726248, "o", " "] +[39.75184664726248, "o", "\""] +[39.78184664726248, "o", "h"] +[39.811846647262485, "o", "t"] +[39.841846647262486, "o", "t"] +[39.87184664726249, "o", "p"] +[39.90184664726249, "o", "s"] +[39.93184664726249, "o", ":"] +[39.96184664726249, "o", "/"] +[39.99184664726249, "o", "/"] +[40.02184664726249, "o", "d"] +[40.051846647262494, "o", "a"] +[40.081846647262495, "o", "t"] +[40.111846647262496, "o", "a"] +[40.1418466472625, "o", "."] +[40.1718466472625, "o", "s"] +[40.2018466472625, "o", "p"] +[40.2318466472625, "o", "l"] +[40.2618466472625, "o", "i"] +[40.2918466472625, "o", "t"] +[40.321846647262504, "o", "g"] +[40.351846647262505, "o", "r"] +[40.381846647262506, "o", "a"] +[40.41184664726251, "o", "p"] +[40.44184664726251, "o", "h"] +[40.47184664726251, "o", "."] +[40.50184664726251, "o", "c"] +[40.53184664726251, "o", "o"] +[40.56184664726251, "o", "m"] +[40.591846647262514, "o", "/"] +[40.621846647262515, "o", "s"] +[40.651846647262516, "o", "p"] +[40.68184664726252, "o", "l"] +[40.71184664726252, "o", "i"] +[40.74184664726252, "o", "t"] +[40.77184664726252, "o", "g"] +[40.80184664726252, "o", "r"] +[40.83184664726252, "o", "a"] +[40.861846647262524, "o", "p"] +[40.891846647262525, "o", "h"] +[40.92184664726253, "o", "-"] +[40.95184664726253, "o", "d"] +[40.98184664726253, "o", "e"] +[41.01184664726253, "o", "m"] +[41.04184664726253, "o", "o"] +[41.07184664726253, "o", "/"] +[41.10184664726253, "o", "w"] +[41.131846647262535, "o", "e"] +[41.161846647262536, "o", "a"] +[41.19184664726254, "o", "t"] +[41.22184664726254, "o", "h"] +[41.25184664726254, "o", "e"] +[41.28184664726254, "o", "r"] +[41.31184664726254, "o", "/"] +[41.34184664726254, "o", "i"] +[41.371846647262544, "o", "n"] +[41.401846647262545, "o", "i"] +[41.431846647262546, "o", "t"] +[41.46184664726255, "o", "i"] +[41.49184664726255, "o", "a"] +[41.52184664726255, "o", "l"] +[41.55184664726255, "o", "_"] +[41.58184664726255, "o", "d"] +[41.61184664726255, "o", "a"] +[41.641846647262554, "o", "t"] +[41.671846647262555, "o", "a"] +[41.701846647262556, "o", "/"] +[41.73184664726256, "o", "-"] +[41.76184664726256, "o", "/"] +[41.79184664726256, "o", "r"] +[41.82184664726256, "o", "e"] +[41.85184664726256, "o", "s"] +[41.88184664726256, "o", "t"] +[41.911846647262564, "o", "/"] +[41.941846647262565, "o", "r"] +[41.971846647262566, "o", "d"] +[42.00184664726257, "o", "u"] +[42.03184664726257, "o", "?"] +[42.06184664726257, "o", "d"] +[42.09184664726257, "o", "a"] +[42.12184664726257, "o", "t"] +[42.15184664726257, "o", "e"] +[42.181846647262574, "o", "="] +[42.211846647262576, "o", "e"] +[42.24184664726258, "o", "q"] +[42.27184664726258, "o", "."] +[42.30184664726258, "o", "2"] +[42.33184664726258, "o", "0"] +[42.36184664726258, "o", "0"] +[42.39184664726258, "o", "9"] +[42.42184664726258, "o", "-"] +[42.451846647262585, "o", "0"] +[42.481846647262586, "o", "8"] +[42.51184664726259, "o", "-"] +[42.54184664726259, "o", "2"] +[42.57184664726259, "o", "5"] +[42.60184664726259, "o", "T"] +[42.63184664726259, "o", "0"] +[42.66184664726259, "o", "0"] +[42.691846647262594, "o", ":"] +[42.721846647262595, "o", "0"] +[42.751846647262596, "o", "0"] +[42.7818466472626, "o", ":"] +[42.8118466472626, "o", "0"] +[42.8418466472626, "o", "0"] +[42.8718466472626, "o", "\""] +[42.9018466472626, "o", "\r\n"] +[42.9318466472626, "o", "\u001b[0m"] +[42.961846647262604, "o", "\r\n"] +[43.910935220718414, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[43.940935220718416, "o", "\u001b[1m"] +[43.97093522071842, "o", "\u001b[36m"] +[44.00093522071842, "o", "\u001b[91m"] +[44.03093522071842, "o", "$"] +[44.06093522071842, "o", " "] +[44.09093522071842, "o", "\u001b[0m"] +[49.12093522071842, "o", "\u001b[H"] +[49.150935220718424, "o", "\u001b[J"] +[49.180935220718425, "o", "\u001b[1m\u001b[36m\u001b[91m$ # sgr also has a shorthand to access the query API"] +[49.210935220718426, "o", "\r\n"] +[49.24093522071843, "o", "$"] +[49.27093522071843, "o", " "] +[49.30093522071843, "o", "s"] +[49.33093522071843, "o", "g"] +[49.36093522071843, "o", "r"] +[49.39093522071843, "o", " "] +[49.420935220718434, "o", "c"] +[49.450935220718435, "o", "l"] +[49.480935220718436, "o", "o"] +[49.51093522071844, "o", "u"] +[49.54093522071844, "o", "d"] +[49.57093522071844, "o", " "] +[49.60093522071844, "o", "c"] +[49.63093522071844, "o", "u"] +[49.66093522071844, "o", "r"] +[49.690935220718444, "o", "l"] +[49.720935220718445, "o", " "] +[49.750935220718446, "o", "s"] +[49.78093522071845, "o", "p"] +[49.81093522071845, "o", "l"] +[49.84093522071845, "o", "i"] +[49.87093522071845, "o", "t"] +[49.90093522071845, "o", "g"] +[49.93093522071845, "o", "r"] +[49.960935220718454, "o", "a"] +[49.990935220718455, "o", "p"] +[50.02093522071846, "o", "h"] +[50.05093522071846, "o", "-"] +[50.08093522071846, "o", "d"] +[50.11093522071846, "o", "e"] +[50.14093522071846, "o", "m"] +[50.17093522071846, "o", "o"] +[50.20093522071846, "o", "/"] +[50.230935220718465, "o", "w"] +[50.260935220718466, "o", "e"] +[50.29093522071847, "o", "a"] +[50.32093522071847, "o", "t"] +[50.35093522071847, "o", "h"] +[50.38093522071847, "o", "e"] +[50.41093522071847, "o", "r"] +[50.44093522071847, "o", ":"] +[50.470935220718474, "o", "i"] +[50.500935220718475, "o", "n"] +[50.530935220718476, "o", "i"] +[50.56093522071848, "o", "t"] +[50.59093522071848, "o", "i"] +[50.62093522071848, "o", "a"] +[50.65093522071848, "o", "l"] +[50.68093522071848, "o", "_"] +[50.71093522071848, "o", "d"] +[50.740935220718484, "o", "a"] +[50.770935220718485, "o", "t"] +[50.800935220718486, "o", "a"] +[50.83093522071849, "o", " "] +[50.86093522071849, "o", "\""] +[50.89093522071849, "o", "r"] +[50.92093522071849, "o", "d"] +[50.95093522071849, "o", "u"] +[50.98093522071849, "o", "?"] +[51.010935220718494, "o", "d"] +[51.040935220718495, "o", "a"] +[51.070935220718496, "o", "t"] +[51.1009352207185, "o", "e"] +[51.1309352207185, "o", "="] +[51.1609352207185, "o", "e"] +[51.1909352207185, "o", "q"] +[51.2209352207185, "o", "."] +[51.2509352207185, "o", "2"] +[51.280935220718504, "o", "0"] +[51.310935220718505, "o", "0"] +[51.34093522071851, "o", "9"] +[51.37093522071851, "o", "-"] +[51.40093522071851, "o", "0"] +[51.43093522071851, "o", "8"] +[51.46093522071851, "o", "-"] +[51.49093522071851, "o", "2"] +[51.52093522071851, "o", "5"] +[51.550935220718515, "o", "T"] +[51.580935220718516, "o", "0"] +[51.61093522071852, "o", "0"] +[51.64093522071852, "o", ":"] +[51.67093522071852, "o", "0"] +[51.70093522071852, "o", "0"] +[51.73093522071852, "o", ":"] +[51.76093522071852, "o", "0"] +[51.790935220718524, "o", "0"] +[51.820935220718525, "o", "\""] +[51.850935220718526, "o", "\r\n"] +[51.88093522071853, "o", "\u001b[0m"] +[51.91093522071853, "o", "\r\n"] +[52.607262191772605, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[52.63726219177261, "o", "\u001b[1m"] +[52.66726219177261, "o", "\u001b[36m"] +[52.69726219177261, "o", "\u001b[91m"] +[52.72726219177261, "o", "$"] +[52.75726219177261, "o", " "] +[52.78726219177261, "o", "\u001b[0m"] +[57.81726219177261, "o", "\u001b[H"] +[57.847262191772614, "o", "\u001b[J"] +[57.877262191772616, "o", "\u001b[1m\u001b[36m\u001b[91m$ # You can also run a query against the Splitgraph Data Delivery Network."] +[57.90726219177262, "o", "\r\n"] +[57.93726219177262, "o", "$ # It supports most PostgresSQL clients and lets you query Splitgraph images and other\r\n"] +[57.96726219177262, "o", "$ # datasets proxied by Splitgraph.\r\n"] +[57.99726219177262, "o", "$"] +[58.02726219177262, "o", " "] +[58.05726219177262, "o", "s"] +[58.08726219177262, "o", "g"] +[58.117262191772625, "o", "r"] +[58.147262191772626, "o", " "] +[58.17726219177263, "o", "c"] +[58.20726219177263, "o", "l"] +[58.23726219177263, "o", "o"] +[58.26726219177263, "o", "u"] +[58.29726219177263, "o", "d"] +[58.32726219177263, "o", " "] +[58.357262191772634, "o", "s"] +[58.387262191772635, "o", "q"] +[58.417262191772636, "o", "l"] +[58.44726219177264, "o", " "] +[58.47726219177264, "o", "\""] +[58.50726219177264, "o", "S"] +[58.53726219177264, "o", "E"] +[58.56726219177264, "o", "L"] +[58.59726219177264, "o", "E"] +[58.627262191772644, "o", "C"] +[58.657262191772645, "o", "T"] +[58.687262191772646, "o", " "] +[58.71726219177265, "o", "d"] +[58.74726219177265, "o", "a"] +[58.77726219177265, "o", "t"] +[58.80726219177265, "o", "e"] +[58.83726219177265, "o", ","] +[58.86726219177265, "o", " "] +[58.897262191772654, "o", "t"] +[58.927262191772655, "o", "e"] +[58.95726219177266, "o", "m"] +[58.98726219177266, "o", "p"] +[59.01726219177266, "o", "e"] +[59.04726219177266, "o", "r"] +[59.07726219177266, "o", "a"] +[59.10726219177266, "o", "t"] +[59.13726219177266, "o", "u"] +[59.167262191772664, "o", "r"] +[59.197262191772666, "o", "e"] +[59.22726219177267, "o", "m"] +[59.25726219177267, "o", "i"] +[59.28726219177267, "o", "n"] +[59.31726219177267, "o", ","] +[59.34726219177267, "o", " "] +[59.37726219177267, "o", "t"] +[59.40726219177267, "o", "e"] +[59.437262191772675, "o", "m"] +[59.467262191772676, "o", "p"] +[59.49726219177268, "o", "e"] +[59.52726219177268, "o", "r"] +[59.55726219177268, "o", "a"] +[59.58726219177268, "o", "t"] +[59.61726219177268, "o", "u"] +[59.64726219177268, "o", "r"] +[59.677262191772684, "o", "e"] +[59.707262191772685, "o", "m"] +[59.737262191772686, "o", "a"] +[59.76726219177269, "o", "x"] +[59.79726219177269, "o", "\r\n "] +[59.82726219177269, "o", "F"] +[59.85726219177269, "o", "R"] +[59.88726219177269, "o", "O"] +[59.91726219177269, "o", "M"] +[59.947262191772694, "o", " "] +[59.977262191772695, "o", "\\"] +[60.007262191772696, "o", "\""] +[60.0372621917727, "o", "s"] +[60.0672621917727, "o", "p"] +[60.0972621917727, "o", "l"] +[60.1272621917727, "o", "i"] +[60.1572621917727, "o", "t"] +[60.1872621917727, "o", "g"] +[60.217262191772704, "o", "r"] +[60.247262191772705, "o", "a"] +[60.27726219177271, "o", "p"] +[60.30726219177271, "o", "h"] +[60.33726219177271, "o", "-"] +[60.36726219177271, "o", "d"] +[60.39726219177271, "o", "e"] +[60.42726219177271, "o", "m"] +[60.45726219177271, "o", "o"] +[60.487262191772714, "o", "/"] +[60.517262191772716, "o", "w"] +[60.54726219177272, "o", "e"] +[60.57726219177272, "o", "a"] +[60.60726219177272, "o", "t"] +[60.63726219177272, "o", "h"] +[60.66726219177272, "o", "e"] +[60.69726219177272, "o", "r"] +[60.727262191772724, "o", ":"] +[60.757262191772725, "o", "i"] +[60.787262191772726, "o", "n"] +[60.81726219177273, "o", "i"] +[60.84726219177273, "o", "t"] +[60.87726219177273, "o", "i"] +[60.90726219177273, "o", "a"] +[60.93726219177273, "o", "l"] +[60.96726219177273, "o", "_"] +[60.997262191772734, "o", "d"] +[61.027262191772735, "o", "a"] +[61.057262191772736, "o", "t"] +[61.08726219177274, "o", "a"] +[61.11726219177274, "o", "\\"] +[61.14726219177274, "o", "\""] +[61.17726219177274, "o", "."] +[61.20726219177274, "o", "r"] +[61.23726219177274, "o", "d"] +[61.267262191772744, "o", "u"] +[61.297262191772745, "o", "\r\n "] +[61.327262191772746, "o", "W"] +[61.35726219177275, "o", "H"] +[61.38726219177275, "o", "E"] +[61.41726219177275, "o", "R"] +[61.44726219177275, "o", "E"] +[61.47726219177275, "o", " "] +[61.50726219177275, "o", "d"] +[61.537262191772754, "o", "a"] +[61.567262191772755, "o", "t"] +[61.59726219177276, "o", "e"] +[61.62726219177276, "o", "_"] +[61.65726219177276, "o", "t"] +[61.68726219177276, "o", "r"] +[61.71726219177276, "o", "u"] +[61.74726219177276, "o", "n"] +[61.77726219177276, "o", "c"] +[61.807262191772764, "o", "("] +[61.837262191772766, "o", "'"] +[61.86726219177277, "o", "m"] +[61.89726219177277, "o", "o"] +[61.92726219177277, "o", "n"] +[61.95726219177277, "o", "t"] +[61.98726219177277, "o", "h"] +[62.01726219177277, "o", "'"] +[62.047262191772774, "o", ","] +[62.077262191772775, "o", " "] +[62.107262191772776, "o", "d"] +[62.13726219177278, "o", "a"] +[62.16726219177278, "o", "t"] +[62.19726219177278, "o", "e"] +[62.22726219177278, "o", ")"] +[62.25726219177278, "o", " "] +[62.28726219177278, "o", "="] +[62.317262191772784, "o", " "] +[62.347262191772785, "o", "'"] +[62.377262191772786, "o", "2"] +[62.40726219177279, "o", "0"] +[62.43726219177279, "o", "0"] +[62.46726219177279, "o", "9"] +[62.49726219177279, "o", "-"] +[62.52726219177279, "o", "0"] +[62.55726219177279, "o", "8"] +[62.587262191772794, "o", "-"] +[62.617262191772795, "o", "0"] +[62.647262191772796, "o", "1"] +[62.6772621917728, "o", "'"] +[62.7072621917728, "o", "\""] +[62.7372621917728, "o", "\r\n"] +[62.7672621917728, "o", "\u001b[0m"] +[62.7972621917728, "o", "\r\n"] +[63.7972621917728, "o", "2009-08-01 00:00:00 73 91.9\r\n2009-08-02 00:00:00 73.9 82.9\r\n2009-08-03 00:00:00 70 95\r\n2009-08-04 00:00:00 66.9 95\r\n2009-08-05 00:00:00 72 96.1\r\n2009-08-06 00:00:00 70 84.9\r\n2009-08-07 00:00:00 68 88\r\n2009-08-08 00:00:00 69.1 91\r\n2009-08-09 00:00:00 70 99\r\n2009-08-10 00:00:00 72 99\r\n"] +[63.8272621917728, "o", "\u001b[1m"] +[63.857262191772804, "o", "\u001b[36m"] +[63.887262191772805, "o", "\u001b[91m"] +[63.91726219177281, "o", "$"] +[63.94726219177281, "o", " "] +[63.97726219177281, "o", "\u001b[0m"] +[69.00726219177281, "o", "\u001b[H"] +[69.03726219177281, "o", "\u001b[J"] +[69.06726219177281, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The query API also supports running one-off Splitfile commands against a repository,"] +[69.09726219177281, "o", "\r\n"] +[69.12726219177281, "o", "$ # creating new images that can be pulled. sgr handles authentication for this automatically.\r\n"] +[69.15726219177282, "o", "$"] +[69.18726219177282, "o", " "] +[69.21726219177282, "o", "c"] +[69.24726219177282, "o", "a"] +[69.27726219177282, "o", "t"] +[69.30726219177282, "o", " "] +[69.33726219177282, "o", "r"] +[69.36726219177282, "o", "e"] +[69.39726219177282, "o", "q"] +[69.42726219177283, "o", "u"] +[69.45726219177283, "o", "e"] +[69.48726219177283, "o", "s"] +[69.51726219177283, "o", "t"] +[69.54726219177283, "o", "_"] +[69.57726219177283, "o", "1"] +[69.60726219177283, "o", "."] +[69.63726219177283, "o", "j"] +[69.66726219177283, "o", "s"] +[69.69726219177284, "o", "o"] +[69.72726219177284, "o", "n"] +[69.75726219177284, "o", "\r\n"] +[69.78726219177284, "o", "$"] +[69.81726219177284, "o", " "] +[69.84726219177284, "o", "s"] +[69.87726219177284, "o", "g"] +[69.90726219177284, "o", "r"] +[69.93726219177285, "o", " "] +[69.96726219177285, "o", "c"] +[69.99726219177285, "o", "l"] +[70.02726219177285, "o", "o"] +[70.05726219177285, "o", "u"] +[70.08726219177285, "o", "d"] +[70.11726219177285, "o", " "] +[70.14726219177285, "o", "c"] +[70.17726219177285, "o", "u"] +[70.20726219177286, "o", "r"] +[70.23726219177286, "o", "l"] +[70.26726219177286, "o", " "] +[70.29726219177286, "o", "-"] +[70.32726219177286, "o", "t"] +[70.35726219177286, "o", " "] +[70.38726219177286, "o", "s"] +[70.41726219177286, "o", "p"] +[70.44726219177286, "o", "l"] +[70.47726219177287, "o", "i"] +[70.50726219177287, "o", "t"] +[70.53726219177287, "o", "f"] +[70.56726219177287, "o", "i"] +[70.59726219177287, "o", "l"] +[70.62726219177287, "o", "e"] +[70.65726219177287, "o", " "] +[70.68726219177287, "o", "s"] +[70.71726219177287, "o", "p"] +[70.74726219177288, "o", "l"] +[70.77726219177288, "o", "i"] +[70.80726219177288, "o", "t"] +[70.83726219177288, "o", "g"] +[70.86726219177288, "o", "r"] +[70.89726219177288, "o", "a"] +[70.92726219177288, "o", "p"] +[70.95726219177288, "o", "h"] +[70.98726219177288, "o", "-"] +[71.01726219177289, "o", "d"] +[71.04726219177289, "o", "e"] +[71.07726219177289, "o", "m"] +[71.10726219177289, "o", "o"] +[71.13726219177289, "o", "/"] +[71.16726219177289, "o", "w"] +[71.1972621917729, "o", "e"] +[71.2272621917729, "o", "a"] +[71.2572621917729, "o", "t"] +[71.2872621917729, "o", "h"] +[71.3172621917729, "o", "e"] +[71.3472621917729, "o", "r"] +[71.3772621917729, "o", ":"] +[71.4072621917729, "o", "i"] +[71.4372621917729, "o", "n"] +[71.4672621917729, "o", "i"] +[71.4972621917729, "o", "t"] +[71.5272621917729, "o", "i"] +[71.5572621917729, "o", "a"] +[71.58726219177291, "o", "l"] +[71.61726219177291, "o", "_"] +[71.64726219177291, "o", "d"] +[71.67726219177291, "o", "a"] +[71.70726219177291, "o", "t"] +[71.73726219177291, "o", "a"] +[71.76726219177291, "o", " "] +[71.79726219177292, "o", "@"] +[71.82726219177292, "o", "r"] +[71.85726219177292, "o", "e"] +[71.88726219177292, "o", "q"] +[71.91726219177292, "o", "u"] +[71.94726219177292, "o", "e"] +[71.97726219177292, "o", "s"] +[72.00726219177292, "o", "t"] +[72.03726219177292, "o", "_"] +[72.06726219177293, "o", "1"] +[72.09726219177293, "o", "."] +[72.12726219177293, "o", "j"] +[72.15726219177293, "o", "s"] +[72.18726219177293, "o", "o"] +[72.21726219177293, "o", "n"] +[72.24726219177293, "o", "\r\n"] +[72.27726219177293, "o", "\u001b[0m"] +[72.30726219177294, "o", "\r\n"] +[72.30887247085619, "o", "{\"command\": \"FROM splitgraph/domestic_us_flights:latest IMPORT {SELECT fly_month, SUM(passengers) AS total_passengers FROM flights WHERE origin_airport = 'RDU' OR destination_airport = 'RDU' GROUP BY fly_month ORDER BY fly_month} AS flights\",\r\n \"tag\": \"with_flight_data\"}\r\n\r\n"] +[73.30887247085619, "o", "{\"image_hash\":\"0daf997ed87cab803da04e9fe944137e8122d0b5adfdd9679f7ec7ed67e5ae17\"}"] +[73.33887247085619, "o", "\u001b[1m"] +[73.36887247085619, "o", "\u001b[36m"] +[73.39887247085619, "o", "\u001b[91m"] +[73.42887247085619, "o", "$"] +[73.45887247085619, "o", " "] +[73.4888724708562, "o", "\u001b[0m"] +[78.5188724708562, "o", "\u001b[H"] +[78.5488724708562, "o", "\u001b[J"] +[78.5788724708562, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run another command against the new layer to join the two datasets"] +[78.6088724708562, "o", "\r\n"] +[78.6388724708562, "o", "$"] +[78.6688724708562, "o", " "] +[78.6988724708562, "o", "c"] +[78.7288724708562, "o", "a"] +[78.7588724708562, "o", "t"] +[78.7888724708562, "o", " "] +[78.8188724708562, "o", "r"] +[78.84887247085621, "o", "e"] +[78.87887247085621, "o", "q"] +[78.90887247085621, "o", "u"] +[78.93887247085621, "o", "e"] +[78.96887247085621, "o", "s"] +[78.99887247085621, "o", "t"] +[79.02887247085621, "o", "_"] +[79.05887247085622, "o", "2"] +[79.08887247085622, "o", "."] +[79.11887247085622, "o", "j"] +[79.14887247085622, "o", "s"] +[79.17887247085622, "o", "o"] +[79.20887247085622, "o", "n"] +[79.23887247085622, "o", "\r\n"] +[79.26887247085622, "o", "$"] +[79.29887247085622, "o", " "] +[79.32887247085623, "o", "s"] +[79.35887247085623, "o", "g"] +[79.38887247085623, "o", "r"] +[79.41887247085623, "o", " "] +[79.44887247085623, "o", "c"] +[79.47887247085623, "o", "l"] +[79.50887247085623, "o", "o"] +[79.53887247085623, "o", "u"] +[79.56887247085623, "o", "d"] +[79.59887247085624, "o", " "] +[79.62887247085624, "o", "c"] +[79.65887247085624, "o", "u"] +[79.68887247085624, "o", "r"] +[79.71887247085624, "o", "l"] +[79.74887247085624, "o", " "] +[79.77887247085624, "o", "-"] +[79.80887247085624, "o", "t"] +[79.83887247085624, "o", " "] +[79.86887247085625, "o", "s"] +[79.89887247085625, "o", "p"] +[79.92887247085625, "o", "l"] +[79.95887247085625, "o", "i"] +[79.98887247085625, "o", "t"] +[80.01887247085625, "o", "f"] +[80.04887247085625, "o", "i"] +[80.07887247085625, "o", "l"] +[80.10887247085626, "o", "e"] +[80.13887247085626, "o", " "] +[80.16887247085626, "o", "s"] +[80.19887247085626, "o", "p"] +[80.22887247085626, "o", "l"] +[80.25887247085626, "o", "i"] +[80.28887247085626, "o", "t"] +[80.31887247085626, "o", "g"] +[80.34887247085626, "o", "r"] +[80.37887247085627, "o", "a"] +[80.40887247085627, "o", "p"] +[80.43887247085627, "o", "h"] +[80.46887247085627, "o", "-"] +[80.49887247085627, "o", "d"] +[80.52887247085627, "o", "e"] +[80.55887247085627, "o", "m"] +[80.58887247085627, "o", "o"] +[80.61887247085627, "o", "/"] +[80.64887247085628, "o", "w"] +[80.67887247085628, "o", "e"] +[80.70887247085628, "o", "a"] +[80.73887247085628, "o", "t"] +[80.76887247085628, "o", "h"] +[80.79887247085628, "o", "e"] +[80.82887247085628, "o", "r"] +[80.85887247085628, "o", ":"] +[80.88887247085628, "o", "w"] +[80.91887247085629, "o", "i"] +[80.94887247085629, "o", "t"] +[80.97887247085629, "o", "h"] +[81.00887247085629, "o", "_"] +[81.03887247085629, "o", "f"] +[81.06887247085629, "o", "l"] +[81.09887247085629, "o", "i"] +[81.1288724708563, "o", "g"] +[81.1588724708563, "o", "h"] +[81.1888724708563, "o", "t"] +[81.2188724708563, "o", "_"] +[81.2488724708563, "o", "d"] +[81.2788724708563, "o", "a"] +[81.3088724708563, "o", "t"] +[81.3388724708563, "o", "a"] +[81.3688724708563, "o", " "] +[81.3988724708563, "o", "@"] +[81.4288724708563, "o", "r"] +[81.4588724708563, "o", "e"] +[81.48887247085631, "o", "q"] +[81.51887247085631, "o", "u"] +[81.54887247085631, "o", "e"] +[81.57887247085631, "o", "s"] +[81.60887247085631, "o", "t"] +[81.63887247085631, "o", "_"] +[81.66887247085631, "o", "2"] +[81.69887247085632, "o", "."] +[81.72887247085632, "o", "j"] +[81.75887247085632, "o", "s"] +[81.78887247085632, "o", "o"] +[81.81887247085632, "o", "n"] +[81.84887247085632, "o", "\r\n"] +[81.87887247085632, "o", "\u001b[0m"] +[81.90887247085632, "o", "\r\n"] +[81.91046606063904, "o", "{\"command\": \"SQL CREATE TABLE rdu_flights_weather AS ( WITH monthly_summary AS (SELECT date_trunc ('month', date) AS month, AVG(temperaturemin) AS tmin_avg, AVG(temperaturemax) AS tmax_avg FROM rdu GROUP BY month) SELECT w.month, w.tmin_avg, w.tmax_avg, f.total_passengers FROM monthly_summary w JOIN flights f ON w.month = f.fly_month)\",\r\n \"tag\": \"joined_data\"}\r\n\r\n"] +[82.82129894256653, "o", "{\"image_hash\":\"5306d2dc174dc113548681cdd935d5d83452a264da93211e200d41c8c939239e\"}"] +[82.85129894256653, "o", "\u001b[1m"] +[82.88129894256653, "o", "\u001b[36m"] +[82.91129894256653, "o", "\u001b[91m"] +[82.94129894256653, "o", "$"] +[82.97129894256653, "o", " "] +[83.00129894256654, "o", "\u001b[0m"] +[88.03129894256654, "o", "\u001b[H"] +[88.06129894256654, "o", "\u001b[J"] +[88.09129894256654, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Pull the dataset and check out the new image"] +[88.12129894256654, "o", "\r\n"] +[88.15129894256654, "o", "$"] +[88.18129894256654, "o", " "] +[88.21129894256654, "o", "s"] +[88.24129894256654, "o", "g"] +[88.27129894256655, "o", "r"] +[88.30129894256655, "o", " "] +[88.33129894256655, "o", "p"] +[88.36129894256655, "o", "u"] +[88.39129894256655, "o", "l"] +[88.42129894256655, "o", "l"] +[88.45129894256655, "o", " "] +[88.48129894256655, "o", "w"] +[88.51129894256655, "o", "e"] +[88.54129894256656, "o", "a"] +[88.57129894256656, "o", "t"] +[88.60129894256656, "o", "h"] +[88.63129894256656, "o", "e"] +[88.66129894256656, "o", "r"] +[88.69129894256656, "o", "\r\n"] +[88.72129894256656, "o", "$"] +[88.75129894256656, "o", " "] +[88.78129894256656, "o", "s"] +[88.81129894256657, "o", "g"] +[88.84129894256657, "o", "r"] +[88.87129894256657, "o", " "] +[88.90129894256657, "o", "c"] +[88.93129894256657, "o", "h"] +[88.96129894256657, "o", "e"] +[88.99129894256657, "o", "c"] +[89.02129894256657, "o", "k"] +[89.05129894256658, "o", "o"] +[89.08129894256658, "o", "u"] +[89.11129894256658, "o", "t"] +[89.14129894256658, "o", " "] +[89.17129894256658, "o", "w"] +[89.20129894256658, "o", "e"] +[89.23129894256658, "o", "a"] +[89.26129894256658, "o", "t"] +[89.29129894256658, "o", "h"] +[89.32129894256659, "o", "e"] +[89.35129894256659, "o", "r"] +[89.38129894256659, "o", ":"] +[89.41129894256659, "o", "j"] +[89.44129894256659, "o", "o"] +[89.47129894256659, "o", "i"] +[89.50129894256659, "o", "n"] +[89.5312989425666, "o", "e"] +[89.5612989425666, "o", "d"] +[89.5912989425666, "o", "_"] +[89.6212989425666, "o", "d"] +[89.6512989425666, "o", "a"] +[89.6812989425666, "o", "t"] +[89.7112989425666, "o", "a"] +[89.7412989425666, "o", "\r\n"] +[89.7712989425666, "o", "\u001b[0m"] +[89.8012989425666, "o", "\r\n"] +[90.01298078537056, "o", "Gathering remote metadata...\r\n"] +[91.01298078537056, "o", "Fetched metadata for 2 images, 5 tables, 2 objects and 2 tags.\r\n"] +[91.2627111339576, "o", "Need to download 1 object (3.02 KiB), cache occupancy: 0.00 B/10.00 GiB\r\n"] +[91.31603154182503, "o", "Fetching 1 object, total size 3.02 KiB\r\n"] +[91.32041701316902, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (ca446922b2844ed19f8e6c8b35edbe31@data.splitgraph.com:5432/sgregistry)...\r\n"] +[92.17711791038582, "o", "\r 0%| | 0/1 [00:00 4a832e4a1b62\r\n"] +[34.746944465637284, "o", "\u001b[1m\r\nStep 2/3 : FROM splitgraph/2016_election IMPORT { SELECT lpad(co...\u001b[0m\r\n"] +[34.74812654495247, "o", "Resolving repository splitgraph/2016_election\r\n"] +[35.33467082023628, "o", "Gathering remote metadata...\r\n"] +[36.33467082023628, "o", "Fetched metadata for 1 image, 1 table, 20 objects and 1 tag.\r\n"] +[36.351654090881425, "o", "Importing 1 table from splitgraph/2016_election:3835145ada3f into qoz_vote_fraction\r\n"] +[37.351654090881425, "o", "Processing table sg_tmp_9a57691466750936f7f2124be232bf25\r\n"] +[37.654264011383134, "o", " ---> 105f0cc16f07\r\n"] +[37.65830878257759, "o", "\u001b[1m\r\nStep 3/3 : SQL { CREATE TABLE qoz_vote_fraction AS SELECT ...\u001b[0m\r\n"] +[37.6696212673188, "o", "Executing SQL...\r\n"] +[37.68343214035042, "o", "Committing qoz_vote_fraction...\r\n"] +[37.712867774963456, "o", "Processing table qoz_vote_fraction\r\n"] +[37.833948411941606, "o", " ---> 2fd53f55d05e\r\n"] +[37.83784798622139, "o", "Successfully built qoz_vote_fraction:2fd53f55d05e.\r\n"] +[37.86784798622139, "o", "\u001b[1m"] +[37.89784798622139, "o", "\u001b[36m"] +[37.927847986221394, "o", "\u001b[91m"] +[37.957847986221395, "o", "$"] +[37.9878479862214, "o", " "] +[38.0178479862214, "o", "\u001b[0m"] +[44.03, "o", "\u001b[H"] +[44.06, "o", "\u001b[J"] +[44.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the dataset metadata"] +[44.120000000000005, "o", "\r\n"] +[44.150000000000006, "o", "$"] +[44.18000000000001, "o", " "] +[44.21000000000001, "o", "s"] +[44.24000000000001, "o", "g"] +[44.27000000000001, "o", "r"] +[44.30000000000001, "o", " "] +[44.33000000000001, "o", "s"] +[44.360000000000014, "o", "h"] +[44.390000000000015, "o", "o"] +[44.420000000000016, "o", "w"] +[44.45000000000002, "o", " "] +[44.48000000000002, "o", "q"] +[44.51000000000002, "o", "o"] +[44.54000000000002, "o", "z"] +[44.57000000000002, "o", "_"] +[44.60000000000002, "o", "v"] +[44.630000000000024, "o", "o"] +[44.660000000000025, "o", "t"] +[44.690000000000026, "o", "e"] +[44.72000000000003, "o", "_"] +[44.75000000000003, "o", "f"] +[44.78000000000003, "o", "r"] +[44.81000000000003, "o", "a"] +[44.84000000000003, "o", "c"] +[44.87000000000003, "o", "t"] +[44.900000000000034, "o", "i"] +[44.930000000000035, "o", "o"] +[44.960000000000036, "o", "n"] +[44.99000000000004, "o", "\r\n"] +[45.02000000000004, "o", "$"] +[45.05000000000004, "o", " "] +[45.08000000000004, "o", "s"] +[45.11000000000004, "o", "g"] +[45.14000000000004, "o", "r"] +[45.170000000000044, "o", " "] +[45.200000000000045, "o", "t"] +[45.23000000000005, "o", "a"] +[45.26000000000005, "o", "b"] +[45.29000000000005, "o", "l"] +[45.32000000000005, "o", "e"] +[45.35000000000005, "o", " "] +[45.38000000000005, "o", "q"] +[45.41000000000005, "o", "o"] +[45.440000000000055, "o", "z"] +[45.470000000000056, "o", "_"] +[45.50000000000006, "o", "v"] +[45.53000000000006, "o", "o"] +[45.56000000000006, "o", "t"] +[45.59000000000006, "o", "e"] +[45.62000000000006, "o", "_"] +[45.65000000000006, "o", "f"] +[45.680000000000064, "o", "r"] +[45.710000000000065, "o", "a"] +[45.740000000000066, "o", "c"] +[45.77000000000007, "o", "t"] +[45.80000000000007, "o", "i"] +[45.83000000000007, "o", "o"] +[45.86000000000007, "o", "n"] +[45.89000000000007, "o", " "] +[45.92000000000007, "o", "q"] +[45.950000000000074, "o", "o"] +[45.980000000000075, "o", "z"] +[46.010000000000076, "o", "_"] +[46.04000000000008, "o", "v"] +[46.07000000000008, "o", "o"] +[46.10000000000008, "o", "t"] +[46.13000000000008, "o", "e"] +[46.16000000000008, "o", "_"] +[46.19000000000008, "o", "f"] +[46.220000000000084, "o", "r"] +[46.250000000000085, "o", "a"] +[46.280000000000086, "o", "c"] +[46.31000000000009, "o", "t"] +[46.34000000000009, "o", "i"] +[46.37000000000009, "o", "o"] +[46.40000000000009, "o", "n"] +[46.43000000000009, "o", "\r\n"] +[46.46000000000009, "o", "\u001b[0m"] +[46.490000000000094, "o", "\r\n"] +[46.70139788627634, "o", "Image qoz_vote_fraction:2fd53f55d05e97d62ffba88cb98f010eb4a3a42143b94711bc7a19338157748e\r\n"] +[46.70173667907724, "o", " CREATE TABLE qoz_vote_fraction AS SELECT v.county_id, COALESCE(qoz_tract_fraction, 0) AS qoz_tract_fraction, trump_vote_fraction, clinton_vote_fraction, total_votes FROM vote_fraction v LEFT JOIN qoz_tract_fraction q ON q.county_id = v.county_id WHERE v.county_id IS NOT NULL; ALTER TABLE qoz_vote_fraction ADD PRIMARY KEY (county_id);\r\nCreated at 2021-03-17T18:13:33.751086\r\n"] +[46.70269607543955, "o", "Size: 220.67 KiB\r\n"] +[46.70270537376413, "o", "Parent: 105f0cc16f0756e1fab3e8e4a9cb50d704b35dbad72fdf6513e3862c84353562\r\n\r\nTables:\r\n"] +[46.70324253082285, "o", " qoz_tract_fraction\r\n qoz_vote_fraction\r\n"] +[46.703256835937594, "o", " vote_fraction\r\n"] +[46.91856788635263, "o", "Table qoz_vote_fraction:2fd53f55d05e97d62ffba88cb98f010eb4a3a42143b94711bc7a19338157748e/qoz_vote_fraction\r\n\r\n"] +[46.91972826957712, "o", "Size: 107.08 KiB\r\n"] +[46.920658340454196, "o", "Rows: 3114\r\n"] +[46.92068075180063, "o", "Columns: \r\n county_id (text, PK)\r\n qoz_tract_fraction (numeric)\r\n trump_vote_fraction (numeric)\r\n clinton_vote_fraction (numeric)\r\n total_votes (numeric)\r\n\r\n"] +[46.92068718910227, "o", "Objects: \r\n oc423b7e057e6f48cb616bea1291248f22eafeeb17231ae9b8a0de978cbeccf\r\n"] +[46.95068718910227, "o", "\u001b[1m"] +[46.98068718910227, "o", "\u001b[36m"] +[47.01068718910227, "o", "\u001b[91m"] +[47.04068718910227, "o", "$"] +[47.07068718910227, "o", " "] +[47.100687189102274, "o", "\u001b[0m"] +[57.53, "o", "\u001b[H"] +[57.56, "o", "\u001b[J"] +[57.59, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get the data for New York County (FIPS 36061)"] +[57.620000000000005, "o", "\r\n"] +[57.650000000000006, "o", "$"] +[57.68000000000001, "o", " "] +[57.71000000000001, "o", "s"] +[57.74000000000001, "o", "g"] +[57.77000000000001, "o", "r"] +[57.80000000000001, "o", " "] +[57.83000000000001, "o", "s"] +[57.860000000000014, "o", "q"] +[57.890000000000015, "o", "l"] +[57.920000000000016, "o", " "] +[57.95000000000002, "o", "-"] +[57.98000000000002, "o", "s"] +[58.01000000000002, "o", " "] +[58.04000000000002, "o", "q"] +[58.07000000000002, "o", "o"] +[58.10000000000002, "o", "z"] +[58.130000000000024, "o", "_"] +[58.160000000000025, "o", "v"] +[58.190000000000026, "o", "o"] +[58.22000000000003, "o", "t"] +[58.25000000000003, "o", "e"] +[58.28000000000003, "o", "_"] +[58.31000000000003, "o", "f"] +[58.34000000000003, "o", "r"] +[58.37000000000003, "o", "a"] +[58.400000000000034, "o", "c"] +[58.430000000000035, "o", "t"] +[58.460000000000036, "o", "i"] +[58.49000000000004, "o", "o"] +[58.52000000000004, "o", "n"] +[58.55000000000004, "o", " "] +[58.58000000000004, "o", "\\"] +[58.61000000000004, "o", "\r\n "] +[58.64000000000004, "o", "\""] +[58.670000000000044, "o", "S"] +[58.700000000000045, "o", "E"] +[58.73000000000005, "o", "L"] +[58.76000000000005, "o", "E"] +[58.79000000000005, "o", "C"] +[58.82000000000005, "o", "T"] +[58.85000000000005, "o", " "] +[58.88000000000005, "o", "r"] +[58.91000000000005, "o", "o"] +[58.940000000000055, "o", "w"] +[58.970000000000056, "o", "_"] +[59.00000000000006, "o", "t"] +[59.03000000000006, "o", "o"] +[59.06000000000006, "o", "_"] +[59.09000000000006, "o", "j"] +[59.12000000000006, "o", "s"] +[59.15000000000006, "o", "o"] +[59.180000000000064, "o", "n"] +[59.210000000000065, "o", "("] +[59.240000000000066, "o", "d"] +[59.27000000000007, "o", ")"] +[59.30000000000007, "o", " "] +[59.33000000000007, "o", "F"] +[59.36000000000007, "o", "R"] +[59.39000000000007, "o", "O"] +[59.42000000000007, "o", "M"] +[59.450000000000074, "o", " "] +[59.480000000000075, "o", "("] +[59.510000000000076, "o", "S"] +[59.54000000000008, "o", "E"] +[59.57000000000008, "o", "L"] +[59.60000000000008, "o", "E"] +[59.63000000000008, "o", "C"] +[59.66000000000008, "o", "T"] +[59.69000000000008, "o", " "] +[59.720000000000084, "o", "*"] +[59.750000000000085, "o", " "] +[59.780000000000086, "o", "F"] +[59.81000000000009, "o", "R"] +[59.84000000000009, "o", "O"] +[59.87000000000009, "o", "M"] +[59.90000000000009, "o", " "] +[59.93000000000009, "o", "q"] +[59.96000000000009, "o", "o"] +[59.990000000000094, "o", "z"] +[60.020000000000095, "o", "_"] +[60.0500000000001, "o", "v"] +[60.0800000000001, "o", "o"] +[60.1100000000001, "o", "t"] +[60.1400000000001, "o", "e"] +[60.1700000000001, "o", "_"] +[60.2000000000001, "o", "f"] +[60.2300000000001, "o", "r"] +[60.260000000000105, "o", "a"] +[60.290000000000106, "o", "c"] +[60.32000000000011, "o", "t"] +[60.35000000000011, "o", "i"] +[60.38000000000011, "o", "o"] +[60.41000000000011, "o", "n"] +[60.44000000000011, "o", " "] +[60.47000000000011, "o", "W"] +[60.500000000000114, "o", "H"] +[60.530000000000115, "o", "E"] +[60.560000000000116, "o", "R"] +[60.59000000000012, "o", "E"] +[60.62000000000012, "o", " "] +[60.65000000000012, "o", "c"] +[60.68000000000012, "o", "o"] +[60.71000000000012, "o", "u"] +[60.74000000000012, "o", "n"] +[60.770000000000124, "o", "t"] +[60.800000000000125, "o", "y"] +[60.830000000000126, "o", "_"] +[60.86000000000013, "o", "i"] +[60.89000000000013, "o", "d"] +[60.92000000000013, "o", " "] +[60.95000000000013, "o", "="] +[60.98000000000013, "o", " "] +[61.01000000000013, "o", "'"] +[61.040000000000134, "o", "3"] +[61.070000000000135, "o", "6"] +[61.100000000000136, "o", "0"] +[61.13000000000014, "o", "6"] +[61.16000000000014, "o", "1"] +[61.19000000000014, "o", "'"] +[61.22000000000014, "o", ")"] +[61.25000000000014, "o", " "] +[61.28000000000014, "o", "d"] +[61.310000000000144, "o", "\""] +[61.340000000000146, "o", "\r\n"] +[61.37000000000015, "o", "\u001b[0m"] +[61.40000000000015, "o", "\r\n"] +[61.61787285804763, "o", "{'county_id': '36061', 'qoz_tract_fraction': 0.125, 'trump_vote_fraction': 0.08865095716546313, 'clinton_vote_fraction': 0.7905445350569275, 'total_votes': 732423}\r\n"] +[61.647872858047634, "o", "\u001b[1m"] +[61.677872858047635, "o", "\u001b[36m"] +[61.70787285804764, "o", "\u001b[91m"] +[61.73787285804764, "o", "$"] +[61.76787285804764, "o", " "] +[61.79787285804764, "o", "\u001b[0m"] +[66.82787285804764, "o", "\u001b[H"] +[66.85787285804764, "o", "\u001b[J"] +[66.88787285804764, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Do a quick analysis of the dataset."] +[66.91787285804764, "o", "\r\n"] +[66.94787285804765, "o", "$"] +[66.97787285804765, "o", " "] +[67.00787285804765, "o", "c"] +[67.03787285804765, "o", "a"] +[67.06787285804765, "o", "t"] +[67.09787285804765, "o", " "] +[67.12787285804765, "o", "a"] +[67.15787285804765, "o", "n"] +[67.18787285804765, "o", "a"] +[67.21787285804766, "o", "l"] +[67.24787285804766, "o", "y"] +[67.27787285804766, "o", "z"] +[67.30787285804766, "o", "e"] +[67.33787285804766, "o", "."] +[67.36787285804766, "o", "p"] +[67.39787285804766, "o", "y"] +[67.42787285804766, "o", "\r\n"] +[67.45787285804766, "o", "$"] +[67.48787285804767, "o", " "] +[67.51787285804767, "o", "p"] +[67.54787285804767, "o", "y"] +[67.57787285804767, "o", "t"] +[67.60787285804767, "o", "h"] +[67.63787285804767, "o", "o"] +[67.66787285804767, "o", "n"] +[67.69787285804767, "o", " "] +[67.72787285804768, "o", "a"] +[67.75787285804768, "o", "n"] +[67.78787285804768, "o", "a"] +[67.81787285804768, "o", "l"] +[67.84787285804768, "o", "y"] +[67.87787285804768, "o", "z"] +[67.90787285804768, "o", "e"] +[67.93787285804768, "o", "."] +[67.96787285804768, "o", "p"] +[67.99787285804769, "o", "y"] +[68.02787285804769, "o", "\r\n"] +[68.05787285804769, "o", "\u001b[0m"] +[68.08787285804769, "o", "\r\n"] +[68.09034049034139, "o", "import scipy.stats as ss\r\n\r\nfrom splitgraph.core.repository import Repository\r\nfrom splitgraph.ingestion.pandas import sql_to_df\r\n\r\n# Load the dataset we created into Pandas\r\nimage = Repository(\"\", \"qoz_vote_fraction\").images[\"latest\"]\r\ndf = sql_to_df(\"SELECT * FROM qoz_vote_fraction\", image=image, use_lq=True)\r\nprint(df)\r\n\r\n# Is there a correlation between the Trump vote fraction and the fraction of"] +[68.09035026550313, "o", "\r\n# QOZ-qualified tracts in every county?\r\nprint(ss.linregress(df[\"trump_vote_fraction\"], df[\"qoz_tract_fraction\"]))\r\n"] +[69.09035026550313, "o", " county_id qoz_tract_fraction trump_vote_fraction clinton_vote_fraction total_votes\r\n0 01001 0.083333 0.491135 0.160432 37000.0\r\n1 01003 0.187500 0.496056 0.125629 146925.0\r\n2 01005 0.111111 0.330305 0.294998 16512.0\r\n3 01007 0.250000 0.485132 0.134927 13889.0\r\n4 01009 0.111111 "] +[69.0903598022463, "o", "0.588017 0.055430 38788.0\r\n... ... ... ... ... ...\r\n3109 56037 0.083333 0.709515 0.188616 17130.0\r\n3110 56039 0.000000 0.310525 0.579235 12627.0\r\n3111 56041 0.333333 0.726564 0.141913 8470.0\r\n3112 56043 0.333333 0.763241 0.139486 3814.0\r\n3"] +[69.09036743164083, "o", "113 56045 0.000000 0.860182 0.084799 3526.0\r\n\r\n[3114 rows x 5 columns]\r\n"] +[69.09222352027913, "o", "LinregressResult(slope=-0.06217947076052383, intercept=0.1781160377798594, rvalue=-0.05782420568050623, pvalue=0.0012457930627282692, stderr=0.019243775109388402, intercept_stderr=0.012338526356298417)\r\n"] +[69.12222352027914, "o", "\u001b[1m"] +[69.15222352027914, "o", "\u001b[36m"] +[69.18222352027914, "o", "\u001b[91m"] +[69.21222352027914, "o", "$"] +[69.24222352027914, "o", " "] +[69.27222352027914, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.11/bloom-filter.cast b/content/casts/versioned/archive/v0.2.11/bloom-filter.cast new file mode 100644 index 00000000..eba8a03a --- /dev/null +++ b/content/casts/versioned/archive/v0.2.11/bloom-filter.cast @@ -0,0 +1,983 @@ +{"version": 2, "width": 100, "height": 56, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1617021825, "metadata": {"tss": [{"h": "This example will use the 2016 US presidential election dataset", "ts": 0.06}, {"h": "The table is sorted by voting precinct and so queries that filter by that", "ts": 8.538267488479612}, {"h": "Currently we have no fragments in cache. Let's run this query and check the cache again", "ts": 18.468993282318024}, {"h": "Since default indexing in Splitgraph is done by min-max values for every column", "ts": 30.178324079513658}, {"h": "Let's download the whole dataset and add a bloom filter index on county_name", "ts": 40.4644195461276}, {"h": "Check the metadata of a new object to see details about the bloom filter structure", "ts": 69.53635540008588}, {"h": "Plan the query again: because the bloom filter can drop most fragments -", "ts": 97.03635540008588}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # This example will use the 2016 US presidential election dataset"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # to show off how indexing with a bloom filter can improve query performance.\r\n"] +[0.18, "o", "$ #\r\n"] +[0.21, "o", "$ # First, clone the whole dataset without downloading it.\r\n"] +[0.24, "o", "$"] +[0.27, "o", " "] +[0.30000000000000004, "o", "s"] +[0.33000000000000007, "o", "g"] +[0.3600000000000001, "o", "r"] +[0.3900000000000001, "o", " "] +[0.42000000000000015, "o", "c"] +[0.4500000000000002, "o", "l"] +[0.4800000000000002, "o", "o"] +[0.5100000000000002, "o", "n"] +[0.5400000000000003, "o", "e"] +[0.5700000000000003, "o", " "] +[0.6000000000000003, "o", "s"] +[0.6300000000000003, "o", "p"] +[0.6600000000000004, "o", "l"] +[0.6900000000000004, "o", "i"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "g"] +[0.7800000000000005, "o", "r"] +[0.8100000000000005, "o", "a"] +[0.8400000000000005, "o", "p"] +[0.8700000000000006, "o", "h"] +[0.9000000000000006, "o", "/"] +[0.9300000000000006, "o", "2"] +[0.9600000000000006, "o", "0"] +[0.9900000000000007, "o", "1"] +[1.0200000000000007, "o", "6"] +[1.0500000000000007, "o", "_"] +[1.0800000000000007, "o", "e"] +[1.1100000000000008, "o", "l"] +[1.1400000000000008, "o", "e"] +[1.1700000000000008, "o", "c"] +[1.2000000000000008, "o", "t"] +[1.2300000000000009, "o", "i"] +[1.260000000000001, "o", "o"] +[1.290000000000001, "o", "n"] +[1.320000000000001, "o", "\r\n"] +[1.350000000000001, "o", "\u001b[0m"] +[1.380000000000001, "o", "\r\n"] +[2.298267488479615, "o", "Gathering remote metadata...\r\n"] +[3.298267488479615, "o", "Fetched metadata for 1 image, 1 table, 20 objects and 1 tag.\r\n"] +[3.328267488479615, "o", "\u001b[1m"] +[3.3582674884796146, "o", "\u001b[36m"] +[3.3882674884796145, "o", "\u001b[91m"] +[3.4182674884796143, "o", "$"] +[3.448267488479614, "o", " "] +[3.478267488479614, "o", "\u001b[0m"] +[8.508267488479612, "o", "\u001b[H"] +[8.538267488479612, "o", "\u001b[J"] +[8.568267488479611, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The table is sorted by voting precinct and so queries that filter by that"] +[8.59826748847961, "o", "\r\n"] +[8.62826748847961, "o", "$ # (or by state, since precinct FIPS codes have the state as the prefix)\r\n"] +[8.65826748847961, "o", "$ # will use and download fewer fragments (6MiB/27MiB)\r\n"] +[8.688267488479609, "o", "$"] +[8.718267488479608, "o", " "] +[8.748267488479607, "o", "s"] +[8.778267488479607, "o", "g"] +[8.808267488479606, "o", "r"] +[8.838267488479605, "o", " "] +[8.868267488479605, "o", "s"] +[8.898267488479604, "o", "q"] +[8.928267488479603, "o", "l"] +[8.958267488479603, "o", " "] +[8.988267488479602, "o", "-"] +[9.018267488479601, "o", "-"] +[9.0482674884796, "o", "i"] +[9.0782674884796, "o", "m"] +[9.1082674884796, "o", "a"] +[9.138267488479599, "o", "g"] +[9.168267488479598, "o", "e"] +[9.198267488479598, "o", " "] +[9.228267488479597, "o", "s"] +[9.258267488479596, "o", "p"] +[9.288267488479596, "o", "l"] +[9.318267488479595, "o", "i"] +[9.348267488479594, "o", "t"] +[9.378267488479594, "o", "g"] +[9.408267488479593, "o", "r"] +[9.438267488479593, "o", "a"] +[9.468267488479592, "o", "p"] +[9.498267488479591, "o", "h"] +[9.52826748847959, "o", "/"] +[9.55826748847959, "o", "2"] +[9.58826748847959, "o", "0"] +[9.618267488479589, "o", "1"] +[9.648267488479588, "o", "6"] +[9.678267488479587, "o", "_"] +[9.708267488479587, "o", "e"] +[9.738267488479586, "o", "l"] +[9.768267488479585, "o", "e"] +[9.798267488479585, "o", "c"] +[9.828267488479584, "o", "t"] +[9.858267488479584, "o", "i"] +[9.888267488479583, "o", "o"] +[9.918267488479582, "o", "n"] +[9.948267488479582, "o", ":"] +[9.978267488479581, "o", "l"] +[10.00826748847958, "o", "a"] +[10.03826748847958, "o", "t"] +[10.068267488479579, "o", "e"] +[10.098267488479578, "o", "s"] +[10.128267488479578, "o", "t"] +[10.158267488479577, "o", " "] +[10.188267488479577, "o", "\\"] +[10.218267488479576, "o", "\r\n "] +[10.248267488479575, "o", "\""] +[10.278267488479575, "o", "E"] +[10.308267488479574, "o", "X"] +[10.338267488479573, "o", "P"] +[10.368267488479573, "o", "L"] +[10.398267488479572, "o", "A"] +[10.428267488479571, "o", "I"] +[10.45826748847957, "o", "N"] +[10.48826748847957, "o", " "] +[10.51826748847957, "o", "S"] +[10.548267488479569, "o", "E"] +[10.578267488479568, "o", "L"] +[10.608267488479568, "o", "E"] +[10.638267488479567, "o", "C"] +[10.668267488479566, "o", "T"] +[10.698267488479566, "o", " "] +[10.728267488479565, "o", "S"] +[10.758267488479564, "o", "U"] +[10.788267488479564, "o", "M"] +[10.818267488479563, "o", "("] +[10.848267488479562, "o", "v"] +[10.878267488479562, "o", "o"] +[10.908267488479561, "o", "t"] +[10.93826748847956, "o", "e"] +[10.96826748847956, "o", "s"] +[10.99826748847956, "o", ")"] +[11.028267488479559, "o", " "] +[11.058267488479558, "o", "F"] +[11.088267488479557, "o", "R"] +[11.118267488479557, "o", "O"] +[11.148267488479556, "o", "M"] +[11.178267488479555, "o", " "] +[11.208267488479555, "o", "p"] +[11.238267488479554, "o", "r"] +[11.268267488479554, "o", "e"] +[11.298267488479553, "o", "c"] +[11.328267488479552, "o", "i"] +[11.358267488479552, "o", "n"] +[11.388267488479551, "o", "c"] +[11.41826748847955, "o", "t"] +[11.44826748847955, "o", "_"] +[11.478267488479549, "o", "r"] +[11.508267488479548, "o", "e"] +[11.538267488479548, "o", "s"] +[11.568267488479547, "o", "u"] +[11.598267488479546, "o", "l"] +[11.628267488479546, "o", "t"] +[11.658267488479545, "o", "s"] +[11.688267488479545, "o", " "] +[11.718267488479544, "o", "W"] +[11.748267488479543, "o", "H"] +[11.778267488479543, "o", "E"] +[11.808267488479542, "o", "R"] +[11.838267488479541, "o", "E"] +[11.86826748847954, "o", " "] +[11.89826748847954, "o", "s"] +[11.92826748847954, "o", "t"] +[11.958267488479539, "o", "a"] +[11.988267488479538, "o", "t"] +[12.018267488479538, "o", "e"] +[12.048267488479537, "o", " "] +[12.078267488479536, "o", "="] +[12.108267488479536, "o", " "] +[12.138267488479535, "o", "'"] +[12.168267488479534, "o", "N"] +[12.198267488479534, "o", "e"] +[12.228267488479533, "o", "w"] +[12.258267488479532, "o", " "] +[12.288267488479532, "o", "Y"] +[12.318267488479531, "o", "o"] +[12.34826748847953, "o", "r"] +[12.37826748847953, "o", "k"] +[12.40826748847953, "o", "'"] +[12.438267488479529, "o", "\""] +[12.468267488479528, "o", "\r\n"] +[12.498267488479527, "o", "\u001b[0m"] +[12.528267488479527, "o", "\r\n"] +[13.228993282318028, "o", "Aggregate (cost=9785903.09..9785903.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..9784680.00 rows=489234 width=20)\r\nFilter: ((state)::text = 'New York'::text)\r\nMulticorn: Original Multicorn quals: [state = New York]\r\nMulticorn: CNF quals: [[('state', '=', 'New York')]]\r\nMulticorn: Objects removed by filter: 15\r\nMulticorn: Scan through 5 object(s) (6.63 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Deforming true\r\n"] +[13.258993282318027, "o", "\u001b[1m"] +[13.288993282318026, "o", "\u001b[36m"] +[13.318993282318026, "o", "\u001b[91m"] +[13.348993282318025, "o", "$"] +[13.378993282318024, "o", " "] +[13.408993282318024, "o", "\u001b[0m"] +[18.438993282318023, "o", "\u001b[H"] +[18.468993282318024, "o", "\u001b[J"] +[18.498993282318025, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Currently we have no fragments in cache. Let's run this query and check the cache again"] +[18.528993282318027, "o", "\r\n"] +[18.558993282318028, "o", "$"] +[18.58899328231803, "o", " "] +[18.61899328231803, "o", "s"] +[18.64899328231803, "o", "g"] +[18.678993282318032, "o", "r"] +[18.708993282318033, "o", " "] +[18.738993282318035, "o", "o"] +[18.768993282318036, "o", "b"] +[18.798993282318037, "o", "j"] +[18.828993282318038, "o", "e"] +[18.85899328231804, "o", "c"] +[18.88899328231804, "o", "t"] +[18.91899328231804, "o", "s"] +[18.948993282318042, "o", " "] +[18.978993282318044, "o", "-"] +[19.008993282318045, "o", "-"] +[19.038993282318046, "o", "l"] +[19.068993282318047, "o", "o"] +[19.098993282318048, "o", "c"] +[19.12899328231805, "o", "a"] +[19.15899328231805, "o", "l"] +[19.18899328231805, "o", "\r\n"] +[19.218993282318053, "o", "$"] +[19.248993282318054, "o", " "] +[19.278993282318055, "o", "s"] +[19.308993282318056, "o", "g"] +[19.338993282318057, "o", "r"] +[19.36899328231806, "o", " "] +[19.39899328231806, "o", "s"] +[19.42899328231806, "o", "q"] +[19.458993282318062, "o", "l"] +[19.488993282318063, "o", " "] +[19.518993282318064, "o", "-"] +[19.548993282318065, "o", "-"] +[19.578993282318066, "o", "i"] +[19.608993282318067, "o", "m"] +[19.63899328231807, "o", "a"] +[19.66899328231807, "o", "g"] +[19.69899328231807, "o", "e"] +[19.728993282318072, "o", " "] +[19.758993282318073, "o", "s"] +[19.788993282318074, "o", "p"] +[19.818993282318075, "o", "l"] +[19.848993282318077, "o", "i"] +[19.878993282318078, "o", "t"] +[19.90899328231808, "o", "g"] +[19.93899328231808, "o", "r"] +[19.96899328231808, "o", "a"] +[19.998993282318082, "o", "p"] +[20.028993282318083, "o", "h"] +[20.058993282318085, "o", "/"] +[20.088993282318086, "o", "2"] +[20.118993282318087, "o", "0"] +[20.148993282318088, "o", "1"] +[20.17899328231809, "o", "6"] +[20.20899328231809, "o", "_"] +[20.23899328231809, "o", "e"] +[20.268993282318092, "o", "l"] +[20.298993282318094, "o", "e"] +[20.328993282318095, "o", "c"] +[20.358993282318096, "o", "t"] +[20.388993282318097, "o", "i"] +[20.418993282318098, "o", "o"] +[20.4489932823181, "o", "n"] +[20.4789932823181, "o", ":"] +[20.5089932823181, "o", "l"] +[20.538993282318103, "o", "a"] +[20.568993282318104, "o", "t"] +[20.598993282318105, "o", "e"] +[20.628993282318106, "o", "s"] +[20.658993282318107, "o", "t"] +[20.68899328231811, "o", " "] +[20.71899328231811, "o", "\\"] +[20.74899328231811, "o", "\r\n "] +[20.778993282318112, "o", "\""] +[20.808993282318113, "o", "S"] +[20.838993282318114, "o", "E"] +[20.868993282318115, "o", "L"] +[20.898993282318116, "o", "E"] +[20.928993282318118, "o", "C"] +[20.95899328231812, "o", "T"] +[20.98899328231812, "o", " "] +[21.01899328231812, "o", "S"] +[21.048993282318122, "o", "U"] +[21.078993282318123, "o", "M"] +[21.108993282318124, "o", "("] +[21.138993282318125, "o", "v"] +[21.168993282318127, "o", "o"] +[21.198993282318128, "o", "t"] +[21.22899328231813, "o", "e"] +[21.25899328231813, "o", "s"] +[21.28899328231813, "o", ")"] +[21.318993282318132, "o", " "] +[21.348993282318133, "o", "F"] +[21.378993282318135, "o", "R"] +[21.408993282318136, "o", "O"] +[21.438993282318137, "o", "M"] +[21.468993282318138, "o", " "] +[21.49899328231814, "o", "p"] +[21.52899328231814, "o", "r"] +[21.55899328231814, "o", "e"] +[21.588993282318143, "o", "c"] +[21.618993282318144, "o", "i"] +[21.648993282318145, "o", "n"] +[21.678993282318146, "o", "c"] +[21.708993282318147, "o", "t"] +[21.738993282318148, "o", "_"] +[21.76899328231815, "o", "r"] +[21.79899328231815, "o", "e"] +[21.82899328231815, "o", "s"] +[21.858993282318153, "o", "u"] +[21.888993282318154, "o", "l"] +[21.918993282318155, "o", "t"] +[21.948993282318156, "o", "s"] +[21.978993282318157, "o", " "] +[22.00899328231816, "o", "W"] +[22.03899328231816, "o", "H"] +[22.06899328231816, "o", "E"] +[22.098993282318162, "o", "R"] +[22.128993282318163, "o", "E"] +[22.158993282318164, "o", " "] +[22.188993282318165, "o", "s"] +[22.218993282318166, "o", "t"] +[22.248993282318168, "o", "a"] +[22.27899328231817, "o", "t"] +[22.30899328231817, "o", "e"] +[22.33899328231817, "o", " "] +[22.368993282318172, "o", "="] +[22.398993282318173, "o", " "] +[22.428993282318174, "o", "'"] +[22.458993282318175, "o", "N"] +[22.488993282318177, "o", "e"] +[22.518993282318178, "o", "w"] +[22.54899328231818, "o", " "] +[22.57899328231818, "o", "Y"] +[22.60899328231818, "o", "o"] +[22.638993282318182, "o", "r"] +[22.668993282318183, "o", "k"] +[22.698993282318185, "o", "'"] +[22.728993282318186, "o", "\""] +[22.758993282318187, "o", "\r\n"] +[22.788993282318188, "o", "$"] +[22.81899328231819, "o", " "] +[22.84899328231819, "o", "s"] +[22.87899328231819, "o", "g"] +[22.908993282318193, "o", "r"] +[22.938993282318194, "o", " "] +[22.968993282318195, "o", "o"] +[22.998993282318196, "o", "b"] +[23.028993282318197, "o", "j"] +[23.0589932823182, "o", "e"] +[23.0889932823182, "o", "c"] +[23.1189932823182, "o", "t"] +[23.1489932823182, "o", "s"] +[23.178993282318203, "o", " "] +[23.208993282318204, "o", "-"] +[23.238993282318205, "o", "-"] +[23.268993282318206, "o", "l"] +[23.298993282318207, "o", "o"] +[23.32899328231821, "o", "c"] +[23.35899328231821, "o", "a"] +[23.38899328231821, "o", "l"] +[23.418993282318212, "o", "\r\n"] +[23.448993282318213, "o", "\u001b[0m"] +[23.478993282318214, "o", "\r\n"] +[23.711579189300636, "o", "\r\n"] +[24.711579189300636, "o", "7.91188e+06\r\n"] +[24.93832407951365, "o", "o65dbd9dc992982689ec65866ab733be69c897c659d93488457a2fccb63e97c\r\no974b20261ee5f1ac124a8445a65c00e6377cfabb93b5db92bd60fc7ca3fcee\r\no9c33b53f1a4872c598ad9d08aaafd78fabce1f16ef4c5e19ad9756b9b85fda\r\no9d4cf85101cc4d431c895998cf1cad642f1fe6cd923c8209f2df38441afeeb\r\noc438159794e378ca23c306143ccdc7ce1683045f80a511aeeabb19302be63d\r\n"] +[24.96832407951365, "o", "\u001b[1m"] +[24.99832407951365, "o", "\u001b[36m"] +[25.028324079513652, "o", "\u001b[91m"] +[25.058324079513653, "o", "$"] +[25.088324079513654, "o", " "] +[25.118324079513656, "o", "\u001b[0m"] +[30.148324079513657, "o", "\u001b[H"] +[30.178324079513658, "o", "\u001b[J"] +[30.20832407951366, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Since default indexing in Splitgraph is done by min-max values for every column"] +[30.23832407951366, "o", "\r\n"] +[30.26832407951366, "o", "$ # in every fragment, it's going to do worse if multiple fragments span the same value\r\n"] +[30.298324079513662, "o", "$"] +[30.328324079513663, "o", " "] +[30.358324079513665, "o", "s"] +[30.388324079513666, "o", "g"] +[30.418324079513667, "o", "r"] +[30.448324079513668, "o", " "] +[30.47832407951367, "o", "s"] +[30.50832407951367, "o", "q"] +[30.53832407951367, "o", "l"] +[30.568324079513673, "o", " "] +[30.598324079513674, "o", "-"] +[30.628324079513675, "o", "-"] +[30.658324079513676, "o", "i"] +[30.688324079513677, "o", "m"] +[30.71832407951368, "o", "a"] +[30.74832407951368, "o", "g"] +[30.77832407951368, "o", "e"] +[30.80832407951368, "o", " "] +[30.838324079513683, "o", "s"] +[30.868324079513684, "o", "p"] +[30.898324079513685, "o", "l"] +[30.928324079513686, "o", "i"] +[30.958324079513687, "o", "t"] +[30.98832407951369, "o", "g"] +[31.01832407951369, "o", "r"] +[31.04832407951369, "o", "a"] +[31.078324079513692, "o", "p"] +[31.108324079513693, "o", "h"] +[31.138324079513694, "o", "/"] +[31.168324079513695, "o", "2"] +[31.198324079513696, "o", "0"] +[31.228324079513698, "o", "1"] +[31.2583240795137, "o", "6"] +[31.2883240795137, "o", "_"] +[31.3183240795137, "o", "e"] +[31.348324079513702, "o", "l"] +[31.378324079513703, "o", "e"] +[31.408324079513704, "o", "c"] +[31.438324079513706, "o", "t"] +[31.468324079513707, "o", "i"] +[31.498324079513708, "o", "o"] +[31.52832407951371, "o", "n"] +[31.55832407951371, "o", ":"] +[31.58832407951371, "o", "l"] +[31.618324079513712, "o", "a"] +[31.648324079513714, "o", "t"] +[31.678324079513715, "o", "e"] +[31.708324079513716, "o", "s"] +[31.738324079513717, "o", "t"] +[31.768324079513718, "o", " "] +[31.79832407951372, "o", "\\"] +[31.82832407951372, "o", "\r\n "] +[31.85832407951372, "o", "\""] +[31.888324079513723, "o", "E"] +[31.918324079513724, "o", "X"] +[31.948324079513725, "o", "P"] +[31.978324079513726, "o", "L"] +[32.00832407951373, "o", "A"] +[32.03832407951373, "o", "I"] +[32.06832407951373, "o", "N"] +[32.09832407951373, "o", " "] +[32.12832407951373, "o", "S"] +[32.15832407951373, "o", "E"] +[32.188324079513734, "o", "L"] +[32.218324079513735, "o", "E"] +[32.248324079513736, "o", "C"] +[32.27832407951374, "o", "T"] +[32.30832407951374, "o", " "] +[32.33832407951374, "o", "S"] +[32.36832407951374, "o", "U"] +[32.39832407951374, "o", "M"] +[32.42832407951374, "o", "("] +[32.458324079513744, "o", "v"] +[32.488324079513745, "o", "o"] +[32.51832407951375, "o", "t"] +[32.54832407951375, "o", "e"] +[32.57832407951375, "o", "s"] +[32.60832407951375, "o", ")"] +[32.63832407951375, "o", " "] +[32.66832407951375, "o", "F"] +[32.69832407951375, "o", "R"] +[32.728324079513754, "o", "O"] +[32.758324079513756, "o", "M"] +[32.78832407951376, "o", " "] +[32.81832407951376, "o", "p"] +[32.84832407951376, "o", "r"] +[32.87832407951376, "o", "e"] +[32.90832407951376, "o", "c"] +[32.93832407951376, "o", "i"] +[32.96832407951376, "o", "n"] +[32.998324079513765, "o", "c"] +[33.028324079513766, "o", "t"] +[33.05832407951377, "o", "_"] +[33.08832407951377, "o", "r"] +[33.11832407951377, "o", "e"] +[33.14832407951377, "o", "s"] +[33.17832407951377, "o", "u"] +[33.20832407951377, "o", "l"] +[33.238324079513774, "o", "t"] +[33.268324079513775, "o", "s"] +[33.298324079513776, "o", " "] +[33.32832407951378, "o", "W"] +[33.35832407951378, "o", "H"] +[33.38832407951378, "o", "E"] +[33.41832407951378, "o", "R"] +[33.44832407951378, "o", "E"] +[33.47832407951378, "o", " "] +[33.508324079513784, "o", "c"] +[33.538324079513785, "o", "o"] +[33.568324079513786, "o", "u"] +[33.59832407951379, "o", "n"] +[33.62832407951379, "o", "t"] +[33.65832407951379, "o", "y"] +[33.68832407951379, "o", "_"] +[33.71832407951379, "o", "n"] +[33.74832407951379, "o", "a"] +[33.778324079513794, "o", "m"] +[33.808324079513795, "o", "e"] +[33.8383240795138, "o", " "] +[33.8683240795138, "o", "="] +[33.8983240795138, "o", " "] +[33.9283240795138, "o", "'"] +[33.9583240795138, "o", "N"] +[33.9883240795138, "o", "e"] +[34.0183240795138, "o", "w"] +[34.048324079513804, "o", " "] +[34.078324079513806, "o", "Y"] +[34.10832407951381, "o", "o"] +[34.13832407951381, "o", "r"] +[34.16832407951381, "o", "k"] +[34.19832407951381, "o", " "] +[34.22832407951381, "o", "C"] +[34.25832407951381, "o", "o"] +[34.288324079513814, "o", "u"] +[34.318324079513815, "o", "n"] +[34.348324079513816, "o", "t"] +[34.37832407951382, "o", "y"] +[34.40832407951382, "o", "'"] +[34.43832407951382, "o", "\""] +[34.46832407951382, "o", "\r\n"] +[34.49832407951382, "o", "\u001b[0m"] +[34.52832407951382, "o", "\r\n"] +[35.224408340454374, "o", "Aggregate (cost=37789403.09..37789403.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..37784680.00 rows=1889234 width=20)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 1\r\nMulticorn: Scan through 19 object(s) (25.51 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true,"] +[35.22441954612759, "o", " Deforming true\r\n"] +[35.25441954612759, "o", "\u001b[1m"] +[35.284419546127594, "o", "\u001b[36m"] +[35.314419546127596, "o", "\u001b[91m"] +[35.3444195461276, "o", "$"] +[35.3744195461276, "o", " "] +[35.4044195461276, "o", "\u001b[0m"] +[40.4344195461276, "o", "\u001b[H"] +[40.4644195461276, "o", "\u001b[J"] +[40.4944195461276, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Let's download the whole dataset and add a bloom filter index on county_name"] +[40.524419546127604, "o", "\r\n"] +[40.554419546127605, "o", "$"] +[40.584419546127606, "o", " "] +[40.61441954612761, "o", "s"] +[40.64441954612761, "o", "g"] +[40.67441954612761, "o", "r"] +[40.70441954612761, "o", " "] +[40.73441954612761, "o", "r"] +[40.76441954612761, "o", "e"] +[40.794419546127614, "o", "i"] +[40.824419546127615, "o", "n"] +[40.854419546127616, "o", "d"] +[40.88441954612762, "o", "e"] +[40.91441954612762, "o", "x"] +[40.94441954612762, "o", " "] +[40.97441954612762, "o", "-"] +[41.00441954612762, "o", "i"] +[41.03441954612762, "o", " "] +[41.064419546127624, "o", "'"] +[41.094419546127625, "o", "{"] +[41.124419546127626, "o", "\""] +[41.15441954612763, "o", "b"] +[41.18441954612763, "o", "l"] +[41.21441954612763, "o", "o"] +[41.24441954612763, "o", "o"] +[41.27441954612763, "o", "m"] +[41.30441954612763, "o", "\""] +[41.334419546127634, "o", ":"] +[41.364419546127635, "o", " "] +[41.39441954612764, "o", "{"] +[41.42441954612764, "o", "\""] +[41.45441954612764, "o", "c"] +[41.48441954612764, "o", "o"] +[41.51441954612764, "o", "u"] +[41.54441954612764, "o", "n"] +[41.57441954612764, "o", "t"] +[41.604419546127644, "o", "y"] +[41.634419546127646, "o", "_"] +[41.66441954612765, "o", "n"] +[41.69441954612765, "o", "a"] +[41.72441954612765, "o", "m"] +[41.75441954612765, "o", "e"] +[41.78441954612765, "o", "\""] +[41.81441954612765, "o", ":"] +[41.844419546127654, "o", " "] +[41.874419546127655, "o", "{"] +[41.904419546127656, "o", "\""] +[41.93441954612766, "o", "p"] +[41.96441954612766, "o", "r"] +[41.99441954612766, "o", "o"] +[42.02441954612766, "o", "b"] +[42.05441954612766, "o", "a"] +[42.08441954612766, "o", "b"] +[42.114419546127664, "o", "i"] +[42.144419546127665, "o", "l"] +[42.174419546127666, "o", "i"] +[42.20441954612767, "o", "t"] +[42.23441954612767, "o", "y"] +[42.26441954612767, "o", "\""] +[42.29441954612767, "o", ":"] +[42.32441954612767, "o", " "] +[42.35441954612767, "o", "0"] +[42.384419546127674, "o", "."] +[42.414419546127675, "o", "0"] +[42.444419546127676, "o", "1"] +[42.47441954612768, "o", "}"] +[42.50441954612768, "o", "}"] +[42.53441954612768, "o", "}"] +[42.56441954612768, "o", "'"] +[42.59441954612768, "o", " "] +[42.62441954612768, "o", "\\"] +[42.654419546127684, "o", "\r\n "] +[42.684419546127685, "o", "s"] +[42.71441954612769, "o", "p"] +[42.74441954612769, "o", "l"] +[42.77441954612769, "o", "i"] +[42.80441954612769, "o", "t"] +[42.83441954612769, "o", "g"] +[42.86441954612769, "o", "r"] +[42.89441954612769, "o", "a"] +[42.924419546127695, "o", "p"] +[42.954419546127696, "o", "h"] +[42.9844195461277, "o", "/"] +[43.0144195461277, "o", "2"] +[43.0444195461277, "o", "0"] +[43.0744195461277, "o", "1"] +[43.1044195461277, "o", "6"] +[43.1344195461277, "o", "_"] +[43.164419546127704, "o", "e"] +[43.194419546127705, "o", "l"] +[43.224419546127706, "o", "e"] +[43.25441954612771, "o", "c"] +[43.28441954612771, "o", "t"] +[43.31441954612771, "o", "i"] +[43.34441954612771, "o", "o"] +[43.37441954612771, "o", "n"] +[43.40441954612771, "o", ":"] +[43.434419546127714, "o", "l"] +[43.464419546127715, "o", "a"] +[43.494419546127716, "o", "t"] +[43.52441954612772, "o", "e"] +[43.55441954612772, "o", "s"] +[43.58441954612772, "o", "t"] +[43.61441954612772, "o", " "] +[43.64441954612772, "o", "p"] +[43.67441954612772, "o", "r"] +[43.704419546127724, "o", "e"] +[43.734419546127725, "o", "c"] +[43.764419546127726, "o", "i"] +[43.79441954612773, "o", "n"] +[43.82441954612773, "o", "c"] +[43.85441954612773, "o", "t"] +[43.88441954612773, "o", "_"] +[43.91441954612773, "o", "r"] +[43.94441954612773, "o", "e"] +[43.974419546127734, "o", "s"] +[44.004419546127735, "o", "u"] +[44.03441954612774, "o", "l"] +[44.06441954612774, "o", "t"] +[44.09441954612774, "o", "s"] +[44.12441954612774, "o", "\r\n"] +[44.15441954612774, "o", "\u001b[0m"] +[44.18441954612774, "o", "\r\n"] +[44.3915196990971, "o", "Reindexing table splitgraph/2016_election:3835145ada3f07cad99087d1b1071122d58c48783cbfe4694c101d35651fba90/precinct_results\r\n"] +[44.421864185333675, "o", "Need to download 20 objects (20.19 MiB), cache occupancy: 6.63 MiB/10.00 GiB\r\n"] +[44.46765795707745, "o", "Fetching 15 objects, total size 20.19 MiB\r\n"] +[44.470596942902034, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (ca446922b2844ed19f8e6c8b35edbe31@data.splitgraph.com:5432/sgregistry)...\r\n"] +[45.470596942902034, "o", "\r 0%| | 0/15 [00:00 Foreign Scan on precinct_results (cost=20.00..4000000.00 rows=200000 width=20)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 18\r\nMulticorn: Scan through 2 object(s) (2.64 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Defo"] +[102.00471353530943, "o", "rming true\r\n"] +[102.03471353530944, "o", "\u001b[1m"] +[102.06471353530944, "o", "\u001b[36m"] +[102.09471353530944, "o", "\u001b[91m"] +[102.12471353530944, "o", "$"] +[102.15471353530944, "o", " "] +[102.18471353530944, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.11/dbt.cast b/content/casts/versioned/archive/v0.2.11/dbt.cast new file mode 100644 index 00000000..9ad3c84a --- /dev/null +++ b/content/casts/versioned/archive/v0.2.11/dbt.cast @@ -0,0 +1,2226 @@ +{"version": 2, "width": 100, "height": 48, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1617021920, "metadata": {"tss": [{"h": "dbt must be installed for this to work (pip install dbt)", "ts": 0.06}, {"h": "Ingest the initial data (in CSV) from this branch of the project.", "ts": 11.559999999999999}, {"h": "Snapshot the initial data with Splitgraph.", "ts": 26.246856012344455}, {"h": "Inspect the original data", "ts": 35.25361063957236}, {"h": "The status column in the raw_orders table in the initial dataset can", "ts": 48.25361063957236}, {"h": "Commit this dataset and check out the original data", "ts": 58.9697430419926}, {"h": "Check out the 'serious' version of the dbt project that uses data from", "ts": 68.76257759094294}, {"h": "Check that dbt is set up to connect to the Splitgraph engine.", "ts": 75.7504198932654}, {"h": "Now run the dbt models.", "ts": 99.2504198932654}, {"h": "Take a look at the built dataset and commit it.", "ts": 119.7504198932654}, {"h": "Check out the new version of the raw dataset and run dbt against it as well.", "ts": 134.25041989326542}, {"h": "Create an image from the new data.", "ts": 155.75041989326542}, {"h": "We now have two versions of the source and the target dataset.", "ts": 165.75041989326542}, {"h": "Inspect the difference between the two datasets that dbt built.", "ts": 173.16276263237071}, {"h": "Run a sample query: how much in bank transfer refunds did we process?", "ts": 182.66276263237071}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # dbt must be installed for this to work (pip install dbt)"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Clone the Jaffle Shop dbt example project\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "d"] +[0.27, "o", "b"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "-"] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "v"] +[0.4500000000000002, "o", "e"] +[0.4800000000000002, "o", "r"] +[0.5100000000000002, "o", "s"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "n"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "$"] +[0.6900000000000004, "o", " "] +[0.7200000000000004, "o", "g"] +[0.7500000000000004, "o", "i"] +[0.7800000000000005, "o", "t"] +[0.8100000000000005, "o", " "] +[0.8400000000000005, "o", "c"] +[0.8700000000000006, "o", "l"] +[0.9000000000000006, "o", "o"] +[0.9300000000000006, "o", "n"] +[0.9600000000000006, "o", "e"] +[0.9900000000000007, "o", " "] +[1.0200000000000007, "o", "h"] +[1.0500000000000007, "o", "t"] +[1.0800000000000007, "o", "t"] +[1.1100000000000008, "o", "p"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", ":"] +[1.2000000000000008, "o", "/"] +[1.2300000000000009, "o", "/"] +[1.260000000000001, "o", "g"] +[1.290000000000001, "o", "i"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", "h"] +[1.380000000000001, "o", "u"] +[1.410000000000001, "o", "b"] +[1.440000000000001, "o", "."] +[1.470000000000001, "o", "c"] +[1.500000000000001, "o", "o"] +[1.5300000000000011, "o", "m"] +[1.5600000000000012, "o", "/"] +[1.5900000000000012, "o", "f"] +[1.6200000000000012, "o", "i"] +[1.6500000000000012, "o", "s"] +[1.6800000000000013, "o", "h"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "o"] +[1.7700000000000014, "o", "w"] +[1.8000000000000014, "o", "n"] +[1.8300000000000014, "o", "-"] +[1.8600000000000014, "o", "a"] +[1.8900000000000015, "o", "n"] +[1.9200000000000015, "o", "a"] +[1.9500000000000015, "o", "l"] +[1.9800000000000015, "o", "y"] +[2.0100000000000016, "o", "t"] +[2.0400000000000014, "o", "i"] +[2.070000000000001, "o", "c"] +[2.100000000000001, "o", "s"] +[2.130000000000001, "o", "/"] +[2.1600000000000006, "o", "j"] +[2.1900000000000004, "o", "a"] +[2.22, "o", "f"] +[2.25, "o", "f"] +[2.28, "o", "l"] +[2.3099999999999996, "o", "e"] +[2.3399999999999994, "o", "_"] +[2.369999999999999, "o", "s"] +[2.399999999999999, "o", "h"] +[2.429999999999999, "o", "o"] +[2.4599999999999986, "o", "p"] +[2.4899999999999984, "o", "."] +[2.5199999999999982, "o", "g"] +[2.549999999999998, "o", "i"] +[2.579999999999998, "o", "t"] +[2.6099999999999977, "o", "\r\n"] +[2.6399999999999975, "o", "\u001b[0m"] +[2.6699999999999973, "o", "\r\n"] +[3.6699999999999973, "o", "installed version: 0.18.0\r\n"] +[3.6700290870666477, "o", " latest version: 0.19.0\r\n\r\nYour version of dbt is out of date! You can find instructions for upgrading here:\r\nhttps://docs.getdbt.com/docs/installation\r\n\r\nPlugins:\r\n - postgres: 0.18.0\r\n - snowflake: 0.18.0\r\n - bigquery: 0.18.0\r\n - redshift: 0.18.0\r\n"] +[3.6703924369811984, "o", "\u001b[0m"] +[3.6723040771484348, "o", "Cloning into 'jaffle_shop'...\r\n"] +[4.637402935028073, "o", "remote: Enumerating objects: 37, done. \r\nremote: Counting objects: 2% (1/37) \rremote: Counting objects: 5% (2/37) \rremote: Counting objects: 8% (3/37) \r"] +[4.63741700172424, "o", "remote: Counting objects: 10% (4/37) \rremote: Counting objects: 13% (5/37) \rremote: Counting objects: 16% (6/37) \rremote: Counting objects: 18% (7/37) \rremote: Counting objects: 21% (8/37) \rremote: Counting objects: 24% (9/37) \rremote: Counting objects: 27% (10/37) \rremote: Counting objects: 29% (11/37) \rremote: Counting objects: 32% (12/37) \rremote: Counting objects: 35% (13/37) \rremote: Counting objects: 37% (14/37) \rr"] +[4.637423200607297, "o", "emote: Counting objects: 40% (15/37) \rremote: Counting objects: 43% (16/37) \rremote: Counting objects: 45% (17/37) \rremote: Counting objects: 48% (18/37) \rremote: Counting objects: 51% (19/37) \rremote: Counting objects: 54% (20/37) \rremote: Counting objects: 56% (21/37) \rremote: Counting objects: 59% (22/37) \rremote: Counting objects: 62% (23/37) \rremote: Counting objects: 64% (24/37) \rremote: Counting objects: 67% (25/37) "] +[4.637428207397458, "o", " \rremote: Counting objects: 70% (26/37) \rremote: Counting objects: 72% (27/37) \rremote: Counting objects: 75% (28/37) \rremote: Counting objects: 78% (29/37) \rremote: Counting objects: 81% (30/37) \rremote: Counting objects: 83% (31/37) \rremote: Counting objects: 86% (32/37) \rremote: Counting objects: 89% (33/37) \rremote: Counting objects: 91% (34/37) \rremote: Counting objects: 94% (35/37) \rremote: Counting objects: 97% (36/37)"] +[4.637432498931882, "o", " \rremote: Counting objects: 100% (37/37) \rremote: Counting objects: 100% (37/37), done. \r\nremote: Compressing objects: 3% (1/27) \rremote: Compressing objects: 7% (2/27) \rremote: Compressing objects: 11% (3/27) \rremote: Compressing objects: 14% (4/27) \rremote: Compressing objects: 18% (5/27) \rremote: Compressing objects: 22% (6/27) \r"] +[4.643345041275022, "o", "remote: Compressing objects: 25% (7/27) \r"] +[4.648575229644773, "o", "remote: Compressing objects: 29% (8/27) \rremote: Compressing objects: 33% (9/27) \rremote: Compressing objects: 37% (10/27) \rremote: Compressing objects: 40% (11/27) \rremote: Compressing objects: 44% (12/27) \rremote: Compressing objects: 48% (13/27) \rremote: Compressing objects: 51% (14/27) \rremote: Compressing objects: 55% (15/27) \rremote: Compressing objects: 59% (16/27) \rremote: Compressing objects: 62% (17/27) \rremote: Compre"] +[4.648584766387937, "o", "ssing objects: 66% (18/27) \rremote: Compressing objects: 70% (19/27) \r"] +[4.648640794754026, "o", "remote: Compressing objects: 74% (20/27) \rremote: Compressing objects: 77% (21/27) \rremote: Compressing objects: 81% (22/27) \rremote: Compressing objects: 85% (23/27) \r"] +[4.6486477088928195, "o", "remote: Compressing objects: 88% (24/27) \rremote: Compressing objects: 92% (25/27) \rremote: Compressing objects: 96% (26/27) \rremote: Compressing objects: 100% (27/27) \rremote: Compressing objects: 100% (27/27), done. \r\n"] +[4.6488377285003635, "o", "Receiving objects: 0% (1/394)\r"] +[4.648872299194333, "o", "Receiving objects: 1% (4/394)\r"] +[4.648900194168088, "o", "Receiving objects: 2% (8/394)\r"] +[4.648974342346189, "o", "Receiving objects: 3% (12/394)\r"] +[4.648999614715573, "o", "Receiving objects: 4% (16/394)\r"] +[4.649031562805173, "o", "Receiving objects: 5% (20/394)\r"] +[4.649118824005124, "o", "Receiving objects: 6% (24/394)\r"] +[4.649147911071775, "o", "Receiving objects: 7% (28/394)\r"] +[4.649188680648801, "o", "Receiving objects: 8% (32/394)\r"] +[4.72063199996948, "o", "Receiving objects: 9% (36/394)\r"] +[4.720640344619748, "o", "Receiving objects: 10% (40/394)\r"] +[4.7206784915924045, "o", "Receiving objects: 11% (44/394)\r"] +[4.720791740417478, "o", "Receiving objects: 12% (48/394)\r"] +[4.7208592128753635, "o", "Receiving objects: 13% (52/394)\r"] +[4.720958156585691, "o", "Receiving objects: 14% (56/394)\r"] +[4.724197788238523, "o", "Receiving objects: 15% (60/394)\r"] +[4.724204940795896, "o", "Receiving objects: 16% (64/394)\r"] +[4.724274320602414, "o", "Receiving objects: 17% (67/394)\r"] +[4.724403305053708, "o", "Receiving objects: 18% (71/394)\r"] +[4.724462194442746, "o", "Receiving objects: 19% (75/394)\r"] +[4.735881252288816, "o", "Receiving objects: 20% (79/394)\r"] +[4.735928697586057, "o", "Receiving objects: 21% (83/394)\r"] +[4.7360445690155, "o", "Receiving objects: 22% (87/394)\r"] +[4.736143512725827, "o", "Receiving objects: 23% (91/394)\r"] +[4.818016691207883, "o", "Receiving objects: 24% (95/394)\r"] +[4.818134708404538, "o", "Receiving objects: 25% (99/394)\r"] +[4.818140907287595, "o", "Receiving objects: 26% (103/394)\r"] +[4.8181540203094455, "o", "Receiving objects: 27% (107/394)\r"] +[4.8231612873077365, "o", "Receiving objects: 28% (111/394)\r"] +[4.823202533721921, "o", "Receiving objects: 29% (115/394)\r"] +[4.8232268524169895, "o", "Receiving objects: 30% (119/394)\r"] +[4.823258323669431, "o", "Receiving objects: 31% (123/394)\r"] +[4.895831508636472, "o", "Receiving objects: 32% (127/394)\r"] +[4.895873231887815, "o", "Receiving objects: 33% (131/394)\rReceiving objects: 34% (134/394)\r"] +[4.895884199142453, "o", "Receiving objects: 35% (138/394)\r"] +[4.899154109954831, "o", "Receiving objects: 36% (142/394)\rReceiving objects: 37% (146/394)\r"] +[4.899416608810422, "o", "Receiving objects: 38% (150/394)\r"] +[4.899476928710935, "o", "Receiving objects: 39% (154/394)\r"] +[4.899485511779782, "o", "Receiving objects: 40% (158/394)\r"] +[4.899531526565549, "o", "Receiving objects: 41% (162/394)\r"] +[4.899550361633298, "o", "Receiving objects: 42% (166/394)\r"] +[4.899566097259519, "o", "Receiving objects: 43% (170/394)\r"] +[4.8995961380004855, "o", "Receiving objects: 44% (174/394)\r"] +[4.899628562927243, "o", "Receiving objects: 45% (178/394)\r"] +[4.899634523391721, "o", "Receiving objects: 46% (182/394)\r"] +[4.899639053344724, "o", "Receiving objects: 47% (186/394)\r"] +[4.899763746261594, "o", "Receiving objects: 48% (190/394)\r"] +[4.899768037796018, "o", "Receiving objects: 49% (194/394)\r"] +[4.899803085327146, "o", "Receiving objects: 50% (197/394)\r"] +[4.8998073768615695, "o", "Receiving objects: 51% (201/394)\r"] +[4.899811191558835, "o", "Receiving objects: 52% (205/394)\r"] +[4.89983384132385, "o", "Receiving objects: 53% (209/394)\r"] +[4.899847431182859, "o", "Receiving objects: 54% (213/394)\r"] +[4.89985243797302, "o", "Receiving objects: 55% (217/394)\r"] +[4.8998567295074436, "o", "Receiving objects: 56% (221/394)\r"] +[4.89986030578613, "o", "Receiving objects: 57% (225/394)\r"] +[4.899883432388303, "o", "Receiving objects: 58% (229/394)\r"] +[4.899897737503049, "o", "Receiving objects: 59% (233/394)\r"] +[4.89991871833801, "o", "Receiving objects: 60% (237/394)\r"] +[4.899922771453855, "o", "Receiving objects: 61% (241/394)\r"] +[4.89994518280029, "o", "Receiving objects: 62% (245/394)\r"] +[4.89996640205383, "o", "Receiving objects: 63% (249/394)\r"] +[4.900005502700803, "o", "Receiving objects: 64% (253/394)\r"] +[4.900020761489865, "o", "Receiving objects: 65% (257/394)\r"] +[4.900024576187131, "o", "Receiving objects: 66% (261/394)\r"] +[4.90004603385925, "o", "Receiving objects: 67% (264/394)\r"] +[4.900067729949948, "o", "Receiving objects: 68% (268/394)\r"] +[4.900072021484372, "o", "Receiving objects: 69% (272/394)\r"] +[4.90009395599365, "o", "Receiving objects: 70% (276/394)\r"] +[4.900123996734616, "o", "Receiving objects: 71% (280/394)\r"] +[4.900128526687619, "o", "Receiving objects: 72% (284/394)\r"] +[4.90014426231384, "o", "Receiving objects: 73% (288/394)\r"] +[4.904460830688474, "o", "Receiving objects: 74% (292/394)\r"] +[4.904475374221799, "o", "Receiving objects: 75% (296/394)\r"] +[4.9044810962676975, "o", "Receiving objects: 76% (300/394)\r"] +[4.904534025192258, "o", "Receiving objects: 77% (304/394)\rReceiving objects: 78% (308/394)\r"] +[4.904597682952878, "o", "Receiving objects: 79% (312/394)\r"] +[4.904693288803098, "o", "Receiving objects: 80% (316/394)\r"] +[4.904740018844602, "o", "Receiving objects: 81% (320/394)\r"] +[4.904745264053342, "o", "Receiving objects: 82% (324/394)\r"] +[4.904749317169187, "o", "Receiving objects: 83% (328/394)\r"] +[4.904760999679563, "o", "Receiving objects: 84% (331/394)\r"] +[4.904791755676267, "o", "Receiving objects: 85% (335/394)\r"] +[4.9048003387451145, "o", "Receiving objects: 86% (339/394)\rReceiving objects: 87% (343/394)\r"] +[4.904812736511228, "o", "Receiving objects: 88% (347/394)\r"] +[4.904817266464231, "o", "Receiving objects: 89% (351/394)\r"] +[4.9049576950073215, "o", "Receiving objects: 90% (355/394)\rReceiving objects: 91% (359/394)\r"] +[4.904984159469602, "o", "Receiving objects: 92% (363/394)\r"] +[4.905027790069577, "o", "Receiving objects: 93% (367/394)\r"] +[4.90503232002258, "o", "Receiving objects: 94% (371/394)\r"] +[4.910575790405271, "o", "remote: Total 394 (delta 14), reused 18 (delta 4), pack-reused 357 "] +[4.910637540817258, "o", "\r\n"] +[4.911477489471433, "o", "Receiving objects: 95% (375/394)\r"] +[4.912128610610959, "o", "Receiving objects: 96% (379/394)\rReceiving objects: 97% (383/394)\rReceiving objects: 98% (387/394)\r"] +[4.912591381072995, "o", "Receiving objects: 99% (391/394)\r"] +[4.912599248886106, "o", "Receiving objects: 100% (394/394)\rReceiving objects: 100% (394/394), 289.21 KiB | 1.07 MiB/s, done.\r\n"] +[4.912734193801877, "o", "Resolving deltas: 0% (0/176)\r"] +[4.912782115936277, "o", "Resolving deltas: 1% (2/176)\r"] +[4.9128407669067355, "o", "Resolving deltas: 2% (4/176)\r"] +[4.912867469787595, "o", "Resolving deltas: 3% (6/176)\r"] +[4.9128829669952365, "o", "Resolving deltas: 4% (8/176)\r"] +[4.9128877353668186, "o", "Resolving deltas: 5% (9/176)\r"] +[4.912915391921994, "o", "Resolving deltas: 6% (11/176)\r"] +[4.912919921874997, "o", "Resolving deltas: 7% (13/176)\r"] +[4.912939472198484, "o", "Resolving deltas: 8% (15/176)\r"] +[4.912943763732907, "o", "Resolving deltas: 9% (16/176)\r"] +[4.912982387542722, "o", "Resolving deltas: 10% (18/176)\r"] +[4.912987155914304, "o", "Resolving deltas: 11% (20/176)\r"] +[4.9129909706115695, "o", "Resolving deltas: 12% (22/176)\r"] +[4.912994546890256, "o", "Resolving deltas: 13% (23/176)\r"] +[4.91302792549133, "o", "Resolving deltas: 14% (25/176)\r"] +[4.913032217025754, "o", "Resolving deltas: 15% (27/176)\r"] +[4.91303603172302, "o", "Resolving deltas: 16% (29/176)\r"] +[4.913051290512082, "o", "Resolving deltas: 17% (30/176)\r"] +[4.913055582046506, "o", "Resolving deltas: 18% (32/176)\r"] +[4.913086814880368, "o", "Resolving deltas: 19% (34/176)\r"] +[4.913091344833371, "o", "Resolving deltas: 20% (36/176)\r"] +[4.913094921112058, "o", "Resolving deltas: 21% (37/176)\r"] +[4.913126392364499, "o", "Resolving deltas: 22% (39/176)\r"] +[4.913174314498899, "o", "Resolving deltas: 23% (41/176)\r"] +[4.913215322494504, "o", "Resolving deltas: 24% (43/176)\r"] +[4.913242263793943, "o", "Resolving deltas: 25% (44/176)\r"] +[4.913266344070432, "o", "Resolving deltas: 26% (46/176)\r"] +[4.913290424346921, "o", "Resolving deltas: 27% (48/176)\r"] +[4.913370532989499, "o", "Resolving deltas: 28% (50/176)\r"] +[4.913426561355588, "o", "Resolving deltas: 29% (52/176)\r"] +[4.913450164794919, "o", "Resolving deltas: 30% (53/176)\r"] +[4.913454933166501, "o", "Resolving deltas: 31% (55/176)\r"] +[4.913470907211301, "o", "Resolving deltas: 32% (57/176)\r"] +[4.91350571632385, "o", "Resolving deltas: 33% (59/176)\r"] +[4.913702888488767, "o", "Resolving deltas: 34% (60/176)\r"] +[4.914119405746457, "o", "Resolving deltas: 35% (62/176)\r"] +[4.914369506835935, "o", "Resolving deltas: 36% (64/176)\r"] +[4.914509935379026, "o", "Resolving deltas: 37% (66/176)\r"] +[4.914518280029294, "o", "Resolving deltas: 38% (67/176)\rResolving deltas: 39% (69/176)\r"] +[4.914548082351682, "o", "Resolving deltas: 40% (71/176)\r"] +[4.914553089141843, "o", "Resolving deltas: 41% (73/176)\r"] +[4.91458575248718, "o", "Resolving deltas: 42% (74/176)\r"] +[4.914600772857663, "o", "Resolving deltas: 43% (76/176)\r"] +[4.914637012481687, "o", "Resolving deltas: 44% (78/176)\r"] +[4.914642019271848, "o", "Resolving deltas: 45% (80/176)\r"] +[4.91466800689697, "o", "Resolving deltas: 46% (81/176)\r"] +[4.914683265686032, "o", "Resolving deltas: 47% (83/176)\r"] +[4.9147187900543186, "o", "Resolving deltas: 48% (85/176)\r"] +[4.91472379684448, "o", "Resolving deltas: 49% (87/176)\r"] +[4.914759559631345, "o", "Resolving deltas: 50% (88/176)\r"] +[4.91478483200073, "o", "Resolving deltas: 51% (90/176)\r"] +[4.914828462600705, "o", "Resolving deltas: 52% (92/176)\r"] +[4.914884490966794, "o", "Resolving deltas: 53% (94/176)\r"] +[4.914888782501218, "o", "Resolving deltas: 54% (96/176)\r"] +[4.914892597198484, "o", "Resolving deltas: 55% (97/176)\r"] +[4.914926452636716, "o", "Resolving deltas: 56% (99/176)\r"] +[4.914930982589719, "o", "Resolving deltas: 57% (101/176)\rResolving deltas: 58% (103/176)\r"] +[4.9149462413787814, "o", "Resolving deltas: 59% (104/176)\r"] +[4.914950771331784, "o", "Resolving deltas: 60% (106/176)\r"] +[4.914982719421384, "o", "Resolving deltas: 61% (108/176)\r"] +[4.914987249374387, "o", "Resolving deltas: 62% (110/176)\r"] +[4.914991302490232, "o", "Resolving deltas: 63% (111/176)\r"] +[4.914995117187497, "o", "Resolving deltas: 64% (113/176)\r"] +[4.919433040618894, "o", "Resolving deltas: 65% (115/176)\r"] +[4.9204630088806125, "o", "Resolving deltas: 66% (117/176)\r"] +[4.920496149063108, "o", "Resolving deltas: 67% (118/176)\r"] +[4.920531435012815, "o", "Resolving deltas: 68% (120/176)\r"] +[4.92056457519531, "o", "Resolving deltas: 69% (122/176)\r"] +[4.920593185424802, "o", "Resolving deltas: 70% (124/176)\r"] +[4.920638008117673, "o", "Resolving deltas: 71% (125/176)\r"] +[4.920682115554807, "o", "Resolving deltas: 72% (127/176)\r"] +[4.920718116760251, "o", "Resolving deltas: 73% (129/176)\r"] +[4.920752687454221, "o", "Resolving deltas: 74% (131/176)\r"] +[4.920778675079343, "o", "Resolving deltas: 75% (132/176)\r"] +[4.920819444656369, "o", "Resolving deltas: 76% (134/176)\r"] +[4.920892877578733, "o", "Resolving deltas: 77% (136/176)\r"] +[4.920927209854123, "o", "Resolving deltas: 78% (138/176)\r"] +[4.920976085662839, "o", "Resolving deltas: 79% (140/176)\r"] +[4.921003742218015, "o", "Resolving deltas: 80% (141/176)\r"] +[4.921032590866086, "o", "Resolving deltas: 81% (143/176)\r"] +[4.921074552536008, "o", "Resolving deltas: 82% (145/176)\r"] +[4.921112461090085, "o", "Resolving deltas: 83% (147/176)\r"] +[4.921150369644162, "o", "Resolving deltas: 84% (148/176)\r"] +[4.921245260238645, "o", "Resolving deltas: 85% (150/176)\r"] +[4.921292705535886, "o", "Resolving deltas: 86% (152/176)\r"] +[4.921350641250608, "o", "Resolving deltas: 87% (154/176)\r"] +[4.9213926029205295, "o", "Resolving deltas: 88% (155/176)\r"] +[4.921424551010129, "o", "Resolving deltas: 89% (157/176)\r"] +[4.921490831375119, "o", "Resolving deltas: 90% (159/176)\r"] +[4.921539707183835, "o", "Resolving deltas: 91% (161/176)\r"] +[4.921569986343381, "o", "Resolving deltas: 92% (162/176)\r"] +[4.921600503921506, "o", "Resolving deltas: 93% (164/176)\r"] +[4.9216367435455295, "o", "Resolving deltas: 94% (166/176)\r"] +[4.921675128936765, "o", "Resolving deltas: 95% (168/176)\r"] +[4.92170302391052, "o", "Resolving deltas: 96% (169/176)\r"] +[4.92333762168884, "o", "Resolving deltas: 97% (171/176)\r"] +[4.92477337837219, "o", "Resolving deltas: 98% (173/176)\r"] +[4.9255289268493625, "o", "Resolving deltas: 99% (175/176)\r"] +[4.926621837615964, "o", "Resolving deltas: 100% (176/176)\rResolving deltas: 100% (176/176), done."] +[4.926965398788449, "o", "\r\n"] +[4.95696539878845, "o", "\u001b[1m"] +[4.98696539878845, "o", "\u001b[36m"] +[5.01696539878845, "o", "\u001b[91m"] +[5.04696539878845, "o", "$"] +[5.076965398788451, "o", " "] +[5.106965398788451, "o", "\u001b[0m"] +[11.53, "o", "\u001b[H"] +[11.559999999999999, "o", "\u001b[J"] +[11.589999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the initial data (in CSV) from this branch of the project."] +[11.619999999999997, "o", "\r\n"] +[11.649999999999997, "o", "$"] +[11.679999999999996, "o", " "] +[11.709999999999996, "o", "s"] +[11.739999999999995, "o", "g"] +[11.769999999999994, "o", "r"] +[11.799999999999994, "o", " "] +[11.829999999999993, "o", "i"] +[11.859999999999992, "o", "n"] +[11.889999999999992, "o", "i"] +[11.919999999999991, "o", "t"] +[11.94999999999999, "o", " "] +[11.97999999999999, "o", "r"] +[12.00999999999999, "o", "a"] +[12.039999999999988, "o", "w"] +[12.069999999999988, "o", "_"] +[12.099999999999987, "o", "j"] +[12.129999999999987, "o", "a"] +[12.159999999999986, "o", "f"] +[12.189999999999985, "o", "f"] +[12.219999999999985, "o", "l"] +[12.249999999999984, "o", "e"] +[12.279999999999983, "o", "_"] +[12.309999999999983, "o", "s"] +[12.339999999999982, "o", "h"] +[12.369999999999981, "o", "o"] +[12.39999999999998, "o", "p"] +[12.42999999999998, "o", "\r\n"] +[12.45999999999998, "o", "$"] +[12.489999999999979, "o", " "] +[12.519999999999978, "o", "s"] +[12.549999999999978, "o", "g"] +[12.579999999999977, "o", "r"] +[12.609999999999976, "o", " "] +[12.639999999999976, "o", "c"] +[12.669999999999975, "o", "s"] +[12.699999999999974, "o", "v"] +[12.729999999999974, "o", " "] +[12.759999999999973, "o", "i"] +[12.789999999999973, "o", "m"] +[12.819999999999972, "o", "p"] +[12.849999999999971, "o", "o"] +[12.87999999999997, "o", "r"] +[12.90999999999997, "o", "t"] +[12.93999999999997, "o", " "] +[12.969999999999969, "o", "-"] +[12.999999999999968, "o", "f"] +[13.029999999999967, "o", " "] +[13.059999999999967, "o", "j"] +[13.089999999999966, "o", "a"] +[13.119999999999965, "o", "f"] +[13.149999999999965, "o", "f"] +[13.179999999999964, "o", "l"] +[13.209999999999964, "o", "e"] +[13.239999999999963, "o", "_"] +[13.269999999999962, "o", "s"] +[13.299999999999962, "o", "h"] +[13.329999999999961, "o", "o"] +[13.35999999999996, "o", "p"] +[13.38999999999996, "o", "/"] +[13.419999999999959, "o", "d"] +[13.449999999999958, "o", "a"] +[13.479999999999958, "o", "t"] +[13.509999999999957, "o", "a"] +[13.539999999999957, "o", "/"] +[13.569999999999956, "o", "r"] +[13.599999999999955, "o", "a"] +[13.629999999999955, "o", "w"] +[13.659999999999954, "o", "_"] +[13.689999999999953, "o", "c"] +[13.719999999999953, "o", "u"] +[13.749999999999952, "o", "s"] +[13.779999999999951, "o", "t"] +[13.80999999999995, "o", "o"] +[13.83999999999995, "o", "m"] +[13.86999999999995, "o", "e"] +[13.899999999999949, "o", "r"] +[13.929999999999948, "o", "s"] +[13.959999999999948, "o", "."] +[13.989999999999947, "o", "c"] +[14.019999999999946, "o", "s"] +[14.049999999999946, "o", "v"] +[14.079999999999945, "o", " "] +[14.109999999999944, "o", "-"] +[14.139999999999944, "o", "k"] +[14.169999999999943, "o", " "] +[14.199999999999942, "o", "i"] +[14.229999999999942, "o", "d"] +[14.259999999999941, "o", " "] +[14.28999999999994, "o", "r"] +[14.31999999999994, "o", "a"] +[14.34999999999994, "o", "w"] +[14.379999999999939, "o", "_"] +[14.409999999999938, "o", "j"] +[14.439999999999937, "o", "a"] +[14.469999999999937, "o", "f"] +[14.499999999999936, "o", "f"] +[14.529999999999935, "o", "l"] +[14.559999999999935, "o", "e"] +[14.589999999999934, "o", "_"] +[14.619999999999933, "o", "s"] +[14.649999999999933, "o", "h"] +[14.679999999999932, "o", "o"] +[14.709999999999932, "o", "p"] +[14.739999999999931, "o", " "] +[14.76999999999993, "o", "c"] +[14.79999999999993, "o", "u"] +[14.829999999999929, "o", "s"] +[14.859999999999928, "o", "t"] +[14.889999999999928, "o", "o"] +[14.919999999999927, "o", "m"] +[14.949999999999926, "o", "e"] +[14.979999999999926, "o", "r"] +[15.009999999999925, "o", "s"] +[15.039999999999925, "o", "\r\n"] +[15.069999999999924, "o", "$"] +[15.099999999999923, "o", " "] +[15.129999999999923, "o", "s"] +[15.159999999999922, "o", "g"] +[15.189999999999921, "o", "r"] +[15.21999999999992, "o", " "] +[15.24999999999992, "o", "c"] +[15.27999999999992, "o", "s"] +[15.309999999999919, "o", "v"] +[15.339999999999918, "o", " "] +[15.369999999999918, "o", "i"] +[15.399999999999917, "o", "m"] +[15.429999999999916, "o", "p"] +[15.459999999999916, "o", "o"] +[15.489999999999915, "o", "r"] +[15.519999999999914, "o", "t"] +[15.549999999999914, "o", " "] +[15.579999999999913, "o", "-"] +[15.609999999999912, "o", "f"] +[15.639999999999912, "o", " "] +[15.669999999999911, "o", "j"] +[15.69999999999991, "o", "a"] +[15.72999999999991, "o", "f"] +[15.75999999999991, "o", "f"] +[15.789999999999909, "o", "l"] +[15.819999999999908, "o", "e"] +[15.849999999999907, "o", "_"] +[15.879999999999907, "o", "s"] +[15.909999999999906, "o", "h"] +[15.939999999999905, "o", "o"] +[15.969999999999905, "o", "p"] +[15.999999999999904, "o", "/"] +[16.029999999999905, "o", "d"] +[16.059999999999906, "o", "a"] +[16.089999999999907, "o", "t"] +[16.11999999999991, "o", "a"] +[16.14999999999991, "o", "/"] +[16.17999999999991, "o", "r"] +[16.209999999999912, "o", "a"] +[16.239999999999913, "o", "w"] +[16.269999999999914, "o", "_"] +[16.299999999999915, "o", "o"] +[16.329999999999917, "o", "r"] +[16.359999999999918, "o", "d"] +[16.38999999999992, "o", "e"] +[16.41999999999992, "o", "r"] +[16.44999999999992, "o", "s"] +[16.479999999999922, "o", "."] +[16.509999999999923, "o", "c"] +[16.539999999999925, "o", "s"] +[16.569999999999926, "o", "v"] +[16.599999999999927, "o", " "] +[16.629999999999928, "o", "-"] +[16.65999999999993, "o", "k"] +[16.68999999999993, "o", " "] +[16.71999999999993, "o", "i"] +[16.749999999999932, "o", "d"] +[16.779999999999934, "o", " "] +[16.809999999999935, "o", "-"] +[16.839999999999936, "o", "t"] +[16.869999999999937, "o", " "] +[16.899999999999938, "o", "o"] +[16.92999999999994, "o", "r"] +[16.95999999999994, "o", "d"] +[16.98999999999994, "o", "e"] +[17.019999999999943, "o", "r"] +[17.049999999999944, "o", "_"] +[17.079999999999945, "o", "d"] +[17.109999999999946, "o", "a"] +[17.139999999999947, "o", "t"] +[17.16999999999995, "o", "e"] +[17.19999999999995, "o", " "] +[17.22999999999995, "o", "t"] +[17.259999999999952, "o", "i"] +[17.289999999999953, "o", "m"] +[17.319999999999954, "o", "e"] +[17.349999999999955, "o", "s"] +[17.379999999999956, "o", "t"] +[17.409999999999958, "o", "a"] +[17.43999999999996, "o", "m"] +[17.46999999999996, "o", "p"] +[17.49999999999996, "o", " "] +[17.529999999999962, "o", "r"] +[17.559999999999963, "o", "a"] +[17.589999999999964, "o", "w"] +[17.619999999999965, "o", "_"] +[17.649999999999967, "o", "j"] +[17.679999999999968, "o", "a"] +[17.70999999999997, "o", "f"] +[17.73999999999997, "o", "f"] +[17.76999999999997, "o", "l"] +[17.799999999999972, "o", "e"] +[17.829999999999973, "o", "_"] +[17.859999999999975, "o", "s"] +[17.889999999999976, "o", "h"] +[17.919999999999977, "o", "o"] +[17.949999999999978, "o", "p"] +[17.97999999999998, "o", " "] +[18.00999999999998, "o", "o"] +[18.03999999999998, "o", "r"] +[18.069999999999983, "o", "d"] +[18.099999999999984, "o", "e"] +[18.129999999999985, "o", "r"] +[18.159999999999986, "o", "s"] +[18.189999999999987, "o", "\r\n"] +[18.219999999999988, "o", "$"] +[18.24999999999999, "o", " "] +[18.27999999999999, "o", "s"] +[18.30999999999999, "o", "g"] +[18.339999999999993, "o", "r"] +[18.369999999999994, "o", " "] +[18.399999999999995, "o", "c"] +[18.429999999999996, "o", "s"] +[18.459999999999997, "o", "v"] +[18.49, "o", " "] +[18.52, "o", "i"] +[18.55, "o", "m"] +[18.580000000000002, "o", "p"] +[18.610000000000003, "o", "o"] +[18.640000000000004, "o", "r"] +[18.670000000000005, "o", "t"] +[18.700000000000006, "o", " "] +[18.730000000000008, "o", "-"] +[18.76000000000001, "o", "f"] +[18.79000000000001, "o", " "] +[18.82000000000001, "o", "j"] +[18.850000000000012, "o", "a"] +[18.880000000000013, "o", "f"] +[18.910000000000014, "o", "f"] +[18.940000000000015, "o", "l"] +[18.970000000000017, "o", "e"] +[19.000000000000018, "o", "_"] +[19.03000000000002, "o", "s"] +[19.06000000000002, "o", "h"] +[19.09000000000002, "o", "o"] +[19.120000000000022, "o", "p"] +[19.150000000000023, "o", "/"] +[19.180000000000025, "o", "d"] +[19.210000000000026, "o", "a"] +[19.240000000000027, "o", "t"] +[19.270000000000028, "o", "a"] +[19.30000000000003, "o", "/"] +[19.33000000000003, "o", "r"] +[19.36000000000003, "o", "a"] +[19.390000000000033, "o", "w"] +[19.420000000000034, "o", "_"] +[19.450000000000035, "o", "p"] +[19.480000000000036, "o", "a"] +[19.510000000000037, "o", "y"] +[19.54000000000004, "o", "m"] +[19.57000000000004, "o", "e"] +[19.60000000000004, "o", "n"] +[19.63000000000004, "o", "t"] +[19.660000000000043, "o", "s"] +[19.690000000000044, "o", "."] +[19.720000000000045, "o", "c"] +[19.750000000000046, "o", "s"] +[19.780000000000047, "o", "v"] +[19.81000000000005, "o", " "] +[19.84000000000005, "o", "-"] +[19.87000000000005, "o", "k"] +[19.900000000000052, "o", " "] +[19.930000000000053, "o", "i"] +[19.960000000000054, "o", "d"] +[19.990000000000055, "o", " "] +[20.020000000000056, "o", "r"] +[20.050000000000058, "o", "a"] +[20.08000000000006, "o", "w"] +[20.11000000000006, "o", "_"] +[20.14000000000006, "o", "j"] +[20.170000000000062, "o", "a"] +[20.200000000000063, "o", "f"] +[20.230000000000064, "o", "f"] +[20.260000000000066, "o", "l"] +[20.290000000000067, "o", "e"] +[20.320000000000068, "o", "_"] +[20.35000000000007, "o", "s"] +[20.38000000000007, "o", "h"] +[20.41000000000007, "o", "o"] +[20.440000000000072, "o", "p"] +[20.470000000000073, "o", " "] +[20.500000000000075, "o", "p"] +[20.530000000000076, "o", "a"] +[20.560000000000077, "o", "y"] +[20.590000000000078, "o", "m"] +[20.62000000000008, "o", "e"] +[20.65000000000008, "o", "n"] +[20.68000000000008, "o", "t"] +[20.710000000000083, "o", "s"] +[20.740000000000084, "o", "\r\n"] +[20.770000000000085, "o", "\u001b[0m"] +[20.800000000000086, "o", "\r\n"] +[21.006856012344446, "o", "Initialized empty repository raw_jaffle_shop\r\n"] +[21.036856012344447, "o", "\u001b[1m"] +[21.06685601234445, "o", "\u001b[36m"] +[21.09685601234445, "o", "\u001b[91m"] +[21.12685601234445, "o", "$"] +[21.156856012344452, "o", " "] +[21.186856012344453, "o", "\u001b[0m"] +[26.216856012344454, "o", "\u001b[H"] +[26.246856012344455, "o", "\u001b[J"] +[26.276856012344457, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Snapshot the initial data with Splitgraph."] +[26.306856012344458, "o", "\r\n"] +[26.33685601234446, "o", "$"] +[26.36685601234446, "o", " "] +[26.39685601234446, "o", "s"] +[26.426856012344462, "o", "g"] +[26.456856012344463, "o", "r"] +[26.486856012344465, "o", " "] +[26.516856012344466, "o", "d"] +[26.546856012344467, "o", "i"] +[26.576856012344468, "o", "f"] +[26.60685601234447, "o", "f"] +[26.63685601234447, "o", " "] +[26.66685601234447, "o", "r"] +[26.696856012344472, "o", "a"] +[26.726856012344474, "o", "w"] +[26.756856012344475, "o", "_"] +[26.786856012344476, "o", "j"] +[26.816856012344477, "o", "a"] +[26.846856012344478, "o", "f"] +[26.87685601234448, "o", "f"] +[26.90685601234448, "o", "l"] +[26.93685601234448, "o", "e"] +[26.966856012344483, "o", "_"] +[26.996856012344484, "o", "s"] +[27.026856012344485, "o", "h"] +[27.056856012344486, "o", "o"] +[27.086856012344487, "o", "p"] +[27.11685601234449, "o", "\r\n"] +[27.14685601234449, "o", "$"] +[27.17685601234449, "o", " "] +[27.206856012344492, "o", "s"] +[27.236856012344493, "o", "g"] +[27.266856012344494, "o", "r"] +[27.296856012344495, "o", " "] +[27.326856012344496, "o", "c"] +[27.356856012344497, "o", "o"] +[27.3868560123445, "o", "m"] +[27.4168560123445, "o", "m"] +[27.4468560123445, "o", "i"] +[27.476856012344502, "o", "t"] +[27.506856012344503, "o", " "] +[27.536856012344504, "o", "r"] +[27.566856012344505, "o", "a"] +[27.596856012344507, "o", "w"] +[27.626856012344508, "o", "_"] +[27.65685601234451, "o", "j"] +[27.68685601234451, "o", "a"] +[27.71685601234451, "o", "f"] +[27.746856012344512, "o", "f"] +[27.776856012344513, "o", "l"] +[27.806856012344515, "o", "e"] +[27.836856012344516, "o", "_"] +[27.866856012344517, "o", "s"] +[27.896856012344518, "o", "h"] +[27.92685601234452, "o", "o"] +[27.95685601234452, "o", "p"] +[27.98685601234452, "o", "\r\n"] +[28.016856012344522, "o", "$"] +[28.046856012344524, "o", " "] +[28.076856012344525, "o", "s"] +[28.106856012344526, "o", "g"] +[28.136856012344527, "o", "r"] +[28.166856012344528, "o", " "] +[28.19685601234453, "o", "t"] +[28.22685601234453, "o", "a"] +[28.25685601234453, "o", "g"] +[28.286856012344533, "o", " "] +[28.316856012344534, "o", "r"] +[28.346856012344535, "o", "a"] +[28.376856012344536, "o", "w"] +[28.406856012344537, "o", "_"] +[28.43685601234454, "o", "j"] +[28.46685601234454, "o", "a"] +[28.49685601234454, "o", "f"] +[28.526856012344542, "o", "f"] +[28.556856012344543, "o", "l"] +[28.586856012344544, "o", "e"] +[28.616856012344545, "o", "_"] +[28.646856012344546, "o", "s"] +[28.676856012344548, "o", "h"] +[28.70685601234455, "o", "o"] +[28.73685601234455, "o", "p"] +[28.76685601234455, "o", " "] +[28.796856012344552, "o", "a"] +[28.826856012344553, "o", "s"] +[28.856856012344554, "o", "o"] +[28.886856012344555, "o", "f"] +[28.916856012344557, "o", "_"] +[28.946856012344558, "o", "2"] +[28.97685601234456, "o", "0"] +[29.00685601234456, "o", "1"] +[29.03685601234456, "o", "8"] +[29.066856012344562, "o", "0"] +[29.096856012344563, "o", "4"] +[29.126856012344565, "o", "0"] +[29.156856012344566, "o", "9"] +[29.186856012344567, "o", "\r\n"] +[29.216856012344568, "o", "\u001b[0m"] +[29.24685601234457, "o", "\r\n"] +[29.458689727783412, "o", "Between 000000000000 and the current working copy: \r\n"] +[29.458701648712367, "o", "customers: table added\r\norders: table added\r\n"] +[29.45927409172079, "o", "payments: table added\r\n"] +[29.66535548210165, "o", "Committing raw_jaffle_shop...\r\n"] +[29.688722410202235, "o", "Processing table orders\r\n"] +[29.760837593078822, "o", "Processing table payments\r\n"] +[29.78256420135519, "o", "Processing table customers\r\n"] +[29.811699905395717, "o", "Committed raw_jaffle_shop as 1b1300de6719.\r\n"] +[30.013610639572352, "o", "Tagged raw_jaffle_shop:1b1300de6719680c36c5b02e5ae6d8bbb895fd037efa8033ebb4842f9a485aa7 with asof_20180409.\r\n"] +[30.043610639572353, "o", "\u001b[1m"] +[30.073610639572355, "o", "\u001b[36m"] +[30.103610639572356, "o", "\u001b[91m"] +[30.133610639572357, "o", "$"] +[30.163610639572358, "o", " "] +[30.19361063957236, "o", "\u001b[0m"] +[35.22361063957236, "o", "\u001b[H"] +[35.25361063957236, "o", "\u001b[J"] +[35.28361063957236, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the original data"] +[35.31361063957236, "o", "\r\n"] +[35.34361063957236, "o", "$"] +[35.37361063957236, "o", " "] +[35.40361063957236, "o", "s"] +[35.433610639572365, "o", "g"] +[35.463610639572366, "o", "r"] +[35.49361063957237, "o", " "] +[35.52361063957237, "o", "s"] +[35.55361063957237, "o", "h"] +[35.58361063957237, "o", "o"] +[35.61361063957237, "o", "w"] +[35.64361063957237, "o", " "] +[35.673610639572374, "o", "r"] +[35.703610639572375, "o", "a"] +[35.733610639572376, "o", "w"] +[35.76361063957238, "o", "_"] +[35.79361063957238, "o", "j"] +[35.82361063957238, "o", "a"] +[35.85361063957238, "o", "f"] +[35.88361063957238, "o", "f"] +[35.91361063957238, "o", "l"] +[35.943610639572384, "o", "e"] +[35.973610639572385, "o", "_"] +[36.003610639572386, "o", "s"] +[36.03361063957239, "o", "h"] +[36.06361063957239, "o", "o"] +[36.09361063957239, "o", "p"] +[36.12361063957239, "o", ":"] +[36.15361063957239, "o", "a"] +[36.18361063957239, "o", "s"] +[36.213610639572394, "o", "o"] +[36.243610639572395, "o", "f"] +[36.2736106395724, "o", "_"] +[36.3036106395724, "o", "2"] +[36.3336106395724, "o", "0"] +[36.3636106395724, "o", "1"] +[36.3936106395724, "o", "8"] +[36.4236106395724, "o", "0"] +[36.4536106395724, "o", "4"] +[36.483610639572404, "o", "0"] +[36.513610639572406, "o", "9"] +[36.54361063957241, "o", "\r\n"] +[36.57361063957241, "o", "$"] +[36.60361063957241, "o", " "] +[36.63361063957241, "o", "s"] +[36.66361063957241, "o", "g"] +[36.69361063957241, "o", "r"] +[36.723610639572414, "o", " "] +[36.753610639572415, "o", "t"] +[36.783610639572416, "o", "a"] +[36.81361063957242, "o", "b"] +[36.84361063957242, "o", "l"] +[36.87361063957242, "o", "e"] +[36.90361063957242, "o", " "] +[36.93361063957242, "o", "r"] +[36.96361063957242, "o", "a"] +[36.993610639572424, "o", "w"] +[37.023610639572425, "o", "_"] +[37.053610639572426, "o", "j"] +[37.08361063957243, "o", "a"] +[37.11361063957243, "o", "f"] +[37.14361063957243, "o", "f"] +[37.17361063957243, "o", "l"] +[37.20361063957243, "o", "e"] +[37.23361063957243, "o", "_"] +[37.263610639572434, "o", "s"] +[37.293610639572435, "o", "h"] +[37.323610639572436, "o", "o"] +[37.35361063957244, "o", "p"] +[37.38361063957244, "o", ":"] +[37.41361063957244, "o", "a"] +[37.44361063957244, "o", "s"] +[37.47361063957244, "o", "o"] +[37.50361063957244, "o", "f"] +[37.533610639572444, "o", "_"] +[37.563610639572445, "o", "2"] +[37.59361063957245, "o", "0"] +[37.62361063957245, "o", "1"] +[37.65361063957245, "o", "8"] +[37.68361063957245, "o", "0"] +[37.71361063957245, "o", "4"] +[37.74361063957245, "o", "0"] +[37.77361063957245, "o", "9"] +[37.803610639572454, "o", " "] +[37.833610639572456, "o", "o"] +[37.86361063957246, "o", "r"] +[37.89361063957246, "o", "d"] +[37.92361063957246, "o", "e"] +[37.95361063957246, "o", "r"] +[37.98361063957246, "o", "s"] +[38.01361063957246, "o", "\r\n"] +[38.043610639572464, "o", "\u001b[0m"] +[38.073610639572465, "o", "\r\n"] +[38.29326686859163, "o", "Image raw_jaffle_shop:1b1300de6719680c36c5b02e5ae6d8bbb895fd037efa8033ebb4842f9a485aa7\r\n"] +[38.29332957267793, "o", "\r\nCreated at 2021-03-29T12:45:35.200318\r\n"] +[38.295232152939164, "o", "Size: 7.58 KiB\r\n"] +[38.29524693489107, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[38.29586801528963, "o", " customers\r\n"] +[38.29606304168733, "o", " orders\r\n payments\r\n"] +[38.50018987655672, "o", "Table raw_jaffle_shop:1b1300de6719680c36c5b02e5ae6d8bbb895fd037efa8033ebb4842f9a485aa7/orders\r\n"] +[38.50020847320589, "o", "\r\n"] +[38.50088629722627, "o", "Size: 1.73 KiB\r\n"] +[38.50154528617891, "o", "Rows: 99\r\n"] +[38.50160298347505, "o", "Columns: \r\n id (integer, PK)\r\n user_id (integer)\r\n"] +[38.50161418914827, "o", " order_date (timestamp without time zone)\r\n status (character varying)\r\n\r\nObjects: \r\n"] +[38.50161967277559, "o", " o7e3ffa6e2141edde30498e4c4a6a2b510d8b7e479081aafe154d31ca4436bd\r\n"] +[38.53161967277559, "o", "\u001b[1m"] +[38.56161967277559, "o", "\u001b[36m"] +[38.59161967277559, "o", "\u001b[91m"] +[38.621619672775594, "o", "$"] +[38.651619672775595, "o", " "] +[38.6816196727756, "o", "\u001b[0m"] +[48.22361063957236, "o", "\u001b[H"] +[48.25361063957236, "o", "\u001b[J"] +[48.28361063957236, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The status column in the raw_orders table in the initial dataset can"] +[48.31361063957236, "o", "\r\n"] +[48.34361063957236, "o", "$ # change through time. Pretend that some jaffles were actually returned.\r\n"] +[48.37361063957236, "o", "$"] +[48.40361063957236, "o", " "] +[48.433610639572365, "o", "s"] +[48.463610639572366, "o", "g"] +[48.49361063957237, "o", "r"] +[48.52361063957237, "o", " "] +[48.55361063957237, "o", "s"] +[48.58361063957237, "o", "q"] +[48.61361063957237, "o", "l"] +[48.64361063957237, "o", " "] +[48.673610639572374, "o", "-"] +[48.703610639572375, "o", "s"] +[48.733610639572376, "o", " "] +[48.76361063957238, "o", "r"] +[48.79361063957238, "o", "a"] +[48.82361063957238, "o", "w"] +[48.85361063957238, "o", "_"] +[48.88361063957238, "o", "j"] +[48.91361063957238, "o", "a"] +[48.943610639572384, "o", "f"] +[48.973610639572385, "o", "f"] +[49.003610639572386, "o", "l"] +[49.03361063957239, "o", "e"] +[49.06361063957239, "o", "_"] +[49.09361063957239, "o", "s"] +[49.12361063957239, "o", "h"] +[49.15361063957239, "o", "o"] +[49.18361063957239, "o", "p"] +[49.213610639572394, "o", " "] +[49.243610639572395, "o", "\""] +[49.2736106395724, "o", "U"] +[49.3036106395724, "o", "P"] +[49.3336106395724, "o", "D"] +[49.3636106395724, "o", "A"] +[49.3936106395724, "o", "T"] +[49.4236106395724, "o", "E"] +[49.4536106395724, "o", " "] +[49.483610639572404, "o", "o"] +[49.513610639572406, "o", "r"] +[49.54361063957241, "o", "d"] +[49.57361063957241, "o", "e"] +[49.60361063957241, "o", "r"] +[49.63361063957241, "o", "s"] +[49.66361063957241, "o", " "] +[49.69361063957241, "o", "S"] +[49.723610639572414, "o", "E"] +[49.753610639572415, "o", "T"] +[49.783610639572416, "o", " "] +[49.81361063957242, "o", "s"] +[49.84361063957242, "o", "t"] +[49.87361063957242, "o", "a"] +[49.90361063957242, "o", "t"] +[49.93361063957242, "o", "u"] +[49.96361063957242, "o", "s"] +[49.993610639572424, "o", " "] +[50.023610639572425, "o", "="] +[50.053610639572426, "o", " "] +[50.08361063957243, "o", "'"] +[50.11361063957243, "o", "r"] +[50.14361063957243, "o", "e"] +[50.17361063957243, "o", "t"] +[50.20361063957243, "o", "u"] +[50.23361063957243, "o", "r"] +[50.263610639572434, "o", "n"] +[50.293610639572435, "o", "e"] +[50.323610639572436, "o", "d"] +[50.35361063957244, "o", "'"] +[50.38361063957244, "o", " "] +[50.41361063957244, "o", "\\"] +[50.44361063957244, "o", "\r\n "] +[50.47361063957244, "o", "W"] +[50.50361063957244, "o", "H"] +[50.533610639572444, "o", "E"] +[50.563610639572445, "o", "R"] +[50.59361063957245, "o", "E"] +[50.62361063957245, "o", " "] +[50.65361063957245, "o", "s"] +[50.68361063957245, "o", "t"] +[50.71361063957245, "o", "a"] +[50.74361063957245, "o", "t"] +[50.77361063957245, "o", "u"] +[50.803610639572454, "o", "s"] +[50.833610639572456, "o", " "] +[50.86361063957246, "o", "="] +[50.89361063957246, "o", " "] +[50.92361063957246, "o", "'"] +[50.95361063957246, "o", "r"] +[50.98361063957246, "o", "e"] +[51.01361063957246, "o", "t"] +[51.043610639572464, "o", "u"] +[51.073610639572465, "o", "r"] +[51.103610639572466, "o", "n"] +[51.13361063957247, "o", "_"] +[51.16361063957247, "o", "p"] +[51.19361063957247, "o", "e"] +[51.22361063957247, "o", "n"] +[51.25361063957247, "o", "d"] +[51.28361063957247, "o", "i"] +[51.313610639572474, "o", "n"] +[51.343610639572475, "o", "g"] +[51.373610639572476, "o", "'"] +[51.40361063957248, "o", " "] +[51.43361063957248, "o", "O"] +[51.46361063957248, "o", "R"] +[51.49361063957248, "o", " "] +[51.52361063957248, "o", "o"] +[51.55361063957248, "o", "r"] +[51.583610639572484, "o", "d"] +[51.613610639572485, "o", "e"] +[51.643610639572486, "o", "r"] +[51.67361063957249, "o", "_"] +[51.70361063957249, "o", "d"] +[51.73361063957249, "o", "a"] +[51.76361063957249, "o", "t"] +[51.79361063957249, "o", "e"] +[51.82361063957249, "o", " "] +[51.853610639572494, "o", "="] +[51.883610639572495, "o", " "] +[51.9136106395725, "o", "'"] +[51.9436106395725, "o", "2"] +[51.9736106395725, "o", "0"] +[52.0036106395725, "o", "1"] +[52.0336106395725, "o", "8"] +[52.0636106395725, "o", "-"] +[52.0936106395725, "o", "0"] +[52.123610639572505, "o", "3"] +[52.153610639572506, "o", "-"] +[52.18361063957251, "o", "2"] +[52.21361063957251, "o", "6"] +[52.24361063957251, "o", "'"] +[52.27361063957251, "o", "\""] +[52.30361063957251, "o", "\r\n"] +[52.33361063957251, "o", "$"] +[52.363610639572514, "o", " "] +[52.393610639572515, "o", "s"] +[52.423610639572516, "o", "g"] +[52.45361063957252, "o", "r"] +[52.48361063957252, "o", " "] +[52.51361063957252, "o", "d"] +[52.54361063957252, "o", "i"] +[52.57361063957252, "o", "f"] +[52.60361063957252, "o", "f"] +[52.633610639572524, "o", " "] +[52.663610639572525, "o", "-"] +[52.693610639572526, "o", "v"] +[52.72361063957253, "o", " "] +[52.75361063957253, "o", "r"] +[52.78361063957253, "o", "a"] +[52.81361063957253, "o", "w"] +[52.84361063957253, "o", "_"] +[52.87361063957253, "o", "j"] +[52.903610639572534, "o", "a"] +[52.933610639572535, "o", "f"] +[52.963610639572536, "o", "f"] +[52.99361063957254, "o", "l"] +[53.02361063957254, "o", "e"] +[53.05361063957254, "o", "_"] +[53.08361063957254, "o", "s"] +[53.11361063957254, "o", "h"] +[53.14361063957254, "o", "o"] +[53.173610639572544, "o", "p"] +[53.203610639572545, "o", "\r\n"] +[53.23361063957255, "o", "\u001b[0m"] +[53.26361063957255, "o", "\r\n"] +[53.72946409225504, "o", "Between 1b1300de6719 and the current working copy: \r\n"] +[53.72973302841227, "o", "customers: no changes.\r\norders: added 5 rows, removed 5 rows.\r\n- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending')\r\n- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending')\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped')\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned')\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned')\r\n+ (84, 7"] +[53.72974304199259, "o", "0, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\npayments: no changes.\r\n"] +[53.75974304199259, "o", "\u001b[1m"] +[53.789743041992594, "o", "\u001b[36m"] +[53.819743041992595, "o", "\u001b[91m"] +[53.849743041992596, "o", "$"] +[53.8797430419926, "o", " "] +[53.9097430419926, "o", "\u001b[0m"] +[58.9397430419926, "o", "\u001b[H"] +[58.9697430419926, "o", "\u001b[J"] +[58.9997430419926, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit this dataset and check out the original data"] +[59.0297430419926, "o", "\r\n"] +[59.059743041992604, "o", "$"] +[59.089743041992605, "o", " "] +[59.119743041992606, "o", "s"] +[59.14974304199261, "o", "g"] +[59.17974304199261, "o", "r"] +[59.20974304199261, "o", " "] +[59.23974304199261, "o", "c"] +[59.26974304199261, "o", "o"] +[59.29974304199261, "o", "m"] +[59.329743041992614, "o", "m"] +[59.359743041992616, "o", "i"] +[59.38974304199262, "o", "t"] +[59.41974304199262, "o", " "] +[59.44974304199262, "o", "r"] +[59.47974304199262, "o", "a"] +[59.50974304199262, "o", "w"] +[59.53974304199262, "o", "_"] +[59.56974304199262, "o", "j"] +[59.599743041992625, "o", "a"] +[59.629743041992626, "o", "f"] +[59.65974304199263, "o", "f"] +[59.68974304199263, "o", "l"] +[59.71974304199263, "o", "e"] +[59.74974304199263, "o", "_"] +[59.77974304199263, "o", "s"] +[59.80974304199263, "o", "h"] +[59.839743041992634, "o", "o"] +[59.869743041992635, "o", "p"] +[59.899743041992636, "o", "\r\n"] +[59.92974304199264, "o", "$"] +[59.95974304199264, "o", " "] +[59.98974304199264, "o", "s"] +[60.01974304199264, "o", "g"] +[60.04974304199264, "o", "r"] +[60.07974304199264, "o", " "] +[60.109743041992644, "o", "t"] +[60.139743041992645, "o", "a"] +[60.169743041992646, "o", "g"] +[60.19974304199265, "o", " "] +[60.22974304199265, "o", "r"] +[60.25974304199265, "o", "a"] +[60.28974304199265, "o", "w"] +[60.31974304199265, "o", "_"] +[60.34974304199265, "o", "j"] +[60.379743041992654, "o", "a"] +[60.409743041992655, "o", "f"] +[60.43974304199266, "o", "f"] +[60.46974304199266, "o", "l"] +[60.49974304199266, "o", "e"] +[60.52974304199266, "o", "_"] +[60.55974304199266, "o", "s"] +[60.58974304199266, "o", "h"] +[60.61974304199266, "o", "o"] +[60.649743041992664, "o", "p"] +[60.679743041992666, "o", " "] +[60.70974304199267, "o", "a"] +[60.73974304199267, "o", "s"] +[60.76974304199267, "o", "o"] +[60.79974304199267, "o", "f"] +[60.82974304199267, "o", "_"] +[60.85974304199267, "o", "2"] +[60.88974304199267, "o", "0"] +[60.919743041992675, "o", "1"] +[60.949743041992676, "o", "8"] +[60.97974304199268, "o", "0"] +[61.00974304199268, "o", "4"] +[61.03974304199268, "o", "1"] +[61.06974304199268, "o", "0"] +[61.09974304199268, "o", "\r\n"] +[61.12974304199268, "o", "$"] +[61.159743041992684, "o", " "] +[61.189743041992685, "o", "s"] +[61.219743041992686, "o", "g"] +[61.24974304199269, "o", "r"] +[61.27974304199269, "o", " "] +[61.30974304199269, "o", "c"] +[61.33974304199269, "o", "h"] +[61.36974304199269, "o", "e"] +[61.39974304199269, "o", "c"] +[61.429743041992694, "o", "k"] +[61.459743041992695, "o", "o"] +[61.489743041992696, "o", "u"] +[61.5197430419927, "o", "t"] +[61.5497430419927, "o", " "] +[61.5797430419927, "o", "r"] +[61.6097430419927, "o", "a"] +[61.6397430419927, "o", "w"] +[61.6697430419927, "o", "_"] +[61.699743041992704, "o", "j"] +[61.729743041992705, "o", "a"] +[61.75974304199271, "o", "f"] +[61.78974304199271, "o", "f"] +[61.81974304199271, "o", "l"] +[61.84974304199271, "o", "e"] +[61.87974304199271, "o", "_"] +[61.90974304199271, "o", "s"] +[61.93974304199271, "o", "h"] +[61.969743041992714, "o", "o"] +[61.999743041992716, "o", "p"] +[62.02974304199272, "o", ":"] +[62.05974304199272, "o", "a"] +[62.08974304199272, "o", "s"] +[62.11974304199272, "o", "o"] +[62.14974304199272, "o", "f"] +[62.17974304199272, "o", "_"] +[62.20974304199272, "o", "2"] +[62.239743041992725, "o", "0"] +[62.269743041992726, "o", "1"] +[62.29974304199273, "o", "8"] +[62.32974304199273, "o", "0"] +[62.35974304199273, "o", "4"] +[62.38974304199273, "o", "0"] +[62.41974304199273, "o", "9"] +[62.44974304199273, "o", "\r\n"] +[62.479743041992734, "o", "\u001b[0m"] +[62.509743041992735, "o", "\r\n"] +[62.71803433418329, "o", "Committing raw_jaffle_shop...\r\n"] +[62.741610355377745, "o", "Storing and indexing table orders\r\n"] +[62.830944366455626, "o", "Committed raw_jaffle_shop as 7f948f329a04.\r\n"] +[63.04677969932611, "o", "Tagged raw_jaffle_shop:7f948f329a04d12e6f7ee9baafac3919c48cf2230fcc5193b94d3e1d6911bf60 with asof_20180410.\r\n"] +[63.52257759094293, "o", "Checked out raw_jaffle_shop:1b1300de6719.\r\n"] +[63.55257759094293, "o", "\u001b[1m"] +[63.58257759094293, "o", "\u001b[36m"] +[63.612577590942934, "o", "\u001b[91m"] +[63.642577590942935, "o", "$"] +[63.672577590942936, "o", " "] +[63.70257759094294, "o", "\u001b[0m"] +[68.73257759094294, "o", "\u001b[H"] +[68.76257759094294, "o", "\u001b[J"] +[68.79257759094294, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the 'serious' version of the dbt project that uses data from"] +[68.82257759094294, "o", "\r\n"] +[68.85257759094294, "o", "$ # the actual warehouse rather than seed data.\r\n"] +[68.88257759094294, "o", "$"] +[68.91257759094294, "o", " "] +[68.94257759094295, "o", "c"] +[68.97257759094295, "o", "d"] +[69.00257759094295, "o", " "] +[69.03257759094295, "o", "j"] +[69.06257759094295, "o", "a"] +[69.09257759094295, "o", "f"] +[69.12257759094295, "o", "f"] +[69.15257759094295, "o", "l"] +[69.18257759094296, "o", "e"] +[69.21257759094296, "o", "_"] +[69.24257759094296, "o", "s"] +[69.27257759094296, "o", "h"] +[69.30257759094296, "o", "o"] +[69.33257759094296, "o", "p"] +[69.36257759094296, "o", " "] +[69.39257759094296, "o", "&"] +[69.42257759094296, "o", "&"] +[69.45257759094297, "o", " "] +[69.48257759094297, "o", "g"] +[69.51257759094297, "o", "i"] +[69.54257759094297, "o", "t"] +[69.57257759094297, "o", " "] +[69.60257759094297, "o", "c"] +[69.63257759094297, "o", "h"] +[69.66257759094297, "o", "e"] +[69.69257759094297, "o", "c"] +[69.72257759094298, "o", "k"] +[69.75257759094298, "o", "o"] +[69.78257759094298, "o", "u"] +[69.81257759094298, "o", "t"] +[69.84257759094298, "o", " "] +[69.87257759094298, "o", "d"] +[69.90257759094298, "o", "e"] +[69.93257759094298, "o", "m"] +[69.96257759094298, "o", "o"] +[69.99257759094299, "o", "/"] +[70.02257759094299, "o", "m"] +[70.05257759094299, "o", "a"] +[70.08257759094299, "o", "s"] +[70.11257759094299, "o", "t"] +[70.14257759094299, "o", "e"] +[70.17257759094299, "o", "r"] +[70.202577590943, "o", " "] +[70.232577590943, "o", "-"] +[70.262577590943, "o", "-"] +[70.292577590943, "o", "f"] +[70.322577590943, "o", "o"] +[70.352577590943, "o", "r"] +[70.382577590943, "o", "c"] +[70.412577590943, "o", "e"] +[70.442577590943, "o", "\r\n"] +[70.472577590943, "o", "\u001b[0m"] +[70.502577590943, "o", "\r\n"] +[70.50998239517274, "o", "Branch 'demo/master' set up to track remote branch 'demo/master' from 'origin'.\r\n"] +[70.5104198932654, "o", "Switched to a new branch 'demo/master'\r\n"] +[70.5404198932654, "o", "\u001b[1m"] +[70.5704198932654, "o", "\u001b[36m"] +[70.6004198932654, "o", "\u001b[91m"] +[70.6304198932654, "o", "$"] +[70.6604198932654, "o", " "] +[70.6904198932654, "o", "\u001b[0m"] +[75.7204198932654, "o", "\u001b[H"] +[75.7504198932654, "o", "\u001b[J"] +[75.7804198932654, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check that dbt is set up to connect to the Splitgraph engine."] +[75.8104198932654, "o", "\r\n"] +[75.8404198932654, "o", "$ # We will be outputting data into the dbt_jaffle repository, so set that up.\r\n"] +[75.8704198932654, "o", "$"] +[75.90041989326541, "o", " "] +[75.93041989326541, "o", "c"] +[75.96041989326541, "o", "a"] +[75.99041989326541, "o", "t"] +[76.02041989326541, "o", " "] +[76.05041989326541, "o", "."] +[76.08041989326541, "o", "d"] +[76.11041989326542, "o", "b"] +[76.14041989326542, "o", "t"] +[76.17041989326542, "o", "/"] +[76.20041989326542, "o", "p"] +[76.23041989326542, "o", "r"] +[76.26041989326542, "o", "o"] +[76.29041989326542, "o", "f"] +[76.32041989326542, "o", "i"] +[76.35041989326542, "o", "l"] +[76.38041989326543, "o", "e"] +[76.41041989326543, "o", "s"] +[76.44041989326543, "o", "."] +[76.47041989326543, "o", "y"] +[76.50041989326543, "o", "m"] +[76.53041989326543, "o", "l"] +[76.56041989326543, "o", "\r\n"] +[76.59041989326543, "o", "$"] +[76.62041989326544, "o", " "] +[76.65041989326544, "o", "d"] +[76.68041989326544, "o", "b"] +[76.71041989326544, "o", "t"] +[76.74041989326544, "o", " "] +[76.77041989326544, "o", "d"] +[76.80041989326544, "o", "e"] +[76.83041989326544, "o", "b"] +[76.86041989326544, "o", "u"] +[76.89041989326545, "o", "g"] +[76.92041989326545, "o", " "] +[76.95041989326545, "o", "-"] +[76.98041989326545, "o", "-"] +[77.01041989326545, "o", "p"] +[77.04041989326545, "o", "r"] +[77.07041989326545, "o", "o"] +[77.10041989326545, "o", "f"] +[77.13041989326545, "o", "i"] +[77.16041989326546, "o", "l"] +[77.19041989326546, "o", "e"] +[77.22041989326546, "o", "s"] +[77.25041989326546, "o", "-"] +[77.28041989326546, "o", "d"] +[77.31041989326546, "o", "i"] +[77.34041989326546, "o", "r"] +[77.37041989326546, "o", " "] +[77.40041989326546, "o", "."] +[77.43041989326547, "o", "d"] +[77.46041989326547, "o", "b"] +[77.49041989326547, "o", "t"] +[77.52041989326547, "o", " "] +[77.55041989326547, "o", "-"] +[77.58041989326547, "o", "-"] +[77.61041989326547, "o", "p"] +[77.64041989326547, "o", "r"] +[77.67041989326547, "o", "o"] +[77.70041989326548, "o", "j"] +[77.73041989326548, "o", "e"] +[77.76041989326548, "o", "c"] +[77.79041989326548, "o", "t"] +[77.82041989326548, "o", "-"] +[77.85041989326548, "o", "d"] +[77.88041989326548, "o", "i"] +[77.91041989326548, "o", "r"] +[77.94041989326549, "o", " "] +[77.97041989326549, "o", "j"] +[78.00041989326549, "o", "a"] +[78.03041989326549, "o", "f"] +[78.06041989326549, "o", "f"] +[78.09041989326549, "o", "l"] +[78.12041989326549, "o", "e"] +[78.1504198932655, "o", "_"] +[78.1804198932655, "o", "s"] +[78.2104198932655, "o", "h"] +[78.2404198932655, "o", "o"] +[78.2704198932655, "o", "p"] +[78.3004198932655, "o", "\r\n"] +[78.3304198932655, "o", "$"] +[78.3604198932655, "o", " "] +[78.3904198932655, "o", "s"] +[78.4204198932655, "o", "g"] +[78.4504198932655, "o", "r"] +[78.4804198932655, "o", " "] +[78.5104198932655, "o", "i"] +[78.54041989326551, "o", "n"] +[78.57041989326551, "o", "i"] +[78.60041989326551, "o", "t"] +[78.63041989326551, "o", " "] +[78.66041989326551, "o", "d"] +[78.69041989326551, "o", "b"] +[78.72041989326551, "o", "t"] +[78.75041989326552, "o", "_"] +[78.78041989326552, "o", "j"] +[78.81041989326552, "o", "a"] +[78.84041989326552, "o", "f"] +[78.87041989326552, "o", "f"] +[78.90041989326552, "o", "l"] +[78.93041989326552, "o", "e"] +[78.96041989326552, "o", "\r\n"] +[78.99041989326552, "o", "\u001b[0m"] +[79.02041989326553, "o", "\r\n"] +[79.02184873581008, "o", "jaffle_shop:"] +[79.02191644668655, "o", "\r\n"] +[79.02193027496413, "o", " target: splitgraph"] +[79.02194052696304, "o", "\r\n"] +[79.02195149421767, "o", " outputs:"] +[79.02196055412368, "o", "\r\n"] +[79.02198487281875, "o", " splitgraph:"] +[79.02201324462966, "o", "\r\n"] +[79.02202373504714, "o", " type: postgres"] +[79.02203207969741, "o", "\r\n"] +[79.02204066276626, "o", " host: localhost"] +[79.02204900741653, "o", "\r\n"] +[79.02205878257827, "o", " user: sgr"] +[79.02206736564712, "o", "\r\n"] +[79.02207618713454, "o", " pass: supersecure"] +[79.02208429336623, "o", "\r\n"] +[79.02209406852798, "o", " port: 5432"] +[79.02210241317825, "o", "\r\n"] +[79.0221109962471, "o", " dbname: splitgraph"] +[79.02211934089736, "o", "\r\n"] +[79.0221291160591, "o", " # The final schema that dbt writes to is a combination of this profile schema"] +[79.02213817596511, "o", "\r\n"] +[79.02214818954543, "o", " # and the schema specified in the model."] +[79.02215701103286, "o", "\r\n"] +[79.02216726303176, "o", " schema: \"dbt_jaffle\""] +[79.02217584610061, "o", "\r\n"] +[79.0221851444252, "o", " threads: 4"] +[79.02219444274978, "o", "\r\n"] +[79.99274044990615, "o", "Running with dbt=0.18.0\r\n"] +[80.00097709655837, "o", "dbt version: 0.18.0\r\n"] +[80.00098782539443, "o", "python version: 3.7.10\r\npython path: /opt/hostedtoolcache/Python/3.7.10/x64/bin/python\r\nos info: Linux-5.4.0-1041-azure-x86_64-with-debian-buster-sid\r\n"] +[80.00100952148513, "o", "Using profiles.yml file at .dbt/profiles.yml\r\nUsing dbt_project.yml file at /home/runner/work/splitgraph/splitgraph/examples/dbt/jaffle_shop/dbt_project.yml\r\n"] +[80.0010133361824, "o", "\r\n"] +[80.0774350738533, "o", "Configuration:\r\n profiles.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n dbt_project.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n\r\nRequired dependencies:\r\n"] +[80.08335858345107, "o", " - git [\u001b[32mOK found\u001b[0m]\r\n\r\nConnection:\r\n"] +[80.08362465858535, "o", " host: localhost\r\n port: 5432\r\n user: sgr\r\n database: splitgraph\r\n schema: dbt_jaffle\r\n search_path: None\r\n keepalives_idle: 0\r\n sslmode: None\r\n"] +[80.09606319427566, "o", " Connection test: \u001b[32mOK connection ok\u001b[0m"] +[80.09611373901443, "o", "\r\n"] +[80.09613924980239, "o", "\r\n"] +[80.20538598060683, "o", "\u001b[0m"] +[80.43621712684707, "o", "Initialized empty repository dbt_jaffle\r\n"] +[80.46621712684707, "o", "\u001b[1m"] +[80.49621712684707, "o", "\u001b[36m"] +[80.52621712684707, "o", "\u001b[91m"] +[80.55621712684707, "o", "$"] +[80.58621712684707, "o", " "] +[80.61621712684708, "o", "\u001b[0m"] +[99.2204198932654, "o", "\u001b[H"] +[99.2504198932654, "o", "\u001b[J"] +[99.2804198932654, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now run the dbt models."] +[99.3104198932654, "o", "\r\n"] +[99.3404198932654, "o", "$"] +[99.3704198932654, "o", " "] +[99.40041989326541, "o", "c"] +[99.43041989326541, "o", "d"] +[99.46041989326541, "o", " "] +[99.49041989326541, "o", "j"] +[99.52041989326541, "o", "a"] +[99.55041989326541, "o", "f"] +[99.58041989326541, "o", "f"] +[99.61041989326542, "o", "l"] +[99.64041989326542, "o", "e"] +[99.67041989326542, "o", "_"] +[99.70041989326542, "o", "s"] +[99.73041989326542, "o", "h"] +[99.76041989326542, "o", "o"] +[99.79041989326542, "o", "p"] +[99.82041989326542, "o", " "] +[99.85041989326542, "o", "&"] +[99.88041989326543, "o", "&"] +[99.91041989326543, "o", " "] +[99.94041989326543, "o", "d"] +[99.97041989326543, "o", "b"] +[100.00041989326543, "o", "t"] +[100.03041989326543, "o", " "] +[100.06041989326543, "o", "r"] +[100.09041989326543, "o", "u"] +[100.12041989326544, "o", "n"] +[100.15041989326544, "o", " "] +[100.18041989326544, "o", "-"] +[100.21041989326544, "o", "-"] +[100.24041989326544, "o", "p"] +[100.27041989326544, "o", "r"] +[100.30041989326544, "o", "o"] +[100.33041989326544, "o", "f"] +[100.36041989326544, "o", "i"] +[100.39041989326545, "o", "l"] +[100.42041989326545, "o", "e"] +[100.45041989326545, "o", "s"] +[100.48041989326545, "o", "-"] +[100.51041989326545, "o", "d"] +[100.54041989326545, "o", "i"] +[100.57041989326545, "o", "r"] +[100.60041989326545, "o", " "] +[100.63041989326545, "o", "."] +[100.66041989326546, "o", "."] +[100.69041989326546, "o", "/"] +[100.72041989326546, "o", "."] +[100.75041989326546, "o", "d"] +[100.78041989326546, "o", "b"] +[100.81041989326546, "o", "t"] +[100.84041989326546, "o", "\r\n"] +[100.87041989326546, "o", "\u001b[0m"] +[100.90041989326546, "o", "\r\n"] +[101.89392179489205, "o", "Running with dbt=0.18.0\r\n"] +[102.27689928054879, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[103.25902885437081, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[103.2616574192054, "o", "\r\n"] +[103.56516665458749, "o", "12:45:43 | Concurrency: 4 threads (target='splitgraph')\r\n"] +[103.5652372264869, "o", "12:45:43 | \r\n"] +[103.5724245929725, "o", "12:45:43 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]"] +[103.57245797157357, "o", "\r\n"] +[103.57556671142648, "o", "12:45:43 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]\r\n"] +[103.57587427139352, "o", "12:45:43 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]\r\n"] +[103.57635611534188, "o", "12:45:43 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]\r\n"] +[103.8696646118171, "o", "12:45:43 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.29s]\r\n"] +[103.87950819969247, "o", "12:45:43 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.29s]"] +[103.87954896926949, "o", "\r\n"] +[103.88106340408395, "o", "12:45:43 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.29s]"] +[103.88109559059212, "o", "\r\n"] +[103.88350814819405, "o", "12:45:43 | 5 of 9 START table model dbt_jaffle.order_payments................... [RUN]"] +[103.88360947609017, "o", "\r\n"] +[103.88562864303658, "o", "12:45:43 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.31s]"] +[103.88565987587045, "o", "\r\n"] +[103.90035432815621, "o", "12:45:43 | 6 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]"] +[103.90042108535836, "o", "\r\n"] +[103.91162628173898, "o", "12:45:43 | 7 of 9 START table model dbt_jaffle.customer_payments................ [RUN]\r\n"] +[104.08244198799203, "o", "12:45:43 | 5 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.20s]"] +[104.08249777793954, "o", "\r\n"] +[104.0949527645118, "o", "12:45:43 | 8 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]\r\n"] +[104.12361663818429, "o", "12:45:43 | 6 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.19s]\r\n"] +[104.12423128128121, "o", "12:45:43 | 7 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.20s]\r\n"] +[104.13542145729134, "o", "12:45:43 | 9 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]"] +[104.13545459747384, "o", "\r\n"] +[104.22209233284066, "o", "12:45:44 | 8 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.12s]\r\n"] +[104.23658412933419, "o", "12:45:44 | 9 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.10s]\r\n"] +[104.31552404403756, "o", "12:45:44 | \r\n"] +[104.31585949897836, "o", "12:45:44 | Finished running 4 view models, 5 table models in 1.05s.\r\n"] +[104.34664410591195, "o", "\r\n"] +[104.34681838989327, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[104.34705561637948, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[104.37557786941598, "o", "\u001b[0m"] +[104.40557786941598, "o", "\u001b[1m"] +[104.43557786941598, "o", "\u001b[36m"] +[104.46557786941598, "o", "\u001b[91m"] +[104.49557786941598, "o", "$"] +[104.52557786941598, "o", " "] +[104.55557786941598, "o", "\u001b[0m"] +[119.7204198932654, "o", "\u001b[H"] +[119.7504198932654, "o", "\u001b[J"] +[119.7804198932654, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Take a look at the built dataset and commit it."] +[119.8104198932654, "o", "\r\n"] +[119.8404198932654, "o", "$ # Note Splitgraph doesn't currently support storing views\r\n"] +[119.8704198932654, "o", "$ # that dbt uses as a staging point for the initial data.\r\n"] +[119.90041989326541, "o", "$"] +[119.93041989326541, "o", " "] +[119.96041989326541, "o", "s"] +[119.99041989326541, "o", "g"] +[120.02041989326541, "o", "r"] +[120.05041989326541, "o", " "] +[120.08041989326541, "o", "d"] +[120.11041989326542, "o", "i"] +[120.14041989326542, "o", "f"] +[120.17041989326542, "o", "f"] +[120.20041989326542, "o", " "] +[120.23041989326542, "o", "d"] +[120.26041989326542, "o", "b"] +[120.29041989326542, "o", "t"] +[120.32041989326542, "o", "_"] +[120.35041989326542, "o", "j"] +[120.38041989326543, "o", "a"] +[120.41041989326543, "o", "f"] +[120.44041989326543, "o", "f"] +[120.47041989326543, "o", "l"] +[120.50041989326543, "o", "e"] +[120.53041989326543, "o", "\r\n"] +[120.56041989326543, "o", "$"] +[120.59041989326543, "o", " "] +[120.62041989326544, "o", "s"] +[120.65041989326544, "o", "g"] +[120.68041989326544, "o", "r"] +[120.71041989326544, "o", " "] +[120.74041989326544, "o", "c"] +[120.77041989326544, "o", "o"] +[120.80041989326544, "o", "m"] +[120.83041989326544, "o", "m"] +[120.86041989326544, "o", "i"] +[120.89041989326545, "o", "t"] +[120.92041989326545, "o", " "] +[120.95041989326545, "o", "d"] +[120.98041989326545, "o", "b"] +[121.01041989326545, "o", "t"] +[121.04041989326545, "o", "_"] +[121.07041989326545, "o", "j"] +[121.10041989326545, "o", "a"] +[121.13041989326545, "o", "f"] +[121.16041989326546, "o", "f"] +[121.19041989326546, "o", "l"] +[121.22041989326546, "o", "e"] +[121.25041989326546, "o", "\r\n"] +[121.28041989326546, "o", "$"] +[121.31041989326546, "o", " "] +[121.34041989326546, "o", "s"] +[121.37041989326546, "o", "g"] +[121.40041989326546, "o", "r"] +[121.43041989326547, "o", " "] +[121.46041989326547, "o", "t"] +[121.49041989326547, "o", "a"] +[121.52041989326547, "o", "g"] +[121.55041989326547, "o", " "] +[121.58041989326547, "o", "d"] +[121.61041989326547, "o", "b"] +[121.64041989326547, "o", "t"] +[121.67041989326547, "o", "_"] +[121.70041989326548, "o", "j"] +[121.73041989326548, "o", "a"] +[121.76041989326548, "o", "f"] +[121.79041989326548, "o", "f"] +[121.82041989326548, "o", "l"] +[121.85041989326548, "o", "e"] +[121.88041989326548, "o", " "] +[121.91041989326548, "o", "a"] +[121.94041989326549, "o", "s"] +[121.97041989326549, "o", "o"] +[122.00041989326549, "o", "f"] +[122.03041989326549, "o", "_"] +[122.06041989326549, "o", "2"] +[122.09041989326549, "o", "0"] +[122.12041989326549, "o", "1"] +[122.1504198932655, "o", "8"] +[122.1804198932655, "o", "0"] +[122.2104198932655, "o", "4"] +[122.2404198932655, "o", "0"] +[122.2704198932655, "o", "9"] +[122.3004198932655, "o", "\r\n"] +[122.3304198932655, "o", "\u001b[0m"] +[122.3604198932655, "o", "\r\n"] +[122.58883252143933, "o", "Between 000000000000 and the current working copy: \r\n"] +[122.58885421753003, "o", "customer_orders: table added\r\ncustomer_payments: table added\r\ndim_customers: table added\r\nfct_orders: table added\r\norder_payments: table added\r\nstg_jaffle_shop__customers: untracked\r\nstg_jaffle_shop__orders: untracked\r\nstg_jaffle_shop__payments: untracked\r\nstg_stripe__payments: untracked\r\n"] +[122.79011025428845, "o", "Committing dbt_jaffle...\r\n"] +[122.80222907066418, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[122.80313982963635, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[122.804061079026, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[122.80483856201245, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[122.81197872161938, "o", "Processing table order_payments\r\n"] +[122.88828983306958, "o", "Processing table customer_payments\r\n"] +[122.91253795623852, "o", "Processing table customer_orders\r\n"] +[122.93943943977429, "o", "Processing table fct_orders\r\n"] +[122.9696716308601, "o", "Processing table dim_customers\r\n"] +[123.00635638237073, "o", "Committed dbt_jaffle as 2b6dfb0a716c.\r\n"] +[123.21889057159497, "o", "Tagged dbt_jaffle:2b6dfb0a716c86b33f74c45bf0e1e26395633bd3f5845991fd8d1a4dd70cb390 with asof_20180409.\r\n"] +[123.24889057159497, "o", "\u001b[1m"] +[123.27889057159497, "o", "\u001b[36m"] +[123.30889057159497, "o", "\u001b[91m"] +[123.33889057159497, "o", "$"] +[123.36889057159497, "o", " "] +[123.39889057159498, "o", "\u001b[0m"] +[134.22041989326542, "o", "\u001b[H"] +[134.25041989326542, "o", "\u001b[J"] +[134.28041989326542, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the new version of the raw dataset and run dbt against it as well."] +[134.31041989326542, "o", "\r\n"] +[134.34041989326542, "o", "$"] +[134.37041989326542, "o", " "] +[134.40041989326542, "o", "s"] +[134.43041989326542, "o", "g"] +[134.46041989326542, "o", "r"] +[134.49041989326543, "o", " "] +[134.52041989326543, "o", "c"] +[134.55041989326543, "o", "h"] +[134.58041989326543, "o", "e"] +[134.61041989326543, "o", "c"] +[134.64041989326543, "o", "k"] +[134.67041989326543, "o", "o"] +[134.70041989326543, "o", "u"] +[134.73041989326543, "o", "t"] +[134.76041989326544, "o", " "] +[134.79041989326544, "o", "r"] +[134.82041989326544, "o", "a"] +[134.85041989326544, "o", "w"] +[134.88041989326544, "o", "_"] +[134.91041989326544, "o", "j"] +[134.94041989326544, "o", "a"] +[134.97041989326544, "o", "f"] +[135.00041989326544, "o", "f"] +[135.03041989326545, "o", "l"] +[135.06041989326545, "o", "e"] +[135.09041989326545, "o", "_"] +[135.12041989326545, "o", "s"] +[135.15041989326545, "o", "h"] +[135.18041989326545, "o", "o"] +[135.21041989326545, "o", "p"] +[135.24041989326545, "o", ":"] +[135.27041989326545, "o", "a"] +[135.30041989326546, "o", "s"] +[135.33041989326546, "o", "o"] +[135.36041989326546, "o", "f"] +[135.39041989326546, "o", "_"] +[135.42041989326546, "o", "2"] +[135.45041989326546, "o", "0"] +[135.48041989326546, "o", "1"] +[135.51041989326546, "o", "8"] +[135.54041989326547, "o", "0"] +[135.57041989326547, "o", "4"] +[135.60041989326547, "o", "1"] +[135.63041989326547, "o", "0"] +[135.66041989326547, "o", "\r\n"] +[135.69041989326547, "o", "$"] +[135.72041989326547, "o", " "] +[135.75041989326547, "o", "c"] +[135.78041989326547, "o", "d"] +[135.81041989326548, "o", " "] +[135.84041989326548, "o", "j"] +[135.87041989326548, "o", "a"] +[135.90041989326548, "o", "f"] +[135.93041989326548, "o", "f"] +[135.96041989326548, "o", "l"] +[135.99041989326548, "o", "e"] +[136.02041989326548, "o", "_"] +[136.05041989326548, "o", "s"] +[136.08041989326549, "o", "h"] +[136.1104198932655, "o", "o"] +[136.1404198932655, "o", "p"] +[136.1704198932655, "o", " "] +[136.2004198932655, "o", "&"] +[136.2304198932655, "o", "&"] +[136.2604198932655, "o", " "] +[136.2904198932655, "o", "d"] +[136.3204198932655, "o", "b"] +[136.3504198932655, "o", "t"] +[136.3804198932655, "o", " "] +[136.4104198932655, "o", "r"] +[136.4404198932655, "o", "u"] +[136.4704198932655, "o", "n"] +[136.5004198932655, "o", " "] +[136.5304198932655, "o", "-"] +[136.5604198932655, "o", "-"] +[136.5904198932655, "o", "p"] +[136.6204198932655, "o", "r"] +[136.6504198932655, "o", "o"] +[136.6804198932655, "o", "f"] +[136.7104198932655, "o", "i"] +[136.7404198932655, "o", "l"] +[136.7704198932655, "o", "e"] +[136.8004198932655, "o", "s"] +[136.8304198932655, "o", "-"] +[136.86041989326552, "o", "d"] +[136.89041989326552, "o", "i"] +[136.92041989326552, "o", "r"] +[136.95041989326552, "o", " "] +[136.98041989326552, "o", "."] +[137.01041989326552, "o", "."] +[137.04041989326552, "o", "/"] +[137.07041989326552, "o", "."] +[137.10041989326552, "o", "d"] +[137.13041989326553, "o", "b"] +[137.16041989326553, "o", "t"] +[137.19041989326553, "o", "\r\n"] +[137.22041989326553, "o", "\u001b[0m"] +[137.25041989326553, "o", "\r\n"] +[137.7429352188118, "o", "Checked out raw_jaffle_shop:7f948f329a04.\r\n"] +[138.68332079887466, "o", "Running with dbt=0.18.0\r\n"] +[139.0806398773201, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[139.97499565124588, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[139.97762564659195, "o", "\r\n"] +[140.37040094375686, "o", "12:45:48 | Concurrency: 4 threads (target='splitgraph')\r\n"] +[140.37049225807266, "o", "12:45:48 | \r\n"] +[140.37883571624832, "o", "12:45:48 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]"] +[140.37888983726577, "o", "\r\n"] +[140.38083676338272, "o", "12:45:48 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]"] +[140.3808825397499, "o", "\r\n"] +[140.38118223190384, "o", "12:45:48 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]"] +[140.38121751785354, "o", "\r\n"] +[140.38165883064346, "o", "12:45:48 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]"] +[140.38167480468826, "o", "\r\n"] +[140.68208769798355, "o", "12:45:49 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.29s]"] +[140.68365482330398, "o", "\r\n"] +[140.68721679687576, "o", "12:45:49 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.30s]"] +[140.68741444587783, "o", "\r\n"] +[140.68984178543167, "o", "12:45:49 | 5 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]"] +[140.6898768329628, "o", "\r\n"] +[140.7126481914528, "o", "12:45:49 | 6 of 9 START table model dbt_jaffle.customer_payments................ [RUN]"] +[140.71268729209976, "o", "\r\n"] +[140.75451902389602, "o", "12:45:49 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.33s]"] +[140.7545547866829, "o", "\r\n"] +[140.75502828598098, "o", "12:45:49 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.35s]\r\n"] +[140.75723699569778, "o", "12:45:49 | 7 of 9 START table model dbt_jaffle.order_payments................... [RUN]"] +[140.75727180481033, "o", "\r\n"] +[140.91915134430008, "o", "12:45:49 | 5 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.22s]\r\n"] +[140.92124823570327, "o", "12:45:49 | 7 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.16s]\r\n"] +[140.92286495208816, "o", "12:45:49 | 6 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.21s]\r\n"] +[140.92669824600296, "o", "12:45:49 | 8 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]"] +[140.92677215576248, "o", "\r\n"] +[140.9379156017311, "o", "12:45:49 | 9 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]"] +[140.93794850349502, "o", "\r\n"] +[141.06825307846145, "o", "12:45:49 | 8 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.14s]"] +[141.0683005237587, "o", "\r\n"] +[141.08483056068496, "o", "12:45:49 | 9 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.14s]\r\n"] +[141.1252799415596, "o", "12:45:49 | \r\n"] +[141.12551239967422, "o", "12:45:49 | Finished running 4 view models, 5 table models in 1.15s."] +[141.12554506301956, "o", "\r\n"] +[141.16152051925735, "o", "\r\n"] +[141.16178993225174, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[141.16199735641555, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[141.1928487205513, "o", "\u001b[0m"] +[141.2228487205513, "o", "\u001b[1m"] +[141.2528487205513, "o", "\u001b[36m"] +[141.2828487205513, "o", "\u001b[91m"] +[141.3128487205513, "o", "$"] +[141.3428487205513, "o", " "] +[141.3728487205513, "o", "\u001b[0m"] +[155.72041989326542, "o", "\u001b[H"] +[155.75041989326542, "o", "\u001b[J"] +[155.78041989326542, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create an image from the new data."] +[155.81041989326542, "o", "\r\n"] +[155.84041989326542, "o", "$"] +[155.87041989326542, "o", " "] +[155.90041989326542, "o", "s"] +[155.93041989326542, "o", "g"] +[155.96041989326542, "o", "r"] +[155.99041989326543, "o", " "] +[156.02041989326543, "o", "c"] +[156.05041989326543, "o", "o"] +[156.08041989326543, "o", "m"] +[156.11041989326543, "o", "m"] +[156.14041989326543, "o", "i"] +[156.17041989326543, "o", "t"] +[156.20041989326543, "o", " "] +[156.23041989326543, "o", "d"] +[156.26041989326544, "o", "b"] +[156.29041989326544, "o", "t"] +[156.32041989326544, "o", "_"] +[156.35041989326544, "o", "j"] +[156.38041989326544, "o", "a"] +[156.41041989326544, "o", "f"] +[156.44041989326544, "o", "f"] +[156.47041989326544, "o", "l"] +[156.50041989326544, "o", "e"] +[156.53041989326545, "o", "\r\n"] +[156.56041989326545, "o", "$"] +[156.59041989326545, "o", " "] +[156.62041989326545, "o", "s"] +[156.65041989326545, "o", "g"] +[156.68041989326545, "o", "r"] +[156.71041989326545, "o", " "] +[156.74041989326545, "o", "t"] +[156.77041989326545, "o", "a"] +[156.80041989326546, "o", "g"] +[156.83041989326546, "o", " "] +[156.86041989326546, "o", "d"] +[156.89041989326546, "o", "b"] +[156.92041989326546, "o", "t"] +[156.95041989326546, "o", "_"] +[156.98041989326546, "o", "j"] +[157.01041989326546, "o", "a"] +[157.04041989326547, "o", "f"] +[157.07041989326547, "o", "f"] +[157.10041989326547, "o", "l"] +[157.13041989326547, "o", "e"] +[157.16041989326547, "o", " "] +[157.19041989326547, "o", "a"] +[157.22041989326547, "o", "s"] +[157.25041989326547, "o", "o"] +[157.28041989326547, "o", "f"] +[157.31041989326548, "o", "_"] +[157.34041989326548, "o", "2"] +[157.37041989326548, "o", "0"] +[157.40041989326548, "o", "1"] +[157.43041989326548, "o", "8"] +[157.46041989326548, "o", "0"] +[157.49041989326548, "o", "4"] +[157.52041989326548, "o", "1"] +[157.55041989326548, "o", "0"] +[157.58041989326549, "o", "\r\n"] +[157.6104198932655, "o", "\u001b[0m"] +[157.6404198932655, "o", "\r\n"] +[157.8755842971809, "o", "Committing dbt_jaffle...\r\n"] +[157.89210408210826, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[157.89357488632274, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[157.90357225418163, "o", "Processing table order_payments\r\n"] +[157.97001092910838, "o", "Object o87940f703edacc7113c37ae83a6abe6293f48cbb940171ef03875a066b0c5c already exists, skipping\r\n"] +[157.98170822143626, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[157.99000328064037, "o", "Processing table customer_orders\r\n"] +[157.99683397293163, "o", "Object o0fafb9e76c06e221af3aa558b0a751b176857a09b2d75ca00826becbd12ef5 already exists, skipping\r\n"] +[158.00571625709605, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[158.0152041244514, "o", "Processing table customer_payments\r\n"] +[158.0232002067573, "o", "Object o47a7af4dc6d74898da55e6c760eac4d702db25633cfab4e28e6df77cf00098 already exists, skipping\r\n"] +[158.03703134536815, "o", "Processing table dim_customers\r\n"] +[158.04435675621104, "o", "Object o9656926ef986d89e326952a43869eaf3dc59905ff22aba22cd3dd67a834dc5 already exists, skipping\r\n"] +[158.05899231910777, "o", "Processing table fct_orders\r\n"] +[158.1031688976295, "o", "Committed dbt_jaffle as 8162a48a7f81.\r\n"] +[158.31845443725658, "o", "Tagged dbt_jaffle:8162a48a7f81cbc349d1ecc78319d22a95467aa6aabe91aafc5bed76d36692db with asof_20180410.\r\n"] +[158.34845443725658, "o", "\u001b[1m"] +[158.37845443725658, "o", "\u001b[36m"] +[158.40845443725658, "o", "\u001b[91m"] +[158.43845443725658, "o", "$"] +[158.46845443725658, "o", " "] +[158.49845443725658, "o", "\u001b[0m"] +[165.72041989326542, "o", "\u001b[H"] +[165.75041989326542, "o", "\u001b[J"] +[165.78041989326542, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We now have two versions of the source and the target dataset."] +[165.81041989326542, "o", "\r\n"] +[165.84041989326542, "o", "$"] +[165.87041989326542, "o", " "] +[165.90041989326542, "o", "s"] +[165.93041989326542, "o", "g"] +[165.96041989326542, "o", "r"] +[165.99041989326543, "o", " "] +[166.02041989326543, "o", "l"] +[166.05041989326543, "o", "o"] +[166.08041989326543, "o", "g"] +[166.11041989326543, "o", " "] +[166.14041989326543, "o", "-"] +[166.17041989326543, "o", "t"] +[166.20041989326543, "o", " "] +[166.23041989326543, "o", "r"] +[166.26041989326544, "o", "a"] +[166.29041989326544, "o", "w"] +[166.32041989326544, "o", "_"] +[166.35041989326544, "o", "j"] +[166.38041989326544, "o", "a"] +[166.41041989326544, "o", "f"] +[166.44041989326544, "o", "f"] +[166.47041989326544, "o", "l"] +[166.50041989326544, "o", "e"] +[166.53041989326545, "o", "_"] +[166.56041989326545, "o", "s"] +[166.59041989326545, "o", "h"] +[166.62041989326545, "o", "o"] +[166.65041989326545, "o", "p"] +[166.68041989326545, "o", "\r\n"] +[166.71041989326545, "o", "$"] +[166.74041989326545, "o", " "] +[166.77041989326545, "o", "s"] +[166.80041989326546, "o", "g"] +[166.83041989326546, "o", "r"] +[166.86041989326546, "o", " "] +[166.89041989326546, "o", "l"] +[166.92041989326546, "o", "o"] +[166.95041989326546, "o", "g"] +[166.98041989326546, "o", " "] +[167.01041989326546, "o", "-"] +[167.04041989326547, "o", "t"] +[167.07041989326547, "o", " "] +[167.10041989326547, "o", "d"] +[167.13041989326547, "o", "b"] +[167.16041989326547, "o", "t"] +[167.19041989326547, "o", "_"] +[167.22041989326547, "o", "j"] +[167.25041989326547, "o", "a"] +[167.28041989326547, "o", "f"] +[167.31041989326548, "o", "f"] +[167.34041989326548, "o", "l"] +[167.37041989326548, "o", "e"] +[167.40041989326548, "o", "\r\n"] +[167.43041989326548, "o", "\u001b[0m"] +[167.46041989326548, "o", "\r\n"] +[167.68136167526316, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-03-29 12:45:33\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m1b1300de67\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-03-29 12:45:35\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m7f948f329a\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-03-29 12:45:37\u001b[0m\r\n"] +[167.9227626323707, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-03-29 12:45:40\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m2b6dfb0a71\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-03-29 12:45:44\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m8162a48a7f\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-03-29 12:45:50\u001b[0m\r\n"] +[167.9527626323707, "o", "\u001b[1m"] +[167.9827626323707, "o", "\u001b[36m"] +[168.0127626323707, "o", "\u001b[91m"] +[168.0427626323707, "o", "$"] +[168.0727626323707, "o", " "] +[168.1027626323707, "o", "\u001b[0m"] +[173.1327626323707, "o", "\u001b[H"] +[173.16276263237071, "o", "\u001b[J"] +[173.19276263237072, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the difference between the two datasets that dbt built."] +[173.22276263237072, "o", "\r\n"] +[173.25276263237072, "o", "$"] +[173.28276263237072, "o", " "] +[173.31276263237072, "o", "s"] +[173.34276263237072, "o", "g"] +[173.37276263237072, "o", "r"] +[173.40276263237072, "o", " "] +[173.43276263237072, "o", "d"] +[173.46276263237073, "o", "i"] +[173.49276263237073, "o", "f"] +[173.52276263237073, "o", "f"] +[173.55276263237073, "o", " "] +[173.58276263237073, "o", "d"] +[173.61276263237073, "o", "b"] +[173.64276263237073, "o", "t"] +[173.67276263237073, "o", "_"] +[173.70276263237074, "o", "j"] +[173.73276263237074, "o", "a"] +[173.76276263237074, "o", "f"] +[173.79276263237074, "o", "f"] +[173.82276263237074, "o", "l"] +[173.85276263237074, "o", "e"] +[173.88276263237074, "o", " "] +[173.91276263237074, "o", "a"] +[173.94276263237074, "o", "s"] +[173.97276263237075, "o", "o"] +[174.00276263237075, "o", "f"] +[174.03276263237075, "o", "_"] +[174.06276263237075, "o", "2"] +[174.09276263237075, "o", "0"] +[174.12276263237075, "o", "1"] +[174.15276263237075, "o", "8"] +[174.18276263237075, "o", "0"] +[174.21276263237075, "o", "4"] +[174.24276263237076, "o", "0"] +[174.27276263237076, "o", "9"] +[174.30276263237076, "o", " "] +[174.33276263237076, "o", "a"] +[174.36276263237076, "o", "s"] +[174.39276263237076, "o", "o"] +[174.42276263237076, "o", "f"] +[174.45276263237076, "o", "_"] +[174.48276263237076, "o", "2"] +[174.51276263237077, "o", "0"] +[174.54276263237077, "o", "1"] +[174.57276263237077, "o", "8"] +[174.60276263237077, "o", "0"] +[174.63276263237077, "o", "4"] +[174.66276263237077, "o", "1"] +[174.69276263237077, "o", "0"] +[174.72276263237077, "o", " "] +[174.75276263237078, "o", "-"] +[174.78276263237078, "o", "-"] +[174.81276263237078, "o", "v"] +[174.84276263237078, "o", "e"] +[174.87276263237078, "o", "r"] +[174.90276263237078, "o", "b"] +[174.93276263237078, "o", "o"] +[174.96276263237078, "o", "s"] +[174.99276263237078, "o", "e"] +[175.02276263237079, "o", "\r\n"] +[175.0527626323708, "o", "\u001b[0m"] +[175.0827626323708, "o", "\r\n"] +[175.47970119476398, "o", "Between 2b6dfb0a716c and 8162a48a7f81: \r\n"] +[175.48031178474506, "o", "customer_orders: no changes.\r\ncustomer_payments: no changes.\r\ndim_customers: no changes.\r\nfct_orders: added 5 rows, removed 5 rows.\r\n- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending', 0, 0, 0, 23, 23)\r\n- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending', 0, 0, 15, 0, 15)\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 0, 25, 0, 25)\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped', 0, 0, 17, 0, 17)\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'plac"] +[175.48032775878985, "o", "ed', 0, 23, 0, 0, 23)\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned', 0, 0, 0, 23, 23)\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned', 0, 0, 15, 0, 15)\r\n+ (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 25, 0, 25)\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 17, 0, 17)\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 23, 0, 0, 23)\r\norder_payments: no changes.\r\n"] +[175.51032775878986, "o", "\u001b[1m"] +[175.54032775878986, "o", "\u001b[36m"] +[175.57032775878986, "o", "\u001b[91m"] +[175.60032775878986, "o", "$"] +[175.63032775878986, "o", " "] +[175.66032775878986, "o", "\u001b[0m"] +[182.6327626323707, "o", "\u001b[H"] +[182.66276263237071, "o", "\u001b[J"] +[182.69276263237072, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a sample query: how much in bank transfer refunds did we process?"] +[182.72276263237072, "o", "\r\n"] +[182.75276263237072, "o", "$"] +[182.78276263237072, "o", " "] +[182.81276263237072, "o", "s"] +[182.84276263237072, "o", "g"] +[182.87276263237072, "o", "r"] +[182.90276263237072, "o", " "] +[182.93276263237072, "o", "s"] +[182.96276263237073, "o", "q"] +[182.99276263237073, "o", "l"] +[183.02276263237073, "o", " "] +[183.05276263237073, "o", "-"] +[183.08276263237073, "o", "i"] +[183.11276263237073, "o", " "] +[183.14276263237073, "o", "d"] +[183.17276263237073, "o", "b"] +[183.20276263237074, "o", "t"] +[183.23276263237074, "o", "_"] +[183.26276263237074, "o", "j"] +[183.29276263237074, "o", "a"] +[183.32276263237074, "o", "f"] +[183.35276263237074, "o", "f"] +[183.38276263237074, "o", "l"] +[183.41276263237074, "o", "e"] +[183.44276263237074, "o", ":"] +[183.47276263237075, "o", "a"] +[183.50276263237075, "o", "s"] +[183.53276263237075, "o", "o"] +[183.56276263237075, "o", "f"] +[183.59276263237075, "o", "_"] +[183.62276263237075, "o", "2"] +[183.65276263237075, "o", "0"] +[183.68276263237075, "o", "1"] +[183.71276263237075, "o", "8"] +[183.74276263237076, "o", "0"] +[183.77276263237076, "o", "4"] +[183.80276263237076, "o", "0"] +[183.83276263237076, "o", "9"] +[183.86276263237076, "o", " "] +[183.89276263237076, "o", "\""] +[183.92276263237076, "o", "S"] +[183.95276263237076, "o", "E"] +[183.98276263237076, "o", "L"] +[184.01276263237077, "o", "E"] +[184.04276263237077, "o", "C"] +[184.07276263237077, "o", "T"] +[184.10276263237077, "o", " "] +[184.13276263237077, "o", "s"] +[184.16276263237077, "o", "u"] +[184.19276263237077, "o", "m"] +[184.22276263237077, "o", "("] +[184.25276263237078, "o", "b"] +[184.28276263237078, "o", "a"] +[184.31276263237078, "o", "n"] +[184.34276263237078, "o", "k"] +[184.37276263237078, "o", "_"] +[184.40276263237078, "o", "t"] +[184.43276263237078, "o", "r"] +[184.46276263237078, "o", "a"] +[184.49276263237078, "o", "n"] +[184.52276263237079, "o", "s"] +[184.5527626323708, "o", "f"] +[184.5827626323708, "o", "e"] +[184.6127626323708, "o", "r"] +[184.6427626323708, "o", "_"] +[184.6727626323708, "o", "a"] +[184.7027626323708, "o", "m"] +[184.7327626323708, "o", "o"] +[184.7627626323708, "o", "u"] +[184.7927626323708, "o", "n"] +[184.8227626323708, "o", "t"] +[184.8527626323708, "o", ")"] +[184.8827626323708, "o", " "] +[184.9127626323708, "o", "F"] +[184.9427626323708, "o", "R"] +[184.9727626323708, "o", "O"] +[185.0027626323708, "o", "M"] +[185.0327626323708, "o", " "] +[185.0627626323708, "o", "f"] +[185.0927626323708, "o", "c"] +[185.1227626323708, "o", "t"] +[185.1527626323708, "o", "_"] +[185.1827626323708, "o", "o"] +[185.2127626323708, "o", "r"] +[185.2427626323708, "o", "d"] +[185.2727626323708, "o", "e"] +[185.30276263237081, "o", "r"] +[185.33276263237082, "o", "s"] +[185.36276263237082, "o", " "] +[185.39276263237082, "o", "W"] +[185.42276263237082, "o", "H"] +[185.45276263237082, "o", "E"] +[185.48276263237082, "o", "R"] +[185.51276263237082, "o", "E"] +[185.54276263237082, "o", " "] +[185.57276263237083, "o", "s"] +[185.60276263237083, "o", "t"] +[185.63276263237083, "o", "a"] +[185.66276263237083, "o", "t"] +[185.69276263237083, "o", "u"] +[185.72276263237083, "o", "s"] +[185.75276263237083, "o", " "] +[185.78276263237083, "o", "="] +[185.81276263237083, "o", " "] +[185.84276263237084, "o", "'"] +[185.87276263237084, "o", "r"] +[185.90276263237084, "o", "e"] +[185.93276263237084, "o", "t"] +[185.96276263237084, "o", "u"] +[185.99276263237084, "o", "r"] +[186.02276263237084, "o", "n"] +[186.05276263237084, "o", "e"] +[186.08276263237084, "o", "d"] +[186.11276263237085, "o", "'"] +[186.14276263237085, "o", "\""] +[186.17276263237085, "o", "\r\n"] +[186.20276263237085, "o", "$"] +[186.23276263237085, "o", " "] +[186.26276263237085, "o", "s"] +[186.29276263237085, "o", "g"] +[186.32276263237085, "o", "r"] +[186.35276263237085, "o", " "] +[186.38276263237086, "o", "s"] +[186.41276263237086, "o", "q"] +[186.44276263237086, "o", "l"] +[186.47276263237086, "o", " "] +[186.50276263237086, "o", "-"] +[186.53276263237086, "o", "i"] +[186.56276263237086, "o", " "] +[186.59276263237086, "o", "d"] +[186.62276263237086, "o", "b"] +[186.65276263237087, "o", "t"] +[186.68276263237087, "o", "_"] +[186.71276263237087, "o", "j"] +[186.74276263237087, "o", "a"] +[186.77276263237087, "o", "f"] +[186.80276263237087, "o", "f"] +[186.83276263237087, "o", "l"] +[186.86276263237087, "o", "e"] +[186.89276263237088, "o", ":"] +[186.92276263237088, "o", "a"] +[186.95276263237088, "o", "s"] +[186.98276263237088, "o", "o"] +[187.01276263237088, "o", "f"] +[187.04276263237088, "o", "_"] +[187.07276263237088, "o", "2"] +[187.10276263237088, "o", "0"] +[187.13276263237088, "o", "1"] +[187.16276263237089, "o", "8"] +[187.1927626323709, "o", "0"] +[187.2227626323709, "o", "4"] +[187.2527626323709, "o", "1"] +[187.2827626323709, "o", "0"] +[187.3127626323709, "o", " "] +[187.3427626323709, "o", "\""] +[187.3727626323709, "o", "S"] +[187.4027626323709, "o", "E"] +[187.4327626323709, "o", "L"] +[187.4627626323709, "o", "E"] +[187.4927626323709, "o", "C"] +[187.5227626323709, "o", "T"] +[187.5527626323709, "o", " "] +[187.5827626323709, "o", "s"] +[187.6127626323709, "o", "u"] +[187.6427626323709, "o", "m"] +[187.6727626323709, "o", "("] +[187.7027626323709, "o", "b"] +[187.7327626323709, "o", "a"] +[187.7627626323709, "o", "n"] +[187.7927626323709, "o", "k"] +[187.8227626323709, "o", "_"] +[187.8527626323709, "o", "t"] +[187.8827626323709, "o", "r"] +[187.9127626323709, "o", "a"] +[187.94276263237091, "o", "n"] +[187.97276263237092, "o", "s"] +[188.00276263237092, "o", "f"] +[188.03276263237092, "o", "e"] +[188.06276263237092, "o", "r"] +[188.09276263237092, "o", "_"] +[188.12276263237092, "o", "a"] +[188.15276263237092, "o", "m"] +[188.18276263237092, "o", "o"] +[188.21276263237093, "o", "u"] +[188.24276263237093, "o", "n"] +[188.27276263237093, "o", "t"] +[188.30276263237093, "o", ")"] +[188.33276263237093, "o", " "] +[188.36276263237093, "o", "F"] +[188.39276263237093, "o", "R"] +[188.42276263237093, "o", "O"] +[188.45276263237093, "o", "M"] +[188.48276263237094, "o", " "] +[188.51276263237094, "o", "f"] +[188.54276263237094, "o", "c"] +[188.57276263237094, "o", "t"] +[188.60276263237094, "o", "_"] +[188.63276263237094, "o", "o"] +[188.66276263237094, "o", "r"] +[188.69276263237094, "o", "d"] +[188.72276263237094, "o", "e"] +[188.75276263237095, "o", "r"] +[188.78276263237095, "o", "s"] +[188.81276263237095, "o", " "] +[188.84276263237095, "o", "W"] +[188.87276263237095, "o", "H"] +[188.90276263237095, "o", "E"] +[188.93276263237095, "o", "R"] +[188.96276263237095, "o", "E"] +[188.99276263237095, "o", " "] +[189.02276263237096, "o", "s"] +[189.05276263237096, "o", "t"] +[189.08276263237096, "o", "a"] +[189.11276263237096, "o", "t"] +[189.14276263237096, "o", "u"] +[189.17276263237096, "o", "s"] +[189.20276263237096, "o", " "] +[189.23276263237096, "o", "="] +[189.26276263237096, "o", " "] +[189.29276263237097, "o", "'"] +[189.32276263237097, "o", "r"] +[189.35276263237097, "o", "e"] +[189.38276263237097, "o", "t"] +[189.41276263237097, "o", "u"] +[189.44276263237097, "o", "r"] +[189.47276263237097, "o", "n"] +[189.50276263237097, "o", "e"] +[189.53276263237098, "o", "d"] +[189.56276263237098, "o", "'"] +[189.59276263237098, "o", "\""] +[189.62276263237098, "o", "\r\n"] +[189.65276263237098, "o", "\u001b[0m"] +[189.68276263237098, "o", "\r\n"] +[190.31244851112464, "o", "3\r\n"] +[190.94293809890846, "o", "60\r\n"] +[190.97293809890846, "o", "\u001b[1m"] +[191.00293809890846, "o", "\u001b[36m"] +[191.03293809890846, "o", "\u001b[91m"] +[191.06293809890846, "o", "$"] +[191.09293809890846, "o", " "] +[191.12293809890846, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.11/import-from-csv.cast b/content/casts/versioned/archive/v0.2.11/import-from-csv.cast new file mode 100644 index 00000000..de0ba0fe --- /dev/null +++ b/content/casts/versioned/archive/v0.2.11/import-from-csv.cast @@ -0,0 +1,597 @@ +{"version": 2, "width": 100, "height": 45, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1617021871, "metadata": {"tss": [{"h": "Inspect the data file", "ts": 0.06}, {"h": "Initialize the repository", "ts": 6.502058267593386}, {"h": "Ingest the data into a new table (wrapper around COPY FROM STDIN)", "ts": 27.502058267593387}, {"h": "The data is now in a table but not committed as a Splitgraph image", "ts": 36.192058267593524}, {"h": "Create a new image and tag it", "ts": 43.494262742996426}, {"h": "Inspect the image", "ts": 51.395795841217335}, {"h": "Inspect the table", "ts": 58.07823776245152}, {"h": "Inspect object metadata", "ts": 77.57823776245152}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the data file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # (originally from https://data.townofcary.org/api/v2/catalog/datasets/rdu-weather-history/exports/csv)\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "h"] +[0.27, "o", "e"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "d"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "n"] +[0.4500000000000002, "o", "5"] +[0.4800000000000002, "o", " "] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", "d"] +[0.5700000000000003, "o", "u"] +[0.6000000000000003, "o", "-"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "-"] +[0.8700000000000006, "o", "h"] +[0.9000000000000006, "o", "i"] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "t"] +[0.9900000000000007, "o", "o"] +[1.0200000000000007, "o", "r"] +[1.0500000000000007, "o", "y"] +[1.0800000000000007, "o", "."] +[1.1100000000000008, "o", "c"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", "v"] +[1.2000000000000008, "o", "\r\n"] +[1.2300000000000009, "o", "\u001b[0m"] +[1.260000000000001, "o", "\r\n"] +[1.2620484924316415, "o", "date;temperaturemin;temperaturemax;precipitation;snowfall;snowdepth;avgwindspeed;fastest2minwinddir;fastest2minwindspeed;fastest5secwinddir;fastest5secwindspeed;fog;fogheavy;mist;rain;fogground;ice;glaze;drizzle;snow;freezingrain;smokehaze;thunder;highwind;hail;blowingsnow;dust;freezingfog\r\r\n2007-01-06;50.0;71.1;0.13;0.0;0.0;8.05;230;17.9;230;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-09;30.0;55.0;0.0;0.0;0.0;7.61;280;23.04;270;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;N"] +[1.2620582675933847, "o", "o;No\r\r\n2007-01-14;50.0;73.9;0.0;0.0;0.0;8.5;230;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-15;57.0;73.9;0.0;0.0;0.0;13.2;230;23.94;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n"] +[1.2920582675933847, "o", "\u001b[1m"] +[1.3220582675933847, "o", "\u001b[36m"] +[1.3520582675933848, "o", "\u001b[91m"] +[1.3820582675933848, "o", "$"] +[1.4120582675933848, "o", " "] +[1.4420582675933848, "o", "\u001b[0m"] +[6.472058267593385, "o", "\u001b[H"] +[6.502058267593386, "o", "\u001b[J"] +[6.532058267593386, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the repository"] +[6.562058267593386, "o", "\r\n"] +[6.592058267593386, "o", "$"] +[6.622058267593387, "o", " "] +[6.652058267593387, "o", "s"] +[6.682058267593387, "o", "g"] +[6.712058267593387, "o", "r"] +[6.7420582675933876, "o", " "] +[6.772058267593388, "o", "i"] +[6.802058267593388, "o", "n"] +[6.832058267593388, "o", "i"] +[6.8620582675933885, "o", "t"] +[6.892058267593389, "o", " "] +[6.922058267593389, "o", "d"] +[6.952058267593389, "o", "e"] +[6.9820582675933895, "o", "m"] +[7.01205826759339, "o", "o"] +[7.04205826759339, "o", "/"] +[7.07205826759339, "o", "w"] +[7.1020582675933905, "o", "e"] +[7.132058267593391, "o", "a"] +[7.162058267593391, "o", "t"] +[7.192058267593391, "o", "h"] +[7.2220582675933915, "o", "e"] +[7.252058267593392, "o", "r"] +[7.282058267593392, "o", "\r\n"] +[7.312058267593392, "o", "$"] +[7.3420582675933925, "o", " "] +[7.372058267593393, "o", "s"] +[7.402058267593393, "o", "g"] +[7.432058267593393, "o", "r"] +[7.4620582675933935, "o", " "] +[7.492058267593394, "o", "c"] +[7.522058267593394, "o", "s"] +[7.552058267593394, "o", "v"] +[7.5820582675933945, "o", " "] +[7.612058267593395, "o", "i"] +[7.642058267593395, "o", "m"] +[7.672058267593395, "o", "p"] +[7.7020582675933955, "o", "o"] +[7.732058267593396, "o", "r"] +[7.762058267593396, "o", "t"] +[7.792058267593396, "o", " "] +[7.8220582675933965, "o", "-"] +[7.852058267593397, "o", "-"] +[7.882058267593397, "o", "h"] +[7.912058267593397, "o", "e"] +[7.9420582675933975, "o", "l"] +[7.972058267593398, "o", "p"] +[8.002058267593398, "o", "\r\n"] +[8.032058267593397, "o", "\u001b[0m"] +[8.062058267593397, "o", "\r\n"] +[8.296073732376112, "o", "Initialized empty repository demo/weather\r\n"] +[8.468095598220838, "o", "Usage: sgr csv import [OPTIONS] REPOSITORY TABLE\r\n\r\n Import a CSV file into a checked-out Splitgraph repository. This doesn't\r\n create a new image, use sgr commit after the import and any adjustments\r\n (e.g. adding primary keys or converting column types) to do so.\r\n\r\n If the target table doesn't exist, this will create a new table.\r\n\r\n If the target table does exist, this will try and patch the new values in\r\n by updating rows that exist in the current table (as per its primary key\r\n constraints) an"] +[8.46810561180116, "o", "d inserting new ones. Rows existing in the current table\r\n but missing in the CSV won't be deleted.\r\n\r\n If -r is passed, the table will instead be deleted and recreated from the\r\n CSV file if it exists.\r\n\r\nOptions:\r\n -f, --file FILENAME File name to import data from, default\r\n stdin.\r\n\r\n -r, --replace Replace the table if it already exists.\r\n -k, --primary-key TEXT Use the specified column(s) as primary\r\n "] +[8.4681108570099, "o", " key(s)\r\n\r\n -t, --override-type ...\r\n Explicitly set types of these columns to PG\r\n types\r\n\r\n --encoding TEXT Encoding to use for the CSV file\r\n --separator TEXT CSV separator to use\r\n --no-header Treats the first line of the CSV as data\r\n rather than a header.\r\n\r\n --skip-schema-check Skips checking that the dataframe is\r\n "] +[8.468116579055799, "o", " compatible with the target schema.\r\n\r\n --help Show this message and exit.\r\n"] +[8.498116579055798, "o", "\u001b[1m"] +[8.528116579055798, "o", "\u001b[36m"] +[8.558116579055797, "o", "\u001b[91m"] +[8.588116579055797, "o", "$"] +[8.618116579055796, "o", " "] +[8.648116579055795, "o", "\u001b[0m"] +[27.472058267593386, "o", "\u001b[H"] +[27.502058267593387, "o", "\u001b[J"] +[27.53205826759339, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the data into a new table (wrapper around COPY FROM STDIN)"] +[27.56205826759339, "o", "\r\n"] +[27.59205826759339, "o", "$"] +[27.622058267593392, "o", " "] +[27.652058267593393, "o", "s"] +[27.682058267593394, "o", "g"] +[27.712058267593395, "o", "r"] +[27.742058267593396, "o", " "] +[27.772058267593398, "o", "c"] +[27.8020582675934, "o", "s"] +[27.8320582675934, "o", "v"] +[27.8620582675934, "o", " "] +[27.892058267593402, "o", "i"] +[27.922058267593403, "o", "m"] +[27.952058267593404, "o", "p"] +[27.982058267593406, "o", "o"] +[28.012058267593407, "o", "r"] +[28.042058267593408, "o", "t"] +[28.07205826759341, "o", " "] +[28.10205826759341, "o", "-"] +[28.13205826759341, "o", "f"] +[28.162058267593412, "o", " "] +[28.192058267593413, "o", "r"] +[28.222058267593415, "o", "d"] +[28.252058267593416, "o", "u"] +[28.282058267593417, "o", "-"] +[28.312058267593418, "o", "w"] +[28.34205826759342, "o", "e"] +[28.37205826759342, "o", "a"] +[28.40205826759342, "o", "t"] +[28.432058267593423, "o", "h"] +[28.462058267593424, "o", "e"] +[28.492058267593425, "o", "r"] +[28.522058267593426, "o", "-"] +[28.552058267593427, "o", "h"] +[28.58205826759343, "o", "i"] +[28.61205826759343, "o", "s"] +[28.64205826759343, "o", "t"] +[28.67205826759343, "o", "o"] +[28.702058267593433, "o", "r"] +[28.732058267593434, "o", "y"] +[28.762058267593435, "o", "."] +[28.792058267593436, "o", "c"] +[28.822058267593437, "o", "s"] +[28.85205826759344, "o", "v"] +[28.88205826759344, "o", " "] +[28.91205826759344, "o", "\\"] +[28.942058267593442, "o", "\r\n "] +[28.972058267593443, "o", "-"] +[29.002058267593444, "o", "k"] +[29.032058267593445, "o", " "] +[29.062058267593446, "o", "d"] +[29.092058267593448, "o", "a"] +[29.12205826759345, "o", "t"] +[29.15205826759345, "o", "e"] +[29.18205826759345, "o", " "] +[29.212058267593452, "o", "\\"] +[29.242058267593453, "o", "\r\n "] +[29.272058267593454, "o", "-"] +[29.302058267593456, "o", "t"] +[29.332058267593457, "o", " "] +[29.362058267593458, "o", "d"] +[29.39205826759346, "o", "a"] +[29.42205826759346, "o", "t"] +[29.45205826759346, "o", "e"] +[29.482058267593462, "o", " "] +[29.512058267593464, "o", "t"] +[29.542058267593465, "o", "i"] +[29.572058267593466, "o", "m"] +[29.602058267593467, "o", "e"] +[29.632058267593468, "o", "s"] +[29.66205826759347, "o", "t"] +[29.69205826759347, "o", "a"] +[29.72205826759347, "o", "m"] +[29.752058267593473, "o", "p"] +[29.782058267593474, "o", " "] +[29.812058267593475, "o", "\\"] +[29.842058267593476, "o", "\r\n "] +[29.872058267593477, "o", "-"] +[29.90205826759348, "o", "-"] +[29.93205826759348, "o", "s"] +[29.96205826759348, "o", "e"] +[29.99205826759348, "o", "p"] +[30.022058267593483, "o", "a"] +[30.052058267593484, "o", "r"] +[30.082058267593485, "o", "a"] +[30.112058267593486, "o", "t"] +[30.142058267593487, "o", "o"] +[30.17205826759349, "o", "r"] +[30.20205826759349, "o", " "] +[30.23205826759349, "o", "\""] +[30.262058267593492, "o", ";"] +[30.292058267593493, "o", "\""] +[30.322058267593494, "o", " "] +[30.352058267593495, "o", "\\"] +[30.382058267593496, "o", "\r\n "] +[30.412058267593498, "o", "d"] +[30.4420582675935, "o", "e"] +[30.4720582675935, "o", "m"] +[30.5020582675935, "o", "o"] +[30.532058267593502, "o", "/"] +[30.562058267593503, "o", "w"] +[30.592058267593504, "o", "e"] +[30.622058267593506, "o", "a"] +[30.652058267593507, "o", "t"] +[30.682058267593508, "o", "h"] +[30.71205826759351, "o", "e"] +[30.74205826759351, "o", "r"] +[30.77205826759351, "o", " "] +[30.802058267593512, "o", "r"] +[30.832058267593514, "o", "d"] +[30.862058267593515, "o", "u"] +[30.892058267593516, "o", "\r\n"] +[30.922058267593517, "o", "\u001b[0m"] +[30.952058267593518, "o", "\r\n"] +[30.98205826759352, "o", "\u001b[1m"] +[31.01205826759352, "o", "\u001b[36m"] +[31.04205826759352, "o", "\u001b[91m"] +[31.072058267593523, "o", "$"] +[31.102058267593524, "o", " "] +[31.132058267593525, "o", "\u001b[0m"] +[36.16205826759352, "o", "\u001b[H"] +[36.192058267593524, "o", "\u001b[J"] +[36.222058267593525, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The data is now in a table but not committed as a Splitgraph image"] +[36.252058267593526, "o", "\r\n"] +[36.28205826759353, "o", "$"] +[36.31205826759353, "o", " "] +[36.34205826759353, "o", "s"] +[36.37205826759353, "o", "g"] +[36.40205826759353, "o", "r"] +[36.43205826759353, "o", " "] +[36.462058267593534, "o", "s"] +[36.492058267593535, "o", "t"] +[36.522058267593536, "o", "a"] +[36.55205826759354, "o", "t"] +[36.58205826759354, "o", "u"] +[36.61205826759354, "o", "s"] +[36.64205826759354, "o", " "] +[36.67205826759354, "o", "d"] +[36.70205826759354, "o", "e"] +[36.732058267593544, "o", "m"] +[36.762058267593545, "o", "o"] +[36.792058267593546, "o", "/"] +[36.82205826759355, "o", "w"] +[36.85205826759355, "o", "e"] +[36.88205826759355, "o", "a"] +[36.91205826759355, "o", "t"] +[36.94205826759355, "o", "h"] +[36.97205826759355, "o", "e"] +[37.002058267593554, "o", "r"] +[37.032058267593555, "o", "\r\n"] +[37.06205826759356, "o", "$"] +[37.09205826759356, "o", " "] +[37.12205826759356, "o", "s"] +[37.15205826759356, "o", "g"] +[37.18205826759356, "o", "r"] +[37.21205826759356, "o", " "] +[37.24205826759356, "o", "d"] +[37.272058267593565, "o", "i"] +[37.302058267593566, "o", "f"] +[37.33205826759357, "o", "f"] +[37.36205826759357, "o", " "] +[37.39205826759357, "o", "d"] +[37.42205826759357, "o", "e"] +[37.45205826759357, "o", "m"] +[37.48205826759357, "o", "o"] +[37.512058267593574, "o", "/"] +[37.542058267593575, "o", "w"] +[37.572058267593576, "o", "e"] +[37.60205826759358, "o", "a"] +[37.63205826759358, "o", "t"] +[37.66205826759358, "o", "h"] +[37.69205826759358, "o", "e"] +[37.72205826759358, "o", "r"] +[37.75205826759358, "o", "\r\n"] +[37.782058267593584, "o", "\u001b[0m"] +[37.812058267593585, "o", "\r\n"] +[38.03639274597188, "o", "demo/weather: on image 0000000000000000000000000000000000000000000000000000000000000000.\r\n"] +[38.254223403930865, "o", "Between 000000000000 and the current working copy: \r\n"] +[38.25426274299642, "o", "rdu: table added\r\n"] +[38.28426274299642, "o", "\u001b[1m"] +[38.31426274299642, "o", "\u001b[36m"] +[38.34426274299642, "o", "\u001b[91m"] +[38.37426274299642, "o", "$"] +[38.40426274299642, "o", " "] +[38.434262742996424, "o", "\u001b[0m"] +[43.464262742996425, "o", "\u001b[H"] +[43.494262742996426, "o", "\u001b[J"] +[43.52426274299643, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a new image and tag it"] +[43.55426274299643, "o", "\r\n"] +[43.58426274299643, "o", "$"] +[43.61426274299643, "o", " "] +[43.64426274299643, "o", "s"] +[43.67426274299643, "o", "g"] +[43.704262742996434, "o", "r"] +[43.734262742996435, "o", " "] +[43.764262742996436, "o", "c"] +[43.79426274299644, "o", "o"] +[43.82426274299644, "o", "m"] +[43.85426274299644, "o", "m"] +[43.88426274299644, "o", "i"] +[43.91426274299644, "o", "t"] +[43.94426274299644, "o", " "] +[43.974262742996444, "o", "d"] +[44.004262742996445, "o", "e"] +[44.03426274299645, "o", "m"] +[44.06426274299645, "o", "o"] +[44.09426274299645, "o", "/"] +[44.12426274299645, "o", "w"] +[44.15426274299645, "o", "e"] +[44.18426274299645, "o", "a"] +[44.21426274299645, "o", "t"] +[44.244262742996455, "o", "h"] +[44.274262742996456, "o", "e"] +[44.30426274299646, "o", "r"] +[44.33426274299646, "o", "\r\n"] +[44.36426274299646, "o", "$"] +[44.39426274299646, "o", " "] +[44.42426274299646, "o", "s"] +[44.45426274299646, "o", "g"] +[44.484262742996464, "o", "r"] +[44.514262742996465, "o", " "] +[44.544262742996466, "o", "t"] +[44.57426274299647, "o", "a"] +[44.60426274299647, "o", "g"] +[44.63426274299647, "o", " "] +[44.66426274299647, "o", "d"] +[44.69426274299647, "o", "e"] +[44.72426274299647, "o", "m"] +[44.754262742996474, "o", "o"] +[44.784262742996475, "o", "/"] +[44.814262742996476, "o", "w"] +[44.84426274299648, "o", "e"] +[44.87426274299648, "o", "a"] +[44.90426274299648, "o", "t"] +[44.93426274299648, "o", "h"] +[44.96426274299648, "o", "e"] +[44.99426274299648, "o", "r"] +[45.024262742996484, "o", " "] +[45.054262742996485, "o", "i"] +[45.084262742996486, "o", "n"] +[45.11426274299649, "o", "i"] +[45.14426274299649, "o", "t"] +[45.17426274299649, "o", "i"] +[45.20426274299649, "o", "a"] +[45.23426274299649, "o", "l"] +[45.26426274299649, "o", "_"] +[45.294262742996494, "o", "d"] +[45.324262742996495, "o", "a"] +[45.3542627429965, "o", "t"] +[45.3842627429965, "o", "a"] +[45.4142627429965, "o", "\r\n"] +[45.4442627429965, "o", "\u001b[0m"] +[45.4742627429965, "o", "\r\n"] +[45.68395045280485, "o", "Committing demo/weather...\r\n"] +[45.70900133132963, "o", "Processing table rdu\r\n"] +[45.92842844009428, "o", "Committed demo/weather as 7927abcca199.\r\n"] +[46.155795841217326, "o", "Tagged demo/weather:7927abcca19962bcf0e077c465c41a056536654b22b54f9603dc6af081bfd4d4 with initial_data.\r\n"] +[46.18579584121733, "o", "\u001b[1m"] +[46.21579584121733, "o", "\u001b[36m"] +[46.24579584121733, "o", "\u001b[91m"] +[46.27579584121733, "o", "$"] +[46.30579584121733, "o", " "] +[46.33579584121733, "o", "\u001b[0m"] +[51.365795841217334, "o", "\u001b[H"] +[51.395795841217335, "o", "\u001b[J"] +[51.42579584121734, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image"] +[51.45579584121734, "o", "\r\n"] +[51.48579584121734, "o", "$"] +[51.51579584121734, "o", " "] +[51.54579584121734, "o", "s"] +[51.57579584121734, "o", "g"] +[51.60579584121734, "o", "r"] +[51.635795841217345, "o", " "] +[51.665795841217346, "o", "s"] +[51.69579584121735, "o", "h"] +[51.72579584121735, "o", "o"] +[51.75579584121735, "o", "w"] +[51.78579584121735, "o", " "] +[51.81579584121735, "o", "d"] +[51.84579584121735, "o", "e"] +[51.875795841217354, "o", "m"] +[51.905795841217355, "o", "o"] +[51.935795841217356, "o", "/"] +[51.96579584121736, "o", "w"] +[51.99579584121736, "o", "e"] +[52.02579584121736, "o", "a"] +[52.05579584121736, "o", "t"] +[52.08579584121736, "o", "h"] +[52.11579584121736, "o", "e"] +[52.145795841217364, "o", "r"] +[52.175795841217365, "o", ":"] +[52.205795841217366, "o", "i"] +[52.23579584121737, "o", "n"] +[52.26579584121737, "o", "i"] +[52.29579584121737, "o", "t"] +[52.32579584121737, "o", "i"] +[52.35579584121737, "o", "a"] +[52.38579584121737, "o", "l"] +[52.415795841217374, "o", "_"] +[52.445795841217375, "o", "d"] +[52.475795841217376, "o", "a"] +[52.50579584121738, "o", "t"] +[52.53579584121738, "o", "a"] +[52.56579584121738, "o", "\r\n"] +[52.59579584121738, "o", "\u001b[0m"] +[52.62579584121738, "o", "\r\n"] +[52.83484411239658, "o", "Image demo/weather:7927abcca19962bcf0e077c465c41a056536654b22b54f9603dc6af081bfd4d4\r\n"] +[52.834853887558324, "o", "\r\nCreated at 2021-03-29T12:44:42.233356\r\n"] +[52.83744716644321, "o", "Size: 109.61 KiB\r\n"] +[52.83745884895359, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[52.83823776245151, "o", " rdu\r\n"] +[52.868237762451514, "o", "\u001b[1m"] +[52.898237762451515, "o", "\u001b[36m"] +[52.928237762451516, "o", "\u001b[91m"] +[52.95823776245152, "o", "$"] +[52.98823776245152, "o", " "] +[53.01823776245152, "o", "\u001b[0m"] +[58.04823776245152, "o", "\u001b[H"] +[58.07823776245152, "o", "\u001b[J"] +[58.10823776245152, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the table"] +[58.138237762451524, "o", "\r\n"] +[58.168237762451525, "o", "$"] +[58.19823776245153, "o", " "] +[58.22823776245153, "o", "s"] +[58.25823776245153, "o", "g"] +[58.28823776245153, "o", "r"] +[58.31823776245153, "o", " "] +[58.34823776245153, "o", "t"] +[58.37823776245153, "o", "a"] +[58.408237762451535, "o", "b"] +[58.438237762451536, "o", "l"] +[58.46823776245154, "o", "e"] +[58.49823776245154, "o", " "] +[58.52823776245154, "o", "d"] +[58.55823776245154, "o", "e"] +[58.58823776245154, "o", "m"] +[58.61823776245154, "o", "o"] +[58.648237762451544, "o", "/"] +[58.678237762451545, "o", "w"] +[58.708237762451546, "o", "e"] +[58.73823776245155, "o", "a"] +[58.76823776245155, "o", "t"] +[58.79823776245155, "o", "h"] +[58.82823776245155, "o", "e"] +[58.85823776245155, "o", "r"] +[58.88823776245155, "o", ":"] +[58.918237762451554, "o", "i"] +[58.948237762451555, "o", "n"] +[58.978237762451556, "o", "i"] +[59.00823776245156, "o", "t"] +[59.03823776245156, "o", "i"] +[59.06823776245156, "o", "a"] +[59.09823776245156, "o", "l"] +[59.12823776245156, "o", "_"] +[59.15823776245156, "o", "d"] +[59.188237762451564, "o", "a"] +[59.218237762451565, "o", "t"] +[59.248237762451566, "o", "a"] +[59.27823776245157, "o", " "] +[59.30823776245157, "o", "r"] +[59.33823776245157, "o", "d"] +[59.36823776245157, "o", "u"] +[59.39823776245157, "o", "\r\n"] +[59.42823776245157, "o", "\u001b[0m"] +[59.458237762451574, "o", "\r\n"] +[59.675358171463415, "o", "Table demo/weather:7927abcca19962bcf0e077c465c41a056536654b22b54f9603dc6af081bfd4d4/rdu\r\n\r\n"] +[59.67708527565043, "o", "Size: 109.61 KiB\r\n"] +[59.678173894882605, "o", "Rows: 4633\r\n"] +[59.678203220367834, "o", "Columns: \r\n date (timestamp without time zone, PK)\r\n temperaturemin (numeric)\r\n temperaturemax (numeric)\r\n precipitation (numeric)\r\n snowfall (numeric)\r\n snowdepth (numeric)\r\n avgwindspeed (numeric)\r\n fastest2minwinddir (integer)\r\n fastest2minwindspeed (numeric)\r\n fastest5secwinddir (integer)\r\n"] +[59.67821442604105, "o", " fastest5secwindspeed (numeric)\r\n fog (character varying)\r\n fogheavy (character varying)\r\n"] +[59.678231830597326, "o", " mist (character varying)\r\n rain (character varying)\r\n"] +[59.67824899673502, "o", " fogground (character varying)\r\n ice (character varying)\r\n"] +[59.67826807022135, "o", " glaze (character varying)\r\n drizzle (character varying)\r\n"] +[59.67827808380167, "o", " snow (character varying)\r\n freezingrain (character varying)\r\n"] +[59.67829095840494, "o", " smokehaze (character varying)\r\n thunder (character varying)\r\n"] +[59.67831933021586, "o", " highwind (character varying)\r\n hail (character varying)\r\n blowingsnow (character varying)\r\n"] +[59.678428525925085, "o", " dust (character varying)\r\n freezingfog (character varying)\r\n\r\nObjects: \r\n"] +[59.678436632156775, "o", " ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] +[59.708436632156776, "o", "\u001b[1m"] +[59.73843663215678, "o", "\u001b[36m"] +[59.76843663215678, "o", "\u001b[91m"] +[59.79843663215678, "o", "$"] +[59.82843663215678, "o", " "] +[59.85843663215678, "o", "\u001b[0m"] +[77.54823776245152, "o", "\u001b[H"] +[77.57823776245152, "o", "\u001b[J"] +[77.60823776245152, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect object metadata"] +[77.63823776245152, "o", "\r\n"] +[77.66823776245153, "o", "$"] +[77.69823776245153, "o", " "] +[77.72823776245153, "o", "s"] +[77.75823776245153, "o", "g"] +[77.78823776245153, "o", "r"] +[77.81823776245153, "o", " "] +[77.84823776245153, "o", "o"] +[77.87823776245153, "o", "b"] +[77.90823776245153, "o", "j"] +[77.93823776245154, "o", "e"] +[77.96823776245154, "o", "c"] +[77.99823776245154, "o", "t"] +[78.02823776245154, "o", " "] +[78.05823776245154, "o", "o"] +[78.08823776245154, "o", "b"] +[78.11823776245154, "o", "7"] +[78.14823776245154, "o", "9"] +[78.17823776245154, "o", "9"] +[78.20823776245155, "o", "c"] +[78.23823776245155, "o", "a"] +[78.26823776245155, "o", "7"] +[78.29823776245155, "o", "6"] +[78.32823776245155, "o", "1"] +[78.35823776245155, "o", "e"] +[78.38823776245155, "o", "a"] +[78.41823776245155, "o", "6"] +[78.44823776245155, "o", "3"] +[78.47823776245156, "o", "8"] +[78.50823776245156, "o", "c"] +[78.53823776245156, "o", "0"] +[78.56823776245156, "o", "d"] +[78.59823776245156, "o", "b"] +[78.62823776245156, "o", "b"] +[78.65823776245156, "o", "4"] +[78.68823776245156, "o", "d"] +[78.71823776245157, "o", "f"] +[78.74823776245157, "o", "3"] +[78.77823776245157, "o", "e"] +[78.80823776245157, "o", "5"] +[78.83823776245157, "o", "9"] +[78.86823776245157, "o", "a"] +[78.89823776245157, "o", "b"] +[78.92823776245157, "o", "6"] +[78.95823776245157, "o", "a"] +[78.98823776245158, "o", "9"] +[79.01823776245158, "o", "9"] +[79.04823776245158, "o", "5"] +[79.07823776245158, "o", "d"] +[79.10823776245158, "o", "8"] +[79.13823776245158, "o", "7"] +[79.16823776245158, "o", "9"] +[79.19823776245158, "o", "9"] +[79.22823776245158, "o", "9"] +[79.25823776245159, "o", "9"] +[79.28823776245159, "o", "0"] +[79.31823776245159, "o", "9"] +[79.34823776245159, "o", "d"] +[79.37823776245159, "o", "0"] +[79.40823776245159, "o", "0"] +[79.43823776245159, "o", "8"] +[79.4682377624516, "o", "a"] +[79.4982377624516, "o", "3"] +[79.5282377624516, "o", "4"] +[79.5582377624516, "o", "9"] +[79.5882377624516, "o", "5"] +[79.6182377624516, "o", "7"] +[79.6482377624516, "o", "1"] +[79.6782377624516, "o", "1"] +[79.7082377624516, "o", "c"] +[79.7382377624516, "o", "9"] +[79.7682377624516, "o", "0"] +[79.7982377624516, "o", "0"] +[79.82823776245161, "o", "9"] +[79.85823776245161, "o", "f"] +[79.88823776245161, "o", "8"] +[79.91823776245161, "o", "f"] +[79.94823776245161, "o", "\r\n"] +[79.97823776245161, "o", "\u001b[0m"] +[80.00823776245161, "o", "\r\n"] +[80.2253565025334, "o", "Object ID: ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] +[80.22545306205794, "o", "\r\nNamespace: demo\r\nFormat: FRAG\r\nSize: 109.61 KiB\r\nCreated: 2021-03-29 12:44:42.437276\r\nRows inserted: 4633\r\nInsertion hash: 4b49b5701a582aa5c418238e4bf75c84d0dcd2ec993fb4e7fe1d0dfcf6ef6877\r\nRows deleted: 0\r\nDeletion hash: 0000000000000000000000000000000000000000000000000000000000000000\r\nColumn index:\r\n fog: ['No', 'Yes']\r\n ice: ['No', 'Yes']\r\n date: ['2007-01-01 00:00:00', '2019-09-07 00:00:00']\r\n dust: ['No', 'Yes']\r\n hail: ['No', 'Yes']\r\n mist: ['No', 'Yes']\r\n rain: ['No', 'Yes']\r\n snow: ['No', '"] +[80.22546665191695, "o", "Yes']\r\n glaze: ['No', 'Yes']\r\n drizzle: ['No', 'Yes']\r\n thunder: ['No', 'Yes']\r\n fogheavy: ['No', 'Yes']\r\n highwind: ['No', 'Yes']\r\n snowfall: ['0.0', '7.01']\r\n fogground: ['No', 'Yes']\r\n smokehaze: ['No', 'Yes']\r\n snowdepth: ['0.0', '5.91']\r\n blowingsnow: ['No', 'Yes']\r\n freezingfog: ['No', 'Yes']\r\n avgwindspeed: ['0.0', '20.36']\r\n freezingrain: ['No', 'Yes']\r\n precipitation: ['0.0', '6.45']\r\n temperaturemax: ['23.2', '105.1']\r\n temperaturemin: ['4.1', '80.1']\r\n fastest2minwinddir: [10, 36"] +[80.22547165870711, "o", "0]\r\n fastest5secwinddir: [10, 360]\r\n fastest2minwindspeed: ['4.92', '59.95']\r\n fastest5secwindspeed: ['6.93', '86.12']\r\n\r\n"] +[80.24720732688948, "o", "Location: created locally\r\n"] +[80.27720732688948, "o", "\u001b[1m"] +[80.30720732688948, "o", "\u001b[36m"] +[80.33720732688948, "o", "\u001b[91m"] +[80.36720732688948, "o", "$"] +[80.39720732688949, "o", " "] +[80.42720732688949, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.11/import-from-mongo.cast b/content/casts/versioned/archive/v0.2.11/import-from-mongo.cast new file mode 100644 index 00000000..43af7e1f --- /dev/null +++ b/content/casts/versioned/archive/v0.2.11/import-from-mongo.cast @@ -0,0 +1,657 @@ +{"version": 2, "width": 100, "height": 35, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1617021886, "metadata": {"tss": [{"h": "Inspect the config file", "ts": 0.06}, {"h": "Do some preliminary cleanup", "ts": 6.0600000000000005}, {"h": "Mount the Mongo database", "ts": 12.23498084068299}, {"h": "Check the contents of the new table", "ts": 29.234980840682994}, {"h": "Import the data into a new Splitgraph repository", "ts": 36.10845295906074}, {"h": "Alternatively, data can be imported from other databases with Splitfiles", "ts": 44.9193511199953}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the config file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "c"] +[0.24, "o", "a"] +[0.27, "o", "t"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "."] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "g"] +[0.42000000000000015, "o", "c"] +[0.4500000000000002, "o", "o"] +[0.4800000000000002, "o", "n"] +[0.5100000000000002, "o", "f"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "g"] +[0.6000000000000003, "o", "\r\n"] +[0.6300000000000003, "o", "\u001b[0m"] +[0.6600000000000004, "o", "\r\n"] +[0.6613017654418949, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[data_sources]\r\nmongo_fdw=splitgraph.hooks.data_source.MongoDataSource\r\n"] +[0.6913017654418949, "o", "\u001b[1m"] +[0.721301765441895, "o", "\u001b[36m"] +[0.751301765441895, "o", "\u001b[91m"] +[0.781301765441895, "o", "$"] +[0.811301765441895, "o", " "] +[0.841301765441895, "o", "\u001b[0m"] +[6.03, "o", "\u001b[H"] +[6.0600000000000005, "o", "\u001b[J"] +[6.090000000000001, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Do some preliminary cleanup"] +[6.120000000000001, "o", "\r\n"] +[6.150000000000001, "o", "$"] +[6.1800000000000015, "o", " "] +[6.210000000000002, "o", "s"] +[6.240000000000002, "o", "g"] +[6.270000000000002, "o", "r"] +[6.3000000000000025, "o", " "] +[6.330000000000003, "o", "r"] +[6.360000000000003, "o", "m"] +[6.390000000000003, "o", " "] +[6.4200000000000035, "o", "-"] +[6.450000000000004, "o", "y"] +[6.480000000000004, "o", " "] +[6.510000000000004, "o", "s"] +[6.5400000000000045, "o", "t"] +[6.570000000000005, "o", "a"] +[6.600000000000005, "o", "g"] +[6.630000000000005, "o", "i"] +[6.6600000000000055, "o", "n"] +[6.690000000000006, "o", "g"] +[6.720000000000006, "o", "\r\n"] +[6.750000000000006, "o", "\u001b[0m"] +[6.7800000000000065, "o", "\r\n"] +[6.99498084068299, "o", "Postgres schema staging will be deleted.\r\n"] +[7.02498084068299, "o", "\u001b[1m"] +[7.05498084068299, "o", "\u001b[36m"] +[7.084980840682991, "o", "\u001b[91m"] +[7.114980840682991, "o", "$"] +[7.144980840682991, "o", " "] +[7.174980840682991, "o", "\u001b[0m"] +[12.20498084068299, "o", "\u001b[H"] +[12.23498084068299, "o", "\u001b[J"] +[12.26498084068299, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Mount the Mongo database"] +[12.294980840682989, "o", "\r\n"] +[12.324980840682988, "o", "$"] +[12.354980840682988, "o", " "] +[12.384980840682987, "o", "s"] +[12.414980840682986, "o", "g"] +[12.444980840682986, "o", "r"] +[12.474980840682985, "o", " "] +[12.504980840682984, "o", "m"] +[12.534980840682984, "o", "o"] +[12.564980840682983, "o", "u"] +[12.594980840682982, "o", "n"] +[12.624980840682982, "o", "t"] +[12.654980840682981, "o", " "] +[12.68498084068298, "o", "m"] +[12.71498084068298, "o", "o"] +[12.74498084068298, "o", "n"] +[12.774980840682979, "o", "g"] +[12.804980840682978, "o", "o"] +[12.834980840682977, "o", "_"] +[12.864980840682977, "o", "f"] +[12.894980840682976, "o", "d"] +[12.924980840682975, "o", "w"] +[12.954980840682975, "o", " "] +[12.984980840682974, "o", "-"] +[13.014980840682973, "o", "-"] +[13.044980840682973, "o", "h"] +[13.074980840682972, "o", "e"] +[13.104980840682972, "o", "l"] +[13.134980840682971, "o", "p"] +[13.16498084068297, "o", "\r\n"] +[13.19498084068297, "o", "$"] +[13.224980840682969, "o", " "] +[13.254980840682968, "o", "s"] +[13.284980840682968, "o", "g"] +[13.314980840682967, "o", "r"] +[13.344980840682966, "o", " "] +[13.374980840682966, "o", "m"] +[13.404980840682965, "o", "o"] +[13.434980840682964, "o", "u"] +[13.464980840682964, "o", "n"] +[13.494980840682963, "o", "t"] +[13.524980840682963, "o", " "] +[13.554980840682962, "o", "m"] +[13.584980840682961, "o", "o"] +[13.61498084068296, "o", "n"] +[13.64498084068296, "o", "g"] +[13.67498084068296, "o", "o"] +[13.704980840682959, "o", "_"] +[13.734980840682958, "o", "f"] +[13.764980840682957, "o", "d"] +[13.794980840682957, "o", "w"] +[13.824980840682956, "o", " "] +[13.854980840682956, "o", "s"] +[13.884980840682955, "o", "t"] +[13.914980840682954, "o", "a"] +[13.944980840682954, "o", "g"] +[13.974980840682953, "o", "i"] +[14.004980840682952, "o", "n"] +[14.034980840682952, "o", "g"] +[14.064980840682951, "o", " "] +[14.09498084068295, "o", "-"] +[14.12498084068295, "o", "c"] +[14.15498084068295, "o", " "] +[14.184980840682949, "o", "o"] +[14.214980840682948, "o", "r"] +[14.244980840682947, "o", "i"] +[14.274980840682947, "o", "g"] +[14.304980840682946, "o", "i"] +[14.334980840682945, "o", "n"] +[14.364980840682945, "o", "r"] +[14.394980840682944, "o", "o"] +[14.424980840682943, "o", ":"] +[14.454980840682943, "o", "o"] +[14.484980840682942, "o", "r"] +[14.514980840682941, "o", "i"] +[14.54498084068294, "o", "g"] +[14.57498084068294, "o", "i"] +[14.60498084068294, "o", "n"] +[14.634980840682939, "o", "p"] +[14.664980840682938, "o", "a"] +[14.694980840682938, "o", "s"] +[14.724980840682937, "o", "s"] +[14.754980840682936, "o", "@"] +[14.784980840682936, "o", "m"] +[14.814980840682935, "o", "o"] +[14.844980840682934, "o", "n"] +[14.874980840682934, "o", "g"] +[14.904980840682933, "o", "o"] +[14.934980840682933, "o", ":"] +[14.964980840682932, "o", "2"] +[14.994980840682931, "o", "7"] +[15.02498084068293, "o", "0"] +[15.05498084068293, "o", "1"] +[15.08498084068293, "o", "7"] +[15.114980840682929, "o", " "] +[15.144980840682928, "o", "-"] +[15.174980840682927, "o", "o"] +[15.204980840682927, "o", " "] +[15.234980840682926, "o", "'"] +[15.264980840682925, "o", "{"] +[15.294980840682925, "o", "\""] +[15.324980840682924, "o", "t"] +[15.354980840682924, "o", "a"] +[15.384980840682923, "o", "b"] +[15.414980840682922, "o", "l"] +[15.444980840682922, "o", "e"] +[15.474980840682921, "o", "s"] +[15.50498084068292, "o", "\""] +[15.53498084068292, "o", ":"] +[15.564980840682919, "o", " "] +[15.594980840682918, "o", "{"] +[15.624980840682918, "o", "\""] +[15.654980840682917, "o", "s"] +[15.684980840682917, "o", "t"] +[15.714980840682916, "o", "u"] +[15.744980840682915, "o", "f"] +[15.774980840682915, "o", "f"] +[15.804980840682914, "o", "\""] +[15.834980840682913, "o", ":"] +[15.864980840682913, "o", " "] +[15.894980840682912, "o", "{"] +[15.924980840682911, "o", "\r\n "] +[15.95498084068291, "o", "\""] +[15.98498084068291, "o", "o"] +[16.01498084068291, "o", "p"] +[16.04498084068291, "o", "t"] +[16.07498084068291, "o", "i"] +[16.104980840682913, "o", "o"] +[16.134980840682914, "o", "n"] +[16.164980840682915, "o", "s"] +[16.194980840682916, "o", "\""] +[16.224980840682917, "o", ":"] +[16.25498084068292, "o", "\r\n "] +[16.28498084068292, "o", "{"] +[16.31498084068292, "o", "\r\n "] +[16.344980840682922, "o", "\""] +[16.374980840682923, "o", "d"] +[16.404980840682924, "o", "b"] +[16.434980840682925, "o", "\""] +[16.464980840682927, "o", ":"] +[16.494980840682928, "o", " "] +[16.52498084068293, "o", "\""] +[16.55498084068293, "o", "o"] +[16.58498084068293, "o", "r"] +[16.614980840682932, "o", "i"] +[16.644980840682933, "o", "g"] +[16.674980840682935, "o", "i"] +[16.704980840682936, "o", "n"] +[16.734980840682937, "o", "d"] +[16.764980840682938, "o", "b"] +[16.79498084068294, "o", "\""] +[16.82498084068294, "o", ","] +[16.85498084068294, "o", "\r\n "] +[16.884980840682942, "o", "\""] +[16.914980840682944, "o", "c"] +[16.944980840682945, "o", "o"] +[16.974980840682946, "o", "l"] +[17.004980840682947, "o", "l"] +[17.034980840682948, "o", "\""] +[17.06498084068295, "o", ":"] +[17.09498084068295, "o", " "] +[17.12498084068295, "o", "\""] +[17.154980840682953, "o", "s"] +[17.184980840682954, "o", "t"] +[17.214980840682955, "o", "u"] +[17.244980840682956, "o", "f"] +[17.274980840682957, "o", "f"] +[17.30498084068296, "o", "\""] +[17.33498084068296, "o", "\r\n "] +[17.36498084068296, "o", "}"] +[17.394980840682962, "o", ","] +[17.424980840682963, "o", "\r\n "] +[17.454980840682964, "o", "\""] +[17.484980840682965, "o", "s"] +[17.514980840682966, "o", "c"] +[17.544980840682967, "o", "h"] +[17.57498084068297, "o", "e"] +[17.60498084068297, "o", "m"] +[17.63498084068297, "o", "a"] +[17.664980840682972, "o", "\""] +[17.694980840682973, "o", ":"] +[17.724980840682974, "o", " "] +[17.754980840682975, "o", "{"] +[17.784980840682977, "o", "\r\n "] +[17.814980840682978, "o", "\""] +[17.84498084068298, "o", "n"] +[17.87498084068298, "o", "a"] +[17.90498084068298, "o", "m"] +[17.934980840682982, "o", "e"] +[17.964980840682983, "o", "\""] +[17.994980840682985, "o", ":"] +[18.024980840682986, "o", " "] +[18.054980840682987, "o", "\""] +[18.084980840682988, "o", "t"] +[18.11498084068299, "o", "e"] +[18.14498084068299, "o", "x"] +[18.17498084068299, "o", "t"] +[18.204980840682992, "o", "\""] +[18.234980840682994, "o", ","] +[18.264980840682995, "o", "\r\n "] +[18.294980840682996, "o", "\""] +[18.324980840682997, "o", "d"] +[18.354980840682998, "o", "u"] +[18.384980840683, "o", "r"] +[18.414980840683, "o", "a"] +[18.444980840683, "o", "t"] +[18.474980840683003, "o", "i"] +[18.504980840683004, "o", "o"] +[18.534980840683005, "o", "n"] +[18.564980840683006, "o", "\""] +[18.594980840683007, "o", ":"] +[18.62498084068301, "o", " "] +[18.65498084068301, "o", "\""] +[18.68498084068301, "o", "n"] +[18.714980840683012, "o", "u"] +[18.744980840683013, "o", "m"] +[18.774980840683014, "o", "e"] +[18.804980840683015, "o", "r"] +[18.834980840683016, "o", "i"] +[18.864980840683018, "o", "c"] +[18.89498084068302, "o", "\""] +[18.92498084068302, "o", ","] +[18.95498084068302, "o", "\r\n "] +[18.984980840683022, "o", "\""] +[19.014980840683023, "o", "h"] +[19.044980840683024, "o", "a"] +[19.074980840683025, "o", "p"] +[19.104980840683027, "o", "p"] +[19.134980840683028, "o", "y"] +[19.16498084068303, "o", "\""] +[19.19498084068303, "o", ":"] +[19.22498084068303, "o", " "] +[19.254980840683032, "o", "\""] +[19.284980840683033, "o", "b"] +[19.314980840683035, "o", "o"] +[19.344980840683036, "o", "o"] +[19.374980840683037, "o", "l"] +[19.404980840683038, "o", "e"] +[19.43498084068304, "o", "a"] +[19.46498084068304, "o", "n"] +[19.49498084068304, "o", "\""] +[19.524980840683043, "o", "}"] +[19.554980840683044, "o", "}"] +[19.584980840683045, "o", "}"] +[19.614980840683046, "o", "}"] +[19.644980840683047, "o", "'"] +[19.674980840683048, "o", "\r\n"] +[19.70498084068305, "o", "\u001b[0m"] +[19.73498084068305, "o", "\r\n"] +[19.905736703872748, "o", "Usage: sgr mount mongo_fdw [OPTIONS] SCHEMA\r\n\r\n Mount a Mongo database.\r\n\r\n Mounts one or more collections on a remote Mongo database as a set of\r\n foreign tables locally.\r\n\r\nOptions:\r\n -c, --connection TEXT Connection string in the form\r\n username:password@server:port\r\n\r\n -o, --handler-options JSON JSON-encoded dictionary or @filename.json with\r\n handler options:\r\n \r\n tables: A di"] +[19.905760784149237, "o", "ctionary of form { \"table_name\":\r\n { \"schema\": {\"col1\": \"type1\"...},\r\n \"options\": {\"db\": , \"coll\":\r\n } } }\r\n\r\n --help Show this message and exit.\r\n"] +[20.170733470916815, "o", "Mounting table stuff\r\n"] +[20.200733470916816, "o", "\u001b[1m"] +[20.230733470916817, "o", "\u001b[36m"] +[20.26073347091682, "o", "\u001b[91m"] +[20.29073347091682, "o", "$"] +[20.32073347091682, "o", " "] +[20.350733470916822, "o", "\u001b[0m"] +[29.204980840682992, "o", "\u001b[H"] +[29.234980840682994, "o", "\u001b[J"] +[29.264980840682995, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the contents of the new table"] +[29.294980840682996, "o", "\r\n"] +[29.324980840682997, "o", "$"] +[29.354980840682998, "o", " "] +[29.384980840683, "o", "s"] +[29.414980840683, "o", "g"] +[29.444980840683, "o", "r"] +[29.474980840683003, "o", " "] +[29.504980840683004, "o", "s"] +[29.534980840683005, "o", "q"] +[29.564980840683006, "o", "l"] +[29.594980840683007, "o", " "] +[29.62498084068301, "o", "-"] +[29.65498084068301, "o", "s"] +[29.68498084068301, "o", " "] +[29.714980840683012, "o", "s"] +[29.744980840683013, "o", "t"] +[29.774980840683014, "o", "a"] +[29.804980840683015, "o", "g"] +[29.834980840683016, "o", "i"] +[29.864980840683018, "o", "n"] +[29.89498084068302, "o", "g"] +[29.92498084068302, "o", " "] +[29.95498084068302, "o", "\""] +[29.984980840683022, "o", "S"] +[30.014980840683023, "o", "E"] +[30.044980840683024, "o", "L"] +[30.074980840683025, "o", "E"] +[30.104980840683027, "o", "C"] +[30.134980840683028, "o", "T"] +[30.16498084068303, "o", " "] +[30.19498084068303, "o", "*"] +[30.22498084068303, "o", " "] +[30.254980840683032, "o", "F"] +[30.284980840683033, "o", "R"] +[30.314980840683035, "o", "O"] +[30.344980840683036, "o", "M"] +[30.374980840683037, "o", " "] +[30.404980840683038, "o", "s"] +[30.43498084068304, "o", "t"] +[30.46498084068304, "o", "u"] +[30.49498084068304, "o", "f"] +[30.524980840683043, "o", "f"] +[30.554980840683044, "o", "\""] +[30.584980840683045, "o", "\r\n"] +[30.614980840683046, "o", "\u001b[0m"] +[30.644980840683047, "o", "\r\n"] +[30.868452959060733, "o", "Alex 12 False 6061cbcb115cab7fbe419f8e\r\nJames 2 True 6061cbcb115cab7fbe419f8f\r\nAlice 98765 True 6061cbcb115cab7fbe419f90\r\n"] +[30.898452959060734, "o", "\u001b[1m"] +[30.928452959060735, "o", "\u001b[36m"] +[30.958452959060736, "o", "\u001b[91m"] +[30.988452959060737, "o", "$"] +[31.01845295906074, "o", " "] +[31.04845295906074, "o", "\u001b[0m"] +[36.07845295906074, "o", "\u001b[H"] +[36.10845295906074, "o", "\u001b[J"] +[36.13845295906074, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Import the data into a new Splitgraph repository"] +[36.168452959060744, "o", "\r\n"] +[36.198452959060745, "o", "$"] +[36.228452959060746, "o", " "] +[36.25845295906075, "o", "s"] +[36.28845295906075, "o", "g"] +[36.31845295906075, "o", "r"] +[36.34845295906075, "o", " "] +[36.37845295906075, "o", "i"] +[36.40845295906075, "o", "m"] +[36.438452959060754, "o", "p"] +[36.468452959060755, "o", "o"] +[36.49845295906076, "o", "r"] +[36.52845295906076, "o", "t"] +[36.55845295906076, "o", " "] +[36.58845295906076, "o", "s"] +[36.61845295906076, "o", "t"] +[36.64845295906076, "o", "a"] +[36.67845295906076, "o", "g"] +[36.708452959060764, "o", "i"] +[36.738452959060766, "o", "n"] +[36.76845295906077, "o", "g"] +[36.79845295906077, "o", " "] +[36.82845295906077, "o", "\""] +[36.85845295906077, "o", "S"] +[36.88845295906077, "o", "E"] +[36.91845295906077, "o", "L"] +[36.94845295906077, "o", "E"] +[36.978452959060775, "o", "C"] +[37.008452959060776, "o", "T"] +[37.03845295906078, "o", " "] +[37.06845295906078, "o", "n"] +[37.09845295906078, "o", "a"] +[37.12845295906078, "o", "m"] +[37.15845295906078, "o", "e"] +[37.18845295906078, "o", ","] +[37.218452959060784, "o", " "] +[37.248452959060785, "o", "d"] +[37.278452959060786, "o", "u"] +[37.30845295906079, "o", "r"] +[37.33845295906079, "o", "a"] +[37.36845295906079, "o", "t"] +[37.39845295906079, "o", "i"] +[37.42845295906079, "o", "o"] +[37.45845295906079, "o", "n"] +[37.488452959060794, "o", ","] +[37.518452959060795, "o", " "] +[37.548452959060796, "o", "h"] +[37.5784529590608, "o", "a"] +[37.6084529590608, "o", "p"] +[37.6384529590608, "o", "p"] +[37.6684529590608, "o", "y"] +[37.6984529590608, "o", " "] +[37.7284529590608, "o", "F"] +[37.758452959060804, "o", "R"] +[37.788452959060805, "o", "O"] +[37.81845295906081, "o", "M"] +[37.84845295906081, "o", " "] +[37.87845295906081, "o", "s"] +[37.90845295906081, "o", "t"] +[37.93845295906081, "o", "u"] +[37.96845295906081, "o", "f"] +[37.99845295906081, "o", "f"] +[38.028452959060814, "o", "\""] +[38.058452959060816, "o", " "] +[38.08845295906082, "o", "m"] +[38.11845295906082, "o", "y"] +[38.14845295906082, "o", "/"] +[38.17845295906082, "o", "r"] +[38.20845295906082, "o", "e"] +[38.23845295906082, "o", "p"] +[38.268452959060824, "o", "o"] +[38.298452959060825, "o", "s"] +[38.328452959060826, "o", "i"] +[38.35845295906083, "o", "t"] +[38.38845295906083, "o", "o"] +[38.41845295906083, "o", "r"] +[38.44845295906083, "o", "y"] +[38.47845295906083, "o", " "] +[38.50845295906083, "o", "s"] +[38.538452959060834, "o", "t"] +[38.568452959060835, "o", "u"] +[38.598452959060836, "o", "f"] +[38.62845295906084, "o", "f"] +[38.65845295906084, "o", "\r\n"] +[38.68845295906084, "o", "\u001b[0m"] +[38.71845295906084, "o", "\r\n"] +[39.42014458656328, "o", "Processing table sg_tmp_8b9333ec990c5f28aeffbace1b8d53e2\r\n"] +[39.67935111999529, "o", "my/repository:stuff has been imported from staging:SELECT name, duration, happy FROM stuff\r\n"] +[39.70935111999529, "o", "\u001b[1m"] +[39.73935111999529, "o", "\u001b[36m"] +[39.76935111999529, "o", "\u001b[91m"] +[39.79935111999529, "o", "$"] +[39.829351119995295, "o", " "] +[39.859351119995296, "o", "\u001b[0m"] +[44.8893511199953, "o", "\u001b[H"] +[44.9193511199953, "o", "\u001b[J"] +[44.9493511199953, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Alternatively, data can be imported from other databases with Splitfiles"] +[44.9793511199953, "o", "\r\n"] +[45.0093511199953, "o", "$"] +[45.0393511199953, "o", " "] +[45.069351119995304, "o", "c"] +[45.099351119995305, "o", "a"] +[45.129351119995306, "o", "t"] +[45.15935111999531, "o", " "] +[45.18935111999531, "o", "m"] +[45.21935111999531, "o", "o"] +[45.24935111999531, "o", "n"] +[45.27935111999531, "o", "g"] +[45.30935111999531, "o", "o"] +[45.339351119995314, "o", "_"] +[45.369351119995315, "o", "i"] +[45.399351119995316, "o", "m"] +[45.42935111999532, "o", "p"] +[45.45935111999532, "o", "o"] +[45.48935111999532, "o", "r"] +[45.51935111999532, "o", "t"] +[45.54935111999532, "o", "."] +[45.57935111999532, "o", "s"] +[45.609351119995324, "o", "p"] +[45.639351119995325, "o", "l"] +[45.669351119995326, "o", "i"] +[45.69935111999533, "o", "t"] +[45.72935111999533, "o", "f"] +[45.75935111999533, "o", "i"] +[45.78935111999533, "o", "l"] +[45.81935111999533, "o", "e"] +[45.84935111999533, "o", "\r\n"] +[45.879351119995334, "o", "$"] +[45.909351119995335, "o", " "] +[45.93935111999534, "o", "s"] +[45.96935111999534, "o", "g"] +[45.99935111999534, "o", "r"] +[46.02935111999534, "o", " "] +[46.05935111999534, "o", "b"] +[46.08935111999534, "o", "u"] +[46.11935111999534, "o", "i"] +[46.149351119995345, "o", "l"] +[46.179351119995346, "o", "d"] +[46.20935111999535, "o", " "] +[46.23935111999535, "o", "m"] +[46.26935111999535, "o", "o"] +[46.29935111999535, "o", "n"] +[46.32935111999535, "o", "g"] +[46.35935111999535, "o", "o"] +[46.389351119995354, "o", "_"] +[46.419351119995355, "o", "i"] +[46.449351119995356, "o", "m"] +[46.47935111999536, "o", "p"] +[46.50935111999536, "o", "o"] +[46.53935111999536, "o", "r"] +[46.56935111999536, "o", "t"] +[46.59935111999536, "o", "."] +[46.62935111999536, "o", "s"] +[46.659351119995364, "o", "p"] +[46.689351119995365, "o", "l"] +[46.719351119995366, "o", "i"] +[46.74935111999537, "o", "t"] +[46.77935111999537, "o", "f"] +[46.80935111999537, "o", "i"] +[46.83935111999537, "o", "l"] +[46.86935111999537, "o", "e"] +[46.89935111999537, "o", "\r\n"] +[46.929351119995374, "o", "\u001b[0m"] +[46.959351119995375, "o", "\r\n"] +[46.96126824378993, "o", "FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"tables\": {\"stuff\": {\r\n \"options\": {\r\n \"db\": \"origindb\",\r\n \"coll\": \"stuff\"\r\n },\r\n \"schema\": {\r\n \"name\": \"text\",\r\n \"duration\": \"numeric\",\r\n \"happy\": \"boolean\"}}}}'\r\n IMPORT {SELECT * FROM stuff} AS stuff\r\n"] +[47.164983806610365, "o", "Executing Splitfile mongo_import.splitfile with arguments {}\r\n"] +[47.19787174224879, "o", "\u001b[1m\r\nStep 1/1 : FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"t...\u001b[0m\r\n"] +[47.27754264831569, "o", "Mounting table stuff\r\n"] +[47.75339418411281, "o", "Processing table sg_tmp_990e19c4319ca320f1b03fc0619fa81c\r\n"] +[48.08429914474513, "o", "Successfully built mongo_import:a469bb90f0aa.\r\n"] +[48.11429914474513, "o", "\u001b[1m"] +[48.14429914474513, "o", "\u001b[36m"] +[48.174299144745135, "o", "\u001b[91m"] +[48.204299144745136, "o", "$"] +[48.23429914474514, "o", " "] +[48.26429914474514, "o", "\u001b[0m"] +[54.8893511199953, "o", "\u001b[H"] +[54.9193511199953, "o", "\u001b[J"] +[54.9493511199953, "o", "\u001b[1m"] +[54.9793511199953, "o", "\u001b[36m"] +[55.0093511199953, "o", "\u001b[91m"] +[55.0393511199953, "o", "$"] +[55.069351119995304, "o", " "] +[55.099351119995305, "o", "s"] +[55.129351119995306, "o", "g"] +[55.15935111999531, "o", "r"] +[55.18935111999531, "o", " "] +[55.21935111999531, "o", "s"] +[55.24935111999531, "o", "h"] +[55.27935111999531, "o", "o"] +[55.30935111999531, "o", "w"] +[55.339351119995314, "o", " "] +[55.369351119995315, "o", "m"] +[55.399351119995316, "o", "o"] +[55.42935111999532, "o", "n"] +[55.45935111999532, "o", "g"] +[55.48935111999532, "o", "o"] +[55.51935111999532, "o", "_"] +[55.54935111999532, "o", "i"] +[55.57935111999532, "o", "m"] +[55.609351119995324, "o", "p"] +[55.639351119995325, "o", "o"] +[55.669351119995326, "o", "r"] +[55.69935111999533, "o", "t"] +[55.72935111999533, "o", ":"] +[55.75935111999533, "o", "l"] +[55.78935111999533, "o", "a"] +[55.81935111999533, "o", "t"] +[55.84935111999533, "o", "e"] +[55.879351119995334, "o", "s"] +[55.909351119995335, "o", "t"] +[55.93935111999534, "o", "\r\n"] +[55.96935111999534, "o", "$"] +[55.99935111999534, "o", " "] +[56.02935111999534, "o", "s"] +[56.05935111999534, "o", "g"] +[56.08935111999534, "o", "r"] +[56.11935111999534, "o", " "] +[56.149351119995345, "o", "s"] +[56.179351119995346, "o", "q"] +[56.20935111999535, "o", "l"] +[56.23935111999535, "o", " "] +[56.26935111999535, "o", "-"] +[56.29935111999535, "o", "s"] +[56.32935111999535, "o", " "] +[56.35935111999535, "o", "m"] +[56.389351119995354, "o", "o"] +[56.419351119995355, "o", "n"] +[56.449351119995356, "o", "g"] +[56.47935111999536, "o", "o"] +[56.50935111999536, "o", "_"] +[56.53935111999536, "o", "i"] +[56.56935111999536, "o", "m"] +[56.59935111999536, "o", "p"] +[56.62935111999536, "o", "o"] +[56.659351119995364, "o", "r"] +[56.689351119995365, "o", "t"] +[56.719351119995366, "o", " "] +[56.74935111999537, "o", "\""] +[56.77935111999537, "o", "S"] +[56.80935111999537, "o", "E"] +[56.83935111999537, "o", "L"] +[56.86935111999537, "o", "E"] +[56.89935111999537, "o", "C"] +[56.929351119995374, "o", "T"] +[56.959351119995375, "o", " "] +[56.989351119995376, "o", "*"] +[57.01935111999538, "o", " "] +[57.04935111999538, "o", "F"] +[57.07935111999538, "o", "R"] +[57.10935111999538, "o", "O"] +[57.13935111999538, "o", "M"] +[57.16935111999538, "o", " "] +[57.199351119995384, "o", "s"] +[57.229351119995385, "o", "t"] +[57.25935111999539, "o", "u"] +[57.28935111999539, "o", "f"] +[57.31935111999539, "o", "f"] +[57.34935111999539, "o", "\""] +[57.37935111999539, "o", "\r\n"] +[57.40935111999539, "o", "\u001b[0m"] +[57.43935111999539, "o", "\r\n"] +[57.65207103729276, "o", "Image mongo_import:a469bb90f0aa36adfe7a9904b04b8b549f7ab4a862b7a34217f6a4c4a260e49c\r\n"] +[57.652087488174715, "o", "Importing 1 table from mongo_fdw_tmp_staging\r\nCreated at 2021-03-29T12:45:07.014089\r\n"] +[57.65380386352567, "o", "Size: 591.00 B\r\n"] +[57.65382389068631, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[57.654691019058504, "o", " stuff\r\n"] +[57.85764388084439, "o", "Alex 12 False 6061cbcb115cab7fbe419f8e\r\nAlice 98765 True 6061cbcb115cab7fbe419f90\r\nJames 2 True 6061cbcb115cab7fbe419f8f\r\n"] +[57.887643880844394, "o", "\u001b[1m"] +[57.917643880844395, "o", "\u001b[36m"] +[57.947643880844396, "o", "\u001b[91m"] +[57.9776438808444, "o", "$"] +[58.0076438808444, "o", " "] +[58.0376438808444, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.11/metadata.json b/content/casts/versioned/archive/v0.2.11/metadata.json new file mode 100644 index 00000000..e649a9c6 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.11/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.11", + "updated_at": "2022-01-20T00:00:49.012Z", + "release": { + "id": 40632768, + "tag_name": "v0.2.11", + "target_commitish": "f84b245302f20ae1ec65320e75e24753f59b364d", + "created_at": "2021-03-29T12:27:51Z", + "published_at": "2021-03-29T13:15:46Z", + "assets": [ + { + "id": 34145547, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/34145547", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-03-29T12:54:24Z", + "updated_at": "2021-03-29T12:54:24Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.11/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/casts/versioned/archive/v0.2.11/pg-replication.cast b/content/casts/versioned/archive/v0.2.11/pg-replication.cast new file mode 100644 index 00000000..18b2cd7b --- /dev/null +++ b/content/casts/versioned/archive/v0.2.11/pg-replication.cast @@ -0,0 +1,1407 @@ +{"version": 2, "width": 100, "height": 21, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1617021955, "metadata": {"tss": [{"h": "The configuration file for sgr contains credentials for the", "ts": 0.06}, {"h": "The origin database has been set up with a couple of tables.", "ts": 10.059999999999999}, {"h": "Create a publication on the origin database", "ts": 19.43306689262382}, {"h": "Create a schema with the same name and same tables", "ts": 28.213066892623964}, {"h": "Set up replication from the origin database.", "ts": 38.213066892623964}, {"h": "Check the data on the engine", "ts": 49.15306689262419}, {"h": "Commit the data as an initial image", "ts": 57.41040071487466}, {"h": "Make a change on the origin database", "ts": 67.0134670066839}, {"h": "The change propagates to the subscriber and gets", "ts": 83.08346700668432}, {"h": "Committing creates a new image, snapshotting the state.", "ts": 89.74615434646708}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The configuration file for sgr contains credentials for the"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # origin database: this is just so that we can use sgr to query it\r\n"] +[0.18, "o", "$ # (replication can be set up through any PostgreSQL client)\r\n"] +[0.21, "o", "$"] +[0.24, "o", " "] +[0.27, "o", "c"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "t"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "."] +[0.42000000000000015, "o", "s"] +[0.4500000000000002, "o", "g"] +[0.4800000000000002, "o", "c"] +[0.5100000000000002, "o", "o"] +[0.5400000000000003, "o", "n"] +[0.5700000000000003, "o", "f"] +[0.6000000000000003, "o", "i"] +[0.6300000000000003, "o", "g"] +[0.6600000000000004, "o", "\r\n"] +[0.6900000000000004, "o", "\u001b[0m"] +[0.7200000000000004, "o", "\r\n"] +[0.7209746551513676, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n; Add the origin database here so that we can\r\n; use sgr to talk to it (can use any pg client)\r\n[remote:origin]\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=originuser\r\nSG_ENGINE_PWD=originpass\r\nSG_ENGINE_DB=originuser\r\n"] +[0.7509746551513676, "o", "\u001b[1m"] +[0.7809746551513677, "o", "\u001b[36m"] +[0.8109746551513677, "o", "\u001b[91m"] +[0.8409746551513677, "o", "$"] +[0.8709746551513677, "o", " "] +[0.9009746551513678, "o", "\u001b[0m"] +[10.03, "o", "\u001b[H"] +[10.059999999999999, "o", "\u001b[J"] +[10.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The origin database has been set up with a couple of tables."] +[10.119999999999997, "o", "\r\n"] +[10.149999999999997, "o", "$"] +[10.179999999999996, "o", " "] +[10.209999999999996, "o", "s"] +[10.239999999999995, "o", "g"] +[10.269999999999994, "o", "r"] +[10.299999999999994, "o", " "] +[10.329999999999993, "o", "s"] +[10.359999999999992, "o", "q"] +[10.389999999999992, "o", "l"] +[10.419999999999991, "o", " "] +[10.44999999999999, "o", "-"] +[10.47999999999999, "o", "r"] +[10.50999999999999, "o", " "] +[10.539999999999988, "o", "o"] +[10.569999999999988, "o", "r"] +[10.599999999999987, "o", "i"] +[10.629999999999987, "o", "g"] +[10.659999999999986, "o", "i"] +[10.689999999999985, "o", "n"] +[10.719999999999985, "o", " "] +[10.749999999999984, "o", "\""] +[10.779999999999983, "o", "S"] +[10.809999999999983, "o", "E"] +[10.839999999999982, "o", "L"] +[10.869999999999981, "o", "E"] +[10.89999999999998, "o", "C"] +[10.92999999999998, "o", "T"] +[10.95999999999998, "o", " "] +[10.989999999999979, "o", "*"] +[11.019999999999978, "o", " "] +[11.049999999999978, "o", "F"] +[11.079999999999977, "o", "R"] +[11.109999999999976, "o", "O"] +[11.139999999999976, "o", "M"] +[11.169999999999975, "o", " "] +[11.199999999999974, "o", "p"] +[11.229999999999974, "o", "r"] +[11.259999999999973, "o", "o"] +[11.289999999999973, "o", "d"] +[11.319999999999972, "o", "u"] +[11.349999999999971, "o", "c"] +[11.37999999999997, "o", "t"] +[11.40999999999997, "o", "i"] +[11.43999999999997, "o", "o"] +[11.469999999999969, "o", "n"] +[11.499999999999968, "o", "_"] +[11.529999999999967, "o", "d"] +[11.559999999999967, "o", "a"] +[11.589999999999966, "o", "t"] +[11.619999999999965, "o", "a"] +[11.649999999999965, "o", "."] +[11.679999999999964, "o", "c"] +[11.709999999999964, "o", "u"] +[11.739999999999963, "o", "s"] +[11.769999999999962, "o", "t"] +[11.799999999999962, "o", "o"] +[11.829999999999961, "o", "m"] +[11.85999999999996, "o", "e"] +[11.88999999999996, "o", "r"] +[11.919999999999959, "o", "s"] +[11.949999999999958, "o", "\""] +[11.979999999999958, "o", "\r\n"] +[12.009999999999957, "o", "$"] +[12.039999999999957, "o", " "] +[12.069999999999956, "o", "s"] +[12.099999999999955, "o", "g"] +[12.129999999999955, "o", "r"] +[12.159999999999954, "o", " "] +[12.189999999999953, "o", "s"] +[12.219999999999953, "o", "q"] +[12.249999999999952, "o", "l"] +[12.279999999999951, "o", " "] +[12.30999999999995, "o", "-"] +[12.33999999999995, "o", "r"] +[12.36999999999995, "o", " "] +[12.399999999999949, "o", "o"] +[12.429999999999948, "o", "r"] +[12.459999999999948, "o", "i"] +[12.489999999999947, "o", "g"] +[12.519999999999946, "o", "i"] +[12.549999999999946, "o", "n"] +[12.579999999999945, "o", " "] +[12.609999999999944, "o", "\""] +[12.639999999999944, "o", "S"] +[12.669999999999943, "o", "E"] +[12.699999999999942, "o", "L"] +[12.729999999999942, "o", "E"] +[12.759999999999941, "o", "C"] +[12.78999999999994, "o", "T"] +[12.81999999999994, "o", " "] +[12.84999999999994, "o", "*"] +[12.879999999999939, "o", " "] +[12.909999999999938, "o", "F"] +[12.939999999999937, "o", "R"] +[12.969999999999937, "o", "O"] +[12.999999999999936, "o", "M"] +[13.029999999999935, "o", " "] +[13.059999999999935, "o", "p"] +[13.089999999999934, "o", "r"] +[13.119999999999933, "o", "o"] +[13.149999999999933, "o", "d"] +[13.179999999999932, "o", "u"] +[13.209999999999932, "o", "c"] +[13.239999999999931, "o", "t"] +[13.26999999999993, "o", "i"] +[13.29999999999993, "o", "o"] +[13.329999999999929, "o", "n"] +[13.359999999999928, "o", "_"] +[13.389999999999928, "o", "d"] +[13.419999999999927, "o", "a"] +[13.449999999999926, "o", "t"] +[13.479999999999926, "o", "a"] +[13.509999999999925, "o", "."] +[13.539999999999925, "o", "o"] +[13.569999999999924, "o", "r"] +[13.599999999999923, "o", "d"] +[13.629999999999923, "o", "e"] +[13.659999999999922, "o", "r"] +[13.689999999999921, "o", "s"] +[13.71999999999992, "o", "\""] +[13.74999999999992, "o", "\r\n"] +[13.77999999999992, "o", "\u001b[0m"] +[13.809999999999919, "o", "\r\n"] +[14.001940546035685, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[14.19306689262382, "o", "1 1 15 Toilet Roll 2020-03-15 12:00:00\r\n2 1 20 Hand Sanitizer 2020-03-16 02:00:00\r\n3 2 5 Pasta 2020-03-21 17:32:11\r\n4 3 50 Surgical Mask 2020-04-01 12:00:01\r\n5 1 50 Surgical Mask 2020-04-02 11:29:42\r\n"] +[14.22306689262382, "o", "\u001b[1m"] +[14.253066892623819, "o", "\u001b[36m"] +[14.283066892623818, "o", "\u001b[91m"] +[14.313066892623818, "o", "$"] +[14.343066892623817, "o", " "] +[14.373066892623816, "o", "\u001b[0m"] +[19.40306689262382, "o", "\u001b[H"] +[19.43306689262382, "o", "\u001b[J"] +[19.46306689262382, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a publication on the origin database"] +[19.493066892623823, "o", "\r\n"] +[19.523066892623824, "o", "$"] +[19.553066892623825, "o", " "] +[19.583066892623826, "o", "s"] +[19.613066892623827, "o", "g"] +[19.64306689262383, "o", "r"] +[19.67306689262383, "o", " "] +[19.70306689262383, "o", "s"] +[19.73306689262383, "o", "q"] +[19.763066892623833, "o", "l"] +[19.793066892623834, "o", " "] +[19.823066892623835, "o", "-"] +[19.853066892623836, "o", "r"] +[19.883066892623837, "o", " "] +[19.91306689262384, "o", "o"] +[19.94306689262384, "o", "r"] +[19.97306689262384, "o", "i"] +[20.003066892623842, "o", "g"] +[20.033066892623843, "o", "i"] +[20.063066892623844, "o", "n"] +[20.093066892623845, "o", " "] +[20.123066892623847, "o", "\""] +[20.153066892623848, "o", "C"] +[20.18306689262385, "o", "R"] +[20.21306689262385, "o", "E"] +[20.24306689262385, "o", "A"] +[20.273066892623852, "o", "T"] +[20.303066892623853, "o", "E"] +[20.333066892623854, "o", " "] +[20.363066892623856, "o", "P"] +[20.393066892623857, "o", "U"] +[20.423066892623858, "o", "B"] +[20.45306689262386, "o", "L"] +[20.48306689262386, "o", "I"] +[20.51306689262386, "o", "C"] +[20.543066892623862, "o", "A"] +[20.573066892623864, "o", "T"] +[20.603066892623865, "o", "I"] +[20.633066892623866, "o", "O"] +[20.663066892623867, "o", "N"] +[20.693066892623868, "o", " "] +[20.72306689262387, "o", "p"] +[20.75306689262387, "o", "u"] +[20.78306689262387, "o", "b"] +[20.813066892623873, "o", "_"] +[20.843066892623874, "o", "o"] +[20.873066892623875, "o", "r"] +[20.903066892623876, "o", "d"] +[20.933066892623877, "o", "e"] +[20.96306689262388, "o", "r"] +[20.99306689262388, "o", "s"] +[21.02306689262388, "o", " "] +[21.05306689262388, "o", "\\"] +[21.083066892623883, "o", "\r\n "] +[21.113066892623884, "o", "F"] +[21.143066892623885, "o", "O"] +[21.173066892623886, "o", "R"] +[21.203066892623887, "o", " "] +[21.23306689262389, "o", "T"] +[21.26306689262389, "o", "A"] +[21.29306689262389, "o", "B"] +[21.323066892623892, "o", "L"] +[21.353066892623893, "o", "E"] +[21.383066892623894, "o", " "] +[21.413066892623895, "o", "p"] +[21.443066892623897, "o", "r"] +[21.473066892623898, "o", "o"] +[21.5030668926239, "o", "d"] +[21.5330668926239, "o", "u"] +[21.5630668926239, "o", "c"] +[21.593066892623902, "o", "t"] +[21.623066892623903, "o", "i"] +[21.653066892623904, "o", "o"] +[21.683066892623906, "o", "n"] +[21.713066892623907, "o", "_"] +[21.743066892623908, "o", "d"] +[21.77306689262391, "o", "a"] +[21.80306689262391, "o", "t"] +[21.83306689262391, "o", "a"] +[21.863066892623912, "o", "."] +[21.893066892623914, "o", "c"] +[21.923066892623915, "o", "u"] +[21.953066892623916, "o", "s"] +[21.983066892623917, "o", "t"] +[22.013066892623918, "o", "o"] +[22.04306689262392, "o", "m"] +[22.07306689262392, "o", "e"] +[22.10306689262392, "o", "r"] +[22.133066892623923, "o", "s"] +[22.163066892623924, "o", ","] +[22.193066892623925, "o", " "] +[22.223066892623926, "o", "p"] +[22.253066892623927, "o", "r"] +[22.28306689262393, "o", "o"] +[22.31306689262393, "o", "d"] +[22.34306689262393, "o", "u"] +[22.373066892623932, "o", "c"] +[22.403066892623933, "o", "t"] +[22.433066892623934, "o", "i"] +[22.463066892623935, "o", "o"] +[22.493066892623936, "o", "n"] +[22.523066892623937, "o", "_"] +[22.55306689262394, "o", "d"] +[22.58306689262394, "o", "a"] +[22.61306689262394, "o", "t"] +[22.643066892623942, "o", "a"] +[22.673066892623943, "o", "."] +[22.703066892623944, "o", "o"] +[22.733066892623945, "o", "r"] +[22.763066892623947, "o", "d"] +[22.793066892623948, "o", "e"] +[22.82306689262395, "o", "r"] +[22.85306689262395, "o", "s"] +[22.88306689262395, "o", "\""] +[22.913066892623952, "o", "\r\n"] +[22.943066892623953, "o", "\u001b[0m"] +[22.973066892623955, "o", "\r\n"] +[23.003066892623956, "o", "\u001b[1m"] +[23.033066892623957, "o", "\u001b[36m"] +[23.063066892623958, "o", "\u001b[91m"] +[23.09306689262396, "o", "$"] +[23.12306689262396, "o", " "] +[23.15306689262396, "o", "\u001b[0m"] +[28.183066892623962, "o", "\u001b[H"] +[28.213066892623964, "o", "\u001b[J"] +[28.243066892623965, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a schema with the same name and same tables"] +[28.273066892623966, "o", "\r\n"] +[28.303066892623967, "o", "$ # on the engine and initialize the repository.\r\n"] +[28.333066892623968, "o", "$"] +[28.36306689262397, "o", " "] +[28.39306689262397, "o", "s"] +[28.42306689262397, "o", "g"] +[28.453066892623973, "o", "r"] +[28.483066892623974, "o", " "] +[28.513066892623975, "o", "i"] +[28.543066892623976, "o", "n"] +[28.573066892623977, "o", "i"] +[28.60306689262398, "o", "t"] +[28.63306689262398, "o", " "] +[28.66306689262398, "o", "p"] +[28.693066892623982, "o", "r"] +[28.723066892623983, "o", "o"] +[28.753066892623984, "o", "d"] +[28.783066892623985, "o", "u"] +[28.813066892623986, "o", "c"] +[28.843066892623987, "o", "t"] +[28.87306689262399, "o", "i"] +[28.90306689262399, "o", "o"] +[28.93306689262399, "o", "n"] +[28.963066892623992, "o", "_"] +[28.993066892623993, "o", "d"] +[29.023066892623994, "o", "a"] +[29.053066892623995, "o", "t"] +[29.083066892623997, "o", "a"] +[29.113066892623998, "o", "\r\n"] +[29.143066892624, "o", "$"] +[29.173066892624, "o", " "] +[29.203066892624, "o", "c"] +[29.233066892624002, "o", "a"] +[29.263066892624003, "o", "t"] +[29.293066892624005, "o", " "] +[29.323066892624006, "o", "e"] +[29.353066892624007, "o", "n"] +[29.383066892624008, "o", "g"] +[29.41306689262401, "o", "i"] +[29.44306689262401, "o", "n"] +[29.47306689262401, "o", "e"] +[29.503066892624012, "o", "/"] +[29.533066892624014, "o", "s"] +[29.563066892624015, "o", "c"] +[29.593066892624016, "o", "h"] +[29.623066892624017, "o", "e"] +[29.653066892624018, "o", "m"] +[29.68306689262402, "o", "a"] +[29.71306689262402, "o", "."] +[29.74306689262402, "o", "s"] +[29.773066892624023, "o", "q"] +[29.803066892624024, "o", "l"] +[29.833066892624025, "o", "\r\n"] +[29.863066892624026, "o", "$"] +[29.893066892624027, "o", " "] +[29.92306689262403, "o", "s"] +[29.95306689262403, "o", "g"] +[29.98306689262403, "o", "r"] +[30.013066892624032, "o", " "] +[30.043066892624033, "o", "s"] +[30.073066892624034, "o", "q"] +[30.103066892624035, "o", "l"] +[30.133066892624036, "o", " "] +[30.163066892624038, "o", "-"] +[30.19306689262404, "o", "s"] +[30.22306689262404, "o", " "] +[30.25306689262404, "o", "p"] +[30.283066892624042, "o", "r"] +[30.313066892624043, "o", "o"] +[30.343066892624044, "o", "d"] +[30.373066892624045, "o", "u"] +[30.403066892624047, "o", "c"] +[30.433066892624048, "o", "t"] +[30.46306689262405, "o", "i"] +[30.49306689262405, "o", "o"] +[30.52306689262405, "o", "n"] +[30.553066892624052, "o", "_"] +[30.583066892624053, "o", "d"] +[30.613066892624055, "o", "a"] +[30.643066892624056, "o", "t"] +[30.673066892624057, "o", "a"] +[30.703066892624058, "o", " "] +[30.73306689262406, "o", "\""] +[30.76306689262406, "o", "$"] +[30.79306689262406, "o", "("] +[30.823066892624063, "o", "c"] +[30.853066892624064, "o", "a"] +[30.883066892624065, "o", "t"] +[30.913066892624066, "o", " "] +[30.943066892624067, "o", "e"] +[30.973066892624068, "o", "n"] +[31.00306689262407, "o", "g"] +[31.03306689262407, "o", "i"] +[31.06306689262407, "o", "n"] +[31.093066892624073, "o", "e"] +[31.123066892624074, "o", "/"] +[31.153066892624075, "o", "s"] +[31.183066892624076, "o", "c"] +[31.213066892624077, "o", "h"] +[31.24306689262408, "o", "e"] +[31.27306689262408, "o", "m"] +[31.30306689262408, "o", "a"] +[31.333066892624082, "o", "."] +[31.363066892624083, "o", "s"] +[31.393066892624084, "o", "q"] +[31.423066892624085, "o", "l"] +[31.453066892624086, "o", ")"] +[31.483066892624088, "o", "\""] +[31.51306689262409, "o", "\r\n"] +[31.54306689262409, "o", "\u001b[0m"] +[31.57306689262409, "o", "\r\n"] +[31.802183332443427, "o", "Initialized empty repository production_data\r\n"] +[31.803860845565985, "o", "CREATE TABLE production_data.customers (\r\n id INTEGER PRIMARY KEY,\r\n name VARCHAR,"] +[31.80386990547199, "o", "\r\n registration_time TIMESTAMP\r\n);\r\n\r\nCREATE TABLE production_data.orders (\r\n id INTEGER PRIMARY KEY,\r\n customer_id INTEGER,\r\n quantity INTEGER,\r\n item_name VARCHAR,"] +[31.804290952682685, "o", "\r\n"] +[31.804346981048774, "o", " placed_time TIMESTAMP"] +[31.804359378814887, "o", "\r\n"] +[31.804368438720893, "o", ");"] +[31.804377975464057, "o", "\r\n"] +[31.834377975464058, "o", "\u001b[1m"] +[31.86437797546406, "o", "\u001b[36m"] +[31.89437797546406, "o", "\u001b[91m"] +[31.92437797546406, "o", "$"] +[31.954377975464062, "o", " "] +[31.984377975464064, "o", "\u001b[0m"] +[38.18306689262396, "o", "\u001b[H"] +[38.213066892623964, "o", "\u001b[J"] +[38.243066892623965, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Set up replication from the origin database."] +[38.273066892623966, "o", "\r\n"] +[38.30306689262397, "o", "$ # This will copy existing data into the tables too.\r\n"] +[38.33306689262397, "o", "$"] +[38.36306689262397, "o", " "] +[38.39306689262397, "o", "s"] +[38.42306689262397, "o", "g"] +[38.45306689262397, "o", "r"] +[38.483066892623974, "o", " "] +[38.513066892623975, "o", "s"] +[38.543066892623976, "o", "q"] +[38.57306689262398, "o", "l"] +[38.60306689262398, "o", " "] +[38.63306689262398, "o", "-"] +[38.66306689262398, "o", "-"] +[38.69306689262398, "o", "n"] +[38.72306689262398, "o", "o"] +[38.753066892623984, "o", "-"] +[38.783066892623985, "o", "t"] +[38.813066892623986, "o", "r"] +[38.84306689262399, "o", "a"] +[38.87306689262399, "o", "n"] +[38.90306689262399, "o", "s"] +[38.93306689262399, "o", "a"] +[38.96306689262399, "o", "c"] +[38.99306689262399, "o", "t"] +[39.023066892623994, "o", "i"] +[39.053066892623995, "o", "o"] +[39.083066892624, "o", "n"] +[39.113066892624, "o", " "] +[39.143066892624, "o", "\""] +[39.173066892624, "o", "C"] +[39.203066892624, "o", "R"] +[39.233066892624, "o", "E"] +[39.263066892624, "o", "A"] +[39.293066892624005, "o", "T"] +[39.323066892624006, "o", "E"] +[39.35306689262401, "o", " "] +[39.38306689262401, "o", "S"] +[39.41306689262401, "o", "U"] +[39.44306689262401, "o", "B"] +[39.47306689262401, "o", "S"] +[39.50306689262401, "o", "C"] +[39.533066892624014, "o", "R"] +[39.563066892624015, "o", "I"] +[39.593066892624016, "o", "P"] +[39.62306689262402, "o", "T"] +[39.65306689262402, "o", "I"] +[39.68306689262402, "o", "O"] +[39.71306689262402, "o", "N"] +[39.74306689262402, "o", " "] +[39.77306689262402, "o", "s"] +[39.803066892624024, "o", "u"] +[39.833066892624025, "o", "b"] +[39.863066892624026, "o", "_"] +[39.89306689262403, "o", "o"] +[39.92306689262403, "o", "r"] +[39.95306689262403, "o", "d"] +[39.98306689262403, "o", "e"] +[40.01306689262403, "o", "r"] +[40.04306689262403, "o", "s"] +[40.073066892624034, "o", " "] +[40.103066892624035, "o", "\\"] +[40.133066892624036, "o", "\r\n "] +[40.16306689262404, "o", "C"] +[40.19306689262404, "o", "O"] +[40.22306689262404, "o", "N"] +[40.25306689262404, "o", "N"] +[40.28306689262404, "o", "E"] +[40.31306689262404, "o", "C"] +[40.343066892624044, "o", "T"] +[40.373066892624045, "o", "I"] +[40.40306689262405, "o", "O"] +[40.43306689262405, "o", "N"] +[40.46306689262405, "o", " "] +[40.49306689262405, "o", "'"] +[40.52306689262405, "o", "p"] +[40.55306689262405, "o", "o"] +[40.58306689262405, "o", "s"] +[40.613066892624055, "o", "t"] +[40.643066892624056, "o", "g"] +[40.67306689262406, "o", "r"] +[40.70306689262406, "o", "e"] +[40.73306689262406, "o", "s"] +[40.76306689262406, "o", "q"] +[40.79306689262406, "o", "l"] +[40.82306689262406, "o", ":"] +[40.853066892624064, "o", "/"] +[40.883066892624065, "o", "/"] +[40.913066892624066, "o", "o"] +[40.94306689262407, "o", "r"] +[40.97306689262407, "o", "i"] +[41.00306689262407, "o", "g"] +[41.03306689262407, "o", "i"] +[41.06306689262407, "o", "n"] +[41.09306689262407, "o", "u"] +[41.123066892624074, "o", "s"] +[41.153066892624075, "o", "e"] +[41.183066892624076, "o", "r"] +[41.21306689262408, "o", ":"] +[41.24306689262408, "o", "o"] +[41.27306689262408, "o", "r"] +[41.30306689262408, "o", "i"] +[41.33306689262408, "o", "g"] +[41.36306689262408, "o", "i"] +[41.393066892624084, "o", "n"] +[41.423066892624085, "o", "p"] +[41.453066892624086, "o", "a"] +[41.48306689262409, "o", "s"] +[41.51306689262409, "o", "s"] +[41.54306689262409, "o", "@"] +[41.57306689262409, "o", "o"] +[41.60306689262409, "o", "r"] +[41.63306689262409, "o", "i"] +[41.663066892624094, "o", "g"] +[41.693066892624095, "o", "i"] +[41.7230668926241, "o", "n"] +[41.7530668926241, "o", ":"] +[41.7830668926241, "o", "5"] +[41.8130668926241, "o", "4"] +[41.8430668926241, "o", "3"] +[41.8730668926241, "o", "2"] +[41.9030668926241, "o", "/"] +[41.933066892624105, "o", "o"] +[41.963066892624106, "o", "r"] +[41.99306689262411, "o", "i"] +[42.02306689262411, "o", "g"] +[42.05306689262411, "o", "i"] +[42.08306689262411, "o", "n"] +[42.11306689262411, "o", "u"] +[42.14306689262411, "o", "s"] +[42.173066892624114, "o", "e"] +[42.203066892624115, "o", "r"] +[42.233066892624116, "o", "'"] +[42.26306689262412, "o", " "] +[42.29306689262412, "o", "\\"] +[42.32306689262412, "o", "\r\n "] +[42.35306689262412, "o", "P"] +[42.38306689262412, "o", "U"] +[42.41306689262412, "o", "B"] +[42.443066892624124, "o", "L"] +[42.473066892624125, "o", "I"] +[42.503066892624126, "o", "C"] +[42.53306689262413, "o", "A"] +[42.56306689262413, "o", "T"] +[42.59306689262413, "o", "I"] +[42.62306689262413, "o", "O"] +[42.65306689262413, "o", "N"] +[42.68306689262413, "o", " "] +[42.713066892624134, "o", "p"] +[42.743066892624135, "o", "u"] +[42.773066892624136, "o", "b"] +[42.80306689262414, "o", "_"] +[42.83306689262414, "o", "o"] +[42.86306689262414, "o", "r"] +[42.89306689262414, "o", "d"] +[42.92306689262414, "o", "e"] +[42.95306689262414, "o", "r"] +[42.983066892624144, "o", "s"] +[43.013066892624146, "o", " "] +[43.04306689262415, "o", "\\"] +[43.07306689262415, "o", "\r\n "] +[43.10306689262415, "o", "W"] +[43.13306689262415, "o", "I"] +[43.16306689262415, "o", "T"] +[43.19306689262415, "o", "H"] +[43.22306689262415, "o", " "] +[43.253066892624155, "o", "("] +[43.283066892624156, "o", "c"] +[43.31306689262416, "o", "o"] +[43.34306689262416, "o", "p"] +[43.37306689262416, "o", "y"] +[43.40306689262416, "o", "_"] +[43.43306689262416, "o", "d"] +[43.46306689262416, "o", "a"] +[43.493066892624164, "o", "t"] +[43.523066892624165, "o", "a"] +[43.553066892624166, "o", " "] +[43.58306689262417, "o", "="] +[43.61306689262417, "o", " "] +[43.64306689262417, "o", "t"] +[43.67306689262417, "o", "r"] +[43.70306689262417, "o", "u"] +[43.73306689262417, "o", "e"] +[43.763066892624174, "o", ")"] +[43.793066892624175, "o", ";"] +[43.823066892624176, "o", "\""] +[43.85306689262418, "o", "\r\n"] +[43.88306689262418, "o", "\u001b[0m"] +[43.91306689262418, "o", "\r\n"] +[43.94306689262418, "o", "\u001b[1m"] +[43.97306689262418, "o", "\u001b[36m"] +[44.00306689262418, "o", "\u001b[91m"] +[44.033066892624184, "o", "$"] +[44.063066892624185, "o", " "] +[44.093066892624186, "o", "\u001b[0m"] +[49.12306689262419, "o", "\u001b[H"] +[49.15306689262419, "o", "\u001b[J"] +[49.18306689262419, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the data on the engine"] +[49.21306689262419, "o", "\r\n"] +[49.24306689262419, "o", "$"] +[49.27306689262419, "o", " "] +[49.303066892624194, "o", "s"] +[49.333066892624196, "o", "g"] +[49.3630668926242, "o", "r"] +[49.3930668926242, "o", " "] +[49.4230668926242, "o", "d"] +[49.4530668926242, "o", "i"] +[49.4830668926242, "o", "f"] +[49.5130668926242, "o", "f"] +[49.5430668926242, "o", " "] +[49.573066892624205, "o", "p"] +[49.603066892624206, "o", "r"] +[49.63306689262421, "o", "o"] +[49.66306689262421, "o", "d"] +[49.69306689262421, "o", "u"] +[49.72306689262421, "o", "c"] +[49.75306689262421, "o", "t"] +[49.78306689262421, "o", "i"] +[49.813066892624214, "o", "o"] +[49.843066892624215, "o", "n"] +[49.873066892624216, "o", "_"] +[49.90306689262422, "o", "d"] +[49.93306689262422, "o", "a"] +[49.96306689262422, "o", "t"] +[49.99306689262422, "o", "a"] +[50.02306689262422, "o", "\r\n"] +[50.05306689262422, "o", "$"] +[50.083066892624224, "o", " "] +[50.113066892624225, "o", "s"] +[50.143066892624226, "o", "g"] +[50.17306689262423, "o", "r"] +[50.20306689262423, "o", " "] +[50.23306689262423, "o", "s"] +[50.26306689262423, "o", "q"] +[50.29306689262423, "o", "l"] +[50.32306689262423, "o", " "] +[50.353066892624234, "o", "-"] +[50.383066892624235, "o", "s"] +[50.41306689262424, "o", " "] +[50.44306689262424, "o", "p"] +[50.47306689262424, "o", "r"] +[50.50306689262424, "o", "o"] +[50.53306689262424, "o", "d"] +[50.56306689262424, "o", "u"] +[50.59306689262424, "o", "c"] +[50.623066892624244, "o", "t"] +[50.653066892624246, "o", "i"] +[50.68306689262425, "o", "o"] +[50.71306689262425, "o", "n"] +[50.74306689262425, "o", "_"] +[50.77306689262425, "o", "d"] +[50.80306689262425, "o", "a"] +[50.83306689262425, "o", "t"] +[50.86306689262425, "o", "a"] +[50.893066892624255, "o", " "] +[50.923066892624256, "o", "\""] +[50.95306689262426, "o", "S"] +[50.98306689262426, "o", "E"] +[51.01306689262426, "o", "L"] +[51.04306689262426, "o", "E"] +[51.07306689262426, "o", "C"] +[51.10306689262426, "o", "T"] +[51.133066892624264, "o", " "] +[51.163066892624265, "o", "*"] +[51.193066892624266, "o", " "] +[51.22306689262427, "o", "F"] +[51.25306689262427, "o", "R"] +[51.28306689262427, "o", "O"] +[51.31306689262427, "o", "M"] +[51.34306689262427, "o", " "] +[51.37306689262427, "o", "c"] +[51.403066892624274, "o", "u"] +[51.433066892624275, "o", "s"] +[51.463066892624276, "o", "t"] +[51.49306689262428, "o", "o"] +[51.52306689262428, "o", "m"] +[51.55306689262428, "o", "e"] +[51.58306689262428, "o", "r"] +[51.61306689262428, "o", "s"] +[51.64306689262428, "o", "\""] +[51.673066892624284, "o", "\r\n"] +[51.703066892624285, "o", "\u001b[0m"] +[51.73306689262429, "o", "\r\n"] +[51.94638071060219, "o", "Between 000000000000 and the current working copy: \r\n"] +[51.94645056724587, "o", "customers: table added\r\n"] +[51.94650588035622, "o", "orders: table added\r\n"] +[52.17040071487465, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[52.200400714874654, "o", "\u001b[1m"] +[52.230400714874655, "o", "\u001b[36m"] +[52.260400714874656, "o", "\u001b[91m"] +[52.29040071487466, "o", "$"] +[52.32040071487466, "o", " "] +[52.35040071487466, "o", "\u001b[0m"] +[57.38040071487466, "o", "\u001b[H"] +[57.41040071487466, "o", "\u001b[J"] +[57.44040071487466, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit the data as an initial image"] +[57.470400714874664, "o", "\r\n"] +[57.500400714874665, "o", "$"] +[57.530400714874666, "o", " "] +[57.56040071487467, "o", "s"] +[57.59040071487467, "o", "g"] +[57.62040071487467, "o", "r"] +[57.65040071487467, "o", " "] +[57.68040071487467, "o", "c"] +[57.71040071487467, "o", "o"] +[57.740400714874674, "o", "m"] +[57.770400714874675, "o", "m"] +[57.80040071487468, "o", "i"] +[57.83040071487468, "o", "t"] +[57.86040071487468, "o", " "] +[57.89040071487468, "o", "p"] +[57.92040071487468, "o", "r"] +[57.95040071487468, "o", "o"] +[57.98040071487468, "o", "d"] +[58.010400714874685, "o", "u"] +[58.040400714874686, "o", "c"] +[58.07040071487469, "o", "t"] +[58.10040071487469, "o", "i"] +[58.13040071487469, "o", "o"] +[58.16040071487469, "o", "n"] +[58.19040071487469, "o", "_"] +[58.22040071487469, "o", "d"] +[58.250400714874694, "o", "a"] +[58.280400714874695, "o", "t"] +[58.310400714874696, "o", "a"] +[58.3404007148747, "o", "\r\n"] +[58.3704007148747, "o", "$"] +[58.4004007148747, "o", " "] +[58.4304007148747, "o", "s"] +[58.4604007148747, "o", "g"] +[58.4904007148747, "o", "r"] +[58.520400714874704, "o", " "] +[58.550400714874705, "o", "t"] +[58.580400714874706, "o", "a"] +[58.61040071487471, "o", "g"] +[58.64040071487471, "o", " "] +[58.67040071487471, "o", "p"] +[58.70040071487471, "o", "r"] +[58.73040071487471, "o", "o"] +[58.76040071487471, "o", "d"] +[58.790400714874714, "o", "u"] +[58.820400714874715, "o", "c"] +[58.850400714874716, "o", "t"] +[58.88040071487472, "o", "i"] +[58.91040071487472, "o", "o"] +[58.94040071487472, "o", "n"] +[58.97040071487472, "o", "_"] +[59.00040071487472, "o", "d"] +[59.03040071487472, "o", "a"] +[59.060400714874724, "o", "t"] +[59.090400714874725, "o", "a"] +[59.12040071487473, "o", " "] +[59.15040071487473, "o", "i"] +[59.18040071487473, "o", "n"] +[59.21040071487473, "o", "i"] +[59.24040071487473, "o", "t"] +[59.27040071487473, "o", "i"] +[59.30040071487473, "o", "a"] +[59.330400714874735, "o", "l"] +[59.360400714874736, "o", "_"] +[59.39040071487474, "o", "s"] +[59.42040071487474, "o", "n"] +[59.45040071487474, "o", "a"] +[59.48040071487474, "o", "p"] +[59.51040071487474, "o", "s"] +[59.54040071487474, "o", "h"] +[59.570400714874744, "o", "o"] +[59.600400714874745, "o", "t"] +[59.630400714874746, "o", "\r\n"] +[59.66040071487475, "o", "$"] +[59.69040071487475, "o", " "] +[59.72040071487475, "o", "s"] +[59.75040071487475, "o", "g"] +[59.78040071487475, "o", "r"] +[59.81040071487475, "o", " "] +[59.840400714874754, "o", "s"] +[59.870400714874755, "o", "h"] +[59.900400714874756, "o", "o"] +[59.93040071487476, "o", "w"] +[59.96040071487476, "o", " "] +[59.99040071487476, "o", "p"] +[60.02040071487476, "o", "r"] +[60.05040071487476, "o", "o"] +[60.08040071487476, "o", "d"] +[60.110400714874764, "o", "u"] +[60.140400714874765, "o", "c"] +[60.170400714874766, "o", "t"] +[60.20040071487477, "o", "i"] +[60.23040071487477, "o", "o"] +[60.26040071487477, "o", "n"] +[60.29040071487477, "o", "_"] +[60.32040071487477, "o", "d"] +[60.35040071487477, "o", "a"] +[60.380400714874774, "o", "t"] +[60.410400714874775, "o", "a"] +[60.44040071487478, "o", ":"] +[60.47040071487478, "o", "i"] +[60.50040071487478, "o", "n"] +[60.53040071487478, "o", "i"] +[60.56040071487478, "o", "t"] +[60.59040071487478, "o", "i"] +[60.62040071487478, "o", "a"] +[60.650400714874785, "o", "l"] +[60.680400714874786, "o", "_"] +[60.71040071487479, "o", "s"] +[60.74040071487479, "o", "n"] +[60.77040071487479, "o", "a"] +[60.80040071487479, "o", "p"] +[60.83040071487479, "o", "s"] +[60.86040071487479, "o", "h"] +[60.890400714874794, "o", "o"] +[60.920400714874795, "o", "t"] +[60.950400714874796, "o", "\r\n"] +[60.9804007148748, "o", "\u001b[0m"] +[61.0104007148748, "o", "\r\n"] +[61.22120279312187, "o", "Committing production_data...\r\n"] +[61.24351519584709, "o", "Processing table customers\r\n"] +[61.32533425331169, "o", "Processing table orders\r\n"] +[61.355451526642376, "o", "Committed production_data as ae9ba5093998.\r\n"] +[61.561381521225506, "o", "Tagged production_data:ae9ba5093998c0572dd91082990b9120cf6006d93924966a78ef33ee0a14be58 with initial_snapshot.\r\n"] +[61.77084535598808, "o", "Image production_data:ae9ba5093998c0572dd91082990b9120cf6006d93924966a78ef33ee0a14be58\r\n"] +[61.77085799217277, "o", "\r\nCreated at 2021-03-29T12:46:22.051159\r\n"] +[61.772614183426434, "o", "Size: 1.11 KiB\r\n"] +[61.772627296448285, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[61.77346700668388, "o", " customers\r\n orders\r\n"] +[61.80346700668388, "o", "\u001b[1m"] +[61.83346700668388, "o", "\u001b[36m"] +[61.863467006683884, "o", "\u001b[91m"] +[61.893467006683885, "o", "$"] +[61.923467006683886, "o", " "] +[61.95346700668389, "o", "\u001b[0m"] +[66.9834670066839, "o", "\u001b[H"] +[67.0134670066839, "o", "\u001b[J"] +[67.0434670066839, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make a change on the origin database"] +[67.0734670066839, "o", "\r\n"] +[67.1034670066839, "o", "$"] +[67.1334670066839, "o", " "] +[67.1634670066839, "o", "s"] +[67.1934670066839, "o", "g"] +[67.2234670066839, "o", "r"] +[67.2534670066839, "o", " "] +[67.2834670066839, "o", "s"] +[67.31346700668391, "o", "q"] +[67.34346700668391, "o", "l"] +[67.37346700668391, "o", " "] +[67.40346700668391, "o", "-"] +[67.43346700668391, "o", "r"] +[67.46346700668391, "o", " "] +[67.49346700668391, "o", "o"] +[67.52346700668392, "o", "r"] +[67.55346700668392, "o", "i"] +[67.58346700668392, "o", "g"] +[67.61346700668392, "o", "i"] +[67.64346700668392, "o", "n"] +[67.67346700668392, "o", " "] +[67.70346700668392, "o", "-"] +[67.73346700668392, "o", "s"] +[67.76346700668392, "o", " "] +[67.79346700668393, "o", "p"] +[67.82346700668393, "o", "r"] +[67.85346700668393, "o", "o"] +[67.88346700668393, "o", "d"] +[67.91346700668393, "o", "u"] +[67.94346700668393, "o", "c"] +[67.97346700668393, "o", "t"] +[68.00346700668393, "o", "i"] +[68.03346700668394, "o", "o"] +[68.06346700668394, "o", "n"] +[68.09346700668394, "o", "_"] +[68.12346700668394, "o", "d"] +[68.15346700668394, "o", "a"] +[68.18346700668394, "o", "t"] +[68.21346700668394, "o", "a"] +[68.24346700668394, "o", " "] +[68.27346700668394, "o", "\""] +[68.30346700668395, "o", "U"] +[68.33346700668395, "o", "P"] +[68.36346700668395, "o", "D"] +[68.39346700668395, "o", "A"] +[68.42346700668395, "o", "T"] +[68.45346700668395, "o", "E"] +[68.48346700668395, "o", " "] +[68.51346700668395, "o", "o"] +[68.54346700668395, "o", "r"] +[68.57346700668396, "o", "d"] +[68.60346700668396, "o", "e"] +[68.63346700668396, "o", "r"] +[68.66346700668396, "o", "s"] +[68.69346700668396, "o", " "] +[68.72346700668396, "o", "\\"] +[68.75346700668396, "o", "\r\n "] +[68.78346700668396, "o", "S"] +[68.81346700668396, "o", "E"] +[68.84346700668397, "o", "T"] +[68.87346700668397, "o", " "] +[68.90346700668397, "o", "q"] +[68.93346700668397, "o", "u"] +[68.96346700668397, "o", "a"] +[68.99346700668397, "o", "n"] +[69.02346700668397, "o", "t"] +[69.05346700668397, "o", "i"] +[69.08346700668397, "o", "t"] +[69.11346700668398, "o", "y"] +[69.14346700668398, "o", " "] +[69.17346700668398, "o", "="] +[69.20346700668398, "o", " "] +[69.23346700668398, "o", "q"] +[69.26346700668398, "o", "u"] +[69.29346700668398, "o", "a"] +[69.32346700668398, "o", "n"] +[69.35346700668399, "o", "t"] +[69.38346700668399, "o", "i"] +[69.41346700668399, "o", "t"] +[69.44346700668399, "o", "y"] +[69.47346700668399, "o", " "] +[69.50346700668399, "o", "+"] +[69.53346700668399, "o", " "] +[69.563467006684, "o", "5"] +[69.593467006684, "o", " "] +[69.623467006684, "o", "W"] +[69.653467006684, "o", "H"] +[69.683467006684, "o", "E"] +[69.713467006684, "o", "R"] +[69.743467006684, "o", "E"] +[69.773467006684, "o", " "] +[69.803467006684, "o", "i"] +[69.833467006684, "o", "d"] +[69.863467006684, "o", " "] +[69.893467006684, "o", "="] +[69.923467006684, "o", " "] +[69.95346700668401, "o", "2"] +[69.98346700668401, "o", ";"] +[70.01346700668401, "o", " "] +[70.04346700668401, "o", "\\"] +[70.07346700668401, "o", "\r\n "] +[70.10346700668401, "o", "D"] +[70.13346700668401, "o", "E"] +[70.16346700668402, "o", "L"] +[70.19346700668402, "o", "E"] +[70.22346700668402, "o", "T"] +[70.25346700668402, "o", "E"] +[70.28346700668402, "o", " "] +[70.31346700668402, "o", "F"] +[70.34346700668402, "o", "R"] +[70.37346700668402, "o", "O"] +[70.40346700668402, "o", "M"] +[70.43346700668403, "o", " "] +[70.46346700668403, "o", "o"] +[70.49346700668403, "o", "r"] +[70.52346700668403, "o", "d"] +[70.55346700668403, "o", "e"] +[70.58346700668403, "o", "r"] +[70.61346700668403, "o", "s"] +[70.64346700668403, "o", " "] +[70.67346700668404, "o", "W"] +[70.70346700668404, "o", "H"] +[70.73346700668404, "o", "E"] +[70.76346700668404, "o", "R"] +[70.79346700668404, "o", "E"] +[70.82346700668404, "o", " "] +[70.85346700668404, "o", "i"] +[70.88346700668404, "o", "d"] +[70.91346700668404, "o", " "] +[70.94346700668405, "o", "="] +[70.97346700668405, "o", " "] +[71.00346700668405, "o", "5"] +[71.03346700668405, "o", ";"] +[71.06346700668405, "o", " "] +[71.09346700668405, "o", "\\"] +[71.12346700668405, "o", "\r\n "] +[71.15346700668405, "o", "I"] +[71.18346700668405, "o", "N"] +[71.21346700668406, "o", "S"] +[71.24346700668406, "o", "E"] +[71.27346700668406, "o", "R"] +[71.30346700668406, "o", "T"] +[71.33346700668406, "o", " "] +[71.36346700668406, "o", "I"] +[71.39346700668406, "o", "N"] +[71.42346700668406, "o", "T"] +[71.45346700668406, "o", "O"] +[71.48346700668407, "o", " "] +[71.51346700668407, "o", "c"] +[71.54346700668407, "o", "u"] +[71.57346700668407, "o", "s"] +[71.60346700668407, "o", "t"] +[71.63346700668407, "o", "o"] +[71.66346700668407, "o", "m"] +[71.69346700668407, "o", "e"] +[71.72346700668407, "o", "r"] +[71.75346700668408, "o", "s"] +[71.78346700668408, "o", " "] +[71.81346700668408, "o", "("] +[71.84346700668408, "o", "n"] +[71.87346700668408, "o", "a"] +[71.90346700668408, "o", "m"] +[71.93346700668408, "o", "e"] +[71.96346700668408, "o", ","] +[71.99346700668409, "o", " "] +[72.02346700668409, "o", "r"] +[72.05346700668409, "o", "e"] +[72.08346700668409, "o", "g"] +[72.11346700668409, "o", "i"] +[72.14346700668409, "o", "s"] +[72.17346700668409, "o", "t"] +[72.2034670066841, "o", "r"] +[72.2334670066841, "o", "a"] +[72.2634670066841, "o", "t"] +[72.2934670066841, "o", "i"] +[72.3234670066841, "o", "o"] +[72.3534670066841, "o", "n"] +[72.3834670066841, "o", "_"] +[72.4134670066841, "o", "t"] +[72.4434670066841, "o", "i"] +[72.4734670066841, "o", "m"] +[72.5034670066841, "o", "e"] +[72.5334670066841, "o", ")"] +[72.5634670066841, "o", " "] +[72.59346700668411, "o", "V"] +[72.62346700668411, "o", "A"] +[72.65346700668411, "o", "L"] +[72.68346700668411, "o", "U"] +[72.71346700668411, "o", "E"] +[72.74346700668411, "o", "S"] +[72.77346700668411, "o", " "] +[72.80346700668412, "o", "\\"] +[72.83346700668412, "o", "\r\n "] +[72.86346700668412, "o", "("] +[72.89346700668412, "o", "'"] +[72.92346700668412, "o", "J"] +[72.95346700668412, "o", "a"] +[72.98346700668412, "o", "c"] +[73.01346700668412, "o", "k"] +[73.04346700668412, "o", " "] +[73.07346700668413, "o", "S"] +[73.10346700668413, "o", "a"] +[73.13346700668413, "o", "m"] +[73.16346700668413, "o", "p"] +[73.19346700668413, "o", "l"] +[73.22346700668413, "o", "e"] +[73.25346700668413, "o", "'"] +[73.28346700668413, "o", ","] +[73.31346700668414, "o", " "] +[73.34346700668414, "o", "'"] +[73.37346700668414, "o", "2"] +[73.40346700668414, "o", "0"] +[73.43346700668414, "o", "2"] +[73.46346700668414, "o", "0"] +[73.49346700668414, "o", "-"] +[73.52346700668414, "o", "0"] +[73.55346700668414, "o", "4"] +[73.58346700668415, "o", "-"] +[73.61346700668415, "o", "2"] +[73.64346700668415, "o", "0"] +[73.67346700668415, "o", " "] +[73.70346700668415, "o", "1"] +[73.73346700668415, "o", "4"] +[73.76346700668415, "o", ":"] +[73.79346700668415, "o", "0"] +[73.82346700668415, "o", "3"] +[73.85346700668416, "o", ":"] +[73.88346700668416, "o", "4"] +[73.91346700668416, "o", "8"] +[73.94346700668416, "o", "'"] +[73.97346700668416, "o", ")"] +[74.00346700668416, "o", ";"] +[74.03346700668416, "o", " "] +[74.06346700668416, "o", "\\"] +[74.09346700668416, "o", "\r\n "] +[74.12346700668417, "o", "I"] +[74.15346700668417, "o", "N"] +[74.18346700668417, "o", "S"] +[74.21346700668417, "o", "E"] +[74.24346700668417, "o", "R"] +[74.27346700668417, "o", "T"] +[74.30346700668417, "o", " "] +[74.33346700668417, "o", "I"] +[74.36346700668417, "o", "N"] +[74.39346700668418, "o", "T"] +[74.42346700668418, "o", "O"] +[74.45346700668418, "o", " "] +[74.48346700668418, "o", "o"] +[74.51346700668418, "o", "r"] +[74.54346700668418, "o", "d"] +[74.57346700668418, "o", "e"] +[74.60346700668418, "o", "r"] +[74.63346700668419, "o", "s"] +[74.66346700668419, "o", " "] +[74.69346700668419, "o", "("] +[74.72346700668419, "o", "c"] +[74.75346700668419, "o", "u"] +[74.78346700668419, "o", "s"] +[74.81346700668419, "o", "t"] +[74.8434670066842, "o", "o"] +[74.8734670066842, "o", "m"] +[74.9034670066842, "o", "e"] +[74.9334670066842, "o", "r"] +[74.9634670066842, "o", "_"] +[74.9934670066842, "o", "i"] +[75.0234670066842, "o", "d"] +[75.0534670066842, "o", ","] +[75.0834670066842, "o", " "] +[75.1134670066842, "o", "q"] +[75.1434670066842, "o", "u"] +[75.1734670066842, "o", "a"] +[75.2034670066842, "o", "n"] +[75.23346700668421, "o", "t"] +[75.26346700668421, "o", "i"] +[75.29346700668421, "o", "t"] +[75.32346700668421, "o", "y"] +[75.35346700668421, "o", ","] +[75.38346700668421, "o", " "] +[75.41346700668421, "o", "i"] +[75.44346700668422, "o", "t"] +[75.47346700668422, "o", "e"] +[75.50346700668422, "o", "m"] +[75.53346700668422, "o", "_"] +[75.56346700668422, "o", "n"] +[75.59346700668422, "o", "a"] +[75.62346700668422, "o", "m"] +[75.65346700668422, "o", "e"] +[75.68346700668422, "o", ","] +[75.71346700668423, "o", " "] +[75.74346700668423, "o", "p"] +[75.77346700668423, "o", "l"] +[75.80346700668423, "o", "a"] +[75.83346700668423, "o", "c"] +[75.86346700668423, "o", "e"] +[75.89346700668423, "o", "d"] +[75.92346700668423, "o", "_"] +[75.95346700668424, "o", "t"] +[75.98346700668424, "o", "i"] +[76.01346700668424, "o", "m"] +[76.04346700668424, "o", "e"] +[76.07346700668424, "o", ")"] +[76.10346700668424, "o", " "] +[76.13346700668424, "o", "V"] +[76.16346700668424, "o", "A"] +[76.19346700668424, "o", "L"] +[76.22346700668425, "o", "U"] +[76.25346700668425, "o", "E"] +[76.28346700668425, "o", "S"] +[76.31346700668425, "o", " "] +[76.34346700668425, "o", "\\"] +[76.37346700668425, "o", "\r\n "] +[76.40346700668425, "o", "("] +[76.43346700668425, "o", "4"] +[76.46346700668425, "o", ","] +[76.49346700668426, "o", " "] +[76.52346700668426, "o", "5"] +[76.55346700668426, "o", ","] +[76.58346700668426, "o", " "] +[76.61346700668426, "o", "'"] +[76.64346700668426, "o", "T"] +[76.67346700668426, "o", "o"] +[76.70346700668426, "o", "i"] +[76.73346700668426, "o", "l"] +[76.76346700668427, "o", "e"] +[76.79346700668427, "o", "t"] +[76.82346700668427, "o", " "] +[76.85346700668427, "o", "R"] +[76.88346700668427, "o", "o"] +[76.91346700668427, "o", "l"] +[76.94346700668427, "o", "l"] +[76.97346700668427, "o", "'"] +[77.00346700668428, "o", ","] +[77.03346700668428, "o", " "] +[77.06346700668428, "o", "'"] +[77.09346700668428, "o", "2"] +[77.12346700668428, "o", "0"] +[77.15346700668428, "o", "2"] +[77.18346700668428, "o", "0"] +[77.21346700668428, "o", "-"] +[77.24346700668428, "o", "0"] +[77.27346700668429, "o", "4"] +[77.30346700668429, "o", "-"] +[77.33346700668429, "o", "2"] +[77.36346700668429, "o", "0"] +[77.39346700668429, "o", " "] +[77.42346700668429, "o", "1"] +[77.45346700668429, "o", "4"] +[77.4834670066843, "o", ":"] +[77.5134670066843, "o", "0"] +[77.5434670066843, "o", "5"] +[77.5734670066843, "o", ":"] +[77.6034670066843, "o", "1"] +[77.6334670066843, "o", "7"] +[77.6634670066843, "o", "'"] +[77.6934670066843, "o", ")"] +[77.7234670066843, "o", ";"] +[77.7534670066843, "o", "\""] +[77.7834670066843, "o", "\r\n"] +[77.8134670066843, "o", "\u001b[0m"] +[77.8434670066843, "o", "\r\n"] +[77.87346700668431, "o", "\u001b[1m"] +[77.90346700668431, "o", "\u001b[36m"] +[77.93346700668431, "o", "\u001b[91m"] +[77.96346700668431, "o", "$"] +[77.99346700668431, "o", " "] +[78.02346700668431, "o", "\u001b[0m"] +[83.05346700668431, "o", "\u001b[H"] +[83.08346700668432, "o", "\u001b[J"] +[83.11346700668432, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The change propagates to the subscriber and gets"] +[83.14346700668432, "o", "\r\n"] +[83.17346700668432, "o", "$ # captured by Splitgraph's change tracking\r\n"] +[83.20346700668432, "o", "$"] +[83.23346700668432, "o", " "] +[83.26346700668432, "o", "s"] +[83.29346700668432, "o", "g"] +[83.32346700668433, "o", "r"] +[83.35346700668433, "o", " "] +[83.38346700668433, "o", "d"] +[83.41346700668433, "o", "i"] +[83.44346700668433, "o", "f"] +[83.47346700668433, "o", "f"] +[83.50346700668433, "o", " "] +[83.53346700668433, "o", "-"] +[83.56346700668433, "o", "v"] +[83.59346700668434, "o", " "] +[83.62346700668434, "o", "p"] +[83.65346700668434, "o", "r"] +[83.68346700668434, "o", "o"] +[83.71346700668434, "o", "d"] +[83.74346700668434, "o", "u"] +[83.77346700668434, "o", "c"] +[83.80346700668434, "o", "t"] +[83.83346700668434, "o", "i"] +[83.86346700668435, "o", "o"] +[83.89346700668435, "o", "n"] +[83.92346700668435, "o", "_"] +[83.95346700668435, "o", "d"] +[83.98346700668435, "o", "a"] +[84.01346700668435, "o", "t"] +[84.04346700668435, "o", "a"] +[84.07346700668435, "o", "\r\n"] +[84.10346700668435, "o", "\u001b[0m"] +[84.13346700668436, "o", "\r\n"] +[84.50558071136575, "o", "Between ae9ba5093998 and the current working copy: \r\n"] +[84.50564579963785, "o", "customers: added 1 row.\r\n+ (4, 'Jack Sample', datetime.datetime(2020, 4, 20, 14, 3, 48))\r\n"] +[84.50611476898294, "o", "orders: added 2 rows, removed 2 rows.\r\n- (2, 1, 20, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n- (5, 1, 50, 'Surgical Mask', datetime.datetime(2020, 4, 2, 11, 29, 42))\r\n"] +[84.50615434646707, "o", "+ (2, 1, 25, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n+ (6, 4, 5, 'Toilet Roll', datetime.datetime(2020, 4, 20, 14, 5, 17))\r\n"] +[84.53615434646707, "o", "\u001b[1m"] +[84.56615434646707, "o", "\u001b[36m"] +[84.59615434646707, "o", "\u001b[91m"] +[84.62615434646708, "o", "$"] +[84.65615434646708, "o", " "] +[84.68615434646708, "o", "\u001b[0m"] +[89.71615434646708, "o", "\u001b[H"] +[89.74615434646708, "o", "\u001b[J"] +[89.77615434646708, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Committing creates a new image, snapshotting the state."] +[89.80615434646708, "o", "\r\n"] +[89.83615434646708, "o", "$"] +[89.86615434646708, "o", " "] +[89.89615434646709, "o", "s"] +[89.92615434646709, "o", "g"] +[89.95615434646709, "o", "r"] +[89.98615434646709, "o", " "] +[90.01615434646709, "o", "c"] +[90.04615434646709, "o", "o"] +[90.07615434646709, "o", "m"] +[90.1061543464671, "o", "m"] +[90.1361543464671, "o", "i"] +[90.1661543464671, "o", "t"] +[90.1961543464671, "o", " "] +[90.2261543464671, "o", "p"] +[90.2561543464671, "o", "r"] +[90.2861543464671, "o", "o"] +[90.3161543464671, "o", "d"] +[90.3461543464671, "o", "u"] +[90.3761543464671, "o", "c"] +[90.4061543464671, "o", "t"] +[90.4361543464671, "o", "i"] +[90.4661543464671, "o", "o"] +[90.49615434646711, "o", "n"] +[90.52615434646711, "o", "_"] +[90.55615434646711, "o", "d"] +[90.58615434646711, "o", "a"] +[90.61615434646711, "o", "t"] +[90.64615434646711, "o", "a"] +[90.67615434646711, "o", "\r\n"] +[90.70615434646712, "o", "$"] +[90.73615434646712, "o", " "] +[90.76615434646712, "o", "s"] +[90.79615434646712, "o", "g"] +[90.82615434646712, "o", "r"] +[90.85615434646712, "o", " "] +[90.88615434646712, "o", "t"] +[90.91615434646712, "o", "a"] +[90.94615434646713, "o", "g"] +[90.97615434646713, "o", " "] +[91.00615434646713, "o", "p"] +[91.03615434646713, "o", "r"] +[91.06615434646713, "o", "o"] +[91.09615434646713, "o", "d"] +[91.12615434646713, "o", "u"] +[91.15615434646713, "o", "c"] +[91.18615434646713, "o", "t"] +[91.21615434646714, "o", "i"] +[91.24615434646714, "o", "o"] +[91.27615434646714, "o", "n"] +[91.30615434646714, "o", "_"] +[91.33615434646714, "o", "d"] +[91.36615434646714, "o", "a"] +[91.39615434646714, "o", "t"] +[91.42615434646714, "o", "a"] +[91.45615434646714, "o", " "] +[91.48615434646715, "o", "c"] +[91.51615434646715, "o", "u"] +[91.54615434646715, "o", "r"] +[91.57615434646715, "o", "r"] +[91.60615434646715, "o", "e"] +[91.63615434646715, "o", "n"] +[91.66615434646715, "o", "t"] +[91.69615434646715, "o", "_"] +[91.72615434646715, "o", "s"] +[91.75615434646716, "o", "n"] +[91.78615434646716, "o", "a"] +[91.81615434646716, "o", "p"] +[91.84615434646716, "o", "s"] +[91.87615434646716, "o", "h"] +[91.90615434646716, "o", "o"] +[91.93615434646716, "o", "t"] +[91.96615434646716, "o", "\r\n"] +[91.99615434646716, "o", "$"] +[92.02615434646717, "o", " "] +[92.05615434646717, "o", "s"] +[92.08615434646717, "o", "g"] +[92.11615434646717, "o", "r"] +[92.14615434646717, "o", " "] +[92.17615434646717, "o", "s"] +[92.20615434646717, "o", "h"] +[92.23615434646717, "o", "o"] +[92.26615434646718, "o", "w"] +[92.29615434646718, "o", " "] +[92.32615434646718, "o", "p"] +[92.35615434646718, "o", "r"] +[92.38615434646718, "o", "o"] +[92.41615434646718, "o", "d"] +[92.44615434646718, "o", "u"] +[92.47615434646718, "o", "c"] +[92.50615434646718, "o", "t"] +[92.53615434646719, "o", "i"] +[92.56615434646719, "o", "o"] +[92.59615434646719, "o", "n"] +[92.62615434646719, "o", "_"] +[92.65615434646719, "o", "d"] +[92.68615434646719, "o", "a"] +[92.71615434646719, "o", "t"] +[92.7461543464672, "o", "a"] +[92.7761543464672, "o", ":"] +[92.8061543464672, "o", "c"] +[92.8361543464672, "o", "u"] +[92.8661543464672, "o", "r"] +[92.8961543464672, "o", "r"] +[92.9261543464672, "o", "e"] +[92.9561543464672, "o", "n"] +[92.9861543464672, "o", "t"] +[93.0161543464672, "o", "_"] +[93.0461543464672, "o", "s"] +[93.0761543464672, "o", "n"] +[93.1061543464672, "o", "a"] +[93.13615434646721, "o", "p"] +[93.16615434646721, "o", "s"] +[93.19615434646721, "o", "h"] +[93.22615434646721, "o", "o"] +[93.25615434646721, "o", "t"] +[93.28615434646721, "o", "\r\n"] +[93.31615434646721, "o", "\u001b[0m"] +[93.34615434646722, "o", "\r\n"] +[93.55660571098443, "o", "Committing production_data...\r\n"] +[93.593941345216, "o", "Committed production_data as a91b0279e06f.\r\n"] +[93.79515708923455, "o", "Tagged production_data:a91b0279e06f67e75414a3b1ef8facc536238605dec788365267e52e984fe666 with current_snapshot.\r\n"] +[93.99575938224908, "o", "Image production_data:a91b0279e06f67e75414a3b1ef8facc536238605dec788365267e52e984fe666\r\n\r\nCreated at 2021-03-29T12:46:24.173830\r\n"] +[93.99763263702508, "o", "Size: 1.11 KiB\r\n"] +[93.99764408111687, "o", "Parent: ae9ba5093998c0572dd91082990b9120cf6006d93924966a78ef33ee0a14be58\r\n\r\nTables:\r\n"] +[93.9982804203045, "o", " customers\r\n"] +[93.99828685760613, "o", " orders\r\n"] +[94.02828685760613, "o", "\u001b[1m"] +[94.05828685760613, "o", "\u001b[36m"] +[94.08828685760614, "o", "\u001b[91m"] +[94.11828685760614, "o", "$"] +[94.14828685760614, "o", " "] +[94.17828685760614, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.11/postgrest.cast b/content/casts/versioned/archive/v0.2.11/postgrest.cast new file mode 100644 index 00000000..ccfe3475 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.11/postgrest.cast @@ -0,0 +1,1097 @@ +{"version": 2, "width": 100, "height": 16, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1617021987, "metadata": {"tss": [{"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 0.06}, {"h": "Also create another image so we can switch between them.", "ts": 12.782368087768566}, {"h": "Check out the original version of the dataset and look at the API spec for it.", "ts": 25.332606153488243}, {"h": "Get all rows in the table", "ts": 37.04065569877652}, {"h": "Run a query selecting one row", "ts": 43.70929472923312}, {"h": "Run the query against the new version of the dataset.", "ts": 52.38198479652452}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "s"] +[0.24, "o", "g"] +[0.27, "o", "r"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "i"] +[0.3600000000000001, "o", "n"] +[0.3900000000000001, "o", "i"] +[0.42000000000000015, "o", "t"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "d"] +[0.5100000000000002, "o", "e"] +[0.5400000000000003, "o", "m"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "/"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "\r\n"] +[0.8700000000000006, "o", "$"] +[0.9000000000000006, "o", " "] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "g"] +[0.9900000000000007, "o", "r"] +[1.0200000000000007, "o", " "] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "s"] +[1.1100000000000008, "o", "v"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "i"] +[1.2000000000000008, "o", "m"] +[1.2300000000000009, "o", "p"] +[1.260000000000001, "o", "o"] +[1.290000000000001, "o", "r"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", " "] +[1.380000000000001, "o", "-"] +[1.410000000000001, "o", "f"] +[1.440000000000001, "o", " "] +[1.470000000000001, "o", "."] +[1.500000000000001, "o", "."] +[1.5300000000000011, "o", "/"] +[1.5600000000000012, "o", "i"] +[1.5900000000000012, "o", "m"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "o"] +[1.6800000000000013, "o", "r"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "-"] +[1.7700000000000014, "o", "f"] +[1.8000000000000014, "o", "r"] +[1.8300000000000014, "o", "o"] +[1.8600000000000014, "o", "m"] +[1.8900000000000015, "o", "-"] +[1.9200000000000015, "o", "c"] +[1.9500000000000015, "o", "s"] +[1.9800000000000015, "o", "v"] +[2.0100000000000016, "o", "/"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "d"] +[2.100000000000001, "o", "u"] +[2.130000000000001, "o", "-"] +[2.1600000000000006, "o", "w"] +[2.1900000000000004, "o", "e"] +[2.22, "o", "a"] +[2.25, "o", "t"] +[2.28, "o", "h"] +[2.3099999999999996, "o", "e"] +[2.3399999999999994, "o", "r"] +[2.369999999999999, "o", "-"] +[2.399999999999999, "o", "h"] +[2.429999999999999, "o", "i"] +[2.4599999999999986, "o", "s"] +[2.4899999999999984, "o", "t"] +[2.5199999999999982, "o", "o"] +[2.549999999999998, "o", "r"] +[2.579999999999998, "o", "y"] +[2.6099999999999977, "o", "."] +[2.6399999999999975, "o", "c"] +[2.6699999999999973, "o", "s"] +[2.699999999999997, "o", "v"] +[2.729999999999997, "o", " "] +[2.7599999999999967, "o", "\\"] +[2.7899999999999965, "o", "\r\n "] +[2.8199999999999963, "o", "-"] +[2.849999999999996, "o", "k"] +[2.879999999999996, "o", " "] +[2.9099999999999957, "o", "d"] +[2.9399999999999955, "o", "a"] +[2.9699999999999953, "o", "t"] +[2.999999999999995, "o", "e"] +[3.029999999999995, "o", " "] +[3.0599999999999947, "o", "\\"] +[3.0899999999999945, "o", "\r\n "] +[3.1199999999999943, "o", "-"] +[3.149999999999994, "o", "t"] +[3.179999999999994, "o", " "] +[3.2099999999999937, "o", "d"] +[3.2399999999999936, "o", "a"] +[3.2699999999999934, "o", "t"] +[3.299999999999993, "o", "e"] +[3.329999999999993, "o", " "] +[3.3599999999999928, "o", "t"] +[3.3899999999999926, "o", "i"] +[3.4199999999999924, "o", "m"] +[3.449999999999992, "o", "e"] +[3.479999999999992, "o", "s"] +[3.509999999999992, "o", "t"] +[3.5399999999999916, "o", "a"] +[3.5699999999999914, "o", "m"] +[3.599999999999991, "o", "p"] +[3.629999999999991, "o", " "] +[3.659999999999991, "o", "\\"] +[3.6899999999999906, "o", "\r\n "] +[3.7199999999999904, "o", "-"] +[3.7499999999999902, "o", "-"] +[3.77999999999999, "o", "s"] +[3.80999999999999, "o", "e"] +[3.8399999999999896, "o", "p"] +[3.8699999999999894, "o", "a"] +[3.8999999999999893, "o", "r"] +[3.929999999999989, "o", "a"] +[3.959999999999989, "o", "t"] +[3.9899999999999887, "o", "o"] +[4.019999999999989, "o", "r"] +[4.049999999999989, "o", " "] +[4.079999999999989, "o", "\""] +[4.10999999999999, "o", ";"] +[4.13999999999999, "o", "\""] +[4.16999999999999, "o", " "] +[4.19999999999999, "o", "\\"] +[4.229999999999991, "o", "\r\n "] +[4.259999999999991, "o", "d"] +[4.289999999999991, "o", "e"] +[4.319999999999991, "o", "m"] +[4.349999999999992, "o", "o"] +[4.379999999999992, "o", "/"] +[4.409999999999992, "o", "w"] +[4.439999999999992, "o", "e"] +[4.469999999999993, "o", "a"] +[4.499999999999993, "o", "t"] +[4.529999999999993, "o", "h"] +[4.559999999999993, "o", "e"] +[4.589999999999994, "o", "r"] +[4.619999999999994, "o", " "] +[4.649999999999994, "o", "r"] +[4.679999999999994, "o", "d"] +[4.709999999999995, "o", "u"] +[4.739999999999995, "o", "\r\n"] +[4.769999999999995, "o", "$"] +[4.799999999999995, "o", " "] +[4.829999999999996, "o", "s"] +[4.859999999999996, "o", "g"] +[4.889999999999996, "o", "r"] +[4.919999999999996, "o", " "] +[4.949999999999997, "o", "c"] +[4.979999999999997, "o", "o"] +[5.009999999999997, "o", "m"] +[5.039999999999997, "o", "m"] +[5.069999999999998, "o", "i"] +[5.099999999999998, "o", "t"] +[5.129999999999998, "o", " "] +[5.159999999999998, "o", "d"] +[5.189999999999999, "o", "e"] +[5.219999999999999, "o", "m"] +[5.249999999999999, "o", "o"] +[5.279999999999999, "o", "/"] +[5.31, "o", "w"] +[5.34, "o", "e"] +[5.37, "o", "a"] +[5.4, "o", "t"] +[5.430000000000001, "o", "h"] +[5.460000000000001, "o", "e"] +[5.490000000000001, "o", "r"] +[5.520000000000001, "o", "\r\n"] +[5.550000000000002, "o", "$"] +[5.580000000000002, "o", " "] +[5.610000000000002, "o", "s"] +[5.640000000000002, "o", "g"] +[5.670000000000003, "o", "r"] +[5.700000000000003, "o", " "] +[5.730000000000003, "o", "t"] +[5.760000000000003, "o", "a"] +[5.790000000000004, "o", "g"] +[5.820000000000004, "o", " "] +[5.850000000000004, "o", "d"] +[5.880000000000004, "o", "e"] +[5.910000000000005, "o", "m"] +[5.940000000000005, "o", "o"] +[5.970000000000005, "o", "/"] +[6.000000000000005, "o", "w"] +[6.030000000000006, "o", "e"] +[6.060000000000006, "o", "a"] +[6.090000000000006, "o", "t"] +[6.120000000000006, "o", "h"] +[6.150000000000007, "o", "e"] +[6.180000000000007, "o", "r"] +[6.210000000000007, "o", " "] +[6.240000000000007, "o", "i"] +[6.270000000000008, "o", "n"] +[6.300000000000008, "o", "i"] +[6.330000000000008, "o", "t"] +[6.360000000000008, "o", "i"] +[6.390000000000009, "o", "a"] +[6.420000000000009, "o", "l"] +[6.450000000000009, "o", "_"] +[6.480000000000009, "o", "d"] +[6.51000000000001, "o", "a"] +[6.54000000000001, "o", "t"] +[6.57000000000001, "o", "a"] +[6.60000000000001, "o", "\r\n"] +[6.6300000000000106, "o", "\u001b[0m"] +[6.660000000000011, "o", "\r\n"] +[6.920730743408214, "o", "Initialized empty repository demo/weather\r\n"] +[7.130663070678722, "o", "Committing demo/weather...\r\n"] +[7.153802547454845, "o", "Processing table rdu\r\n"] +[7.335724506378185, "o", "Committed demo/weather as b14cc4c75a9d.\r\n"] +[7.5423680877685655, "o", "Tagged demo/weather:b14cc4c75a9dfa5ba3d8a16fc09288dea29ce20effef4c4eac658177284c8ece with initial_data.\r\n"] +[7.572368087768566, "o", "\u001b[1m"] +[7.602368087768566, "o", "\u001b[36m"] +[7.632368087768566, "o", "\u001b[91m"] +[7.6623680877685665, "o", "$"] +[7.692368087768567, "o", " "] +[7.722368087768567, "o", "\u001b[0m"] +[12.752368087768566, "o", "\u001b[H"] +[12.782368087768566, "o", "\u001b[J"] +[12.812368087768565, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Also create another image so we can switch between them."] +[12.842368087768564, "o", "\r\n"] +[12.872368087768564, "o", "$"] +[12.902368087768563, "o", " "] +[12.932368087768563, "o", "s"] +[12.962368087768562, "o", "g"] +[12.992368087768561, "o", "r"] +[13.02236808776856, "o", " "] +[13.05236808776856, "o", "s"] +[13.08236808776856, "o", "q"] +[13.112368087768559, "o", "l"] +[13.142368087768558, "o", " "] +[13.172368087768557, "o", "-"] +[13.202368087768557, "o", "s"] +[13.232368087768556, "o", " "] +[13.262368087768555, "o", "d"] +[13.292368087768555, "o", "e"] +[13.322368087768554, "o", "m"] +[13.352368087768554, "o", "o"] +[13.382368087768553, "o", "/"] +[13.412368087768552, "o", "w"] +[13.442368087768552, "o", "e"] +[13.472368087768551, "o", "a"] +[13.50236808776855, "o", "t"] +[13.53236808776855, "o", "h"] +[13.562368087768549, "o", "e"] +[13.592368087768548, "o", "r"] +[13.622368087768548, "o", " "] +[13.652368087768547, "o", "\""] +[13.682368087768547, "o", "U"] +[13.712368087768546, "o", "P"] +[13.742368087768545, "o", "D"] +[13.772368087768545, "o", "A"] +[13.802368087768544, "o", "T"] +[13.832368087768543, "o", "E"] +[13.862368087768543, "o", " "] +[13.892368087768542, "o", "r"] +[13.922368087768541, "o", "d"] +[13.95236808776854, "o", "u"] +[13.98236808776854, "o", " "] +[14.01236808776854, "o", "S"] +[14.042368087768539, "o", "E"] +[14.072368087768538, "o", "T"] +[14.102368087768538, "o", " "] +[14.132368087768537, "o", "p"] +[14.162368087768536, "o", "r"] +[14.192368087768536, "o", "e"] +[14.222368087768535, "o", "c"] +[14.252368087768534, "o", "i"] +[14.282368087768534, "o", "p"] +[14.312368087768533, "o", "i"] +[14.342368087768532, "o", "t"] +[14.372368087768532, "o", "a"] +[14.402368087768531, "o", "t"] +[14.43236808776853, "o", "i"] +[14.46236808776853, "o", "o"] +[14.49236808776853, "o", "n"] +[14.522368087768529, "o", " "] +[14.552368087768528, "o", "="] +[14.582368087768527, "o", " "] +[14.612368087768527, "o", "p"] +[14.642368087768526, "o", "r"] +[14.672368087768525, "o", "e"] +[14.702368087768525, "o", "c"] +[14.732368087768524, "o", "i"] +[14.762368087768523, "o", "p"] +[14.792368087768523, "o", "i"] +[14.822368087768522, "o", "t"] +[14.852368087768522, "o", "a"] +[14.882368087768521, "o", "t"] +[14.91236808776852, "o", "i"] +[14.94236808776852, "o", "o"] +[14.972368087768519, "o", "n"] +[15.002368087768518, "o", " "] +[15.032368087768518, "o", "*"] +[15.062368087768517, "o", " "] +[15.092368087768516, "o", "1"] +[15.122368087768516, "o", "."] +[15.152368087768515, "o", "2"] +[15.182368087768515, "o", " "] +[15.212368087768514, "o", "W"] +[15.242368087768513, "o", "H"] +[15.272368087768513, "o", "E"] +[15.302368087768512, "o", "R"] +[15.332368087768511, "o", "E"] +[15.36236808776851, "o", " "] +[15.39236808776851, "o", "E"] +[15.42236808776851, "o", "X"] +[15.452368087768509, "o", "T"] +[15.482368087768508, "o", "R"] +[15.512368087768508, "o", "A"] +[15.542368087768507, "o", "C"] +[15.572368087768506, "o", "T"] +[15.602368087768506, "o", " "] +[15.632368087768505, "o", "("] +[15.662368087768504, "o", "y"] +[15.692368087768504, "o", "e"] +[15.722368087768503, "o", "a"] +[15.752368087768502, "o", "r"] +[15.782368087768502, "o", " "] +[15.812368087768501, "o", "F"] +[15.8423680877685, "o", "R"] +[15.8723680877685, "o", "O"] +[15.9023680877685, "o", "M"] +[15.932368087768499, "o", " "] +[15.962368087768498, "o", "d"] +[15.992368087768497, "o", "a"] +[16.0223680877685, "o", "t"] +[16.0523680877685, "o", "e"] +[16.0823680877685, "o", ")"] +[16.112368087768502, "o", " "] +[16.142368087768503, "o", "="] +[16.172368087768504, "o", " "] +[16.202368087768505, "o", "2"] +[16.232368087768506, "o", "0"] +[16.262368087768508, "o", "1"] +[16.29236808776851, "o", "2"] +[16.32236808776851, "o", "\""] +[16.35236808776851, "o", "\r\n"] +[16.382368087768512, "o", "$"] +[16.412368087768513, "o", " "] +[16.442368087768514, "o", "s"] +[16.472368087768515, "o", "g"] +[16.502368087768517, "o", "r"] +[16.532368087768518, "o", " "] +[16.56236808776852, "o", "c"] +[16.59236808776852, "o", "o"] +[16.62236808776852, "o", "m"] +[16.652368087768522, "o", "m"] +[16.682368087768523, "o", "i"] +[16.712368087768525, "o", "t"] +[16.742368087768526, "o", " "] +[16.772368087768527, "o", "-"] +[16.802368087768528, "o", "m"] +[16.83236808776853, "o", " "] +[16.86236808776853, "o", "\""] +[16.89236808776853, "o", "R"] +[16.922368087768533, "o", "e"] +[16.952368087768534, "o", "v"] +[16.982368087768535, "o", "i"] +[17.012368087768536, "o", "s"] +[17.042368087768537, "o", "i"] +[17.072368087768538, "o", "o"] +[17.10236808776854, "o", "n"] +[17.13236808776854, "o", " "] +[17.16236808776854, "o", "t"] +[17.192368087768543, "o", "o"] +[17.222368087768544, "o", " "] +[17.252368087768545, "o", "t"] +[17.282368087768546, "o", "h"] +[17.312368087768547, "o", "e"] +[17.34236808776855, "o", " "] +[17.37236808776855, "o", "2"] +[17.40236808776855, "o", "0"] +[17.432368087768552, "o", "1"] +[17.462368087768553, "o", "2"] +[17.492368087768554, "o", " "] +[17.522368087768555, "o", "r"] +[17.552368087768556, "o", "a"] +[17.582368087768558, "o", "i"] +[17.61236808776856, "o", "n"] +[17.64236808776856, "o", "f"] +[17.67236808776856, "o", "a"] +[17.702368087768562, "o", "l"] +[17.732368087768563, "o", "l"] +[17.762368087768564, "o", " "] +[17.792368087768565, "o", "d"] +[17.822368087768567, "o", "a"] +[17.852368087768568, "o", "t"] +[17.88236808776857, "o", "a"] +[17.91236808776857, "o", "\""] +[17.94236808776857, "o", " "] +[17.972368087768572, "o", "d"] +[18.002368087768573, "o", "e"] +[18.032368087768575, "o", "m"] +[18.062368087768576, "o", "o"] +[18.092368087768577, "o", "/"] +[18.122368087768578, "o", "w"] +[18.15236808776858, "o", "e"] +[18.18236808776858, "o", "a"] +[18.21236808776858, "o", "t"] +[18.242368087768583, "o", "h"] +[18.272368087768584, "o", "e"] +[18.302368087768585, "o", "r"] +[18.332368087768586, "o", "\r\n"] +[18.362368087768587, "o", "$"] +[18.39236808776859, "o", " "] +[18.42236808776859, "o", "s"] +[18.45236808776859, "o", "g"] +[18.48236808776859, "o", "r"] +[18.512368087768593, "o", " "] +[18.542368087768594, "o", "t"] +[18.572368087768595, "o", "a"] +[18.602368087768596, "o", "g"] +[18.632368087768597, "o", " "] +[18.6623680877686, "o", "d"] +[18.6923680877686, "o", "e"] +[18.7223680877686, "o", "m"] +[18.752368087768602, "o", "o"] +[18.782368087768603, "o", "/"] +[18.812368087768604, "o", "w"] +[18.842368087768605, "o", "e"] +[18.872368087768606, "o", "a"] +[18.902368087768608, "o", "t"] +[18.93236808776861, "o", "h"] +[18.96236808776861, "o", "e"] +[18.99236808776861, "o", "r"] +[19.022368087768612, "o", " "] +[19.052368087768613, "o", "r"] +[19.082368087768614, "o", "e"] +[19.112368087768616, "o", "v"] +[19.142368087768617, "o", "i"] +[19.172368087768618, "o", "s"] +[19.20236808776862, "o", "e"] +[19.23236808776862, "o", "d"] +[19.26236808776862, "o", "_"] +[19.292368087768622, "o", "d"] +[19.322368087768623, "o", "a"] +[19.352368087768625, "o", "t"] +[19.382368087768626, "o", "a"] +[19.412368087768627, "o", "\r\n"] +[19.442368087768628, "o", "\u001b[0m"] +[19.47236808776863, "o", "\r\n"] +[19.67075380325325, "o", "Committing demo/weather...\r\n"] +[19.702477302551344, "o", "Storing and indexing table rdu\r\n"] +[19.882519569397047, "o", "Committed demo/weather as 81d8c4365369.\r\n"] +[20.092606153488234, "o", "Tagged demo/weather:81d8c4365369722f58462654f70ea439f68974a998ff8816cb7f24451abb1598 with revised_data.\r\n"] +[20.122606153488235, "o", "\u001b[1m"] +[20.152606153488236, "o", "\u001b[36m"] +[20.182606153488237, "o", "\u001b[91m"] +[20.212606153488238, "o", "$"] +[20.24260615348824, "o", " "] +[20.27260615348824, "o", "\u001b[0m"] +[25.30260615348824, "o", "\u001b[H"] +[25.332606153488243, "o", "\u001b[J"] +[25.362606153488244, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the original version of the dataset and look at the API spec for it."] +[25.392606153488245, "o", "\r\n"] +[25.422606153488246, "o", "$ # For this, we need to restart PostgREST so that it picks up the new schema.\r\n"] +[25.452606153488247, "o", "$"] +[25.48260615348825, "o", " "] +[25.51260615348825, "o", "d"] +[25.54260615348825, "o", "o"] +[25.572606153488252, "o", "c"] +[25.602606153488253, "o", "k"] +[25.632606153488254, "o", "e"] +[25.662606153488255, "o", "r"] +[25.692606153488256, "o", "-"] +[25.722606153488258, "o", "c"] +[25.75260615348826, "o", "o"] +[25.78260615348826, "o", "m"] +[25.81260615348826, "o", "p"] +[25.842606153488262, "o", "o"] +[25.872606153488263, "o", "s"] +[25.902606153488264, "o", "e"] +[25.932606153488265, "o", " "] +[25.962606153488267, "o", "-"] +[25.992606153488268, "o", "-"] +[26.02260615348827, "o", "p"] +[26.05260615348827, "o", "r"] +[26.08260615348827, "o", "o"] +[26.112606153488272, "o", "j"] +[26.142606153488273, "o", "e"] +[26.172606153488275, "o", "c"] +[26.202606153488276, "o", "t"] +[26.232606153488277, "o", "-"] +[26.262606153488278, "o", "n"] +[26.29260615348828, "o", "a"] +[26.32260615348828, "o", "m"] +[26.35260615348828, "o", "e"] +[26.382606153488283, "o", " "] +[26.412606153488284, "o", "s"] +[26.442606153488285, "o", "p"] +[26.472606153488286, "o", "l"] +[26.502606153488287, "o", "i"] +[26.532606153488288, "o", "t"] +[26.56260615348829, "o", "g"] +[26.59260615348829, "o", "r"] +[26.62260615348829, "o", "a"] +[26.652606153488293, "o", "p"] +[26.682606153488294, "o", "h"] +[26.712606153488295, "o", "_"] +[26.742606153488296, "o", "e"] +[26.772606153488297, "o", "x"] +[26.8026061534883, "o", "a"] +[26.8326061534883, "o", "m"] +[26.8626061534883, "o", "p"] +[26.892606153488302, "o", "l"] +[26.922606153488303, "o", "e"] +[26.952606153488304, "o", " "] +[26.982606153488305, "o", "r"] +[27.012606153488306, "o", "e"] +[27.042606153488308, "o", "s"] +[27.07260615348831, "o", "t"] +[27.10260615348831, "o", "a"] +[27.13260615348831, "o", "r"] +[27.162606153488312, "o", "t"] +[27.192606153488313, "o", " "] +[27.222606153488314, "o", "p"] +[27.252606153488315, "o", "o"] +[27.282606153488317, "o", "s"] +[27.312606153488318, "o", "t"] +[27.34260615348832, "o", "g"] +[27.37260615348832, "o", "r"] +[27.40260615348832, "o", "e"] +[27.432606153488322, "o", "s"] +[27.462606153488323, "o", "t"] +[27.492606153488325, "o", "\r\n"] +[27.522606153488326, "o", "$"] +[27.552606153488327, "o", " "] +[27.582606153488328, "o", "s"] +[27.61260615348833, "o", "g"] +[27.64260615348833, "o", "r"] +[27.67260615348833, "o", " "] +[27.702606153488333, "o", "c"] +[27.732606153488334, "o", "h"] +[27.762606153488335, "o", "e"] +[27.792606153488336, "o", "c"] +[27.822606153488337, "o", "k"] +[27.85260615348834, "o", "o"] +[27.88260615348834, "o", "u"] +[27.91260615348834, "o", "t"] +[27.94260615348834, "o", " "] +[27.972606153488343, "o", "d"] +[28.002606153488344, "o", "e"] +[28.032606153488345, "o", "m"] +[28.062606153488346, "o", "o"] +[28.092606153488347, "o", "/"] +[28.12260615348835, "o", "w"] +[28.15260615348835, "o", "e"] +[28.18260615348835, "o", "a"] +[28.212606153488352, "o", "t"] +[28.242606153488353, "o", "h"] +[28.272606153488354, "o", "e"] +[28.302606153488355, "o", "r"] +[28.332606153488356, "o", ":"] +[28.362606153488358, "o", "i"] +[28.39260615348836, "o", "n"] +[28.42260615348836, "o", "i"] +[28.45260615348836, "o", "t"] +[28.482606153488362, "o", "i"] +[28.512606153488363, "o", "a"] +[28.542606153488364, "o", "l"] +[28.572606153488366, "o", "_"] +[28.602606153488367, "o", "d"] +[28.632606153488368, "o", "a"] +[28.66260615348837, "o", "t"] +[28.69260615348837, "o", "a"] +[28.72260615348837, "o", "\r\n"] +[28.752606153488372, "o", "$"] +[28.782606153488373, "o", " "] +[28.812606153488375, "o", "c"] +[28.842606153488376, "o", "u"] +[28.872606153488377, "o", "r"] +[28.902606153488378, "o", "l"] +[28.93260615348838, "o", " "] +[28.96260615348838, "o", "h"] +[28.99260615348838, "o", "t"] +[29.022606153488383, "o", "t"] +[29.052606153488384, "o", "p"] +[29.082606153488385, "o", ":"] +[29.112606153488386, "o", "/"] +[29.142606153488387, "o", "/"] +[29.17260615348839, "o", "l"] +[29.20260615348839, "o", "o"] +[29.23260615348839, "o", "c"] +[29.26260615348839, "o", "a"] +[29.292606153488393, "o", "l"] +[29.322606153488394, "o", "h"] +[29.352606153488395, "o", "o"] +[29.382606153488396, "o", "s"] +[29.412606153488397, "o", "t"] +[29.4426061534884, "o", ":"] +[29.4726061534884, "o", "8"] +[29.5026061534884, "o", "0"] +[29.532606153488402, "o", "8"] +[29.562606153488403, "o", "0"] +[29.592606153488404, "o", "/"] +[29.622606153488405, "o", " "] +[29.652606153488406, "o", "|"] +[29.682606153488408, "o", " "] +[29.71260615348841, "o", "c"] +[29.74260615348841, "o", "u"] +[29.77260615348841, "o", "t"] +[29.802606153488412, "o", " "] +[29.832606153488413, "o", "-"] +[29.862606153488414, "o", "c"] +[29.892606153488416, "o", " "] +[29.922606153488417, "o", "-"] +[29.952606153488418, "o", "7"] +[29.98260615348842, "o", "9"] +[30.01260615348842, "o", "3"] +[30.04260615348842, "o", "\r\n"] +[30.072606153488422, "o", "\u001b[0m"] +[30.102606153488424, "o", "\r\n"] +[30.684637641907003, "o", "Restarting splitgraph_example_postgrest_1 ... \r\r\n"] +[31.474755382538106, "o", "\u001b[1A\u001b[2K\rRestarting splitgraph_example_postgrest_1 ... \u001b[32mdone\u001b[0m\r\u001b[1B"] +[31.766960954666402, "o", "Checked out demo/weather:b14cc4c75a9d.\r\n"] +[31.775950288772847, "o", " % Total "] +[31.775959587097432, "o", " % Received % Xferd Average Speed "] +[31.775963640213277, "o", "Time"] +[31.775967216491964, "o", " "] +[31.775970315933492, "o", " "] +[31.77597389221218, "o", "Ti"] +[31.775977468490865, "o", "me "] +[31.77598104476955, "o", " "] +[31.77598438262966, "o", " "] +[31.775987720489766, "o", "Ti"] +[31.775990819931295, "o", "me"] +[31.775993919372823, "o", " "] +[31.77599701881435, "o", "Cu"] +[31.776000595093038, "o", "rr"] +[31.776003932953145, "o", "en"] +[31.776008701324727, "o", "t\r\n"] +[31.776012039184835, "o", " "] +[31.776015377044942, "o", " "] +[31.77601871490505, "o", " "] +[31.776024436950948, "o", " "] +[31.776028013229634, "o", " "] +[31.77603158950832, "o", " "] +[31.776035404205587, "o", " "] +[31.776038980484273, "o", " "] +[31.776043748855855, "o", " Dload Upload Tota"] +[31.77604756355312, "o", "l "] +[31.776051139831807, "o", " S"] +[31.776054239273336, "o", "pe"] +[31.776057577133443, "o", "nt"] +[31.77606091499355, "o", " "] +[31.776064968109395, "o", " "] +[31.776068305969503, "o", "Lef"] +[31.77607140541103, "o", "t "] +[31.77607450485256, "o", " S"] +[31.776077604294088, "o", "pe"] +[31.776080703735616, "o", "ed"] +[31.77608523368862, "o", "\r\n"] +[31.776088571548726, "o", "\r "] +[31.776091909408834, "o", " 0"] +[31.776095008850362, "o", " "] +[31.77609834671047, "o", " "] +[31.776101684570577, "o", " 0"] +[31.776104784012105, "o", " "] +[31.776108121872213, "o", " "] +[31.77611455917385, "o", "0 "] +[31.776118373871114, "o", " "] +[31.7761219501498, "o", "0 "] +[31.776125526428487, "o", " "] +[31.776129102707174, "o", " 0 "] +[31.776133394241597, "o", " "] +[31.776136970520284, "o", "0 "] +[31.77614030838039, "o", " "] +[31.776143884659078, "o", " "] +[31.776146984100606, "o", " 0 "] +[31.776150321960714, "o", " "] +[31.776153182983663, "o", " "] +[31.77615652084377, "o", " 0"] +[31.776160812378194, "o", " -"] +[31.7761641502383, "o", "-:-"] +[31.77616724967983, "o", "-:"] +[31.776170349121358, "o", "--"] +[31.776173448562886, "o", " -"] +[31.776176786422994, "o", "-:"] +[31.7761801242831, "o", "--"] +[31.77618346214321, "o", ":-"] +[31.77618846893337, "o", "- "] +[31.77619395256069, "o", "--:"] +[31.776197767257955, "o", "--:"] +[31.77620134353664, "o", "-- "] +[31.77620468139675, "o", " "] +[31.776208257675435, "o", " "] +[31.776211357116964, "o", "0"] +[31.799749469757344, "o", "\r100 12010"] +[31.800100183487203, "o", " 0 12010 0 0 488k 0 --:--:-- --:--:-- --:--:-- 488k\r\n"] +[31.800646638870504, "o", "{\"swagger\":\"2.0\",\"info\":{\"version\":\"7.0.1 (UNKNOWN)\",\"title\":\"PostgREST API\",\"description\":\"This is a dynamic API generated by PostgREST\"},\"host\":\"localhost:8080\",\"basePath\":\"/\",\"schemes\":[\"http\"],\"consumes\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"produces\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"paths\":{\"/\":{\"get\":{\"tags\":[\"Introspection\"],\"summary\":\"OpenAPI description (this document)\",\"produces\":[\"application/openapi+json\",\"application/json\"],\"res"] +[31.80065569877651, "o", "ponses\":{\"200\":{\"description\":\"OK\"}}}},\"/rdu\":{\"get\":{\"tags\":[\"rdu\"],\"parameters\":[{\"$ref\":\"#/parameters/rowFilter.rdu.date\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemin\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemax\"},{\"$ref\":\"#/parameters/rowFilter.rdu.precipitation\r\n"] +[31.83065569877651, "o", "\u001b[1m"] +[31.86065569877651, "o", "\u001b[36m"] +[31.890655698776513, "o", "\u001b[91m"] +[31.920655698776514, "o", "$"] +[31.950655698776515, "o", " "] +[31.980655698776516, "o", "\u001b[0m"] +[37.01065569877652, "o", "\u001b[H"] +[37.04065569877652, "o", "\u001b[J"] +[37.07065569877652, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get all rows in the table"] +[37.10065569877652, "o", "\r\n"] +[37.13065569877652, "o", "$"] +[37.16065569877652, "o", " "] +[37.190655698776524, "o", "c"] +[37.220655698776525, "o", "u"] +[37.25065569877653, "o", "r"] +[37.28065569877653, "o", "l"] +[37.31065569877653, "o", " "] +[37.34065569877653, "o", "h"] +[37.37065569877653, "o", "t"] +[37.40065569877653, "o", "t"] +[37.43065569877653, "o", "p"] +[37.460655698776534, "o", ":"] +[37.490655698776536, "o", "/"] +[37.52065569877654, "o", "/"] +[37.55065569877654, "o", "l"] +[37.58065569877654, "o", "o"] +[37.61065569877654, "o", "c"] +[37.64065569877654, "o", "a"] +[37.67065569877654, "o", "l"] +[37.70065569877654, "o", "h"] +[37.730655698776545, "o", "o"] +[37.760655698776546, "o", "s"] +[37.79065569877655, "o", "t"] +[37.82065569877655, "o", ":"] +[37.85065569877655, "o", "8"] +[37.88065569877655, "o", "0"] +[37.91065569877655, "o", "8"] +[37.94065569877655, "o", "0"] +[37.970655698776554, "o", "/"] +[38.000655698776555, "o", "r"] +[38.030655698776556, "o", "d"] +[38.06065569877656, "o", "u"] +[38.09065569877656, "o", " "] +[38.12065569877656, "o", "|"] +[38.15065569877656, "o", " "] +[38.18065569877656, "o", "w"] +[38.21065569877656, "o", "c"] +[38.240655698776564, "o", " "] +[38.270655698776565, "o", "-"] +[38.300655698776566, "o", "l"] +[38.33065569877657, "o", "\r\n"] +[38.36065569877657, "o", "\u001b[0m"] +[38.39065569877657, "o", "\r\n"] +[38.39861124992403, "o", " "] +[38.398670854568806, "o", " "] +[38.3986982727054, "o", "%"] +[38.39874428749117, "o", " "] +[38.39879125595125, "o", "T"] +[38.398814144134846, "o", "o"] +[38.3988534832004, "o", "t"] +[38.398875656128254, "o", "a"] +[38.39889782905611, "o", "l"] +[38.398989858627644, "o", " % Recei"] +[38.399875822067585, "o", "ved % Xferd Average Speed Time Time Time Current\r\n Dload Upload Total Spent Left Speed\r\n"] +[38.39988583564791, "o", "\r 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0"] +[38.467680397034016, "o", "\r100 22"] +[38.467691364288655, "o", "92k 0 2292k 0 0 32.4M 0 "] +[38.467696609497395, "o", "--:-"] +[38.46770042419466, "o", "-:-"] +[38.467704238891926, "o", "- "] +[38.467707338333454, "o", "--:"] +[38.467710199356404, "o", "--"] +[38.46771353721651, "o", ":-"] +[38.467718067169514, "o", "- "] +[38.4677216434482, "o", "--:"] +[38.46772450447115, "o", "--:"] +[38.4677273654941, "o", "--"] +[38.467730703354206, "o", " 3"] +[38.467733802795735, "o", "2."] +[38.467736663818684, "o", "4M"] +[38.467741670608845, "o", "\r\n"] +[38.46929472923311, "o", "4632\r\n"] +[38.499294729233114, "o", "\u001b[1m"] +[38.529294729233115, "o", "\u001b[36m"] +[38.559294729233116, "o", "\u001b[91m"] +[38.58929472923312, "o", "$"] +[38.61929472923312, "o", " "] +[38.64929472923312, "o", "\u001b[0m"] +[43.67929472923312, "o", "\u001b[H"] +[43.70929472923312, "o", "\u001b[J"] +[43.73929472923312, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a query selecting one row"] +[43.769294729233124, "o", "\r\n"] +[43.799294729233125, "o", "$"] +[43.829294729233126, "o", " "] +[43.85929472923313, "o", "c"] +[43.88929472923313, "o", "u"] +[43.91929472923313, "o", "r"] +[43.94929472923313, "o", "l"] +[43.97929472923313, "o", " "] +[44.00929472923313, "o", "\""] +[44.039294729233134, "o", "h"] +[44.069294729233135, "o", "t"] +[44.09929472923314, "o", "t"] +[44.12929472923314, "o", "p"] +[44.15929472923314, "o", ":"] +[44.18929472923314, "o", "/"] +[44.21929472923314, "o", "/"] +[44.24929472923314, "o", "l"] +[44.27929472923314, "o", "o"] +[44.309294729233144, "o", "c"] +[44.339294729233146, "o", "a"] +[44.36929472923315, "o", "l"] +[44.39929472923315, "o", "h"] +[44.42929472923315, "o", "o"] +[44.45929472923315, "o", "s"] +[44.48929472923315, "o", "t"] +[44.51929472923315, "o", ":"] +[44.549294729233154, "o", "8"] +[44.579294729233155, "o", "0"] +[44.609294729233156, "o", "8"] +[44.63929472923316, "o", "0"] +[44.66929472923316, "o", "/"] +[44.69929472923316, "o", "r"] +[44.72929472923316, "o", "d"] +[44.75929472923316, "o", "u"] +[44.78929472923316, "o", "?"] +[44.819294729233164, "o", "d"] +[44.849294729233165, "o", "a"] +[44.879294729233166, "o", "t"] +[44.90929472923317, "o", "e"] +[44.93929472923317, "o", "="] +[44.96929472923317, "o", "e"] +[44.99929472923317, "o", "q"] +[45.02929472923317, "o", "."] +[45.05929472923317, "o", "2"] +[45.089294729233174, "o", "0"] +[45.119294729233175, "o", "1"] +[45.149294729233176, "o", "2"] +[45.17929472923318, "o", "-"] +[45.20929472923318, "o", "1"] +[45.23929472923318, "o", "2"] +[45.26929472923318, "o", "-"] +[45.29929472923318, "o", "2"] +[45.32929472923318, "o", "6"] +[45.359294729233184, "o", "&"] +[45.389294729233185, "o", "s"] +[45.41929472923319, "o", "e"] +[45.44929472923319, "o", "l"] +[45.47929472923319, "o", "e"] +[45.50929472923319, "o", "c"] +[45.53929472923319, "o", "t"] +[45.56929472923319, "o", "="] +[45.59929472923319, "o", "d"] +[45.629294729233195, "o", "a"] +[45.659294729233196, "o", "t"] +[45.6892947292332, "o", "e"] +[45.7192947292332, "o", ","] +[45.7492947292332, "o", "t"] +[45.7792947292332, "o", "e"] +[45.8092947292332, "o", "m"] +[45.8392947292332, "o", "p"] +[45.869294729233204, "o", "e"] +[45.899294729233205, "o", "r"] +[45.929294729233206, "o", "a"] +[45.95929472923321, "o", "t"] +[45.98929472923321, "o", "u"] +[46.01929472923321, "o", "r"] +[46.04929472923321, "o", "e"] +[46.07929472923321, "o", "m"] +[46.10929472923321, "o", "i"] +[46.139294729233214, "o", "n"] +[46.169294729233215, "o", ","] +[46.199294729233216, "o", "t"] +[46.22929472923322, "o", "e"] +[46.25929472923322, "o", "m"] +[46.28929472923322, "o", "p"] +[46.31929472923322, "o", "e"] +[46.34929472923322, "o", "r"] +[46.37929472923322, "o", "a"] +[46.409294729233224, "o", "t"] +[46.439294729233225, "o", "u"] +[46.469294729233226, "o", "r"] +[46.49929472923323, "o", "e"] +[46.52929472923323, "o", "m"] +[46.55929472923323, "o", "a"] +[46.58929472923323, "o", "x"] +[46.61929472923323, "o", ","] +[46.64929472923323, "o", "p"] +[46.679294729233234, "o", "r"] +[46.709294729233235, "o", "e"] +[46.73929472923324, "o", "c"] +[46.76929472923324, "o", "i"] +[46.79929472923324, "o", "p"] +[46.82929472923324, "o", "i"] +[46.85929472923324, "o", "t"] +[46.88929472923324, "o", "a"] +[46.91929472923324, "o", "t"] +[46.949294729233245, "o", "i"] +[46.979294729233246, "o", "o"] +[47.00929472923325, "o", "n"] +[47.03929472923325, "o", "\""] +[47.06929472923325, "o", "\r\n"] +[47.09929472923325, "o", "\u001b[0m"] +[47.12929472923325, "o", "\r\n"] +[47.14198479652451, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.41}]"] +[47.17198479652451, "o", "\u001b[1m"] +[47.20198479652451, "o", "\u001b[36m"] +[47.231984796524515, "o", "\u001b[91m"] +[47.261984796524516, "o", "$"] +[47.29198479652452, "o", " "] +[47.32198479652452, "o", "\u001b[0m"] +[52.35198479652452, "o", "\u001b[H"] +[52.38198479652452, "o", "\u001b[J"] +[52.41198479652452, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run the query against the new version of the dataset."] +[52.44198479652452, "o", "\r\n"] +[52.471984796524524, "o", "$ # This time, use layered querying that queries fragments directly without checkout,\r\n"] +[52.501984796524525, "o", "$ # downloading them if they're not local. This is seamless to PostgREST or any other application.\r\n"] +[52.531984796524526, "o", "$"] +[52.56198479652453, "o", " "] +[52.59198479652453, "o", "s"] +[52.62198479652453, "o", "g"] +[52.65198479652453, "o", "r"] +[52.68198479652453, "o", " "] +[52.71198479652453, "o", "c"] +[52.741984796524534, "o", "h"] +[52.771984796524535, "o", "e"] +[52.801984796524536, "o", "c"] +[52.83198479652454, "o", "k"] +[52.86198479652454, "o", "o"] +[52.89198479652454, "o", "u"] +[52.92198479652454, "o", "t"] +[52.95198479652454, "o", " "] +[52.98198479652454, "o", "-"] +[53.011984796524544, "o", "-"] +[53.041984796524545, "o", "l"] +[53.071984796524546, "o", "a"] +[53.10198479652455, "o", "y"] +[53.13198479652455, "o", "e"] +[53.16198479652455, "o", "r"] +[53.19198479652455, "o", "e"] +[53.22198479652455, "o", "d"] +[53.25198479652455, "o", " "] +[53.281984796524554, "o", "d"] +[53.311984796524555, "o", "e"] +[53.34198479652456, "o", "m"] +[53.37198479652456, "o", "o"] +[53.40198479652456, "o", "/"] +[53.43198479652456, "o", "w"] +[53.46198479652456, "o", "e"] +[53.49198479652456, "o", "a"] +[53.52198479652456, "o", "t"] +[53.551984796524565, "o", "h"] +[53.581984796524566, "o", "e"] +[53.61198479652457, "o", "r"] +[53.64198479652457, "o", ":"] +[53.67198479652457, "o", "r"] +[53.70198479652457, "o", "e"] +[53.73198479652457, "o", "v"] +[53.76198479652457, "o", "i"] +[53.791984796524574, "o", "s"] +[53.821984796524575, "o", "e"] +[53.851984796524576, "o", "d"] +[53.88198479652458, "o", "_"] +[53.91198479652458, "o", "d"] +[53.94198479652458, "o", "a"] +[53.97198479652458, "o", "t"] +[54.00198479652458, "o", "a"] +[54.03198479652458, "o", "\r\n"] +[54.061984796524584, "o", "$"] +[54.091984796524585, "o", " "] +[54.121984796524586, "o", "c"] +[54.15198479652459, "o", "u"] +[54.18198479652459, "o", "r"] +[54.21198479652459, "o", "l"] +[54.24198479652459, "o", " "] +[54.27198479652459, "o", "\""] +[54.30198479652459, "o", "h"] +[54.331984796524594, "o", "t"] +[54.361984796524595, "o", "t"] +[54.391984796524596, "o", "p"] +[54.4219847965246, "o", ":"] +[54.4519847965246, "o", "/"] +[54.4819847965246, "o", "/"] +[54.5119847965246, "o", "l"] +[54.5419847965246, "o", "o"] +[54.5719847965246, "o", "c"] +[54.601984796524604, "o", "a"] +[54.631984796524605, "o", "l"] +[54.66198479652461, "o", "h"] +[54.69198479652461, "o", "o"] +[54.72198479652461, "o", "s"] +[54.75198479652461, "o", "t"] +[54.78198479652461, "o", ":"] +[54.81198479652461, "o", "8"] +[54.84198479652461, "o", "0"] +[54.871984796524615, "o", "8"] +[54.901984796524616, "o", "0"] +[54.93198479652462, "o", "/"] +[54.96198479652462, "o", "r"] +[54.99198479652462, "o", "d"] +[55.02198479652462, "o", "u"] +[55.05198479652462, "o", "?"] +[55.08198479652462, "o", "d"] +[55.111984796524624, "o", "a"] +[55.141984796524625, "o", "t"] +[55.171984796524626, "o", "e"] +[55.20198479652463, "o", "="] +[55.23198479652463, "o", "e"] +[55.26198479652463, "o", "q"] +[55.29198479652463, "o", "."] +[55.32198479652463, "o", "2"] +[55.35198479652463, "o", "0"] +[55.381984796524634, "o", "1"] +[55.411984796524635, "o", "2"] +[55.441984796524636, "o", "-"] +[55.47198479652464, "o", "1"] +[55.50198479652464, "o", "2"] +[55.53198479652464, "o", "-"] +[55.56198479652464, "o", "2"] +[55.59198479652464, "o", "6"] +[55.62198479652464, "o", "&"] +[55.651984796524644, "o", "s"] +[55.681984796524645, "o", "e"] +[55.711984796524646, "o", "l"] +[55.74198479652465, "o", "e"] +[55.77198479652465, "o", "c"] +[55.80198479652465, "o", "t"] +[55.83198479652465, "o", "="] +[55.86198479652465, "o", "d"] +[55.89198479652465, "o", "a"] +[55.921984796524654, "o", "t"] +[55.951984796524656, "o", "e"] +[55.98198479652466, "o", ","] +[56.01198479652466, "o", "t"] +[56.04198479652466, "o", "e"] +[56.07198479652466, "o", "m"] +[56.10198479652466, "o", "p"] +[56.13198479652466, "o", "e"] +[56.16198479652466, "o", "r"] +[56.191984796524665, "o", "a"] +[56.221984796524666, "o", "t"] +[56.25198479652467, "o", "u"] +[56.28198479652467, "o", "r"] +[56.31198479652467, "o", "e"] +[56.34198479652467, "o", "m"] +[56.37198479652467, "o", "i"] +[56.40198479652467, "o", "n"] +[56.431984796524674, "o", ","] +[56.461984796524675, "o", "t"] +[56.491984796524676, "o", "e"] +[56.52198479652468, "o", "m"] +[56.55198479652468, "o", "p"] +[56.58198479652468, "o", "e"] +[56.61198479652468, "o", "r"] +[56.64198479652468, "o", "a"] +[56.67198479652468, "o", "t"] +[56.701984796524684, "o", "u"] +[56.731984796524685, "o", "r"] +[56.761984796524686, "o", "e"] +[56.79198479652469, "o", "m"] +[56.82198479652469, "o", "a"] +[56.85198479652469, "o", "x"] +[56.88198479652469, "o", ","] +[56.91198479652469, "o", "p"] +[56.94198479652469, "o", "r"] +[56.971984796524694, "o", "e"] +[57.001984796524695, "o", "c"] +[57.031984796524696, "o", "i"] +[57.0619847965247, "o", "p"] +[57.0919847965247, "o", "i"] +[57.1219847965247, "o", "t"] +[57.1519847965247, "o", "a"] +[57.1819847965247, "o", "t"] +[57.2119847965247, "o", "i"] +[57.241984796524704, "o", "o"] +[57.271984796524706, "o", "n"] +[57.30198479652471, "o", "\""] +[57.33198479652471, "o", "\r\n"] +[57.36198479652471, "o", "\u001b[0m"] +[57.39198479652471, "o", "\r\n"] +[57.81885967254705, "o", "Checked out demo/weather:81d8c4365369.\r\n"] +[58.14453206062383, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.692}]"] +[58.17453206062383, "o", "\u001b[1m"] +[58.20453206062383, "o", "\u001b[36m"] +[58.234532060623835, "o", "\u001b[91m"] +[58.264532060623836, "o", "$"] +[58.29453206062384, "o", " "] +[58.32453206062384, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.11/push-to-other-engine.cast b/content/casts/versioned/archive/v0.2.11/push-to-other-engine.cast new file mode 100644 index 00000000..35c5f6ca --- /dev/null +++ b/content/casts/versioned/archive/v0.2.11/push-to-other-engine.cast @@ -0,0 +1,922 @@ +{"version": 2, "width": 100, "height": 26, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1617022008, "metadata": {"tss": [{"h": "The .sgconfig file is written from the point of view of the first engine.", "ts": 0.06}, {"h": "Initialize the two engines", "ts": 9.559999999999999}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 22.060000000000002}, {"h": "Push the dataset out to the other engine", "ts": 34.757314586639666}, {"h": "Check that the dataset exists on the remote engine", "ts": 42.85555011749304}, {"h": "Update the dataset on the local engine", "ts": 49.931891851425604}, {"h": "Inspect our changes", "ts": 61.24616298675602}, {"h": "Push the changes out to the remote engine", "ts": 68.98617252349925}, {"h": "Inspect the dataset on the remote engine", "ts": 76.02232887268144}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The .sgconfig file is written from the point of view of the first engine."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Here, the first engine is local and default and the second one is remote.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "c"] +[0.27, "o", "a"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "."] +[0.3900000000000001, "o", "s"] +[0.42000000000000015, "o", "g"] +[0.4500000000000002, "o", "c"] +[0.4800000000000002, "o", "o"] +[0.5100000000000002, "o", "n"] +[0.5400000000000003, "o", "f"] +[0.5700000000000003, "o", "i"] +[0.6000000000000003, "o", "g"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "\u001b[0m"] +[0.6900000000000004, "o", "\r\n"] +[0.6909999275207523, "o", "[defaults]"] +[0.6910333061218266, "o", "\r\n"] +[0.6910895729064945, "o", "SG_LOGLEVEL=INFO"] +[0.6911003017425541, "o", "\r\n"] +[0.6911081695556645, "o", "SG_ENGINE_HOST=localhost"] +[0.6911155605316166, "o", "\r\n"] +[0.6911229515075688, "o", "SG_ENGINE_PORT=5432"] +[0.6911312961578373, "o", "\r\n"] +[0.6911415481567387, "o", "SG_ENGINE_USER=sgr"] +[0.6911506080627445, "o", "\r\n"] +[0.6911594295501713, "o", "SG_ENGINE_PWD=supersecure"] +[0.6911675357818607, "o", "\r\n"] +[0.6911754035949711, "o", "\r\n"] +[0.6911835098266605, "o", "[remote: engine_2]"] +[0.6911909008026127, "o", "\r\n"] +[0.691198768615723, "o", "SG_ENGINE_ADMIN_USER=sgr"] +[0.6912063980102543, "o", "\r\n"] +[0.6912140274047855, "o", "SG_ENGINE_ADMIN_PWD=supersecure"] +[0.6912216567993168, "o", "\r\n"] +[0.691229286193848, "o", "SG_ENGINE_POSTGRES_DB_NAME=splitgraph"] +[0.6912369155883793, "o", "\r\n"] +[0.6912447834014896, "o", "SG_ENGINE_HOST=localhost"] +[0.6912545585632328, "o", "\r\n"] +[0.6912652873992924, "o", "SG_ENGINE_PORT=5431"] +[0.69127387046814, "o", "\r\n"] +[0.691283168792725, "o", "SG_ENGINE_USER=sgr"] +[0.6912915134429936, "o", "\r\n"] +[0.6913008117675785, "o", "SG_ENGINE_PWD=supersecure"] +[0.6913086795806889, "o", "\r\n"] +[0.6913186931610111, "o", "SG_ENGINE_DB_NAME=splitgraph"] +[0.7213186931610112, "o", "\u001b[1m"] +[0.7513186931610112, "o", "\u001b[36m"] +[0.7813186931610112, "o", "\u001b[91m"] +[0.8113186931610112, "o", "$"] +[0.8413186931610113, "o", " "] +[0.8713186931610113, "o", "\u001b[0m"] +[9.53, "o", "\u001b[H"] +[9.559999999999999, "o", "\u001b[J"] +[9.589999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the two engines"] +[9.619999999999997, "o", "\r\n"] +[9.649999999999997, "o", "$"] +[9.679999999999996, "o", " "] +[9.709999999999996, "o", "s"] +[9.739999999999995, "o", "g"] +[9.769999999999994, "o", "r"] +[9.799999999999994, "o", " "] +[9.829999999999993, "o", "i"] +[9.859999999999992, "o", "n"] +[9.889999999999992, "o", "i"] +[9.919999999999991, "o", "t"] +[9.94999999999999, "o", "\r\n"] +[9.97999999999999, "o", "$"] +[10.00999999999999, "o", " "] +[10.039999999999988, "o", "S"] +[10.069999999999988, "o", "G"] +[10.099999999999987, "o", "_"] +[10.129999999999987, "o", "E"] +[10.159999999999986, "o", "N"] +[10.189999999999985, "o", "G"] +[10.219999999999985, "o", "I"] +[10.249999999999984, "o", "N"] +[10.279999999999983, "o", "E"] +[10.309999999999983, "o", "="] +[10.339999999999982, "o", "e"] +[10.369999999999981, "o", "n"] +[10.39999999999998, "o", "g"] +[10.42999999999998, "o", "i"] +[10.45999999999998, "o", "n"] +[10.489999999999979, "o", "e"] +[10.519999999999978, "o", "_"] +[10.549999999999978, "o", "2"] +[10.579999999999977, "o", " "] +[10.609999999999976, "o", "s"] +[10.639999999999976, "o", "g"] +[10.669999999999975, "o", "r"] +[10.699999999999974, "o", " "] +[10.729999999999974, "o", "i"] +[10.759999999999973, "o", "n"] +[10.789999999999973, "o", "i"] +[10.819999999999972, "o", "t"] +[10.849999999999971, "o", "\r\n"] +[10.87999999999997, "o", "\u001b[0m"] +[10.90999999999997, "o", "\r\n"] +[11.118408832550019, "o", "Initializing engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph)..."] +[11.118475112915009, "o", "\r\n"] +[11.119645986556977, "o", "Waiting for connection...."] +[11.119686040878266, "o", "\r\n"] +[12.119686040878266, "o", "Database splitgraph already exists, skipping\r\n"] +[12.11970082283017, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[12.131485376358002, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.161157760620087, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.162522706985444, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.182443771362275, "o", "Installing Splitgraph API functions...\r\n"] +[12.216310415267914, "o", "Installing CStore management functions...\r\n"] +[12.219880018234223, "o", "Installing the audit trigger...\r\n"] +[12.23159686088559, "o", "Engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph) initialized.\r\n"] +[12.393967542648285, "o", "Initializing engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph)...\r\n"] +[12.401964817047089, "o", "Database splitgraph already exists, skipping\r\n"] +[12.40197793006894, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[12.408595714569062, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.439146432876557, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.440450344085663, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.465920362472504, "o", "Installing Splitgraph API functions...\r\n"] +[12.504965934753388, "o", "Installing CStore management functions...\r\n"] +[12.508504781722992, "o", "Installing the audit trigger...\r\n"] +[12.522192630767792, "o", "Engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph) initialized.\r\n"] +[12.552192630767792, "o", "\u001b[1m"] +[12.582192630767791, "o", "\u001b[36m"] +[12.61219263076779, "o", "\u001b[91m"] +[12.64219263076779, "o", "$"] +[12.672192630767789, "o", " "] +[12.702192630767788, "o", "\u001b[0m"] +[22.03, "o", "\u001b[H"] +[22.060000000000002, "o", "\u001b[J"] +[22.090000000000003, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[22.120000000000005, "o", "\r\n"] +[22.150000000000006, "o", "$"] +[22.180000000000007, "o", " "] +[22.210000000000008, "o", "s"] +[22.24000000000001, "o", "g"] +[22.27000000000001, "o", "r"] +[22.30000000000001, "o", " "] +[22.330000000000013, "o", "i"] +[22.360000000000014, "o", "n"] +[22.390000000000015, "o", "i"] +[22.420000000000016, "o", "t"] +[22.450000000000017, "o", " "] +[22.480000000000018, "o", "d"] +[22.51000000000002, "o", "e"] +[22.54000000000002, "o", "m"] +[22.57000000000002, "o", "o"] +[22.600000000000023, "o", "/"] +[22.630000000000024, "o", "w"] +[22.660000000000025, "o", "e"] +[22.690000000000026, "o", "a"] +[22.720000000000027, "o", "t"] +[22.75000000000003, "o", "h"] +[22.78000000000003, "o", "e"] +[22.81000000000003, "o", "r"] +[22.840000000000032, "o", "\r\n"] +[22.870000000000033, "o", "$"] +[22.900000000000034, "o", " "] +[22.930000000000035, "o", "s"] +[22.960000000000036, "o", "g"] +[22.990000000000038, "o", "r"] +[23.02000000000004, "o", " "] +[23.05000000000004, "o", "c"] +[23.08000000000004, "o", "s"] +[23.110000000000042, "o", "v"] +[23.140000000000043, "o", " "] +[23.170000000000044, "o", "i"] +[23.200000000000045, "o", "m"] +[23.230000000000047, "o", "p"] +[23.260000000000048, "o", "o"] +[23.29000000000005, "o", "r"] +[23.32000000000005, "o", "t"] +[23.35000000000005, "o", " "] +[23.380000000000052, "o", "-"] +[23.410000000000053, "o", "f"] +[23.440000000000055, "o", " "] +[23.470000000000056, "o", "."] +[23.500000000000057, "o", "."] +[23.530000000000058, "o", "/"] +[23.56000000000006, "o", "i"] +[23.59000000000006, "o", "m"] +[23.62000000000006, "o", "p"] +[23.650000000000063, "o", "o"] +[23.680000000000064, "o", "r"] +[23.710000000000065, "o", "t"] +[23.740000000000066, "o", "-"] +[23.770000000000067, "o", "f"] +[23.800000000000068, "o", "r"] +[23.83000000000007, "o", "o"] +[23.86000000000007, "o", "m"] +[23.89000000000007, "o", "-"] +[23.920000000000073, "o", "c"] +[23.950000000000074, "o", "s"] +[23.980000000000075, "o", "v"] +[24.010000000000076, "o", "/"] +[24.040000000000077, "o", "r"] +[24.07000000000008, "o", "d"] +[24.10000000000008, "o", "u"] +[24.13000000000008, "o", "-"] +[24.160000000000082, "o", "w"] +[24.190000000000083, "o", "e"] +[24.220000000000084, "o", "a"] +[24.250000000000085, "o", "t"] +[24.280000000000086, "o", "h"] +[24.310000000000088, "o", "e"] +[24.34000000000009, "o", "r"] +[24.37000000000009, "o", "-"] +[24.40000000000009, "o", "h"] +[24.430000000000092, "o", "i"] +[24.460000000000093, "o", "s"] +[24.490000000000094, "o", "t"] +[24.520000000000095, "o", "o"] +[24.550000000000097, "o", "r"] +[24.580000000000098, "o", "y"] +[24.6100000000001, "o", "."] +[24.6400000000001, "o", "c"] +[24.6700000000001, "o", "s"] +[24.700000000000102, "o", "v"] +[24.730000000000103, "o", " "] +[24.760000000000105, "o", "\\"] +[24.790000000000106, "o", "\r\n "] +[24.820000000000107, "o", "-"] +[24.850000000000108, "o", "k"] +[24.88000000000011, "o", " "] +[24.91000000000011, "o", "d"] +[24.94000000000011, "o", "a"] +[24.970000000000113, "o", "t"] +[25.000000000000114, "o", "e"] +[25.030000000000115, "o", " "] +[25.060000000000116, "o", "\\"] +[25.090000000000117, "o", "\r\n "] +[25.12000000000012, "o", "-"] +[25.15000000000012, "o", "t"] +[25.18000000000012, "o", " "] +[25.21000000000012, "o", "d"] +[25.240000000000123, "o", "a"] +[25.270000000000124, "o", "t"] +[25.300000000000125, "o", "e"] +[25.330000000000126, "o", " "] +[25.360000000000127, "o", "t"] +[25.39000000000013, "o", "i"] +[25.42000000000013, "o", "m"] +[25.45000000000013, "o", "e"] +[25.480000000000132, "o", "s"] +[25.510000000000133, "o", "t"] +[25.540000000000134, "o", "a"] +[25.570000000000135, "o", "m"] +[25.600000000000136, "o", "p"] +[25.630000000000138, "o", " "] +[25.66000000000014, "o", "\\"] +[25.69000000000014, "o", "\r\n "] +[25.72000000000014, "o", "-"] +[25.750000000000142, "o", "-"] +[25.780000000000143, "o", "s"] +[25.810000000000144, "o", "e"] +[25.840000000000146, "o", "p"] +[25.870000000000147, "o", "a"] +[25.900000000000148, "o", "r"] +[25.93000000000015, "o", "a"] +[25.96000000000015, "o", "t"] +[25.99000000000015, "o", "o"] +[26.020000000000152, "o", "r"] +[26.050000000000153, "o", " "] +[26.080000000000155, "o", "\""] +[26.110000000000156, "o", ";"] +[26.140000000000157, "o", "\""] +[26.170000000000158, "o", " "] +[26.20000000000016, "o", "\\"] +[26.23000000000016, "o", "\r\n "] +[26.26000000000016, "o", "d"] +[26.290000000000163, "o", "e"] +[26.320000000000164, "o", "m"] +[26.350000000000165, "o", "o"] +[26.380000000000166, "o", "/"] +[26.410000000000167, "o", "w"] +[26.44000000000017, "o", "e"] +[26.47000000000017, "o", "a"] +[26.50000000000017, "o", "t"] +[26.53000000000017, "o", "h"] +[26.560000000000173, "o", "e"] +[26.590000000000174, "o", "r"] +[26.620000000000175, "o", " "] +[26.650000000000176, "o", "r"] +[26.680000000000177, "o", "d"] +[26.71000000000018, "o", "u"] +[26.74000000000018, "o", "\r\n"] +[26.77000000000018, "o", "$"] +[26.800000000000182, "o", " "] +[26.830000000000183, "o", "s"] +[26.860000000000184, "o", "g"] +[26.890000000000185, "o", "r"] +[26.920000000000186, "o", " "] +[26.950000000000188, "o", "c"] +[26.98000000000019, "o", "o"] +[27.01000000000019, "o", "m"] +[27.04000000000019, "o", "m"] +[27.070000000000192, "o", "i"] +[27.100000000000193, "o", "t"] +[27.130000000000194, "o", " "] +[27.160000000000196, "o", "d"] +[27.190000000000197, "o", "e"] +[27.220000000000198, "o", "m"] +[27.2500000000002, "o", "o"] +[27.2800000000002, "o", "/"] +[27.3100000000002, "o", "w"] +[27.340000000000202, "o", "e"] +[27.370000000000203, "o", "a"] +[27.400000000000205, "o", "t"] +[27.430000000000206, "o", "h"] +[27.460000000000207, "o", "e"] +[27.490000000000208, "o", "r"] +[27.52000000000021, "o", "\r\n"] +[27.55000000000021, "o", "$"] +[27.58000000000021, "o", " "] +[27.610000000000213, "o", "s"] +[27.640000000000214, "o", "g"] +[27.670000000000215, "o", "r"] +[27.700000000000216, "o", " "] +[27.730000000000217, "o", "t"] +[27.76000000000022, "o", "a"] +[27.79000000000022, "o", "g"] +[27.82000000000022, "o", " "] +[27.85000000000022, "o", "d"] +[27.880000000000223, "o", "e"] +[27.910000000000224, "o", "m"] +[27.940000000000225, "o", "o"] +[27.970000000000226, "o", "/"] +[28.000000000000227, "o", "w"] +[28.03000000000023, "o", "e"] +[28.06000000000023, "o", "a"] +[28.09000000000023, "o", "t"] +[28.120000000000232, "o", "h"] +[28.150000000000233, "o", "e"] +[28.180000000000234, "o", "r"] +[28.210000000000235, "o", " "] +[28.240000000000236, "o", "i"] +[28.270000000000238, "o", "n"] +[28.30000000000024, "o", "i"] +[28.33000000000024, "o", "t"] +[28.36000000000024, "o", "i"] +[28.390000000000242, "o", "a"] +[28.420000000000243, "o", "l"] +[28.450000000000244, "o", "_"] +[28.480000000000246, "o", "d"] +[28.510000000000247, "o", "a"] +[28.540000000000248, "o", "t"] +[28.57000000000025, "o", "a"] +[28.60000000000025, "o", "\r\n"] +[28.63000000000025, "o", "\u001b[0m"] +[28.660000000000252, "o", "\r\n"] +[28.87872448921229, "o", "Initialized empty repository demo/weather\r\n"] +[29.091355237961068, "o", "Committing demo/weather...\r\n"] +[29.115305576324715, "o", "Processing table rdu\r\n"] +[29.303572330475106, "o", "Committed demo/weather as 57b92757e6a9.\r\n"] +[29.517314586639657, "o", "Tagged demo/weather:57b92757e6a95de544f73d9f8509a16a73c227ad2d09590a34ffd4a89a5732bc with initial_data.\r\n"] +[29.547314586639658, "o", "\u001b[1m"] +[29.57731458663966, "o", "\u001b[36m"] +[29.60731458663966, "o", "\u001b[91m"] +[29.63731458663966, "o", "$"] +[29.667314586639662, "o", " "] +[29.697314586639664, "o", "\u001b[0m"] +[34.727314586639665, "o", "\u001b[H"] +[34.757314586639666, "o", "\u001b[J"] +[34.78731458663967, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset out to the other engine"] +[34.81731458663967, "o", "\r\n"] +[34.84731458663967, "o", "$ # Since by default Splitgraph is configured to use S3 for uploading, we need\r\n"] +[34.87731458663967, "o", "$ # to override the upload handler and upload data to the actual database.\r\n"] +[34.90731458663967, "o", "$"] +[34.93731458663967, "o", " "] +[34.967314586639674, "o", "s"] +[34.997314586639675, "o", "g"] +[35.027314586639676, "o", "r"] +[35.05731458663968, "o", " "] +[35.08731458663968, "o", "p"] +[35.11731458663968, "o", "u"] +[35.14731458663968, "o", "s"] +[35.17731458663968, "o", "h"] +[35.20731458663968, "o", " "] +[35.237314586639684, "o", "d"] +[35.267314586639685, "o", "e"] +[35.297314586639686, "o", "m"] +[35.32731458663969, "o", "o"] +[35.35731458663969, "o", "/"] +[35.38731458663969, "o", "w"] +[35.41731458663969, "o", "e"] +[35.44731458663969, "o", "a"] +[35.47731458663969, "o", "t"] +[35.507314586639694, "o", "h"] +[35.537314586639695, "o", "e"] +[35.5673145866397, "o", "r"] +[35.5973145866397, "o", " "] +[35.6273145866397, "o", "-"] +[35.6573145866397, "o", "-"] +[35.6873145866397, "o", "r"] +[35.7173145866397, "o", "e"] +[35.7473145866397, "o", "m"] +[35.777314586639704, "o", "o"] +[35.807314586639706, "o", "t"] +[35.83731458663971, "o", "e"] +[35.86731458663971, "o", " "] +[35.89731458663971, "o", "e"] +[35.92731458663971, "o", "n"] +[35.95731458663971, "o", "g"] +[35.98731458663971, "o", "i"] +[36.01731458663971, "o", "n"] +[36.047314586639715, "o", "e"] +[36.077314586639716, "o", "_"] +[36.10731458663972, "o", "2"] +[36.13731458663972, "o", " "] +[36.16731458663972, "o", "d"] +[36.19731458663972, "o", "e"] +[36.22731458663972, "o", "m"] +[36.25731458663972, "o", "o"] +[36.287314586639724, "o", "/"] +[36.317314586639725, "o", "w"] +[36.347314586639726, "o", "e"] +[36.37731458663973, "o", "a"] +[36.40731458663973, "o", "t"] +[36.43731458663973, "o", "h"] +[36.46731458663973, "o", "e"] +[36.49731458663973, "o", "r"] +[36.52731458663973, "o", " "] +[36.557314586639734, "o", "-"] +[36.587314586639735, "o", "-"] +[36.617314586639736, "o", "u"] +[36.64731458663974, "o", "p"] +[36.67731458663974, "o", "l"] +[36.70731458663974, "o", "o"] +[36.73731458663974, "o", "a"] +[36.76731458663974, "o", "d"] +[36.79731458663974, "o", "-"] +[36.827314586639744, "o", "h"] +[36.857314586639745, "o", "a"] +[36.88731458663975, "o", "n"] +[36.91731458663975, "o", "d"] +[36.94731458663975, "o", "l"] +[36.97731458663975, "o", "e"] +[37.00731458663975, "o", "r"] +[37.03731458663975, "o", " "] +[37.06731458663975, "o", "D"] +[37.097314586639754, "o", "B"] +[37.127314586639756, "o", "\r\n"] +[37.15731458663976, "o", "\u001b[0m"] +[37.18731458663976, "o", "\r\n"] +[37.35559304237401, "o", "Pushing demo/weather to demo/weather on remote engine_2\r\n"] +[37.35583765983617, "o", "Gathering remote metadata...\r\n"] +[37.417356567383166, "o", "Uploading 1 object, total size 109.61 KiB\r\n"] +[37.424479084015246, "o", "\r 0%| | 0/1 [00:00 e1350c1ff2cf\r\n"] +[24.297255477905402, "o", "\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[24.30429073333753, "o", "Executing SQL...\r\n"] +[24.515816173553596, "o", "Committing demo/summary...\r\n"] +[24.54329629898084, "o", "Processing table monthly_summary\r\n"] +[24.638886413574348, "o", " ---> 596f4ddce962\r\n"] +[24.643376789093146, "o", "Successfully built demo/summary:596f4ddce962.\r\n"] +[24.868225297927985, "o", "Tagged demo/summary:596f4ddce9621b047e78f13c57c88cc6a53a9dcead29d1626da5bba29e456966 with based_on_initial.\r\n"] +[24.898225297927986, "o", "\u001b[1m"] +[24.928225297927987, "o", "\u001b[36m"] +[24.95822529792799, "o", "\u001b[91m"] +[24.98822529792799, "o", "$"] +[25.01822529792799, "o", " "] +[25.048225297927992, "o", "\u001b[0m"] +[30.078225297927993, "o", "\u001b[H"] +[30.108225297927994, "o", "\u001b[J"] +[30.138225297927995, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Much like with Docker, the build result is cached, so running build again checks out the existing image."] +[30.168225297927997, "o", "\r\n"] +[30.198225297927998, "o", "$"] +[30.228225297928, "o", " "] +[30.258225297928, "o", "s"] +[30.288225297928, "o", "g"] +[30.318225297928002, "o", "r"] +[30.348225297928003, "o", " "] +[30.378225297928005, "o", "b"] +[30.408225297928006, "o", "u"] +[30.438225297928007, "o", "i"] +[30.468225297928008, "o", "l"] +[30.49822529792801, "o", "d"] +[30.52822529792801, "o", " "] +[30.55822529792801, "o", "r"] +[30.588225297928012, "o", "d"] +[30.618225297928014, "o", "u"] +[30.648225297928015, "o", "-"] +[30.678225297928016, "o", "w"] +[30.708225297928017, "o", "e"] +[30.738225297928018, "o", "a"] +[30.76822529792802, "o", "t"] +[30.79822529792802, "o", "h"] +[30.82822529792802, "o", "e"] +[30.858225297928023, "o", "r"] +[30.888225297928024, "o", "-"] +[30.918225297928025, "o", "s"] +[30.948225297928026, "o", "u"] +[30.978225297928027, "o", "m"] +[31.00822529792803, "o", "m"] +[31.03822529792803, "o", "a"] +[31.06822529792803, "o", "r"] +[31.098225297928032, "o", "y"] +[31.128225297928033, "o", "."] +[31.158225297928034, "o", "s"] +[31.188225297928035, "o", "p"] +[31.218225297928036, "o", "l"] +[31.248225297928037, "o", "i"] +[31.27822529792804, "o", "t"] +[31.30822529792804, "o", "f"] +[31.33822529792804, "o", "i"] +[31.368225297928042, "o", "l"] +[31.398225297928043, "o", "e"] +[31.428225297928044, "o", " "] +[31.458225297928045, "o", "-"] +[31.488225297928047, "o", "o"] +[31.518225297928048, "o", " "] +[31.54822529792805, "o", "d"] +[31.57822529792805, "o", "e"] +[31.60822529792805, "o", "m"] +[31.638225297928052, "o", "o"] +[31.668225297928053, "o", "/"] +[31.698225297928055, "o", "s"] +[31.728225297928056, "o", "u"] +[31.758225297928057, "o", "m"] +[31.788225297928058, "o", "m"] +[31.81822529792806, "o", "a"] +[31.84822529792806, "o", "r"] +[31.87822529792806, "o", "y"] +[31.908225297928063, "o", "\r\n"] +[31.938225297928064, "o", "\u001b[0m"] +[31.968225297928065, "o", "\r\n"] +[32.168308792114466, "o", "Executing Splitfile rdu-weather-summary.splitfile with arguments {}\r\n"] +[32.24620777130148, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather IMPORT rdu AS source_data\u001b[0m\r\n"] +[32.24752098083517, "o", "Resolving repository demo/weather\r\n"] +[32.37627607345602, "o", " ---> Using cache\r\n"] +[32.37635570526144, "o", " ---> e1350c1ff2cf\r\n"] +[32.37640887260458, "o", "\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[32.59118658065817, "o", " ---> Using cache\r\n"] +[32.59120923042318, "o", " ---> 596f4ddce962\r\n"] +[32.59437733650228, "o", "Successfully built demo/summary:596f4ddce962.\r\n"] +[32.624377336502285, "o", "\u001b[1m"] +[32.654377336502286, "o", "\u001b[36m"] +[32.68437733650229, "o", "\u001b[91m"] +[32.71437733650229, "o", "$"] +[32.74437733650229, "o", " "] +[32.77437733650229, "o", "\u001b[0m"] +[37.80437733650229, "o", "\u001b[H"] +[37.83437733650229, "o", "\u001b[J"] +[37.864377336502294, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the new dataset"] +[37.894377336502295, "o", "\r\n"] +[37.924377336502296, "o", "$"] +[37.9543773365023, "o", " "] +[37.9843773365023, "o", "s"] +[38.0143773365023, "o", "g"] +[38.0443773365023, "o", "r"] +[38.0743773365023, "o", " "] +[38.1043773365023, "o", "s"] +[38.134377336502304, "o", "h"] +[38.164377336502305, "o", "o"] +[38.194377336502306, "o", "w"] +[38.22437733650231, "o", " "] +[38.25437733650231, "o", "d"] +[38.28437733650231, "o", "e"] +[38.31437733650231, "o", "m"] +[38.34437733650231, "o", "o"] +[38.37437733650231, "o", "/"] +[38.404377336502314, "o", "s"] +[38.434377336502315, "o", "u"] +[38.46437733650232, "o", "m"] +[38.49437733650232, "o", "m"] +[38.52437733650232, "o", "a"] +[38.55437733650232, "o", "r"] +[38.58437733650232, "o", "y"] +[38.61437733650232, "o", ":"] +[38.64437733650232, "o", "b"] +[38.674377336502324, "o", "a"] +[38.704377336502326, "o", "s"] +[38.73437733650233, "o", "e"] +[38.76437733650233, "o", "d"] +[38.79437733650233, "o", "_"] +[38.82437733650233, "o", "o"] +[38.85437733650233, "o", "n"] +[38.88437733650233, "o", "_"] +[38.91437733650233, "o", "i"] +[38.944377336502335, "o", "n"] +[38.974377336502336, "o", "i"] +[39.00437733650234, "o", "t"] +[39.03437733650234, "o", "i"] +[39.06437733650234, "o", "a"] +[39.09437733650234, "o", "l"] +[39.12437733650234, "o", "\r\n"] +[39.15437733650234, "o", "$"] +[39.184377336502344, "o", " "] +[39.214377336502345, "o", "s"] +[39.244377336502346, "o", "g"] +[39.27437733650235, "o", "r"] +[39.30437733650235, "o", " "] +[39.33437733650235, "o", "t"] +[39.36437733650235, "o", "a"] +[39.39437733650235, "o", "b"] +[39.42437733650235, "o", "l"] +[39.454377336502354, "o", "e"] +[39.484377336502355, "o", " "] +[39.514377336502356, "o", "d"] +[39.54437733650236, "o", "e"] +[39.57437733650236, "o", "m"] +[39.60437733650236, "o", "o"] +[39.63437733650236, "o", "/"] +[39.66437733650236, "o", "s"] +[39.69437733650236, "o", "u"] +[39.724377336502364, "o", "m"] +[39.754377336502365, "o", "m"] +[39.78437733650237, "o", "a"] +[39.81437733650237, "o", "r"] +[39.84437733650237, "o", "y"] +[39.87437733650237, "o", ":"] +[39.90437733650237, "o", "b"] +[39.93437733650237, "o", "a"] +[39.96437733650237, "o", "s"] +[39.994377336502374, "o", "e"] +[40.024377336502376, "o", "d"] +[40.05437733650238, "o", "_"] +[40.08437733650238, "o", "o"] +[40.11437733650238, "o", "n"] +[40.14437733650238, "o", "_"] +[40.17437733650238, "o", "i"] +[40.20437733650238, "o", "n"] +[40.234377336502384, "o", "i"] +[40.264377336502385, "o", "t"] +[40.294377336502386, "o", "i"] +[40.32437733650239, "o", "a"] +[40.35437733650239, "o", "l"] +[40.38437733650239, "o", " "] +[40.41437733650239, "o", "m"] +[40.44437733650239, "o", "o"] +[40.47437733650239, "o", "n"] +[40.504377336502394, "o", "t"] +[40.534377336502395, "o", "h"] +[40.564377336502396, "o", "l"] +[40.5943773365024, "o", "y"] +[40.6243773365024, "o", "_"] +[40.6543773365024, "o", "s"] +[40.6843773365024, "o", "u"] +[40.7143773365024, "o", "m"] +[40.7443773365024, "o", "m"] +[40.774377336502404, "o", "a"] +[40.804377336502405, "o", "r"] +[40.834377336502406, "o", "y"] +[40.86437733650241, "o", "\r\n"] +[40.89437733650241, "o", "$"] +[40.92437733650241, "o", " "] +[40.95437733650241, "o", "s"] +[40.98437733650241, "o", "g"] +[41.01437733650241, "o", "r"] +[41.044377336502414, "o", " "] +[41.074377336502415, "o", "s"] +[41.10437733650242, "o", "q"] +[41.13437733650242, "o", "l"] +[41.16437733650242, "o", " "] +[41.19437733650242, "o", "-"] +[41.22437733650242, "o", "s"] +[41.25437733650242, "o", " "] +[41.28437733650242, "o", "d"] +[41.314377336502424, "o", "e"] +[41.344377336502426, "o", "m"] +[41.37437733650243, "o", "o"] +[41.40437733650243, "o", "/"] +[41.43437733650243, "o", "s"] +[41.46437733650243, "o", "u"] +[41.49437733650243, "o", "m"] +[41.52437733650243, "o", "m"] +[41.554377336502434, "o", "a"] +[41.584377336502435, "o", "r"] +[41.614377336502436, "o", "y"] +[41.64437733650244, "o", " "] +[41.67437733650244, "o", "\""] +[41.70437733650244, "o", "S"] +[41.73437733650244, "o", "E"] +[41.76437733650244, "o", "L"] +[41.79437733650244, "o", "E"] +[41.824377336502444, "o", "C"] +[41.854377336502445, "o", "T"] +[41.884377336502446, "o", " "] +[41.91437733650245, "o", "*"] +[41.94437733650245, "o", " "] +[41.97437733650245, "o", "F"] +[42.00437733650245, "o", "R"] +[42.03437733650245, "o", "O"] +[42.06437733650245, "o", "M"] +[42.094377336502454, "o", " "] +[42.124377336502455, "o", "m"] +[42.154377336502456, "o", "o"] +[42.18437733650246, "o", "n"] +[42.21437733650246, "o", "t"] +[42.24437733650246, "o", "h"] +[42.27437733650246, "o", "l"] +[42.30437733650246, "o", "y"] +[42.33437733650246, "o", "_"] +[42.364377336502464, "o", "s"] +[42.394377336502465, "o", "u"] +[42.42437733650247, "o", "m"] +[42.45437733650247, "o", "m"] +[42.48437733650247, "o", "a"] +[42.51437733650247, "o", "r"] +[42.54437733650247, "o", "y"] +[42.57437733650247, "o", " "] +[42.60437733650247, "o", "O"] +[42.634377336502475, "o", "R"] +[42.664377336502476, "o", "D"] +[42.69437733650248, "o", "E"] +[42.72437733650248, "o", "R"] +[42.75437733650248, "o", " "] +[42.78437733650248, "o", "B"] +[42.81437733650248, "o", "Y"] +[42.84437733650248, "o", " "] +[42.874377336502484, "o", "m"] +[42.904377336502485, "o", "o"] +[42.934377336502486, "o", "n"] +[42.96437733650249, "o", "t"] +[42.99437733650249, "o", "h"] +[43.02437733650249, "o", " "] +[43.05437733650249, "o", "D"] +[43.08437733650249, "o", "E"] +[43.11437733650249, "o", "S"] +[43.144377336502494, "o", "C"] +[43.174377336502495, "o", " "] +[43.204377336502496, "o", "L"] +[43.2343773365025, "o", "I"] +[43.2643773365025, "o", "M"] +[43.2943773365025, "o", "I"] +[43.3243773365025, "o", "T"] +[43.3543773365025, "o", " "] +[43.3843773365025, "o", "5"] +[43.414377336502504, "o", "\""] +[43.444377336502505, "o", "\r\n"] +[43.474377336502506, "o", "\u001b[0m"] +[43.50437733650251, "o", "\r\n"] +[43.713360042572454, "o", "Image demo/summary:596f4ddce9621b047e78f13c57c88cc6a53a9dcead29d1626da5bba29e456966\r\n"] +[43.713372678757146, "o", "CREATE TABLE monthly_summary AS ( SELECT to_char(date, 'YYYYMM') AS month, AVG(precipitation) AS average_precipitation, AVG(snowfall) AS average_snowfall FROM source_data GROUP BY month ORDER BY month ASC)\r\nCreated at 2021-03-29T12:47:53.246619\r\n"] +[43.71529218673749, "o", "Size: 111.78 KiB\r\n"] +[43.71529910087629, "o", "Parent: e1350c1ff2cf4132f8a85cad40700b6b00a00cb1a9364e9915850e6156a43f57\r\n\r\nTables:\r\n"] +[43.71637103080793, "o", " monthly_summary\r\n source_data\r\n"] +[43.922219724655584, "o", "Table demo/summary:596f4ddce9621b047e78f13c57c88cc6a53a9dcead29d1626da5bba29e456966/monthly_summary\r\n"] +[43.92223379135175, "o", "\r\n"] +[43.923233003616765, "o", "Size: 2.17 KiB\r\n"] +[43.924294204712346, "o", "Rows: 153\r\n"] +[43.924334497452215, "o", "Columns: \r\n month (text)\r\n average_precipitation (numeric)\r\n average_snowfall (numeric)\r\n\r\nObjects: \r\n o5e29c3cf82603335df66690a448ca1f604f0002d5a3496b18c982a5ea835f3\r\n"] +[44.128011436462835, "o", "201909 0.171667 0\r\n201908 0.139032 0\r\n201907 0.117097 0\r\n201906 0.12 0\r\n201905 0.103548 0\r\n"] +[44.158011436462836, "o", "\u001b[1m"] +[44.18801143646284, "o", "\u001b[36m"] +[44.21801143646284, "o", "\u001b[91m"] +[44.24801143646284, "o", "$"] +[44.27801143646284, "o", " "] +[44.30801143646284, "o", "\u001b[0m"] +[52.80437733650229, "o", "\u001b[H"] +[52.83437733650229, "o", "\u001b[J"] +[52.864377336502294, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image's provenance (generated from its metadata)"] +[52.894377336502295, "o", "\r\n"] +[52.924377336502296, "o", "$"] +[52.9543773365023, "o", " "] +[52.9843773365023, "o", "s"] +[53.0143773365023, "o", "g"] +[53.0443773365023, "o", "r"] +[53.0743773365023, "o", " "] +[53.1043773365023, "o", "p"] +[53.134377336502304, "o", "r"] +[53.164377336502305, "o", "o"] +[53.194377336502306, "o", "v"] +[53.22437733650231, "o", "e"] +[53.25437733650231, "o", "n"] +[53.28437733650231, "o", "a"] +[53.31437733650231, "o", "n"] +[53.34437733650231, "o", "c"] +[53.37437733650231, "o", "e"] +[53.404377336502314, "o", " "] +[53.434377336502315, "o", "d"] +[53.46437733650232, "o", "e"] +[53.49437733650232, "o", "m"] +[53.52437733650232, "o", "o"] +[53.55437733650232, "o", "/"] +[53.58437733650232, "o", "s"] +[53.61437733650232, "o", "u"] +[53.64437733650232, "o", "m"] +[53.674377336502324, "o", "m"] +[53.704377336502326, "o", "a"] +[53.73437733650233, "o", "r"] +[53.76437733650233, "o", "y"] +[53.79437733650233, "o", "\r\n"] +[53.82437733650233, "o", "$"] +[53.85437733650233, "o", " "] +[53.88437733650233, "o", "s"] +[53.91437733650233, "o", "g"] +[53.944377336502335, "o", "r"] +[53.974377336502336, "o", " "] +[54.00437733650234, "o", "p"] +[54.03437733650234, "o", "r"] +[54.06437733650234, "o", "o"] +[54.09437733650234, "o", "v"] +[54.12437733650234, "o", "e"] +[54.15437733650234, "o", "n"] +[54.184377336502344, "o", "a"] +[54.214377336502345, "o", "n"] +[54.244377336502346, "o", "c"] +[54.27437733650235, "o", "e"] +[54.30437733650235, "o", " "] +[54.33437733650235, "o", "-"] +[54.36437733650235, "o", "-"] +[54.39437733650235, "o", "f"] +[54.42437733650235, "o", "u"] +[54.454377336502354, "o", "l"] +[54.484377336502355, "o", "l"] +[54.514377336502356, "o", " "] +[54.54437733650236, "o", "d"] +[54.57437733650236, "o", "e"] +[54.60437733650236, "o", "m"] +[54.63437733650236, "o", "o"] +[54.66437733650236, "o", "/"] +[54.69437733650236, "o", "s"] +[54.724377336502364, "o", "u"] +[54.754377336502365, "o", "m"] +[54.78437733650237, "o", "m"] +[54.81437733650237, "o", "a"] +[54.84437733650237, "o", "r"] +[54.87437733650237, "o", "y"] +[54.90437733650237, "o", "\r\n"] +[54.93437733650237, "o", "\u001b[0m"] +[54.96437733650237, "o", "\r\n"] +[55.202164344787896, "o", "demo/summary:596f4ddce9621b047e78f13c57c88cc6a53a9dcead29d1626da5bba29e456966 depends on:\r\n"] +[55.20238130569488, "o", "demo/weather:087ba49c8e2838d7bdd01d5438063ad25ca874295540ab05a743f105a0e24079\r\n"] +[55.40788071632415, "o", "# Splitfile commands used to recreate demo/summary:596f4ddce9621b047e78f13c57c88cc6a53a9dcead29d1626da5bba29e456966\r\nFROM demo/weather:087ba49c8e2838d7bdd01d5438063ad25ca874295540ab05a743f105a0e24079 IMPORT rdu AS source_data\r\nSQL {CREATE TABLE monthly_summary\r\n AS SELECT to_char(date, 'YYYYMM') AS month\r\n , avg(precipitation) AS average_precipitation\r\n , avg(snowfall) AS average_snowfall\r\n FROM source_data\r\n GROUP BY month\r\n ORDER BY month ASC}\r\n"] +[55.43788071632415, "o", "\u001b[1m"] +[55.46788071632415, "o", "\u001b[36m"] +[55.497880716324154, "o", "\u001b[91m"] +[55.527880716324155, "o", "$"] +[55.557880716324156, "o", " "] +[55.58788071632416, "o", "\u001b[0m"] +[60.61788071632416, "o", "\u001b[H"] +[60.64788071632416, "o", "\u001b[J"] +[60.67788071632416, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We can also see that a new image has been derived from demo/weather"] +[60.70788071632416, "o", "\r\n"] +[60.73788071632416, "o", "$"] +[60.767880716324164, "o", " "] +[60.797880716324165, "o", "s"] +[60.82788071632417, "o", "g"] +[60.85788071632417, "o", "r"] +[60.88788071632417, "o", " "] +[60.91788071632417, "o", "d"] +[60.94788071632417, "o", "e"] +[60.97788071632417, "o", "p"] +[61.00788071632417, "o", "e"] +[61.037880716324175, "o", "n"] +[61.067880716324176, "o", "d"] +[61.09788071632418, "o", "e"] +[61.12788071632418, "o", "n"] +[61.15788071632418, "o", "t"] +[61.18788071632418, "o", "s"] +[61.21788071632418, "o", " "] +[61.24788071632418, "o", "d"] +[61.277880716324184, "o", "e"] +[61.307880716324185, "o", "m"] +[61.337880716324186, "o", "o"] +[61.36788071632419, "o", "/"] +[61.39788071632419, "o", "w"] +[61.42788071632419, "o", "e"] +[61.45788071632419, "o", "a"] +[61.48788071632419, "o", "t"] +[61.51788071632419, "o", "h"] +[61.547880716324194, "o", "e"] +[61.577880716324195, "o", "r"] +[61.607880716324196, "o", "\r\n"] +[61.6378807163242, "o", "\u001b[0m"] +[61.6678807163242, "o", "\r\n"] +[61.86185187339817, "o", "demo/weather:087ba49c8e2838d7bdd01d5438063ad25ca874295540ab05a743f105a0e24079 is depended on by:\r\n"] +[61.86186594009434, "o", "demo/summary:596f4ddce9621b047e78f13c57c88cc6a53a9dcead29d1626da5bba29e456966\r\n"] +[61.89186594009434, "o", "\u001b[1m"] +[61.92186594009434, "o", "\u001b[36m"] +[61.95186594009434, "o", "\u001b[91m"] +[61.981865940094345, "o", "$"] +[62.011865940094346, "o", " "] +[62.04186594009435, "o", "\u001b[0m"] +[67.07186594009434, "o", "\u001b[H"] +[67.10186594009434, "o", "\u001b[J"] +[67.13186594009434, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now pretend there's been a revision to the source historical weather data"] +[67.16186594009434, "o", "\r\n"] +[67.19186594009435, "o", "$"] +[67.22186594009435, "o", " "] +[67.25186594009435, "o", "s"] +[67.28186594009435, "o", "g"] +[67.31186594009435, "o", "r"] +[67.34186594009435, "o", " "] +[67.37186594009435, "o", "s"] +[67.40186594009435, "o", "q"] +[67.43186594009435, "o", "l"] +[67.46186594009436, "o", " "] +[67.49186594009436, "o", "-"] +[67.52186594009436, "o", "s"] +[67.55186594009436, "o", " "] +[67.58186594009436, "o", "d"] +[67.61186594009436, "o", "e"] +[67.64186594009436, "o", "m"] +[67.67186594009436, "o", "o"] +[67.70186594009436, "o", "/"] +[67.73186594009437, "o", "w"] +[67.76186594009437, "o", "e"] +[67.79186594009437, "o", "a"] +[67.82186594009437, "o", "t"] +[67.85186594009437, "o", "h"] +[67.88186594009437, "o", "e"] +[67.91186594009437, "o", "r"] +[67.94186594009437, "o", " "] +[67.97186594009437, "o", "\""] +[68.00186594009438, "o", "U"] +[68.03186594009438, "o", "P"] +[68.06186594009438, "o", "D"] +[68.09186594009438, "o", "A"] +[68.12186594009438, "o", "T"] +[68.15186594009438, "o", "E"] +[68.18186594009438, "o", " "] +[68.21186594009438, "o", "r"] +[68.24186594009439, "o", "d"] +[68.27186594009439, "o", "u"] +[68.30186594009439, "o", " "] +[68.33186594009439, "o", "S"] +[68.36186594009439, "o", "E"] +[68.39186594009439, "o", "T"] +[68.42186594009439, "o", " "] +[68.4518659400944, "o", "p"] +[68.4818659400944, "o", "r"] +[68.5118659400944, "o", "e"] +[68.5418659400944, "o", "c"] +[68.5718659400944, "o", "i"] +[68.6018659400944, "o", "p"] +[68.6318659400944, "o", "i"] +[68.6618659400944, "o", "t"] +[68.6918659400944, "o", "a"] +[68.7218659400944, "o", "t"] +[68.7518659400944, "o", "i"] +[68.7818659400944, "o", "o"] +[68.8118659400944, "o", "n"] +[68.84186594009441, "o", " "] +[68.87186594009441, "o", "="] +[68.90186594009441, "o", " "] +[68.93186594009441, "o", "p"] +[68.96186594009441, "o", "r"] +[68.99186594009441, "o", "e"] +[69.02186594009441, "o", "c"] +[69.05186594009442, "o", "i"] +[69.08186594009442, "o", "p"] +[69.11186594009442, "o", "i"] +[69.14186594009442, "o", "t"] +[69.17186594009442, "o", "a"] +[69.20186594009442, "o", "t"] +[69.23186594009442, "o", "i"] +[69.26186594009442, "o", "o"] +[69.29186594009443, "o", "n"] +[69.32186594009443, "o", " "] +[69.35186594009443, "o", "*"] +[69.38186594009443, "o", " "] +[69.41186594009443, "o", "1"] +[69.44186594009443, "o", "."] +[69.47186594009443, "o", "2"] +[69.50186594009443, "o", " "] +[69.53186594009443, "o", "W"] +[69.56186594009444, "o", "H"] +[69.59186594009444, "o", "E"] +[69.62186594009444, "o", "R"] +[69.65186594009444, "o", "E"] +[69.68186594009444, "o", " "] +[69.71186594009444, "o", "E"] +[69.74186594009444, "o", "X"] +[69.77186594009444, "o", "T"] +[69.80186594009444, "o", "R"] +[69.83186594009445, "o", "A"] +[69.86186594009445, "o", "C"] +[69.89186594009445, "o", "T"] +[69.92186594009445, "o", " "] +[69.95186594009445, "o", "("] +[69.98186594009445, "o", "y"] +[70.01186594009445, "o", "e"] +[70.04186594009445, "o", "a"] +[70.07186594009445, "o", "r"] +[70.10186594009446, "o", " "] +[70.13186594009446, "o", "F"] +[70.16186594009446, "o", "R"] +[70.19186594009446, "o", "O"] +[70.22186594009446, "o", "M"] +[70.25186594009446, "o", " "] +[70.28186594009446, "o", "d"] +[70.31186594009446, "o", "a"] +[70.34186594009446, "o", "t"] +[70.37186594009447, "o", "e"] +[70.40186594009447, "o", ")"] +[70.43186594009447, "o", " "] +[70.46186594009447, "o", "="] +[70.49186594009447, "o", " "] +[70.52186594009447, "o", "2"] +[70.55186594009447, "o", "0"] +[70.58186594009447, "o", "1"] +[70.61186594009448, "o", "2"] +[70.64186594009448, "o", "\""] +[70.67186594009448, "o", "\r\n"] +[70.70186594009448, "o", "$"] +[70.73186594009448, "o", " "] +[70.76186594009448, "o", "s"] +[70.79186594009448, "o", "g"] +[70.82186594009448, "o", "r"] +[70.85186594009448, "o", " "] +[70.88186594009449, "o", "c"] +[70.91186594009449, "o", "o"] +[70.94186594009449, "o", "m"] +[70.97186594009449, "o", "m"] +[71.00186594009449, "o", "i"] +[71.03186594009449, "o", "t"] +[71.06186594009449, "o", " "] +[71.0918659400945, "o", "-"] +[71.1218659400945, "o", "m"] +[71.1518659400945, "o", " "] +[71.1818659400945, "o", "\""] +[71.2118659400945, "o", "R"] +[71.2418659400945, "o", "e"] +[71.2718659400945, "o", "v"] +[71.3018659400945, "o", "i"] +[71.3318659400945, "o", "s"] +[71.3618659400945, "o", "i"] +[71.3918659400945, "o", "o"] +[71.4218659400945, "o", "n"] +[71.4518659400945, "o", " "] +[71.48186594009451, "o", "t"] +[71.51186594009451, "o", "o"] +[71.54186594009451, "o", " "] +[71.57186594009451, "o", "t"] +[71.60186594009451, "o", "h"] +[71.63186594009451, "o", "e"] +[71.66186594009451, "o", " "] +[71.69186594009452, "o", "2"] +[71.72186594009452, "o", "0"] +[71.75186594009452, "o", "1"] +[71.78186594009452, "o", "2"] +[71.81186594009452, "o", " "] +[71.84186594009452, "o", "r"] +[71.87186594009452, "o", "a"] +[71.90186594009452, "o", "i"] +[71.93186594009453, "o", "n"] +[71.96186594009453, "o", "f"] +[71.99186594009453, "o", "a"] +[72.02186594009453, "o", "l"] +[72.05186594009453, "o", "l"] +[72.08186594009453, "o", " "] +[72.11186594009453, "o", "d"] +[72.14186594009453, "o", "a"] +[72.17186594009453, "o", "t"] +[72.20186594009454, "o", "a"] +[72.23186594009454, "o", "\""] +[72.26186594009454, "o", " "] +[72.29186594009454, "o", "d"] +[72.32186594009454, "o", "e"] +[72.35186594009454, "o", "m"] +[72.38186594009454, "o", "o"] +[72.41186594009454, "o", "/"] +[72.44186594009454, "o", "w"] +[72.47186594009455, "o", "e"] +[72.50186594009455, "o", "a"] +[72.53186594009455, "o", "t"] +[72.56186594009455, "o", "h"] +[72.59186594009455, "o", "e"] +[72.62186594009455, "o", "r"] +[72.65186594009455, "o", "\r\n"] +[72.68186594009455, "o", "$"] +[72.71186594009455, "o", " "] +[72.74186594009456, "o", "s"] +[72.77186594009456, "o", "g"] +[72.80186594009456, "o", "r"] +[72.83186594009456, "o", " "] +[72.86186594009456, "o", "t"] +[72.89186594009456, "o", "a"] +[72.92186594009456, "o", "g"] +[72.95186594009456, "o", " "] +[72.98186594009456, "o", "d"] +[73.01186594009457, "o", "e"] +[73.04186594009457, "o", "m"] +[73.07186594009457, "o", "o"] +[73.10186594009457, "o", "/"] +[73.13186594009457, "o", "w"] +[73.16186594009457, "o", "e"] +[73.19186594009457, "o", "a"] +[73.22186594009457, "o", "t"] +[73.25186594009458, "o", "h"] +[73.28186594009458, "o", "e"] +[73.31186594009458, "o", "r"] +[73.34186594009458, "o", " "] +[73.37186594009458, "o", "r"] +[73.40186594009458, "o", "e"] +[73.43186594009458, "o", "v"] +[73.46186594009458, "o", "i"] +[73.49186594009458, "o", "s"] +[73.52186594009459, "o", "e"] +[73.55186594009459, "o", "d"] +[73.58186594009459, "o", "_"] +[73.61186594009459, "o", "d"] +[73.64186594009459, "o", "a"] +[73.67186594009459, "o", "t"] +[73.70186594009459, "o", "a"] +[73.7318659400946, "o", "\r\n"] +[73.7618659400946, "o", "\u001b[0m"] +[73.7918659400946, "o", "\r\n"] +[74.00116145134032, "o", "Committing demo/weather...\r\n"] +[74.03339993476928, "o", "Storing and indexing table rdu\r\n"] +[74.19655143737853, "o", "Committed demo/weather as cea471337393.\r\n"] +[74.40496813774169, "o", "Tagged demo/weather:cea471337393f3de629e17c554477b5f95c9487cc972054be51558608c6f20e0 with revised_data.\r\n"] +[74.43496813774169, "o", "\u001b[1m"] +[74.46496813774169, "o", "\u001b[36m"] +[74.4949681377417, "o", "\u001b[91m"] +[74.5249681377417, "o", "$"] +[74.5549681377417, "o", " "] +[74.5849681377417, "o", "\u001b[0m"] +[79.6149681377417, "o", "\u001b[H"] +[79.6449681377417, "o", "\u001b[J"] +[79.6749681377417, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Use the derivative image's provenance to rebuild it against the revised version"] +[79.7049681377417, "o", "\r\n"] +[79.7349681377417, "o", "$"] +[79.7649681377417, "o", " "] +[79.7949681377417, "o", "s"] +[79.8249681377417, "o", "g"] +[79.85496813774171, "o", "r"] +[79.88496813774171, "o", " "] +[79.91496813774171, "o", "r"] +[79.94496813774171, "o", "e"] +[79.97496813774171, "o", "b"] +[80.00496813774171, "o", "u"] +[80.03496813774171, "o", "i"] +[80.06496813774172, "o", "l"] +[80.09496813774172, "o", "d"] +[80.12496813774172, "o", " "] +[80.15496813774172, "o", "d"] +[80.18496813774172, "o", "e"] +[80.21496813774172, "o", "m"] +[80.24496813774172, "o", "o"] +[80.27496813774172, "o", "/"] +[80.30496813774172, "o", "s"] +[80.33496813774173, "o", "u"] +[80.36496813774173, "o", "m"] +[80.39496813774173, "o", "m"] +[80.42496813774173, "o", "a"] +[80.45496813774173, "o", "r"] +[80.48496813774173, "o", "y"] +[80.51496813774173, "o", " "] +[80.54496813774173, "o", "-"] +[80.57496813774173, "o", "-"] +[80.60496813774174, "o", "a"] +[80.63496813774174, "o", "g"] +[80.66496813774174, "o", "a"] +[80.69496813774174, "o", "i"] +[80.72496813774174, "o", "n"] +[80.75496813774174, "o", "s"] +[80.78496813774174, "o", "t"] +[80.81496813774174, "o", " "] +[80.84496813774174, "o", "d"] +[80.87496813774175, "o", "e"] +[80.90496813774175, "o", "m"] +[80.93496813774175, "o", "o"] +[80.96496813774175, "o", "/"] +[80.99496813774175, "o", "w"] +[81.02496813774175, "o", "e"] +[81.05496813774175, "o", "a"] +[81.08496813774175, "o", "t"] +[81.11496813774176, "o", "h"] +[81.14496813774176, "o", "e"] +[81.17496813774176, "o", "r"] +[81.20496813774176, "o", ":"] +[81.23496813774176, "o", "r"] +[81.26496813774176, "o", "e"] +[81.29496813774176, "o", "v"] +[81.32496813774176, "o", "i"] +[81.35496813774176, "o", "s"] +[81.38496813774177, "o", "e"] +[81.41496813774177, "o", "d"] +[81.44496813774177, "o", "_"] +[81.47496813774177, "o", "d"] +[81.50496813774177, "o", "a"] +[81.53496813774177, "o", "t"] +[81.56496813774177, "o", "a"] +[81.59496813774177, "o", "\r\n"] +[81.62496813774177, "o", "$"] +[81.65496813774178, "o", " "] +[81.68496813774178, "o", "s"] +[81.71496813774178, "o", "g"] +[81.74496813774178, "o", "r"] +[81.77496813774178, "o", " "] +[81.80496813774178, "o", "t"] +[81.83496813774178, "o", "a"] +[81.86496813774178, "o", "g"] +[81.89496813774178, "o", " "] +[81.92496813774179, "o", "d"] +[81.95496813774179, "o", "e"] +[81.98496813774179, "o", "m"] +[82.01496813774179, "o", "o"] +[82.04496813774179, "o", "/"] +[82.07496813774179, "o", "s"] +[82.10496813774179, "o", "u"] +[82.1349681377418, "o", "m"] +[82.1649681377418, "o", "m"] +[82.1949681377418, "o", "a"] +[82.2249681377418, "o", "r"] +[82.2549681377418, "o", "y"] +[82.2849681377418, "o", " "] +[82.3149681377418, "o", "b"] +[82.3449681377418, "o", "a"] +[82.3749681377418, "o", "s"] +[82.4049681377418, "o", "e"] +[82.4349681377418, "o", "d"] +[82.4649681377418, "o", "_"] +[82.49496813774181, "o", "o"] +[82.52496813774181, "o", "n"] +[82.55496813774181, "o", "_"] +[82.58496813774181, "o", "r"] +[82.61496813774181, "o", "e"] +[82.64496813774181, "o", "v"] +[82.67496813774181, "o", "i"] +[82.70496813774182, "o", "s"] +[82.73496813774182, "o", "e"] +[82.76496813774182, "o", "d"] +[82.79496813774182, "o", "\r\n"] +[82.82496813774182, "o", "\u001b[0m"] +[82.85496813774182, "o", "\r\n"] +[83.06287819862439, "o", "Rerunning demo/summary:596f4ddce9621b047e78f13c57c88cc6a53a9dcead29d1626da5bba29e456966 against:\r\n"] +[83.06288916587903, "o", "demo/weather:revised_data\r\n"] +[83.14028698921277, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather:revised_data IMPORT rdu AS source_data\u001b[0m\r\n"] +[83.1409266662605, "o", "Resolving repository demo/weather\r\n"] +[83.14443690300061, "o", "Importing 1 table from demo/weather:cea471337393 into demo/summary\r\n"] +[83.28384048461987, "o", " ---> 943062fc5a8c\r\n"] +[83.28402716636731, "o", "\u001b[1m\r\nStep 2/2 : SQL {CREATE TABLE monthly_summary AS SELECT to_char(dat...\u001b[0m\r\n"] +[83.28846389770581, "o", "Executing SQL...\r\n"] +[83.48485166549756, "o", "Committing demo/summary...\r\n"] +[83.50899750709607, "o", "Processing table monthly_summary\r\n"] +[83.60711175918652, "o", " ---> f8b5e0cdb98f\r\n"] +[83.61144358635022, "o", "Successfully built demo/summary:f8b5e0cdb98f.\r\n"] +[83.82941777229382, "o", "Tagged demo/summary:f8b5e0cdb98f844409d6ee234972807a2a55af5842ca249e8af9f37bca1e7fd7 with based_on_revised.\r\n"] +[83.85941777229382, "o", "\u001b[1m"] +[83.88941777229383, "o", "\u001b[36m"] +[83.91941777229383, "o", "\u001b[91m"] +[83.94941777229383, "o", "$"] +[83.97941777229383, "o", " "] +[84.00941777229383, "o", "\u001b[0m"] +[89.1149681377417, "o", "\u001b[H"] +[89.1449681377417, "o", "\u001b[J"] +[89.1749681377417, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Compare the two resultant datasets"] +[89.2049681377417, "o", "\r\n"] +[89.2349681377417, "o", "$"] +[89.2649681377417, "o", " "] +[89.2949681377417, "o", "s"] +[89.3249681377417, "o", "g"] +[89.35496813774171, "o", "r"] +[89.38496813774171, "o", " "] +[89.41496813774171, "o", "d"] +[89.44496813774171, "o", "i"] +[89.47496813774171, "o", "f"] +[89.50496813774171, "o", "f"] +[89.53496813774171, "o", " "] +[89.56496813774172, "o", "d"] +[89.59496813774172, "o", "e"] +[89.62496813774172, "o", "m"] +[89.65496813774172, "o", "o"] +[89.68496813774172, "o", "/"] +[89.71496813774172, "o", "s"] +[89.74496813774172, "o", "u"] +[89.77496813774172, "o", "m"] +[89.80496813774172, "o", "m"] +[89.83496813774173, "o", "a"] +[89.86496813774173, "o", "r"] +[89.89496813774173, "o", "y"] +[89.92496813774173, "o", " "] +[89.95496813774173, "o", "b"] +[89.98496813774173, "o", "a"] +[90.01496813774173, "o", "s"] +[90.04496813774173, "o", "e"] +[90.07496813774173, "o", "d"] +[90.10496813774174, "o", "_"] +[90.13496813774174, "o", "o"] +[90.16496813774174, "o", "n"] +[90.19496813774174, "o", "_"] +[90.22496813774174, "o", "i"] +[90.25496813774174, "o", "n"] +[90.28496813774174, "o", "i"] +[90.31496813774174, "o", "t"] +[90.34496813774174, "o", "i"] +[90.37496813774175, "o", "a"] +[90.40496813774175, "o", "l"] +[90.43496813774175, "o", " "] +[90.46496813774175, "o", "b"] +[90.49496813774175, "o", "a"] +[90.52496813774175, "o", "s"] +[90.55496813774175, "o", "e"] +[90.58496813774175, "o", "d"] +[90.61496813774176, "o", "_"] +[90.64496813774176, "o", "o"] +[90.67496813774176, "o", "n"] +[90.70496813774176, "o", "_"] +[90.73496813774176, "o", "r"] +[90.76496813774176, "o", "e"] +[90.79496813774176, "o", "v"] +[90.82496813774176, "o", "i"] +[90.85496813774176, "o", "s"] +[90.88496813774177, "o", "e"] +[90.91496813774177, "o", "d"] +[90.94496813774177, "o", " "] +[90.97496813774177, "o", "-"] +[91.00496813774177, "o", "-"] +[91.03496813774177, "o", "v"] +[91.06496813774177, "o", "e"] +[91.09496813774177, "o", "r"] +[91.12496813774177, "o", "b"] +[91.15496813774178, "o", "o"] +[91.18496813774178, "o", "s"] +[91.21496813774178, "o", "e"] +[91.24496813774178, "o", " "] +[91.27496813774178, "o", "-"] +[91.30496813774178, "o", "-"] +[91.33496813774178, "o", "t"] +[91.36496813774178, "o", "a"] +[91.39496813774178, "o", "b"] +[91.42496813774179, "o", "l"] +[91.45496813774179, "o", "e"] +[91.48496813774179, "o", "-"] +[91.51496813774179, "o", "n"] +[91.54496813774179, "o", "a"] +[91.57496813774179, "o", "m"] +[91.60496813774179, "o", "e"] +[91.6349681377418, "o", " "] +[91.6649681377418, "o", "m"] +[91.6949681377418, "o", "o"] +[91.7249681377418, "o", "n"] +[91.7549681377418, "o", "t"] +[91.7849681377418, "o", "h"] +[91.8149681377418, "o", "l"] +[91.8449681377418, "o", "y"] +[91.8749681377418, "o", "_"] +[91.9049681377418, "o", "s"] +[91.9349681377418, "o", "u"] +[91.9649681377418, "o", "m"] +[91.99496813774181, "o", "m"] +[92.02496813774181, "o", "a"] +[92.05496813774181, "o", "r"] +[92.08496813774181, "o", "y"] +[92.11496813774181, "o", "\r\n"] +[92.14496813774181, "o", "\u001b[0m"] +[92.17496813774181, "o", "\r\n"] +[92.53689111709667, "o", "Between 596f4ddce962 and f8b5e0cdb98f: \r\n"] +[92.53726758003307, "o", "monthly_summary: added 12 rows, removed 12 rows.\r\n- ('201201', Decimal('0.06322580645161290323'), Decimal('0E-20'))\r\n- ('201202', Decimal('0.06689655172413793103'), Decimal('0.03137931034482758621'))\r\n- ('201203', Decimal('0.17290322580645161290'), Decimal('0E-20'))\r\n- ('201204', Decimal('0.08766666666666666667'), Decimal('0E-20'))\r\n- ('201205', Decimal('0.12806451612903225806'), Decimal('0E-20'))\r\n- ('201206', Decimal('0.10333333333333333333'), Decimal('0E-20'))\r\n- ('201207', Decimal('0.1496774193548387096"] +[92.5372764015205, "o", "8'), Decimal('0E-20'))\r\n- ('201208', Decimal('0.13000000000000000000'), Decimal('0E-20'))\r\n- ('201209', Decimal('0.26100000000000000000'), Decimal('0E-20'))\r\n- ('201210', Decimal('0.05903225806451612903'), Decimal('0E-20'))\r\n- ('201211', Decimal('0.01866666666666666667'), Decimal('0E-20'))\r\n- ('201212', Decimal('0.09483870967741935484'), Decimal('0E-20'))\r\n+ ('201201', Decimal('0.07587096774193548387'), Decimal('0E-20'))\r\n+ ('201202', Decimal('0.08027586206896551724'), Decimal('0.03137931034482758621'))\r\n+ "] +[92.53728021621777, "o", "('201203', Decimal('0.20748387096774193548'), Decimal('0E-20'))\r\n+ ('201204', Decimal('0.10520000000000000000'), Decimal('0E-20'))\r\n+ ('201205', Decimal('0.15367741935483870968'), Decimal('0E-20'))\r\n+ ('201206', Decimal('0.12400000000000000000'), Decimal('0E-20'))\r\n+ ('201207', Decimal('0.17961290322580645161'), Decimal('0E-20'))\r\n+ ('201208', Decimal('0.15600000000000000000'), Decimal('0E-20'))\r\n+ ('201209', Decimal('0.31320000000000000000'), Decimal('0E-20'))\r\n+ ('201210', Decimal('0.07083870967741935484'"] +[92.53728498458935, "o", "), Decimal('0E-20'))\r\n+ ('201211', Decimal('0.02240000000000000000'), Decimal('0E-20'))\r\n+ ('201212', Decimal('0.11380645161290322581'), Decimal('0E-20'))\r\n"] +[92.56728498458935, "o", "\u001b[1m"] +[92.59728498458935, "o", "\u001b[36m"] +[92.62728498458935, "o", "\u001b[91m"] +[92.65728498458935, "o", "$"] +[92.68728498458935, "o", " "] +[92.71728498458936, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.11/splitgraph-cloud.cast b/content/casts/versioned/archive/v0.2.11/splitgraph-cloud.cast new file mode 100644 index 00000000..9ec5a857 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.11/splitgraph-cloud.cast @@ -0,0 +1,1338 @@ +{"version": 2, "width": 100, "height": 22, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1617022028, "metadata": {"tss": [{"h": "Make sure you are registered and logged into Splitgraph Cloud.", "ts": 0.06}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport", "ts": 8.706868743896479}, {"h": "Push the dataset to Splitgraph", "ts": 20.810276594161852}, {"h": "Upload some dataset metadata as well.", "ts": 28.833130855560203}, {"h": "Perform a request against an automatically-generated", "ts": 39.3331308555602}, {"h": "sgr also has a shorthand to access the query API", "ts": 49.00612430572514}, {"h": "You can also run a query against the Splitgraph Data Delivery Network.", "ts": 57.689791011810456}, {"h": "The query API also supports running one-off Splitfile commands against a repository,", "ts": 68.87979101181065}, {"h": "Run another command against the new layer to join the two datasets", "ts": 78.39134907722521}, {"h": "Pull the dataset and check out the new image", "ts": 87.90412793159547}, {"h": "Inspect the generated data", "ts": 100.52322395324776}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make sure you are registered and logged into Splitgraph Cloud."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Test the connection.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "s"] +[0.27, "o", "g"] +[0.30000000000000004, "o", "r"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "q"] +[0.42000000000000015, "o", "l"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "-"] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", " "] +[0.5700000000000003, "o", "d"] +[0.6000000000000003, "o", "a"] +[0.6300000000000003, "o", "t"] +[0.6600000000000004, "o", "a"] +[0.6900000000000004, "o", "."] +[0.7200000000000004, "o", "s"] +[0.7500000000000004, "o", "p"] +[0.7800000000000005, "o", "l"] +[0.8100000000000005, "o", "i"] +[0.8400000000000005, "o", "t"] +[0.8700000000000006, "o", "g"] +[0.9000000000000006, "o", "r"] +[0.9300000000000006, "o", "a"] +[0.9600000000000006, "o", "p"] +[0.9900000000000007, "o", "h"] +[1.0200000000000007, "o", "."] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "o"] +[1.1100000000000008, "o", "m"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "\""] +[1.2000000000000008, "o", "S"] +[1.2300000000000009, "o", "E"] +[1.260000000000001, "o", "L"] +[1.290000000000001, "o", "E"] +[1.320000000000001, "o", "C"] +[1.350000000000001, "o", "T"] +[1.380000000000001, "o", " "] +[1.410000000000001, "o", "s"] +[1.440000000000001, "o", "p"] +[1.470000000000001, "o", "l"] +[1.500000000000001, "o", "i"] +[1.5300000000000011, "o", "t"] +[1.5600000000000012, "o", "g"] +[1.5900000000000012, "o", "r"] +[1.6200000000000012, "o", "a"] +[1.6500000000000012, "o", "p"] +[1.6800000000000013, "o", "h"] +[1.7100000000000013, "o", "_"] +[1.7400000000000013, "o", "a"] +[1.7700000000000014, "o", "p"] +[1.8000000000000014, "o", "i"] +[1.8300000000000014, "o", "."] +[1.8600000000000014, "o", "g"] +[1.8900000000000015, "o", "e"] +[1.9200000000000015, "o", "t"] +[1.9500000000000015, "o", "_"] +[1.9800000000000015, "o", "c"] +[2.0100000000000016, "o", "u"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "r"] +[2.100000000000001, "o", "e"] +[2.130000000000001, "o", "n"] +[2.1600000000000006, "o", "t"] +[2.1900000000000004, "o", "_"] +[2.22, "o", "u"] +[2.25, "o", "s"] +[2.28, "o", "e"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "n"] +[2.369999999999999, "o", "a"] +[2.399999999999999, "o", "m"] +[2.429999999999999, "o", "e"] +[2.4599999999999986, "o", "("] +[2.4899999999999984, "o", ")"] +[2.5199999999999982, "o", "\""] +[2.549999999999998, "o", "\r\n"] +[2.579999999999998, "o", "\u001b[0m"] +[2.6099999999999977, "o", "\r\n"] +[3.466868743896482, "o", "splitgraph-demo\r\n"] +[3.496868743896482, "o", "\u001b[1m"] +[3.5268687438964816, "o", "\u001b[36m"] +[3.5568687438964814, "o", "\u001b[91m"] +[3.5868687438964812, "o", "$"] +[3.616868743896481, "o", " "] +[3.646868743896481, "o", "\u001b[0m"] +[8.67686874389648, "o", "\u001b[H"] +[8.706868743896479, "o", "\u001b[J"] +[8.736868743896478, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport"] +[8.766868743896477, "o", "\r\n"] +[8.796868743896477, "o", "$"] +[8.826868743896476, "o", " "] +[8.856868743896475, "o", "s"] +[8.886868743896475, "o", "g"] +[8.916868743896474, "o", "r"] +[8.946868743896474, "o", " "] +[8.976868743896473, "o", "i"] +[9.006868743896472, "o", "n"] +[9.036868743896472, "o", "i"] +[9.066868743896471, "o", "t"] +[9.09686874389647, "o", " "] +[9.12686874389647, "o", "w"] +[9.156868743896469, "o", "e"] +[9.186868743896468, "o", "a"] +[9.216868743896468, "o", "t"] +[9.246868743896467, "o", "h"] +[9.276868743896467, "o", "e"] +[9.306868743896466, "o", "r"] +[9.336868743896465, "o", "\r\n"] +[9.366868743896465, "o", "$"] +[9.396868743896464, "o", " "] +[9.426868743896463, "o", "s"] +[9.456868743896463, "o", "g"] +[9.486868743896462, "o", "r"] +[9.516868743896461, "o", " "] +[9.54686874389646, "o", "c"] +[9.57686874389646, "o", "s"] +[9.60686874389646, "o", "v"] +[9.636868743896459, "o", " "] +[9.666868743896458, "o", "i"] +[9.696868743896458, "o", "m"] +[9.726868743896457, "o", "p"] +[9.756868743896456, "o", "o"] +[9.786868743896456, "o", "r"] +[9.816868743896455, "o", "t"] +[9.846868743896454, "o", " "] +[9.876868743896454, "o", "-"] +[9.906868743896453, "o", "f"] +[9.936868743896452, "o", " "] +[9.966868743896452, "o", "."] +[9.996868743896451, "o", "."] +[10.02686874389645, "o", "/"] +[10.05686874389645, "o", "i"] +[10.08686874389645, "o", "m"] +[10.116868743896449, "o", "p"] +[10.146868743896448, "o", "o"] +[10.176868743896447, "o", "r"] +[10.206868743896447, "o", "t"] +[10.236868743896446, "o", "-"] +[10.266868743896445, "o", "f"] +[10.296868743896445, "o", "r"] +[10.326868743896444, "o", "o"] +[10.356868743896444, "o", "m"] +[10.386868743896443, "o", "-"] +[10.416868743896442, "o", "c"] +[10.446868743896442, "o", "s"] +[10.476868743896441, "o", "v"] +[10.50686874389644, "o", "/"] +[10.53686874389644, "o", "r"] +[10.566868743896439, "o", "d"] +[10.596868743896438, "o", "u"] +[10.626868743896438, "o", "-"] +[10.656868743896437, "o", "w"] +[10.686868743896436, "o", "e"] +[10.716868743896436, "o", "a"] +[10.746868743896435, "o", "t"] +[10.776868743896435, "o", "h"] +[10.806868743896434, "o", "e"] +[10.836868743896433, "o", "r"] +[10.866868743896433, "o", "-"] +[10.896868743896432, "o", "h"] +[10.926868743896431, "o", "i"] +[10.95686874389643, "o", "s"] +[10.98686874389643, "o", "t"] +[11.01686874389643, "o", "o"] +[11.046868743896429, "o", "r"] +[11.076868743896428, "o", "y"] +[11.106868743896428, "o", "."] +[11.136868743896427, "o", "c"] +[11.166868743896426, "o", "s"] +[11.196868743896426, "o", "v"] +[11.226868743896425, "o", " "] +[11.256868743896424, "o", "\\"] +[11.286868743896424, "o", "\r\n "] +[11.316868743896423, "o", "-"] +[11.346868743896422, "o", "k"] +[11.376868743896422, "o", " "] +[11.406868743896421, "o", "d"] +[11.43686874389642, "o", "a"] +[11.46686874389642, "o", "t"] +[11.49686874389642, "o", "e"] +[11.526868743896419, "o", " "] +[11.556868743896418, "o", "\\"] +[11.586868743896417, "o", "\r\n "] +[11.616868743896417, "o", "-"] +[11.646868743896416, "o", "t"] +[11.676868743896415, "o", " "] +[11.706868743896415, "o", "d"] +[11.736868743896414, "o", "a"] +[11.766868743896413, "o", "t"] +[11.796868743896413, "o", "e"] +[11.826868743896412, "o", " "] +[11.856868743896412, "o", "t"] +[11.886868743896411, "o", "i"] +[11.91686874389641, "o", "m"] +[11.94686874389641, "o", "e"] +[11.976868743896409, "o", "s"] +[12.006868743896408, "o", "t"] +[12.036868743896408, "o", "a"] +[12.066868743896407, "o", "m"] +[12.096868743896406, "o", "p"] +[12.126868743896406, "o", " "] +[12.156868743896405, "o", "\\"] +[12.186868743896405, "o", "\r\n "] +[12.216868743896404, "o", "-"] +[12.246868743896403, "o", "-"] +[12.276868743896403, "o", "s"] +[12.306868743896402, "o", "e"] +[12.336868743896401, "o", "p"] +[12.3668687438964, "o", "a"] +[12.3968687438964, "o", "r"] +[12.4268687438964, "o", "a"] +[12.456868743896399, "o", "t"] +[12.486868743896398, "o", "o"] +[12.516868743896397, "o", "r"] +[12.546868743896397, "o", " "] +[12.576868743896396, "o", "\""] +[12.606868743896396, "o", ";"] +[12.636868743896395, "o", "\""] +[12.666868743896394, "o", " "] +[12.696868743896394, "o", "\\"] +[12.726868743896393, "o", "\r\n "] +[12.756868743896392, "o", "w"] +[12.786868743896392, "o", "e"] +[12.816868743896391, "o", "a"] +[12.84686874389639, "o", "t"] +[12.87686874389639, "o", "h"] +[12.90686874389639, "o", "e"] +[12.936868743896389, "o", "r"] +[12.966868743896388, "o", " "] +[12.996868743896387, "o", "r"] +[13.026868743896387, "o", "d"] +[13.056868743896386, "o", "u"] +[13.086868743896385, "o", "\r\n"] +[13.116868743896385, "o", "$"] +[13.146868743896384, "o", " "] +[13.176868743896383, "o", "s"] +[13.206868743896383, "o", "g"] +[13.236868743896382, "o", "r"] +[13.266868743896381, "o", " "] +[13.29686874389638, "o", "c"] +[13.32686874389638, "o", "o"] +[13.35686874389638, "o", "m"] +[13.386868743896379, "o", "m"] +[13.416868743896378, "o", "i"] +[13.446868743896378, "o", "t"] +[13.476868743896377, "o", " "] +[13.506868743896376, "o", "w"] +[13.536868743896376, "o", "e"] +[13.566868743896375, "o", "a"] +[13.596868743896374, "o", "t"] +[13.626868743896374, "o", "h"] +[13.656868743896373, "o", "e"] +[13.686868743896373, "o", "r"] +[13.716868743896372, "o", "\r\n"] +[13.746868743896371, "o", "$"] +[13.77686874389637, "o", " "] +[13.80686874389637, "o", "s"] +[13.83686874389637, "o", "g"] +[13.866868743896369, "o", "r"] +[13.896868743896368, "o", " "] +[13.926868743896367, "o", "t"] +[13.956868743896367, "o", "a"] +[13.986868743896366, "o", "g"] +[14.016868743896366, "o", " "] +[14.046868743896365, "o", "w"] +[14.076868743896364, "o", "e"] +[14.106868743896364, "o", "a"] +[14.136868743896363, "o", "t"] +[14.166868743896362, "o", "h"] +[14.196868743896362, "o", "e"] +[14.226868743896361, "o", "r"] +[14.25686874389636, "o", " "] +[14.28686874389636, "o", "i"] +[14.316868743896359, "o", "n"] +[14.346868743896358, "o", "i"] +[14.376868743896358, "o", "t"] +[14.406868743896357, "o", "i"] +[14.436868743896357, "o", "a"] +[14.466868743896356, "o", "l"] +[14.496868743896355, "o", "_"] +[14.526868743896355, "o", "d"] +[14.556868743896354, "o", "a"] +[14.586868743896353, "o", "t"] +[14.616868743896353, "o", "a"] +[14.646868743896352, "o", "\r\n"] +[14.676868743896351, "o", "\u001b[0m"] +[14.70686874389635, "o", "\r\n"] +[14.926643943786488, "o", "Initialized empty repository weather\r\n"] +[15.120266294479237, "o", "Committing weather...\r\n"] +[15.14514908790575, "o", "Processing table rdu\r\n"] +[15.340140199661121, "o", "Committed weather as 56961b589322.\r\n"] +[15.570276594161854, "o", "Tagged weather:56961b589322422dec97a2da72f0302b902211f0be298714cb1524feee449b87 with initial_data.\r\n"] +[15.600276594161853, "o", "\u001b[1m"] +[15.630276594161852, "o", "\u001b[36m"] +[15.660276594161852, "o", "\u001b[91m"] +[15.690276594161851, "o", "$"] +[15.72027659416185, "o", " "] +[15.75027659416185, "o", "\u001b[0m"] +[20.78027659416185, "o", "\u001b[H"] +[20.810276594161852, "o", "\u001b[J"] +[20.840276594161853, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset to Splitgraph"] +[20.870276594161854, "o", "\r\n"] +[20.900276594161856, "o", "$"] +[20.930276594161857, "o", " "] +[20.960276594161858, "o", "s"] +[20.99027659416186, "o", "g"] +[21.02027659416186, "o", "r"] +[21.05027659416186, "o", " "] +[21.080276594161862, "o", "p"] +[21.110276594161864, "o", "u"] +[21.140276594161865, "o", "s"] +[21.170276594161866, "o", "h"] +[21.200276594161867, "o", " "] +[21.230276594161868, "o", "w"] +[21.26027659416187, "o", "e"] +[21.29027659416187, "o", "a"] +[21.32027659416187, "o", "t"] +[21.350276594161873, "o", "h"] +[21.380276594161874, "o", "e"] +[21.410276594161875, "o", "r"] +[21.440276594161876, "o", "\r\n"] +[21.470276594161877, "o", "\u001b[0m"] +[21.50027659416188, "o", "\r\n"] +[21.709991006851087, "o", "Pushing weather to splitgraph-demo/weather on remote data.splitgraph.com\r\n"] +[21.71065094947804, "o", "Gathering remote metadata...\r\n"] +[22.71065094947804, "o", "No objects to upload.\r\n"] +[23.58786728858937, "o", "Uploaded metadata for 2 images, 1 table, 0 objects and 1 tag.\r\n"] +[23.593130855560194, "o", "Setting upstream for weather to splitgraph-demo/weather.\r\n"] +[23.623130855560195, "o", "\u001b[1m"] +[23.653130855560196, "o", "\u001b[36m"] +[23.683130855560197, "o", "\u001b[91m"] +[23.7131308555602, "o", "$"] +[23.7431308555602, "o", " "] +[23.7731308555602, "o", "\u001b[0m"] +[28.8031308555602, "o", "\u001b[H"] +[28.833130855560203, "o", "\u001b[J"] +[28.863130855560204, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Upload some dataset metadata as well."] +[28.893130855560205, "o", "\r\n"] +[28.923130855560206, "o", "$"] +[28.953130855560207, "o", " "] +[28.98313085556021, "o", "c"] +[29.01313085556021, "o", "a"] +[29.04313085556021, "o", "t"] +[29.073130855560212, "o", " "] +[29.103130855560213, "o", "d"] +[29.133130855560214, "o", "a"] +[29.163130855560215, "o", "t"] +[29.193130855560216, "o", "a"] +[29.223130855560218, "o", "s"] +[29.25313085556022, "o", "e"] +[29.28313085556022, "o", "t"] +[29.31313085556022, "o", "-"] +[29.343130855560222, "o", "m"] +[29.373130855560223, "o", "e"] +[29.403130855560224, "o", "t"] +[29.433130855560226, "o", "a"] +[29.463130855560227, "o", "d"] +[29.493130855560228, "o", "a"] +[29.52313085556023, "o", "t"] +[29.55313085556023, "o", "a"] +[29.58313085556023, "o", "."] +[29.613130855560232, "o", "y"] +[29.643130855560234, "o", "m"] +[29.673130855560235, "o", "l"] +[29.703130855560236, "o", "\r\n"] +[29.733130855560237, "o", "$"] +[29.763130855560238, "o", " "] +[29.79313085556024, "o", "c"] +[29.82313085556024, "o", "a"] +[29.85313085556024, "o", "t"] +[29.883130855560243, "o", " "] +[29.913130855560244, "o", "d"] +[29.943130855560245, "o", "a"] +[29.973130855560246, "o", "t"] +[30.003130855560247, "o", "a"] +[30.03313085556025, "o", "s"] +[30.06313085556025, "o", "e"] +[30.09313085556025, "o", "t"] +[30.12313085556025, "o", "-"] +[30.153130855560253, "o", "r"] +[30.183130855560254, "o", "e"] +[30.213130855560255, "o", "a"] +[30.243130855560256, "o", "d"] +[30.273130855560257, "o", "m"] +[30.30313085556026, "o", "e"] +[30.33313085556026, "o", "."] +[30.36313085556026, "o", "m"] +[30.393130855560262, "o", "d"] +[30.423130855560263, "o", "\r\n"] +[30.453130855560264, "o", "$"] +[30.483130855560265, "o", " "] +[30.513130855560266, "o", "s"] +[30.543130855560268, "o", "g"] +[30.57313085556027, "o", "r"] +[30.60313085556027, "o", " "] +[30.63313085556027, "o", "c"] +[30.663130855560272, "o", "l"] +[30.693130855560273, "o", "o"] +[30.723130855560274, "o", "u"] +[30.753130855560276, "o", "d"] +[30.783130855560277, "o", " "] +[30.813130855560278, "o", "m"] +[30.84313085556028, "o", "e"] +[30.87313085556028, "o", "t"] +[30.90313085556028, "o", "a"] +[30.933130855560282, "o", "d"] +[30.963130855560284, "o", "a"] +[30.993130855560285, "o", "t"] +[31.023130855560286, "o", "a"] +[31.053130855560287, "o", " "] +[31.083130855560288, "o", "s"] +[31.11313085556029, "o", "p"] +[31.14313085556029, "o", "l"] +[31.17313085556029, "o", "i"] +[31.203130855560293, "o", "t"] +[31.233130855560294, "o", "g"] +[31.263130855560295, "o", "r"] +[31.293130855560296, "o", "a"] +[31.323130855560297, "o", "p"] +[31.3531308555603, "o", "h"] +[31.3831308555603, "o", "-"] +[31.4131308555603, "o", "d"] +[31.4431308555603, "o", "e"] +[31.473130855560303, "o", "m"] +[31.503130855560304, "o", "o"] +[31.533130855560305, "o", "/"] +[31.563130855560306, "o", "w"] +[31.593130855560307, "o", "e"] +[31.62313085556031, "o", "a"] +[31.65313085556031, "o", "t"] +[31.68313085556031, "o", "h"] +[31.713130855560312, "o", "e"] +[31.743130855560313, "o", "r"] +[31.773130855560314, "o", " "] +[31.803130855560315, "o", "d"] +[31.833130855560317, "o", "a"] +[31.863130855560318, "o", "t"] +[31.89313085556032, "o", "a"] +[31.92313085556032, "o", "s"] +[31.95313085556032, "o", "e"] +[31.983130855560322, "o", "t"] +[32.01313085556032, "o", "-"] +[32.04313085556032, "o", "m"] +[32.07313085556032, "o", "e"] +[32.10313085556032, "o", "t"] +[32.133130855560324, "o", "a"] +[32.163130855560325, "o", "d"] +[32.19313085556033, "o", "a"] +[32.22313085556033, "o", "t"] +[32.25313085556033, "o", "a"] +[32.28313085556033, "o", "."] +[32.31313085556033, "o", "y"] +[32.34313085556033, "o", "m"] +[32.37313085556033, "o", "l"] +[32.403130855560335, "o", "\r\n"] +[32.433130855560336, "o", "\u001b[0m"] +[32.46313085556034, "o", "\r\n"] +[32.46463217735294, "o", "# This is a sample dataset metadata file that's used\r\n# to update the dataset's README and description.\r\n\r\nreadme: dataset-readme.md\r\ndescription: Weather history in Raleigh-Durham International airport joined with US domestic flights data (uploaded from Splitgraph release CI)\r\n"] +[32.466066026687656, "o", "# Sample dataset README\r\n\r\nDataset of weather history in Raleigh-Durham International airport, joined with\r\n[US domestic flights data](/splitgraph/domestic_us_flights).\r\n\r\nThis dataset was uploaded from a CI job.\r\n\r\n## Source\r\n\r\n[data.gov](https://catalog.data.gov/dataset/local-weather-archive)\r\n"] +[33.06316747665409, "o", "Metadata updated for repository splitgraph-demo/weather.\r\n"] +[33.09316747665409, "o", "\u001b[1m"] +[33.12316747665409, "o", "\u001b[36m"] +[33.15316747665409, "o", "\u001b[91m"] +[33.18316747665409, "o", "$"] +[33.21316747665409, "o", " "] +[33.243167476654094, "o", "\u001b[0m"] +[39.3031308555602, "o", "\u001b[H"] +[39.3331308555602, "o", "\u001b[J"] +[39.3631308555602, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Perform a request against an automatically-generated"] +[39.3931308555602, "o", "\r\n"] +[39.4231308555602, "o", "$ # Postgrest (https://postgrest.org) endpoint.\r\n"] +[39.453130855560204, "o", "$"] +[39.483130855560205, "o", " "] +[39.513130855560206, "o", "c"] +[39.54313085556021, "o", "u"] +[39.57313085556021, "o", "r"] +[39.60313085556021, "o", "l"] +[39.63313085556021, "o", " "] +[39.66313085556021, "o", "\""] +[39.69313085556021, "o", "h"] +[39.723130855560214, "o", "t"] +[39.753130855560215, "o", "t"] +[39.783130855560216, "o", "p"] +[39.81313085556022, "o", "s"] +[39.84313085556022, "o", ":"] +[39.87313085556022, "o", "/"] +[39.90313085556022, "o", "/"] +[39.93313085556022, "o", "d"] +[39.96313085556022, "o", "a"] +[39.993130855560224, "o", "t"] +[40.023130855560225, "o", "a"] +[40.05313085556023, "o", "."] +[40.08313085556023, "o", "s"] +[40.11313085556023, "o", "p"] +[40.14313085556023, "o", "l"] +[40.17313085556023, "o", "i"] +[40.20313085556023, "o", "t"] +[40.23313085556023, "o", "g"] +[40.263130855560235, "o", "r"] +[40.293130855560236, "o", "a"] +[40.32313085556024, "o", "p"] +[40.35313085556024, "o", "h"] +[40.38313085556024, "o", "."] +[40.41313085556024, "o", "c"] +[40.44313085556024, "o", "o"] +[40.47313085556024, "o", "m"] +[40.503130855560244, "o", "/"] +[40.533130855560245, "o", "s"] +[40.563130855560246, "o", "p"] +[40.59313085556025, "o", "l"] +[40.62313085556025, "o", "i"] +[40.65313085556025, "o", "t"] +[40.68313085556025, "o", "g"] +[40.71313085556025, "o", "r"] +[40.74313085556025, "o", "a"] +[40.773130855560254, "o", "p"] +[40.803130855560255, "o", "h"] +[40.833130855560256, "o", "-"] +[40.86313085556026, "o", "d"] +[40.89313085556026, "o", "e"] +[40.92313085556026, "o", "m"] +[40.95313085556026, "o", "o"] +[40.98313085556026, "o", "/"] +[41.01313085556026, "o", "w"] +[41.043130855560264, "o", "e"] +[41.073130855560265, "o", "a"] +[41.103130855560266, "o", "t"] +[41.13313085556027, "o", "h"] +[41.16313085556027, "o", "e"] +[41.19313085556027, "o", "r"] +[41.22313085556027, "o", "/"] +[41.25313085556027, "o", "i"] +[41.28313085556027, "o", "n"] +[41.313130855560274, "o", "i"] +[41.343130855560275, "o", "t"] +[41.37313085556028, "o", "i"] +[41.40313085556028, "o", "a"] +[41.43313085556028, "o", "l"] +[41.46313085556028, "o", "_"] +[41.49313085556028, "o", "d"] +[41.52313085556028, "o", "a"] +[41.55313085556028, "o", "t"] +[41.583130855560285, "o", "a"] +[41.613130855560286, "o", "/"] +[41.64313085556029, "o", "-"] +[41.67313085556029, "o", "/"] +[41.70313085556029, "o", "r"] +[41.73313085556029, "o", "e"] +[41.76313085556029, "o", "s"] +[41.79313085556029, "o", "t"] +[41.823130855560294, "o", "/"] +[41.853130855560295, "o", "r"] +[41.883130855560296, "o", "d"] +[41.9131308555603, "o", "u"] +[41.9431308555603, "o", "?"] +[41.9731308555603, "o", "d"] +[42.0031308555603, "o", "a"] +[42.0331308555603, "o", "t"] +[42.0631308555603, "o", "e"] +[42.093130855560304, "o", "="] +[42.123130855560305, "o", "e"] +[42.153130855560306, "o", "q"] +[42.18313085556031, "o", "."] +[42.21313085556031, "o", "2"] +[42.24313085556031, "o", "0"] +[42.27313085556031, "o", "0"] +[42.30313085556031, "o", "9"] +[42.33313085556031, "o", "-"] +[42.363130855560314, "o", "0"] +[42.393130855560315, "o", "8"] +[42.423130855560316, "o", "-"] +[42.45313085556032, "o", "2"] +[42.48313085556032, "o", "5"] +[42.51313085556032, "o", "T"] +[42.54313085556032, "o", "0"] +[42.57313085556032, "o", "0"] +[42.60313085556032, "o", ":"] +[42.633130855560324, "o", "0"] +[42.663130855560325, "o", "0"] +[42.69313085556033, "o", ":"] +[42.72313085556033, "o", "0"] +[42.75313085556033, "o", "0"] +[42.78313085556033, "o", "\""] +[42.81313085556033, "o", "\r\n"] +[42.84313085556033, "o", "\u001b[0m"] +[42.87313085556033, "o", "\r\n"] +[43.76612430572513, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[43.79612430572513, "o", "\u001b[1m"] +[43.82612430572513, "o", "\u001b[36m"] +[43.85612430572513, "o", "\u001b[91m"] +[43.88612430572513, "o", "$"] +[43.916124305725134, "o", " "] +[43.946124305725135, "o", "\u001b[0m"] +[48.976124305725136, "o", "\u001b[H"] +[49.00612430572514, "o", "\u001b[J"] +[49.03612430572514, "o", "\u001b[1m\u001b[36m\u001b[91m$ # sgr also has a shorthand to access the query API"] +[49.06612430572514, "o", "\r\n"] +[49.09612430572514, "o", "$"] +[49.12612430572514, "o", " "] +[49.15612430572514, "o", "s"] +[49.186124305725144, "o", "g"] +[49.216124305725145, "o", "r"] +[49.24612430572515, "o", " "] +[49.27612430572515, "o", "c"] +[49.30612430572515, "o", "l"] +[49.33612430572515, "o", "o"] +[49.36612430572515, "o", "u"] +[49.39612430572515, "o", "d"] +[49.42612430572515, "o", " "] +[49.456124305725154, "o", "c"] +[49.486124305725156, "o", "u"] +[49.51612430572516, "o", "r"] +[49.54612430572516, "o", "l"] +[49.57612430572516, "o", " "] +[49.60612430572516, "o", "s"] +[49.63612430572516, "o", "p"] +[49.66612430572516, "o", "l"] +[49.696124305725164, "o", "i"] +[49.726124305725165, "o", "t"] +[49.756124305725166, "o", "g"] +[49.78612430572517, "o", "r"] +[49.81612430572517, "o", "a"] +[49.84612430572517, "o", "p"] +[49.87612430572517, "o", "h"] +[49.90612430572517, "o", "-"] +[49.93612430572517, "o", "d"] +[49.966124305725174, "o", "e"] +[49.996124305725175, "o", "m"] +[50.026124305725176, "o", "o"] +[50.05612430572518, "o", "/"] +[50.08612430572518, "o", "w"] +[50.11612430572518, "o", "e"] +[50.14612430572518, "o", "a"] +[50.17612430572518, "o", "t"] +[50.20612430572518, "o", "h"] +[50.236124305725184, "o", "e"] +[50.266124305725185, "o", "r"] +[50.296124305725186, "o", ":"] +[50.32612430572519, "o", "i"] +[50.35612430572519, "o", "n"] +[50.38612430572519, "o", "i"] +[50.41612430572519, "o", "t"] +[50.44612430572519, "o", "i"] +[50.47612430572519, "o", "a"] +[50.506124305725194, "o", "l"] +[50.536124305725195, "o", "_"] +[50.5661243057252, "o", "d"] +[50.5961243057252, "o", "a"] +[50.6261243057252, "o", "t"] +[50.6561243057252, "o", "a"] +[50.6861243057252, "o", " "] +[50.7161243057252, "o", "\""] +[50.7461243057252, "o", "r"] +[50.776124305725205, "o", "d"] +[50.806124305725206, "o", "u"] +[50.83612430572521, "o", "?"] +[50.86612430572521, "o", "d"] +[50.89612430572521, "o", "a"] +[50.92612430572521, "o", "t"] +[50.95612430572521, "o", "e"] +[50.98612430572521, "o", "="] +[51.016124305725214, "o", "e"] +[51.046124305725215, "o", "q"] +[51.076124305725216, "o", "."] +[51.10612430572522, "o", "2"] +[51.13612430572522, "o", "0"] +[51.16612430572522, "o", "0"] +[51.19612430572522, "o", "9"] +[51.22612430572522, "o", "-"] +[51.25612430572522, "o", "0"] +[51.286124305725224, "o", "8"] +[51.316124305725225, "o", "-"] +[51.346124305725226, "o", "2"] +[51.37612430572523, "o", "5"] +[51.40612430572523, "o", "T"] +[51.43612430572523, "o", "0"] +[51.46612430572523, "o", "0"] +[51.49612430572523, "o", ":"] +[51.52612430572523, "o", "0"] +[51.556124305725234, "o", "0"] +[51.586124305725235, "o", ":"] +[51.616124305725236, "o", "0"] +[51.64612430572524, "o", "0"] +[51.67612430572524, "o", "\""] +[51.70612430572524, "o", "\r\n"] +[51.73612430572524, "o", "\u001b[0m"] +[51.76612430572524, "o", "\r\n"] +[52.44979101181045, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[52.47979101181045, "o", "\u001b[1m"] +[52.50979101181045, "o", "\u001b[36m"] +[52.53979101181045, "o", "\u001b[91m"] +[52.56979101181045, "o", "$"] +[52.59979101181045, "o", " "] +[52.629791011810454, "o", "\u001b[0m"] +[57.659791011810455, "o", "\u001b[H"] +[57.689791011810456, "o", "\u001b[J"] +[57.71979101181046, "o", "\u001b[1m\u001b[36m\u001b[91m$ # You can also run a query against the Splitgraph Data Delivery Network."] +[57.74979101181046, "o", "\r\n"] +[57.77979101181046, "o", "$ # It supports most PostgresSQL clients and lets you query Splitgraph images and other\r\n"] +[57.80979101181046, "o", "$ # datasets proxied by Splitgraph.\r\n"] +[57.83979101181046, "o", "$"] +[57.86979101181046, "o", " "] +[57.899791011810464, "o", "s"] +[57.929791011810465, "o", "g"] +[57.959791011810466, "o", "r"] +[57.98979101181047, "o", " "] +[58.01979101181047, "o", "c"] +[58.04979101181047, "o", "l"] +[58.07979101181047, "o", "o"] +[58.10979101181047, "o", "u"] +[58.13979101181047, "o", "d"] +[58.169791011810474, "o", " "] +[58.199791011810476, "o", "s"] +[58.22979101181048, "o", "q"] +[58.25979101181048, "o", "l"] +[58.28979101181048, "o", " "] +[58.31979101181048, "o", "\""] +[58.34979101181048, "o", "S"] +[58.37979101181048, "o", "E"] +[58.40979101181048, "o", "L"] +[58.439791011810485, "o", "E"] +[58.469791011810486, "o", "C"] +[58.49979101181049, "o", "T"] +[58.52979101181049, "o", " "] +[58.55979101181049, "o", "d"] +[58.58979101181049, "o", "a"] +[58.61979101181049, "o", "t"] +[58.64979101181049, "o", "e"] +[58.679791011810494, "o", ","] +[58.709791011810495, "o", " "] +[58.739791011810496, "o", "t"] +[58.7697910118105, "o", "e"] +[58.7997910118105, "o", "m"] +[58.8297910118105, "o", "p"] +[58.8597910118105, "o", "e"] +[58.8897910118105, "o", "r"] +[58.9197910118105, "o", "a"] +[58.949791011810504, "o", "t"] +[58.979791011810505, "o", "u"] +[59.009791011810506, "o", "r"] +[59.03979101181051, "o", "e"] +[59.06979101181051, "o", "m"] +[59.09979101181051, "o", "i"] +[59.12979101181051, "o", "n"] +[59.15979101181051, "o", ","] +[59.18979101181051, "o", " "] +[59.219791011810514, "o", "t"] +[59.249791011810515, "o", "e"] +[59.27979101181052, "o", "m"] +[59.30979101181052, "o", "p"] +[59.33979101181052, "o", "e"] +[59.36979101181052, "o", "r"] +[59.39979101181052, "o", "a"] +[59.42979101181052, "o", "t"] +[59.45979101181052, "o", "u"] +[59.489791011810524, "o", "r"] +[59.519791011810526, "o", "e"] +[59.54979101181053, "o", "m"] +[59.57979101181053, "o", "a"] +[59.60979101181053, "o", "x"] +[59.63979101181053, "o", "\r\n "] +[59.66979101181053, "o", "F"] +[59.69979101181053, "o", "R"] +[59.72979101181053, "o", "O"] +[59.759791011810535, "o", "M"] +[59.789791011810536, "o", " "] +[59.81979101181054, "o", "\\"] +[59.84979101181054, "o", "\""] +[59.87979101181054, "o", "s"] +[59.90979101181054, "o", "p"] +[59.93979101181054, "o", "l"] +[59.96979101181054, "o", "i"] +[59.999791011810544, "o", "t"] +[60.029791011810545, "o", "g"] +[60.059791011810546, "o", "r"] +[60.08979101181055, "o", "a"] +[60.11979101181055, "o", "p"] +[60.14979101181055, "o", "h"] +[60.17979101181055, "o", "-"] +[60.20979101181055, "o", "d"] +[60.23979101181055, "o", "e"] +[60.269791011810554, "o", "m"] +[60.299791011810555, "o", "o"] +[60.329791011810556, "o", "/"] +[60.35979101181056, "o", "w"] +[60.38979101181056, "o", "e"] +[60.41979101181056, "o", "a"] +[60.44979101181056, "o", "t"] +[60.47979101181056, "o", "h"] +[60.50979101181056, "o", "e"] +[60.539791011810564, "o", "r"] +[60.569791011810565, "o", ":"] +[60.59979101181057, "o", "i"] +[60.62979101181057, "o", "n"] +[60.65979101181057, "o", "i"] +[60.68979101181057, "o", "t"] +[60.71979101181057, "o", "i"] +[60.74979101181057, "o", "a"] +[60.77979101181057, "o", "l"] +[60.809791011810574, "o", "_"] +[60.839791011810576, "o", "d"] +[60.86979101181058, "o", "a"] +[60.89979101181058, "o", "t"] +[60.92979101181058, "o", "a"] +[60.95979101181058, "o", "\\"] +[60.98979101181058, "o", "\""] +[61.01979101181058, "o", "."] +[61.04979101181058, "o", "r"] +[61.079791011810585, "o", "d"] +[61.109791011810586, "o", "u"] +[61.13979101181059, "o", "\r\n "] +[61.16979101181059, "o", "W"] +[61.19979101181059, "o", "H"] +[61.22979101181059, "o", "E"] +[61.25979101181059, "o", "R"] +[61.28979101181059, "o", "E"] +[61.319791011810594, "o", " "] +[61.349791011810595, "o", "d"] +[61.379791011810596, "o", "a"] +[61.4097910118106, "o", "t"] +[61.4397910118106, "o", "e"] +[61.4697910118106, "o", "_"] +[61.4997910118106, "o", "t"] +[61.5297910118106, "o", "r"] +[61.5597910118106, "o", "u"] +[61.589791011810604, "o", "n"] +[61.619791011810605, "o", "c"] +[61.649791011810606, "o", "("] +[61.67979101181061, "o", "'"] +[61.70979101181061, "o", "m"] +[61.73979101181061, "o", "o"] +[61.76979101181061, "o", "n"] +[61.79979101181061, "o", "t"] +[61.82979101181061, "o", "h"] +[61.859791011810614, "o", "'"] +[61.889791011810615, "o", ","] +[61.91979101181062, "o", " "] +[61.94979101181062, "o", "d"] +[61.97979101181062, "o", "a"] +[62.00979101181062, "o", "t"] +[62.03979101181062, "o", "e"] +[62.06979101181062, "o", ")"] +[62.09979101181062, "o", " "] +[62.129791011810624, "o", "="] +[62.159791011810626, "o", " "] +[62.18979101181063, "o", "'"] +[62.21979101181063, "o", "2"] +[62.24979101181063, "o", "0"] +[62.27979101181063, "o", "0"] +[62.30979101181063, "o", "9"] +[62.33979101181063, "o", "-"] +[62.369791011810634, "o", "0"] +[62.399791011810635, "o", "8"] +[62.429791011810636, "o", "-"] +[62.45979101181064, "o", "0"] +[62.48979101181064, "o", "1"] +[62.51979101181064, "o", "'"] +[62.54979101181064, "o", "\""] +[62.57979101181064, "o", "\r\n"] +[62.60979101181064, "o", "\u001b[0m"] +[62.639791011810644, "o", "\r\n"] +[63.639791011810644, "o", "2009-08-01 00:00:00 73 91.9\r\n2009-08-02 00:00:00 73.9 82.9\r\n2009-08-03 00:00:00 70 95\r\n2009-08-04 00:00:00 66.9 95\r\n2009-08-05 00:00:00 72 96.1\r\n2009-08-06 00:00:00 70 84.9\r\n2009-08-07 00:00:00 68 88\r\n2009-08-08 00:00:00 69.1 91\r\n2009-08-09 00:00:00 70 99\r\n2009-08-10 00:00:00 72 99\r\n"] +[63.669791011810645, "o", "\u001b[1m"] +[63.699791011810646, "o", "\u001b[36m"] +[63.72979101181065, "o", "\u001b[91m"] +[63.75979101181065, "o", "$"] +[63.78979101181065, "o", " "] +[63.81979101181065, "o", "\u001b[0m"] +[68.84979101181065, "o", "\u001b[H"] +[68.87979101181065, "o", "\u001b[J"] +[68.90979101181065, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The query API also supports running one-off Splitfile commands against a repository,"] +[68.93979101181066, "o", "\r\n"] +[68.96979101181066, "o", "$ # creating new images that can be pulled. sgr handles authentication for this automatically.\r\n"] +[68.99979101181066, "o", "$"] +[69.02979101181066, "o", " "] +[69.05979101181066, "o", "c"] +[69.08979101181066, "o", "a"] +[69.11979101181066, "o", "t"] +[69.14979101181066, "o", " "] +[69.17979101181066, "o", "r"] +[69.20979101181067, "o", "e"] +[69.23979101181067, "o", "q"] +[69.26979101181067, "o", "u"] +[69.29979101181067, "o", "e"] +[69.32979101181067, "o", "s"] +[69.35979101181067, "o", "t"] +[69.38979101181067, "o", "_"] +[69.41979101181067, "o", "1"] +[69.44979101181067, "o", "."] +[69.47979101181068, "o", "j"] +[69.50979101181068, "o", "s"] +[69.53979101181068, "o", "o"] +[69.56979101181068, "o", "n"] +[69.59979101181068, "o", "\r\n"] +[69.62979101181068, "o", "$"] +[69.65979101181068, "o", " "] +[69.68979101181068, "o", "s"] +[69.71979101181068, "o", "g"] +[69.74979101181069, "o", "r"] +[69.77979101181069, "o", " "] +[69.80979101181069, "o", "c"] +[69.83979101181069, "o", "l"] +[69.86979101181069, "o", "o"] +[69.89979101181069, "o", "u"] +[69.92979101181069, "o", "d"] +[69.9597910118107, "o", " "] +[69.9897910118107, "o", "c"] +[70.0197910118107, "o", "u"] +[70.0497910118107, "o", "r"] +[70.0797910118107, "o", "l"] +[70.1097910118107, "o", " "] +[70.1397910118107, "o", "-"] +[70.1697910118107, "o", "t"] +[70.1997910118107, "o", " "] +[70.2297910118107, "o", "s"] +[70.2597910118107, "o", "p"] +[70.2897910118107, "o", "l"] +[70.31979101181071, "o", "i"] +[70.34979101181071, "o", "t"] +[70.37979101181071, "o", "f"] +[70.40979101181071, "o", "i"] +[70.43979101181071, "o", "l"] +[70.46979101181071, "o", "e"] +[70.49979101181071, "o", " "] +[70.52979101181072, "o", "s"] +[70.55979101181072, "o", "p"] +[70.58979101181072, "o", "l"] +[70.61979101181072, "o", "i"] +[70.64979101181072, "o", "t"] +[70.67979101181072, "o", "g"] +[70.70979101181072, "o", "r"] +[70.73979101181072, "o", "a"] +[70.76979101181072, "o", "p"] +[70.79979101181073, "o", "h"] +[70.82979101181073, "o", "-"] +[70.85979101181073, "o", "d"] +[70.88979101181073, "o", "e"] +[70.91979101181073, "o", "m"] +[70.94979101181073, "o", "o"] +[70.97979101181073, "o", "/"] +[71.00979101181073, "o", "w"] +[71.03979101181073, "o", "e"] +[71.06979101181074, "o", "a"] +[71.09979101181074, "o", "t"] +[71.12979101181074, "o", "h"] +[71.15979101181074, "o", "e"] +[71.18979101181074, "o", "r"] +[71.21979101181074, "o", ":"] +[71.24979101181074, "o", "i"] +[71.27979101181074, "o", "n"] +[71.30979101181074, "o", "i"] +[71.33979101181075, "o", "t"] +[71.36979101181075, "o", "i"] +[71.39979101181075, "o", "a"] +[71.42979101181075, "o", "l"] +[71.45979101181075, "o", "_"] +[71.48979101181075, "o", "d"] +[71.51979101181075, "o", "a"] +[71.54979101181075, "o", "t"] +[71.57979101181076, "o", "a"] +[71.60979101181076, "o", " "] +[71.63979101181076, "o", "@"] +[71.66979101181076, "o", "r"] +[71.69979101181076, "o", "e"] +[71.72979101181076, "o", "q"] +[71.75979101181076, "o", "u"] +[71.78979101181076, "o", "e"] +[71.81979101181076, "o", "s"] +[71.84979101181077, "o", "t"] +[71.87979101181077, "o", "_"] +[71.90979101181077, "o", "1"] +[71.93979101181077, "o", "."] +[71.96979101181077, "o", "j"] +[71.99979101181077, "o", "s"] +[72.02979101181077, "o", "o"] +[72.05979101181077, "o", "n"] +[72.08979101181077, "o", "\r\n"] +[72.11979101181078, "o", "\u001b[0m"] +[72.14979101181078, "o", "\r\n"] +[72.1513490772252, "o", "{\"command\": \"FROM splitgraph/domestic_us_flights:latest IMPORT {SELECT fly_month, SUM(passengers) AS total_passengers FROM flights WHERE origin_airport = 'RDU' OR destination_airport = 'RDU' GROUP BY fly_month ORDER BY fly_month} AS flights\",\r\n \"tag\": \"with_flight_data\"}\r\n\r\n"] +[73.1513490772252, "o", "{\"image_hash\":\"d81ebebd6c9c694560a8294e6571f359fe91b54a18057400fbd2207e95a36618\"}"] +[73.1813490772252, "o", "\u001b[1m"] +[73.21134907722521, "o", "\u001b[36m"] +[73.24134907722521, "o", "\u001b[91m"] +[73.27134907722521, "o", "$"] +[73.30134907722521, "o", " "] +[73.33134907722521, "o", "\u001b[0m"] +[78.36134907722521, "o", "\u001b[H"] +[78.39134907722521, "o", "\u001b[J"] +[78.42134907722522, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run another command against the new layer to join the two datasets"] +[78.45134907722522, "o", "\r\n"] +[78.48134907722522, "o", "$"] +[78.51134907722522, "o", " "] +[78.54134907722522, "o", "c"] +[78.57134907722522, "o", "a"] +[78.60134907722522, "o", "t"] +[78.63134907722522, "o", " "] +[78.66134907722522, "o", "r"] +[78.69134907722523, "o", "e"] +[78.72134907722523, "o", "q"] +[78.75134907722523, "o", "u"] +[78.78134907722523, "o", "e"] +[78.81134907722523, "o", "s"] +[78.84134907722523, "o", "t"] +[78.87134907722523, "o", "_"] +[78.90134907722523, "o", "2"] +[78.93134907722524, "o", "."] +[78.96134907722524, "o", "j"] +[78.99134907722524, "o", "s"] +[79.02134907722524, "o", "o"] +[79.05134907722524, "o", "n"] +[79.08134907722524, "o", "\r\n"] +[79.11134907722524, "o", "$"] +[79.14134907722524, "o", " "] +[79.17134907722524, "o", "s"] +[79.20134907722525, "o", "g"] +[79.23134907722525, "o", "r"] +[79.26134907722525, "o", " "] +[79.29134907722525, "o", "c"] +[79.32134907722525, "o", "l"] +[79.35134907722525, "o", "o"] +[79.38134907722525, "o", "u"] +[79.41134907722525, "o", "d"] +[79.44134907722525, "o", " "] +[79.47134907722526, "o", "c"] +[79.50134907722526, "o", "u"] +[79.53134907722526, "o", "r"] +[79.56134907722526, "o", "l"] +[79.59134907722526, "o", " "] +[79.62134907722526, "o", "-"] +[79.65134907722526, "o", "t"] +[79.68134907722526, "o", " "] +[79.71134907722526, "o", "s"] +[79.74134907722527, "o", "p"] +[79.77134907722527, "o", "l"] +[79.80134907722527, "o", "i"] +[79.83134907722527, "o", "t"] +[79.86134907722527, "o", "f"] +[79.89134907722527, "o", "i"] +[79.92134907722527, "o", "l"] +[79.95134907722527, "o", "e"] +[79.98134907722527, "o", " "] +[80.01134907722528, "o", "s"] +[80.04134907722528, "o", "p"] +[80.07134907722528, "o", "l"] +[80.10134907722528, "o", "i"] +[80.13134907722528, "o", "t"] +[80.16134907722528, "o", "g"] +[80.19134907722528, "o", "r"] +[80.22134907722528, "o", "a"] +[80.25134907722529, "o", "p"] +[80.28134907722529, "o", "h"] +[80.31134907722529, "o", "-"] +[80.34134907722529, "o", "d"] +[80.37134907722529, "o", "e"] +[80.40134907722529, "o", "m"] +[80.43134907722529, "o", "o"] +[80.4613490772253, "o", "/"] +[80.4913490772253, "o", "w"] +[80.5213490772253, "o", "e"] +[80.5513490772253, "o", "a"] +[80.5813490772253, "o", "t"] +[80.6113490772253, "o", "h"] +[80.6413490772253, "o", "e"] +[80.6713490772253, "o", "r"] +[80.7013490772253, "o", ":"] +[80.7313490772253, "o", "w"] +[80.7613490772253, "o", "i"] +[80.7913490772253, "o", "t"] +[80.8213490772253, "o", "h"] +[80.85134907722531, "o", "_"] +[80.88134907722531, "o", "f"] +[80.91134907722531, "o", "l"] +[80.94134907722531, "o", "i"] +[80.97134907722531, "o", "g"] +[81.00134907722531, "o", "h"] +[81.03134907722531, "o", "t"] +[81.06134907722532, "o", "_"] +[81.09134907722532, "o", "d"] +[81.12134907722532, "o", "a"] +[81.15134907722532, "o", "t"] +[81.18134907722532, "o", "a"] +[81.21134907722532, "o", " "] +[81.24134907722532, "o", "@"] +[81.27134907722532, "o", "r"] +[81.30134907722532, "o", "e"] +[81.33134907722533, "o", "q"] +[81.36134907722533, "o", "u"] +[81.39134907722533, "o", "e"] +[81.42134907722533, "o", "s"] +[81.45134907722533, "o", "t"] +[81.48134907722533, "o", "_"] +[81.51134907722533, "o", "2"] +[81.54134907722533, "o", "."] +[81.57134907722534, "o", "j"] +[81.60134907722534, "o", "s"] +[81.63134907722534, "o", "o"] +[81.66134907722534, "o", "n"] +[81.69134907722534, "o", "\r\n"] +[81.72134907722534, "o", "\u001b[0m"] +[81.75134907722534, "o", "\r\n"] +[81.75274096489014, "o", "{\"command\": \"SQL CREATE TABLE rdu_flights_weather AS ( WITH monthly_summary AS (SELECT date_trunc ('month', date) AS month, AVG(temperaturemin) AS tmin_avg, AVG(temperaturemax) AS tmax_avg FROM rdu GROUP BY month) SELECT w.month, w.tmin_avg, w.tmax_avg, f.total_passengers FROM monthly_summary w JOIN flights f ON w.month = f.fly_month)\",\r\n \"tag\": \"joined_data\"}\r\n\r\n"] +[82.66412793159546, "o", "{\"image_hash\":\"3537988d96cdf10ef32bb03be70de758a7e9c8173bbfbc611a7a56203c262d0f\"}"] +[82.69412793159546, "o", "\u001b[1m"] +[82.72412793159546, "o", "\u001b[36m"] +[82.75412793159546, "o", "\u001b[91m"] +[82.78412793159546, "o", "$"] +[82.81412793159546, "o", " "] +[82.84412793159547, "o", "\u001b[0m"] +[87.87412793159547, "o", "\u001b[H"] +[87.90412793159547, "o", "\u001b[J"] +[87.93412793159547, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Pull the dataset and check out the new image"] +[87.96412793159547, "o", "\r\n"] +[87.99412793159547, "o", "$"] +[88.02412793159547, "o", " "] +[88.05412793159547, "o", "s"] +[88.08412793159548, "o", "g"] +[88.11412793159548, "o", "r"] +[88.14412793159548, "o", " "] +[88.17412793159548, "o", "p"] +[88.20412793159548, "o", "u"] +[88.23412793159548, "o", "l"] +[88.26412793159548, "o", "l"] +[88.29412793159548, "o", " "] +[88.32412793159548, "o", "w"] +[88.35412793159549, "o", "e"] +[88.38412793159549, "o", "a"] +[88.41412793159549, "o", "t"] +[88.44412793159549, "o", "h"] +[88.47412793159549, "o", "e"] +[88.50412793159549, "o", "r"] +[88.53412793159549, "o", "\r\n"] +[88.5641279315955, "o", "$"] +[88.5941279315955, "o", " "] +[88.6241279315955, "o", "s"] +[88.6541279315955, "o", "g"] +[88.6841279315955, "o", "r"] +[88.7141279315955, "o", " "] +[88.7441279315955, "o", "c"] +[88.7741279315955, "o", "h"] +[88.8041279315955, "o", "e"] +[88.8341279315955, "o", "c"] +[88.8641279315955, "o", "k"] +[88.8941279315955, "o", "o"] +[88.9241279315955, "o", "u"] +[88.95412793159551, "o", "t"] +[88.98412793159551, "o", " "] +[89.01412793159551, "o", "w"] +[89.04412793159551, "o", "e"] +[89.07412793159551, "o", "a"] +[89.10412793159551, "o", "t"] +[89.13412793159551, "o", "h"] +[89.16412793159552, "o", "e"] +[89.19412793159552, "o", "r"] +[89.22412793159552, "o", ":"] +[89.25412793159552, "o", "j"] +[89.28412793159552, "o", "o"] +[89.31412793159552, "o", "i"] +[89.34412793159552, "o", "n"] +[89.37412793159552, "o", "e"] +[89.40412793159553, "o", "d"] +[89.43412793159553, "o", "_"] +[89.46412793159553, "o", "d"] +[89.49412793159553, "o", "a"] +[89.52412793159553, "o", "t"] +[89.55412793159553, "o", "a"] +[89.58412793159553, "o", "\r\n"] +[89.61412793159553, "o", "\u001b[0m"] +[89.64412793159553, "o", "\r\n"] +[89.84213408470222, "o", "Gathering remote metadata...\r\n"] +[90.84213408470222, "o", "Fetched metadata for 2 images, 5 tables, 2 objects and 2 tags.\r\n"] +[91.08220156669685, "o", "Need to download 1 object (3.02 KiB), cache occupancy: 0.00 B/10.00 GiB\r\n"] +[91.13455995559761, "o", "Fetching 1 object, total size 3.02 KiB\r\n"] +[91.13680967331001, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (ca446922b2844ed19f8e6c8b35edbe31@data.splitgraph.com:5432/sgregistry)...\r\n"] +[92.13680967331001, "o", "\r 0%| | 0/1 [00:00 4a832e4a1b62\r\n"] +[34.76615361213692, "o", "\u001b[1m\r\nStep 2/3 : FROM splitgraph/2016_election IMPORT { SELECT lpad(co...\u001b[0m\r\n"] +[34.76681570053108, "o", "Resolving repository splitgraph/2016_election\r\n"] +[35.362921752929765, "o", "Gathering remote metadata...\r\n"] +[36.362921752929765, "o", "Fetched metadata for 1 image, 1 table, 20 objects and 1 tag.\r\n"] +[36.37640122413643, "o", "Importing 1 table from splitgraph/2016_election:3835145ada3f into qoz_vote_fraction\r\n"] +[37.37640122413643, "o", "Processing table sg_tmp_14915164a920b97d13cf997fbda3d1bd\r\n"] +[37.677915849685746, "o", " ---> 105f0cc16f07\r\n"] +[37.68377474784859, "o", "\u001b[1m\r\nStep 3/3 : SQL { CREATE TABLE qoz_vote_fraction AS SELECT ...\u001b[0m\r\n"] +[37.696932353973466, "o", "Executing SQL...\r\n"] +[37.71466330528267, "o", "Committing qoz_vote_fraction...\r\n"] +[37.74694041252144, "o", "Processing table qoz_vote_fraction\r\n"] +[37.862025060653764, "o", " ---> 2fd53f55d05e\r\n"] +[37.865885534286576, "o", "Successfully built qoz_vote_fraction:2fd53f55d05e.\r\n"] +[37.89588553428658, "o", "\u001b[1m"] +[37.92588553428658, "o", "\u001b[36m"] +[37.95588553428658, "o", "\u001b[91m"] +[37.98588553428658, "o", "$"] +[38.01588553428658, "o", " "] +[38.04588553428658, "o", "\u001b[0m"] +[44.03, "o", "\u001b[H"] +[44.06, "o", "\u001b[J"] +[44.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the dataset metadata"] +[44.120000000000005, "o", "\r\n"] +[44.150000000000006, "o", "$"] +[44.18000000000001, "o", " "] +[44.21000000000001, "o", "s"] +[44.24000000000001, "o", "g"] +[44.27000000000001, "o", "r"] +[44.30000000000001, "o", " "] +[44.33000000000001, "o", "s"] +[44.360000000000014, "o", "h"] +[44.390000000000015, "o", "o"] +[44.420000000000016, "o", "w"] +[44.45000000000002, "o", " "] +[44.48000000000002, "o", "q"] +[44.51000000000002, "o", "o"] +[44.54000000000002, "o", "z"] +[44.57000000000002, "o", "_"] +[44.60000000000002, "o", "v"] +[44.630000000000024, "o", "o"] +[44.660000000000025, "o", "t"] +[44.690000000000026, "o", "e"] +[44.72000000000003, "o", "_"] +[44.75000000000003, "o", "f"] +[44.78000000000003, "o", "r"] +[44.81000000000003, "o", "a"] +[44.84000000000003, "o", "c"] +[44.87000000000003, "o", "t"] +[44.900000000000034, "o", "i"] +[44.930000000000035, "o", "o"] +[44.960000000000036, "o", "n"] +[44.99000000000004, "o", "\r\n"] +[45.02000000000004, "o", "$"] +[45.05000000000004, "o", " "] +[45.08000000000004, "o", "s"] +[45.11000000000004, "o", "g"] +[45.14000000000004, "o", "r"] +[45.170000000000044, "o", " "] +[45.200000000000045, "o", "t"] +[45.23000000000005, "o", "a"] +[45.26000000000005, "o", "b"] +[45.29000000000005, "o", "l"] +[45.32000000000005, "o", "e"] +[45.35000000000005, "o", " "] +[45.38000000000005, "o", "q"] +[45.41000000000005, "o", "o"] +[45.440000000000055, "o", "z"] +[45.470000000000056, "o", "_"] +[45.50000000000006, "o", "v"] +[45.53000000000006, "o", "o"] +[45.56000000000006, "o", "t"] +[45.59000000000006, "o", "e"] +[45.62000000000006, "o", "_"] +[45.65000000000006, "o", "f"] +[45.680000000000064, "o", "r"] +[45.710000000000065, "o", "a"] +[45.740000000000066, "o", "c"] +[45.77000000000007, "o", "t"] +[45.80000000000007, "o", "i"] +[45.83000000000007, "o", "o"] +[45.86000000000007, "o", "n"] +[45.89000000000007, "o", " "] +[45.92000000000007, "o", "q"] +[45.950000000000074, "o", "o"] +[45.980000000000075, "o", "z"] +[46.010000000000076, "o", "_"] +[46.04000000000008, "o", "v"] +[46.07000000000008, "o", "o"] +[46.10000000000008, "o", "t"] +[46.13000000000008, "o", "e"] +[46.16000000000008, "o", "_"] +[46.19000000000008, "o", "f"] +[46.220000000000084, "o", "r"] +[46.250000000000085, "o", "a"] +[46.280000000000086, "o", "c"] +[46.31000000000009, "o", "t"] +[46.34000000000009, "o", "i"] +[46.37000000000009, "o", "o"] +[46.40000000000009, "o", "n"] +[46.43000000000009, "o", "\r\n"] +[46.46000000000009, "o", "\u001b[0m"] +[46.490000000000094, "o", "\r\n"] +[46.69126819610605, "o", "Image qoz_vote_fraction:2fd53f55d05e97d62ffba88cb98f010eb4a3a42143b94711bc7a19338157748e\r\n CREATE TABLE qoz_vote_fraction AS SELECT v.county_id, COALESCE(qoz_tract_fraction, 0) AS qoz_tract_fraction, trump_vote_fraction, clinton_vote_fraction, total_votes FROM vote_fraction v LEFT JOIN qoz_tract_fraction q ON q.county_id = v.county_id WHERE v.county_id IS NOT NULL; ALTER TABLE qoz_vote_fraction ADD PRIMARY KEY (county_id);\r\n"] +[46.69128679275522, "o", "Created at 2021-03-29T12:48:28.553273\r\n"] +[46.69484542846689, "o", "Size: 220.67 KiB\r\n"] +[46.694858064651584, "o", "Parent: 105f0cc16f0756e1fab3e8e4a9cb50d704b35dbad72fdf6513e3862c84353562\r\n\r\nTables:\r\n"] +[46.696324815750216, "o", " qoz_tract_fraction\r\n"] +[46.69636653900156, "o", " qoz_vote_fraction\r\n vote_fraction\r\n"] +[46.89537476539621, "o", "Table qoz_vote_fraction:2fd53f55d05e97d62ffba88cb98f010eb4a3a42143b94711bc7a19338157748e/qoz_vote_fraction\r\n"] +[46.89543723106394, "o", "\r\n"] +[46.89670418739328, "o", "Size: 107.08 KiB\r\n"] +[46.89780329704294, "o", "Rows: 3114\r\nColumns: \r\n"] +[46.89781497955332, "o", " county_id (text, PK)\r\n qoz_tract_fraction (numeric)\r\n trump_vote_fraction (numeric)\r\n clinton_vote_fraction (numeric)\r\n total_votes (numeric)\r\n\r\nObjects: \r\n oc423b7e057e6f48cb616bea1291248f22eafeeb17231ae9b8a0de978cbeccf\r\n"] +[46.92781497955332, "o", "\u001b[1m"] +[46.95781497955332, "o", "\u001b[36m"] +[46.98781497955332, "o", "\u001b[91m"] +[47.01781497955332, "o", "$"] +[47.04781497955332, "o", " "] +[47.077814979553324, "o", "\u001b[0m"] +[57.53, "o", "\u001b[H"] +[57.56, "o", "\u001b[J"] +[57.59, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get the data for New York County (FIPS 36061)"] +[57.620000000000005, "o", "\r\n"] +[57.650000000000006, "o", "$"] +[57.68000000000001, "o", " "] +[57.71000000000001, "o", "s"] +[57.74000000000001, "o", "g"] +[57.77000000000001, "o", "r"] +[57.80000000000001, "o", " "] +[57.83000000000001, "o", "s"] +[57.860000000000014, "o", "q"] +[57.890000000000015, "o", "l"] +[57.920000000000016, "o", " "] +[57.95000000000002, "o", "-"] +[57.98000000000002, "o", "s"] +[58.01000000000002, "o", " "] +[58.04000000000002, "o", "q"] +[58.07000000000002, "o", "o"] +[58.10000000000002, "o", "z"] +[58.130000000000024, "o", "_"] +[58.160000000000025, "o", "v"] +[58.190000000000026, "o", "o"] +[58.22000000000003, "o", "t"] +[58.25000000000003, "o", "e"] +[58.28000000000003, "o", "_"] +[58.31000000000003, "o", "f"] +[58.34000000000003, "o", "r"] +[58.37000000000003, "o", "a"] +[58.400000000000034, "o", "c"] +[58.430000000000035, "o", "t"] +[58.460000000000036, "o", "i"] +[58.49000000000004, "o", "o"] +[58.52000000000004, "o", "n"] +[58.55000000000004, "o", " "] +[58.58000000000004, "o", "\\"] +[58.61000000000004, "o", "\r\n "] +[58.64000000000004, "o", "\""] +[58.670000000000044, "o", "S"] +[58.700000000000045, "o", "E"] +[58.73000000000005, "o", "L"] +[58.76000000000005, "o", "E"] +[58.79000000000005, "o", "C"] +[58.82000000000005, "o", "T"] +[58.85000000000005, "o", " "] +[58.88000000000005, "o", "r"] +[58.91000000000005, "o", "o"] +[58.940000000000055, "o", "w"] +[58.970000000000056, "o", "_"] +[59.00000000000006, "o", "t"] +[59.03000000000006, "o", "o"] +[59.06000000000006, "o", "_"] +[59.09000000000006, "o", "j"] +[59.12000000000006, "o", "s"] +[59.15000000000006, "o", "o"] +[59.180000000000064, "o", "n"] +[59.210000000000065, "o", "("] +[59.240000000000066, "o", "d"] +[59.27000000000007, "o", ")"] +[59.30000000000007, "o", " "] +[59.33000000000007, "o", "F"] +[59.36000000000007, "o", "R"] +[59.39000000000007, "o", "O"] +[59.42000000000007, "o", "M"] +[59.450000000000074, "o", " "] +[59.480000000000075, "o", "("] +[59.510000000000076, "o", "S"] +[59.54000000000008, "o", "E"] +[59.57000000000008, "o", "L"] +[59.60000000000008, "o", "E"] +[59.63000000000008, "o", "C"] +[59.66000000000008, "o", "T"] +[59.69000000000008, "o", " "] +[59.720000000000084, "o", "*"] +[59.750000000000085, "o", " "] +[59.780000000000086, "o", "F"] +[59.81000000000009, "o", "R"] +[59.84000000000009, "o", "O"] +[59.87000000000009, "o", "M"] +[59.90000000000009, "o", " "] +[59.93000000000009, "o", "q"] +[59.96000000000009, "o", "o"] +[59.990000000000094, "o", "z"] +[60.020000000000095, "o", "_"] +[60.0500000000001, "o", "v"] +[60.0800000000001, "o", "o"] +[60.1100000000001, "o", "t"] +[60.1400000000001, "o", "e"] +[60.1700000000001, "o", "_"] +[60.2000000000001, "o", "f"] +[60.2300000000001, "o", "r"] +[60.260000000000105, "o", "a"] +[60.290000000000106, "o", "c"] +[60.32000000000011, "o", "t"] +[60.35000000000011, "o", "i"] +[60.38000000000011, "o", "o"] +[60.41000000000011, "o", "n"] +[60.44000000000011, "o", " "] +[60.47000000000011, "o", "W"] +[60.500000000000114, "o", "H"] +[60.530000000000115, "o", "E"] +[60.560000000000116, "o", "R"] +[60.59000000000012, "o", "E"] +[60.62000000000012, "o", " "] +[60.65000000000012, "o", "c"] +[60.68000000000012, "o", "o"] +[60.71000000000012, "o", "u"] +[60.74000000000012, "o", "n"] +[60.770000000000124, "o", "t"] +[60.800000000000125, "o", "y"] +[60.830000000000126, "o", "_"] +[60.86000000000013, "o", "i"] +[60.89000000000013, "o", "d"] +[60.92000000000013, "o", " "] +[60.95000000000013, "o", "="] +[60.98000000000013, "o", " "] +[61.01000000000013, "o", "'"] +[61.040000000000134, "o", "3"] +[61.070000000000135, "o", "6"] +[61.100000000000136, "o", "0"] +[61.13000000000014, "o", "6"] +[61.16000000000014, "o", "1"] +[61.19000000000014, "o", "'"] +[61.22000000000014, "o", ")"] +[61.25000000000014, "o", " "] +[61.28000000000014, "o", "d"] +[61.310000000000144, "o", "\""] +[61.340000000000146, "o", "\r\n"] +[61.37000000000015, "o", "\u001b[0m"] +[61.40000000000015, "o", "\r\n"] +[61.60085906982437, "o", "{'county_id': '36061', 'qoz_tract_fraction': 0.125, 'trump_vote_fraction': 0.08865095716546313, 'clinton_vote_fraction': 0.7905445350569275, 'total_votes': 732423}\r\n"] +[61.63085906982437, "o", "\u001b[1m"] +[61.66085906982437, "o", "\u001b[36m"] +[61.69085906982437, "o", "\u001b[91m"] +[61.72085906982437, "o", "$"] +[61.75085906982437, "o", " "] +[61.78085906982437, "o", "\u001b[0m"] +[66.81085906982437, "o", "\u001b[H"] +[66.84085906982438, "o", "\u001b[J"] +[66.87085906982438, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Do a quick analysis of the dataset."] +[66.90085906982438, "o", "\r\n"] +[66.93085906982438, "o", "$"] +[66.96085906982438, "o", " "] +[66.99085906982438, "o", "c"] +[67.02085906982438, "o", "a"] +[67.05085906982438, "o", "t"] +[67.08085906982438, "o", " "] +[67.11085906982439, "o", "a"] +[67.14085906982439, "o", "n"] +[67.17085906982439, "o", "a"] +[67.20085906982439, "o", "l"] +[67.23085906982439, "o", "y"] +[67.26085906982439, "o", "z"] +[67.29085906982439, "o", "e"] +[67.3208590698244, "o", "."] +[67.3508590698244, "o", "p"] +[67.3808590698244, "o", "y"] +[67.4108590698244, "o", "\r\n"] +[67.4408590698244, "o", "$"] +[67.4708590698244, "o", " "] +[67.5008590698244, "o", "p"] +[67.5308590698244, "o", "y"] +[67.5608590698244, "o", "t"] +[67.5908590698244, "o", "h"] +[67.6208590698244, "o", "o"] +[67.6508590698244, "o", "n"] +[67.68085906982441, "o", " "] +[67.71085906982441, "o", "a"] +[67.74085906982441, "o", "n"] +[67.77085906982441, "o", "a"] +[67.80085906982441, "o", "l"] +[67.83085906982441, "o", "y"] +[67.86085906982441, "o", "z"] +[67.89085906982442, "o", "e"] +[67.92085906982442, "o", "."] +[67.95085906982442, "o", "p"] +[67.98085906982442, "o", "y"] +[68.01085906982442, "o", "\r\n"] +[68.04085906982442, "o", "\u001b[0m"] +[68.07085906982442, "o", "\r\n"] +[68.07284295082113, "o", "import scipy.stats as ss\r\n\r\nfrom splitgraph.core.repository import Repository\r\nfrom splitgraph.ingestion.pandas import sql_to_df\r\n\r\n# Load the dataset we created into Pandas\r\nimage = Repository(\"\", \"qoz_vote_fraction\").images[\"latest\"]\r\ndf = sql_to_df(\"SELECT * FROM qoz_vote_fraction\", image=image, use_lq=True)\r\nprint(df)\r\n\r\n# Is there a correlation between the Trump vote fraction and the fraction of\r\n# QOZ-qualified tracts in every county?\r\nprint(ss.linregress(df[\"trump_vote_fraction\"], df[\"qoz_tract_fract"] +[68.07285177230855, "o", "ion\"]))\r\n"] +[69.07285177230855, "o", " county_id qoz_tract_fraction trump_vote_fraction clinton_vote_fraction total_votes\r\n0 01001 0.083333 0.491135 0.160432 37000.0\r\n1 01003 0.187500 0.496056 0.125629 146925.0\r\n2 01005 0.111111 0.330305 0.294998 16512.0\r\n3 01007 0.250000 0.485132 0.134927 13889.0\r\n4 01009 0.111111 "] +[69.07286107063314, "o", "0.588017 0.055430 38788.0\r\n... ... ... ... ... ...\r\n3109 56037 0.083333 0.709515 0.188616 17130.0\r\n3110 56039 0.000000 0.310525 0.579235 12627.0\r\n3111 56041 0.333333 0.726564 0.141913 8470.0\r\n3112 56043 0.333333 0.763241 0.139486 3814.0\r\n3"] +[69.07286798477193, "o", "113 56045 0.000000 0.860182 0.084799 3526.0\r\n\r\n[3114 rows x 5 columns]\r\n"] +[69.07661091804525, "o", "LinregressResult(slope=-0.06217947076052384, intercept=0.1781160377798594, rvalue=-0.05782420568050624, pvalue=0.0012457930627282658, stderr=0.019243775109388402, intercept_stderr=0.012338526356298417)\r\n"] +[69.10661091804525, "o", "\u001b[1m"] +[69.13661091804525, "o", "\u001b[36m"] +[69.16661091804525, "o", "\u001b[91m"] +[69.19661091804525, "o", "$"] +[69.22661091804525, "o", " "] +[69.25661091804525, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.12/bloom-filter.cast b/content/casts/versioned/archive/v0.2.12/bloom-filter.cast new file mode 100644 index 00000000..e674e8bc --- /dev/null +++ b/content/casts/versioned/archive/v0.2.12/bloom-filter.cast @@ -0,0 +1,955 @@ +{"version": 2, "width": 100, "height": 56, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1617810412, "metadata": {"tss": [{"h": "This example will use the 2016 US presidential election dataset", "ts": 0.06}, {"h": "The table is sorted by voting precinct and so queries that filter by that", "ts": 8.619999999999997}, {"h": "Currently we have no fragments in cache. Let's run this query and check the cache again", "ts": 18.565513229370026}, {"h": "Since default indexing in Splitgraph is done by min-max values for every column", "ts": 30.326544380188096}, {"h": "Let's download the whole dataset and add a bloom filter index on county_name", "ts": 40.67931050300626}, {"h": "Check the metadata of a new object to see details about the bloom filter structure", "ts": 71.92170324325605}, {"h": "Plan the query again: because the bloom filter can drop most fragments -", "ts": 99.42170324325605}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # This example will use the 2016 US presidential election dataset"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # to show off how indexing with a bloom filter can improve query performance.\r\n"] +[0.18, "o", "$ #\r\n"] +[0.21, "o", "$ # First, clone the whole dataset without downloading it.\r\n"] +[0.24, "o", "$"] +[0.27, "o", " "] +[0.30000000000000004, "o", "s"] +[0.33000000000000007, "o", "g"] +[0.3600000000000001, "o", "r"] +[0.3900000000000001, "o", " "] +[0.42000000000000015, "o", "c"] +[0.4500000000000002, "o", "l"] +[0.4800000000000002, "o", "o"] +[0.5100000000000002, "o", "n"] +[0.5400000000000003, "o", "e"] +[0.5700000000000003, "o", " "] +[0.6000000000000003, "o", "s"] +[0.6300000000000003, "o", "p"] +[0.6600000000000004, "o", "l"] +[0.6900000000000004, "o", "i"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "g"] +[0.7800000000000005, "o", "r"] +[0.8100000000000005, "o", "a"] +[0.8400000000000005, "o", "p"] +[0.8700000000000006, "o", "h"] +[0.9000000000000006, "o", "/"] +[0.9300000000000006, "o", "2"] +[0.9600000000000006, "o", "0"] +[0.9900000000000007, "o", "1"] +[1.0200000000000007, "o", "6"] +[1.0500000000000007, "o", "_"] +[1.0800000000000007, "o", "e"] +[1.1100000000000008, "o", "l"] +[1.1400000000000008, "o", "e"] +[1.1700000000000008, "o", "c"] +[1.2000000000000008, "o", "t"] +[1.2300000000000009, "o", "i"] +[1.260000000000001, "o", "o"] +[1.290000000000001, "o", "n"] +[1.320000000000001, "o", "\r\n"] +[1.350000000000001, "o", "\u001b[0m"] +[1.380000000000001, "o", "\r\n"] +[2.380000000000001, "o", "Gathering remote metadata...\r\n"] +[3.380000000000001, "o", "Fetched metadata for 1 image, 1 table, 20 objects and 1 tag.\r\n"] +[3.4100000000000006, "o", "\u001b[1m"] +[3.4400000000000004, "o", "\u001b[36m"] +[3.47, "o", "\u001b[91m"] +[3.5, "o", "$"] +[3.53, "o", " "] +[3.5599999999999996, "o", "\u001b[0m"] +[8.589999999999998, "o", "\u001b[H"] +[8.619999999999997, "o", "\u001b[J"] +[8.649999999999997, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The table is sorted by voting precinct and so queries that filter by that"] +[8.679999999999996, "o", "\r\n"] +[8.709999999999996, "o", "$ # (or by state, since precinct FIPS codes have the state as the prefix)\r\n"] +[8.739999999999995, "o", "$ # will use and download fewer fragments (6MiB/27MiB)\r\n"] +[8.769999999999994, "o", "$"] +[8.799999999999994, "o", " "] +[8.829999999999993, "o", "s"] +[8.859999999999992, "o", "g"] +[8.889999999999992, "o", "r"] +[8.919999999999991, "o", " "] +[8.94999999999999, "o", "s"] +[8.97999999999999, "o", "q"] +[9.00999999999999, "o", "l"] +[9.039999999999988, "o", " "] +[9.069999999999988, "o", "-"] +[9.099999999999987, "o", "-"] +[9.129999999999987, "o", "i"] +[9.159999999999986, "o", "m"] +[9.189999999999985, "o", "a"] +[9.219999999999985, "o", "g"] +[9.249999999999984, "o", "e"] +[9.279999999999983, "o", " "] +[9.309999999999983, "o", "s"] +[9.339999999999982, "o", "p"] +[9.369999999999981, "o", "l"] +[9.39999999999998, "o", "i"] +[9.42999999999998, "o", "t"] +[9.45999999999998, "o", "g"] +[9.489999999999979, "o", "r"] +[9.519999999999978, "o", "a"] +[9.549999999999978, "o", "p"] +[9.579999999999977, "o", "h"] +[9.609999999999976, "o", "/"] +[9.639999999999976, "o", "2"] +[9.669999999999975, "o", "0"] +[9.699999999999974, "o", "1"] +[9.729999999999974, "o", "6"] +[9.759999999999973, "o", "_"] +[9.789999999999973, "o", "e"] +[9.819999999999972, "o", "l"] +[9.849999999999971, "o", "e"] +[9.87999999999997, "o", "c"] +[9.90999999999997, "o", "t"] +[9.93999999999997, "o", "i"] +[9.969999999999969, "o", "o"] +[9.999999999999968, "o", "n"] +[10.029999999999967, "o", ":"] +[10.059999999999967, "o", "l"] +[10.089999999999966, "o", "a"] +[10.119999999999965, "o", "t"] +[10.149999999999965, "o", "e"] +[10.179999999999964, "o", "s"] +[10.209999999999964, "o", "t"] +[10.239999999999963, "o", " "] +[10.269999999999962, "o", "\\"] +[10.299999999999962, "o", "\r\n "] +[10.329999999999961, "o", "\""] +[10.35999999999996, "o", "E"] +[10.38999999999996, "o", "X"] +[10.419999999999959, "o", "P"] +[10.449999999999958, "o", "L"] +[10.479999999999958, "o", "A"] +[10.509999999999957, "o", "I"] +[10.539999999999957, "o", "N"] +[10.569999999999956, "o", " "] +[10.599999999999955, "o", "S"] +[10.629999999999955, "o", "E"] +[10.659999999999954, "o", "L"] +[10.689999999999953, "o", "E"] +[10.719999999999953, "o", "C"] +[10.749999999999952, "o", "T"] +[10.779999999999951, "o", " "] +[10.80999999999995, "o", "S"] +[10.83999999999995, "o", "U"] +[10.86999999999995, "o", "M"] +[10.899999999999949, "o", "("] +[10.929999999999948, "o", "v"] +[10.959999999999948, "o", "o"] +[10.989999999999947, "o", "t"] +[11.019999999999946, "o", "e"] +[11.049999999999946, "o", "s"] +[11.079999999999945, "o", ")"] +[11.109999999999944, "o", " "] +[11.139999999999944, "o", "F"] +[11.169999999999943, "o", "R"] +[11.199999999999942, "o", "O"] +[11.229999999999942, "o", "M"] +[11.259999999999941, "o", " "] +[11.28999999999994, "o", "p"] +[11.31999999999994, "o", "r"] +[11.34999999999994, "o", "e"] +[11.379999999999939, "o", "c"] +[11.409999999999938, "o", "i"] +[11.439999999999937, "o", "n"] +[11.469999999999937, "o", "c"] +[11.499999999999936, "o", "t"] +[11.529999999999935, "o", "_"] +[11.559999999999935, "o", "r"] +[11.589999999999934, "o", "e"] +[11.619999999999933, "o", "s"] +[11.649999999999933, "o", "u"] +[11.679999999999932, "o", "l"] +[11.709999999999932, "o", "t"] +[11.739999999999931, "o", "s"] +[11.76999999999993, "o", " "] +[11.79999999999993, "o", "W"] +[11.829999999999929, "o", "H"] +[11.859999999999928, "o", "E"] +[11.889999999999928, "o", "R"] +[11.919999999999927, "o", "E"] +[11.949999999999926, "o", " "] +[11.979999999999926, "o", "s"] +[12.009999999999925, "o", "t"] +[12.039999999999925, "o", "a"] +[12.069999999999924, "o", "t"] +[12.099999999999923, "o", "e"] +[12.129999999999923, "o", " "] +[12.159999999999922, "o", "="] +[12.189999999999921, "o", " "] +[12.21999999999992, "o", "'"] +[12.24999999999992, "o", "N"] +[12.27999999999992, "o", "e"] +[12.309999999999919, "o", "w"] +[12.339999999999918, "o", " "] +[12.369999999999918, "o", "Y"] +[12.399999999999917, "o", "o"] +[12.429999999999916, "o", "r"] +[12.459999999999916, "o", "k"] +[12.489999999999915, "o", "'"] +[12.519999999999914, "o", "\""] +[12.549999999999914, "o", "\r\n"] +[12.579999999999913, "o", "\u001b[0m"] +[12.609999999999912, "o", "\r\n"] +[13.32551322937003, "o", "Aggregate (cost=9785903.09..9785903.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..9784680.00 rows=489234 width=20)\r\nFilter: ((state)::text = 'New York'::text)\r\nMulticorn: Original Multicorn quals: [state = New York]\r\nMulticorn: CNF quals: [[('state', '=', 'New York')]]\r\nMulticorn: Objects removed by filter: 15\r\nMulticorn: Scan through 5 object(s) (6.63 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Deforming true\r\n"] +[13.355513229370029, "o", "\u001b[1m"] +[13.385513229370028, "o", "\u001b[36m"] +[13.415513229370028, "o", "\u001b[91m"] +[13.445513229370027, "o", "$"] +[13.475513229370026, "o", " "] +[13.505513229370026, "o", "\u001b[0m"] +[18.535513229370025, "o", "\u001b[H"] +[18.565513229370026, "o", "\u001b[J"] +[18.595513229370027, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Currently we have no fragments in cache. Let's run this query and check the cache again"] +[18.62551322937003, "o", "\r\n"] +[18.65551322937003, "o", "$"] +[18.68551322937003, "o", " "] +[18.715513229370032, "o", "s"] +[18.745513229370033, "o", "g"] +[18.775513229370034, "o", "r"] +[18.805513229370035, "o", " "] +[18.835513229370036, "o", "o"] +[18.865513229370038, "o", "b"] +[18.89551322937004, "o", "j"] +[18.92551322937004, "o", "e"] +[18.95551322937004, "o", "c"] +[18.985513229370042, "o", "t"] +[19.015513229370043, "o", "s"] +[19.045513229370044, "o", " "] +[19.075513229370046, "o", "-"] +[19.105513229370047, "o", "-"] +[19.135513229370048, "o", "l"] +[19.16551322937005, "o", "o"] +[19.19551322937005, "o", "c"] +[19.22551322937005, "o", "a"] +[19.255513229370052, "o", "l"] +[19.285513229370054, "o", "\r\n"] +[19.315513229370055, "o", "$"] +[19.345513229370056, "o", " "] +[19.375513229370057, "o", "s"] +[19.405513229370058, "o", "g"] +[19.43551322937006, "o", "r"] +[19.46551322937006, "o", " "] +[19.49551322937006, "o", "s"] +[19.525513229370063, "o", "q"] +[19.555513229370064, "o", "l"] +[19.585513229370065, "o", " "] +[19.615513229370066, "o", "-"] +[19.645513229370067, "o", "-"] +[19.67551322937007, "o", "i"] +[19.70551322937007, "o", "m"] +[19.73551322937007, "o", "a"] +[19.76551322937007, "o", "g"] +[19.795513229370073, "o", "e"] +[19.825513229370074, "o", " "] +[19.855513229370075, "o", "s"] +[19.885513229370076, "o", "p"] +[19.915513229370077, "o", "l"] +[19.94551322937008, "o", "i"] +[19.97551322937008, "o", "t"] +[20.00551322937008, "o", "g"] +[20.035513229370082, "o", "r"] +[20.065513229370083, "o", "a"] +[20.095513229370084, "o", "p"] +[20.125513229370085, "o", "h"] +[20.155513229370086, "o", "/"] +[20.185513229370088, "o", "2"] +[20.21551322937009, "o", "0"] +[20.24551322937009, "o", "1"] +[20.27551322937009, "o", "6"] +[20.305513229370092, "o", "_"] +[20.335513229370093, "o", "e"] +[20.365513229370094, "o", "l"] +[20.395513229370096, "o", "e"] +[20.425513229370097, "o", "c"] +[20.455513229370098, "o", "t"] +[20.4855132293701, "o", "i"] +[20.5155132293701, "o", "o"] +[20.5455132293701, "o", "n"] +[20.575513229370102, "o", ":"] +[20.605513229370104, "o", "l"] +[20.635513229370105, "o", "a"] +[20.665513229370106, "o", "t"] +[20.695513229370107, "o", "e"] +[20.725513229370108, "o", "s"] +[20.75551322937011, "o", "t"] +[20.78551322937011, "o", " "] +[20.81551322937011, "o", "\\"] +[20.845513229370113, "o", "\r\n "] +[20.875513229370114, "o", "\""] +[20.905513229370115, "o", "S"] +[20.935513229370116, "o", "E"] +[20.965513229370117, "o", "L"] +[20.99551322937012, "o", "E"] +[21.02551322937012, "o", "C"] +[21.05551322937012, "o", "T"] +[21.08551322937012, "o", " "] +[21.115513229370123, "o", "S"] +[21.145513229370124, "o", "U"] +[21.175513229370125, "o", "M"] +[21.205513229370126, "o", "("] +[21.235513229370127, "o", "v"] +[21.26551322937013, "o", "o"] +[21.29551322937013, "o", "t"] +[21.32551322937013, "o", "e"] +[21.355513229370132, "o", "s"] +[21.385513229370133, "o", ")"] +[21.415513229370134, "o", " "] +[21.445513229370135, "o", "F"] +[21.475513229370137, "o", "R"] +[21.505513229370138, "o", "O"] +[21.53551322937014, "o", "M"] +[21.56551322937014, "o", " "] +[21.59551322937014, "o", "p"] +[21.625513229370142, "o", "r"] +[21.655513229370143, "o", "e"] +[21.685513229370144, "o", "c"] +[21.715513229370146, "o", "i"] +[21.745513229370147, "o", "n"] +[21.775513229370148, "o", "c"] +[21.80551322937015, "o", "t"] +[21.83551322937015, "o", "_"] +[21.86551322937015, "o", "r"] +[21.895513229370152, "o", "e"] +[21.925513229370154, "o", "s"] +[21.955513229370155, "o", "u"] +[21.985513229370156, "o", "l"] +[22.015513229370157, "o", "t"] +[22.045513229370158, "o", "s"] +[22.07551322937016, "o", " "] +[22.10551322937016, "o", "W"] +[22.13551322937016, "o", "H"] +[22.165513229370163, "o", "E"] +[22.195513229370164, "o", "R"] +[22.225513229370165, "o", "E"] +[22.255513229370166, "o", " "] +[22.285513229370167, "o", "s"] +[22.31551322937017, "o", "t"] +[22.34551322937017, "o", "a"] +[22.37551322937017, "o", "t"] +[22.40551322937017, "o", "e"] +[22.435513229370173, "o", " "] +[22.465513229370174, "o", "="] +[22.495513229370175, "o", " "] +[22.525513229370176, "o", "'"] +[22.555513229370177, "o", "N"] +[22.58551322937018, "o", "e"] +[22.61551322937018, "o", "w"] +[22.64551322937018, "o", " "] +[22.675513229370182, "o", "Y"] +[22.705513229370183, "o", "o"] +[22.735513229370184, "o", "r"] +[22.765513229370185, "o", "k"] +[22.795513229370187, "o", "'"] +[22.825513229370188, "o", "\""] +[22.85551322937019, "o", "\r\n"] +[22.88551322937019, "o", "$"] +[22.91551322937019, "o", " "] +[22.945513229370192, "o", "s"] +[22.975513229370193, "o", "g"] +[23.005513229370194, "o", "r"] +[23.035513229370196, "o", " "] +[23.065513229370197, "o", "o"] +[23.095513229370198, "o", "b"] +[23.1255132293702, "o", "j"] +[23.1555132293702, "o", "e"] +[23.1855132293702, "o", "c"] +[23.215513229370202, "o", "t"] +[23.245513229370204, "o", "s"] +[23.275513229370205, "o", " "] +[23.305513229370206, "o", "-"] +[23.335513229370207, "o", "-"] +[23.365513229370208, "o", "l"] +[23.39551322937021, "o", "o"] +[23.42551322937021, "o", "c"] +[23.45551322937021, "o", "a"] +[23.485513229370213, "o", "l"] +[23.515513229370214, "o", "\r\n"] +[23.545513229370215, "o", "\u001b[0m"] +[23.575513229370216, "o", "\r\n"] +[23.821644172668556, "o", "\r\n"] +[24.821644172668556, "o", "7.91188e+06\r\n"] +[25.086544380188087, "o", "o65dbd9dc992982689ec65866ab733be69c897c659d93488457a2fccb63e97c\r\no974b20261ee5f1ac124a8445a65c00e6377cfabb93b5db92bd60fc7ca3fcee\r\no9c33b53f1a4872c598ad9d08aaafd78fabce1f16ef4c5e19ad9756b9b85fda\r\no9d4cf85101cc4d431c895998cf1cad642f1fe6cd923c8209f2df38441afeeb\r\noc438159794e378ca23c306143ccdc7ce1683045f80a511aeeabb19302be63d\r\n"] +[25.11654438018809, "o", "\u001b[1m"] +[25.14654438018809, "o", "\u001b[36m"] +[25.17654438018809, "o", "\u001b[91m"] +[25.20654438018809, "o", "$"] +[25.236544380188093, "o", " "] +[25.266544380188094, "o", "\u001b[0m"] +[30.296544380188095, "o", "\u001b[H"] +[30.326544380188096, "o", "\u001b[J"] +[30.356544380188097, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Since default indexing in Splitgraph is done by min-max values for every column"] +[30.3865443801881, "o", "\r\n"] +[30.4165443801881, "o", "$ # in every fragment, it's going to do worse if multiple fragments span the same value\r\n"] +[30.4465443801881, "o", "$"] +[30.476544380188102, "o", " "] +[30.506544380188103, "o", "s"] +[30.536544380188104, "o", "g"] +[30.566544380188105, "o", "r"] +[30.596544380188107, "o", " "] +[30.626544380188108, "o", "s"] +[30.65654438018811, "o", "q"] +[30.68654438018811, "o", "l"] +[30.71654438018811, "o", " "] +[30.746544380188112, "o", "-"] +[30.776544380188113, "o", "-"] +[30.806544380188114, "o", "i"] +[30.836544380188116, "o", "m"] +[30.866544380188117, "o", "a"] +[30.896544380188118, "o", "g"] +[30.92654438018812, "o", "e"] +[30.95654438018812, "o", " "] +[30.98654438018812, "o", "s"] +[31.016544380188122, "o", "p"] +[31.046544380188124, "o", "l"] +[31.076544380188125, "o", "i"] +[31.106544380188126, "o", "t"] +[31.136544380188127, "o", "g"] +[31.166544380188128, "o", "r"] +[31.19654438018813, "o", "a"] +[31.22654438018813, "o", "p"] +[31.25654438018813, "o", "h"] +[31.286544380188133, "o", "/"] +[31.316544380188134, "o", "2"] +[31.346544380188135, "o", "0"] +[31.376544380188136, "o", "1"] +[31.406544380188137, "o", "6"] +[31.43654438018814, "o", "_"] +[31.46654438018814, "o", "e"] +[31.49654438018814, "o", "l"] +[31.52654438018814, "o", "e"] +[31.556544380188143, "o", "c"] +[31.586544380188144, "o", "t"] +[31.616544380188145, "o", "i"] +[31.646544380188146, "o", "o"] +[31.676544380188147, "o", "n"] +[31.70654438018815, "o", ":"] +[31.73654438018815, "o", "l"] +[31.76654438018815, "o", "a"] +[31.796544380188152, "o", "t"] +[31.826544380188153, "o", "e"] +[31.856544380188154, "o", "s"] +[31.886544380188155, "o", "t"] +[31.916544380188157, "o", " "] +[31.946544380188158, "o", "\\"] +[31.97654438018816, "o", "\r\n "] +[32.00654438018816, "o", "\""] +[32.03654438018816, "o", "E"] +[32.06654438018816, "o", "X"] +[32.09654438018816, "o", "P"] +[32.126544380188164, "o", "L"] +[32.156544380188166, "o", "A"] +[32.18654438018817, "o", "I"] +[32.21654438018817, "o", "N"] +[32.24654438018817, "o", " "] +[32.27654438018817, "o", "S"] +[32.30654438018817, "o", "E"] +[32.33654438018817, "o", "L"] +[32.366544380188174, "o", "E"] +[32.396544380188175, "o", "C"] +[32.426544380188176, "o", "T"] +[32.45654438018818, "o", " "] +[32.48654438018818, "o", "S"] +[32.51654438018818, "o", "U"] +[32.54654438018818, "o", "M"] +[32.57654438018818, "o", "("] +[32.60654438018818, "o", "v"] +[32.636544380188184, "o", "o"] +[32.666544380188185, "o", "t"] +[32.696544380188186, "o", "e"] +[32.72654438018819, "o", "s"] +[32.75654438018819, "o", ")"] +[32.78654438018819, "o", " "] +[32.81654438018819, "o", "F"] +[32.84654438018819, "o", "R"] +[32.87654438018819, "o", "O"] +[32.906544380188194, "o", "M"] +[32.936544380188195, "o", " "] +[32.966544380188196, "o", "p"] +[32.9965443801882, "o", "r"] +[33.0265443801882, "o", "e"] +[33.0565443801882, "o", "c"] +[33.0865443801882, "o", "i"] +[33.1165443801882, "o", "n"] +[33.1465443801882, "o", "c"] +[33.176544380188204, "o", "t"] +[33.206544380188205, "o", "_"] +[33.23654438018821, "o", "r"] +[33.26654438018821, "o", "e"] +[33.29654438018821, "o", "s"] +[33.32654438018821, "o", "u"] +[33.35654438018821, "o", "l"] +[33.38654438018821, "o", "t"] +[33.41654438018821, "o", "s"] +[33.446544380188215, "o", " "] +[33.476544380188216, "o", "W"] +[33.50654438018822, "o", "H"] +[33.53654438018822, "o", "E"] +[33.56654438018822, "o", "R"] +[33.59654438018822, "o", "E"] +[33.62654438018822, "o", " "] +[33.65654438018822, "o", "c"] +[33.686544380188224, "o", "o"] +[33.716544380188225, "o", "u"] +[33.746544380188226, "o", "n"] +[33.77654438018823, "o", "t"] +[33.80654438018823, "o", "y"] +[33.83654438018823, "o", "_"] +[33.86654438018823, "o", "n"] +[33.89654438018823, "o", "a"] +[33.92654438018823, "o", "m"] +[33.956544380188234, "o", "e"] +[33.986544380188235, "o", " "] +[34.016544380188236, "o", "="] +[34.04654438018824, "o", " "] +[34.07654438018824, "o", "'"] +[34.10654438018824, "o", "N"] +[34.13654438018824, "o", "e"] +[34.16654438018824, "o", "w"] +[34.19654438018824, "o", " "] +[34.226544380188244, "o", "Y"] +[34.256544380188245, "o", "o"] +[34.286544380188246, "o", "r"] +[34.31654438018825, "o", "k"] +[34.34654438018825, "o", " "] +[34.37654438018825, "o", "C"] +[34.40654438018825, "o", "o"] +[34.43654438018825, "o", "u"] +[34.46654438018825, "o", "n"] +[34.496544380188254, "o", "t"] +[34.526544380188255, "o", "y"] +[34.55654438018826, "o", "'"] +[34.58654438018826, "o", "\""] +[34.61654438018826, "o", "\r\n"] +[34.64654438018826, "o", "\u001b[0m"] +[34.67654438018826, "o", "\r\n"] +[35.43929619789151, "o", "Aggregate (cost=37789403.09..37789403.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..37784680.00 rows=1889234 width=20)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 1\r\nMulticorn: Scan through 19 object(s) (25.51 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true,"] +[35.439310503006254, "o", " Deforming true\r\n"] +[35.469310503006255, "o", "\u001b[1m"] +[35.49931050300626, "o", "\u001b[36m"] +[35.52931050300626, "o", "\u001b[91m"] +[35.55931050300626, "o", "$"] +[35.58931050300626, "o", " "] +[35.61931050300626, "o", "\u001b[0m"] +[40.64931050300626, "o", "\u001b[H"] +[40.67931050300626, "o", "\u001b[J"] +[40.709310503006265, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Let's download the whole dataset and add a bloom filter index on county_name"] +[40.739310503006266, "o", "\r\n"] +[40.76931050300627, "o", "$"] +[40.79931050300627, "o", " "] +[40.82931050300627, "o", "s"] +[40.85931050300627, "o", "g"] +[40.88931050300627, "o", "r"] +[40.91931050300627, "o", " "] +[40.949310503006274, "o", "r"] +[40.979310503006275, "o", "e"] +[41.009310503006276, "o", "i"] +[41.03931050300628, "o", "n"] +[41.06931050300628, "o", "d"] +[41.09931050300628, "o", "e"] +[41.12931050300628, "o", "x"] +[41.15931050300628, "o", " "] +[41.18931050300628, "o", "-"] +[41.219310503006284, "o", "i"] +[41.249310503006285, "o", " "] +[41.279310503006286, "o", "'"] +[41.30931050300629, "o", "{"] +[41.33931050300629, "o", "\""] +[41.36931050300629, "o", "b"] +[41.39931050300629, "o", "l"] +[41.42931050300629, "o", "o"] +[41.45931050300629, "o", "o"] +[41.489310503006294, "o", "m"] +[41.519310503006295, "o", "\""] +[41.549310503006296, "o", ":"] +[41.5793105030063, "o", " "] +[41.6093105030063, "o", "{"] +[41.6393105030063, "o", "\""] +[41.6693105030063, "o", "c"] +[41.6993105030063, "o", "o"] +[41.7293105030063, "o", "u"] +[41.759310503006304, "o", "n"] +[41.789310503006305, "o", "t"] +[41.81931050300631, "o", "y"] +[41.84931050300631, "o", "_"] +[41.87931050300631, "o", "n"] +[41.90931050300631, "o", "a"] +[41.93931050300631, "o", "m"] +[41.96931050300631, "o", "e"] +[41.99931050300631, "o", "\""] +[42.029310503006315, "o", ":"] +[42.059310503006316, "o", " "] +[42.08931050300632, "o", "{"] +[42.11931050300632, "o", "\""] +[42.14931050300632, "o", "p"] +[42.17931050300632, "o", "r"] +[42.20931050300632, "o", "o"] +[42.23931050300632, "o", "b"] +[42.269310503006324, "o", "a"] +[42.299310503006325, "o", "b"] +[42.329310503006326, "o", "i"] +[42.35931050300633, "o", "l"] +[42.38931050300633, "o", "i"] +[42.41931050300633, "o", "t"] +[42.44931050300633, "o", "y"] +[42.47931050300633, "o", "\""] +[42.50931050300633, "o", ":"] +[42.539310503006334, "o", " "] +[42.569310503006335, "o", "0"] +[42.599310503006336, "o", "."] +[42.62931050300634, "o", "0"] +[42.65931050300634, "o", "1"] +[42.68931050300634, "o", "}"] +[42.71931050300634, "o", "}"] +[42.74931050300634, "o", "}"] +[42.77931050300634, "o", "'"] +[42.809310503006344, "o", " "] +[42.839310503006345, "o", "\\"] +[42.869310503006346, "o", "\r\n "] +[42.89931050300635, "o", "s"] +[42.92931050300635, "o", "p"] +[42.95931050300635, "o", "l"] +[42.98931050300635, "o", "i"] +[43.01931050300635, "o", "t"] +[43.04931050300635, "o", "g"] +[43.079310503006354, "o", "r"] +[43.109310503006355, "o", "a"] +[43.13931050300636, "o", "p"] +[43.16931050300636, "o", "h"] +[43.19931050300636, "o", "/"] +[43.22931050300636, "o", "2"] +[43.25931050300636, "o", "0"] +[43.28931050300636, "o", "1"] +[43.31931050300636, "o", "6"] +[43.349310503006365, "o", "_"] +[43.379310503006366, "o", "e"] +[43.40931050300637, "o", "l"] +[43.43931050300637, "o", "e"] +[43.46931050300637, "o", "c"] +[43.49931050300637, "o", "t"] +[43.52931050300637, "o", "i"] +[43.55931050300637, "o", "o"] +[43.589310503006374, "o", "n"] +[43.619310503006375, "o", ":"] +[43.649310503006376, "o", "l"] +[43.67931050300638, "o", "a"] +[43.70931050300638, "o", "t"] +[43.73931050300638, "o", "e"] +[43.76931050300638, "o", "s"] +[43.79931050300638, "o", "t"] +[43.82931050300638, "o", " "] +[43.859310503006384, "o", "p"] +[43.889310503006385, "o", "r"] +[43.919310503006386, "o", "e"] +[43.94931050300639, "o", "c"] +[43.97931050300639, "o", "i"] +[44.00931050300639, "o", "n"] +[44.03931050300639, "o", "c"] +[44.06931050300639, "o", "t"] +[44.09931050300639, "o", "_"] +[44.129310503006394, "o", "r"] +[44.159310503006395, "o", "e"] +[44.189310503006396, "o", "s"] +[44.2193105030064, "o", "u"] +[44.2493105030064, "o", "l"] +[44.2793105030064, "o", "t"] +[44.3093105030064, "o", "s"] +[44.3393105030064, "o", "\r\n"] +[44.3693105030064, "o", "\u001b[0m"] +[44.399310503006404, "o", "\r\n"] +[44.6494657135014, "o", "Reindexing table splitgraph/2016_election:3835145ada3f07cad99087d1b1071122d58c48783cbfe4694c101d35651fba90/precinct_results\r\n"] +[44.68511096000714, "o", "Need to download 20 objects (20.19 MiB), cache occupancy: 6.63 MiB/10.00 GiB\r\n"] +[44.74517360687298, "o", "Fetching 15 objects, total size 20.19 MiB\r\n"] +[44.74802103996319, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (ca446922b2844ed19f8e6c8b35edbe31@data.splitgraph.com:5432/sgregistry)...\r\n"] +[45.74802103996319, "o", "\r 0%| | 0/15 [00:00 Foreign Scan on precinct_results (cost=20.00..4000000.00 rows=200000 width=20)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 18\r\nMulticorn: Scan through 2 object(s) (2.64 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Defo"] +[104.48230648040831, "o", "rming true\r\n"] +[104.51230648040831, "o", "\u001b[1m"] +[104.54230648040831, "o", "\u001b[36m"] +[104.57230648040832, "o", "\u001b[91m"] +[104.60230648040832, "o", "$"] +[104.63230648040832, "o", " "] +[104.66230648040832, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.12/dbt.cast b/content/casts/versioned/archive/v0.2.12/dbt.cast new file mode 100644 index 00000000..3f41b6fa --- /dev/null +++ b/content/casts/versioned/archive/v0.2.12/dbt.cast @@ -0,0 +1,2431 @@ +{"version": 2, "width": 100, "height": 48, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1617810511, "metadata": {"tss": [{"h": "dbt must be installed for this to work (pip install dbt)", "ts": 0.06}, {"h": "Ingest the initial data (in CSV) from this branch of the project.", "ts": 12.059999999999999}, {"h": "Snapshot the initial data with Splitgraph.", "ts": 26.791946926117067}, {"h": "Inspect the original data", "ts": 35.915335922241454}, {"h": "The status column in the raw_orders table in the initial dataset can", "ts": 48.915335922241454}, {"h": "Commit this dataset and check out the original data", "ts": 59.652703313827956}, {"h": "Check out the 'serious' version of the dbt project that uses data from", "ts": 69.5207651233679}, {"h": "Check that dbt is set up to connect to the Splitgraph engine.", "ts": 76.50775865554876}, {"h": "Now run the dbt models.", "ts": 100.00775865554876}, {"h": "Take a look at the built dataset and commit it.", "ts": 120.50775865554876}, {"h": "Check out the new version of the raw dataset and run dbt against it as well.", "ts": 135.00775865554874}, {"h": "Create an image from the new data.", "ts": 156.50775865554874}, {"h": "We now have two versions of the source and the target dataset.", "ts": 166.50775865554874}, {"h": "Inspect the difference between the two datasets that dbt built.", "ts": 173.94875334739757}, {"h": "Run a sample query: how much in bank transfer refunds did we process?", "ts": 183.44875334739757}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # dbt must be installed for this to work (pip install dbt)"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Clone the Jaffle Shop dbt example project\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "d"] +[0.27, "o", "b"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "-"] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "v"] +[0.4500000000000002, "o", "e"] +[0.4800000000000002, "o", "r"] +[0.5100000000000002, "o", "s"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "n"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "$"] +[0.6900000000000004, "o", " "] +[0.7200000000000004, "o", "g"] +[0.7500000000000004, "o", "i"] +[0.7800000000000005, "o", "t"] +[0.8100000000000005, "o", " "] +[0.8400000000000005, "o", "c"] +[0.8700000000000006, "o", "l"] +[0.9000000000000006, "o", "o"] +[0.9300000000000006, "o", "n"] +[0.9600000000000006, "o", "e"] +[0.9900000000000007, "o", " "] +[1.0200000000000007, "o", "h"] +[1.0500000000000007, "o", "t"] +[1.0800000000000007, "o", "t"] +[1.1100000000000008, "o", "p"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", ":"] +[1.2000000000000008, "o", "/"] +[1.2300000000000009, "o", "/"] +[1.260000000000001, "o", "g"] +[1.290000000000001, "o", "i"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", "h"] +[1.380000000000001, "o", "u"] +[1.410000000000001, "o", "b"] +[1.440000000000001, "o", "."] +[1.470000000000001, "o", "c"] +[1.500000000000001, "o", "o"] +[1.5300000000000011, "o", "m"] +[1.5600000000000012, "o", "/"] +[1.5900000000000012, "o", "s"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "l"] +[1.6800000000000013, "o", "i"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "g"] +[1.7700000000000014, "o", "r"] +[1.8000000000000014, "o", "a"] +[1.8300000000000014, "o", "p"] +[1.8600000000000014, "o", "h"] +[1.8900000000000015, "o", "/"] +[1.9200000000000015, "o", "j"] +[1.9500000000000015, "o", "a"] +[1.9800000000000015, "o", "f"] +[2.0100000000000016, "o", "f"] +[2.0400000000000014, "o", "l"] +[2.070000000000001, "o", "e"] +[2.100000000000001, "o", "_"] +[2.130000000000001, "o", "s"] +[2.1600000000000006, "o", "h"] +[2.1900000000000004, "o", "o"] +[2.22, "o", "p"] +[2.25, "o", "_"] +[2.28, "o", "a"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "c"] +[2.369999999999999, "o", "h"] +[2.399999999999999, "o", "i"] +[2.429999999999999, "o", "v"] +[2.4599999999999986, "o", "e"] +[2.4899999999999984, "o", "."] +[2.5199999999999982, "o", "g"] +[2.549999999999998, "o", "i"] +[2.579999999999998, "o", "t"] +[2.6099999999999977, "o", "\r\n"] +[2.6399999999999975, "o", "$"] +[2.6699999999999973, "o", " "] +[2.699999999999997, "o", "m"] +[2.729999999999997, "o", "v"] +[2.7599999999999967, "o", " "] +[2.7899999999999965, "o", "j"] +[2.8199999999999963, "o", "a"] +[2.849999999999996, "o", "f"] +[2.879999999999996, "o", "f"] +[2.9099999999999957, "o", "l"] +[2.9399999999999955, "o", "e"] +[2.9699999999999953, "o", "_"] +[2.999999999999995, "o", "s"] +[3.029999999999995, "o", "h"] +[3.0599999999999947, "o", "o"] +[3.0899999999999945, "o", "p"] +[3.1199999999999943, "o", "_"] +[3.149999999999994, "o", "a"] +[3.179999999999994, "o", "r"] +[3.2099999999999937, "o", "c"] +[3.2399999999999936, "o", "h"] +[3.2699999999999934, "o", "i"] +[3.299999999999993, "o", "v"] +[3.329999999999993, "o", "e"] +[3.3599999999999928, "o", " "] +[3.3899999999999926, "o", "j"] +[3.4199999999999924, "o", "a"] +[3.449999999999992, "o", "f"] +[3.479999999999992, "o", "f"] +[3.509999999999992, "o", "l"] +[3.5399999999999916, "o", "e"] +[3.5699999999999914, "o", "_"] +[3.599999999999991, "o", "s"] +[3.629999999999991, "o", "h"] +[3.659999999999991, "o", "o"] +[3.6899999999999906, "o", "p"] +[3.7199999999999904, "o", "\r\n"] +[3.7499999999999902, "o", "\u001b[0m"] +[3.77999999999999, "o", "\r\n"] +[4.7799999999999905, "o", "installed version: 0.18.0\r\n latest version: 0.19.1\r\n\r\nYour version of dbt is out of date! You can find instructions for upgrading here:\r\nhttps://docs.getdbt.com/docs/installation\r\n\r\nPlugins:\r\n - postgres: 0.18.0\r\n - bigquery: 0.18.0\r\n - redshift: 0.18.0\r\n - snowflake: 0.18.0\r\n"] +[4.780647068023672, "o", "\u001b[0m"] +[4.782665519714346, "o", "Cloning into 'jaffle_shop_archive'...\r\n"] +[5.156059532165518, "o", "remote: Enumerating objects: 405, done. "] +[5.1561222362518215, "o", "\r\n"] +[5.156142263412466, "o", "remote: Counting objects: 0% (1/405) \r"] +[5.156158714294424, "o", "remote: Counting objects: 1% (5/405) \r"] +[5.156174926757803, "o", "remote: Counting objects: 2% (9/405) \r"] +[5.156190900802603, "o", "remote: Counting objects: 3% (13/405) \r"] +[5.156205921173086, "o", "remote: Counting objects: 4% (17/405) \r"] +[5.156224994659414, "o", "remote: Counting objects: 5% (21/405) \r"] +[5.156240015029898, "o", "remote: Counting objects: 6% (25/405) \r"] +[5.15625265121459, "o", "remote: Counting objects: 7% (29/405) \r"] +[5.15626600265502, "o", "remote: Counting objects: 8% (33/405) \r"] +[5.1562769699096584, "o", "remote: Counting objects: 9% (37/405) \r"] +[5.156292943954458, "o", "remote: Counting objects: 10% (41/405) \r"] +[5.156304149627676, "o", "remote: Counting objects: 11% (45/405) \r"] +[5.156317262649527, "o", "remote: Counting objects: 12% (49/405) \r"] +[5.156328468322744, "o", "remote: Counting objects: 13% (53/405) \r"] +[5.156341342926016, "o", "remote: Counting objects: 14% (57/405) \r"] +[5.1563523101806545, "o", "remote: Counting objects: 15% (61/405) \r"] +[5.156367330551138, "o", "remote: Counting objects: 16% (65/405) \r"] +[5.156383781433096, "o", "remote: Counting objects: 17% (69/405) \r"] +[5.156395702362051, "o", "remote: Counting objects: 18% (73/405) \r"] +[5.1564085769653225, "o", "remote: Counting objects: 19% (77/405) \r"] +[5.15641978263854, "o", "remote: Counting objects: 20% (81/405) \r"] +[5.156434803009024, "o", "remote: Counting objects: 21% (86/405) \r"] +[5.156447677612295, "o", "remote: Counting objects: 22% (90/405) \r"] +[5.156458883285513, "o", "remote: Counting objects: 23% (94/405) \r"] +[5.156471757888784, "o", "remote: Counting objects: 24% (98/405) \r"] +[5.156482963562002, "o", "remote: Counting objects: 25% (102/405) \r"] +[5.156495838165274, "o", "remote: Counting objects: 26% (106/405) \r"] +[5.156508951187124, "o", "remote: Counting objects: 27% (110/405) \r"] +[5.15652325630187, "o", "remote: Counting objects: 28% (114/405) \r"] +[5.1565366077423, "o", "remote: Counting objects: 29% (118/405) \r"] +[5.156549720764151, "o", "remote: Counting objects: 30% (122/405) \r"] +[5.156560926437368, "o", "remote: Counting objects: 31% (126/405) \r"] +[5.156649856567373, "o", "remote: Counting objects: 32% (130/405) \r"] +[5.156664161682119, "o", "remote: Counting objects: 33% (134/405) \r"] +[5.156675844192495, "o", "remote: Counting objects: 34% (138/405) \r"] +[5.156689434051504, "o", "remote: Counting objects: 35% (142/405) \r"] +[5.156703023910513, "o", "remote: Counting objects: 36% (146/405) \r"] +[5.156714944839468, "o", "remote: Counting objects: 37% (150/405) \r"] +[5.156728534698477, "o", "remote: Counting objects: 38% (154/405) \r"] +[5.1567418861389065, "o", "remote: Counting objects: 39% (158/405) \r"] +[5.156752853393545, "o", "remote: Counting objects: 40% (162/405) \r"] +[5.156766204833975, "o", "remote: Counting objects: 41% (167/405) \r"] +[5.1567795562744045, "o", "remote: Counting objects: 42% (171/405) \r"] +[5.156790523529043, "o", "remote: Counting objects: 43% (175/405) \r"] +[5.156803636550894, "o", "remote: Counting objects: 44% (179/405) \r"] +[5.156816511154165, "o", "remote: Counting objects: 45% (183/405) \r"] +[5.156827478408804, "o", "remote: Counting objects: 46% (187/405) \r"] +[5.1568405914306545, "o", "remote: Counting objects: 47% (191/405) \r"] +[5.156851797103872, "o", "remote: Counting objects: 48% (195/405) \r"] +[5.156867532730093, "o", "remote: Counting objects: 49% (199/405) \r"] +[5.156880645751944, "o", "remote: Counting objects: 50% (203/405) \r"] +[5.15689232826232, "o", "remote: Counting objects: 51% (207/405) \r"] +[5.15690544128417, "o", "remote: Counting objects: 52% (211/405) \r"] +[5.1569226074218655, "o", "remote: Counting objects: 53% (215/405) \r"] +[5.1569347667694, "o", "remote: Counting objects: 54% (219/405) \r"] +[5.156948118209829, "o", "remote: Counting objects: 55% (223/405) \r"] +[5.156961469650259, "o", "remote: Counting objects: 56% (227/405) \r"] +[5.156972675323477, "o", "remote: Counting objects: 57% (231/405) \r"] +[5.156985788345327, "o", "remote: Counting objects: 58% (235/405) \r"] +[5.156996994018545, "o", "remote: Counting objects: 59% (239/405) \r"] +[5.157007961273184, "o", "remote: Counting objects: 60% (243/405) \r"] +[5.157022027969351, "o", "remote: Counting objects: 61% (248/405) \r"] +[5.1570329952239895, "o", "remote: Counting objects: 62% (252/405) \r"] +[5.157043962478628, "o", "remote: Counting objects: 63% (256/405) \r"] +[5.157057313919058, "o", "remote: Counting objects: 64% (260/405) \r"] +[5.157068042755117, "o", "remote: Counting objects: 65% (264/405) \r"] +[5.157080917358389, "o", "remote: Counting objects: 66% (268/405) \r"] +[5.157092123031607, "o", "remote: Counting objects: 67% (272/405) \r"] +[5.157110242843618, "o", "remote: Counting objects: 68% (276/405) \r"] +[5.157123594284048, "o", "remote: Counting objects: 69% (280/405) \r"] +[5.1574390220641995, "o", "remote: Counting objects: 70% (284/405) \r"] +[5.157463817596426, "o", "remote: Counting objects: 71% (288/405) \r"] +[5.157477884292593, "o", "remote: Counting objects: 72% (292/405) \r"] +[5.157489089965811, "o", "remote: Counting objects: 73% (296/405) \r"] +[5.1575024414062405, "o", "remote: Counting objects: 74% (300/405) \r"] +[5.157513885498037, "o", "remote: Counting objects: 75% (304/405) \r"] +[5.15753176689147, "o", "remote: Counting objects: 76% (308/405) \r"] +[5.157545595169058, "o", "remote: Counting objects: 77% (312/405) \r"] +[5.157557039260855, "o", "remote: Counting objects: 78% (316/405) \r"] +[5.1575706291198635, "o", "remote: Counting objects: 79% (320/405) \r"] +[5.157581596374502, "o", "remote: Counting objects: 80% (324/405) \r"] +[5.15759542465209, "o", "remote: Counting objects: 81% (329/405) \r"] +[5.15760877609252, "o", "remote: Counting objects: 82% (333/405) \r"] +[5.1576199817657375, "o", "remote: Counting objects: 83% (337/405) \r"] +[5.157633094787588, "o", "remote: Counting objects: 84% (341/405) \r"] +[5.157647161483755, "o", "remote: Counting objects: 85% (345/405) \r"] +[5.157658128738394, "o", "remote: Counting objects: 86% (349/405) \r"] +[5.157671003341665, "o", "remote: Counting objects: 87% (353/405) \r"] +[5.157682209014883, "o", "remote: Counting objects: 88% (357/405) \r"] +[5.157695560455313, "o", "remote: Counting objects: 89% (361/405) \r"] +[5.15770962715148, "o", "remote: Counting objects: 90% (365/405) \r"] +[5.1577208328246975, "o", "remote: Counting objects: 91% (369/405) \r"] +[5.157733945846548, "o", "remote: Counting objects: 92% (373/405) \r"] +[5.157744913101187, "o", "remote: Counting objects: 93% (377/405) \r"] +[5.157758026123037, "o", "remote: Counting objects: 94% (381/405) \r"] +[5.157771139144888, "o", "remote: Counting objects: 95% (385/405) \r"] +[5.157782344818106, "o", "remote: Counting objects: 96% (389/405) \r"] +[5.157795219421377, "o", "remote: Counting objects: 97% (393/405) \r"] +[5.157808570861807, "o", "remote: Counting objects: 98% (397/405) \r"] +[5.157819776535025, "o", "remote: Counting objects: 99% (401/405) \r"] +[5.157832889556875, "o", "remote: Counting objects: 100% (405/405) \r"] +[5.157846479415884, "o", "remote: Counting objects: 100% (405/405), done. "] +[5.1578569698333645, "o", "\r\n"] +[5.157873659133902, "o", "remote: Compressing objects: 0% (1/174) \r"] +[5.1578851032256985, "o", "remote: Compressing objects: 1% (2/174) \r"] +[5.157898216247549, "o", "remote: Compressing objects: 2% (4/174) \r"] +[5.157909660339346, "o", "remote: Compressing objects: 3% (6/174) \r"] +[5.157922534942617, "o", "remote: Compressing objects: 4% (7/174) \r"] +[5.157933979034414, "o", "remote: Compressing objects: 5% (9/174) \r"] +[5.157947807312002, "o", "remote: Compressing objects: 6% (11/174) \r"] +[5.157959251403799, "o", "remote: Compressing objects: 7% (13/174) \r"] +[5.15797236442565, "o", "remote: Compressing objects: 8% (14/174) \r"] +[5.157983331680288, "o", "remote: Compressing objects: 9% (16/174) \r"] +[5.157996444702139, "o", "remote: Compressing objects: 10% (18/174) \r"] +[5.158007888793936, "o", "remote: Compressing objects: 11% (20/174) \r"] +[5.158021001815786, "o", "remote: Compressing objects: 12% (21/174) \r"] +[5.158032207489004, "o", "remote: Compressing objects: 13% (23/174) \r"] +[5.158045797348013, "o", "remote: Compressing objects: 14% (25/174) \r"] +[5.158056764602652, "o", "remote: Compressing objects: 15% (27/174) \r"] +[5.158070116043081, "o", "remote: Compressing objects: 16% (28/174) \r"] +[5.15808108329772, "o", "remote: Compressing objects: 17% (30/174) \r"] +[5.158094196319571, "o", "remote: Compressing objects: 18% (32/174) \r"] +[5.1581058788299465, "o", "remote: Compressing objects: 19% (34/174) \r"] +[5.158119230270376, "o", "remote: Compressing objects: 20% (35/174) \r"] +[5.158131151199331, "o", "remote: Compressing objects: 21% (37/174) \r"] +[5.158144025802603, "o", "remote: Compressing objects: 22% (39/174) \r"] +[5.1581554698944, "o", "remote: Compressing objects: 23% (41/174) \r"] +[5.158168344497671, "o", "remote: Compressing objects: 24% (42/174) \r"] +[5.158180027008047, "o", "remote: Compressing objects: 25% (44/174) \r"] +[5.158192901611319, "o", "remote: Compressing objects: 26% (46/174) \r"] +[5.158206491470327, "o", "remote: Compressing objects: 27% (47/174) \r"] +[5.158220081329336, "o", "remote: Compressing objects: 28% (49/174) \r"] +[5.158231525421133, "o", "remote: Compressing objects: 29% (51/174) \r"] +[5.158244638442984, "o", "remote: Compressing objects: 30% (53/174) \r"] +[5.158255844116201, "o", "remote: Compressing objects: 31% (54/174) \r"] +[5.158269195556631, "o", "remote: Compressing objects: 32% (56/174) \r"] +[5.158280401229849, "o", "remote: Compressing objects: 33% (58/174) \r"] +[5.158294229507437, "o", "remote: Compressing objects: 34% (60/174) \r"] +[5.158305673599234, "o", "remote: Compressing objects: 35% (61/174) \r"] +[5.158318786621084, "o", "remote: Compressing objects: 36% (63/174) \r"] +[5.158329992294302, "o", "remote: Compressing objects: 37% (65/174) \r"] +[5.158343343734732, "o", "remote: Compressing objects: 38% (67/174) \r"] +[5.158355026245108, "o", "remote: Compressing objects: 39% (68/174) \r"] +[5.158368139266958, "o", "remote: Compressing objects: 40% (70/174) \r"] +[5.158379344940176, "o", "remote: Compressing objects: 41% (72/174) \r"] +[5.158392696380606, "o", "remote: Compressing objects: 42% (74/174) \r"] +[5.158404617309561, "o", "remote: Compressing objects: 43% (75/174) \r"] +[5.1584179687499905, "o", "remote: Compressing objects: 44% (77/174) \r"] +[5.158429174423208, "o", "remote: Compressing objects: 45% (79/174) \r"] +[5.158442287445059, "o", "remote: Compressing objects: 46% (81/174) \r"] +[5.158453493118277, "o", "remote: Compressing objects: 47% (82/174) \r"] +[5.158466606140127, "o", "remote: Compressing objects: 48% (84/174) \r"] +[5.158479719161978, "o", "remote: Compressing objects: 49% (86/174) \r"] +[5.158493309020987, "o", "remote: Compressing objects: 50% (87/174) \r"] +[5.158506660461416, "o", "remote: Compressing objects: 51% (89/174) \r"] +[5.158520011901846, "o", "remote: Compressing objects: 52% (91/174) \r"] +[5.158530979156485, "o", "remote: Compressing objects: 53% (93/174) \r"] +[5.158544330596914, "o", "remote: Compressing objects: 54% (94/174) \r"] +[5.15855601310729, "o", "remote: Compressing objects: 55% (96/174) \r"] +[5.158569602966299, "o", "remote: Compressing objects: 56% (98/174) \r"] +[5.158580808639517, "o", "remote: Compressing objects: 57% (100/174) \r"] +[5.158593921661367, "o", "remote: Compressing objects: 58% (101/174) \r"] +[5.158605127334585, "o", "remote: Compressing objects: 59% (103/174) \r"] +[5.158618478775015, "o", "remote: Compressing objects: 60% (105/174) \r"] +[5.158629684448233, "o", "remote: Compressing objects: 61% (107/174) \r"] +[5.158643035888662, "o", "remote: Compressing objects: 62% (108/174) \r"] +[5.15865424156188, "o", "remote: Compressing objects: 63% (110/174) \r"] +[5.158667831420889, "o", "remote: Compressing objects: 64% (112/174) \r"] +[5.158678798675528, "o", "remote: Compressing objects: 65% (114/174) \r"] +[5.158692150115957, "o", "remote: Compressing objects: 66% (115/174) \r"] +[5.158703832626333, "o", "remote: Compressing objects: 67% (117/174) \r"] +[5.158717184066763, "o", "remote: Compressing objects: 68% (119/174) \r"] +[5.158728389739981, "o", "remote: Compressing objects: 69% (121/174) \r"] +[5.1587419795989895, "o", "remote: Compressing objects: 70% (122/174) \r"] +[5.158752946853628, "o", "remote: Compressing objects: 71% (124/174) \r"] +[5.158768205642691, "o", "remote: Compressing objects: 72% (126/174) \r"] +[5.1587794113159084, "o", "remote: Compressing objects: 73% (128/174) \r"] +[5.158792762756338, "o", "remote: Compressing objects: 74% (129/174) \r"] +[5.158804445266714, "o", "remote: Compressing objects: 75% (131/174) \r"] +[5.158817319869986, "o", "remote: Compressing objects: 76% (133/174) \r"] +[5.1588287639617825, "o", "remote: Compressing objects: 77% (134/174) \r"] +[5.158843784332266, "o", "remote: Compressing objects: 78% (136/174) \r"] +[5.158855228424063, "o", "remote: Compressing objects: 79% (138/174) \r"] +[5.158868579864492, "o", "remote: Compressing objects: 80% (140/174) \r"] +[5.15887978553771, "o", "remote: Compressing objects: 81% (141/174) \r"] +[5.15889313697814, "o", "remote: Compressing objects: 82% (143/174) \r"] +[5.158904342651358, "o", "remote: Compressing objects: 83% (145/174) \r"] +[5.1589179325103665, "o", "remote: Compressing objects: 84% (147/174) \r"] +[5.158929138183584, "o", "remote: Compressing objects: 85% (148/174) \r"] +[5.158942489624014, "o", "remote: Compressing objects: 86% (150/174) \r"] +[5.15895417213439, "o", "remote: Compressing objects: 87% (152/174) \r"] +[5.158967046737661, "o", "remote: Compressing objects: 88% (154/174) \r"] +[5.1589780139923, "o", "remote: Compressing objects: 89% (155/174) \r"] +[5.15899136543273, "o", "remote: Compressing objects: 90% (157/174) \r"] +[5.1590025711059475, "o", "remote: Compressing objects: 91% (159/174) \r"] +[5.159016160964956, "o", "remote: Compressing objects: 92% (161/174) \r"] +[5.159027366638174, "o", "remote: Compressing objects: 93% (162/174) \r"] +[5.159040718078604, "o", "remote: Compressing objects: 94% (164/174) \r"] +[5.1590519237518215, "o", "remote: Compressing objects: 95% (166/174) \r"] +[5.159065275192251, "o", "remote: Compressing objects: 96% (168/174) \r"] +[5.159076957702627, "o", "remote: Compressing objects: 97% (169/174) \r"] +[5.159090070724478, "o", "remote: Compressing objects: 98% (171/174) \r"] +[5.159101514816275, "o", "remote: Compressing objects: 99% (173/174) \r"] +[5.159114866256704, "o", "remote: Compressing objects: 100% (174/174) \r"] +[5.159128694534292, "o", "remote: Compressing objects: 100% (174/174), done. "] +[5.159144191741934, "o", "\r\n"] +[5.189643888473501, "o", "Receiving objects: 0% (1/405)\r"] +[5.189660577774038, "o", "Receiving objects: 1% (5/405)\r"] +[5.189666538238516, "o", "Receiving objects: 2% (9/405)\r"] +[5.189725427627554, "o", "Receiving objects: 3% (13/405)\r"] +[5.190145521163931, "o", "Receiving objects: 4% (17/405)\rReceiving objects: 5% (21/405)\rReceiving objects: 6% (25/405)\rReceiving objects: 7% (29/405)\rReceiving objects: 8% (33/405)\rReceiving objects: 9% (37/405)\r"] +[5.190767078399649, "o", "Receiving objects: 10% (41/405)\rReceiving objects: 11% (45/405)\rReceiving objects: 12% (49/405)\rReceiving objects: 13% (53/405)\rReceiving objects: 14% (57/405)\rReceiving objects: 15% (61/405)\rReceiving objects: 16% (65/405)\rReceiving objects: 17% (69/405)\rReceiving objects: 18% (73/405)\r"] +[5.190775899887075, "o", "Receiving objects: 19% (77/405)\r"] +[5.191146402358999, "o", "Receiving objects: 20% (81/405)\r"] +[5.2181854534149075, "o", "Receiving objects: 21% (86/405)\r"] +[5.218635587692251, "o", "Receiving objects: 22% (90/405)\r"] +[5.218642978668203, "o", "Receiving objects: 23% (94/405)\r"] +[5.2189014244079495, "o", "Receiving objects: 24% (98/405)\r"] +[5.218999891281118, "o", "Receiving objects: 25% (102/405)\r"] +[5.245339660644522, "o", "Receiving objects: 26% (106/405)\rReceiving objects: 27% (110/405)\rReceiving objects: 28% (114/405)\rReceiving objects: 29% (118/405)\r"] +[5.245356588363638, "o", "Receiving objects: 30% (122/405)\r"] +[5.246363430023184, "o", "Receiving objects: 31% (126/405)\rReceiving objects: 32% (130/405)\rReceiving objects: 33% (134/405)\r"] +[5.24637511253356, "o", "Receiving objects: 34% (138/405)\r"] +[5.250336675643911, "o", "Receiving objects: 35% (142/405)\r"] +[5.251106290817251, "o", "Receiving objects: 36% (146/405)\r"] +[5.251119403839102, "o", "Receiving objects: 37% (150/405)\rReceiving objects: 38% (154/405)\rReceiving objects: 39% (158/405)\r"] +[5.272931127548208, "o", "remote: Total 405 (delta 191), reused 405 (delta 191), pack-reused 0 "] +[5.273212461471548, "o", "\r\n"] +[5.2734740066528225, "o", "Receiving objects: 40% (162/405)\r"] +[5.273622541427603, "o", "Receiving objects: 41% (167/405)\rReceiving objects: 42% (171/405)\r"] +[5.273955612182608, "o", "Receiving objects: 43% (175/405)\r"] +[5.27408769607543, "o", "Receiving objects: 44% (179/405)\r"] +[5.27450421333312, "o", "Receiving objects: 45% (183/405)\r"] +[5.274561672210684, "o", "Receiving objects: 46% (187/405)\r"] +[5.274760274887075, "o", "Receiving objects: 47% (191/405)\r"] +[5.275165824890127, "o", "Receiving objects: 48% (195/405)\r"] +[5.275214939117422, "o", "Receiving objects: 49% (199/405)\r"] +[5.2756781864166165, "o", "Receiving objects: 50% (203/405)\r"] +[5.2757370758056545, "o", "Receiving objects: 51% (207/405)\r"] +[5.275794534683218, "o", "Receiving objects: 52% (211/405)\r"] +[5.275830535888662, "o", "Receiving objects: 53% (215/405)\r"] +[5.27586820602416, "o", "Receiving objects: 54% (219/405)\r"] +[5.275906829833975, "o", "Receiving objects: 55% (223/405)\r"] +[5.275965480804434, "o", "Receiving objects: 56% (227/405)\r"] +[5.276046543121328, "o", "Receiving objects: 57% (231/405)\r"] +[5.276091842651358, "o", "Receiving objects: 58% (235/405)\r"] +[5.2761829185485745, "o", "Receiving objects: 59% (239/405)\r"] +[5.276233463287344, "o", "Receiving objects: 60% (243/405)\r"] +[5.2763285923004055, "o", "Receiving objects: 61% (248/405)\r"] +[5.276398687362661, "o", "Receiving objects: 62% (252/405)\r"] +[5.276460437774649, "o", "Receiving objects: 63% (256/405)\r"] +[5.276527433395376, "o", "Receiving objects: 64% (260/405)\r"] +[5.276580362319937, "o", "Receiving objects: 65% (264/405)\r"] +[5.276658325195303, "o", "Receiving objects: 66% (268/405)\r"] +[5.2767441558837795, "o", "Receiving objects: 67% (272/405)\r"] +[5.276803045272818, "o", "Receiving objects: 68% (276/405)\r"] +[5.276852636337271, "o", "Receiving objects: 69% (280/405)\r"] +[5.276907472610464, "o", "Receiving objects: 70% (284/405)\r"] +[5.277002124786367, "o", "Receiving objects: 71% (288/405)\r"] +[5.277042894363394, "o", "Receiving objects: 72% (292/405)\r"] +[5.277087001800528, "o", "Receiving objects: 73% (296/405)\r"] +[5.277126340866079, "o", "Receiving objects: 74% (300/405)\r"] +[5.277184038162222, "o", "Receiving objects: 75% (304/405)\r"] +[5.277252225875845, "o", "Receiving objects: 76% (308/405)\r"] +[5.27731469154357, "o", "Receiving objects: 77% (312/405)\r"] +[5.2773709583282375, "o", "Receiving objects: 78% (316/405)\r"] +[5.277480869293203, "o", "Receiving objects: 79% (320/405)\r"] +[5.277527360916128, "o", "Receiving objects: 80% (324/405)\r"] +[5.277595548629751, "o", "Receiving objects: 81% (329/405)\r"] +[5.277656345367422, "o", "Receiving objects: 82% (333/405)\r"] +[5.277710227966299, "o", "Receiving objects: 83% (337/405)\r"] +[5.277773170471182, "o", "Receiving objects: 84% (341/405)\r"] +[5.277865200042715, "o", "Receiving objects: 85% (345/405)\r"] +[5.277912883758535, "o", "Receiving objects: 86% (349/405)\r"] +[5.277954368591299, "o", "Receiving objects: 87% (353/405)\r"] +[5.277997283935537, "o", "Receiving objects: 88% (357/405)\r"] +[5.278047828674307, "o", "Receiving objects: 89% (361/405)\r"] +[5.278225688934317, "o", "Receiving objects: 90% (365/405)\r"] +[5.278339653015127, "o", "Receiving objects: 91% (369/405)\r"] +[5.278390436172476, "o", "Receiving objects: 92% (373/405)\r"] +[5.278463153839102, "o", "Receiving objects: 93% (377/405)\r"] +[5.278510122299185, "o", "Receiving objects: 94% (381/405)\r"] +[5.278570203781118, "o", "Receiving objects: 95% (385/405)\r"] +[5.278689413070669, "o", "Receiving objects: 96% (389/405)\r"] +[5.278732089996328, "o", "Receiving objects: 97% (393/405)\r"] +[5.278788118362417, "o", "Receiving objects: 98% (397/405)\r"] +[5.278832941055288, "o", "Receiving objects: 99% (401/405)\r"] +[5.2789390373229885, "o", "Receiving objects: 100% (405/405)\r"] +[5.278991489410391, "o", "Receiving objects: 100% (405/405), 270.20 KiB | 2.94 MiB/s, done.\r\n"] +[5.27928617477416, "o", "Resolving deltas: 0% (0/191)\r"] +[5.279415874481192, "o", "Resolving deltas: 1% (2/191)\r"] +[5.2795141029357815, "o", "Resolving deltas: 2% (4/191)\r"] +[5.279644041061392, "o", "Resolving deltas: 3% (6/191)\r"] +[5.279801397323599, "o", "Resolving deltas: 4% (8/191)\r"] +[5.2799341964721584, "o", "Resolving deltas: 5% (10/191)\r"] +[5.28005316734313, "o", "Resolving deltas: 6% (12/191)\r"] +[5.280165700912466, "o", "Resolving deltas: 7% (14/191)\r"] +[5.280249862670889, "o", "Resolving deltas: 8% (16/191)\r"] +[5.280305891036978, "o", "Resolving deltas: 9% (18/191)\r"] +[5.280369787216177, "o", "Resolving deltas: 10% (20/191)\r"] +[5.28049638748168, "o", "Resolving deltas: 11% (22/191)\r"] +[5.280542879104605, "o", "Resolving deltas: 12% (23/191)\r"] +[5.280601291656485, "o", "Resolving deltas: 13% (25/191)\r"] +[5.2806597042083645, "o", "Resolving deltas: 14% (27/191)\r"] +[5.280724077224722, "o", "Resolving deltas: 15% (29/191)\r"] +[5.280792264938345, "o", "Resolving deltas: 16% (31/191)\r"] +[5.280839710235586, "o", "Resolving deltas: 17% (33/191)\r"] +[5.280879049301138, "o", "Resolving deltas: 18% (35/191)\r"] +[5.280933170318594, "o", "Resolving deltas: 19% (37/191)\r"] +[5.280982999801626, "o", "Resolving deltas: 20% (39/191)\r"] +[5.281041650772085, "o", "Resolving deltas: 21% (41/191)\r"] +[5.281100778579702, "o", "Resolving deltas: 22% (43/191)\r"] +[5.281138210296621, "o", "Resolving deltas: 23% (44/191)\r"] +[5.281184225082388, "o", "Resolving deltas: 24% (46/191)\r"] +[5.281270771026602, "o", "Resolving deltas: 25% (48/191)\r"] +[5.281331329345694, "o", "Resolving deltas: 26% (50/191)\r"] +[5.2813849735259915, "o", "Resolving deltas: 27% (52/191)\r"] +[5.281438140869131, "o", "Resolving deltas: 28% (54/191)\r"] +[5.281487731933584, "o", "Resolving deltas: 29% (56/191)\r"] +[5.2815354156494045, "o", "Resolving deltas: 30% (58/191)\r"] +[5.281569271087637, "o", "Resolving deltas: 31% (60/191)\r"] +[5.281612186431875, "o", "Resolving deltas: 32% (62/191)\r"] +[5.281656770706167, "o", "Resolving deltas: 33% (64/191)\r"] +[5.2816644001006985, "o", "Resolving deltas: 34% (65/191)\r"] +[5.281709461212149, "o", "Resolving deltas: 35% (67/191)\r"] +[5.281747369766226, "o", "Resolving deltas: 36% (69/191)\r"] +[5.281791000366201, "o", "Resolving deltas: 37% (71/191)\r"] +[5.2818286705016995, "o", "Resolving deltas: 38% (73/191)\r"] +[5.281880645751944, "o", "Resolving deltas: 39% (75/191)\r"] +[5.2819180774688625, "o", "Resolving deltas: 40% (77/191)\r"] +[5.281960992813101, "o", "Resolving deltas: 41% (79/191)\r"] +[5.282006053924551, "o", "Resolving deltas: 42% (81/191)\r"] +[5.282042531967154, "o", "Resolving deltas: 43% (83/191)\r"] +[5.282085208892813, "o", "Resolving deltas: 44% (85/191)\r"] +[5.2821173954009915, "o", "Resolving deltas: 45% (86/191)\r"] +[5.282156019210806, "o", "Resolving deltas: 46% (88/191)\r"] +[5.282194166183462, "o", "Resolving deltas: 47% (90/191)\r"] +[5.282239227294912, "o", "Resolving deltas: 48% (92/191)\r"] +[5.282283096313467, "o", "Resolving deltas: 49% (94/191)\r"] +[5.282321243286123, "o", "Resolving deltas: 50% (96/191)\r"] +[5.282361774444571, "o", "Resolving deltas: 51% (98/191)\r"] +[5.282403497695913, "o", "Resolving deltas: 52% (100/191)\r"] +[5.282449989318838, "o", "Resolving deltas: 53% (102/191)\r"] +[5.282492189407339, "o", "Resolving deltas: 54% (104/191)\r"] +[5.2825305747985745, "o", "Resolving deltas: 55% (106/191)\r"] +[5.282560377120962, "o", "Resolving deltas: 56% (107/191)\r"] +[5.282608537673941, "o", "Resolving deltas: 57% (109/191)\r"] +[5.282649307250967, "o", "Resolving deltas: 58% (111/191)\r"] +[5.282692461013784, "o", "Resolving deltas: 59% (113/191)\r"] +[5.282734184265127, "o", "Resolving deltas: 60% (115/191)\r"] +[5.282779960632315, "o", "Resolving deltas: 61% (117/191)\r"] +[5.282822637557974, "o", "Resolving deltas: 62% (119/191)\r"] +[5.282932310104361, "o", "Resolving deltas: 63% (121/191)\r"] +[5.283020763397207, "o", "Resolving deltas: 64% (123/191)\r"] +[5.283072261810293, "o", "Resolving deltas: 65% (125/191)\r"] +[5.2831104087829495, "o", "Resolving deltas: 66% (127/191)\r"] +[5.283143548965445, "o", "Resolving deltas: 67% (128/191)\r"] +[5.283211259841909, "o", "Resolving deltas: 68% (130/191)\r"] +[5.283259897232046, "o", "Resolving deltas: 69% (132/191)\r"] +[5.283299236297598, "o", "Resolving deltas: 70% (134/191)\r"] +[5.283355264663687, "o", "Resolving deltas: 71% (136/191)\r"] +[5.286816864013662, "o", "Resolving deltas: 72% (138/191)\r"] +[5.28733232498168, "o", "Resolving deltas: 73% (140/191)\r"] +[5.2877092647552395, "o", "Resolving deltas: 74% (142/191)\r"] +[5.287944345474234, "o", "Resolving deltas: 75% (144/191)\r"] +[5.290385751724234, "o", "Resolving deltas: 76% (146/191)\r"] +[5.291223316192617, "o", "Resolving deltas: 77% (148/191)\r"] +[5.291229991912832, "o", "Resolving deltas: 78% (149/191)\r"] +[5.291741399765005, "o", "Resolving deltas: 79% (151/191)\r"] +[5.293275861740103, "o", "Resolving deltas: 80% (153/191)\r"] +[5.294348983764639, "o", "Resolving deltas: 81% (155/191)\r"] +[5.294381170272818, "o", "Resolving deltas: 82% (157/191)\r"] +[5.2944512653350735, "o", "Resolving deltas: 83% (159/191)\r"] +[5.2944982337951565, "o", "Resolving deltas: 84% (161/191)\r"] +[5.294537334442129, "o", "Resolving deltas: 85% (163/191)\r"] +[5.29458477973937, "o", "Resolving deltas: 86% (165/191)\r"] +[5.294621019363394, "o", "Resolving deltas: 87% (167/191)\r"] +[5.2946837234496975, "o", "Resolving deltas: 88% (169/191)\r"] +[5.294714002609243, "o", "Resolving deltas: 89% (170/191)\r"] +[5.29476526260375, "o", "Resolving deltas: 90% (172/191)\r"] +[5.294803647994986, "o", "Resolving deltas: 91% (174/191)\r"] +[5.294847040176382, "o", "Resolving deltas: 92% (176/191)\r"] +[5.2949583816528225, "o", "Resolving deltas: 93% (178/191)\r"] +[5.295018701553335, "o", "Resolving deltas: 94% (180/191)\r"] +[5.295055656433096, "o", "Resolving deltas: 95% (182/191)\r"] +[5.295118122100821, "o", "Resolving deltas: 96% (184/191)\r"] +[5.2951696205139065, "o", "Resolving deltas: 97% (186/191)\r"] +[5.295209197998037, "o", "Resolving deltas: 98% (188/191)\r"] +[5.295506982803335, "o", "Resolving deltas: 99% (190/191)\r"] +[5.296812562942495, "o", "Resolving deltas: 100% (191/191)\r"] +[5.296836881637564, "o", "Resolving deltas: 100% (191/191), done."] +[5.296865730285635, "o", "\r\n"] +[5.326865730285635, "o", "\u001b[1m"] +[5.3568657302856355, "o", "\u001b[36m"] +[5.386865730285636, "o", "\u001b[91m"] +[5.416865730285636, "o", "$"] +[5.446865730285636, "o", " "] +[5.4768657302856365, "o", "\u001b[0m"] +[12.03, "o", "\u001b[H"] +[12.059999999999999, "o", "\u001b[J"] +[12.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the initial data (in CSV) from this branch of the project."] +[12.119999999999997, "o", "\r\n"] +[12.149999999999997, "o", "$"] +[12.179999999999996, "o", " "] +[12.209999999999996, "o", "s"] +[12.239999999999995, "o", "g"] +[12.269999999999994, "o", "r"] +[12.299999999999994, "o", " "] +[12.329999999999993, "o", "i"] +[12.359999999999992, "o", "n"] +[12.389999999999992, "o", "i"] +[12.419999999999991, "o", "t"] +[12.44999999999999, "o", " "] +[12.47999999999999, "o", "r"] +[12.50999999999999, "o", "a"] +[12.539999999999988, "o", "w"] +[12.569999999999988, "o", "_"] +[12.599999999999987, "o", "j"] +[12.629999999999987, "o", "a"] +[12.659999999999986, "o", "f"] +[12.689999999999985, "o", "f"] +[12.719999999999985, "o", "l"] +[12.749999999999984, "o", "e"] +[12.779999999999983, "o", "_"] +[12.809999999999983, "o", "s"] +[12.839999999999982, "o", "h"] +[12.869999999999981, "o", "o"] +[12.89999999999998, "o", "p"] +[12.92999999999998, "o", "\r\n"] +[12.95999999999998, "o", "$"] +[12.989999999999979, "o", " "] +[13.019999999999978, "o", "s"] +[13.049999999999978, "o", "g"] +[13.079999999999977, "o", "r"] +[13.109999999999976, "o", " "] +[13.139999999999976, "o", "c"] +[13.169999999999975, "o", "s"] +[13.199999999999974, "o", "v"] +[13.229999999999974, "o", " "] +[13.259999999999973, "o", "i"] +[13.289999999999973, "o", "m"] +[13.319999999999972, "o", "p"] +[13.349999999999971, "o", "o"] +[13.37999999999997, "o", "r"] +[13.40999999999997, "o", "t"] +[13.43999999999997, "o", " "] +[13.469999999999969, "o", "-"] +[13.499999999999968, "o", "f"] +[13.529999999999967, "o", " "] +[13.559999999999967, "o", "j"] +[13.589999999999966, "o", "a"] +[13.619999999999965, "o", "f"] +[13.649999999999965, "o", "f"] +[13.679999999999964, "o", "l"] +[13.709999999999964, "o", "e"] +[13.739999999999963, "o", "_"] +[13.769999999999962, "o", "s"] +[13.799999999999962, "o", "h"] +[13.829999999999961, "o", "o"] +[13.85999999999996, "o", "p"] +[13.88999999999996, "o", "/"] +[13.919999999999959, "o", "d"] +[13.949999999999958, "o", "a"] +[13.979999999999958, "o", "t"] +[14.009999999999957, "o", "a"] +[14.039999999999957, "o", "/"] +[14.069999999999956, "o", "r"] +[14.099999999999955, "o", "a"] +[14.129999999999955, "o", "w"] +[14.159999999999954, "o", "_"] +[14.189999999999953, "o", "c"] +[14.219999999999953, "o", "u"] +[14.249999999999952, "o", "s"] +[14.279999999999951, "o", "t"] +[14.30999999999995, "o", "o"] +[14.33999999999995, "o", "m"] +[14.36999999999995, "o", "e"] +[14.399999999999949, "o", "r"] +[14.429999999999948, "o", "s"] +[14.459999999999948, "o", "."] +[14.489999999999947, "o", "c"] +[14.519999999999946, "o", "s"] +[14.549999999999946, "o", "v"] +[14.579999999999945, "o", " "] +[14.609999999999944, "o", "-"] +[14.639999999999944, "o", "k"] +[14.669999999999943, "o", " "] +[14.699999999999942, "o", "i"] +[14.729999999999942, "o", "d"] +[14.759999999999941, "o", " "] +[14.78999999999994, "o", "r"] +[14.81999999999994, "o", "a"] +[14.84999999999994, "o", "w"] +[14.879999999999939, "o", "_"] +[14.909999999999938, "o", "j"] +[14.939999999999937, "o", "a"] +[14.969999999999937, "o", "f"] +[14.999999999999936, "o", "f"] +[15.029999999999935, "o", "l"] +[15.059999999999935, "o", "e"] +[15.089999999999934, "o", "_"] +[15.119999999999933, "o", "s"] +[15.149999999999933, "o", "h"] +[15.179999999999932, "o", "o"] +[15.209999999999932, "o", "p"] +[15.239999999999931, "o", " "] +[15.26999999999993, "o", "c"] +[15.29999999999993, "o", "u"] +[15.329999999999929, "o", "s"] +[15.359999999999928, "o", "t"] +[15.389999999999928, "o", "o"] +[15.419999999999927, "o", "m"] +[15.449999999999926, "o", "e"] +[15.479999999999926, "o", "r"] +[15.509999999999925, "o", "s"] +[15.539999999999925, "o", "\r\n"] +[15.569999999999924, "o", "$"] +[15.599999999999923, "o", " "] +[15.629999999999923, "o", "s"] +[15.659999999999922, "o", "g"] +[15.689999999999921, "o", "r"] +[15.71999999999992, "o", " "] +[15.74999999999992, "o", "c"] +[15.77999999999992, "o", "s"] +[15.809999999999919, "o", "v"] +[15.839999999999918, "o", " "] +[15.869999999999918, "o", "i"] +[15.899999999999917, "o", "m"] +[15.929999999999916, "o", "p"] +[15.959999999999916, "o", "o"] +[15.989999999999915, "o", "r"] +[16.019999999999914, "o", "t"] +[16.049999999999915, "o", " "] +[16.079999999999917, "o", "-"] +[16.109999999999918, "o", "f"] +[16.13999999999992, "o", " "] +[16.16999999999992, "o", "j"] +[16.19999999999992, "o", "a"] +[16.229999999999922, "o", "f"] +[16.259999999999923, "o", "f"] +[16.289999999999925, "o", "l"] +[16.319999999999926, "o", "e"] +[16.349999999999927, "o", "_"] +[16.379999999999928, "o", "s"] +[16.40999999999993, "o", "h"] +[16.43999999999993, "o", "o"] +[16.46999999999993, "o", "p"] +[16.499999999999932, "o", "/"] +[16.529999999999934, "o", "d"] +[16.559999999999935, "o", "a"] +[16.589999999999936, "o", "t"] +[16.619999999999937, "o", "a"] +[16.649999999999938, "o", "/"] +[16.67999999999994, "o", "r"] +[16.70999999999994, "o", "a"] +[16.73999999999994, "o", "w"] +[16.769999999999943, "o", "_"] +[16.799999999999944, "o", "o"] +[16.829999999999945, "o", "r"] +[16.859999999999946, "o", "d"] +[16.889999999999947, "o", "e"] +[16.91999999999995, "o", "r"] +[16.94999999999995, "o", "s"] +[16.97999999999995, "o", "."] +[17.009999999999952, "o", "c"] +[17.039999999999953, "o", "s"] +[17.069999999999954, "o", "v"] +[17.099999999999955, "o", " "] +[17.129999999999956, "o", "-"] +[17.159999999999958, "o", "k"] +[17.18999999999996, "o", " "] +[17.21999999999996, "o", "i"] +[17.24999999999996, "o", "d"] +[17.279999999999962, "o", " "] +[17.309999999999963, "o", "-"] +[17.339999999999964, "o", "t"] +[17.369999999999965, "o", " "] +[17.399999999999967, "o", "o"] +[17.429999999999968, "o", "r"] +[17.45999999999997, "o", "d"] +[17.48999999999997, "o", "e"] +[17.51999999999997, "o", "r"] +[17.549999999999972, "o", "_"] +[17.579999999999973, "o", "d"] +[17.609999999999975, "o", "a"] +[17.639999999999976, "o", "t"] +[17.669999999999977, "o", "e"] +[17.699999999999978, "o", " "] +[17.72999999999998, "o", "t"] +[17.75999999999998, "o", "i"] +[17.78999999999998, "o", "m"] +[17.819999999999983, "o", "e"] +[17.849999999999984, "o", "s"] +[17.879999999999985, "o", "t"] +[17.909999999999986, "o", "a"] +[17.939999999999987, "o", "m"] +[17.969999999999988, "o", "p"] +[17.99999999999999, "o", " "] +[18.02999999999999, "o", "r"] +[18.05999999999999, "o", "a"] +[18.089999999999993, "o", "w"] +[18.119999999999994, "o", "_"] +[18.149999999999995, "o", "j"] +[18.179999999999996, "o", "a"] +[18.209999999999997, "o", "f"] +[18.24, "o", "f"] +[18.27, "o", "l"] +[18.3, "o", "e"] +[18.330000000000002, "o", "_"] +[18.360000000000003, "o", "s"] +[18.390000000000004, "o", "h"] +[18.420000000000005, "o", "o"] +[18.450000000000006, "o", "p"] +[18.480000000000008, "o", " "] +[18.51000000000001, "o", "o"] +[18.54000000000001, "o", "r"] +[18.57000000000001, "o", "d"] +[18.600000000000012, "o", "e"] +[18.630000000000013, "o", "r"] +[18.660000000000014, "o", "s"] +[18.690000000000015, "o", "\r\n"] +[18.720000000000017, "o", "$"] +[18.750000000000018, "o", " "] +[18.78000000000002, "o", "s"] +[18.81000000000002, "o", "g"] +[18.84000000000002, "o", "r"] +[18.870000000000022, "o", " "] +[18.900000000000023, "o", "c"] +[18.930000000000025, "o", "s"] +[18.960000000000026, "o", "v"] +[18.990000000000027, "o", " "] +[19.020000000000028, "o", "i"] +[19.05000000000003, "o", "m"] +[19.08000000000003, "o", "p"] +[19.11000000000003, "o", "o"] +[19.140000000000033, "o", "r"] +[19.170000000000034, "o", "t"] +[19.200000000000035, "o", " "] +[19.230000000000036, "o", "-"] +[19.260000000000037, "o", "f"] +[19.29000000000004, "o", " "] +[19.32000000000004, "o", "j"] +[19.35000000000004, "o", "a"] +[19.38000000000004, "o", "f"] +[19.410000000000043, "o", "f"] +[19.440000000000044, "o", "l"] +[19.470000000000045, "o", "e"] +[19.500000000000046, "o", "_"] +[19.530000000000047, "o", "s"] +[19.56000000000005, "o", "h"] +[19.59000000000005, "o", "o"] +[19.62000000000005, "o", "p"] +[19.650000000000052, "o", "/"] +[19.680000000000053, "o", "d"] +[19.710000000000054, "o", "a"] +[19.740000000000055, "o", "t"] +[19.770000000000056, "o", "a"] +[19.800000000000058, "o", "/"] +[19.83000000000006, "o", "r"] +[19.86000000000006, "o", "a"] +[19.89000000000006, "o", "w"] +[19.920000000000062, "o", "_"] +[19.950000000000063, "o", "p"] +[19.980000000000064, "o", "a"] +[20.010000000000066, "o", "y"] +[20.040000000000067, "o", "m"] +[20.070000000000068, "o", "e"] +[20.10000000000007, "o", "n"] +[20.13000000000007, "o", "t"] +[20.16000000000007, "o", "s"] +[20.190000000000072, "o", "."] +[20.220000000000073, "o", "c"] +[20.250000000000075, "o", "s"] +[20.280000000000076, "o", "v"] +[20.310000000000077, "o", " "] +[20.340000000000078, "o", "-"] +[20.37000000000008, "o", "k"] +[20.40000000000008, "o", " "] +[20.43000000000008, "o", "i"] +[20.460000000000083, "o", "d"] +[20.490000000000084, "o", " "] +[20.520000000000085, "o", "r"] +[20.550000000000086, "o", "a"] +[20.580000000000087, "o", "w"] +[20.61000000000009, "o", "_"] +[20.64000000000009, "o", "j"] +[20.67000000000009, "o", "a"] +[20.70000000000009, "o", "f"] +[20.730000000000093, "o", "f"] +[20.760000000000094, "o", "l"] +[20.790000000000095, "o", "e"] +[20.820000000000096, "o", "_"] +[20.850000000000097, "o", "s"] +[20.8800000000001, "o", "h"] +[20.9100000000001, "o", "o"] +[20.9400000000001, "o", "p"] +[20.970000000000102, "o", " "] +[21.000000000000103, "o", "p"] +[21.030000000000104, "o", "a"] +[21.060000000000105, "o", "y"] +[21.090000000000106, "o", "m"] +[21.120000000000108, "o", "e"] +[21.15000000000011, "o", "n"] +[21.18000000000011, "o", "t"] +[21.21000000000011, "o", "s"] +[21.240000000000112, "o", "\r\n"] +[21.270000000000113, "o", "\u001b[0m"] +[21.300000000000114, "o", "\r\n"] +[21.551946926117058, "o", "Initialized empty repository raw_jaffle_shop\r\n"] +[21.58194692611706, "o", "\u001b[1m"] +[21.61194692611706, "o", "\u001b[36m"] +[21.64194692611706, "o", "\u001b[91m"] +[21.671946926117062, "o", "$"] +[21.701946926117063, "o", " "] +[21.731946926117065, "o", "\u001b[0m"] +[26.761946926117066, "o", "\u001b[H"] +[26.791946926117067, "o", "\u001b[J"] +[26.821946926117068, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Snapshot the initial data with Splitgraph."] +[26.85194692611707, "o", "\r\n"] +[26.88194692611707, "o", "$"] +[26.91194692611707, "o", " "] +[26.941946926117073, "o", "s"] +[26.971946926117074, "o", "g"] +[27.001946926117075, "o", "r"] +[27.031946926117076, "o", " "] +[27.061946926117077, "o", "d"] +[27.091946926117078, "o", "i"] +[27.12194692611708, "o", "f"] +[27.15194692611708, "o", "f"] +[27.18194692611708, "o", " "] +[27.211946926117083, "o", "r"] +[27.241946926117084, "o", "a"] +[27.271946926117085, "o", "w"] +[27.301946926117086, "o", "_"] +[27.331946926117087, "o", "j"] +[27.36194692611709, "o", "a"] +[27.39194692611709, "o", "f"] +[27.42194692611709, "o", "f"] +[27.451946926117092, "o", "l"] +[27.481946926117093, "o", "e"] +[27.511946926117094, "o", "_"] +[27.541946926117095, "o", "s"] +[27.571946926117096, "o", "h"] +[27.601946926117098, "o", "o"] +[27.6319469261171, "o", "p"] +[27.6619469261171, "o", "\r\n"] +[27.6919469261171, "o", "$"] +[27.721946926117102, "o", " "] +[27.751946926117103, "o", "s"] +[27.781946926117104, "o", "g"] +[27.811946926117106, "o", "r"] +[27.841946926117107, "o", " "] +[27.871946926117108, "o", "c"] +[27.90194692611711, "o", "o"] +[27.93194692611711, "o", "m"] +[27.96194692611711, "o", "m"] +[27.991946926117112, "o", "i"] +[28.021946926117113, "o", "t"] +[28.051946926117115, "o", " "] +[28.081946926117116, "o", "r"] +[28.111946926117117, "o", "a"] +[28.141946926117118, "o", "w"] +[28.17194692611712, "o", "_"] +[28.20194692611712, "o", "j"] +[28.23194692611712, "o", "a"] +[28.261946926117123, "o", "f"] +[28.291946926117124, "o", "f"] +[28.321946926117125, "o", "l"] +[28.351946926117126, "o", "e"] +[28.381946926117127, "o", "_"] +[28.41194692611713, "o", "s"] +[28.44194692611713, "o", "h"] +[28.47194692611713, "o", "o"] +[28.50194692611713, "o", "p"] +[28.531946926117133, "o", "\r\n"] +[28.561946926117134, "o", "$"] +[28.591946926117135, "o", " "] +[28.621946926117136, "o", "s"] +[28.651946926117137, "o", "g"] +[28.68194692611714, "o", "r"] +[28.71194692611714, "o", " "] +[28.74194692611714, "o", "t"] +[28.771946926117142, "o", "a"] +[28.801946926117143, "o", "g"] +[28.831946926117144, "o", " "] +[28.861946926117145, "o", "r"] +[28.891946926117146, "o", "a"] +[28.921946926117148, "o", "w"] +[28.95194692611715, "o", "_"] +[28.98194692611715, "o", "j"] +[29.01194692611715, "o", "a"] +[29.041946926117152, "o", "f"] +[29.071946926117153, "o", "f"] +[29.101946926117154, "o", "l"] +[29.131946926117156, "o", "e"] +[29.161946926117157, "o", "_"] +[29.191946926117158, "o", "s"] +[29.22194692611716, "o", "h"] +[29.25194692611716, "o", "o"] +[29.28194692611716, "o", "p"] +[29.311946926117162, "o", " "] +[29.341946926117163, "o", "a"] +[29.371946926117165, "o", "s"] +[29.401946926117166, "o", "o"] +[29.431946926117167, "o", "f"] +[29.461946926117168, "o", "_"] +[29.49194692611717, "o", "2"] +[29.52194692611717, "o", "0"] +[29.55194692611717, "o", "1"] +[29.581946926117173, "o", "8"] +[29.611946926117174, "o", "0"] +[29.641946926117175, "o", "4"] +[29.671946926117176, "o", "0"] +[29.701946926117177, "o", "9"] +[29.73194692611718, "o", "\r\n"] +[29.76194692611718, "o", "\u001b[0m"] +[29.79194692611718, "o", "\r\n"] +[30.04200271606469, "o", "Between 000000000000 and the current working copy: \r\n"] +[30.042064943313836, "o", "customers: table added\r\norders: table added\r\npayments: table added\r\n"] +[30.26617983818078, "o", "Committing raw_jaffle_shop...\r\n"] +[30.291926660537957, "o", "Processing table orders\r\n"] +[30.382655420303582, "o", "Processing table payments\r\n"] +[30.41231111526513, "o", "Processing table customers\r\n"] +[30.454059877395867, "o", "Committed raw_jaffle_shop as 48240f1fd74f.\r\n"] +[30.675335922241448, "o", "Tagged raw_jaffle_shop:48240f1fd74fec6372670cadfbeb630c7c8c44d0bb08f1310c24a20882cf7786 with asof_20180409.\r\n"] +[30.70533592224145, "o", "\u001b[1m"] +[30.73533592224145, "o", "\u001b[36m"] +[30.76533592224145, "o", "\u001b[91m"] +[30.795335922241453, "o", "$"] +[30.825335922241454, "o", " "] +[30.855335922241455, "o", "\u001b[0m"] +[35.88533592224145, "o", "\u001b[H"] +[35.915335922241454, "o", "\u001b[J"] +[35.945335922241455, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the original data"] +[35.975335922241456, "o", "\r\n"] +[36.00533592224146, "o", "$"] +[36.03533592224146, "o", " "] +[36.06533592224146, "o", "s"] +[36.09533592224146, "o", "g"] +[36.12533592224146, "o", "r"] +[36.15533592224146, "o", " "] +[36.185335922241464, "o", "s"] +[36.215335922241465, "o", "h"] +[36.245335922241466, "o", "o"] +[36.27533592224147, "o", "w"] +[36.30533592224147, "o", " "] +[36.33533592224147, "o", "r"] +[36.36533592224147, "o", "a"] +[36.39533592224147, "o", "w"] +[36.42533592224147, "o", "_"] +[36.455335922241474, "o", "j"] +[36.485335922241475, "o", "a"] +[36.515335922241476, "o", "f"] +[36.54533592224148, "o", "f"] +[36.57533592224148, "o", "l"] +[36.60533592224148, "o", "e"] +[36.63533592224148, "o", "_"] +[36.66533592224148, "o", "s"] +[36.69533592224148, "o", "h"] +[36.725335922241484, "o", "o"] +[36.755335922241485, "o", "p"] +[36.78533592224149, "o", ":"] +[36.81533592224149, "o", "a"] +[36.84533592224149, "o", "s"] +[36.87533592224149, "o", "o"] +[36.90533592224149, "o", "f"] +[36.93533592224149, "o", "_"] +[36.96533592224149, "o", "2"] +[36.995335922241495, "o", "0"] +[37.025335922241496, "o", "1"] +[37.0553359222415, "o", "8"] +[37.0853359222415, "o", "0"] +[37.1153359222415, "o", "4"] +[37.1453359222415, "o", "0"] +[37.1753359222415, "o", "9"] +[37.2053359222415, "o", "\r\n"] +[37.235335922241504, "o", "$"] +[37.265335922241505, "o", " "] +[37.295335922241506, "o", "s"] +[37.32533592224151, "o", "g"] +[37.35533592224151, "o", "r"] +[37.38533592224151, "o", " "] +[37.41533592224151, "o", "t"] +[37.44533592224151, "o", "a"] +[37.47533592224151, "o", "b"] +[37.505335922241514, "o", "l"] +[37.535335922241515, "o", "e"] +[37.565335922241516, "o", " "] +[37.59533592224152, "o", "r"] +[37.62533592224152, "o", "a"] +[37.65533592224152, "o", "w"] +[37.68533592224152, "o", "_"] +[37.71533592224152, "o", "j"] +[37.74533592224152, "o", "a"] +[37.775335922241524, "o", "f"] +[37.805335922241525, "o", "f"] +[37.835335922241526, "o", "l"] +[37.86533592224153, "o", "e"] +[37.89533592224153, "o", "_"] +[37.92533592224153, "o", "s"] +[37.95533592224153, "o", "h"] +[37.98533592224153, "o", "o"] +[38.01533592224153, "o", "p"] +[38.045335922241534, "o", ":"] +[38.075335922241536, "o", "a"] +[38.10533592224154, "o", "s"] +[38.13533592224154, "o", "o"] +[38.16533592224154, "o", "f"] +[38.19533592224154, "o", "_"] +[38.22533592224154, "o", "2"] +[38.25533592224154, "o", "0"] +[38.28533592224154, "o", "1"] +[38.315335922241545, "o", "8"] +[38.345335922241546, "o", "0"] +[38.37533592224155, "o", "4"] +[38.40533592224155, "o", "0"] +[38.43533592224155, "o", "9"] +[38.46533592224155, "o", " "] +[38.49533592224155, "o", "o"] +[38.52533592224155, "o", "r"] +[38.555335922241554, "o", "d"] +[38.585335922241555, "o", "e"] +[38.615335922241556, "o", "r"] +[38.64533592224156, "o", "s"] +[38.67533592224156, "o", "\r\n"] +[38.70533592224156, "o", "\u001b[0m"] +[38.73533592224156, "o", "\r\n"] +[38.95897660255467, "o", "Image raw_jaffle_shop:48240f1fd74fec6372670cadfbeb630c7c8c44d0bb08f1310c24a20882cf7786\r\n\r\n"] +[38.95900783538853, "o", "Created at 2021-04-07T15:48:46.486719\r\n"] +[38.96007881164586, "o", "Size: 7.58 KiB\r\nParent: 0000000000000000000000000000000000000000000000000000000000000000\r\n"] +[38.960095500946395, "o", "\r\nTables:\r\n"] +[38.96080074310338, "o", " customers\r\n"] +[38.96104154586827, "o", " orders\r\n payments\r\n"] +[39.19250211715733, "o", "Table raw_jaffle_shop:48240f1fd74fec6372670cadfbeb630c7c8c44d0bb08f1310c24a20882cf7786/orders\r\n\r\n"] +[39.19316110610997, "o", "Size: 1.73 KiB\r\n"] +[39.19407806396519, "o", "Rows: 99\r\n"] +[39.19409022331273, "o", "Columns: \r\n id (integer, PK)\r\n user_id (integer)\r\n order_date (timestamp without time zone)\r\n status (character varying)\r\n\r\nObjects: \r\n o7e3ffa6e2141edde30498e4c4a6a2b510d8b7e479081aafe154d31ca4436bd\r\n"] +[39.22409022331273, "o", "\u001b[1m"] +[39.25409022331273, "o", "\u001b[36m"] +[39.28409022331273, "o", "\u001b[91m"] +[39.31409022331273, "o", "$"] +[39.34409022331273, "o", " "] +[39.374090223312734, "o", "\u001b[0m"] +[48.88533592224145, "o", "\u001b[H"] +[48.915335922241454, "o", "\u001b[J"] +[48.945335922241455, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The status column in the raw_orders table in the initial dataset can"] +[48.975335922241456, "o", "\r\n"] +[49.00533592224146, "o", "$ # change through time. Pretend that some jaffles were actually returned.\r\n"] +[49.03533592224146, "o", "$"] +[49.06533592224146, "o", " "] +[49.09533592224146, "o", "s"] +[49.12533592224146, "o", "g"] +[49.15533592224146, "o", "r"] +[49.185335922241464, "o", " "] +[49.215335922241465, "o", "s"] +[49.245335922241466, "o", "q"] +[49.27533592224147, "o", "l"] +[49.30533592224147, "o", " "] +[49.33533592224147, "o", "-"] +[49.36533592224147, "o", "s"] +[49.39533592224147, "o", " "] +[49.42533592224147, "o", "r"] +[49.455335922241474, "o", "a"] +[49.485335922241475, "o", "w"] +[49.515335922241476, "o", "_"] +[49.54533592224148, "o", "j"] +[49.57533592224148, "o", "a"] +[49.60533592224148, "o", "f"] +[49.63533592224148, "o", "f"] +[49.66533592224148, "o", "l"] +[49.69533592224148, "o", "e"] +[49.725335922241484, "o", "_"] +[49.755335922241485, "o", "s"] +[49.78533592224149, "o", "h"] +[49.81533592224149, "o", "o"] +[49.84533592224149, "o", "p"] +[49.87533592224149, "o", " "] +[49.90533592224149, "o", "\""] +[49.93533592224149, "o", "U"] +[49.96533592224149, "o", "P"] +[49.995335922241495, "o", "D"] +[50.025335922241496, "o", "A"] +[50.0553359222415, "o", "T"] +[50.0853359222415, "o", "E"] +[50.1153359222415, "o", " "] +[50.1453359222415, "o", "o"] +[50.1753359222415, "o", "r"] +[50.2053359222415, "o", "d"] +[50.235335922241504, "o", "e"] +[50.265335922241505, "o", "r"] +[50.295335922241506, "o", "s"] +[50.32533592224151, "o", " "] +[50.35533592224151, "o", "S"] +[50.38533592224151, "o", "E"] +[50.41533592224151, "o", "T"] +[50.44533592224151, "o", " "] +[50.47533592224151, "o", "s"] +[50.505335922241514, "o", "t"] +[50.535335922241515, "o", "a"] +[50.565335922241516, "o", "t"] +[50.59533592224152, "o", "u"] +[50.62533592224152, "o", "s"] +[50.65533592224152, "o", " "] +[50.68533592224152, "o", "="] +[50.71533592224152, "o", " "] +[50.74533592224152, "o", "'"] +[50.775335922241524, "o", "r"] +[50.805335922241525, "o", "e"] +[50.835335922241526, "o", "t"] +[50.86533592224153, "o", "u"] +[50.89533592224153, "o", "r"] +[50.92533592224153, "o", "n"] +[50.95533592224153, "o", "e"] +[50.98533592224153, "o", "d"] +[51.01533592224153, "o", "'"] +[51.045335922241534, "o", " "] +[51.075335922241536, "o", "\\"] +[51.10533592224154, "o", "\r\n "] +[51.13533592224154, "o", "W"] +[51.16533592224154, "o", "H"] +[51.19533592224154, "o", "E"] +[51.22533592224154, "o", "R"] +[51.25533592224154, "o", "E"] +[51.28533592224154, "o", " "] +[51.315335922241545, "o", "s"] +[51.345335922241546, "o", "t"] +[51.37533592224155, "o", "a"] +[51.40533592224155, "o", "t"] +[51.43533592224155, "o", "u"] +[51.46533592224155, "o", "s"] +[51.49533592224155, "o", " "] +[51.52533592224155, "o", "="] +[51.555335922241554, "o", " "] +[51.585335922241555, "o", "'"] +[51.615335922241556, "o", "r"] +[51.64533592224156, "o", "e"] +[51.67533592224156, "o", "t"] +[51.70533592224156, "o", "u"] +[51.73533592224156, "o", "r"] +[51.76533592224156, "o", "n"] +[51.79533592224156, "o", "_"] +[51.825335922241564, "o", "p"] +[51.855335922241565, "o", "e"] +[51.885335922241566, "o", "n"] +[51.91533592224157, "o", "d"] +[51.94533592224157, "o", "i"] +[51.97533592224157, "o", "n"] +[52.00533592224157, "o", "g"] +[52.03533592224157, "o", "'"] +[52.06533592224157, "o", " "] +[52.095335922241574, "o", "O"] +[52.125335922241575, "o", "R"] +[52.155335922241576, "o", " "] +[52.18533592224158, "o", "o"] +[52.21533592224158, "o", "r"] +[52.24533592224158, "o", "d"] +[52.27533592224158, "o", "e"] +[52.30533592224158, "o", "r"] +[52.33533592224158, "o", "_"] +[52.365335922241584, "o", "d"] +[52.395335922241586, "o", "a"] +[52.42533592224159, "o", "t"] +[52.45533592224159, "o", "e"] +[52.48533592224159, "o", " "] +[52.51533592224159, "o", "="] +[52.54533592224159, "o", " "] +[52.57533592224159, "o", "'"] +[52.60533592224159, "o", "2"] +[52.635335922241595, "o", "0"] +[52.665335922241596, "o", "1"] +[52.6953359222416, "o", "8"] +[52.7253359222416, "o", "-"] +[52.7553359222416, "o", "0"] +[52.7853359222416, "o", "3"] +[52.8153359222416, "o", "-"] +[52.8453359222416, "o", "2"] +[52.875335922241604, "o", "6"] +[52.905335922241605, "o", "'"] +[52.935335922241606, "o", "\""] +[52.96533592224161, "o", "\r\n"] +[52.99533592224161, "o", "$"] +[53.02533592224161, "o", " "] +[53.05533592224161, "o", "s"] +[53.08533592224161, "o", "g"] +[53.11533592224161, "o", "r"] +[53.145335922241614, "o", " "] +[53.175335922241615, "o", "d"] +[53.205335922241616, "o", "i"] +[53.23533592224162, "o", "f"] +[53.26533592224162, "o", "f"] +[53.29533592224162, "o", " "] +[53.32533592224162, "o", "-"] +[53.35533592224162, "o", "v"] +[53.38533592224162, "o", " "] +[53.415335922241624, "o", "r"] +[53.445335922241625, "o", "a"] +[53.47533592224163, "o", "w"] +[53.50533592224163, "o", "_"] +[53.53533592224163, "o", "j"] +[53.56533592224163, "o", "a"] +[53.59533592224163, "o", "f"] +[53.62533592224163, "o", "f"] +[53.65533592224163, "o", "l"] +[53.685335922241634, "o", "e"] +[53.715335922241636, "o", "_"] +[53.74533592224164, "o", "s"] +[53.77533592224164, "o", "h"] +[53.80533592224164, "o", "o"] +[53.83533592224164, "o", "p"] +[53.86533592224164, "o", "\r\n"] +[53.89533592224164, "o", "\u001b[0m"] +[53.92533592224164, "o", "\r\n"] +[54.41242388725324, "o", "Between 48240f1fd74f and the current working copy: \r\n"] +[54.41269449234052, "o", "customers: no changes.\r\norders: added 5 rows, removed 5 rows.\r\n- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending')\r\n- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending')\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped')\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned')\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned')\r\n+ (84, 7"] +[54.41270331382795, "o", "0, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\npayments: no changes.\r\n"] +[54.44270331382795, "o", "\u001b[1m"] +[54.47270331382795, "o", "\u001b[36m"] +[54.50270331382795, "o", "\u001b[91m"] +[54.53270331382795, "o", "$"] +[54.56270331382795, "o", " "] +[54.592703313827954, "o", "\u001b[0m"] +[59.622703313827955, "o", "\u001b[H"] +[59.652703313827956, "o", "\u001b[J"] +[59.68270331382796, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit this dataset and check out the original data"] +[59.71270331382796, "o", "\r\n"] +[59.74270331382796, "o", "$"] +[59.77270331382796, "o", " "] +[59.80270331382796, "o", "s"] +[59.83270331382796, "o", "g"] +[59.862703313827964, "o", "r"] +[59.892703313827965, "o", " "] +[59.92270331382797, "o", "c"] +[59.95270331382797, "o", "o"] +[59.98270331382797, "o", "m"] +[60.01270331382797, "o", "m"] +[60.04270331382797, "o", "i"] +[60.07270331382797, "o", "t"] +[60.10270331382797, "o", " "] +[60.132703313827975, "o", "r"] +[60.162703313827976, "o", "a"] +[60.19270331382798, "o", "w"] +[60.22270331382798, "o", "_"] +[60.25270331382798, "o", "j"] +[60.28270331382798, "o", "a"] +[60.31270331382798, "o", "f"] +[60.34270331382798, "o", "f"] +[60.372703313827984, "o", "l"] +[60.402703313827985, "o", "e"] +[60.432703313827986, "o", "_"] +[60.46270331382799, "o", "s"] +[60.49270331382799, "o", "h"] +[60.52270331382799, "o", "o"] +[60.55270331382799, "o", "p"] +[60.58270331382799, "o", "\r\n"] +[60.61270331382799, "o", "$"] +[60.642703313827994, "o", " "] +[60.672703313827995, "o", "s"] +[60.702703313827996, "o", "g"] +[60.732703313828, "o", "r"] +[60.762703313828, "o", " "] +[60.792703313828, "o", "t"] +[60.822703313828, "o", "a"] +[60.852703313828, "o", "g"] +[60.882703313828, "o", " "] +[60.912703313828004, "o", "r"] +[60.942703313828005, "o", "a"] +[60.972703313828006, "o", "w"] +[61.00270331382801, "o", "_"] +[61.03270331382801, "o", "j"] +[61.06270331382801, "o", "a"] +[61.09270331382801, "o", "f"] +[61.12270331382801, "o", "f"] +[61.15270331382801, "o", "l"] +[61.182703313828014, "o", "e"] +[61.212703313828015, "o", "_"] +[61.24270331382802, "o", "s"] +[61.27270331382802, "o", "h"] +[61.30270331382802, "o", "o"] +[61.33270331382802, "o", "p"] +[61.36270331382802, "o", " "] +[61.39270331382802, "o", "a"] +[61.42270331382802, "o", "s"] +[61.452703313828025, "o", "o"] +[61.482703313828026, "o", "f"] +[61.51270331382803, "o", "_"] +[61.54270331382803, "o", "2"] +[61.57270331382803, "o", "0"] +[61.60270331382803, "o", "1"] +[61.63270331382803, "o", "8"] +[61.66270331382803, "o", "0"] +[61.692703313828034, "o", "4"] +[61.722703313828035, "o", "1"] +[61.752703313828036, "o", "0"] +[61.78270331382804, "o", "\r\n"] +[61.81270331382804, "o", "$"] +[61.84270331382804, "o", " "] +[61.87270331382804, "o", "s"] +[61.90270331382804, "o", "g"] +[61.93270331382804, "o", "r"] +[61.962703313828044, "o", " "] +[61.992703313828045, "o", "c"] +[62.022703313828046, "o", "h"] +[62.05270331382805, "o", "e"] +[62.08270331382805, "o", "c"] +[62.11270331382805, "o", "k"] +[62.14270331382805, "o", "o"] +[62.17270331382805, "o", "u"] +[62.20270331382805, "o", "t"] +[62.232703313828054, "o", " "] +[62.262703313828055, "o", "r"] +[62.292703313828056, "o", "a"] +[62.32270331382806, "o", "w"] +[62.35270331382806, "o", "_"] +[62.38270331382806, "o", "j"] +[62.41270331382806, "o", "a"] +[62.44270331382806, "o", "f"] +[62.47270331382806, "o", "f"] +[62.502703313828064, "o", "l"] +[62.532703313828065, "o", "e"] +[62.56270331382807, "o", "_"] +[62.59270331382807, "o", "s"] +[62.62270331382807, "o", "h"] +[62.65270331382807, "o", "o"] +[62.68270331382807, "o", "p"] +[62.71270331382807, "o", ":"] +[62.74270331382807, "o", "a"] +[62.772703313828075, "o", "s"] +[62.802703313828076, "o", "o"] +[62.83270331382808, "o", "f"] +[62.86270331382808, "o", "_"] +[62.89270331382808, "o", "2"] +[62.92270331382808, "o", "0"] +[62.95270331382808, "o", "1"] +[62.98270331382808, "o", "8"] +[63.012703313828084, "o", "0"] +[63.042703313828085, "o", "4"] +[63.072703313828086, "o", "0"] +[63.10270331382809, "o", "9"] +[63.13270331382809, "o", "\r\n"] +[63.16270331382809, "o", "\u001b[0m"] +[63.19270331382809, "o", "\r\n"] +[63.421493358612636, "o", "Committing raw_jaffle_shop...\r\n"] +[63.44637376785336, "o", "Storing and indexing table orders\r\n"] +[63.54438526153622, "o", "Committed raw_jaffle_shop as d97832c96958.\r\n"] +[63.765936203003506, "o", "Tagged raw_jaffle_shop:d97832c969585e768acb345c7bda0c7f76d6ee051d777603c8cca0bf055d98e5 with asof_20180410.\r\n"] +[64.28076512336789, "o", "Checked out raw_jaffle_shop:48240f1fd74f.\r\n"] +[64.31076512336789, "o", "\u001b[1m"] +[64.34076512336789, "o", "\u001b[36m"] +[64.37076512336789, "o", "\u001b[91m"] +[64.40076512336789, "o", "$"] +[64.43076512336789, "o", " "] +[64.46076512336789, "o", "\u001b[0m"] +[69.4907651233679, "o", "\u001b[H"] +[69.5207651233679, "o", "\u001b[J"] +[69.5507651233679, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the 'serious' version of the dbt project that uses data from"] +[69.5807651233679, "o", "\r\n"] +[69.6107651233679, "o", "$ # the actual warehouse rather than seed data.\r\n"] +[69.6407651233679, "o", "$"] +[69.6707651233679, "o", " "] +[69.7007651233679, "o", "c"] +[69.7307651233679, "o", "d"] +[69.7607651233679, "o", " "] +[69.7907651233679, "o", "j"] +[69.8207651233679, "o", "a"] +[69.8507651233679, "o", "f"] +[69.88076512336791, "o", "f"] +[69.91076512336791, "o", "l"] +[69.94076512336791, "o", "e"] +[69.97076512336791, "o", "_"] +[70.00076512336791, "o", "s"] +[70.03076512336791, "o", "h"] +[70.06076512336791, "o", "o"] +[70.09076512336792, "o", "p"] +[70.12076512336792, "o", " "] +[70.15076512336792, "o", "&"] +[70.18076512336792, "o", "&"] +[70.21076512336792, "o", " "] +[70.24076512336792, "o", "g"] +[70.27076512336792, "o", "i"] +[70.30076512336792, "o", "t"] +[70.33076512336793, "o", " "] +[70.36076512336793, "o", "c"] +[70.39076512336793, "o", "h"] +[70.42076512336793, "o", "e"] +[70.45076512336793, "o", "c"] +[70.48076512336793, "o", "k"] +[70.51076512336793, "o", "o"] +[70.54076512336793, "o", "u"] +[70.57076512336793, "o", "t"] +[70.60076512336794, "o", " "] +[70.63076512336794, "o", "d"] +[70.66076512336794, "o", "e"] +[70.69076512336794, "o", "m"] +[70.72076512336794, "o", "o"] +[70.75076512336794, "o", "/"] +[70.78076512336794, "o", "m"] +[70.81076512336794, "o", "a"] +[70.84076512336794, "o", "s"] +[70.87076512336795, "o", "t"] +[70.90076512336795, "o", "e"] +[70.93076512336795, "o", "r"] +[70.96076512336795, "o", " "] +[70.99076512336795, "o", "-"] +[71.02076512336795, "o", "-"] +[71.05076512336795, "o", "f"] +[71.08076512336795, "o", "o"] +[71.11076512336795, "o", "r"] +[71.14076512336796, "o", "c"] +[71.17076512336796, "o", "e"] +[71.20076512336796, "o", "\r\n"] +[71.23076512336796, "o", "\u001b[0m"] +[71.26076512336796, "o", "\r\n"] +[71.26723151207035, "o", "Branch 'demo/master' set up to track remote branch 'demo/master' from 'origin'.\r\n"] +[71.26775865554875, "o", "Switched to a new branch 'demo/master'\r\n"] +[71.29775865554875, "o", "\u001b[1m"] +[71.32775865554875, "o", "\u001b[36m"] +[71.35775865554875, "o", "\u001b[91m"] +[71.38775865554875, "o", "$"] +[71.41775865554875, "o", " "] +[71.44775865554875, "o", "\u001b[0m"] +[76.47775865554875, "o", "\u001b[H"] +[76.50775865554876, "o", "\u001b[J"] +[76.53775865554876, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check that dbt is set up to connect to the Splitgraph engine."] +[76.56775865554876, "o", "\r\n"] +[76.59775865554876, "o", "$ # We will be outputting data into the dbt_jaffle repository, so set that up.\r\n"] +[76.62775865554876, "o", "$"] +[76.65775865554876, "o", " "] +[76.68775865554876, "o", "c"] +[76.71775865554876, "o", "a"] +[76.74775865554876, "o", "t"] +[76.77775865554877, "o", " "] +[76.80775865554877, "o", "."] +[76.83775865554877, "o", "d"] +[76.86775865554877, "o", "b"] +[76.89775865554877, "o", "t"] +[76.92775865554877, "o", "/"] +[76.95775865554877, "o", "p"] +[76.98775865554877, "o", "r"] +[77.01775865554877, "o", "o"] +[77.04775865554878, "o", "f"] +[77.07775865554878, "o", "i"] +[77.10775865554878, "o", "l"] +[77.13775865554878, "o", "e"] +[77.16775865554878, "o", "s"] +[77.19775865554878, "o", "."] +[77.22775865554878, "o", "y"] +[77.25775865554878, "o", "m"] +[77.28775865554879, "o", "l"] +[77.31775865554879, "o", "\r\n"] +[77.34775865554879, "o", "$"] +[77.37775865554879, "o", " "] +[77.40775865554879, "o", "d"] +[77.43775865554879, "o", "b"] +[77.46775865554879, "o", "t"] +[77.4977586555488, "o", " "] +[77.5277586555488, "o", "d"] +[77.5577586555488, "o", "e"] +[77.5877586555488, "o", "b"] +[77.6177586555488, "o", "u"] +[77.6477586555488, "o", "g"] +[77.6777586555488, "o", " "] +[77.7077586555488, "o", "-"] +[77.7377586555488, "o", "-"] +[77.7677586555488, "o", "p"] +[77.7977586555488, "o", "r"] +[77.8277586555488, "o", "o"] +[77.8577586555488, "o", "f"] +[77.88775865554881, "o", "i"] +[77.91775865554881, "o", "l"] +[77.94775865554881, "o", "e"] +[77.97775865554881, "o", "s"] +[78.00775865554881, "o", "-"] +[78.03775865554881, "o", "d"] +[78.06775865554881, "o", "i"] +[78.09775865554882, "o", "r"] +[78.12775865554882, "o", " "] +[78.15775865554882, "o", "."] +[78.18775865554882, "o", "d"] +[78.21775865554882, "o", "b"] +[78.24775865554882, "o", "t"] +[78.27775865554882, "o", " "] +[78.30775865554882, "o", "-"] +[78.33775865554883, "o", "-"] +[78.36775865554883, "o", "p"] +[78.39775865554883, "o", "r"] +[78.42775865554883, "o", "o"] +[78.45775865554883, "o", "j"] +[78.48775865554883, "o", "e"] +[78.51775865554883, "o", "c"] +[78.54775865554883, "o", "t"] +[78.57775865554883, "o", "-"] +[78.60775865554884, "o", "d"] +[78.63775865554884, "o", "i"] +[78.66775865554884, "o", "r"] +[78.69775865554884, "o", " "] +[78.72775865554884, "o", "j"] +[78.75775865554884, "o", "a"] +[78.78775865554884, "o", "f"] +[78.81775865554884, "o", "f"] +[78.84775865554884, "o", "l"] +[78.87775865554885, "o", "e"] +[78.90775865554885, "o", "_"] +[78.93775865554885, "o", "s"] +[78.96775865554885, "o", "h"] +[78.99775865554885, "o", "o"] +[79.02775865554885, "o", "p"] +[79.05775865554885, "o", "\r\n"] +[79.08775865554885, "o", "$"] +[79.11775865554885, "o", " "] +[79.14775865554886, "o", "s"] +[79.17775865554886, "o", "g"] +[79.20775865554886, "o", "r"] +[79.23775865554886, "o", " "] +[79.26775865554886, "o", "i"] +[79.29775865554886, "o", "n"] +[79.32775865554886, "o", "i"] +[79.35775865554886, "o", "t"] +[79.38775865554886, "o", " "] +[79.41775865554887, "o", "d"] +[79.44775865554887, "o", "b"] +[79.47775865554887, "o", "t"] +[79.50775865554887, "o", "_"] +[79.53775865554887, "o", "j"] +[79.56775865554887, "o", "a"] +[79.59775865554887, "o", "f"] +[79.62775865554887, "o", "f"] +[79.65775865554888, "o", "l"] +[79.68775865554888, "o", "e"] +[79.71775865554888, "o", "\r\n"] +[79.74775865554888, "o", "\u001b[0m"] +[79.77775865554888, "o", "\r\n"] +[79.77933102607805, "o", "jaffle_shop:\r\n target: splitgraph\r\n outputs:\r\n splitgraph:\r\n type: postgres\r\n host: localhost\r\n user: sgr\r\n pass: supersecure\r\n port: 5432\r\n dbname: splitgraph\r\n # The final schema that dbt writes to is a combination of this profile schema\r\n # and the schema specified in the model.\r\n schema: \"dbt_jaffle\"\r\n threads: 4\r\n"] +[80.77933102607805, "o", "Running with dbt=0.18.0\r\n"] +[80.78855091095049, "o", "dbt version: 0.18.0\r\npython version: 3.7.10"] +[80.7885645008095, "o", "\r\npython path: /opt/hostedtoolcache/Python/3.7.10/x64/bin/python\r\nos info: Linux-5.4.0-1043-azure-x86_64-with-debian-buster-sid"] +[80.78898411750872, "o", "\r\nUsing profiles.yml file at .dbt/profiles.yml\r\nUsing dbt_project.yml file at /home/runner/work/splitgraph/splitgraph/examples/dbt/jaffle_shop/dbt_project.yml"] +[80.78899413108904, "o", "\r\n\r\n"] +[80.86590581893999, "o", "Configuration:\r\n profiles.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n dbt_project.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n\r\nRequired dependencies:\r\n"] +[80.8722158050545, "o", " - git [\u001b[32mOK found\u001b[0m]\r\n\r\n"] +[80.87222414970476, "o", "Connection:\r\n"] +[80.87286549568255, "o", " host: localhost\r\n port: 5432\r\n"] +[80.8728740787514, "o", " user: sgr\r\n database: splitgraph\r\n schema: dbt_jaffle\r\n search_path: None\r\n keepalives_idle: 0\r\n sslmode: None\r\n"] +[80.88939481735308, "o", " Connection test: \u001b[32mOK connection ok\u001b[0m"] +[80.8894265270241, "o", "\r\n"] +[80.8897231197365, "o", "\r\n"] +[81.1335180377968, "o", "\u001b[0m"] +[81.38027673721392, "o", "Initialized empty repository dbt_jaffle\r\n"] +[81.41027673721392, "o", "\u001b[1m"] +[81.44027673721392, "o", "\u001b[36m"] +[81.47027673721392, "o", "\u001b[91m"] +[81.50027673721392, "o", "$"] +[81.53027673721392, "o", " "] +[81.56027673721393, "o", "\u001b[0m"] +[99.97775865554875, "o", "\u001b[H"] +[100.00775865554876, "o", "\u001b[J"] +[100.03775865554876, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now run the dbt models."] +[100.06775865554876, "o", "\r\n"] +[100.09775865554876, "o", "$"] +[100.12775865554876, "o", " "] +[100.15775865554876, "o", "c"] +[100.18775865554876, "o", "d"] +[100.21775865554876, "o", " "] +[100.24775865554876, "o", "j"] +[100.27775865554877, "o", "a"] +[100.30775865554877, "o", "f"] +[100.33775865554877, "o", "f"] +[100.36775865554877, "o", "l"] +[100.39775865554877, "o", "e"] +[100.42775865554877, "o", "_"] +[100.45775865554877, "o", "s"] +[100.48775865554877, "o", "h"] +[100.51775865554877, "o", "o"] +[100.54775865554878, "o", "p"] +[100.57775865554878, "o", " "] +[100.60775865554878, "o", "&"] +[100.63775865554878, "o", "&"] +[100.66775865554878, "o", " "] +[100.69775865554878, "o", "d"] +[100.72775865554878, "o", "b"] +[100.75775865554878, "o", "t"] +[100.78775865554879, "o", " "] +[100.81775865554879, "o", "r"] +[100.84775865554879, "o", "u"] +[100.87775865554879, "o", "n"] +[100.90775865554879, "o", " "] +[100.93775865554879, "o", "-"] +[100.96775865554879, "o", "-"] +[100.9977586555488, "o", "p"] +[101.0277586555488, "o", "r"] +[101.0577586555488, "o", "o"] +[101.0877586555488, "o", "f"] +[101.1177586555488, "o", "i"] +[101.1477586555488, "o", "l"] +[101.1777586555488, "o", "e"] +[101.2077586555488, "o", "s"] +[101.2377586555488, "o", "-"] +[101.2677586555488, "o", "d"] +[101.2977586555488, "o", "i"] +[101.3277586555488, "o", "r"] +[101.3577586555488, "o", " "] +[101.38775865554881, "o", "."] +[101.41775865554881, "o", "."] +[101.44775865554881, "o", "/"] +[101.47775865554881, "o", "."] +[101.50775865554881, "o", "d"] +[101.53775865554881, "o", "b"] +[101.56775865554881, "o", "t"] +[101.59775865554882, "o", "\r\n"] +[101.62775865554882, "o", "\u001b[0m"] +[101.65775865554882, "o", "\r\n"] +[102.65775865554882, "o", "Running with dbt=0.18.0\r\n"] +[103.08757323265148, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[104.02560562133861, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[104.02842992782665, "o", "\r\n"] +[104.36030954361034, "o", "15:48:55 | Concurrency: 4 threads (target='splitgraph')\r\n"] +[104.3603293323524, "o", "15:48:55 | \r\n"] +[104.36812681198192, "o", "15:48:55 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]\r\n"] +[104.37137264251781, "o", "15:48:55 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]\r\n"] +[104.37219375610424, "o", "15:48:55 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]\r\n"] +[104.39901608467174, "o", "15:48:55 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]"] +[104.39906639099193, "o", "\r\n"] +[104.70932883262707, "o", "15:48:55 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.29s]"] +[104.70937484741283, "o", "\r\n"] +[104.71101421356273, "o", "15:48:55 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.33s]\r\n"] +[104.71190589904857, "o", "15:48:55 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.33s]"] +[104.71192544937206, "o", "\r\n"] +[104.71323651313854, "o", "15:48:55 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.33s]\r\n"] +[104.71590155601574, "o", "15:48:55 | 5 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]\r\n"] +[104.71927923202587, "o", "15:48:55 | 6 of 9 START table model dbt_jaffle.customer_payments................ [RUN]"] +[104.71930068969799, "o", "\r\n"] +[104.72012514114452, "o", "15:48:55 | 7 of 9 START table model dbt_jaffle.order_payments................... [RUN]\r\n"] +[104.92326301574779, "o", "15:48:56 | 5 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.20s]"] +[104.92328876495434, "o", "\r\n"] +[104.92540782928539, "o", "15:48:56 | 6 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.20s]"] +[104.92545026779247, "o", "\r\n"] +[104.93127006530834, "o", "15:48:56 | 8 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]\r\n"] +[104.9487060928352, "o", "15:48:56 | 7 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.20s]"] +[104.94872921943737, "o", "\r\n"] +[104.96533364296032, "o", "15:48:56 | 9 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]"] +[104.96536439895702, "o", "\r\n"] +[105.06339091301037, "o", "15:48:56 | 8 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.13s]"] +[105.06346887588573, "o", "\r\n"] +[105.0809127712257, "o", "15:48:56 | 9 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.11s]\r\n"] +[105.19191545486522, "o", "15:48:56 | \r\n"] +[105.19218486785961, "o", "15:48:56 | Finished running 4 view models, 5 table models in 1.16s.\r\n"] +[105.23329156875683, "o", "\r\n"] +[105.23330730438305, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[105.23375171661449, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[105.43316835403515, "o", "\u001b[0m"] +[105.46316835403515, "o", "\u001b[1m"] +[105.49316835403515, "o", "\u001b[36m"] +[105.52316835403515, "o", "\u001b[91m"] +[105.55316835403515, "o", "$"] +[105.58316835403515, "o", " "] +[105.61316835403515, "o", "\u001b[0m"] +[120.47775865554875, "o", "\u001b[H"] +[120.50775865554876, "o", "\u001b[J"] +[120.53775865554876, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Take a look at the built dataset and commit it."] +[120.56775865554876, "o", "\r\n"] +[120.59775865554876, "o", "$ # Note Splitgraph doesn't currently support storing views\r\n"] +[120.62775865554876, "o", "$ # that dbt uses as a staging point for the initial data.\r\n"] +[120.65775865554876, "o", "$"] +[120.68775865554876, "o", " "] +[120.71775865554876, "o", "s"] +[120.74775865554876, "o", "g"] +[120.77775865554877, "o", "r"] +[120.80775865554877, "o", " "] +[120.83775865554877, "o", "d"] +[120.86775865554877, "o", "i"] +[120.89775865554877, "o", "f"] +[120.92775865554877, "o", "f"] +[120.95775865554877, "o", " "] +[120.98775865554877, "o", "d"] +[121.01775865554877, "o", "b"] +[121.04775865554878, "o", "t"] +[121.07775865554878, "o", "_"] +[121.10775865554878, "o", "j"] +[121.13775865554878, "o", "a"] +[121.16775865554878, "o", "f"] +[121.19775865554878, "o", "f"] +[121.22775865554878, "o", "l"] +[121.25775865554878, "o", "e"] +[121.28775865554879, "o", "\r\n"] +[121.31775865554879, "o", "$"] +[121.34775865554879, "o", " "] +[121.37775865554879, "o", "s"] +[121.40775865554879, "o", "g"] +[121.43775865554879, "o", "r"] +[121.46775865554879, "o", " "] +[121.4977586555488, "o", "c"] +[121.5277586555488, "o", "o"] +[121.5577586555488, "o", "m"] +[121.5877586555488, "o", "m"] +[121.6177586555488, "o", "i"] +[121.6477586555488, "o", "t"] +[121.6777586555488, "o", " "] +[121.7077586555488, "o", "d"] +[121.7377586555488, "o", "b"] +[121.7677586555488, "o", "t"] +[121.7977586555488, "o", "_"] +[121.8277586555488, "o", "j"] +[121.8577586555488, "o", "a"] +[121.88775865554881, "o", "f"] +[121.91775865554881, "o", "f"] +[121.94775865554881, "o", "l"] +[121.97775865554881, "o", "e"] +[122.00775865554881, "o", "\r\n"] +[122.03775865554881, "o", "$"] +[122.06775865554881, "o", " "] +[122.09775865554882, "o", "s"] +[122.12775865554882, "o", "g"] +[122.15775865554882, "o", "r"] +[122.18775865554882, "o", " "] +[122.21775865554882, "o", "t"] +[122.24775865554882, "o", "a"] +[122.27775865554882, "o", "g"] +[122.30775865554882, "o", " "] +[122.33775865554883, "o", "d"] +[122.36775865554883, "o", "b"] +[122.39775865554883, "o", "t"] +[122.42775865554883, "o", "_"] +[122.45775865554883, "o", "j"] +[122.48775865554883, "o", "a"] +[122.51775865554883, "o", "f"] +[122.54775865554883, "o", "f"] +[122.57775865554883, "o", "l"] +[122.60775865554884, "o", "e"] +[122.63775865554884, "o", " "] +[122.66775865554884, "o", "a"] +[122.69775865554884, "o", "s"] +[122.72775865554884, "o", "o"] +[122.75775865554884, "o", "f"] +[122.78775865554884, "o", "_"] +[122.81775865554884, "o", "2"] +[122.84775865554884, "o", "0"] +[122.87775865554885, "o", "1"] +[122.90775865554885, "o", "8"] +[122.93775865554885, "o", "0"] +[122.96775865554885, "o", "4"] +[122.99775865554885, "o", "0"] +[123.02775865554885, "o", "9"] +[123.05775865554885, "o", "\r\n"] +[123.08775865554885, "o", "\u001b[0m"] +[123.11775865554885, "o", "\r\n"] +[123.3692046642311, "o", "Between 000000000000 and the current working copy: \r\n"] +[123.36921753883438, "o", "customer_orders: table added\r\ncustomer_payments: table added\r\ndim_customers: table added\r\nfct_orders: table added"] +[123.36969509124832, "o", "\r\n"] +[123.36998715400772, "o", "order_payments: table added\r\n"] +[123.3699976444252, "o", "stg_jaffle_shop__customers: untracked"] +[123.37018980979995, "o", "\r\n"] +[123.37036099433975, "o", "stg_jaffle_shop__orders: untracked\r\n"] +[123.37036814689712, "o", "stg_jaffle_shop__payments: untracked"] +[123.37052741050796, "o", "\r\n"] +[123.37053480148391, "o", "stg_stripe__payments: untracked\r\n"] +[123.59135022163467, "o", "Committing dbt_jaffle...\r\n"] +[123.60716285705642, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[123.60803046226577, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[123.60891785621719, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[123.60992779731826, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[123.61838808059768, "o", "Processing table customer_orders\r\n"] +[123.69975557327346, "o", "Processing table customer_payments\r\n"] +[123.72430648803787, "o", "Processing table order_payments\r\n"] +[123.75066103935318, "o", "Processing table dim_customers\r\n"] +[123.7775892257698, "o", "Processing table fct_orders\r\n"] +[123.82701601982193, "o", "Committed dbt_jaffle as 3c712598ee1e.\r\n"] +[124.06182494163589, "o", "Tagged dbt_jaffle:3c712598ee1e4b53d64f4dda0b2794d2a3ec56e187d0f73155d49a9125318b35 with asof_20180409.\r\n"] +[124.09182494163589, "o", "\u001b[1m"] +[124.1218249416359, "o", "\u001b[36m"] +[124.1518249416359, "o", "\u001b[91m"] +[124.1818249416359, "o", "$"] +[124.2118249416359, "o", " "] +[124.2418249416359, "o", "\u001b[0m"] +[134.97775865554874, "o", "\u001b[H"] +[135.00775865554874, "o", "\u001b[J"] +[135.03775865554874, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the new version of the raw dataset and run dbt against it as well."] +[135.06775865554874, "o", "\r\n"] +[135.09775865554874, "o", "$"] +[135.12775865554875, "o", " "] +[135.15775865554875, "o", "s"] +[135.18775865554875, "o", "g"] +[135.21775865554875, "o", "r"] +[135.24775865554875, "o", " "] +[135.27775865554875, "o", "c"] +[135.30775865554875, "o", "h"] +[135.33775865554875, "o", "e"] +[135.36775865554876, "o", "c"] +[135.39775865554876, "o", "k"] +[135.42775865554876, "o", "o"] +[135.45775865554876, "o", "u"] +[135.48775865554876, "o", "t"] +[135.51775865554876, "o", " "] +[135.54775865554876, "o", "r"] +[135.57775865554876, "o", "a"] +[135.60775865554876, "o", "w"] +[135.63775865554877, "o", "_"] +[135.66775865554877, "o", "j"] +[135.69775865554877, "o", "a"] +[135.72775865554877, "o", "f"] +[135.75775865554877, "o", "f"] +[135.78775865554877, "o", "l"] +[135.81775865554877, "o", "e"] +[135.84775865554877, "o", "_"] +[135.87775865554877, "o", "s"] +[135.90775865554878, "o", "h"] +[135.93775865554878, "o", "o"] +[135.96775865554878, "o", "p"] +[135.99775865554878, "o", ":"] +[136.02775865554878, "o", "a"] +[136.05775865554878, "o", "s"] +[136.08775865554878, "o", "o"] +[136.11775865554878, "o", "f"] +[136.14775865554878, "o", "_"] +[136.17775865554879, "o", "2"] +[136.2077586555488, "o", "0"] +[136.2377586555488, "o", "1"] +[136.2677586555488, "o", "8"] +[136.2977586555488, "o", "0"] +[136.3277586555488, "o", "4"] +[136.3577586555488, "o", "1"] +[136.3877586555488, "o", "0"] +[136.4177586555488, "o", "\r\n"] +[136.4477586555488, "o", "$"] +[136.4777586555488, "o", " "] +[136.5077586555488, "o", "c"] +[136.5377586555488, "o", "d"] +[136.5677586555488, "o", " "] +[136.5977586555488, "o", "j"] +[136.6277586555488, "o", "a"] +[136.6577586555488, "o", "f"] +[136.6877586555488, "o", "f"] +[136.7177586555488, "o", "l"] +[136.7477586555488, "o", "e"] +[136.7777586555488, "o", "_"] +[136.8077586555488, "o", "s"] +[136.8377586555488, "o", "h"] +[136.8677586555488, "o", "o"] +[136.8977586555488, "o", "p"] +[136.9277586555488, "o", " "] +[136.95775865554882, "o", "&"] +[136.98775865554882, "o", "&"] +[137.01775865554882, "o", " "] +[137.04775865554882, "o", "d"] +[137.07775865554882, "o", "b"] +[137.10775865554882, "o", "t"] +[137.13775865554882, "o", " "] +[137.16775865554882, "o", "r"] +[137.19775865554882, "o", "u"] +[137.22775865554883, "o", "n"] +[137.25775865554883, "o", " "] +[137.28775865554883, "o", "-"] +[137.31775865554883, "o", "-"] +[137.34775865554883, "o", "p"] +[137.37775865554883, "o", "r"] +[137.40775865554883, "o", "o"] +[137.43775865554883, "o", "f"] +[137.46775865554883, "o", "i"] +[137.49775865554884, "o", "l"] +[137.52775865554884, "o", "e"] +[137.55775865554884, "o", "s"] +[137.58775865554884, "o", "-"] +[137.61775865554884, "o", "d"] +[137.64775865554884, "o", "i"] +[137.67775865554884, "o", "r"] +[137.70775865554884, "o", " "] +[137.73775865554884, "o", "."] +[137.76775865554885, "o", "."] +[137.79775865554885, "o", "/"] +[137.82775865554885, "o", "."] +[137.85775865554885, "o", "d"] +[137.88775865554885, "o", "b"] +[137.91775865554885, "o", "t"] +[137.94775865554885, "o", "\r\n"] +[137.97775865554885, "o", "\u001b[0m"] +[138.00775865554886, "o", "\r\n"] +[138.5215599918373, "o", "Checked out raw_jaffle_shop:d97832c96958.\r\n"] +[139.5215599918373, "o", "Running with dbt=0.18.0\r\n"] +[139.95285204887466, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[140.90518907547073, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[140.9081030273445, "o", "\r\n"] +[141.35692457199173, "o", "15:49:01 | Concurrency: 4 threads (target='splitgraph')\r\n"] +[141.35694126129226, "o", "15:49:01 | \r\n"] +[141.3677103900917, "o", "15:49:01 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]"] +[141.36783484459, "o", "\r\n"] +[141.37377456665115, "o", "15:49:01 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]"] +[141.37382034301834, "o", "\r\n"] +[141.3998697185524, "o", "15:49:01 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]"] +[141.3999231243141, "o", "\r\n"] +[141.41153077125625, "o", "15:49:01 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]"] +[141.41157869339065, "o", "\r\n"] +[141.67669180870132, "o", "15:49:02 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.30s]"] +[141.67674497604446, "o", "\r\n"] +[141.6843047523506, "o", "15:49:02 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.30s]\r\n"] +[141.69735912323074, "o", "15:49:02 | 5 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]\r\n"] +[141.70333270073013, "o", "15:49:02 | 6 of 9 START table model dbt_jaffle.customer_payments................ [RUN]"] +[141.70336822509842, "o", "\r\n"] +[141.71652893066482, "o", "15:49:02 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.28s]\r\n"] +[141.7510886573799, "o", "15:49:02 | 7 of 9 START table model dbt_jaffle.order_payments................... [RUN]"] +[141.75116375923233, "o", "\r\n"] +[141.76246217727737, "o", "15:49:02 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.30s]\r\n"] +[141.91980890274124, "o", "15:49:02 | 6 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.20s]\r\n"] +[141.9312189006813, "o", "15:49:02 | 5 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.23s]"] +[141.93126491546707, "o", "\r\n"] +[141.93911651611404, "o", "15:49:02 | 8 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]"] +[141.93916682243423, "o", "\r\n"] +[141.96048478126602, "o", "15:49:02 | 7 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.19s]\r\n"] +[141.9745083236702, "o", "15:49:02 | 9 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]"] +[141.97455886840896, "o", "\r\n"] +[142.09704832077102, "o", "15:49:02 | 8 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.15s]"] +[142.09712223053054, "o", "\r\n"] +[142.11165980339126, "o", "15:49:02 | 9 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.13s]\r\n"] +[142.18677405357437, "o", "15:49:02 | \r\n"] +[142.18684581756668, "o", "15:49:02 | Finished running 4 view models, 5 table models in 1.28s.\r\n"] +[142.2192945861824, "o", "\r\n"] +[142.2193789863594, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[142.21992234230117, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[142.4215147876747, "o", "\u001b[0m"] +[142.4515147876747, "o", "\u001b[1m"] +[142.4815147876747, "o", "\u001b[36m"] +[142.5115147876747, "o", "\u001b[91m"] +[142.5415147876747, "o", "$"] +[142.57151478767472, "o", " "] +[142.60151478767472, "o", "\u001b[0m"] +[156.47775865554874, "o", "\u001b[H"] +[156.50775865554874, "o", "\u001b[J"] +[156.53775865554874, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create an image from the new data."] +[156.56775865554874, "o", "\r\n"] +[156.59775865554874, "o", "$"] +[156.62775865554875, "o", " "] +[156.65775865554875, "o", "s"] +[156.68775865554875, "o", "g"] +[156.71775865554875, "o", "r"] +[156.74775865554875, "o", " "] +[156.77775865554875, "o", "c"] +[156.80775865554875, "o", "o"] +[156.83775865554875, "o", "m"] +[156.86775865554876, "o", "m"] +[156.89775865554876, "o", "i"] +[156.92775865554876, "o", "t"] +[156.95775865554876, "o", " "] +[156.98775865554876, "o", "d"] +[157.01775865554876, "o", "b"] +[157.04775865554876, "o", "t"] +[157.07775865554876, "o", "_"] +[157.10775865554876, "o", "j"] +[157.13775865554877, "o", "a"] +[157.16775865554877, "o", "f"] +[157.19775865554877, "o", "f"] +[157.22775865554877, "o", "l"] +[157.25775865554877, "o", "e"] +[157.28775865554877, "o", "\r\n"] +[157.31775865554877, "o", "$"] +[157.34775865554877, "o", " "] +[157.37775865554877, "o", "s"] +[157.40775865554878, "o", "g"] +[157.43775865554878, "o", "r"] +[157.46775865554878, "o", " "] +[157.49775865554878, "o", "t"] +[157.52775865554878, "o", "a"] +[157.55775865554878, "o", "g"] +[157.58775865554878, "o", " "] +[157.61775865554878, "o", "d"] +[157.64775865554878, "o", "b"] +[157.67775865554879, "o", "t"] +[157.7077586555488, "o", "_"] +[157.7377586555488, "o", "j"] +[157.7677586555488, "o", "a"] +[157.7977586555488, "o", "f"] +[157.8277586555488, "o", "f"] +[157.8577586555488, "o", "l"] +[157.8877586555488, "o", "e"] +[157.9177586555488, "o", " "] +[157.9477586555488, "o", "a"] +[157.9777586555488, "o", "s"] +[158.0077586555488, "o", "o"] +[158.0377586555488, "o", "f"] +[158.0677586555488, "o", "_"] +[158.0977586555488, "o", "2"] +[158.1277586555488, "o", "0"] +[158.1577586555488, "o", "1"] +[158.1877586555488, "o", "8"] +[158.2177586555488, "o", "0"] +[158.2477586555488, "o", "4"] +[158.2777586555488, "o", "1"] +[158.3077586555488, "o", "0"] +[158.3377586555488, "o", "\r\n"] +[158.3677586555488, "o", "\u001b[0m"] +[158.3977586555488, "o", "\r\n"] +[158.62409370422435, "o", "Committing dbt_jaffle...\r\n"] +[158.64428894996715, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[158.65283697128368, "o", "Processing table customer_payments\r\n"] +[158.7149955558784, "o", "Object o47a7af4dc6d74898da55e6c760eac4d702db25633cfab4e28e6df77cf00098 already exists, skipping\r\n"] +[158.73974936485362, "o", "Processing table customer_orders\r\n"] +[158.74615567207408, "o", "Object o0fafb9e76c06e221af3aa558b0a751b176857a09b2d75ca00826becbd12ef5 already exists, skipping\r\n"] +[158.75528972625804, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[158.75665157318187, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[158.75797431945873, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[158.76581256866527, "o", "Processing table order_payments\r\n"] +[158.772227220536, "o", "Object o87940f703edacc7113c37ae83a6abe6293f48cbb940171ef03875a066b0c5c already exists, skipping\r\n"] +[158.78842299461436, "o", "Processing table dim_customers\r\n"] +[158.7952300834663, "o", "Object o9656926ef986d89e326952a43869eaf3dc59905ff22aba22cd3dd67a834dc5 already exists, skipping\r\n"] +[158.81144683837962, "o", "Processing table fct_orders\r\n"] +[158.85302703857494, "o", "Committed dbt_jaffle as 8e7de5067c05.\r\n"] +[159.08735030174327, "o", "Tagged dbt_jaffle:8e7de5067c051959d4828f0471da0be18f4279b734019dfe0f8cf2452b156620 with asof_20180410.\r\n"] +[159.11735030174327, "o", "\u001b[1m"] +[159.14735030174327, "o", "\u001b[36m"] +[159.17735030174327, "o", "\u001b[91m"] +[159.20735030174328, "o", "$"] +[159.23735030174328, "o", " "] +[159.26735030174328, "o", "\u001b[0m"] +[166.47775865554874, "o", "\u001b[H"] +[166.50775865554874, "o", "\u001b[J"] +[166.53775865554874, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We now have two versions of the source and the target dataset."] +[166.56775865554874, "o", "\r\n"] +[166.59775865554874, "o", "$"] +[166.62775865554875, "o", " "] +[166.65775865554875, "o", "s"] +[166.68775865554875, "o", "g"] +[166.71775865554875, "o", "r"] +[166.74775865554875, "o", " "] +[166.77775865554875, "o", "l"] +[166.80775865554875, "o", "o"] +[166.83775865554875, "o", "g"] +[166.86775865554876, "o", " "] +[166.89775865554876, "o", "-"] +[166.92775865554876, "o", "t"] +[166.95775865554876, "o", " "] +[166.98775865554876, "o", "r"] +[167.01775865554876, "o", "a"] +[167.04775865554876, "o", "w"] +[167.07775865554876, "o", "_"] +[167.10775865554876, "o", "j"] +[167.13775865554877, "o", "a"] +[167.16775865554877, "o", "f"] +[167.19775865554877, "o", "f"] +[167.22775865554877, "o", "l"] +[167.25775865554877, "o", "e"] +[167.28775865554877, "o", "_"] +[167.31775865554877, "o", "s"] +[167.34775865554877, "o", "h"] +[167.37775865554877, "o", "o"] +[167.40775865554878, "o", "p"] +[167.43775865554878, "o", "\r\n"] +[167.46775865554878, "o", "$"] +[167.49775865554878, "o", " "] +[167.52775865554878, "o", "s"] +[167.55775865554878, "o", "g"] +[167.58775865554878, "o", "r"] +[167.61775865554878, "o", " "] +[167.64775865554878, "o", "l"] +[167.67775865554879, "o", "o"] +[167.7077586555488, "o", "g"] +[167.7377586555488, "o", " "] +[167.7677586555488, "o", "-"] +[167.7977586555488, "o", "t"] +[167.8277586555488, "o", " "] +[167.8577586555488, "o", "d"] +[167.8877586555488, "o", "b"] +[167.9177586555488, "o", "t"] +[167.9477586555488, "o", "_"] +[167.9777586555488, "o", "j"] +[168.0077586555488, "o", "a"] +[168.0377586555488, "o", "f"] +[168.0677586555488, "o", "f"] +[168.0977586555488, "o", "l"] +[168.1277586555488, "o", "e"] +[168.1577586555488, "o", "\r\n"] +[168.1877586555488, "o", "\u001b[0m"] +[168.2177586555488, "o", "\r\n"] +[168.46538639068675, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-04-07 15:48:44\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m48240f1fd7\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-04-07 15:48:46\u001b[0m\r\n \u2514 \u001b[1m\u001b[91md97832c969\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-04-07 15:48:49\u001b[0m\r\n"] +[168.70875334739756, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-04-07 15:48:52\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m3c712598ee\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-04-07 15:48:57\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m8e7de5067c\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-04-07 15:49:03\u001b[0m\r\n"] +[168.73875334739756, "o", "\u001b[1m"] +[168.76875334739756, "o", "\u001b[36m"] +[168.79875334739756, "o", "\u001b[91m"] +[168.82875334739757, "o", "$"] +[168.85875334739757, "o", " "] +[168.88875334739757, "o", "\u001b[0m"] +[173.91875334739757, "o", "\u001b[H"] +[173.94875334739757, "o", "\u001b[J"] +[173.97875334739757, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the difference between the two datasets that dbt built."] +[174.00875334739757, "o", "\r\n"] +[174.03875334739757, "o", "$"] +[174.06875334739757, "o", " "] +[174.09875334739758, "o", "s"] +[174.12875334739758, "o", "g"] +[174.15875334739758, "o", "r"] +[174.18875334739758, "o", " "] +[174.21875334739758, "o", "d"] +[174.24875334739758, "o", "i"] +[174.27875334739758, "o", "f"] +[174.30875334739758, "o", "f"] +[174.33875334739759, "o", " "] +[174.3687533473976, "o", "d"] +[174.3987533473976, "o", "b"] +[174.4287533473976, "o", "t"] +[174.4587533473976, "o", "_"] +[174.4887533473976, "o", "j"] +[174.5187533473976, "o", "a"] +[174.5487533473976, "o", "f"] +[174.5787533473976, "o", "f"] +[174.6087533473976, "o", "l"] +[174.6387533473976, "o", "e"] +[174.6687533473976, "o", " "] +[174.6987533473976, "o", "a"] +[174.7287533473976, "o", "s"] +[174.7587533473976, "o", "o"] +[174.7887533473976, "o", "f"] +[174.8187533473976, "o", "_"] +[174.8487533473976, "o", "2"] +[174.8787533473976, "o", "0"] +[174.9087533473976, "o", "1"] +[174.9387533473976, "o", "8"] +[174.9687533473976, "o", "0"] +[174.9987533473976, "o", "4"] +[175.0287533473976, "o", "0"] +[175.0587533473976, "o", "9"] +[175.0887533473976, "o", " "] +[175.11875334739761, "o", "a"] +[175.14875334739762, "o", "s"] +[175.17875334739762, "o", "o"] +[175.20875334739762, "o", "f"] +[175.23875334739762, "o", "_"] +[175.26875334739762, "o", "2"] +[175.29875334739762, "o", "0"] +[175.32875334739762, "o", "1"] +[175.35875334739762, "o", "8"] +[175.38875334739762, "o", "0"] +[175.41875334739763, "o", "4"] +[175.44875334739763, "o", "1"] +[175.47875334739763, "o", "0"] +[175.50875334739763, "o", " "] +[175.53875334739763, "o", "-"] +[175.56875334739763, "o", "-"] +[175.59875334739763, "o", "v"] +[175.62875334739763, "o", "e"] +[175.65875334739764, "o", "r"] +[175.68875334739764, "o", "b"] +[175.71875334739764, "o", "o"] +[175.74875334739764, "o", "s"] +[175.77875334739764, "o", "e"] +[175.80875334739764, "o", "\r\n"] +[175.83875334739764, "o", "\u001b[0m"] +[175.86875334739764, "o", "\r\n"] +[176.28781381607135, "o", "Between 3c712598ee1e and 8e7de5067c05: \r\n"] +[176.2881633377083, "o", "customer_orders: no changes.\r\n"] +[176.2881988620766, "o", "customer_payments: no changes.\r\ndim_customers: no changes.\r\n"] +[176.28823462486346, "o", "fct_orders: added 5 rows, removed 5 rows.\r\n- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending', 0, 0, 0, 23, 23)\r\n- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending', 0, 0, 15, 0, 15)\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 0, 25, 0, 25)\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped', 0, 0, 17, 0, 17)\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 23, 0, 0, 23)\r\n"] +[176.288251314164, "o", "+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned', 0, 0, 0, 23, 23)\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned', 0, 0, 15, 0, 15)\r\n+ (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 25, 0, 25)\r\n"] +[176.28825965881427, "o", "+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 17, 0, 17)\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 23, 0, 0, 23)\r\n"] +[176.28826681137164, "o", "order_payments: no changes.\r\n"] +[176.31826681137164, "o", "\u001b[1m"] +[176.34826681137164, "o", "\u001b[36m"] +[176.37826681137165, "o", "\u001b[91m"] +[176.40826681137165, "o", "$"] +[176.43826681137165, "o", " "] +[176.46826681137165, "o", "\u001b[0m"] +[183.41875334739757, "o", "\u001b[H"] +[183.44875334739757, "o", "\u001b[J"] +[183.47875334739757, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a sample query: how much in bank transfer refunds did we process?"] +[183.50875334739757, "o", "\r\n"] +[183.53875334739757, "o", "$"] +[183.56875334739757, "o", " "] +[183.59875334739758, "o", "s"] +[183.62875334739758, "o", "g"] +[183.65875334739758, "o", "r"] +[183.68875334739758, "o", " "] +[183.71875334739758, "o", "s"] +[183.74875334739758, "o", "q"] +[183.77875334739758, "o", "l"] +[183.80875334739758, "o", " "] +[183.83875334739759, "o", "-"] +[183.8687533473976, "o", "i"] +[183.8987533473976, "o", " "] +[183.9287533473976, "o", "d"] +[183.9587533473976, "o", "b"] +[183.9887533473976, "o", "t"] +[184.0187533473976, "o", "_"] +[184.0487533473976, "o", "j"] +[184.0787533473976, "o", "a"] +[184.1087533473976, "o", "f"] +[184.1387533473976, "o", "f"] +[184.1687533473976, "o", "l"] +[184.1987533473976, "o", "e"] +[184.2287533473976, "o", ":"] +[184.2587533473976, "o", "a"] +[184.2887533473976, "o", "s"] +[184.3187533473976, "o", "o"] +[184.3487533473976, "o", "f"] +[184.3787533473976, "o", "_"] +[184.4087533473976, "o", "2"] +[184.4387533473976, "o", "0"] +[184.4687533473976, "o", "1"] +[184.4987533473976, "o", "8"] +[184.5287533473976, "o", "0"] +[184.5587533473976, "o", "4"] +[184.5887533473976, "o", "0"] +[184.61875334739761, "o", "9"] +[184.64875334739762, "o", " "] +[184.67875334739762, "o", "\""] +[184.70875334739762, "o", "S"] +[184.73875334739762, "o", "E"] +[184.76875334739762, "o", "L"] +[184.79875334739762, "o", "E"] +[184.82875334739762, "o", "C"] +[184.85875334739762, "o", "T"] +[184.88875334739762, "o", " "] +[184.91875334739763, "o", "s"] +[184.94875334739763, "o", "u"] +[184.97875334739763, "o", "m"] +[185.00875334739763, "o", "("] +[185.03875334739763, "o", "b"] +[185.06875334739763, "o", "a"] +[185.09875334739763, "o", "n"] +[185.12875334739763, "o", "k"] +[185.15875334739764, "o", "_"] +[185.18875334739764, "o", "t"] +[185.21875334739764, "o", "r"] +[185.24875334739764, "o", "a"] +[185.27875334739764, "o", "n"] +[185.30875334739764, "o", "s"] +[185.33875334739764, "o", "f"] +[185.36875334739764, "o", "e"] +[185.39875334739764, "o", "r"] +[185.42875334739765, "o", "_"] +[185.45875334739765, "o", "a"] +[185.48875334739765, "o", "m"] +[185.51875334739765, "o", "o"] +[185.54875334739765, "o", "u"] +[185.57875334739765, "o", "n"] +[185.60875334739765, "o", "t"] +[185.63875334739765, "o", ")"] +[185.66875334739765, "o", " "] +[185.69875334739766, "o", "F"] +[185.72875334739766, "o", "R"] +[185.75875334739766, "o", "O"] +[185.78875334739766, "o", "M"] +[185.81875334739766, "o", " "] +[185.84875334739766, "o", "f"] +[185.87875334739766, "o", "c"] +[185.90875334739766, "o", "t"] +[185.93875334739766, "o", "_"] +[185.96875334739767, "o", "o"] +[185.99875334739767, "o", "r"] +[186.02875334739767, "o", "d"] +[186.05875334739767, "o", "e"] +[186.08875334739767, "o", "r"] +[186.11875334739767, "o", "s"] +[186.14875334739767, "o", " "] +[186.17875334739767, "o", "W"] +[186.20875334739767, "o", "H"] +[186.23875334739768, "o", "E"] +[186.26875334739768, "o", "R"] +[186.29875334739768, "o", "E"] +[186.32875334739768, "o", " "] +[186.35875334739768, "o", "s"] +[186.38875334739768, "o", "t"] +[186.41875334739768, "o", "a"] +[186.44875334739768, "o", "t"] +[186.47875334739769, "o", "u"] +[186.5087533473977, "o", "s"] +[186.5387533473977, "o", " "] +[186.5687533473977, "o", "="] +[186.5987533473977, "o", " "] +[186.6287533473977, "o", "'"] +[186.6587533473977, "o", "r"] +[186.6887533473977, "o", "e"] +[186.7187533473977, "o", "t"] +[186.7487533473977, "o", "u"] +[186.7787533473977, "o", "r"] +[186.8087533473977, "o", "n"] +[186.8387533473977, "o", "e"] +[186.8687533473977, "o", "d"] +[186.8987533473977, "o", "'"] +[186.9287533473977, "o", "\""] +[186.9587533473977, "o", "\r\n"] +[186.9887533473977, "o", "$"] +[187.0187533473977, "o", " "] +[187.0487533473977, "o", "s"] +[187.0787533473977, "o", "g"] +[187.1087533473977, "o", "r"] +[187.1387533473977, "o", " "] +[187.1687533473977, "o", "s"] +[187.1987533473977, "o", "q"] +[187.2287533473977, "o", "l"] +[187.25875334739771, "o", " "] +[187.28875334739772, "o", "-"] +[187.31875334739772, "o", "i"] +[187.34875334739772, "o", " "] +[187.37875334739772, "o", "d"] +[187.40875334739772, "o", "b"] +[187.43875334739772, "o", "t"] +[187.46875334739772, "o", "_"] +[187.49875334739772, "o", "j"] +[187.52875334739772, "o", "a"] +[187.55875334739773, "o", "f"] +[187.58875334739773, "o", "f"] +[187.61875334739773, "o", "l"] +[187.64875334739773, "o", "e"] +[187.67875334739773, "o", ":"] +[187.70875334739773, "o", "a"] +[187.73875334739773, "o", "s"] +[187.76875334739773, "o", "o"] +[187.79875334739774, "o", "f"] +[187.82875334739774, "o", "_"] +[187.85875334739774, "o", "2"] +[187.88875334739774, "o", "0"] +[187.91875334739774, "o", "1"] +[187.94875334739774, "o", "8"] +[187.97875334739774, "o", "0"] +[188.00875334739774, "o", "4"] +[188.03875334739774, "o", "1"] +[188.06875334739775, "o", "0"] +[188.09875334739775, "o", " "] +[188.12875334739775, "o", "\""] +[188.15875334739775, "o", "S"] +[188.18875334739775, "o", "E"] +[188.21875334739775, "o", "L"] +[188.24875334739775, "o", "E"] +[188.27875334739775, "o", "C"] +[188.30875334739775, "o", "T"] +[188.33875334739776, "o", " "] +[188.36875334739776, "o", "s"] +[188.39875334739776, "o", "u"] +[188.42875334739776, "o", "m"] +[188.45875334739776, "o", "("] +[188.48875334739776, "o", "b"] +[188.51875334739776, "o", "a"] +[188.54875334739776, "o", "n"] +[188.57875334739776, "o", "k"] +[188.60875334739777, "o", "_"] +[188.63875334739777, "o", "t"] +[188.66875334739777, "o", "r"] +[188.69875334739777, "o", "a"] +[188.72875334739777, "o", "n"] +[188.75875334739777, "o", "s"] +[188.78875334739777, "o", "f"] +[188.81875334739777, "o", "e"] +[188.84875334739777, "o", "r"] +[188.87875334739778, "o", "_"] +[188.90875334739778, "o", "a"] +[188.93875334739778, "o", "m"] +[188.96875334739778, "o", "o"] +[188.99875334739778, "o", "u"] +[189.02875334739778, "o", "n"] +[189.05875334739778, "o", "t"] +[189.08875334739778, "o", ")"] +[189.11875334739779, "o", " "] +[189.1487533473978, "o", "F"] +[189.1787533473978, "o", "R"] +[189.2087533473978, "o", "O"] +[189.2387533473978, "o", "M"] +[189.2687533473978, "o", " "] +[189.2987533473978, "o", "f"] +[189.3287533473978, "o", "c"] +[189.3587533473978, "o", "t"] +[189.3887533473978, "o", "_"] +[189.4187533473978, "o", "o"] +[189.4487533473978, "o", "r"] +[189.4787533473978, "o", "d"] +[189.5087533473978, "o", "e"] +[189.5387533473978, "o", "r"] +[189.5687533473978, "o", "s"] +[189.5987533473978, "o", " "] +[189.6287533473978, "o", "W"] +[189.6587533473978, "o", "H"] +[189.6887533473978, "o", "E"] +[189.7187533473978, "o", "R"] +[189.7487533473978, "o", "E"] +[189.7787533473978, "o", " "] +[189.8087533473978, "o", "s"] +[189.8387533473978, "o", "t"] +[189.8687533473978, "o", "a"] +[189.89875334739781, "o", "t"] +[189.92875334739782, "o", "u"] +[189.95875334739782, "o", "s"] +[189.98875334739782, "o", " "] +[190.01875334739782, "o", "="] +[190.04875334739782, "o", " "] +[190.07875334739782, "o", "'"] +[190.10875334739782, "o", "r"] +[190.13875334739782, "o", "e"] +[190.16875334739782, "o", "t"] +[190.19875334739783, "o", "u"] +[190.22875334739783, "o", "r"] +[190.25875334739783, "o", "n"] +[190.28875334739783, "o", "e"] +[190.31875334739783, "o", "d"] +[190.34875334739783, "o", "'"] +[190.37875334739783, "o", "\""] +[190.40875334739783, "o", "\r\n"] +[190.43875334739784, "o", "\u001b[0m"] +[190.46875334739784, "o", "\r\n"] +[191.21246362686256, "o", "3\r\n"] +[191.9492521381388, "o", "60\r\n"] +[191.9792521381388, "o", "\u001b[1m"] +[192.0092521381388, "o", "\u001b[36m"] +[192.0392521381388, "o", "\u001b[91m"] +[192.0692521381388, "o", "$"] +[192.0992521381388, "o", " "] +[192.1292521381388, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.12/import-from-csv.cast b/content/casts/versioned/archive/v0.2.12/import-from-csv.cast new file mode 100644 index 00000000..75a4d15a --- /dev/null +++ b/content/casts/versioned/archive/v0.2.12/import-from-csv.cast @@ -0,0 +1,612 @@ +{"version": 2, "width": 100, "height": 45, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1617810461, "metadata": {"tss": [{"h": "Inspect the data file", "ts": 0.06}, {"h": "Initialize the repository", "ts": 6.501538038253786}, {"h": "Ingest the data into a new table (wrapper around COPY FROM STDIN)", "ts": 27.501538038253788}, {"h": "The data is now in a table but not committed as a Splitgraph image", "ts": 36.191538038253924}, {"h": "Create a new image and tag it", "ts": 43.5060787677767}, {"h": "Inspect the image", "ts": 51.43830611228972}, {"h": "Inspect the table", "ts": 58.13061093330418}, {"h": "Inspect object metadata", "ts": 77.63061093330418}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the data file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # (originally from https://data.townofcary.org/api/v2/catalog/datasets/rdu-weather-history/exports/csv)\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "h"] +[0.27, "o", "e"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "d"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "n"] +[0.4500000000000002, "o", "5"] +[0.4800000000000002, "o", " "] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", "d"] +[0.5700000000000003, "o", "u"] +[0.6000000000000003, "o", "-"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "-"] +[0.8700000000000006, "o", "h"] +[0.9000000000000006, "o", "i"] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "t"] +[0.9900000000000007, "o", "o"] +[1.0200000000000007, "o", "r"] +[1.0500000000000007, "o", "y"] +[1.0800000000000007, "o", "."] +[1.1100000000000008, "o", "c"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", "v"] +[1.2000000000000008, "o", "\r\n"] +[1.2300000000000009, "o", "\u001b[0m"] +[1.260000000000001, "o", "\r\n"] +[1.2615296936035165, "o", "date;temperaturemin;temperaturemax;precipitation;snowfall;snowdepth;avgwindspeed;fastest2minwinddir;fastest2minwindspeed;fastest5secwinddir;fastest5secwindspeed;fog;fogheavy;mist;rain;fogground;ice;glaze;drizzle;snow;freezingrain;smokehaze;thunder;highwind;hail;blowingsnow;dust;freezingfog\r\r\n2007-01-06;50.0;71.1;0.13;0.0;0.0;8.05;230;17.9;230;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-09;30.0;55.0;0.0;0.0;0.0;7.61;280;23.04;270;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;N"] +[1.261538038253785, "o", "o;No\r\r\n2007-01-14;50.0;73.9;0.0;0.0;0.0;8.5;230;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-15;57.0;73.9;0.0;0.0;0.0;13.2;230;23.94;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n"] +[1.291538038253785, "o", "\u001b[1m"] +[1.3215380382537851, "o", "\u001b[36m"] +[1.3515380382537852, "o", "\u001b[91m"] +[1.3815380382537852, "o", "$"] +[1.4115380382537852, "o", " "] +[1.4415380382537852, "o", "\u001b[0m"] +[6.471538038253786, "o", "\u001b[H"] +[6.501538038253786, "o", "\u001b[J"] +[6.531538038253786, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the repository"] +[6.5615380382537865, "o", "\r\n"] +[6.591538038253787, "o", "$"] +[6.621538038253787, "o", " "] +[6.651538038253787, "o", "s"] +[6.6815380382537874, "o", "g"] +[6.711538038253788, "o", "r"] +[6.741538038253788, "o", " "] +[6.771538038253788, "o", "i"] +[6.801538038253788, "o", "n"] +[6.831538038253789, "o", "i"] +[6.861538038253789, "o", "t"] +[6.891538038253789, "o", " "] +[6.921538038253789, "o", "d"] +[6.95153803825379, "o", "e"] +[6.98153803825379, "o", "m"] +[7.01153803825379, "o", "o"] +[7.04153803825379, "o", "/"] +[7.071538038253791, "o", "w"] +[7.101538038253791, "o", "e"] +[7.131538038253791, "o", "a"] +[7.161538038253791, "o", "t"] +[7.191538038253792, "o", "h"] +[7.221538038253792, "o", "e"] +[7.251538038253792, "o", "r"] +[7.281538038253792, "o", "\r\n"] +[7.311538038253793, "o", "$"] +[7.341538038253793, "o", " "] +[7.371538038253793, "o", "s"] +[7.401538038253793, "o", "g"] +[7.431538038253794, "o", "r"] +[7.461538038253794, "o", " "] +[7.491538038253794, "o", "c"] +[7.521538038253794, "o", "s"] +[7.551538038253795, "o", "v"] +[7.581538038253795, "o", " "] +[7.611538038253795, "o", "i"] +[7.641538038253795, "o", "m"] +[7.671538038253796, "o", "p"] +[7.701538038253796, "o", "o"] +[7.731538038253796, "o", "r"] +[7.761538038253796, "o", "t"] +[7.791538038253797, "o", " "] +[7.821538038253797, "o", "-"] +[7.851538038253797, "o", "-"] +[7.881538038253797, "o", "h"] +[7.911538038253798, "o", "e"] +[7.941538038253798, "o", "l"] +[7.971538038253798, "o", "p"] +[8.001538038253798, "o", "\r\n"] +[8.031538038253798, "o", "\u001b[0m"] +[8.061538038253797, "o", "\r\n"] +[8.292904672622694, "o", "Initialized empty repository demo/weather\r\n"] +[8.485648212432874, "o", "Usage: sgr csv import [OPTIONS] REPOSITORY TABLE\r\n\r\n Import a CSV file into a checked-out Splitgraph repository. This doesn't\r\n create a new image, use sgr commit after the import and any adjustments\r\n (e.g. adding primary keys or converting column types) to do so.\r\n\r\n If the target table doesn't exist, this will create a new table.\r\n\r\n If the target table does exist, this will try and patch the new values in\r\n by updating rows that exist in the current table (as per its primary key\r\n constraints) an"] +[8.485659656524671, "o", "d inserting new ones. Rows existing in the current table\r\n but missing in the CSV won't be deleted.\r\n\r\n If -r is passed, the table will instead be deleted and recreated from the\r\n CSV file if it exists.\r\n\r\nOptions:\r\n -f, --file FILENAME File name to import data from, default\r\n stdin.\r\n\r\n -r, --replace Replace the table if it already exists.\r\n -k, --primary-key TEXT Use the specified column(s) as primary\r\n "] +[8.48566514015199, "o", " key(s)\r\n\r\n -t, --override-type ...\r\n Explicitly set types of these columns to PG\r\n types\r\n\r\n --encoding TEXT Encoding to use for the CSV file\r\n --separator TEXT CSV separator to use\r\n --no-header Treats the first line of the CSV as data\r\n rather than a header.\r\n\r\n --skip-schema-check Skips checking that the dataframe is\r\n "] +[8.485672292709364, "o", " compatible with the target schema.\r\n\r\n --help Show this message and exit.\r\n"] +[8.515672292709363, "o", "\u001b[1m"] +[8.545672292709362, "o", "\u001b[36m"] +[8.575672292709362, "o", "\u001b[91m"] +[8.605672292709361, "o", "$"] +[8.63567229270936, "o", " "] +[8.66567229270936, "o", "\u001b[0m"] +[27.471538038253787, "o", "\u001b[H"] +[27.501538038253788, "o", "\u001b[J"] +[27.53153803825379, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the data into a new table (wrapper around COPY FROM STDIN)"] +[27.56153803825379, "o", "\r\n"] +[27.59153803825379, "o", "$"] +[27.621538038253792, "o", " "] +[27.651538038253793, "o", "s"] +[27.681538038253795, "o", "g"] +[27.711538038253796, "o", "r"] +[27.741538038253797, "o", " "] +[27.771538038253798, "o", "c"] +[27.8015380382538, "o", "s"] +[27.8315380382538, "o", "v"] +[27.8615380382538, "o", " "] +[27.891538038253803, "o", "i"] +[27.921538038253804, "o", "m"] +[27.951538038253805, "o", "p"] +[27.981538038253806, "o", "o"] +[28.011538038253807, "o", "r"] +[28.041538038253808, "o", "t"] +[28.07153803825381, "o", " "] +[28.10153803825381, "o", "-"] +[28.13153803825381, "o", "f"] +[28.161538038253813, "o", " "] +[28.191538038253814, "o", "r"] +[28.221538038253815, "o", "d"] +[28.251538038253816, "o", "u"] +[28.281538038253817, "o", "-"] +[28.31153803825382, "o", "w"] +[28.34153803825382, "o", "e"] +[28.37153803825382, "o", "a"] +[28.401538038253822, "o", "t"] +[28.431538038253823, "o", "h"] +[28.461538038253824, "o", "e"] +[28.491538038253825, "o", "r"] +[28.521538038253826, "o", "-"] +[28.551538038253828, "o", "h"] +[28.58153803825383, "o", "i"] +[28.61153803825383, "o", "s"] +[28.64153803825383, "o", "t"] +[28.671538038253832, "o", "o"] +[28.701538038253833, "o", "r"] +[28.731538038253834, "o", "y"] +[28.761538038253835, "o", "."] +[28.791538038253837, "o", "c"] +[28.821538038253838, "o", "s"] +[28.85153803825384, "o", "v"] +[28.88153803825384, "o", " "] +[28.91153803825384, "o", "\\"] +[28.941538038253842, "o", "\r\n "] +[28.971538038253843, "o", "-"] +[29.001538038253845, "o", "k"] +[29.031538038253846, "o", " "] +[29.061538038253847, "o", "d"] +[29.091538038253848, "o", "a"] +[29.12153803825385, "o", "t"] +[29.15153803825385, "o", "e"] +[29.18153803825385, "o", " "] +[29.211538038253853, "o", "\\"] +[29.241538038253854, "o", "\r\n "] +[29.271538038253855, "o", "-"] +[29.301538038253856, "o", "t"] +[29.331538038253857, "o", " "] +[29.361538038253858, "o", "d"] +[29.39153803825386, "o", "a"] +[29.42153803825386, "o", "t"] +[29.45153803825386, "o", "e"] +[29.481538038253863, "o", " "] +[29.511538038253864, "o", "t"] +[29.541538038253865, "o", "i"] +[29.571538038253866, "o", "m"] +[29.601538038253867, "o", "e"] +[29.63153803825387, "o", "s"] +[29.66153803825387, "o", "t"] +[29.69153803825387, "o", "a"] +[29.721538038253872, "o", "m"] +[29.751538038253873, "o", "p"] +[29.781538038253874, "o", " "] +[29.811538038253875, "o", "\\"] +[29.841538038253876, "o", "\r\n "] +[29.871538038253878, "o", "-"] +[29.90153803825388, "o", "-"] +[29.93153803825388, "o", "s"] +[29.96153803825388, "o", "e"] +[29.991538038253882, "o", "p"] +[30.021538038253883, "o", "a"] +[30.051538038253884, "o", "r"] +[30.081538038253886, "o", "a"] +[30.111538038253887, "o", "t"] +[30.141538038253888, "o", "o"] +[30.17153803825389, "o", "r"] +[30.20153803825389, "o", " "] +[30.23153803825389, "o", "\""] +[30.261538038253892, "o", ";"] +[30.291538038253893, "o", "\""] +[30.321538038253895, "o", " "] +[30.351538038253896, "o", "\\"] +[30.381538038253897, "o", "\r\n "] +[30.411538038253898, "o", "d"] +[30.4415380382539, "o", "e"] +[30.4715380382539, "o", "m"] +[30.5015380382539, "o", "o"] +[30.531538038253903, "o", "/"] +[30.561538038253904, "o", "w"] +[30.591538038253905, "o", "e"] +[30.621538038253906, "o", "a"] +[30.651538038253907, "o", "t"] +[30.68153803825391, "o", "h"] +[30.71153803825391, "o", "e"] +[30.74153803825391, "o", "r"] +[30.77153803825391, "o", " "] +[30.801538038253913, "o", "r"] +[30.831538038253914, "o", "d"] +[30.861538038253915, "o", "u"] +[30.891538038253916, "o", "\r\n"] +[30.921538038253917, "o", "\u001b[0m"] +[30.95153803825392, "o", "\r\n"] +[30.98153803825392, "o", "\u001b[1m"] +[31.01153803825392, "o", "\u001b[36m"] +[31.041538038253922, "o", "\u001b[91m"] +[31.071538038253923, "o", "$"] +[31.101538038253924, "o", " "] +[31.131538038253925, "o", "\u001b[0m"] +[36.16153803825392, "o", "\u001b[H"] +[36.191538038253924, "o", "\u001b[J"] +[36.221538038253925, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The data is now in a table but not committed as a Splitgraph image"] +[36.251538038253926, "o", "\r\n"] +[36.28153803825393, "o", "$"] +[36.31153803825393, "o", " "] +[36.34153803825393, "o", "s"] +[36.37153803825393, "o", "g"] +[36.40153803825393, "o", "r"] +[36.43153803825393, "o", " "] +[36.461538038253934, "o", "s"] +[36.491538038253935, "o", "t"] +[36.52153803825394, "o", "a"] +[36.55153803825394, "o", "t"] +[36.58153803825394, "o", "u"] +[36.61153803825394, "o", "s"] +[36.64153803825394, "o", " "] +[36.67153803825394, "o", "d"] +[36.70153803825394, "o", "e"] +[36.731538038253944, "o", "m"] +[36.761538038253946, "o", "o"] +[36.79153803825395, "o", "/"] +[36.82153803825395, "o", "w"] +[36.85153803825395, "o", "e"] +[36.88153803825395, "o", "a"] +[36.91153803825395, "o", "t"] +[36.94153803825395, "o", "h"] +[36.971538038253954, "o", "e"] +[37.001538038253955, "o", "r"] +[37.031538038253956, "o", "\r\n"] +[37.06153803825396, "o", "$"] +[37.09153803825396, "o", " "] +[37.12153803825396, "o", "s"] +[37.15153803825396, "o", "g"] +[37.18153803825396, "o", "r"] +[37.21153803825396, "o", " "] +[37.241538038253964, "o", "d"] +[37.271538038253965, "o", "i"] +[37.301538038253966, "o", "f"] +[37.33153803825397, "o", "f"] +[37.36153803825397, "o", " "] +[37.39153803825397, "o", "d"] +[37.42153803825397, "o", "e"] +[37.45153803825397, "o", "m"] +[37.48153803825397, "o", "o"] +[37.511538038253974, "o", "/"] +[37.541538038253975, "o", "w"] +[37.571538038253976, "o", "e"] +[37.60153803825398, "o", "a"] +[37.63153803825398, "o", "t"] +[37.66153803825398, "o", "h"] +[37.69153803825398, "o", "e"] +[37.72153803825398, "o", "r"] +[37.75153803825398, "o", "\r\n"] +[37.781538038253984, "o", "\u001b[0m"] +[37.811538038253985, "o", "\r\n"] +[38.03344708442708, "o", "demo/weather: on image 0000000000000000000000000000000000000000000000000000000000000000.\r\n"] +[38.266064462661944, "o", "Between 000000000000 and the current working copy: \r\n"] +[38.26607876777669, "o", "rdu: table added\r\n"] +[38.29607876777669, "o", "\u001b[1m"] +[38.32607876777669, "o", "\u001b[36m"] +[38.356078767776694, "o", "\u001b[91m"] +[38.386078767776695, "o", "$"] +[38.416078767776696, "o", " "] +[38.4460787677767, "o", "\u001b[0m"] +[43.4760787677767, "o", "\u001b[H"] +[43.5060787677767, "o", "\u001b[J"] +[43.5360787677767, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a new image and tag it"] +[43.5660787677767, "o", "\r\n"] +[43.5960787677767, "o", "$"] +[43.626078767776704, "o", " "] +[43.656078767776705, "o", "s"] +[43.686078767776706, "o", "g"] +[43.71607876777671, "o", "r"] +[43.74607876777671, "o", " "] +[43.77607876777671, "o", "c"] +[43.80607876777671, "o", "o"] +[43.83607876777671, "o", "m"] +[43.86607876777671, "o", "m"] +[43.896078767776714, "o", "i"] +[43.926078767776715, "o", "t"] +[43.95607876777672, "o", " "] +[43.98607876777672, "o", "d"] +[44.01607876777672, "o", "e"] +[44.04607876777672, "o", "m"] +[44.07607876777672, "o", "o"] +[44.10607876777672, "o", "/"] +[44.13607876777672, "o", "w"] +[44.166078767776725, "o", "e"] +[44.196078767776726, "o", "a"] +[44.22607876777673, "o", "t"] +[44.25607876777673, "o", "h"] +[44.28607876777673, "o", "e"] +[44.31607876777673, "o", "r"] +[44.34607876777673, "o", "\r\n"] +[44.37607876777673, "o", "$"] +[44.406078767776734, "o", " "] +[44.436078767776735, "o", "s"] +[44.466078767776736, "o", "g"] +[44.49607876777674, "o", "r"] +[44.52607876777674, "o", " "] +[44.55607876777674, "o", "t"] +[44.58607876777674, "o", "a"] +[44.61607876777674, "o", "g"] +[44.64607876777674, "o", " "] +[44.676078767776744, "o", "d"] +[44.706078767776745, "o", "e"] +[44.736078767776746, "o", "m"] +[44.76607876777675, "o", "o"] +[44.79607876777675, "o", "/"] +[44.82607876777675, "o", "w"] +[44.85607876777675, "o", "e"] +[44.88607876777675, "o", "a"] +[44.91607876777675, "o", "t"] +[44.946078767776754, "o", "h"] +[44.976078767776755, "o", "e"] +[45.006078767776756, "o", "r"] +[45.03607876777676, "o", " "] +[45.06607876777676, "o", "i"] +[45.09607876777676, "o", "n"] +[45.12607876777676, "o", "i"] +[45.15607876777676, "o", "t"] +[45.18607876777676, "o", "i"] +[45.216078767776764, "o", "a"] +[45.246078767776766, "o", "l"] +[45.27607876777677, "o", "_"] +[45.30607876777677, "o", "d"] +[45.33607876777677, "o", "a"] +[45.36607876777677, "o", "t"] +[45.39607876777677, "o", "a"] +[45.42607876777677, "o", "\r\n"] +[45.45607876777677, "o", "\u001b[0m"] +[45.486078767776775, "o", "\r\n"] +[45.72529461860685, "o", "Committing demo/weather...\r\n"] +[45.75004604339628, "o", "Processing table rdu\r\n"] +[45.966451911926555, "o", "Committed demo/weather as 2ae4e25fa64b.\r\n"] +[46.198306112289714, "o", "Tagged demo/weather:2ae4e25fa64b312d94a29b1c9096403ce446c75265de0fa227d62b5576a4b20a with initial_data.\r\n"] +[46.228306112289715, "o", "\u001b[1m"] +[46.258306112289716, "o", "\u001b[36m"] +[46.28830611228972, "o", "\u001b[91m"] +[46.31830611228972, "o", "$"] +[46.34830611228972, "o", " "] +[46.37830611228972, "o", "\u001b[0m"] +[51.40830611228972, "o", "\u001b[H"] +[51.43830611228972, "o", "\u001b[J"] +[51.468306112289724, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image"] +[51.498306112289725, "o", "\r\n"] +[51.52830611228973, "o", "$"] +[51.55830611228973, "o", " "] +[51.58830611228973, "o", "s"] +[51.61830611228973, "o", "g"] +[51.64830611228973, "o", "r"] +[51.67830611228973, "o", " "] +[51.70830611228973, "o", "s"] +[51.738306112289735, "o", "h"] +[51.768306112289736, "o", "o"] +[51.79830611228974, "o", "w"] +[51.82830611228974, "o", " "] +[51.85830611228974, "o", "d"] +[51.88830611228974, "o", "e"] +[51.91830611228974, "o", "m"] +[51.94830611228974, "o", "o"] +[51.978306112289744, "o", "/"] +[52.008306112289745, "o", "w"] +[52.038306112289746, "o", "e"] +[52.06830611228975, "o", "a"] +[52.09830611228975, "o", "t"] +[52.12830611228975, "o", "h"] +[52.15830611228975, "o", "e"] +[52.18830611228975, "o", "r"] +[52.21830611228975, "o", ":"] +[52.248306112289754, "o", "i"] +[52.278306112289755, "o", "n"] +[52.308306112289756, "o", "i"] +[52.33830611228976, "o", "t"] +[52.36830611228976, "o", "i"] +[52.39830611228976, "o", "a"] +[52.42830611228976, "o", "l"] +[52.45830611228976, "o", "_"] +[52.48830611228976, "o", "d"] +[52.518306112289764, "o", "a"] +[52.548306112289765, "o", "t"] +[52.578306112289766, "o", "a"] +[52.60830611228977, "o", "\r\n"] +[52.63830611228977, "o", "\u001b[0m"] +[52.66830611228977, "o", "\r\n"] +[52.888745307922704, "o", "Image demo/weather:2ae4e25fa64b312d94a29b1c9096403ce446c75265de0fa227d62b5576a4b20a\r\n\r\n"] +[52.8887727260593, "o", "Created at 2021-04-07T15:47:52.513251\r\n"] +[52.89002227783237, "o", "Size: 109.61 KiB\r\n"] +[52.89003825187717, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[52.890610933304174, "o", " rdu\r\n"] +[52.920610933304175, "o", "\u001b[1m"] +[52.950610933304176, "o", "\u001b[36m"] +[52.98061093330418, "o", "\u001b[91m"] +[53.01061093330418, "o", "$"] +[53.04061093330418, "o", " "] +[53.07061093330418, "o", "\u001b[0m"] +[58.10061093330418, "o", "\u001b[H"] +[58.13061093330418, "o", "\u001b[J"] +[58.160610933304184, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the table"] +[58.190610933304185, "o", "\r\n"] +[58.22061093330419, "o", "$"] +[58.25061093330419, "o", " "] +[58.28061093330419, "o", "s"] +[58.31061093330419, "o", "g"] +[58.34061093330419, "o", "r"] +[58.37061093330419, "o", " "] +[58.40061093330419, "o", "t"] +[58.430610933304195, "o", "a"] +[58.460610933304196, "o", "b"] +[58.4906109333042, "o", "l"] +[58.5206109333042, "o", "e"] +[58.5506109333042, "o", " "] +[58.5806109333042, "o", "d"] +[58.6106109333042, "o", "e"] +[58.6406109333042, "o", "m"] +[58.670610933304204, "o", "o"] +[58.700610933304205, "o", "/"] +[58.730610933304206, "o", "w"] +[58.76061093330421, "o", "e"] +[58.79061093330421, "o", "a"] +[58.82061093330421, "o", "t"] +[58.85061093330421, "o", "h"] +[58.88061093330421, "o", "e"] +[58.91061093330421, "o", "r"] +[58.940610933304214, "o", ":"] +[58.970610933304215, "o", "i"] +[59.000610933304216, "o", "n"] +[59.03061093330422, "o", "i"] +[59.06061093330422, "o", "t"] +[59.09061093330422, "o", "i"] +[59.12061093330422, "o", "a"] +[59.15061093330422, "o", "l"] +[59.18061093330422, "o", "_"] +[59.210610933304224, "o", "d"] +[59.240610933304225, "o", "a"] +[59.270610933304226, "o", "t"] +[59.30061093330423, "o", "a"] +[59.33061093330423, "o", " "] +[59.36061093330423, "o", "r"] +[59.39061093330423, "o", "d"] +[59.42061093330423, "o", "u"] +[59.45061093330423, "o", "\r\n"] +[59.480610933304234, "o", "\u001b[0m"] +[59.510610933304235, "o", "\r\n"] +[59.740684146881506, "o", "Table demo/weather:2ae4e25fa64b312d94a29b1c9096403ce446c75265de0fa227d62b5576a4b20a/rdu\r\n"] +[59.74070202827494, "o", "\r\n"] +[59.74174201011698, "o", "Size: 109.61 KiB\r\n"] +[59.74264060974161, "o", "Rows: 4633\r\n"] +[59.74265777587931, "o", "Columns: \r\n date (timestamp without time zone, PK)\r\n temperaturemin (numeric)\r\n temperaturemax (numeric)\r\n precipitation (numeric)\r\n snowfall (numeric)\r\n snowdepth (numeric)\r\n avgwindspeed (numeric)\r\n fastest2minwinddir (integer)\r\n"] +[59.742670412064, "o", " fastest2minwindspeed (numeric)\r\n fastest5secwinddir (integer)\r\n fastest5secwindspeed (numeric)\r\n"] +[59.74267518043558, "o", " fog (character varying)\r\n fogheavy (character varying)\r\n"] +[59.7426863861088, "o", " mist (character varying)\r\n"] +[59.74269806861918, "o", " rain (character varying)\r\n fogground (character varying)\r\n"] +[59.74270784378092, "o", " ice (character varying)\r\n glaze (character varying)\r\n"] +[59.7427126121525, "o", " drizzle (character varying)\r\n"] +[59.742725009918615, "o", " snow (character varying)\r\n"] +[59.74273502349894, "o", " freezingrain (character varying)\r\n smokehaze (character varying)\r\n"] +[59.74273979187052, "o", " thunder (character varying)\r\n highwind (character varying)\r\n"] +[59.74275075912516, "o", " hail (character varying)\r\n"] +[59.74276339530985, "o", " blowingsnow (character varying)\r\n dust (character varying)\r\n"] +[59.742780799866125, "o", " freezingfog (character varying)\r\n\r\n"] +[59.742791290283606, "o", "Objects: \r\n"] +[59.74279748916666, "o", " ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] +[59.77279748916666, "o", "\u001b[1m"] +[59.802797489166664, "o", "\u001b[36m"] +[59.832797489166666, "o", "\u001b[91m"] +[59.86279748916667, "o", "$"] +[59.89279748916667, "o", " "] +[59.92279748916667, "o", "\u001b[0m"] +[77.60061093330418, "o", "\u001b[H"] +[77.63061093330418, "o", "\u001b[J"] +[77.66061093330418, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect object metadata"] +[77.69061093330419, "o", "\r\n"] +[77.72061093330419, "o", "$"] +[77.75061093330419, "o", " "] +[77.78061093330419, "o", "s"] +[77.81061093330419, "o", "g"] +[77.84061093330419, "o", "r"] +[77.87061093330419, "o", " "] +[77.9006109333042, "o", "o"] +[77.9306109333042, "o", "b"] +[77.9606109333042, "o", "j"] +[77.9906109333042, "o", "e"] +[78.0206109333042, "o", "c"] +[78.0506109333042, "o", "t"] +[78.0806109333042, "o", " "] +[78.1106109333042, "o", "o"] +[78.1406109333042, "o", "b"] +[78.1706109333042, "o", "7"] +[78.2006109333042, "o", "9"] +[78.2306109333042, "o", "9"] +[78.2606109333042, "o", "c"] +[78.29061093330421, "o", "a"] +[78.32061093330421, "o", "7"] +[78.35061093330421, "o", "6"] +[78.38061093330421, "o", "1"] +[78.41061093330421, "o", "e"] +[78.44061093330421, "o", "a"] +[78.47061093330421, "o", "6"] +[78.50061093330422, "o", "3"] +[78.53061093330422, "o", "8"] +[78.56061093330422, "o", "c"] +[78.59061093330422, "o", "0"] +[78.62061093330422, "o", "d"] +[78.65061093330422, "o", "b"] +[78.68061093330422, "o", "b"] +[78.71061093330422, "o", "4"] +[78.74061093330423, "o", "d"] +[78.77061093330423, "o", "f"] +[78.80061093330423, "o", "3"] +[78.83061093330423, "o", "e"] +[78.86061093330423, "o", "5"] +[78.89061093330423, "o", "9"] +[78.92061093330423, "o", "a"] +[78.95061093330423, "o", "b"] +[78.98061093330423, "o", "6"] +[79.01061093330424, "o", "a"] +[79.04061093330424, "o", "9"] +[79.07061093330424, "o", "9"] +[79.10061093330424, "o", "5"] +[79.13061093330424, "o", "d"] +[79.16061093330424, "o", "8"] +[79.19061093330424, "o", "7"] +[79.22061093330424, "o", "9"] +[79.25061093330424, "o", "9"] +[79.28061093330425, "o", "9"] +[79.31061093330425, "o", "9"] +[79.34061093330425, "o", "0"] +[79.37061093330425, "o", "9"] +[79.40061093330425, "o", "d"] +[79.43061093330425, "o", "0"] +[79.46061093330425, "o", "0"] +[79.49061093330425, "o", "8"] +[79.52061093330425, "o", "a"] +[79.55061093330426, "o", "3"] +[79.58061093330426, "o", "4"] +[79.61061093330426, "o", "9"] +[79.64061093330426, "o", "5"] +[79.67061093330426, "o", "7"] +[79.70061093330426, "o", "1"] +[79.73061093330426, "o", "1"] +[79.76061093330426, "o", "c"] +[79.79061093330427, "o", "9"] +[79.82061093330427, "o", "0"] +[79.85061093330427, "o", "0"] +[79.88061093330427, "o", "9"] +[79.91061093330427, "o", "f"] +[79.94061093330427, "o", "8"] +[79.97061093330427, "o", "f"] +[80.00061093330427, "o", "\r\n"] +[80.03061093330427, "o", "\u001b[0m"] +[80.06061093330428, "o", "\r\n"] +[80.28110019683882, "o", "Object ID: ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n\r\n"] +[80.2816092205052, "o", "Namespace: demo\r\nFormat: FRAG\r\n"] +[80.28162114143416, "o", "Size: 109.61 KiB\r\nCreated: 2021-04-07 15:47:52.725748\r\nRows inserted: 4633\r\nInsertion hash: 4b49b5701a582aa5c418238e4bf75c84d0dcd2ec993fb4e7fe1d0dfcf6ef6877\r\n"] +[80.28228513717696, "o", "Rows deleted: 0\r\n"] +[80.2822937202458, "o", "Deletion hash: 0000000000000000000000000000000000000000000000000000000000000000\r\nColumn index:\r\n fog: ['No', 'Yes']\r\n ice: ['No', 'Yes']\r\n date: ['2007-01-01 00:00:00', '2019-09-07 00:00:00']\r\n dust: ['No', 'Yes']\r\n"] +[80.28295390129134, "o", " hail: ['No', 'Yes']\r\n mist: ['No', 'Yes']\r\n"] +[80.2829646301274, "o", " rain: ['No', 'Yes']\r\n snow: ['No', 'Yes']\r\n glaze: ['No', 'Yes']\r\n drizzle: ['No', 'Yes']\r\n thunder: ['No', 'Yes']\r\n"] +[80.28357164382979, "o", " fogheavy: ['No', 'Yes']\r\n"] +[80.28357903480574, "o", " highwind: ['No', 'Yes']\r\n snowfall: ['0.0', '7.01']\r\n fogground: ['No', 'Yes']\r\n smokehaze: ['No', 'Yes']\r\n snowdepth: ['0.0', '5.91']\r\n"] +[80.2841898632054, "o", " blowingsnow: ['No', 'Yes']\r\n freezingfog: ['No', 'Yes']\r\n"] +[80.28419916152998, "o", " avgwindspeed: ['0.0', '20.36']\r\n freezingrain: ['No', 'Yes']\r\n precipitation: ['0.0', '6.45']\r\n temperaturemax: ['23.2', '105.1']\r\n temperaturemin: ['4.1', '80.1']\r\n fastest2minwinddir: [10, 360]"] +[80.28504602432295, "o", "\r\n"] +[80.28505389213606, "o", " fastest5secwinddir: [10, 360]\r\n fastest2minwindspeed: ['4.92', '59.95']\r\n fastest5secwindspeed: ['6.93', '86.12']\r\n\r\n"] +[80.30660526275679, "o", "Location: created locally\r\n"] +[80.33660526275679, "o", "\u001b[1m"] +[80.36660526275679, "o", "\u001b[36m"] +[80.3966052627568, "o", "\u001b[91m"] +[80.4266052627568, "o", "$"] +[80.4566052627568, "o", " "] +[80.4866052627568, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.12/import-from-mongo.cast b/content/casts/versioned/archive/v0.2.12/import-from-mongo.cast new file mode 100644 index 00000000..266d0a95 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.12/import-from-mongo.cast @@ -0,0 +1,660 @@ +{"version": 2, "width": 100, "height": 35, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1617810476, "metadata": {"tss": [{"h": "Inspect the config file", "ts": 0.06}, {"h": "Do some preliminary cleanup", "ts": 6.0600000000000005}, {"h": "Mount the Mongo database", "ts": 12.240859527587897}, {"h": "Check the contents of the new table", "ts": 29.2408595275879}, {"h": "Import the data into a new Splitgraph repository", "ts": 36.14830748558052}, {"h": "Alternatively, data can be imported from other databases with Splitfiles", "ts": 45.06481768608111}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the config file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "c"] +[0.24, "o", "a"] +[0.27, "o", "t"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "."] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "g"] +[0.42000000000000015, "o", "c"] +[0.4500000000000002, "o", "o"] +[0.4800000000000002, "o", "n"] +[0.5100000000000002, "o", "f"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "g"] +[0.6000000000000003, "o", "\r\n"] +[0.6300000000000003, "o", "\u001b[0m"] +[0.6600000000000004, "o", "\r\n"] +[0.6613847351074222, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[data_sources]\r\nmongo_fdw=splitgraph.hooks.data_source.MongoDataSource\r\n"] +[0.6913847351074223, "o", "\u001b[1m"] +[0.7213847351074223, "o", "\u001b[36m"] +[0.7513847351074223, "o", "\u001b[91m"] +[0.7813847351074223, "o", "$"] +[0.8113847351074224, "o", " "] +[0.8413847351074224, "o", "\u001b[0m"] +[6.03, "o", "\u001b[H"] +[6.0600000000000005, "o", "\u001b[J"] +[6.090000000000001, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Do some preliminary cleanup"] +[6.120000000000001, "o", "\r\n"] +[6.150000000000001, "o", "$"] +[6.1800000000000015, "o", " "] +[6.210000000000002, "o", "s"] +[6.240000000000002, "o", "g"] +[6.270000000000002, "o", "r"] +[6.3000000000000025, "o", " "] +[6.330000000000003, "o", "r"] +[6.360000000000003, "o", "m"] +[6.390000000000003, "o", " "] +[6.4200000000000035, "o", "-"] +[6.450000000000004, "o", "y"] +[6.480000000000004, "o", " "] +[6.510000000000004, "o", "s"] +[6.5400000000000045, "o", "t"] +[6.570000000000005, "o", "a"] +[6.600000000000005, "o", "g"] +[6.630000000000005, "o", "i"] +[6.6600000000000055, "o", "n"] +[6.690000000000006, "o", "g"] +[6.720000000000006, "o", "\r\n"] +[6.750000000000006, "o", "\u001b[0m"] +[6.7800000000000065, "o", "\r\n"] +[7.000859527587897, "o", "Postgres schema staging will be deleted.\r\n"] +[7.030859527587897, "o", "\u001b[1m"] +[7.060859527587898, "o", "\u001b[36m"] +[7.090859527587898, "o", "\u001b[91m"] +[7.120859527587898, "o", "$"] +[7.150859527587898, "o", " "] +[7.180859527587899, "o", "\u001b[0m"] +[12.210859527587898, "o", "\u001b[H"] +[12.240859527587897, "o", "\u001b[J"] +[12.270859527587897, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Mount the Mongo database"] +[12.300859527587896, "o", "\r\n"] +[12.330859527587895, "o", "$"] +[12.360859527587895, "o", " "] +[12.390859527587894, "o", "s"] +[12.420859527587893, "o", "g"] +[12.450859527587893, "o", "r"] +[12.480859527587892, "o", " "] +[12.510859527587892, "o", "m"] +[12.540859527587891, "o", "o"] +[12.57085952758789, "o", "u"] +[12.60085952758789, "o", "n"] +[12.630859527587889, "o", "t"] +[12.660859527587888, "o", " "] +[12.690859527587888, "o", "m"] +[12.720859527587887, "o", "o"] +[12.750859527587886, "o", "n"] +[12.780859527587886, "o", "g"] +[12.810859527587885, "o", "o"] +[12.840859527587885, "o", "_"] +[12.870859527587884, "o", "f"] +[12.900859527587883, "o", "d"] +[12.930859527587883, "o", "w"] +[12.960859527587882, "o", " "] +[12.990859527587881, "o", "-"] +[13.02085952758788, "o", "-"] +[13.05085952758788, "o", "h"] +[13.08085952758788, "o", "e"] +[13.110859527587879, "o", "l"] +[13.140859527587878, "o", "p"] +[13.170859527587877, "o", "\r\n"] +[13.200859527587877, "o", "$"] +[13.230859527587876, "o", " "] +[13.260859527587876, "o", "s"] +[13.290859527587875, "o", "g"] +[13.320859527587874, "o", "r"] +[13.350859527587874, "o", " "] +[13.380859527587873, "o", "m"] +[13.410859527587872, "o", "o"] +[13.440859527587872, "o", "u"] +[13.470859527587871, "o", "n"] +[13.50085952758787, "o", "t"] +[13.53085952758787, "o", " "] +[13.56085952758787, "o", "m"] +[13.590859527587869, "o", "o"] +[13.620859527587868, "o", "n"] +[13.650859527587867, "o", "g"] +[13.680859527587867, "o", "o"] +[13.710859527587866, "o", "_"] +[13.740859527587865, "o", "f"] +[13.770859527587865, "o", "d"] +[13.800859527587864, "o", "w"] +[13.830859527587863, "o", " "] +[13.860859527587863, "o", "s"] +[13.890859527587862, "o", "t"] +[13.920859527587861, "o", "a"] +[13.95085952758786, "o", "g"] +[13.98085952758786, "o", "i"] +[14.01085952758786, "o", "n"] +[14.040859527587859, "o", "g"] +[14.070859527587858, "o", " "] +[14.100859527587858, "o", "-"] +[14.130859527587857, "o", "c"] +[14.160859527587856, "o", " "] +[14.190859527587856, "o", "o"] +[14.220859527587855, "o", "r"] +[14.250859527587854, "o", "i"] +[14.280859527587854, "o", "g"] +[14.310859527587853, "o", "i"] +[14.340859527587853, "o", "n"] +[14.370859527587852, "o", "r"] +[14.400859527587851, "o", "o"] +[14.43085952758785, "o", ":"] +[14.46085952758785, "o", "o"] +[14.49085952758785, "o", "r"] +[14.520859527587849, "o", "i"] +[14.550859527587848, "o", "g"] +[14.580859527587847, "o", "i"] +[14.610859527587847, "o", "n"] +[14.640859527587846, "o", "p"] +[14.670859527587846, "o", "a"] +[14.700859527587845, "o", "s"] +[14.730859527587844, "o", "s"] +[14.760859527587844, "o", "@"] +[14.790859527587843, "o", "m"] +[14.820859527587842, "o", "o"] +[14.850859527587842, "o", "n"] +[14.880859527587841, "o", "g"] +[14.91085952758784, "o", "o"] +[14.94085952758784, "o", ":"] +[14.970859527587839, "o", "2"] +[15.000859527587838, "o", "7"] +[15.030859527587838, "o", "0"] +[15.060859527587837, "o", "1"] +[15.090859527587837, "o", "7"] +[15.120859527587836, "o", " "] +[15.150859527587835, "o", "-"] +[15.180859527587835, "o", "o"] +[15.210859527587834, "o", " "] +[15.240859527587833, "o", "'"] +[15.270859527587833, "o", "{"] +[15.300859527587832, "o", "\""] +[15.330859527587831, "o", "t"] +[15.36085952758783, "o", "a"] +[15.39085952758783, "o", "b"] +[15.42085952758783, "o", "l"] +[15.450859527587829, "o", "e"] +[15.480859527587828, "o", "s"] +[15.510859527587828, "o", "\""] +[15.540859527587827, "o", ":"] +[15.570859527587826, "o", " "] +[15.600859527587826, "o", "{"] +[15.630859527587825, "o", "\""] +[15.660859527587824, "o", "s"] +[15.690859527587824, "o", "t"] +[15.720859527587823, "o", "u"] +[15.750859527587822, "o", "f"] +[15.780859527587822, "o", "f"] +[15.810859527587821, "o", "\""] +[15.84085952758782, "o", ":"] +[15.87085952758782, "o", " "] +[15.90085952758782, "o", "{"] +[15.930859527587819, "o", "\r\n "] +[15.960859527587818, "o", "\""] +[15.990859527587817, "o", "o"] +[16.020859527587817, "o", "p"] +[16.050859527587818, "o", "t"] +[16.08085952758782, "o", "i"] +[16.11085952758782, "o", "o"] +[16.14085952758782, "o", "n"] +[16.170859527587822, "o", "s"] +[16.200859527587824, "o", "\""] +[16.230859527587825, "o", ":"] +[16.260859527587826, "o", "\r\n "] +[16.290859527587827, "o", "{"] +[16.320859527587828, "o", "\r\n "] +[16.35085952758783, "o", "\""] +[16.38085952758783, "o", "d"] +[16.41085952758783, "o", "b"] +[16.440859527587833, "o", "\""] +[16.470859527587834, "o", ":"] +[16.500859527587835, "o", " "] +[16.530859527587836, "o", "\""] +[16.560859527587837, "o", "o"] +[16.59085952758784, "o", "r"] +[16.62085952758784, "o", "i"] +[16.65085952758784, "o", "g"] +[16.68085952758784, "o", "i"] +[16.710859527587843, "o", "n"] +[16.740859527587844, "o", "d"] +[16.770859527587845, "o", "b"] +[16.800859527587846, "o", "\""] +[16.830859527587847, "o", ","] +[16.86085952758785, "o", "\r\n "] +[16.89085952758785, "o", "\""] +[16.92085952758785, "o", "c"] +[16.950859527587852, "o", "o"] +[16.980859527587853, "o", "l"] +[17.010859527587854, "o", "l"] +[17.040859527587855, "o", "\""] +[17.070859527587857, "o", ":"] +[17.100859527587858, "o", " "] +[17.13085952758786, "o", "\""] +[17.16085952758786, "o", "s"] +[17.19085952758786, "o", "t"] +[17.220859527587862, "o", "u"] +[17.250859527587863, "o", "f"] +[17.280859527587864, "o", "f"] +[17.310859527587866, "o", "\""] +[17.340859527587867, "o", "\r\n "] +[17.370859527587868, "o", "}"] +[17.40085952758787, "o", ","] +[17.43085952758787, "o", "\r\n "] +[17.46085952758787, "o", "\""] +[17.490859527587872, "o", "s"] +[17.520859527587874, "o", "c"] +[17.550859527587875, "o", "h"] +[17.580859527587876, "o", "e"] +[17.610859527587877, "o", "m"] +[17.640859527587878, "o", "a"] +[17.67085952758788, "o", "\""] +[17.70085952758788, "o", ":"] +[17.73085952758788, "o", " "] +[17.760859527587883, "o", "{"] +[17.790859527587884, "o", "\r\n "] +[17.820859527587885, "o", "\""] +[17.850859527587886, "o", "n"] +[17.880859527587887, "o", "a"] +[17.91085952758789, "o", "m"] +[17.94085952758789, "o", "e"] +[17.97085952758789, "o", "\""] +[18.00085952758789, "o", ":"] +[18.030859527587893, "o", " "] +[18.060859527587894, "o", "\""] +[18.090859527587895, "o", "t"] +[18.120859527587896, "o", "e"] +[18.150859527587897, "o", "x"] +[18.1808595275879, "o", "t"] +[18.2108595275879, "o", "\""] +[18.2408595275879, "o", ","] +[18.270859527587902, "o", "\r\n "] +[18.300859527587903, "o", "\""] +[18.330859527587904, "o", "d"] +[18.360859527587905, "o", "u"] +[18.390859527587907, "o", "r"] +[18.420859527587908, "o", "a"] +[18.45085952758791, "o", "t"] +[18.48085952758791, "o", "i"] +[18.51085952758791, "o", "o"] +[18.540859527587912, "o", "n"] +[18.570859527587913, "o", "\""] +[18.600859527587914, "o", ":"] +[18.630859527587916, "o", " "] +[18.660859527587917, "o", "\""] +[18.690859527587918, "o", "n"] +[18.72085952758792, "o", "u"] +[18.75085952758792, "o", "m"] +[18.78085952758792, "o", "e"] +[18.810859527587922, "o", "r"] +[18.840859527587924, "o", "i"] +[18.870859527587925, "o", "c"] +[18.900859527587926, "o", "\""] +[18.930859527587927, "o", ","] +[18.960859527587928, "o", "\r\n "] +[18.99085952758793, "o", "\""] +[19.02085952758793, "o", "h"] +[19.05085952758793, "o", "a"] +[19.080859527587933, "o", "p"] +[19.110859527587934, "o", "p"] +[19.140859527587935, "o", "y"] +[19.170859527587936, "o", "\""] +[19.200859527587937, "o", ":"] +[19.23085952758794, "o", " "] +[19.26085952758794, "o", "\""] +[19.29085952758794, "o", "b"] +[19.320859527587942, "o", "o"] +[19.350859527587943, "o", "o"] +[19.380859527587944, "o", "l"] +[19.410859527587945, "o", "e"] +[19.440859527587946, "o", "a"] +[19.470859527587947, "o", "n"] +[19.50085952758795, "o", "\""] +[19.53085952758795, "o", "}"] +[19.56085952758795, "o", "}"] +[19.590859527587952, "o", "}"] +[19.620859527587953, "o", "}"] +[19.650859527587954, "o", "'"] +[19.680859527587955, "o", "\r\n"] +[19.710859527587957, "o", "\u001b[0m"] +[19.740859527587958, "o", "\r\n"] +[19.940766592025824, "o", "Usage: sgr mount mongo_fdw [OPTIONS] SCHEMA\r\n\r\n Mount a Mongo database.\r\n\r\n Mounts one or more collections on a remote Mongo database as a set of\r\n foreign tables locally.\r\n\r\nOptions:\r\n -c, --connection TEXT Connection string in the form\r\n username:password@server:port\r\n\r\n -o, --handler-options JSON JSON-encoded dictionary or @filename.json with\r\n handler options:\r\n \r\n tables: A di"] +[19.940813560485907, "o", "ctionary of form { \"table_name\":\r\n { \"schema\": {\"col1\": \"type1\"...},\r\n \"options\": {\"db\": , \"coll\":\r\n } } }\r\n\r\n --help Show this message and exit.\r\n"] +[20.22899176597602, "o", "Mounting table stuff\r\n"] +[20.25899176597602, "o", "\u001b[1m"] +[20.28899176597602, "o", "\u001b[36m"] +[20.318991765976023, "o", "\u001b[91m"] +[20.348991765976024, "o", "$"] +[20.378991765976025, "o", " "] +[20.408991765976026, "o", "\u001b[0m"] +[29.2108595275879, "o", "\u001b[H"] +[29.2408595275879, "o", "\u001b[J"] +[29.270859527587902, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the contents of the new table"] +[29.300859527587903, "o", "\r\n"] +[29.330859527587904, "o", "$"] +[29.360859527587905, "o", " "] +[29.390859527587907, "o", "s"] +[29.420859527587908, "o", "g"] +[29.45085952758791, "o", "r"] +[29.48085952758791, "o", " "] +[29.51085952758791, "o", "s"] +[29.540859527587912, "o", "q"] +[29.570859527587913, "o", "l"] +[29.600859527587914, "o", " "] +[29.630859527587916, "o", "-"] +[29.660859527587917, "o", "s"] +[29.690859527587918, "o", " "] +[29.72085952758792, "o", "s"] +[29.75085952758792, "o", "t"] +[29.78085952758792, "o", "a"] +[29.810859527587922, "o", "g"] +[29.840859527587924, "o", "i"] +[29.870859527587925, "o", "n"] +[29.900859527587926, "o", "g"] +[29.930859527587927, "o", " "] +[29.960859527587928, "o", "\""] +[29.99085952758793, "o", "S"] +[30.02085952758793, "o", "E"] +[30.05085952758793, "o", "L"] +[30.080859527587933, "o", "E"] +[30.110859527587934, "o", "C"] +[30.140859527587935, "o", "T"] +[30.170859527587936, "o", " "] +[30.200859527587937, "o", "*"] +[30.23085952758794, "o", " "] +[30.26085952758794, "o", "F"] +[30.29085952758794, "o", "R"] +[30.320859527587942, "o", "O"] +[30.350859527587943, "o", "M"] +[30.380859527587944, "o", " "] +[30.410859527587945, "o", "s"] +[30.440859527587946, "o", "t"] +[30.470859527587947, "o", "u"] +[30.50085952758795, "o", "f"] +[30.53085952758795, "o", "f"] +[30.56085952758795, "o", "\""] +[30.590859527587952, "o", "\r\n"] +[30.620859527587953, "o", "\u001b[0m"] +[30.650859527587954, "o", "\r\n"] +[30.908307485580508, "o", "Alex 12 False 606dd4389533569a41edef87\r\nJames 2 True 606dd4389533569a41edef88\r\nAlice 98765 True 606dd4389533569a41edef89\r\n"] +[30.93830748558051, "o", "\u001b[1m"] +[30.96830748558051, "o", "\u001b[36m"] +[30.99830748558051, "o", "\u001b[91m"] +[31.028307485580513, "o", "$"] +[31.058307485580514, "o", " "] +[31.088307485580515, "o", "\u001b[0m"] +[36.118307485580516, "o", "\u001b[H"] +[36.14830748558052, "o", "\u001b[J"] +[36.17830748558052, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Import the data into a new Splitgraph repository"] +[36.20830748558052, "o", "\r\n"] +[36.23830748558052, "o", "$"] +[36.26830748558052, "o", " "] +[36.29830748558052, "o", "s"] +[36.328307485580524, "o", "g"] +[36.358307485580525, "o", "r"] +[36.388307485580526, "o", " "] +[36.41830748558053, "o", "i"] +[36.44830748558053, "o", "m"] +[36.47830748558053, "o", "p"] +[36.50830748558053, "o", "o"] +[36.53830748558053, "o", "r"] +[36.56830748558053, "o", "t"] +[36.598307485580534, "o", " "] +[36.628307485580535, "o", "s"] +[36.658307485580536, "o", "t"] +[36.68830748558054, "o", "a"] +[36.71830748558054, "o", "g"] +[36.74830748558054, "o", "i"] +[36.77830748558054, "o", "n"] +[36.80830748558054, "o", "g"] +[36.83830748558054, "o", " "] +[36.868307485580544, "o", "\""] +[36.898307485580546, "o", "S"] +[36.92830748558055, "o", "E"] +[36.95830748558055, "o", "L"] +[36.98830748558055, "o", "E"] +[37.01830748558055, "o", "C"] +[37.04830748558055, "o", "T"] +[37.07830748558055, "o", " "] +[37.10830748558055, "o", "n"] +[37.138307485580555, "o", "a"] +[37.168307485580556, "o", "m"] +[37.19830748558056, "o", "e"] +[37.22830748558056, "o", ","] +[37.25830748558056, "o", " "] +[37.28830748558056, "o", "d"] +[37.31830748558056, "o", "u"] +[37.34830748558056, "o", "r"] +[37.378307485580564, "o", "a"] +[37.408307485580565, "o", "t"] +[37.438307485580566, "o", "i"] +[37.46830748558057, "o", "o"] +[37.49830748558057, "o", "n"] +[37.52830748558057, "o", ","] +[37.55830748558057, "o", " "] +[37.58830748558057, "o", "h"] +[37.61830748558057, "o", "a"] +[37.648307485580574, "o", "p"] +[37.678307485580575, "o", "p"] +[37.708307485580576, "o", "y"] +[37.73830748558058, "o", " "] +[37.76830748558058, "o", "F"] +[37.79830748558058, "o", "R"] +[37.82830748558058, "o", "O"] +[37.85830748558058, "o", "M"] +[37.88830748558058, "o", " "] +[37.918307485580584, "o", "s"] +[37.948307485580585, "o", "t"] +[37.978307485580586, "o", "u"] +[38.00830748558059, "o", "f"] +[38.03830748558059, "o", "f"] +[38.06830748558059, "o", "\""] +[38.09830748558059, "o", " "] +[38.12830748558059, "o", "m"] +[38.15830748558059, "o", "y"] +[38.188307485580594, "o", "/"] +[38.218307485580596, "o", "r"] +[38.2483074855806, "o", "e"] +[38.2783074855806, "o", "p"] +[38.3083074855806, "o", "o"] +[38.3383074855806, "o", "s"] +[38.3683074855806, "o", "i"] +[38.3983074855806, "o", "t"] +[38.4283074855806, "o", "o"] +[38.458307485580605, "o", "r"] +[38.488307485580606, "o", "y"] +[38.51830748558061, "o", " "] +[38.54830748558061, "o", "s"] +[38.57830748558061, "o", "t"] +[38.60830748558061, "o", "u"] +[38.63830748558061, "o", "f"] +[38.66830748558061, "o", "f"] +[38.698307485580614, "o", "\r\n"] +[38.728307485580615, "o", "\u001b[0m"] +[38.758307485580616, "o", "\r\n"] +[39.510202674865894, "o", "Processing table sg_tmp_762584a04b9bcf96c0d7842c5da9412d\r\n"] +[39.824817686081104, "o", "my/repository:stuff has been imported from staging:SELECT name, duration, happy FROM stuff\r\n"] +[39.854817686081105, "o", "\u001b[1m"] +[39.88481768608111, "o", "\u001b[36m"] +[39.91481768608111, "o", "\u001b[91m"] +[39.94481768608111, "o", "$"] +[39.97481768608111, "o", " "] +[40.00481768608111, "o", "\u001b[0m"] +[45.03481768608111, "o", "\u001b[H"] +[45.06481768608111, "o", "\u001b[J"] +[45.094817686081115, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Alternatively, data can be imported from other databases with Splitfiles"] +[45.124817686081116, "o", "\r\n"] +[45.15481768608112, "o", "$"] +[45.18481768608112, "o", " "] +[45.21481768608112, "o", "c"] +[45.24481768608112, "o", "a"] +[45.27481768608112, "o", "t"] +[45.30481768608112, "o", " "] +[45.334817686081124, "o", "m"] +[45.364817686081125, "o", "o"] +[45.394817686081126, "o", "n"] +[45.42481768608113, "o", "g"] +[45.45481768608113, "o", "o"] +[45.48481768608113, "o", "_"] +[45.51481768608113, "o", "i"] +[45.54481768608113, "o", "m"] +[45.57481768608113, "o", "p"] +[45.604817686081134, "o", "o"] +[45.634817686081135, "o", "r"] +[45.664817686081136, "o", "t"] +[45.69481768608114, "o", "."] +[45.72481768608114, "o", "s"] +[45.75481768608114, "o", "p"] +[45.78481768608114, "o", "l"] +[45.81481768608114, "o", "i"] +[45.84481768608114, "o", "t"] +[45.874817686081144, "o", "f"] +[45.904817686081145, "o", "i"] +[45.934817686081146, "o", "l"] +[45.96481768608115, "o", "e"] +[45.99481768608115, "o", "\r\n"] +[46.02481768608115, "o", "$"] +[46.05481768608115, "o", " "] +[46.08481768608115, "o", "s"] +[46.11481768608115, "o", "g"] +[46.144817686081154, "o", "r"] +[46.174817686081155, "o", " "] +[46.20481768608116, "o", "b"] +[46.23481768608116, "o", "u"] +[46.26481768608116, "o", "i"] +[46.29481768608116, "o", "l"] +[46.32481768608116, "o", "d"] +[46.35481768608116, "o", " "] +[46.38481768608116, "o", "m"] +[46.414817686081165, "o", "o"] +[46.444817686081166, "o", "n"] +[46.47481768608117, "o", "g"] +[46.50481768608117, "o", "o"] +[46.53481768608117, "o", "_"] +[46.56481768608117, "o", "i"] +[46.59481768608117, "o", "m"] +[46.62481768608117, "o", "p"] +[46.654817686081174, "o", "o"] +[46.684817686081175, "o", "r"] +[46.714817686081176, "o", "t"] +[46.74481768608118, "o", "."] +[46.77481768608118, "o", "s"] +[46.80481768608118, "o", "p"] +[46.83481768608118, "o", "l"] +[46.86481768608118, "o", "i"] +[46.89481768608118, "o", "t"] +[46.924817686081184, "o", "f"] +[46.954817686081185, "o", "i"] +[46.984817686081186, "o", "l"] +[47.01481768608119, "o", "e"] +[47.04481768608119, "o", "\r\n"] +[47.07481768608119, "o", "\u001b[0m"] +[47.10481768608119, "o", "\r\n"] +[47.106652555465956, "o", "FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"tables\": {\"stuff\": {\r\n \"options\": {\r\n \"db\": \"origindb\",\r\n \"coll\": \"stuff\"\r\n },\r\n \"schema\": {\r\n \"name\": \"text\",\r\n \"duration\": \"numeric\",\r\n \"happy\": \"boolean\"}}}}'\r\n IMPORT {SELECT * FROM stuff} AS stuff\r\n"] +[47.31715637207057, "o", "Executing Splitfile mongo_import.splitfile with arguments {}\r\n"] +[47.35451322555568, "o", "\u001b[1m\r\nStep 1/1 : FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"t...\u001b[0m\r\n"] +[47.4411144828799, "o", "Mounting table stuff\r\n"] +[47.97212201118495, "o", "Processing table sg_tmp_da67bca8b0ad7c6131b4b035f32a8050\r\n"] +[48.300635871887465, "o", "Successfully built mongo_import:39f39f8f78d4.\r\n"] +[48.330635871887466, "o", "\u001b[1m"] +[48.36063587188747, "o", "\u001b[36m"] +[48.39063587188747, "o", "\u001b[91m"] +[48.42063587188747, "o", "$"] +[48.45063587188747, "o", " "] +[48.48063587188747, "o", "\u001b[0m"] +[55.03481768608111, "o", "\u001b[H"] +[55.06481768608111, "o", "\u001b[J"] +[55.094817686081115, "o", "\u001b[1m"] +[55.124817686081116, "o", "\u001b[36m"] +[55.15481768608112, "o", "\u001b[91m"] +[55.18481768608112, "o", "$"] +[55.21481768608112, "o", " "] +[55.24481768608112, "o", "s"] +[55.27481768608112, "o", "g"] +[55.30481768608112, "o", "r"] +[55.334817686081124, "o", " "] +[55.364817686081125, "o", "s"] +[55.394817686081126, "o", "h"] +[55.42481768608113, "o", "o"] +[55.45481768608113, "o", "w"] +[55.48481768608113, "o", " "] +[55.51481768608113, "o", "m"] +[55.54481768608113, "o", "o"] +[55.57481768608113, "o", "n"] +[55.604817686081134, "o", "g"] +[55.634817686081135, "o", "o"] +[55.664817686081136, "o", "_"] +[55.69481768608114, "o", "i"] +[55.72481768608114, "o", "m"] +[55.75481768608114, "o", "p"] +[55.78481768608114, "o", "o"] +[55.81481768608114, "o", "r"] +[55.84481768608114, "o", "t"] +[55.874817686081144, "o", ":"] +[55.904817686081145, "o", "l"] +[55.934817686081146, "o", "a"] +[55.96481768608115, "o", "t"] +[55.99481768608115, "o", "e"] +[56.02481768608115, "o", "s"] +[56.05481768608115, "o", "t"] +[56.08481768608115, "o", "\r\n"] +[56.11481768608115, "o", "$"] +[56.144817686081154, "o", " "] +[56.174817686081155, "o", "s"] +[56.20481768608116, "o", "g"] +[56.23481768608116, "o", "r"] +[56.26481768608116, "o", " "] +[56.29481768608116, "o", "s"] +[56.32481768608116, "o", "q"] +[56.35481768608116, "o", "l"] +[56.38481768608116, "o", " "] +[56.414817686081165, "o", "-"] +[56.444817686081166, "o", "s"] +[56.47481768608117, "o", " "] +[56.50481768608117, "o", "m"] +[56.53481768608117, "o", "o"] +[56.56481768608117, "o", "n"] +[56.59481768608117, "o", "g"] +[56.62481768608117, "o", "o"] +[56.654817686081174, "o", "_"] +[56.684817686081175, "o", "i"] +[56.714817686081176, "o", "m"] +[56.74481768608118, "o", "p"] +[56.77481768608118, "o", "o"] +[56.80481768608118, "o", "r"] +[56.83481768608118, "o", "t"] +[56.86481768608118, "o", " "] +[56.89481768608118, "o", "\""] +[56.924817686081184, "o", "S"] +[56.954817686081185, "o", "E"] +[56.984817686081186, "o", "L"] +[57.01481768608119, "o", "E"] +[57.04481768608119, "o", "C"] +[57.07481768608119, "o", "T"] +[57.10481768608119, "o", " "] +[57.13481768608119, "o", "*"] +[57.16481768608119, "o", " "] +[57.194817686081194, "o", "F"] +[57.224817686081195, "o", "R"] +[57.254817686081196, "o", "O"] +[57.2848176860812, "o", "M"] +[57.3148176860812, "o", " "] +[57.3448176860812, "o", "s"] +[57.3748176860812, "o", "t"] +[57.4048176860812, "o", "u"] +[57.4348176860812, "o", "f"] +[57.464817686081204, "o", "f"] +[57.494817686081205, "o", "\""] +[57.52481768608121, "o", "\r\n"] +[57.55481768608121, "o", "\u001b[0m"] +[57.58481768608121, "o", "\r\n"] +[57.80953911781339, "o", "Image mongo_import:39f39f8f78d420b51c0f3c2e78b873608afcb8a9d3ff70c456f03aa30bcfa949\r\nImporting 1 table from mongo_fdw_tmp_staging"] +[57.80997375488309, "o", "\r\n"] +[57.810240068435945, "o", "Created at 2021-04-07T15:48:17.865954\r\n"] +[57.812222757339754, "o", "Size: 589.00 B\r\n"] +[57.81249884605435, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n"] +[57.81272772789029, "o", "\r\n"] +[57.8128998661044, "o", "Tables:\r\n"] +[57.81373290061978, "o", " stuff\r\n"] +[58.046361246109285, "o", "Alex 12 False 606dd4389533569a41edef87\r\nAlice 98765 True 606dd4389533569a41edef89\r\nJames 2 True 606dd4389533569a41edef88\r\n"] +[58.076361246109286, "o", "\u001b[1m"] +[58.10636124610929, "o", "\u001b[36m"] +[58.13636124610929, "o", "\u001b[91m"] +[58.16636124610929, "o", "$"] +[58.19636124610929, "o", " "] +[58.22636124610929, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.12/metadata.json b/content/casts/versioned/archive/v0.2.12/metadata.json new file mode 100644 index 00000000..b4750176 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.12/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.12", + "updated_at": "2022-01-20T00:00:47.677Z", + "release": { + "id": 41069524, + "tag_name": "v0.2.12", + "target_commitish": "9f64e86b1567603749712e4c27ed6ccdc6475af4", + "created_at": "2021-04-07T15:31:09Z", + "published_at": "2021-04-22T13:36:43Z", + "assets": [ + { + "id": 34595301, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/34595301", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-04-07T15:58:00Z", + "updated_at": "2021-04-07T15:58:01Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.12/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/casts/versioned/archive/v0.2.12/pg-replication.cast b/content/casts/versioned/archive/v0.2.12/pg-replication.cast new file mode 100644 index 00000000..23a6f1da --- /dev/null +++ b/content/casts/versioned/archive/v0.2.12/pg-replication.cast @@ -0,0 +1,1398 @@ +{"version": 2, "width": 100, "height": 21, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1617810549, "metadata": {"tss": [{"h": "The configuration file for sgr contains credentials for the", "ts": 0.06}, {"h": "The origin database has been set up with a couple of tables.", "ts": 10.059999999999999}, {"h": "Create a publication on the origin database", "ts": 19.454879093170085}, {"h": "Create a schema with the same name and same tables", "ts": 28.23487909317023}, {"h": "Set up replication from the origin database.", "ts": 38.23487909317023}, {"h": "Check the data on the engine", "ts": 49.17487909317045}, {"h": "Commit the data as an initial image", "ts": 57.45602568626443}, {"h": "Make a change on the origin database", "ts": 67.10125105857904}, {"h": "The change propagates to the subscriber and gets", "ts": 83.17125105857946}, {"h": "Committing creates a new image, snapshotting the state.", "ts": 89.85626081466776}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The configuration file for sgr contains credentials for the"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # origin database: this is just so that we can use sgr to query it\r\n"] +[0.18, "o", "$ # (replication can be set up through any PostgreSQL client)\r\n"] +[0.21, "o", "$"] +[0.24, "o", " "] +[0.27, "o", "c"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "t"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "."] +[0.42000000000000015, "o", "s"] +[0.4500000000000002, "o", "g"] +[0.4800000000000002, "o", "c"] +[0.5100000000000002, "o", "o"] +[0.5400000000000003, "o", "n"] +[0.5700000000000003, "o", "f"] +[0.6000000000000003, "o", "i"] +[0.6300000000000003, "o", "g"] +[0.6600000000000004, "o", "\r\n"] +[0.6900000000000004, "o", "\u001b[0m"] +[0.7200000000000004, "o", "\r\n"] +[0.7212645721435551, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n; Add the origin database here so that we can\r\n; use sgr to talk to it (can use any pg client)\r\n[remote:origin]\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=originuser\r\nSG_ENGINE_PWD=originpass\r\nSG_ENGINE_DB=originuser\r\n"] +[0.7512645721435551, "o", "\u001b[1m"] +[0.7812645721435552, "o", "\u001b[36m"] +[0.8112645721435552, "o", "\u001b[91m"] +[0.8412645721435552, "o", "$"] +[0.8712645721435552, "o", " "] +[0.9012645721435553, "o", "\u001b[0m"] +[10.03, "o", "\u001b[H"] +[10.059999999999999, "o", "\u001b[J"] +[10.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The origin database has been set up with a couple of tables."] +[10.119999999999997, "o", "\r\n"] +[10.149999999999997, "o", "$"] +[10.179999999999996, "o", " "] +[10.209999999999996, "o", "s"] +[10.239999999999995, "o", "g"] +[10.269999999999994, "o", "r"] +[10.299999999999994, "o", " "] +[10.329999999999993, "o", "s"] +[10.359999999999992, "o", "q"] +[10.389999999999992, "o", "l"] +[10.419999999999991, "o", " "] +[10.44999999999999, "o", "-"] +[10.47999999999999, "o", "r"] +[10.50999999999999, "o", " "] +[10.539999999999988, "o", "o"] +[10.569999999999988, "o", "r"] +[10.599999999999987, "o", "i"] +[10.629999999999987, "o", "g"] +[10.659999999999986, "o", "i"] +[10.689999999999985, "o", "n"] +[10.719999999999985, "o", " "] +[10.749999999999984, "o", "\""] +[10.779999999999983, "o", "S"] +[10.809999999999983, "o", "E"] +[10.839999999999982, "o", "L"] +[10.869999999999981, "o", "E"] +[10.89999999999998, "o", "C"] +[10.92999999999998, "o", "T"] +[10.95999999999998, "o", " "] +[10.989999999999979, "o", "*"] +[11.019999999999978, "o", " "] +[11.049999999999978, "o", "F"] +[11.079999999999977, "o", "R"] +[11.109999999999976, "o", "O"] +[11.139999999999976, "o", "M"] +[11.169999999999975, "o", " "] +[11.199999999999974, "o", "p"] +[11.229999999999974, "o", "r"] +[11.259999999999973, "o", "o"] +[11.289999999999973, "o", "d"] +[11.319999999999972, "o", "u"] +[11.349999999999971, "o", "c"] +[11.37999999999997, "o", "t"] +[11.40999999999997, "o", "i"] +[11.43999999999997, "o", "o"] +[11.469999999999969, "o", "n"] +[11.499999999999968, "o", "_"] +[11.529999999999967, "o", "d"] +[11.559999999999967, "o", "a"] +[11.589999999999966, "o", "t"] +[11.619999999999965, "o", "a"] +[11.649999999999965, "o", "."] +[11.679999999999964, "o", "c"] +[11.709999999999964, "o", "u"] +[11.739999999999963, "o", "s"] +[11.769999999999962, "o", "t"] +[11.799999999999962, "o", "o"] +[11.829999999999961, "o", "m"] +[11.85999999999996, "o", "e"] +[11.88999999999996, "o", "r"] +[11.919999999999959, "o", "s"] +[11.949999999999958, "o", "\""] +[11.979999999999958, "o", "\r\n"] +[12.009999999999957, "o", "$"] +[12.039999999999957, "o", " "] +[12.069999999999956, "o", "s"] +[12.099999999999955, "o", "g"] +[12.129999999999955, "o", "r"] +[12.159999999999954, "o", " "] +[12.189999999999953, "o", "s"] +[12.219999999999953, "o", "q"] +[12.249999999999952, "o", "l"] +[12.279999999999951, "o", " "] +[12.30999999999995, "o", "-"] +[12.33999999999995, "o", "r"] +[12.36999999999995, "o", " "] +[12.399999999999949, "o", "o"] +[12.429999999999948, "o", "r"] +[12.459999999999948, "o", "i"] +[12.489999999999947, "o", "g"] +[12.519999999999946, "o", "i"] +[12.549999999999946, "o", "n"] +[12.579999999999945, "o", " "] +[12.609999999999944, "o", "\""] +[12.639999999999944, "o", "S"] +[12.669999999999943, "o", "E"] +[12.699999999999942, "o", "L"] +[12.729999999999942, "o", "E"] +[12.759999999999941, "o", "C"] +[12.78999999999994, "o", "T"] +[12.81999999999994, "o", " "] +[12.84999999999994, "o", "*"] +[12.879999999999939, "o", " "] +[12.909999999999938, "o", "F"] +[12.939999999999937, "o", "R"] +[12.969999999999937, "o", "O"] +[12.999999999999936, "o", "M"] +[13.029999999999935, "o", " "] +[13.059999999999935, "o", "p"] +[13.089999999999934, "o", "r"] +[13.119999999999933, "o", "o"] +[13.149999999999933, "o", "d"] +[13.179999999999932, "o", "u"] +[13.209999999999932, "o", "c"] +[13.239999999999931, "o", "t"] +[13.26999999999993, "o", "i"] +[13.29999999999993, "o", "o"] +[13.329999999999929, "o", "n"] +[13.359999999999928, "o", "_"] +[13.389999999999928, "o", "d"] +[13.419999999999927, "o", "a"] +[13.449999999999926, "o", "t"] +[13.479999999999926, "o", "a"] +[13.509999999999925, "o", "."] +[13.539999999999925, "o", "o"] +[13.569999999999924, "o", "r"] +[13.599999999999923, "o", "d"] +[13.629999999999923, "o", "e"] +[13.659999999999922, "o", "r"] +[13.689999999999921, "o", "s"] +[13.71999999999992, "o", "\""] +[13.74999999999992, "o", "\r\n"] +[13.77999999999992, "o", "\u001b[0m"] +[13.809999999999919, "o", "\r\n"] +[14.012350378036418, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[14.214879093170085, "o", "1 1 15 Toilet Roll 2020-03-15 12:00:00\r\n2 1 20 Hand Sanitizer 2020-03-16 02:00:00\r\n3 2 5 Pasta 2020-03-21 17:32:11\r\n4 3 50 Surgical Mask 2020-04-01 12:00:01\r\n5 1 50 Surgical Mask 2020-04-02 11:29:42\r\n"] +[14.244879093170084, "o", "\u001b[1m"] +[14.274879093170084, "o", "\u001b[36m"] +[14.304879093170083, "o", "\u001b[91m"] +[14.334879093170082, "o", "$"] +[14.364879093170082, "o", " "] +[14.394879093170081, "o", "\u001b[0m"] +[19.424879093170084, "o", "\u001b[H"] +[19.454879093170085, "o", "\u001b[J"] +[19.484879093170086, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a publication on the origin database"] +[19.514879093170087, "o", "\r\n"] +[19.54487909317009, "o", "$"] +[19.57487909317009, "o", " "] +[19.60487909317009, "o", "s"] +[19.634879093170092, "o", "g"] +[19.664879093170093, "o", "r"] +[19.694879093170094, "o", " "] +[19.724879093170095, "o", "s"] +[19.754879093170096, "o", "q"] +[19.784879093170098, "o", "l"] +[19.8148790931701, "o", " "] +[19.8448790931701, "o", "-"] +[19.8748790931701, "o", "r"] +[19.904879093170102, "o", " "] +[19.934879093170103, "o", "o"] +[19.964879093170104, "o", "r"] +[19.994879093170105, "o", "i"] +[20.024879093170107, "o", "g"] +[20.054879093170108, "o", "i"] +[20.08487909317011, "o", "n"] +[20.11487909317011, "o", " "] +[20.14487909317011, "o", "\""] +[20.174879093170112, "o", "C"] +[20.204879093170113, "o", "R"] +[20.234879093170115, "o", "E"] +[20.264879093170116, "o", "A"] +[20.294879093170117, "o", "T"] +[20.324879093170118, "o", "E"] +[20.35487909317012, "o", " "] +[20.38487909317012, "o", "P"] +[20.41487909317012, "o", "U"] +[20.444879093170123, "o", "B"] +[20.474879093170124, "o", "L"] +[20.504879093170125, "o", "I"] +[20.534879093170126, "o", "C"] +[20.564879093170127, "o", "A"] +[20.594879093170128, "o", "T"] +[20.62487909317013, "o", "I"] +[20.65487909317013, "o", "O"] +[20.68487909317013, "o", "N"] +[20.714879093170133, "o", " "] +[20.744879093170134, "o", "p"] +[20.774879093170135, "o", "u"] +[20.804879093170136, "o", "b"] +[20.834879093170137, "o", "_"] +[20.86487909317014, "o", "o"] +[20.89487909317014, "o", "r"] +[20.92487909317014, "o", "d"] +[20.954879093170142, "o", "e"] +[20.984879093170143, "o", "r"] +[21.014879093170144, "o", "s"] +[21.044879093170145, "o", " "] +[21.074879093170146, "o", "\\"] +[21.104879093170148, "o", "\r\n "] +[21.13487909317015, "o", "F"] +[21.16487909317015, "o", "O"] +[21.19487909317015, "o", "R"] +[21.224879093170152, "o", " "] +[21.254879093170153, "o", "T"] +[21.284879093170154, "o", "A"] +[21.314879093170155, "o", "B"] +[21.344879093170157, "o", "L"] +[21.374879093170158, "o", "E"] +[21.40487909317016, "o", " "] +[21.43487909317016, "o", "p"] +[21.46487909317016, "o", "r"] +[21.494879093170162, "o", "o"] +[21.524879093170163, "o", "d"] +[21.554879093170165, "o", "u"] +[21.584879093170166, "o", "c"] +[21.614879093170167, "o", "t"] +[21.644879093170168, "o", "i"] +[21.67487909317017, "o", "o"] +[21.70487909317017, "o", "n"] +[21.73487909317017, "o", "_"] +[21.764879093170173, "o", "d"] +[21.794879093170174, "o", "a"] +[21.824879093170175, "o", "t"] +[21.854879093170176, "o", "a"] +[21.884879093170177, "o", "."] +[21.91487909317018, "o", "c"] +[21.94487909317018, "o", "u"] +[21.97487909317018, "o", "s"] +[22.00487909317018, "o", "t"] +[22.034879093170183, "o", "o"] +[22.064879093170184, "o", "m"] +[22.094879093170185, "o", "e"] +[22.124879093170186, "o", "r"] +[22.154879093170187, "o", "s"] +[22.18487909317019, "o", ","] +[22.21487909317019, "o", " "] +[22.24487909317019, "o", "p"] +[22.274879093170192, "o", "r"] +[22.304879093170193, "o", "o"] +[22.334879093170194, "o", "d"] +[22.364879093170195, "o", "u"] +[22.394879093170196, "o", "c"] +[22.424879093170198, "o", "t"] +[22.4548790931702, "o", "i"] +[22.4848790931702, "o", "o"] +[22.5148790931702, "o", "n"] +[22.544879093170202, "o", "_"] +[22.574879093170203, "o", "d"] +[22.604879093170204, "o", "a"] +[22.634879093170206, "o", "t"] +[22.664879093170207, "o", "a"] +[22.694879093170208, "o", "."] +[22.72487909317021, "o", "o"] +[22.75487909317021, "o", "r"] +[22.78487909317021, "o", "d"] +[22.814879093170212, "o", "e"] +[22.844879093170213, "o", "r"] +[22.874879093170215, "o", "s"] +[22.904879093170216, "o", "\""] +[22.934879093170217, "o", "\r\n"] +[22.964879093170218, "o", "\u001b[0m"] +[22.99487909317022, "o", "\r\n"] +[23.02487909317022, "o", "\u001b[1m"] +[23.05487909317022, "o", "\u001b[36m"] +[23.084879093170223, "o", "\u001b[91m"] +[23.114879093170224, "o", "$"] +[23.144879093170225, "o", " "] +[23.174879093170226, "o", "\u001b[0m"] +[28.204879093170227, "o", "\u001b[H"] +[28.23487909317023, "o", "\u001b[J"] +[28.26487909317023, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a schema with the same name and same tables"] +[28.29487909317023, "o", "\r\n"] +[28.32487909317023, "o", "$ # on the engine and initialize the repository.\r\n"] +[28.354879093170233, "o", "$"] +[28.384879093170234, "o", " "] +[28.414879093170235, "o", "s"] +[28.444879093170236, "o", "g"] +[28.474879093170237, "o", "r"] +[28.50487909317024, "o", " "] +[28.53487909317024, "o", "i"] +[28.56487909317024, "o", "n"] +[28.594879093170242, "o", "i"] +[28.624879093170243, "o", "t"] +[28.654879093170244, "o", " "] +[28.684879093170245, "o", "p"] +[28.714879093170246, "o", "r"] +[28.744879093170248, "o", "o"] +[28.77487909317025, "o", "d"] +[28.80487909317025, "o", "u"] +[28.83487909317025, "o", "c"] +[28.864879093170252, "o", "t"] +[28.894879093170253, "o", "i"] +[28.924879093170254, "o", "o"] +[28.954879093170256, "o", "n"] +[28.984879093170257, "o", "_"] +[29.014879093170258, "o", "d"] +[29.04487909317026, "o", "a"] +[29.07487909317026, "o", "t"] +[29.10487909317026, "o", "a"] +[29.134879093170262, "o", "\r\n"] +[29.164879093170264, "o", "$"] +[29.194879093170265, "o", " "] +[29.224879093170266, "o", "c"] +[29.254879093170267, "o", "a"] +[29.284879093170268, "o", "t"] +[29.31487909317027, "o", " "] +[29.34487909317027, "o", "e"] +[29.37487909317027, "o", "n"] +[29.404879093170273, "o", "g"] +[29.434879093170274, "o", "i"] +[29.464879093170275, "o", "n"] +[29.494879093170276, "o", "e"] +[29.524879093170277, "o", "/"] +[29.55487909317028, "o", "s"] +[29.58487909317028, "o", "c"] +[29.61487909317028, "o", "h"] +[29.64487909317028, "o", "e"] +[29.674879093170283, "o", "m"] +[29.704879093170284, "o", "a"] +[29.734879093170285, "o", "."] +[29.764879093170286, "o", "s"] +[29.794879093170287, "o", "q"] +[29.82487909317029, "o", "l"] +[29.85487909317029, "o", "\r\n"] +[29.88487909317029, "o", "$"] +[29.914879093170292, "o", " "] +[29.944879093170293, "o", "s"] +[29.974879093170294, "o", "g"] +[30.004879093170295, "o", "r"] +[30.034879093170296, "o", " "] +[30.064879093170298, "o", "s"] +[30.0948790931703, "o", "q"] +[30.1248790931703, "o", "l"] +[30.1548790931703, "o", " "] +[30.184879093170302, "o", "-"] +[30.214879093170303, "o", "s"] +[30.244879093170304, "o", " "] +[30.274879093170306, "o", "p"] +[30.304879093170307, "o", "r"] +[30.334879093170308, "o", "o"] +[30.36487909317031, "o", "d"] +[30.39487909317031, "o", "u"] +[30.42487909317031, "o", "c"] +[30.454879093170312, "o", "t"] +[30.484879093170314, "o", "i"] +[30.514879093170315, "o", "o"] +[30.544879093170316, "o", "n"] +[30.574879093170317, "o", "_"] +[30.604879093170318, "o", "d"] +[30.63487909317032, "o", "a"] +[30.66487909317032, "o", "t"] +[30.69487909317032, "o", "a"] +[30.724879093170323, "o", " "] +[30.754879093170324, "o", "\""] +[30.784879093170325, "o", "$"] +[30.814879093170326, "o", "("] +[30.844879093170327, "o", "c"] +[30.87487909317033, "o", "a"] +[30.90487909317033, "o", "t"] +[30.93487909317033, "o", " "] +[30.96487909317033, "o", "e"] +[30.994879093170333, "o", "n"] +[31.024879093170334, "o", "g"] +[31.054879093170335, "o", "i"] +[31.084879093170336, "o", "n"] +[31.114879093170337, "o", "e"] +[31.14487909317034, "o", "/"] +[31.17487909317034, "o", "s"] +[31.20487909317034, "o", "c"] +[31.234879093170342, "o", "h"] +[31.264879093170343, "o", "e"] +[31.294879093170344, "o", "m"] +[31.324879093170345, "o", "a"] +[31.354879093170346, "o", "."] +[31.384879093170348, "o", "s"] +[31.41487909317035, "o", "q"] +[31.44487909317035, "o", "l"] +[31.47487909317035, "o", ")"] +[31.504879093170352, "o", "\""] +[31.534879093170353, "o", "\r\n"] +[31.564879093170354, "o", "\u001b[0m"] +[31.594879093170356, "o", "\r\n"] +[31.836676540374945, "o", "Initialized empty repository production_data\r\n"] +[31.83847493171711, "o", "CREATE TABLE production_data.customers (\r\n id INTEGER PRIMARY KEY,\r\n name VARCHAR,\r\n registration_time TIMESTAMP\r\n);\r\n\r\nCREATE TABLE production_data.orders (\r\n id INTEGER PRIMARY KEY,\r\n customer_id INTEGER,\r\n quantity INTEGER,\r\n item_name VARCHAR,\r\n placed_time TIMESTAMP\r\n);\r\n"] +[31.86847493171711, "o", "\u001b[1m"] +[31.89847493171711, "o", "\u001b[36m"] +[31.928474931717112, "o", "\u001b[91m"] +[31.958474931717113, "o", "$"] +[31.988474931717114, "o", " "] +[32.018474931717115, "o", "\u001b[0m"] +[38.20487909317023, "o", "\u001b[H"] +[38.23487909317023, "o", "\u001b[J"] +[38.26487909317023, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Set up replication from the origin database."] +[38.29487909317023, "o", "\r\n"] +[38.32487909317023, "o", "$ # This will copy existing data into the tables too.\r\n"] +[38.35487909317023, "o", "$"] +[38.384879093170234, "o", " "] +[38.414879093170235, "o", "s"] +[38.444879093170236, "o", "g"] +[38.47487909317024, "o", "r"] +[38.50487909317024, "o", " "] +[38.53487909317024, "o", "s"] +[38.56487909317024, "o", "q"] +[38.59487909317024, "o", "l"] +[38.62487909317024, "o", " "] +[38.654879093170244, "o", "-"] +[38.684879093170245, "o", "-"] +[38.71487909317025, "o", "n"] +[38.74487909317025, "o", "o"] +[38.77487909317025, "o", "-"] +[38.80487909317025, "o", "t"] +[38.83487909317025, "o", "r"] +[38.86487909317025, "o", "a"] +[38.89487909317025, "o", "n"] +[38.924879093170254, "o", "s"] +[38.954879093170256, "o", "a"] +[38.98487909317026, "o", "c"] +[39.01487909317026, "o", "t"] +[39.04487909317026, "o", "i"] +[39.07487909317026, "o", "o"] +[39.10487909317026, "o", "n"] +[39.13487909317026, "o", " "] +[39.16487909317026, "o", "\""] +[39.194879093170265, "o", "C"] +[39.224879093170266, "o", "R"] +[39.25487909317027, "o", "E"] +[39.28487909317027, "o", "A"] +[39.31487909317027, "o", "T"] +[39.34487909317027, "o", "E"] +[39.37487909317027, "o", " "] +[39.40487909317027, "o", "S"] +[39.434879093170274, "o", "U"] +[39.464879093170275, "o", "B"] +[39.494879093170276, "o", "S"] +[39.52487909317028, "o", "C"] +[39.55487909317028, "o", "R"] +[39.58487909317028, "o", "I"] +[39.61487909317028, "o", "P"] +[39.64487909317028, "o", "T"] +[39.67487909317028, "o", "I"] +[39.704879093170284, "o", "O"] +[39.734879093170285, "o", "N"] +[39.764879093170286, "o", " "] +[39.79487909317029, "o", "s"] +[39.82487909317029, "o", "u"] +[39.85487909317029, "o", "b"] +[39.88487909317029, "o", "_"] +[39.91487909317029, "o", "o"] +[39.94487909317029, "o", "r"] +[39.974879093170294, "o", "d"] +[40.004879093170295, "o", "e"] +[40.0348790931703, "o", "r"] +[40.0648790931703, "o", "s"] +[40.0948790931703, "o", " "] +[40.1248790931703, "o", "\\"] +[40.1548790931703, "o", "\r\n "] +[40.1848790931703, "o", "C"] +[40.2148790931703, "o", "O"] +[40.244879093170304, "o", "N"] +[40.274879093170306, "o", "N"] +[40.30487909317031, "o", "E"] +[40.33487909317031, "o", "C"] +[40.36487909317031, "o", "T"] +[40.39487909317031, "o", "I"] +[40.42487909317031, "o", "O"] +[40.45487909317031, "o", "N"] +[40.48487909317031, "o", " "] +[40.514879093170315, "o", "'"] +[40.544879093170316, "o", "p"] +[40.57487909317032, "o", "o"] +[40.60487909317032, "o", "s"] +[40.63487909317032, "o", "t"] +[40.66487909317032, "o", "g"] +[40.69487909317032, "o", "r"] +[40.72487909317032, "o", "e"] +[40.754879093170324, "o", "s"] +[40.784879093170325, "o", "q"] +[40.814879093170326, "o", "l"] +[40.84487909317033, "o", ":"] +[40.87487909317033, "o", "/"] +[40.90487909317033, "o", "/"] +[40.93487909317033, "o", "o"] +[40.96487909317033, "o", "r"] +[40.99487909317033, "o", "i"] +[41.024879093170334, "o", "g"] +[41.054879093170335, "o", "i"] +[41.084879093170336, "o", "n"] +[41.11487909317034, "o", "u"] +[41.14487909317034, "o", "s"] +[41.17487909317034, "o", "e"] +[41.20487909317034, "o", "r"] +[41.23487909317034, "o", ":"] +[41.26487909317034, "o", "o"] +[41.294879093170344, "o", "r"] +[41.324879093170345, "o", "i"] +[41.35487909317035, "o", "g"] +[41.38487909317035, "o", "i"] +[41.41487909317035, "o", "n"] +[41.44487909317035, "o", "p"] +[41.47487909317035, "o", "a"] +[41.50487909317035, "o", "s"] +[41.53487909317035, "o", "s"] +[41.564879093170354, "o", "@"] +[41.594879093170356, "o", "o"] +[41.62487909317036, "o", "r"] +[41.65487909317036, "o", "i"] +[41.68487909317036, "o", "g"] +[41.71487909317036, "o", "i"] +[41.74487909317036, "o", "n"] +[41.77487909317036, "o", ":"] +[41.80487909317036, "o", "5"] +[41.834879093170365, "o", "4"] +[41.864879093170366, "o", "3"] +[41.89487909317037, "o", "2"] +[41.92487909317037, "o", "/"] +[41.95487909317037, "o", "o"] +[41.98487909317037, "o", "r"] +[42.01487909317037, "o", "i"] +[42.04487909317037, "o", "g"] +[42.074879093170374, "o", "i"] +[42.104879093170375, "o", "n"] +[42.134879093170376, "o", "u"] +[42.16487909317038, "o", "s"] +[42.19487909317038, "o", "e"] +[42.22487909317038, "o", "r"] +[42.25487909317038, "o", "'"] +[42.28487909317038, "o", " "] +[42.31487909317038, "o", "\\"] +[42.344879093170384, "o", "\r\n "] +[42.374879093170385, "o", "P"] +[42.404879093170386, "o", "U"] +[42.43487909317039, "o", "B"] +[42.46487909317039, "o", "L"] +[42.49487909317039, "o", "I"] +[42.52487909317039, "o", "C"] +[42.55487909317039, "o", "A"] +[42.58487909317039, "o", "T"] +[42.614879093170394, "o", "I"] +[42.644879093170395, "o", "O"] +[42.6748790931704, "o", "N"] +[42.7048790931704, "o", " "] +[42.7348790931704, "o", "p"] +[42.7648790931704, "o", "u"] +[42.7948790931704, "o", "b"] +[42.8248790931704, "o", "_"] +[42.8548790931704, "o", "o"] +[42.884879093170404, "o", "r"] +[42.914879093170406, "o", "d"] +[42.94487909317041, "o", "e"] +[42.97487909317041, "o", "r"] +[43.00487909317041, "o", "s"] +[43.03487909317041, "o", " "] +[43.06487909317041, "o", "\\"] +[43.09487909317041, "o", "\r\n "] +[43.124879093170414, "o", "W"] +[43.154879093170415, "o", "I"] +[43.184879093170416, "o", "T"] +[43.21487909317042, "o", "H"] +[43.24487909317042, "o", " "] +[43.27487909317042, "o", "("] +[43.30487909317042, "o", "c"] +[43.33487909317042, "o", "o"] +[43.36487909317042, "o", "p"] +[43.394879093170424, "o", "y"] +[43.424879093170425, "o", "_"] +[43.454879093170426, "o", "d"] +[43.48487909317043, "o", "a"] +[43.51487909317043, "o", "t"] +[43.54487909317043, "o", "a"] +[43.57487909317043, "o", " "] +[43.60487909317043, "o", "="] +[43.63487909317043, "o", " "] +[43.664879093170434, "o", "t"] +[43.694879093170435, "o", "r"] +[43.724879093170436, "o", "u"] +[43.75487909317044, "o", "e"] +[43.78487909317044, "o", ")"] +[43.81487909317044, "o", ";"] +[43.84487909317044, "o", "\""] +[43.87487909317044, "o", "\r\n"] +[43.90487909317044, "o", "\u001b[0m"] +[43.934879093170444, "o", "\r\n"] +[43.964879093170445, "o", "\u001b[1m"] +[43.99487909317045, "o", "\u001b[36m"] +[44.02487909317045, "o", "\u001b[91m"] +[44.05487909317045, "o", "$"] +[44.08487909317045, "o", " "] +[44.11487909317045, "o", "\u001b[0m"] +[49.14487909317045, "o", "\u001b[H"] +[49.17487909317045, "o", "\u001b[J"] +[49.204879093170454, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the data on the engine"] +[49.234879093170456, "o", "\r\n"] +[49.26487909317046, "o", "$"] +[49.29487909317046, "o", " "] +[49.32487909317046, "o", "s"] +[49.35487909317046, "o", "g"] +[49.38487909317046, "o", "r"] +[49.41487909317046, "o", " "] +[49.444879093170464, "o", "d"] +[49.474879093170465, "o", "i"] +[49.504879093170466, "o", "f"] +[49.53487909317047, "o", "f"] +[49.56487909317047, "o", " "] +[49.59487909317047, "o", "p"] +[49.62487909317047, "o", "r"] +[49.65487909317047, "o", "o"] +[49.68487909317047, "o", "d"] +[49.714879093170474, "o", "u"] +[49.744879093170475, "o", "c"] +[49.774879093170476, "o", "t"] +[49.80487909317048, "o", "i"] +[49.83487909317048, "o", "o"] +[49.86487909317048, "o", "n"] +[49.89487909317048, "o", "_"] +[49.92487909317048, "o", "d"] +[49.95487909317048, "o", "a"] +[49.984879093170484, "o", "t"] +[50.014879093170485, "o", "a"] +[50.044879093170486, "o", "\r\n"] +[50.07487909317049, "o", "$"] +[50.10487909317049, "o", " "] +[50.13487909317049, "o", "s"] +[50.16487909317049, "o", "g"] +[50.19487909317049, "o", "r"] +[50.22487909317049, "o", " "] +[50.254879093170494, "o", "s"] +[50.284879093170495, "o", "q"] +[50.3148790931705, "o", "l"] +[50.3448790931705, "o", " "] +[50.3748790931705, "o", "-"] +[50.4048790931705, "o", "s"] +[50.4348790931705, "o", " "] +[50.4648790931705, "o", "p"] +[50.4948790931705, "o", "r"] +[50.524879093170505, "o", "o"] +[50.554879093170506, "o", "d"] +[50.58487909317051, "o", "u"] +[50.61487909317051, "o", "c"] +[50.64487909317051, "o", "t"] +[50.67487909317051, "o", "i"] +[50.70487909317051, "o", "o"] +[50.73487909317051, "o", "n"] +[50.764879093170514, "o", "_"] +[50.794879093170515, "o", "d"] +[50.824879093170516, "o", "a"] +[50.85487909317052, "o", "t"] +[50.88487909317052, "o", "a"] +[50.91487909317052, "o", " "] +[50.94487909317052, "o", "\""] +[50.97487909317052, "o", "S"] +[51.00487909317052, "o", "E"] +[51.034879093170524, "o", "L"] +[51.064879093170525, "o", "E"] +[51.094879093170526, "o", "C"] +[51.12487909317053, "o", "T"] +[51.15487909317053, "o", " "] +[51.18487909317053, "o", "*"] +[51.21487909317053, "o", " "] +[51.24487909317053, "o", "F"] +[51.27487909317053, "o", "R"] +[51.304879093170534, "o", "O"] +[51.334879093170535, "o", "M"] +[51.364879093170536, "o", " "] +[51.39487909317054, "o", "c"] +[51.42487909317054, "o", "u"] +[51.45487909317054, "o", "s"] +[51.48487909317054, "o", "t"] +[51.51487909317054, "o", "o"] +[51.54487909317054, "o", "m"] +[51.574879093170544, "o", "e"] +[51.604879093170545, "o", "r"] +[51.63487909317055, "o", "s"] +[51.66487909317055, "o", "\""] +[51.69487909317055, "o", "\r\n"] +[51.72487909317055, "o", "\u001b[0m"] +[51.75487909317055, "o", "\r\n"] +[51.99061927795449, "o", "Between 000000000000 and the current working copy: \r\n"] +[51.9906419277195, "o", "customers: table added\r\norders: table added\r\n"] +[52.21602568626442, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[52.246025686264424, "o", "\u001b[1m"] +[52.276025686264425, "o", "\u001b[36m"] +[52.30602568626443, "o", "\u001b[91m"] +[52.33602568626443, "o", "$"] +[52.36602568626443, "o", " "] +[52.39602568626443, "o", "\u001b[0m"] +[57.42602568626443, "o", "\u001b[H"] +[57.45602568626443, "o", "\u001b[J"] +[57.48602568626443, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit the data as an initial image"] +[57.516025686264435, "o", "\r\n"] +[57.546025686264436, "o", "$"] +[57.57602568626444, "o", " "] +[57.60602568626444, "o", "s"] +[57.63602568626444, "o", "g"] +[57.66602568626444, "o", "r"] +[57.69602568626444, "o", " "] +[57.72602568626444, "o", "c"] +[57.756025686264444, "o", "o"] +[57.786025686264445, "o", "m"] +[57.816025686264446, "o", "m"] +[57.84602568626445, "o", "i"] +[57.87602568626445, "o", "t"] +[57.90602568626445, "o", " "] +[57.93602568626445, "o", "p"] +[57.96602568626445, "o", "r"] +[57.99602568626445, "o", "o"] +[58.026025686264454, "o", "d"] +[58.056025686264455, "o", "u"] +[58.086025686264456, "o", "c"] +[58.11602568626446, "o", "t"] +[58.14602568626446, "o", "i"] +[58.17602568626446, "o", "o"] +[58.20602568626446, "o", "n"] +[58.23602568626446, "o", "_"] +[58.26602568626446, "o", "d"] +[58.296025686264464, "o", "a"] +[58.326025686264465, "o", "t"] +[58.356025686264466, "o", "a"] +[58.38602568626447, "o", "\r\n"] +[58.41602568626447, "o", "$"] +[58.44602568626447, "o", " "] +[58.47602568626447, "o", "s"] +[58.50602568626447, "o", "g"] +[58.53602568626447, "o", "r"] +[58.566025686264474, "o", " "] +[58.596025686264475, "o", "t"] +[58.62602568626448, "o", "a"] +[58.65602568626448, "o", "g"] +[58.68602568626448, "o", " "] +[58.71602568626448, "o", "p"] +[58.74602568626448, "o", "r"] +[58.77602568626448, "o", "o"] +[58.80602568626448, "o", "d"] +[58.836025686264485, "o", "u"] +[58.866025686264486, "o", "c"] +[58.89602568626449, "o", "t"] +[58.92602568626449, "o", "i"] +[58.95602568626449, "o", "o"] +[58.98602568626449, "o", "n"] +[59.01602568626449, "o", "_"] +[59.04602568626449, "o", "d"] +[59.076025686264494, "o", "a"] +[59.106025686264495, "o", "t"] +[59.136025686264496, "o", "a"] +[59.1660256862645, "o", " "] +[59.1960256862645, "o", "i"] +[59.2260256862645, "o", "n"] +[59.2560256862645, "o", "i"] +[59.2860256862645, "o", "t"] +[59.3160256862645, "o", "i"] +[59.346025686264504, "o", "a"] +[59.376025686264505, "o", "l"] +[59.406025686264506, "o", "_"] +[59.43602568626451, "o", "s"] +[59.46602568626451, "o", "n"] +[59.49602568626451, "o", "a"] +[59.52602568626451, "o", "p"] +[59.55602568626451, "o", "s"] +[59.58602568626451, "o", "h"] +[59.616025686264514, "o", "o"] +[59.646025686264515, "o", "t"] +[59.676025686264516, "o", "\r\n"] +[59.70602568626452, "o", "$"] +[59.73602568626452, "o", " "] +[59.76602568626452, "o", "s"] +[59.79602568626452, "o", "g"] +[59.82602568626452, "o", "r"] +[59.85602568626452, "o", " "] +[59.886025686264524, "o", "s"] +[59.916025686264526, "o", "h"] +[59.94602568626453, "o", "o"] +[59.97602568626453, "o", "w"] +[60.00602568626453, "o", " "] +[60.03602568626453, "o", "p"] +[60.06602568626453, "o", "r"] +[60.09602568626453, "o", "o"] +[60.12602568626453, "o", "d"] +[60.156025686264535, "o", "u"] +[60.186025686264536, "o", "c"] +[60.21602568626454, "o", "t"] +[60.24602568626454, "o", "i"] +[60.27602568626454, "o", "o"] +[60.30602568626454, "o", "n"] +[60.33602568626454, "o", "_"] +[60.36602568626454, "o", "d"] +[60.396025686264544, "o", "a"] +[60.426025686264545, "o", "t"] +[60.456025686264546, "o", "a"] +[60.48602568626455, "o", ":"] +[60.51602568626455, "o", "i"] +[60.54602568626455, "o", "n"] +[60.57602568626455, "o", "i"] +[60.60602568626455, "o", "t"] +[60.63602568626455, "o", "i"] +[60.666025686264554, "o", "a"] +[60.696025686264555, "o", "l"] +[60.726025686264556, "o", "_"] +[60.75602568626456, "o", "s"] +[60.78602568626456, "o", "n"] +[60.81602568626456, "o", "a"] +[60.84602568626456, "o", "p"] +[60.87602568626456, "o", "s"] +[60.90602568626456, "o", "h"] +[60.936025686264564, "o", "o"] +[60.966025686264565, "o", "t"] +[60.996025686264566, "o", "\r\n"] +[61.02602568626457, "o", "\u001b[0m"] +[61.05602568626457, "o", "\r\n"] +[61.273909034729535, "o", "Committing production_data...\r\n"] +[61.299201192856366, "o", "Processing table customers\r\n"] +[61.3793074512487, "o", "Processing table orders\r\n"] +[61.41345709800773, "o", "Committed production_data as 6ef776835de2.\r\n"] +[61.6317443275457, "o", "Tagged production_data:6ef776835de26833d1d74f844bc2aac5e9ab511d0b62454a357c14e940f0f419 with initial_snapshot.\r\n"] +[61.858402433395916, "o", "Image production_data:6ef776835de26833d1d74f844bc2aac5e9ab511d0b62454a357c14e940f0f419\r\n\r\n"] +[61.85842269897514, "o", "Created at 2021-04-07T15:49:31.714258\r\n"] +[61.860302629471356, "o", "Size: 1.11 KiB\r\n"] +[61.86032361030632, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[61.86125105857902, "o", " customers\r\n orders\r\n"] +[61.89125105857902, "o", "\u001b[1m"] +[61.921251058579024, "o", "\u001b[36m"] +[61.951251058579025, "o", "\u001b[91m"] +[61.981251058579026, "o", "$"] +[62.01125105857903, "o", " "] +[62.04125105857903, "o", "\u001b[0m"] +[67.07125105857904, "o", "\u001b[H"] +[67.10125105857904, "o", "\u001b[J"] +[67.13125105857904, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make a change on the origin database"] +[67.16125105857904, "o", "\r\n"] +[67.19125105857904, "o", "$"] +[67.22125105857904, "o", " "] +[67.25125105857904, "o", "s"] +[67.28125105857904, "o", "g"] +[67.31125105857905, "o", "r"] +[67.34125105857905, "o", " "] +[67.37125105857905, "o", "s"] +[67.40125105857905, "o", "q"] +[67.43125105857905, "o", "l"] +[67.46125105857905, "o", " "] +[67.49125105857905, "o", "-"] +[67.52125105857905, "o", "r"] +[67.55125105857906, "o", " "] +[67.58125105857906, "o", "o"] +[67.61125105857906, "o", "r"] +[67.64125105857906, "o", "i"] +[67.67125105857906, "o", "g"] +[67.70125105857906, "o", "i"] +[67.73125105857906, "o", "n"] +[67.76125105857906, "o", " "] +[67.79125105857906, "o", "-"] +[67.82125105857907, "o", "s"] +[67.85125105857907, "o", " "] +[67.88125105857907, "o", "p"] +[67.91125105857907, "o", "r"] +[67.94125105857907, "o", "o"] +[67.97125105857907, "o", "d"] +[68.00125105857907, "o", "u"] +[68.03125105857907, "o", "c"] +[68.06125105857907, "o", "t"] +[68.09125105857908, "o", "i"] +[68.12125105857908, "o", "o"] +[68.15125105857908, "o", "n"] +[68.18125105857908, "o", "_"] +[68.21125105857908, "o", "d"] +[68.24125105857908, "o", "a"] +[68.27125105857908, "o", "t"] +[68.30125105857908, "o", "a"] +[68.33125105857908, "o", " "] +[68.36125105857909, "o", "\""] +[68.39125105857909, "o", "U"] +[68.42125105857909, "o", "P"] +[68.45125105857909, "o", "D"] +[68.48125105857909, "o", "A"] +[68.51125105857909, "o", "T"] +[68.54125105857909, "o", "E"] +[68.5712510585791, "o", " "] +[68.6012510585791, "o", "o"] +[68.6312510585791, "o", "r"] +[68.6612510585791, "o", "d"] +[68.6912510585791, "o", "e"] +[68.7212510585791, "o", "r"] +[68.7512510585791, "o", "s"] +[68.7812510585791, "o", " "] +[68.8112510585791, "o", "\\"] +[68.8412510585791, "o", "\r\n "] +[68.8712510585791, "o", "S"] +[68.9012510585791, "o", "E"] +[68.93125105857911, "o", "T"] +[68.96125105857911, "o", " "] +[68.99125105857911, "o", "q"] +[69.02125105857911, "o", "u"] +[69.05125105857911, "o", "a"] +[69.08125105857911, "o", "n"] +[69.11125105857911, "o", "t"] +[69.14125105857912, "o", "i"] +[69.17125105857912, "o", "t"] +[69.20125105857912, "o", "y"] +[69.23125105857912, "o", " "] +[69.26125105857912, "o", "="] +[69.29125105857912, "o", " "] +[69.32125105857912, "o", "q"] +[69.35125105857912, "o", "u"] +[69.38125105857912, "o", "a"] +[69.41125105857913, "o", "n"] +[69.44125105857913, "o", "t"] +[69.47125105857913, "o", "i"] +[69.50125105857913, "o", "t"] +[69.53125105857913, "o", "y"] +[69.56125105857913, "o", " "] +[69.59125105857913, "o", "+"] +[69.62125105857913, "o", " "] +[69.65125105857913, "o", "5"] +[69.68125105857914, "o", " "] +[69.71125105857914, "o", "W"] +[69.74125105857914, "o", "H"] +[69.77125105857914, "o", "E"] +[69.80125105857914, "o", "R"] +[69.83125105857914, "o", "E"] +[69.86125105857914, "o", " "] +[69.89125105857914, "o", "i"] +[69.92125105857914, "o", "d"] +[69.95125105857915, "o", " "] +[69.98125105857915, "o", "="] +[70.01125105857915, "o", " "] +[70.04125105857915, "o", "2"] +[70.07125105857915, "o", ";"] +[70.10125105857915, "o", " "] +[70.13125105857915, "o", "\\"] +[70.16125105857915, "o", "\r\n "] +[70.19125105857916, "o", "D"] +[70.22125105857916, "o", "E"] +[70.25125105857916, "o", "L"] +[70.28125105857916, "o", "E"] +[70.31125105857916, "o", "T"] +[70.34125105857916, "o", "E"] +[70.37125105857916, "o", " "] +[70.40125105857916, "o", "F"] +[70.43125105857916, "o", "R"] +[70.46125105857917, "o", "O"] +[70.49125105857917, "o", "M"] +[70.52125105857917, "o", " "] +[70.55125105857917, "o", "o"] +[70.58125105857917, "o", "r"] +[70.61125105857917, "o", "d"] +[70.64125105857917, "o", "e"] +[70.67125105857917, "o", "r"] +[70.70125105857917, "o", "s"] +[70.73125105857918, "o", " "] +[70.76125105857918, "o", "W"] +[70.79125105857918, "o", "H"] +[70.82125105857918, "o", "E"] +[70.85125105857918, "o", "R"] +[70.88125105857918, "o", "E"] +[70.91125105857918, "o", " "] +[70.94125105857918, "o", "i"] +[70.97125105857918, "o", "d"] +[71.00125105857919, "o", " "] +[71.03125105857919, "o", "="] +[71.06125105857919, "o", " "] +[71.09125105857919, "o", "5"] +[71.12125105857919, "o", ";"] +[71.15125105857919, "o", " "] +[71.18125105857919, "o", "\\"] +[71.2112510585792, "o", "\r\n "] +[71.2412510585792, "o", "I"] +[71.2712510585792, "o", "N"] +[71.3012510585792, "o", "S"] +[71.3312510585792, "o", "E"] +[71.3612510585792, "o", "R"] +[71.3912510585792, "o", "T"] +[71.4212510585792, "o", " "] +[71.4512510585792, "o", "I"] +[71.4812510585792, "o", "N"] +[71.5112510585792, "o", "T"] +[71.5412510585792, "o", "O"] +[71.57125105857921, "o", " "] +[71.60125105857921, "o", "c"] +[71.63125105857921, "o", "u"] +[71.66125105857921, "o", "s"] +[71.69125105857921, "o", "t"] +[71.72125105857921, "o", "o"] +[71.75125105857921, "o", "m"] +[71.78125105857922, "o", "e"] +[71.81125105857922, "o", "r"] +[71.84125105857922, "o", "s"] +[71.87125105857922, "o", " "] +[71.90125105857922, "o", "("] +[71.93125105857922, "o", "n"] +[71.96125105857922, "o", "a"] +[71.99125105857922, "o", "m"] +[72.02125105857922, "o", "e"] +[72.05125105857923, "o", ","] +[72.08125105857923, "o", " "] +[72.11125105857923, "o", "r"] +[72.14125105857923, "o", "e"] +[72.17125105857923, "o", "g"] +[72.20125105857923, "o", "i"] +[72.23125105857923, "o", "s"] +[72.26125105857923, "o", "t"] +[72.29125105857923, "o", "r"] +[72.32125105857924, "o", "a"] +[72.35125105857924, "o", "t"] +[72.38125105857924, "o", "i"] +[72.41125105857924, "o", "o"] +[72.44125105857924, "o", "n"] +[72.47125105857924, "o", "_"] +[72.50125105857924, "o", "t"] +[72.53125105857924, "o", "i"] +[72.56125105857924, "o", "m"] +[72.59125105857925, "o", "e"] +[72.62125105857925, "o", ")"] +[72.65125105857925, "o", " "] +[72.68125105857925, "o", "V"] +[72.71125105857925, "o", "A"] +[72.74125105857925, "o", "L"] +[72.77125105857925, "o", "U"] +[72.80125105857925, "o", "E"] +[72.83125105857926, "o", "S"] +[72.86125105857926, "o", " "] +[72.89125105857926, "o", "\\"] +[72.92125105857926, "o", "\r\n "] +[72.95125105857926, "o", "("] +[72.98125105857926, "o", "'"] +[73.01125105857926, "o", "J"] +[73.04125105857926, "o", "a"] +[73.07125105857926, "o", "c"] +[73.10125105857927, "o", "k"] +[73.13125105857927, "o", " "] +[73.16125105857927, "o", "S"] +[73.19125105857927, "o", "a"] +[73.22125105857927, "o", "m"] +[73.25125105857927, "o", "p"] +[73.28125105857927, "o", "l"] +[73.31125105857927, "o", "e"] +[73.34125105857927, "o", "'"] +[73.37125105857928, "o", ","] +[73.40125105857928, "o", " "] +[73.43125105857928, "o", "'"] +[73.46125105857928, "o", "2"] +[73.49125105857928, "o", "0"] +[73.52125105857928, "o", "2"] +[73.55125105857928, "o", "0"] +[73.58125105857928, "o", "-"] +[73.61125105857928, "o", "0"] +[73.64125105857929, "o", "4"] +[73.67125105857929, "o", "-"] +[73.70125105857929, "o", "2"] +[73.73125105857929, "o", "0"] +[73.76125105857929, "o", " "] +[73.79125105857929, "o", "1"] +[73.82125105857929, "o", "4"] +[73.8512510585793, "o", ":"] +[73.8812510585793, "o", "0"] +[73.9112510585793, "o", "3"] +[73.9412510585793, "o", ":"] +[73.9712510585793, "o", "4"] +[74.0012510585793, "o", "8"] +[74.0312510585793, "o", "'"] +[74.0612510585793, "o", ")"] +[74.0912510585793, "o", ";"] +[74.1212510585793, "o", " "] +[74.1512510585793, "o", "\\"] +[74.1812510585793, "o", "\r\n "] +[74.21125105857931, "o", "I"] +[74.24125105857931, "o", "N"] +[74.27125105857931, "o", "S"] +[74.30125105857931, "o", "E"] +[74.33125105857931, "o", "R"] +[74.36125105857931, "o", "T"] +[74.39125105857931, "o", " "] +[74.42125105857932, "o", "I"] +[74.45125105857932, "o", "N"] +[74.48125105857932, "o", "T"] +[74.51125105857932, "o", "O"] +[74.54125105857932, "o", " "] +[74.57125105857932, "o", "o"] +[74.60125105857932, "o", "r"] +[74.63125105857932, "o", "d"] +[74.66125105857932, "o", "e"] +[74.69125105857933, "o", "r"] +[74.72125105857933, "o", "s"] +[74.75125105857933, "o", " "] +[74.78125105857933, "o", "("] +[74.81125105857933, "o", "c"] +[74.84125105857933, "o", "u"] +[74.87125105857933, "o", "s"] +[74.90125105857933, "o", "t"] +[74.93125105857933, "o", "o"] +[74.96125105857934, "o", "m"] +[74.99125105857934, "o", "e"] +[75.02125105857934, "o", "r"] +[75.05125105857934, "o", "_"] +[75.08125105857934, "o", "i"] +[75.11125105857934, "o", "d"] +[75.14125105857934, "o", ","] +[75.17125105857934, "o", " "] +[75.20125105857934, "o", "q"] +[75.23125105857935, "o", "u"] +[75.26125105857935, "o", "a"] +[75.29125105857935, "o", "n"] +[75.32125105857935, "o", "t"] +[75.35125105857935, "o", "i"] +[75.38125105857935, "o", "t"] +[75.41125105857935, "o", "y"] +[75.44125105857935, "o", ","] +[75.47125105857936, "o", " "] +[75.50125105857936, "o", "i"] +[75.53125105857936, "o", "t"] +[75.56125105857936, "o", "e"] +[75.59125105857936, "o", "m"] +[75.62125105857936, "o", "_"] +[75.65125105857936, "o", "n"] +[75.68125105857936, "o", "a"] +[75.71125105857936, "o", "m"] +[75.74125105857937, "o", "e"] +[75.77125105857937, "o", ","] +[75.80125105857937, "o", " "] +[75.83125105857937, "o", "p"] +[75.86125105857937, "o", "l"] +[75.89125105857937, "o", "a"] +[75.92125105857937, "o", "c"] +[75.95125105857937, "o", "e"] +[75.98125105857937, "o", "d"] +[76.01125105857938, "o", "_"] +[76.04125105857938, "o", "t"] +[76.07125105857938, "o", "i"] +[76.10125105857938, "o", "m"] +[76.13125105857938, "o", "e"] +[76.16125105857938, "o", ")"] +[76.19125105857938, "o", " "] +[76.22125105857938, "o", "V"] +[76.25125105857938, "o", "A"] +[76.28125105857939, "o", "L"] +[76.31125105857939, "o", "U"] +[76.34125105857939, "o", "E"] +[76.37125105857939, "o", "S"] +[76.40125105857939, "o", " "] +[76.43125105857939, "o", "\\"] +[76.46125105857939, "o", "\r\n "] +[76.4912510585794, "o", "("] +[76.5212510585794, "o", "4"] +[76.5512510585794, "o", ","] +[76.5812510585794, "o", " "] +[76.6112510585794, "o", "5"] +[76.6412510585794, "o", ","] +[76.6712510585794, "o", " "] +[76.7012510585794, "o", "'"] +[76.7312510585794, "o", "T"] +[76.7612510585794, "o", "o"] +[76.7912510585794, "o", "i"] +[76.8212510585794, "o", "l"] +[76.85125105857941, "o", "e"] +[76.88125105857941, "o", "t"] +[76.91125105857941, "o", " "] +[76.94125105857941, "o", "R"] +[76.97125105857941, "o", "o"] +[77.00125105857941, "o", "l"] +[77.03125105857941, "o", "l"] +[77.06125105857942, "o", "'"] +[77.09125105857942, "o", ","] +[77.12125105857942, "o", " "] +[77.15125105857942, "o", "'"] +[77.18125105857942, "o", "2"] +[77.21125105857942, "o", "0"] +[77.24125105857942, "o", "2"] +[77.27125105857942, "o", "0"] +[77.30125105857942, "o", "-"] +[77.33125105857943, "o", "0"] +[77.36125105857943, "o", "4"] +[77.39125105857943, "o", "-"] +[77.42125105857943, "o", "2"] +[77.45125105857943, "o", "0"] +[77.48125105857943, "o", " "] +[77.51125105857943, "o", "1"] +[77.54125105857943, "o", "4"] +[77.57125105857943, "o", ":"] +[77.60125105857944, "o", "0"] +[77.63125105857944, "o", "5"] +[77.66125105857944, "o", ":"] +[77.69125105857944, "o", "1"] +[77.72125105857944, "o", "7"] +[77.75125105857944, "o", "'"] +[77.78125105857944, "o", ")"] +[77.81125105857944, "o", ";"] +[77.84125105857945, "o", "\""] +[77.87125105857945, "o", "\r\n"] +[77.90125105857945, "o", "\u001b[0m"] +[77.93125105857945, "o", "\r\n"] +[77.96125105857945, "o", "\u001b[1m"] +[77.99125105857945, "o", "\u001b[36m"] +[78.02125105857945, "o", "\u001b[91m"] +[78.05125105857945, "o", "$"] +[78.08125105857945, "o", " "] +[78.11125105857946, "o", "\u001b[0m"] +[83.14125105857946, "o", "\u001b[H"] +[83.17125105857946, "o", "\u001b[J"] +[83.20125105857946, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The change propagates to the subscriber and gets"] +[83.23125105857946, "o", "\r\n"] +[83.26125105857946, "o", "$ # captured by Splitgraph's change tracking\r\n"] +[83.29125105857946, "o", "$"] +[83.32125105857946, "o", " "] +[83.35125105857946, "o", "s"] +[83.38125105857947, "o", "g"] +[83.41125105857947, "o", "r"] +[83.44125105857947, "o", " "] +[83.47125105857947, "o", "d"] +[83.50125105857947, "o", "i"] +[83.53125105857947, "o", "f"] +[83.56125105857947, "o", "f"] +[83.59125105857947, "o", " "] +[83.62125105857947, "o", "-"] +[83.65125105857948, "o", "v"] +[83.68125105857948, "o", " "] +[83.71125105857948, "o", "p"] +[83.74125105857948, "o", "r"] +[83.77125105857948, "o", "o"] +[83.80125105857948, "o", "d"] +[83.83125105857948, "o", "u"] +[83.86125105857948, "o", "c"] +[83.89125105857948, "o", "t"] +[83.92125105857949, "o", "i"] +[83.95125105857949, "o", "o"] +[83.98125105857949, "o", "n"] +[84.01125105857949, "o", "_"] +[84.04125105857949, "o", "d"] +[84.07125105857949, "o", "a"] +[84.10125105857949, "o", "t"] +[84.1312510585795, "o", "a"] +[84.1612510585795, "o", "\r\n"] +[84.1912510585795, "o", "\u001b[0m"] +[84.2212510585795, "o", "\r\n"] +[84.61599235534769, "o", "Between 6ef776835de2 and the current working copy: \r\n"] +[84.61626081466775, "o", "customers: added 1 row.\r\n+ (4, 'Jack Sample', datetime.datetime(2020, 4, 20, 14, 3, 48))\r\norders: added 2 rows, removed 2 rows.\r\n- (2, 1, 20, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n- (5, 1, 50, 'Surgical Mask', datetime.datetime(2020, 4, 2, 11, 29, 42))\r\n+ (2, 1, 25, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n+ (6, 4, 5, 'Toilet Roll', datetime.datetime(2020, 4, 20, 14, 5, 17))\r\n"] +[84.64626081466776, "o", "\u001b[1m"] +[84.67626081466776, "o", "\u001b[36m"] +[84.70626081466776, "o", "\u001b[91m"] +[84.73626081466776, "o", "$"] +[84.76626081466776, "o", " "] +[84.79626081466776, "o", "\u001b[0m"] +[89.82626081466776, "o", "\u001b[H"] +[89.85626081466776, "o", "\u001b[J"] +[89.88626081466776, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Committing creates a new image, snapshotting the state."] +[89.91626081466777, "o", "\r\n"] +[89.94626081466777, "o", "$"] +[89.97626081466777, "o", " "] +[90.00626081466777, "o", "s"] +[90.03626081466777, "o", "g"] +[90.06626081466777, "o", "r"] +[90.09626081466777, "o", " "] +[90.12626081466777, "o", "c"] +[90.15626081466777, "o", "o"] +[90.18626081466778, "o", "m"] +[90.21626081466778, "o", "m"] +[90.24626081466778, "o", "i"] +[90.27626081466778, "o", "t"] +[90.30626081466778, "o", " "] +[90.33626081466778, "o", "p"] +[90.36626081466778, "o", "r"] +[90.39626081466778, "o", "o"] +[90.42626081466778, "o", "d"] +[90.45626081466779, "o", "u"] +[90.48626081466779, "o", "c"] +[90.51626081466779, "o", "t"] +[90.54626081466779, "o", "i"] +[90.57626081466779, "o", "o"] +[90.60626081466779, "o", "n"] +[90.63626081466779, "o", "_"] +[90.6662608146678, "o", "d"] +[90.6962608146678, "o", "a"] +[90.7262608146678, "o", "t"] +[90.7562608146678, "o", "a"] +[90.7862608146678, "o", "\r\n"] +[90.8162608146678, "o", "$"] +[90.8462608146678, "o", " "] +[90.8762608146678, "o", "s"] +[90.9062608146678, "o", "g"] +[90.9362608146678, "o", "r"] +[90.9662608146678, "o", " "] +[90.9962608146678, "o", "t"] +[91.02626081466781, "o", "a"] +[91.05626081466781, "o", "g"] +[91.08626081466781, "o", " "] +[91.11626081466781, "o", "p"] +[91.14626081466781, "o", "r"] +[91.17626081466781, "o", "o"] +[91.20626081466781, "o", "d"] +[91.23626081466782, "o", "u"] +[91.26626081466782, "o", "c"] +[91.29626081466782, "o", "t"] +[91.32626081466782, "o", "i"] +[91.35626081466782, "o", "o"] +[91.38626081466782, "o", "n"] +[91.41626081466782, "o", "_"] +[91.44626081466782, "o", "d"] +[91.47626081466782, "o", "a"] +[91.50626081466783, "o", "t"] +[91.53626081466783, "o", "a"] +[91.56626081466783, "o", " "] +[91.59626081466783, "o", "c"] +[91.62626081466783, "o", "u"] +[91.65626081466783, "o", "r"] +[91.68626081466783, "o", "r"] +[91.71626081466783, "o", "e"] +[91.74626081466783, "o", "n"] +[91.77626081466784, "o", "t"] +[91.80626081466784, "o", "_"] +[91.83626081466784, "o", "s"] +[91.86626081466784, "o", "n"] +[91.89626081466784, "o", "a"] +[91.92626081466784, "o", "p"] +[91.95626081466784, "o", "s"] +[91.98626081466784, "o", "h"] +[92.01626081466785, "o", "o"] +[92.04626081466785, "o", "t"] +[92.07626081466785, "o", "\r\n"] +[92.10626081466785, "o", "$"] +[92.13626081466785, "o", " "] +[92.16626081466785, "o", "s"] +[92.19626081466785, "o", "g"] +[92.22626081466785, "o", "r"] +[92.25626081466785, "o", " "] +[92.28626081466786, "o", "s"] +[92.31626081466786, "o", "h"] +[92.34626081466786, "o", "o"] +[92.37626081466786, "o", "w"] +[92.40626081466786, "o", " "] +[92.43626081466786, "o", "p"] +[92.46626081466786, "o", "r"] +[92.49626081466786, "o", "o"] +[92.52626081466786, "o", "d"] +[92.55626081466787, "o", "u"] +[92.58626081466787, "o", "c"] +[92.61626081466787, "o", "t"] +[92.64626081466787, "o", "i"] +[92.67626081466787, "o", "o"] +[92.70626081466787, "o", "n"] +[92.73626081466787, "o", "_"] +[92.76626081466787, "o", "d"] +[92.79626081466787, "o", "a"] +[92.82626081466788, "o", "t"] +[92.85626081466788, "o", "a"] +[92.88626081466788, "o", ":"] +[92.91626081466788, "o", "c"] +[92.94626081466788, "o", "u"] +[92.97626081466788, "o", "r"] +[93.00626081466788, "o", "r"] +[93.03626081466788, "o", "e"] +[93.06626081466788, "o", "n"] +[93.09626081466789, "o", "t"] +[93.12626081466789, "o", "_"] +[93.15626081466789, "o", "s"] +[93.18626081466789, "o", "n"] +[93.21626081466789, "o", "a"] +[93.24626081466789, "o", "p"] +[93.27626081466789, "o", "s"] +[93.3062608146679, "o", "h"] +[93.3362608146679, "o", "o"] +[93.3662608146679, "o", "t"] +[93.3962608146679, "o", "\r\n"] +[93.4262608146679, "o", "\u001b[0m"] +[93.4562608146679, "o", "\r\n"] +[93.6858865165722, "o", "Committing production_data...\r\n"] +[93.72013820648309, "o", "Committed production_data as a3bb42ee4b39.\r\n"] +[93.94476284027215, "o", "Tagged production_data:a3bb42ee4b391857d313be558ff2c421ef91068d2034706ec39c6de435fd68cc with current_snapshot.\r\n"] +[94.17557968139764, "o", "Image production_data:a3bb42ee4b391857d313be558ff2c421ef91068d2034706ec39c6de435fd68cc\r\n"] +[94.1756063842785, "o", "\r\nCreated at 2021-04-07T15:49:33.990306\r\n"] +[94.1765383625042, "o", "Size: 1.11 KiB\r\n"] +[94.17655505180474, "o", "Parent: 6ef776835de26833d1d74f844bc2aac5e9ab511d0b62454a357c14e940f0f419\r\n\r\nTables:\r\n"] +[94.17769397735711, "o", " customers\r\n orders\r\n"] +[94.20769397735711, "o", "\u001b[1m"] +[94.23769397735711, "o", "\u001b[36m"] +[94.26769397735711, "o", "\u001b[91m"] +[94.29769397735711, "o", "$"] +[94.32769397735711, "o", " "] +[94.35769397735712, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.12/postgrest.cast b/content/casts/versioned/archive/v0.2.12/postgrest.cast new file mode 100644 index 00000000..365b1cc0 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.12/postgrest.cast @@ -0,0 +1,1191 @@ +{"version": 2, "width": 100, "height": 16, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1617810576, "metadata": {"tss": [{"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 0.06}, {"h": "Also create another image so we can switch between them.", "ts": 12.828236484527599}, {"h": "Check out the original version of the dataset and look at the API spec for it.", "ts": 25.440542774200527}, {"h": "Get all rows in the table", "ts": 37.311509218216216}, {"h": "Run a query selecting one row", "ts": 43.987497501373625}, {"h": "Run the query against the new version of the dataset.", "ts": 52.662145700455184}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "s"] +[0.24, "o", "g"] +[0.27, "o", "r"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "i"] +[0.3600000000000001, "o", "n"] +[0.3900000000000001, "o", "i"] +[0.42000000000000015, "o", "t"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "d"] +[0.5100000000000002, "o", "e"] +[0.5400000000000003, "o", "m"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "/"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "\r\n"] +[0.8700000000000006, "o", "$"] +[0.9000000000000006, "o", " "] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "g"] +[0.9900000000000007, "o", "r"] +[1.0200000000000007, "o", " "] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "s"] +[1.1100000000000008, "o", "v"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "i"] +[1.2000000000000008, "o", "m"] +[1.2300000000000009, "o", "p"] +[1.260000000000001, "o", "o"] +[1.290000000000001, "o", "r"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", " "] +[1.380000000000001, "o", "-"] +[1.410000000000001, "o", "f"] +[1.440000000000001, "o", " "] +[1.470000000000001, "o", "."] +[1.500000000000001, "o", "."] +[1.5300000000000011, "o", "/"] +[1.5600000000000012, "o", "i"] +[1.5900000000000012, "o", "m"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "o"] +[1.6800000000000013, "o", "r"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "-"] +[1.7700000000000014, "o", "f"] +[1.8000000000000014, "o", "r"] +[1.8300000000000014, "o", "o"] +[1.8600000000000014, "o", "m"] +[1.8900000000000015, "o", "-"] +[1.9200000000000015, "o", "c"] +[1.9500000000000015, "o", "s"] +[1.9800000000000015, "o", "v"] +[2.0100000000000016, "o", "/"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "d"] +[2.100000000000001, "o", "u"] +[2.130000000000001, "o", "-"] +[2.1600000000000006, "o", "w"] +[2.1900000000000004, "o", "e"] +[2.22, "o", "a"] +[2.25, "o", "t"] +[2.28, "o", "h"] +[2.3099999999999996, "o", "e"] +[2.3399999999999994, "o", "r"] +[2.369999999999999, "o", "-"] +[2.399999999999999, "o", "h"] +[2.429999999999999, "o", "i"] +[2.4599999999999986, "o", "s"] +[2.4899999999999984, "o", "t"] +[2.5199999999999982, "o", "o"] +[2.549999999999998, "o", "r"] +[2.579999999999998, "o", "y"] +[2.6099999999999977, "o", "."] +[2.6399999999999975, "o", "c"] +[2.6699999999999973, "o", "s"] +[2.699999999999997, "o", "v"] +[2.729999999999997, "o", " "] +[2.7599999999999967, "o", "\\"] +[2.7899999999999965, "o", "\r\n "] +[2.8199999999999963, "o", "-"] +[2.849999999999996, "o", "k"] +[2.879999999999996, "o", " "] +[2.9099999999999957, "o", "d"] +[2.9399999999999955, "o", "a"] +[2.9699999999999953, "o", "t"] +[2.999999999999995, "o", "e"] +[3.029999999999995, "o", " "] +[3.0599999999999947, "o", "\\"] +[3.0899999999999945, "o", "\r\n "] +[3.1199999999999943, "o", "-"] +[3.149999999999994, "o", "t"] +[3.179999999999994, "o", " "] +[3.2099999999999937, "o", "d"] +[3.2399999999999936, "o", "a"] +[3.2699999999999934, "o", "t"] +[3.299999999999993, "o", "e"] +[3.329999999999993, "o", " "] +[3.3599999999999928, "o", "t"] +[3.3899999999999926, "o", "i"] +[3.4199999999999924, "o", "m"] +[3.449999999999992, "o", "e"] +[3.479999999999992, "o", "s"] +[3.509999999999992, "o", "t"] +[3.5399999999999916, "o", "a"] +[3.5699999999999914, "o", "m"] +[3.599999999999991, "o", "p"] +[3.629999999999991, "o", " "] +[3.659999999999991, "o", "\\"] +[3.6899999999999906, "o", "\r\n "] +[3.7199999999999904, "o", "-"] +[3.7499999999999902, "o", "-"] +[3.77999999999999, "o", "s"] +[3.80999999999999, "o", "e"] +[3.8399999999999896, "o", "p"] +[3.8699999999999894, "o", "a"] +[3.8999999999999893, "o", "r"] +[3.929999999999989, "o", "a"] +[3.959999999999989, "o", "t"] +[3.9899999999999887, "o", "o"] +[4.019999999999989, "o", "r"] +[4.049999999999989, "o", " "] +[4.079999999999989, "o", "\""] +[4.10999999999999, "o", ";"] +[4.13999999999999, "o", "\""] +[4.16999999999999, "o", " "] +[4.19999999999999, "o", "\\"] +[4.229999999999991, "o", "\r\n "] +[4.259999999999991, "o", "d"] +[4.289999999999991, "o", "e"] +[4.319999999999991, "o", "m"] +[4.349999999999992, "o", "o"] +[4.379999999999992, "o", "/"] +[4.409999999999992, "o", "w"] +[4.439999999999992, "o", "e"] +[4.469999999999993, "o", "a"] +[4.499999999999993, "o", "t"] +[4.529999999999993, "o", "h"] +[4.559999999999993, "o", "e"] +[4.589999999999994, "o", "r"] +[4.619999999999994, "o", " "] +[4.649999999999994, "o", "r"] +[4.679999999999994, "o", "d"] +[4.709999999999995, "o", "u"] +[4.739999999999995, "o", "\r\n"] +[4.769999999999995, "o", "$"] +[4.799999999999995, "o", " "] +[4.829999999999996, "o", "s"] +[4.859999999999996, "o", "g"] +[4.889999999999996, "o", "r"] +[4.919999999999996, "o", " "] +[4.949999999999997, "o", "c"] +[4.979999999999997, "o", "o"] +[5.009999999999997, "o", "m"] +[5.039999999999997, "o", "m"] +[5.069999999999998, "o", "i"] +[5.099999999999998, "o", "t"] +[5.129999999999998, "o", " "] +[5.159999999999998, "o", "d"] +[5.189999999999999, "o", "e"] +[5.219999999999999, "o", "m"] +[5.249999999999999, "o", "o"] +[5.279999999999999, "o", "/"] +[5.31, "o", "w"] +[5.34, "o", "e"] +[5.37, "o", "a"] +[5.4, "o", "t"] +[5.430000000000001, "o", "h"] +[5.460000000000001, "o", "e"] +[5.490000000000001, "o", "r"] +[5.520000000000001, "o", "\r\n"] +[5.550000000000002, "o", "$"] +[5.580000000000002, "o", " "] +[5.610000000000002, "o", "s"] +[5.640000000000002, "o", "g"] +[5.670000000000003, "o", "r"] +[5.700000000000003, "o", " "] +[5.730000000000003, "o", "t"] +[5.760000000000003, "o", "a"] +[5.790000000000004, "o", "g"] +[5.820000000000004, "o", " "] +[5.850000000000004, "o", "d"] +[5.880000000000004, "o", "e"] +[5.910000000000005, "o", "m"] +[5.940000000000005, "o", "o"] +[5.970000000000005, "o", "/"] +[6.000000000000005, "o", "w"] +[6.030000000000006, "o", "e"] +[6.060000000000006, "o", "a"] +[6.090000000000006, "o", "t"] +[6.120000000000006, "o", "h"] +[6.150000000000007, "o", "e"] +[6.180000000000007, "o", "r"] +[6.210000000000007, "o", " "] +[6.240000000000007, "o", "i"] +[6.270000000000008, "o", "n"] +[6.300000000000008, "o", "i"] +[6.330000000000008, "o", "t"] +[6.360000000000008, "o", "i"] +[6.390000000000009, "o", "a"] +[6.420000000000009, "o", "l"] +[6.450000000000009, "o", "_"] +[6.480000000000009, "o", "d"] +[6.51000000000001, "o", "a"] +[6.54000000000001, "o", "t"] +[6.57000000000001, "o", "a"] +[6.60000000000001, "o", "\r\n"] +[6.6300000000000106, "o", "\u001b[0m"] +[6.660000000000011, "o", "\r\n"] +[6.901528749465953, "o", "Initialized empty repository demo/weather\r\n"] +[7.128430519104015, "o", "Committing demo/weather...\r\n"] +[7.155580434799205, "o", "Processing table rdu\r\n"] +[7.364992055892955, "o", "Committed demo/weather as 54169160eab7.\r\n"] +[7.588236484527599, "o", "Tagged demo/weather:54169160eab7f7f98b0bea127da53d0b76ba6bad9e0e5881c5fc998de5aec127 with initial_data.\r\n"] +[7.618236484527599, "o", "\u001b[1m"] +[7.648236484527599, "o", "\u001b[36m"] +[7.678236484527599, "o", "\u001b[91m"] +[7.7082364845276, "o", "$"] +[7.7382364845276, "o", " "] +[7.7682364845276, "o", "\u001b[0m"] +[12.7982364845276, "o", "\u001b[H"] +[12.828236484527599, "o", "\u001b[J"] +[12.858236484527598, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Also create another image so we can switch between them."] +[12.888236484527598, "o", "\r\n"] +[12.918236484527597, "o", "$"] +[12.948236484527596, "o", " "] +[12.978236484527596, "o", "s"] +[13.008236484527595, "o", "g"] +[13.038236484527594, "o", "r"] +[13.068236484527594, "o", " "] +[13.098236484527593, "o", "s"] +[13.128236484527593, "o", "q"] +[13.158236484527592, "o", "l"] +[13.188236484527591, "o", " "] +[13.21823648452759, "o", "-"] +[13.24823648452759, "o", "s"] +[13.27823648452759, "o", " "] +[13.308236484527589, "o", "d"] +[13.338236484527588, "o", "e"] +[13.368236484527587, "o", "m"] +[13.398236484527587, "o", "o"] +[13.428236484527586, "o", "/"] +[13.458236484527585, "o", "w"] +[13.488236484527585, "o", "e"] +[13.518236484527584, "o", "a"] +[13.548236484527584, "o", "t"] +[13.578236484527583, "o", "h"] +[13.608236484527582, "o", "e"] +[13.638236484527582, "o", "r"] +[13.668236484527581, "o", " "] +[13.69823648452758, "o", "\""] +[13.72823648452758, "o", "U"] +[13.758236484527579, "o", "P"] +[13.788236484527578, "o", "D"] +[13.818236484527578, "o", "A"] +[13.848236484527577, "o", "T"] +[13.878236484527577, "o", "E"] +[13.908236484527576, "o", " "] +[13.938236484527575, "o", "r"] +[13.968236484527575, "o", "d"] +[13.998236484527574, "o", "u"] +[14.028236484527573, "o", " "] +[14.058236484527573, "o", "S"] +[14.088236484527572, "o", "E"] +[14.118236484527571, "o", "T"] +[14.14823648452757, "o", " "] +[14.17823648452757, "o", "p"] +[14.20823648452757, "o", "r"] +[14.238236484527569, "o", "e"] +[14.268236484527568, "o", "c"] +[14.298236484527568, "o", "i"] +[14.328236484527567, "o", "p"] +[14.358236484527566, "o", "i"] +[14.388236484527566, "o", "t"] +[14.418236484527565, "o", "a"] +[14.448236484527564, "o", "t"] +[14.478236484527564, "o", "i"] +[14.508236484527563, "o", "o"] +[14.538236484527562, "o", "n"] +[14.568236484527562, "o", " "] +[14.598236484527561, "o", "="] +[14.62823648452756, "o", " "] +[14.65823648452756, "o", "p"] +[14.68823648452756, "o", "r"] +[14.718236484527559, "o", "e"] +[14.748236484527558, "o", "c"] +[14.778236484527557, "o", "i"] +[14.808236484527557, "o", "p"] +[14.838236484527556, "o", "i"] +[14.868236484527555, "o", "t"] +[14.898236484527555, "o", "a"] +[14.928236484527554, "o", "t"] +[14.958236484527554, "o", "i"] +[14.988236484527553, "o", "o"] +[15.018236484527552, "o", "n"] +[15.048236484527552, "o", " "] +[15.078236484527551, "o", "*"] +[15.10823648452755, "o", " "] +[15.13823648452755, "o", "1"] +[15.168236484527549, "o", "."] +[15.198236484527548, "o", "2"] +[15.228236484527548, "o", " "] +[15.258236484527547, "o", "W"] +[15.288236484527546, "o", "H"] +[15.318236484527546, "o", "E"] +[15.348236484527545, "o", "R"] +[15.378236484527545, "o", "E"] +[15.408236484527544, "o", " "] +[15.438236484527543, "o", "E"] +[15.468236484527543, "o", "X"] +[15.498236484527542, "o", "T"] +[15.528236484527541, "o", "R"] +[15.55823648452754, "o", "A"] +[15.58823648452754, "o", "C"] +[15.61823648452754, "o", "T"] +[15.648236484527539, "o", " "] +[15.678236484527538, "o", "("] +[15.708236484527538, "o", "y"] +[15.738236484527537, "o", "e"] +[15.768236484527536, "o", "a"] +[15.798236484527536, "o", "r"] +[15.828236484527535, "o", " "] +[15.858236484527534, "o", "F"] +[15.888236484527534, "o", "R"] +[15.918236484527533, "o", "O"] +[15.948236484527532, "o", "M"] +[15.978236484527532, "o", " "] +[16.008236484527533, "o", "d"] +[16.038236484527534, "o", "a"] +[16.068236484527535, "o", "t"] +[16.098236484527536, "o", "e"] +[16.128236484527537, "o", ")"] +[16.15823648452754, "o", " "] +[16.18823648452754, "o", "="] +[16.21823648452754, "o", " "] +[16.248236484527542, "o", "2"] +[16.278236484527543, "o", "0"] +[16.308236484527544, "o", "1"] +[16.338236484527545, "o", "2"] +[16.368236484527547, "o", "\""] +[16.398236484527548, "o", "\r\n"] +[16.42823648452755, "o", "$"] +[16.45823648452755, "o", " "] +[16.48823648452755, "o", "s"] +[16.518236484527552, "o", "g"] +[16.548236484527553, "o", "r"] +[16.578236484527554, "o", " "] +[16.608236484527556, "o", "c"] +[16.638236484527557, "o", "o"] +[16.668236484527558, "o", "m"] +[16.69823648452756, "o", "m"] +[16.72823648452756, "o", "i"] +[16.75823648452756, "o", "t"] +[16.788236484527562, "o", " "] +[16.818236484527564, "o", "-"] +[16.848236484527565, "o", "m"] +[16.878236484527566, "o", " "] +[16.908236484527567, "o", "\""] +[16.938236484527568, "o", "R"] +[16.96823648452757, "o", "e"] +[16.99823648452757, "o", "v"] +[17.02823648452757, "o", "i"] +[17.058236484527573, "o", "s"] +[17.088236484527574, "o", "i"] +[17.118236484527575, "o", "o"] +[17.148236484527576, "o", "n"] +[17.178236484527577, "o", " "] +[17.20823648452758, "o", "t"] +[17.23823648452758, "o", "o"] +[17.26823648452758, "o", " "] +[17.298236484527582, "o", "t"] +[17.328236484527583, "o", "h"] +[17.358236484527584, "o", "e"] +[17.388236484527585, "o", " "] +[17.418236484527586, "o", "2"] +[17.448236484527587, "o", "0"] +[17.47823648452759, "o", "1"] +[17.50823648452759, "o", "2"] +[17.53823648452759, "o", " "] +[17.568236484527592, "o", "r"] +[17.598236484527593, "o", "a"] +[17.628236484527594, "o", "i"] +[17.658236484527595, "o", "n"] +[17.688236484527597, "o", "f"] +[17.718236484527598, "o", "a"] +[17.7482364845276, "o", "l"] +[17.7782364845276, "o", "l"] +[17.8082364845276, "o", " "] +[17.838236484527602, "o", "d"] +[17.868236484527603, "o", "a"] +[17.898236484527605, "o", "t"] +[17.928236484527606, "o", "a"] +[17.958236484527607, "o", "\""] +[17.988236484527608, "o", " "] +[18.01823648452761, "o", "d"] +[18.04823648452761, "o", "e"] +[18.07823648452761, "o", "m"] +[18.108236484527612, "o", "o"] +[18.138236484527614, "o", "/"] +[18.168236484527615, "o", "w"] +[18.198236484527616, "o", "e"] +[18.228236484527617, "o", "a"] +[18.258236484527618, "o", "t"] +[18.28823648452762, "o", "h"] +[18.31823648452762, "o", "e"] +[18.34823648452762, "o", "r"] +[18.378236484527623, "o", "\r\n"] +[18.408236484527624, "o", "$"] +[18.438236484527625, "o", " "] +[18.468236484527626, "o", "s"] +[18.498236484527627, "o", "g"] +[18.52823648452763, "o", "r"] +[18.55823648452763, "o", " "] +[18.58823648452763, "o", "t"] +[18.618236484527632, "o", "a"] +[18.648236484527633, "o", "g"] +[18.678236484527634, "o", " "] +[18.708236484527635, "o", "d"] +[18.738236484527636, "o", "e"] +[18.768236484527637, "o", "m"] +[18.79823648452764, "o", "o"] +[18.82823648452764, "o", "/"] +[18.85823648452764, "o", "w"] +[18.888236484527642, "o", "e"] +[18.918236484527643, "o", "a"] +[18.948236484527644, "o", "t"] +[18.978236484527645, "o", "h"] +[19.008236484527647, "o", "e"] +[19.038236484527648, "o", "r"] +[19.06823648452765, "o", " "] +[19.09823648452765, "o", "r"] +[19.12823648452765, "o", "e"] +[19.158236484527652, "o", "v"] +[19.188236484527653, "o", "i"] +[19.218236484527655, "o", "s"] +[19.248236484527656, "o", "e"] +[19.278236484527657, "o", "d"] +[19.308236484527658, "o", "_"] +[19.33823648452766, "o", "d"] +[19.36823648452766, "o", "a"] +[19.39823648452766, "o", "t"] +[19.428236484527662, "o", "a"] +[19.458236484527664, "o", "\r\n"] +[19.488236484527665, "o", "\u001b[0m"] +[19.518236484527666, "o", "\r\n"] +[19.734822120666582, "o", "Committing demo/weather...\r\n"] +[19.770896043777544, "o", "Storing and indexing table rdu\r\n"] +[19.95938953399666, "o", "Committed demo/weather as 80d04752feac."] +[19.959449377060015, "o", "\r\n"] +[20.200542774200517, "o", "Tagged demo/weather:80d04752feacf3f90d0b19aa0f2f316ff773f74ab9ee684a04b03e6e201d2aec with revised_data.\r\n"] +[20.23054277420052, "o", "\u001b[1m"] +[20.26054277420052, "o", "\u001b[36m"] +[20.29054277420052, "o", "\u001b[91m"] +[20.320542774200522, "o", "$"] +[20.350542774200523, "o", " "] +[20.380542774200524, "o", "\u001b[0m"] +[25.410542774200525, "o", "\u001b[H"] +[25.440542774200527, "o", "\u001b[J"] +[25.470542774200528, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the original version of the dataset and look at the API spec for it."] +[25.50054277420053, "o", "\r\n"] +[25.53054277420053, "o", "$ # For this, we need to restart PostgREST so that it picks up the new schema.\r\n"] +[25.56054277420053, "o", "$"] +[25.590542774200532, "o", " "] +[25.620542774200533, "o", "d"] +[25.650542774200535, "o", "o"] +[25.680542774200536, "o", "c"] +[25.710542774200537, "o", "k"] +[25.740542774200538, "o", "e"] +[25.77054277420054, "o", "r"] +[25.80054277420054, "o", "-"] +[25.83054277420054, "o", "c"] +[25.860542774200542, "o", "o"] +[25.890542774200544, "o", "m"] +[25.920542774200545, "o", "p"] +[25.950542774200546, "o", "o"] +[25.980542774200547, "o", "s"] +[26.010542774200548, "o", "e"] +[26.04054277420055, "o", " "] +[26.07054277420055, "o", "-"] +[26.10054277420055, "o", "-"] +[26.130542774200553, "o", "p"] +[26.160542774200554, "o", "r"] +[26.190542774200555, "o", "o"] +[26.220542774200556, "o", "j"] +[26.250542774200557, "o", "e"] +[26.28054277420056, "o", "c"] +[26.31054277420056, "o", "t"] +[26.34054277420056, "o", "-"] +[26.370542774200562, "o", "n"] +[26.400542774200563, "o", "a"] +[26.430542774200564, "o", "m"] +[26.460542774200565, "o", "e"] +[26.490542774200566, "o", " "] +[26.520542774200567, "o", "s"] +[26.55054277420057, "o", "p"] +[26.58054277420057, "o", "l"] +[26.61054277420057, "o", "i"] +[26.640542774200572, "o", "t"] +[26.670542774200573, "o", "g"] +[26.700542774200574, "o", "r"] +[26.730542774200575, "o", "a"] +[26.760542774200577, "o", "p"] +[26.790542774200578, "o", "h"] +[26.82054277420058, "o", "_"] +[26.85054277420058, "o", "e"] +[26.88054277420058, "o", "x"] +[26.910542774200582, "o", "a"] +[26.940542774200583, "o", "m"] +[26.970542774200585, "o", "p"] +[27.000542774200586, "o", "l"] +[27.030542774200587, "o", "e"] +[27.060542774200588, "o", " "] +[27.09054277420059, "o", "r"] +[27.12054277420059, "o", "e"] +[27.15054277420059, "o", "s"] +[27.180542774200593, "o", "t"] +[27.210542774200594, "o", "a"] +[27.240542774200595, "o", "r"] +[27.270542774200596, "o", "t"] +[27.300542774200597, "o", " "] +[27.330542774200598, "o", "p"] +[27.3605427742006, "o", "o"] +[27.3905427742006, "o", "s"] +[27.4205427742006, "o", "t"] +[27.450542774200603, "o", "g"] +[27.480542774200604, "o", "r"] +[27.510542774200605, "o", "e"] +[27.540542774200606, "o", "s"] +[27.570542774200607, "o", "t"] +[27.60054277420061, "o", "\r\n"] +[27.63054277420061, "o", "$"] +[27.66054277420061, "o", " "] +[27.690542774200612, "o", "s"] +[27.720542774200613, "o", "g"] +[27.750542774200614, "o", "r"] +[27.780542774200615, "o", " "] +[27.810542774200616, "o", "c"] +[27.840542774200618, "o", "h"] +[27.87054277420062, "o", "e"] +[27.90054277420062, "o", "c"] +[27.93054277420062, "o", "k"] +[27.960542774200622, "o", "o"] +[27.990542774200623, "o", "u"] +[28.020542774200624, "o", "t"] +[28.050542774200625, "o", " "] +[28.080542774200627, "o", "d"] +[28.110542774200628, "o", "e"] +[28.14054277420063, "o", "m"] +[28.17054277420063, "o", "o"] +[28.20054277420063, "o", "/"] +[28.230542774200632, "o", "w"] +[28.260542774200633, "o", "e"] +[28.290542774200635, "o", "a"] +[28.320542774200636, "o", "t"] +[28.350542774200637, "o", "h"] +[28.380542774200638, "o", "e"] +[28.41054277420064, "o", "r"] +[28.44054277420064, "o", ":"] +[28.47054277420064, "o", "i"] +[28.500542774200643, "o", "n"] +[28.530542774200644, "o", "i"] +[28.560542774200645, "o", "t"] +[28.590542774200646, "o", "i"] +[28.620542774200647, "o", "a"] +[28.650542774200648, "o", "l"] +[28.68054277420065, "o", "_"] +[28.71054277420065, "o", "d"] +[28.74054277420065, "o", "a"] +[28.770542774200653, "o", "t"] +[28.800542774200654, "o", "a"] +[28.830542774200655, "o", "\r\n"] +[28.860542774200656, "o", "$"] +[28.890542774200657, "o", " "] +[28.92054277420066, "o", "c"] +[28.95054277420066, "o", "u"] +[28.98054277420066, "o", "r"] +[29.010542774200662, "o", "l"] +[29.040542774200663, "o", " "] +[29.070542774200664, "o", "h"] +[29.100542774200665, "o", "t"] +[29.130542774200666, "o", "t"] +[29.160542774200668, "o", "p"] +[29.19054277420067, "o", ":"] +[29.22054277420067, "o", "/"] +[29.25054277420067, "o", "/"] +[29.280542774200672, "o", "l"] +[29.310542774200673, "o", "o"] +[29.340542774200674, "o", "c"] +[29.370542774200675, "o", "a"] +[29.400542774200677, "o", "l"] +[29.430542774200678, "o", "h"] +[29.46054277420068, "o", "o"] +[29.49054277420068, "o", "s"] +[29.52054277420068, "o", "t"] +[29.550542774200682, "o", ":"] +[29.580542774200683, "o", "8"] +[29.610542774200685, "o", "0"] +[29.640542774200686, "o", "8"] +[29.670542774200687, "o", "0"] +[29.700542774200688, "o", "/"] +[29.73054277420069, "o", " "] +[29.76054277420069, "o", "|"] +[29.79054277420069, "o", " "] +[29.820542774200693, "o", "c"] +[29.850542774200694, "o", "u"] +[29.880542774200695, "o", "t"] +[29.910542774200696, "o", " "] +[29.940542774200697, "o", "-"] +[29.9705427742007, "o", "c"] +[30.0005427742007, "o", " "] +[30.0305427742007, "o", "-"] +[30.0605427742007, "o", "7"] +[30.090542774200703, "o", "9"] +[30.120542774200704, "o", "3"] +[30.150542774200705, "o", "\r\n"] +[30.180542774200706, "o", "\u001b[0m"] +[30.210542774200707, "o", "\r\n"] +[30.86868987083462, "o", "Restarting splitgraph_example_postgrest_1 ... \r\r\n"] +[31.706775283813744, "o", "\u001b[1A\u001b[2K\rRestarting splitgraph_example_postgrest_1 ... \u001b[32mdone\u001b[0m\r"] +[31.70722255706814, "o", "\u001b[1B"] +[32.037521219253804, "o", "Checked out demo/weather:54169160eab7.\r\n"] +[32.046987152099874, "o", " "] +[32.04701719284084, "o", " "] +[32.04703602790859, "o", "%"] +[32.04705390930202, "o", " "] +[32.047071790695455, "o", "T"] +[32.047087764740255, "o", "o"] +[32.04710421562221, "o", "t"] +[32.04712162017849, "o", "a"] +[32.04713926315334, "o", "l"] +[32.047156906128194, "o", " "] +[32.04717574119594, "o", " "] +[32.04719266891506, "o", " "] +[32.047212219238546, "o", " "] +[32.04723033905056, "o", "%"] +[32.04724822044399, "o", " "] +[32.047265625000264, "o", "R"] +[32.04728326797512, "o", "e"] +[32.04730043411281, "o", "c"] +[32.047321176529195, "o", "e"] +[32.04734072685268, "o", "i"] +[32.0473941326144, "o", "ve"] +[32.04740200042751, "o", "d % Xferd Average"] +[32.04740676879909, "o", " Sp"] +[32.047411060333516, "o", "ee"] +[32.04741511344936, "o", "d "] +[32.04741988182094, "o", " "] +[32.04742417335537, "o", "Ti"] +[32.04742822647121, "o", "me"] +[32.047432279587056, "o", " "] +[32.04743609428432, "o", " "] +[32.04744014740017, "o", "Ti"] +[32.04744396209743, "o", "me"] +[32.047448253631856, "o", " "] +[32.0474523067477, "o", " "] +[32.04745612144497, "o", " "] +[32.04745993614223, "o", "Ti"] +[32.04746398925808, "o", "me"] +[32.04746780395534, "o", " "] +[32.04747185707119, "o", "Cu"] +[32.04747567176845, "o", "rr"] +[32.047480440140035, "o", "en"] +[32.0474842548373, "o", "t"] +[32.04749188423183, "o", "\r\n "] +[32.047495937347676, "o", " "] +[32.04749999046352, "o", " "] +[32.04750380516079, "o", " "] +[32.04750761985805, "o", " "] +[32.04751143455532, "o", " "] +[32.04751548767116, "o", " "] +[32.047520017624166, "o", " "] +[32.04752430915859, "o", " "] +[32.047528123855855, "o", " "] +[32.0475321769717, "o", " "] +[32.047536230087545, "o", " "] +[32.04754004478481, "o", " "] +[32.047543859482076, "o", " "] +[32.04754791259792, "o", " "] +[32.04755339622524, "o", " "] +[32.047557449341085, "o", " D"] +[32.04756126403835, "o", "lo"] +[32.04756579399135, "o", "ad"] +[32.047570323944356, "o", " "] +[32.0475743770602, "o", " U"] +[32.047578668594625, "o", "pl"] +[32.04758272171047, "o", "oa"] +[32.04759654998806, "o", "d "] +[32.0476006031039, "o", " Tot"] +[32.04760465621975, "o", "al"] +[32.04760847091701, "o", " "] +[32.047612762451436, "o", " S"] +[32.0476165771487, "o", "p"] +[32.04762039184597, "o", "en"] +[32.04762516021755, "o", "t "] +[32.047629213333394, "o", " "] +[32.04763517379787, "o", "Lef"] +[32.04763922691372, "o", "t "] +[32.04764304161098, "o", " S"] +[32.04764661788967, "o", "p"] +[32.04765067100551, "o", "ee"] +[32.04765615463283, "o", "d\r\n"] +[32.04766044616726, "o", "\r"] +[32.04766473770168, "o", " 0"] +[32.047668552398946, "o", " "] +[32.04767236709621, "o", " "] +[32.047676420212056, "o", " "] +[32.0476804733279, "o", "0 "] +[32.047684526443746, "o", " "] +[32.04768857955959, "o", " "] +[32.04769454002407, "o", "0 "] +[32.04769883155849, "o", " "] +[32.04770264625576, "o", "0 "] +[32.04770693779018, "o", " "] +[32.047711467743184, "o", " "] +[32.04771528244045, "o", "0 "] +[32.047719573974874, "o", " "] +[32.04772338867214, "o", " "] +[32.04772768020656, "o", "0 "] +[32.04773149490383, "o", " "] +[32.04773578643825, "o", " "] +[32.04773960113552, "o", " "] +[32.04774365425136, "o", "0 "] +[32.04774723053005, "o", " "] +[32.047751045227315, "o", " "] +[32.04775533676174, "o", " 0"] +[32.04775962829616, "o", " "] +[32.04776511192348, "o", "--"] +[32.047769403457906, "o", ":--"] +[32.04777393341091, "o", ":"] +[32.047777748108174, "o", "-- "] +[32.04778156280544, "o", "--"] +[32.047785615921285, "o", ":-"] +[32.04778966903713, "o", "-"] +[32.047793483734395, "o", ":-"] +[32.047801113128926, "o", "- "] +[32.04780540466335, "o", "--:"] +[32.047809457779195, "o", "--"] +[32.04781351089504, "o", ":-"] +[32.047817325592305, "o", "- "] +[32.04782137870815, "o", " "] +[32.047825670242574, "o", " 0"] +[32.07053694725063, "o", "\r100 12010 0 12010 0 0 509k 0 --:--:-- --:--:-- --:--:-- 509k\r\n"] +[32.071496105194356, "o", "{\"swagger\":\"2.0\",\"info\":{\"version\":\"7.0.1 (UNKNOWN)\",\"title\":\"PostgREST API\",\"description\":\"This is a dynamic API generated by PostgREST\"},\"host\":\"localhost:8080\",\"basePath\":\"/\",\"schemes\":[\"http\"],\"consumes\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"produces\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"paths\":{\"/\":{\"get\":{\"tags\":[\"Introspection\"],\"summary\":\"OpenAPI description (this document)\",\"produces\":[\"application/openapi+json\",\"application/json\"],\"res"] +[32.07150921821621, "o", "ponses\":{\"200\":{\"description\":\"OK\"}}}},\"/rdu\":{\"get\":{\"tags\":[\"rdu\"],\"parameters\":[{\"$ref\":\"#/parameters/rowFilter.rdu.date\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemin\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemax\"},{\"$ref\":\"#/parameters/rowFilter.rdu.precipitation\r\n"] +[32.10150921821621, "o", "\u001b[1m"] +[32.13150921821621, "o", "\u001b[36m"] +[32.16150921821621, "o", "\u001b[91m"] +[32.19150921821621, "o", "$"] +[32.22150921821621, "o", " "] +[32.25150921821621, "o", "\u001b[0m"] +[37.281509218216215, "o", "\u001b[H"] +[37.311509218216216, "o", "\u001b[J"] +[37.34150921821622, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get all rows in the table"] +[37.37150921821622, "o", "\r\n"] +[37.40150921821622, "o", "$"] +[37.43150921821622, "o", " "] +[37.46150921821622, "o", "c"] +[37.49150921821622, "o", "u"] +[37.521509218216224, "o", "r"] +[37.551509218216225, "o", "l"] +[37.581509218216226, "o", " "] +[37.61150921821623, "o", "h"] +[37.64150921821623, "o", "t"] +[37.67150921821623, "o", "t"] +[37.70150921821623, "o", "p"] +[37.73150921821623, "o", ":"] +[37.76150921821623, "o", "/"] +[37.791509218216234, "o", "/"] +[37.821509218216235, "o", "l"] +[37.851509218216236, "o", "o"] +[37.88150921821624, "o", "c"] +[37.91150921821624, "o", "a"] +[37.94150921821624, "o", "l"] +[37.97150921821624, "o", "h"] +[38.00150921821624, "o", "o"] +[38.03150921821624, "o", "s"] +[38.061509218216244, "o", "t"] +[38.091509218216245, "o", ":"] +[38.12150921821625, "o", "8"] +[38.15150921821625, "o", "0"] +[38.18150921821625, "o", "8"] +[38.21150921821625, "o", "0"] +[38.24150921821625, "o", "/"] +[38.27150921821625, "o", "r"] +[38.30150921821625, "o", "d"] +[38.331509218216254, "o", "u"] +[38.361509218216256, "o", " "] +[38.39150921821626, "o", "|"] +[38.42150921821626, "o", " "] +[38.45150921821626, "o", "w"] +[38.48150921821626, "o", "c"] +[38.51150921821626, "o", " "] +[38.54150921821626, "o", "-"] +[38.57150921821626, "o", "l"] +[38.601509218216265, "o", "\r\n"] +[38.631509218216266, "o", "\u001b[0m"] +[38.66150921821627, "o", "\r\n"] +[38.670011940002766, "o", " % Total % Received % Xferd Average Speed Ti"] +[38.67003458976778, "o", "me Time Time Current\r\n"] +[38.67004221916231, "o", " "] +[38.67026227951082, "o", " Dload Upload"] +[38.670274677276936, "o", " Tota"] +[38.6702842140201, "o", "l "] +[38.670288505554524, "o", " "] +[38.670314731598225, "o", " "] +[38.6703218841556, "o", "Spent "] +[38.67032879829439, "o", " "] +[38.67033523559603, "o", " "] +[38.670346202850666, "o", "L"] +[38.67035049438509, "o", "ef"] +[38.67038721084627, "o", "t"] +[38.67041462898287, "o", " "] +[38.67043775558504, "o", " "] +[38.6704599285129, "o", "S"] +[38.6704861545566, "o", "p"] +[38.67050999641451, "o", "e"] +[38.670532646179524, "o", "e"] +[38.67055481910738, "o", "d"] +[38.670580091476765, "o", "\r\n"] +[38.670654716492024, "o", "\r"] +[38.67067760467562, "o", " "] +[38.67072528839144, "o", " "] +[38.67075318336519, "o", "0"] +[38.67077583313021, "o", " "] +[38.6707987213138, "o", " "] +[38.67082113266024, "o", " "] +[38.67084354400667, "o", " "] +[38.67086571693453, "o", " "] +[38.670887889862385, "o", "0"] +[38.67091030120882, "o", " "] +[38.67093247413668, "o", " "] +[38.670954647064534, "o", " "] +[38.67097658157381, "o", " "] +[38.67103332519564, "o", "0 "] +[38.67104357719454, "o", " 0 0 "] +[38.67105406761202, "o", " "] +[38.67105835914644, "o", " "] +[38.67109602928194, "o", "0 "] +[38.671102705002156, "o", " "] +[38.67110914230379, "o", "0"] +[38.671115818024006, "o", " "] +[38.67112297058138, "o", " "] +[38.67113012313875, "o", " "] +[38.671137275696125, "o", " "] +[38.67114418983492, "o", " "] +[38.67115110397371, "o", " "] +[38.67115777969393, "o", "0"] +[38.67116469383272, "o", " "] +[38.6711751842502, "o", "-"] +[38.671179475784626, "o", "-:"] +[38.67120856285128, "o", "--:"] +[38.67121523857149, "o", "--"] +[38.67122167587313, "o", " "] +[38.671230258941975, "o", "-"] +[38.67124170303377, "o", "-:"] +[38.671246232986775, "o", "-"] +[38.67126935958895, "o", "-:"] +[38.67128175735506, "o", "--"] +[38.671285810470906, "o", " -"] +[38.67130917549166, "o", "-:"] +[38.67131561279329, "o", "--"] +[38.67132181167635, "o", ":"] +[38.67132967948946, "o", "-- "] +[38.671336593628254, "o", " "] +[38.67134350776705, "o", " "] +[38.67135185241732, "o", " "] +[38.67135614395174, "o", "0"] +[38.74212974548372, "o", "\r100 14480 0 14480 0 0 196k 0 --:--:-- --:--:-- --:--:-- 193k"] +[38.74708217620882, "o", "\r100 2292k 0 2292k 0 0 29.4M 0 --:--:-- --:--:-- --:--:-- 29.0M"] +[38.74709743499788, "o", "\r\n"] +[38.747497501373616, "o", "4632\r\n"] +[38.77749750137362, "o", "\u001b[1m"] +[38.80749750137362, "o", "\u001b[36m"] +[38.83749750137362, "o", "\u001b[91m"] +[38.86749750137362, "o", "$"] +[38.89749750137362, "o", " "] +[38.92749750137362, "o", "\u001b[0m"] +[43.95749750137362, "o", "\u001b[H"] +[43.987497501373625, "o", "\u001b[J"] +[44.017497501373626, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a query selecting one row"] +[44.04749750137363, "o", "\r\n"] +[44.07749750137363, "o", "$"] +[44.10749750137363, "o", " "] +[44.13749750137363, "o", "c"] +[44.16749750137363, "o", "u"] +[44.19749750137363, "o", "r"] +[44.227497501373634, "o", "l"] +[44.257497501373635, "o", " "] +[44.287497501373636, "o", "\""] +[44.31749750137364, "o", "h"] +[44.34749750137364, "o", "t"] +[44.37749750137364, "o", "t"] +[44.40749750137364, "o", "p"] +[44.43749750137364, "o", ":"] +[44.46749750137364, "o", "/"] +[44.497497501373644, "o", "/"] +[44.527497501373645, "o", "l"] +[44.557497501373646, "o", "o"] +[44.58749750137365, "o", "c"] +[44.61749750137365, "o", "a"] +[44.64749750137365, "o", "l"] +[44.67749750137365, "o", "h"] +[44.70749750137365, "o", "o"] +[44.73749750137365, "o", "s"] +[44.767497501373654, "o", "t"] +[44.797497501373655, "o", ":"] +[44.82749750137366, "o", "8"] +[44.85749750137366, "o", "0"] +[44.88749750137366, "o", "8"] +[44.91749750137366, "o", "0"] +[44.94749750137366, "o", "/"] +[44.97749750137366, "o", "r"] +[45.00749750137366, "o", "d"] +[45.037497501373664, "o", "u"] +[45.067497501373666, "o", "?"] +[45.09749750137367, "o", "d"] +[45.12749750137367, "o", "a"] +[45.15749750137367, "o", "t"] +[45.18749750137367, "o", "e"] +[45.21749750137367, "o", "="] +[45.24749750137367, "o", "e"] +[45.277497501373674, "o", "q"] +[45.307497501373675, "o", "."] +[45.337497501373676, "o", "2"] +[45.36749750137368, "o", "0"] +[45.39749750137368, "o", "1"] +[45.42749750137368, "o", "2"] +[45.45749750137368, "o", "-"] +[45.48749750137368, "o", "1"] +[45.51749750137368, "o", "2"] +[45.547497501373684, "o", "-"] +[45.577497501373685, "o", "2"] +[45.607497501373686, "o", "6"] +[45.63749750137369, "o", "&"] +[45.66749750137369, "o", "s"] +[45.69749750137369, "o", "e"] +[45.72749750137369, "o", "l"] +[45.75749750137369, "o", "e"] +[45.78749750137369, "o", "c"] +[45.817497501373694, "o", "t"] +[45.847497501373695, "o", "="] +[45.877497501373696, "o", "d"] +[45.9074975013737, "o", "a"] +[45.9374975013737, "o", "t"] +[45.9674975013737, "o", "e"] +[45.9974975013737, "o", ","] +[46.0274975013737, "o", "t"] +[46.0574975013737, "o", "e"] +[46.087497501373704, "o", "m"] +[46.117497501373705, "o", "p"] +[46.14749750137371, "o", "e"] +[46.17749750137371, "o", "r"] +[46.20749750137371, "o", "a"] +[46.23749750137371, "o", "t"] +[46.26749750137371, "o", "u"] +[46.29749750137371, "o", "r"] +[46.32749750137371, "o", "e"] +[46.357497501373714, "o", "m"] +[46.387497501373716, "o", "i"] +[46.41749750137372, "o", "n"] +[46.44749750137372, "o", ","] +[46.47749750137372, "o", "t"] +[46.50749750137372, "o", "e"] +[46.53749750137372, "o", "m"] +[46.56749750137372, "o", "p"] +[46.597497501373724, "o", "e"] +[46.627497501373725, "o", "r"] +[46.657497501373726, "o", "a"] +[46.68749750137373, "o", "t"] +[46.71749750137373, "o", "u"] +[46.74749750137373, "o", "r"] +[46.77749750137373, "o", "e"] +[46.80749750137373, "o", "m"] +[46.83749750137373, "o", "a"] +[46.867497501373734, "o", "x"] +[46.897497501373735, "o", ","] +[46.927497501373736, "o", "p"] +[46.95749750137374, "o", "r"] +[46.98749750137374, "o", "e"] +[47.01749750137374, "o", "c"] +[47.04749750137374, "o", "i"] +[47.07749750137374, "o", "p"] +[47.10749750137374, "o", "i"] +[47.137497501373744, "o", "t"] +[47.167497501373745, "o", "a"] +[47.197497501373746, "o", "t"] +[47.22749750137375, "o", "i"] +[47.25749750137375, "o", "o"] +[47.28749750137375, "o", "n"] +[47.31749750137375, "o", "\""] +[47.34749750137375, "o", "\r\n"] +[47.37749750137375, "o", "\u001b[0m"] +[47.407497501373754, "o", "\r\n"] +[47.422145700455175, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.41}]"] +[47.452145700455176, "o", "\u001b[1m"] +[47.48214570045518, "o", "\u001b[36m"] +[47.51214570045518, "o", "\u001b[91m"] +[47.54214570045518, "o", "$"] +[47.57214570045518, "o", " "] +[47.60214570045518, "o", "\u001b[0m"] +[52.63214570045518, "o", "\u001b[H"] +[52.662145700455184, "o", "\u001b[J"] +[52.692145700455185, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run the query against the new version of the dataset."] +[52.72214570045519, "o", "\r\n"] +[52.75214570045519, "o", "$ # This time, use layered querying that queries fragments directly without checkout,\r\n"] +[52.78214570045519, "o", "$ # downloading them if they're not local. This is seamless to PostgREST or any other application.\r\n"] +[52.81214570045519, "o", "$"] +[52.84214570045519, "o", " "] +[52.87214570045519, "o", "s"] +[52.90214570045519, "o", "g"] +[52.932145700455195, "o", "r"] +[52.962145700455196, "o", " "] +[52.9921457004552, "o", "c"] +[53.0221457004552, "o", "h"] +[53.0521457004552, "o", "e"] +[53.0821457004552, "o", "c"] +[53.1121457004552, "o", "k"] +[53.1421457004552, "o", "o"] +[53.172145700455204, "o", "u"] +[53.202145700455205, "o", "t"] +[53.232145700455206, "o", " "] +[53.26214570045521, "o", "-"] +[53.29214570045521, "o", "-"] +[53.32214570045521, "o", "l"] +[53.35214570045521, "o", "a"] +[53.38214570045521, "o", "y"] +[53.41214570045521, "o", "e"] +[53.442145700455214, "o", "r"] +[53.472145700455215, "o", "e"] +[53.502145700455216, "o", "d"] +[53.53214570045522, "o", " "] +[53.56214570045522, "o", "d"] +[53.59214570045522, "o", "e"] +[53.62214570045522, "o", "m"] +[53.65214570045522, "o", "o"] +[53.68214570045522, "o", "/"] +[53.712145700455224, "o", "w"] +[53.742145700455225, "o", "e"] +[53.772145700455226, "o", "a"] +[53.80214570045523, "o", "t"] +[53.83214570045523, "o", "h"] +[53.86214570045523, "o", "e"] +[53.89214570045523, "o", "r"] +[53.92214570045523, "o", ":"] +[53.95214570045523, "o", "r"] +[53.982145700455234, "o", "e"] +[54.012145700455235, "o", "v"] +[54.04214570045524, "o", "i"] +[54.07214570045524, "o", "s"] +[54.10214570045524, "o", "e"] +[54.13214570045524, "o", "d"] +[54.16214570045524, "o", "_"] +[54.19214570045524, "o", "d"] +[54.22214570045524, "o", "a"] +[54.252145700455245, "o", "t"] +[54.282145700455246, "o", "a"] +[54.31214570045525, "o", "\r\n"] +[54.34214570045525, "o", "$"] +[54.37214570045525, "o", " "] +[54.40214570045525, "o", "c"] +[54.43214570045525, "o", "u"] +[54.46214570045525, "o", "r"] +[54.492145700455254, "o", "l"] +[54.522145700455255, "o", " "] +[54.552145700455256, "o", "\""] +[54.58214570045526, "o", "h"] +[54.61214570045526, "o", "t"] +[54.64214570045526, "o", "t"] +[54.67214570045526, "o", "p"] +[54.70214570045526, "o", ":"] +[54.73214570045526, "o", "/"] +[54.762145700455264, "o", "/"] +[54.792145700455265, "o", "l"] +[54.822145700455266, "o", "o"] +[54.85214570045527, "o", "c"] +[54.88214570045527, "o", "a"] +[54.91214570045527, "o", "l"] +[54.94214570045527, "o", "h"] +[54.97214570045527, "o", "o"] +[55.00214570045527, "o", "s"] +[55.032145700455274, "o", "t"] +[55.062145700455275, "o", ":"] +[55.092145700455276, "o", "8"] +[55.12214570045528, "o", "0"] +[55.15214570045528, "o", "8"] +[55.18214570045528, "o", "0"] +[55.21214570045528, "o", "/"] +[55.24214570045528, "o", "r"] +[55.27214570045528, "o", "d"] +[55.302145700455284, "o", "u"] +[55.332145700455285, "o", "?"] +[55.36214570045529, "o", "d"] +[55.39214570045529, "o", "a"] +[55.42214570045529, "o", "t"] +[55.45214570045529, "o", "e"] +[55.48214570045529, "o", "="] +[55.51214570045529, "o", "e"] +[55.54214570045529, "o", "q"] +[55.572145700455295, "o", "."] +[55.602145700455296, "o", "2"] +[55.6321457004553, "o", "0"] +[55.6621457004553, "o", "1"] +[55.6921457004553, "o", "2"] +[55.7221457004553, "o", "-"] +[55.7521457004553, "o", "1"] +[55.7821457004553, "o", "2"] +[55.812145700455304, "o", "-"] +[55.842145700455305, "o", "2"] +[55.872145700455306, "o", "6"] +[55.90214570045531, "o", "&"] +[55.93214570045531, "o", "s"] +[55.96214570045531, "o", "e"] +[55.99214570045531, "o", "l"] +[56.02214570045531, "o", "e"] +[56.05214570045531, "o", "c"] +[56.082145700455314, "o", "t"] +[56.112145700455315, "o", "="] +[56.142145700455316, "o", "d"] +[56.17214570045532, "o", "a"] +[56.20214570045532, "o", "t"] +[56.23214570045532, "o", "e"] +[56.26214570045532, "o", ","] +[56.29214570045532, "o", "t"] +[56.32214570045532, "o", "e"] +[56.352145700455324, "o", "m"] +[56.382145700455325, "o", "p"] +[56.412145700455326, "o", "e"] +[56.44214570045533, "o", "r"] +[56.47214570045533, "o", "a"] +[56.50214570045533, "o", "t"] +[56.53214570045533, "o", "u"] +[56.56214570045533, "o", "r"] +[56.59214570045533, "o", "e"] +[56.622145700455334, "o", "m"] +[56.652145700455335, "o", "i"] +[56.68214570045534, "o", "n"] +[56.71214570045534, "o", ","] +[56.74214570045534, "o", "t"] +[56.77214570045534, "o", "e"] +[56.80214570045534, "o", "m"] +[56.83214570045534, "o", "p"] +[56.86214570045534, "o", "e"] +[56.892145700455345, "o", "r"] +[56.922145700455346, "o", "a"] +[56.95214570045535, "o", "t"] +[56.98214570045535, "o", "u"] +[57.01214570045535, "o", "r"] +[57.04214570045535, "o", "e"] +[57.07214570045535, "o", "m"] +[57.10214570045535, "o", "a"] +[57.132145700455354, "o", "x"] +[57.162145700455355, "o", ","] +[57.192145700455356, "o", "p"] +[57.22214570045536, "o", "r"] +[57.25214570045536, "o", "e"] +[57.28214570045536, "o", "c"] +[57.31214570045536, "o", "i"] +[57.34214570045536, "o", "p"] +[57.37214570045536, "o", "i"] +[57.402145700455364, "o", "t"] +[57.432145700455365, "o", "a"] +[57.462145700455366, "o", "t"] +[57.49214570045537, "o", "i"] +[57.52214570045537, "o", "o"] +[57.55214570045537, "o", "n"] +[57.58214570045537, "o", "\""] +[57.61214570045537, "o", "\r\n"] +[57.64214570045537, "o", "\u001b[0m"] +[57.672145700455374, "o", "\r\n"] +[58.13004264831609, "o", "Checked out demo/weather:80d04752feac.\r\n"] +[58.4956100940711, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.692}]"] +[58.5256100940711, "o", "\u001b[1m"] +[58.5556100940711, "o", "\u001b[36m"] +[58.5856100940711, "o", "\u001b[91m"] +[58.6156100940711, "o", "$"] +[58.6456100940711, "o", " "] +[58.675610094071104, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.12/push-to-other-engine.cast b/content/casts/versioned/archive/v0.2.12/push-to-other-engine.cast new file mode 100644 index 00000000..93d3cd06 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.12/push-to-other-engine.cast @@ -0,0 +1,893 @@ +{"version": 2, "width": 100, "height": 26, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1617810598, "metadata": {"tss": [{"h": "The .sgconfig file is written from the point of view of the first engine.", "ts": 0.06}, {"h": "Initialize the two engines", "ts": 9.559999999999999}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 22.060000000000002}, {"h": "Push the dataset out to the other engine", "ts": 34.82962241172817}, {"h": "Check that the dataset exists on the remote engine", "ts": 42.962402648926144}, {"h": "Update the dataset on the local engine", "ts": 50.02087467193647}, {"h": "Inspect our changes", "ts": 61.35239300727909}, {"h": "Push the changes out to the remote engine", "ts": 69.09241017341685}, {"h": "Inspect the dataset on the remote engine", "ts": 76.15231229782182}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The .sgconfig file is written from the point of view of the first engine."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Here, the first engine is local and default and the second one is remote.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "c"] +[0.27, "o", "a"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "."] +[0.3900000000000001, "o", "s"] +[0.42000000000000015, "o", "g"] +[0.4500000000000002, "o", "c"] +[0.4800000000000002, "o", "o"] +[0.5100000000000002, "o", "n"] +[0.5400000000000003, "o", "f"] +[0.5700000000000003, "o", "i"] +[0.6000000000000003, "o", "g"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "\u001b[0m"] +[0.6900000000000004, "o", "\r\n"] +[0.6927258396148686, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[remote: engine_2]\r\nSG_ENGINE_ADMIN_USER=sgr\r\nSG_ENGINE_ADMIN_PWD=supersecure\r\nSG_ENGINE_POSTGRES_DB_NAME=splitgraph\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\nSG_ENGINE_DB_NAME=splitgraph"] +[0.7227258396148686, "o", "\u001b[1m"] +[0.7527258396148686, "o", "\u001b[36m"] +[0.7827258396148686, "o", "\u001b[91m"] +[0.8127258396148687, "o", "$"] +[0.8427258396148687, "o", " "] +[0.8727258396148687, "o", "\u001b[0m"] +[9.53, "o", "\u001b[H"] +[9.559999999999999, "o", "\u001b[J"] +[9.589999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the two engines"] +[9.619999999999997, "o", "\r\n"] +[9.649999999999997, "o", "$"] +[9.679999999999996, "o", " "] +[9.709999999999996, "o", "s"] +[9.739999999999995, "o", "g"] +[9.769999999999994, "o", "r"] +[9.799999999999994, "o", " "] +[9.829999999999993, "o", "i"] +[9.859999999999992, "o", "n"] +[9.889999999999992, "o", "i"] +[9.919999999999991, "o", "t"] +[9.94999999999999, "o", "\r\n"] +[9.97999999999999, "o", "$"] +[10.00999999999999, "o", " "] +[10.039999999999988, "o", "S"] +[10.069999999999988, "o", "G"] +[10.099999999999987, "o", "_"] +[10.129999999999987, "o", "E"] +[10.159999999999986, "o", "N"] +[10.189999999999985, "o", "G"] +[10.219999999999985, "o", "I"] +[10.249999999999984, "o", "N"] +[10.279999999999983, "o", "E"] +[10.309999999999983, "o", "="] +[10.339999999999982, "o", "e"] +[10.369999999999981, "o", "n"] +[10.39999999999998, "o", "g"] +[10.42999999999998, "o", "i"] +[10.45999999999998, "o", "n"] +[10.489999999999979, "o", "e"] +[10.519999999999978, "o", "_"] +[10.549999999999978, "o", "2"] +[10.579999999999977, "o", " "] +[10.609999999999976, "o", "s"] +[10.639999999999976, "o", "g"] +[10.669999999999975, "o", "r"] +[10.699999999999974, "o", " "] +[10.729999999999974, "o", "i"] +[10.759999999999973, "o", "n"] +[10.789999999999973, "o", "i"] +[10.819999999999972, "o", "t"] +[10.849999999999971, "o", "\r\n"] +[10.87999999999997, "o", "\u001b[0m"] +[10.90999999999997, "o", "\r\n"] +[11.089574012756318, "o", "Initializing engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph)...\r\n"] +[11.091058406829804, "o", "Waiting for connection....\r\n"] +[12.091058406829804, "o", "Database splitgraph already exists, skipping\r\n"] +[12.091403875350922, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[12.101705226898163, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.136439952850312, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.138423595428437, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.159682188034028, "o", "Installing Splitgraph API functions...\r\n"] +[12.197524461746186, "o", "Installing CStore management functions...\r\n"] +[12.200769815444916, "o", "Installing the audit trigger...\r\n"] +[12.215428504943818, "o", "Engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph) initialized.\r\n"] +[12.402840051650971, "o", "Initializing engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph)...\r\n"] +[12.41113296508786, "o", "Database splitgraph already exists, skipping\r\n"] +[12.41122880935666, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[12.418264303207367, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.445319805145234, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.44661298751828, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.465779933929413, "o", "Installing Splitgraph API functions...\r\n"] +[12.503274593353241, "o", "Installing CStore management functions...\r\n"] +[12.507003698348969, "o", "Installing the audit trigger...\r\n"] +[12.519639406204194, "o", "Engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph) initialized.\r\n"] +[12.549639406204193, "o", "\u001b[1m"] +[12.579639406204192, "o", "\u001b[36m"] +[12.609639406204192, "o", "\u001b[91m"] +[12.639639406204191, "o", "$"] +[12.66963940620419, "o", " "] +[12.69963940620419, "o", "\u001b[0m"] +[22.03, "o", "\u001b[H"] +[22.060000000000002, "o", "\u001b[J"] +[22.090000000000003, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[22.120000000000005, "o", "\r\n"] +[22.150000000000006, "o", "$"] +[22.180000000000007, "o", " "] +[22.210000000000008, "o", "s"] +[22.24000000000001, "o", "g"] +[22.27000000000001, "o", "r"] +[22.30000000000001, "o", " "] +[22.330000000000013, "o", "i"] +[22.360000000000014, "o", "n"] +[22.390000000000015, "o", "i"] +[22.420000000000016, "o", "t"] +[22.450000000000017, "o", " "] +[22.480000000000018, "o", "d"] +[22.51000000000002, "o", "e"] +[22.54000000000002, "o", "m"] +[22.57000000000002, "o", "o"] +[22.600000000000023, "o", "/"] +[22.630000000000024, "o", "w"] +[22.660000000000025, "o", "e"] +[22.690000000000026, "o", "a"] +[22.720000000000027, "o", "t"] +[22.75000000000003, "o", "h"] +[22.78000000000003, "o", "e"] +[22.81000000000003, "o", "r"] +[22.840000000000032, "o", "\r\n"] +[22.870000000000033, "o", "$"] +[22.900000000000034, "o", " "] +[22.930000000000035, "o", "s"] +[22.960000000000036, "o", "g"] +[22.990000000000038, "o", "r"] +[23.02000000000004, "o", " "] +[23.05000000000004, "o", "c"] +[23.08000000000004, "o", "s"] +[23.110000000000042, "o", "v"] +[23.140000000000043, "o", " "] +[23.170000000000044, "o", "i"] +[23.200000000000045, "o", "m"] +[23.230000000000047, "o", "p"] +[23.260000000000048, "o", "o"] +[23.29000000000005, "o", "r"] +[23.32000000000005, "o", "t"] +[23.35000000000005, "o", " "] +[23.380000000000052, "o", "-"] +[23.410000000000053, "o", "f"] +[23.440000000000055, "o", " "] +[23.470000000000056, "o", "."] +[23.500000000000057, "o", "."] +[23.530000000000058, "o", "/"] +[23.56000000000006, "o", "i"] +[23.59000000000006, "o", "m"] +[23.62000000000006, "o", "p"] +[23.650000000000063, "o", "o"] +[23.680000000000064, "o", "r"] +[23.710000000000065, "o", "t"] +[23.740000000000066, "o", "-"] +[23.770000000000067, "o", "f"] +[23.800000000000068, "o", "r"] +[23.83000000000007, "o", "o"] +[23.86000000000007, "o", "m"] +[23.89000000000007, "o", "-"] +[23.920000000000073, "o", "c"] +[23.950000000000074, "o", "s"] +[23.980000000000075, "o", "v"] +[24.010000000000076, "o", "/"] +[24.040000000000077, "o", "r"] +[24.07000000000008, "o", "d"] +[24.10000000000008, "o", "u"] +[24.13000000000008, "o", "-"] +[24.160000000000082, "o", "w"] +[24.190000000000083, "o", "e"] +[24.220000000000084, "o", "a"] +[24.250000000000085, "o", "t"] +[24.280000000000086, "o", "h"] +[24.310000000000088, "o", "e"] +[24.34000000000009, "o", "r"] +[24.37000000000009, "o", "-"] +[24.40000000000009, "o", "h"] +[24.430000000000092, "o", "i"] +[24.460000000000093, "o", "s"] +[24.490000000000094, "o", "t"] +[24.520000000000095, "o", "o"] +[24.550000000000097, "o", "r"] +[24.580000000000098, "o", "y"] +[24.6100000000001, "o", "."] +[24.6400000000001, "o", "c"] +[24.6700000000001, "o", "s"] +[24.700000000000102, "o", "v"] +[24.730000000000103, "o", " "] +[24.760000000000105, "o", "\\"] +[24.790000000000106, "o", "\r\n "] +[24.820000000000107, "o", "-"] +[24.850000000000108, "o", "k"] +[24.88000000000011, "o", " "] +[24.91000000000011, "o", "d"] +[24.94000000000011, "o", "a"] +[24.970000000000113, "o", "t"] +[25.000000000000114, "o", "e"] +[25.030000000000115, "o", " "] +[25.060000000000116, "o", "\\"] +[25.090000000000117, "o", "\r\n "] +[25.12000000000012, "o", "-"] +[25.15000000000012, "o", "t"] +[25.18000000000012, "o", " "] +[25.21000000000012, "o", "d"] +[25.240000000000123, "o", "a"] +[25.270000000000124, "o", "t"] +[25.300000000000125, "o", "e"] +[25.330000000000126, "o", " "] +[25.360000000000127, "o", "t"] +[25.39000000000013, "o", "i"] +[25.42000000000013, "o", "m"] +[25.45000000000013, "o", "e"] +[25.480000000000132, "o", "s"] +[25.510000000000133, "o", "t"] +[25.540000000000134, "o", "a"] +[25.570000000000135, "o", "m"] +[25.600000000000136, "o", "p"] +[25.630000000000138, "o", " "] +[25.66000000000014, "o", "\\"] +[25.69000000000014, "o", "\r\n "] +[25.72000000000014, "o", "-"] +[25.750000000000142, "o", "-"] +[25.780000000000143, "o", "s"] +[25.810000000000144, "o", "e"] +[25.840000000000146, "o", "p"] +[25.870000000000147, "o", "a"] +[25.900000000000148, "o", "r"] +[25.93000000000015, "o", "a"] +[25.96000000000015, "o", "t"] +[25.99000000000015, "o", "o"] +[26.020000000000152, "o", "r"] +[26.050000000000153, "o", " "] +[26.080000000000155, "o", "\""] +[26.110000000000156, "o", ";"] +[26.140000000000157, "o", "\""] +[26.170000000000158, "o", " "] +[26.20000000000016, "o", "\\"] +[26.23000000000016, "o", "\r\n "] +[26.26000000000016, "o", "d"] +[26.290000000000163, "o", "e"] +[26.320000000000164, "o", "m"] +[26.350000000000165, "o", "o"] +[26.380000000000166, "o", "/"] +[26.410000000000167, "o", "w"] +[26.44000000000017, "o", "e"] +[26.47000000000017, "o", "a"] +[26.50000000000017, "o", "t"] +[26.53000000000017, "o", "h"] +[26.560000000000173, "o", "e"] +[26.590000000000174, "o", "r"] +[26.620000000000175, "o", " "] +[26.650000000000176, "o", "r"] +[26.680000000000177, "o", "d"] +[26.71000000000018, "o", "u"] +[26.74000000000018, "o", "\r\n"] +[26.77000000000018, "o", "$"] +[26.800000000000182, "o", " "] +[26.830000000000183, "o", "s"] +[26.860000000000184, "o", "g"] +[26.890000000000185, "o", "r"] +[26.920000000000186, "o", " "] +[26.950000000000188, "o", "c"] +[26.98000000000019, "o", "o"] +[27.01000000000019, "o", "m"] +[27.04000000000019, "o", "m"] +[27.070000000000192, "o", "i"] +[27.100000000000193, "o", "t"] +[27.130000000000194, "o", " "] +[27.160000000000196, "o", "d"] +[27.190000000000197, "o", "e"] +[27.220000000000198, "o", "m"] +[27.2500000000002, "o", "o"] +[27.2800000000002, "o", "/"] +[27.3100000000002, "o", "w"] +[27.340000000000202, "o", "e"] +[27.370000000000203, "o", "a"] +[27.400000000000205, "o", "t"] +[27.430000000000206, "o", "h"] +[27.460000000000207, "o", "e"] +[27.490000000000208, "o", "r"] +[27.52000000000021, "o", "\r\n"] +[27.55000000000021, "o", "$"] +[27.58000000000021, "o", " "] +[27.610000000000213, "o", "s"] +[27.640000000000214, "o", "g"] +[27.670000000000215, "o", "r"] +[27.700000000000216, "o", " "] +[27.730000000000217, "o", "t"] +[27.76000000000022, "o", "a"] +[27.79000000000022, "o", "g"] +[27.82000000000022, "o", " "] +[27.85000000000022, "o", "d"] +[27.880000000000223, "o", "e"] +[27.910000000000224, "o", "m"] +[27.940000000000225, "o", "o"] +[27.970000000000226, "o", "/"] +[28.000000000000227, "o", "w"] +[28.03000000000023, "o", "e"] +[28.06000000000023, "o", "a"] +[28.09000000000023, "o", "t"] +[28.120000000000232, "o", "h"] +[28.150000000000233, "o", "e"] +[28.180000000000234, "o", "r"] +[28.210000000000235, "o", " "] +[28.240000000000236, "o", "i"] +[28.270000000000238, "o", "n"] +[28.30000000000024, "o", "i"] +[28.33000000000024, "o", "t"] +[28.36000000000024, "o", "i"] +[28.390000000000242, "o", "a"] +[28.420000000000243, "o", "l"] +[28.450000000000244, "o", "_"] +[28.480000000000246, "o", "d"] +[28.510000000000247, "o", "a"] +[28.540000000000248, "o", "t"] +[28.57000000000025, "o", "a"] +[28.60000000000025, "o", "\r\n"] +[28.63000000000025, "o", "\u001b[0m"] +[28.660000000000252, "o", "\r\n"] +[28.90406170845057, "o", "Initialized empty repository demo/weather\r\n"] +[29.127059612274422, "o", "Committing demo/weather...\r\n"] +[29.153591070175423, "o", "Processing table rdu\r\n"] +[29.371084604263558, "o", "Committed demo/weather as b4d58e32c340.\r\n"] +[29.589622411728158, "o", "Tagged demo/weather:b4d58e32c3400f34a961dab8de106350bb9be6e0e994b6be5fac2839ecc0da46 with initial_data.\r\n"] +[29.61962241172816, "o", "\u001b[1m"] +[29.64962241172816, "o", "\u001b[36m"] +[29.67962241172816, "o", "\u001b[91m"] +[29.709622411728162, "o", "$"] +[29.739622411728163, "o", " "] +[29.769622411728164, "o", "\u001b[0m"] +[34.799622411728166, "o", "\u001b[H"] +[34.82962241172817, "o", "\u001b[J"] +[34.85962241172817, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset out to the other engine"] +[34.88962241172817, "o", "\r\n"] +[34.91962241172817, "o", "$ # Since by default Splitgraph is configured to use S3 for uploading, we need\r\n"] +[34.94962241172817, "o", "$ # to override the upload handler and upload data to the actual database.\r\n"] +[34.97962241172817, "o", "$"] +[35.009622411728174, "o", " "] +[35.039622411728175, "o", "s"] +[35.069622411728176, "o", "g"] +[35.09962241172818, "o", "r"] +[35.12962241172818, "o", " "] +[35.15962241172818, "o", "p"] +[35.18962241172818, "o", "u"] +[35.21962241172818, "o", "s"] +[35.24962241172818, "o", "h"] +[35.279622411728184, "o", " "] +[35.309622411728185, "o", "d"] +[35.339622411728186, "o", "e"] +[35.36962241172819, "o", "m"] +[35.39962241172819, "o", "o"] +[35.42962241172819, "o", "/"] +[35.45962241172819, "o", "w"] +[35.48962241172819, "o", "e"] +[35.51962241172819, "o", "a"] +[35.549622411728194, "o", "t"] +[35.579622411728195, "o", "h"] +[35.609622411728196, "o", "e"] +[35.6396224117282, "o", "r"] +[35.6696224117282, "o", " "] +[35.6996224117282, "o", "-"] +[35.7296224117282, "o", "-"] +[35.7596224117282, "o", "r"] +[35.7896224117282, "o", "e"] +[35.819622411728204, "o", "m"] +[35.849622411728205, "o", "o"] +[35.87962241172821, "o", "t"] +[35.90962241172821, "o", "e"] +[35.93962241172821, "o", " "] +[35.96962241172821, "o", "e"] +[35.99962241172821, "o", "n"] +[36.02962241172821, "o", "g"] +[36.05962241172821, "o", "i"] +[36.089622411728215, "o", "n"] +[36.119622411728216, "o", "e"] +[36.14962241172822, "o", "_"] +[36.17962241172822, "o", "2"] +[36.20962241172822, "o", " "] +[36.23962241172822, "o", "d"] +[36.26962241172822, "o", "e"] +[36.29962241172822, "o", "m"] +[36.329622411728224, "o", "o"] +[36.359622411728225, "o", "/"] +[36.389622411728226, "o", "w"] +[36.41962241172823, "o", "e"] +[36.44962241172823, "o", "a"] +[36.47962241172823, "o", "t"] +[36.50962241172823, "o", "h"] +[36.53962241172823, "o", "e"] +[36.56962241172823, "o", "r"] +[36.599622411728234, "o", " "] +[36.629622411728235, "o", "-"] +[36.659622411728236, "o", "-"] +[36.68962241172824, "o", "u"] +[36.71962241172824, "o", "p"] +[36.74962241172824, "o", "l"] +[36.77962241172824, "o", "o"] +[36.80962241172824, "o", "a"] +[36.83962241172824, "o", "d"] +[36.869622411728244, "o", "-"] +[36.899622411728245, "o", "h"] +[36.929622411728246, "o", "a"] +[36.95962241172825, "o", "n"] +[36.98962241172825, "o", "d"] +[37.01962241172825, "o", "l"] +[37.04962241172825, "o", "e"] +[37.07962241172825, "o", "r"] +[37.10962241172825, "o", " "] +[37.139622411728254, "o", "D"] +[37.169622411728255, "o", "B"] +[37.19962241172826, "o", "\r\n"] +[37.22962241172826, "o", "\u001b[0m"] +[37.25962241172826, "o", "\r\n"] +[37.43818696022069, "o", "Pushing demo/weather to demo/weather on remote engine_2\r\n"] +[37.43832452774083, "o", "Gathering remote metadata...\r\n"] +[37.50333102226293, "o", "Uploading 1 object, total size 109.61 KiB\r\n"] +[37.510669307709094, "o", "\r 0%| | 0/1 [00:00 80ed233b3ab6\r\n"] +[24.308923683166633, "o", "\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[24.315363368988166, "o", "Executing SQL...\r\n"] +[24.526291332245002, "o", "Committing demo/summary...\r\n"] +[24.556333026886115, "o", "Processing table monthly_summary\r\n"] +[24.64615698814405, "o", " ---> e7e7753aa356\r\n"] +[24.649206600189338, "o", "Successfully built demo/summary:e7e7753aa356.\r\n"] +[24.882372579574714, "o", "Tagged demo/summary:e7e7753aa3566967ab701e603f4f0a1f34cf2fe77c7f4536bb28883dd951f1e5 with based_on_initial.\r\n"] +[24.912372579574715, "o", "\u001b[1m"] +[24.942372579574716, "o", "\u001b[36m"] +[24.972372579574717, "o", "\u001b[91m"] +[25.00237257957472, "o", "$"] +[25.03237257957472, "o", " "] +[25.06237257957472, "o", "\u001b[0m"] +[30.09237257957472, "o", "\u001b[H"] +[30.122372579574723, "o", "\u001b[J"] +[30.152372579574724, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Much like with Docker, the build result is cached, so running build again checks out the existing image."] +[30.182372579574725, "o", "\r\n"] +[30.212372579574726, "o", "$"] +[30.242372579574727, "o", " "] +[30.27237257957473, "o", "s"] +[30.30237257957473, "o", "g"] +[30.33237257957473, "o", "r"] +[30.362372579574732, "o", " "] +[30.392372579574733, "o", "b"] +[30.422372579574734, "o", "u"] +[30.452372579574735, "o", "i"] +[30.482372579574736, "o", "l"] +[30.512372579574738, "o", "d"] +[30.54237257957474, "o", " "] +[30.57237257957474, "o", "r"] +[30.60237257957474, "o", "d"] +[30.632372579574742, "o", "u"] +[30.662372579574743, "o", "-"] +[30.692372579574744, "o", "w"] +[30.722372579574746, "o", "e"] +[30.752372579574747, "o", "a"] +[30.782372579574748, "o", "t"] +[30.81237257957475, "o", "h"] +[30.84237257957475, "o", "e"] +[30.87237257957475, "o", "r"] +[30.902372579574752, "o", "-"] +[30.932372579574754, "o", "s"] +[30.962372579574755, "o", "u"] +[30.992372579574756, "o", "m"] +[31.022372579574757, "o", "m"] +[31.052372579574758, "o", "a"] +[31.08237257957476, "o", "r"] +[31.11237257957476, "o", "y"] +[31.14237257957476, "o", "."] +[31.172372579574763, "o", "s"] +[31.202372579574764, "o", "p"] +[31.232372579574765, "o", "l"] +[31.262372579574766, "o", "i"] +[31.292372579574767, "o", "t"] +[31.32237257957477, "o", "f"] +[31.35237257957477, "o", "i"] +[31.38237257957477, "o", "l"] +[31.41237257957477, "o", "e"] +[31.442372579574773, "o", " "] +[31.472372579574774, "o", "-"] +[31.502372579574775, "o", "o"] +[31.532372579574776, "o", " "] +[31.562372579574777, "o", "d"] +[31.59237257957478, "o", "e"] +[31.62237257957478, "o", "m"] +[31.65237257957478, "o", "o"] +[31.682372579574782, "o", "/"] +[31.712372579574783, "o", "s"] +[31.742372579574784, "o", "u"] +[31.772372579574785, "o", "m"] +[31.802372579574786, "o", "m"] +[31.832372579574788, "o", "a"] +[31.86237257957479, "o", "r"] +[31.89237257957479, "o", "y"] +[31.92237257957479, "o", "\r\n"] +[31.952372579574792, "o", "\u001b[0m"] +[31.982372579574793, "o", "\r\n"] +[32.189862546920985, "o", "Executing Splitfile rdu-weather-summary.splitfile with arguments {}\r\n"] +[32.27230411529562, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather IMPORT rdu AS source_data\u001b[0m\r\n"] +[32.27356463432333, "o", "Resolving repository demo/weather\r\n"] +[32.40604287147543, "o", " ---> Using cache\r\n"] +[32.40610414505026, "o", " ---> 80ed233b3ab6\r\n\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[32.634976205826014, "o", " ---> Using cache\r\n"] +[32.635323820114344, "o", " ---> e7e7753aa356\r\n"] +[32.63820630073568, "o", "Successfully built demo/summary:e7e7753aa356.\r\n"] +[32.66820630073568, "o", "\u001b[1m"] +[32.698206300735684, "o", "\u001b[36m"] +[32.728206300735685, "o", "\u001b[91m"] +[32.75820630073569, "o", "$"] +[32.78820630073569, "o", " "] +[32.81820630073569, "o", "\u001b[0m"] +[37.84820630073569, "o", "\u001b[H"] +[37.87820630073569, "o", "\u001b[J"] +[37.90820630073569, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the new dataset"] +[37.93820630073569, "o", "\r\n"] +[37.968206300735694, "o", "$"] +[37.998206300735696, "o", " "] +[38.0282063007357, "o", "s"] +[38.0582063007357, "o", "g"] +[38.0882063007357, "o", "r"] +[38.1182063007357, "o", " "] +[38.1482063007357, "o", "s"] +[38.1782063007357, "o", "h"] +[38.208206300735704, "o", "o"] +[38.238206300735705, "o", "w"] +[38.268206300735706, "o", " "] +[38.29820630073571, "o", "d"] +[38.32820630073571, "o", "e"] +[38.35820630073571, "o", "m"] +[38.38820630073571, "o", "o"] +[38.41820630073571, "o", "/"] +[38.44820630073571, "o", "s"] +[38.478206300735714, "o", "u"] +[38.508206300735715, "o", "m"] +[38.538206300735716, "o", "m"] +[38.56820630073572, "o", "a"] +[38.59820630073572, "o", "r"] +[38.62820630073572, "o", "y"] +[38.65820630073572, "o", ":"] +[38.68820630073572, "o", "b"] +[38.71820630073572, "o", "a"] +[38.748206300735724, "o", "s"] +[38.778206300735725, "o", "e"] +[38.808206300735726, "o", "d"] +[38.83820630073573, "o", "_"] +[38.86820630073573, "o", "o"] +[38.89820630073573, "o", "n"] +[38.92820630073573, "o", "_"] +[38.95820630073573, "o", "i"] +[38.98820630073573, "o", "n"] +[39.018206300735734, "o", "i"] +[39.048206300735735, "o", "t"] +[39.07820630073574, "o", "i"] +[39.10820630073574, "o", "a"] +[39.13820630073574, "o", "l"] +[39.16820630073574, "o", "\r\n"] +[39.19820630073574, "o", "$"] +[39.22820630073574, "o", " "] +[39.25820630073574, "o", "s"] +[39.288206300735744, "o", "g"] +[39.318206300735746, "o", "r"] +[39.34820630073575, "o", " "] +[39.37820630073575, "o", "t"] +[39.40820630073575, "o", "a"] +[39.43820630073575, "o", "b"] +[39.46820630073575, "o", "l"] +[39.49820630073575, "o", "e"] +[39.528206300735754, "o", " "] +[39.558206300735755, "o", "d"] +[39.588206300735756, "o", "e"] +[39.61820630073576, "o", "m"] +[39.64820630073576, "o", "o"] +[39.67820630073576, "o", "/"] +[39.70820630073576, "o", "s"] +[39.73820630073576, "o", "u"] +[39.76820630073576, "o", "m"] +[39.798206300735764, "o", "m"] +[39.828206300735765, "o", "a"] +[39.858206300735766, "o", "r"] +[39.88820630073577, "o", "y"] +[39.91820630073577, "o", ":"] +[39.94820630073577, "o", "b"] +[39.97820630073577, "o", "a"] +[40.00820630073577, "o", "s"] +[40.03820630073577, "o", "e"] +[40.068206300735774, "o", "d"] +[40.098206300735775, "o", "_"] +[40.128206300735776, "o", "o"] +[40.15820630073578, "o", "n"] +[40.18820630073578, "o", "_"] +[40.21820630073578, "o", "i"] +[40.24820630073578, "o", "n"] +[40.27820630073578, "o", "i"] +[40.30820630073578, "o", "t"] +[40.338206300735784, "o", "i"] +[40.368206300735785, "o", "a"] +[40.39820630073579, "o", "l"] +[40.42820630073579, "o", " "] +[40.45820630073579, "o", "m"] +[40.48820630073579, "o", "o"] +[40.51820630073579, "o", "n"] +[40.54820630073579, "o", "t"] +[40.57820630073579, "o", "h"] +[40.608206300735795, "o", "l"] +[40.638206300735796, "o", "y"] +[40.6682063007358, "o", "_"] +[40.6982063007358, "o", "s"] +[40.7282063007358, "o", "u"] +[40.7582063007358, "o", "m"] +[40.7882063007358, "o", "m"] +[40.8182063007358, "o", "a"] +[40.848206300735804, "o", "r"] +[40.878206300735805, "o", "y"] +[40.908206300735806, "o", "\r\n"] +[40.93820630073581, "o", "$"] +[40.96820630073581, "o", " "] +[40.99820630073581, "o", "s"] +[41.02820630073581, "o", "g"] +[41.05820630073581, "o", "r"] +[41.08820630073581, "o", " "] +[41.118206300735814, "o", "s"] +[41.148206300735815, "o", "q"] +[41.178206300735816, "o", "l"] +[41.20820630073582, "o", " "] +[41.23820630073582, "o", "-"] +[41.26820630073582, "o", "s"] +[41.29820630073582, "o", " "] +[41.32820630073582, "o", "d"] +[41.35820630073582, "o", "e"] +[41.388206300735824, "o", "m"] +[41.418206300735825, "o", "o"] +[41.448206300735826, "o", "/"] +[41.47820630073583, "o", "s"] +[41.50820630073583, "o", "u"] +[41.53820630073583, "o", "m"] +[41.56820630073583, "o", "m"] +[41.59820630073583, "o", "a"] +[41.62820630073583, "o", "r"] +[41.658206300735834, "o", "y"] +[41.688206300735835, "o", " "] +[41.71820630073584, "o", "\""] +[41.74820630073584, "o", "S"] +[41.77820630073584, "o", "E"] +[41.80820630073584, "o", "L"] +[41.83820630073584, "o", "E"] +[41.86820630073584, "o", "C"] +[41.89820630073584, "o", "T"] +[41.928206300735845, "o", " "] +[41.958206300735846, "o", "*"] +[41.98820630073585, "o", " "] +[42.01820630073585, "o", "F"] +[42.04820630073585, "o", "R"] +[42.07820630073585, "o", "O"] +[42.10820630073585, "o", "M"] +[42.13820630073585, "o", " "] +[42.168206300735854, "o", "m"] +[42.198206300735855, "o", "o"] +[42.228206300735856, "o", "n"] +[42.25820630073586, "o", "t"] +[42.28820630073586, "o", "h"] +[42.31820630073586, "o", "l"] +[42.34820630073586, "o", "y"] +[42.37820630073586, "o", "_"] +[42.40820630073586, "o", "s"] +[42.438206300735864, "o", "u"] +[42.468206300735865, "o", "m"] +[42.498206300735866, "o", "m"] +[42.52820630073587, "o", "a"] +[42.55820630073587, "o", "r"] +[42.58820630073587, "o", "y"] +[42.61820630073587, "o", " "] +[42.64820630073587, "o", "O"] +[42.67820630073587, "o", "R"] +[42.708206300735874, "o", "D"] +[42.738206300735875, "o", "E"] +[42.768206300735876, "o", "R"] +[42.79820630073588, "o", " "] +[42.82820630073588, "o", "B"] +[42.85820630073588, "o", "Y"] +[42.88820630073588, "o", " "] +[42.91820630073588, "o", "m"] +[42.94820630073588, "o", "o"] +[42.978206300735884, "o", "n"] +[43.008206300735885, "o", "t"] +[43.03820630073589, "o", "h"] +[43.06820630073589, "o", " "] +[43.09820630073589, "o", "D"] +[43.12820630073589, "o", "E"] +[43.15820630073589, "o", "S"] +[43.18820630073589, "o", "C"] +[43.21820630073589, "o", " "] +[43.248206300735895, "o", "L"] +[43.278206300735896, "o", "I"] +[43.3082063007359, "o", "M"] +[43.3382063007359, "o", "I"] +[43.3682063007359, "o", "T"] +[43.3982063007359, "o", " "] +[43.4282063007359, "o", "5"] +[43.4582063007359, "o", "\""] +[43.488206300735904, "o", "\r\n"] +[43.518206300735905, "o", "\u001b[0m"] +[43.548206300735906, "o", "\r\n"] +[43.77195975303693, "o", "Image demo/summary:e7e7753aa3566967ab701e603f4f0a1f34cf2fe77c7f4536bb28883dd951f1e5\r\n"] +[43.77198955535932, "o", "CREATE TABLE monthly_summary AS ( SELECT to_char(date, 'YYYYMM') AS month, AVG(precipitation) AS average_precipitation, AVG(snowfall) AS average_snowfall FROM source_data GROUP BY month ORDER BY month ASC)\r\nCreated at 2021-04-07T15:51:08.253186\r\n"] +[43.772869081497625, "o", "Size: 111.78 KiB\r\nParent: 80ed233b3ab6c5143b4ebd563189c7a06c58477efef12e8a191540fbec37de9e\r\n"] +[43.772882194519475, "o", "\r\nTables:\r\n"] +[43.773468465805486, "o", " monthly_summary\r\n"] +[43.77353713035627, "o", " source_data\r\n"] +[43.993213624954656, "o", "Table demo/summary:e7e7753aa3566967ab701e603f4f0a1f34cf2fe77c7f4536bb28883dd951f1e5/monthly_summary\r\n\r\n"] +[43.99387261390729, "o", "Size: 2.17 KiB\r\n"] +[43.99470684051557, "o", "Rows: 153\r\nColumns: \r\n"] +[43.99471804618879, "o", " month (text)\r\n average_precipitation (numeric)\r\n average_snowfall (numeric)\r\n\r\nObjects: \r\n o5e29c3cf82603335df66690a448ca1f604f0002d5a3496b18c982a5ea835f3\r\n"] +[44.21760103225751, "o", "201909 0.171667 0\r\n201908 0.139032 0\r\n201907 0.117097 0\r\n201906 0.12 0\r\n201905 0.103548 0\r\n"] +[44.24760103225751, "o", "\u001b[1m"] +[44.277601032257515, "o", "\u001b[36m"] +[44.307601032257516, "o", "\u001b[91m"] +[44.33760103225752, "o", "$"] +[44.36760103225752, "o", " "] +[44.39760103225752, "o", "\u001b[0m"] +[52.84820630073569, "o", "\u001b[H"] +[52.87820630073569, "o", "\u001b[J"] +[52.90820630073569, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image's provenance (generated from its metadata)"] +[52.93820630073569, "o", "\r\n"] +[52.968206300735694, "o", "$"] +[52.998206300735696, "o", " "] +[53.0282063007357, "o", "s"] +[53.0582063007357, "o", "g"] +[53.0882063007357, "o", "r"] +[53.1182063007357, "o", " "] +[53.1482063007357, "o", "p"] +[53.1782063007357, "o", "r"] +[53.208206300735704, "o", "o"] +[53.238206300735705, "o", "v"] +[53.268206300735706, "o", "e"] +[53.29820630073571, "o", "n"] +[53.32820630073571, "o", "a"] +[53.35820630073571, "o", "n"] +[53.38820630073571, "o", "c"] +[53.41820630073571, "o", "e"] +[53.44820630073571, "o", " "] +[53.478206300735714, "o", "d"] +[53.508206300735715, "o", "e"] +[53.538206300735716, "o", "m"] +[53.56820630073572, "o", "o"] +[53.59820630073572, "o", "/"] +[53.62820630073572, "o", "s"] +[53.65820630073572, "o", "u"] +[53.68820630073572, "o", "m"] +[53.71820630073572, "o", "m"] +[53.748206300735724, "o", "a"] +[53.778206300735725, "o", "r"] +[53.808206300735726, "o", "y"] +[53.83820630073573, "o", "\r\n"] +[53.86820630073573, "o", "$"] +[53.89820630073573, "o", " "] +[53.92820630073573, "o", "s"] +[53.95820630073573, "o", "g"] +[53.98820630073573, "o", "r"] +[54.018206300735734, "o", " "] +[54.048206300735735, "o", "p"] +[54.07820630073574, "o", "r"] +[54.10820630073574, "o", "o"] +[54.13820630073574, "o", "v"] +[54.16820630073574, "o", "e"] +[54.19820630073574, "o", "n"] +[54.22820630073574, "o", "a"] +[54.25820630073574, "o", "n"] +[54.288206300735744, "o", "c"] +[54.318206300735746, "o", "e"] +[54.34820630073575, "o", " "] +[54.37820630073575, "o", "-"] +[54.40820630073575, "o", "-"] +[54.43820630073575, "o", "f"] +[54.46820630073575, "o", "u"] +[54.49820630073575, "o", "l"] +[54.528206300735754, "o", "l"] +[54.558206300735755, "o", " "] +[54.588206300735756, "o", "d"] +[54.61820630073576, "o", "e"] +[54.64820630073576, "o", "m"] +[54.67820630073576, "o", "o"] +[54.70820630073576, "o", "/"] +[54.73820630073576, "o", "s"] +[54.76820630073576, "o", "u"] +[54.798206300735764, "o", "m"] +[54.828206300735765, "o", "m"] +[54.858206300735766, "o", "a"] +[54.88820630073577, "o", "r"] +[54.91820630073577, "o", "y"] +[54.94820630073577, "o", "\r\n"] +[54.97820630073577, "o", "\u001b[0m"] +[55.00820630073577, "o", "\r\n"] +[55.23656933784515, "o", "demo/summary:e7e7753aa3566967ab701e603f4f0a1f34cf2fe77c7f4536bb28883dd951f1e5 depends on:\r\n"] +[55.23659222602874, "o", "demo/weather:10c5f54b88f5eaf6926210d49a6f86f14051be5e0d1c09407b6244d562df7b50\r\n"] +[55.45881646156341, "o", "# Splitfile commands used to recreate demo/summary:e7e7753aa3566967ab701e603f4f0a1f34cf2fe77c7f4536bb28883dd951f1e5\r\n"] +[55.458836250305474, "o", "FROM demo/weather:10c5f54b88f5eaf6926210d49a6f86f14051be5e0d1c09407b6244d562df7b50 IMPORT rdu AS source_data\r\nSQL {CREATE TABLE monthly_summary\r\n AS SELECT to_char(date, 'YYYYMM') AS month\r\n , avg(precipitation) AS average_precipitation\r\n , avg(snowfall) AS average_snowfall\r\n FROM source_data\r\n GROUP BY month\r\n ORDER BY month ASC}\r\n"] +[55.488836250305475, "o", "\u001b[1m"] +[55.518836250305476, "o", "\u001b[36m"] +[55.54883625030548, "o", "\u001b[91m"] +[55.57883625030548, "o", "$"] +[55.60883625030548, "o", " "] +[55.63883625030548, "o", "\u001b[0m"] +[60.66883625030548, "o", "\u001b[H"] +[60.69883625030548, "o", "\u001b[J"] +[60.728836250305484, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We can also see that a new image has been derived from demo/weather"] +[60.758836250305485, "o", "\r\n"] +[60.788836250305486, "o", "$"] +[60.81883625030549, "o", " "] +[60.84883625030549, "o", "s"] +[60.87883625030549, "o", "g"] +[60.90883625030549, "o", "r"] +[60.93883625030549, "o", " "] +[60.96883625030549, "o", "d"] +[60.998836250305494, "o", "e"] +[61.028836250305496, "o", "p"] +[61.0588362503055, "o", "e"] +[61.0888362503055, "o", "n"] +[61.1188362503055, "o", "d"] +[61.1488362503055, "o", "e"] +[61.1788362503055, "o", "n"] +[61.2088362503055, "o", "t"] +[61.2388362503055, "o", "s"] +[61.268836250305505, "o", " "] +[61.298836250305506, "o", "d"] +[61.32883625030551, "o", "e"] +[61.35883625030551, "o", "m"] +[61.38883625030551, "o", "o"] +[61.41883625030551, "o", "/"] +[61.44883625030551, "o", "w"] +[61.47883625030551, "o", "e"] +[61.508836250305514, "o", "a"] +[61.538836250305515, "o", "t"] +[61.568836250305516, "o", "h"] +[61.59883625030552, "o", "e"] +[61.62883625030552, "o", "r"] +[61.65883625030552, "o", "\r\n"] +[61.68883625030552, "o", "\u001b[0m"] +[61.71883625030552, "o", "\r\n"] +[61.93908590316807, "o", "demo/weather:10c5f54b88f5eaf6926210d49a6f86f14051be5e0d1c09407b6244d562df7b50 is depended on by:\r\n"] +[61.9391197586063, "o", "demo/summary:e7e7753aa3566967ab701e603f4f0a1f34cf2fe77c7f4536bb28883dd951f1e5\r\n"] +[61.969119758606304, "o", "\u001b[1m"] +[61.999119758606305, "o", "\u001b[36m"] +[62.029119758606306, "o", "\u001b[91m"] +[62.05911975860631, "o", "$"] +[62.08911975860631, "o", " "] +[62.11911975860631, "o", "\u001b[0m"] +[67.1491197586063, "o", "\u001b[H"] +[67.1791197586063, "o", "\u001b[J"] +[67.2091197586063, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now pretend there's been a revision to the source historical weather data"] +[67.23911975860631, "o", "\r\n"] +[67.26911975860631, "o", "$"] +[67.29911975860631, "o", " "] +[67.32911975860631, "o", "s"] +[67.35911975860631, "o", "g"] +[67.38911975860631, "o", "r"] +[67.41911975860631, "o", " "] +[67.44911975860632, "o", "s"] +[67.47911975860632, "o", "q"] +[67.50911975860632, "o", "l"] +[67.53911975860632, "o", " "] +[67.56911975860632, "o", "-"] +[67.59911975860632, "o", "s"] +[67.62911975860632, "o", " "] +[67.65911975860632, "o", "d"] +[67.68911975860632, "o", "e"] +[67.71911975860633, "o", "m"] +[67.74911975860633, "o", "o"] +[67.77911975860633, "o", "/"] +[67.80911975860633, "o", "w"] +[67.83911975860633, "o", "e"] +[67.86911975860633, "o", "a"] +[67.89911975860633, "o", "t"] +[67.92911975860633, "o", "h"] +[67.95911975860633, "o", "e"] +[67.98911975860634, "o", "r"] +[68.01911975860634, "o", " "] +[68.04911975860634, "o", "\""] +[68.07911975860634, "o", "U"] +[68.10911975860634, "o", "P"] +[68.13911975860634, "o", "D"] +[68.16911975860634, "o", "A"] +[68.19911975860634, "o", "T"] +[68.22911975860634, "o", "E"] +[68.25911975860635, "o", " "] +[68.28911975860635, "o", "r"] +[68.31911975860635, "o", "d"] +[68.34911975860635, "o", "u"] +[68.37911975860635, "o", " "] +[68.40911975860635, "o", "S"] +[68.43911975860635, "o", "E"] +[68.46911975860635, "o", "T"] +[68.49911975860635, "o", " "] +[68.52911975860636, "o", "p"] +[68.55911975860636, "o", "r"] +[68.58911975860636, "o", "e"] +[68.61911975860636, "o", "c"] +[68.64911975860636, "o", "i"] +[68.67911975860636, "o", "p"] +[68.70911975860636, "o", "i"] +[68.73911975860636, "o", "t"] +[68.76911975860637, "o", "a"] +[68.79911975860637, "o", "t"] +[68.82911975860637, "o", "i"] +[68.85911975860637, "o", "o"] +[68.88911975860637, "o", "n"] +[68.91911975860637, "o", " "] +[68.94911975860637, "o", "="] +[68.97911975860637, "o", " "] +[69.00911975860637, "o", "p"] +[69.03911975860638, "o", "r"] +[69.06911975860638, "o", "e"] +[69.09911975860638, "o", "c"] +[69.12911975860638, "o", "i"] +[69.15911975860638, "o", "p"] +[69.18911975860638, "o", "i"] +[69.21911975860638, "o", "t"] +[69.24911975860638, "o", "a"] +[69.27911975860638, "o", "t"] +[69.30911975860639, "o", "i"] +[69.33911975860639, "o", "o"] +[69.36911975860639, "o", "n"] +[69.39911975860639, "o", " "] +[69.42911975860639, "o", "*"] +[69.45911975860639, "o", " "] +[69.48911975860639, "o", "1"] +[69.5191197586064, "o", "."] +[69.5491197586064, "o", "2"] +[69.5791197586064, "o", " "] +[69.6091197586064, "o", "W"] +[69.6391197586064, "o", "H"] +[69.6691197586064, "o", "E"] +[69.6991197586064, "o", "R"] +[69.7291197586064, "o", "E"] +[69.7591197586064, "o", " "] +[69.7891197586064, "o", "E"] +[69.8191197586064, "o", "X"] +[69.8491197586064, "o", "T"] +[69.87911975860641, "o", "R"] +[69.90911975860641, "o", "A"] +[69.93911975860641, "o", "C"] +[69.96911975860641, "o", "T"] +[69.99911975860641, "o", " "] +[70.02911975860641, "o", "("] +[70.05911975860641, "o", "y"] +[70.08911975860642, "o", "e"] +[70.11911975860642, "o", "a"] +[70.14911975860642, "o", "r"] +[70.17911975860642, "o", " "] +[70.20911975860642, "o", "F"] +[70.23911975860642, "o", "R"] +[70.26911975860642, "o", "O"] +[70.29911975860642, "o", "M"] +[70.32911975860642, "o", " "] +[70.35911975860643, "o", "d"] +[70.38911975860643, "o", "a"] +[70.41911975860643, "o", "t"] +[70.44911975860643, "o", "e"] +[70.47911975860643, "o", ")"] +[70.50911975860643, "o", " "] +[70.53911975860643, "o", "="] +[70.56911975860643, "o", " "] +[70.59911975860643, "o", "2"] +[70.62911975860644, "o", "0"] +[70.65911975860644, "o", "1"] +[70.68911975860644, "o", "2"] +[70.71911975860644, "o", "\""] +[70.74911975860644, "o", "\r\n"] +[70.77911975860644, "o", "$"] +[70.80911975860644, "o", " "] +[70.83911975860644, "o", "s"] +[70.86911975860644, "o", "g"] +[70.89911975860645, "o", "r"] +[70.92911975860645, "o", " "] +[70.95911975860645, "o", "c"] +[70.98911975860645, "o", "o"] +[71.01911975860645, "o", "m"] +[71.04911975860645, "o", "m"] +[71.07911975860645, "o", "i"] +[71.10911975860645, "o", "t"] +[71.13911975860645, "o", " "] +[71.16911975860646, "o", "-"] +[71.19911975860646, "o", "m"] +[71.22911975860646, "o", " "] +[71.25911975860646, "o", "\""] +[71.28911975860646, "o", "R"] +[71.31911975860646, "o", "e"] +[71.34911975860646, "o", "v"] +[71.37911975860646, "o", "i"] +[71.40911975860647, "o", "s"] +[71.43911975860647, "o", "i"] +[71.46911975860647, "o", "o"] +[71.49911975860647, "o", "n"] +[71.52911975860647, "o", " "] +[71.55911975860647, "o", "t"] +[71.58911975860647, "o", "o"] +[71.61911975860647, "o", " "] +[71.64911975860647, "o", "t"] +[71.67911975860648, "o", "h"] +[71.70911975860648, "o", "e"] +[71.73911975860648, "o", " "] +[71.76911975860648, "o", "2"] +[71.79911975860648, "o", "0"] +[71.82911975860648, "o", "1"] +[71.85911975860648, "o", "2"] +[71.88911975860648, "o", " "] +[71.91911975860648, "o", "r"] +[71.94911975860649, "o", "a"] +[71.97911975860649, "o", "i"] +[72.00911975860649, "o", "n"] +[72.03911975860649, "o", "f"] +[72.06911975860649, "o", "a"] +[72.09911975860649, "o", "l"] +[72.12911975860649, "o", "l"] +[72.1591197586065, "o", " "] +[72.1891197586065, "o", "d"] +[72.2191197586065, "o", "a"] +[72.2491197586065, "o", "t"] +[72.2791197586065, "o", "a"] +[72.3091197586065, "o", "\""] +[72.3391197586065, "o", " "] +[72.3691197586065, "o", "d"] +[72.3991197586065, "o", "e"] +[72.4291197586065, "o", "m"] +[72.4591197586065, "o", "o"] +[72.4891197586065, "o", "/"] +[72.51911975860651, "o", "w"] +[72.54911975860651, "o", "e"] +[72.57911975860651, "o", "a"] +[72.60911975860651, "o", "t"] +[72.63911975860651, "o", "h"] +[72.66911975860651, "o", "e"] +[72.69911975860651, "o", "r"] +[72.72911975860652, "o", "\r\n"] +[72.75911975860652, "o", "$"] +[72.78911975860652, "o", " "] +[72.81911975860652, "o", "s"] +[72.84911975860652, "o", "g"] +[72.87911975860652, "o", "r"] +[72.90911975860652, "o", " "] +[72.93911975860652, "o", "t"] +[72.96911975860652, "o", "a"] +[72.99911975860653, "o", "g"] +[73.02911975860653, "o", " "] +[73.05911975860653, "o", "d"] +[73.08911975860653, "o", "e"] +[73.11911975860653, "o", "m"] +[73.14911975860653, "o", "o"] +[73.17911975860653, "o", "/"] +[73.20911975860653, "o", "w"] +[73.23911975860653, "o", "e"] +[73.26911975860654, "o", "a"] +[73.29911975860654, "o", "t"] +[73.32911975860654, "o", "h"] +[73.35911975860654, "o", "e"] +[73.38911975860654, "o", "r"] +[73.41911975860654, "o", " "] +[73.44911975860654, "o", "r"] +[73.47911975860654, "o", "e"] +[73.50911975860654, "o", "v"] +[73.53911975860655, "o", "i"] +[73.56911975860655, "o", "s"] +[73.59911975860655, "o", "e"] +[73.62911975860655, "o", "d"] +[73.65911975860655, "o", "_"] +[73.68911975860655, "o", "d"] +[73.71911975860655, "o", "a"] +[73.74911975860655, "o", "t"] +[73.77911975860656, "o", "a"] +[73.80911975860656, "o", "\r\n"] +[73.83911975860656, "o", "\u001b[0m"] +[73.86911975860656, "o", "\r\n"] +[74.08552658081115, "o", "Committing demo/weather...\r\n"] +[74.11885153770507, "o", "Storing and indexing table rdu\r\n"] +[74.2990018081671, "o", "Committed demo/weather as c7fa06dfef05.\r\n"] +[74.51596724510253, "o", "Tagged demo/weather:c7fa06dfef0577be7ff76721c54fe286fd6b3ef76b3787158b30d19b04a02301 with revised_data.\r\n"] +[74.54596724510253, "o", "\u001b[1m"] +[74.57596724510253, "o", "\u001b[36m"] +[74.60596724510253, "o", "\u001b[91m"] +[74.63596724510253, "o", "$"] +[74.66596724510254, "o", " "] +[74.69596724510254, "o", "\u001b[0m"] +[79.72596724510254, "o", "\u001b[H"] +[79.75596724510254, "o", "\u001b[J"] +[79.78596724510254, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Use the derivative image's provenance to rebuild it against the revised version"] +[79.81596724510254, "o", "\r\n"] +[79.84596724510254, "o", "$"] +[79.87596724510254, "o", " "] +[79.90596724510254, "o", "s"] +[79.93596724510255, "o", "g"] +[79.96596724510255, "o", "r"] +[79.99596724510255, "o", " "] +[80.02596724510255, "o", "r"] +[80.05596724510255, "o", "e"] +[80.08596724510255, "o", "b"] +[80.11596724510255, "o", "u"] +[80.14596724510255, "o", "i"] +[80.17596724510256, "o", "l"] +[80.20596724510256, "o", "d"] +[80.23596724510256, "o", " "] +[80.26596724510256, "o", "d"] +[80.29596724510256, "o", "e"] +[80.32596724510256, "o", "m"] +[80.35596724510256, "o", "o"] +[80.38596724510256, "o", "/"] +[80.41596724510256, "o", "s"] +[80.44596724510257, "o", "u"] +[80.47596724510257, "o", "m"] +[80.50596724510257, "o", "m"] +[80.53596724510257, "o", "a"] +[80.56596724510257, "o", "r"] +[80.59596724510257, "o", "y"] +[80.62596724510257, "o", " "] +[80.65596724510257, "o", "-"] +[80.68596724510257, "o", "-"] +[80.71596724510258, "o", "a"] +[80.74596724510258, "o", "g"] +[80.77596724510258, "o", "a"] +[80.80596724510258, "o", "i"] +[80.83596724510258, "o", "n"] +[80.86596724510258, "o", "s"] +[80.89596724510258, "o", "t"] +[80.92596724510258, "o", " "] +[80.95596724510258, "o", "d"] +[80.98596724510259, "o", "e"] +[81.01596724510259, "o", "m"] +[81.04596724510259, "o", "o"] +[81.07596724510259, "o", "/"] +[81.10596724510259, "o", "w"] +[81.13596724510259, "o", "e"] +[81.16596724510259, "o", "a"] +[81.1959672451026, "o", "t"] +[81.2259672451026, "o", "h"] +[81.2559672451026, "o", "e"] +[81.2859672451026, "o", "r"] +[81.3159672451026, "o", ":"] +[81.3459672451026, "o", "r"] +[81.3759672451026, "o", "e"] +[81.4059672451026, "o", "v"] +[81.4359672451026, "o", "i"] +[81.4659672451026, "o", "s"] +[81.4959672451026, "o", "e"] +[81.5259672451026, "o", "d"] +[81.55596724510261, "o", "_"] +[81.58596724510261, "o", "d"] +[81.61596724510261, "o", "a"] +[81.64596724510261, "o", "t"] +[81.67596724510261, "o", "a"] +[81.70596724510261, "o", "\r\n"] +[81.73596724510261, "o", "$"] +[81.76596724510262, "o", " "] +[81.79596724510262, "o", "s"] +[81.82596724510262, "o", "g"] +[81.85596724510262, "o", "r"] +[81.88596724510262, "o", " "] +[81.91596724510262, "o", "t"] +[81.94596724510262, "o", "a"] +[81.97596724510262, "o", "g"] +[82.00596724510262, "o", " "] +[82.03596724510263, "o", "d"] +[82.06596724510263, "o", "e"] +[82.09596724510263, "o", "m"] +[82.12596724510263, "o", "o"] +[82.15596724510263, "o", "/"] +[82.18596724510263, "o", "s"] +[82.21596724510263, "o", "u"] +[82.24596724510263, "o", "m"] +[82.27596724510263, "o", "m"] +[82.30596724510264, "o", "a"] +[82.33596724510264, "o", "r"] +[82.36596724510264, "o", "y"] +[82.39596724510264, "o", " "] +[82.42596724510264, "o", "b"] +[82.45596724510264, "o", "a"] +[82.48596724510264, "o", "s"] +[82.51596724510264, "o", "e"] +[82.54596724510264, "o", "d"] +[82.57596724510265, "o", "_"] +[82.60596724510265, "o", "o"] +[82.63596724510265, "o", "n"] +[82.66596724510265, "o", "_"] +[82.69596724510265, "o", "r"] +[82.72596724510265, "o", "e"] +[82.75596724510265, "o", "v"] +[82.78596724510265, "o", "i"] +[82.81596724510266, "o", "s"] +[82.84596724510266, "o", "e"] +[82.87596724510266, "o", "d"] +[82.90596724510266, "o", "\r\n"] +[82.93596724510266, "o", "\u001b[0m"] +[82.96596724510266, "o", "\r\n"] +[83.18508488655164, "o", "Rerunning demo/summary:e7e7753aa3566967ab701e603f4f0a1f34cf2fe77c7f4536bb28883dd951f1e5 against:\r\n"] +[83.18509609222485, "o", "demo/weather:revised_data\r\n"] +[83.2675147724159, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather:revised_data IMPORT rdu AS source_data\u001b[0m\r\n"] +[83.26867920875623, "o", "Resolving repository demo/weather\r\n"] +[83.27266914367749, "o", "Importing 1 table from demo/weather:c7fa06dfef05 into demo/summary\r\n"] +[83.41916377067639, "o", " ---> ee1f560da001\r\n"] +[83.41919166565015, "o", "\u001b[1m\r\nStep 2/2 : SQL {CREATE TABLE monthly_summary AS SELECT to_char(dat...\u001b[0m\r\n"] +[83.4244275760658, "o", "Executing SQL...\r\n"] +[83.63582808494641, "o", "Committing demo/summary...\r\n"] +[83.66179234504773, "o", "Processing table monthly_summary\r\n"] +[83.75708443641736, "o", " ---> 07b1ea9d7d44\r\n"] +[83.76018149375989, "o", "Successfully built demo/summary:07b1ea9d7d44.\r\n"] +[83.99136549949719, "o", "Tagged demo/summary:07b1ea9d7d44834c9122c6dbc599a0f77d8fbc013731814f1209589e3d43faa3 with based_on_revised.\r\n"] +[84.0213654994972, "o", "\u001b[1m"] +[84.0513654994972, "o", "\u001b[36m"] +[84.0813654994972, "o", "\u001b[91m"] +[84.1113654994972, "o", "$"] +[84.1413654994972, "o", " "] +[84.1713654994972, "o", "\u001b[0m"] +[89.22596724510254, "o", "\u001b[H"] +[89.25596724510254, "o", "\u001b[J"] +[89.28596724510254, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Compare the two resultant datasets"] +[89.31596724510254, "o", "\r\n"] +[89.34596724510254, "o", "$"] +[89.37596724510254, "o", " "] +[89.40596724510254, "o", "s"] +[89.43596724510255, "o", "g"] +[89.46596724510255, "o", "r"] +[89.49596724510255, "o", " "] +[89.52596724510255, "o", "d"] +[89.55596724510255, "o", "i"] +[89.58596724510255, "o", "f"] +[89.61596724510255, "o", "f"] +[89.64596724510255, "o", " "] +[89.67596724510256, "o", "d"] +[89.70596724510256, "o", "e"] +[89.73596724510256, "o", "m"] +[89.76596724510256, "o", "o"] +[89.79596724510256, "o", "/"] +[89.82596724510256, "o", "s"] +[89.85596724510256, "o", "u"] +[89.88596724510256, "o", "m"] +[89.91596724510256, "o", "m"] +[89.94596724510257, "o", "a"] +[89.97596724510257, "o", "r"] +[90.00596724510257, "o", "y"] +[90.03596724510257, "o", " "] +[90.06596724510257, "o", "b"] +[90.09596724510257, "o", "a"] +[90.12596724510257, "o", "s"] +[90.15596724510257, "o", "e"] +[90.18596724510257, "o", "d"] +[90.21596724510258, "o", "_"] +[90.24596724510258, "o", "o"] +[90.27596724510258, "o", "n"] +[90.30596724510258, "o", "_"] +[90.33596724510258, "o", "i"] +[90.36596724510258, "o", "n"] +[90.39596724510258, "o", "i"] +[90.42596724510258, "o", "t"] +[90.45596724510258, "o", "i"] +[90.48596724510259, "o", "a"] +[90.51596724510259, "o", "l"] +[90.54596724510259, "o", " "] +[90.57596724510259, "o", "b"] +[90.60596724510259, "o", "a"] +[90.63596724510259, "o", "s"] +[90.66596724510259, "o", "e"] +[90.6959672451026, "o", "d"] +[90.7259672451026, "o", "_"] +[90.7559672451026, "o", "o"] +[90.7859672451026, "o", "n"] +[90.8159672451026, "o", "_"] +[90.8459672451026, "o", "r"] +[90.8759672451026, "o", "e"] +[90.9059672451026, "o", "v"] +[90.9359672451026, "o", "i"] +[90.9659672451026, "o", "s"] +[90.9959672451026, "o", "e"] +[91.0259672451026, "o", "d"] +[91.05596724510261, "o", " "] +[91.08596724510261, "o", "-"] +[91.11596724510261, "o", "-"] +[91.14596724510261, "o", "v"] +[91.17596724510261, "o", "e"] +[91.20596724510261, "o", "r"] +[91.23596724510261, "o", "b"] +[91.26596724510262, "o", "o"] +[91.29596724510262, "o", "s"] +[91.32596724510262, "o", "e"] +[91.35596724510262, "o", " "] +[91.38596724510262, "o", "-"] +[91.41596724510262, "o", "-"] +[91.44596724510262, "o", "t"] +[91.47596724510262, "o", "a"] +[91.50596724510262, "o", "b"] +[91.53596724510263, "o", "l"] +[91.56596724510263, "o", "e"] +[91.59596724510263, "o", "-"] +[91.62596724510263, "o", "n"] +[91.65596724510263, "o", "a"] +[91.68596724510263, "o", "m"] +[91.71596724510263, "o", "e"] +[91.74596724510263, "o", " "] +[91.77596724510263, "o", "m"] +[91.80596724510264, "o", "o"] +[91.83596724510264, "o", "n"] +[91.86596724510264, "o", "t"] +[91.89596724510264, "o", "h"] +[91.92596724510264, "o", "l"] +[91.95596724510264, "o", "y"] +[91.98596724510264, "o", "_"] +[92.01596724510264, "o", "s"] +[92.04596724510264, "o", "u"] +[92.07596724510265, "o", "m"] +[92.10596724510265, "o", "m"] +[92.13596724510265, "o", "a"] +[92.16596724510265, "o", "r"] +[92.19596724510265, "o", "y"] +[92.22596724510265, "o", "\r\n"] +[92.25596724510265, "o", "\u001b[0m"] +[92.28596724510265, "o", "\r\n"] +[92.66799272537304, "o", "Between e7e7753aa356 and 07b1ea9d7d44: \r\n"] +[92.66824735641552, "o", "monthly_summary: added 12 rows, removed 12 rows.\r\n- ('201201', Decimal('0.06322580645161290323'), Decimal('0E-20'))\r\n- ('201202', Decimal('0.06689655172413793103'), Decimal('0.03137931034482758621'))\r\n- ('201203', Decimal('0.17290322580645161290'), Decimal('0E-20'))\r\n- ('201204', Decimal('0.08766666666666666667'), Decimal('0E-20'))\r\n- ('201205', Decimal('0.12806451612903225806'), Decimal('0E-20'))\r\n- ('201206', Decimal('0.10333333333333333333'), Decimal('0E-20'))\r\n- ('201207', Decimal('0.1496774193548387096"] +[92.66825617790295, "o", "8'), Decimal('0E-20'))\r\n- ('201208', Decimal('0.13000000000000000000'), Decimal('0E-20'))\r\n- ('201209', Decimal('0.26100000000000000000'), Decimal('0E-20'))\r\n"] +[92.66838921547009, "o", "- ('201210', Decimal('0.05903225806451612903'), Decimal('0E-20'))\r\n- ('201211', Decimal('0.01866666666666666667'), Decimal('0E-20'))\r\n- ('201212', Decimal('0.09483870967741935484'), Decimal('0E-20'))\r\n+ ('201201', Decimal('0.07587096774193548387'), Decimal('0E-20'))\r\n+ ('201202', Decimal('0.08027586206896551724'), Decimal('0.03137931034482758621'))\r\n+ ('201203', Decimal('0.20748387096774193548'), Decimal('0E-20'))\r\n+ ('201204', Decimal('0.10520000000000000000'), Decimal('0E-20'))\r\n+ ('201205', Decimal('0.15"] +[92.66841830253674, "o", "367741935483870968'), Decimal('0E-20'))\r\n+ ('201206', Decimal('0.12400000000000000000'), Decimal('0E-20'))\r\n+ ('201207', Decimal('0.17961290322580645161'), Decimal('0E-20'))\r\n"] +[92.66862739563061, "o", "+ ('201208', Decimal('0.15600000000000000000'), Decimal('0E-20'))\r\n+ ('201209', Decimal('0.31320000000000000000'), Decimal('0E-20'))\r\n+ ('201210', Decimal('0.07083870967741935484'), Decimal('0E-20'))\r\n+ ('201211', Decimal('0.02240000000000000000'), Decimal('0E-20'))\r\n+ ('201212', Decimal('0.11380645161290322581'), Decimal('0E-20'))\r\n"] +[92.69862739563061, "o", "\u001b[1m"] +[92.72862739563061, "o", "\u001b[36m"] +[92.75862739563061, "o", "\u001b[91m"] +[92.78862739563061, "o", "$"] +[92.81862739563061, "o", " "] +[92.84862739563061, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.12/splitgraph-cloud.cast b/content/casts/versioned/archive/v0.2.12/splitgraph-cloud.cast new file mode 100644 index 00000000..ac0e9047 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.12/splitgraph-cloud.cast @@ -0,0 +1,1338 @@ +{"version": 2, "width": 100, "height": 22, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1617810618, "metadata": {"tss": [{"h": "Make sure you are registered and logged into Splitgraph Cloud.", "ts": 0.06}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport", "ts": 8.849999999999994}, {"h": "Push the dataset to Splitgraph", "ts": 21.004305925369128}, {"h": "Upload some dataset metadata as well.", "ts": 29.156868476867576}, {"h": "Perform a request against an automatically-generated", "ts": 39.65686847686757}, {"h": "sgr also has a shorthand to access the query API", "ts": 49.436868476867716}, {"h": "You can also run a query against the Splitgraph Data Delivery Network.", "ts": 58.21439247131363}, {"h": "The query API also supports running one-off Splitfile commands against a repository,", "ts": 69.40439247131383}, {"h": "Run another command against the new layer to join the two datasets", "ts": 78.91622042655993}, {"h": "Pull the dataset and check out the new image", "ts": 88.51794657707276}, {"h": "Inspect the generated data", "ts": 101.35675366401742}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make sure you are registered and logged into Splitgraph Cloud."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Test the connection.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "s"] +[0.27, "o", "g"] +[0.30000000000000004, "o", "r"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "q"] +[0.42000000000000015, "o", "l"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "-"] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", " "] +[0.5700000000000003, "o", "d"] +[0.6000000000000003, "o", "a"] +[0.6300000000000003, "o", "t"] +[0.6600000000000004, "o", "a"] +[0.6900000000000004, "o", "."] +[0.7200000000000004, "o", "s"] +[0.7500000000000004, "o", "p"] +[0.7800000000000005, "o", "l"] +[0.8100000000000005, "o", "i"] +[0.8400000000000005, "o", "t"] +[0.8700000000000006, "o", "g"] +[0.9000000000000006, "o", "r"] +[0.9300000000000006, "o", "a"] +[0.9600000000000006, "o", "p"] +[0.9900000000000007, "o", "h"] +[1.0200000000000007, "o", "."] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "o"] +[1.1100000000000008, "o", "m"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "\""] +[1.2000000000000008, "o", "S"] +[1.2300000000000009, "o", "E"] +[1.260000000000001, "o", "L"] +[1.290000000000001, "o", "E"] +[1.320000000000001, "o", "C"] +[1.350000000000001, "o", "T"] +[1.380000000000001, "o", " "] +[1.410000000000001, "o", "s"] +[1.440000000000001, "o", "p"] +[1.470000000000001, "o", "l"] +[1.500000000000001, "o", "i"] +[1.5300000000000011, "o", "t"] +[1.5600000000000012, "o", "g"] +[1.5900000000000012, "o", "r"] +[1.6200000000000012, "o", "a"] +[1.6500000000000012, "o", "p"] +[1.6800000000000013, "o", "h"] +[1.7100000000000013, "o", "_"] +[1.7400000000000013, "o", "a"] +[1.7700000000000014, "o", "p"] +[1.8000000000000014, "o", "i"] +[1.8300000000000014, "o", "."] +[1.8600000000000014, "o", "g"] +[1.8900000000000015, "o", "e"] +[1.9200000000000015, "o", "t"] +[1.9500000000000015, "o", "_"] +[1.9800000000000015, "o", "c"] +[2.0100000000000016, "o", "u"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "r"] +[2.100000000000001, "o", "e"] +[2.130000000000001, "o", "n"] +[2.1600000000000006, "o", "t"] +[2.1900000000000004, "o", "_"] +[2.22, "o", "u"] +[2.25, "o", "s"] +[2.28, "o", "e"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "n"] +[2.369999999999999, "o", "a"] +[2.399999999999999, "o", "m"] +[2.429999999999999, "o", "e"] +[2.4599999999999986, "o", "("] +[2.4899999999999984, "o", ")"] +[2.5199999999999982, "o", "\""] +[2.549999999999998, "o", "\r\n"] +[2.579999999999998, "o", "\u001b[0m"] +[2.6099999999999977, "o", "\r\n"] +[3.6099999999999977, "o", "splitgraph-demo\r\n"] +[3.6399999999999975, "o", "\u001b[1m"] +[3.6699999999999973, "o", "\u001b[36m"] +[3.699999999999997, "o", "\u001b[91m"] +[3.729999999999997, "o", "$"] +[3.7599999999999967, "o", " "] +[3.7899999999999965, "o", "\u001b[0m"] +[8.819999999999995, "o", "\u001b[H"] +[8.849999999999994, "o", "\u001b[J"] +[8.879999999999994, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport"] +[8.909999999999993, "o", "\r\n"] +[8.939999999999992, "o", "$"] +[8.969999999999992, "o", " "] +[8.999999999999991, "o", "s"] +[9.02999999999999, "o", "g"] +[9.05999999999999, "o", "r"] +[9.08999999999999, "o", " "] +[9.119999999999989, "o", "i"] +[9.149999999999988, "o", "n"] +[9.179999999999987, "o", "i"] +[9.209999999999987, "o", "t"] +[9.239999999999986, "o", " "] +[9.269999999999985, "o", "w"] +[9.299999999999985, "o", "e"] +[9.329999999999984, "o", "a"] +[9.359999999999983, "o", "t"] +[9.389999999999983, "o", "h"] +[9.419999999999982, "o", "e"] +[9.449999999999982, "o", "r"] +[9.47999999999998, "o", "\r\n"] +[9.50999999999998, "o", "$"] +[9.53999999999998, "o", " "] +[9.569999999999979, "o", "s"] +[9.599999999999978, "o", "g"] +[9.629999999999978, "o", "r"] +[9.659999999999977, "o", " "] +[9.689999999999976, "o", "c"] +[9.719999999999976, "o", "s"] +[9.749999999999975, "o", "v"] +[9.779999999999974, "o", " "] +[9.809999999999974, "o", "i"] +[9.839999999999973, "o", "m"] +[9.869999999999973, "o", "p"] +[9.899999999999972, "o", "o"] +[9.929999999999971, "o", "r"] +[9.95999999999997, "o", "t"] +[9.98999999999997, "o", " "] +[10.01999999999997, "o", "-"] +[10.049999999999969, "o", "f"] +[10.079999999999968, "o", " "] +[10.109999999999967, "o", "."] +[10.139999999999967, "o", "."] +[10.169999999999966, "o", "/"] +[10.199999999999966, "o", "i"] +[10.229999999999965, "o", "m"] +[10.259999999999964, "o", "p"] +[10.289999999999964, "o", "o"] +[10.319999999999963, "o", "r"] +[10.349999999999962, "o", "t"] +[10.379999999999962, "o", "-"] +[10.409999999999961, "o", "f"] +[10.43999999999996, "o", "r"] +[10.46999999999996, "o", "o"] +[10.49999999999996, "o", "m"] +[10.529999999999959, "o", "-"] +[10.559999999999958, "o", "c"] +[10.589999999999957, "o", "s"] +[10.619999999999957, "o", "v"] +[10.649999999999956, "o", "/"] +[10.679999999999955, "o", "r"] +[10.709999999999955, "o", "d"] +[10.739999999999954, "o", "u"] +[10.769999999999953, "o", "-"] +[10.799999999999953, "o", "w"] +[10.829999999999952, "o", "e"] +[10.859999999999951, "o", "a"] +[10.88999999999995, "o", "t"] +[10.91999999999995, "o", "h"] +[10.94999999999995, "o", "e"] +[10.979999999999949, "o", "r"] +[11.009999999999948, "o", "-"] +[11.039999999999948, "o", "h"] +[11.069999999999947, "o", "i"] +[11.099999999999946, "o", "s"] +[11.129999999999946, "o", "t"] +[11.159999999999945, "o", "o"] +[11.189999999999944, "o", "r"] +[11.219999999999944, "o", "y"] +[11.249999999999943, "o", "."] +[11.279999999999943, "o", "c"] +[11.309999999999942, "o", "s"] +[11.339999999999941, "o", "v"] +[11.36999999999994, "o", " "] +[11.39999999999994, "o", "\\"] +[11.42999999999994, "o", "\r\n "] +[11.459999999999939, "o", "-"] +[11.489999999999938, "o", "k"] +[11.519999999999937, "o", " "] +[11.549999999999937, "o", "d"] +[11.579999999999936, "o", "a"] +[11.609999999999935, "o", "t"] +[11.639999999999935, "o", "e"] +[11.669999999999934, "o", " "] +[11.699999999999934, "o", "\\"] +[11.729999999999933, "o", "\r\n "] +[11.759999999999932, "o", "-"] +[11.789999999999932, "o", "t"] +[11.819999999999931, "o", " "] +[11.84999999999993, "o", "d"] +[11.87999999999993, "o", "a"] +[11.909999999999929, "o", "t"] +[11.939999999999928, "o", "e"] +[11.969999999999928, "o", " "] +[11.999999999999927, "o", "t"] +[12.029999999999927, "o", "i"] +[12.059999999999926, "o", "m"] +[12.089999999999925, "o", "e"] +[12.119999999999925, "o", "s"] +[12.149999999999924, "o", "t"] +[12.179999999999923, "o", "a"] +[12.209999999999923, "o", "m"] +[12.239999999999922, "o", "p"] +[12.269999999999921, "o", " "] +[12.29999999999992, "o", "\\"] +[12.32999999999992, "o", "\r\n "] +[12.35999999999992, "o", "-"] +[12.389999999999919, "o", "-"] +[12.419999999999918, "o", "s"] +[12.449999999999918, "o", "e"] +[12.479999999999917, "o", "p"] +[12.509999999999916, "o", "a"] +[12.539999999999916, "o", "r"] +[12.569999999999915, "o", "a"] +[12.599999999999914, "o", "t"] +[12.629999999999914, "o", "o"] +[12.659999999999913, "o", "r"] +[12.689999999999912, "o", " "] +[12.719999999999912, "o", "\""] +[12.749999999999911, "o", ";"] +[12.77999999999991, "o", "\""] +[12.80999999999991, "o", " "] +[12.83999999999991, "o", "\\"] +[12.869999999999909, "o", "\r\n "] +[12.899999999999908, "o", "w"] +[12.929999999999907, "o", "e"] +[12.959999999999907, "o", "a"] +[12.989999999999906, "o", "t"] +[13.019999999999905, "o", "h"] +[13.049999999999905, "o", "e"] +[13.079999999999904, "o", "r"] +[13.109999999999904, "o", " "] +[13.139999999999903, "o", "r"] +[13.169999999999902, "o", "d"] +[13.199999999999902, "o", "u"] +[13.229999999999901, "o", "\r\n"] +[13.2599999999999, "o", "$"] +[13.2899999999999, "o", " "] +[13.319999999999899, "o", "s"] +[13.349999999999898, "o", "g"] +[13.379999999999898, "o", "r"] +[13.409999999999897, "o", " "] +[13.439999999999896, "o", "c"] +[13.469999999999896, "o", "o"] +[13.499999999999895, "o", "m"] +[13.529999999999895, "o", "m"] +[13.559999999999894, "o", "i"] +[13.589999999999893, "o", "t"] +[13.619999999999893, "o", " "] +[13.649999999999892, "o", "w"] +[13.679999999999891, "o", "e"] +[13.70999999999989, "o", "a"] +[13.73999999999989, "o", "t"] +[13.76999999999989, "o", "h"] +[13.799999999999889, "o", "e"] +[13.829999999999888, "o", "r"] +[13.859999999999888, "o", "\r\n"] +[13.889999999999887, "o", "$"] +[13.919999999999886, "o", " "] +[13.949999999999886, "o", "s"] +[13.979999999999885, "o", "g"] +[14.009999999999884, "o", "r"] +[14.039999999999884, "o", " "] +[14.069999999999883, "o", "t"] +[14.099999999999882, "o", "a"] +[14.129999999999882, "o", "g"] +[14.159999999999881, "o", " "] +[14.18999999999988, "o", "w"] +[14.21999999999988, "o", "e"] +[14.24999999999988, "o", "a"] +[14.279999999999879, "o", "t"] +[14.309999999999878, "o", "h"] +[14.339999999999877, "o", "e"] +[14.369999999999877, "o", "r"] +[14.399999999999876, "o", " "] +[14.429999999999875, "o", "i"] +[14.459999999999875, "o", "n"] +[14.489999999999874, "o", "i"] +[14.519999999999873, "o", "t"] +[14.549999999999873, "o", "i"] +[14.579999999999872, "o", "a"] +[14.609999999999872, "o", "l"] +[14.639999999999871, "o", "_"] +[14.66999999999987, "o", "d"] +[14.69999999999987, "o", "a"] +[14.729999999999869, "o", "t"] +[14.759999999999868, "o", "a"] +[14.789999999999868, "o", "\r\n"] +[14.819999999999867, "o", "\u001b[0m"] +[14.849999999999866, "o", "\r\n"] +[15.086886739730701, "o", "Initialized empty repository weather\r\n"] +[15.30746016502367, "o", "Committing weather...\r\n"] +[15.334158754348621, "o", "Processing table rdu\r\n"] +[15.547151660919056, "o", "Committed weather as 52e5937d875a.\r\n"] +[15.76430592536913, "o", "Tagged weather:52e5937d875a4a03a4c5b2a4a5ba46420b67cb8a15f308b33de99f0e06d631ba with initial_data.\r\n"] +[15.794305925369128, "o", "\u001b[1m"] +[15.824305925369128, "o", "\u001b[36m"] +[15.854305925369127, "o", "\u001b[91m"] +[15.884305925369127, "o", "$"] +[15.914305925369126, "o", " "] +[15.944305925369125, "o", "\u001b[0m"] +[20.974305925369126, "o", "\u001b[H"] +[21.004305925369128, "o", "\u001b[J"] +[21.03430592536913, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset to Splitgraph"] +[21.06430592536913, "o", "\r\n"] +[21.09430592536913, "o", "$"] +[21.124305925369132, "o", " "] +[21.154305925369133, "o", "s"] +[21.184305925369134, "o", "g"] +[21.214305925369136, "o", "r"] +[21.244305925369137, "o", " "] +[21.274305925369138, "o", "p"] +[21.30430592536914, "o", "u"] +[21.33430592536914, "o", "s"] +[21.36430592536914, "o", "h"] +[21.394305925369142, "o", " "] +[21.424305925369143, "o", "w"] +[21.454305925369145, "o", "e"] +[21.484305925369146, "o", "a"] +[21.514305925369147, "o", "t"] +[21.544305925369148, "o", "h"] +[21.57430592536915, "o", "e"] +[21.60430592536915, "o", "r"] +[21.63430592536915, "o", "\r\n"] +[21.664305925369153, "o", "\u001b[0m"] +[21.694305925369154, "o", "\r\n"] +[21.911123542785536, "o", "Pushing weather to splitgraph-demo/weather on remote data.splitgraph.com\r\n"] +[21.91113522529591, "o", "Gathering remote metadata...\r\n"] +[22.91113522529591, "o", "No objects to upload.\r\n"] +[23.91113522529591, "o", "Uploaded metadata for 2 images, 1 table, 0 objects and 1 tag.\r\n"] +[23.916868476867567, "o", "Setting upstream for weather to splitgraph-demo/weather.\r\n"] +[23.946868476867568, "o", "\u001b[1m"] +[23.97686847686757, "o", "\u001b[36m"] +[24.00686847686757, "o", "\u001b[91m"] +[24.03686847686757, "o", "$"] +[24.066868476867572, "o", " "] +[24.096868476867574, "o", "\u001b[0m"] +[29.126868476867575, "o", "\u001b[H"] +[29.156868476867576, "o", "\u001b[J"] +[29.186868476867577, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Upload some dataset metadata as well."] +[29.216868476867578, "o", "\r\n"] +[29.24686847686758, "o", "$"] +[29.27686847686758, "o", " "] +[29.30686847686758, "o", "c"] +[29.336868476867583, "o", "a"] +[29.366868476867584, "o", "t"] +[29.396868476867585, "o", " "] +[29.426868476867586, "o", "d"] +[29.456868476867587, "o", "a"] +[29.48686847686759, "o", "t"] +[29.51686847686759, "o", "a"] +[29.54686847686759, "o", "s"] +[29.576868476867592, "o", "e"] +[29.606868476867593, "o", "t"] +[29.636868476867594, "o", "-"] +[29.666868476867595, "o", "m"] +[29.696868476867596, "o", "e"] +[29.726868476867597, "o", "t"] +[29.7568684768676, "o", "a"] +[29.7868684768676, "o", "d"] +[29.8168684768676, "o", "a"] +[29.846868476867602, "o", "t"] +[29.876868476867603, "o", "a"] +[29.906868476867604, "o", "."] +[29.936868476867605, "o", "y"] +[29.966868476867607, "o", "m"] +[29.996868476867608, "o", "l"] +[30.02686847686761, "o", "\r\n"] +[30.05686847686761, "o", "$"] +[30.08686847686761, "o", " "] +[30.116868476867612, "o", "c"] +[30.146868476867613, "o", "a"] +[30.176868476867615, "o", "t"] +[30.206868476867616, "o", " "] +[30.236868476867617, "o", "d"] +[30.266868476867618, "o", "a"] +[30.29686847686762, "o", "t"] +[30.32686847686762, "o", "a"] +[30.35686847686762, "o", "s"] +[30.386868476867622, "o", "e"] +[30.416868476867624, "o", "t"] +[30.446868476867625, "o", "-"] +[30.476868476867626, "o", "r"] +[30.506868476867627, "o", "e"] +[30.536868476867628, "o", "a"] +[30.56686847686763, "o", "d"] +[30.59686847686763, "o", "m"] +[30.62686847686763, "o", "e"] +[30.656868476867633, "o", "."] +[30.686868476867634, "o", "m"] +[30.716868476867635, "o", "d"] +[30.746868476867636, "o", "\r\n"] +[30.776868476867637, "o", "$"] +[30.80686847686764, "o", " "] +[30.83686847686764, "o", "s"] +[30.86686847686764, "o", "g"] +[30.896868476867642, "o", "r"] +[30.926868476867643, "o", " "] +[30.956868476867644, "o", "c"] +[30.986868476867645, "o", "l"] +[31.016868476867646, "o", "o"] +[31.046868476867648, "o", "u"] +[31.07686847686765, "o", "d"] +[31.10686847686765, "o", " "] +[31.13686847686765, "o", "m"] +[31.166868476867652, "o", "e"] +[31.196868476867653, "o", "t"] +[31.226868476867654, "o", "a"] +[31.256868476867655, "o", "d"] +[31.286868476867657, "o", "a"] +[31.316868476867658, "o", "t"] +[31.34686847686766, "o", "a"] +[31.37686847686766, "o", " "] +[31.40686847686766, "o", "s"] +[31.436868476867662, "o", "p"] +[31.466868476867663, "o", "l"] +[31.496868476867665, "o", "i"] +[31.526868476867666, "o", "t"] +[31.556868476867667, "o", "g"] +[31.586868476867668, "o", "r"] +[31.61686847686767, "o", "a"] +[31.64686847686767, "o", "p"] +[31.67686847686767, "o", "h"] +[31.706868476867673, "o", "-"] +[31.736868476867674, "o", "d"] +[31.766868476867675, "o", "e"] +[31.796868476867676, "o", "m"] +[31.826868476867677, "o", "o"] +[31.856868476867678, "o", "/"] +[31.88686847686768, "o", "w"] +[31.91686847686768, "o", "e"] +[31.94686847686768, "o", "a"] +[31.976868476867683, "o", "t"] +[32.00686847686768, "o", "h"] +[32.03686847686768, "o", "e"] +[32.06686847686768, "o", "r"] +[32.096868476867684, "o", " "] +[32.126868476867685, "o", "d"] +[32.156868476867686, "o", "a"] +[32.18686847686769, "o", "t"] +[32.21686847686769, "o", "a"] +[32.24686847686769, "o", "s"] +[32.27686847686769, "o", "e"] +[32.30686847686769, "o", "t"] +[32.33686847686769, "o", "-"] +[32.366868476867694, "o", "m"] +[32.396868476867695, "o", "e"] +[32.426868476867696, "o", "t"] +[32.4568684768677, "o", "a"] +[32.4868684768677, "o", "d"] +[32.5168684768677, "o", "a"] +[32.5468684768677, "o", "t"] +[32.5768684768677, "o", "a"] +[32.6068684768677, "o", "."] +[32.636868476867704, "o", "y"] +[32.666868476867705, "o", "m"] +[32.69686847686771, "o", "l"] +[32.72686847686771, "o", "\r\n"] +[32.75686847686771, "o", "\u001b[0m"] +[32.78686847686771, "o", "\r\n"] +[32.788470172882114, "o", "# This is a sample dataset metadata file that's used\r\n# to update the dataset's README and description.\r\n\r\nreadme: dataset-readme.md\r\ndescription: Weather history in Raleigh-Durham International airport joined with US domestic flights data (uploaded from Splitgraph release CI)\r\n"] +[32.79365744590763, "o", "# Sample dataset README\r\n\r\nDataset of weather history in Raleigh-Durham International airport, joined with\r\n[US domestic flights data](/splitgraph/domestic_us_flights).\r\n\r\nThis dataset was uploaded from a CI job.\r\n\r\n## Source\r\n\r\n[data.gov](https://catalog.data.gov/dataset/local-weather-archive)\r\n"] +[33.516888999939, "o", "Metadata updated for repository splitgraph-demo/weather.\r\n"] +[33.546888999939, "o", "\u001b[1m"] +[33.576888999939, "o", "\u001b[36m"] +[33.606888999939, "o", "\u001b[91m"] +[33.636888999939, "o", "$"] +[33.666888999939005, "o", " "] +[33.696888999939006, "o", "\u001b[0m"] +[39.62686847686757, "o", "\u001b[H"] +[39.65686847686757, "o", "\u001b[J"] +[39.68686847686757, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Perform a request against an automatically-generated"] +[39.716868476867575, "o", "\r\n"] +[39.746868476867576, "o", "$ # Postgrest (https://postgrest.org) endpoint.\r\n"] +[39.77686847686758, "o", "$"] +[39.80686847686758, "o", " "] +[39.83686847686758, "o", "c"] +[39.86686847686758, "o", "u"] +[39.89686847686758, "o", "r"] +[39.92686847686758, "o", "l"] +[39.956868476867584, "o", " "] +[39.986868476867585, "o", "\""] +[40.016868476867586, "o", "h"] +[40.04686847686759, "o", "t"] +[40.07686847686759, "o", "t"] +[40.10686847686759, "o", "p"] +[40.13686847686759, "o", "s"] +[40.16686847686759, "o", ":"] +[40.19686847686759, "o", "/"] +[40.226868476867594, "o", "/"] +[40.256868476867595, "o", "d"] +[40.286868476867596, "o", "a"] +[40.3168684768676, "o", "t"] +[40.3468684768676, "o", "a"] +[40.3768684768676, "o", "."] +[40.4068684768676, "o", "s"] +[40.4368684768676, "o", "p"] +[40.4668684768676, "o", "l"] +[40.496868476867604, "o", "i"] +[40.526868476867605, "o", "t"] +[40.556868476867606, "o", "g"] +[40.58686847686761, "o", "r"] +[40.61686847686761, "o", "a"] +[40.64686847686761, "o", "p"] +[40.67686847686761, "o", "h"] +[40.70686847686761, "o", "."] +[40.73686847686761, "o", "c"] +[40.766868476867614, "o", "o"] +[40.796868476867616, "o", "m"] +[40.82686847686762, "o", "/"] +[40.85686847686762, "o", "s"] +[40.88686847686762, "o", "p"] +[40.91686847686762, "o", "l"] +[40.94686847686762, "o", "i"] +[40.97686847686762, "o", "t"] +[41.00686847686762, "o", "g"] +[41.036868476867625, "o", "r"] +[41.066868476867626, "o", "a"] +[41.09686847686763, "o", "p"] +[41.12686847686763, "o", "h"] +[41.15686847686763, "o", "-"] +[41.18686847686763, "o", "d"] +[41.21686847686763, "o", "e"] +[41.24686847686763, "o", "m"] +[41.276868476867634, "o", "o"] +[41.306868476867635, "o", "/"] +[41.336868476867636, "o", "w"] +[41.36686847686764, "o", "e"] +[41.39686847686764, "o", "a"] +[41.42686847686764, "o", "t"] +[41.45686847686764, "o", "h"] +[41.48686847686764, "o", "e"] +[41.51686847686764, "o", "r"] +[41.546868476867644, "o", "/"] +[41.576868476867645, "o", "i"] +[41.606868476867646, "o", "n"] +[41.63686847686765, "o", "i"] +[41.66686847686765, "o", "t"] +[41.69686847686765, "o", "i"] +[41.72686847686765, "o", "a"] +[41.75686847686765, "o", "l"] +[41.78686847686765, "o", "_"] +[41.816868476867654, "o", "d"] +[41.846868476867655, "o", "a"] +[41.87686847686766, "o", "t"] +[41.90686847686766, "o", "a"] +[41.93686847686766, "o", "/"] +[41.96686847686766, "o", "-"] +[41.99686847686766, "o", "/"] +[42.02686847686766, "o", "r"] +[42.05686847686766, "o", "e"] +[42.086868476867664, "o", "s"] +[42.116868476867666, "o", "t"] +[42.14686847686767, "o", "/"] +[42.17686847686767, "o", "r"] +[42.20686847686767, "o", "d"] +[42.23686847686767, "o", "u"] +[42.26686847686767, "o", "?"] +[42.29686847686767, "o", "d"] +[42.32686847686767, "o", "a"] +[42.356868476867675, "o", "t"] +[42.386868476867676, "o", "e"] +[42.41686847686768, "o", "="] +[42.44686847686768, "o", "e"] +[42.47686847686768, "o", "q"] +[42.50686847686768, "o", "."] +[42.53686847686768, "o", "2"] +[42.56686847686768, "o", "0"] +[42.596868476867684, "o", "0"] +[42.626868476867685, "o", "9"] +[42.656868476867686, "o", "-"] +[42.68686847686769, "o", "0"] +[42.71686847686769, "o", "8"] +[42.74686847686769, "o", "-"] +[42.77686847686769, "o", "2"] +[42.80686847686769, "o", "5"] +[42.83686847686769, "o", "T"] +[42.866868476867694, "o", "0"] +[42.896868476867695, "o", "0"] +[42.926868476867696, "o", ":"] +[42.9568684768677, "o", "0"] +[42.9868684768677, "o", "0"] +[43.0168684768677, "o", ":"] +[43.0468684768677, "o", "0"] +[43.0768684768677, "o", "0"] +[43.1068684768677, "o", "\""] +[43.136868476867704, "o", "\r\n"] +[43.166868476867705, "o", "\u001b[0m"] +[43.19686847686771, "o", "\r\n"] +[44.19686847686771, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[44.22686847686771, "o", "\u001b[1m"] +[44.25686847686771, "o", "\u001b[36m"] +[44.28686847686771, "o", "\u001b[91m"] +[44.31686847686771, "o", "$"] +[44.34686847686771, "o", " "] +[44.37686847686771, "o", "\u001b[0m"] +[49.406868476867714, "o", "\u001b[H"] +[49.436868476867716, "o", "\u001b[J"] +[49.46686847686772, "o", "\u001b[1m\u001b[36m\u001b[91m$ # sgr also has a shorthand to access the query API"] +[49.49686847686772, "o", "\r\n"] +[49.52686847686772, "o", "$"] +[49.55686847686772, "o", " "] +[49.58686847686772, "o", "s"] +[49.61686847686772, "o", "g"] +[49.64686847686772, "o", "r"] +[49.676868476867725, "o", " "] +[49.706868476867726, "o", "c"] +[49.73686847686773, "o", "l"] +[49.76686847686773, "o", "o"] +[49.79686847686773, "o", "u"] +[49.82686847686773, "o", "d"] +[49.85686847686773, "o", " "] +[49.88686847686773, "o", "c"] +[49.916868476867734, "o", "u"] +[49.946868476867735, "o", "r"] +[49.976868476867736, "o", "l"] +[50.00686847686774, "o", " "] +[50.03686847686774, "o", "s"] +[50.06686847686774, "o", "p"] +[50.09686847686774, "o", "l"] +[50.12686847686774, "o", "i"] +[50.15686847686774, "o", "t"] +[50.186868476867744, "o", "g"] +[50.216868476867745, "o", "r"] +[50.246868476867746, "o", "a"] +[50.27686847686775, "o", "p"] +[50.30686847686775, "o", "h"] +[50.33686847686775, "o", "-"] +[50.36686847686775, "o", "d"] +[50.39686847686775, "o", "e"] +[50.42686847686775, "o", "m"] +[50.456868476867754, "o", "o"] +[50.486868476867755, "o", "/"] +[50.51686847686776, "o", "w"] +[50.54686847686776, "o", "e"] +[50.57686847686776, "o", "a"] +[50.60686847686776, "o", "t"] +[50.63686847686776, "o", "h"] +[50.66686847686776, "o", "e"] +[50.69686847686776, "o", "r"] +[50.726868476867764, "o", ":"] +[50.756868476867766, "o", "i"] +[50.78686847686777, "o", "n"] +[50.81686847686777, "o", "i"] +[50.84686847686777, "o", "t"] +[50.87686847686777, "o", "i"] +[50.90686847686777, "o", "a"] +[50.93686847686777, "o", "l"] +[50.96686847686777, "o", "_"] +[50.996868476867775, "o", "d"] +[51.026868476867776, "o", "a"] +[51.05686847686778, "o", "t"] +[51.08686847686778, "o", "a"] +[51.11686847686778, "o", " "] +[51.14686847686778, "o", "\""] +[51.17686847686778, "o", "r"] +[51.20686847686778, "o", "d"] +[51.236868476867784, "o", "u"] +[51.266868476867785, "o", "?"] +[51.296868476867786, "o", "d"] +[51.32686847686779, "o", "a"] +[51.35686847686779, "o", "t"] +[51.38686847686779, "o", "e"] +[51.41686847686779, "o", "="] +[51.44686847686779, "o", "e"] +[51.47686847686779, "o", "q"] +[51.506868476867794, "o", "."] +[51.536868476867795, "o", "2"] +[51.566868476867796, "o", "0"] +[51.5968684768678, "o", "0"] +[51.6268684768678, "o", "9"] +[51.6568684768678, "o", "-"] +[51.6868684768678, "o", "0"] +[51.7168684768678, "o", "8"] +[51.7468684768678, "o", "-"] +[51.776868476867804, "o", "2"] +[51.806868476867805, "o", "5"] +[51.83686847686781, "o", "T"] +[51.86686847686781, "o", "0"] +[51.89686847686781, "o", "0"] +[51.92686847686781, "o", ":"] +[51.95686847686781, "o", "0"] +[51.98686847686781, "o", "0"] +[52.01686847686781, "o", ":"] +[52.046868476867814, "o", "0"] +[52.076868476867816, "o", "0"] +[52.10686847686782, "o", "\""] +[52.13686847686782, "o", "\r\n"] +[52.16686847686782, "o", "\u001b[0m"] +[52.19686847686782, "o", "\r\n"] +[52.97439247131362, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[53.00439247131362, "o", "\u001b[1m"] +[53.03439247131362, "o", "\u001b[36m"] +[53.064392471313624, "o", "\u001b[91m"] +[53.094392471313625, "o", "$"] +[53.12439247131363, "o", " "] +[53.15439247131363, "o", "\u001b[0m"] +[58.18439247131363, "o", "\u001b[H"] +[58.21439247131363, "o", "\u001b[J"] +[58.24439247131363, "o", "\u001b[1m\u001b[36m\u001b[91m$ # You can also run a query against the Splitgraph Data Delivery Network."] +[58.27439247131363, "o", "\r\n"] +[58.30439247131363, "o", "$ # It supports most PostgresSQL clients and lets you query Splitgraph images and other\r\n"] +[58.334392471313635, "o", "$ # datasets proxied by Splitgraph.\r\n"] +[58.364392471313636, "o", "$"] +[58.39439247131364, "o", " "] +[58.42439247131364, "o", "s"] +[58.45439247131364, "o", "g"] +[58.48439247131364, "o", "r"] +[58.51439247131364, "o", " "] +[58.54439247131364, "o", "c"] +[58.574392471313644, "o", "l"] +[58.604392471313645, "o", "o"] +[58.634392471313646, "o", "u"] +[58.66439247131365, "o", "d"] +[58.69439247131365, "o", " "] +[58.72439247131365, "o", "s"] +[58.75439247131365, "o", "q"] +[58.78439247131365, "o", "l"] +[58.81439247131365, "o", " "] +[58.844392471313654, "o", "\""] +[58.874392471313655, "o", "S"] +[58.904392471313656, "o", "E"] +[58.93439247131366, "o", "L"] +[58.96439247131366, "o", "E"] +[58.99439247131366, "o", "C"] +[59.02439247131366, "o", "T"] +[59.05439247131366, "o", " "] +[59.08439247131366, "o", "d"] +[59.114392471313664, "o", "a"] +[59.144392471313665, "o", "t"] +[59.174392471313666, "o", "e"] +[59.20439247131367, "o", ","] +[59.23439247131367, "o", " "] +[59.26439247131367, "o", "t"] +[59.29439247131367, "o", "e"] +[59.32439247131367, "o", "m"] +[59.35439247131367, "o", "p"] +[59.384392471313674, "o", "e"] +[59.414392471313676, "o", "r"] +[59.44439247131368, "o", "a"] +[59.47439247131368, "o", "t"] +[59.50439247131368, "o", "u"] +[59.53439247131368, "o", "r"] +[59.56439247131368, "o", "e"] +[59.59439247131368, "o", "m"] +[59.62439247131368, "o", "i"] +[59.654392471313685, "o", "n"] +[59.684392471313686, "o", ","] +[59.71439247131369, "o", " "] +[59.74439247131369, "o", "t"] +[59.77439247131369, "o", "e"] +[59.80439247131369, "o", "m"] +[59.83439247131369, "o", "p"] +[59.86439247131369, "o", "e"] +[59.894392471313694, "o", "r"] +[59.924392471313695, "o", "a"] +[59.954392471313696, "o", "t"] +[59.9843924713137, "o", "u"] +[60.0143924713137, "o", "r"] +[60.0443924713137, "o", "e"] +[60.0743924713137, "o", "m"] +[60.1043924713137, "o", "a"] +[60.1343924713137, "o", "x"] +[60.164392471313704, "o", "\r\n "] +[60.194392471313705, "o", "F"] +[60.224392471313706, "o", "R"] +[60.25439247131371, "o", "O"] +[60.28439247131371, "o", "M"] +[60.31439247131371, "o", " "] +[60.34439247131371, "o", "\\"] +[60.37439247131371, "o", "\""] +[60.40439247131371, "o", "s"] +[60.434392471313714, "o", "p"] +[60.464392471313715, "o", "l"] +[60.494392471313716, "o", "i"] +[60.52439247131372, "o", "t"] +[60.55439247131372, "o", "g"] +[60.58439247131372, "o", "r"] +[60.61439247131372, "o", "a"] +[60.64439247131372, "o", "p"] +[60.67439247131372, "o", "h"] +[60.704392471313724, "o", "-"] +[60.734392471313726, "o", "d"] +[60.76439247131373, "o", "e"] +[60.79439247131373, "o", "m"] +[60.82439247131373, "o", "o"] +[60.85439247131373, "o", "/"] +[60.88439247131373, "o", "w"] +[60.91439247131373, "o", "e"] +[60.94439247131373, "o", "a"] +[60.974392471313735, "o", "t"] +[61.004392471313736, "o", "h"] +[61.03439247131374, "o", "e"] +[61.06439247131374, "o", "r"] +[61.09439247131374, "o", ":"] +[61.12439247131374, "o", "i"] +[61.15439247131374, "o", "n"] +[61.18439247131374, "o", "i"] +[61.214392471313744, "o", "t"] +[61.244392471313745, "o", "i"] +[61.274392471313746, "o", "a"] +[61.30439247131375, "o", "l"] +[61.33439247131375, "o", "_"] +[61.36439247131375, "o", "d"] +[61.39439247131375, "o", "a"] +[61.42439247131375, "o", "t"] +[61.45439247131375, "o", "a"] +[61.484392471313754, "o", "\\"] +[61.514392471313755, "o", "\""] +[61.544392471313756, "o", "."] +[61.57439247131376, "o", "r"] +[61.60439247131376, "o", "d"] +[61.63439247131376, "o", "u"] +[61.66439247131376, "o", "\r\n "] +[61.69439247131376, "o", "W"] +[61.72439247131376, "o", "H"] +[61.754392471313764, "o", "E"] +[61.784392471313765, "o", "R"] +[61.81439247131377, "o", "E"] +[61.84439247131377, "o", " "] +[61.87439247131377, "o", "d"] +[61.90439247131377, "o", "a"] +[61.93439247131377, "o", "t"] +[61.96439247131377, "o", "e"] +[61.99439247131377, "o", "_"] +[62.024392471313774, "o", "t"] +[62.054392471313776, "o", "r"] +[62.08439247131378, "o", "u"] +[62.11439247131378, "o", "n"] +[62.14439247131378, "o", "c"] +[62.17439247131378, "o", "("] +[62.20439247131378, "o", "'"] +[62.23439247131378, "o", "m"] +[62.26439247131378, "o", "o"] +[62.294392471313785, "o", "n"] +[62.324392471313786, "o", "t"] +[62.35439247131379, "o", "h"] +[62.38439247131379, "o", "'"] +[62.41439247131379, "o", ","] +[62.44439247131379, "o", " "] +[62.47439247131379, "o", "d"] +[62.50439247131379, "o", "a"] +[62.534392471313794, "o", "t"] +[62.564392471313795, "o", "e"] +[62.594392471313796, "o", ")"] +[62.6243924713138, "o", " "] +[62.6543924713138, "o", "="] +[62.6843924713138, "o", " "] +[62.7143924713138, "o", "'"] +[62.7443924713138, "o", "2"] +[62.7743924713138, "o", "0"] +[62.804392471313804, "o", "0"] +[62.834392471313805, "o", "9"] +[62.864392471313806, "o", "-"] +[62.89439247131381, "o", "0"] +[62.92439247131381, "o", "8"] +[62.95439247131381, "o", "-"] +[62.98439247131381, "o", "0"] +[63.01439247131381, "o", "1"] +[63.04439247131381, "o", "'"] +[63.074392471313814, "o", "\""] +[63.104392471313815, "o", "\r\n"] +[63.13439247131382, "o", "\u001b[0m"] +[63.16439247131382, "o", "\r\n"] +[64.16439247131382, "o", "2009-08-01 00:00:00 73 91.9\r\n2009-08-02 00:00:00 73.9 82.9\r\n2009-08-03 00:00:00 70 95\r\n2009-08-04 00:00:00 66.9 95\r\n2009-08-05 00:00:00 72 96.1\r\n2009-08-06 00:00:00 70 84.9\r\n2009-08-07 00:00:00 68 88\r\n2009-08-08 00:00:00 69.1 91\r\n2009-08-09 00:00:00 70 99\r\n2009-08-10 00:00:00 72 99\r\n"] +[64.19439247131382, "o", "\u001b[1m"] +[64.22439247131382, "o", "\u001b[36m"] +[64.25439247131382, "o", "\u001b[91m"] +[64.28439247131382, "o", "$"] +[64.31439247131382, "o", " "] +[64.34439247131382, "o", "\u001b[0m"] +[69.37439247131383, "o", "\u001b[H"] +[69.40439247131383, "o", "\u001b[J"] +[69.43439247131383, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The query API also supports running one-off Splitfile commands against a repository,"] +[69.46439247131383, "o", "\r\n"] +[69.49439247131383, "o", "$ # creating new images that can be pulled. sgr handles authentication for this automatically.\r\n"] +[69.52439247131383, "o", "$"] +[69.55439247131383, "o", " "] +[69.58439247131383, "o", "c"] +[69.61439247131383, "o", "a"] +[69.64439247131384, "o", "t"] +[69.67439247131384, "o", " "] +[69.70439247131384, "o", "r"] +[69.73439247131384, "o", "e"] +[69.76439247131384, "o", "q"] +[69.79439247131384, "o", "u"] +[69.82439247131384, "o", "e"] +[69.85439247131384, "o", "s"] +[69.88439247131384, "o", "t"] +[69.91439247131385, "o", "_"] +[69.94439247131385, "o", "1"] +[69.97439247131385, "o", "."] +[70.00439247131385, "o", "j"] +[70.03439247131385, "o", "s"] +[70.06439247131385, "o", "o"] +[70.09439247131385, "o", "n"] +[70.12439247131385, "o", "\r\n"] +[70.15439247131386, "o", "$"] +[70.18439247131386, "o", " "] +[70.21439247131386, "o", "s"] +[70.24439247131386, "o", "g"] +[70.27439247131386, "o", "r"] +[70.30439247131386, "o", " "] +[70.33439247131386, "o", "c"] +[70.36439247131386, "o", "l"] +[70.39439247131386, "o", "o"] +[70.42439247131387, "o", "u"] +[70.45439247131387, "o", "d"] +[70.48439247131387, "o", " "] +[70.51439247131387, "o", "c"] +[70.54439247131387, "o", "u"] +[70.57439247131387, "o", "r"] +[70.60439247131387, "o", "l"] +[70.63439247131387, "o", " "] +[70.66439247131387, "o", "-"] +[70.69439247131388, "o", "t"] +[70.72439247131388, "o", " "] +[70.75439247131388, "o", "s"] +[70.78439247131388, "o", "p"] +[70.81439247131388, "o", "l"] +[70.84439247131388, "o", "i"] +[70.87439247131388, "o", "t"] +[70.90439247131388, "o", "f"] +[70.93439247131388, "o", "i"] +[70.96439247131389, "o", "l"] +[70.99439247131389, "o", "e"] +[71.02439247131389, "o", " "] +[71.05439247131389, "o", "s"] +[71.08439247131389, "o", "p"] +[71.11439247131389, "o", "l"] +[71.14439247131389, "o", "i"] +[71.1743924713139, "o", "t"] +[71.2043924713139, "o", "g"] +[71.2343924713139, "o", "r"] +[71.2643924713139, "o", "a"] +[71.2943924713139, "o", "p"] +[71.3243924713139, "o", "h"] +[71.3543924713139, "o", "-"] +[71.3843924713139, "o", "d"] +[71.4143924713139, "o", "e"] +[71.4443924713139, "o", "m"] +[71.4743924713139, "o", "o"] +[71.5043924713139, "o", "/"] +[71.53439247131391, "o", "w"] +[71.56439247131391, "o", "e"] +[71.59439247131391, "o", "a"] +[71.62439247131391, "o", "t"] +[71.65439247131391, "o", "h"] +[71.68439247131391, "o", "e"] +[71.71439247131391, "o", "r"] +[71.74439247131392, "o", ":"] +[71.77439247131392, "o", "i"] +[71.80439247131392, "o", "n"] +[71.83439247131392, "o", "i"] +[71.86439247131392, "o", "t"] +[71.89439247131392, "o", "i"] +[71.92439247131392, "o", "a"] +[71.95439247131392, "o", "l"] +[71.98439247131392, "o", "_"] +[72.01439247131393, "o", "d"] +[72.04439247131393, "o", "a"] +[72.07439247131393, "o", "t"] +[72.10439247131393, "o", "a"] +[72.13439247131393, "o", " "] +[72.16439247131393, "o", "@"] +[72.19439247131393, "o", "r"] +[72.22439247131393, "o", "e"] +[72.25439247131393, "o", "q"] +[72.28439247131394, "o", "u"] +[72.31439247131394, "o", "e"] +[72.34439247131394, "o", "s"] +[72.37439247131394, "o", "t"] +[72.40439247131394, "o", "_"] +[72.43439247131394, "o", "1"] +[72.46439247131394, "o", "."] +[72.49439247131394, "o", "j"] +[72.52439247131394, "o", "s"] +[72.55439247131395, "o", "o"] +[72.58439247131395, "o", "n"] +[72.61439247131395, "o", "\r\n"] +[72.64439247131395, "o", "\u001b[0m"] +[72.67439247131395, "o", "\r\n"] +[72.67622042655992, "o", "{\"command\": \"FROM splitgraph/domestic_us_flights:latest IMPORT {SELECT fly_month, SUM(passengers) AS total_passengers FROM flights WHERE origin_airport = 'RDU' OR destination_airport = 'RDU' GROUP BY fly_month ORDER BY fly_month} AS flights\",\r\n \"tag\": \"with_flight_data\"}\r\n\r\n"] +[73.67622042655992, "o", "{\"image_hash\":\"e8b851aecd22c30dff035fc520deb9b4e3158182f9f5e95e1f7be855b1fff08a\"}"] +[73.70622042655992, "o", "\u001b[1m"] +[73.73622042655992, "o", "\u001b[36m"] +[73.76622042655993, "o", "\u001b[91m"] +[73.79622042655993, "o", "$"] +[73.82622042655993, "o", " "] +[73.85622042655993, "o", "\u001b[0m"] +[78.88622042655993, "o", "\u001b[H"] +[78.91622042655993, "o", "\u001b[J"] +[78.94622042655993, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run another command against the new layer to join the two datasets"] +[78.97622042655993, "o", "\r\n"] +[79.00622042655993, "o", "$"] +[79.03622042655994, "o", " "] +[79.06622042655994, "o", "c"] +[79.09622042655994, "o", "a"] +[79.12622042655994, "o", "t"] +[79.15622042655994, "o", " "] +[79.18622042655994, "o", "r"] +[79.21622042655994, "o", "e"] +[79.24622042655994, "o", "q"] +[79.27622042655995, "o", "u"] +[79.30622042655995, "o", "e"] +[79.33622042655995, "o", "s"] +[79.36622042655995, "o", "t"] +[79.39622042655995, "o", "_"] +[79.42622042655995, "o", "2"] +[79.45622042655995, "o", "."] +[79.48622042655995, "o", "j"] +[79.51622042655995, "o", "s"] +[79.54622042655996, "o", "o"] +[79.57622042655996, "o", "n"] +[79.60622042655996, "o", "\r\n"] +[79.63622042655996, "o", "$"] +[79.66622042655996, "o", " "] +[79.69622042655996, "o", "s"] +[79.72622042655996, "o", "g"] +[79.75622042655996, "o", "r"] +[79.78622042655996, "o", " "] +[79.81622042655997, "o", "c"] +[79.84622042655997, "o", "l"] +[79.87622042655997, "o", "o"] +[79.90622042655997, "o", "u"] +[79.93622042655997, "o", "d"] +[79.96622042655997, "o", " "] +[79.99622042655997, "o", "c"] +[80.02622042655997, "o", "u"] +[80.05622042655997, "o", "r"] +[80.08622042655998, "o", "l"] +[80.11622042655998, "o", " "] +[80.14622042655998, "o", "-"] +[80.17622042655998, "o", "t"] +[80.20622042655998, "o", " "] +[80.23622042655998, "o", "s"] +[80.26622042655998, "o", "p"] +[80.29622042655998, "o", "l"] +[80.32622042655998, "o", "i"] +[80.35622042655999, "o", "t"] +[80.38622042655999, "o", "f"] +[80.41622042655999, "o", "i"] +[80.44622042655999, "o", "l"] +[80.47622042655999, "o", "e"] +[80.50622042655999, "o", " "] +[80.53622042655999, "o", "s"] +[80.56622042656, "o", "p"] +[80.59622042656, "o", "l"] +[80.62622042656, "o", "i"] +[80.65622042656, "o", "t"] +[80.68622042656, "o", "g"] +[80.71622042656, "o", "r"] +[80.74622042656, "o", "a"] +[80.77622042656, "o", "p"] +[80.80622042656, "o", "h"] +[80.83622042656, "o", "-"] +[80.86622042656, "o", "d"] +[80.89622042656, "o", "e"] +[80.92622042656001, "o", "m"] +[80.95622042656001, "o", "o"] +[80.98622042656001, "o", "/"] +[81.01622042656001, "o", "w"] +[81.04622042656001, "o", "e"] +[81.07622042656001, "o", "a"] +[81.10622042656001, "o", "t"] +[81.13622042656002, "o", "h"] +[81.16622042656002, "o", "e"] +[81.19622042656002, "o", "r"] +[81.22622042656002, "o", ":"] +[81.25622042656002, "o", "w"] +[81.28622042656002, "o", "i"] +[81.31622042656002, "o", "t"] +[81.34622042656002, "o", "h"] +[81.37622042656002, "o", "_"] +[81.40622042656003, "o", "f"] +[81.43622042656003, "o", "l"] +[81.46622042656003, "o", "i"] +[81.49622042656003, "o", "g"] +[81.52622042656003, "o", "h"] +[81.55622042656003, "o", "t"] +[81.58622042656003, "o", "_"] +[81.61622042656003, "o", "d"] +[81.64622042656003, "o", "a"] +[81.67622042656004, "o", "t"] +[81.70622042656004, "o", "a"] +[81.73622042656004, "o", " "] +[81.76622042656004, "o", "@"] +[81.79622042656004, "o", "r"] +[81.82622042656004, "o", "e"] +[81.85622042656004, "o", "q"] +[81.88622042656004, "o", "u"] +[81.91622042656005, "o", "e"] +[81.94622042656005, "o", "s"] +[81.97622042656005, "o", "t"] +[82.00622042656005, "o", "_"] +[82.03622042656005, "o", "2"] +[82.06622042656005, "o", "."] +[82.09622042656005, "o", "j"] +[82.12622042656005, "o", "s"] +[82.15622042656005, "o", "o"] +[82.18622042656006, "o", "n"] +[82.21622042656006, "o", "\r\n"] +[82.24622042656006, "o", "\u001b[0m"] +[82.27622042656006, "o", "\r\n"] +[82.27794657707275, "o", "{\"command\": \"SQL CREATE TABLE rdu_flights_weather AS ( WITH monthly_summary AS (SELECT date_trunc ('month', date) AS month, AVG(temperaturemin) AS tmin_avg, AVG(temperaturemax) AS tmax_avg FROM rdu GROUP BY month) SELECT w.month, w.tmin_avg, w.tmax_avg, f.total_passengers FROM monthly_summary w JOIN flights f ON w.month = f.fly_month)\",\r\n \"tag\": \"joined_data\"}\r\n\r\n"] +[83.27794657707275, "o", "{\"image_hash\":\"2ba354af47468cd6649aa1f81003fa9f8ea47a2c8ee5459e84a8dd3f76941a35\"}"] +[83.30794657707276, "o", "\u001b[1m"] +[83.33794657707276, "o", "\u001b[36m"] +[83.36794657707276, "o", "\u001b[91m"] +[83.39794657707276, "o", "$"] +[83.42794657707276, "o", " "] +[83.45794657707276, "o", "\u001b[0m"] +[88.48794657707276, "o", "\u001b[H"] +[88.51794657707276, "o", "\u001b[J"] +[88.54794657707276, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Pull the dataset and check out the new image"] +[88.57794657707277, "o", "\r\n"] +[88.60794657707277, "o", "$"] +[88.63794657707277, "o", " "] +[88.66794657707277, "o", "s"] +[88.69794657707277, "o", "g"] +[88.72794657707277, "o", "r"] +[88.75794657707277, "o", " "] +[88.78794657707277, "o", "p"] +[88.81794657707277, "o", "u"] +[88.84794657707278, "o", "l"] +[88.87794657707278, "o", "l"] +[88.90794657707278, "o", " "] +[88.93794657707278, "o", "w"] +[88.96794657707278, "o", "e"] +[88.99794657707278, "o", "a"] +[89.02794657707278, "o", "t"] +[89.05794657707278, "o", "h"] +[89.08794657707278, "o", "e"] +[89.11794657707279, "o", "r"] +[89.14794657707279, "o", "\r\n"] +[89.17794657707279, "o", "$"] +[89.20794657707279, "o", " "] +[89.23794657707279, "o", "s"] +[89.26794657707279, "o", "g"] +[89.29794657707279, "o", "r"] +[89.3279465770728, "o", " "] +[89.3579465770728, "o", "c"] +[89.3879465770728, "o", "h"] +[89.4179465770728, "o", "e"] +[89.4479465770728, "o", "c"] +[89.4779465770728, "o", "k"] +[89.5079465770728, "o", "o"] +[89.5379465770728, "o", "u"] +[89.5679465770728, "o", "t"] +[89.5979465770728, "o", " "] +[89.6279465770728, "o", "w"] +[89.6579465770728, "o", "e"] +[89.68794657707281, "o", "a"] +[89.71794657707281, "o", "t"] +[89.74794657707281, "o", "h"] +[89.77794657707281, "o", "e"] +[89.80794657707281, "o", "r"] +[89.83794657707281, "o", ":"] +[89.86794657707281, "o", "j"] +[89.89794657707282, "o", "o"] +[89.92794657707282, "o", "i"] +[89.95794657707282, "o", "n"] +[89.98794657707282, "o", "e"] +[90.01794657707282, "o", "d"] +[90.04794657707282, "o", "_"] +[90.07794657707282, "o", "d"] +[90.10794657707282, "o", "a"] +[90.13794657707282, "o", "t"] +[90.16794657707283, "o", "a"] +[90.19794657707283, "o", "\r\n"] +[90.22794657707283, "o", "\u001b[0m"] +[90.25794657707283, "o", "\r\n"] +[90.47707184791633, "o", "Gathering remote metadata...\r\n"] +[91.47707184791633, "o", "Fetched metadata for 2 images, 5 tables, 2 objects and 2 tags.\r\n"] +[91.74029501915047, "o", "Need to download 1 object (3.02 KiB), cache occupancy: 0.00 B/10.00 GiB\r\n"] +[91.79623850822517, "o", "Fetching 1 object, total size 3.02 KiB\r\n"] +[91.79894551277229, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (ca446922b2844ed19f8e6c8b35edbe31@data.splitgraph.com:5432/sgregistry)...\r\n"] +[92.79894551277229, "o", "\r 0%| | 0/1 [00:00 4a832e4a1b62\r\n"] +[35.189921894073564, "o", "\u001b[1m\r\nStep 2/3 : FROM splitgraph/2016_election IMPORT { SELECT lpad(co...\u001b[0m\r\n"] +[35.19100884437569, "o", "Resolving repository splitgraph/2016_election\r\n"] +[35.99847058296211, "o", "Gathering remote metadata...\r\n"] +[36.99847058296211, "o", "Fetched metadata for 1 image, 1 table, 20 objects and 1 tag.\r\n"] +[37.01954964637764, "o", "Importing 1 table from splitgraph/2016_election:3835145ada3f into qoz_vote_fraction\r\n"] +[38.01954964637764, "o", "Processing table sg_tmp_89bd98ee93ebdf4334c132de4873dc46\r\n"] +[38.33762077331551, "o", " ---> 105f0cc16f07\r\n"] +[38.34182695388802, "o", "\u001b[1m\r\nStep 3/3 : SQL { CREATE TABLE qoz_vote_fraction AS SELECT ...\u001b[0m\r\n"] +[38.35441020965584, "o", "Executing SQL...\r\n"] +[38.36956576347359, "o", "Committing qoz_vote_fraction...\r\n"] +[38.401055374145585, "o", "Processing table qoz_vote_fraction\r\n"] +[38.533283748626786, "o", " ---> 2fd53f55d05e\r\n"] +[38.53734544754036, "o", "Successfully built qoz_vote_fraction:2fd53f55d05e.\r\n"] +[38.56734544754036, "o", "\u001b[1m"] +[38.59734544754036, "o", "\u001b[36m"] +[38.627345447540364, "o", "\u001b[91m"] +[38.657345447540365, "o", "$"] +[38.687345447540366, "o", " "] +[38.71734544754037, "o", "\u001b[0m"] +[44.03, "o", "\u001b[H"] +[44.06, "o", "\u001b[J"] +[44.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the dataset metadata"] +[44.120000000000005, "o", "\r\n"] +[44.150000000000006, "o", "$"] +[44.18000000000001, "o", " "] +[44.21000000000001, "o", "s"] +[44.24000000000001, "o", "g"] +[44.27000000000001, "o", "r"] +[44.30000000000001, "o", " "] +[44.33000000000001, "o", "s"] +[44.360000000000014, "o", "h"] +[44.390000000000015, "o", "o"] +[44.420000000000016, "o", "w"] +[44.45000000000002, "o", " "] +[44.48000000000002, "o", "q"] +[44.51000000000002, "o", "o"] +[44.54000000000002, "o", "z"] +[44.57000000000002, "o", "_"] +[44.60000000000002, "o", "v"] +[44.630000000000024, "o", "o"] +[44.660000000000025, "o", "t"] +[44.690000000000026, "o", "e"] +[44.72000000000003, "o", "_"] +[44.75000000000003, "o", "f"] +[44.78000000000003, "o", "r"] +[44.81000000000003, "o", "a"] +[44.84000000000003, "o", "c"] +[44.87000000000003, "o", "t"] +[44.900000000000034, "o", "i"] +[44.930000000000035, "o", "o"] +[44.960000000000036, "o", "n"] +[44.99000000000004, "o", "\r\n"] +[45.02000000000004, "o", "$"] +[45.05000000000004, "o", " "] +[45.08000000000004, "o", "s"] +[45.11000000000004, "o", "g"] +[45.14000000000004, "o", "r"] +[45.170000000000044, "o", " "] +[45.200000000000045, "o", "t"] +[45.23000000000005, "o", "a"] +[45.26000000000005, "o", "b"] +[45.29000000000005, "o", "l"] +[45.32000000000005, "o", "e"] +[45.35000000000005, "o", " "] +[45.38000000000005, "o", "q"] +[45.41000000000005, "o", "o"] +[45.440000000000055, "o", "z"] +[45.470000000000056, "o", "_"] +[45.50000000000006, "o", "v"] +[45.53000000000006, "o", "o"] +[45.56000000000006, "o", "t"] +[45.59000000000006, "o", "e"] +[45.62000000000006, "o", "_"] +[45.65000000000006, "o", "f"] +[45.680000000000064, "o", "r"] +[45.710000000000065, "o", "a"] +[45.740000000000066, "o", "c"] +[45.77000000000007, "o", "t"] +[45.80000000000007, "o", "i"] +[45.83000000000007, "o", "o"] +[45.86000000000007, "o", "n"] +[45.89000000000007, "o", " "] +[45.92000000000007, "o", "q"] +[45.950000000000074, "o", "o"] +[45.980000000000075, "o", "z"] +[46.010000000000076, "o", "_"] +[46.04000000000008, "o", "v"] +[46.07000000000008, "o", "o"] +[46.10000000000008, "o", "t"] +[46.13000000000008, "o", "e"] +[46.16000000000008, "o", "_"] +[46.19000000000008, "o", "f"] +[46.220000000000084, "o", "r"] +[46.250000000000085, "o", "a"] +[46.280000000000086, "o", "c"] +[46.31000000000009, "o", "t"] +[46.34000000000009, "o", "i"] +[46.37000000000009, "o", "o"] +[46.40000000000009, "o", "n"] +[46.43000000000009, "o", "\r\n"] +[46.46000000000009, "o", "\u001b[0m"] +[46.490000000000094, "o", "\r\n"] +[46.71804260253916, "o", "Image qoz_vote_fraction:2fd53f55d05e97d62ffba88cb98f010eb4a3a42143b94711bc7a19338157748e\r\n"] +[46.718059053421115, "o", " CREATE TABLE qoz_vote_fraction AS SELECT v.county_id, COALESCE(qoz_tract_fraction, 0) AS qoz_tract_fraction, trump_vote_fraction, clinton_vote_fraction, total_votes FROM vote_fraction v LEFT JOIN qoz_tract_fraction q ON q.county_id = v.county_id WHERE v.county_id IS NOT NULL; ALTER TABLE qoz_vote_fraction ADD PRIMARY KEY (county_id);\r\nCreated at 2021-04-07T15:51:48.773959\r\n"] +[46.71934746742258, "o", "Size: 220.67 KiB\r\n"] +[46.719359388351535, "o", "Parent: 105f0cc16f0756e1fab3e8e4a9cb50d704b35dbad72fdf6513e3862c84353562\r\n\r\nTables:\r\n"] +[46.719993820190524, "o", " qoz_tract_fraction\r\n"] +[46.72000621795664, "o", " qoz_vote_fraction\r\n vote_fraction\r\n"] +[46.966246595382785, "o", "Table qoz_vote_fraction:2fd53f55d05e97d62ffba88cb98f010eb4a3a42143b94711bc7a19338157748e/qoz_vote_fraction\r\n\r\n"] +[46.96722744941721, "o", "Size: 107.08 KiB\r\n"] +[46.96810220718393, "o", "Rows: 3114\r\n"] +[46.96811579704294, "o", "Columns: \r\n county_id (text, PK)\r\n qoz_tract_fraction (numeric)\r\n trump_vote_fraction (numeric)\r\n clinton_vote_fraction (numeric)\r\n total_votes (numeric)\r\n\r\nObjects: \r\n oc423b7e057e6f48cb616bea1291248f22eafeeb17231ae9b8a0de978cbeccf\r\n"] +[46.99811579704294, "o", "\u001b[1m"] +[47.02811579704294, "o", "\u001b[36m"] +[47.058115797042944, "o", "\u001b[91m"] +[47.088115797042946, "o", "$"] +[47.11811579704295, "o", " "] +[47.14811579704295, "o", "\u001b[0m"] +[57.53, "o", "\u001b[H"] +[57.56, "o", "\u001b[J"] +[57.59, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get the data for New York County (FIPS 36061)"] +[57.620000000000005, "o", "\r\n"] +[57.650000000000006, "o", "$"] +[57.68000000000001, "o", " "] +[57.71000000000001, "o", "s"] +[57.74000000000001, "o", "g"] +[57.77000000000001, "o", "r"] +[57.80000000000001, "o", " "] +[57.83000000000001, "o", "s"] +[57.860000000000014, "o", "q"] +[57.890000000000015, "o", "l"] +[57.920000000000016, "o", " "] +[57.95000000000002, "o", "-"] +[57.98000000000002, "o", "s"] +[58.01000000000002, "o", " "] +[58.04000000000002, "o", "q"] +[58.07000000000002, "o", "o"] +[58.10000000000002, "o", "z"] +[58.130000000000024, "o", "_"] +[58.160000000000025, "o", "v"] +[58.190000000000026, "o", "o"] +[58.22000000000003, "o", "t"] +[58.25000000000003, "o", "e"] +[58.28000000000003, "o", "_"] +[58.31000000000003, "o", "f"] +[58.34000000000003, "o", "r"] +[58.37000000000003, "o", "a"] +[58.400000000000034, "o", "c"] +[58.430000000000035, "o", "t"] +[58.460000000000036, "o", "i"] +[58.49000000000004, "o", "o"] +[58.52000000000004, "o", "n"] +[58.55000000000004, "o", " "] +[58.58000000000004, "o", "\\"] +[58.61000000000004, "o", "\r\n "] +[58.64000000000004, "o", "\""] +[58.670000000000044, "o", "S"] +[58.700000000000045, "o", "E"] +[58.73000000000005, "o", "L"] +[58.76000000000005, "o", "E"] +[58.79000000000005, "o", "C"] +[58.82000000000005, "o", "T"] +[58.85000000000005, "o", " "] +[58.88000000000005, "o", "r"] +[58.91000000000005, "o", "o"] +[58.940000000000055, "o", "w"] +[58.970000000000056, "o", "_"] +[59.00000000000006, "o", "t"] +[59.03000000000006, "o", "o"] +[59.06000000000006, "o", "_"] +[59.09000000000006, "o", "j"] +[59.12000000000006, "o", "s"] +[59.15000000000006, "o", "o"] +[59.180000000000064, "o", "n"] +[59.210000000000065, "o", "("] +[59.240000000000066, "o", "d"] +[59.27000000000007, "o", ")"] +[59.30000000000007, "o", " "] +[59.33000000000007, "o", "F"] +[59.36000000000007, "o", "R"] +[59.39000000000007, "o", "O"] +[59.42000000000007, "o", "M"] +[59.450000000000074, "o", " "] +[59.480000000000075, "o", "("] +[59.510000000000076, "o", "S"] +[59.54000000000008, "o", "E"] +[59.57000000000008, "o", "L"] +[59.60000000000008, "o", "E"] +[59.63000000000008, "o", "C"] +[59.66000000000008, "o", "T"] +[59.69000000000008, "o", " "] +[59.720000000000084, "o", "*"] +[59.750000000000085, "o", " "] +[59.780000000000086, "o", "F"] +[59.81000000000009, "o", "R"] +[59.84000000000009, "o", "O"] +[59.87000000000009, "o", "M"] +[59.90000000000009, "o", " "] +[59.93000000000009, "o", "q"] +[59.96000000000009, "o", "o"] +[59.990000000000094, "o", "z"] +[60.020000000000095, "o", "_"] +[60.0500000000001, "o", "v"] +[60.0800000000001, "o", "o"] +[60.1100000000001, "o", "t"] +[60.1400000000001, "o", "e"] +[60.1700000000001, "o", "_"] +[60.2000000000001, "o", "f"] +[60.2300000000001, "o", "r"] +[60.260000000000105, "o", "a"] +[60.290000000000106, "o", "c"] +[60.32000000000011, "o", "t"] +[60.35000000000011, "o", "i"] +[60.38000000000011, "o", "o"] +[60.41000000000011, "o", "n"] +[60.44000000000011, "o", " "] +[60.47000000000011, "o", "W"] +[60.500000000000114, "o", "H"] +[60.530000000000115, "o", "E"] +[60.560000000000116, "o", "R"] +[60.59000000000012, "o", "E"] +[60.62000000000012, "o", " "] +[60.65000000000012, "o", "c"] +[60.68000000000012, "o", "o"] +[60.71000000000012, "o", "u"] +[60.74000000000012, "o", "n"] +[60.770000000000124, "o", "t"] +[60.800000000000125, "o", "y"] +[60.830000000000126, "o", "_"] +[60.86000000000013, "o", "i"] +[60.89000000000013, "o", "d"] +[60.92000000000013, "o", " "] +[60.95000000000013, "o", "="] +[60.98000000000013, "o", " "] +[61.01000000000013, "o", "'"] +[61.040000000000134, "o", "3"] +[61.070000000000135, "o", "6"] +[61.100000000000136, "o", "0"] +[61.13000000000014, "o", "6"] +[61.16000000000014, "o", "1"] +[61.19000000000014, "o", "'"] +[61.22000000000014, "o", ")"] +[61.25000000000014, "o", " "] +[61.28000000000014, "o", "d"] +[61.310000000000144, "o", "\""] +[61.340000000000146, "o", "\r\n"] +[61.37000000000015, "o", "\u001b[0m"] +[61.40000000000015, "o", "\r\n"] +[61.635532999038844, "o", "{'county_id': '36061', 'qoz_tract_fraction': 0.125, 'trump_vote_fraction': 0.08865095716546313, 'clinton_vote_fraction': 0.7905445350569275, 'total_votes': 732423}\r\n"] +[61.665532999038845, "o", "\u001b[1m"] +[61.695532999038846, "o", "\u001b[36m"] +[61.72553299903885, "o", "\u001b[91m"] +[61.75553299903885, "o", "$"] +[61.78553299903885, "o", " "] +[61.81553299903885, "o", "\u001b[0m"] +[66.84553299903885, "o", "\u001b[H"] +[66.87553299903885, "o", "\u001b[J"] +[66.90553299903885, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Do a quick analysis of the dataset."] +[66.93553299903886, "o", "\r\n"] +[66.96553299903886, "o", "$"] +[66.99553299903886, "o", " "] +[67.02553299903886, "o", "c"] +[67.05553299903886, "o", "a"] +[67.08553299903886, "o", "t"] +[67.11553299903886, "o", " "] +[67.14553299903886, "o", "a"] +[67.17553299903886, "o", "n"] +[67.20553299903887, "o", "a"] +[67.23553299903887, "o", "l"] +[67.26553299903887, "o", "y"] +[67.29553299903887, "o", "z"] +[67.32553299903887, "o", "e"] +[67.35553299903887, "o", "."] +[67.38553299903887, "o", "p"] +[67.41553299903887, "o", "y"] +[67.44553299903887, "o", "\r\n"] +[67.47553299903888, "o", "$"] +[67.50553299903888, "o", " "] +[67.53553299903888, "o", "p"] +[67.56553299903888, "o", "y"] +[67.59553299903888, "o", "t"] +[67.62553299903888, "o", "h"] +[67.65553299903888, "o", "o"] +[67.68553299903888, "o", "n"] +[67.71553299903889, "o", " "] +[67.74553299903889, "o", "a"] +[67.77553299903889, "o", "n"] +[67.80553299903889, "o", "a"] +[67.83553299903889, "o", "l"] +[67.86553299903889, "o", "y"] +[67.89553299903889, "o", "z"] +[67.9255329990389, "o", "e"] +[67.9555329990389, "o", "."] +[67.9855329990389, "o", "p"] +[68.0155329990389, "o", "y"] +[68.0455329990389, "o", "\r\n"] +[68.0755329990389, "o", "\u001b[0m"] +[68.1055329990389, "o", "\r\n"] +[68.1075545501711, "o", "import scipy.stats as ss\r\n\r\nfrom splitgraph.core.repository import Repository\r\nfrom splitgraph.ingestion.pandas import sql_to_df\r\n\r\n# Load the dataset we created into Pandas\r\nimage = Repository(\"\", \"qoz_vote_fraction\").images[\"latest\"]\r\ndf = sql_to_df(\"SELECT * FROM qoz_vote_fraction\", image=image, use_lq=True)\r\nprint(df)\r\n\r\n# Is there a correlation between the Trump vote fraction and the fraction of\r\n# QOZ-qualified tracts in every county?\r\nprint(ss.linregress(df[\"trump_vote_fraction\"], df[\"qoz_tract_fract"] +[68.10756337165853, "o", "ion\"]))\r\n"] +[69.10756337165853, "o", " county_id qoz_tract_fraction trump_vote_fraction clinton_vote_fraction total_votes\r\n0 01001 0.083333 0.491135 0.160432 37000.0\r\n1 01003 0.187500 0.496056 0.125629 146925.0\r\n2 01005 0.111111 0.330305 0.294998 16512.0\r\n3 01007 0.250000 0.485132 0.134927 13889.0\r\n4 01009 0.111111 "] +[69.10757386207601, "o", "0.588017 0.055430 38788.0\r\n... ... ... ... ... ...\r\n3109 56037 0.083333 0.709515 0.188616 17130.0\r\n3110 56039 0.000000 0.310525 0.579235 12627.0\r\n3111 56041 0.333333 0.726564 0.141913 8470.0\r\n3112 56043 0.333333 0.763241 0.139486 3814.0\r\n3"] +[69.10758125305196, "o", "113 56045 0.000000 0.860182 0.084799 3526.0\r\n\r\n[3114 rows x 5 columns]\r\n"] +[69.11061441421529, "o", "LinregressResult(slope=-0.06217947076052383, intercept=0.1781160377798594, rvalue=-0.05782420568050623, pvalue=0.0012457930627282692, stderr=0.019243775109388402, intercept_stderr=0.012338526356298417)\r\n"] +[69.14061441421529, "o", "\u001b[1m"] +[69.1706144142153, "o", "\u001b[36m"] +[69.2006144142153, "o", "\u001b[91m"] +[69.2306144142153, "o", "$"] +[69.2606144142153, "o", " "] +[69.2906144142153, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.13/bloom-filter.cast b/content/casts/versioned/archive/v0.2.13/bloom-filter.cast new file mode 100644 index 00000000..9eb3da0e --- /dev/null +++ b/content/casts/versioned/archive/v0.2.13/bloom-filter.cast @@ -0,0 +1,960 @@ +{"version": 2, "width": 100, "height": 56, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1618412395, "metadata": {"tss": [{"h": "This example will use the 2016 US presidential election dataset", "ts": 0.06}, {"h": "The table is sorted by voting precinct and so queries that filter by that", "ts": 8.619999999999997}, {"h": "Currently we have no fragments in cache. Let's run this query and check the cache again", "ts": 18.61273441314688}, {"h": "Since default indexing in Splitgraph is done by min-max values for every column", "ts": 30.3678725719453}, {"h": "Let's download the whole dataset and add a bloom filter index on county_name", "ts": 40.719317140579506}, {"h": "Check the metadata of a new object to see details about the bloom filter structure", "ts": 72.1785499095921}, {"h": "Plan the query again: because the bloom filter can drop most fragments -", "ts": 99.6785499095921}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # This example will use the 2016 US presidential election dataset"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # to show off how indexing with a bloom filter can improve query performance.\r\n"] +[0.18, "o", "$ #\r\n"] +[0.21, "o", "$ # First, clone the whole dataset without downloading it.\r\n"] +[0.24, "o", "$"] +[0.27, "o", " "] +[0.30000000000000004, "o", "s"] +[0.33000000000000007, "o", "g"] +[0.3600000000000001, "o", "r"] +[0.3900000000000001, "o", " "] +[0.42000000000000015, "o", "c"] +[0.4500000000000002, "o", "l"] +[0.4800000000000002, "o", "o"] +[0.5100000000000002, "o", "n"] +[0.5400000000000003, "o", "e"] +[0.5700000000000003, "o", " "] +[0.6000000000000003, "o", "s"] +[0.6300000000000003, "o", "p"] +[0.6600000000000004, "o", "l"] +[0.6900000000000004, "o", "i"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "g"] +[0.7800000000000005, "o", "r"] +[0.8100000000000005, "o", "a"] +[0.8400000000000005, "o", "p"] +[0.8700000000000006, "o", "h"] +[0.9000000000000006, "o", "/"] +[0.9300000000000006, "o", "2"] +[0.9600000000000006, "o", "0"] +[0.9900000000000007, "o", "1"] +[1.0200000000000007, "o", "6"] +[1.0500000000000007, "o", "_"] +[1.0800000000000007, "o", "e"] +[1.1100000000000008, "o", "l"] +[1.1400000000000008, "o", "e"] +[1.1700000000000008, "o", "c"] +[1.2000000000000008, "o", "t"] +[1.2300000000000009, "o", "i"] +[1.260000000000001, "o", "o"] +[1.290000000000001, "o", "n"] +[1.320000000000001, "o", "\r\n"] +[1.350000000000001, "o", "\u001b[0m"] +[1.380000000000001, "o", "\r\n"] +[2.380000000000001, "o", "Gathering remote metadata...\r\n"] +[3.380000000000001, "o", "Fetched metadata for 1 image, 1 table, 20 objects and 1 tag.\r\n"] +[3.4100000000000006, "o", "\u001b[1m"] +[3.4400000000000004, "o", "\u001b[36m"] +[3.47, "o", "\u001b[91m"] +[3.5, "o", "$"] +[3.53, "o", " "] +[3.5599999999999996, "o", "\u001b[0m"] +[8.589999999999998, "o", "\u001b[H"] +[8.619999999999997, "o", "\u001b[J"] +[8.649999999999997, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The table is sorted by voting precinct and so queries that filter by that"] +[8.679999999999996, "o", "\r\n"] +[8.709999999999996, "o", "$ # (or by state, since precinct FIPS codes have the state as the prefix)\r\n"] +[8.739999999999995, "o", "$ # will use and download fewer fragments (6MiB/27MiB)\r\n"] +[8.769999999999994, "o", "$"] +[8.799999999999994, "o", " "] +[8.829999999999993, "o", "s"] +[8.859999999999992, "o", "g"] +[8.889999999999992, "o", "r"] +[8.919999999999991, "o", " "] +[8.94999999999999, "o", "s"] +[8.97999999999999, "o", "q"] +[9.00999999999999, "o", "l"] +[9.039999999999988, "o", " "] +[9.069999999999988, "o", "-"] +[9.099999999999987, "o", "-"] +[9.129999999999987, "o", "i"] +[9.159999999999986, "o", "m"] +[9.189999999999985, "o", "a"] +[9.219999999999985, "o", "g"] +[9.249999999999984, "o", "e"] +[9.279999999999983, "o", " "] +[9.309999999999983, "o", "s"] +[9.339999999999982, "o", "p"] +[9.369999999999981, "o", "l"] +[9.39999999999998, "o", "i"] +[9.42999999999998, "o", "t"] +[9.45999999999998, "o", "g"] +[9.489999999999979, "o", "r"] +[9.519999999999978, "o", "a"] +[9.549999999999978, "o", "p"] +[9.579999999999977, "o", "h"] +[9.609999999999976, "o", "/"] +[9.639999999999976, "o", "2"] +[9.669999999999975, "o", "0"] +[9.699999999999974, "o", "1"] +[9.729999999999974, "o", "6"] +[9.759999999999973, "o", "_"] +[9.789999999999973, "o", "e"] +[9.819999999999972, "o", "l"] +[9.849999999999971, "o", "e"] +[9.87999999999997, "o", "c"] +[9.90999999999997, "o", "t"] +[9.93999999999997, "o", "i"] +[9.969999999999969, "o", "o"] +[9.999999999999968, "o", "n"] +[10.029999999999967, "o", ":"] +[10.059999999999967, "o", "l"] +[10.089999999999966, "o", "a"] +[10.119999999999965, "o", "t"] +[10.149999999999965, "o", "e"] +[10.179999999999964, "o", "s"] +[10.209999999999964, "o", "t"] +[10.239999999999963, "o", " "] +[10.269999999999962, "o", "\\"] +[10.299999999999962, "o", "\r\n "] +[10.329999999999961, "o", "\""] +[10.35999999999996, "o", "E"] +[10.38999999999996, "o", "X"] +[10.419999999999959, "o", "P"] +[10.449999999999958, "o", "L"] +[10.479999999999958, "o", "A"] +[10.509999999999957, "o", "I"] +[10.539999999999957, "o", "N"] +[10.569999999999956, "o", " "] +[10.599999999999955, "o", "S"] +[10.629999999999955, "o", "E"] +[10.659999999999954, "o", "L"] +[10.689999999999953, "o", "E"] +[10.719999999999953, "o", "C"] +[10.749999999999952, "o", "T"] +[10.779999999999951, "o", " "] +[10.80999999999995, "o", "S"] +[10.83999999999995, "o", "U"] +[10.86999999999995, "o", "M"] +[10.899999999999949, "o", "("] +[10.929999999999948, "o", "v"] +[10.959999999999948, "o", "o"] +[10.989999999999947, "o", "t"] +[11.019999999999946, "o", "e"] +[11.049999999999946, "o", "s"] +[11.079999999999945, "o", ")"] +[11.109999999999944, "o", " "] +[11.139999999999944, "o", "F"] +[11.169999999999943, "o", "R"] +[11.199999999999942, "o", "O"] +[11.229999999999942, "o", "M"] +[11.259999999999941, "o", " "] +[11.28999999999994, "o", "p"] +[11.31999999999994, "o", "r"] +[11.34999999999994, "o", "e"] +[11.379999999999939, "o", "c"] +[11.409999999999938, "o", "i"] +[11.439999999999937, "o", "n"] +[11.469999999999937, "o", "c"] +[11.499999999999936, "o", "t"] +[11.529999999999935, "o", "_"] +[11.559999999999935, "o", "r"] +[11.589999999999934, "o", "e"] +[11.619999999999933, "o", "s"] +[11.649999999999933, "o", "u"] +[11.679999999999932, "o", "l"] +[11.709999999999932, "o", "t"] +[11.739999999999931, "o", "s"] +[11.76999999999993, "o", " "] +[11.79999999999993, "o", "W"] +[11.829999999999929, "o", "H"] +[11.859999999999928, "o", "E"] +[11.889999999999928, "o", "R"] +[11.919999999999927, "o", "E"] +[11.949999999999926, "o", " "] +[11.979999999999926, "o", "s"] +[12.009999999999925, "o", "t"] +[12.039999999999925, "o", "a"] +[12.069999999999924, "o", "t"] +[12.099999999999923, "o", "e"] +[12.129999999999923, "o", " "] +[12.159999999999922, "o", "="] +[12.189999999999921, "o", " "] +[12.21999999999992, "o", "'"] +[12.24999999999992, "o", "N"] +[12.27999999999992, "o", "e"] +[12.309999999999919, "o", "w"] +[12.339999999999918, "o", " "] +[12.369999999999918, "o", "Y"] +[12.399999999999917, "o", "o"] +[12.429999999999916, "o", "r"] +[12.459999999999916, "o", "k"] +[12.489999999999915, "o", "'"] +[12.519999999999914, "o", "\""] +[12.549999999999914, "o", "\r\n"] +[12.579999999999913, "o", "\u001b[0m"] +[12.609999999999912, "o", "\r\n"] +[13.372734413146885, "o", "Aggregate (cost=9785903.09..9785903.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..9784680.00 rows=489234 width=20)\r\nFilter: ((state)::text = 'New York'::text)\r\nMulticorn: Original Multicorn quals: [state = New York]\r\nMulticorn: CNF quals: [[('state', '=', 'New York')]]\r\nMulticorn: Objects removed by filter: 15\r\nMulticorn: Scan through 5 object(s) (6.63 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Deforming true\r\n"] +[13.402734413146884, "o", "\u001b[1m"] +[13.432734413146884, "o", "\u001b[36m"] +[13.462734413146883, "o", "\u001b[91m"] +[13.492734413146882, "o", "$"] +[13.522734413146882, "o", " "] +[13.552734413146881, "o", "\u001b[0m"] +[18.58273441314688, "o", "\u001b[H"] +[18.61273441314688, "o", "\u001b[J"] +[18.642734413146883, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Currently we have no fragments in cache. Let's run this query and check the cache again"] +[18.672734413146884, "o", "\r\n"] +[18.702734413146885, "o", "$"] +[18.732734413146886, "o", " "] +[18.762734413146887, "o", "s"] +[18.79273441314689, "o", "g"] +[18.82273441314689, "o", "r"] +[18.85273441314689, "o", " "] +[18.882734413146892, "o", "o"] +[18.912734413146893, "o", "b"] +[18.942734413146894, "o", "j"] +[18.972734413146895, "o", "e"] +[19.002734413146896, "o", "c"] +[19.032734413146898, "o", "t"] +[19.0627344131469, "o", "s"] +[19.0927344131469, "o", " "] +[19.1227344131469, "o", "-"] +[19.152734413146902, "o", "-"] +[19.182734413146903, "o", "l"] +[19.212734413146904, "o", "o"] +[19.242734413146906, "o", "c"] +[19.272734413146907, "o", "a"] +[19.302734413146908, "o", "l"] +[19.33273441314691, "o", "\r\n"] +[19.36273441314691, "o", "$"] +[19.39273441314691, "o", " "] +[19.422734413146912, "o", "s"] +[19.452734413146914, "o", "g"] +[19.482734413146915, "o", "r"] +[19.512734413146916, "o", " "] +[19.542734413146917, "o", "s"] +[19.572734413146918, "o", "q"] +[19.60273441314692, "o", "l"] +[19.63273441314692, "o", " "] +[19.66273441314692, "o", "-"] +[19.692734413146923, "o", "-"] +[19.722734413146924, "o", "i"] +[19.752734413146925, "o", "m"] +[19.782734413146926, "o", "a"] +[19.812734413146927, "o", "g"] +[19.84273441314693, "o", "e"] +[19.87273441314693, "o", " "] +[19.90273441314693, "o", "s"] +[19.93273441314693, "o", "p"] +[19.962734413146933, "o", "l"] +[19.992734413146934, "o", "i"] +[20.022734413146935, "o", "t"] +[20.052734413146936, "o", "g"] +[20.082734413146937, "o", "r"] +[20.11273441314694, "o", "a"] +[20.14273441314694, "o", "p"] +[20.17273441314694, "o", "h"] +[20.202734413146942, "o", "/"] +[20.232734413146943, "o", "2"] +[20.262734413146944, "o", "0"] +[20.292734413146945, "o", "1"] +[20.322734413146947, "o", "6"] +[20.352734413146948, "o", "_"] +[20.38273441314695, "o", "e"] +[20.41273441314695, "o", "l"] +[20.44273441314695, "o", "e"] +[20.472734413146952, "o", "c"] +[20.502734413146953, "o", "t"] +[20.532734413146954, "o", "i"] +[20.562734413146956, "o", "o"] +[20.592734413146957, "o", "n"] +[20.622734413146958, "o", ":"] +[20.65273441314696, "o", "l"] +[20.68273441314696, "o", "a"] +[20.71273441314696, "o", "t"] +[20.742734413146962, "o", "e"] +[20.772734413146964, "o", "s"] +[20.802734413146965, "o", "t"] +[20.832734413146966, "o", " "] +[20.862734413146967, "o", "\\"] +[20.892734413146968, "o", "\r\n "] +[20.92273441314697, "o", "\""] +[20.95273441314697, "o", "S"] +[20.98273441314697, "o", "E"] +[21.012734413146973, "o", "L"] +[21.042734413146974, "o", "E"] +[21.072734413146975, "o", "C"] +[21.102734413146976, "o", "T"] +[21.132734413146977, "o", " "] +[21.16273441314698, "o", "S"] +[21.19273441314698, "o", "U"] +[21.22273441314698, "o", "M"] +[21.25273441314698, "o", "("] +[21.282734413146983, "o", "v"] +[21.312734413146984, "o", "o"] +[21.342734413146985, "o", "t"] +[21.372734413146986, "o", "e"] +[21.402734413146987, "o", "s"] +[21.43273441314699, "o", ")"] +[21.46273441314699, "o", " "] +[21.49273441314699, "o", "F"] +[21.522734413146992, "o", "R"] +[21.552734413146993, "o", "O"] +[21.582734413146994, "o", "M"] +[21.612734413146995, "o", " "] +[21.642734413146997, "o", "p"] +[21.672734413146998, "o", "r"] +[21.702734413147, "o", "e"] +[21.732734413147, "o", "c"] +[21.762734413147, "o", "i"] +[21.792734413147002, "o", "n"] +[21.822734413147003, "o", "c"] +[21.852734413147004, "o", "t"] +[21.882734413147006, "o", "_"] +[21.912734413147007, "o", "r"] +[21.942734413147008, "o", "e"] +[21.97273441314701, "o", "s"] +[22.00273441314701, "o", "u"] +[22.03273441314701, "o", "l"] +[22.062734413147012, "o", "t"] +[22.092734413147014, "o", "s"] +[22.122734413147015, "o", " "] +[22.152734413147016, "o", "W"] +[22.182734413147017, "o", "H"] +[22.212734413147018, "o", "E"] +[22.24273441314702, "o", "R"] +[22.27273441314702, "o", "E"] +[22.30273441314702, "o", " "] +[22.332734413147023, "o", "s"] +[22.362734413147024, "o", "t"] +[22.392734413147025, "o", "a"] +[22.422734413147026, "o", "t"] +[22.452734413147027, "o", "e"] +[22.48273441314703, "o", " "] +[22.51273441314703, "o", "="] +[22.54273441314703, "o", " "] +[22.57273441314703, "o", "'"] +[22.602734413147033, "o", "N"] +[22.632734413147034, "o", "e"] +[22.662734413147035, "o", "w"] +[22.692734413147036, "o", " "] +[22.722734413147037, "o", "Y"] +[22.75273441314704, "o", "o"] +[22.78273441314704, "o", "r"] +[22.81273441314704, "o", "k"] +[22.842734413147042, "o", "'"] +[22.872734413147043, "o", "\""] +[22.902734413147044, "o", "\r\n"] +[22.932734413147045, "o", "$"] +[22.962734413147047, "o", " "] +[22.992734413147048, "o", "s"] +[23.02273441314705, "o", "g"] +[23.05273441314705, "o", "r"] +[23.08273441314705, "o", " "] +[23.112734413147052, "o", "o"] +[23.142734413147053, "o", "b"] +[23.172734413147055, "o", "j"] +[23.202734413147056, "o", "e"] +[23.232734413147057, "o", "c"] +[23.262734413147058, "o", "t"] +[23.29273441314706, "o", "s"] +[23.32273441314706, "o", " "] +[23.35273441314706, "o", "-"] +[23.382734413147062, "o", "-"] +[23.412734413147064, "o", "l"] +[23.442734413147065, "o", "o"] +[23.472734413147066, "o", "c"] +[23.502734413147067, "o", "a"] +[23.532734413147068, "o", "l"] +[23.56273441314707, "o", "\r\n"] +[23.59273441314707, "o", "\u001b[0m"] +[23.62273441314707, "o", "\r\n"] +[23.88031898498545, "o", "\r\n"] +[24.88031898498545, "o", "7.91188e+06\r\n"] +[25.12787257194529, "o", "o65dbd9dc992982689ec65866ab733be69c897c659d93488457a2fccb63e97c\r\no974b20261ee5f1ac124a8445a65c00e6377cfabb93b5db92bd60fc7ca3fcee\r\no9c33b53f1a4872c598ad9d08aaafd78fabce1f16ef4c5e19ad9756b9b85fda\r\no9d4cf85101cc4d431c895998cf1cad642f1fe6cd923c8209f2df38441afeeb\r\noc438159794e378ca23c306143ccdc7ce1683045f80a511aeeabb19302be63d\r\n"] +[25.15787257194529, "o", "\u001b[1m"] +[25.18787257194529, "o", "\u001b[36m"] +[25.217872571945293, "o", "\u001b[91m"] +[25.247872571945294, "o", "$"] +[25.277872571945295, "o", " "] +[25.307872571945296, "o", "\u001b[0m"] +[30.337872571945297, "o", "\u001b[H"] +[30.3678725719453, "o", "\u001b[J"] +[30.3978725719453, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Since default indexing in Splitgraph is done by min-max values for every column"] +[30.4278725719453, "o", "\r\n"] +[30.457872571945302, "o", "$ # in every fragment, it's going to do worse if multiple fragments span the same value\r\n"] +[30.487872571945303, "o", "$"] +[30.517872571945304, "o", " "] +[30.547872571945305, "o", "s"] +[30.577872571945306, "o", "g"] +[30.607872571945308, "o", "r"] +[30.63787257194531, "o", " "] +[30.66787257194531, "o", "s"] +[30.69787257194531, "o", "q"] +[30.727872571945312, "o", "l"] +[30.757872571945313, "o", " "] +[30.787872571945314, "o", "-"] +[30.817872571945315, "o", "-"] +[30.847872571945317, "o", "i"] +[30.877872571945318, "o", "m"] +[30.90787257194532, "o", "a"] +[30.93787257194532, "o", "g"] +[30.96787257194532, "o", "e"] +[30.997872571945322, "o", " "] +[31.027872571945323, "o", "s"] +[31.057872571945325, "o", "p"] +[31.087872571945326, "o", "l"] +[31.117872571945327, "o", "i"] +[31.147872571945328, "o", "t"] +[31.17787257194533, "o", "g"] +[31.20787257194533, "o", "r"] +[31.23787257194533, "o", "a"] +[31.267872571945333, "o", "p"] +[31.297872571945334, "o", "h"] +[31.327872571945335, "o", "/"] +[31.357872571945336, "o", "2"] +[31.387872571945337, "o", "0"] +[31.417872571945338, "o", "1"] +[31.44787257194534, "o", "6"] +[31.47787257194534, "o", "_"] +[31.50787257194534, "o", "e"] +[31.537872571945343, "o", "l"] +[31.567872571945344, "o", "e"] +[31.597872571945345, "o", "c"] +[31.627872571945346, "o", "t"] +[31.657872571945347, "o", "i"] +[31.68787257194535, "o", "o"] +[31.71787257194535, "o", "n"] +[31.74787257194535, "o", ":"] +[31.777872571945352, "o", "l"] +[31.807872571945353, "o", "a"] +[31.837872571945354, "o", "t"] +[31.867872571945355, "o", "e"] +[31.897872571945356, "o", "s"] +[31.927872571945358, "o", "t"] +[31.95787257194536, "o", " "] +[31.98787257194536, "o", "\\"] +[32.01787257194536, "o", "\r\n "] +[32.04787257194536, "o", "\""] +[32.07787257194536, "o", "E"] +[32.107872571945364, "o", "X"] +[32.137872571945366, "o", "P"] +[32.16787257194537, "o", "L"] +[32.19787257194537, "o", "A"] +[32.22787257194537, "o", "I"] +[32.25787257194537, "o", "N"] +[32.28787257194537, "o", " "] +[32.31787257194537, "o", "S"] +[32.34787257194537, "o", "E"] +[32.377872571945375, "o", "L"] +[32.407872571945376, "o", "E"] +[32.43787257194538, "o", "C"] +[32.46787257194538, "o", "T"] +[32.49787257194538, "o", " "] +[32.52787257194538, "o", "S"] +[32.55787257194538, "o", "U"] +[32.58787257194538, "o", "M"] +[32.617872571945384, "o", "("] +[32.647872571945385, "o", "v"] +[32.677872571945386, "o", "o"] +[32.70787257194539, "o", "t"] +[32.73787257194539, "o", "e"] +[32.76787257194539, "o", "s"] +[32.79787257194539, "o", ")"] +[32.82787257194539, "o", " "] +[32.85787257194539, "o", "F"] +[32.887872571945394, "o", "R"] +[32.917872571945395, "o", "O"] +[32.947872571945396, "o", "M"] +[32.9778725719454, "o", " "] +[33.0078725719454, "o", "p"] +[33.0378725719454, "o", "r"] +[33.0678725719454, "o", "e"] +[33.0978725719454, "o", "c"] +[33.1278725719454, "o", "i"] +[33.157872571945404, "o", "n"] +[33.187872571945405, "o", "c"] +[33.217872571945406, "o", "t"] +[33.24787257194541, "o", "_"] +[33.27787257194541, "o", "r"] +[33.30787257194541, "o", "e"] +[33.33787257194541, "o", "s"] +[33.36787257194541, "o", "u"] +[33.39787257194541, "o", "l"] +[33.427872571945414, "o", "t"] +[33.457872571945416, "o", "s"] +[33.48787257194542, "o", " "] +[33.51787257194542, "o", "W"] +[33.54787257194542, "o", "H"] +[33.57787257194542, "o", "E"] +[33.60787257194542, "o", "R"] +[33.63787257194542, "o", "E"] +[33.66787257194542, "o", " "] +[33.697872571945425, "o", "c"] +[33.727872571945426, "o", "o"] +[33.75787257194543, "o", "u"] +[33.78787257194543, "o", "n"] +[33.81787257194543, "o", "t"] +[33.84787257194543, "o", "y"] +[33.87787257194543, "o", "_"] +[33.90787257194543, "o", "n"] +[33.937872571945434, "o", "a"] +[33.967872571945435, "o", "m"] +[33.997872571945436, "o", "e"] +[34.02787257194544, "o", " "] +[34.05787257194544, "o", "="] +[34.08787257194544, "o", " "] +[34.11787257194544, "o", "'"] +[34.14787257194544, "o", "N"] +[34.17787257194544, "o", "e"] +[34.207872571945444, "o", "w"] +[34.237872571945445, "o", " "] +[34.267872571945446, "o", "Y"] +[34.29787257194545, "o", "o"] +[34.32787257194545, "o", "r"] +[34.35787257194545, "o", "k"] +[34.38787257194545, "o", " "] +[34.41787257194545, "o", "C"] +[34.44787257194545, "o", "o"] +[34.477872571945454, "o", "u"] +[34.507872571945455, "o", "n"] +[34.53787257194546, "o", "t"] +[34.56787257194546, "o", "y"] +[34.59787257194546, "o", "'"] +[34.62787257194546, "o", "\""] +[34.65787257194546, "o", "\r\n"] +[34.68787257194546, "o", "\u001b[0m"] +[34.71787257194546, "o", "\r\n"] +[35.47930378913907, "o", "Aggregate (cost=37789403.09..37789403.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..37784680.00 rows=1889234 width=20)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 1\r\nMulticorn: Scan through 19 object(s) (25.51 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true,"] +[35.4793171405795, "o", " Deforming true\r\n"] +[35.5093171405795, "o", "\u001b[1m"] +[35.5393171405795, "o", "\u001b[36m"] +[35.5693171405795, "o", "\u001b[91m"] +[35.5993171405795, "o", "$"] +[35.6293171405795, "o", " "] +[35.6593171405795, "o", "\u001b[0m"] +[40.689317140579504, "o", "\u001b[H"] +[40.719317140579506, "o", "\u001b[J"] +[40.74931714057951, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Let's download the whole dataset and add a bloom filter index on county_name"] +[40.77931714057951, "o", "\r\n"] +[40.80931714057951, "o", "$"] +[40.83931714057951, "o", " "] +[40.86931714057951, "o", "s"] +[40.89931714057951, "o", "g"] +[40.92931714057951, "o", "r"] +[40.959317140579515, "o", " "] +[40.989317140579516, "o", "r"] +[41.01931714057952, "o", "e"] +[41.04931714057952, "o", "i"] +[41.07931714057952, "o", "n"] +[41.10931714057952, "o", "d"] +[41.13931714057952, "o", "e"] +[41.16931714057952, "o", "x"] +[41.199317140579524, "o", " "] +[41.229317140579525, "o", "-"] +[41.259317140579526, "o", "i"] +[41.28931714057953, "o", " "] +[41.31931714057953, "o", "'"] +[41.34931714057953, "o", "{"] +[41.37931714057953, "o", "\""] +[41.40931714057953, "o", "b"] +[41.43931714057953, "o", "l"] +[41.469317140579534, "o", "o"] +[41.499317140579535, "o", "o"] +[41.529317140579536, "o", "m"] +[41.55931714057954, "o", "\""] +[41.58931714057954, "o", ":"] +[41.61931714057954, "o", " "] +[41.64931714057954, "o", "{"] +[41.67931714057954, "o", "\""] +[41.70931714057954, "o", "c"] +[41.739317140579544, "o", "o"] +[41.769317140579545, "o", "u"] +[41.79931714057955, "o", "n"] +[41.82931714057955, "o", "t"] +[41.85931714057955, "o", "y"] +[41.88931714057955, "o", "_"] +[41.91931714057955, "o", "n"] +[41.94931714057955, "o", "a"] +[41.97931714057955, "o", "m"] +[42.009317140579554, "o", "e"] +[42.039317140579556, "o", "\""] +[42.06931714057956, "o", ":"] +[42.09931714057956, "o", " "] +[42.12931714057956, "o", "{"] +[42.15931714057956, "o", "\""] +[42.18931714057956, "o", "p"] +[42.21931714057956, "o", "r"] +[42.249317140579564, "o", "o"] +[42.279317140579565, "o", "b"] +[42.309317140579566, "o", "a"] +[42.33931714057957, "o", "b"] +[42.36931714057957, "o", "i"] +[42.39931714057957, "o", "l"] +[42.42931714057957, "o", "i"] +[42.45931714057957, "o", "t"] +[42.48931714057957, "o", "y"] +[42.519317140579574, "o", "\""] +[42.549317140579575, "o", ":"] +[42.579317140579576, "o", " "] +[42.60931714057958, "o", "0"] +[42.63931714057958, "o", "."] +[42.66931714057958, "o", "0"] +[42.69931714057958, "o", "1"] +[42.72931714057958, "o", "}"] +[42.75931714057958, "o", "}"] +[42.789317140579584, "o", "}"] +[42.819317140579585, "o", "'"] +[42.849317140579586, "o", " "] +[42.87931714057959, "o", "\\"] +[42.90931714057959, "o", "\r\n "] +[42.93931714057959, "o", "s"] +[42.96931714057959, "o", "p"] +[42.99931714057959, "o", "l"] +[43.02931714057959, "o", "i"] +[43.059317140579594, "o", "t"] +[43.089317140579595, "o", "g"] +[43.1193171405796, "o", "r"] +[43.1493171405796, "o", "a"] +[43.1793171405796, "o", "p"] +[43.2093171405796, "o", "h"] +[43.2393171405796, "o", "/"] +[43.2693171405796, "o", "2"] +[43.2993171405796, "o", "0"] +[43.329317140579604, "o", "1"] +[43.359317140579606, "o", "6"] +[43.38931714057961, "o", "_"] +[43.41931714057961, "o", "e"] +[43.44931714057961, "o", "l"] +[43.47931714057961, "o", "e"] +[43.50931714057961, "o", "c"] +[43.53931714057961, "o", "t"] +[43.569317140579614, "o", "i"] +[43.599317140579615, "o", "o"] +[43.629317140579616, "o", "n"] +[43.65931714057962, "o", ":"] +[43.68931714057962, "o", "l"] +[43.71931714057962, "o", "a"] +[43.74931714057962, "o", "t"] +[43.77931714057962, "o", "e"] +[43.80931714057962, "o", "s"] +[43.839317140579624, "o", "t"] +[43.869317140579625, "o", " "] +[43.899317140579626, "o", "p"] +[43.92931714057963, "o", "r"] +[43.95931714057963, "o", "e"] +[43.98931714057963, "o", "c"] +[44.01931714057963, "o", "i"] +[44.04931714057963, "o", "n"] +[44.07931714057963, "o", "c"] +[44.109317140579634, "o", "t"] +[44.139317140579635, "o", "_"] +[44.169317140579636, "o", "r"] +[44.19931714057964, "o", "e"] +[44.22931714057964, "o", "s"] +[44.25931714057964, "o", "u"] +[44.28931714057964, "o", "l"] +[44.31931714057964, "o", "t"] +[44.34931714057964, "o", "s"] +[44.379317140579644, "o", "\r\n"] +[44.409317140579645, "o", "\u001b[0m"] +[44.43931714057965, "o", "\r\n"] +[44.68442264556927, "o", "Reindexing table splitgraph/2016_election:3835145ada3f07cad99087d1b1071122d58c48783cbfe4694c101d35651fba90/precinct_results\r\n"] +[44.72302666664166, "o", "Need to download 20 objects (20.19 MiB), cache occupancy: 6.63 MiB/10.00 GiB\r\n"] +[44.78461376190228, "o", "Fetching 15 objects, total size 20.19 MiB\r\n"] +[44.78710571289105, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (ca446922b2844ed19f8e6c8b35edbe31@data.splitgraph.com:5432/sgregistry)...\r\n"] +[45.78710571289105, "o", "\r 0%| | 0/15 [00:00 Foreign Scan on precinct_results (cost=20.00..4000000.00 rows=200000 width=20)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 18\r\nMulticorn: Scan through 2 object(s) (2.64 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Defo"] +[104.76499152183592, "o", "rming true\r\n"] +[104.79499152183593, "o", "\u001b[1m"] +[104.82499152183593, "o", "\u001b[36m"] +[104.85499152183593, "o", "\u001b[91m"] +[104.88499152183593, "o", "$"] +[104.91499152183593, "o", " "] +[104.94499152183593, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.13/dbt.cast b/content/casts/versioned/archive/v0.2.13/dbt.cast new file mode 100644 index 00000000..71b5ef4f --- /dev/null +++ b/content/casts/versioned/archive/v0.2.13/dbt.cast @@ -0,0 +1,2337 @@ +{"version": 2, "width": 100, "height": 48, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1618412495, "metadata": {"tss": [{"h": "dbt must be installed for this to work (pip install dbt)", "ts": 0.06}, {"h": "Ingest the initial data (in CSV) from this branch of the project.", "ts": 12.059999999999999}, {"h": "Snapshot the initial data with Splitgraph.", "ts": 26.78149060249341}, {"h": "Inspect the original data", "ts": 35.912185935974364}, {"h": "The status column in the raw_orders table in the initial dataset can", "ts": 48.912185935974364}, {"h": "Commit this dataset and check out the original data", "ts": 59.73176744461104}, {"h": "Check out the 'serious' version of the dbt project that uses data from", "ts": 69.67186504364072}, {"h": "Check that dbt is set up to connect to the Splitgraph engine.", "ts": 76.65925458908147}, {"h": "Now run the dbt models.", "ts": 100.15925458908147}, {"h": "Take a look at the built dataset and commit it.", "ts": 120.65925458908147}, {"h": "Check out the new version of the raw dataset and run dbt against it as well.", "ts": 135.15925458908146}, {"h": "Create an image from the new data.", "ts": 156.65925458908146}, {"h": "We now have two versions of the source and the target dataset.", "ts": 166.65925458908146}, {"h": "Inspect the difference between the two datasets that dbt built.", "ts": 174.121134510041}, {"h": "Run a sample query: how much in bank transfer refunds did we process?", "ts": 183.621134510041}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # dbt must be installed for this to work (pip install dbt)"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Clone the Jaffle Shop dbt example project\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "d"] +[0.27, "o", "b"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "-"] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "v"] +[0.4500000000000002, "o", "e"] +[0.4800000000000002, "o", "r"] +[0.5100000000000002, "o", "s"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "n"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "$"] +[0.6900000000000004, "o", " "] +[0.7200000000000004, "o", "g"] +[0.7500000000000004, "o", "i"] +[0.7800000000000005, "o", "t"] +[0.8100000000000005, "o", " "] +[0.8400000000000005, "o", "c"] +[0.8700000000000006, "o", "l"] +[0.9000000000000006, "o", "o"] +[0.9300000000000006, "o", "n"] +[0.9600000000000006, "o", "e"] +[0.9900000000000007, "o", " "] +[1.0200000000000007, "o", "h"] +[1.0500000000000007, "o", "t"] +[1.0800000000000007, "o", "t"] +[1.1100000000000008, "o", "p"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", ":"] +[1.2000000000000008, "o", "/"] +[1.2300000000000009, "o", "/"] +[1.260000000000001, "o", "g"] +[1.290000000000001, "o", "i"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", "h"] +[1.380000000000001, "o", "u"] +[1.410000000000001, "o", "b"] +[1.440000000000001, "o", "."] +[1.470000000000001, "o", "c"] +[1.500000000000001, "o", "o"] +[1.5300000000000011, "o", "m"] +[1.5600000000000012, "o", "/"] +[1.5900000000000012, "o", "s"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "l"] +[1.6800000000000013, "o", "i"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "g"] +[1.7700000000000014, "o", "r"] +[1.8000000000000014, "o", "a"] +[1.8300000000000014, "o", "p"] +[1.8600000000000014, "o", "h"] +[1.8900000000000015, "o", "/"] +[1.9200000000000015, "o", "j"] +[1.9500000000000015, "o", "a"] +[1.9800000000000015, "o", "f"] +[2.0100000000000016, "o", "f"] +[2.0400000000000014, "o", "l"] +[2.070000000000001, "o", "e"] +[2.100000000000001, "o", "_"] +[2.130000000000001, "o", "s"] +[2.1600000000000006, "o", "h"] +[2.1900000000000004, "o", "o"] +[2.22, "o", "p"] +[2.25, "o", "_"] +[2.28, "o", "a"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "c"] +[2.369999999999999, "o", "h"] +[2.399999999999999, "o", "i"] +[2.429999999999999, "o", "v"] +[2.4599999999999986, "o", "e"] +[2.4899999999999984, "o", "."] +[2.5199999999999982, "o", "g"] +[2.549999999999998, "o", "i"] +[2.579999999999998, "o", "t"] +[2.6099999999999977, "o", "\r\n"] +[2.6399999999999975, "o", "$"] +[2.6699999999999973, "o", " "] +[2.699999999999997, "o", "m"] +[2.729999999999997, "o", "v"] +[2.7599999999999967, "o", " "] +[2.7899999999999965, "o", "j"] +[2.8199999999999963, "o", "a"] +[2.849999999999996, "o", "f"] +[2.879999999999996, "o", "f"] +[2.9099999999999957, "o", "l"] +[2.9399999999999955, "o", "e"] +[2.9699999999999953, "o", "_"] +[2.999999999999995, "o", "s"] +[3.029999999999995, "o", "h"] +[3.0599999999999947, "o", "o"] +[3.0899999999999945, "o", "p"] +[3.1199999999999943, "o", "_"] +[3.149999999999994, "o", "a"] +[3.179999999999994, "o", "r"] +[3.2099999999999937, "o", "c"] +[3.2399999999999936, "o", "h"] +[3.2699999999999934, "o", "i"] +[3.299999999999993, "o", "v"] +[3.329999999999993, "o", "e"] +[3.3599999999999928, "o", " "] +[3.3899999999999926, "o", "j"] +[3.4199999999999924, "o", "a"] +[3.449999999999992, "o", "f"] +[3.479999999999992, "o", "f"] +[3.509999999999992, "o", "l"] +[3.5399999999999916, "o", "e"] +[3.5699999999999914, "o", "_"] +[3.599999999999991, "o", "s"] +[3.629999999999991, "o", "h"] +[3.659999999999991, "o", "o"] +[3.6899999999999906, "o", "p"] +[3.7199999999999904, "o", "\r\n"] +[3.7499999999999902, "o", "\u001b[0m"] +[3.77999999999999, "o", "\r\n"] +[4.7799999999999905, "o", "installed version: 0.18.0\r\n latest version: 0.19.1\r\n\r\nYour version of dbt is out of date! You can find instructions for upgrading here:\r\nhttps://docs.getdbt.com/docs/installation\r\n\r\nPlugins:\r\n - postgres: 0.18.0\r\n - bigquery: 0.18.0\r\n - redshift: 0.18.0\r\n - snowflake: 0.18.0\r\n"] +[4.780877857208242, "o", "\u001b[0m"] +[4.784401445388784, "o", "Cloning into 'jaffle_shop_archive'...\r\n"] +[5.248082189559927, "o", "remote: Enumerating objects: 405, done. \r\nremote: Counting objects: 0% (1/405) \rremote: Counting objects: 1% (5/405) \r"] +[5.248095541000357, "o", "remote: Counting objects: 2% (9/405) \rremote: Counting objects: 3% (13/405) \rremote: Counting objects: 4% (17/405) \rremote: Counting objects: 5% (21/405) \rremote: Counting objects: 6% (25/405) \rremote: Counting objects: 7% (29/405) \rremote: Counting objects: 8% (33/405) \rremote: Counting objects: 9% (37/405) \rremote: Counting objects: 10% (41/405) \rremote: Counting objects: 11% (45/405) \rremote: Counting objects: 12% (4"] +[5.248103885650625, "o", "9/405) \rremote: Counting objects: 13% (53/405) \rremote: Counting objects: 14% (57/405) \rremote: Counting objects: 15% (61/405) \rremote: Counting objects: 16% (65/405) \rremote: Counting objects: 17% (69/405) \rremote: Counting objects: 18% (73/405) \rremote: Counting objects: 19% (77/405) \rremote: Counting objects: 20% (81/405) \rremote: Counting objects: 21% (86/405) \rremote: Counting objects: 22% (90/405) \rremote: Counting "] +[5.248108892440786, "o", "objects: 23% (94/405) \rremote: Counting objects: 24% (98/405) \rremote: Counting objects: 25% (102/405) \rremote: Counting objects: 26% (106/405) \rremote: Counting objects: 27% (110/405) \rremote: Counting objects: 28% (114/405) \r"] +[5.2481138992309475, "o", "remote: Counting objects: 29% (118/405) \rremote: Counting objects: 30% (122/405) \rremote: Counting objects: 31% (126/405) \r"] +[5.248118906021109, "o", "remote: Counting objects: 32% (130/405) \rremote: Counting objects: 33% (134/405) \rremote: Counting objects: 34% (138/405) \r"] +[5.2481231975555325, "o", "remote: Counting objects: 35% (142/405) \rremote: Counting objects: 36% (146/405) \r"] +[5.248134164810171, "o", "remote: Counting objects: 37% (150/405) \rremote: Counting objects: 38% (154/405) \rremote: Counting objects: 39% (158/405) \r"] +[5.248138933181753, "o", "remote: Counting objects: 40% (162/405) \rremote: Counting objects: 41% (167/405) \rremote: Counting objects: 42% (171/405) \r"] +[5.248144655227652, "o", "remote: Counting objects: 43% (175/405) \rremote: Counting objects: 44% (179/405) \r"] +[5.2481491851806545, "o", "remote: Counting objects: 45% (183/405) \rremote: Counting objects: 46% (187/405) \r"] +[5.24815562248229, "o", "remote: Counting objects: 47% (191/405) \rremote: Counting objects: 48% (195/405) \r"] +[5.248160152435293, "o", "remote: Counting objects: 49% (199/405) \rremote: Counting objects: 50% (203/405) \r"] +[5.248164205551138, "o", "remote: Counting objects: 51% (207/405) \rremote: Counting objects: 52% (211/405) \r"] +[5.248168258666983, "o", "remote: Counting objects: 53% (215/405) \rremote: Counting objects: 54% (219/405) \r"] +[5.2481725502014065, "o", "remote: Counting objects: 55% (223/405) \r"] +[5.2481773185729885, "o", "remote: Counting objects: 56% (227/405) \rremote: Counting objects: 57% (231/405) \r"] +[5.248183517456045, "o", "remote: Counting objects: 58% (235/405) \rremote: Counting objects: 59% (239/405) \r"] +[5.24818757057189, "o", "remote: Counting objects: 60% (243/405) \rremote: Counting objects: 61% (248/405) \r"] +[5.248193531036367, "o", "remote: Counting objects: 62% (252/405) \rremote: Counting objects: 63% (256/405) \r"] +[5.248197584152212, "o", "remote: Counting objects: 64% (260/405) \r"] +[5.248663930892935, "o", "remote: Counting objects: 65% (264/405) \rremote: Counting objects: 66% (268/405) \rremote: Counting objects: 67% (272/405) \rremote: Counting objects: 68% (276/405) \rremote: Counting objects: 69% (280/405) \rremote: Counting objects: 70% (284/405) \rremote: Counting objects: 71% (288/405) \rremote: Counting objects: 72% (292/405) \rremote: Counting objects: 73% (296/405) \rremote: Counting objects: 74% (300/405) \rremote: Counting objec"] +[5.248671083450308, "o", "ts: 75% (304/405) \rremote: Counting objects: 76% (308/405) \rremote: Counting objects: 77% (312/405) \rremote: Counting objects: 78% (316/405) \rremote: Counting objects: 79% (320/405) \rremote: Counting objects: 80% (324/405) \rremote: Counting objects: 81% (329/405) \rremote: Counting objects: 82% (333/405) \rremote: Counting objects: 83% (337/405) \rremote: Counting objects: 84% (341/405) \rremote: Counting objects: 85% (345/405) "] +[5.2486796665191555, "o", " \rremote: Counting objects: 86% (349/405) \rremote: Counting objects: 87% (353/405) \rremote: Counting objects: 88% (357/405) \rremote: Counting objects: 89% (361/405) \rremote: Counting objects: 90% (365/405) \rremote: Counting objects: 91% (369/405) \rremote: Counting objects: 92% (373/405) \rremote: Counting objects: 93% (377/405) \rremote: Counting objects: 94% (381/405) \rremote: Counting objects: 95% (385/405) \rremote: Counting "] +[5.24868634223937, "o", "objects: 96% (389/405) \rremote: Counting objects: 97% (393/405) \r"] +[5.248985080718985, "o", "remote: Counting objects: 98% (397/405) \rremote: Counting objects: 99% (401/405) \rremote: Counting objects: 100% (405/405) \r"] +[5.249123125076284, "o", "remote: Counting objects: 100% (405/405), done. "] +[5.249249248504629, "o", "\r\n"] +[5.24937370300292, "o", "remote: Compressing objects: 0% (1/174) \r"] +[5.249406843185415, "o", "remote: Compressing objects: 1% (2/174) \r"] +[5.2495293903350735, "o", "remote: Compressing objects: 2% (4/174) \r"] +[5.249662189483633, "o", "remote: Compressing objects: 3% (6/174) \r"] +[5.24978783607482, "o", "remote: Compressing objects: 4% (7/174) \r"] +[5.24991252899169, "o", "remote: Compressing objects: 5% (9/174) \r"] +[5.250036268234243, "o", "remote: Compressing objects: 6% (11/174) \r"] +[5.2501561927795315, "o", "remote: Compressing objects: 7% (13/174) \r"] +[5.250279216766348, "o", "remote: Compressing objects: 8% (14/174) \r"] +[5.250399141311636, "o", "remote: Compressing objects: 9% (16/174) \r"] +[5.250521211624136, "o", "remote: Compressing objects: 10% (18/174) \r"] +[5.250641136169424, "o", "remote: Compressing objects: 11% (20/174) \r"] +[5.250763444900503, "o", "remote: Compressing objects: 12% (21/174) \r"] +[5.2508838462829495, "o", "remote: Compressing objects: 13% (23/174) \r"] +[5.251006393432608, "o", "remote: Compressing objects: 14% (25/174) \r"] +[5.2511258411407375, "o", "remote: Compressing objects: 15% (27/174) \r"] +[5.2512479114532375, "o", "remote: Compressing objects: 16% (28/174) \r"] +[5.2513675975799465, "o", "remote: Compressing objects: 17% (30/174) \r"] +[5.251490144729605, "o", "remote: Compressing objects: 18% (32/174) \r"] +[5.251612930297842, "o", "remote: Compressing objects: 19% (34/174) \r"] +[5.25173810005187, "o", "remote: Compressing objects: 20% (35/174) \r"] +[5.251859455108633, "o", "remote: Compressing objects: 21% (37/174) \r"] +[5.251981525421133, "o", "remote: Compressing objects: 22% (39/174) \r"] +[5.252100257873526, "o", "remote: Compressing objects: 23% (41/174) \r"] +[5.252222328186026, "o", "remote: Compressing objects: 24% (42/174) \r"] +[5.252348213195791, "o", "remote: Compressing objects: 25% (44/174) \r"] +[5.252496032714834, "o", "remote: Compressing objects: 26% (46/174) \r"] +[5.252622156143179, "o", "remote: Compressing objects: 27% (47/174) \r"] +[5.25284221649169, "o", "remote: Compressing objects: 28% (49/174) \r"] +[5.253090410232534, "o", "remote: Compressing objects: 29% (51/174) \r"] +[5.253355531692495, "o", "remote: Compressing objects: 30% (53/174) \r"] +[5.253603010177603, "o", "remote: Compressing objects: 31% (54/174) \r"] +[5.253839044570913, "o", "remote: Compressing objects: 32% (56/174) \r"] +[5.254072217941275, "o", "remote: Compressing objects: 33% (58/174) \r"] +[5.25429895401, "o", "remote: Compressing objects: 34% (60/174) \r"] +[5.254524736404409, "o", "remote: Compressing objects: 35% (61/174) \r"] +[5.254745750427237, "o", "remote: Compressing objects: 36% (63/174) \r"] +[5.254967002868643, "o", "remote: Compressing objects: 37% (65/174) \r"] +[5.255180625915518, "o", "remote: Compressing objects: 38% (67/174) \r"] +[5.255396871566763, "o", "remote: Compressing objects: 39% (68/174) \r"] +[5.25560453414916, "o", "remote: Compressing objects: 40% (70/174) \r"] +[5.255808620452871, "o", "remote: Compressing objects: 41% (72/174) \r"] +[5.256011991500845, "o", "remote: Compressing objects: 42% (74/174) \r"] +[5.256228713989248, "o", "remote: Compressing objects: 43% (75/174) \r"] +[5.256485490798941, "o", "remote: Compressing objects: 44% (77/174) \r"] +[5.256631879806509, "o", "remote: Compressing objects: 45% (79/174) \r"] +[5.257127313613882, "o", "remote: Compressing objects: 46% (81/174) \r"] +[5.2571635532379055, "o", "remote: Compressing objects: 47% (82/174) \r"] +[5.2571940708160305, "o", "remote: Compressing objects: 48% (84/174) \r"] +[5.257226257324209, "o", "remote: Compressing objects: 49% (86/174) \r"] +[5.257255821228018, "o", "remote: Compressing objects: 50% (87/174) \r"] +[5.257287530899038, "o", "remote: Compressing objects: 51% (89/174) \r"] +[5.257317333221426, "o", "remote: Compressing objects: 52% (91/174) \r"] +[5.2573490428924465, "o", "remote: Compressing objects: 53% (93/174) \r"] +[5.257378845214834, "o", "remote: Compressing objects: 54% (94/174) \r"] +[5.257410554885855, "o", "remote: Compressing objects: 55% (96/174) \r"] +[5.257440118789663, "o", "remote: Compressing objects: 56% (98/174) \r"] +[5.257471828460684, "o", "remote: Compressing objects: 57% (100/174) \r"] +[5.257501153945913, "o", "remote: Compressing objects: 58% (101/174) \r"] +[5.2575345325469875, "o", "remote: Compressing objects: 59% (103/174) \r"] +[5.2575671958923245, "o", "remote: Compressing objects: 60% (105/174) \r"] +[5.25759747505187, "o", "remote: Compressing objects: 61% (107/174) \r"] +[5.257638244628897, "o", "remote: Compressing objects: 62% (108/174) \r"] +[5.257669000625601, "o", "remote: Compressing objects: 63% (110/174) \r"] +[5.257701425552359, "o", "remote: Compressing objects: 64% (112/174) \r"] +[5.2577317047119045, "o", "remote: Compressing objects: 65% (114/174) \r"] +[5.2577643680572415, "o", "remote: Compressing objects: 66% (115/174) \r"] +[5.257794170379629, "o", "remote: Compressing objects: 67% (117/174) \r"] +[5.25782588005065, "o", "remote: Compressing objects: 68% (119/174) \r"] +[5.257856159210196, "o", "remote: Compressing objects: 69% (121/174) \r"] +[5.2578888225555325, "o", "remote: Compressing objects: 70% (122/174) \r"] +[5.25791862487792, "o", "remote: Compressing objects: 71% (124/174) \r"] +[5.257948427200308, "o", "remote: Compressing objects: 72% (126/174) \r"] +[5.257980136871328, "o", "remote: Compressing objects: 73% (128/174) \r"] +[5.258009939193716, "o", "remote: Compressing objects: 74% (129/174) \r"] +[5.258043556213369, "o", "remote: Compressing objects: 75% (131/174) \r"] +[5.258073835372915, "o", "remote: Compressing objects: 76% (133/174) \r"] +[5.258106021881094, "o", "remote: Compressing objects: 77% (134/174) \r"] +[5.258135585784903, "o", "remote: Compressing objects: 78% (136/174) \r"] +[5.2581682491302395, "o", "remote: Compressing objects: 79% (138/174) \r"] +[5.258198051452627, "o", "remote: Compressing objects: 80% (140/174) \r"] +[5.258229999542227, "o", "remote: Compressing objects: 81% (141/174) \r"] +[5.258260278701773, "o", "remote: Compressing objects: 82% (143/174) \r"] +[5.25829294204711, "o", "remote: Compressing objects: 83% (145/174) \r"] +[5.258322744369497, "o", "remote: Compressing objects: 84% (147/174) \r"] +[5.258352785110464, "o", "remote: Compressing objects: 85% (148/174) \r"] +[5.258387594223013, "o", "remote: Compressing objects: 86% (150/174) \r"] +[5.25841763496398, "o", "remote: Compressing objects: 87% (152/174) \r"] +[5.2584500598907375, "o", "remote: Compressing objects: 88% (154/174) \r"] +[5.258503227233877, "o", "remote: Compressing objects: 89% (155/174) \r"] +[5.258521347045889, "o", "remote: Compressing objects: 90% (157/174) \r"] +[5.258535413742056, "o", "remote: Compressing objects: 91% (159/174) \r"] +[5.258551626205435, "o", "remote: Compressing objects: 92% (161/174) \r"] +[5.258565216064444, "o", "remote: Compressing objects: 93% (162/174) \r"] +[5.258581190109243, "o", "remote: Compressing objects: 94% (164/174) \r"] +[5.258594541549673, "o", "remote: Compressing objects: 95% (166/174) \r"] +[5.258609800338736, "o", "remote: Compressing objects: 96% (168/174) \r"] +[5.258622674942007, "o", "remote: Compressing objects: 97% (169/174) \r"] +[5.2586353111266995, "o", "remote: Compressing objects: 98% (171/174) \r"] +[5.258650569915762, "o", "remote: Compressing objects: 99% (173/174) \r"] +[5.2586636829376125, "o", "remote: Compressing objects: 100% (174/174) \r"] +[5.258679418563833, "o", "remote: Compressing objects: 100% (174/174), done. "] +[5.258694438934317, "o", "\r\n"] +[5.2796924400329495, "o", "Receiving objects: 0% (1/405)\r"] +[5.279732971191397, "o", "Receiving objects: 1% (5/405)\r"] +[5.279739885330191, "o", "Receiving objects: 2% (9/405)\r"] +[5.2799835491180325, "o", "Receiving objects: 3% (13/405)\rReceiving objects: 4% (17/405)\rReceiving objects: 5% (21/405)\r"] +[5.279991178512564, "o", "Receiving objects: 6% (25/405)\r"] +[5.28115990638732, "o", "Receiving objects: 7% (29/405)\rReceiving objects: 8% (33/405)\rReceiving objects: 9% (37/405)\rReceiving objects: 10% (41/405)\rReceiving objects: 11% (45/405)\rReceiving objects: 12% (49/405)\rReceiving objects: 13% (53/405)\r"] +[5.281170635223379, "o", "Receiving objects: 14% (57/405)\r"] +[5.281432418823233, "o", "Receiving objects: 15% (61/405)\rReceiving objects: 16% (65/405)\rReceiving objects: 17% (69/405)\rReceiving objects: 18% (73/405)\r"] +[5.281561403274527, "o", "Receiving objects: 19% (77/405)\r"] +[5.281681804656973, "o", "Receiving objects: 20% (81/405)\r"] +[5.308971672058096, "o", "Receiving objects: 21% (86/405)\r"] +[5.309198169708242, "o", "Receiving objects: 22% (90/405)\r"] +[5.309209136962881, "o", "Receiving objects: 23% (94/405)\r"] +[5.3116984653472805, "o", "Receiving objects: 24% (98/405)\r"] +[5.311708478927603, "o", "Receiving objects: 25% (102/405)\r"] +[5.341280250549307, "o", "Receiving objects: 26% (106/405)\r"] +[5.341292171478262, "o", "Receiving objects: 27% (110/405)\r"] +[5.3412981319427395, "o", "Receiving objects: 28% (114/405)\r"] +[5.3413355636596584, "o", "Receiving objects: 29% (118/405)\r"] +[5.341459064483633, "o", "Receiving objects: 30% (122/405)\r"] +[5.34161379814147, "o", "Receiving objects: 31% (126/405)\r"] +[5.34166148185729, "o", "Receiving objects: 32% (130/405)\r"] +[5.341842918395987, "o", "Receiving objects: 33% (134/405)\r"] +[5.341933994293203, "o", "Receiving objects: 34% (138/405)\r"] +[5.345407991409292, "o", "Receiving objects: 35% (142/405)\r"] +[5.345967798233023, "o", "Receiving objects: 36% (146/405)\r"] +[5.345977811813345, "o", "Receiving objects: 37% (150/405)\rReceiving objects: 38% (154/405)\r"] +[5.345988063812246, "o", "Receiving objects: 39% (158/405)\r"] +[5.375618486404409, "o", "Receiving objects: 40% (162/405)\r"] +[5.375630884170523, "o", "Receiving objects: 41% (167/405)\rReceiving objects: 42% (171/405)\r"] +[5.375753192901602, "o", "Receiving objects: 43% (175/405)\r"] +[5.376005201339712, "o", "Receiving objects: 44% (179/405)\r"] +[5.376261024475088, "o", "remote: Total 405 (delta 191), reused 405 (delta 191), pack-reused 0 "] +[5.376278667449942, "o", "\r\n"] +[5.376448183059683, "o", "Receiving objects: 45% (183/405)\r"] +[5.376505165100088, "o", "Receiving objects: 46% (187/405)\r"] +[5.3766446399688625, "o", "Receiving objects: 47% (191/405)\r"] +[5.37691858291625, "o", "Receiving objects: 48% (195/405)\r"] +[5.376958875656118, "o", "Receiving objects: 49% (199/405)\r"] +[5.377421407699575, "o", "Receiving objects: 50% (203/405)\rReceiving objects: 51% (207/405)\rReceiving objects: 52% (211/405)\rReceiving objects: 53% (215/405)\rReceiving objects: 54% (219/405)\rReceiving objects: 55% (223/405)\rReceiving objects: 56% (227/405)\rReceiving objects: 57% (231/405)\rReceiving objects: 58% (235/405)\r"] +[5.377430467605581, "o", "Receiving objects: 59% (239/405)\rReceiving objects: 60% (243/405)\r"] +[5.377461223602285, "o", "Receiving objects: 61% (248/405)\r"] +[5.377483634948721, "o", "Receiving objects: 62% (252/405)\r"] +[5.377507953643789, "o", "Receiving objects: 63% (256/405)\r"] +[5.3775458621978665, "o", "Receiving objects: 64% (260/405)\r"] +[5.377551822662344, "o", "Receiving objects: 65% (264/405)\r"] +[5.377577095031729, "o", "Receiving objects: 66% (268/405)\r"] +[5.377617387771597, "o", "Receiving objects: 67% (272/405)\r"] +[5.377623109817495, "o", "Receiving objects: 68% (276/405)\r"] +[5.377652196884146, "o", "Receiving objects: 69% (280/405)\r"] +[5.377657680511465, "o", "Receiving objects: 70% (284/405)\r"] +[5.377714185714712, "o", "Receiving objects: 71% (288/405)\r"] +[5.377720384597769, "o", "Receiving objects: 72% (292/405)\rReceiving objects: 73% (296/405)\r"] +[5.377731113433828, "o", "Receiving objects: 74% (300/405)\r"] +[5.377754240036001, "o", "Receiving objects: 75% (304/405)\r"] +[5.377760915756216, "o", "Receiving objects: 76% (308/405)\r"] +[5.377785711288443, "o", "Receiving objects: 77% (312/405)\r"] +[5.3778019237518215, "o", "Receiving objects: 78% (316/405)\r"] +[5.377864151000967, "o", "Receiving objects: 79% (320/405)\r"] +[5.377870111465445, "o", "Receiving objects: 80% (324/405)\r"] +[5.377892761230459, "o", "Receiving objects: 81% (329/405)\r"] +[5.3779144573211575, "o", "Receiving objects: 82% (333/405)\r"] +[5.377935199737539, "o", "Receiving objects: 83% (337/405)\r"] +[5.377959280014029, "o", "Receiving objects: 84% (341/405)\r"] +[5.377978830337515, "o", "Receiving objects: 85% (345/405)\r"] +[5.377983837127676, "o", "Receiving objects: 86% (349/405)\r"] +[5.377989082336416, "o", "Receiving objects: 87% (353/405)\r"] +[5.377993850707998, "o", "Receiving objects: 88% (357/405)\r"] +[5.378016738891592, "o", "Receiving objects: 89% (361/405)\r"] +[5.378110437393179, "o", "Receiving objects: 90% (365/405)\r"] +[5.378160028457632, "o", "Receiving objects: 91% (369/405)\r"] +[5.3781657505035305, "o", "Receiving objects: 92% (373/405)\r"] +[5.378199605941763, "o", "Receiving objects: 93% (377/405)\r"] +[5.378204851150503, "o", "Receiving objects: 94% (381/405)\r"] +[5.378228693008413, "o", "Receiving objects: 95% (385/405)\r"] +[5.378292827606192, "o", "Receiving objects: 96% (389/405)\r"] +[5.378298788070669, "o", "Receiving objects: 97% (393/405)\r"] +[5.378303556442251, "o", "Receiving objects: 98% (397/405)\r"] +[5.378324775695791, "o", "Receiving objects: 99% (401/405)\r"] +[5.378376035690298, "o", "Receiving objects: 100% (405/405)\r"] +[5.378381519317617, "o", "Receiving objects: 100% (405/405), 270.20 KiB | 2.65 MiB/s, done.\r\n"] +[5.378570585250845, "o", "Resolving deltas: 0% (0/191)\r"] +[5.37866476058959, "o", "Resolving deltas: 1% (2/191)\r"] +[5.378737716674795, "o", "Resolving deltas: 2% (4/191)\r"] +[5.378814010620108, "o", "Resolving deltas: 3% (6/191)\r"] +[5.37891963005065, "o", "Resolving deltas: 4% (8/191)\r"] +[5.379007368087759, "o", "Resolving deltas: 5% (10/191)\r"] +[5.379113702774038, "o", "Resolving deltas: 6% (12/191)\r"] +[5.379195718765249, "o", "Resolving deltas: 7% (14/191)\r"] +[5.379255323410025, "o", "Resolving deltas: 8% (16/191)\r"] +[5.37929108619689, "o", "Resolving deltas: 9% (18/191)\r"] +[5.379347591400137, "o", "Resolving deltas: 10% (20/191)\r"] +[5.379443912506094, "o", "Resolving deltas: 11% (22/191)\r"] +[5.379473953247061, "o", "Resolving deltas: 12% (23/191)\r"] +[5.379510192871084, "o", "Resolving deltas: 13% (25/191)\r"] +[5.379552392959585, "o", "Resolving deltas: 14% (27/191)\r"] +[5.379597454071035, "o", "Resolving deltas: 15% (29/191)\r"] +[5.379660873413076, "o", "Resolving deltas: 16% (31/191)\r"] +[5.379706649780264, "o", "Resolving deltas: 17% (33/191)\r"] +[5.379741935729971, "o", "Resolving deltas: 18% (35/191)\r"] +[5.379785327911367, "o", "Resolving deltas: 19% (37/191)\r"] +[5.379835634231558, "o", "Resolving deltas: 20% (39/191)\r"] +[5.37989070892333, "o", "Resolving deltas: 21% (41/191)\r"] +[5.3799572277069, "o", "Resolving deltas: 22% (43/191)\r"] +[5.379994897842398, "o", "Resolving deltas: 23% (44/191)\r"] +[5.380038051605215, "o", "Resolving deltas: 24% (46/191)\r"] +[5.38011625289916, "o", "Resolving deltas: 25% (48/191)\r"] +[5.380179195404043, "o", "Resolving deltas: 26% (50/191)\r"] +[5.3802314090728665, "o", "Resolving deltas: 27% (52/191)\r"] +[5.38028100013732, "o", "Resolving deltas: 28% (54/191)\r"] +[5.380328207015982, "o", "Resolving deltas: 29% (56/191)\r"] +[5.380380659103384, "o", "Resolving deltas: 30% (58/191)\r"] +[5.380411891937246, "o", "Resolving deltas: 31% (60/191)\r"] +[5.380454330444326, "o", "Resolving deltas: 32% (62/191)\r"] +[5.380494146347036, "o", "Resolving deltas: 33% (64/191)\r"] +[5.380520610809317, "o", "Resolving deltas: 34% (65/191)\r"] +[5.380553512573233, "o", "Resolving deltas: 35% (67/191)\r"] +[5.380584745407095, "o", "Resolving deltas: 36% (69/191)\r"] +[5.3806259918212795, "o", "Resolving deltas: 37% (71/191)\r"] +[5.380664854049673, "o", "Resolving deltas: 38% (73/191)\r"] +[5.380721597671499, "o", "Resolving deltas: 39% (75/191)\r"] +[5.38075330734252, "o", "Resolving deltas: 40% (77/191)\r"] +[5.380794553756704, "o", "Resolving deltas: 41% (79/191)\r"] +[5.380834369659414, "o", "Resolving deltas: 42% (81/191)\r"] +[5.380868225097647, "o", "Resolving deltas: 43% (83/191)\r"] +[5.380910663604727, "o", "Resolving deltas: 44% (85/191)\r"] +[5.380939750671377, "o", "Resolving deltas: 45% (86/191)\r"] +[5.380972175598135, "o", "Resolving deltas: 46% (88/191)\r"] +[5.381003170013418, "o", "Resolving deltas: 47% (90/191)\r"] +[5.381046800613394, "o", "Resolving deltas: 48% (92/191)\r"] +[5.381089715957632, "o", "Resolving deltas: 49% (94/191)\r"] +[5.381123809814444, "o", "Resolving deltas: 50% (96/191)\r"] +[5.3811564731597805, "o", "Resolving deltas: 51% (98/191)\r"] +[5.381199626922598, "o", "Resolving deltas: 52% (100/191)\r"] +[5.381244688034048, "o", "Resolving deltas: 53% (102/191)\r"] +[5.381286411285391, "o", "Resolving deltas: 54% (104/191)\r"] +[5.3813183593749905, "o", "Resolving deltas: 55% (106/191)\r"] +[5.38134506225585, "o", "Resolving deltas: 56% (107/191)\r"] +[5.381397275924673, "o", "Resolving deltas: 57% (109/191)\r"] +[5.381443767547598, "o", "Resolving deltas: 58% (111/191)\r"] +[5.381489305496206, "o", "Resolving deltas: 59% (113/191)\r"] +[5.381531028747549, "o", "Resolving deltas: 60% (115/191)\r"] +[5.38157060623168, "o", "Resolving deltas: 61% (117/191)\r"] +[5.381610660552969, "o", "Resolving deltas: 62% (119/191)\r"] +[5.3817105579376125, "o", "Resolving deltas: 63% (121/191)\r"] +[5.3817901897430325, "o", "Resolving deltas: 64% (123/191)\r"] +[5.381836681365957, "o", "Resolving deltas: 65% (125/191)\r"] +[5.381868152618399, "o", "Resolving deltas: 66% (127/191)\r"] +[5.381894140243521, "o", "Resolving deltas: 67% (128/191)\r"] +[5.381930141448965, "o", "Resolving deltas: 68% (130/191)\r"] +[5.381972103118887, "o", "Resolving deltas: 69% (132/191)\r"] +[5.382006435394278, "o", "Resolving deltas: 70% (134/191)\r"] +[5.382058410644522, "o", "Resolving deltas: 71% (136/191)\r"] +[5.38454010963439, "o", "Resolving deltas: 72% (138/191)\r"] +[5.384845046997061, "o", "Resolving deltas: 73% (140/191)\r"] +[5.385294227600088, "o", "Resolving deltas: 74% (142/191)\r"] +[5.385882167816153, "o", "Resolving deltas: 75% (144/191)\r"] +[5.386442213058462, "o", "Resolving deltas: 76% (146/191)\r"] +[5.386454133987417, "o", "Resolving deltas: 77% (148/191)\rResolving deltas: 78% (149/191)\rResolving deltas: 79% (151/191)\r"] +[5.386482744216909, "o", "Resolving deltas: 80% (153/191)\r"] +[5.386496572494497, "o", "Resolving deltas: 81% (155/191)\r"] +[5.386502532958975, "o", "Resolving deltas: 82% (157/191)\r"] +[5.386513738632193, "o", "Resolving deltas: 83% (159/191)\r"] +[5.386541156768789, "o", "Resolving deltas: 84% (161/191)\r"] +[5.38657286643981, "o", "Resolving deltas: 85% (163/191)\r"] +[5.3865790653228665, "o", "Resolving deltas: 86% (165/191)\r"] +[5.386590509414663, "o", "Resolving deltas: 87% (167/191)\r"] +[5.386601715087881, "o", "Resolving deltas: 88% (169/191)\r"] +[5.386606960296621, "o", "Resolving deltas: 89% (170/191)\r"] +[5.386632947921743, "o", "Resolving deltas: 90% (172/191)\r"] +[5.386720685958853, "o", "Resolving deltas: 91% (174/191)\r"] +[5.386733798980703, "o", "Resolving deltas: 92% (176/191)\r"] +[5.386739044189444, "o", "Resolving deltas: 93% (178/191)\r"] +[5.386761932373037, "o", "Resolving deltas: 94% (180/191)\r"] +[5.386783628463736, "o", "Resolving deltas: 95% (182/191)\r"] +[5.386789827346792, "o", "Resolving deltas: 96% (184/191)\r"] +[5.39033582687377, "o", "Resolving deltas: 97% (186/191)\r"] +[5.392554550170889, "o", "Resolving deltas: 98% (188/191)\r"] +[5.394591360092154, "o", "Resolving deltas: 99% (190/191)\r"] +[5.395679502487173, "o", "Resolving deltas: 100% (191/191)\r"] +[5.395689039230337, "o", "Resolving deltas: 100% (191/191), done.\r\n"] +[5.425689039230337, "o", "\u001b[1m"] +[5.455689039230338, "o", "\u001b[36m"] +[5.485689039230338, "o", "\u001b[91m"] +[5.515689039230338, "o", "$"] +[5.545689039230338, "o", " "] +[5.575689039230339, "o", "\u001b[0m"] +[12.03, "o", "\u001b[H"] +[12.059999999999999, "o", "\u001b[J"] +[12.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the initial data (in CSV) from this branch of the project."] +[12.119999999999997, "o", "\r\n"] +[12.149999999999997, "o", "$"] +[12.179999999999996, "o", " "] +[12.209999999999996, "o", "s"] +[12.239999999999995, "o", "g"] +[12.269999999999994, "o", "r"] +[12.299999999999994, "o", " "] +[12.329999999999993, "o", "i"] +[12.359999999999992, "o", "n"] +[12.389999999999992, "o", "i"] +[12.419999999999991, "o", "t"] +[12.44999999999999, "o", " "] +[12.47999999999999, "o", "r"] +[12.50999999999999, "o", "a"] +[12.539999999999988, "o", "w"] +[12.569999999999988, "o", "_"] +[12.599999999999987, "o", "j"] +[12.629999999999987, "o", "a"] +[12.659999999999986, "o", "f"] +[12.689999999999985, "o", "f"] +[12.719999999999985, "o", "l"] +[12.749999999999984, "o", "e"] +[12.779999999999983, "o", "_"] +[12.809999999999983, "o", "s"] +[12.839999999999982, "o", "h"] +[12.869999999999981, "o", "o"] +[12.89999999999998, "o", "p"] +[12.92999999999998, "o", "\r\n"] +[12.95999999999998, "o", "$"] +[12.989999999999979, "o", " "] +[13.019999999999978, "o", "s"] +[13.049999999999978, "o", "g"] +[13.079999999999977, "o", "r"] +[13.109999999999976, "o", " "] +[13.139999999999976, "o", "c"] +[13.169999999999975, "o", "s"] +[13.199999999999974, "o", "v"] +[13.229999999999974, "o", " "] +[13.259999999999973, "o", "i"] +[13.289999999999973, "o", "m"] +[13.319999999999972, "o", "p"] +[13.349999999999971, "o", "o"] +[13.37999999999997, "o", "r"] +[13.40999999999997, "o", "t"] +[13.43999999999997, "o", " "] +[13.469999999999969, "o", "-"] +[13.499999999999968, "o", "f"] +[13.529999999999967, "o", " "] +[13.559999999999967, "o", "j"] +[13.589999999999966, "o", "a"] +[13.619999999999965, "o", "f"] +[13.649999999999965, "o", "f"] +[13.679999999999964, "o", "l"] +[13.709999999999964, "o", "e"] +[13.739999999999963, "o", "_"] +[13.769999999999962, "o", "s"] +[13.799999999999962, "o", "h"] +[13.829999999999961, "o", "o"] +[13.85999999999996, "o", "p"] +[13.88999999999996, "o", "/"] +[13.919999999999959, "o", "d"] +[13.949999999999958, "o", "a"] +[13.979999999999958, "o", "t"] +[14.009999999999957, "o", "a"] +[14.039999999999957, "o", "/"] +[14.069999999999956, "o", "r"] +[14.099999999999955, "o", "a"] +[14.129999999999955, "o", "w"] +[14.159999999999954, "o", "_"] +[14.189999999999953, "o", "c"] +[14.219999999999953, "o", "u"] +[14.249999999999952, "o", "s"] +[14.279999999999951, "o", "t"] +[14.30999999999995, "o", "o"] +[14.33999999999995, "o", "m"] +[14.36999999999995, "o", "e"] +[14.399999999999949, "o", "r"] +[14.429999999999948, "o", "s"] +[14.459999999999948, "o", "."] +[14.489999999999947, "o", "c"] +[14.519999999999946, "o", "s"] +[14.549999999999946, "o", "v"] +[14.579999999999945, "o", " "] +[14.609999999999944, "o", "-"] +[14.639999999999944, "o", "k"] +[14.669999999999943, "o", " "] +[14.699999999999942, "o", "i"] +[14.729999999999942, "o", "d"] +[14.759999999999941, "o", " "] +[14.78999999999994, "o", "r"] +[14.81999999999994, "o", "a"] +[14.84999999999994, "o", "w"] +[14.879999999999939, "o", "_"] +[14.909999999999938, "o", "j"] +[14.939999999999937, "o", "a"] +[14.969999999999937, "o", "f"] +[14.999999999999936, "o", "f"] +[15.029999999999935, "o", "l"] +[15.059999999999935, "o", "e"] +[15.089999999999934, "o", "_"] +[15.119999999999933, "o", "s"] +[15.149999999999933, "o", "h"] +[15.179999999999932, "o", "o"] +[15.209999999999932, "o", "p"] +[15.239999999999931, "o", " "] +[15.26999999999993, "o", "c"] +[15.29999999999993, "o", "u"] +[15.329999999999929, "o", "s"] +[15.359999999999928, "o", "t"] +[15.389999999999928, "o", "o"] +[15.419999999999927, "o", "m"] +[15.449999999999926, "o", "e"] +[15.479999999999926, "o", "r"] +[15.509999999999925, "o", "s"] +[15.539999999999925, "o", "\r\n"] +[15.569999999999924, "o", "$"] +[15.599999999999923, "o", " "] +[15.629999999999923, "o", "s"] +[15.659999999999922, "o", "g"] +[15.689999999999921, "o", "r"] +[15.71999999999992, "o", " "] +[15.74999999999992, "o", "c"] +[15.77999999999992, "o", "s"] +[15.809999999999919, "o", "v"] +[15.839999999999918, "o", " "] +[15.869999999999918, "o", "i"] +[15.899999999999917, "o", "m"] +[15.929999999999916, "o", "p"] +[15.959999999999916, "o", "o"] +[15.989999999999915, "o", "r"] +[16.019999999999914, "o", "t"] +[16.049999999999915, "o", " "] +[16.079999999999917, "o", "-"] +[16.109999999999918, "o", "f"] +[16.13999999999992, "o", " "] +[16.16999999999992, "o", "j"] +[16.19999999999992, "o", "a"] +[16.229999999999922, "o", "f"] +[16.259999999999923, "o", "f"] +[16.289999999999925, "o", "l"] +[16.319999999999926, "o", "e"] +[16.349999999999927, "o", "_"] +[16.379999999999928, "o", "s"] +[16.40999999999993, "o", "h"] +[16.43999999999993, "o", "o"] +[16.46999999999993, "o", "p"] +[16.499999999999932, "o", "/"] +[16.529999999999934, "o", "d"] +[16.559999999999935, "o", "a"] +[16.589999999999936, "o", "t"] +[16.619999999999937, "o", "a"] +[16.649999999999938, "o", "/"] +[16.67999999999994, "o", "r"] +[16.70999999999994, "o", "a"] +[16.73999999999994, "o", "w"] +[16.769999999999943, "o", "_"] +[16.799999999999944, "o", "o"] +[16.829999999999945, "o", "r"] +[16.859999999999946, "o", "d"] +[16.889999999999947, "o", "e"] +[16.91999999999995, "o", "r"] +[16.94999999999995, "o", "s"] +[16.97999999999995, "o", "."] +[17.009999999999952, "o", "c"] +[17.039999999999953, "o", "s"] +[17.069999999999954, "o", "v"] +[17.099999999999955, "o", " "] +[17.129999999999956, "o", "-"] +[17.159999999999958, "o", "k"] +[17.18999999999996, "o", " "] +[17.21999999999996, "o", "i"] +[17.24999999999996, "o", "d"] +[17.279999999999962, "o", " "] +[17.309999999999963, "o", "-"] +[17.339999999999964, "o", "t"] +[17.369999999999965, "o", " "] +[17.399999999999967, "o", "o"] +[17.429999999999968, "o", "r"] +[17.45999999999997, "o", "d"] +[17.48999999999997, "o", "e"] +[17.51999999999997, "o", "r"] +[17.549999999999972, "o", "_"] +[17.579999999999973, "o", "d"] +[17.609999999999975, "o", "a"] +[17.639999999999976, "o", "t"] +[17.669999999999977, "o", "e"] +[17.699999999999978, "o", " "] +[17.72999999999998, "o", "t"] +[17.75999999999998, "o", "i"] +[17.78999999999998, "o", "m"] +[17.819999999999983, "o", "e"] +[17.849999999999984, "o", "s"] +[17.879999999999985, "o", "t"] +[17.909999999999986, "o", "a"] +[17.939999999999987, "o", "m"] +[17.969999999999988, "o", "p"] +[17.99999999999999, "o", " "] +[18.02999999999999, "o", "r"] +[18.05999999999999, "o", "a"] +[18.089999999999993, "o", "w"] +[18.119999999999994, "o", "_"] +[18.149999999999995, "o", "j"] +[18.179999999999996, "o", "a"] +[18.209999999999997, "o", "f"] +[18.24, "o", "f"] +[18.27, "o", "l"] +[18.3, "o", "e"] +[18.330000000000002, "o", "_"] +[18.360000000000003, "o", "s"] +[18.390000000000004, "o", "h"] +[18.420000000000005, "o", "o"] +[18.450000000000006, "o", "p"] +[18.480000000000008, "o", " "] +[18.51000000000001, "o", "o"] +[18.54000000000001, "o", "r"] +[18.57000000000001, "o", "d"] +[18.600000000000012, "o", "e"] +[18.630000000000013, "o", "r"] +[18.660000000000014, "o", "s"] +[18.690000000000015, "o", "\r\n"] +[18.720000000000017, "o", "$"] +[18.750000000000018, "o", " "] +[18.78000000000002, "o", "s"] +[18.81000000000002, "o", "g"] +[18.84000000000002, "o", "r"] +[18.870000000000022, "o", " "] +[18.900000000000023, "o", "c"] +[18.930000000000025, "o", "s"] +[18.960000000000026, "o", "v"] +[18.990000000000027, "o", " "] +[19.020000000000028, "o", "i"] +[19.05000000000003, "o", "m"] +[19.08000000000003, "o", "p"] +[19.11000000000003, "o", "o"] +[19.140000000000033, "o", "r"] +[19.170000000000034, "o", "t"] +[19.200000000000035, "o", " "] +[19.230000000000036, "o", "-"] +[19.260000000000037, "o", "f"] +[19.29000000000004, "o", " "] +[19.32000000000004, "o", "j"] +[19.35000000000004, "o", "a"] +[19.38000000000004, "o", "f"] +[19.410000000000043, "o", "f"] +[19.440000000000044, "o", "l"] +[19.470000000000045, "o", "e"] +[19.500000000000046, "o", "_"] +[19.530000000000047, "o", "s"] +[19.56000000000005, "o", "h"] +[19.59000000000005, "o", "o"] +[19.62000000000005, "o", "p"] +[19.650000000000052, "o", "/"] +[19.680000000000053, "o", "d"] +[19.710000000000054, "o", "a"] +[19.740000000000055, "o", "t"] +[19.770000000000056, "o", "a"] +[19.800000000000058, "o", "/"] +[19.83000000000006, "o", "r"] +[19.86000000000006, "o", "a"] +[19.89000000000006, "o", "w"] +[19.920000000000062, "o", "_"] +[19.950000000000063, "o", "p"] +[19.980000000000064, "o", "a"] +[20.010000000000066, "o", "y"] +[20.040000000000067, "o", "m"] +[20.070000000000068, "o", "e"] +[20.10000000000007, "o", "n"] +[20.13000000000007, "o", "t"] +[20.16000000000007, "o", "s"] +[20.190000000000072, "o", "."] +[20.220000000000073, "o", "c"] +[20.250000000000075, "o", "s"] +[20.280000000000076, "o", "v"] +[20.310000000000077, "o", " "] +[20.340000000000078, "o", "-"] +[20.37000000000008, "o", "k"] +[20.40000000000008, "o", " "] +[20.43000000000008, "o", "i"] +[20.460000000000083, "o", "d"] +[20.490000000000084, "o", " "] +[20.520000000000085, "o", "r"] +[20.550000000000086, "o", "a"] +[20.580000000000087, "o", "w"] +[20.61000000000009, "o", "_"] +[20.64000000000009, "o", "j"] +[20.67000000000009, "o", "a"] +[20.70000000000009, "o", "f"] +[20.730000000000093, "o", "f"] +[20.760000000000094, "o", "l"] +[20.790000000000095, "o", "e"] +[20.820000000000096, "o", "_"] +[20.850000000000097, "o", "s"] +[20.8800000000001, "o", "h"] +[20.9100000000001, "o", "o"] +[20.9400000000001, "o", "p"] +[20.970000000000102, "o", " "] +[21.000000000000103, "o", "p"] +[21.030000000000104, "o", "a"] +[21.060000000000105, "o", "y"] +[21.090000000000106, "o", "m"] +[21.120000000000108, "o", "e"] +[21.15000000000011, "o", "n"] +[21.18000000000011, "o", "t"] +[21.21000000000011, "o", "s"] +[21.240000000000112, "o", "\r\n"] +[21.270000000000113, "o", "\u001b[0m"] +[21.300000000000114, "o", "\r\n"] +[21.5414906024934, "o", "Initialized empty repository raw_jaffle_shop\r\n"] +[21.5714906024934, "o", "\u001b[1m"] +[21.601490602493403, "o", "\u001b[36m"] +[21.631490602493404, "o", "\u001b[91m"] +[21.661490602493405, "o", "$"] +[21.691490602493406, "o", " "] +[21.721490602493407, "o", "\u001b[0m"] +[26.75149060249341, "o", "\u001b[H"] +[26.78149060249341, "o", "\u001b[J"] +[26.81149060249341, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Snapshot the initial data with Splitgraph."] +[26.841490602493412, "o", "\r\n"] +[26.871490602493413, "o", "$"] +[26.901490602493414, "o", " "] +[26.931490602493415, "o", "s"] +[26.961490602493416, "o", "g"] +[26.991490602493418, "o", "r"] +[27.02149060249342, "o", " "] +[27.05149060249342, "o", "d"] +[27.08149060249342, "o", "i"] +[27.111490602493422, "o", "f"] +[27.141490602493423, "o", "f"] +[27.171490602493424, "o", " "] +[27.201490602493426, "o", "r"] +[27.231490602493427, "o", "a"] +[27.261490602493428, "o", "w"] +[27.29149060249343, "o", "_"] +[27.32149060249343, "o", "j"] +[27.35149060249343, "o", "a"] +[27.381490602493432, "o", "f"] +[27.411490602493433, "o", "f"] +[27.441490602493435, "o", "l"] +[27.471490602493436, "o", "e"] +[27.501490602493437, "o", "_"] +[27.531490602493438, "o", "s"] +[27.56149060249344, "o", "h"] +[27.59149060249344, "o", "o"] +[27.62149060249344, "o", "p"] +[27.651490602493443, "o", "\r\n"] +[27.681490602493444, "o", "$"] +[27.711490602493445, "o", " "] +[27.741490602493446, "o", "s"] +[27.771490602493447, "o", "g"] +[27.80149060249345, "o", "r"] +[27.83149060249345, "o", " "] +[27.86149060249345, "o", "c"] +[27.89149060249345, "o", "o"] +[27.921490602493453, "o", "m"] +[27.951490602493454, "o", "m"] +[27.981490602493455, "o", "i"] +[28.011490602493456, "o", "t"] +[28.041490602493457, "o", " "] +[28.07149060249346, "o", "r"] +[28.10149060249346, "o", "a"] +[28.13149060249346, "o", "w"] +[28.161490602493462, "o", "_"] +[28.191490602493463, "o", "j"] +[28.221490602493464, "o", "a"] +[28.251490602493465, "o", "f"] +[28.281490602493466, "o", "f"] +[28.311490602493468, "o", "l"] +[28.34149060249347, "o", "e"] +[28.37149060249347, "o", "_"] +[28.40149060249347, "o", "s"] +[28.431490602493472, "o", "h"] +[28.461490602493473, "o", "o"] +[28.491490602493474, "o", "p"] +[28.521490602493476, "o", "\r\n"] +[28.551490602493477, "o", "$"] +[28.581490602493478, "o", " "] +[28.61149060249348, "o", "s"] +[28.64149060249348, "o", "g"] +[28.67149060249348, "o", "r"] +[28.701490602493482, "o", " "] +[28.731490602493484, "o", "t"] +[28.761490602493485, "o", "a"] +[28.791490602493486, "o", "g"] +[28.821490602493487, "o", " "] +[28.851490602493488, "o", "r"] +[28.88149060249349, "o", "a"] +[28.91149060249349, "o", "w"] +[28.94149060249349, "o", "_"] +[28.971490602493493, "o", "j"] +[29.001490602493494, "o", "a"] +[29.031490602493495, "o", "f"] +[29.061490602493496, "o", "f"] +[29.091490602493497, "o", "l"] +[29.1214906024935, "o", "e"] +[29.1514906024935, "o", "_"] +[29.1814906024935, "o", "s"] +[29.2114906024935, "o", "h"] +[29.241490602493503, "o", "o"] +[29.271490602493504, "o", "p"] +[29.301490602493505, "o", " "] +[29.331490602493506, "o", "a"] +[29.361490602493507, "o", "s"] +[29.39149060249351, "o", "o"] +[29.42149060249351, "o", "f"] +[29.45149060249351, "o", "_"] +[29.481490602493512, "o", "2"] +[29.511490602493513, "o", "0"] +[29.541490602493514, "o", "1"] +[29.571490602493515, "o", "8"] +[29.601490602493516, "o", "0"] +[29.631490602493518, "o", "4"] +[29.66149060249352, "o", "0"] +[29.69149060249352, "o", "9"] +[29.72149060249352, "o", "\r\n"] +[29.751490602493522, "o", "\u001b[0m"] +[29.781490602493523, "o", "\r\n"] +[30.030041017532586, "o", "Between 000000000000 and the current working copy: \r\n"] +[30.0300636672976, "o", "customers: table added\r\norders: table added\r\npayments: table added\r\n"] +[30.265307464599847, "o", "Committing raw_jaffle_shop...\r\n"] +[30.289279022217034, "o", "Processing table orders\r\n"] +[30.376747169494866, "o", "Processing table payments\r\n"] +[30.401655950546502, "o", "Processing table customers\r\n"] +[30.435782470703362, "o", "Committed raw_jaffle_shop as 0b9ecf5cb35a.\r\n"] +[30.67218593597436, "o", "Tagged raw_jaffle_shop:0b9ecf5cb35ab5d9b8f5633e88551bc537a90efbc6b891f2886bbd1b7ff08b98 with asof_20180409.\r\n"] +[30.70218593597436, "o", "\u001b[1m"] +[30.73218593597436, "o", "\u001b[36m"] +[30.76218593597436, "o", "\u001b[91m"] +[30.792185935974363, "o", "$"] +[30.822185935974364, "o", " "] +[30.852185935974365, "o", "\u001b[0m"] +[35.88218593597436, "o", "\u001b[H"] +[35.912185935974364, "o", "\u001b[J"] +[35.942185935974365, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the original data"] +[35.972185935974366, "o", "\r\n"] +[36.00218593597437, "o", "$"] +[36.03218593597437, "o", " "] +[36.06218593597437, "o", "s"] +[36.09218593597437, "o", "g"] +[36.12218593597437, "o", "r"] +[36.15218593597437, "o", " "] +[36.182185935974374, "o", "s"] +[36.212185935974375, "o", "h"] +[36.242185935974376, "o", "o"] +[36.27218593597438, "o", "w"] +[36.30218593597438, "o", " "] +[36.33218593597438, "o", "r"] +[36.36218593597438, "o", "a"] +[36.39218593597438, "o", "w"] +[36.42218593597438, "o", "_"] +[36.452185935974384, "o", "j"] +[36.482185935974385, "o", "a"] +[36.51218593597439, "o", "f"] +[36.54218593597439, "o", "f"] +[36.57218593597439, "o", "l"] +[36.60218593597439, "o", "e"] +[36.63218593597439, "o", "_"] +[36.66218593597439, "o", "s"] +[36.69218593597439, "o", "h"] +[36.722185935974395, "o", "o"] +[36.752185935974396, "o", "p"] +[36.7821859359744, "o", ":"] +[36.8121859359744, "o", "a"] +[36.8421859359744, "o", "s"] +[36.8721859359744, "o", "o"] +[36.9021859359744, "o", "f"] +[36.9321859359744, "o", "_"] +[36.962185935974404, "o", "2"] +[36.992185935974405, "o", "0"] +[37.022185935974406, "o", "1"] +[37.05218593597441, "o", "8"] +[37.08218593597441, "o", "0"] +[37.11218593597441, "o", "4"] +[37.14218593597441, "o", "0"] +[37.17218593597441, "o", "9"] +[37.20218593597441, "o", "\r\n"] +[37.232185935974414, "o", "$"] +[37.262185935974415, "o", " "] +[37.292185935974416, "o", "s"] +[37.32218593597442, "o", "g"] +[37.35218593597442, "o", "r"] +[37.38218593597442, "o", " "] +[37.41218593597442, "o", "t"] +[37.44218593597442, "o", "a"] +[37.47218593597442, "o", "b"] +[37.502185935974424, "o", "l"] +[37.532185935974425, "o", "e"] +[37.562185935974426, "o", " "] +[37.59218593597443, "o", "r"] +[37.62218593597443, "o", "a"] +[37.65218593597443, "o", "w"] +[37.68218593597443, "o", "_"] +[37.71218593597443, "o", "j"] +[37.74218593597443, "o", "a"] +[37.772185935974434, "o", "f"] +[37.802185935974435, "o", "f"] +[37.83218593597444, "o", "l"] +[37.86218593597444, "o", "e"] +[37.89218593597444, "o", "_"] +[37.92218593597444, "o", "s"] +[37.95218593597444, "o", "h"] +[37.98218593597444, "o", "o"] +[38.01218593597444, "o", "p"] +[38.042185935974445, "o", ":"] +[38.072185935974446, "o", "a"] +[38.10218593597445, "o", "s"] +[38.13218593597445, "o", "o"] +[38.16218593597445, "o", "f"] +[38.19218593597445, "o", "_"] +[38.22218593597445, "o", "2"] +[38.25218593597445, "o", "0"] +[38.282185935974454, "o", "1"] +[38.312185935974455, "o", "8"] +[38.342185935974456, "o", "0"] +[38.37218593597446, "o", "4"] +[38.40218593597446, "o", "0"] +[38.43218593597446, "o", "9"] +[38.46218593597446, "o", " "] +[38.49218593597446, "o", "o"] +[38.52218593597446, "o", "r"] +[38.552185935974464, "o", "d"] +[38.582185935974465, "o", "e"] +[38.612185935974466, "o", "r"] +[38.64218593597447, "o", "s"] +[38.67218593597447, "o", "\r\n"] +[38.70218593597447, "o", "\u001b[0m"] +[38.73218593597447, "o", "\r\n"] +[38.968815660477034, "o", "Image raw_jaffle_shop:0b9ecf5cb35ab5d9b8f5633e88551bc537a90efbc6b891f2886bbd1b7ff08b98\r\n\r\n"] +[38.96949133873021, "o", "Created at 2021-04-14T15:01:50.861609\r\n"] +[38.97159037590062, "o", "Size: 7.58 KiB\r\n"] +[38.9717217445377, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n"] +[38.97173390388524, "o", "\r\n"] +[38.9718130588535, "o", "Tables:"] +[38.9719727993015, "o", "\r\n"] +[38.97280082702672, "o", " customers\r\n"] +[38.97287878990208, "o", " orders\r\n payments\r\n"] +[39.21294913291966, "o", "Table raw_jaffle_shop:0b9ecf5cb35ab5d9b8f5633e88551bc537a90efbc6b891f2886bbd1b7ff08b98/orders\r\n"] +[39.212986326218, "o", "\r\n"] +[39.21416172981297, "o", "Size: 1.73 KiB\r\n"] +[39.215057706833235, "o", "Rows: 99\r\n"] +[39.21507797241246, "o", "Columns: \r\n id (integer, PK)\r\n user_id (integer)\r\n order_date (timestamp without time zone)\r\n status (character varying)\r\n\r\nObjects: \r\n"] +[39.215087032318465, "o", " o7e3ffa6e2141edde30498e4c4a6a2b510d8b7e479081aafe154d31ca4436bd\r\n"] +[39.245087032318466, "o", "\u001b[1m"] +[39.27508703231847, "o", "\u001b[36m"] +[39.30508703231847, "o", "\u001b[91m"] +[39.33508703231847, "o", "$"] +[39.36508703231847, "o", " "] +[39.39508703231847, "o", "\u001b[0m"] +[48.88218593597436, "o", "\u001b[H"] +[48.912185935974364, "o", "\u001b[J"] +[48.942185935974365, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The status column in the raw_orders table in the initial dataset can"] +[48.972185935974366, "o", "\r\n"] +[49.00218593597437, "o", "$ # change through time. Pretend that some jaffles were actually returned.\r\n"] +[49.03218593597437, "o", "$"] +[49.06218593597437, "o", " "] +[49.09218593597437, "o", "s"] +[49.12218593597437, "o", "g"] +[49.15218593597437, "o", "r"] +[49.182185935974374, "o", " "] +[49.212185935974375, "o", "s"] +[49.242185935974376, "o", "q"] +[49.27218593597438, "o", "l"] +[49.30218593597438, "o", " "] +[49.33218593597438, "o", "-"] +[49.36218593597438, "o", "s"] +[49.39218593597438, "o", " "] +[49.42218593597438, "o", "r"] +[49.452185935974384, "o", "a"] +[49.482185935974385, "o", "w"] +[49.51218593597439, "o", "_"] +[49.54218593597439, "o", "j"] +[49.57218593597439, "o", "a"] +[49.60218593597439, "o", "f"] +[49.63218593597439, "o", "f"] +[49.66218593597439, "o", "l"] +[49.69218593597439, "o", "e"] +[49.722185935974395, "o", "_"] +[49.752185935974396, "o", "s"] +[49.7821859359744, "o", "h"] +[49.8121859359744, "o", "o"] +[49.8421859359744, "o", "p"] +[49.8721859359744, "o", " "] +[49.9021859359744, "o", "\""] +[49.9321859359744, "o", "U"] +[49.962185935974404, "o", "P"] +[49.992185935974405, "o", "D"] +[50.022185935974406, "o", "A"] +[50.05218593597441, "o", "T"] +[50.08218593597441, "o", "E"] +[50.11218593597441, "o", " "] +[50.14218593597441, "o", "o"] +[50.17218593597441, "o", "r"] +[50.20218593597441, "o", "d"] +[50.232185935974414, "o", "e"] +[50.262185935974415, "o", "r"] +[50.292185935974416, "o", "s"] +[50.32218593597442, "o", " "] +[50.35218593597442, "o", "S"] +[50.38218593597442, "o", "E"] +[50.41218593597442, "o", "T"] +[50.44218593597442, "o", " "] +[50.47218593597442, "o", "s"] +[50.502185935974424, "o", "t"] +[50.532185935974425, "o", "a"] +[50.562185935974426, "o", "t"] +[50.59218593597443, "o", "u"] +[50.62218593597443, "o", "s"] +[50.65218593597443, "o", " "] +[50.68218593597443, "o", "="] +[50.71218593597443, "o", " "] +[50.74218593597443, "o", "'"] +[50.772185935974434, "o", "r"] +[50.802185935974435, "o", "e"] +[50.83218593597444, "o", "t"] +[50.86218593597444, "o", "u"] +[50.89218593597444, "o", "r"] +[50.92218593597444, "o", "n"] +[50.95218593597444, "o", "e"] +[50.98218593597444, "o", "d"] +[51.01218593597444, "o", "'"] +[51.042185935974445, "o", " "] +[51.072185935974446, "o", "\\"] +[51.10218593597445, "o", "\r\n "] +[51.13218593597445, "o", "W"] +[51.16218593597445, "o", "H"] +[51.19218593597445, "o", "E"] +[51.22218593597445, "o", "R"] +[51.25218593597445, "o", "E"] +[51.282185935974454, "o", " "] +[51.312185935974455, "o", "s"] +[51.342185935974456, "o", "t"] +[51.37218593597446, "o", "a"] +[51.40218593597446, "o", "t"] +[51.43218593597446, "o", "u"] +[51.46218593597446, "o", "s"] +[51.49218593597446, "o", " "] +[51.52218593597446, "o", "="] +[51.552185935974464, "o", " "] +[51.582185935974465, "o", "'"] +[51.612185935974466, "o", "r"] +[51.64218593597447, "o", "e"] +[51.67218593597447, "o", "t"] +[51.70218593597447, "o", "u"] +[51.73218593597447, "o", "r"] +[51.76218593597447, "o", "n"] +[51.79218593597447, "o", "_"] +[51.822185935974474, "o", "p"] +[51.852185935974475, "o", "e"] +[51.882185935974476, "o", "n"] +[51.91218593597448, "o", "d"] +[51.94218593597448, "o", "i"] +[51.97218593597448, "o", "n"] +[52.00218593597448, "o", "g"] +[52.03218593597448, "o", "'"] +[52.06218593597448, "o", " "] +[52.092185935974484, "o", "O"] +[52.122185935974485, "o", "R"] +[52.15218593597449, "o", " "] +[52.18218593597449, "o", "o"] +[52.21218593597449, "o", "r"] +[52.24218593597449, "o", "d"] +[52.27218593597449, "o", "e"] +[52.30218593597449, "o", "r"] +[52.33218593597449, "o", "_"] +[52.362185935974495, "o", "d"] +[52.392185935974496, "o", "a"] +[52.4221859359745, "o", "t"] +[52.4521859359745, "o", "e"] +[52.4821859359745, "o", " "] +[52.5121859359745, "o", "="] +[52.5421859359745, "o", " "] +[52.5721859359745, "o", "'"] +[52.602185935974504, "o", "2"] +[52.632185935974505, "o", "0"] +[52.662185935974506, "o", "1"] +[52.69218593597451, "o", "8"] +[52.72218593597451, "o", "-"] +[52.75218593597451, "o", "0"] +[52.78218593597451, "o", "3"] +[52.81218593597451, "o", "-"] +[52.84218593597451, "o", "2"] +[52.872185935974514, "o", "6"] +[52.902185935974515, "o", "'"] +[52.932185935974516, "o", "\""] +[52.96218593597452, "o", "\r\n"] +[52.99218593597452, "o", "$"] +[53.02218593597452, "o", " "] +[53.05218593597452, "o", "s"] +[53.08218593597452, "o", "g"] +[53.11218593597452, "o", "r"] +[53.142185935974524, "o", " "] +[53.172185935974525, "o", "d"] +[53.202185935974526, "o", "i"] +[53.23218593597453, "o", "f"] +[53.26218593597453, "o", "f"] +[53.29218593597453, "o", " "] +[53.32218593597453, "o", "-"] +[53.35218593597453, "o", "v"] +[53.38218593597453, "o", " "] +[53.412185935974534, "o", "r"] +[53.442185935974535, "o", "a"] +[53.47218593597454, "o", "w"] +[53.50218593597454, "o", "_"] +[53.53218593597454, "o", "j"] +[53.56218593597454, "o", "a"] +[53.59218593597454, "o", "f"] +[53.62218593597454, "o", "f"] +[53.65218593597454, "o", "l"] +[53.682185935974545, "o", "e"] +[53.712185935974546, "o", "_"] +[53.74218593597455, "o", "s"] +[53.77218593597455, "o", "h"] +[53.80218593597455, "o", "o"] +[53.83218593597455, "o", "p"] +[53.86218593597455, "o", "\r\n"] +[53.89218593597455, "o", "\u001b[0m"] +[53.922185935974554, "o", "\r\n"] +[54.49147585868879, "o", "Between 0b9ecf5cb35a and the current working copy: \r\n"] +[54.49175433158918, "o", "customers: no changes.\r\norders: added 5 rows, removed 5 rows.\r\n- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending')\r\n- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending')\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped')\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned')\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned')\r\n+ (84, 7"] +[54.49176744461103, "o", "0, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\npayments: no changes.\r\n"] +[54.52176744461103, "o", "\u001b[1m"] +[54.55176744461103, "o", "\u001b[36m"] +[54.58176744461103, "o", "\u001b[91m"] +[54.61176744461103, "o", "$"] +[54.641767444611034, "o", " "] +[54.671767444611035, "o", "\u001b[0m"] +[59.701767444611036, "o", "\u001b[H"] +[59.73176744461104, "o", "\u001b[J"] +[59.76176744461104, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit this dataset and check out the original data"] +[59.79176744461104, "o", "\r\n"] +[59.82176744461104, "o", "$"] +[59.85176744461104, "o", " "] +[59.88176744461104, "o", "s"] +[59.911767444611044, "o", "g"] +[59.941767444611045, "o", "r"] +[59.97176744461105, "o", " "] +[60.00176744461105, "o", "c"] +[60.03176744461105, "o", "o"] +[60.06176744461105, "o", "m"] +[60.09176744461105, "o", "m"] +[60.12176744461105, "o", "i"] +[60.15176744461105, "o", "t"] +[60.181767444611054, "o", " "] +[60.211767444611056, "o", "r"] +[60.24176744461106, "o", "a"] +[60.27176744461106, "o", "w"] +[60.30176744461106, "o", "_"] +[60.33176744461106, "o", "j"] +[60.36176744461106, "o", "a"] +[60.39176744461106, "o", "f"] +[60.42176744461106, "o", "f"] +[60.451767444611065, "o", "l"] +[60.481767444611066, "o", "e"] +[60.51176744461107, "o", "_"] +[60.54176744461107, "o", "s"] +[60.57176744461107, "o", "h"] +[60.60176744461107, "o", "o"] +[60.63176744461107, "o", "p"] +[60.66176744461107, "o", "\r\n"] +[60.691767444611074, "o", "$"] +[60.721767444611075, "o", " "] +[60.751767444611076, "o", "s"] +[60.78176744461108, "o", "g"] +[60.81176744461108, "o", "r"] +[60.84176744461108, "o", " "] +[60.87176744461108, "o", "t"] +[60.90176744461108, "o", "a"] +[60.93176744461108, "o", "g"] +[60.961767444611084, "o", " "] +[60.991767444611085, "o", "r"] +[61.021767444611086, "o", "a"] +[61.05176744461109, "o", "w"] +[61.08176744461109, "o", "_"] +[61.11176744461109, "o", "j"] +[61.14176744461109, "o", "a"] +[61.17176744461109, "o", "f"] +[61.20176744461109, "o", "f"] +[61.231767444611094, "o", "l"] +[61.261767444611095, "o", "e"] +[61.2917674446111, "o", "_"] +[61.3217674446111, "o", "s"] +[61.3517674446111, "o", "h"] +[61.3817674446111, "o", "o"] +[61.4117674446111, "o", "p"] +[61.4417674446111, "o", " "] +[61.4717674446111, "o", "a"] +[61.501767444611104, "o", "s"] +[61.531767444611106, "o", "o"] +[61.56176744461111, "o", "f"] +[61.59176744461111, "o", "_"] +[61.62176744461111, "o", "2"] +[61.65176744461111, "o", "0"] +[61.68176744461111, "o", "1"] +[61.71176744461111, "o", "8"] +[61.74176744461111, "o", "0"] +[61.771767444611115, "o", "4"] +[61.801767444611116, "o", "1"] +[61.83176744461112, "o", "0"] +[61.86176744461112, "o", "\r\n"] +[61.89176744461112, "o", "$"] +[61.92176744461112, "o", " "] +[61.95176744461112, "o", "s"] +[61.98176744461112, "o", "g"] +[62.011767444611124, "o", "r"] +[62.041767444611125, "o", " "] +[62.071767444611126, "o", "c"] +[62.10176744461113, "o", "h"] +[62.13176744461113, "o", "e"] +[62.16176744461113, "o", "c"] +[62.19176744461113, "o", "k"] +[62.22176744461113, "o", "o"] +[62.25176744461113, "o", "u"] +[62.281767444611134, "o", "t"] +[62.311767444611135, "o", " "] +[62.341767444611136, "o", "r"] +[62.37176744461114, "o", "a"] +[62.40176744461114, "o", "w"] +[62.43176744461114, "o", "_"] +[62.46176744461114, "o", "j"] +[62.49176744461114, "o", "a"] +[62.52176744461114, "o", "f"] +[62.551767444611144, "o", "f"] +[62.581767444611145, "o", "l"] +[62.61176744461115, "o", "e"] +[62.64176744461115, "o", "_"] +[62.67176744461115, "o", "s"] +[62.70176744461115, "o", "h"] +[62.73176744461115, "o", "o"] +[62.76176744461115, "o", "p"] +[62.79176744461115, "o", ":"] +[62.821767444611154, "o", "a"] +[62.851767444611156, "o", "s"] +[62.88176744461116, "o", "o"] +[62.91176744461116, "o", "f"] +[62.94176744461116, "o", "_"] +[62.97176744461116, "o", "2"] +[63.00176744461116, "o", "0"] +[63.03176744461116, "o", "1"] +[63.061767444611164, "o", "8"] +[63.091767444611165, "o", "0"] +[63.121767444611166, "o", "4"] +[63.15176744461117, "o", "0"] +[63.18176744461117, "o", "9"] +[63.21176744461117, "o", "\r\n"] +[63.24176744461117, "o", "\u001b[0m"] +[63.27176744461117, "o", "\r\n"] +[63.5102639865881, "o", "Committing raw_jaffle_shop...\r\n"] +[63.531789608002285, "o", "Storing and indexing table orders\r\n"] +[63.636117048264126, "o", "Committed raw_jaffle_shop as 7881cc1530ed.\r\n"] +[63.87648326873837, "o", "Tagged raw_jaffle_shop:7881cc1530ed9d2a9d58b84b6953d2d0788ce26f7d042ce5c7dd872bea7b0870 with asof_20180410.\r\n"] +[64.43186504364071, "o", "Checked out raw_jaffle_shop:0b9ecf5cb35a.\r\n"] +[64.46186504364071, "o", "\u001b[1m"] +[64.49186504364071, "o", "\u001b[36m"] +[64.52186504364072, "o", "\u001b[91m"] +[64.55186504364072, "o", "$"] +[64.58186504364072, "o", " "] +[64.61186504364072, "o", "\u001b[0m"] +[69.64186504364072, "o", "\u001b[H"] +[69.67186504364072, "o", "\u001b[J"] +[69.70186504364072, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the 'serious' version of the dbt project that uses data from"] +[69.73186504364072, "o", "\r\n"] +[69.76186504364073, "o", "$ # the actual warehouse rather than seed data.\r\n"] +[69.79186504364073, "o", "$"] +[69.82186504364073, "o", " "] +[69.85186504364073, "o", "c"] +[69.88186504364073, "o", "d"] +[69.91186504364073, "o", " "] +[69.94186504364073, "o", "j"] +[69.97186504364073, "o", "a"] +[70.00186504364073, "o", "f"] +[70.03186504364074, "o", "f"] +[70.06186504364074, "o", "l"] +[70.09186504364074, "o", "e"] +[70.12186504364074, "o", "_"] +[70.15186504364074, "o", "s"] +[70.18186504364074, "o", "h"] +[70.21186504364074, "o", "o"] +[70.24186504364074, "o", "p"] +[70.27186504364074, "o", " "] +[70.30186504364075, "o", "&"] +[70.33186504364075, "o", "&"] +[70.36186504364075, "o", " "] +[70.39186504364075, "o", "g"] +[70.42186504364075, "o", "i"] +[70.45186504364075, "o", "t"] +[70.48186504364075, "o", " "] +[70.51186504364075, "o", "c"] +[70.54186504364075, "o", "h"] +[70.57186504364076, "o", "e"] +[70.60186504364076, "o", "c"] +[70.63186504364076, "o", "k"] +[70.66186504364076, "o", "o"] +[70.69186504364076, "o", "u"] +[70.72186504364076, "o", "t"] +[70.75186504364076, "o", " "] +[70.78186504364076, "o", "d"] +[70.81186504364076, "o", "e"] +[70.84186504364077, "o", "m"] +[70.87186504364077, "o", "o"] +[70.90186504364077, "o", "/"] +[70.93186504364077, "o", "m"] +[70.96186504364077, "o", "a"] +[70.99186504364077, "o", "s"] +[71.02186504364077, "o", "t"] +[71.05186504364077, "o", "e"] +[71.08186504364078, "o", "r"] +[71.11186504364078, "o", " "] +[71.14186504364078, "o", "-"] +[71.17186504364078, "o", "-"] +[71.20186504364078, "o", "f"] +[71.23186504364078, "o", "o"] +[71.26186504364078, "o", "r"] +[71.29186504364078, "o", "c"] +[71.32186504364078, "o", "e"] +[71.35186504364079, "o", "\r\n"] +[71.38186504364079, "o", "\u001b[0m"] +[71.41186504364079, "o", "\r\n"] +[71.4189050674445, "o", "Branch 'demo/master' set up to track remote branch 'demo/master' from 'origin'.\r\n"] +[71.41925458908146, "o", "Switched to a new branch 'demo/master'\r\n"] +[71.44925458908146, "o", "\u001b[1m"] +[71.47925458908146, "o", "\u001b[36m"] +[71.50925458908146, "o", "\u001b[91m"] +[71.53925458908147, "o", "$"] +[71.56925458908147, "o", " "] +[71.59925458908147, "o", "\u001b[0m"] +[76.62925458908147, "o", "\u001b[H"] +[76.65925458908147, "o", "\u001b[J"] +[76.68925458908147, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check that dbt is set up to connect to the Splitgraph engine."] +[76.71925458908147, "o", "\r\n"] +[76.74925458908147, "o", "$ # We will be outputting data into the dbt_jaffle repository, so set that up.\r\n"] +[76.77925458908148, "o", "$"] +[76.80925458908148, "o", " "] +[76.83925458908148, "o", "c"] +[76.86925458908148, "o", "a"] +[76.89925458908148, "o", "t"] +[76.92925458908148, "o", " "] +[76.95925458908148, "o", "."] +[76.98925458908148, "o", "d"] +[77.01925458908148, "o", "b"] +[77.04925458908149, "o", "t"] +[77.07925458908149, "o", "/"] +[77.10925458908149, "o", "p"] +[77.13925458908149, "o", "r"] +[77.16925458908149, "o", "o"] +[77.19925458908149, "o", "f"] +[77.22925458908149, "o", "i"] +[77.2592545890815, "o", "l"] +[77.2892545890815, "o", "e"] +[77.3192545890815, "o", "s"] +[77.3492545890815, "o", "."] +[77.3792545890815, "o", "y"] +[77.4092545890815, "o", "m"] +[77.4392545890815, "o", "l"] +[77.4692545890815, "o", "\r\n"] +[77.4992545890815, "o", "$"] +[77.5292545890815, "o", " "] +[77.5592545890815, "o", "d"] +[77.5892545890815, "o", "b"] +[77.6192545890815, "o", "t"] +[77.64925458908151, "o", " "] +[77.67925458908151, "o", "d"] +[77.70925458908151, "o", "e"] +[77.73925458908151, "o", "b"] +[77.76925458908151, "o", "u"] +[77.79925458908151, "o", "g"] +[77.82925458908151, "o", " "] +[77.85925458908152, "o", "-"] +[77.88925458908152, "o", "-"] +[77.91925458908152, "o", "p"] +[77.94925458908152, "o", "r"] +[77.97925458908152, "o", "o"] +[78.00925458908152, "o", "f"] +[78.03925458908152, "o", "i"] +[78.06925458908152, "o", "l"] +[78.09925458908153, "o", "e"] +[78.12925458908153, "o", "s"] +[78.15925458908153, "o", "-"] +[78.18925458908153, "o", "d"] +[78.21925458908153, "o", "i"] +[78.24925458908153, "o", "r"] +[78.27925458908153, "o", " "] +[78.30925458908153, "o", "."] +[78.33925458908153, "o", "d"] +[78.36925458908154, "o", "b"] +[78.39925458908154, "o", "t"] +[78.42925458908154, "o", " "] +[78.45925458908154, "o", "-"] +[78.48925458908154, "o", "-"] +[78.51925458908154, "o", "p"] +[78.54925458908154, "o", "r"] +[78.57925458908154, "o", "o"] +[78.60925458908154, "o", "j"] +[78.63925458908155, "o", "e"] +[78.66925458908155, "o", "c"] +[78.69925458908155, "o", "t"] +[78.72925458908155, "o", "-"] +[78.75925458908155, "o", "d"] +[78.78925458908155, "o", "i"] +[78.81925458908155, "o", "r"] +[78.84925458908155, "o", " "] +[78.87925458908155, "o", "j"] +[78.90925458908156, "o", "a"] +[78.93925458908156, "o", "f"] +[78.96925458908156, "o", "f"] +[78.99925458908156, "o", "l"] +[79.02925458908156, "o", "e"] +[79.05925458908156, "o", "_"] +[79.08925458908156, "o", "s"] +[79.11925458908156, "o", "h"] +[79.14925458908156, "o", "o"] +[79.17925458908157, "o", "p"] +[79.20925458908157, "o", "\r\n"] +[79.23925458908157, "o", "$"] +[79.26925458908157, "o", " "] +[79.29925458908157, "o", "s"] +[79.32925458908157, "o", "g"] +[79.35925458908157, "o", "r"] +[79.38925458908157, "o", " "] +[79.41925458908158, "o", "i"] +[79.44925458908158, "o", "n"] +[79.47925458908158, "o", "i"] +[79.50925458908158, "o", "t"] +[79.53925458908158, "o", " "] +[79.56925458908158, "o", "d"] +[79.59925458908158, "o", "b"] +[79.62925458908158, "o", "t"] +[79.65925458908158, "o", "_"] +[79.68925458908159, "o", "j"] +[79.71925458908159, "o", "a"] +[79.74925458908159, "o", "f"] +[79.77925458908159, "o", "f"] +[79.80925458908159, "o", "l"] +[79.83925458908159, "o", "e"] +[79.86925458908159, "o", "\r\n"] +[79.8992545890816, "o", "\u001b[0m"] +[79.9292545890816, "o", "\r\n"] +[79.93065911293108, "o", "jaffle_shop:\r\n target: splitgraph\r\n outputs:\r\n splitgraph:\r\n type: postgres\r\n host: localhost\r\n user: sgr\r\n pass: supersecure\r\n port: 5432\r\n dbname: splitgraph\r\n # The final schema that dbt writes to is a combination of this profile schema\r\n # and the schema specified in the model.\r\n schema: \"dbt_jaffle\"\r\n threads: 4\r\n"] +[80.93065911293108, "o", "Running with dbt=0.18.0\r\n"] +[80.93958931922991, "o", "dbt version: 0.18.0\r\n"] +[80.93960529327471, "o", "python version: 3.7.10\r\npython path: /opt/hostedtoolcache/Python/3.7.10/x64/bin/python\r\nos info: Linux-5.4.0-1043-azure-x86_64-with-debian-buster-sid\r\nUsing profiles.yml file at .dbt/profiles.yml\r\nUsing dbt_project.yml file at /home/runner/work/splitgraph/splitgraph/examples/dbt/jaffle_shop/dbt_project.yml\r\n\r\n"] +[81.02098828315813, "o", "Configuration:\r\n profiles.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n dbt_project.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n\r\n"] +[81.0210011577614, "o", "Required dependencies:\r\n"] +[81.02637201309282, "o", " - git [\u001b[32mOK found\u001b[0m]\r\n\r\nConnection:\r\n"] +[81.02665358543474, "o", " host: localhost\r\n port: 5432\r\n user: sgr\r\n database: splitgraph\r\n schema: dbt_jaffle\r\n"] +[81.02666359901507, "o", " search_path: None\r\n keepalives_idle: 0\r\n sslmode: None\r\n"] +[81.04246812820513, "o", " Connection test: \u001b[32mOK connection ok\u001b[0m\r\n\r\n"] +[81.27113109588701, "o", "\u001b[0m"] +[81.53815394401629, "o", "Initialized empty repository dbt_jaffle\r\n"] +[81.56815394401629, "o", "\u001b[1m"] +[81.59815394401629, "o", "\u001b[36m"] +[81.62815394401629, "o", "\u001b[91m"] +[81.65815394401629, "o", "$"] +[81.68815394401629, "o", " "] +[81.7181539440163, "o", "\u001b[0m"] +[100.12925458908147, "o", "\u001b[H"] +[100.15925458908147, "o", "\u001b[J"] +[100.18925458908147, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now run the dbt models."] +[100.21925458908147, "o", "\r\n"] +[100.24925458908147, "o", "$"] +[100.27925458908148, "o", " "] +[100.30925458908148, "o", "c"] +[100.33925458908148, "o", "d"] +[100.36925458908148, "o", " "] +[100.39925458908148, "o", "j"] +[100.42925458908148, "o", "a"] +[100.45925458908148, "o", "f"] +[100.48925458908148, "o", "f"] +[100.51925458908148, "o", "l"] +[100.54925458908149, "o", "e"] +[100.57925458908149, "o", "_"] +[100.60925458908149, "o", "s"] +[100.63925458908149, "o", "h"] +[100.66925458908149, "o", "o"] +[100.69925458908149, "o", "p"] +[100.72925458908149, "o", " "] +[100.7592545890815, "o", "&"] +[100.7892545890815, "o", "&"] +[100.8192545890815, "o", " "] +[100.8492545890815, "o", "d"] +[100.8792545890815, "o", "b"] +[100.9092545890815, "o", "t"] +[100.9392545890815, "o", " "] +[100.9692545890815, "o", "r"] +[100.9992545890815, "o", "u"] +[101.0292545890815, "o", "n"] +[101.0592545890815, "o", " "] +[101.0892545890815, "o", "-"] +[101.1192545890815, "o", "-"] +[101.14925458908151, "o", "p"] +[101.17925458908151, "o", "r"] +[101.20925458908151, "o", "o"] +[101.23925458908151, "o", "f"] +[101.26925458908151, "o", "i"] +[101.29925458908151, "o", "l"] +[101.32925458908151, "o", "e"] +[101.35925458908152, "o", "s"] +[101.38925458908152, "o", "-"] +[101.41925458908152, "o", "d"] +[101.44925458908152, "o", "i"] +[101.47925458908152, "o", "r"] +[101.50925458908152, "o", " "] +[101.53925458908152, "o", "."] +[101.56925458908152, "o", "."] +[101.59925458908153, "o", "/"] +[101.62925458908153, "o", "."] +[101.65925458908153, "o", "d"] +[101.68925458908153, "o", "b"] +[101.71925458908153, "o", "t"] +[101.74925458908153, "o", "\r\n"] +[101.77925458908153, "o", "\u001b[0m"] +[101.80925458908153, "o", "\r\n"] +[102.80925458908153, "o", "Running with dbt=0.18.0\r\n"] +[103.27883643150402, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[104.27883643150402, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[104.2819957160957, "o", "\r\n"] +[104.6164876842506, "o", "15:02:00 | Concurrency: 4 threads (target='splitgraph')\r\n"] +[104.6165618324287, "o", "15:02:00 | \r\n"] +[104.62632078170849, "o", "15:02:00 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]\r\n"] +[104.62684935569835, "o", "15:02:00 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]\r\n"] +[104.62716001510692, "o", "15:02:00 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]\r\n"] +[104.63297599792553, "o", "15:02:00 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]"] +[104.63300127029491, "o", "\r\n"] +[104.9677671813972, "o", "15:02:00 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.34s]"] +[104.96794432640148, "o", "\r\n"] +[104.97921937942577, "o", "15:02:00 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.34s]"] +[104.97930616378856, "o", "\r\n"] +[104.98249763488842, "o", "15:02:00 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.35s]"] +[104.98253363609386, "o", "\r\n"] +[104.98541897773815, "o", "15:02:00 | 5 of 9 START table model dbt_jaffle.order_payments................... [RUN]\r\n"] +[104.98610157013012, "o", "15:02:00 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.34s]\r\n"] +[105.00327629089428, "o", "15:02:00 | 6 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]\r\n"] +[105.00483268737865, "o", "15:02:00 | 7 of 9 START table model dbt_jaffle.customer_payments................ [RUN]\r\n"] +[105.19398230552746, "o", "15:02:00 | 5 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.19s]\r\n"] +[105.19967907905651, "o", "15:02:01 | 7 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.18s]"] +[105.19972843170238, "o", "\r\n"] +[105.20112818718029, "o", "15:02:01 | 8 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]\r\n"] +[105.20296901702953, "o", "15:02:01 | 6 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.19s]\r\n"] +[105.22567028045727, "o", "15:02:01 | 9 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]\r\n"] +[105.33885210990978, "o", "15:02:01 | 8 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.13s]\r\n"] +[105.34931534767223, "o", "15:02:01 | 9 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.12s]\r\n"] +[105.44784444809032, "o", "15:02:01 | \r\n"] +[105.44792479515148, "o", "15:02:01 | Finished running 4 view models, 5 table models in 1.17s.\r\n"] +[105.48337239265514, "o", "\r\n"] +[105.48345417022777, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[105.48376697540355, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[105.68144482612682, "o", "\u001b[0m"] +[105.71144482612682, "o", "\u001b[1m"] +[105.74144482612682, "o", "\u001b[36m"] +[105.77144482612682, "o", "\u001b[91m"] +[105.80144482612683, "o", "$"] +[105.83144482612683, "o", " "] +[105.86144482612683, "o", "\u001b[0m"] +[120.62925458908147, "o", "\u001b[H"] +[120.65925458908147, "o", "\u001b[J"] +[120.68925458908147, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Take a look at the built dataset and commit it."] +[120.71925458908147, "o", "\r\n"] +[120.74925458908147, "o", "$ # Note Splitgraph doesn't currently support storing views\r\n"] +[120.77925458908148, "o", "$ # that dbt uses as a staging point for the initial data.\r\n"] +[120.80925458908148, "o", "$"] +[120.83925458908148, "o", " "] +[120.86925458908148, "o", "s"] +[120.89925458908148, "o", "g"] +[120.92925458908148, "o", "r"] +[120.95925458908148, "o", " "] +[120.98925458908148, "o", "d"] +[121.01925458908148, "o", "i"] +[121.04925458908149, "o", "f"] +[121.07925458908149, "o", "f"] +[121.10925458908149, "o", " "] +[121.13925458908149, "o", "d"] +[121.16925458908149, "o", "b"] +[121.19925458908149, "o", "t"] +[121.22925458908149, "o", "_"] +[121.2592545890815, "o", "j"] +[121.2892545890815, "o", "a"] +[121.3192545890815, "o", "f"] +[121.3492545890815, "o", "f"] +[121.3792545890815, "o", "l"] +[121.4092545890815, "o", "e"] +[121.4392545890815, "o", "\r\n"] +[121.4692545890815, "o", "$"] +[121.4992545890815, "o", " "] +[121.5292545890815, "o", "s"] +[121.5592545890815, "o", "g"] +[121.5892545890815, "o", "r"] +[121.6192545890815, "o", " "] +[121.64925458908151, "o", "c"] +[121.67925458908151, "o", "o"] +[121.70925458908151, "o", "m"] +[121.73925458908151, "o", "m"] +[121.76925458908151, "o", "i"] +[121.79925458908151, "o", "t"] +[121.82925458908151, "o", " "] +[121.85925458908152, "o", "d"] +[121.88925458908152, "o", "b"] +[121.91925458908152, "o", "t"] +[121.94925458908152, "o", "_"] +[121.97925458908152, "o", "j"] +[122.00925458908152, "o", "a"] +[122.03925458908152, "o", "f"] +[122.06925458908152, "o", "f"] +[122.09925458908153, "o", "l"] +[122.12925458908153, "o", "e"] +[122.15925458908153, "o", "\r\n"] +[122.18925458908153, "o", "$"] +[122.21925458908153, "o", " "] +[122.24925458908153, "o", "s"] +[122.27925458908153, "o", "g"] +[122.30925458908153, "o", "r"] +[122.33925458908153, "o", " "] +[122.36925458908154, "o", "t"] +[122.39925458908154, "o", "a"] +[122.42925458908154, "o", "g"] +[122.45925458908154, "o", " "] +[122.48925458908154, "o", "d"] +[122.51925458908154, "o", "b"] +[122.54925458908154, "o", "t"] +[122.57925458908154, "o", "_"] +[122.60925458908154, "o", "j"] +[122.63925458908155, "o", "a"] +[122.66925458908155, "o", "f"] +[122.69925458908155, "o", "f"] +[122.72925458908155, "o", "l"] +[122.75925458908155, "o", "e"] +[122.78925458908155, "o", " "] +[122.81925458908155, "o", "a"] +[122.84925458908155, "o", "s"] +[122.87925458908155, "o", "o"] +[122.90925458908156, "o", "f"] +[122.93925458908156, "o", "_"] +[122.96925458908156, "o", "2"] +[122.99925458908156, "o", "0"] +[123.02925458908156, "o", "1"] +[123.05925458908156, "o", "8"] +[123.08925458908156, "o", "0"] +[123.11925458908156, "o", "4"] +[123.14925458908156, "o", "0"] +[123.17925458908157, "o", "9"] +[123.20925458908157, "o", "\r\n"] +[123.23925458908157, "o", "\u001b[0m"] +[123.26925458908157, "o", "\r\n"] +[123.52753462791519, "o", "Between 000000000000 and the current working copy: \r\n"] +[123.52756276130752, "o", "customer_orders: table added\r\ncustomer_payments: table added\r\ndim_customers: table added\r\nfct_orders: table added\r\norder_payments: table added\r\nstg_jaffle_shop__customers: untracked\r\nstg_jaffle_shop__orders: untracked\r\nstg_jaffle_shop__payments: untracked\r\nstg_stripe__payments: untracked\r\n"] +[123.75632133483963, "o", "Committing dbt_jaffle...\r\n"] +[123.77396860122757, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[123.7743355274208, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[123.77525200843887, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[123.77612986564712, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[123.7846476078041, "o", "Processing table order_payments\r\n"] +[123.87128176689224, "o", "Processing table customer_payments\r\n"] +[123.89444270134048, "o", "Processing table customer_orders\r\n"] +[123.91987361908035, "o", "Processing table fct_orders\r\n"] +[123.94934430122451, "o", "Processing table dim_customers\r\n"] +[123.98867645263748, "o", "Committed dbt_jaffle as 5b6453c10185.\r\n"] +[124.24696769714431, "o", "Tagged dbt_jaffle:5b6453c101856215d3bb9a70b4a325e6f45e4bfd692bc13090f6cdb215303f8e with asof_20180409.\r\n"] +[124.27696769714431, "o", "\u001b[1m"] +[124.30696769714432, "o", "\u001b[36m"] +[124.33696769714432, "o", "\u001b[91m"] +[124.36696769714432, "o", "$"] +[124.39696769714432, "o", " "] +[124.42696769714432, "o", "\u001b[0m"] +[135.12925458908146, "o", "\u001b[H"] +[135.15925458908146, "o", "\u001b[J"] +[135.18925458908146, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the new version of the raw dataset and run dbt against it as well."] +[135.21925458908146, "o", "\r\n"] +[135.24925458908146, "o", "$"] +[135.27925458908146, "o", " "] +[135.30925458908146, "o", "s"] +[135.33925458908146, "o", "g"] +[135.36925458908146, "o", "r"] +[135.39925458908147, "o", " "] +[135.42925458908147, "o", "c"] +[135.45925458908147, "o", "h"] +[135.48925458908147, "o", "e"] +[135.51925458908147, "o", "c"] +[135.54925458908147, "o", "k"] +[135.57925458908147, "o", "o"] +[135.60925458908147, "o", "u"] +[135.63925458908147, "o", "t"] +[135.66925458908148, "o", " "] +[135.69925458908148, "o", "r"] +[135.72925458908148, "o", "a"] +[135.75925458908148, "o", "w"] +[135.78925458908148, "o", "_"] +[135.81925458908148, "o", "j"] +[135.84925458908148, "o", "a"] +[135.87925458908148, "o", "f"] +[135.90925458908148, "o", "f"] +[135.9392545890815, "o", "l"] +[135.9692545890815, "o", "e"] +[135.9992545890815, "o", "_"] +[136.0292545890815, "o", "s"] +[136.0592545890815, "o", "h"] +[136.0892545890815, "o", "o"] +[136.1192545890815, "o", "p"] +[136.1492545890815, "o", ":"] +[136.1792545890815, "o", "a"] +[136.2092545890815, "o", "s"] +[136.2392545890815, "o", "o"] +[136.2692545890815, "o", "f"] +[136.2992545890815, "o", "_"] +[136.3292545890815, "o", "2"] +[136.3592545890815, "o", "0"] +[136.3892545890815, "o", "1"] +[136.4192545890815, "o", "8"] +[136.4492545890815, "o", "0"] +[136.4792545890815, "o", "4"] +[136.5092545890815, "o", "1"] +[136.5392545890815, "o", "0"] +[136.5692545890815, "o", "\r\n"] +[136.5992545890815, "o", "$"] +[136.6292545890815, "o", " "] +[136.6592545890815, "o", "c"] +[136.68925458908151, "o", "d"] +[136.71925458908152, "o", " "] +[136.74925458908152, "o", "j"] +[136.77925458908152, "o", "a"] +[136.80925458908152, "o", "f"] +[136.83925458908152, "o", "f"] +[136.86925458908152, "o", "l"] +[136.89925458908152, "o", "e"] +[136.92925458908152, "o", "_"] +[136.95925458908152, "o", "s"] +[136.98925458908153, "o", "h"] +[137.01925458908153, "o", "o"] +[137.04925458908153, "o", "p"] +[137.07925458908153, "o", " "] +[137.10925458908153, "o", "&"] +[137.13925458908153, "o", "&"] +[137.16925458908153, "o", " "] +[137.19925458908153, "o", "d"] +[137.22925458908153, "o", "b"] +[137.25925458908154, "o", "t"] +[137.28925458908154, "o", " "] +[137.31925458908154, "o", "r"] +[137.34925458908154, "o", "u"] +[137.37925458908154, "o", "n"] +[137.40925458908154, "o", " "] +[137.43925458908154, "o", "-"] +[137.46925458908154, "o", "-"] +[137.49925458908154, "o", "p"] +[137.52925458908155, "o", "r"] +[137.55925458908155, "o", "o"] +[137.58925458908155, "o", "f"] +[137.61925458908155, "o", "i"] +[137.64925458908155, "o", "l"] +[137.67925458908155, "o", "e"] +[137.70925458908155, "o", "s"] +[137.73925458908155, "o", "-"] +[137.76925458908156, "o", "d"] +[137.79925458908156, "o", "i"] +[137.82925458908156, "o", "r"] +[137.85925458908156, "o", " "] +[137.88925458908156, "o", "."] +[137.91925458908156, "o", "."] +[137.94925458908156, "o", "/"] +[137.97925458908156, "o", "."] +[138.00925458908156, "o", "d"] +[138.03925458908157, "o", "b"] +[138.06925458908157, "o", "t"] +[138.09925458908157, "o", "\r\n"] +[138.12925458908157, "o", "\u001b[0m"] +[138.15925458908157, "o", "\r\n"] +[138.73658684730606, "o", "Checked out raw_jaffle_shop:7881cc1530ed.\r\n"] +[139.73658684730606, "o", "Running with dbt=0.18.0\r\n"] +[140.19613365173416, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[141.19613365173416, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[141.1995499515541, "o", "\r\n"] +[141.64402703285293, "o", "15:02:07 | Concurrency: 4 threads (target='splitgraph')\r\n"] +[141.6441438579567, "o", "15:02:07 | \r\n"] +[141.65208271980362, "o", "15:02:07 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]"] +[141.6521377944954, "o", "\r\n"] +[141.6550834560402, "o", "15:02:07 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]"] +[141.65510872840957, "o", "\r\n"] +[141.6610167407997, "o", "15:02:07 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]"] +[141.66106657028274, "o", "\r\n"] +[141.7167606735237, "o", "15:02:07 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]\r\n"] +[142.0368428611763, "o", "15:02:07 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.38s]"] +[142.03690985679702, "o", "\r\n"] +[142.05060676574783, "o", "15:02:07 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.37s]\r\n"] +[142.05092219352798, "o", "15:02:07 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.39s]"] +[142.05094293594436, "o", "\r\n"] +[142.05136875152664, "o", "15:02:07 | 5 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]"] +[142.05138687133865, "o", "\r\n"] +[142.06805209159927, "o", "15:02:07 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.35s]\r\n"] +[142.06821850776748, "o", "15:02:07 | 6 of 9 START table model dbt_jaffle.customer_payments................ [RUN]"] +[142.06824044227676, "o", "\r\n"] +[142.06893209457473, "o", "15:02:07 | 7 of 9 START table model dbt_jaffle.order_payments................... [RUN]"] +[142.06895021438675, "o", "\r\n"] +[142.29006961822586, "o", "15:02:07 | 5 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.23s]"] +[142.29009393692093, "o", "\r\n"] +[142.2904296302803, "o", "15:02:07 | 7 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.22s]"] +[142.29044631958084, "o", "\r\n"] +[142.29506901741104, "o", "15:02:07 | 6 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.22s]\r\n"] +[142.29533270835952, "o", "15:02:07 | 8 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]"] +[142.29535368919449, "o", "\r\n"] +[142.31730751037674, "o", "15:02:07 | 9 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]"] +[142.31733016014175, "o", "\r\n"] +[142.45275405883865, "o", "15:02:07 | 9 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.13s]"] +[142.45278386116104, "o", "\r\n"] +[142.45505527496414, "o", "15:02:07 | 8 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.16s]\r\n"] +[142.52088145256118, "o", "15:02:07 | \r\n"] +[142.52099255561905, "o", "15:02:07 | Finished running 4 view models, 5 table models in 1.32s.\r\n"] +[142.55810431480484, "o", "\r\n"] +[142.5581903839119, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[142.5583293819435, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[142.75445918083267, "o", "\u001b[0m"] +[142.78445918083267, "o", "\u001b[1m"] +[142.81445918083267, "o", "\u001b[36m"] +[142.84445918083267, "o", "\u001b[91m"] +[142.87445918083267, "o", "$"] +[142.90445918083267, "o", " "] +[142.93445918083268, "o", "\u001b[0m"] +[156.62925458908146, "o", "\u001b[H"] +[156.65925458908146, "o", "\u001b[J"] +[156.68925458908146, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create an image from the new data."] +[156.71925458908146, "o", "\r\n"] +[156.74925458908146, "o", "$"] +[156.77925458908146, "o", " "] +[156.80925458908146, "o", "s"] +[156.83925458908146, "o", "g"] +[156.86925458908146, "o", "r"] +[156.89925458908147, "o", " "] +[156.92925458908147, "o", "c"] +[156.95925458908147, "o", "o"] +[156.98925458908147, "o", "m"] +[157.01925458908147, "o", "m"] +[157.04925458908147, "o", "i"] +[157.07925458908147, "o", "t"] +[157.10925458908147, "o", " "] +[157.13925458908147, "o", "d"] +[157.16925458908148, "o", "b"] +[157.19925458908148, "o", "t"] +[157.22925458908148, "o", "_"] +[157.25925458908148, "o", "j"] +[157.28925458908148, "o", "a"] +[157.31925458908148, "o", "f"] +[157.34925458908148, "o", "f"] +[157.37925458908148, "o", "l"] +[157.40925458908148, "o", "e"] +[157.4392545890815, "o", "\r\n"] +[157.4692545890815, "o", "$"] +[157.4992545890815, "o", " "] +[157.5292545890815, "o", "s"] +[157.5592545890815, "o", "g"] +[157.5892545890815, "o", "r"] +[157.6192545890815, "o", " "] +[157.6492545890815, "o", "t"] +[157.6792545890815, "o", "a"] +[157.7092545890815, "o", "g"] +[157.7392545890815, "o", " "] +[157.7692545890815, "o", "d"] +[157.7992545890815, "o", "b"] +[157.8292545890815, "o", "t"] +[157.8592545890815, "o", "_"] +[157.8892545890815, "o", "j"] +[157.9192545890815, "o", "a"] +[157.9492545890815, "o", "f"] +[157.9792545890815, "o", "f"] +[158.0092545890815, "o", "l"] +[158.0392545890815, "o", "e"] +[158.0692545890815, "o", " "] +[158.0992545890815, "o", "a"] +[158.1292545890815, "o", "s"] +[158.1592545890815, "o", "o"] +[158.18925458908151, "o", "f"] +[158.21925458908152, "o", "_"] +[158.24925458908152, "o", "2"] +[158.27925458908152, "o", "0"] +[158.30925458908152, "o", "1"] +[158.33925458908152, "o", "8"] +[158.36925458908152, "o", "0"] +[158.39925458908152, "o", "4"] +[158.42925458908152, "o", "1"] +[158.45925458908152, "o", "0"] +[158.48925458908153, "o", "\r\n"] +[158.51925458908153, "o", "\u001b[0m"] +[158.54925458908153, "o", "\r\n"] +[158.7811028289802, "o", "Committing dbt_jaffle...\r\n"] +[158.7998594570167, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[158.80910223007274, "o", "Processing table customer_orders\r\n"] +[158.87636654853893, "o", "Object o0fafb9e76c06e221af3aa558b0a751b176857a09b2d75ca00826becbd12ef5 already exists, skipping\r\n"] +[158.88810127258373, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[158.88891904831004, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[158.8898059654243, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[158.89773791313243, "o", "Processing table customer_payments\r\n"] +[158.90396016120982, "o", "Object o47a7af4dc6d74898da55e6c760eac4d702db25633cfab4e28e6df77cf00098 already exists, skipping\r\n"] +[158.918645315171, "o", "Processing table order_payments\r\n"] +[158.92568295478893, "o", "Object o87940f703edacc7113c37ae83a6abe6293f48cbb940171ef03875a066b0c5c already exists, skipping\r\n"] +[158.94262211799693, "o", "Processing table fct_orders\r\n"] +[158.9763938713081, "o", "Processing table dim_customers\r\n"] +[158.9832011985786, "o", "Object o9656926ef986d89e326952a43869eaf3dc59905ff22aba22cd3dd67a834dc5 already exists, skipping\r\n"] +[159.0133649635322, "o", "Committed dbt_jaffle as ad9dac31f31a.\r\n"] +[159.2820739078529, "o", "Tagged dbt_jaffle:ad9dac31f31a162d8c3ddd3b552fc80711d9a9197b7409521296561191cfc85c with asof_20180410.\r\n"] +[159.3120739078529, "o", "\u001b[1m"] +[159.3420739078529, "o", "\u001b[36m"] +[159.3720739078529, "o", "\u001b[91m"] +[159.4020739078529, "o", "$"] +[159.4320739078529, "o", " "] +[159.4620739078529, "o", "\u001b[0m"] +[166.62925458908146, "o", "\u001b[H"] +[166.65925458908146, "o", "\u001b[J"] +[166.68925458908146, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We now have two versions of the source and the target dataset."] +[166.71925458908146, "o", "\r\n"] +[166.74925458908146, "o", "$"] +[166.77925458908146, "o", " "] +[166.80925458908146, "o", "s"] +[166.83925458908146, "o", "g"] +[166.86925458908146, "o", "r"] +[166.89925458908147, "o", " "] +[166.92925458908147, "o", "l"] +[166.95925458908147, "o", "o"] +[166.98925458908147, "o", "g"] +[167.01925458908147, "o", " "] +[167.04925458908147, "o", "-"] +[167.07925458908147, "o", "t"] +[167.10925458908147, "o", " "] +[167.13925458908147, "o", "r"] +[167.16925458908148, "o", "a"] +[167.19925458908148, "o", "w"] +[167.22925458908148, "o", "_"] +[167.25925458908148, "o", "j"] +[167.28925458908148, "o", "a"] +[167.31925458908148, "o", "f"] +[167.34925458908148, "o", "f"] +[167.37925458908148, "o", "l"] +[167.40925458908148, "o", "e"] +[167.4392545890815, "o", "_"] +[167.4692545890815, "o", "s"] +[167.4992545890815, "o", "h"] +[167.5292545890815, "o", "o"] +[167.5592545890815, "o", "p"] +[167.5892545890815, "o", "\r\n"] +[167.6192545890815, "o", "$"] +[167.6492545890815, "o", " "] +[167.6792545890815, "o", "s"] +[167.7092545890815, "o", "g"] +[167.7392545890815, "o", "r"] +[167.7692545890815, "o", " "] +[167.7992545890815, "o", "l"] +[167.8292545890815, "o", "o"] +[167.8592545890815, "o", "g"] +[167.8892545890815, "o", " "] +[167.9192545890815, "o", "-"] +[167.9492545890815, "o", "t"] +[167.9792545890815, "o", " "] +[168.0092545890815, "o", "d"] +[168.0392545890815, "o", "b"] +[168.0692545890815, "o", "t"] +[168.0992545890815, "o", "_"] +[168.1292545890815, "o", "j"] +[168.1592545890815, "o", "a"] +[168.18925458908151, "o", "f"] +[168.21925458908152, "o", "f"] +[168.24925458908152, "o", "l"] +[168.27925458908152, "o", "e"] +[168.30925458908152, "o", "\r\n"] +[168.33925458908152, "o", "\u001b[0m"] +[168.36925458908152, "o", "\r\n"] +[168.63888239860606, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-04-14 15:01:48\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m0b9ecf5cb3\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-04-14 15:01:50\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m7881cc1530\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-04-14 15:01:53\u001b[0m\r\n"] +[168.881134510041, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-04-14 15:01:57\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m5b6453c101\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-04-14 15:02:02\u001b[0m\r\n \u2514 \u001b[1m\u001b[91mad9dac31f3\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-04-14 15:02:08\u001b[0m\r\n"] +[168.911134510041, "o", "\u001b[1m"] +[168.941134510041, "o", "\u001b[36m"] +[168.971134510041, "o", "\u001b[91m"] +[169.001134510041, "o", "$"] +[169.031134510041, "o", " "] +[169.061134510041, "o", "\u001b[0m"] +[174.091134510041, "o", "\u001b[H"] +[174.121134510041, "o", "\u001b[J"] +[174.151134510041, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the difference between the two datasets that dbt built."] +[174.181134510041, "o", "\r\n"] +[174.211134510041, "o", "$"] +[174.241134510041, "o", " "] +[174.271134510041, "o", "s"] +[174.301134510041, "o", "g"] +[174.331134510041, "o", "r"] +[174.361134510041, "o", " "] +[174.391134510041, "o", "d"] +[174.421134510041, "o", "i"] +[174.45113451004102, "o", "f"] +[174.48113451004102, "o", "f"] +[174.51113451004102, "o", " "] +[174.54113451004102, "o", "d"] +[174.57113451004102, "o", "b"] +[174.60113451004102, "o", "t"] +[174.63113451004102, "o", "_"] +[174.66113451004102, "o", "j"] +[174.69113451004102, "o", "a"] +[174.72113451004103, "o", "f"] +[174.75113451004103, "o", "f"] +[174.78113451004103, "o", "l"] +[174.81113451004103, "o", "e"] +[174.84113451004103, "o", " "] +[174.87113451004103, "o", "a"] +[174.90113451004103, "o", "s"] +[174.93113451004103, "o", "o"] +[174.96113451004103, "o", "f"] +[174.99113451004104, "o", "_"] +[175.02113451004104, "o", "2"] +[175.05113451004104, "o", "0"] +[175.08113451004104, "o", "1"] +[175.11113451004104, "o", "8"] +[175.14113451004104, "o", "0"] +[175.17113451004104, "o", "4"] +[175.20113451004104, "o", "0"] +[175.23113451004104, "o", "9"] +[175.26113451004105, "o", " "] +[175.29113451004105, "o", "a"] +[175.32113451004105, "o", "s"] +[175.35113451004105, "o", "o"] +[175.38113451004105, "o", "f"] +[175.41113451004105, "o", "_"] +[175.44113451004105, "o", "2"] +[175.47113451004105, "o", "0"] +[175.50113451004106, "o", "1"] +[175.53113451004106, "o", "8"] +[175.56113451004106, "o", "0"] +[175.59113451004106, "o", "4"] +[175.62113451004106, "o", "1"] +[175.65113451004106, "o", "0"] +[175.68113451004106, "o", " "] +[175.71113451004106, "o", "-"] +[175.74113451004106, "o", "-"] +[175.77113451004107, "o", "v"] +[175.80113451004107, "o", "e"] +[175.83113451004107, "o", "r"] +[175.86113451004107, "o", "b"] +[175.89113451004107, "o", "o"] +[175.92113451004107, "o", "s"] +[175.95113451004107, "o", "e"] +[175.98113451004107, "o", "\r\n"] +[176.01113451004107, "o", "\u001b[0m"] +[176.04113451004108, "o", "\r\n"] +[176.50524297714313, "o", "Between 5b6453c10185 and ad9dac31f31a: \r\n"] +[176.50572625160297, "o", "customer_orders: no changes.\r\ncustomer_payments: no changes.\r\ndim_customers: no changes.\r\nfct_orders: added 5 rows, removed 5 rows.\r\n- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending', 0, 0, 0, 23, 23)\r\n- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending', 0, 0, 15, 0, 15)\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 0, 25, 0, 25)\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped', 0, 0, 17, 0, 17)\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'plac"] +[176.50573888778766, "o", "ed', 0, 23, 0, 0, 23)\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned', 0, 0, 0, 23, 23)\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned', 0, 0, 15, 0, 15)\r\n+ (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 25, 0, 25)\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 17, 0, 17)\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 23, 0, 0, 23)\r\norder_payments: no changes.\r\n"] +[176.53573888778766, "o", "\u001b[1m"] +[176.56573888778766, "o", "\u001b[36m"] +[176.59573888778766, "o", "\u001b[91m"] +[176.62573888778766, "o", "$"] +[176.65573888778766, "o", " "] +[176.68573888778766, "o", "\u001b[0m"] +[183.591134510041, "o", "\u001b[H"] +[183.621134510041, "o", "\u001b[J"] +[183.651134510041, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a sample query: how much in bank transfer refunds did we process?"] +[183.681134510041, "o", "\r\n"] +[183.711134510041, "o", "$"] +[183.741134510041, "o", " "] +[183.771134510041, "o", "s"] +[183.801134510041, "o", "g"] +[183.831134510041, "o", "r"] +[183.861134510041, "o", " "] +[183.891134510041, "o", "s"] +[183.921134510041, "o", "q"] +[183.95113451004102, "o", "l"] +[183.98113451004102, "o", " "] +[184.01113451004102, "o", "-"] +[184.04113451004102, "o", "i"] +[184.07113451004102, "o", " "] +[184.10113451004102, "o", "d"] +[184.13113451004102, "o", "b"] +[184.16113451004102, "o", "t"] +[184.19113451004102, "o", "_"] +[184.22113451004103, "o", "j"] +[184.25113451004103, "o", "a"] +[184.28113451004103, "o", "f"] +[184.31113451004103, "o", "f"] +[184.34113451004103, "o", "l"] +[184.37113451004103, "o", "e"] +[184.40113451004103, "o", ":"] +[184.43113451004103, "o", "a"] +[184.46113451004103, "o", "s"] +[184.49113451004104, "o", "o"] +[184.52113451004104, "o", "f"] +[184.55113451004104, "o", "_"] +[184.58113451004104, "o", "2"] +[184.61113451004104, "o", "0"] +[184.64113451004104, "o", "1"] +[184.67113451004104, "o", "8"] +[184.70113451004104, "o", "0"] +[184.73113451004104, "o", "4"] +[184.76113451004105, "o", "0"] +[184.79113451004105, "o", "9"] +[184.82113451004105, "o", " "] +[184.85113451004105, "o", "\""] +[184.88113451004105, "o", "S"] +[184.91113451004105, "o", "E"] +[184.94113451004105, "o", "L"] +[184.97113451004105, "o", "E"] +[185.00113451004106, "o", "C"] +[185.03113451004106, "o", "T"] +[185.06113451004106, "o", " "] +[185.09113451004106, "o", "s"] +[185.12113451004106, "o", "u"] +[185.15113451004106, "o", "m"] +[185.18113451004106, "o", "("] +[185.21113451004106, "o", "b"] +[185.24113451004106, "o", "a"] +[185.27113451004107, "o", "n"] +[185.30113451004107, "o", "k"] +[185.33113451004107, "o", "_"] +[185.36113451004107, "o", "t"] +[185.39113451004107, "o", "r"] +[185.42113451004107, "o", "a"] +[185.45113451004107, "o", "n"] +[185.48113451004107, "o", "s"] +[185.51113451004107, "o", "f"] +[185.54113451004108, "o", "e"] +[185.57113451004108, "o", "r"] +[185.60113451004108, "o", "_"] +[185.63113451004108, "o", "a"] +[185.66113451004108, "o", "m"] +[185.69113451004108, "o", "o"] +[185.72113451004108, "o", "u"] +[185.75113451004108, "o", "n"] +[185.78113451004108, "o", "t"] +[185.8111345100411, "o", ")"] +[185.8411345100411, "o", " "] +[185.8711345100411, "o", "F"] +[185.9011345100411, "o", "R"] +[185.9311345100411, "o", "O"] +[185.9611345100411, "o", "M"] +[185.9911345100411, "o", " "] +[186.0211345100411, "o", "f"] +[186.0511345100411, "o", "c"] +[186.0811345100411, "o", "t"] +[186.1111345100411, "o", "_"] +[186.1411345100411, "o", "o"] +[186.1711345100411, "o", "r"] +[186.2011345100411, "o", "d"] +[186.2311345100411, "o", "e"] +[186.2611345100411, "o", "r"] +[186.2911345100411, "o", "s"] +[186.3211345100411, "o", " "] +[186.3511345100411, "o", "W"] +[186.3811345100411, "o", "H"] +[186.4111345100411, "o", "E"] +[186.4411345100411, "o", "R"] +[186.4711345100411, "o", "E"] +[186.5011345100411, "o", " "] +[186.5311345100411, "o", "s"] +[186.56113451004111, "o", "t"] +[186.59113451004112, "o", "a"] +[186.62113451004112, "o", "t"] +[186.65113451004112, "o", "u"] +[186.68113451004112, "o", "s"] +[186.71113451004112, "o", " "] +[186.74113451004112, "o", "="] +[186.77113451004112, "o", " "] +[186.80113451004112, "o", "'"] +[186.83113451004112, "o", "r"] +[186.86113451004113, "o", "e"] +[186.89113451004113, "o", "t"] +[186.92113451004113, "o", "u"] +[186.95113451004113, "o", "r"] +[186.98113451004113, "o", "n"] +[187.01113451004113, "o", "e"] +[187.04113451004113, "o", "d"] +[187.07113451004113, "o", "'"] +[187.10113451004113, "o", "\""] +[187.13113451004114, "o", "\r\n"] +[187.16113451004114, "o", "$"] +[187.19113451004114, "o", " "] +[187.22113451004114, "o", "s"] +[187.25113451004114, "o", "g"] +[187.28113451004114, "o", "r"] +[187.31113451004114, "o", " "] +[187.34113451004114, "o", "s"] +[187.37113451004114, "o", "q"] +[187.40113451004115, "o", "l"] +[187.43113451004115, "o", " "] +[187.46113451004115, "o", "-"] +[187.49113451004115, "o", "i"] +[187.52113451004115, "o", " "] +[187.55113451004115, "o", "d"] +[187.58113451004115, "o", "b"] +[187.61113451004115, "o", "t"] +[187.64113451004116, "o", "_"] +[187.67113451004116, "o", "j"] +[187.70113451004116, "o", "a"] +[187.73113451004116, "o", "f"] +[187.76113451004116, "o", "f"] +[187.79113451004116, "o", "l"] +[187.82113451004116, "o", "e"] +[187.85113451004116, "o", ":"] +[187.88113451004116, "o", "a"] +[187.91113451004117, "o", "s"] +[187.94113451004117, "o", "o"] +[187.97113451004117, "o", "f"] +[188.00113451004117, "o", "_"] +[188.03113451004117, "o", "2"] +[188.06113451004117, "o", "0"] +[188.09113451004117, "o", "1"] +[188.12113451004117, "o", "8"] +[188.15113451004117, "o", "0"] +[188.18113451004118, "o", "4"] +[188.21113451004118, "o", "1"] +[188.24113451004118, "o", "0"] +[188.27113451004118, "o", " "] +[188.30113451004118, "o", "\""] +[188.33113451004118, "o", "S"] +[188.36113451004118, "o", "E"] +[188.39113451004118, "o", "L"] +[188.42113451004118, "o", "E"] +[188.4511345100412, "o", "C"] +[188.4811345100412, "o", "T"] +[188.5111345100412, "o", " "] +[188.5411345100412, "o", "s"] +[188.5711345100412, "o", "u"] +[188.6011345100412, "o", "m"] +[188.6311345100412, "o", "("] +[188.6611345100412, "o", "b"] +[188.6911345100412, "o", "a"] +[188.7211345100412, "o", "n"] +[188.7511345100412, "o", "k"] +[188.7811345100412, "o", "_"] +[188.8111345100412, "o", "t"] +[188.8411345100412, "o", "r"] +[188.8711345100412, "o", "a"] +[188.9011345100412, "o", "n"] +[188.9311345100412, "o", "s"] +[188.9611345100412, "o", "f"] +[188.9911345100412, "o", "e"] +[189.0211345100412, "o", "r"] +[189.0511345100412, "o", "_"] +[189.0811345100412, "o", "a"] +[189.1111345100412, "o", "m"] +[189.1411345100412, "o", "o"] +[189.1711345100412, "o", "u"] +[189.20113451004121, "o", "n"] +[189.23113451004122, "o", "t"] +[189.26113451004122, "o", ")"] +[189.29113451004122, "o", " "] +[189.32113451004122, "o", "F"] +[189.35113451004122, "o", "R"] +[189.38113451004122, "o", "O"] +[189.41113451004122, "o", "M"] +[189.44113451004122, "o", " "] +[189.47113451004122, "o", "f"] +[189.50113451004123, "o", "c"] +[189.53113451004123, "o", "t"] +[189.56113451004123, "o", "_"] +[189.59113451004123, "o", "o"] +[189.62113451004123, "o", "r"] +[189.65113451004123, "o", "d"] +[189.68113451004123, "o", "e"] +[189.71113451004123, "o", "r"] +[189.74113451004123, "o", "s"] +[189.77113451004124, "o", " "] +[189.80113451004124, "o", "W"] +[189.83113451004124, "o", "H"] +[189.86113451004124, "o", "E"] +[189.89113451004124, "o", "R"] +[189.92113451004124, "o", "E"] +[189.95113451004124, "o", " "] +[189.98113451004124, "o", "s"] +[190.01113451004124, "o", "t"] +[190.04113451004125, "o", "a"] +[190.07113451004125, "o", "t"] +[190.10113451004125, "o", "u"] +[190.13113451004125, "o", "s"] +[190.16113451004125, "o", " "] +[190.19113451004125, "o", "="] +[190.22113451004125, "o", " "] +[190.25113451004125, "o", "'"] +[190.28113451004126, "o", "r"] +[190.31113451004126, "o", "e"] +[190.34113451004126, "o", "t"] +[190.37113451004126, "o", "u"] +[190.40113451004126, "o", "r"] +[190.43113451004126, "o", "n"] +[190.46113451004126, "o", "e"] +[190.49113451004126, "o", "d"] +[190.52113451004126, "o", "'"] +[190.55113451004127, "o", "\""] +[190.58113451004127, "o", "\r\n"] +[190.61113451004127, "o", "\u001b[0m"] +[190.64113451004127, "o", "\r\n"] +[191.38232017517188, "o", "3"] +[191.3823781108866, "o", "\r\n"] +[192.10739661216834, "o", "60\r\n"] +[192.13739661216835, "o", "\u001b[1m"] +[192.16739661216835, "o", "\u001b[36m"] +[192.19739661216835, "o", "\u001b[91m"] +[192.22739661216835, "o", "$"] +[192.25739661216835, "o", " "] +[192.28739661216835, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.13/import-from-csv.cast b/content/casts/versioned/archive/v0.2.13/import-from-csv.cast new file mode 100644 index 00000000..8f089f9a --- /dev/null +++ b/content/casts/versioned/archive/v0.2.13/import-from-csv.cast @@ -0,0 +1,612 @@ +{"version": 2, "width": 100, "height": 45, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1618412445, "metadata": {"tss": [{"h": "Inspect the data file", "ts": 0.06}, {"h": "Initialize the repository", "ts": 6.501549243927004}, {"h": "Ingest the data into a new table (wrapper around COPY FROM STDIN)", "ts": 27.501549243927006}, {"h": "The data is now in a table but not committed as a Splitgraph image", "ts": 36.19154924392714}, {"h": "Create a new image and tag it", "ts": 43.51320366859457}, {"h": "Inspect the image", "ts": 51.44925143241912}, {"h": "Inspect the table", "ts": 58.18412064552342}, {"h": "Inspect object metadata", "ts": 77.68412064552342}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the data file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # (originally from https://data.townofcary.org/api/v2/catalog/datasets/rdu-weather-history/exports/csv)\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "h"] +[0.27, "o", "e"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "d"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "n"] +[0.4500000000000002, "o", "5"] +[0.4800000000000002, "o", " "] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", "d"] +[0.5700000000000003, "o", "u"] +[0.6000000000000003, "o", "-"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "-"] +[0.8700000000000006, "o", "h"] +[0.9000000000000006, "o", "i"] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "t"] +[0.9900000000000007, "o", "o"] +[1.0200000000000007, "o", "r"] +[1.0500000000000007, "o", "y"] +[1.0800000000000007, "o", "."] +[1.1100000000000008, "o", "c"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", "v"] +[1.2000000000000008, "o", "\r\n"] +[1.2300000000000009, "o", "\u001b[0m"] +[1.260000000000001, "o", "\r\n"] +[1.2615387535095224, "o", "date;temperaturemin;temperaturemax;precipitation;snowfall;snowdepth;avgwindspeed;fastest2minwinddir;fastest2minwindspeed;fastest5secwinddir;fastest5secwindspeed;fog;fogheavy;mist;rain;fogground;ice;glaze;drizzle;snow;freezingrain;smokehaze;thunder;highwind;hail;blowingsnow;dust;freezingfog\r\r\n2007-01-06;50.0;71.1;0.13;0.0;0.0;8.05;230;17.9;230;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-09;30.0;55.0;0.0;0.0;0.0;7.61;280;23.04;270;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;N"] +[1.2615492439270029, "o", "o;No\r\r\n2007-01-14;50.0;73.9;0.0;0.0;0.0;8.5;230;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-15;57.0;73.9;0.0;0.0;0.0;13.2;230;23.94;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n"] +[1.2915492439270029, "o", "\u001b[1m"] +[1.321549243927003, "o", "\u001b[36m"] +[1.351549243927003, "o", "\u001b[91m"] +[1.381549243927003, "o", "$"] +[1.411549243927003, "o", " "] +[1.441549243927003, "o", "\u001b[0m"] +[6.4715492439270035, "o", "\u001b[H"] +[6.501549243927004, "o", "\u001b[J"] +[6.531549243927004, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the repository"] +[6.561549243927004, "o", "\r\n"] +[6.5915492439270045, "o", "$"] +[6.621549243927005, "o", " "] +[6.651549243927005, "o", "s"] +[6.681549243927005, "o", "g"] +[6.7115492439270055, "o", "r"] +[6.741549243927006, "o", " "] +[6.771549243927006, "o", "i"] +[6.801549243927006, "o", "n"] +[6.8315492439270065, "o", "i"] +[6.861549243927007, "o", "t"] +[6.891549243927007, "o", " "] +[6.921549243927007, "o", "d"] +[6.9515492439270075, "o", "e"] +[6.981549243927008, "o", "m"] +[7.011549243927008, "o", "o"] +[7.041549243927008, "o", "/"] +[7.0715492439270085, "o", "w"] +[7.101549243927009, "o", "e"] +[7.131549243927009, "o", "a"] +[7.161549243927009, "o", "t"] +[7.1915492439270094, "o", "h"] +[7.22154924392701, "o", "e"] +[7.25154924392701, "o", "r"] +[7.28154924392701, "o", "\r\n"] +[7.3115492439270104, "o", "$"] +[7.341549243927011, "o", " "] +[7.371549243927011, "o", "s"] +[7.401549243927011, "o", "g"] +[7.431549243927011, "o", "r"] +[7.461549243927012, "o", " "] +[7.491549243927012, "o", "c"] +[7.521549243927012, "o", "s"] +[7.551549243927012, "o", "v"] +[7.581549243927013, "o", " "] +[7.611549243927013, "o", "i"] +[7.641549243927013, "o", "m"] +[7.671549243927013, "o", "p"] +[7.701549243927014, "o", "o"] +[7.731549243927014, "o", "r"] +[7.761549243927014, "o", "t"] +[7.791549243927014, "o", " "] +[7.821549243927015, "o", "-"] +[7.851549243927015, "o", "-"] +[7.881549243927015, "o", "h"] +[7.911549243927015, "o", "e"] +[7.941549243927016, "o", "l"] +[7.971549243927016, "o", "p"] +[8.001549243927016, "o", "\r\n"] +[8.031549243927016, "o", "\u001b[0m"] +[8.061549243927015, "o", "\r\n"] +[8.332598266601575, "o", "Initialized empty repository demo/weather\r\n"] +[8.534176168441785, "o", "Usage: sgr csv import [OPTIONS] REPOSITORY TABLE\r\n\r\n Import a CSV file into a checked-out Splitgraph repository. This doesn't\r\n create a new image, use sgr commit after the import and any adjustments\r\n (e.g. adding primary keys or converting column types) to do so.\r\n\r\n If the target table doesn't exist, this will create a new table.\r\n\r\n If the target table does exist, this will try and patch the new values in\r\n by updating rows that exist in the current table (as per its primary key\r\n constraints) an"] +[8.534188566207899, "o", "d inserting new ones. Rows existing in the current table\r\n but missing in the CSV won't be deleted.\r\n\r\n If -r is passed, the table will instead be deleted and recreated from the\r\n CSV file if it exists.\r\n\r\nOptions:\r\n -f, --file FILENAME File name to import data from, default\r\n stdin.\r\n\r\n -r, --replace Replace the table if it already exists.\r\n -k, --primary-key TEXT Use the specified column(s) as primary\r\n "] +[8.534195718765272, "o", " key(s)\r\n\r\n -t, --override-type ...\r\n Explicitly set types of these columns to PG\r\n types\r\n\r\n --encoding TEXT Encoding to use for the CSV file\r\n --separator TEXT CSV separator to use\r\n --no-header Treats the first line of the CSV as data\r\n rather than a header.\r\n\r\n --skip-schema-check Skips checking that the dataframe is\r\n "] +[8.534202632904066, "o", " compatible with the target schema.\r\n\r\n --help Show this message and exit.\r\n"] +[8.564202632904065, "o", "\u001b[1m"] +[8.594202632904064, "o", "\u001b[36m"] +[8.624202632904064, "o", "\u001b[91m"] +[8.654202632904063, "o", "$"] +[8.684202632904062, "o", " "] +[8.714202632904062, "o", "\u001b[0m"] +[27.471549243927004, "o", "\u001b[H"] +[27.501549243927006, "o", "\u001b[J"] +[27.531549243927007, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the data into a new table (wrapper around COPY FROM STDIN)"] +[27.561549243927008, "o", "\r\n"] +[27.59154924392701, "o", "$"] +[27.62154924392701, "o", " "] +[27.65154924392701, "o", "s"] +[27.681549243927012, "o", "g"] +[27.711549243927013, "o", "r"] +[27.741549243927015, "o", " "] +[27.771549243927016, "o", "c"] +[27.801549243927017, "o", "s"] +[27.831549243927018, "o", "v"] +[27.86154924392702, "o", " "] +[27.89154924392702, "o", "i"] +[27.92154924392702, "o", "m"] +[27.951549243927023, "o", "p"] +[27.981549243927024, "o", "o"] +[28.011549243927025, "o", "r"] +[28.041549243927026, "o", "t"] +[28.071549243927027, "o", " "] +[28.10154924392703, "o", "-"] +[28.13154924392703, "o", "f"] +[28.16154924392703, "o", " "] +[28.19154924392703, "o", "r"] +[28.221549243927033, "o", "d"] +[28.251549243927034, "o", "u"] +[28.281549243927035, "o", "-"] +[28.311549243927036, "o", "w"] +[28.341549243927037, "o", "e"] +[28.37154924392704, "o", "a"] +[28.40154924392704, "o", "t"] +[28.43154924392704, "o", "h"] +[28.461549243927042, "o", "e"] +[28.491549243927043, "o", "r"] +[28.521549243927044, "o", "-"] +[28.551549243927045, "o", "h"] +[28.581549243927046, "o", "i"] +[28.611549243927048, "o", "s"] +[28.64154924392705, "o", "t"] +[28.67154924392705, "o", "o"] +[28.70154924392705, "o", "r"] +[28.731549243927052, "o", "y"] +[28.761549243927053, "o", "."] +[28.791549243927054, "o", "c"] +[28.821549243927056, "o", "s"] +[28.851549243927057, "o", "v"] +[28.881549243927058, "o", " "] +[28.91154924392706, "o", "\\"] +[28.94154924392706, "o", "\r\n "] +[28.97154924392706, "o", "-"] +[29.001549243927062, "o", "k"] +[29.031549243927063, "o", " "] +[29.061549243927065, "o", "d"] +[29.091549243927066, "o", "a"] +[29.121549243927067, "o", "t"] +[29.151549243927068, "o", "e"] +[29.18154924392707, "o", " "] +[29.21154924392707, "o", "\\"] +[29.24154924392707, "o", "\r\n "] +[29.271549243927073, "o", "-"] +[29.301549243927074, "o", "t"] +[29.331549243927075, "o", " "] +[29.361549243927076, "o", "d"] +[29.391549243927077, "o", "a"] +[29.42154924392708, "o", "t"] +[29.45154924392708, "o", "e"] +[29.48154924392708, "o", " "] +[29.51154924392708, "o", "t"] +[29.541549243927083, "o", "i"] +[29.571549243927084, "o", "m"] +[29.601549243927085, "o", "e"] +[29.631549243927086, "o", "s"] +[29.661549243927087, "o", "t"] +[29.69154924392709, "o", "a"] +[29.72154924392709, "o", "m"] +[29.75154924392709, "o", "p"] +[29.781549243927092, "o", " "] +[29.811549243927093, "o", "\\"] +[29.841549243927094, "o", "\r\n "] +[29.871549243927095, "o", "-"] +[29.901549243927096, "o", "-"] +[29.931549243927098, "o", "s"] +[29.9615492439271, "o", "e"] +[29.9915492439271, "o", "p"] +[30.0215492439271, "o", "a"] +[30.051549243927102, "o", "r"] +[30.081549243927103, "o", "a"] +[30.111549243927104, "o", "t"] +[30.141549243927106, "o", "o"] +[30.171549243927107, "o", "r"] +[30.201549243927108, "o", " "] +[30.23154924392711, "o", "\""] +[30.26154924392711, "o", ";"] +[30.29154924392711, "o", "\""] +[30.321549243927112, "o", " "] +[30.351549243927114, "o", "\\"] +[30.381549243927115, "o", "\r\n "] +[30.411549243927116, "o", "d"] +[30.441549243927117, "o", "e"] +[30.471549243927118, "o", "m"] +[30.50154924392712, "o", "o"] +[30.53154924392712, "o", "/"] +[30.56154924392712, "o", "w"] +[30.591549243927123, "o", "e"] +[30.621549243927124, "o", "a"] +[30.651549243927125, "o", "t"] +[30.681549243927126, "o", "h"] +[30.711549243927127, "o", "e"] +[30.74154924392713, "o", "r"] +[30.77154924392713, "o", " "] +[30.80154924392713, "o", "r"] +[30.83154924392713, "o", "d"] +[30.861549243927133, "o", "u"] +[30.891549243927134, "o", "\r\n"] +[30.921549243927135, "o", "\u001b[0m"] +[30.951549243927136, "o", "\r\n"] +[30.981549243927137, "o", "\u001b[1m"] +[31.01154924392714, "o", "\u001b[36m"] +[31.04154924392714, "o", "\u001b[91m"] +[31.07154924392714, "o", "$"] +[31.101549243927142, "o", " "] +[31.131549243927143, "o", "\u001b[0m"] +[36.16154924392714, "o", "\u001b[H"] +[36.19154924392714, "o", "\u001b[J"] +[36.22154924392714, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The data is now in a table but not committed as a Splitgraph image"] +[36.251549243927144, "o", "\r\n"] +[36.281549243927145, "o", "$"] +[36.311549243927146, "o", " "] +[36.34154924392715, "o", "s"] +[36.37154924392715, "o", "g"] +[36.40154924392715, "o", "r"] +[36.43154924392715, "o", " "] +[36.46154924392715, "o", "s"] +[36.49154924392715, "o", "t"] +[36.521549243927154, "o", "a"] +[36.551549243927155, "o", "t"] +[36.58154924392716, "o", "u"] +[36.61154924392716, "o", "s"] +[36.64154924392716, "o", " "] +[36.67154924392716, "o", "d"] +[36.70154924392716, "o", "e"] +[36.73154924392716, "o", "m"] +[36.76154924392716, "o", "o"] +[36.791549243927165, "o", "/"] +[36.821549243927166, "o", "w"] +[36.85154924392717, "o", "e"] +[36.88154924392717, "o", "a"] +[36.91154924392717, "o", "t"] +[36.94154924392717, "o", "h"] +[36.97154924392717, "o", "e"] +[37.00154924392717, "o", "r"] +[37.031549243927174, "o", "\r\n"] +[37.061549243927175, "o", "$"] +[37.091549243927176, "o", " "] +[37.12154924392718, "o", "s"] +[37.15154924392718, "o", "g"] +[37.18154924392718, "o", "r"] +[37.21154924392718, "o", " "] +[37.24154924392718, "o", "d"] +[37.27154924392718, "o", "i"] +[37.301549243927184, "o", "f"] +[37.331549243927185, "o", "f"] +[37.361549243927186, "o", " "] +[37.39154924392719, "o", "d"] +[37.42154924392719, "o", "e"] +[37.45154924392719, "o", "m"] +[37.48154924392719, "o", "o"] +[37.51154924392719, "o", "/"] +[37.54154924392719, "o", "w"] +[37.571549243927194, "o", "e"] +[37.601549243927195, "o", "a"] +[37.631549243927196, "o", "t"] +[37.6615492439272, "o", "h"] +[37.6915492439272, "o", "e"] +[37.7215492439272, "o", "r"] +[37.7515492439272, "o", "\r\n"] +[37.7815492439272, "o", "\u001b[0m"] +[37.8115492439272, "o", "\r\n"] +[38.03981595993062, "o", "demo/weather: on image 0000000000000000000000000000000000000000000000000000000000000000.\r\n"] +[38.273186979294024, "o", "Between 000000000000 and the current working copy: \r\n"] +[38.27320366859456, "o", "rdu: table added\r\n"] +[38.30320366859456, "o", "\u001b[1m"] +[38.333203668594564, "o", "\u001b[36m"] +[38.363203668594565, "o", "\u001b[91m"] +[38.393203668594566, "o", "$"] +[38.42320366859457, "o", " "] +[38.45320366859457, "o", "\u001b[0m"] +[43.48320366859457, "o", "\u001b[H"] +[43.51320366859457, "o", "\u001b[J"] +[43.54320366859457, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a new image and tag it"] +[43.57320366859457, "o", "\r\n"] +[43.603203668594574, "o", "$"] +[43.633203668594575, "o", " "] +[43.663203668594576, "o", "s"] +[43.69320366859458, "o", "g"] +[43.72320366859458, "o", "r"] +[43.75320366859458, "o", " "] +[43.78320366859458, "o", "c"] +[43.81320366859458, "o", "o"] +[43.84320366859458, "o", "m"] +[43.873203668594584, "o", "m"] +[43.903203668594585, "o", "i"] +[43.93320366859459, "o", "t"] +[43.96320366859459, "o", " "] +[43.99320366859459, "o", "d"] +[44.02320366859459, "o", "e"] +[44.05320366859459, "o", "m"] +[44.08320366859459, "o", "o"] +[44.11320366859459, "o", "/"] +[44.143203668594595, "o", "w"] +[44.173203668594596, "o", "e"] +[44.2032036685946, "o", "a"] +[44.2332036685946, "o", "t"] +[44.2632036685946, "o", "h"] +[44.2932036685946, "o", "e"] +[44.3232036685946, "o", "r"] +[44.3532036685946, "o", "\r\n"] +[44.383203668594604, "o", "$"] +[44.413203668594605, "o", " "] +[44.443203668594606, "o", "s"] +[44.47320366859461, "o", "g"] +[44.50320366859461, "o", "r"] +[44.53320366859461, "o", " "] +[44.56320366859461, "o", "t"] +[44.59320366859461, "o", "a"] +[44.62320366859461, "o", "g"] +[44.653203668594614, "o", " "] +[44.683203668594615, "o", "d"] +[44.713203668594616, "o", "e"] +[44.74320366859462, "o", "m"] +[44.77320366859462, "o", "o"] +[44.80320366859462, "o", "/"] +[44.83320366859462, "o", "w"] +[44.86320366859462, "o", "e"] +[44.89320366859462, "o", "a"] +[44.923203668594624, "o", "t"] +[44.953203668594625, "o", "h"] +[44.983203668594626, "o", "e"] +[45.01320366859463, "o", "r"] +[45.04320366859463, "o", " "] +[45.07320366859463, "o", "i"] +[45.10320366859463, "o", "n"] +[45.13320366859463, "o", "i"] +[45.16320366859463, "o", "t"] +[45.193203668594634, "o", "i"] +[45.223203668594635, "o", "a"] +[45.25320366859464, "o", "l"] +[45.28320366859464, "o", "_"] +[45.31320366859464, "o", "d"] +[45.34320366859464, "o", "a"] +[45.37320366859464, "o", "t"] +[45.40320366859464, "o", "a"] +[45.43320366859464, "o", "\r\n"] +[45.463203668594645, "o", "\u001b[0m"] +[45.493203668594646, "o", "\r\n"] +[45.727653532028484, "o", "Committing demo/weather...\r\n"] +[45.7541322994235, "o", "Processing table rdu\r\n"] +[45.96957448005705, "o", "Committed demo/weather as d3242ff96992.\r\n"] +[46.20925143241911, "o", "Tagged demo/weather:d3242ff96992904ccb1cdfce707cb0d92e4b41adc84e72be97964453e8e68cbf with initial_data.\r\n"] +[46.23925143241911, "o", "\u001b[1m"] +[46.26925143241911, "o", "\u001b[36m"] +[46.29925143241911, "o", "\u001b[91m"] +[46.32925143241911, "o", "$"] +[46.359251432419114, "o", " "] +[46.389251432419115, "o", "\u001b[0m"] +[51.41925143241912, "o", "\u001b[H"] +[51.44925143241912, "o", "\u001b[J"] +[51.47925143241912, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image"] +[51.50925143241912, "o", "\r\n"] +[51.53925143241912, "o", "$"] +[51.56925143241912, "o", " "] +[51.59925143241912, "o", "s"] +[51.629251432419125, "o", "g"] +[51.659251432419126, "o", "r"] +[51.68925143241913, "o", " "] +[51.71925143241913, "o", "s"] +[51.74925143241913, "o", "h"] +[51.77925143241913, "o", "o"] +[51.80925143241913, "o", "w"] +[51.83925143241913, "o", " "] +[51.869251432419134, "o", "d"] +[51.899251432419135, "o", "e"] +[51.929251432419136, "o", "m"] +[51.95925143241914, "o", "o"] +[51.98925143241914, "o", "/"] +[52.01925143241914, "o", "w"] +[52.04925143241914, "o", "e"] +[52.07925143241914, "o", "a"] +[52.10925143241914, "o", "t"] +[52.139251432419144, "o", "h"] +[52.169251432419145, "o", "e"] +[52.199251432419146, "o", "r"] +[52.22925143241915, "o", ":"] +[52.25925143241915, "o", "i"] +[52.28925143241915, "o", "n"] +[52.31925143241915, "o", "i"] +[52.34925143241915, "o", "t"] +[52.37925143241915, "o", "i"] +[52.409251432419154, "o", "a"] +[52.439251432419155, "o", "l"] +[52.469251432419156, "o", "_"] +[52.49925143241916, "o", "d"] +[52.52925143241916, "o", "a"] +[52.55925143241916, "o", "t"] +[52.58925143241916, "o", "a"] +[52.61925143241916, "o", "\r\n"] +[52.64925143241916, "o", "\u001b[0m"] +[52.679251432419164, "o", "\r\n"] +[52.94196200370823, "o", "Image demo/weather:d3242ff96992904ccb1cdfce707cb0d92e4b41adc84e72be97964453e8e68cbf\r\n\r\nCreated at 2021-04-14T15:00:56.183146\r\n"] +[52.943541765213354, "o", "Size: 109.61 KiB\r\n"] +[52.94355845451389, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[52.94412064552341, "o", " rdu\r\n"] +[52.97412064552341, "o", "\u001b[1m"] +[53.004120645523415, "o", "\u001b[36m"] +[53.034120645523416, "o", "\u001b[91m"] +[53.06412064552342, "o", "$"] +[53.09412064552342, "o", " "] +[53.12412064552342, "o", "\u001b[0m"] +[58.15412064552342, "o", "\u001b[H"] +[58.18412064552342, "o", "\u001b[J"] +[58.21412064552342, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the table"] +[58.244120645523424, "o", "\r\n"] +[58.274120645523425, "o", "$"] +[58.304120645523426, "o", " "] +[58.33412064552343, "o", "s"] +[58.36412064552343, "o", "g"] +[58.39412064552343, "o", "r"] +[58.42412064552343, "o", " "] +[58.45412064552343, "o", "t"] +[58.48412064552343, "o", "a"] +[58.514120645523434, "o", "b"] +[58.544120645523435, "o", "l"] +[58.574120645523436, "o", "e"] +[58.60412064552344, "o", " "] +[58.63412064552344, "o", "d"] +[58.66412064552344, "o", "e"] +[58.69412064552344, "o", "m"] +[58.72412064552344, "o", "o"] +[58.75412064552344, "o", "/"] +[58.784120645523444, "o", "w"] +[58.814120645523445, "o", "e"] +[58.84412064552345, "o", "a"] +[58.87412064552345, "o", "t"] +[58.90412064552345, "o", "h"] +[58.93412064552345, "o", "e"] +[58.96412064552345, "o", "r"] +[58.99412064552345, "o", ":"] +[59.02412064552345, "o", "i"] +[59.054120645523454, "o", "n"] +[59.084120645523456, "o", "i"] +[59.11412064552346, "o", "t"] +[59.14412064552346, "o", "i"] +[59.17412064552346, "o", "a"] +[59.20412064552346, "o", "l"] +[59.23412064552346, "o", "_"] +[59.26412064552346, "o", "d"] +[59.29412064552346, "o", "a"] +[59.324120645523465, "o", "t"] +[59.354120645523466, "o", "a"] +[59.38412064552347, "o", " "] +[59.41412064552347, "o", "r"] +[59.44412064552347, "o", "d"] +[59.47412064552347, "o", "u"] +[59.50412064552347, "o", "\r\n"] +[59.53412064552347, "o", "\u001b[0m"] +[59.564120645523474, "o", "\r\n"] +[59.80677949905436, "o", "Table demo/weather:d3242ff96992904ccb1cdfce707cb0d92e4b41adc84e72be97964453e8e68cbf/rdu\r\n"] +[59.806795949936316, "o", "\r\n"] +[59.807807083130285, "o", "Size: 109.61 KiB\r\n"] +[59.80869304657023, "o", "Rows: 4633\r\n"] +[59.80871903419535, "o", "Columns: \r\n date (timestamp without time zone, PK)\r\n temperaturemin (numeric)\r\n temperaturemax (numeric)\r\n precipitation (numeric)\r\n snowfall (numeric)\r\n snowdepth (numeric)\r\n"] +[59.80873190879862, "o", " avgwindspeed (numeric)\r\n fastest2minwinddir (integer)\r\n"] +[59.80874216079752, "o", " fastest2minwindspeed (numeric)\r\n fastest5secwinddir (integer)\r\n"] +[59.80875408172648, "o", " fastest5secwindspeed (numeric)\r\n"] +[59.808765048981115, "o", " fog (character varying)\r\n fogheavy (character varying)\r\n"] +[59.80877530098002, "o", " mist (character varying)\r\n"] +[59.80878173828165, "o", " rain (character varying)\r\n fogground (character varying)\r\n"] +[59.80879580497782, "o", " ice (character varying)\r\n"] +[59.8088108253483, "o", " glaze (character varying)\r\n drizzle (character varying)\r\n"] +[59.808821077347204, "o", " snow (character varying)\r\n freezingrain (character varying)\r\n"] +[59.80883323669474, "o", " smokehaze (character varying)\r\n"] +[59.80883872032206, "o", " thunder (character varying)\r\n highwind (character varying)\r\n"] +[59.80885087966959, "o", " hail (character varying)\r\n"] +[59.808860893249914, "o", " blowingsnow (character varying)\r\n dust (character varying)\r\n"] +[59.808874006271765, "o", " freezingfog (character varying)\r\n"] +[59.8088804435734, "o", "\r\nObjects: \r\n"] +[59.80888902664225, "o", " ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] +[59.83888902664225, "o", "\u001b[1m"] +[59.86888902664225, "o", "\u001b[36m"] +[59.89888902664225, "o", "\u001b[91m"] +[59.92888902664225, "o", "$"] +[59.958889026642254, "o", " "] +[59.988889026642255, "o", "\u001b[0m"] +[77.65412064552342, "o", "\u001b[H"] +[77.68412064552342, "o", "\u001b[J"] +[77.71412064552342, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect object metadata"] +[77.74412064552342, "o", "\r\n"] +[77.77412064552342, "o", "$"] +[77.80412064552343, "o", " "] +[77.83412064552343, "o", "s"] +[77.86412064552343, "o", "g"] +[77.89412064552343, "o", "r"] +[77.92412064552343, "o", " "] +[77.95412064552343, "o", "o"] +[77.98412064552343, "o", "b"] +[78.01412064552343, "o", "j"] +[78.04412064552344, "o", "e"] +[78.07412064552344, "o", "c"] +[78.10412064552344, "o", "t"] +[78.13412064552344, "o", " "] +[78.16412064552344, "o", "o"] +[78.19412064552344, "o", "b"] +[78.22412064552344, "o", "7"] +[78.25412064552344, "o", "9"] +[78.28412064552344, "o", "9"] +[78.31412064552345, "o", "c"] +[78.34412064552345, "o", "a"] +[78.37412064552345, "o", "7"] +[78.40412064552345, "o", "6"] +[78.43412064552345, "o", "1"] +[78.46412064552345, "o", "e"] +[78.49412064552345, "o", "a"] +[78.52412064552345, "o", "6"] +[78.55412064552345, "o", "3"] +[78.58412064552346, "o", "8"] +[78.61412064552346, "o", "c"] +[78.64412064552346, "o", "0"] +[78.67412064552346, "o", "d"] +[78.70412064552346, "o", "b"] +[78.73412064552346, "o", "b"] +[78.76412064552346, "o", "4"] +[78.79412064552346, "o", "d"] +[78.82412064552346, "o", "f"] +[78.85412064552347, "o", "3"] +[78.88412064552347, "o", "e"] +[78.91412064552347, "o", "5"] +[78.94412064552347, "o", "9"] +[78.97412064552347, "o", "a"] +[79.00412064552347, "o", "b"] +[79.03412064552347, "o", "6"] +[79.06412064552347, "o", "a"] +[79.09412064552347, "o", "9"] +[79.12412064552348, "o", "9"] +[79.15412064552348, "o", "5"] +[79.18412064552348, "o", "d"] +[79.21412064552348, "o", "8"] +[79.24412064552348, "o", "7"] +[79.27412064552348, "o", "9"] +[79.30412064552348, "o", "9"] +[79.33412064552348, "o", "9"] +[79.36412064552349, "o", "9"] +[79.39412064552349, "o", "0"] +[79.42412064552349, "o", "9"] +[79.45412064552349, "o", "d"] +[79.48412064552349, "o", "0"] +[79.51412064552349, "o", "0"] +[79.54412064552349, "o", "8"] +[79.5741206455235, "o", "a"] +[79.6041206455235, "o", "3"] +[79.6341206455235, "o", "4"] +[79.6641206455235, "o", "9"] +[79.6941206455235, "o", "5"] +[79.7241206455235, "o", "7"] +[79.7541206455235, "o", "1"] +[79.7841206455235, "o", "1"] +[79.8141206455235, "o", "c"] +[79.8441206455235, "o", "9"] +[79.8741206455235, "o", "0"] +[79.9041206455235, "o", "0"] +[79.9341206455235, "o", "9"] +[79.96412064552351, "o", "f"] +[79.99412064552351, "o", "8"] +[80.02412064552351, "o", "f"] +[80.05412064552351, "o", "\r\n"] +[80.08412064552351, "o", "\u001b[0m"] +[80.11412064552351, "o", "\r\n"] +[80.35668627738997, "o", "Object ID: ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n\r\n"] +[80.35670129776045, "o", "Namespace: demo\r\nFormat: FRAG\r\nSize: 109.61 KiB\r\nCreated: 2021-04-14 15:00:56.394882\r\nRows inserted: 4633\r\n"] +[80.35740630149886, "o", "Insertion hash: 4b49b5701a582aa5c418238e4bf75c84d0dcd2ec993fb4e7fe1d0dfcf6ef6877\r\nRows deleted: 0\r\nDeletion hash: 0000000000000000000000000000000000000000000000000000000000000000\r\nColumn index:\r\n"] +[80.35741679191634, "o", " fog: ['No', 'Yes']\r\n ice: ['No', 'Yes']\r\n date: ['2007-01-01 00:00:00', '2019-09-07 00:00:00']\r\n dust: ['No', 'Yes']\r\n hail: ['No', 'Yes']\r\n"] +[80.358445091248, "o", " mist: ['No', 'Yes']\r\n rain: ['No', 'Yes']\r\n snow: ['No', 'Yes']\r\n glaze: ['No', 'Yes']\r\n drizzle: ['No', 'Yes']\r\n"] +[80.35845677375838, "o", " thunder: ['No', 'Yes']\r\n fogheavy: ['No', 'Yes']\r\n highwind: ['No', 'Yes']\r\n snowfall: ['0.0', '7.01']\r\n fogground: ['No', 'Yes']\r\n smokehaze: ['No', 'Yes']\r\n"] +[80.3593532276158, "o", " snowdepth: ['0.0', '5.91']\r\n"] +[80.35936419487044, "o", " blowingsnow: ['No', 'Yes']\r\n freezingfog: ['No', 'Yes']\r\n avgwindspeed: ['0.0', '20.36']\r\n freezingrain: ['No', 'Yes']\r\n precipitation: ['0.0', '6.45']\r\n"] +[80.35995070457503, "o", " temperaturemax: ['23.2', '105.1']\r\n"] +[80.35995976448103, "o", " temperaturemin: ['4.1', '80.1']\r\n fastest2minwinddir: [10, 360]\r\n fastest5secwinddir: [10, 360]\r\n fastest2minwindspeed: ['4.92', '59.95']"] +[80.36034838676497, "o", "\r\n"] +[80.36036030769392, "o", " fastest5secwindspeed: ['6.93', '86.12']\r\n\r\n"] +[80.38559095382735, "o", "Location: created locally\r\n"] +[80.41559095382735, "o", "\u001b[1m"] +[80.44559095382735, "o", "\u001b[36m"] +[80.47559095382735, "o", "\u001b[91m"] +[80.50559095382735, "o", "$"] +[80.53559095382735, "o", " "] +[80.56559095382735, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.13/import-from-mongo.cast b/content/casts/versioned/archive/v0.2.13/import-from-mongo.cast new file mode 100644 index 00000000..122bc2b7 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.13/import-from-mongo.cast @@ -0,0 +1,669 @@ +{"version": 2, "width": 100, "height": 35, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1618412460, "metadata": {"tss": [{"h": "Inspect the config file", "ts": 0.06}, {"h": "Do some preliminary cleanup", "ts": 6.0600000000000005}, {"h": "Mount the Mongo database", "ts": 12.264177579879767}, {"h": "Check the contents of the new table", "ts": 29.26417757987977}, {"h": "Import the data into a new Splitgraph repository", "ts": 36.16724030494697}, {"h": "Alternatively, data can be imported from other databases with Splitfiles", "ts": 45.108266372680845}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the config file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "c"] +[0.24, "o", "a"] +[0.27, "o", "t"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "."] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "g"] +[0.42000000000000015, "o", "c"] +[0.4500000000000002, "o", "o"] +[0.4800000000000002, "o", "n"] +[0.5100000000000002, "o", "f"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "g"] +[0.6000000000000003, "o", "\r\n"] +[0.6300000000000003, "o", "\u001b[0m"] +[0.6600000000000004, "o", "\r\n"] +[0.6611408329010013, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[data_sources]\r\nmongo_fdw=splitgraph.hooks.data_source.MongoDataSource\r\n"] +[0.6911408329010014, "o", "\u001b[1m"] +[0.7211408329010014, "o", "\u001b[36m"] +[0.7511408329010014, "o", "\u001b[91m"] +[0.7811408329010014, "o", "$"] +[0.8111408329010015, "o", " "] +[0.8411408329010015, "o", "\u001b[0m"] +[6.03, "o", "\u001b[H"] +[6.0600000000000005, "o", "\u001b[J"] +[6.090000000000001, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Do some preliminary cleanup"] +[6.120000000000001, "o", "\r\n"] +[6.150000000000001, "o", "$"] +[6.1800000000000015, "o", " "] +[6.210000000000002, "o", "s"] +[6.240000000000002, "o", "g"] +[6.270000000000002, "o", "r"] +[6.3000000000000025, "o", " "] +[6.330000000000003, "o", "r"] +[6.360000000000003, "o", "m"] +[6.390000000000003, "o", " "] +[6.4200000000000035, "o", "-"] +[6.450000000000004, "o", "y"] +[6.480000000000004, "o", " "] +[6.510000000000004, "o", "s"] +[6.5400000000000045, "o", "t"] +[6.570000000000005, "o", "a"] +[6.600000000000005, "o", "g"] +[6.630000000000005, "o", "i"] +[6.6600000000000055, "o", "n"] +[6.690000000000006, "o", "g"] +[6.720000000000006, "o", "\r\n"] +[6.750000000000006, "o", "\u001b[0m"] +[6.7800000000000065, "o", "\r\n"] +[7.024177579879767, "o", "Postgres schema staging will be deleted.\r\n"] +[7.0541775798797675, "o", "\u001b[1m"] +[7.084177579879768, "o", "\u001b[36m"] +[7.114177579879768, "o", "\u001b[91m"] +[7.144177579879768, "o", "$"] +[7.1741775798797685, "o", " "] +[7.204177579879769, "o", "\u001b[0m"] +[12.234177579879768, "o", "\u001b[H"] +[12.264177579879767, "o", "\u001b[J"] +[12.294177579879767, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Mount the Mongo database"] +[12.324177579879766, "o", "\r\n"] +[12.354177579879766, "o", "$"] +[12.384177579879765, "o", " "] +[12.414177579879764, "o", "s"] +[12.444177579879764, "o", "g"] +[12.474177579879763, "o", "r"] +[12.504177579879762, "o", " "] +[12.534177579879762, "o", "m"] +[12.564177579879761, "o", "o"] +[12.59417757987976, "o", "u"] +[12.62417757987976, "o", "n"] +[12.654177579879759, "o", "t"] +[12.684177579879758, "o", " "] +[12.714177579879758, "o", "m"] +[12.744177579879757, "o", "o"] +[12.774177579879757, "o", "n"] +[12.804177579879756, "o", "g"] +[12.834177579879755, "o", "o"] +[12.864177579879755, "o", "_"] +[12.894177579879754, "o", "f"] +[12.924177579879753, "o", "d"] +[12.954177579879753, "o", "w"] +[12.984177579879752, "o", " "] +[13.014177579879751, "o", "-"] +[13.04417757987975, "o", "-"] +[13.07417757987975, "o", "h"] +[13.10417757987975, "o", "e"] +[13.134177579879749, "o", "l"] +[13.164177579879748, "o", "p"] +[13.194177579879748, "o", "\r\n"] +[13.224177579879747, "o", "$"] +[13.254177579879746, "o", " "] +[13.284177579879746, "o", "s"] +[13.314177579879745, "o", "g"] +[13.344177579879744, "o", "r"] +[13.374177579879744, "o", " "] +[13.404177579879743, "o", "m"] +[13.434177579879742, "o", "o"] +[13.464177579879742, "o", "u"] +[13.494177579879741, "o", "n"] +[13.52417757987974, "o", "t"] +[13.55417757987974, "o", " "] +[13.58417757987974, "o", "m"] +[13.614177579879739, "o", "o"] +[13.644177579879738, "o", "n"] +[13.674177579879737, "o", "g"] +[13.704177579879737, "o", "o"] +[13.734177579879736, "o", "_"] +[13.764177579879735, "o", "f"] +[13.794177579879735, "o", "d"] +[13.824177579879734, "o", "w"] +[13.854177579879734, "o", " "] +[13.884177579879733, "o", "s"] +[13.914177579879732, "o", "t"] +[13.944177579879732, "o", "a"] +[13.974177579879731, "o", "g"] +[14.00417757987973, "o", "i"] +[14.03417757987973, "o", "n"] +[14.064177579879729, "o", "g"] +[14.094177579879728, "o", " "] +[14.124177579879728, "o", "-"] +[14.154177579879727, "o", "c"] +[14.184177579879726, "o", " "] +[14.214177579879726, "o", "o"] +[14.244177579879725, "o", "r"] +[14.274177579879725, "o", "i"] +[14.304177579879724, "o", "g"] +[14.334177579879723, "o", "i"] +[14.364177579879723, "o", "n"] +[14.394177579879722, "o", "r"] +[14.424177579879721, "o", "o"] +[14.45417757987972, "o", ":"] +[14.48417757987972, "o", "o"] +[14.51417757987972, "o", "r"] +[14.544177579879719, "o", "i"] +[14.574177579879718, "o", "g"] +[14.604177579879718, "o", "i"] +[14.634177579879717, "o", "n"] +[14.664177579879716, "o", "p"] +[14.694177579879716, "o", "a"] +[14.724177579879715, "o", "s"] +[14.754177579879714, "o", "s"] +[14.784177579879714, "o", "@"] +[14.814177579879713, "o", "m"] +[14.844177579879712, "o", "o"] +[14.874177579879712, "o", "n"] +[14.904177579879711, "o", "g"] +[14.93417757987971, "o", "o"] +[14.96417757987971, "o", ":"] +[14.99417757987971, "o", "2"] +[15.024177579879709, "o", "7"] +[15.054177579879708, "o", "0"] +[15.084177579879707, "o", "1"] +[15.114177579879707, "o", "7"] +[15.144177579879706, "o", " "] +[15.174177579879705, "o", "-"] +[15.204177579879705, "o", "o"] +[15.234177579879704, "o", " "] +[15.264177579879703, "o", "'"] +[15.294177579879703, "o", "{"] +[15.324177579879702, "o", "\""] +[15.354177579879702, "o", "t"] +[15.384177579879701, "o", "a"] +[15.4141775798797, "o", "b"] +[15.4441775798797, "o", "l"] +[15.474177579879699, "o", "e"] +[15.504177579879698, "o", "s"] +[15.534177579879698, "o", "\""] +[15.564177579879697, "o", ":"] +[15.594177579879696, "o", " "] +[15.624177579879696, "o", "{"] +[15.654177579879695, "o", "\""] +[15.684177579879695, "o", "s"] +[15.714177579879694, "o", "t"] +[15.744177579879693, "o", "u"] +[15.774177579879693, "o", "f"] +[15.804177579879692, "o", "f"] +[15.834177579879691, "o", "\""] +[15.86417757987969, "o", ":"] +[15.89417757987969, "o", " "] +[15.92417757987969, "o", "{"] +[15.954177579879689, "o", "\r\n "] +[15.984177579879688, "o", "\""] +[16.01417757987969, "o", "o"] +[16.04417757987969, "o", "p"] +[16.07417757987969, "o", "t"] +[16.104177579879693, "o", "i"] +[16.134177579879694, "o", "o"] +[16.164177579879695, "o", "n"] +[16.194177579879696, "o", "s"] +[16.224177579879697, "o", "\""] +[16.2541775798797, "o", ":"] +[16.2841775798797, "o", "\r\n "] +[16.3141775798797, "o", "{"] +[16.3441775798797, "o", "\r\n "] +[16.374177579879703, "o", "\""] +[16.404177579879704, "o", "d"] +[16.434177579879705, "o", "a"] +[16.464177579879706, "o", "t"] +[16.494177579879707, "o", "a"] +[16.52417757987971, "o", "b"] +[16.55417757987971, "o", "a"] +[16.58417757987971, "o", "s"] +[16.614177579879712, "o", "e"] +[16.644177579879713, "o", "\""] +[16.674177579879714, "o", ":"] +[16.704177579879715, "o", " "] +[16.734177579879717, "o", "\""] +[16.764177579879718, "o", "o"] +[16.79417757987972, "o", "r"] +[16.82417757987972, "o", "i"] +[16.85417757987972, "o", "g"] +[16.884177579879722, "o", "i"] +[16.914177579879723, "o", "n"] +[16.944177579879725, "o", "d"] +[16.974177579879726, "o", "b"] +[17.004177579879727, "o", "\""] +[17.034177579879728, "o", ","] +[17.06417757987973, "o", "\r\n "] +[17.09417757987973, "o", "\""] +[17.12417757987973, "o", "c"] +[17.154177579879732, "o", "o"] +[17.184177579879734, "o", "l"] +[17.214177579879735, "o", "l"] +[17.244177579879736, "o", "e"] +[17.274177579879737, "o", "c"] +[17.304177579879738, "o", "t"] +[17.33417757987974, "o", "i"] +[17.36417757987974, "o", "o"] +[17.39417757987974, "o", "n"] +[17.424177579879743, "o", "\""] +[17.454177579879744, "o", ":"] +[17.484177579879745, "o", " "] +[17.514177579879746, "o", "\""] +[17.544177579879747, "o", "s"] +[17.57417757987975, "o", "t"] +[17.60417757987975, "o", "u"] +[17.63417757987975, "o", "f"] +[17.664177579879752, "o", "f"] +[17.694177579879753, "o", "\""] +[17.724177579879754, "o", "\r\n "] +[17.754177579879755, "o", "}"] +[17.784177579879756, "o", ","] +[17.814177579879757, "o", "\r\n "] +[17.84417757987976, "o", "\""] +[17.87417757987976, "o", "s"] +[17.90417757987976, "o", "c"] +[17.934177579879762, "o", "h"] +[17.964177579879763, "o", "e"] +[17.994177579879764, "o", "m"] +[18.024177579879765, "o", "a"] +[18.054177579879767, "o", "\""] +[18.084177579879768, "o", ":"] +[18.11417757987977, "o", " "] +[18.14417757987977, "o", "{"] +[18.17417757987977, "o", "\r\n "] +[18.204177579879772, "o", "\""] +[18.234177579879773, "o", "n"] +[18.264177579879775, "o", "a"] +[18.294177579879776, "o", "m"] +[18.324177579879777, "o", "e"] +[18.354177579879778, "o", "\""] +[18.38417757987978, "o", ":"] +[18.41417757987978, "o", " "] +[18.44417757987978, "o", "\""] +[18.474177579879782, "o", "t"] +[18.504177579879784, "o", "e"] +[18.534177579879785, "o", "x"] +[18.564177579879786, "o", "t"] +[18.594177579879787, "o", "\""] +[18.624177579879788, "o", ","] +[18.65417757987979, "o", "\r\n "] +[18.68417757987979, "o", "\""] +[18.71417757987979, "o", "d"] +[18.744177579879793, "o", "u"] +[18.774177579879794, "o", "r"] +[18.804177579879795, "o", "a"] +[18.834177579879796, "o", "t"] +[18.864177579879797, "o", "i"] +[18.8941775798798, "o", "o"] +[18.9241775798798, "o", "n"] +[18.9541775798798, "o", "\""] +[18.984177579879802, "o", ":"] +[19.014177579879803, "o", " "] +[19.044177579879804, "o", "\""] +[19.074177579879805, "o", "n"] +[19.104177579879806, "o", "u"] +[19.134177579879807, "o", "m"] +[19.16417757987981, "o", "e"] +[19.19417757987981, "o", "r"] +[19.22417757987981, "o", "i"] +[19.254177579879812, "o", "c"] +[19.284177579879813, "o", "\""] +[19.314177579879814, "o", ","] +[19.344177579879815, "o", "\r\n "] +[19.374177579879817, "o", "\""] +[19.404177579879818, "o", "h"] +[19.43417757987982, "o", "a"] +[19.46417757987982, "o", "p"] +[19.49417757987982, "o", "p"] +[19.524177579879822, "o", "y"] +[19.554177579879823, "o", "\""] +[19.584177579879825, "o", ":"] +[19.614177579879826, "o", " "] +[19.644177579879827, "o", "\""] +[19.674177579879828, "o", "b"] +[19.70417757987983, "o", "o"] +[19.73417757987983, "o", "o"] +[19.76417757987983, "o", "l"] +[19.794177579879833, "o", "e"] +[19.824177579879834, "o", "a"] +[19.854177579879835, "o", "n"] +[19.884177579879836, "o", "\""] +[19.914177579879837, "o", "}"] +[19.944177579879838, "o", "}"] +[19.97417757987984, "o", "}"] +[20.00417757987984, "o", "}"] +[20.03417757987984, "o", "'"] +[20.064177579879843, "o", "\r\n"] +[20.094177579879844, "o", "\u001b[0m"] +[20.124177579879845, "o", "\r\n"] +[20.319078807830895, "o", "Usage: sgr mount mongo_fdw [OPTIONS] SCHEMA\r\n\r\n Mount a Mongo database.\r\n\r\n Mounts one or more collections on a remote Mongo database as a set of\r\n foreign tables locally.\r\n\r\nOptions:\r\n -c, --connection TEXT Connection string in the form\r\n username:password@server:port\r\n\r\n -o, --handler-options JSON JSON-encoded dictionary or @filename.json with\r\n handler options:\r\n \r\n tables: A di"] +[20.31909072875985, "o", "ctionary of form { \"table_name\":\r\n { \"schema\": {\"col1\": \"type1\"...},\r\n \"options\": {\"database\": , \"collection\":\r\n } } }\r\n\r\n --help Show this message and exit.\r\n"] +[20.63410676002511, "o", "Mounting table stuff\r\n"] +[20.66410676002511, "o", "\u001b[1m"] +[20.69410676002511, "o", "\u001b[36m"] +[20.724106760025112, "o", "\u001b[91m"] +[20.754106760025113, "o", "$"] +[20.784106760025114, "o", " "] +[20.814106760025116, "o", "\u001b[0m"] +[29.23417757987977, "o", "\u001b[H"] +[29.26417757987977, "o", "\u001b[J"] +[29.294177579879772, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the contents of the new table"] +[29.324177579879773, "o", "\r\n"] +[29.354177579879774, "o", "$"] +[29.384177579879776, "o", " "] +[29.414177579879777, "o", "s"] +[29.444177579879778, "o", "g"] +[29.47417757987978, "o", "r"] +[29.50417757987978, "o", " "] +[29.53417757987978, "o", "s"] +[29.564177579879782, "o", "q"] +[29.594177579879783, "o", "l"] +[29.624177579879785, "o", " "] +[29.654177579879786, "o", "-"] +[29.684177579879787, "o", "s"] +[29.714177579879788, "o", " "] +[29.74417757987979, "o", "s"] +[29.77417757987979, "o", "t"] +[29.80417757987979, "o", "a"] +[29.834177579879793, "o", "g"] +[29.864177579879794, "o", "i"] +[29.894177579879795, "o", "n"] +[29.924177579879796, "o", "g"] +[29.954177579879797, "o", " "] +[29.9841775798798, "o", "\""] +[30.0141775798798, "o", "S"] +[30.0441775798798, "o", "E"] +[30.0741775798798, "o", "L"] +[30.104177579879803, "o", "E"] +[30.134177579879804, "o", "C"] +[30.164177579879805, "o", "T"] +[30.194177579879806, "o", " "] +[30.224177579879807, "o", "*"] +[30.25417757987981, "o", " "] +[30.28417757987981, "o", "F"] +[30.31417757987981, "o", "R"] +[30.344177579879812, "o", "O"] +[30.374177579879813, "o", "M"] +[30.404177579879814, "o", " "] +[30.434177579879815, "o", "s"] +[30.464177579879816, "o", "t"] +[30.494177579879818, "o", "u"] +[30.52417757987982, "o", "f"] +[30.55417757987982, "o", "f"] +[30.58417757987982, "o", "\""] +[30.614177579879822, "o", "\r\n"] +[30.644177579879823, "o", "\u001b[0m"] +[30.674177579879824, "o", "\r\n"] +[30.927240304946963, "o", "Alex 12 False 607703ba6e51422a2ba3fc9b\r\nJames 2 True 607703ba6e51422a2ba3fc9c\r\nAlice 98765 True 607703ba6e51422a2ba3fc9d\r\n"] +[30.957240304946964, "o", "\u001b[1m"] +[30.987240304946965, "o", "\u001b[36m"] +[31.017240304946966, "o", "\u001b[91m"] +[31.047240304946968, "o", "$"] +[31.07724030494697, "o", " "] +[31.10724030494697, "o", "\u001b[0m"] +[36.13724030494697, "o", "\u001b[H"] +[36.16724030494697, "o", "\u001b[J"] +[36.19724030494697, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Import the data into a new Splitgraph repository"] +[36.227240304946974, "o", "\r\n"] +[36.257240304946976, "o", "$"] +[36.28724030494698, "o", " "] +[36.31724030494698, "o", "s"] +[36.34724030494698, "o", "g"] +[36.37724030494698, "o", "r"] +[36.40724030494698, "o", " "] +[36.43724030494698, "o", "i"] +[36.46724030494698, "o", "m"] +[36.497240304946985, "o", "p"] +[36.527240304946986, "o", "o"] +[36.55724030494699, "o", "r"] +[36.58724030494699, "o", "t"] +[36.61724030494699, "o", " "] +[36.64724030494699, "o", "s"] +[36.67724030494699, "o", "t"] +[36.70724030494699, "o", "a"] +[36.737240304946994, "o", "g"] +[36.767240304946995, "o", "i"] +[36.797240304946996, "o", "n"] +[36.827240304947, "o", "g"] +[36.857240304947, "o", " "] +[36.887240304947, "o", "\""] +[36.917240304947, "o", "S"] +[36.947240304947, "o", "E"] +[36.977240304947, "o", "L"] +[37.007240304947004, "o", "E"] +[37.037240304947005, "o", "C"] +[37.067240304947006, "o", "T"] +[37.09724030494701, "o", " "] +[37.12724030494701, "o", "n"] +[37.15724030494701, "o", "a"] +[37.18724030494701, "o", "m"] +[37.21724030494701, "o", "e"] +[37.24724030494701, "o", ","] +[37.277240304947014, "o", " "] +[37.307240304947015, "o", "d"] +[37.33724030494702, "o", "u"] +[37.36724030494702, "o", "r"] +[37.39724030494702, "o", "a"] +[37.42724030494702, "o", "t"] +[37.45724030494702, "o", "i"] +[37.48724030494702, "o", "o"] +[37.51724030494702, "o", "n"] +[37.547240304947024, "o", ","] +[37.577240304947026, "o", " "] +[37.60724030494703, "o", "h"] +[37.63724030494703, "o", "a"] +[37.66724030494703, "o", "p"] +[37.69724030494703, "o", "p"] +[37.72724030494703, "o", "y"] +[37.75724030494703, "o", " "] +[37.787240304947034, "o", "F"] +[37.817240304947035, "o", "R"] +[37.847240304947036, "o", "O"] +[37.87724030494704, "o", "M"] +[37.90724030494704, "o", " "] +[37.93724030494704, "o", "s"] +[37.96724030494704, "o", "t"] +[37.99724030494704, "o", "u"] +[38.02724030494704, "o", "f"] +[38.057240304947044, "o", "f"] +[38.087240304947045, "o", "\""] +[38.117240304947046, "o", " "] +[38.14724030494705, "o", "m"] +[38.17724030494705, "o", "y"] +[38.20724030494705, "o", "/"] +[38.23724030494705, "o", "r"] +[38.26724030494705, "o", "e"] +[38.29724030494705, "o", "p"] +[38.327240304947054, "o", "o"] +[38.357240304947055, "o", "s"] +[38.387240304947056, "o", "i"] +[38.41724030494706, "o", "t"] +[38.44724030494706, "o", "o"] +[38.47724030494706, "o", "r"] +[38.50724030494706, "o", "y"] +[38.53724030494706, "o", " "] +[38.56724030494706, "o", "s"] +[38.597240304947064, "o", "t"] +[38.627240304947065, "o", "u"] +[38.65724030494707, "o", "f"] +[38.68724030494707, "o", "f"] +[38.71724030494707, "o", "\r\n"] +[38.74724030494707, "o", "\u001b[0m"] +[38.77724030494707, "o", "\r\n"] +[39.55541685104387, "o", "Processing table sg_tmp_da15f2f7c99c477385c920523acede6e\r\n"] +[39.868266372680836, "o", "my/repository:stuff has been imported from staging:SELECT name, duration, happy FROM stuff\r\n"] +[39.89826637268084, "o", "\u001b[1m"] +[39.92826637268084, "o", "\u001b[36m"] +[39.95826637268084, "o", "\u001b[91m"] +[39.98826637268084, "o", "$"] +[40.01826637268084, "o", " "] +[40.04826637268084, "o", "\u001b[0m"] +[45.078266372680844, "o", "\u001b[H"] +[45.108266372680845, "o", "\u001b[J"] +[45.138266372680846, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Alternatively, data can be imported from other databases with Splitfiles"] +[45.16826637268085, "o", "\r\n"] +[45.19826637268085, "o", "$"] +[45.22826637268085, "o", " "] +[45.25826637268085, "o", "c"] +[45.28826637268085, "o", "a"] +[45.31826637268085, "o", "t"] +[45.348266372680854, "o", " "] +[45.378266372680855, "o", "m"] +[45.408266372680856, "o", "o"] +[45.43826637268086, "o", "n"] +[45.46826637268086, "o", "g"] +[45.49826637268086, "o", "o"] +[45.52826637268086, "o", "_"] +[45.55826637268086, "o", "i"] +[45.58826637268086, "o", "m"] +[45.618266372680864, "o", "p"] +[45.648266372680865, "o", "o"] +[45.678266372680866, "o", "r"] +[45.70826637268087, "o", "t"] +[45.73826637268087, "o", "."] +[45.76826637268087, "o", "s"] +[45.79826637268087, "o", "p"] +[45.82826637268087, "o", "l"] +[45.85826637268087, "o", "i"] +[45.888266372680874, "o", "t"] +[45.918266372680876, "o", "f"] +[45.94826637268088, "o", "i"] +[45.97826637268088, "o", "l"] +[46.00826637268088, "o", "e"] +[46.03826637268088, "o", "\r\n"] +[46.06826637268088, "o", "$"] +[46.09826637268088, "o", " "] +[46.12826637268088, "o", "s"] +[46.158266372680885, "o", "g"] +[46.188266372680886, "o", "r"] +[46.21826637268089, "o", " "] +[46.24826637268089, "o", "b"] +[46.27826637268089, "o", "u"] +[46.30826637268089, "o", "i"] +[46.33826637268089, "o", "l"] +[46.36826637268089, "o", "d"] +[46.398266372680894, "o", " "] +[46.428266372680895, "o", "m"] +[46.458266372680896, "o", "o"] +[46.4882663726809, "o", "n"] +[46.5182663726809, "o", "g"] +[46.5482663726809, "o", "o"] +[46.5782663726809, "o", "_"] +[46.6082663726809, "o", "i"] +[46.6382663726809, "o", "m"] +[46.668266372680904, "o", "p"] +[46.698266372680905, "o", "o"] +[46.728266372680906, "o", "r"] +[46.75826637268091, "o", "t"] +[46.78826637268091, "o", "."] +[46.81826637268091, "o", "s"] +[46.84826637268091, "o", "p"] +[46.87826637268091, "o", "l"] +[46.90826637268091, "o", "i"] +[46.938266372680914, "o", "t"] +[46.968266372680915, "o", "f"] +[46.998266372680916, "o", "i"] +[47.02826637268092, "o", "l"] +[47.05826637268092, "o", "e"] +[47.08826637268092, "o", "\r\n"] +[47.11826637268092, "o", "\u001b[0m"] +[47.14826637268092, "o", "\r\n"] +[47.149799165725966, "o", "FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"tables\": {\"stuff\": {\r\n \"options\": {\r\n \"database\": \"origindb\",\r\n \"collection\": \"stuff\"\r\n },\r\n \"schema\": {\r\n \"name\": \"text\",\r\n \"duration\": \"numeric\",\r\n \"happy\": \"boolean\"}}}}'\r\n IMPORT {SELECT * FROM stuff} AS stuff\r\n"] +[47.370900449753066, "o", "Executing Splitfile mongo_import.splitfile with arguments {}\r\n"] +[47.41821032524135, "o", "\u001b[1m\r\nStep 1/1 : FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"t...\u001b[0m\r\n"] +[47.517727670669814, "o", "Mounting table stuff\r\n"] +[48.08935504913356, "o", "Processing table sg_tmp_842f2f01980e272a34c6acc720782bac\r\n"] +[48.43508726120021, "o", "Successfully built mongo_import:8566522eb96c.\r\n"] +[48.46508726120021, "o", "\u001b[1m"] +[48.49508726120021, "o", "\u001b[36m"] +[48.52508726120021, "o", "\u001b[91m"] +[48.555087261200214, "o", "$"] +[48.585087261200215, "o", " "] +[48.615087261200216, "o", "\u001b[0m"] +[55.078266372680844, "o", "\u001b[H"] +[55.108266372680845, "o", "\u001b[J"] +[55.138266372680846, "o", "\u001b[1m"] +[55.16826637268085, "o", "\u001b[36m"] +[55.19826637268085, "o", "\u001b[91m"] +[55.22826637268085, "o", "$"] +[55.25826637268085, "o", " "] +[55.28826637268085, "o", "s"] +[55.31826637268085, "o", "g"] +[55.348266372680854, "o", "r"] +[55.378266372680855, "o", " "] +[55.408266372680856, "o", "s"] +[55.43826637268086, "o", "h"] +[55.46826637268086, "o", "o"] +[55.49826637268086, "o", "w"] +[55.52826637268086, "o", " "] +[55.55826637268086, "o", "m"] +[55.58826637268086, "o", "o"] +[55.618266372680864, "o", "n"] +[55.648266372680865, "o", "g"] +[55.678266372680866, "o", "o"] +[55.70826637268087, "o", "_"] +[55.73826637268087, "o", "i"] +[55.76826637268087, "o", "m"] +[55.79826637268087, "o", "p"] +[55.82826637268087, "o", "o"] +[55.85826637268087, "o", "r"] +[55.888266372680874, "o", "t"] +[55.918266372680876, "o", ":"] +[55.94826637268088, "o", "l"] +[55.97826637268088, "o", "a"] +[56.00826637268088, "o", "t"] +[56.03826637268088, "o", "e"] +[56.06826637268088, "o", "s"] +[56.09826637268088, "o", "t"] +[56.12826637268088, "o", "\r\n"] +[56.158266372680885, "o", "$"] +[56.188266372680886, "o", " "] +[56.21826637268089, "o", "s"] +[56.24826637268089, "o", "g"] +[56.27826637268089, "o", "r"] +[56.30826637268089, "o", " "] +[56.33826637268089, "o", "s"] +[56.36826637268089, "o", "q"] +[56.398266372680894, "o", "l"] +[56.428266372680895, "o", " "] +[56.458266372680896, "o", "-"] +[56.4882663726809, "o", "s"] +[56.5182663726809, "o", " "] +[56.5482663726809, "o", "m"] +[56.5782663726809, "o", "o"] +[56.6082663726809, "o", "n"] +[56.6382663726809, "o", "g"] +[56.668266372680904, "o", "o"] +[56.698266372680905, "o", "_"] +[56.728266372680906, "o", "i"] +[56.75826637268091, "o", "m"] +[56.78826637268091, "o", "p"] +[56.81826637268091, "o", "o"] +[56.84826637268091, "o", "r"] +[56.87826637268091, "o", "t"] +[56.90826637268091, "o", " "] +[56.938266372680914, "o", "\""] +[56.968266372680915, "o", "S"] +[56.998266372680916, "o", "E"] +[57.02826637268092, "o", "L"] +[57.05826637268092, "o", "E"] +[57.08826637268092, "o", "C"] +[57.11826637268092, "o", "T"] +[57.14826637268092, "o", " "] +[57.17826637268092, "o", "*"] +[57.208266372680924, "o", " "] +[57.238266372680926, "o", "F"] +[57.26826637268093, "o", "R"] +[57.29826637268093, "o", "O"] +[57.32826637268093, "o", "M"] +[57.35826637268093, "o", " "] +[57.38826637268093, "o", "s"] +[57.41826637268093, "o", "t"] +[57.44826637268093, "o", "u"] +[57.478266372680935, "o", "f"] +[57.508266372680936, "o", "f"] +[57.53826637268094, "o", "\""] +[57.56826637268094, "o", "\r\n"] +[57.59826637268094, "o", "\u001b[0m"] +[57.62826637268094, "o", "\r\n"] +[57.88019660949735, "o", "Image mongo_import:8566522eb96ce5ba63cd8623b46be8e0c36a8eb51bc763bf4f55039b1da25ae8\r\n"] +[57.88020876884488, "o", "Importing 1 table from mongo_fdw_tmp_staging\r\nCreated at 2021-04-14T15:01:22.043923\r\n"] +[57.88216690063504, "o", "Size: 589.00 B\r\n"] +[57.88217739105252, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[57.88311556816129, "o", " stuff\r\n"] +[58.13644699096707, "o", "Alex 12 False 607703ba6e51422a2ba3fc9b\r\nAlice 98765 True 607703ba6e51422a2ba3fc9d\r\nJames 2 True 607703ba6e51422a2ba3fc9c\r\n"] +[58.166446990967074, "o", "\u001b[1m"] +[58.196446990967075, "o", "\u001b[36m"] +[58.22644699096708, "o", "\u001b[91m"] +[58.25644699096708, "o", "$"] +[58.28644699096708, "o", " "] +[58.31644699096708, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.13/metadata.json b/content/casts/versioned/archive/v0.2.13/metadata.json new file mode 100644 index 00000000..69e69cc7 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.13/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.13", + "updated_at": "2022-01-20T00:00:46.222Z", + "release": { + "id": 41423565, + "tag_name": "v0.2.13", + "target_commitish": "ef8332b29640230f4eebcbb350a37c67285064b1", + "created_at": "2021-04-14T14:43:01Z", + "published_at": "2021-04-22T13:36:49Z", + "assets": [ + { + "id": 35012171, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/35012171", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-04-14T15:10:32Z", + "updated_at": "2021-04-14T15:10:33Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.13/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/casts/versioned/archive/v0.2.13/pg-replication.cast b/content/casts/versioned/archive/v0.2.13/pg-replication.cast new file mode 100644 index 00000000..c5a8fef2 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.13/pg-replication.cast @@ -0,0 +1,1404 @@ +{"version": 2, "width": 100, "height": 21, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1618412534, "metadata": {"tss": [{"h": "The configuration file for sgr contains credentials for the", "ts": 0.06}, {"h": "The origin database has been set up with a couple of tables.", "ts": 10.059999999999999}, {"h": "Create a publication on the origin database", "ts": 19.46265869140617}, {"h": "Create a schema with the same name and same tables", "ts": 28.242658691406312}, {"h": "Set up replication from the origin database.", "ts": 38.24265869140631}, {"h": "Check the data on the engine", "ts": 49.18265869140654}, {"h": "Commit the data as an initial image", "ts": 57.49469074249307}, {"h": "Make a change on the origin database", "ts": 67.18986123085077}, {"h": "The change propagates to the subscriber and gets", "ts": 83.25986123085119}, {"h": "Committing creates a new image, snapshotting the state.", "ts": 89.96683410644633}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The configuration file for sgr contains credentials for the"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # origin database: this is just so that we can use sgr to query it\r\n"] +[0.18, "o", "$ # (replication can be set up through any PostgreSQL client)\r\n"] +[0.21, "o", "$"] +[0.24, "o", " "] +[0.27, "o", "c"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "t"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "."] +[0.42000000000000015, "o", "s"] +[0.4500000000000002, "o", "g"] +[0.4800000000000002, "o", "c"] +[0.5100000000000002, "o", "o"] +[0.5400000000000003, "o", "n"] +[0.5700000000000003, "o", "f"] +[0.6000000000000003, "o", "i"] +[0.6300000000000003, "o", "g"] +[0.6600000000000004, "o", "\r\n"] +[0.6900000000000004, "o", "\u001b[0m"] +[0.7200000000000004, "o", "\r\n"] +[0.7210838508605961, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n; Add the origin database here so that we can\r\n; use sgr to talk to it (can use any pg client)\r\n[remote:origin]\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=originuser\r\nSG_ENGINE_PWD=originpass\r\nSG_ENGINE_DB=originuser\r\n"] +[0.7510838508605961, "o", "\u001b[1m"] +[0.7810838508605962, "o", "\u001b[36m"] +[0.8110838508605962, "o", "\u001b[91m"] +[0.8410838508605962, "o", "$"] +[0.8710838508605963, "o", " "] +[0.9010838508605963, "o", "\u001b[0m"] +[10.03, "o", "\u001b[H"] +[10.059999999999999, "o", "\u001b[J"] +[10.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The origin database has been set up with a couple of tables."] +[10.119999999999997, "o", "\r\n"] +[10.149999999999997, "o", "$"] +[10.179999999999996, "o", " "] +[10.209999999999996, "o", "s"] +[10.239999999999995, "o", "g"] +[10.269999999999994, "o", "r"] +[10.299999999999994, "o", " "] +[10.329999999999993, "o", "s"] +[10.359999999999992, "o", "q"] +[10.389999999999992, "o", "l"] +[10.419999999999991, "o", " "] +[10.44999999999999, "o", "-"] +[10.47999999999999, "o", "r"] +[10.50999999999999, "o", " "] +[10.539999999999988, "o", "o"] +[10.569999999999988, "o", "r"] +[10.599999999999987, "o", "i"] +[10.629999999999987, "o", "g"] +[10.659999999999986, "o", "i"] +[10.689999999999985, "o", "n"] +[10.719999999999985, "o", " "] +[10.749999999999984, "o", "\""] +[10.779999999999983, "o", "S"] +[10.809999999999983, "o", "E"] +[10.839999999999982, "o", "L"] +[10.869999999999981, "o", "E"] +[10.89999999999998, "o", "C"] +[10.92999999999998, "o", "T"] +[10.95999999999998, "o", " "] +[10.989999999999979, "o", "*"] +[11.019999999999978, "o", " "] +[11.049999999999978, "o", "F"] +[11.079999999999977, "o", "R"] +[11.109999999999976, "o", "O"] +[11.139999999999976, "o", "M"] +[11.169999999999975, "o", " "] +[11.199999999999974, "o", "p"] +[11.229999999999974, "o", "r"] +[11.259999999999973, "o", "o"] +[11.289999999999973, "o", "d"] +[11.319999999999972, "o", "u"] +[11.349999999999971, "o", "c"] +[11.37999999999997, "o", "t"] +[11.40999999999997, "o", "i"] +[11.43999999999997, "o", "o"] +[11.469999999999969, "o", "n"] +[11.499999999999968, "o", "_"] +[11.529999999999967, "o", "d"] +[11.559999999999967, "o", "a"] +[11.589999999999966, "o", "t"] +[11.619999999999965, "o", "a"] +[11.649999999999965, "o", "."] +[11.679999999999964, "o", "c"] +[11.709999999999964, "o", "u"] +[11.739999999999963, "o", "s"] +[11.769999999999962, "o", "t"] +[11.799999999999962, "o", "o"] +[11.829999999999961, "o", "m"] +[11.85999999999996, "o", "e"] +[11.88999999999996, "o", "r"] +[11.919999999999959, "o", "s"] +[11.949999999999958, "o", "\""] +[11.979999999999958, "o", "\r\n"] +[12.009999999999957, "o", "$"] +[12.039999999999957, "o", " "] +[12.069999999999956, "o", "s"] +[12.099999999999955, "o", "g"] +[12.129999999999955, "o", "r"] +[12.159999999999954, "o", " "] +[12.189999999999953, "o", "s"] +[12.219999999999953, "o", "q"] +[12.249999999999952, "o", "l"] +[12.279999999999951, "o", " "] +[12.30999999999995, "o", "-"] +[12.33999999999995, "o", "r"] +[12.36999999999995, "o", " "] +[12.399999999999949, "o", "o"] +[12.429999999999948, "o", "r"] +[12.459999999999948, "o", "i"] +[12.489999999999947, "o", "g"] +[12.519999999999946, "o", "i"] +[12.549999999999946, "o", "n"] +[12.579999999999945, "o", " "] +[12.609999999999944, "o", "\""] +[12.639999999999944, "o", "S"] +[12.669999999999943, "o", "E"] +[12.699999999999942, "o", "L"] +[12.729999999999942, "o", "E"] +[12.759999999999941, "o", "C"] +[12.78999999999994, "o", "T"] +[12.81999999999994, "o", " "] +[12.84999999999994, "o", "*"] +[12.879999999999939, "o", " "] +[12.909999999999938, "o", "F"] +[12.939999999999937, "o", "R"] +[12.969999999999937, "o", "O"] +[12.999999999999936, "o", "M"] +[13.029999999999935, "o", " "] +[13.059999999999935, "o", "p"] +[13.089999999999934, "o", "r"] +[13.119999999999933, "o", "o"] +[13.149999999999933, "o", "d"] +[13.179999999999932, "o", "u"] +[13.209999999999932, "o", "c"] +[13.239999999999931, "o", "t"] +[13.26999999999993, "o", "i"] +[13.29999999999993, "o", "o"] +[13.329999999999929, "o", "n"] +[13.359999999999928, "o", "_"] +[13.389999999999928, "o", "d"] +[13.419999999999927, "o", "a"] +[13.449999999999926, "o", "t"] +[13.479999999999926, "o", "a"] +[13.509999999999925, "o", "."] +[13.539999999999925, "o", "o"] +[13.569999999999924, "o", "r"] +[13.599999999999923, "o", "d"] +[13.629999999999923, "o", "e"] +[13.659999999999922, "o", "r"] +[13.689999999999921, "o", "s"] +[13.71999999999992, "o", "\""] +[13.74999999999992, "o", "\r\n"] +[13.77999999999992, "o", "\u001b[0m"] +[13.809999999999919, "o", "\r\n"] +[14.019646224975505, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[14.222658691406169, "o", "1 1 15 Toilet Roll 2020-03-15 12:00:00\r\n2 1 20 Hand Sanitizer 2020-03-16 02:00:00\r\n3 2 5 Pasta 2020-03-21 17:32:11\r\n4 3 50 Surgical Mask 2020-04-01 12:00:01\r\n5 1 50 Surgical Mask 2020-04-02 11:29:42\r\n"] +[14.252658691406168, "o", "\u001b[1m"] +[14.282658691406168, "o", "\u001b[36m"] +[14.312658691406167, "o", "\u001b[91m"] +[14.342658691406166, "o", "$"] +[14.372658691406166, "o", " "] +[14.402658691406165, "o", "\u001b[0m"] +[19.432658691406168, "o", "\u001b[H"] +[19.46265869140617, "o", "\u001b[J"] +[19.49265869140617, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a publication on the origin database"] +[19.52265869140617, "o", "\r\n"] +[19.552658691406172, "o", "$"] +[19.582658691406174, "o", " "] +[19.612658691406175, "o", "s"] +[19.642658691406176, "o", "g"] +[19.672658691406177, "o", "r"] +[19.702658691406178, "o", " "] +[19.73265869140618, "o", "s"] +[19.76265869140618, "o", "q"] +[19.79265869140618, "o", "l"] +[19.822658691406183, "o", " "] +[19.852658691406184, "o", "-"] +[19.882658691406185, "o", "r"] +[19.912658691406186, "o", " "] +[19.942658691406187, "o", "o"] +[19.97265869140619, "o", "r"] +[20.00265869140619, "o", "i"] +[20.03265869140619, "o", "g"] +[20.06265869140619, "o", "i"] +[20.092658691406193, "o", "n"] +[20.122658691406194, "o", " "] +[20.152658691406195, "o", "\""] +[20.182658691406196, "o", "C"] +[20.212658691406197, "o", "R"] +[20.2426586914062, "o", "E"] +[20.2726586914062, "o", "A"] +[20.3026586914062, "o", "T"] +[20.332658691406202, "o", "E"] +[20.362658691406203, "o", " "] +[20.392658691406204, "o", "P"] +[20.422658691406205, "o", "U"] +[20.452658691406207, "o", "B"] +[20.482658691406208, "o", "L"] +[20.51265869140621, "o", "I"] +[20.54265869140621, "o", "C"] +[20.57265869140621, "o", "A"] +[20.602658691406212, "o", "T"] +[20.632658691406213, "o", "I"] +[20.662658691406214, "o", "O"] +[20.692658691406216, "o", "N"] +[20.722658691406217, "o", " "] +[20.752658691406218, "o", "p"] +[20.78265869140622, "o", "u"] +[20.81265869140622, "o", "b"] +[20.84265869140622, "o", "_"] +[20.872658691406222, "o", "o"] +[20.902658691406224, "o", "r"] +[20.932658691406225, "o", "d"] +[20.962658691406226, "o", "e"] +[20.992658691406227, "o", "r"] +[21.022658691406228, "o", "s"] +[21.05265869140623, "o", " "] +[21.08265869140623, "o", "\\"] +[21.11265869140623, "o", "\r\n "] +[21.142658691406233, "o", "F"] +[21.172658691406234, "o", "O"] +[21.202658691406235, "o", "R"] +[21.232658691406236, "o", " "] +[21.262658691406237, "o", "T"] +[21.29265869140624, "o", "A"] +[21.32265869140624, "o", "B"] +[21.35265869140624, "o", "L"] +[21.38265869140624, "o", "E"] +[21.412658691406243, "o", " "] +[21.442658691406244, "o", "p"] +[21.472658691406245, "o", "r"] +[21.502658691406246, "o", "o"] +[21.532658691406247, "o", "d"] +[21.56265869140625, "o", "u"] +[21.59265869140625, "o", "c"] +[21.62265869140625, "o", "t"] +[21.652658691406252, "o", "i"] +[21.682658691406253, "o", "o"] +[21.712658691406254, "o", "n"] +[21.742658691406255, "o", "_"] +[21.772658691406257, "o", "d"] +[21.802658691406258, "o", "a"] +[21.83265869140626, "o", "t"] +[21.86265869140626, "o", "a"] +[21.89265869140626, "o", "."] +[21.922658691406262, "o", "c"] +[21.952658691406263, "o", "u"] +[21.982658691406264, "o", "s"] +[22.012658691406266, "o", "t"] +[22.042658691406267, "o", "o"] +[22.072658691406268, "o", "m"] +[22.10265869140627, "o", "e"] +[22.13265869140627, "o", "r"] +[22.16265869140627, "o", "s"] +[22.192658691406272, "o", ","] +[22.222658691406274, "o", " "] +[22.252658691406275, "o", "p"] +[22.282658691406276, "o", "r"] +[22.312658691406277, "o", "o"] +[22.342658691406278, "o", "d"] +[22.37265869140628, "o", "u"] +[22.40265869140628, "o", "c"] +[22.43265869140628, "o", "t"] +[22.462658691406283, "o", "i"] +[22.492658691406284, "o", "o"] +[22.522658691406285, "o", "n"] +[22.552658691406286, "o", "_"] +[22.582658691406287, "o", "d"] +[22.61265869140629, "o", "a"] +[22.64265869140629, "o", "t"] +[22.67265869140629, "o", "a"] +[22.702658691406292, "o", "."] +[22.732658691406293, "o", "o"] +[22.762658691406294, "o", "r"] +[22.792658691406295, "o", "d"] +[22.822658691406296, "o", "e"] +[22.852658691406297, "o", "r"] +[22.8826586914063, "o", "s"] +[22.9126586914063, "o", "\""] +[22.9426586914063, "o", "\r\n"] +[22.972658691406302, "o", "\u001b[0m"] +[23.002658691406303, "o", "\r\n"] +[23.032658691406304, "o", "\u001b[1m"] +[23.062658691406305, "o", "\u001b[36m"] +[23.092658691406307, "o", "\u001b[91m"] +[23.122658691406308, "o", "$"] +[23.15265869140631, "o", " "] +[23.18265869140631, "o", "\u001b[0m"] +[28.21265869140631, "o", "\u001b[H"] +[28.242658691406312, "o", "\u001b[J"] +[28.272658691406313, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a schema with the same name and same tables"] +[28.302658691406315, "o", "\r\n"] +[28.332658691406316, "o", "$ # on the engine and initialize the repository.\r\n"] +[28.362658691406317, "o", "$"] +[28.392658691406318, "o", " "] +[28.42265869140632, "o", "s"] +[28.45265869140632, "o", "g"] +[28.48265869140632, "o", "r"] +[28.512658691406322, "o", " "] +[28.542658691406324, "o", "i"] +[28.572658691406325, "o", "n"] +[28.602658691406326, "o", "i"] +[28.632658691406327, "o", "t"] +[28.662658691406328, "o", " "] +[28.69265869140633, "o", "p"] +[28.72265869140633, "o", "r"] +[28.75265869140633, "o", "o"] +[28.782658691406333, "o", "d"] +[28.812658691406334, "o", "u"] +[28.842658691406335, "o", "c"] +[28.872658691406336, "o", "t"] +[28.902658691406337, "o", "i"] +[28.93265869140634, "o", "o"] +[28.96265869140634, "o", "n"] +[28.99265869140634, "o", "_"] +[29.022658691406342, "o", "d"] +[29.052658691406343, "o", "a"] +[29.082658691406344, "o", "t"] +[29.112658691406345, "o", "a"] +[29.142658691406346, "o", "\r\n"] +[29.172658691406347, "o", "$"] +[29.20265869140635, "o", " "] +[29.23265869140635, "o", "c"] +[29.26265869140635, "o", "a"] +[29.292658691406352, "o", "t"] +[29.322658691406353, "o", " "] +[29.352658691406354, "o", "e"] +[29.382658691406355, "o", "n"] +[29.412658691406357, "o", "g"] +[29.442658691406358, "o", "i"] +[29.47265869140636, "o", "n"] +[29.50265869140636, "o", "e"] +[29.53265869140636, "o", "/"] +[29.562658691406362, "o", "s"] +[29.592658691406363, "o", "c"] +[29.622658691406365, "o", "h"] +[29.652658691406366, "o", "e"] +[29.682658691406367, "o", "m"] +[29.712658691406368, "o", "a"] +[29.74265869140637, "o", "."] +[29.77265869140637, "o", "s"] +[29.80265869140637, "o", "q"] +[29.832658691406372, "o", "l"] +[29.862658691406374, "o", "\r\n"] +[29.892658691406375, "o", "$"] +[29.922658691406376, "o", " "] +[29.952658691406377, "o", "s"] +[29.982658691406378, "o", "g"] +[30.01265869140638, "o", "r"] +[30.04265869140638, "o", " "] +[30.07265869140638, "o", "s"] +[30.102658691406383, "o", "q"] +[30.132658691406384, "o", "l"] +[30.162658691406385, "o", " "] +[30.192658691406386, "o", "-"] +[30.222658691406387, "o", "s"] +[30.25265869140639, "o", " "] +[30.28265869140639, "o", "p"] +[30.31265869140639, "o", "r"] +[30.342658691406392, "o", "o"] +[30.372658691406393, "o", "d"] +[30.402658691406394, "o", "u"] +[30.432658691406395, "o", "c"] +[30.462658691406396, "o", "t"] +[30.492658691406398, "o", "i"] +[30.5226586914064, "o", "o"] +[30.5526586914064, "o", "n"] +[30.5826586914064, "o", "_"] +[30.612658691406402, "o", "d"] +[30.642658691406403, "o", "a"] +[30.672658691406404, "o", "t"] +[30.702658691406405, "o", "a"] +[30.732658691406407, "o", " "] +[30.762658691406408, "o", "\""] +[30.79265869140641, "o", "$"] +[30.82265869140641, "o", "("] +[30.85265869140641, "o", "c"] +[30.882658691406412, "o", "a"] +[30.912658691406413, "o", "t"] +[30.942658691406415, "o", " "] +[30.972658691406416, "o", "e"] +[31.002658691406417, "o", "n"] +[31.032658691406418, "o", "g"] +[31.06265869140642, "o", "i"] +[31.09265869140642, "o", "n"] +[31.12265869140642, "o", "e"] +[31.152658691406423, "o", "/"] +[31.182658691406424, "o", "s"] +[31.212658691406425, "o", "c"] +[31.242658691406426, "o", "h"] +[31.272658691406427, "o", "e"] +[31.302658691406428, "o", "m"] +[31.33265869140643, "o", "a"] +[31.36265869140643, "o", "."] +[31.39265869140643, "o", "s"] +[31.422658691406433, "o", "q"] +[31.452658691406434, "o", "l"] +[31.482658691406435, "o", ")"] +[31.512658691406436, "o", "\""] +[31.542658691406437, "o", "\r\n"] +[31.57265869140644, "o", "\u001b[0m"] +[31.60265869140644, "o", "\r\n"] +[31.85449499130268, "o", "Initialized empty repository production_data\r\n"] +[31.856035890579413, "o", "CREATE TABLE production_data.customers (\r\n id INTEGER PRIMARY KEY,\r\n name VARCHAR,\r\n registration_time TIMESTAMP\r\n);\r\n\r\nCREATE TABLE production_data.orders (\r\n id INTEGER PRIMARY KEY,\r\n customer_id INTEGER,\r\n quantity INTEGER,\r\n item_name VARCHAR,\r\n placed_time TIMESTAMP\r\n);\r\n"] +[31.886035890579414, "o", "\u001b[1m"] +[31.916035890579415, "o", "\u001b[36m"] +[31.946035890579417, "o", "\u001b[91m"] +[31.976035890579418, "o", "$"] +[32.00603589057942, "o", " "] +[32.03603589057942, "o", "\u001b[0m"] +[38.21265869140631, "o", "\u001b[H"] +[38.24265869140631, "o", "\u001b[J"] +[38.27265869140631, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Set up replication from the origin database."] +[38.302658691406315, "o", "\r\n"] +[38.332658691406316, "o", "$ # This will copy existing data into the tables too.\r\n"] +[38.36265869140632, "o", "$"] +[38.39265869140632, "o", " "] +[38.42265869140632, "o", "s"] +[38.45265869140632, "o", "g"] +[38.48265869140632, "o", "r"] +[38.51265869140632, "o", " "] +[38.542658691406324, "o", "s"] +[38.572658691406325, "o", "q"] +[38.602658691406326, "o", "l"] +[38.63265869140633, "o", " "] +[38.66265869140633, "o", "-"] +[38.69265869140633, "o", "-"] +[38.72265869140633, "o", "n"] +[38.75265869140633, "o", "o"] +[38.78265869140633, "o", "-"] +[38.812658691406334, "o", "t"] +[38.842658691406335, "o", "r"] +[38.872658691406336, "o", "a"] +[38.90265869140634, "o", "n"] +[38.93265869140634, "o", "s"] +[38.96265869140634, "o", "a"] +[38.99265869140634, "o", "c"] +[39.02265869140634, "o", "t"] +[39.05265869140634, "o", "i"] +[39.082658691406344, "o", "o"] +[39.112658691406345, "o", "n"] +[39.142658691406346, "o", " "] +[39.17265869140635, "o", "\""] +[39.20265869140635, "o", "C"] +[39.23265869140635, "o", "R"] +[39.26265869140635, "o", "E"] +[39.29265869140635, "o", "A"] +[39.32265869140635, "o", "T"] +[39.352658691406354, "o", "E"] +[39.382658691406355, "o", " "] +[39.41265869140636, "o", "S"] +[39.44265869140636, "o", "U"] +[39.47265869140636, "o", "B"] +[39.50265869140636, "o", "S"] +[39.53265869140636, "o", "C"] +[39.56265869140636, "o", "R"] +[39.59265869140636, "o", "I"] +[39.622658691406365, "o", "P"] +[39.652658691406366, "o", "T"] +[39.68265869140637, "o", "I"] +[39.71265869140637, "o", "O"] +[39.74265869140637, "o", "N"] +[39.77265869140637, "o", " "] +[39.80265869140637, "o", "s"] +[39.83265869140637, "o", "u"] +[39.862658691406374, "o", "b"] +[39.892658691406375, "o", "_"] +[39.922658691406376, "o", "o"] +[39.95265869140638, "o", "r"] +[39.98265869140638, "o", "d"] +[40.01265869140638, "o", "e"] +[40.04265869140638, "o", "r"] +[40.07265869140638, "o", "s"] +[40.10265869140638, "o", " "] +[40.132658691406384, "o", "\\"] +[40.162658691406385, "o", "\r\n "] +[40.192658691406386, "o", "C"] +[40.22265869140639, "o", "O"] +[40.25265869140639, "o", "N"] +[40.28265869140639, "o", "N"] +[40.31265869140639, "o", "E"] +[40.34265869140639, "o", "C"] +[40.37265869140639, "o", "T"] +[40.402658691406394, "o", "I"] +[40.432658691406395, "o", "O"] +[40.462658691406396, "o", "N"] +[40.4926586914064, "o", " "] +[40.5226586914064, "o", "'"] +[40.5526586914064, "o", "p"] +[40.5826586914064, "o", "o"] +[40.6126586914064, "o", "s"] +[40.6426586914064, "o", "t"] +[40.672658691406404, "o", "g"] +[40.702658691406405, "o", "r"] +[40.73265869140641, "o", "e"] +[40.76265869140641, "o", "s"] +[40.79265869140641, "o", "q"] +[40.82265869140641, "o", "l"] +[40.85265869140641, "o", ":"] +[40.88265869140641, "o", "/"] +[40.91265869140641, "o", "/"] +[40.942658691406415, "o", "o"] +[40.972658691406416, "o", "r"] +[41.00265869140642, "o", "i"] +[41.03265869140642, "o", "g"] +[41.06265869140642, "o", "i"] +[41.09265869140642, "o", "n"] +[41.12265869140642, "o", "u"] +[41.15265869140642, "o", "s"] +[41.182658691406424, "o", "e"] +[41.212658691406425, "o", "r"] +[41.242658691406426, "o", ":"] +[41.27265869140643, "o", "o"] +[41.30265869140643, "o", "r"] +[41.33265869140643, "o", "i"] +[41.36265869140643, "o", "g"] +[41.39265869140643, "o", "i"] +[41.42265869140643, "o", "n"] +[41.452658691406434, "o", "p"] +[41.482658691406435, "o", "a"] +[41.512658691406436, "o", "s"] +[41.54265869140644, "o", "s"] +[41.57265869140644, "o", "@"] +[41.60265869140644, "o", "o"] +[41.63265869140644, "o", "r"] +[41.66265869140644, "o", "i"] +[41.69265869140644, "o", "g"] +[41.722658691406444, "o", "i"] +[41.752658691406445, "o", "n"] +[41.782658691406446, "o", ":"] +[41.81265869140645, "o", "5"] +[41.84265869140645, "o", "4"] +[41.87265869140645, "o", "3"] +[41.90265869140645, "o", "2"] +[41.93265869140645, "o", "/"] +[41.96265869140645, "o", "o"] +[41.992658691406454, "o", "r"] +[42.022658691406455, "o", "i"] +[42.05265869140646, "o", "g"] +[42.08265869140646, "o", "i"] +[42.11265869140646, "o", "n"] +[42.14265869140646, "o", "u"] +[42.17265869140646, "o", "s"] +[42.20265869140646, "o", "e"] +[42.23265869140646, "o", "r"] +[42.262658691406465, "o", "'"] +[42.292658691406466, "o", " "] +[42.32265869140647, "o", "\\"] +[42.35265869140647, "o", "\r\n "] +[42.38265869140647, "o", "P"] +[42.41265869140647, "o", "U"] +[42.44265869140647, "o", "B"] +[42.47265869140647, "o", "L"] +[42.502658691406474, "o", "I"] +[42.532658691406475, "o", "C"] +[42.562658691406476, "o", "A"] +[42.59265869140648, "o", "T"] +[42.62265869140648, "o", "I"] +[42.65265869140648, "o", "O"] +[42.68265869140648, "o", "N"] +[42.71265869140648, "o", " "] +[42.74265869140648, "o", "p"] +[42.772658691406484, "o", "u"] +[42.802658691406485, "o", "b"] +[42.832658691406486, "o", "_"] +[42.86265869140649, "o", "o"] +[42.89265869140649, "o", "r"] +[42.92265869140649, "o", "d"] +[42.95265869140649, "o", "e"] +[42.98265869140649, "o", "r"] +[43.01265869140649, "o", "s"] +[43.042658691406494, "o", " "] +[43.072658691406495, "o", "\\"] +[43.102658691406496, "o", "\r\n "] +[43.1326586914065, "o", "W"] +[43.1626586914065, "o", "I"] +[43.1926586914065, "o", "T"] +[43.2226586914065, "o", "H"] +[43.2526586914065, "o", " "] +[43.2826586914065, "o", "("] +[43.312658691406504, "o", "c"] +[43.342658691406506, "o", "o"] +[43.37265869140651, "o", "p"] +[43.40265869140651, "o", "y"] +[43.43265869140651, "o", "_"] +[43.46265869140651, "o", "d"] +[43.49265869140651, "o", "a"] +[43.52265869140651, "o", "t"] +[43.55265869140651, "o", "a"] +[43.582658691406515, "o", " "] +[43.612658691406516, "o", "="] +[43.64265869140652, "o", " "] +[43.67265869140652, "o", "t"] +[43.70265869140652, "o", "r"] +[43.73265869140652, "o", "u"] +[43.76265869140652, "o", "e"] +[43.79265869140652, "o", ")"] +[43.822658691406524, "o", ";"] +[43.852658691406525, "o", "\""] +[43.882658691406526, "o", "\r\n"] +[43.91265869140653, "o", "\u001b[0m"] +[43.94265869140653, "o", "\r\n"] +[43.97265869140653, "o", "\u001b[1m"] +[44.00265869140653, "o", "\u001b[36m"] +[44.03265869140653, "o", "\u001b[91m"] +[44.06265869140653, "o", "$"] +[44.092658691406534, "o", " "] +[44.122658691406535, "o", "\u001b[0m"] +[49.152658691406536, "o", "\u001b[H"] +[49.18265869140654, "o", "\u001b[J"] +[49.21265869140654, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the data on the engine"] +[49.24265869140654, "o", "\r\n"] +[49.27265869140654, "o", "$"] +[49.30265869140654, "o", " "] +[49.33265869140654, "o", "s"] +[49.362658691406544, "o", "g"] +[49.392658691406545, "o", "r"] +[49.422658691406546, "o", " "] +[49.45265869140655, "o", "d"] +[49.48265869140655, "o", "i"] +[49.51265869140655, "o", "f"] +[49.54265869140655, "o", "f"] +[49.57265869140655, "o", " "] +[49.60265869140655, "o", "p"] +[49.632658691406554, "o", "r"] +[49.662658691406556, "o", "o"] +[49.69265869140656, "o", "d"] +[49.72265869140656, "o", "u"] +[49.75265869140656, "o", "c"] +[49.78265869140656, "o", "t"] +[49.81265869140656, "o", "i"] +[49.84265869140656, "o", "o"] +[49.87265869140656, "o", "n"] +[49.902658691406565, "o", "_"] +[49.932658691406566, "o", "d"] +[49.96265869140657, "o", "a"] +[49.99265869140657, "o", "t"] +[50.02265869140657, "o", "a"] +[50.05265869140657, "o", "\r\n"] +[50.08265869140657, "o", "$"] +[50.11265869140657, "o", " "] +[50.142658691406574, "o", "s"] +[50.172658691406575, "o", "g"] +[50.202658691406576, "o", "r"] +[50.23265869140658, "o", " "] +[50.26265869140658, "o", "s"] +[50.29265869140658, "o", "q"] +[50.32265869140658, "o", "l"] +[50.35265869140658, "o", " "] +[50.38265869140658, "o", "-"] +[50.412658691406584, "o", "s"] +[50.442658691406585, "o", " "] +[50.472658691406586, "o", "p"] +[50.50265869140659, "o", "r"] +[50.53265869140659, "o", "o"] +[50.56265869140659, "o", "d"] +[50.59265869140659, "o", "u"] +[50.62265869140659, "o", "c"] +[50.65265869140659, "o", "t"] +[50.682658691406594, "o", "i"] +[50.712658691406595, "o", "o"] +[50.7426586914066, "o", "n"] +[50.7726586914066, "o", "_"] +[50.8026586914066, "o", "d"] +[50.8326586914066, "o", "a"] +[50.8626586914066, "o", "t"] +[50.8926586914066, "o", "a"] +[50.9226586914066, "o", " "] +[50.952658691406604, "o", "\""] +[50.982658691406606, "o", "S"] +[51.01265869140661, "o", "E"] +[51.04265869140661, "o", "L"] +[51.07265869140661, "o", "E"] +[51.10265869140661, "o", "C"] +[51.13265869140661, "o", "T"] +[51.16265869140661, "o", " "] +[51.19265869140661, "o", "*"] +[51.222658691406615, "o", " "] +[51.252658691406616, "o", "F"] +[51.28265869140662, "o", "R"] +[51.31265869140662, "o", "O"] +[51.34265869140662, "o", "M"] +[51.37265869140662, "o", " "] +[51.40265869140662, "o", "c"] +[51.43265869140662, "o", "u"] +[51.462658691406624, "o", "s"] +[51.492658691406625, "o", "t"] +[51.522658691406626, "o", "o"] +[51.55265869140663, "o", "m"] +[51.58265869140663, "o", "e"] +[51.61265869140663, "o", "r"] +[51.64265869140663, "o", "s"] +[51.67265869140663, "o", "\""] +[51.70265869140663, "o", "\r\n"] +[51.732658691406634, "o", "\u001b[0m"] +[51.762658691406635, "o", "\r\n"] +[52.0056360721592, "o", "Between 000000000000 and the current working copy: \r\ncustomers: table added\r\n"] +[52.00565228462258, "o", "orders: table added\r\n"] +[52.25469074249306, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[52.28469074249306, "o", "\u001b[1m"] +[52.31469074249306, "o", "\u001b[36m"] +[52.344690742493064, "o", "\u001b[91m"] +[52.374690742493065, "o", "$"] +[52.40469074249307, "o", " "] +[52.43469074249307, "o", "\u001b[0m"] +[57.46469074249307, "o", "\u001b[H"] +[57.49469074249307, "o", "\u001b[J"] +[57.52469074249307, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit the data as an initial image"] +[57.55469074249307, "o", "\r\n"] +[57.58469074249307, "o", "$"] +[57.614690742493075, "o", " "] +[57.644690742493076, "o", "s"] +[57.67469074249308, "o", "g"] +[57.70469074249308, "o", "r"] +[57.73469074249308, "o", " "] +[57.76469074249308, "o", "c"] +[57.79469074249308, "o", "o"] +[57.82469074249308, "o", "m"] +[57.854690742493084, "o", "m"] +[57.884690742493085, "o", "i"] +[57.914690742493086, "o", "t"] +[57.94469074249309, "o", " "] +[57.97469074249309, "o", "p"] +[58.00469074249309, "o", "r"] +[58.03469074249309, "o", "o"] +[58.06469074249309, "o", "d"] +[58.09469074249309, "o", "u"] +[58.124690742493094, "o", "c"] +[58.154690742493095, "o", "t"] +[58.184690742493096, "o", "i"] +[58.2146907424931, "o", "o"] +[58.2446907424931, "o", "n"] +[58.2746907424931, "o", "_"] +[58.3046907424931, "o", "d"] +[58.3346907424931, "o", "a"] +[58.3646907424931, "o", "t"] +[58.394690742493104, "o", "a"] +[58.424690742493105, "o", "\r\n"] +[58.454690742493106, "o", "$"] +[58.48469074249311, "o", " "] +[58.51469074249311, "o", "s"] +[58.54469074249311, "o", "g"] +[58.57469074249311, "o", "r"] +[58.60469074249311, "o", " "] +[58.63469074249311, "o", "t"] +[58.664690742493114, "o", "a"] +[58.694690742493115, "o", "g"] +[58.72469074249312, "o", " "] +[58.75469074249312, "o", "p"] +[58.78469074249312, "o", "r"] +[58.81469074249312, "o", "o"] +[58.84469074249312, "o", "d"] +[58.87469074249312, "o", "u"] +[58.90469074249312, "o", "c"] +[58.934690742493125, "o", "t"] +[58.964690742493126, "o", "i"] +[58.99469074249313, "o", "o"] +[59.02469074249313, "o", "n"] +[59.05469074249313, "o", "_"] +[59.08469074249313, "o", "d"] +[59.11469074249313, "o", "a"] +[59.14469074249313, "o", "t"] +[59.174690742493134, "o", "a"] +[59.204690742493135, "o", " "] +[59.234690742493136, "o", "i"] +[59.26469074249314, "o", "n"] +[59.29469074249314, "o", "i"] +[59.32469074249314, "o", "t"] +[59.35469074249314, "o", "i"] +[59.38469074249314, "o", "a"] +[59.41469074249314, "o", "l"] +[59.444690742493144, "o", "_"] +[59.474690742493145, "o", "s"] +[59.504690742493146, "o", "n"] +[59.53469074249315, "o", "a"] +[59.56469074249315, "o", "p"] +[59.59469074249315, "o", "s"] +[59.62469074249315, "o", "h"] +[59.65469074249315, "o", "o"] +[59.68469074249315, "o", "t"] +[59.714690742493154, "o", "\r\n"] +[59.744690742493155, "o", "$"] +[59.774690742493156, "o", " "] +[59.80469074249316, "o", "s"] +[59.83469074249316, "o", "g"] +[59.86469074249316, "o", "r"] +[59.89469074249316, "o", " "] +[59.92469074249316, "o", "s"] +[59.95469074249316, "o", "h"] +[59.984690742493164, "o", "o"] +[60.014690742493165, "o", "w"] +[60.04469074249317, "o", " "] +[60.07469074249317, "o", "p"] +[60.10469074249317, "o", "r"] +[60.13469074249317, "o", "o"] +[60.16469074249317, "o", "d"] +[60.19469074249317, "o", "u"] +[60.22469074249317, "o", "c"] +[60.254690742493175, "o", "t"] +[60.284690742493176, "o", "i"] +[60.31469074249318, "o", "o"] +[60.34469074249318, "o", "n"] +[60.37469074249318, "o", "_"] +[60.40469074249318, "o", "d"] +[60.43469074249318, "o", "a"] +[60.46469074249318, "o", "t"] +[60.494690742493184, "o", "a"] +[60.524690742493185, "o", ":"] +[60.554690742493186, "o", "i"] +[60.58469074249319, "o", "n"] +[60.61469074249319, "o", "i"] +[60.64469074249319, "o", "t"] +[60.67469074249319, "o", "i"] +[60.70469074249319, "o", "a"] +[60.73469074249319, "o", "l"] +[60.764690742493194, "o", "_"] +[60.794690742493195, "o", "s"] +[60.824690742493196, "o", "n"] +[60.8546907424932, "o", "a"] +[60.8846907424932, "o", "p"] +[60.9146907424932, "o", "s"] +[60.9446907424932, "o", "h"] +[60.9746907424932, "o", "o"] +[61.0046907424932, "o", "t"] +[61.034690742493204, "o", "\r\n"] +[61.064690742493205, "o", "\u001b[0m"] +[61.094690742493206, "o", "\r\n"] +[61.32259553909355, "o", "Committing production_data...\r\n"] +[61.350881996155316, "o", "Processing table customers\r\n"] +[61.43552536010795, "o", "Processing table orders\r\n"] +[61.46863407135063, "o", "Committed production_data as 8a21e8251629.\r\n"] +[61.704143228531414, "o", "Tagged production_data:8a21e82516295136a4a240bd51a2e48592201371ab7fe4e916b120cb9e519c15 with initial_snapshot.\r\n"] +[61.94661826133781, "o", "Image production_data:8a21e82516295136a4a240bd51a2e48592201371ab7fe4e916b120cb9e519c15\r\n"] +[61.94663113594108, "o", "\r\nCreated at 2021-04-14T15:02:37.554631\r\n"] +[61.948798599243695, "o", "Size: 1.11 KiB\r\n"] +[61.94881266593986, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[61.94977087020927, "o", " customers\r\n"] +[61.94986123085075, "o", " orders\r\n"] +[61.97986123085075, "o", "\u001b[1m"] +[62.00986123085075, "o", "\u001b[36m"] +[62.039861230850754, "o", "\u001b[91m"] +[62.069861230850755, "o", "$"] +[62.099861230850756, "o", " "] +[62.12986123085076, "o", "\u001b[0m"] +[67.15986123085077, "o", "\u001b[H"] +[67.18986123085077, "o", "\u001b[J"] +[67.21986123085077, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make a change on the origin database"] +[67.24986123085077, "o", "\r\n"] +[67.27986123085077, "o", "$"] +[67.30986123085077, "o", " "] +[67.33986123085077, "o", "s"] +[67.36986123085077, "o", "g"] +[67.39986123085077, "o", "r"] +[67.42986123085078, "o", " "] +[67.45986123085078, "o", "s"] +[67.48986123085078, "o", "q"] +[67.51986123085078, "o", "l"] +[67.54986123085078, "o", " "] +[67.57986123085078, "o", "-"] +[67.60986123085078, "o", "r"] +[67.63986123085078, "o", " "] +[67.66986123085078, "o", "o"] +[67.69986123085079, "o", "r"] +[67.72986123085079, "o", "i"] +[67.75986123085079, "o", "g"] +[67.78986123085079, "o", "i"] +[67.81986123085079, "o", "n"] +[67.84986123085079, "o", " "] +[67.87986123085079, "o", "-"] +[67.9098612308508, "o", "s"] +[67.9398612308508, "o", " "] +[67.9698612308508, "o", "p"] +[67.9998612308508, "o", "r"] +[68.0298612308508, "o", "o"] +[68.0598612308508, "o", "d"] +[68.0898612308508, "o", "u"] +[68.1198612308508, "o", "c"] +[68.1498612308508, "o", "t"] +[68.1798612308508, "o", "i"] +[68.2098612308508, "o", "o"] +[68.2398612308508, "o", "n"] +[68.26986123085081, "o", "_"] +[68.29986123085081, "o", "d"] +[68.32986123085081, "o", "a"] +[68.35986123085081, "o", "t"] +[68.38986123085081, "o", "a"] +[68.41986123085081, "o", " "] +[68.44986123085081, "o", "\""] +[68.47986123085082, "o", "U"] +[68.50986123085082, "o", "P"] +[68.53986123085082, "o", "D"] +[68.56986123085082, "o", "A"] +[68.59986123085082, "o", "T"] +[68.62986123085082, "o", "E"] +[68.65986123085082, "o", " "] +[68.68986123085082, "o", "o"] +[68.71986123085082, "o", "r"] +[68.74986123085083, "o", "d"] +[68.77986123085083, "o", "e"] +[68.80986123085083, "o", "r"] +[68.83986123085083, "o", "s"] +[68.86986123085083, "o", " "] +[68.89986123085083, "o", "\\"] +[68.92986123085083, "o", "\r\n "] +[68.95986123085083, "o", "S"] +[68.98986123085083, "o", "E"] +[69.01986123085084, "o", "T"] +[69.04986123085084, "o", " "] +[69.07986123085084, "o", "q"] +[69.10986123085084, "o", "u"] +[69.13986123085084, "o", "a"] +[69.16986123085084, "o", "n"] +[69.19986123085084, "o", "t"] +[69.22986123085084, "o", "i"] +[69.25986123085085, "o", "t"] +[69.28986123085085, "o", "y"] +[69.31986123085085, "o", " "] +[69.34986123085085, "o", "="] +[69.37986123085085, "o", " "] +[69.40986123085085, "o", "q"] +[69.43986123085085, "o", "u"] +[69.46986123085085, "o", "a"] +[69.49986123085085, "o", "n"] +[69.52986123085086, "o", "t"] +[69.55986123085086, "o", "i"] +[69.58986123085086, "o", "t"] +[69.61986123085086, "o", "y"] +[69.64986123085086, "o", " "] +[69.67986123085086, "o", "+"] +[69.70986123085086, "o", " "] +[69.73986123085086, "o", "5"] +[69.76986123085086, "o", " "] +[69.79986123085087, "o", "W"] +[69.82986123085087, "o", "H"] +[69.85986123085087, "o", "E"] +[69.88986123085087, "o", "R"] +[69.91986123085087, "o", "E"] +[69.94986123085087, "o", " "] +[69.97986123085087, "o", "i"] +[70.00986123085087, "o", "d"] +[70.03986123085087, "o", " "] +[70.06986123085088, "o", "="] +[70.09986123085088, "o", " "] +[70.12986123085088, "o", "2"] +[70.15986123085088, "o", ";"] +[70.18986123085088, "o", " "] +[70.21986123085088, "o", "\\"] +[70.24986123085088, "o", "\r\n "] +[70.27986123085088, "o", "D"] +[70.30986123085088, "o", "E"] +[70.33986123085089, "o", "L"] +[70.36986123085089, "o", "E"] +[70.39986123085089, "o", "T"] +[70.42986123085089, "o", "E"] +[70.45986123085089, "o", " "] +[70.48986123085089, "o", "F"] +[70.51986123085089, "o", "R"] +[70.5498612308509, "o", "O"] +[70.5798612308509, "o", "M"] +[70.6098612308509, "o", " "] +[70.6398612308509, "o", "o"] +[70.6698612308509, "o", "r"] +[70.6998612308509, "o", "d"] +[70.7298612308509, "o", "e"] +[70.7598612308509, "o", "r"] +[70.7898612308509, "o", "s"] +[70.8198612308509, "o", " "] +[70.8498612308509, "o", "W"] +[70.8798612308509, "o", "H"] +[70.90986123085091, "o", "E"] +[70.93986123085091, "o", "R"] +[70.96986123085091, "o", "E"] +[70.99986123085091, "o", " "] +[71.02986123085091, "o", "i"] +[71.05986123085091, "o", "d"] +[71.08986123085091, "o", " "] +[71.11986123085092, "o", "="] +[71.14986123085092, "o", " "] +[71.17986123085092, "o", "5"] +[71.20986123085092, "o", ";"] +[71.23986123085092, "o", " "] +[71.26986123085092, "o", "\\"] +[71.29986123085092, "o", "\r\n "] +[71.32986123085092, "o", "I"] +[71.35986123085092, "o", "N"] +[71.38986123085093, "o", "S"] +[71.41986123085093, "o", "E"] +[71.44986123085093, "o", "R"] +[71.47986123085093, "o", "T"] +[71.50986123085093, "o", " "] +[71.53986123085093, "o", "I"] +[71.56986123085093, "o", "N"] +[71.59986123085093, "o", "T"] +[71.62986123085093, "o", "O"] +[71.65986123085094, "o", " "] +[71.68986123085094, "o", "c"] +[71.71986123085094, "o", "u"] +[71.74986123085094, "o", "s"] +[71.77986123085094, "o", "t"] +[71.80986123085094, "o", "o"] +[71.83986123085094, "o", "m"] +[71.86986123085094, "o", "e"] +[71.89986123085095, "o", "r"] +[71.92986123085095, "o", "s"] +[71.95986123085095, "o", " "] +[71.98986123085095, "o", "("] +[72.01986123085095, "o", "n"] +[72.04986123085095, "o", "a"] +[72.07986123085095, "o", "m"] +[72.10986123085095, "o", "e"] +[72.13986123085095, "o", ","] +[72.16986123085096, "o", " "] +[72.19986123085096, "o", "r"] +[72.22986123085096, "o", "e"] +[72.25986123085096, "o", "g"] +[72.28986123085096, "o", "i"] +[72.31986123085096, "o", "s"] +[72.34986123085096, "o", "t"] +[72.37986123085096, "o", "r"] +[72.40986123085096, "o", "a"] +[72.43986123085097, "o", "t"] +[72.46986123085097, "o", "i"] +[72.49986123085097, "o", "o"] +[72.52986123085097, "o", "n"] +[72.55986123085097, "o", "_"] +[72.58986123085097, "o", "t"] +[72.61986123085097, "o", "i"] +[72.64986123085097, "o", "m"] +[72.67986123085097, "o", "e"] +[72.70986123085098, "o", ")"] +[72.73986123085098, "o", " "] +[72.76986123085098, "o", "V"] +[72.79986123085098, "o", "A"] +[72.82986123085098, "o", "L"] +[72.85986123085098, "o", "U"] +[72.88986123085098, "o", "E"] +[72.91986123085098, "o", "S"] +[72.94986123085098, "o", " "] +[72.97986123085099, "o", "\\"] +[73.00986123085099, "o", "\r\n "] +[73.03986123085099, "o", "("] +[73.06986123085099, "o", "'"] +[73.09986123085099, "o", "J"] +[73.12986123085099, "o", "a"] +[73.15986123085099, "o", "c"] +[73.189861230851, "o", "k"] +[73.219861230851, "o", " "] +[73.249861230851, "o", "S"] +[73.279861230851, "o", "a"] +[73.309861230851, "o", "m"] +[73.339861230851, "o", "p"] +[73.369861230851, "o", "l"] +[73.399861230851, "o", "e"] +[73.429861230851, "o", "'"] +[73.459861230851, "o", ","] +[73.489861230851, "o", " "] +[73.519861230851, "o", "'"] +[73.54986123085101, "o", "2"] +[73.57986123085101, "o", "0"] +[73.60986123085101, "o", "2"] +[73.63986123085101, "o", "0"] +[73.66986123085101, "o", "-"] +[73.69986123085101, "o", "0"] +[73.72986123085101, "o", "4"] +[73.75986123085102, "o", "-"] +[73.78986123085102, "o", "2"] +[73.81986123085102, "o", "0"] +[73.84986123085102, "o", " "] +[73.87986123085102, "o", "1"] +[73.90986123085102, "o", "4"] +[73.93986123085102, "o", ":"] +[73.96986123085102, "o", "0"] +[73.99986123085102, "o", "3"] +[74.02986123085103, "o", ":"] +[74.05986123085103, "o", "4"] +[74.08986123085103, "o", "8"] +[74.11986123085103, "o", "'"] +[74.14986123085103, "o", ")"] +[74.17986123085103, "o", ";"] +[74.20986123085103, "o", " "] +[74.23986123085103, "o", "\\"] +[74.26986123085103, "o", "\r\n "] +[74.29986123085104, "o", "I"] +[74.32986123085104, "o", "N"] +[74.35986123085104, "o", "S"] +[74.38986123085104, "o", "E"] +[74.41986123085104, "o", "R"] +[74.44986123085104, "o", "T"] +[74.47986123085104, "o", " "] +[74.50986123085104, "o", "I"] +[74.53986123085105, "o", "N"] +[74.56986123085105, "o", "T"] +[74.59986123085105, "o", "O"] +[74.62986123085105, "o", " "] +[74.65986123085105, "o", "o"] +[74.68986123085105, "o", "r"] +[74.71986123085105, "o", "d"] +[74.74986123085105, "o", "e"] +[74.77986123085105, "o", "r"] +[74.80986123085106, "o", "s"] +[74.83986123085106, "o", " "] +[74.86986123085106, "o", "("] +[74.89986123085106, "o", "c"] +[74.92986123085106, "o", "u"] +[74.95986123085106, "o", "s"] +[74.98986123085106, "o", "t"] +[75.01986123085106, "o", "o"] +[75.04986123085106, "o", "m"] +[75.07986123085107, "o", "e"] +[75.10986123085107, "o", "r"] +[75.13986123085107, "o", "_"] +[75.16986123085107, "o", "i"] +[75.19986123085107, "o", "d"] +[75.22986123085107, "o", ","] +[75.25986123085107, "o", " "] +[75.28986123085107, "o", "q"] +[75.31986123085107, "o", "u"] +[75.34986123085108, "o", "a"] +[75.37986123085108, "o", "n"] +[75.40986123085108, "o", "t"] +[75.43986123085108, "o", "i"] +[75.46986123085108, "o", "t"] +[75.49986123085108, "o", "y"] +[75.52986123085108, "o", ","] +[75.55986123085108, "o", " "] +[75.58986123085108, "o", "i"] +[75.61986123085109, "o", "t"] +[75.64986123085109, "o", "e"] +[75.67986123085109, "o", "m"] +[75.70986123085109, "o", "_"] +[75.73986123085109, "o", "n"] +[75.76986123085109, "o", "a"] +[75.79986123085109, "o", "m"] +[75.8298612308511, "o", "e"] +[75.8598612308511, "o", ","] +[75.8898612308511, "o", " "] +[75.9198612308511, "o", "p"] +[75.9498612308511, "o", "l"] +[75.9798612308511, "o", "a"] +[76.0098612308511, "o", "c"] +[76.0398612308511, "o", "e"] +[76.0698612308511, "o", "d"] +[76.0998612308511, "o", "_"] +[76.1298612308511, "o", "t"] +[76.1598612308511, "o", "i"] +[76.18986123085111, "o", "m"] +[76.21986123085111, "o", "e"] +[76.24986123085111, "o", ")"] +[76.27986123085111, "o", " "] +[76.30986123085111, "o", "V"] +[76.33986123085111, "o", "A"] +[76.36986123085111, "o", "L"] +[76.39986123085112, "o", "U"] +[76.42986123085112, "o", "E"] +[76.45986123085112, "o", "S"] +[76.48986123085112, "o", " "] +[76.51986123085112, "o", "\\"] +[76.54986123085112, "o", "\r\n "] +[76.57986123085112, "o", "("] +[76.60986123085112, "o", "4"] +[76.63986123085112, "o", ","] +[76.66986123085113, "o", " "] +[76.69986123085113, "o", "5"] +[76.72986123085113, "o", ","] +[76.75986123085113, "o", " "] +[76.78986123085113, "o", "'"] +[76.81986123085113, "o", "T"] +[76.84986123085113, "o", "o"] +[76.87986123085113, "o", "i"] +[76.90986123085113, "o", "l"] +[76.93986123085114, "o", "e"] +[76.96986123085114, "o", "t"] +[76.99986123085114, "o", " "] +[77.02986123085114, "o", "R"] +[77.05986123085114, "o", "o"] +[77.08986123085114, "o", "l"] +[77.11986123085114, "o", "l"] +[77.14986123085114, "o", "'"] +[77.17986123085115, "o", ","] +[77.20986123085115, "o", " "] +[77.23986123085115, "o", "'"] +[77.26986123085115, "o", "2"] +[77.29986123085115, "o", "0"] +[77.32986123085115, "o", "2"] +[77.35986123085115, "o", "0"] +[77.38986123085115, "o", "-"] +[77.41986123085115, "o", "0"] +[77.44986123085116, "o", "4"] +[77.47986123085116, "o", "-"] +[77.50986123085116, "o", "2"] +[77.53986123085116, "o", "0"] +[77.56986123085116, "o", " "] +[77.59986123085116, "o", "1"] +[77.62986123085116, "o", "4"] +[77.65986123085116, "o", ":"] +[77.68986123085116, "o", "0"] +[77.71986123085117, "o", "5"] +[77.74986123085117, "o", ":"] +[77.77986123085117, "o", "1"] +[77.80986123085117, "o", "7"] +[77.83986123085117, "o", "'"] +[77.86986123085117, "o", ")"] +[77.89986123085117, "o", ";"] +[77.92986123085117, "o", "\""] +[77.95986123085117, "o", "\r\n"] +[77.98986123085118, "o", "\u001b[0m"] +[78.01986123085118, "o", "\r\n"] +[78.04986123085118, "o", "\u001b[1m"] +[78.07986123085118, "o", "\u001b[36m"] +[78.10986123085118, "o", "\u001b[91m"] +[78.13986123085118, "o", "$"] +[78.16986123085118, "o", " "] +[78.19986123085118, "o", "\u001b[0m"] +[83.22986123085118, "o", "\u001b[H"] +[83.25986123085119, "o", "\u001b[J"] +[83.28986123085119, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The change propagates to the subscriber and gets"] +[83.31986123085119, "o", "\r\n"] +[83.34986123085119, "o", "$ # captured by Splitgraph's change tracking\r\n"] +[83.37986123085119, "o", "$"] +[83.40986123085119, "o", " "] +[83.43986123085119, "o", "s"] +[83.4698612308512, "o", "g"] +[83.4998612308512, "o", "r"] +[83.5298612308512, "o", " "] +[83.5598612308512, "o", "d"] +[83.5898612308512, "o", "i"] +[83.6198612308512, "o", "f"] +[83.6498612308512, "o", "f"] +[83.6798612308512, "o", " "] +[83.7098612308512, "o", "-"] +[83.7398612308512, "o", "v"] +[83.7698612308512, "o", " "] +[83.7998612308512, "o", "p"] +[83.82986123085121, "o", "r"] +[83.85986123085121, "o", "o"] +[83.88986123085121, "o", "d"] +[83.91986123085121, "o", "u"] +[83.94986123085121, "o", "c"] +[83.97986123085121, "o", "t"] +[84.00986123085121, "o", "i"] +[84.03986123085122, "o", "o"] +[84.06986123085122, "o", "n"] +[84.09986123085122, "o", "_"] +[84.12986123085122, "o", "d"] +[84.15986123085122, "o", "a"] +[84.18986123085122, "o", "t"] +[84.21986123085122, "o", "a"] +[84.24986123085122, "o", "\r\n"] +[84.27986123085122, "o", "\u001b[0m"] +[84.30986123085123, "o", "\r\n"] +[84.72653107643228, "o", "Between 8a21e8251629 and the current working copy: \r\n"] +[84.7267225265513, "o", "customers: added 1 row.\r\n"] +[84.72673873901468, "o", "+ (4, 'Jack Sample', datetime.datetime(2020, 4, 20, 14, 3, 48))\r\n"] +[84.72679357528787, "o", "orders: added 2 rows, removed 2 rows.\r\n"] +[84.72680668830972, "o", "- (2, 1, 20, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n"] +[84.7268217086802, "o", "- (5, 1, 50, 'Surgical Mask', datetime.datetime(2020, 4, 2, 11, 29, 42))\r\n+ (2, 1, 25, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n"] +[84.72683410644632, "o", "+ (6, 4, 5, 'Toilet Roll', datetime.datetime(2020, 4, 20, 14, 5, 17))\r\n"] +[84.75683410644632, "o", "\u001b[1m"] +[84.78683410644632, "o", "\u001b[36m"] +[84.81683410644632, "o", "\u001b[91m"] +[84.84683410644632, "o", "$"] +[84.87683410644632, "o", " "] +[84.90683410644633, "o", "\u001b[0m"] +[89.93683410644633, "o", "\u001b[H"] +[89.96683410644633, "o", "\u001b[J"] +[89.99683410644633, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Committing creates a new image, snapshotting the state."] +[90.02683410644633, "o", "\r\n"] +[90.05683410644633, "o", "$"] +[90.08683410644633, "o", " "] +[90.11683410644633, "o", "s"] +[90.14683410644633, "o", "g"] +[90.17683410644634, "o", "r"] +[90.20683410644634, "o", " "] +[90.23683410644634, "o", "c"] +[90.26683410644634, "o", "o"] +[90.29683410644634, "o", "m"] +[90.32683410644634, "o", "m"] +[90.35683410644634, "o", "i"] +[90.38683410644634, "o", "t"] +[90.41683410644634, "o", " "] +[90.44683410644635, "o", "p"] +[90.47683410644635, "o", "r"] +[90.50683410644635, "o", "o"] +[90.53683410644635, "o", "d"] +[90.56683410644635, "o", "u"] +[90.59683410644635, "o", "c"] +[90.62683410644635, "o", "t"] +[90.65683410644635, "o", "i"] +[90.68683410644636, "o", "o"] +[90.71683410644636, "o", "n"] +[90.74683410644636, "o", "_"] +[90.77683410644636, "o", "d"] +[90.80683410644636, "o", "a"] +[90.83683410644636, "o", "t"] +[90.86683410644636, "o", "a"] +[90.89683410644636, "o", "\r\n"] +[90.92683410644636, "o", "$"] +[90.95683410644637, "o", " "] +[90.98683410644637, "o", "s"] +[91.01683410644637, "o", "g"] +[91.04683410644637, "o", "r"] +[91.07683410644637, "o", " "] +[91.10683410644637, "o", "t"] +[91.13683410644637, "o", "a"] +[91.16683410644637, "o", "g"] +[91.19683410644637, "o", " "] +[91.22683410644638, "o", "p"] +[91.25683410644638, "o", "r"] +[91.28683410644638, "o", "o"] +[91.31683410644638, "o", "d"] +[91.34683410644638, "o", "u"] +[91.37683410644638, "o", "c"] +[91.40683410644638, "o", "t"] +[91.43683410644638, "o", "i"] +[91.46683410644638, "o", "o"] +[91.49683410644639, "o", "n"] +[91.52683410644639, "o", "_"] +[91.55683410644639, "o", "d"] +[91.58683410644639, "o", "a"] +[91.61683410644639, "o", "t"] +[91.64683410644639, "o", "a"] +[91.67683410644639, "o", " "] +[91.7068341064464, "o", "c"] +[91.7368341064464, "o", "u"] +[91.7668341064464, "o", "r"] +[91.7968341064464, "o", "r"] +[91.8268341064464, "o", "e"] +[91.8568341064464, "o", "n"] +[91.8868341064464, "o", "t"] +[91.9168341064464, "o", "_"] +[91.9468341064464, "o", "s"] +[91.9768341064464, "o", "n"] +[92.0068341064464, "o", "a"] +[92.0368341064464, "o", "p"] +[92.06683410644641, "o", "s"] +[92.09683410644641, "o", "h"] +[92.12683410644641, "o", "o"] +[92.15683410644641, "o", "t"] +[92.18683410644641, "o", "\r\n"] +[92.21683410644641, "o", "$"] +[92.24683410644641, "o", " "] +[92.27683410644642, "o", "s"] +[92.30683410644642, "o", "g"] +[92.33683410644642, "o", "r"] +[92.36683410644642, "o", " "] +[92.39683410644642, "o", "s"] +[92.42683410644642, "o", "h"] +[92.45683410644642, "o", "o"] +[92.48683410644642, "o", "w"] +[92.51683410644642, "o", " "] +[92.54683410644643, "o", "p"] +[92.57683410644643, "o", "r"] +[92.60683410644643, "o", "o"] +[92.63683410644643, "o", "d"] +[92.66683410644643, "o", "u"] +[92.69683410644643, "o", "c"] +[92.72683410644643, "o", "t"] +[92.75683410644643, "o", "i"] +[92.78683410644643, "o", "o"] +[92.81683410644644, "o", "n"] +[92.84683410644644, "o", "_"] +[92.87683410644644, "o", "d"] +[92.90683410644644, "o", "a"] +[92.93683410644644, "o", "t"] +[92.96683410644644, "o", "a"] +[92.99683410644644, "o", ":"] +[93.02683410644644, "o", "c"] +[93.05683410644644, "o", "u"] +[93.08683410644645, "o", "r"] +[93.11683410644645, "o", "r"] +[93.14683410644645, "o", "e"] +[93.17683410644645, "o", "n"] +[93.20683410644645, "o", "t"] +[93.23683410644645, "o", "_"] +[93.26683410644645, "o", "s"] +[93.29683410644645, "o", "n"] +[93.32683410644646, "o", "a"] +[93.35683410644646, "o", "p"] +[93.38683410644646, "o", "s"] +[93.41683410644646, "o", "h"] +[93.44683410644646, "o", "o"] +[93.47683410644646, "o", "t"] +[93.50683410644646, "o", "\r\n"] +[93.53683410644646, "o", "\u001b[0m"] +[93.56683410644646, "o", "\r\n"] +[93.81035174369927, "o", "Committing production_data...\r\n"] +[93.84920109748955, "o", "Committed production_data as 90bc11a9d8c4.\r\n"] +[94.08082117080804, "o", "Tagged production_data:90bc11a9d8c4cf3d6a7897e7d4347890759d5c3b443720b314a7f33f2c91157f with current_snapshot.\r\n"] +[94.316207304002, "o", "Image production_data:90bc11a9d8c4cf3d6a7897e7d4347890759d5c3b443720b314a7f33f2c91157f\r\n\r\n"] +[94.31622041702386, "o", "Created at 2021-04-14T15:02:39.972598\r\n"] +[94.31773413658257, "o", "Size: 1.11 KiB\r\n"] +[94.31774772644158, "o", "Parent: 8a21e82516295136a4a240bd51a2e48592201371ab7fe4e916b120cb9e519c15\r\n\r\nTables:\r\n"] +[94.31833137512322, "o", " customers\r\n orders\r\n"] +[94.34833137512322, "o", "\u001b[1m"] +[94.37833137512322, "o", "\u001b[36m"] +[94.40833137512323, "o", "\u001b[91m"] +[94.43833137512323, "o", "$"] +[94.46833137512323, "o", " "] +[94.49833137512323, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.13/postgrest.cast b/content/casts/versioned/archive/v0.2.13/postgrest.cast new file mode 100644 index 00000000..3ddb39b8 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.13/postgrest.cast @@ -0,0 +1,1100 @@ +{"version": 2, "width": 100, "height": 16, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1618412562, "metadata": {"tss": [{"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 0.06}, {"h": "Also create another image so we can switch between them.", "ts": 12.881745004653942}, {"h": "Check out the original version of the dataset and look at the API spec for it.", "ts": 25.604932861328216}, {"h": "Get all rows in the table", "ts": 37.604408349991125}, {"h": "Run a query selecting one row", "ts": 44.29715769767795}, {"h": "Run the query against the new version of the dataset.", "ts": 52.972296085358145}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "s"] +[0.24, "o", "g"] +[0.27, "o", "r"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "i"] +[0.3600000000000001, "o", "n"] +[0.3900000000000001, "o", "i"] +[0.42000000000000015, "o", "t"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "d"] +[0.5100000000000002, "o", "e"] +[0.5400000000000003, "o", "m"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "/"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "\r\n"] +[0.8700000000000006, "o", "$"] +[0.9000000000000006, "o", " "] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "g"] +[0.9900000000000007, "o", "r"] +[1.0200000000000007, "o", " "] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "s"] +[1.1100000000000008, "o", "v"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "i"] +[1.2000000000000008, "o", "m"] +[1.2300000000000009, "o", "p"] +[1.260000000000001, "o", "o"] +[1.290000000000001, "o", "r"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", " "] +[1.380000000000001, "o", "-"] +[1.410000000000001, "o", "f"] +[1.440000000000001, "o", " "] +[1.470000000000001, "o", "."] +[1.500000000000001, "o", "."] +[1.5300000000000011, "o", "/"] +[1.5600000000000012, "o", "i"] +[1.5900000000000012, "o", "m"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "o"] +[1.6800000000000013, "o", "r"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "-"] +[1.7700000000000014, "o", "f"] +[1.8000000000000014, "o", "r"] +[1.8300000000000014, "o", "o"] +[1.8600000000000014, "o", "m"] +[1.8900000000000015, "o", "-"] +[1.9200000000000015, "o", "c"] +[1.9500000000000015, "o", "s"] +[1.9800000000000015, "o", "v"] +[2.0100000000000016, "o", "/"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "d"] +[2.100000000000001, "o", "u"] +[2.130000000000001, "o", "-"] +[2.1600000000000006, "o", "w"] +[2.1900000000000004, "o", "e"] +[2.22, "o", "a"] +[2.25, "o", "t"] +[2.28, "o", "h"] +[2.3099999999999996, "o", "e"] +[2.3399999999999994, "o", "r"] +[2.369999999999999, "o", "-"] +[2.399999999999999, "o", "h"] +[2.429999999999999, "o", "i"] +[2.4599999999999986, "o", "s"] +[2.4899999999999984, "o", "t"] +[2.5199999999999982, "o", "o"] +[2.549999999999998, "o", "r"] +[2.579999999999998, "o", "y"] +[2.6099999999999977, "o", "."] +[2.6399999999999975, "o", "c"] +[2.6699999999999973, "o", "s"] +[2.699999999999997, "o", "v"] +[2.729999999999997, "o", " "] +[2.7599999999999967, "o", "\\"] +[2.7899999999999965, "o", "\r\n "] +[2.8199999999999963, "o", "-"] +[2.849999999999996, "o", "k"] +[2.879999999999996, "o", " "] +[2.9099999999999957, "o", "d"] +[2.9399999999999955, "o", "a"] +[2.9699999999999953, "o", "t"] +[2.999999999999995, "o", "e"] +[3.029999999999995, "o", " "] +[3.0599999999999947, "o", "\\"] +[3.0899999999999945, "o", "\r\n "] +[3.1199999999999943, "o", "-"] +[3.149999999999994, "o", "t"] +[3.179999999999994, "o", " "] +[3.2099999999999937, "o", "d"] +[3.2399999999999936, "o", "a"] +[3.2699999999999934, "o", "t"] +[3.299999999999993, "o", "e"] +[3.329999999999993, "o", " "] +[3.3599999999999928, "o", "t"] +[3.3899999999999926, "o", "i"] +[3.4199999999999924, "o", "m"] +[3.449999999999992, "o", "e"] +[3.479999999999992, "o", "s"] +[3.509999999999992, "o", "t"] +[3.5399999999999916, "o", "a"] +[3.5699999999999914, "o", "m"] +[3.599999999999991, "o", "p"] +[3.629999999999991, "o", " "] +[3.659999999999991, "o", "\\"] +[3.6899999999999906, "o", "\r\n "] +[3.7199999999999904, "o", "-"] +[3.7499999999999902, "o", "-"] +[3.77999999999999, "o", "s"] +[3.80999999999999, "o", "e"] +[3.8399999999999896, "o", "p"] +[3.8699999999999894, "o", "a"] +[3.8999999999999893, "o", "r"] +[3.929999999999989, "o", "a"] +[3.959999999999989, "o", "t"] +[3.9899999999999887, "o", "o"] +[4.019999999999989, "o", "r"] +[4.049999999999989, "o", " "] +[4.079999999999989, "o", "\""] +[4.10999999999999, "o", ";"] +[4.13999999999999, "o", "\""] +[4.16999999999999, "o", " "] +[4.19999999999999, "o", "\\"] +[4.229999999999991, "o", "\r\n "] +[4.259999999999991, "o", "d"] +[4.289999999999991, "o", "e"] +[4.319999999999991, "o", "m"] +[4.349999999999992, "o", "o"] +[4.379999999999992, "o", "/"] +[4.409999999999992, "o", "w"] +[4.439999999999992, "o", "e"] +[4.469999999999993, "o", "a"] +[4.499999999999993, "o", "t"] +[4.529999999999993, "o", "h"] +[4.559999999999993, "o", "e"] +[4.589999999999994, "o", "r"] +[4.619999999999994, "o", " "] +[4.649999999999994, "o", "r"] +[4.679999999999994, "o", "d"] +[4.709999999999995, "o", "u"] +[4.739999999999995, "o", "\r\n"] +[4.769999999999995, "o", "$"] +[4.799999999999995, "o", " "] +[4.829999999999996, "o", "s"] +[4.859999999999996, "o", "g"] +[4.889999999999996, "o", "r"] +[4.919999999999996, "o", " "] +[4.949999999999997, "o", "c"] +[4.979999999999997, "o", "o"] +[5.009999999999997, "o", "m"] +[5.039999999999997, "o", "m"] +[5.069999999999998, "o", "i"] +[5.099999999999998, "o", "t"] +[5.129999999999998, "o", " "] +[5.159999999999998, "o", "d"] +[5.189999999999999, "o", "e"] +[5.219999999999999, "o", "m"] +[5.249999999999999, "o", "o"] +[5.279999999999999, "o", "/"] +[5.31, "o", "w"] +[5.34, "o", "e"] +[5.37, "o", "a"] +[5.4, "o", "t"] +[5.430000000000001, "o", "h"] +[5.460000000000001, "o", "e"] +[5.490000000000001, "o", "r"] +[5.520000000000001, "o", "\r\n"] +[5.550000000000002, "o", "$"] +[5.580000000000002, "o", " "] +[5.610000000000002, "o", "s"] +[5.640000000000002, "o", "g"] +[5.670000000000003, "o", "r"] +[5.700000000000003, "o", " "] +[5.730000000000003, "o", "t"] +[5.760000000000003, "o", "a"] +[5.790000000000004, "o", "g"] +[5.820000000000004, "o", " "] +[5.850000000000004, "o", "d"] +[5.880000000000004, "o", "e"] +[5.910000000000005, "o", "m"] +[5.940000000000005, "o", "o"] +[5.970000000000005, "o", "/"] +[6.000000000000005, "o", "w"] +[6.030000000000006, "o", "e"] +[6.060000000000006, "o", "a"] +[6.090000000000006, "o", "t"] +[6.120000000000006, "o", "h"] +[6.150000000000007, "o", "e"] +[6.180000000000007, "o", "r"] +[6.210000000000007, "o", " "] +[6.240000000000007, "o", "i"] +[6.270000000000008, "o", "n"] +[6.300000000000008, "o", "i"] +[6.330000000000008, "o", "t"] +[6.360000000000008, "o", "i"] +[6.390000000000009, "o", "a"] +[6.420000000000009, "o", "l"] +[6.450000000000009, "o", "_"] +[6.480000000000009, "o", "d"] +[6.51000000000001, "o", "a"] +[6.54000000000001, "o", "t"] +[6.57000000000001, "o", "a"] +[6.60000000000001, "o", "\r\n"] +[6.6300000000000106, "o", "\u001b[0m"] +[6.660000000000011, "o", "\r\n"] +[6.915204677581798, "o", "Initialized empty repository demo/weather\r\n"] +[7.150044593811046, "o", "Committing demo/weather...\r\n"] +[7.175949964523326, "o", "Processing table rdu\r\n"] +[7.396863613128673, "o", "Committed demo/weather as 9aeaddf76058.\r\n"] +[7.6417450046539415, "o", "Tagged demo/weather:9aeaddf7605806a0e2d68eaf5af9a36d0e25edc5a99c05f0086dedb5f020377e with initial_data.\r\n"] +[7.671745004653942, "o", "\u001b[1m"] +[7.701745004653942, "o", "\u001b[36m"] +[7.731745004653942, "o", "\u001b[91m"] +[7.7617450046539425, "o", "$"] +[7.791745004653943, "o", " "] +[7.821745004653943, "o", "\u001b[0m"] +[12.851745004653942, "o", "\u001b[H"] +[12.881745004653942, "o", "\u001b[J"] +[12.911745004653941, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Also create another image so we can switch between them."] +[12.94174500465394, "o", "\r\n"] +[12.97174500465394, "o", "$"] +[13.00174500465394, "o", " "] +[13.031745004653938, "o", "s"] +[13.061745004653938, "o", "g"] +[13.091745004653937, "o", "r"] +[13.121745004653937, "o", " "] +[13.151745004653936, "o", "s"] +[13.181745004653935, "o", "q"] +[13.211745004653935, "o", "l"] +[13.241745004653934, "o", " "] +[13.271745004653933, "o", "-"] +[13.301745004653933, "o", "s"] +[13.331745004653932, "o", " "] +[13.361745004653931, "o", "d"] +[13.39174500465393, "o", "e"] +[13.42174500465393, "o", "m"] +[13.45174500465393, "o", "o"] +[13.481745004653929, "o", "/"] +[13.511745004653928, "o", "w"] +[13.541745004653928, "o", "e"] +[13.571745004653927, "o", "a"] +[13.601745004653926, "o", "t"] +[13.631745004653926, "o", "h"] +[13.661745004653925, "o", "e"] +[13.691745004653924, "o", "r"] +[13.721745004653924, "o", " "] +[13.751745004653923, "o", "\""] +[13.781745004653922, "o", "U"] +[13.811745004653922, "o", "P"] +[13.841745004653921, "o", "D"] +[13.87174500465392, "o", "A"] +[13.90174500465392, "o", "T"] +[13.93174500465392, "o", "E"] +[13.961745004653919, "o", " "] +[13.991745004653918, "o", "r"] +[14.021745004653917, "o", "d"] +[14.051745004653917, "o", "u"] +[14.081745004653916, "o", " "] +[14.111745004653915, "o", "S"] +[14.141745004653915, "o", "E"] +[14.171745004653914, "o", "T"] +[14.201745004653914, "o", " "] +[14.231745004653913, "o", "p"] +[14.261745004653912, "o", "r"] +[14.291745004653912, "o", "e"] +[14.321745004653911, "o", "c"] +[14.35174500465391, "o", "i"] +[14.38174500465391, "o", "p"] +[14.411745004653909, "o", "i"] +[14.441745004653908, "o", "t"] +[14.471745004653908, "o", "a"] +[14.501745004653907, "o", "t"] +[14.531745004653907, "o", "i"] +[14.561745004653906, "o", "o"] +[14.591745004653905, "o", "n"] +[14.621745004653905, "o", " "] +[14.651745004653904, "o", "="] +[14.681745004653903, "o", " "] +[14.711745004653903, "o", "p"] +[14.741745004653902, "o", "r"] +[14.771745004653901, "o", "e"] +[14.8017450046539, "o", "c"] +[14.8317450046539, "o", "i"] +[14.8617450046539, "o", "p"] +[14.891745004653899, "o", "i"] +[14.921745004653898, "o", "t"] +[14.951745004653898, "o", "a"] +[14.981745004653897, "o", "t"] +[15.011745004653896, "o", "i"] +[15.041745004653896, "o", "o"] +[15.071745004653895, "o", "n"] +[15.101745004653894, "o", " "] +[15.131745004653894, "o", "*"] +[15.161745004653893, "o", " "] +[15.191745004653892, "o", "1"] +[15.221745004653892, "o", "."] +[15.251745004653891, "o", "2"] +[15.28174500465389, "o", " "] +[15.31174500465389, "o", "W"] +[15.34174500465389, "o", "H"] +[15.371745004653889, "o", "E"] +[15.401745004653888, "o", "R"] +[15.431745004653887, "o", "E"] +[15.461745004653887, "o", " "] +[15.491745004653886, "o", "E"] +[15.521745004653885, "o", "X"] +[15.551745004653885, "o", "T"] +[15.581745004653884, "o", "R"] +[15.611745004653883, "o", "A"] +[15.641745004653883, "o", "C"] +[15.671745004653882, "o", "T"] +[15.701745004653882, "o", " "] +[15.731745004653881, "o", "("] +[15.76174500465388, "o", "y"] +[15.79174500465388, "o", "e"] +[15.821745004653879, "o", "a"] +[15.851745004653878, "o", "r"] +[15.881745004653878, "o", " "] +[15.911745004653877, "o", "F"] +[15.941745004653876, "o", "R"] +[15.971745004653876, "o", "O"] +[16.001745004653877, "o", "M"] +[16.031745004653878, "o", " "] +[16.06174500465388, "o", "d"] +[16.09174500465388, "o", "a"] +[16.12174500465388, "o", "t"] +[16.151745004653883, "o", "e"] +[16.181745004653884, "o", ")"] +[16.211745004653885, "o", " "] +[16.241745004653886, "o", "="] +[16.271745004653887, "o", " "] +[16.30174500465389, "o", "2"] +[16.33174500465389, "o", "0"] +[16.36174500465389, "o", "1"] +[16.39174500465389, "o", "2"] +[16.421745004653893, "o", "\""] +[16.451745004653894, "o", "\r\n"] +[16.481745004653895, "o", "$"] +[16.511745004653896, "o", " "] +[16.541745004653897, "o", "s"] +[16.5717450046539, "o", "g"] +[16.6017450046539, "o", "r"] +[16.6317450046539, "o", " "] +[16.661745004653902, "o", "c"] +[16.691745004653903, "o", "o"] +[16.721745004653904, "o", "m"] +[16.751745004653905, "o", "m"] +[16.781745004653907, "o", "i"] +[16.811745004653908, "o", "t"] +[16.84174500465391, "o", " "] +[16.87174500465391, "o", "-"] +[16.90174500465391, "o", "m"] +[16.931745004653912, "o", " "] +[16.961745004653913, "o", "\""] +[16.991745004653914, "o", "R"] +[17.021745004653916, "o", "e"] +[17.051745004653917, "o", "v"] +[17.081745004653918, "o", "i"] +[17.11174500465392, "o", "s"] +[17.14174500465392, "o", "i"] +[17.17174500465392, "o", "o"] +[17.201745004653922, "o", "n"] +[17.231745004653924, "o", " "] +[17.261745004653925, "o", "t"] +[17.291745004653926, "o", "o"] +[17.321745004653927, "o", " "] +[17.351745004653928, "o", "t"] +[17.38174500465393, "o", "h"] +[17.41174500465393, "o", "e"] +[17.44174500465393, "o", " "] +[17.471745004653933, "o", "2"] +[17.501745004653934, "o", "0"] +[17.531745004653935, "o", "1"] +[17.561745004653936, "o", "2"] +[17.591745004653937, "o", " "] +[17.62174500465394, "o", "r"] +[17.65174500465394, "o", "a"] +[17.68174500465394, "o", "i"] +[17.71174500465394, "o", "n"] +[17.741745004653943, "o", "f"] +[17.771745004653944, "o", "a"] +[17.801745004653945, "o", "l"] +[17.831745004653946, "o", "l"] +[17.861745004653947, "o", " "] +[17.89174500465395, "o", "d"] +[17.92174500465395, "o", "a"] +[17.95174500465395, "o", "t"] +[17.981745004653952, "o", "a"] +[18.011745004653953, "o", "\""] +[18.041745004653954, "o", " "] +[18.071745004653955, "o", "d"] +[18.101745004653957, "o", "e"] +[18.131745004653958, "o", "m"] +[18.16174500465396, "o", "o"] +[18.19174500465396, "o", "/"] +[18.22174500465396, "o", "w"] +[18.251745004653962, "o", "e"] +[18.281745004653963, "o", "a"] +[18.311745004653964, "o", "t"] +[18.341745004653966, "o", "h"] +[18.371745004653967, "o", "e"] +[18.401745004653968, "o", "r"] +[18.43174500465397, "o", "\r\n"] +[18.46174500465397, "o", "$"] +[18.49174500465397, "o", " "] +[18.521745004653972, "o", "s"] +[18.551745004653974, "o", "g"] +[18.581745004653975, "o", "r"] +[18.611745004653976, "o", " "] +[18.641745004653977, "o", "t"] +[18.671745004653978, "o", "a"] +[18.70174500465398, "o", "g"] +[18.73174500465398, "o", " "] +[18.76174500465398, "o", "d"] +[18.791745004653983, "o", "e"] +[18.821745004653984, "o", "m"] +[18.851745004653985, "o", "o"] +[18.881745004653986, "o", "/"] +[18.911745004653987, "o", "w"] +[18.94174500465399, "o", "e"] +[18.97174500465399, "o", "a"] +[19.00174500465399, "o", "t"] +[19.03174500465399, "o", "h"] +[19.061745004653993, "o", "e"] +[19.091745004653994, "o", "r"] +[19.121745004653995, "o", " "] +[19.151745004653996, "o", "r"] +[19.181745004653997, "o", "e"] +[19.211745004654, "o", "v"] +[19.241745004654, "o", "i"] +[19.271745004654, "o", "s"] +[19.301745004654002, "o", "e"] +[19.331745004654003, "o", "d"] +[19.361745004654004, "o", "_"] +[19.391745004654005, "o", "d"] +[19.421745004654007, "o", "a"] +[19.451745004654008, "o", "t"] +[19.48174500465401, "o", "a"] +[19.51174500465401, "o", "\r\n"] +[19.54174500465401, "o", "\u001b[0m"] +[19.571745004654012, "o", "\r\n"] +[19.817435111999593, "o", "Committing demo/weather...\r\n"] +[19.87010940551766, "o", "Storing and indexing table rdu\r\n"] +[20.07059964180001, "o", "Committed demo/weather as f2b03802497f.\r\n"] +[20.364932861328207, "o", "Tagged demo/weather:f2b03802497f1bdfd5d7633dcfbdcef0d27094810739db5dcb5ce6510d2d19ae with revised_data.\r\n"] +[20.394932861328208, "o", "\u001b[1m"] +[20.42493286132821, "o", "\u001b[36m"] +[20.45493286132821, "o", "\u001b[91m"] +[20.48493286132821, "o", "$"] +[20.514932861328212, "o", " "] +[20.544932861328213, "o", "\u001b[0m"] +[25.574932861328215, "o", "\u001b[H"] +[25.604932861328216, "o", "\u001b[J"] +[25.634932861328217, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the original version of the dataset and look at the API spec for it."] +[25.664932861328218, "o", "\r\n"] +[25.69493286132822, "o", "$ # For this, we need to restart PostgREST so that it picks up the new schema.\r\n"] +[25.72493286132822, "o", "$"] +[25.75493286132822, "o", " "] +[25.784932861328222, "o", "d"] +[25.814932861328224, "o", "o"] +[25.844932861328225, "o", "c"] +[25.874932861328226, "o", "k"] +[25.904932861328227, "o", "e"] +[25.934932861328228, "o", "r"] +[25.96493286132823, "o", "-"] +[25.99493286132823, "o", "c"] +[26.02493286132823, "o", "o"] +[26.054932861328233, "o", "m"] +[26.084932861328234, "o", "p"] +[26.114932861328235, "o", "o"] +[26.144932861328236, "o", "s"] +[26.174932861328237, "o", "e"] +[26.20493286132824, "o", " "] +[26.23493286132824, "o", "-"] +[26.26493286132824, "o", "-"] +[26.294932861328242, "o", "p"] +[26.324932861328243, "o", "r"] +[26.354932861328244, "o", "o"] +[26.384932861328245, "o", "j"] +[26.414932861328246, "o", "e"] +[26.444932861328247, "o", "c"] +[26.47493286132825, "o", "t"] +[26.50493286132825, "o", "-"] +[26.53493286132825, "o", "n"] +[26.564932861328252, "o", "a"] +[26.594932861328253, "o", "m"] +[26.624932861328254, "o", "e"] +[26.654932861328255, "o", " "] +[26.684932861328257, "o", "s"] +[26.714932861328258, "o", "p"] +[26.74493286132826, "o", "l"] +[26.77493286132826, "o", "i"] +[26.80493286132826, "o", "t"] +[26.834932861328262, "o", "g"] +[26.864932861328263, "o", "r"] +[26.894932861328265, "o", "a"] +[26.924932861328266, "o", "p"] +[26.954932861328267, "o", "h"] +[26.984932861328268, "o", "_"] +[27.01493286132827, "o", "e"] +[27.04493286132827, "o", "x"] +[27.07493286132827, "o", "a"] +[27.104932861328273, "o", "m"] +[27.134932861328274, "o", "p"] +[27.164932861328275, "o", "l"] +[27.194932861328276, "o", "e"] +[27.224932861328277, "o", " "] +[27.254932861328278, "o", "r"] +[27.28493286132828, "o", "e"] +[27.31493286132828, "o", "s"] +[27.34493286132828, "o", "t"] +[27.374932861328283, "o", "a"] +[27.404932861328284, "o", "r"] +[27.434932861328285, "o", "t"] +[27.464932861328286, "o", " "] +[27.494932861328287, "o", "p"] +[27.52493286132829, "o", "o"] +[27.55493286132829, "o", "s"] +[27.58493286132829, "o", "t"] +[27.614932861328292, "o", "g"] +[27.644932861328293, "o", "r"] +[27.674932861328294, "o", "e"] +[27.704932861328295, "o", "s"] +[27.734932861328296, "o", "t"] +[27.764932861328298, "o", "\r\n"] +[27.7949328613283, "o", "$"] +[27.8249328613283, "o", " "] +[27.8549328613283, "o", "s"] +[27.884932861328302, "o", "g"] +[27.914932861328303, "o", "r"] +[27.944932861328304, "o", " "] +[27.974932861328305, "o", "c"] +[28.004932861328307, "o", "h"] +[28.034932861328308, "o", "e"] +[28.06493286132831, "o", "c"] +[28.09493286132831, "o", "k"] +[28.12493286132831, "o", "o"] +[28.154932861328312, "o", "u"] +[28.184932861328313, "o", "t"] +[28.214932861328315, "o", " "] +[28.244932861328316, "o", "d"] +[28.274932861328317, "o", "e"] +[28.304932861328318, "o", "m"] +[28.33493286132832, "o", "o"] +[28.36493286132832, "o", "/"] +[28.39493286132832, "o", "w"] +[28.424932861328323, "o", "e"] +[28.454932861328324, "o", "a"] +[28.484932861328325, "o", "t"] +[28.514932861328326, "o", "h"] +[28.544932861328327, "o", "e"] +[28.574932861328328, "o", "r"] +[28.60493286132833, "o", ":"] +[28.63493286132833, "o", "i"] +[28.66493286132833, "o", "n"] +[28.694932861328333, "o", "i"] +[28.724932861328334, "o", "t"] +[28.754932861328335, "o", "i"] +[28.784932861328336, "o", "a"] +[28.814932861328337, "o", "l"] +[28.84493286132834, "o", "_"] +[28.87493286132834, "o", "d"] +[28.90493286132834, "o", "a"] +[28.934932861328342, "o", "t"] +[28.964932861328343, "o", "a"] +[28.994932861328344, "o", "\r\n"] +[29.024932861328345, "o", "$"] +[29.054932861328346, "o", " "] +[29.084932861328348, "o", "c"] +[29.11493286132835, "o", "u"] +[29.14493286132835, "o", "r"] +[29.17493286132835, "o", "l"] +[29.204932861328352, "o", " "] +[29.234932861328353, "o", "h"] +[29.264932861328354, "o", "t"] +[29.294932861328356, "o", "t"] +[29.324932861328357, "o", "p"] +[29.354932861328358, "o", ":"] +[29.38493286132836, "o", "/"] +[29.41493286132836, "o", "/"] +[29.44493286132836, "o", "l"] +[29.474932861328362, "o", "o"] +[29.504932861328363, "o", "c"] +[29.534932861328365, "o", "a"] +[29.564932861328366, "o", "l"] +[29.594932861328367, "o", "h"] +[29.624932861328368, "o", "o"] +[29.65493286132837, "o", "s"] +[29.68493286132837, "o", "t"] +[29.71493286132837, "o", ":"] +[29.744932861328373, "o", "8"] +[29.774932861328374, "o", "0"] +[29.804932861328375, "o", "8"] +[29.834932861328376, "o", "0"] +[29.864932861328377, "o", "/"] +[29.89493286132838, "o", " "] +[29.92493286132838, "o", "|"] +[29.95493286132838, "o", " "] +[29.98493286132838, "o", "c"] +[30.014932861328383, "o", "u"] +[30.044932861328384, "o", "t"] +[30.074932861328385, "o", " "] +[30.104932861328386, "o", "-"] +[30.134932861328387, "o", "c"] +[30.16493286132839, "o", " "] +[30.19493286132839, "o", "-"] +[30.22493286132839, "o", "7"] +[30.254932861328392, "o", "9"] +[30.284932861328393, "o", "3"] +[30.314932861328394, "o", "\r\n"] +[30.344932861328395, "o", "\u001b[0m"] +[30.374932861328396, "o", "\r\n"] +[31.02790770530728, "o", "Restarting splitgraph_example_postgrest_1 ... \r\r\n"] +[31.894968843460354, "o", "\u001b[1A\u001b[2K\rRestarting splitgraph_example_postgrest_1 ... \u001b[32mdone\u001b[0m\r\u001b[1B"] +[32.32792243957547, "o", "Checked out demo/weather:9aeaddf76058.\r\n"] +[32.33682022094754, "o", " % Total "] +[32.33683309555081, "o", " % Received % Xferd Average Speed Ti"] +[32.33683810234097, "o", "me "] +[32.336842155456814, "o", " T"] +[32.33684597015408, "o", "im"] +[32.336849784851346, "o", "e "] +[32.33685431480435, "o", " "] +[32.336858129501614, "o", " "] +[32.33686194419888, "o", "Ti"] +[32.336865758896145, "o", "me"] +[32.33686957359341, "o", " "] +[32.3368731498721, "o", "Cu"] +[32.336876726150784, "o", "rr"] +[32.33688030242947, "o", "en"] +[32.33688602447537, "o", "t\r\n"] +[32.336889839172635, "o", " "] +[32.3368936538699, "o", " "] +[32.33689723014859, "o", " "] +[32.33690080642727, "o", " "] +[32.33690438270596, "o", " "] +[32.336908197403226, "o", " "] +[32.33691272735623, "o", " "] +[32.33691678047207, "o", " "] +[32.33692059516934, "o", " "] +[32.33692488670376, "o", " "] +[32.33692917823819, "o", " "] +[32.33693346977261, "o", " "] +[32.336937284469876, "o", " "] +[32.337197637558255, "o", " "] +[32.33721456527737, "o", " Dload Upload Total Spent Left Speed\r\n\r 0 "] +[32.33722028732327, "o", " 0 "] +[32.33722624778775, "o", " 0 "] +[32.33723053932217, "o", " "] +[32.33723411560086, "o", " "] +[32.337237691879544, "o", "0 "] +[32.33724150657681, "o", " "] +[32.337245321274075, "o", " 0"] +[32.33724913597134, "o", " "] +[32.33725271225003, "o", " "] +[32.33725652694729, "o", " 0"] +[32.33726034164456, "o", " "] +[32.337264156341824, "o", " "] +[32.33726773262051, "o", " 0"] +[32.3372713088992, "o", " "] +[32.33727512359646, "o", " "] +[32.33727869987515, "o", " "] +[32.337282276153836, "o", "0 "] +[32.33728966712979, "o", "--"] +[32.33729419708279, "o", ":--:-"] +[32.33729968071011, "o", "- -"] +[32.337303733825955, "o", "-:"] +[32.33730754852322, "o", "--"] +[32.337311363220486, "o", ":-"] +[32.33731899261502, "o", "- "] +[32.33732328414944, "o", "--:"] +[32.337327575683865, "o", "--:"] +[32.33733139038113, "o", "--"] +[32.337335205078396, "o", " "] +[32.33733878135708, "o", " "] +[32.33734235763577, "o", " 0"] +[32.36317858696011, "o", "\r100 12010 0 12010 0 0 451k 0 --:--:-- --:--:-- --:--:-- 451k\r\n"] +[32.36438879966763, "o", "{\"swagger\":\"2.0\",\"info\":{\"version\":\"7.0.1 (UNKNOWN)\",\"title\":\"PostgREST API\",\"description\":\"This is a dynamic API generated by PostgREST\"},\"host\":\"localhost:8080\",\"basePath\":\"/\",\"schemes\":[\"http\"],\"consumes\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"produces\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"paths\":{\"/\":{\"get\":{\"tags\":[\"Introspection\"],\"summary\":\"OpenAPI description (this document)\",\"produces\":[\"application/openapi+json\",\"application/json\"],\"res"] +[32.364408349991116, "o", "ponses\":{\"200\":{\"description\":\"OK\"}}}},\"/rdu\":{\"get\":{\"tags\":[\"rdu\"],\"parameters\":[{\"$ref\":\"#/parameters/rowFilter.rdu.date\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemin\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemax\"},{\"$ref\":\"#/parameters/rowFilter.rdu.precipitation\r\n"] +[32.39440834999112, "o", "\u001b[1m"] +[32.42440834999112, "o", "\u001b[36m"] +[32.45440834999112, "o", "\u001b[91m"] +[32.48440834999112, "o", "$"] +[32.51440834999112, "o", " "] +[32.54440834999112, "o", "\u001b[0m"] +[37.574408349991124, "o", "\u001b[H"] +[37.604408349991125, "o", "\u001b[J"] +[37.634408349991126, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get all rows in the table"] +[37.66440834999113, "o", "\r\n"] +[37.69440834999113, "o", "$"] +[37.72440834999113, "o", " "] +[37.75440834999113, "o", "c"] +[37.78440834999113, "o", "u"] +[37.81440834999113, "o", "r"] +[37.844408349991134, "o", "l"] +[37.874408349991135, "o", " "] +[37.90440834999114, "o", "h"] +[37.93440834999114, "o", "t"] +[37.96440834999114, "o", "t"] +[37.99440834999114, "o", "p"] +[38.02440834999114, "o", ":"] +[38.05440834999114, "o", "/"] +[38.08440834999114, "o", "/"] +[38.114408349991145, "o", "l"] +[38.144408349991146, "o", "o"] +[38.17440834999115, "o", "c"] +[38.20440834999115, "o", "a"] +[38.23440834999115, "o", "l"] +[38.26440834999115, "o", "h"] +[38.29440834999115, "o", "o"] +[38.32440834999115, "o", "s"] +[38.354408349991154, "o", "t"] +[38.384408349991155, "o", ":"] +[38.414408349991156, "o", "8"] +[38.44440834999116, "o", "0"] +[38.47440834999116, "o", "8"] +[38.50440834999116, "o", "0"] +[38.53440834999116, "o", "/"] +[38.56440834999116, "o", "r"] +[38.59440834999116, "o", "d"] +[38.624408349991164, "o", "u"] +[38.654408349991165, "o", " "] +[38.684408349991166, "o", "|"] +[38.71440834999117, "o", " "] +[38.74440834999117, "o", "w"] +[38.77440834999117, "o", "c"] +[38.80440834999117, "o", " "] +[38.83440834999117, "o", "-"] +[38.86440834999117, "o", "l"] +[38.894408349991174, "o", "\r\n"] +[38.924408349991175, "o", "\u001b[0m"] +[38.954408349991176, "o", "\r\n"] +[38.978634061813686, "o", " % Total % Received % X"] +[38.978713693619106, "o", "ferd Aver"] +[38.978767099380825, "o", "age Sp"] +[38.97881144523654, "o", "eed "] +[38.9788541221622, "o", "Time "] +[38.97889608383212, "o", " Ti"] +[38.97893637657199, "o", "me "] +[38.97898119926486, "o", " Time "] +[38.97903412818942, "o", "Current\r\n "] +[38.979066791534756, "o", " "] +[38.97909492492709, "o", " "] +[38.979226055145595, "o", " "] +[38.97925466537509, "o", " "] +[38.979281606674526, "o", " "] +[38.97931593894992, "o", " "] +[38.97934979438815, "o", " "] +[38.97938102722201, "o", "Dloa"] +[38.979412260055874, "o", "d U"] +[38.97944492340121, "o", "ploa"] +[38.97948020935092, "o", "d To"] +[38.97951883316073, "o", "tal "] +[38.979554834366176, "o", " Spent"] +[38.979589643478725, "o", " Le"] +[38.97962373733554, "o", "ft Sp"] +[38.97966188430819, "o", "eed\r\n"] +[38.979695739746425, "o", "\r "] +[38.97981065750155, "o", "0 "] +[38.9799253368381, "o", "0 "] +[38.97996586799655, "o", "0 "] +[38.98000043869052, "o", "0 "] +[38.98003453254733, "o", "0 "] +[38.98006838798556, "o", " 0 "] +[38.980101766586635, "o", " 0 "] +[38.98013490676913, "o", " "] +[38.980175199509, "o", "0 --:"] +[38.9802128696445, "o", "--:--"] +[38.98022288322482, "o", " "] +[38.98025793075595, "o", "--:--:"] +[38.9802972698215, "o", "-- --"] +[38.98033136367831, "o", ":--:-"] +[38.98036498069796, "o", "- "] +[38.980398836136196, "o", " 0"] +[39.05558771133456, "o", "\r100 2292"] +[39.05589336395297, "o", "k 0 2292k 0 0 29.0M 0 --:--:-- --:--:-- --:--:-- 29.0M\r\n"] +[39.057157697677944, "o", "4632\r\n"] +[39.087157697677945, "o", "\u001b[1m"] +[39.117157697677946, "o", "\u001b[36m"] +[39.14715769767795, "o", "\u001b[91m"] +[39.17715769767795, "o", "$"] +[39.20715769767795, "o", " "] +[39.23715769767795, "o", "\u001b[0m"] +[44.26715769767795, "o", "\u001b[H"] +[44.29715769767795, "o", "\u001b[J"] +[44.327157697677954, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a query selecting one row"] +[44.357157697677955, "o", "\r\n"] +[44.38715769767796, "o", "$"] +[44.41715769767796, "o", " "] +[44.44715769767796, "o", "c"] +[44.47715769767796, "o", "u"] +[44.50715769767796, "o", "r"] +[44.53715769767796, "o", "l"] +[44.56715769767796, "o", " "] +[44.597157697677964, "o", "\""] +[44.627157697677966, "o", "h"] +[44.65715769767797, "o", "t"] +[44.68715769767797, "o", "t"] +[44.71715769767797, "o", "p"] +[44.74715769767797, "o", ":"] +[44.77715769767797, "o", "/"] +[44.80715769767797, "o", "/"] +[44.83715769767797, "o", "l"] +[44.867157697677975, "o", "o"] +[44.897157697677976, "o", "c"] +[44.92715769767798, "o", "a"] +[44.95715769767798, "o", "l"] +[44.98715769767798, "o", "h"] +[45.01715769767798, "o", "o"] +[45.04715769767798, "o", "s"] +[45.07715769767798, "o", "t"] +[45.107157697677984, "o", ":"] +[45.137157697677985, "o", "8"] +[45.167157697677986, "o", "0"] +[45.19715769767799, "o", "8"] +[45.22715769767799, "o", "0"] +[45.25715769767799, "o", "/"] +[45.28715769767799, "o", "r"] +[45.31715769767799, "o", "d"] +[45.34715769767799, "o", "u"] +[45.377157697677994, "o", "?"] +[45.407157697677995, "o", "d"] +[45.437157697677996, "o", "a"] +[45.467157697678, "o", "t"] +[45.497157697678, "o", "e"] +[45.527157697678, "o", "="] +[45.557157697678, "o", "e"] +[45.587157697678, "o", "q"] +[45.617157697678, "o", "."] +[45.647157697678004, "o", "2"] +[45.677157697678005, "o", "0"] +[45.70715769767801, "o", "1"] +[45.73715769767801, "o", "2"] +[45.76715769767801, "o", "-"] +[45.79715769767801, "o", "1"] +[45.82715769767801, "o", "2"] +[45.85715769767801, "o", "-"] +[45.88715769767801, "o", "2"] +[45.917157697678014, "o", "6"] +[45.947157697678016, "o", "&"] +[45.97715769767802, "o", "s"] +[46.00715769767802, "o", "e"] +[46.03715769767802, "o", "l"] +[46.06715769767802, "o", "e"] +[46.09715769767802, "o", "c"] +[46.12715769767802, "o", "t"] +[46.157157697678024, "o", "="] +[46.187157697678025, "o", "d"] +[46.217157697678026, "o", "a"] +[46.24715769767803, "o", "t"] +[46.27715769767803, "o", "e"] +[46.30715769767803, "o", ","] +[46.33715769767803, "o", "t"] +[46.36715769767803, "o", "e"] +[46.39715769767803, "o", "m"] +[46.427157697678034, "o", "p"] +[46.457157697678035, "o", "e"] +[46.487157697678036, "o", "r"] +[46.51715769767804, "o", "a"] +[46.54715769767804, "o", "t"] +[46.57715769767804, "o", "u"] +[46.60715769767804, "o", "r"] +[46.63715769767804, "o", "e"] +[46.66715769767804, "o", "m"] +[46.697157697678044, "o", "i"] +[46.727157697678045, "o", "n"] +[46.757157697678046, "o", ","] +[46.78715769767805, "o", "t"] +[46.81715769767805, "o", "e"] +[46.84715769767805, "o", "m"] +[46.87715769767805, "o", "p"] +[46.90715769767805, "o", "e"] +[46.93715769767805, "o", "r"] +[46.967157697678054, "o", "a"] +[46.997157697678055, "o", "t"] +[47.02715769767806, "o", "u"] +[47.05715769767806, "o", "r"] +[47.08715769767806, "o", "e"] +[47.11715769767806, "o", "m"] +[47.14715769767806, "o", "a"] +[47.17715769767806, "o", "x"] +[47.20715769767806, "o", ","] +[47.237157697678064, "o", "p"] +[47.267157697678066, "o", "r"] +[47.29715769767807, "o", "e"] +[47.32715769767807, "o", "c"] +[47.35715769767807, "o", "i"] +[47.38715769767807, "o", "p"] +[47.41715769767807, "o", "i"] +[47.44715769767807, "o", "t"] +[47.477157697678074, "o", "a"] +[47.507157697678075, "o", "t"] +[47.537157697678076, "o", "i"] +[47.56715769767808, "o", "o"] +[47.59715769767808, "o", "n"] +[47.62715769767808, "o", "\""] +[47.65715769767808, "o", "\r\n"] +[47.68715769767808, "o", "\u001b[0m"] +[47.71715769767808, "o", "\r\n"] +[47.732296085358136, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.41}]"] +[47.76229608535814, "o", "\u001b[1m"] +[47.79229608535814, "o", "\u001b[36m"] +[47.82229608535814, "o", "\u001b[91m"] +[47.85229608535814, "o", "$"] +[47.88229608535814, "o", " "] +[47.91229608535814, "o", "\u001b[0m"] +[52.942296085358144, "o", "\u001b[H"] +[52.972296085358145, "o", "\u001b[J"] +[53.00229608535815, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run the query against the new version of the dataset."] +[53.03229608535815, "o", "\r\n"] +[53.06229608535815, "o", "$ # This time, use layered querying that queries fragments directly without checkout,\r\n"] +[53.09229608535815, "o", "$ # downloading them if they're not local. This is seamless to PostgREST or any other application.\r\n"] +[53.12229608535815, "o", "$"] +[53.15229608535815, "o", " "] +[53.18229608535815, "o", "s"] +[53.212296085358155, "o", "g"] +[53.242296085358156, "o", "r"] +[53.27229608535816, "o", " "] +[53.30229608535816, "o", "c"] +[53.33229608535816, "o", "h"] +[53.36229608535816, "o", "e"] +[53.39229608535816, "o", "c"] +[53.42229608535816, "o", "k"] +[53.452296085358164, "o", "o"] +[53.482296085358165, "o", "u"] +[53.512296085358166, "o", "t"] +[53.54229608535817, "o", " "] +[53.57229608535817, "o", "-"] +[53.60229608535817, "o", "-"] +[53.63229608535817, "o", "l"] +[53.66229608535817, "o", "a"] +[53.69229608535817, "o", "y"] +[53.722296085358174, "o", "e"] +[53.752296085358175, "o", "r"] +[53.782296085358176, "o", "e"] +[53.81229608535818, "o", "d"] +[53.84229608535818, "o", " "] +[53.87229608535818, "o", "d"] +[53.90229608535818, "o", "e"] +[53.93229608535818, "o", "m"] +[53.96229608535818, "o", "o"] +[53.992296085358184, "o", "/"] +[54.022296085358185, "o", "w"] +[54.052296085358186, "o", "e"] +[54.08229608535819, "o", "a"] +[54.11229608535819, "o", "t"] +[54.14229608535819, "o", "h"] +[54.17229608535819, "o", "e"] +[54.20229608535819, "o", "r"] +[54.23229608535819, "o", ":"] +[54.262296085358194, "o", "r"] +[54.292296085358196, "o", "e"] +[54.3222960853582, "o", "v"] +[54.3522960853582, "o", "i"] +[54.3822960853582, "o", "s"] +[54.4122960853582, "o", "e"] +[54.4422960853582, "o", "d"] +[54.4722960853582, "o", "_"] +[54.5022960853582, "o", "d"] +[54.532296085358205, "o", "a"] +[54.562296085358206, "o", "t"] +[54.59229608535821, "o", "a"] +[54.62229608535821, "o", "\r\n"] +[54.65229608535821, "o", "$"] +[54.68229608535821, "o", " "] +[54.71229608535821, "o", "c"] +[54.74229608535821, "o", "u"] +[54.772296085358214, "o", "r"] +[54.802296085358215, "o", "l"] +[54.832296085358216, "o", " "] +[54.86229608535822, "o", "\""] +[54.89229608535822, "o", "h"] +[54.92229608535822, "o", "t"] +[54.95229608535822, "o", "t"] +[54.98229608535822, "o", "p"] +[55.01229608535822, "o", ":"] +[55.042296085358224, "o", "/"] +[55.072296085358225, "o", "/"] +[55.102296085358226, "o", "l"] +[55.13229608535823, "o", "o"] +[55.16229608535823, "o", "c"] +[55.19229608535823, "o", "a"] +[55.22229608535823, "o", "l"] +[55.25229608535823, "o", "h"] +[55.28229608535823, "o", "o"] +[55.312296085358234, "o", "s"] +[55.342296085358235, "o", "t"] +[55.372296085358236, "o", ":"] +[55.40229608535824, "o", "8"] +[55.43229608535824, "o", "0"] +[55.46229608535824, "o", "8"] +[55.49229608535824, "o", "0"] +[55.52229608535824, "o", "/"] +[55.55229608535824, "o", "r"] +[55.582296085358244, "o", "d"] +[55.612296085358246, "o", "u"] +[55.64229608535825, "o", "?"] +[55.67229608535825, "o", "d"] +[55.70229608535825, "o", "a"] +[55.73229608535825, "o", "t"] +[55.76229608535825, "o", "e"] +[55.79229608535825, "o", "="] +[55.82229608535825, "o", "e"] +[55.852296085358255, "o", "q"] +[55.882296085358256, "o", "."] +[55.91229608535826, "o", "2"] +[55.94229608535826, "o", "0"] +[55.97229608535826, "o", "1"] +[56.00229608535826, "o", "2"] +[56.03229608535826, "o", "-"] +[56.06229608535826, "o", "1"] +[56.092296085358264, "o", "2"] +[56.122296085358265, "o", "-"] +[56.152296085358266, "o", "2"] +[56.18229608535827, "o", "6"] +[56.21229608535827, "o", "&"] +[56.24229608535827, "o", "s"] +[56.27229608535827, "o", "e"] +[56.30229608535827, "o", "l"] +[56.33229608535827, "o", "e"] +[56.362296085358274, "o", "c"] +[56.392296085358275, "o", "t"] +[56.422296085358276, "o", "="] +[56.45229608535828, "o", "d"] +[56.48229608535828, "o", "a"] +[56.51229608535828, "o", "t"] +[56.54229608535828, "o", "e"] +[56.57229608535828, "o", ","] +[56.60229608535828, "o", "t"] +[56.632296085358284, "o", "e"] +[56.662296085358285, "o", "m"] +[56.69229608535829, "o", "p"] +[56.72229608535829, "o", "e"] +[56.75229608535829, "o", "r"] +[56.78229608535829, "o", "a"] +[56.81229608535829, "o", "t"] +[56.84229608535829, "o", "u"] +[56.87229608535829, "o", "r"] +[56.902296085358294, "o", "e"] +[56.932296085358296, "o", "m"] +[56.9622960853583, "o", "i"] +[56.9922960853583, "o", "n"] +[57.0222960853583, "o", ","] +[57.0522960853583, "o", "t"] +[57.0822960853583, "o", "e"] +[57.1122960853583, "o", "m"] +[57.1422960853583, "o", "p"] +[57.172296085358305, "o", "e"] +[57.202296085358306, "o", "r"] +[57.23229608535831, "o", "a"] +[57.26229608535831, "o", "t"] +[57.29229608535831, "o", "u"] +[57.32229608535831, "o", "r"] +[57.35229608535831, "o", "e"] +[57.38229608535831, "o", "m"] +[57.412296085358314, "o", "a"] +[57.442296085358315, "o", "x"] +[57.472296085358316, "o", ","] +[57.50229608535832, "o", "p"] +[57.53229608535832, "o", "r"] +[57.56229608535832, "o", "e"] +[57.59229608535832, "o", "c"] +[57.62229608535832, "o", "i"] +[57.65229608535832, "o", "p"] +[57.682296085358324, "o", "i"] +[57.712296085358325, "o", "t"] +[57.742296085358326, "o", "a"] +[57.77229608535833, "o", "t"] +[57.80229608535833, "o", "i"] +[57.83229608535833, "o", "o"] +[57.86229608535833, "o", "n"] +[57.89229608535833, "o", "\""] +[57.92229608535833, "o", "\r\n"] +[57.952296085358334, "o", "\u001b[0m"] +[57.982296085358335, "o", "\r\n"] +[58.458476638794615, "o", "Checked out demo/weather:f2b03802497f.\r\n"] +[58.84203109741278, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.692}]"] +[58.87203109741278, "o", "\u001b[1m"] +[58.90203109741278, "o", "\u001b[36m"] +[58.93203109741278, "o", "\u001b[91m"] +[58.96203109741278, "o", "$"] +[58.992031097412784, "o", " "] +[59.022031097412786, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.13/push-to-other-engine.cast b/content/casts/versioned/archive/v0.2.13/push-to-other-engine.cast new file mode 100644 index 00000000..82307379 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.13/push-to-other-engine.cast @@ -0,0 +1,889 @@ +{"version": 2, "width": 100, "height": 26, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1618412585, "metadata": {"tss": [{"h": "The .sgconfig file is written from the point of view of the first engine.", "ts": 0.06}, {"h": "Initialize the two engines", "ts": 9.559999999999999}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 22.060000000000002}, {"h": "Push the dataset out to the other engine", "ts": 34.90741720199611}, {"h": "Check that the dataset exists on the remote engine", "ts": 43.064395017624264}, {"h": "Update the dataset on the local engine", "ts": 50.14181416511579}, {"h": "Inspect our changes", "ts": 61.5156510829932}, {"h": "Push the changes out to the remote engine", "ts": 69.25566133499217}, {"h": "Inspect the dataset on the remote engine", "ts": 76.3353004646309}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The .sgconfig file is written from the point of view of the first engine."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Here, the first engine is local and default and the second one is remote.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "c"] +[0.27, "o", "a"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "."] +[0.3900000000000001, "o", "s"] +[0.42000000000000015, "o", "g"] +[0.4500000000000002, "o", "c"] +[0.4800000000000002, "o", "o"] +[0.5100000000000002, "o", "n"] +[0.5400000000000003, "o", "f"] +[0.5700000000000003, "o", "i"] +[0.6000000000000003, "o", "g"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "\u001b[0m"] +[0.6900000000000004, "o", "\r\n"] +[0.6917833709716801, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[remote: engine_2]\r\nSG_ENGINE_ADMIN_USER=sgr\r\nSG_ENGINE_ADMIN_PWD=supersecure\r\nSG_ENGINE_POSTGRES_DB_NAME=splitgraph\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\nSG_ENGINE_DB_NAME=splitgraph"] +[0.7217833709716801, "o", "\u001b[1m"] +[0.7517833709716801, "o", "\u001b[36m"] +[0.7817833709716802, "o", "\u001b[91m"] +[0.8117833709716802, "o", "$"] +[0.8417833709716802, "o", " "] +[0.8717833709716802, "o", "\u001b[0m"] +[9.53, "o", "\u001b[H"] +[9.559999999999999, "o", "\u001b[J"] +[9.589999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the two engines"] +[9.619999999999997, "o", "\r\n"] +[9.649999999999997, "o", "$"] +[9.679999999999996, "o", " "] +[9.709999999999996, "o", "s"] +[9.739999999999995, "o", "g"] +[9.769999999999994, "o", "r"] +[9.799999999999994, "o", " "] +[9.829999999999993, "o", "i"] +[9.859999999999992, "o", "n"] +[9.889999999999992, "o", "i"] +[9.919999999999991, "o", "t"] +[9.94999999999999, "o", "\r\n"] +[9.97999999999999, "o", "$"] +[10.00999999999999, "o", " "] +[10.039999999999988, "o", "S"] +[10.069999999999988, "o", "G"] +[10.099999999999987, "o", "_"] +[10.129999999999987, "o", "E"] +[10.159999999999986, "o", "N"] +[10.189999999999985, "o", "G"] +[10.219999999999985, "o", "I"] +[10.249999999999984, "o", "N"] +[10.279999999999983, "o", "E"] +[10.309999999999983, "o", "="] +[10.339999999999982, "o", "e"] +[10.369999999999981, "o", "n"] +[10.39999999999998, "o", "g"] +[10.42999999999998, "o", "i"] +[10.45999999999998, "o", "n"] +[10.489999999999979, "o", "e"] +[10.519999999999978, "o", "_"] +[10.549999999999978, "o", "2"] +[10.579999999999977, "o", " "] +[10.609999999999976, "o", "s"] +[10.639999999999976, "o", "g"] +[10.669999999999975, "o", "r"] +[10.699999999999974, "o", " "] +[10.729999999999974, "o", "i"] +[10.759999999999973, "o", "n"] +[10.789999999999973, "o", "i"] +[10.819999999999972, "o", "t"] +[10.849999999999971, "o", "\r\n"] +[10.87999999999997, "o", "\u001b[0m"] +[10.90999999999997, "o", "\r\n"] +[11.140315685272187, "o", "Initializing engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph)...\r\n"] +[11.142056617736786, "o", "Waiting for connection....\r\n"] +[12.142056617736786, "o", "Database splitgraph already exists, skipping\r\n"] +[12.142073783874482, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[12.15452805519101, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.182984027862519, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.18455711364743, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.207368288040131, "o", "Installing Splitgraph API functions...\r\n"] +[12.257185134887665, "o", "Installing CStore management functions...\r\n"] +[12.261324558258027, "o", "Installing the audit trigger...\r\n"] +[12.275796566009491, "o", "Engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph) initialized.\r\n"] +[12.462723407745331, "o", "Initializing engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph)...\r\n"] +[12.470844659805268, "o", "Database splitgraph already exists, skipping\r\n"] +[12.470964584350556, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[12.478068504333466, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.506599578857392, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.508338842391938, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.52851429939267, "o", "Installing Splitgraph API functions...\r\n"] +[12.569327745437592, "o", "Installing CStore management functions...\r\n"] +[12.573065910339325, "o", "Installing the audit trigger...\r\n"] +[12.58665171623227, "o", "Engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph) initialized.\r\n"] +[12.616651716232269, "o", "\u001b[1m"] +[12.646651716232268, "o", "\u001b[36m"] +[12.676651716232268, "o", "\u001b[91m"] +[12.706651716232267, "o", "$"] +[12.736651716232267, "o", " "] +[12.766651716232266, "o", "\u001b[0m"] +[22.03, "o", "\u001b[H"] +[22.060000000000002, "o", "\u001b[J"] +[22.090000000000003, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[22.120000000000005, "o", "\r\n"] +[22.150000000000006, "o", "$"] +[22.180000000000007, "o", " "] +[22.210000000000008, "o", "s"] +[22.24000000000001, "o", "g"] +[22.27000000000001, "o", "r"] +[22.30000000000001, "o", " "] +[22.330000000000013, "o", "i"] +[22.360000000000014, "o", "n"] +[22.390000000000015, "o", "i"] +[22.420000000000016, "o", "t"] +[22.450000000000017, "o", " "] +[22.480000000000018, "o", "d"] +[22.51000000000002, "o", "e"] +[22.54000000000002, "o", "m"] +[22.57000000000002, "o", "o"] +[22.600000000000023, "o", "/"] +[22.630000000000024, "o", "w"] +[22.660000000000025, "o", "e"] +[22.690000000000026, "o", "a"] +[22.720000000000027, "o", "t"] +[22.75000000000003, "o", "h"] +[22.78000000000003, "o", "e"] +[22.81000000000003, "o", "r"] +[22.840000000000032, "o", "\r\n"] +[22.870000000000033, "o", "$"] +[22.900000000000034, "o", " "] +[22.930000000000035, "o", "s"] +[22.960000000000036, "o", "g"] +[22.990000000000038, "o", "r"] +[23.02000000000004, "o", " "] +[23.05000000000004, "o", "c"] +[23.08000000000004, "o", "s"] +[23.110000000000042, "o", "v"] +[23.140000000000043, "o", " "] +[23.170000000000044, "o", "i"] +[23.200000000000045, "o", "m"] +[23.230000000000047, "o", "p"] +[23.260000000000048, "o", "o"] +[23.29000000000005, "o", "r"] +[23.32000000000005, "o", "t"] +[23.35000000000005, "o", " "] +[23.380000000000052, "o", "-"] +[23.410000000000053, "o", "f"] +[23.440000000000055, "o", " "] +[23.470000000000056, "o", "."] +[23.500000000000057, "o", "."] +[23.530000000000058, "o", "/"] +[23.56000000000006, "o", "i"] +[23.59000000000006, "o", "m"] +[23.62000000000006, "o", "p"] +[23.650000000000063, "o", "o"] +[23.680000000000064, "o", "r"] +[23.710000000000065, "o", "t"] +[23.740000000000066, "o", "-"] +[23.770000000000067, "o", "f"] +[23.800000000000068, "o", "r"] +[23.83000000000007, "o", "o"] +[23.86000000000007, "o", "m"] +[23.89000000000007, "o", "-"] +[23.920000000000073, "o", "c"] +[23.950000000000074, "o", "s"] +[23.980000000000075, "o", "v"] +[24.010000000000076, "o", "/"] +[24.040000000000077, "o", "r"] +[24.07000000000008, "o", "d"] +[24.10000000000008, "o", "u"] +[24.13000000000008, "o", "-"] +[24.160000000000082, "o", "w"] +[24.190000000000083, "o", "e"] +[24.220000000000084, "o", "a"] +[24.250000000000085, "o", "t"] +[24.280000000000086, "o", "h"] +[24.310000000000088, "o", "e"] +[24.34000000000009, "o", "r"] +[24.37000000000009, "o", "-"] +[24.40000000000009, "o", "h"] +[24.430000000000092, "o", "i"] +[24.460000000000093, "o", "s"] +[24.490000000000094, "o", "t"] +[24.520000000000095, "o", "o"] +[24.550000000000097, "o", "r"] +[24.580000000000098, "o", "y"] +[24.6100000000001, "o", "."] +[24.6400000000001, "o", "c"] +[24.6700000000001, "o", "s"] +[24.700000000000102, "o", "v"] +[24.730000000000103, "o", " "] +[24.760000000000105, "o", "\\"] +[24.790000000000106, "o", "\r\n "] +[24.820000000000107, "o", "-"] +[24.850000000000108, "o", "k"] +[24.88000000000011, "o", " "] +[24.91000000000011, "o", "d"] +[24.94000000000011, "o", "a"] +[24.970000000000113, "o", "t"] +[25.000000000000114, "o", "e"] +[25.030000000000115, "o", " "] +[25.060000000000116, "o", "\\"] +[25.090000000000117, "o", "\r\n "] +[25.12000000000012, "o", "-"] +[25.15000000000012, "o", "t"] +[25.18000000000012, "o", " "] +[25.21000000000012, "o", "d"] +[25.240000000000123, "o", "a"] +[25.270000000000124, "o", "t"] +[25.300000000000125, "o", "e"] +[25.330000000000126, "o", " "] +[25.360000000000127, "o", "t"] +[25.39000000000013, "o", "i"] +[25.42000000000013, "o", "m"] +[25.45000000000013, "o", "e"] +[25.480000000000132, "o", "s"] +[25.510000000000133, "o", "t"] +[25.540000000000134, "o", "a"] +[25.570000000000135, "o", "m"] +[25.600000000000136, "o", "p"] +[25.630000000000138, "o", " "] +[25.66000000000014, "o", "\\"] +[25.69000000000014, "o", "\r\n "] +[25.72000000000014, "o", "-"] +[25.750000000000142, "o", "-"] +[25.780000000000143, "o", "s"] +[25.810000000000144, "o", "e"] +[25.840000000000146, "o", "p"] +[25.870000000000147, "o", "a"] +[25.900000000000148, "o", "r"] +[25.93000000000015, "o", "a"] +[25.96000000000015, "o", "t"] +[25.99000000000015, "o", "o"] +[26.020000000000152, "o", "r"] +[26.050000000000153, "o", " "] +[26.080000000000155, "o", "\""] +[26.110000000000156, "o", ";"] +[26.140000000000157, "o", "\""] +[26.170000000000158, "o", " "] +[26.20000000000016, "o", "\\"] +[26.23000000000016, "o", "\r\n "] +[26.26000000000016, "o", "d"] +[26.290000000000163, "o", "e"] +[26.320000000000164, "o", "m"] +[26.350000000000165, "o", "o"] +[26.380000000000166, "o", "/"] +[26.410000000000167, "o", "w"] +[26.44000000000017, "o", "e"] +[26.47000000000017, "o", "a"] +[26.50000000000017, "o", "t"] +[26.53000000000017, "o", "h"] +[26.560000000000173, "o", "e"] +[26.590000000000174, "o", "r"] +[26.620000000000175, "o", " "] +[26.650000000000176, "o", "r"] +[26.680000000000177, "o", "d"] +[26.71000000000018, "o", "u"] +[26.74000000000018, "o", "\r\n"] +[26.77000000000018, "o", "$"] +[26.800000000000182, "o", " "] +[26.830000000000183, "o", "s"] +[26.860000000000184, "o", "g"] +[26.890000000000185, "o", "r"] +[26.920000000000186, "o", " "] +[26.950000000000188, "o", "c"] +[26.98000000000019, "o", "o"] +[27.01000000000019, "o", "m"] +[27.04000000000019, "o", "m"] +[27.070000000000192, "o", "i"] +[27.100000000000193, "o", "t"] +[27.130000000000194, "o", " "] +[27.160000000000196, "o", "d"] +[27.190000000000197, "o", "e"] +[27.220000000000198, "o", "m"] +[27.2500000000002, "o", "o"] +[27.2800000000002, "o", "/"] +[27.3100000000002, "o", "w"] +[27.340000000000202, "o", "e"] +[27.370000000000203, "o", "a"] +[27.400000000000205, "o", "t"] +[27.430000000000206, "o", "h"] +[27.460000000000207, "o", "e"] +[27.490000000000208, "o", "r"] +[27.52000000000021, "o", "\r\n"] +[27.55000000000021, "o", "$"] +[27.58000000000021, "o", " "] +[27.610000000000213, "o", "s"] +[27.640000000000214, "o", "g"] +[27.670000000000215, "o", "r"] +[27.700000000000216, "o", " "] +[27.730000000000217, "o", "t"] +[27.76000000000022, "o", "a"] +[27.79000000000022, "o", "g"] +[27.82000000000022, "o", " "] +[27.85000000000022, "o", "d"] +[27.880000000000223, "o", "e"] +[27.910000000000224, "o", "m"] +[27.940000000000225, "o", "o"] +[27.970000000000226, "o", "/"] +[28.000000000000227, "o", "w"] +[28.03000000000023, "o", "e"] +[28.06000000000023, "o", "a"] +[28.09000000000023, "o", "t"] +[28.120000000000232, "o", "h"] +[28.150000000000233, "o", "e"] +[28.180000000000234, "o", "r"] +[28.210000000000235, "o", " "] +[28.240000000000236, "o", "i"] +[28.270000000000238, "o", "n"] +[28.30000000000024, "o", "i"] +[28.33000000000024, "o", "t"] +[28.36000000000024, "o", "i"] +[28.390000000000242, "o", "a"] +[28.420000000000243, "o", "l"] +[28.450000000000244, "o", "_"] +[28.480000000000246, "o", "d"] +[28.510000000000247, "o", "a"] +[28.540000000000248, "o", "t"] +[28.57000000000025, "o", "a"] +[28.60000000000025, "o", "\r\n"] +[28.63000000000025, "o", "\u001b[0m"] +[28.660000000000252, "o", "\r\n"] +[28.917318258285775, "o", "Initialized empty repository demo/weather\r\n"] +[29.164220962524666, "o", "Committing demo/weather...\r\n"] +[29.197296772003426, "o", "Processing table rdu\r\n"] +[29.42053547859217, "o", "Committed demo/weather as a605b908e295.\r\n"] +[29.667417201996102, "o", "Tagged demo/weather:a605b908e29550f21bc60c7a2185e1d3584bcb971fb96a7947f1c1c3ce10bde3 with initial_data.\r\n"] +[29.697417201996103, "o", "\u001b[1m"] +[29.727417201996104, "o", "\u001b[36m"] +[29.757417201996105, "o", "\u001b[91m"] +[29.787417201996107, "o", "$"] +[29.817417201996108, "o", " "] +[29.84741720199611, "o", "\u001b[0m"] +[34.87741720199611, "o", "\u001b[H"] +[34.90741720199611, "o", "\u001b[J"] +[34.93741720199611, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset out to the other engine"] +[34.96741720199611, "o", "\r\n"] +[34.997417201996114, "o", "$ # Since by default Splitgraph is configured to use S3 for uploading, we need\r\n"] +[35.027417201996116, "o", "$ # to override the upload handler and upload data to the actual database.\r\n"] +[35.05741720199612, "o", "$"] +[35.08741720199612, "o", " "] +[35.11741720199612, "o", "s"] +[35.14741720199612, "o", "g"] +[35.17741720199612, "o", "r"] +[35.20741720199612, "o", " "] +[35.237417201996124, "o", "p"] +[35.267417201996125, "o", "u"] +[35.297417201996126, "o", "s"] +[35.32741720199613, "o", "h"] +[35.35741720199613, "o", " "] +[35.38741720199613, "o", "d"] +[35.41741720199613, "o", "e"] +[35.44741720199613, "o", "m"] +[35.47741720199613, "o", "o"] +[35.507417201996134, "o", "/"] +[35.537417201996135, "o", "w"] +[35.567417201996136, "o", "e"] +[35.59741720199614, "o", "a"] +[35.62741720199614, "o", "t"] +[35.65741720199614, "o", "h"] +[35.68741720199614, "o", "e"] +[35.71741720199614, "o", "r"] +[35.74741720199614, "o", " "] +[35.777417201996144, "o", "-"] +[35.807417201996145, "o", "-"] +[35.837417201996146, "o", "r"] +[35.86741720199615, "o", "e"] +[35.89741720199615, "o", "m"] +[35.92741720199615, "o", "o"] +[35.95741720199615, "o", "t"] +[35.98741720199615, "o", "e"] +[36.01741720199615, "o", " "] +[36.047417201996154, "o", "e"] +[36.077417201996155, "o", "n"] +[36.10741720199616, "o", "g"] +[36.13741720199616, "o", "i"] +[36.16741720199616, "o", "n"] +[36.19741720199616, "o", "e"] +[36.22741720199616, "o", "_"] +[36.25741720199616, "o", "2"] +[36.28741720199616, "o", " "] +[36.317417201996165, "o", "d"] +[36.347417201996166, "o", "e"] +[36.37741720199617, "o", "m"] +[36.40741720199617, "o", "o"] +[36.43741720199617, "o", "/"] +[36.46741720199617, "o", "w"] +[36.49741720199617, "o", "e"] +[36.52741720199617, "o", "a"] +[36.557417201996174, "o", "t"] +[36.587417201996175, "o", "h"] +[36.617417201996176, "o", "e"] +[36.64741720199618, "o", "r"] +[36.67741720199618, "o", " "] +[36.70741720199618, "o", "-"] +[36.73741720199618, "o", "-"] +[36.76741720199618, "o", "u"] +[36.79741720199618, "o", "p"] +[36.827417201996184, "o", "l"] +[36.857417201996185, "o", "o"] +[36.887417201996186, "o", "a"] +[36.91741720199619, "o", "d"] +[36.94741720199619, "o", "-"] +[36.97741720199619, "o", "h"] +[37.00741720199619, "o", "a"] +[37.03741720199619, "o", "n"] +[37.06741720199619, "o", "d"] +[37.097417201996194, "o", "l"] +[37.127417201996195, "o", "e"] +[37.157417201996196, "o", "r"] +[37.1874172019962, "o", " "] +[37.2174172019962, "o", "D"] +[37.2474172019962, "o", "B"] +[37.2774172019962, "o", "\r\n"] +[37.3074172019962, "o", "\u001b[0m"] +[37.3374172019962, "o", "\r\n"] +[37.53266675949132, "o", "Pushing demo/weather to demo/weather on remote engine_2\r\n"] +[37.53307731628453, "o", "Gathering remote metadata...\r\n"] +[37.60137875556981, "o", "Uploading 1 object, total size 109.61 KiB\r\n"] +[37.609583454132434, "o", "\r 0%| | 0/1 [00:00 aa07afa799a5\r\n"] +[24.3688685512544, "o", "\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[24.37628885269178, "o", "Executing SQL...\r\n"] +[24.60337921142591, "o", "Committing demo/summary...\r\n"] +[24.634251556396613, "o", "Processing table monthly_summary\r\n"] +[24.730373344421515, "o", " ---> 1ef9a231926f\r\n"] +[24.733936986923347, "o", "Successfully built demo/summary:1ef9a231926f.\r\n"] +[24.96504469871534, "o", "Tagged demo/summary:1ef9a231926f40124a73b8ca20bb5bf4613eaa6c90eae3c5f1f4859654f0438f with based_on_initial.\r\n"] +[24.99504469871534, "o", "\u001b[1m"] +[25.02504469871534, "o", "\u001b[36m"] +[25.055044698715342, "o", "\u001b[91m"] +[25.085044698715343, "o", "$"] +[25.115044698715344, "o", " "] +[25.145044698715346, "o", "\u001b[0m"] +[30.175044698715347, "o", "\u001b[H"] +[30.205044698715348, "o", "\u001b[J"] +[30.23504469871535, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Much like with Docker, the build result is cached, so running build again checks out the existing image."] +[30.26504469871535, "o", "\r\n"] +[30.29504469871535, "o", "$"] +[30.325044698715352, "o", " "] +[30.355044698715353, "o", "s"] +[30.385044698715355, "o", "g"] +[30.415044698715356, "o", "r"] +[30.445044698715357, "o", " "] +[30.475044698715358, "o", "b"] +[30.50504469871536, "o", "u"] +[30.53504469871536, "o", "i"] +[30.56504469871536, "o", "l"] +[30.595044698715363, "o", "d"] +[30.625044698715364, "o", " "] +[30.655044698715365, "o", "r"] +[30.685044698715366, "o", "d"] +[30.715044698715367, "o", "u"] +[30.74504469871537, "o", "-"] +[30.77504469871537, "o", "w"] +[30.80504469871537, "o", "e"] +[30.83504469871537, "o", "a"] +[30.865044698715373, "o", "t"] +[30.895044698715374, "o", "h"] +[30.925044698715375, "o", "e"] +[30.955044698715376, "o", "r"] +[30.985044698715377, "o", "-"] +[31.01504469871538, "o", "s"] +[31.04504469871538, "o", "u"] +[31.07504469871538, "o", "m"] +[31.105044698715382, "o", "m"] +[31.135044698715383, "o", "a"] +[31.165044698715384, "o", "r"] +[31.195044698715385, "o", "y"] +[31.225044698715386, "o", "."] +[31.255044698715388, "o", "s"] +[31.28504469871539, "o", "p"] +[31.31504469871539, "o", "l"] +[31.34504469871539, "o", "i"] +[31.375044698715392, "o", "t"] +[31.405044698715393, "o", "f"] +[31.435044698715394, "o", "i"] +[31.465044698715396, "o", "l"] +[31.495044698715397, "o", "e"] +[31.525044698715398, "o", " "] +[31.5550446987154, "o", "-"] +[31.5850446987154, "o", "o"] +[31.6150446987154, "o", " "] +[31.645044698715402, "o", "d"] +[31.675044698715404, "o", "e"] +[31.705044698715405, "o", "m"] +[31.735044698715406, "o", "o"] +[31.765044698715407, "o", "/"] +[31.795044698715408, "o", "s"] +[31.82504469871541, "o", "u"] +[31.85504469871541, "o", "m"] +[31.88504469871541, "o", "m"] +[31.915044698715413, "o", "a"] +[31.945044698715414, "o", "r"] +[31.975044698715415, "o", "y"] +[32.005044698715416, "o", "\r\n"] +[32.03504469871542, "o", "\u001b[0m"] +[32.06504469871542, "o", "\r\n"] +[32.2900729751589, "o", "Executing Splitfile rdu-weather-summary.splitfile with arguments {}\r\n"] +[32.379175004959315, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather IMPORT rdu AS source_data\u001b[0m\r\n"] +[32.380498943329066, "o", "Resolving repository demo/weather\r\n"] +[32.524290380478114, "o", " ---> Using cache\r\n ---> aa07afa799a5\r\n\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[32.76343041420004, "o", " ---> Using cache\r\n"] +[32.76372152328512, "o", " ---> 1ef9a231926f\r\n"] +[32.76837831497213, "o", "Successfully built demo/summary:1ef9a231926f.\r\n"] +[32.79837831497213, "o", "\u001b[1m"] +[32.828378314972134, "o", "\u001b[36m"] +[32.858378314972136, "o", "\u001b[91m"] +[32.88837831497214, "o", "$"] +[32.91837831497214, "o", " "] +[32.94837831497214, "o", "\u001b[0m"] +[37.97837831497214, "o", "\u001b[H"] +[38.00837831497214, "o", "\u001b[J"] +[38.03837831497214, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the new dataset"] +[38.06837831497214, "o", "\r\n"] +[38.098378314972145, "o", "$"] +[38.128378314972146, "o", " "] +[38.15837831497215, "o", "s"] +[38.18837831497215, "o", "g"] +[38.21837831497215, "o", "r"] +[38.24837831497215, "o", " "] +[38.27837831497215, "o", "s"] +[38.30837831497215, "o", "h"] +[38.338378314972154, "o", "o"] +[38.368378314972155, "o", "w"] +[38.398378314972156, "o", " "] +[38.42837831497216, "o", "d"] +[38.45837831497216, "o", "e"] +[38.48837831497216, "o", "m"] +[38.51837831497216, "o", "o"] +[38.54837831497216, "o", "/"] +[38.57837831497216, "o", "s"] +[38.608378314972164, "o", "u"] +[38.638378314972165, "o", "m"] +[38.668378314972166, "o", "m"] +[38.69837831497217, "o", "a"] +[38.72837831497217, "o", "r"] +[38.75837831497217, "o", "y"] +[38.78837831497217, "o", ":"] +[38.81837831497217, "o", "b"] +[38.84837831497217, "o", "a"] +[38.878378314972174, "o", "s"] +[38.908378314972175, "o", "e"] +[38.93837831497218, "o", "d"] +[38.96837831497218, "o", "_"] +[38.99837831497218, "o", "o"] +[39.02837831497218, "o", "n"] +[39.05837831497218, "o", "_"] +[39.08837831497218, "o", "i"] +[39.11837831497218, "o", "n"] +[39.148378314972184, "o", "i"] +[39.178378314972186, "o", "t"] +[39.20837831497219, "o", "i"] +[39.23837831497219, "o", "a"] +[39.26837831497219, "o", "l"] +[39.29837831497219, "o", "\r\n"] +[39.32837831497219, "o", "$"] +[39.35837831497219, "o", " "] +[39.38837831497219, "o", "s"] +[39.418378314972195, "o", "g"] +[39.448378314972196, "o", "r"] +[39.4783783149722, "o", " "] +[39.5083783149722, "o", "t"] +[39.5383783149722, "o", "a"] +[39.5683783149722, "o", "b"] +[39.5983783149722, "o", "l"] +[39.6283783149722, "o", "e"] +[39.658378314972204, "o", " "] +[39.688378314972205, "o", "d"] +[39.718378314972206, "o", "e"] +[39.74837831497221, "o", "m"] +[39.77837831497221, "o", "o"] +[39.80837831497221, "o", "/"] +[39.83837831497221, "o", "s"] +[39.86837831497221, "o", "u"] +[39.89837831497221, "o", "m"] +[39.928378314972214, "o", "m"] +[39.958378314972215, "o", "a"] +[39.988378314972216, "o", "r"] +[40.01837831497222, "o", "y"] +[40.04837831497222, "o", ":"] +[40.07837831497222, "o", "b"] +[40.10837831497222, "o", "a"] +[40.13837831497222, "o", "s"] +[40.16837831497222, "o", "e"] +[40.198378314972224, "o", "d"] +[40.228378314972225, "o", "_"] +[40.25837831497223, "o", "o"] +[40.28837831497223, "o", "n"] +[40.31837831497223, "o", "_"] +[40.34837831497223, "o", "i"] +[40.37837831497223, "o", "n"] +[40.40837831497223, "o", "i"] +[40.43837831497223, "o", "t"] +[40.468378314972234, "o", "i"] +[40.498378314972236, "o", "a"] +[40.52837831497224, "o", "l"] +[40.55837831497224, "o", " "] +[40.58837831497224, "o", "m"] +[40.61837831497224, "o", "o"] +[40.64837831497224, "o", "n"] +[40.67837831497224, "o", "t"] +[40.708378314972244, "o", "h"] +[40.738378314972245, "o", "l"] +[40.768378314972246, "o", "y"] +[40.79837831497225, "o", "_"] +[40.82837831497225, "o", "s"] +[40.85837831497225, "o", "u"] +[40.88837831497225, "o", "m"] +[40.91837831497225, "o", "m"] +[40.94837831497225, "o", "a"] +[40.978378314972254, "o", "r"] +[41.008378314972255, "o", "y"] +[41.038378314972256, "o", "\r\n"] +[41.06837831497226, "o", "$"] +[41.09837831497226, "o", " "] +[41.12837831497226, "o", "s"] +[41.15837831497226, "o", "g"] +[41.18837831497226, "o", "r"] +[41.21837831497226, "o", " "] +[41.248378314972264, "o", "s"] +[41.278378314972265, "o", "q"] +[41.308378314972266, "o", "l"] +[41.33837831497227, "o", " "] +[41.36837831497227, "o", "-"] +[41.39837831497227, "o", "s"] +[41.42837831497227, "o", " "] +[41.45837831497227, "o", "d"] +[41.48837831497227, "o", "e"] +[41.518378314972274, "o", "m"] +[41.548378314972275, "o", "o"] +[41.57837831497228, "o", "/"] +[41.60837831497228, "o", "s"] +[41.63837831497228, "o", "u"] +[41.66837831497228, "o", "m"] +[41.69837831497228, "o", "m"] +[41.72837831497228, "o", "a"] +[41.75837831497228, "o", "r"] +[41.788378314972284, "o", "y"] +[41.818378314972286, "o", " "] +[41.84837831497229, "o", "\""] +[41.87837831497229, "o", "S"] +[41.90837831497229, "o", "E"] +[41.93837831497229, "o", "L"] +[41.96837831497229, "o", "E"] +[41.99837831497229, "o", "C"] +[42.028378314972294, "o", "T"] +[42.058378314972295, "o", " "] +[42.088378314972296, "o", "*"] +[42.1183783149723, "o", " "] +[42.1483783149723, "o", "F"] +[42.1783783149723, "o", "R"] +[42.2083783149723, "o", "O"] +[42.2383783149723, "o", "M"] +[42.2683783149723, "o", " "] +[42.298378314972304, "o", "m"] +[42.328378314972305, "o", "o"] +[42.358378314972306, "o", "n"] +[42.38837831497231, "o", "t"] +[42.41837831497231, "o", "h"] +[42.44837831497231, "o", "l"] +[42.47837831497231, "o", "y"] +[42.50837831497231, "o", "_"] +[42.53837831497231, "o", "s"] +[42.568378314972314, "o", "u"] +[42.598378314972315, "o", "m"] +[42.628378314972316, "o", "m"] +[42.65837831497232, "o", "a"] +[42.68837831497232, "o", "r"] +[42.71837831497232, "o", "y"] +[42.74837831497232, "o", " "] +[42.77837831497232, "o", "O"] +[42.80837831497232, "o", "R"] +[42.838378314972324, "o", "D"] +[42.868378314972325, "o", "E"] +[42.89837831497233, "o", "R"] +[42.92837831497233, "o", " "] +[42.95837831497233, "o", "B"] +[42.98837831497233, "o", "Y"] +[43.01837831497233, "o", " "] +[43.04837831497233, "o", "m"] +[43.07837831497233, "o", "o"] +[43.108378314972335, "o", "n"] +[43.138378314972336, "o", "t"] +[43.16837831497234, "o", "h"] +[43.19837831497234, "o", " "] +[43.22837831497234, "o", "D"] +[43.25837831497234, "o", "E"] +[43.28837831497234, "o", "S"] +[43.31837831497234, "o", "C"] +[43.348378314972344, "o", " "] +[43.378378314972345, "o", "L"] +[43.408378314972346, "o", "I"] +[43.43837831497235, "o", "M"] +[43.46837831497235, "o", "I"] +[43.49837831497235, "o", "T"] +[43.52837831497235, "o", " "] +[43.55837831497235, "o", "5"] +[43.58837831497235, "o", "\""] +[43.618378314972354, "o", "\r\n"] +[43.648378314972355, "o", "\u001b[0m"] +[43.678378314972356, "o", "\r\n"] +[43.908330173492864, "o", "Image demo/summary:1ef9a231926f40124a73b8ca20bb5bf4613eaa6c90eae3c5f1f4859654f0438f\r\n"] +[43.90845677375837, "o", "CREATE TABLE monthly_summary AS ( SELECT to_char(date, 'YYYYMM') AS month, AVG(precipitation) AS average_precipitation, AVG(snowfall) AS average_snowfall FROM source_data GROUP BY month ORDER BY month ASC)\r\nCreated at 2021-04-14T15:04:16.350178\r\n"] +[43.91010615348859, "o", "Size: 111.78 KiB\r\n"] +[43.91011807441755, "o", "Parent: aa07afa799a54dc67e7b114439e3ac31450b68a4420435cb21e2ceb1fd993996\r\n\r\nTables:\r\n"] +[43.91068717956586, "o", " monthly_summary\r\n source_data\r\n"] +[44.148903579712346, "o", "Table demo/summary:1ef9a231926f40124a73b8ca20bb5bf4613eaa6c90eae3c5f1f4859654f0438f/monthly_summary\r\n"] +[44.1489212226872, "o", "\r\n"] +[44.15047690391584, "o", "Size: 2.17 KiB\r\n"] +[44.151639671326116, "o", "Rows: 153\r\n"] +[44.15165731430097, "o", "Columns: \r\n month (text)\r\n average_precipitation (numeric)\r\n average_snowfall (numeric)"] +[44.152188987732366, "o", "\r\n\r\nObjects: \r\n o5e29c3cf82603335df66690a448ca1f604f0002d5a3496b18c982a5ea835f3\r\n"] +[44.40048501014753, "o", "201909 0.171667 0\r\n201908 0.139032 0\r\n201907 0.117097 0\r\n201906 0.12 0\r\n201905 0.103548 0\r\n"] +[44.43048501014753, "o", "\u001b[1m"] +[44.46048501014753, "o", "\u001b[36m"] +[44.49048501014753, "o", "\u001b[91m"] +[44.52048501014753, "o", "$"] +[44.55048501014753, "o", " "] +[44.580485010147534, "o", "\u001b[0m"] +[52.97837831497214, "o", "\u001b[H"] +[53.00837831497214, "o", "\u001b[J"] +[53.03837831497214, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image's provenance (generated from its metadata)"] +[53.06837831497214, "o", "\r\n"] +[53.098378314972145, "o", "$"] +[53.128378314972146, "o", " "] +[53.15837831497215, "o", "s"] +[53.18837831497215, "o", "g"] +[53.21837831497215, "o", "r"] +[53.24837831497215, "o", " "] +[53.27837831497215, "o", "p"] +[53.30837831497215, "o", "r"] +[53.338378314972154, "o", "o"] +[53.368378314972155, "o", "v"] +[53.398378314972156, "o", "e"] +[53.42837831497216, "o", "n"] +[53.45837831497216, "o", "a"] +[53.48837831497216, "o", "n"] +[53.51837831497216, "o", "c"] +[53.54837831497216, "o", "e"] +[53.57837831497216, "o", " "] +[53.608378314972164, "o", "d"] +[53.638378314972165, "o", "e"] +[53.668378314972166, "o", "m"] +[53.69837831497217, "o", "o"] +[53.72837831497217, "o", "/"] +[53.75837831497217, "o", "s"] +[53.78837831497217, "o", "u"] +[53.81837831497217, "o", "m"] +[53.84837831497217, "o", "m"] +[53.878378314972174, "o", "a"] +[53.908378314972175, "o", "r"] +[53.93837831497218, "o", "y"] +[53.96837831497218, "o", "\r\n"] +[53.99837831497218, "o", "$"] +[54.02837831497218, "o", " "] +[54.05837831497218, "o", "s"] +[54.08837831497218, "o", "g"] +[54.11837831497218, "o", "r"] +[54.148378314972184, "o", " "] +[54.178378314972186, "o", "p"] +[54.20837831497219, "o", "r"] +[54.23837831497219, "o", "o"] +[54.26837831497219, "o", "v"] +[54.29837831497219, "o", "e"] +[54.32837831497219, "o", "n"] +[54.35837831497219, "o", "a"] +[54.38837831497219, "o", "n"] +[54.418378314972195, "o", "c"] +[54.448378314972196, "o", "e"] +[54.4783783149722, "o", " "] +[54.5083783149722, "o", "-"] +[54.5383783149722, "o", "-"] +[54.5683783149722, "o", "f"] +[54.5983783149722, "o", "u"] +[54.6283783149722, "o", "l"] +[54.658378314972204, "o", "l"] +[54.688378314972205, "o", " "] +[54.718378314972206, "o", "d"] +[54.74837831497221, "o", "e"] +[54.77837831497221, "o", "m"] +[54.80837831497221, "o", "o"] +[54.83837831497221, "o", "/"] +[54.86837831497221, "o", "s"] +[54.89837831497221, "o", "u"] +[54.928378314972214, "o", "m"] +[54.958378314972215, "o", "m"] +[54.988378314972216, "o", "a"] +[55.01837831497222, "o", "r"] +[55.04837831497222, "o", "y"] +[55.07837831497222, "o", "\r\n"] +[55.10837831497222, "o", "\u001b[0m"] +[55.13837831497222, "o", "\r\n"] +[55.37784164428741, "o", "demo/summary:1ef9a231926f40124a73b8ca20bb5bf4613eaa6c90eae3c5f1f4859654f0438f depends on:\r\n"] +[55.377863817215264, "o", "demo/weather:07f4fcd00b06b631c4f2dd4a2125601ef5689829dd00b52f397a047184a77604\r\n"] +[55.611556463241875, "o", "# Splitfile commands used to recreate demo/summary:1ef9a231926f40124a73b8ca20bb5bf4613eaa6c90eae3c5f1f4859654f0438f\r\nFROM demo/weather:07f4fcd00b06b631c4f2dd4a2125601ef5689829dd00b52f397a047184a77604 IMPORT rdu AS source_data\r\nSQL {CREATE TABLE monthly_summary\r\n AS SELECT to_char(date, 'YYYYMM') AS month\r\n , avg(precipitation) AS average_precipitation\r\n , avg(snowfall) AS average_snowfall\r\n FROM source_data\r\n GROUP BY month\r\n ORDER BY month ASC}\r\n"] +[55.641556463241876, "o", "\u001b[1m"] +[55.67155646324188, "o", "\u001b[36m"] +[55.70155646324188, "o", "\u001b[91m"] +[55.73155646324188, "o", "$"] +[55.76155646324188, "o", " "] +[55.79155646324188, "o", "\u001b[0m"] +[60.82155646324188, "o", "\u001b[H"] +[60.851556463241884, "o", "\u001b[J"] +[60.881556463241886, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We can also see that a new image has been derived from demo/weather"] +[60.91155646324189, "o", "\r\n"] +[60.94155646324189, "o", "$"] +[60.97155646324189, "o", " "] +[61.00155646324189, "o", "s"] +[61.03155646324189, "o", "g"] +[61.06155646324189, "o", "r"] +[61.09155646324189, "o", " "] +[61.121556463241895, "o", "d"] +[61.151556463241896, "o", "e"] +[61.1815564632419, "o", "p"] +[61.2115564632419, "o", "e"] +[61.2415564632419, "o", "n"] +[61.2715564632419, "o", "d"] +[61.3015564632419, "o", "e"] +[61.3315564632419, "o", "n"] +[61.361556463241904, "o", "t"] +[61.391556463241905, "o", "s"] +[61.421556463241906, "o", " "] +[61.45155646324191, "o", "d"] +[61.48155646324191, "o", "e"] +[61.51155646324191, "o", "m"] +[61.54155646324191, "o", "o"] +[61.57155646324191, "o", "/"] +[61.60155646324191, "o", "w"] +[61.631556463241914, "o", "e"] +[61.661556463241915, "o", "a"] +[61.691556463241916, "o", "t"] +[61.72155646324192, "o", "h"] +[61.75155646324192, "o", "e"] +[61.78155646324192, "o", "r"] +[61.81155646324192, "o", "\r\n"] +[61.84155646324192, "o", "\u001b[0m"] +[61.87155646324192, "o", "\r\n"] +[62.09992903709446, "o", "demo/weather:07f4fcd00b06b631c4f2dd4a2125601ef5689829dd00b52f397a047184a77604 is depended on by:\r\n"] +[62.099952402115214, "o", "demo/summary:1ef9a231926f40124a73b8ca20bb5bf4613eaa6c90eae3c5f1f4859654f0438f\r\n"] +[62.129952402115215, "o", "\u001b[1m"] +[62.159952402115216, "o", "\u001b[36m"] +[62.18995240211522, "o", "\u001b[91m"] +[62.21995240211522, "o", "$"] +[62.24995240211522, "o", " "] +[62.27995240211522, "o", "\u001b[0m"] +[67.30995240211521, "o", "\u001b[H"] +[67.33995240211522, "o", "\u001b[J"] +[67.36995240211522, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now pretend there's been a revision to the source historical weather data"] +[67.39995240211522, "o", "\r\n"] +[67.42995240211522, "o", "$"] +[67.45995240211522, "o", " "] +[67.48995240211522, "o", "s"] +[67.51995240211522, "o", "g"] +[67.54995240211522, "o", "r"] +[67.57995240211523, "o", " "] +[67.60995240211523, "o", "s"] +[67.63995240211523, "o", "q"] +[67.66995240211523, "o", "l"] +[67.69995240211523, "o", " "] +[67.72995240211523, "o", "-"] +[67.75995240211523, "o", "s"] +[67.78995240211523, "o", " "] +[67.81995240211523, "o", "d"] +[67.84995240211524, "o", "e"] +[67.87995240211524, "o", "m"] +[67.90995240211524, "o", "o"] +[67.93995240211524, "o", "/"] +[67.96995240211524, "o", "w"] +[67.99995240211524, "o", "e"] +[68.02995240211524, "o", "a"] +[68.05995240211524, "o", "t"] +[68.08995240211524, "o", "h"] +[68.11995240211525, "o", "e"] +[68.14995240211525, "o", "r"] +[68.17995240211525, "o", " "] +[68.20995240211525, "o", "\""] +[68.23995240211525, "o", "U"] +[68.26995240211525, "o", "P"] +[68.29995240211525, "o", "D"] +[68.32995240211525, "o", "A"] +[68.35995240211525, "o", "T"] +[68.38995240211526, "o", "E"] +[68.41995240211526, "o", " "] +[68.44995240211526, "o", "r"] +[68.47995240211526, "o", "d"] +[68.50995240211526, "o", "u"] +[68.53995240211526, "o", " "] +[68.56995240211526, "o", "S"] +[68.59995240211526, "o", "E"] +[68.62995240211526, "o", "T"] +[68.65995240211527, "o", " "] +[68.68995240211527, "o", "p"] +[68.71995240211527, "o", "r"] +[68.74995240211527, "o", "e"] +[68.77995240211527, "o", "c"] +[68.80995240211527, "o", "i"] +[68.83995240211527, "o", "p"] +[68.86995240211527, "o", "i"] +[68.89995240211528, "o", "t"] +[68.92995240211528, "o", "a"] +[68.95995240211528, "o", "t"] +[68.98995240211528, "o", "i"] +[69.01995240211528, "o", "o"] +[69.04995240211528, "o", "n"] +[69.07995240211528, "o", " "] +[69.10995240211528, "o", "="] +[69.13995240211528, "o", " "] +[69.16995240211529, "o", "p"] +[69.19995240211529, "o", "r"] +[69.22995240211529, "o", "e"] +[69.25995240211529, "o", "c"] +[69.28995240211529, "o", "i"] +[69.31995240211529, "o", "p"] +[69.34995240211529, "o", "i"] +[69.3799524021153, "o", "t"] +[69.4099524021153, "o", "a"] +[69.4399524021153, "o", "t"] +[69.4699524021153, "o", "i"] +[69.4999524021153, "o", "o"] +[69.5299524021153, "o", "n"] +[69.5599524021153, "o", " "] +[69.5899524021153, "o", "*"] +[69.6199524021153, "o", " "] +[69.6499524021153, "o", "1"] +[69.6799524021153, "o", "."] +[69.7099524021153, "o", "2"] +[69.7399524021153, "o", " "] +[69.76995240211531, "o", "W"] +[69.79995240211531, "o", "H"] +[69.82995240211531, "o", "E"] +[69.85995240211531, "o", "R"] +[69.88995240211531, "o", "E"] +[69.91995240211531, "o", " "] +[69.94995240211531, "o", "E"] +[69.97995240211532, "o", "X"] +[70.00995240211532, "o", "T"] +[70.03995240211532, "o", "R"] +[70.06995240211532, "o", "A"] +[70.09995240211532, "o", "C"] +[70.12995240211532, "o", "T"] +[70.15995240211532, "o", " "] +[70.18995240211532, "o", "("] +[70.21995240211533, "o", "y"] +[70.24995240211533, "o", "e"] +[70.27995240211533, "o", "a"] +[70.30995240211533, "o", "r"] +[70.33995240211533, "o", " "] +[70.36995240211533, "o", "F"] +[70.39995240211533, "o", "R"] +[70.42995240211533, "o", "O"] +[70.45995240211533, "o", "M"] +[70.48995240211534, "o", " "] +[70.51995240211534, "o", "d"] +[70.54995240211534, "o", "a"] +[70.57995240211534, "o", "t"] +[70.60995240211534, "o", "e"] +[70.63995240211534, "o", ")"] +[70.66995240211534, "o", " "] +[70.69995240211534, "o", "="] +[70.72995240211534, "o", " "] +[70.75995240211535, "o", "2"] +[70.78995240211535, "o", "0"] +[70.81995240211535, "o", "1"] +[70.84995240211535, "o", "2"] +[70.87995240211535, "o", "\""] +[70.90995240211535, "o", "\r\n"] +[70.93995240211535, "o", "$"] +[70.96995240211535, "o", " "] +[70.99995240211535, "o", "s"] +[71.02995240211536, "o", "g"] +[71.05995240211536, "o", "r"] +[71.08995240211536, "o", " "] +[71.11995240211536, "o", "c"] +[71.14995240211536, "o", "o"] +[71.17995240211536, "o", "m"] +[71.20995240211536, "o", "m"] +[71.23995240211536, "o", "i"] +[71.26995240211536, "o", "t"] +[71.29995240211537, "o", " "] +[71.32995240211537, "o", "-"] +[71.35995240211537, "o", "m"] +[71.38995240211537, "o", " "] +[71.41995240211537, "o", "\""] +[71.44995240211537, "o", "R"] +[71.47995240211537, "o", "e"] +[71.50995240211537, "o", "v"] +[71.53995240211538, "o", "i"] +[71.56995240211538, "o", "s"] +[71.59995240211538, "o", "i"] +[71.62995240211538, "o", "o"] +[71.65995240211538, "o", "n"] +[71.68995240211538, "o", " "] +[71.71995240211538, "o", "t"] +[71.74995240211538, "o", "o"] +[71.77995240211538, "o", " "] +[71.80995240211539, "o", "t"] +[71.83995240211539, "o", "h"] +[71.86995240211539, "o", "e"] +[71.89995240211539, "o", " "] +[71.92995240211539, "o", "2"] +[71.95995240211539, "o", "0"] +[71.98995240211539, "o", "1"] +[72.0199524021154, "o", "2"] +[72.0499524021154, "o", " "] +[72.0799524021154, "o", "r"] +[72.1099524021154, "o", "a"] +[72.1399524021154, "o", "i"] +[72.1699524021154, "o", "n"] +[72.1999524021154, "o", "f"] +[72.2299524021154, "o", "a"] +[72.2599524021154, "o", "l"] +[72.2899524021154, "o", "l"] +[72.3199524021154, "o", " "] +[72.3499524021154, "o", "d"] +[72.3799524021154, "o", "a"] +[72.40995240211541, "o", "t"] +[72.43995240211541, "o", "a"] +[72.46995240211541, "o", "\""] +[72.49995240211541, "o", " "] +[72.52995240211541, "o", "d"] +[72.55995240211541, "o", "e"] +[72.58995240211541, "o", "m"] +[72.61995240211542, "o", "o"] +[72.64995240211542, "o", "/"] +[72.67995240211542, "o", "w"] +[72.70995240211542, "o", "e"] +[72.73995240211542, "o", "a"] +[72.76995240211542, "o", "t"] +[72.79995240211542, "o", "h"] +[72.82995240211542, "o", "e"] +[72.85995240211543, "o", "r"] +[72.88995240211543, "o", "\r\n"] +[72.91995240211543, "o", "$"] +[72.94995240211543, "o", " "] +[72.97995240211543, "o", "s"] +[73.00995240211543, "o", "g"] +[73.03995240211543, "o", "r"] +[73.06995240211543, "o", " "] +[73.09995240211543, "o", "t"] +[73.12995240211544, "o", "a"] +[73.15995240211544, "o", "g"] +[73.18995240211544, "o", " "] +[73.21995240211544, "o", "d"] +[73.24995240211544, "o", "e"] +[73.27995240211544, "o", "m"] +[73.30995240211544, "o", "o"] +[73.33995240211544, "o", "/"] +[73.36995240211544, "o", "w"] +[73.39995240211545, "o", "e"] +[73.42995240211545, "o", "a"] +[73.45995240211545, "o", "t"] +[73.48995240211545, "o", "h"] +[73.51995240211545, "o", "e"] +[73.54995240211545, "o", "r"] +[73.57995240211545, "o", " "] +[73.60995240211545, "o", "r"] +[73.63995240211545, "o", "e"] +[73.66995240211546, "o", "v"] +[73.69995240211546, "o", "i"] +[73.72995240211546, "o", "s"] +[73.75995240211546, "o", "e"] +[73.78995240211546, "o", "d"] +[73.81995240211546, "o", "_"] +[73.84995240211546, "o", "d"] +[73.87995240211546, "o", "a"] +[73.90995240211547, "o", "t"] +[73.93995240211547, "o", "a"] +[73.96995240211547, "o", "\r\n"] +[73.99995240211547, "o", "\u001b[0m"] +[74.02995240211547, "o", "\r\n"] +[74.25926029205382, "o", "Committing demo/weather...\r\n"] +[74.29268013954223, "o", "Storing and indexing table rdu\r\n"] +[74.48260318756164, "o", "Committed demo/weather as 3e04a0b7dc64.\r\n"] +[74.7154806804663, "o", "Tagged demo/weather:3e04a0b7dc649544dd082e75bf9f804ebd92a15378a2bd3e95accb608fe5d85d with revised_data.\r\n"] +[74.7454806804663, "o", "\u001b[1m"] +[74.7754806804663, "o", "\u001b[36m"] +[74.8054806804663, "o", "\u001b[91m"] +[74.8354806804663, "o", "$"] +[74.8654806804663, "o", " "] +[74.8954806804663, "o", "\u001b[0m"] +[79.92548068046631, "o", "\u001b[H"] +[79.95548068046631, "o", "\u001b[J"] +[79.98548068046631, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Use the derivative image's provenance to rebuild it against the revised version"] +[80.01548068046631, "o", "\r\n"] +[80.04548068046631, "o", "$"] +[80.07548068046631, "o", " "] +[80.10548068046631, "o", "s"] +[80.13548068046632, "o", "g"] +[80.16548068046632, "o", "r"] +[80.19548068046632, "o", " "] +[80.22548068046632, "o", "r"] +[80.25548068046632, "o", "e"] +[80.28548068046632, "o", "b"] +[80.31548068046632, "o", "u"] +[80.34548068046632, "o", "i"] +[80.37548068046632, "o", "l"] +[80.40548068046633, "o", "d"] +[80.43548068046633, "o", " "] +[80.46548068046633, "o", "d"] +[80.49548068046633, "o", "e"] +[80.52548068046633, "o", "m"] +[80.55548068046633, "o", "o"] +[80.58548068046633, "o", "/"] +[80.61548068046633, "o", "s"] +[80.64548068046633, "o", "u"] +[80.67548068046634, "o", "m"] +[80.70548068046634, "o", "m"] +[80.73548068046634, "o", "a"] +[80.76548068046634, "o", "r"] +[80.79548068046634, "o", "y"] +[80.82548068046634, "o", " "] +[80.85548068046634, "o", "-"] +[80.88548068046634, "o", "-"] +[80.91548068046635, "o", "a"] +[80.94548068046635, "o", "g"] +[80.97548068046635, "o", "a"] +[81.00548068046635, "o", "i"] +[81.03548068046635, "o", "n"] +[81.06548068046635, "o", "s"] +[81.09548068046635, "o", "t"] +[81.12548068046635, "o", " "] +[81.15548068046635, "o", "d"] +[81.18548068046636, "o", "e"] +[81.21548068046636, "o", "m"] +[81.24548068046636, "o", "o"] +[81.27548068046636, "o", "/"] +[81.30548068046636, "o", "w"] +[81.33548068046636, "o", "e"] +[81.36548068046636, "o", "a"] +[81.39548068046636, "o", "t"] +[81.42548068046636, "o", "h"] +[81.45548068046637, "o", "e"] +[81.48548068046637, "o", "r"] +[81.51548068046637, "o", ":"] +[81.54548068046637, "o", "r"] +[81.57548068046637, "o", "e"] +[81.60548068046637, "o", "v"] +[81.63548068046637, "o", "i"] +[81.66548068046637, "o", "s"] +[81.69548068046637, "o", "e"] +[81.72548068046638, "o", "d"] +[81.75548068046638, "o", "_"] +[81.78548068046638, "o", "d"] +[81.81548068046638, "o", "a"] +[81.84548068046638, "o", "t"] +[81.87548068046638, "o", "a"] +[81.90548068046638, "o", "\r\n"] +[81.93548068046638, "o", "$"] +[81.96548068046638, "o", " "] +[81.99548068046639, "o", "s"] +[82.02548068046639, "o", "g"] +[82.05548068046639, "o", "r"] +[82.08548068046639, "o", " "] +[82.11548068046639, "o", "t"] +[82.14548068046639, "o", "a"] +[82.17548068046639, "o", "g"] +[82.2054806804664, "o", " "] +[82.2354806804664, "o", "d"] +[82.2654806804664, "o", "e"] +[82.2954806804664, "o", "m"] +[82.3254806804664, "o", "o"] +[82.3554806804664, "o", "/"] +[82.3854806804664, "o", "s"] +[82.4154806804664, "o", "u"] +[82.4454806804664, "o", "m"] +[82.4754806804664, "o", "m"] +[82.5054806804664, "o", "a"] +[82.5354806804664, "o", "r"] +[82.56548068046641, "o", "y"] +[82.59548068046641, "o", " "] +[82.62548068046641, "o", "b"] +[82.65548068046641, "o", "a"] +[82.68548068046641, "o", "s"] +[82.71548068046641, "o", "e"] +[82.74548068046641, "o", "d"] +[82.77548068046642, "o", "_"] +[82.80548068046642, "o", "o"] +[82.83548068046642, "o", "n"] +[82.86548068046642, "o", "_"] +[82.89548068046642, "o", "r"] +[82.92548068046642, "o", "e"] +[82.95548068046642, "o", "v"] +[82.98548068046642, "o", "i"] +[83.01548068046642, "o", "s"] +[83.04548068046643, "o", "e"] +[83.07548068046643, "o", "d"] +[83.10548068046643, "o", "\r\n"] +[83.13548068046643, "o", "\u001b[0m"] +[83.16548068046643, "o", "\r\n"] +[83.39620739936902, "o", "Rerunning demo/summary:1ef9a231926f40124a73b8ca20bb5bf4613eaa6c90eae3c5f1f4859654f0438f against:\r\n"] +[83.39621979713513, "o", "demo/weather:revised_data\r\n"] +[83.48232299804761, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather:revised_data IMPORT rdu AS source_data\u001b[0m\r\n"] +[83.48357183456494, "o", "Resolving repository demo/weather\r\n"] +[83.48777658462598, "o", "Importing 1 table from demo/weather:3e04a0b7dc64 into demo/summary\r\n"] +[83.6470735740669, "o", " ---> da70ac50a216\r\n"] +[83.64709097862317, "o", "\u001b[1m\r\nStep 2/2 : SQL {CREATE TABLE monthly_summary AS SELECT to_char(dat...\u001b[0m\r\n"] +[83.65229756355359, "o", "Executing SQL...\r\n"] +[83.88395435333325, "o", "Committing demo/summary...\r\n"] +[83.90888792991711, "o", "Processing table monthly_summary\r\n"] +[84.01486880302502, "o", " ---> e2786d69f546\r\n"] +[84.01839501380994, "o", "Successfully built demo/summary:e2786d69f546.\r\n"] +[84.24890763282849, "o", "Tagged demo/summary:e2786d69f5466759c598a0a9edc4d8a2f23ac68730907dae9028b3b756229ab6 with based_on_revised.\r\n"] +[84.27890763282849, "o", "\u001b[1m"] +[84.3089076328285, "o", "\u001b[36m"] +[84.3389076328285, "o", "\u001b[91m"] +[84.3689076328285, "o", "$"] +[84.3989076328285, "o", " "] +[84.4289076328285, "o", "\u001b[0m"] +[89.4589076328285, "o", "\u001b[H"] +[89.4889076328285, "o", "\u001b[J"] +[89.5189076328285, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Compare the two resultant datasets"] +[89.5489076328285, "o", "\r\n"] +[89.5789076328285, "o", "$"] +[89.6089076328285, "o", " "] +[89.6389076328285, "o", "s"] +[89.6689076328285, "o", "g"] +[89.69890763282851, "o", "r"] +[89.72890763282851, "o", " "] +[89.75890763282851, "o", "d"] +[89.78890763282851, "o", "i"] +[89.81890763282851, "o", "f"] +[89.84890763282851, "o", "f"] +[89.87890763282851, "o", " "] +[89.90890763282852, "o", "d"] +[89.93890763282852, "o", "e"] +[89.96890763282852, "o", "m"] +[89.99890763282852, "o", "o"] +[90.02890763282852, "o", "/"] +[90.05890763282852, "o", "s"] +[90.08890763282852, "o", "u"] +[90.11890763282852, "o", "m"] +[90.14890763282853, "o", "m"] +[90.17890763282853, "o", "a"] +[90.20890763282853, "o", "r"] +[90.23890763282853, "o", "y"] +[90.26890763282853, "o", " "] +[90.29890763282853, "o", "b"] +[90.32890763282853, "o", "a"] +[90.35890763282853, "o", "s"] +[90.38890763282853, "o", "e"] +[90.41890763282854, "o", "d"] +[90.44890763282854, "o", "_"] +[90.47890763282854, "o", "o"] +[90.50890763282854, "o", "n"] +[90.53890763282854, "o", "_"] +[90.56890763282854, "o", "i"] +[90.59890763282854, "o", "n"] +[90.62890763282854, "o", "i"] +[90.65890763282854, "o", "t"] +[90.68890763282855, "o", "i"] +[90.71890763282855, "o", "a"] +[90.74890763282855, "o", "l"] +[90.77890763282855, "o", " "] +[90.80890763282855, "o", "b"] +[90.83890763282855, "o", "a"] +[90.86890763282855, "o", "s"] +[90.89890763282855, "o", "e"] +[90.92890763282855, "o", "d"] +[90.95890763282856, "o", "_"] +[90.98890763282856, "o", "o"] +[91.01890763282856, "o", "n"] +[91.04890763282856, "o", "_"] +[91.07890763282856, "o", "r"] +[91.10890763282856, "o", "e"] +[91.13890763282856, "o", "v"] +[91.16890763282856, "o", "i"] +[91.19890763282856, "o", "s"] +[91.22890763282857, "o", "e"] +[91.25890763282857, "o", "d"] +[91.28890763282857, "o", " "] +[91.31890763282857, "o", "-"] +[91.34890763282857, "o", "-"] +[91.37890763282857, "o", "v"] +[91.40890763282857, "o", "e"] +[91.43890763282857, "o", "r"] +[91.46890763282858, "o", "b"] +[91.49890763282858, "o", "o"] +[91.52890763282858, "o", "s"] +[91.55890763282858, "o", "e"] +[91.58890763282858, "o", " "] +[91.61890763282858, "o", "-"] +[91.64890763282858, "o", "-"] +[91.67890763282858, "o", "t"] +[91.70890763282858, "o", "a"] +[91.73890763282859, "o", "b"] +[91.76890763282859, "o", "l"] +[91.79890763282859, "o", "e"] +[91.82890763282859, "o", "-"] +[91.85890763282859, "o", "n"] +[91.88890763282859, "o", "a"] +[91.91890763282859, "o", "m"] +[91.9489076328286, "o", "e"] +[91.9789076328286, "o", " "] +[92.0089076328286, "o", "m"] +[92.0389076328286, "o", "o"] +[92.0689076328286, "o", "n"] +[92.0989076328286, "o", "t"] +[92.1289076328286, "o", "h"] +[92.1589076328286, "o", "l"] +[92.1889076328286, "o", "y"] +[92.2189076328286, "o", "_"] +[92.2489076328286, "o", "s"] +[92.2789076328286, "o", "u"] +[92.3089076328286, "o", "m"] +[92.33890763282861, "o", "m"] +[92.36890763282861, "o", "a"] +[92.39890763282861, "o", "r"] +[92.42890763282861, "o", "y"] +[92.45890763282861, "o", "\r\n"] +[92.48890763282861, "o", "\u001b[0m"] +[92.51890763282861, "o", "\r\n"] +[92.92620214462366, "o", "Between 1ef9a231926f and e2786d69f546: \r\n"] +[92.92661818504419, "o", "monthly_summary: added 12 rows, removed 12 rows.\r\n- ('201201', Decimal('0.06322580645161290323'), Decimal('0E-20'))\r\n- ('201202', Decimal('0.06689655172413793103'), Decimal('0.03137931034482758621'))\r\n- ('201203', Decimal('0.17290322580645161290'), Decimal('0E-20'))\r\n- ('201204', Decimal('0.08766666666666666667'), Decimal('0E-20'))\r\n- ('201205', Decimal('0.12806451612903225806'), Decimal('0E-20'))\r\n- ('201206', Decimal('0.10333333333333333333'), Decimal('0E-20'))\r\n- ('201207', Decimal('0.1496774193548387096"] +[92.9266317749032, "o", "8'), Decimal('0E-20'))\r\n- ('201208', Decimal('0.13000000000000000000'), Decimal('0E-20'))\r\n- ('201209', Decimal('0.26100000000000000000'), Decimal('0E-20'))\r\n- ('201210', Decimal('0.05903225806451612903'), Decimal('0E-20'))\r\n- ('201211', Decimal('0.01866666666666666667'), Decimal('0E-20'))\r\n- ('201212', Decimal('0.09483870967741935484'), Decimal('0E-20'))\r\n+ ('201201', Decimal('0.07587096774193548387'), Decimal('0E-20'))\r\n+ ('201202', Decimal('0.08027586206896551724'), Decimal('0.03137931034482758621'))\r\n+ "] +[92.9266420269021, "o", "('201203', Decimal('0.20748387096774193548'), Decimal('0E-20'))\r\n+ ('201204', Decimal('0.10520000000000000000'), Decimal('0E-20'))\r\n+ ('201205', Decimal('0.15367741935483870968'), Decimal('0E-20'))\r\n+ ('201206', Decimal('0.12400000000000000000'), Decimal('0E-20'))\r\n+ ('201207', Decimal('0.17961290322580645161'), Decimal('0E-20'))\r\n+ ('201208', Decimal('0.15600000000000000000'), Decimal('0E-20'))\r\n+ ('201209', Decimal('0.31320000000000000000'), Decimal('0E-20'))\r\n+ ('201210', Decimal('0.07083870967741935484'"] +[92.92664751052942, "o", "), Decimal('0E-20'))\r\n+ ('201211', Decimal('0.02240000000000000000'), Decimal('0E-20'))\r\n+ ('201212', Decimal('0.11380645161290322581'), Decimal('0E-20'))\r\n"] +[92.95664751052942, "o", "\u001b[1m"] +[92.98664751052942, "o", "\u001b[36m"] +[93.01664751052942, "o", "\u001b[91m"] +[93.04664751052943, "o", "$"] +[93.07664751052943, "o", " "] +[93.10664751052943, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.13/splitgraph-cloud.cast b/content/casts/versioned/archive/v0.2.13/splitgraph-cloud.cast new file mode 100644 index 00000000..2f0c3c45 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.13/splitgraph-cloud.cast @@ -0,0 +1,1340 @@ +{"version": 2, "width": 100, "height": 22, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1618412605, "metadata": {"tss": [{"h": "Make sure you are registered and logged into Splitgraph Cloud.", "ts": 0.06}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport", "ts": 8.849999999999994}, {"h": "Push the dataset to Splitgraph", "ts": 21.04721292495714}, {"h": "Upload some dataset metadata as well.", "ts": 29.21102907180776}, {"h": "Perform a request against an automatically-generated", "ts": 39.71102907180776}, {"h": "sgr also has a shorthand to access the query API", "ts": 49.4910290718079}, {"h": "You can also run a query against the Splitgraph Data Delivery Network.", "ts": 58.36843543052689}, {"h": "The query API also supports running one-off Splitfile commands against a repository,", "ts": 69.55843543052708}, {"h": "Run another command against the new layer to join the two datasets", "ts": 79.06998085975695}, {"h": "Pull the dataset and check out the new image", "ts": 88.67152009010377}, {"h": "Inspect the generated data", "ts": 101.56771977424691}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make sure you are registered and logged into Splitgraph Cloud."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Test the connection.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "s"] +[0.27, "o", "g"] +[0.30000000000000004, "o", "r"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "q"] +[0.42000000000000015, "o", "l"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "-"] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", " "] +[0.5700000000000003, "o", "d"] +[0.6000000000000003, "o", "a"] +[0.6300000000000003, "o", "t"] +[0.6600000000000004, "o", "a"] +[0.6900000000000004, "o", "."] +[0.7200000000000004, "o", "s"] +[0.7500000000000004, "o", "p"] +[0.7800000000000005, "o", "l"] +[0.8100000000000005, "o", "i"] +[0.8400000000000005, "o", "t"] +[0.8700000000000006, "o", "g"] +[0.9000000000000006, "o", "r"] +[0.9300000000000006, "o", "a"] +[0.9600000000000006, "o", "p"] +[0.9900000000000007, "o", "h"] +[1.0200000000000007, "o", "."] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "o"] +[1.1100000000000008, "o", "m"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "\""] +[1.2000000000000008, "o", "S"] +[1.2300000000000009, "o", "E"] +[1.260000000000001, "o", "L"] +[1.290000000000001, "o", "E"] +[1.320000000000001, "o", "C"] +[1.350000000000001, "o", "T"] +[1.380000000000001, "o", " "] +[1.410000000000001, "o", "s"] +[1.440000000000001, "o", "p"] +[1.470000000000001, "o", "l"] +[1.500000000000001, "o", "i"] +[1.5300000000000011, "o", "t"] +[1.5600000000000012, "o", "g"] +[1.5900000000000012, "o", "r"] +[1.6200000000000012, "o", "a"] +[1.6500000000000012, "o", "p"] +[1.6800000000000013, "o", "h"] +[1.7100000000000013, "o", "_"] +[1.7400000000000013, "o", "a"] +[1.7700000000000014, "o", "p"] +[1.8000000000000014, "o", "i"] +[1.8300000000000014, "o", "."] +[1.8600000000000014, "o", "g"] +[1.8900000000000015, "o", "e"] +[1.9200000000000015, "o", "t"] +[1.9500000000000015, "o", "_"] +[1.9800000000000015, "o", "c"] +[2.0100000000000016, "o", "u"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "r"] +[2.100000000000001, "o", "e"] +[2.130000000000001, "o", "n"] +[2.1600000000000006, "o", "t"] +[2.1900000000000004, "o", "_"] +[2.22, "o", "u"] +[2.25, "o", "s"] +[2.28, "o", "e"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "n"] +[2.369999999999999, "o", "a"] +[2.399999999999999, "o", "m"] +[2.429999999999999, "o", "e"] +[2.4599999999999986, "o", "("] +[2.4899999999999984, "o", ")"] +[2.5199999999999982, "o", "\""] +[2.549999999999998, "o", "\r\n"] +[2.579999999999998, "o", "\u001b[0m"] +[2.6099999999999977, "o", "\r\n"] +[3.6099999999999977, "o", "splitgraph-demo\r\n"] +[3.6399999999999975, "o", "\u001b[1m"] +[3.6699999999999973, "o", "\u001b[36m"] +[3.699999999999997, "o", "\u001b[91m"] +[3.729999999999997, "o", "$"] +[3.7599999999999967, "o", " "] +[3.7899999999999965, "o", "\u001b[0m"] +[8.819999999999995, "o", "\u001b[H"] +[8.849999999999994, "o", "\u001b[J"] +[8.879999999999994, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport"] +[8.909999999999993, "o", "\r\n"] +[8.939999999999992, "o", "$"] +[8.969999999999992, "o", " "] +[8.999999999999991, "o", "s"] +[9.02999999999999, "o", "g"] +[9.05999999999999, "o", "r"] +[9.08999999999999, "o", " "] +[9.119999999999989, "o", "i"] +[9.149999999999988, "o", "n"] +[9.179999999999987, "o", "i"] +[9.209999999999987, "o", "t"] +[9.239999999999986, "o", " "] +[9.269999999999985, "o", "w"] +[9.299999999999985, "o", "e"] +[9.329999999999984, "o", "a"] +[9.359999999999983, "o", "t"] +[9.389999999999983, "o", "h"] +[9.419999999999982, "o", "e"] +[9.449999999999982, "o", "r"] +[9.47999999999998, "o", "\r\n"] +[9.50999999999998, "o", "$"] +[9.53999999999998, "o", " "] +[9.569999999999979, "o", "s"] +[9.599999999999978, "o", "g"] +[9.629999999999978, "o", "r"] +[9.659999999999977, "o", " "] +[9.689999999999976, "o", "c"] +[9.719999999999976, "o", "s"] +[9.749999999999975, "o", "v"] +[9.779999999999974, "o", " "] +[9.809999999999974, "o", "i"] +[9.839999999999973, "o", "m"] +[9.869999999999973, "o", "p"] +[9.899999999999972, "o", "o"] +[9.929999999999971, "o", "r"] +[9.95999999999997, "o", "t"] +[9.98999999999997, "o", " "] +[10.01999999999997, "o", "-"] +[10.049999999999969, "o", "f"] +[10.079999999999968, "o", " "] +[10.109999999999967, "o", "."] +[10.139999999999967, "o", "."] +[10.169999999999966, "o", "/"] +[10.199999999999966, "o", "i"] +[10.229999999999965, "o", "m"] +[10.259999999999964, "o", "p"] +[10.289999999999964, "o", "o"] +[10.319999999999963, "o", "r"] +[10.349999999999962, "o", "t"] +[10.379999999999962, "o", "-"] +[10.409999999999961, "o", "f"] +[10.43999999999996, "o", "r"] +[10.46999999999996, "o", "o"] +[10.49999999999996, "o", "m"] +[10.529999999999959, "o", "-"] +[10.559999999999958, "o", "c"] +[10.589999999999957, "o", "s"] +[10.619999999999957, "o", "v"] +[10.649999999999956, "o", "/"] +[10.679999999999955, "o", "r"] +[10.709999999999955, "o", "d"] +[10.739999999999954, "o", "u"] +[10.769999999999953, "o", "-"] +[10.799999999999953, "o", "w"] +[10.829999999999952, "o", "e"] +[10.859999999999951, "o", "a"] +[10.88999999999995, "o", "t"] +[10.91999999999995, "o", "h"] +[10.94999999999995, "o", "e"] +[10.979999999999949, "o", "r"] +[11.009999999999948, "o", "-"] +[11.039999999999948, "o", "h"] +[11.069999999999947, "o", "i"] +[11.099999999999946, "o", "s"] +[11.129999999999946, "o", "t"] +[11.159999999999945, "o", "o"] +[11.189999999999944, "o", "r"] +[11.219999999999944, "o", "y"] +[11.249999999999943, "o", "."] +[11.279999999999943, "o", "c"] +[11.309999999999942, "o", "s"] +[11.339999999999941, "o", "v"] +[11.36999999999994, "o", " "] +[11.39999999999994, "o", "\\"] +[11.42999999999994, "o", "\r\n "] +[11.459999999999939, "o", "-"] +[11.489999999999938, "o", "k"] +[11.519999999999937, "o", " "] +[11.549999999999937, "o", "d"] +[11.579999999999936, "o", "a"] +[11.609999999999935, "o", "t"] +[11.639999999999935, "o", "e"] +[11.669999999999934, "o", " "] +[11.699999999999934, "o", "\\"] +[11.729999999999933, "o", "\r\n "] +[11.759999999999932, "o", "-"] +[11.789999999999932, "o", "t"] +[11.819999999999931, "o", " "] +[11.84999999999993, "o", "d"] +[11.87999999999993, "o", "a"] +[11.909999999999929, "o", "t"] +[11.939999999999928, "o", "e"] +[11.969999999999928, "o", " "] +[11.999999999999927, "o", "t"] +[12.029999999999927, "o", "i"] +[12.059999999999926, "o", "m"] +[12.089999999999925, "o", "e"] +[12.119999999999925, "o", "s"] +[12.149999999999924, "o", "t"] +[12.179999999999923, "o", "a"] +[12.209999999999923, "o", "m"] +[12.239999999999922, "o", "p"] +[12.269999999999921, "o", " "] +[12.29999999999992, "o", "\\"] +[12.32999999999992, "o", "\r\n "] +[12.35999999999992, "o", "-"] +[12.389999999999919, "o", "-"] +[12.419999999999918, "o", "s"] +[12.449999999999918, "o", "e"] +[12.479999999999917, "o", "p"] +[12.509999999999916, "o", "a"] +[12.539999999999916, "o", "r"] +[12.569999999999915, "o", "a"] +[12.599999999999914, "o", "t"] +[12.629999999999914, "o", "o"] +[12.659999999999913, "o", "r"] +[12.689999999999912, "o", " "] +[12.719999999999912, "o", "\""] +[12.749999999999911, "o", ";"] +[12.77999999999991, "o", "\""] +[12.80999999999991, "o", " "] +[12.83999999999991, "o", "\\"] +[12.869999999999909, "o", "\r\n "] +[12.899999999999908, "o", "w"] +[12.929999999999907, "o", "e"] +[12.959999999999907, "o", "a"] +[12.989999999999906, "o", "t"] +[13.019999999999905, "o", "h"] +[13.049999999999905, "o", "e"] +[13.079999999999904, "o", "r"] +[13.109999999999904, "o", " "] +[13.139999999999903, "o", "r"] +[13.169999999999902, "o", "d"] +[13.199999999999902, "o", "u"] +[13.229999999999901, "o", "\r\n"] +[13.2599999999999, "o", "$"] +[13.2899999999999, "o", " "] +[13.319999999999899, "o", "s"] +[13.349999999999898, "o", "g"] +[13.379999999999898, "o", "r"] +[13.409999999999897, "o", " "] +[13.439999999999896, "o", "c"] +[13.469999999999896, "o", "o"] +[13.499999999999895, "o", "m"] +[13.529999999999895, "o", "m"] +[13.559999999999894, "o", "i"] +[13.589999999999893, "o", "t"] +[13.619999999999893, "o", " "] +[13.649999999999892, "o", "w"] +[13.679999999999891, "o", "e"] +[13.70999999999989, "o", "a"] +[13.73999999999989, "o", "t"] +[13.76999999999989, "o", "h"] +[13.799999999999889, "o", "e"] +[13.829999999999888, "o", "r"] +[13.859999999999888, "o", "\r\n"] +[13.889999999999887, "o", "$"] +[13.919999999999886, "o", " "] +[13.949999999999886, "o", "s"] +[13.979999999999885, "o", "g"] +[14.009999999999884, "o", "r"] +[14.039999999999884, "o", " "] +[14.069999999999883, "o", "t"] +[14.099999999999882, "o", "a"] +[14.129999999999882, "o", "g"] +[14.159999999999881, "o", " "] +[14.18999999999988, "o", "w"] +[14.21999999999988, "o", "e"] +[14.24999999999988, "o", "a"] +[14.279999999999879, "o", "t"] +[14.309999999999878, "o", "h"] +[14.339999999999877, "o", "e"] +[14.369999999999877, "o", "r"] +[14.399999999999876, "o", " "] +[14.429999999999875, "o", "i"] +[14.459999999999875, "o", "n"] +[14.489999999999874, "o", "i"] +[14.519999999999873, "o", "t"] +[14.549999999999873, "o", "i"] +[14.579999999999872, "o", "a"] +[14.609999999999872, "o", "l"] +[14.639999999999871, "o", "_"] +[14.66999999999987, "o", "d"] +[14.69999999999987, "o", "a"] +[14.729999999999869, "o", "t"] +[14.759999999999868, "o", "a"] +[14.789999999999868, "o", "\r\n"] +[14.819999999999867, "o", "\u001b[0m"] +[14.849999999999866, "o", "\r\n"] +[15.10099134445177, "o", "Initialized empty repository weather\r\n"] +[15.329127407073841, "o", "Committing weather...\r\n"] +[15.35686168670641, "o", "Processing table rdu\r\n"] +[15.57621655464159, "o", "Committed weather as 4576ea4e0963.\r\n"] +[15.807212924957142, "o", "Tagged weather:4576ea4e0963b1bdb8e6240dfc38c91defb75844435638f208ee73bdf0115090 with initial_data.\r\n"] +[15.837212924957141, "o", "\u001b[1m"] +[15.86721292495714, "o", "\u001b[36m"] +[15.89721292495714, "o", "\u001b[91m"] +[15.92721292495714, "o", "$"] +[15.957212924957139, "o", " "] +[15.987212924957138, "o", "\u001b[0m"] +[21.01721292495714, "o", "\u001b[H"] +[21.04721292495714, "o", "\u001b[J"] +[21.07721292495714, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset to Splitgraph"] +[21.107212924957143, "o", "\r\n"] +[21.137212924957144, "o", "$"] +[21.167212924957145, "o", " "] +[21.197212924957146, "o", "s"] +[21.227212924957147, "o", "g"] +[21.257212924957148, "o", "r"] +[21.28721292495715, "o", " "] +[21.31721292495715, "o", "p"] +[21.34721292495715, "o", "u"] +[21.377212924957153, "o", "s"] +[21.407212924957154, "o", "h"] +[21.437212924957155, "o", " "] +[21.467212924957156, "o", "w"] +[21.497212924957157, "o", "e"] +[21.52721292495716, "o", "a"] +[21.55721292495716, "o", "t"] +[21.58721292495716, "o", "h"] +[21.617212924957162, "o", "e"] +[21.647212924957163, "o", "r"] +[21.677212924957164, "o", "\r\n"] +[21.707212924957165, "o", "\u001b[0m"] +[21.737212924957166, "o", "\r\n"] +[21.96570089340199, "o", "Pushing weather to splitgraph-demo/weather on remote data.splitgraph.com\r\n"] +[21.966066627502332, "o", "Gathering remote metadata...\r\n"] +[22.966066627502332, "o", "No objects to upload.\r\n"] +[23.966066627502332, "o", "Uploaded metadata for 2 images, 1 table, 0 objects and 1 tag.\r\n"] +[23.971029071807752, "o", "Setting upstream for weather to splitgraph-demo/weather.\r\n"] +[24.001029071807753, "o", "\u001b[1m"] +[24.031029071807755, "o", "\u001b[36m"] +[24.061029071807756, "o", "\u001b[91m"] +[24.091029071807757, "o", "$"] +[24.121029071807758, "o", " "] +[24.15102907180776, "o", "\u001b[0m"] +[29.18102907180776, "o", "\u001b[H"] +[29.21102907180776, "o", "\u001b[J"] +[29.241029071807763, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Upload some dataset metadata as well."] +[29.271029071807764, "o", "\r\n"] +[29.301029071807765, "o", "$"] +[29.331029071807766, "o", " "] +[29.361029071807767, "o", "c"] +[29.39102907180777, "o", "a"] +[29.42102907180777, "o", "t"] +[29.45102907180777, "o", " "] +[29.48102907180777, "o", "d"] +[29.511029071807773, "o", "a"] +[29.541029071807774, "o", "t"] +[29.571029071807775, "o", "a"] +[29.601029071807776, "o", "s"] +[29.631029071807777, "o", "e"] +[29.66102907180778, "o", "t"] +[29.69102907180778, "o", "-"] +[29.72102907180778, "o", "m"] +[29.751029071807782, "o", "e"] +[29.781029071807783, "o", "t"] +[29.811029071807784, "o", "a"] +[29.841029071807785, "o", "d"] +[29.871029071807786, "o", "a"] +[29.901029071807788, "o", "t"] +[29.93102907180779, "o", "a"] +[29.96102907180779, "o", "."] +[29.99102907180779, "o", "y"] +[30.021029071807792, "o", "m"] +[30.051029071807793, "o", "l"] +[30.081029071807794, "o", "\r\n"] +[30.111029071807796, "o", "$"] +[30.141029071807797, "o", " "] +[30.171029071807798, "o", "c"] +[30.2010290718078, "o", "a"] +[30.2310290718078, "o", "t"] +[30.2610290718078, "o", " "] +[30.291029071807802, "o", "d"] +[30.321029071807803, "o", "a"] +[30.351029071807805, "o", "t"] +[30.381029071807806, "o", "a"] +[30.411029071807807, "o", "s"] +[30.441029071807808, "o", "e"] +[30.47102907180781, "o", "t"] +[30.50102907180781, "o", "-"] +[30.53102907180781, "o", "r"] +[30.561029071807813, "o", "e"] +[30.591029071807814, "o", "a"] +[30.621029071807815, "o", "d"] +[30.651029071807816, "o", "m"] +[30.681029071807817, "o", "e"] +[30.71102907180782, "o", "."] +[30.74102907180782, "o", "m"] +[30.77102907180782, "o", "d"] +[30.80102907180782, "o", "\r\n"] +[30.831029071807823, "o", "$"] +[30.861029071807824, "o", " "] +[30.891029071807825, "o", "s"] +[30.921029071807826, "o", "g"] +[30.951029071807827, "o", "r"] +[30.98102907180783, "o", " "] +[31.01102907180783, "o", "c"] +[31.04102907180783, "o", "l"] +[31.071029071807832, "o", "o"] +[31.101029071807833, "o", "u"] +[31.131029071807834, "o", "d"] +[31.161029071807835, "o", " "] +[31.191029071807836, "o", "m"] +[31.221029071807838, "o", "e"] +[31.25102907180784, "o", "t"] +[31.28102907180784, "o", "a"] +[31.31102907180784, "o", "d"] +[31.341029071807842, "o", "a"] +[31.371029071807843, "o", "t"] +[31.401029071807844, "o", "a"] +[31.431029071807846, "o", " "] +[31.461029071807847, "o", "s"] +[31.491029071807848, "o", "p"] +[31.52102907180785, "o", "l"] +[31.55102907180785, "o", "i"] +[31.58102907180785, "o", "t"] +[31.611029071807852, "o", "g"] +[31.641029071807854, "o", "r"] +[31.671029071807855, "o", "a"] +[31.701029071807856, "o", "p"] +[31.731029071807857, "o", "h"] +[31.761029071807858, "o", "-"] +[31.79102907180786, "o", "d"] +[31.82102907180786, "o", "e"] +[31.85102907180786, "o", "m"] +[31.881029071807863, "o", "o"] +[31.911029071807864, "o", "/"] +[31.941029071807865, "o", "w"] +[31.971029071807866, "o", "e"] +[32.001029071807864, "o", "a"] +[32.031029071807865, "o", "t"] +[32.061029071807866, "o", "h"] +[32.09102907180787, "o", "e"] +[32.12102907180787, "o", "r"] +[32.15102907180787, "o", " "] +[32.18102907180787, "o", "d"] +[32.21102907180787, "o", "a"] +[32.24102907180787, "o", "t"] +[32.271029071807874, "o", "a"] +[32.301029071807875, "o", "s"] +[32.331029071807876, "o", "e"] +[32.36102907180788, "o", "t"] +[32.39102907180788, "o", "-"] +[32.42102907180788, "o", "m"] +[32.45102907180788, "o", "e"] +[32.48102907180788, "o", "t"] +[32.51102907180788, "o", "a"] +[32.541029071807884, "o", "d"] +[32.571029071807885, "o", "a"] +[32.601029071807886, "o", "t"] +[32.63102907180789, "o", "a"] +[32.66102907180789, "o", "."] +[32.69102907180789, "o", "y"] +[32.72102907180789, "o", "m"] +[32.75102907180789, "o", "l"] +[32.78102907180789, "o", "\r\n"] +[32.811029071807894, "o", "\u001b[0m"] +[32.841029071807895, "o", "\r\n"] +[32.84252157211307, "o", "# This is a sample dataset metadata file that's used\r\n# to update the dataset's README and description.\r\n\r\nreadme: dataset-readme.md\r\ndescription: Weather history in Raleigh-Durham International airport joined with US domestic flights data (uploaded from Splitgraph release CI)\r\n"] +[32.84396591186527, "o", "# Sample dataset README\r\n\r\nDataset of weather history in Raleigh-Durham International airport, joined with\r\n[US domestic flights data](/splitgraph/domestic_us_flights).\r\n\r\nThis dataset was uploaded from a CI job.\r\n\r\n## Source\r\n\r\n[data.gov](https://catalog.data.gov/dataset/local-weather-archive)\r\n"] +[33.55469527244571, "o", "Metadata updated for repository splitgraph-demo/weather.\r\n"] +[33.584695272445714, "o", "\u001b[1m"] +[33.614695272445715, "o", "\u001b[36m"] +[33.644695272445716, "o", "\u001b[91m"] +[33.67469527244572, "o", "$"] +[33.70469527244572, "o", " "] +[33.73469527244572, "o", "\u001b[0m"] +[39.68102907180776, "o", "\u001b[H"] +[39.71102907180776, "o", "\u001b[J"] +[39.74102907180776, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Perform a request against an automatically-generated"] +[39.77102907180776, "o", "\r\n"] +[39.80102907180776, "o", "$ # Postgrest (https://postgrest.org) endpoint.\r\n"] +[39.83102907180776, "o", "$"] +[39.861029071807764, "o", " "] +[39.891029071807765, "o", "c"] +[39.921029071807766, "o", "u"] +[39.95102907180777, "o", "r"] +[39.98102907180777, "o", "l"] +[40.01102907180777, "o", " "] +[40.04102907180777, "o", "\""] +[40.07102907180777, "o", "h"] +[40.10102907180777, "o", "t"] +[40.131029071807774, "o", "t"] +[40.161029071807775, "o", "p"] +[40.191029071807776, "o", "s"] +[40.22102907180778, "o", ":"] +[40.25102907180778, "o", "/"] +[40.28102907180778, "o", "/"] +[40.31102907180778, "o", "d"] +[40.34102907180778, "o", "a"] +[40.37102907180778, "o", "t"] +[40.401029071807784, "o", "a"] +[40.431029071807785, "o", "."] +[40.461029071807786, "o", "s"] +[40.49102907180779, "o", "p"] +[40.52102907180779, "o", "l"] +[40.55102907180779, "o", "i"] +[40.58102907180779, "o", "t"] +[40.61102907180779, "o", "g"] +[40.64102907180779, "o", "r"] +[40.671029071807794, "o", "a"] +[40.701029071807795, "o", "p"] +[40.7310290718078, "o", "h"] +[40.7610290718078, "o", "."] +[40.7910290718078, "o", "c"] +[40.8210290718078, "o", "o"] +[40.8510290718078, "o", "m"] +[40.8810290718078, "o", "/"] +[40.9110290718078, "o", "s"] +[40.941029071807804, "o", "p"] +[40.971029071807806, "o", "l"] +[41.00102907180781, "o", "i"] +[41.03102907180781, "o", "t"] +[41.06102907180781, "o", "g"] +[41.09102907180781, "o", "r"] +[41.12102907180781, "o", "a"] +[41.15102907180781, "o", "p"] +[41.181029071807814, "o", "h"] +[41.211029071807815, "o", "-"] +[41.241029071807816, "o", "d"] +[41.27102907180782, "o", "e"] +[41.30102907180782, "o", "m"] +[41.33102907180782, "o", "o"] +[41.36102907180782, "o", "/"] +[41.39102907180782, "o", "w"] +[41.42102907180782, "o", "e"] +[41.451029071807824, "o", "a"] +[41.481029071807825, "o", "t"] +[41.511029071807826, "o", "h"] +[41.54102907180783, "o", "e"] +[41.57102907180783, "o", "r"] +[41.60102907180783, "o", "/"] +[41.63102907180783, "o", "i"] +[41.66102907180783, "o", "n"] +[41.69102907180783, "o", "i"] +[41.721029071807834, "o", "t"] +[41.751029071807835, "o", "i"] +[41.781029071807836, "o", "a"] +[41.81102907180784, "o", "l"] +[41.84102907180784, "o", "_"] +[41.87102907180784, "o", "d"] +[41.90102907180784, "o", "a"] +[41.93102907180784, "o", "t"] +[41.96102907180784, "o", "a"] +[41.991029071807844, "o", "/"] +[42.021029071807845, "o", "-"] +[42.05102907180785, "o", "/"] +[42.08102907180785, "o", "r"] +[42.11102907180785, "o", "e"] +[42.14102907180785, "o", "s"] +[42.17102907180785, "o", "t"] +[42.20102907180785, "o", "/"] +[42.23102907180785, "o", "r"] +[42.261029071807855, "o", "d"] +[42.291029071807856, "o", "u"] +[42.32102907180786, "o", "?"] +[42.35102907180786, "o", "d"] +[42.38102907180786, "o", "a"] +[42.41102907180786, "o", "t"] +[42.44102907180786, "o", "e"] +[42.47102907180786, "o", "="] +[42.501029071807864, "o", "e"] +[42.531029071807865, "o", "q"] +[42.561029071807866, "o", "."] +[42.59102907180787, "o", "2"] +[42.62102907180787, "o", "0"] +[42.65102907180787, "o", "0"] +[42.68102907180787, "o", "9"] +[42.71102907180787, "o", "-"] +[42.74102907180787, "o", "0"] +[42.771029071807874, "o", "8"] +[42.801029071807875, "o", "-"] +[42.831029071807876, "o", "2"] +[42.86102907180788, "o", "5"] +[42.89102907180788, "o", "T"] +[42.92102907180788, "o", "0"] +[42.95102907180788, "o", "0"] +[42.98102907180788, "o", ":"] +[43.01102907180788, "o", "0"] +[43.041029071807884, "o", "0"] +[43.071029071807885, "o", ":"] +[43.101029071807886, "o", "0"] +[43.13102907180789, "o", "0"] +[43.16102907180789, "o", "\""] +[43.19102907180789, "o", "\r\n"] +[43.22102907180789, "o", "\u001b[0m"] +[43.25102907180789, "o", "\r\n"] +[44.25102907180789, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[44.28102907180789, "o", "\u001b[1m"] +[44.311029071807894, "o", "\u001b[36m"] +[44.341029071807895, "o", "\u001b[91m"] +[44.3710290718079, "o", "$"] +[44.4010290718079, "o", " "] +[44.4310290718079, "o", "\u001b[0m"] +[49.4610290718079, "o", "\u001b[H"] +[49.4910290718079, "o", "\u001b[J"] +[49.5210290718079, "o", "\u001b[1m\u001b[36m\u001b[91m$ # sgr also has a shorthand to access the query API"] +[49.5510290718079, "o", "\r\n"] +[49.581029071807905, "o", "$"] +[49.611029071807906, "o", " "] +[49.64102907180791, "o", "s"] +[49.67102907180791, "o", "g"] +[49.70102907180791, "o", "r"] +[49.73102907180791, "o", " "] +[49.76102907180791, "o", "c"] +[49.79102907180791, "o", "l"] +[49.821029071807914, "o", "o"] +[49.851029071807915, "o", "u"] +[49.881029071807916, "o", "d"] +[49.91102907180792, "o", " "] +[49.94102907180792, "o", "c"] +[49.97102907180792, "o", "u"] +[50.00102907180792, "o", "r"] +[50.03102907180792, "o", "l"] +[50.06102907180792, "o", " "] +[50.091029071807924, "o", "s"] +[50.121029071807925, "o", "p"] +[50.151029071807926, "o", "l"] +[50.18102907180793, "o", "i"] +[50.21102907180793, "o", "t"] +[50.24102907180793, "o", "g"] +[50.27102907180793, "o", "r"] +[50.30102907180793, "o", "a"] +[50.33102907180793, "o", "p"] +[50.361029071807934, "o", "h"] +[50.391029071807935, "o", "-"] +[50.421029071807936, "o", "d"] +[50.45102907180794, "o", "e"] +[50.48102907180794, "o", "m"] +[50.51102907180794, "o", "o"] +[50.54102907180794, "o", "/"] +[50.57102907180794, "o", "w"] +[50.60102907180794, "o", "e"] +[50.631029071807944, "o", "a"] +[50.661029071807945, "o", "t"] +[50.69102907180795, "o", "h"] +[50.72102907180795, "o", "e"] +[50.75102907180795, "o", "r"] +[50.78102907180795, "o", ":"] +[50.81102907180795, "o", "i"] +[50.84102907180795, "o", "n"] +[50.87102907180795, "o", "i"] +[50.901029071807955, "o", "t"] +[50.931029071807956, "o", "i"] +[50.96102907180796, "o", "a"] +[50.99102907180796, "o", "l"] +[51.02102907180796, "o", "_"] +[51.05102907180796, "o", "d"] +[51.08102907180796, "o", "a"] +[51.11102907180796, "o", "t"] +[51.141029071807964, "o", "a"] +[51.171029071807965, "o", " "] +[51.201029071807966, "o", "\""] +[51.23102907180797, "o", "r"] +[51.26102907180797, "o", "d"] +[51.29102907180797, "o", "u"] +[51.32102907180797, "o", "?"] +[51.35102907180797, "o", "d"] +[51.38102907180797, "o", "a"] +[51.411029071807974, "o", "t"] +[51.441029071807975, "o", "e"] +[51.471029071807976, "o", "="] +[51.50102907180798, "o", "e"] +[51.53102907180798, "o", "q"] +[51.56102907180798, "o", "."] +[51.59102907180798, "o", "2"] +[51.62102907180798, "o", "0"] +[51.65102907180798, "o", "0"] +[51.681029071807984, "o", "9"] +[51.711029071807985, "o", "-"] +[51.741029071807986, "o", "0"] +[51.77102907180799, "o", "8"] +[51.80102907180799, "o", "-"] +[51.83102907180799, "o", "2"] +[51.86102907180799, "o", "5"] +[51.89102907180799, "o", "T"] +[51.92102907180799, "o", "0"] +[51.951029071807994, "o", "0"] +[51.981029071807995, "o", ":"] +[52.011029071808, "o", "0"] +[52.041029071808, "o", "0"] +[52.071029071808, "o", ":"] +[52.101029071808, "o", "0"] +[52.131029071808, "o", "0"] +[52.161029071808, "o", "\""] +[52.191029071808, "o", "\r\n"] +[52.221029071808005, "o", "\u001b[0m"] +[52.251029071808006, "o", "\r\n"] +[53.12843543052688, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[53.15843543052688, "o", "\u001b[1m"] +[53.18843543052688, "o", "\u001b[36m"] +[53.21843543052688, "o", "\u001b[91m"] +[53.24843543052688, "o", "$"] +[53.27843543052688, "o", " "] +[53.308435430526885, "o", "\u001b[0m"] +[58.338435430526886, "o", "\u001b[H"] +[58.36843543052689, "o", "\u001b[J"] +[58.39843543052689, "o", "\u001b[1m\u001b[36m\u001b[91m$ # You can also run a query against the Splitgraph Data Delivery Network."] +[58.42843543052689, "o", "\r\n"] +[58.45843543052689, "o", "$ # It supports most PostgresSQL clients and lets you query Splitgraph images and other\r\n"] +[58.48843543052689, "o", "$ # datasets proxied by Splitgraph.\r\n"] +[58.51843543052689, "o", "$"] +[58.548435430526894, "o", " "] +[58.578435430526895, "o", "s"] +[58.608435430526896, "o", "g"] +[58.6384354305269, "o", "r"] +[58.6684354305269, "o", " "] +[58.6984354305269, "o", "c"] +[58.7284354305269, "o", "l"] +[58.7584354305269, "o", "o"] +[58.7884354305269, "o", "u"] +[58.818435430526904, "o", "d"] +[58.848435430526905, "o", " "] +[58.878435430526906, "o", "s"] +[58.90843543052691, "o", "q"] +[58.93843543052691, "o", "l"] +[58.96843543052691, "o", " "] +[58.99843543052691, "o", "\""] +[59.02843543052691, "o", "S"] +[59.05843543052691, "o", "E"] +[59.088435430526914, "o", "L"] +[59.118435430526915, "o", "E"] +[59.148435430526916, "o", "C"] +[59.17843543052692, "o", "T"] +[59.20843543052692, "o", " "] +[59.23843543052692, "o", "d"] +[59.26843543052692, "o", "a"] +[59.29843543052692, "o", "t"] +[59.32843543052692, "o", "e"] +[59.358435430526924, "o", ","] +[59.388435430526926, "o", " "] +[59.41843543052693, "o", "t"] +[59.44843543052693, "o", "e"] +[59.47843543052693, "o", "m"] +[59.50843543052693, "o", "p"] +[59.53843543052693, "o", "e"] +[59.56843543052693, "o", "r"] +[59.59843543052693, "o", "a"] +[59.628435430526935, "o", "t"] +[59.658435430526936, "o", "u"] +[59.68843543052694, "o", "r"] +[59.71843543052694, "o", "e"] +[59.74843543052694, "o", "m"] +[59.77843543052694, "o", "i"] +[59.80843543052694, "o", "n"] +[59.83843543052694, "o", ","] +[59.868435430526944, "o", " "] +[59.898435430526945, "o", "t"] +[59.928435430526946, "o", "e"] +[59.95843543052695, "o", "m"] +[59.98843543052695, "o", "p"] +[60.01843543052695, "o", "e"] +[60.04843543052695, "o", "r"] +[60.07843543052695, "o", "a"] +[60.10843543052695, "o", "t"] +[60.138435430526954, "o", "u"] +[60.168435430526955, "o", "r"] +[60.198435430526956, "o", "e"] +[60.22843543052696, "o", "m"] +[60.25843543052696, "o", "a"] +[60.28843543052696, "o", "x"] +[60.31843543052696, "o", "\r\n "] +[60.34843543052696, "o", "F"] +[60.37843543052696, "o", "R"] +[60.408435430526964, "o", "O"] +[60.438435430526965, "o", "M"] +[60.46843543052697, "o", " "] +[60.49843543052697, "o", "\\"] +[60.52843543052697, "o", "\""] +[60.55843543052697, "o", "s"] +[60.58843543052697, "o", "p"] +[60.61843543052697, "o", "l"] +[60.64843543052697, "o", "i"] +[60.678435430526974, "o", "t"] +[60.708435430526976, "o", "g"] +[60.73843543052698, "o", "r"] +[60.76843543052698, "o", "a"] +[60.79843543052698, "o", "p"] +[60.82843543052698, "o", "h"] +[60.85843543052698, "o", "-"] +[60.88843543052698, "o", "d"] +[60.91843543052698, "o", "e"] +[60.948435430526985, "o", "m"] +[60.978435430526986, "o", "o"] +[61.00843543052699, "o", "/"] +[61.03843543052699, "o", "w"] +[61.06843543052699, "o", "e"] +[61.09843543052699, "o", "a"] +[61.12843543052699, "o", "t"] +[61.15843543052699, "o", "h"] +[61.188435430526994, "o", "e"] +[61.218435430526995, "o", "r"] +[61.248435430526996, "o", ":"] +[61.278435430527, "o", "i"] +[61.308435430527, "o", "n"] +[61.338435430527, "o", "i"] +[61.368435430527, "o", "t"] +[61.398435430527, "o", "i"] +[61.428435430527, "o", "a"] +[61.458435430527004, "o", "l"] +[61.488435430527005, "o", "_"] +[61.518435430527006, "o", "d"] +[61.54843543052701, "o", "a"] +[61.57843543052701, "o", "t"] +[61.60843543052701, "o", "a"] +[61.63843543052701, "o", "\\"] +[61.66843543052701, "o", "\""] +[61.69843543052701, "o", "."] +[61.728435430527014, "o", "r"] +[61.758435430527015, "o", "d"] +[61.78843543052702, "o", "u"] +[61.81843543052702, "o", "\r\n "] +[61.84843543052702, "o", "W"] +[61.87843543052702, "o", "H"] +[61.90843543052702, "o", "E"] +[61.93843543052702, "o", "R"] +[61.96843543052702, "o", "E"] +[61.998435430527024, "o", " "] +[62.028435430527026, "o", "d"] +[62.05843543052703, "o", "a"] +[62.08843543052703, "o", "t"] +[62.11843543052703, "o", "e"] +[62.14843543052703, "o", "_"] +[62.17843543052703, "o", "t"] +[62.20843543052703, "o", "r"] +[62.23843543052703, "o", "u"] +[62.268435430527035, "o", "n"] +[62.298435430527036, "o", "c"] +[62.32843543052704, "o", "("] +[62.35843543052704, "o", "'"] +[62.38843543052704, "o", "m"] +[62.41843543052704, "o", "o"] +[62.44843543052704, "o", "n"] +[62.47843543052704, "o", "t"] +[62.508435430527044, "o", "h"] +[62.538435430527045, "o", "'"] +[62.568435430527046, "o", ","] +[62.59843543052705, "o", " "] +[62.62843543052705, "o", "d"] +[62.65843543052705, "o", "a"] +[62.68843543052705, "o", "t"] +[62.71843543052705, "o", "e"] +[62.74843543052705, "o", ")"] +[62.778435430527054, "o", " "] +[62.808435430527055, "o", "="] +[62.838435430527056, "o", " "] +[62.86843543052706, "o", "'"] +[62.89843543052706, "o", "2"] +[62.92843543052706, "o", "0"] +[62.95843543052706, "o", "0"] +[62.98843543052706, "o", "9"] +[63.01843543052706, "o", "-"] +[63.048435430527064, "o", "0"] +[63.078435430527065, "o", "8"] +[63.10843543052707, "o", "-"] +[63.13843543052707, "o", "0"] +[63.16843543052707, "o", "1"] +[63.19843543052707, "o", "'"] +[63.22843543052707, "o", "\""] +[63.25843543052707, "o", "\r\n"] +[63.28843543052707, "o", "\u001b[0m"] +[63.318435430527074, "o", "\r\n"] +[64.31843543052707, "o", "2009-08-01 00:00:00 73 91.9\r\n2009-08-02 00:00:00 73.9 82.9\r\n2009-08-03 00:00:00 70 95\r\n2009-08-04 00:00:00 66.9 95\r\n2009-08-05 00:00:00 72 96.1\r\n2009-08-06 00:00:00 70 84.9\r\n2009-08-07 00:00:00 68 88\r\n2009-08-08 00:00:00 69.1 91\r\n2009-08-09 00:00:00 70 99\r\n2009-08-10 00:00:00 72 99\r\n"] +[64.34843543052708, "o", "\u001b[1m"] +[64.37843543052708, "o", "\u001b[36m"] +[64.40843543052708, "o", "\u001b[91m"] +[64.43843543052708, "o", "$"] +[64.46843543052708, "o", " "] +[64.49843543052708, "o", "\u001b[0m"] +[69.52843543052708, "o", "\u001b[H"] +[69.55843543052708, "o", "\u001b[J"] +[69.58843543052708, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The query API also supports running one-off Splitfile commands against a repository,"] +[69.61843543052709, "o", "\r\n"] +[69.64843543052709, "o", "$ # creating new images that can be pulled. sgr handles authentication for this automatically.\r\n"] +[69.67843543052709, "o", "$"] +[69.70843543052709, "o", " "] +[69.73843543052709, "o", "c"] +[69.76843543052709, "o", "a"] +[69.79843543052709, "o", "t"] +[69.8284354305271, "o", " "] +[69.8584354305271, "o", "r"] +[69.8884354305271, "o", "e"] +[69.9184354305271, "o", "q"] +[69.9484354305271, "o", "u"] +[69.9784354305271, "o", "e"] +[70.0084354305271, "o", "s"] +[70.0384354305271, "o", "t"] +[70.0684354305271, "o", "_"] +[70.0984354305271, "o", "1"] +[70.1284354305271, "o", "."] +[70.1584354305271, "o", "j"] +[70.18843543052711, "o", "s"] +[70.21843543052711, "o", "o"] +[70.24843543052711, "o", "n"] +[70.27843543052711, "o", "\r\n"] +[70.30843543052711, "o", "$"] +[70.33843543052711, "o", " "] +[70.36843543052711, "o", "s"] +[70.39843543052712, "o", "g"] +[70.42843543052712, "o", "r"] +[70.45843543052712, "o", " "] +[70.48843543052712, "o", "c"] +[70.51843543052712, "o", "l"] +[70.54843543052712, "o", "o"] +[70.57843543052712, "o", "u"] +[70.60843543052712, "o", "d"] +[70.63843543052712, "o", " "] +[70.66843543052713, "o", "c"] +[70.69843543052713, "o", "u"] +[70.72843543052713, "o", "r"] +[70.75843543052713, "o", "l"] +[70.78843543052713, "o", " "] +[70.81843543052713, "o", "-"] +[70.84843543052713, "o", "t"] +[70.87843543052713, "o", " "] +[70.90843543052713, "o", "s"] +[70.93843543052714, "o", "p"] +[70.96843543052714, "o", "l"] +[70.99843543052714, "o", "i"] +[71.02843543052714, "o", "t"] +[71.05843543052714, "o", "f"] +[71.08843543052714, "o", "i"] +[71.11843543052714, "o", "l"] +[71.14843543052714, "o", "e"] +[71.17843543052714, "o", " "] +[71.20843543052715, "o", "s"] +[71.23843543052715, "o", "p"] +[71.26843543052715, "o", "l"] +[71.29843543052715, "o", "i"] +[71.32843543052715, "o", "t"] +[71.35843543052715, "o", "g"] +[71.38843543052715, "o", "r"] +[71.41843543052715, "o", "a"] +[71.44843543052716, "o", "p"] +[71.47843543052716, "o", "h"] +[71.50843543052716, "o", "-"] +[71.53843543052716, "o", "d"] +[71.56843543052716, "o", "e"] +[71.59843543052716, "o", "m"] +[71.62843543052716, "o", "o"] +[71.65843543052716, "o", "/"] +[71.68843543052716, "o", "w"] +[71.71843543052717, "o", "e"] +[71.74843543052717, "o", "a"] +[71.77843543052717, "o", "t"] +[71.80843543052717, "o", "h"] +[71.83843543052717, "o", "e"] +[71.86843543052717, "o", "r"] +[71.89843543052717, "o", ":"] +[71.92843543052717, "o", "i"] +[71.95843543052717, "o", "n"] +[71.98843543052718, "o", "i"] +[72.01843543052718, "o", "t"] +[72.04843543052718, "o", "i"] +[72.07843543052718, "o", "a"] +[72.10843543052718, "o", "l"] +[72.13843543052718, "o", "_"] +[72.16843543052718, "o", "d"] +[72.19843543052718, "o", "a"] +[72.22843543052718, "o", "t"] +[72.25843543052719, "o", "a"] +[72.28843543052719, "o", " "] +[72.31843543052719, "o", "@"] +[72.34843543052719, "o", "r"] +[72.37843543052719, "o", "e"] +[72.40843543052719, "o", "q"] +[72.43843543052719, "o", "u"] +[72.4684354305272, "o", "e"] +[72.4984354305272, "o", "s"] +[72.5284354305272, "o", "t"] +[72.5584354305272, "o", "_"] +[72.5884354305272, "o", "1"] +[72.6184354305272, "o", "."] +[72.6484354305272, "o", "j"] +[72.6784354305272, "o", "s"] +[72.7084354305272, "o", "o"] +[72.7384354305272, "o", "n"] +[72.7684354305272, "o", "\r\n"] +[72.7984354305272, "o", "\u001b[0m"] +[72.82843543052721, "o", "\r\n"] +[72.82998085975694, "o", "{\"command\": \"FROM splitgraph/domestic_us_flights:latest IMPORT {SELECT fly_month, SUM(passengers) AS total_passengers FROM flights WHERE origin_airport = 'RDU' OR destination_airport = 'RDU' GROUP BY fly_month ORDER BY fly_month} AS flights\",\r\n \"tag\": \"with_flight_data\"}\r\n\r\n"] +[73.82998085975694, "o", "{\"image_hash\":\"e389c0f7bcdb7c68cbb7c55d3af65c763ad5a34ee60adcd7865f39c5a7383896\"}"] +[73.85998085975694, "o", "\u001b[1m"] +[73.88998085975695, "o", "\u001b[36m"] +[73.91998085975695, "o", "\u001b[91m"] +[73.94998085975695, "o", "$"] +[73.97998085975695, "o", " "] +[74.00998085975695, "o", "\u001b[0m"] +[79.03998085975695, "o", "\u001b[H"] +[79.06998085975695, "o", "\u001b[J"] +[79.09998085975695, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run another command against the new layer to join the two datasets"] +[79.12998085975696, "o", "\r\n"] +[79.15998085975696, "o", "$"] +[79.18998085975696, "o", " "] +[79.21998085975696, "o", "c"] +[79.24998085975696, "o", "a"] +[79.27998085975696, "o", "t"] +[79.30998085975696, "o", " "] +[79.33998085975696, "o", "r"] +[79.36998085975696, "o", "e"] +[79.39998085975697, "o", "q"] +[79.42998085975697, "o", "u"] +[79.45998085975697, "o", "e"] +[79.48998085975697, "o", "s"] +[79.51998085975697, "o", "t"] +[79.54998085975697, "o", "_"] +[79.57998085975697, "o", "2"] +[79.60998085975697, "o", "."] +[79.63998085975697, "o", "j"] +[79.66998085975698, "o", "s"] +[79.69998085975698, "o", "o"] +[79.72998085975698, "o", "n"] +[79.75998085975698, "o", "\r\n"] +[79.78998085975698, "o", "$"] +[79.81998085975698, "o", " "] +[79.84998085975698, "o", "s"] +[79.87998085975698, "o", "g"] +[79.90998085975698, "o", "r"] +[79.93998085975699, "o", " "] +[79.96998085975699, "o", "c"] +[79.99998085975699, "o", "l"] +[80.02998085975699, "o", "o"] +[80.05998085975699, "o", "u"] +[80.08998085975699, "o", "d"] +[80.11998085975699, "o", " "] +[80.149980859757, "o", "c"] +[80.179980859757, "o", "u"] +[80.209980859757, "o", "r"] +[80.239980859757, "o", "l"] +[80.269980859757, "o", " "] +[80.299980859757, "o", "-"] +[80.329980859757, "o", "t"] +[80.359980859757, "o", " "] +[80.389980859757, "o", "s"] +[80.419980859757, "o", "p"] +[80.449980859757, "o", "l"] +[80.479980859757, "o", "i"] +[80.50998085975701, "o", "t"] +[80.53998085975701, "o", "f"] +[80.56998085975701, "o", "i"] +[80.59998085975701, "o", "l"] +[80.62998085975701, "o", "e"] +[80.65998085975701, "o", " "] +[80.68998085975701, "o", "s"] +[80.71998085975702, "o", "p"] +[80.74998085975702, "o", "l"] +[80.77998085975702, "o", "i"] +[80.80998085975702, "o", "t"] +[80.83998085975702, "o", "g"] +[80.86998085975702, "o", "r"] +[80.89998085975702, "o", "a"] +[80.92998085975702, "o", "p"] +[80.95998085975702, "o", "h"] +[80.98998085975703, "o", "-"] +[81.01998085975703, "o", "d"] +[81.04998085975703, "o", "e"] +[81.07998085975703, "o", "m"] +[81.10998085975703, "o", "o"] +[81.13998085975703, "o", "/"] +[81.16998085975703, "o", "w"] +[81.19998085975703, "o", "e"] +[81.22998085975703, "o", "a"] +[81.25998085975704, "o", "t"] +[81.28998085975704, "o", "h"] +[81.31998085975704, "o", "e"] +[81.34998085975704, "o", "r"] +[81.37998085975704, "o", ":"] +[81.40998085975704, "o", "w"] +[81.43998085975704, "o", "i"] +[81.46998085975704, "o", "t"] +[81.49998085975704, "o", "h"] +[81.52998085975705, "o", "_"] +[81.55998085975705, "o", "f"] +[81.58998085975705, "o", "l"] +[81.61998085975705, "o", "i"] +[81.64998085975705, "o", "g"] +[81.67998085975705, "o", "h"] +[81.70998085975705, "o", "t"] +[81.73998085975705, "o", "_"] +[81.76998085975706, "o", "d"] +[81.79998085975706, "o", "a"] +[81.82998085975706, "o", "t"] +[81.85998085975706, "o", "a"] +[81.88998085975706, "o", " "] +[81.91998085975706, "o", "@"] +[81.94998085975706, "o", "r"] +[81.97998085975706, "o", "e"] +[82.00998085975706, "o", "q"] +[82.03998085975707, "o", "u"] +[82.06998085975707, "o", "e"] +[82.09998085975707, "o", "s"] +[82.12998085975707, "o", "t"] +[82.15998085975707, "o", "_"] +[82.18998085975707, "o", "2"] +[82.21998085975707, "o", "."] +[82.24998085975707, "o", "j"] +[82.27998085975707, "o", "s"] +[82.30998085975708, "o", "o"] +[82.33998085975708, "o", "n"] +[82.36998085975708, "o", "\r\n"] +[82.39998085975708, "o", "\u001b[0m"] +[82.42998085975708, "o", "\r\n"] +[82.43152009010376, "o", "{\"command\": \"SQL CREATE TABLE rdu_flights_weather AS ( WITH monthly_summary AS (SELECT date_trunc ('month', date) AS month, AVG(temperaturemin) AS tmin_avg, AVG(temperaturemax) AS tmax_avg FROM rdu GROUP BY month) SELECT w.month, w.tmin_avg, w.tmax_avg, f.total_passengers FROM monthly_summary w JOIN flights f ON w.month = f.fly_month)\",\r\n \"tag\": \"joined_data\"}\r\n\r\n"] +[83.43152009010376, "o", "{\"image_hash\":\"21ac462b3f401321b314fc317566d0e3631f8c81d328b7a2ee4a859285063193\"}"] +[83.46152009010376, "o", "\u001b[1m"] +[83.49152009010376, "o", "\u001b[36m"] +[83.52152009010376, "o", "\u001b[91m"] +[83.55152009010376, "o", "$"] +[83.58152009010377, "o", " "] +[83.61152009010377, "o", "\u001b[0m"] +[88.64152009010377, "o", "\u001b[H"] +[88.67152009010377, "o", "\u001b[J"] +[88.70152009010377, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Pull the dataset and check out the new image"] +[88.73152009010377, "o", "\r\n"] +[88.76152009010377, "o", "$"] +[88.79152009010377, "o", " "] +[88.82152009010377, "o", "s"] +[88.85152009010378, "o", "g"] +[88.88152009010378, "o", "r"] +[88.91152009010378, "o", " "] +[88.94152009010378, "o", "p"] +[88.97152009010378, "o", "u"] +[89.00152009010378, "o", "l"] +[89.03152009010378, "o", "l"] +[89.06152009010378, "o", " "] +[89.09152009010378, "o", "w"] +[89.12152009010379, "o", "e"] +[89.15152009010379, "o", "a"] +[89.18152009010379, "o", "t"] +[89.21152009010379, "o", "h"] +[89.24152009010379, "o", "e"] +[89.27152009010379, "o", "r"] +[89.30152009010379, "o", "\r\n"] +[89.3315200901038, "o", "$"] +[89.3615200901038, "o", " "] +[89.3915200901038, "o", "s"] +[89.4215200901038, "o", "g"] +[89.4515200901038, "o", "r"] +[89.4815200901038, "o", " "] +[89.5115200901038, "o", "c"] +[89.5415200901038, "o", "h"] +[89.5715200901038, "o", "e"] +[89.6015200901038, "o", "c"] +[89.6315200901038, "o", "k"] +[89.6615200901038, "o", "o"] +[89.69152009010381, "o", "u"] +[89.72152009010381, "o", "t"] +[89.75152009010381, "o", " "] +[89.78152009010381, "o", "w"] +[89.81152009010381, "o", "e"] +[89.84152009010381, "o", "a"] +[89.87152009010381, "o", "t"] +[89.90152009010382, "o", "h"] +[89.93152009010382, "o", "e"] +[89.96152009010382, "o", "r"] +[89.99152009010382, "o", ":"] +[90.02152009010382, "o", "j"] +[90.05152009010382, "o", "o"] +[90.08152009010382, "o", "i"] +[90.11152009010382, "o", "n"] +[90.14152009010382, "o", "e"] +[90.17152009010383, "o", "d"] +[90.20152009010383, "o", "_"] +[90.23152009010383, "o", "d"] +[90.26152009010383, "o", "a"] +[90.29152009010383, "o", "t"] +[90.32152009010383, "o", "a"] +[90.35152009010383, "o", "\r\n"] +[90.38152009010383, "o", "\u001b[0m"] +[90.41152009010383, "o", "\r\n"] +[90.64346941948006, "o", "Gathering remote metadata...\r\n"] +[91.64346941948006, "o", "Fetched metadata for 2 images, 5 tables, 2 objects and 2 tags.\r\n"] +[91.92777832984993, "o", "Need to download 1 object (3.02 KiB), cache occupancy: 0.00 B/10.00 GiB\r\n"] +[91.98739274978706, "o", "Fetching 1 object, total size 3.02 KiB\r\n"] +[91.99012550354072, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (ca446922b2844ed19f8e6c8b35edbe31@data.splitgraph.com:5432/sgregistry)...\r\n"] +[92.99012550354072, "o", "\r 0%| | 0/1 [00:00 4a832e4a1b62\r\n"] +[35.207533874511796, "o", "\u001b[1m\r\nStep 2/3 : FROM splitgraph/2016_election IMPORT { SELECT lpad(co...\u001b[0m\r\n"] +[35.208138980865556, "o", "Resolving repository splitgraph/2016_election\r\n"] +[36.02755574226387, "o", "Gathering remote metadata...\r\n"] +[37.02755574226387, "o", "Fetched metadata for 1 image, 1 table, 20 objects and 1 tag.\r\n"] +[37.04330400466927, "o", "Importing 1 table from splitgraph/2016_election:3835145ada3f into qoz_vote_fraction\r\n"] +[38.04330400466927, "o", "Processing table sg_tmp_2b3c94651097e0a13488a13cc119a5b5\r\n"] +[38.396809854507524, "o", " ---> 105f0cc16f07\r\n"] +[38.40254835128792, "o", "\u001b[1m\r\nStep 3/3 : SQL { CREATE TABLE qoz_vote_fraction AS SELECT ...\u001b[0m\r\n"] +[38.4147019767762, "o", "Executing SQL...\r\n"] +[38.42941693305977, "o", "Committing qoz_vote_fraction...\r\n"] +[38.46232012748726, "o", "Processing table qoz_vote_fraction\r\n"] +[38.593934335708695, "o", " ---> 2fd53f55d05e\r\n"] +[38.59796170234688, "o", "Successfully built qoz_vote_fraction:2fd53f55d05e.\r\n"] +[38.62796170234688, "o", "\u001b[1m"] +[38.65796170234688, "o", "\u001b[36m"] +[38.68796170234688, "o", "\u001b[91m"] +[38.717961702346884, "o", "$"] +[38.747961702346885, "o", " "] +[38.777961702346886, "o", "\u001b[0m"] +[44.03, "o", "\u001b[H"] +[44.06, "o", "\u001b[J"] +[44.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the dataset metadata"] +[44.120000000000005, "o", "\r\n"] +[44.150000000000006, "o", "$"] +[44.18000000000001, "o", " "] +[44.21000000000001, "o", "s"] +[44.24000000000001, "o", "g"] +[44.27000000000001, "o", "r"] +[44.30000000000001, "o", " "] +[44.33000000000001, "o", "s"] +[44.360000000000014, "o", "h"] +[44.390000000000015, "o", "o"] +[44.420000000000016, "o", "w"] +[44.45000000000002, "o", " "] +[44.48000000000002, "o", "q"] +[44.51000000000002, "o", "o"] +[44.54000000000002, "o", "z"] +[44.57000000000002, "o", "_"] +[44.60000000000002, "o", "v"] +[44.630000000000024, "o", "o"] +[44.660000000000025, "o", "t"] +[44.690000000000026, "o", "e"] +[44.72000000000003, "o", "_"] +[44.75000000000003, "o", "f"] +[44.78000000000003, "o", "r"] +[44.81000000000003, "o", "a"] +[44.84000000000003, "o", "c"] +[44.87000000000003, "o", "t"] +[44.900000000000034, "o", "i"] +[44.930000000000035, "o", "o"] +[44.960000000000036, "o", "n"] +[44.99000000000004, "o", "\r\n"] +[45.02000000000004, "o", "$"] +[45.05000000000004, "o", " "] +[45.08000000000004, "o", "s"] +[45.11000000000004, "o", "g"] +[45.14000000000004, "o", "r"] +[45.170000000000044, "o", " "] +[45.200000000000045, "o", "t"] +[45.23000000000005, "o", "a"] +[45.26000000000005, "o", "b"] +[45.29000000000005, "o", "l"] +[45.32000000000005, "o", "e"] +[45.35000000000005, "o", " "] +[45.38000000000005, "o", "q"] +[45.41000000000005, "o", "o"] +[45.440000000000055, "o", "z"] +[45.470000000000056, "o", "_"] +[45.50000000000006, "o", "v"] +[45.53000000000006, "o", "o"] +[45.56000000000006, "o", "t"] +[45.59000000000006, "o", "e"] +[45.62000000000006, "o", "_"] +[45.65000000000006, "o", "f"] +[45.680000000000064, "o", "r"] +[45.710000000000065, "o", "a"] +[45.740000000000066, "o", "c"] +[45.77000000000007, "o", "t"] +[45.80000000000007, "o", "i"] +[45.83000000000007, "o", "o"] +[45.86000000000007, "o", "n"] +[45.89000000000007, "o", " "] +[45.92000000000007, "o", "q"] +[45.950000000000074, "o", "o"] +[45.980000000000075, "o", "z"] +[46.010000000000076, "o", "_"] +[46.04000000000008, "o", "v"] +[46.07000000000008, "o", "o"] +[46.10000000000008, "o", "t"] +[46.13000000000008, "o", "e"] +[46.16000000000008, "o", "_"] +[46.19000000000008, "o", "f"] +[46.220000000000084, "o", "r"] +[46.250000000000085, "o", "a"] +[46.280000000000086, "o", "c"] +[46.31000000000009, "o", "t"] +[46.34000000000009, "o", "i"] +[46.37000000000009, "o", "o"] +[46.40000000000009, "o", "n"] +[46.43000000000009, "o", "\r\n"] +[46.46000000000009, "o", "\u001b[0m"] +[46.490000000000094, "o", "\r\n"] +[46.73294233322153, "o", "Image qoz_vote_fraction:2fd53f55d05e97d62ffba88cb98f010eb4a3a42143b94711bc7a19338157748e\r\n"] +[46.732954015731906, "o", " CREATE TABLE qoz_vote_fraction AS SELECT v.county_id, COALESCE(qoz_tract_fraction, 0) AS qoz_tract_fraction, trump_vote_fraction, clinton_vote_fraction, total_votes FROM vote_fraction v LEFT JOIN qoz_tract_fraction q ON q.county_id = v.county_id WHERE v.county_id IS NOT NULL; ALTER TABLE qoz_vote_fraction ADD PRIMARY KEY (county_id);\r\nCreated at 2021-04-14T15:04:57.504344\r\n"] +[46.73531698226938, "o", "Size: 220.67 KiB\r\n"] +[46.735326757431125, "o", "Parent: 105f0cc16f0756e1fab3e8e4a9cb50d704b35dbad72fdf6513e3862c84353562\r\n\r\n"] +[46.735541810989474, "o", "Tables:\r\n"] +[46.736290206909274, "o", " qoz_tract_fraction\r\n"] +[46.73629950523386, "o", " qoz_vote_fraction\r\n vote_fraction\r\n"] +[46.96877383232126, "o", "Table qoz_vote_fraction:2fd53f55d05e97d62ffba88cb98f010eb4a3a42143b94711bc7a19338157748e/qoz_vote_fraction\r\n"] +[46.968788852691745, "o", "\r\n"] +[46.97018670082102, "o", "Size: 107.08 KiB\r\n"] +[46.97101425170908, "o", "Rows: 3114\r\n"] +[46.971153249740695, "o", "Columns: \r\n county_id (text, PK)\r\n qoz_tract_fraction (numeric)\r\n trump_vote_fraction (numeric)\r\n clinton_vote_fraction (numeric)\r\n total_votes (numeric)\r\n\r\nObjects: \r\n oc423b7e057e6f48cb616bea1291248f22eafeeb17231ae9b8a0de978cbeccf\r\n"] +[47.001153249740696, "o", "\u001b[1m"] +[47.0311532497407, "o", "\u001b[36m"] +[47.0611532497407, "o", "\u001b[91m"] +[47.0911532497407, "o", "$"] +[47.1211532497407, "o", " "] +[47.1511532497407, "o", "\u001b[0m"] +[57.53, "o", "\u001b[H"] +[57.56, "o", "\u001b[J"] +[57.59, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get the data for New York County (FIPS 36061)"] +[57.620000000000005, "o", "\r\n"] +[57.650000000000006, "o", "$"] +[57.68000000000001, "o", " "] +[57.71000000000001, "o", "s"] +[57.74000000000001, "o", "g"] +[57.77000000000001, "o", "r"] +[57.80000000000001, "o", " "] +[57.83000000000001, "o", "s"] +[57.860000000000014, "o", "q"] +[57.890000000000015, "o", "l"] +[57.920000000000016, "o", " "] +[57.95000000000002, "o", "-"] +[57.98000000000002, "o", "s"] +[58.01000000000002, "o", " "] +[58.04000000000002, "o", "q"] +[58.07000000000002, "o", "o"] +[58.10000000000002, "o", "z"] +[58.130000000000024, "o", "_"] +[58.160000000000025, "o", "v"] +[58.190000000000026, "o", "o"] +[58.22000000000003, "o", "t"] +[58.25000000000003, "o", "e"] +[58.28000000000003, "o", "_"] +[58.31000000000003, "o", "f"] +[58.34000000000003, "o", "r"] +[58.37000000000003, "o", "a"] +[58.400000000000034, "o", "c"] +[58.430000000000035, "o", "t"] +[58.460000000000036, "o", "i"] +[58.49000000000004, "o", "o"] +[58.52000000000004, "o", "n"] +[58.55000000000004, "o", " "] +[58.58000000000004, "o", "\\"] +[58.61000000000004, "o", "\r\n "] +[58.64000000000004, "o", "\""] +[58.670000000000044, "o", "S"] +[58.700000000000045, "o", "E"] +[58.73000000000005, "o", "L"] +[58.76000000000005, "o", "E"] +[58.79000000000005, "o", "C"] +[58.82000000000005, "o", "T"] +[58.85000000000005, "o", " "] +[58.88000000000005, "o", "r"] +[58.91000000000005, "o", "o"] +[58.940000000000055, "o", "w"] +[58.970000000000056, "o", "_"] +[59.00000000000006, "o", "t"] +[59.03000000000006, "o", "o"] +[59.06000000000006, "o", "_"] +[59.09000000000006, "o", "j"] +[59.12000000000006, "o", "s"] +[59.15000000000006, "o", "o"] +[59.180000000000064, "o", "n"] +[59.210000000000065, "o", "("] +[59.240000000000066, "o", "d"] +[59.27000000000007, "o", ")"] +[59.30000000000007, "o", " "] +[59.33000000000007, "o", "F"] +[59.36000000000007, "o", "R"] +[59.39000000000007, "o", "O"] +[59.42000000000007, "o", "M"] +[59.450000000000074, "o", " "] +[59.480000000000075, "o", "("] +[59.510000000000076, "o", "S"] +[59.54000000000008, "o", "E"] +[59.57000000000008, "o", "L"] +[59.60000000000008, "o", "E"] +[59.63000000000008, "o", "C"] +[59.66000000000008, "o", "T"] +[59.69000000000008, "o", " "] +[59.720000000000084, "o", "*"] +[59.750000000000085, "o", " "] +[59.780000000000086, "o", "F"] +[59.81000000000009, "o", "R"] +[59.84000000000009, "o", "O"] +[59.87000000000009, "o", "M"] +[59.90000000000009, "o", " "] +[59.93000000000009, "o", "q"] +[59.96000000000009, "o", "o"] +[59.990000000000094, "o", "z"] +[60.020000000000095, "o", "_"] +[60.0500000000001, "o", "v"] +[60.0800000000001, "o", "o"] +[60.1100000000001, "o", "t"] +[60.1400000000001, "o", "e"] +[60.1700000000001, "o", "_"] +[60.2000000000001, "o", "f"] +[60.2300000000001, "o", "r"] +[60.260000000000105, "o", "a"] +[60.290000000000106, "o", "c"] +[60.32000000000011, "o", "t"] +[60.35000000000011, "o", "i"] +[60.38000000000011, "o", "o"] +[60.41000000000011, "o", "n"] +[60.44000000000011, "o", " "] +[60.47000000000011, "o", "W"] +[60.500000000000114, "o", "H"] +[60.530000000000115, "o", "E"] +[60.560000000000116, "o", "R"] +[60.59000000000012, "o", "E"] +[60.62000000000012, "o", " "] +[60.65000000000012, "o", "c"] +[60.68000000000012, "o", "o"] +[60.71000000000012, "o", "u"] +[60.74000000000012, "o", "n"] +[60.770000000000124, "o", "t"] +[60.800000000000125, "o", "y"] +[60.830000000000126, "o", "_"] +[60.86000000000013, "o", "i"] +[60.89000000000013, "o", "d"] +[60.92000000000013, "o", " "] +[60.95000000000013, "o", "="] +[60.98000000000013, "o", " "] +[61.01000000000013, "o", "'"] +[61.040000000000134, "o", "3"] +[61.070000000000135, "o", "6"] +[61.100000000000136, "o", "0"] +[61.13000000000014, "o", "6"] +[61.16000000000014, "o", "1"] +[61.19000000000014, "o", "'"] +[61.22000000000014, "o", ")"] +[61.25000000000014, "o", " "] +[61.28000000000014, "o", "d"] +[61.310000000000144, "o", "\""] +[61.340000000000146, "o", "\r\n"] +[61.37000000000015, "o", "\u001b[0m"] +[61.40000000000015, "o", "\r\n"] +[61.64281883239761, "o", "{'county_id': '36061', 'qoz_tract_fraction': 0.125, 'trump_vote_fraction': 0.08865095716546313, 'clinton_vote_fraction': 0.7905445350569275, 'total_votes': 732423}\r\n"] +[61.67281883239761, "o", "\u001b[1m"] +[61.70281883239761, "o", "\u001b[36m"] +[61.73281883239761, "o", "\u001b[91m"] +[61.76281883239761, "o", "$"] +[61.792818832397614, "o", " "] +[61.822818832397616, "o", "\u001b[0m"] +[66.85281883239762, "o", "\u001b[H"] +[66.88281883239762, "o", "\u001b[J"] +[66.91281883239762, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Do a quick analysis of the dataset."] +[66.94281883239762, "o", "\r\n"] +[66.97281883239762, "o", "$"] +[67.00281883239762, "o", " "] +[67.03281883239762, "o", "c"] +[67.06281883239762, "o", "a"] +[67.09281883239763, "o", "t"] +[67.12281883239763, "o", " "] +[67.15281883239763, "o", "a"] +[67.18281883239763, "o", "n"] +[67.21281883239763, "o", "a"] +[67.24281883239763, "o", "l"] +[67.27281883239763, "o", "y"] +[67.30281883239763, "o", "z"] +[67.33281883239763, "o", "e"] +[67.36281883239764, "o", "."] +[67.39281883239764, "o", "p"] +[67.42281883239764, "o", "y"] +[67.45281883239764, "o", "\r\n"] +[67.48281883239764, "o", "$"] +[67.51281883239764, "o", " "] +[67.54281883239764, "o", "p"] +[67.57281883239764, "o", "y"] +[67.60281883239765, "o", "t"] +[67.63281883239765, "o", "h"] +[67.66281883239765, "o", "o"] +[67.69281883239765, "o", "n"] +[67.72281883239765, "o", " "] +[67.75281883239765, "o", "a"] +[67.78281883239765, "o", "n"] +[67.81281883239765, "o", "a"] +[67.84281883239765, "o", "l"] +[67.87281883239766, "o", "y"] +[67.90281883239766, "o", "z"] +[67.93281883239766, "o", "e"] +[67.96281883239766, "o", "."] +[67.99281883239766, "o", "p"] +[68.02281883239766, "o", "y"] +[68.05281883239766, "o", "\r\n"] +[68.08281883239766, "o", "\u001b[0m"] +[68.11281883239766, "o", "\r\n"] +[68.11438619613668, "o", "import scipy.stats as ss\r\n\r\nfrom splitgraph.core.repository import Repository\r\nfrom splitgraph.ingestion.pandas import sql_to_df\r\n\r\n# Load the dataset we created into Pandas\r\nimage = Repository(\"\", \"qoz_vote_fraction\").images[\"latest\"]\r\ndf = sql_to_df(\"SELECT * FROM qoz_vote_fraction\", image=image, use_lq=True)\r\nprint(df)\r\n\r\n# Is there a correlation between the Trump vote fraction and the fraction of\r\n# QOZ-qualified tracts in every county?\r\nprint(ss.linregress(df[\"trump_vote_fraction\"], df[\"qoz_tract_fract"] +[68.11439525604268, "o", "ion\"]))\r\n"] +[69.11439525604268, "o", " county_id qoz_tract_fraction trump_vote_fraction clinton_vote_fraction total_votes\r\n0 01001 0.083333 0.491135 0.160432 37000.0\r\n1 01003 0.187500 0.496056 0.125629 146925.0\r\n2 01005 0.111111 0.330305 0.294998 16512.0\r\n3 01007 0.250000 0.485132 0.134927 13889.0\r\n4 01009 0.111111 "] +[69.11440979957601, "o", "0.588017 0.055430 38788.0\r\n... ... ... ... ... ...\r\n3109 56037 0.083333 0.709515 0.188616 17130.0\r\n3110 56039 0.000000 0.310525 0.579235 12627.0\r\n3111 56041 0.333333 0.726564 0.141913 8470.0\r\n"] +[69.11447774887105, "o", "3112 56043 0.333333 0.763241 0.139486 3814.0\r\n3113 56045 0.000000 0.860182 0.084799 3526.0\r\n\r\n[3114 rows x 5 columns]\r\n"] +[69.11665331840535, "o", "LinregressResult(slope=-0.06217947076052384, intercept=0.1781160377798594, rvalue=-0.05782420568050624, pvalue=0.0012457930627282658, stderr=0.019243775109388402, intercept_stderr=0.012338526356298417)\r\n"] +[69.14665331840536, "o", "\u001b[1m"] +[69.17665331840536, "o", "\u001b[36m"] +[69.20665331840536, "o", "\u001b[91m"] +[69.23665331840536, "o", "$"] +[69.26665331840536, "o", " "] +[69.29665331840536, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.14/bloom-filter.cast b/content/casts/versioned/archive/v0.2.14/bloom-filter.cast new file mode 100644 index 00000000..e6a3bb71 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.14/bloom-filter.cast @@ -0,0 +1,979 @@ +{"version": 2, "width": 100, "height": 56, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1620214119, "metadata": {"tss": [{"h": "This example will use the 2016 US presidential election dataset", "ts": 0.06}, {"h": "The table is sorted by voting precinct and so queries that filter by that", "ts": 8.619999999999997}, {"h": "Currently we have no fragments in cache. Let's run this query and check the cache again", "ts": 18.729544973373322}, {"h": "Since default indexing in Splitgraph is done by min-max values for every column", "ts": 30.791061973571885}, {"h": "Let's download the whole dataset and add a bloom filter index on county_name", "ts": 41.24762338638334}, {"h": "Check the metadata of a new object to see details about the bloom filter structure", "ts": 72.77319707870527}, {"h": "Plan the query again: because the bloom filter can drop most fragments -", "ts": 100.27319707870527}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # This example will use the 2016 US presidential election dataset"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # to show off how indexing with a bloom filter can improve query performance.\r\n"] +[0.18, "o", "$ #\r\n"] +[0.21, "o", "$ # First, clone the whole dataset without downloading it.\r\n"] +[0.24, "o", "$"] +[0.27, "o", " "] +[0.30000000000000004, "o", "s"] +[0.33000000000000007, "o", "g"] +[0.3600000000000001, "o", "r"] +[0.3900000000000001, "o", " "] +[0.42000000000000015, "o", "c"] +[0.4500000000000002, "o", "l"] +[0.4800000000000002, "o", "o"] +[0.5100000000000002, "o", "n"] +[0.5400000000000003, "o", "e"] +[0.5700000000000003, "o", " "] +[0.6000000000000003, "o", "s"] +[0.6300000000000003, "o", "p"] +[0.6600000000000004, "o", "l"] +[0.6900000000000004, "o", "i"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "g"] +[0.7800000000000005, "o", "r"] +[0.8100000000000005, "o", "a"] +[0.8400000000000005, "o", "p"] +[0.8700000000000006, "o", "h"] +[0.9000000000000006, "o", "/"] +[0.9300000000000006, "o", "2"] +[0.9600000000000006, "o", "0"] +[0.9900000000000007, "o", "1"] +[1.0200000000000007, "o", "6"] +[1.0500000000000007, "o", "_"] +[1.0800000000000007, "o", "e"] +[1.1100000000000008, "o", "l"] +[1.1400000000000008, "o", "e"] +[1.1700000000000008, "o", "c"] +[1.2000000000000008, "o", "t"] +[1.2300000000000009, "o", "i"] +[1.260000000000001, "o", "o"] +[1.290000000000001, "o", "n"] +[1.320000000000001, "o", "\r\n"] +[1.350000000000001, "o", "\u001b[0m"] +[1.380000000000001, "o", "\r\n"] +[2.380000000000001, "o", "Gathering remote metadata...\r\n"] +[3.380000000000001, "o", "Fetched metadata for 1 image, 1 table, 20 objects and 1 tag.\r\n"] +[3.4100000000000006, "o", "\u001b[1m"] +[3.4400000000000004, "o", "\u001b[36m"] +[3.47, "o", "\u001b[91m"] +[3.5, "o", "$"] +[3.53, "o", " "] +[3.5599999999999996, "o", "\u001b[0m"] +[8.589999999999998, "o", "\u001b[H"] +[8.619999999999997, "o", "\u001b[J"] +[8.649999999999997, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The table is sorted by voting precinct and so queries that filter by that"] +[8.679999999999996, "o", "\r\n"] +[8.709999999999996, "o", "$ # (or by state, since precinct FIPS codes have the state as the prefix)\r\n"] +[8.739999999999995, "o", "$ # will use and download fewer fragments (6MiB/27MiB)\r\n"] +[8.769999999999994, "o", "$"] +[8.799999999999994, "o", " "] +[8.829999999999993, "o", "s"] +[8.859999999999992, "o", "g"] +[8.889999999999992, "o", "r"] +[8.919999999999991, "o", " "] +[8.94999999999999, "o", "s"] +[8.97999999999999, "o", "q"] +[9.00999999999999, "o", "l"] +[9.039999999999988, "o", " "] +[9.069999999999988, "o", "-"] +[9.099999999999987, "o", "-"] +[9.129999999999987, "o", "i"] +[9.159999999999986, "o", "m"] +[9.189999999999985, "o", "a"] +[9.219999999999985, "o", "g"] +[9.249999999999984, "o", "e"] +[9.279999999999983, "o", " "] +[9.309999999999983, "o", "s"] +[9.339999999999982, "o", "p"] +[9.369999999999981, "o", "l"] +[9.39999999999998, "o", "i"] +[9.42999999999998, "o", "t"] +[9.45999999999998, "o", "g"] +[9.489999999999979, "o", "r"] +[9.519999999999978, "o", "a"] +[9.549999999999978, "o", "p"] +[9.579999999999977, "o", "h"] +[9.609999999999976, "o", "/"] +[9.639999999999976, "o", "2"] +[9.669999999999975, "o", "0"] +[9.699999999999974, "o", "1"] +[9.729999999999974, "o", "6"] +[9.759999999999973, "o", "_"] +[9.789999999999973, "o", "e"] +[9.819999999999972, "o", "l"] +[9.849999999999971, "o", "e"] +[9.87999999999997, "o", "c"] +[9.90999999999997, "o", "t"] +[9.93999999999997, "o", "i"] +[9.969999999999969, "o", "o"] +[9.999999999999968, "o", "n"] +[10.029999999999967, "o", ":"] +[10.059999999999967, "o", "l"] +[10.089999999999966, "o", "a"] +[10.119999999999965, "o", "t"] +[10.149999999999965, "o", "e"] +[10.179999999999964, "o", "s"] +[10.209999999999964, "o", "t"] +[10.239999999999963, "o", " "] +[10.269999999999962, "o", "\\"] +[10.299999999999962, "o", "\r\n "] +[10.329999999999961, "o", "\""] +[10.35999999999996, "o", "E"] +[10.38999999999996, "o", "X"] +[10.419999999999959, "o", "P"] +[10.449999999999958, "o", "L"] +[10.479999999999958, "o", "A"] +[10.509999999999957, "o", "I"] +[10.539999999999957, "o", "N"] +[10.569999999999956, "o", " "] +[10.599999999999955, "o", "S"] +[10.629999999999955, "o", "E"] +[10.659999999999954, "o", "L"] +[10.689999999999953, "o", "E"] +[10.719999999999953, "o", "C"] +[10.749999999999952, "o", "T"] +[10.779999999999951, "o", " "] +[10.80999999999995, "o", "S"] +[10.83999999999995, "o", "U"] +[10.86999999999995, "o", "M"] +[10.899999999999949, "o", "("] +[10.929999999999948, "o", "v"] +[10.959999999999948, "o", "o"] +[10.989999999999947, "o", "t"] +[11.019999999999946, "o", "e"] +[11.049999999999946, "o", "s"] +[11.079999999999945, "o", ")"] +[11.109999999999944, "o", " "] +[11.139999999999944, "o", "F"] +[11.169999999999943, "o", "R"] +[11.199999999999942, "o", "O"] +[11.229999999999942, "o", "M"] +[11.259999999999941, "o", " "] +[11.28999999999994, "o", "p"] +[11.31999999999994, "o", "r"] +[11.34999999999994, "o", "e"] +[11.379999999999939, "o", "c"] +[11.409999999999938, "o", "i"] +[11.439999999999937, "o", "n"] +[11.469999999999937, "o", "c"] +[11.499999999999936, "o", "t"] +[11.529999999999935, "o", "_"] +[11.559999999999935, "o", "r"] +[11.589999999999934, "o", "e"] +[11.619999999999933, "o", "s"] +[11.649999999999933, "o", "u"] +[11.679999999999932, "o", "l"] +[11.709999999999932, "o", "t"] +[11.739999999999931, "o", "s"] +[11.76999999999993, "o", " "] +[11.79999999999993, "o", "W"] +[11.829999999999929, "o", "H"] +[11.859999999999928, "o", "E"] +[11.889999999999928, "o", "R"] +[11.919999999999927, "o", "E"] +[11.949999999999926, "o", " "] +[11.979999999999926, "o", "s"] +[12.009999999999925, "o", "t"] +[12.039999999999925, "o", "a"] +[12.069999999999924, "o", "t"] +[12.099999999999923, "o", "e"] +[12.129999999999923, "o", " "] +[12.159999999999922, "o", "="] +[12.189999999999921, "o", " "] +[12.21999999999992, "o", "'"] +[12.24999999999992, "o", "N"] +[12.27999999999992, "o", "e"] +[12.309999999999919, "o", "w"] +[12.339999999999918, "o", " "] +[12.369999999999918, "o", "Y"] +[12.399999999999917, "o", "o"] +[12.429999999999916, "o", "r"] +[12.459999999999916, "o", "k"] +[12.489999999999915, "o", "'"] +[12.519999999999914, "o", "\""] +[12.549999999999914, "o", "\r\n"] +[12.579999999999913, "o", "\u001b[0m"] +[12.609999999999912, "o", "\r\n"] +[13.489544973373325, "o", "Aggregate (cost=9785903.09..9785903.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..9784680.00 rows=489234 width=20)\r\nFilter: ((state)::text = 'New York'::text)\r\nMulticorn: Original Multicorn quals: [state = New York]\r\nMulticorn: CNF quals: [[('state', '=', 'New York')]]\r\nMulticorn: Objects removed by filter: 15\r\nMulticorn: Scan through 5 object(s) (6.63 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Deforming true\r\n"] +[13.519544973373325, "o", "\u001b[1m"] +[13.549544973373324, "o", "\u001b[36m"] +[13.579544973373324, "o", "\u001b[91m"] +[13.609544973373323, "o", "$"] +[13.639544973373322, "o", " "] +[13.669544973373322, "o", "\u001b[0m"] +[18.69954497337332, "o", "\u001b[H"] +[18.729544973373322, "o", "\u001b[J"] +[18.759544973373323, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Currently we have no fragments in cache. Let's run this query and check the cache again"] +[18.789544973373324, "o", "\r\n"] +[18.819544973373326, "o", "$"] +[18.849544973373327, "o", " "] +[18.879544973373328, "o", "s"] +[18.90954497337333, "o", "g"] +[18.93954497337333, "o", "r"] +[18.96954497337333, "o", " "] +[18.999544973373332, "o", "o"] +[19.029544973373334, "o", "b"] +[19.059544973373335, "o", "j"] +[19.089544973373336, "o", "e"] +[19.119544973373337, "o", "c"] +[19.149544973373338, "o", "t"] +[19.17954497337334, "o", "s"] +[19.20954497337334, "o", " "] +[19.23954497337334, "o", "-"] +[19.269544973373343, "o", "-"] +[19.299544973373344, "o", "l"] +[19.329544973373345, "o", "o"] +[19.359544973373346, "o", "c"] +[19.389544973373347, "o", "a"] +[19.41954497337335, "o", "l"] +[19.44954497337335, "o", "\r\n"] +[19.47954497337335, "o", "$"] +[19.50954497337335, "o", " "] +[19.539544973373353, "o", "s"] +[19.569544973373354, "o", "g"] +[19.599544973373355, "o", "r"] +[19.629544973373356, "o", " "] +[19.659544973373357, "o", "s"] +[19.68954497337336, "o", "q"] +[19.71954497337336, "o", "l"] +[19.74954497337336, "o", " "] +[19.779544973373362, "o", "-"] +[19.809544973373363, "o", "-"] +[19.839544973373364, "o", "i"] +[19.869544973373365, "o", "m"] +[19.899544973373366, "o", "a"] +[19.929544973373368, "o", "g"] +[19.95954497337337, "o", "e"] +[19.98954497337337, "o", " "] +[20.01954497337337, "o", "s"] +[20.049544973373372, "o", "p"] +[20.079544973373373, "o", "l"] +[20.109544973373374, "o", "i"] +[20.139544973373376, "o", "t"] +[20.169544973373377, "o", "g"] +[20.199544973373378, "o", "r"] +[20.22954497337338, "o", "a"] +[20.25954497337338, "o", "p"] +[20.28954497337338, "o", "h"] +[20.319544973373382, "o", "/"] +[20.349544973373384, "o", "2"] +[20.379544973373385, "o", "0"] +[20.409544973373386, "o", "1"] +[20.439544973373387, "o", "6"] +[20.469544973373388, "o", "_"] +[20.49954497337339, "o", "e"] +[20.52954497337339, "o", "l"] +[20.55954497337339, "o", "e"] +[20.589544973373393, "o", "c"] +[20.619544973373394, "o", "t"] +[20.649544973373395, "o", "i"] +[20.679544973373396, "o", "o"] +[20.709544973373397, "o", "n"] +[20.7395449733734, "o", ":"] +[20.7695449733734, "o", "l"] +[20.7995449733734, "o", "a"] +[20.8295449733734, "o", "t"] +[20.859544973373403, "o", "e"] +[20.889544973373404, "o", "s"] +[20.919544973373405, "o", "t"] +[20.949544973373406, "o", " "] +[20.979544973373407, "o", "\\"] +[21.00954497337341, "o", "\r\n "] +[21.03954497337341, "o", "\""] +[21.06954497337341, "o", "S"] +[21.099544973373412, "o", "E"] +[21.129544973373413, "o", "L"] +[21.159544973373414, "o", "E"] +[21.189544973373415, "o", "C"] +[21.219544973373416, "o", "T"] +[21.249544973373418, "o", " "] +[21.27954497337342, "o", "S"] +[21.30954497337342, "o", "U"] +[21.33954497337342, "o", "M"] +[21.369544973373422, "o", "("] +[21.399544973373423, "o", "v"] +[21.429544973373424, "o", "o"] +[21.459544973373426, "o", "t"] +[21.489544973373427, "o", "e"] +[21.519544973373428, "o", "s"] +[21.54954497337343, "o", ")"] +[21.57954497337343, "o", " "] +[21.60954497337343, "o", "F"] +[21.639544973373432, "o", "R"] +[21.669544973373434, "o", "O"] +[21.699544973373435, "o", "M"] +[21.729544973373436, "o", " "] +[21.759544973373437, "o", "p"] +[21.789544973373438, "o", "r"] +[21.81954497337344, "o", "e"] +[21.84954497337344, "o", "c"] +[21.87954497337344, "o", "i"] +[21.909544973373443, "o", "n"] +[21.939544973373444, "o", "c"] +[21.969544973373445, "o", "t"] +[21.999544973373446, "o", "_"] +[22.029544973373447, "o", "r"] +[22.05954497337345, "o", "e"] +[22.08954497337345, "o", "s"] +[22.11954497337345, "o", "u"] +[22.14954497337345, "o", "l"] +[22.179544973373453, "o", "t"] +[22.209544973373454, "o", "s"] +[22.239544973373455, "o", " "] +[22.269544973373456, "o", "W"] +[22.299544973373457, "o", "H"] +[22.32954497337346, "o", "E"] +[22.35954497337346, "o", "R"] +[22.38954497337346, "o", "E"] +[22.419544973373462, "o", " "] +[22.449544973373463, "o", "s"] +[22.479544973373464, "o", "t"] +[22.509544973373465, "o", "a"] +[22.539544973373467, "o", "t"] +[22.569544973373468, "o", "e"] +[22.59954497337347, "o", " "] +[22.62954497337347, "o", "="] +[22.65954497337347, "o", " "] +[22.689544973373472, "o", "'"] +[22.719544973373473, "o", "N"] +[22.749544973373474, "o", "e"] +[22.779544973373476, "o", "w"] +[22.809544973373477, "o", " "] +[22.839544973373478, "o", "Y"] +[22.86954497337348, "o", "o"] +[22.89954497337348, "o", "r"] +[22.92954497337348, "o", "k"] +[22.959544973373482, "o", "'"] +[22.989544973373484, "o", "\""] +[23.019544973373485, "o", "\r\n"] +[23.049544973373486, "o", "$"] +[23.079544973373487, "o", " "] +[23.109544973373488, "o", "s"] +[23.13954497337349, "o", "g"] +[23.16954497337349, "o", "r"] +[23.19954497337349, "o", " "] +[23.229544973373493, "o", "o"] +[23.259544973373494, "o", "b"] +[23.289544973373495, "o", "j"] +[23.319544973373496, "o", "e"] +[23.349544973373497, "o", "c"] +[23.3795449733735, "o", "t"] +[23.4095449733735, "o", "s"] +[23.4395449733735, "o", " "] +[23.4695449733735, "o", "-"] +[23.499544973373503, "o", "-"] +[23.529544973373504, "o", "l"] +[23.559544973373505, "o", "o"] +[23.589544973373506, "o", "c"] +[23.619544973373507, "o", "a"] +[23.64954497337351, "o", "l"] +[23.67954497337351, "o", "\r\n"] +[23.70954497337351, "o", "\u001b[0m"] +[23.739544973373512, "o", "\r\n"] +[24.15098343849192, "o", "\r\n"] +[25.15098343849192, "o", "7.91188e+06\r\n"] +[25.551061973571876, "o", "o65dbd9dc992982689ec65866ab733be69c897c659d93488457a2fccb63e97c\r\no974b20261ee5f1ac124a8445a65c00e6377cfabb93b5db92bd60fc7ca3fcee\r\no9c33b53f1a4872c598ad9d08aaafd78fabce1f16ef4c5e19ad9756b9b85fda\r\no9d4cf85101cc4d431c895998cf1cad642f1fe6cd923c8209f2df38441afeeb\r\noc438159794e378ca23c306143ccdc7ce1683045f80a511aeeabb19302be63d\r\n"] +[25.581061973571877, "o", "\u001b[1m"] +[25.61106197357188, "o", "\u001b[36m"] +[25.64106197357188, "o", "\u001b[91m"] +[25.67106197357188, "o", "$"] +[25.701061973571882, "o", " "] +[25.731061973571883, "o", "\u001b[0m"] +[30.761061973571884, "o", "\u001b[H"] +[30.791061973571885, "o", "\u001b[J"] +[30.821061973571886, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Since default indexing in Splitgraph is done by min-max values for every column"] +[30.851061973571888, "o", "\r\n"] +[30.88106197357189, "o", "$ # in every fragment, it's going to do worse if multiple fragments span the same value\r\n"] +[30.91106197357189, "o", "$"] +[30.94106197357189, "o", " "] +[30.971061973571892, "o", "s"] +[31.001061973571893, "o", "g"] +[31.031061973571894, "o", "r"] +[31.061061973571896, "o", " "] +[31.091061973571897, "o", "s"] +[31.121061973571898, "o", "q"] +[31.1510619735719, "o", "l"] +[31.1810619735719, "o", " "] +[31.2110619735719, "o", "-"] +[31.241061973571902, "o", "-"] +[31.271061973571904, "o", "i"] +[31.301061973571905, "o", "m"] +[31.331061973571906, "o", "a"] +[31.361061973571907, "o", "g"] +[31.391061973571908, "o", "e"] +[31.42106197357191, "o", " "] +[31.45106197357191, "o", "s"] +[31.48106197357191, "o", "p"] +[31.511061973571913, "o", "l"] +[31.541061973571914, "o", "i"] +[31.571061973571915, "o", "t"] +[31.601061973571916, "o", "g"] +[31.631061973571917, "o", "r"] +[31.66106197357192, "o", "a"] +[31.69106197357192, "o", "p"] +[31.72106197357192, "o", "h"] +[31.75106197357192, "o", "/"] +[31.781061973571923, "o", "2"] +[31.811061973571924, "o", "0"] +[31.841061973571925, "o", "1"] +[31.871061973571926, "o", "6"] +[31.901061973571927, "o", "_"] +[31.93106197357193, "o", "e"] +[31.96106197357193, "o", "l"] +[31.99106197357193, "o", "e"] +[32.02106197357193, "o", "c"] +[32.05106197357193, "o", "t"] +[32.081061973571934, "o", "i"] +[32.111061973571935, "o", "o"] +[32.14106197357194, "o", "n"] +[32.17106197357194, "o", ":"] +[32.20106197357194, "o", "l"] +[32.23106197357194, "o", "a"] +[32.26106197357194, "o", "t"] +[32.29106197357194, "o", "e"] +[32.32106197357194, "o", "s"] +[32.351061973571944, "o", "t"] +[32.381061973571946, "o", " "] +[32.41106197357195, "o", "\\"] +[32.44106197357195, "o", "\r\n "] +[32.47106197357195, "o", "\""] +[32.50106197357195, "o", "E"] +[32.53106197357195, "o", "X"] +[32.56106197357195, "o", "P"] +[32.591061973571954, "o", "L"] +[32.621061973571955, "o", "A"] +[32.651061973571956, "o", "I"] +[32.68106197357196, "o", "N"] +[32.71106197357196, "o", " "] +[32.74106197357196, "o", "S"] +[32.77106197357196, "o", "E"] +[32.80106197357196, "o", "L"] +[32.83106197357196, "o", "E"] +[32.861061973571964, "o", "C"] +[32.891061973571965, "o", "T"] +[32.921061973571966, "o", " "] +[32.95106197357197, "o", "S"] +[32.98106197357197, "o", "U"] +[33.01106197357197, "o", "M"] +[33.04106197357197, "o", "("] +[33.07106197357197, "o", "v"] +[33.10106197357197, "o", "o"] +[33.131061973571974, "o", "t"] +[33.161061973571975, "o", "e"] +[33.191061973571976, "o", "s"] +[33.22106197357198, "o", ")"] +[33.25106197357198, "o", " "] +[33.28106197357198, "o", "F"] +[33.31106197357198, "o", "R"] +[33.34106197357198, "o", "O"] +[33.37106197357198, "o", "M"] +[33.401061973571984, "o", " "] +[33.431061973571985, "o", "p"] +[33.46106197357199, "o", "r"] +[33.49106197357199, "o", "e"] +[33.52106197357199, "o", "c"] +[33.55106197357199, "o", "i"] +[33.58106197357199, "o", "n"] +[33.61106197357199, "o", "c"] +[33.64106197357199, "o", "t"] +[33.671061973571994, "o", "_"] +[33.701061973571996, "o", "r"] +[33.731061973572, "o", "e"] +[33.761061973572, "o", "s"] +[33.791061973572, "o", "u"] +[33.821061973572, "o", "l"] +[33.851061973572, "o", "t"] +[33.881061973572, "o", "s"] +[33.911061973572004, "o", " "] +[33.941061973572005, "o", "W"] +[33.971061973572006, "o", "H"] +[34.00106197357201, "o", "E"] +[34.03106197357201, "o", "R"] +[34.06106197357201, "o", "E"] +[34.09106197357201, "o", " "] +[34.12106197357201, "o", "c"] +[34.15106197357201, "o", "o"] +[34.181061973572014, "o", "u"] +[34.211061973572015, "o", "n"] +[34.241061973572016, "o", "t"] +[34.27106197357202, "o", "y"] +[34.30106197357202, "o", "_"] +[34.33106197357202, "o", "n"] +[34.36106197357202, "o", "a"] +[34.39106197357202, "o", "m"] +[34.42106197357202, "o", "e"] +[34.451061973572024, "o", " "] +[34.481061973572025, "o", "="] +[34.511061973572026, "o", " "] +[34.54106197357203, "o", "'"] +[34.57106197357203, "o", "N"] +[34.60106197357203, "o", "e"] +[34.63106197357203, "o", "w"] +[34.66106197357203, "o", " "] +[34.69106197357203, "o", "Y"] +[34.721061973572034, "o", "o"] +[34.751061973572035, "o", "r"] +[34.78106197357204, "o", "k"] +[34.81106197357204, "o", " "] +[34.84106197357204, "o", "C"] +[34.87106197357204, "o", "o"] +[34.90106197357204, "o", "u"] +[34.93106197357204, "o", "n"] +[34.96106197357204, "o", "t"] +[34.991061973572045, "o", "y"] +[35.021061973572046, "o", "'"] +[35.05106197357205, "o", "\""] +[35.08106197357205, "o", "\r\n"] +[35.11106197357205, "o", "\u001b[0m"] +[35.14106197357205, "o", "\r\n"] +[36.00760455131558, "o", "Aggregate (cost=37789403.09..37789403.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..37784680.00 rows=1889234 width=20)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 1\r\nMulticorn: Scan through 19 object(s) (25.51 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true,"] +[36.00762338638333, "o", " Deforming true\r\n"] +[36.03762338638333, "o", "\u001b[1m"] +[36.06762338638333, "o", "\u001b[36m"] +[36.09762338638333, "o", "\u001b[91m"] +[36.127623386383334, "o", "$"] +[36.157623386383335, "o", " "] +[36.187623386383336, "o", "\u001b[0m"] +[41.21762338638334, "o", "\u001b[H"] +[41.24762338638334, "o", "\u001b[J"] +[41.27762338638334, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Let's download the whole dataset and add a bloom filter index on county_name"] +[41.30762338638334, "o", "\r\n"] +[41.33762338638334, "o", "$"] +[41.36762338638334, "o", " "] +[41.397623386383344, "o", "s"] +[41.427623386383345, "o", "g"] +[41.45762338638335, "o", "r"] +[41.48762338638335, "o", " "] +[41.51762338638335, "o", "r"] +[41.54762338638335, "o", "e"] +[41.57762338638335, "o", "i"] +[41.60762338638335, "o", "n"] +[41.63762338638335, "o", "d"] +[41.667623386383355, "o", "e"] +[41.697623386383356, "o", "x"] +[41.72762338638336, "o", " "] +[41.75762338638336, "o", "-"] +[41.78762338638336, "o", "i"] +[41.81762338638336, "o", " "] +[41.84762338638336, "o", "'"] +[41.87762338638336, "o", "{"] +[41.907623386383364, "o", "\""] +[41.937623386383365, "o", "b"] +[41.967623386383366, "o", "l"] +[41.99762338638337, "o", "o"] +[42.02762338638337, "o", "o"] +[42.05762338638337, "o", "m"] +[42.08762338638337, "o", "\""] +[42.11762338638337, "o", ":"] +[42.14762338638337, "o", " "] +[42.177623386383374, "o", "{"] +[42.207623386383375, "o", "\""] +[42.237623386383376, "o", "c"] +[42.26762338638338, "o", "o"] +[42.29762338638338, "o", "u"] +[42.32762338638338, "o", "n"] +[42.35762338638338, "o", "t"] +[42.38762338638338, "o", "y"] +[42.41762338638338, "o", "_"] +[42.447623386383384, "o", "n"] +[42.477623386383385, "o", "a"] +[42.507623386383386, "o", "m"] +[42.53762338638339, "o", "e"] +[42.56762338638339, "o", "\""] +[42.59762338638339, "o", ":"] +[42.62762338638339, "o", " "] +[42.65762338638339, "o", "{"] +[42.68762338638339, "o", "\""] +[42.717623386383394, "o", "p"] +[42.747623386383395, "o", "r"] +[42.7776233863834, "o", "o"] +[42.8076233863834, "o", "b"] +[42.8376233863834, "o", "a"] +[42.8676233863834, "o", "b"] +[42.8976233863834, "o", "i"] +[42.9276233863834, "o", "l"] +[42.9576233863834, "o", "i"] +[42.987623386383405, "o", "t"] +[43.017623386383406, "o", "y"] +[43.04762338638341, "o", "\""] +[43.07762338638341, "o", ":"] +[43.10762338638341, "o", " "] +[43.13762338638341, "o", "0"] +[43.16762338638341, "o", "."] +[43.19762338638341, "o", "0"] +[43.227623386383414, "o", "1"] +[43.257623386383415, "o", "}"] +[43.287623386383416, "o", "}"] +[43.31762338638342, "o", "}"] +[43.34762338638342, "o", "'"] +[43.37762338638342, "o", " "] +[43.40762338638342, "o", "\\"] +[43.43762338638342, "o", "\r\n "] +[43.46762338638342, "o", "s"] +[43.497623386383424, "o", "p"] +[43.527623386383425, "o", "l"] +[43.557623386383426, "o", "i"] +[43.58762338638343, "o", "t"] +[43.61762338638343, "o", "g"] +[43.64762338638343, "o", "r"] +[43.67762338638343, "o", "a"] +[43.70762338638343, "o", "p"] +[43.73762338638343, "o", "h"] +[43.767623386383434, "o", "/"] +[43.797623386383435, "o", "2"] +[43.827623386383436, "o", "0"] +[43.85762338638344, "o", "1"] +[43.88762338638344, "o", "6"] +[43.91762338638344, "o", "_"] +[43.94762338638344, "o", "e"] +[43.97762338638344, "o", "l"] +[44.00762338638344, "o", "e"] +[44.037623386383444, "o", "c"] +[44.067623386383445, "o", "t"] +[44.09762338638345, "o", "i"] +[44.12762338638345, "o", "o"] +[44.15762338638345, "o", "n"] +[44.18762338638345, "o", ":"] +[44.21762338638345, "o", "l"] +[44.24762338638345, "o", "a"] +[44.27762338638345, "o", "t"] +[44.307623386383455, "o", "e"] +[44.337623386383456, "o", "s"] +[44.36762338638346, "o", "t"] +[44.39762338638346, "o", " "] +[44.42762338638346, "o", "p"] +[44.45762338638346, "o", "r"] +[44.48762338638346, "o", "e"] +[44.51762338638346, "o", "c"] +[44.547623386383464, "o", "i"] +[44.577623386383465, "o", "n"] +[44.607623386383466, "o", "c"] +[44.63762338638347, "o", "t"] +[44.66762338638347, "o", "_"] +[44.69762338638347, "o", "r"] +[44.72762338638347, "o", "e"] +[44.75762338638347, "o", "s"] +[44.78762338638347, "o", "u"] +[44.817623386383474, "o", "l"] +[44.847623386383475, "o", "t"] +[44.877623386383476, "o", "s"] +[44.90762338638348, "o", "\r\n"] +[44.93762338638348, "o", "\u001b[0m"] +[44.96762338638348, "o", "\r\n"] +[45.36452761650128, "o", "Reindexing table splitgraph/2016_election:3835145ada3f07cad99087d1b1071122d58c48783cbfe4694c101d35651fba90/precinct_results\r\n"] +[45.40093914032025, "o", "Need to download 20 objects (20.19 MiB), cache occupancy: 6.63 MiB/10.00 GiB\r\n"] +[45.45785251617474, "o", "Fetching 15 objects, total size 20.19 MiB\r\n"] +[45.46011892318768, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (ca446922b2844ed19f8e6c8b35edbe31@data.splitgraph.com:5432/sgregistry)...\r\n"] +[46.46011892318768, "o", "\r 0%| | 0/15 [00:00 Foreign Scan on precinct_results (cost=20.00..4000000.00 rows=200000 width=20)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 18\r\nMulticorn: Scan through 2 object(s) (2.64 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Defo"] +[105.48647046089232, "o", "rming true\r\n"] +[105.51647046089232, "o", "\u001b[1m"] +[105.54647046089232, "o", "\u001b[36m"] +[105.57647046089232, "o", "\u001b[91m"] +[105.60647046089233, "o", "$"] +[105.63647046089233, "o", " "] +[105.66647046089233, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.14/dbt.cast b/content/casts/versioned/archive/v0.2.14/dbt.cast new file mode 100644 index 00000000..cfc3a589 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.14/dbt.cast @@ -0,0 +1,2207 @@ +{"version": 2, "width": 100, "height": 48, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1620214218, "metadata": {"tss": [{"h": "dbt must be installed for this to work (pip install dbt)", "ts": 0.06}, {"h": "Ingest the initial data (in CSV) from this branch of the project.", "ts": 12.059999999999999}, {"h": "Snapshot the initial data with Splitgraph.", "ts": 26.957509794235353}, {"h": "Inspect the original data", "ts": 36.52873423576379}, {"h": "The status column in the raw_orders table in the initial dataset can", "ts": 49.52873423576379}, {"h": "Commit this dataset and check out the original data", "ts": 60.430549173355544}, {"h": "Check out the 'serious' version of the dbt project that uses data from", "ts": 70.77697521209775}, {"h": "Check that dbt is set up to connect to the Splitgraph engine.", "ts": 77.7641799831397}, {"h": "Now run the dbt models.", "ts": 101.2641799831397}, {"h": "Take a look at the built dataset and commit it.", "ts": 121.7641799831397}, {"h": "Check out the new version of the raw dataset and run dbt against it as well.", "ts": 136.26417998313968}, {"h": "Create an image from the new data.", "ts": 157.76417998313968}, {"h": "We now have two versions of the source and the target dataset.", "ts": 167.76417998313968}, {"h": "Inspect the difference between the two datasets that dbt built.", "ts": 175.5013470554359}, {"h": "Run a sample query: how much in bank transfer refunds did we process?", "ts": 185.0013470554359}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # dbt must be installed for this to work (pip install dbt)"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Clone the Jaffle Shop dbt example project\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "d"] +[0.27, "o", "b"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "-"] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "v"] +[0.4500000000000002, "o", "e"] +[0.4800000000000002, "o", "r"] +[0.5100000000000002, "o", "s"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "n"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "$"] +[0.6900000000000004, "o", " "] +[0.7200000000000004, "o", "g"] +[0.7500000000000004, "o", "i"] +[0.7800000000000005, "o", "t"] +[0.8100000000000005, "o", " "] +[0.8400000000000005, "o", "c"] +[0.8700000000000006, "o", "l"] +[0.9000000000000006, "o", "o"] +[0.9300000000000006, "o", "n"] +[0.9600000000000006, "o", "e"] +[0.9900000000000007, "o", " "] +[1.0200000000000007, "o", "h"] +[1.0500000000000007, "o", "t"] +[1.0800000000000007, "o", "t"] +[1.1100000000000008, "o", "p"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", ":"] +[1.2000000000000008, "o", "/"] +[1.2300000000000009, "o", "/"] +[1.260000000000001, "o", "g"] +[1.290000000000001, "o", "i"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", "h"] +[1.380000000000001, "o", "u"] +[1.410000000000001, "o", "b"] +[1.440000000000001, "o", "."] +[1.470000000000001, "o", "c"] +[1.500000000000001, "o", "o"] +[1.5300000000000011, "o", "m"] +[1.5600000000000012, "o", "/"] +[1.5900000000000012, "o", "s"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "l"] +[1.6800000000000013, "o", "i"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "g"] +[1.7700000000000014, "o", "r"] +[1.8000000000000014, "o", "a"] +[1.8300000000000014, "o", "p"] +[1.8600000000000014, "o", "h"] +[1.8900000000000015, "o", "/"] +[1.9200000000000015, "o", "j"] +[1.9500000000000015, "o", "a"] +[1.9800000000000015, "o", "f"] +[2.0100000000000016, "o", "f"] +[2.0400000000000014, "o", "l"] +[2.070000000000001, "o", "e"] +[2.100000000000001, "o", "_"] +[2.130000000000001, "o", "s"] +[2.1600000000000006, "o", "h"] +[2.1900000000000004, "o", "o"] +[2.22, "o", "p"] +[2.25, "o", "_"] +[2.28, "o", "a"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "c"] +[2.369999999999999, "o", "h"] +[2.399999999999999, "o", "i"] +[2.429999999999999, "o", "v"] +[2.4599999999999986, "o", "e"] +[2.4899999999999984, "o", "."] +[2.5199999999999982, "o", "g"] +[2.549999999999998, "o", "i"] +[2.579999999999998, "o", "t"] +[2.6099999999999977, "o", "\r\n"] +[2.6399999999999975, "o", "$"] +[2.6699999999999973, "o", " "] +[2.699999999999997, "o", "m"] +[2.729999999999997, "o", "v"] +[2.7599999999999967, "o", " "] +[2.7899999999999965, "o", "j"] +[2.8199999999999963, "o", "a"] +[2.849999999999996, "o", "f"] +[2.879999999999996, "o", "f"] +[2.9099999999999957, "o", "l"] +[2.9399999999999955, "o", "e"] +[2.9699999999999953, "o", "_"] +[2.999999999999995, "o", "s"] +[3.029999999999995, "o", "h"] +[3.0599999999999947, "o", "o"] +[3.0899999999999945, "o", "p"] +[3.1199999999999943, "o", "_"] +[3.149999999999994, "o", "a"] +[3.179999999999994, "o", "r"] +[3.2099999999999937, "o", "c"] +[3.2399999999999936, "o", "h"] +[3.2699999999999934, "o", "i"] +[3.299999999999993, "o", "v"] +[3.329999999999993, "o", "e"] +[3.3599999999999928, "o", " "] +[3.3899999999999926, "o", "j"] +[3.4199999999999924, "o", "a"] +[3.449999999999992, "o", "f"] +[3.479999999999992, "o", "f"] +[3.509999999999992, "o", "l"] +[3.5399999999999916, "o", "e"] +[3.5699999999999914, "o", "_"] +[3.599999999999991, "o", "s"] +[3.629999999999991, "o", "h"] +[3.659999999999991, "o", "o"] +[3.6899999999999906, "o", "p"] +[3.7199999999999904, "o", "\r\n"] +[3.7499999999999902, "o", "\u001b[0m"] +[3.77999999999999, "o", "\r\n"] +[4.7799999999999905, "o", "installed version: 0.18.0\r\n latest version: 0.19.1\r\n\r\nYour version of dbt is out of date! You can find instructions for upgrading here:\r\nhttps://docs.getdbt.com/docs/installation\r\n\r\nPlugins:\r\n - snowflake: 0.18.0\r\n - redshift: 0.18.0\r\n - bigquery: 0.18.0\r\n - postgres: 0.18.0\r\n"] +[4.78054144859313, "o", "\u001b[0m"] +[4.782562999725332, "o", "Cloning into 'jaffle_shop_archive'...\r\n"] +[5.220473556518545, "o", "remote: Enumerating objects: 405, done. \r\nremote: Counting objects: 0% (1/405) \rremote: Counting objects: 1% (5/405) \rremote: Counting objects: 2% (9/405) \rremote: Counting objects: 3% (13/405) \rremote: Counting objects: 4% (17/405) \rremote: Counting objects: 5% (21/405) \rremote: Counting objects: 6% (25/405) \rremote: Counting objects: 7% (29/405) \rremote: Counting objects: 8% (33/405) \rremote: Counting objects: 9% (37"] +[5.22124174118041, "o", "/405) \rremote: Counting objects: 10% (41/405) \rremote: Counting objects: 11% (45/405) \rremote: Counting objects: 12% (49/405) \rremote: Counting objects: 13% (53/405) \rremote: Counting objects: 14% (57/405) \rremote: Counting objects: 15% (61/405) \rremote: Counting objects: 16% (65/405) \rremote: Counting objects: 17% (69/405) \rremote: Counting objects: 18% (73/405) \rremote: Counting objects: 19% (77/405) \rremote: Counting o"] +[5.2212560462951565, "o", "bjects: 20% (81/405) \rremote: Counting objects: 21% (86/405) \rremote: Counting objects: 22% (90/405) \rremote: Counting objects: 23% (94/405) \rremote: Counting objects: 24% (98/405) \rremote: Counting objects: 25% (102/405) \rremote: Counting objects: 26% (106/405) \rremote: Counting objects: 27% (110/405) \rremote: Counting objects: 28% (114/405) \rremote: Counting objects: 29% (118/405) \rremote: Counting objects: 30% (122/405) "] +[5.221265583038321, "o", " \rremote: Counting objects: 31% (126/405) \rremote: Counting objects: 32% (130/405) \rremote: Counting objects: 33% (134/405) \rremote: Counting objects: 34% (138/405) \rremote: Counting objects: 35% (142/405) \rremote: Counting objects: 36% (146/405) \rremote: Counting objects: 37% (150/405) \rremote: Counting objects: 38% (154/405) \rremote: Counting objects: 39% (158/405) \rremote: Counting objects: 40% (162/405) \rremote: Counting o"] +[5.221273927688589, "o", "bjects: 41% (167/405) \rremote: Counting objects: 42% (171/405) \rremote: Counting objects: 43% (175/405) \rremote: Counting objects: 44% (179/405) \rremote: Counting objects: 45% (183/405) \rremote: Counting objects: 46% (187/405) \rremote: Counting objects: 47% (191/405) \rremote: Counting objects: 48% (195/405) \rremote: Counting objects: 49% (199/405) \rremote: Counting objects: 50% (203/405) \rremote: Counting objects: 51% (207/405)"] +[5.221287755966177, "o", " \rremote: Counting objects: 52% (211/405) \rremote: Counting objects: 53% (215/405) \rremote: Counting objects: 54% (219/405) \rremote: Counting objects: 55% (223/405) \rremote: Counting objects: 56% (227/405) \rremote: Counting objects: 57% (231/405) \rremote: Counting objects: 58% (235/405) \rremote: Counting objects: 59% (239/405) \rremote: Counting objects: 60% (243/405) \rremote: Counting objects: 61% (248/405) \rremote: Count"] +[5.2213053989410305, "o", "ing objects: 62% (252/405) \rremote: Counting objects: 63% (256/405) \rremote: Counting objects: 64% (260/405) \rremote: Counting objects: 65% (264/405) \rremote: Counting objects: 66% (268/405) \rremote: Counting objects: 67% (272/405) \rremote: Counting objects: 68% (276/405) \rremote: Counting objects: 69% (280/405) \rremote: Counting objects: 70% (284/405) \rremote: Counting objects: 71% (288/405) \rremote: Counting objects: 72% (292"] +[5.221317558288565, "o", "/405) \rremote: Counting objects: 73% (296/405) \rremote: Counting objects: 74% (300/405) \rremote: Counting objects: 75% (304/405) \rremote: Counting objects: 76% (308/405) \rremote: Counting objects: 77% (312/405) \rremote: Counting objects: 78% (316/405) \rremote: Counting objects: 79% (320/405) \rremote: Counting objects: 80% (324/405) \rremote: Counting objects: 81% (329/405) \rremote: Counting objects: 82% (333/405) \rremote: "] +[5.221325664520254, "o", "Counting objects: 83% (337/405) \rremote: Counting objects: 84% (341/405) \rremote: Counting objects: 85% (345/405) \rremote: Counting objects: 86% (349/405) \rremote: Counting objects: 87% (353/405) \rremote: Counting objects: 88% (357/405) \rremote: Counting objects: 89% (361/405) \rremote: Counting objects: 90% (365/405) \rremote: Counting objects: 91% (369/405) \rremote: Counting objects: 92% (373/405) \rremote: Counting objects: 93%"] +[5.221335439681997, "o", " (377/405) \rremote: Counting objects: 94% (381/405) \rremote: Counting objects: 95% (385/405) \rremote: Counting objects: 96% (389/405) \rremote: Counting objects: 97% (393/405) \rremote: Counting objects: 98% (397/405) \rremote: Counting objects: 99% (401/405) \rremote: Counting objects: 100% (405/405) \rremote: Counting objects: 100% (405/405), done. \r\nremote: Compressing objects: 0% (1/174) \rremote: Compressing objects: 1% (2/174) "] +[5.2213428306579495, "o", " \rremote: Compressing objects: 2% (4/174) \rremote: Compressing objects: 3% (6/174) \rremote: Compressing objects: 4% (7/174) \rremote: Compressing objects: 5% (9/174) \rremote: Compressing objects: 6% (11/174) \rremote: Compressing objects: 7% (13/174) \rremote: Compressing objects: 8% (14/174) \rremote: Compressing objects: 9% (16/174) \rremote: Compressing objects: 10% (18/174) \rremote: Compressing objects: 11% (20/174) "] +[5.221346883773794, "o", "\rremote: Compressing objects: 12% (21/174) \rremote: Compressing objects: 13% (23/174) \rremote: Compressing objects: 14% (25/174) \rremote: Compressing objects: 15% (27/174) \rremote: Compressing objects: 16% (28/174) \rremote: Compressing objects: 17% (30/174) \rremote: Compressing objects: 18% (32/174) \rremote: Compressing objects: 19% (34/174) \rremote: Compressing objects: 20% (35/174) \rremote: Compressing objects: 21% (37/174) \rr"] +[5.221350936889639, "o", "emote: Compressing objects: 22% (39/174) \rremote: Compressing objects: 23% (41/174) \rremote: Compressing objects: 24% (42/174) \rremote: Compressing objects: 25% (44/174) \rremote: Compressing objects: 26% (46/174) \rremote: Compressing objects: 27% (47/174) \rremote: Compressing objects: 28% (49/174) \rremote: Compressing objects: 29% (51/174) \rremote: Compressing objects: 30% (53/174) \rremote: Compressing objects: 31% (54/174) \rrem"] +[5.221359519958487, "o", "ote: Compressing objects: 32% (56/174) \rremote: Compressing objects: 33% (58/174) \rremote: Compressing objects: 34% (60/174) \rremote: Compressing objects: 35% (61/174) \rremote: Compressing objects: 36% (63/174) \rremote: Compressing objects: 37% (65/174) \rremote: Compressing objects: 38% (67/174) \rremote: Compressing objects: 39% (68/174) \rremote: Compressing objects: 40% (70/174) \rremote: Compressing objects: 41% (72/174) \rremot"] +[5.221364765167227, "o", "e: Compressing objects: 42% (74/174) \rremote: Compressing objects: 43% (75/174) \rremote: Compressing objects: 44% (77/174) \rremote: Compressing objects: 45% (79/174) \rremote: Compressing objects: 46% (81/174) \rremote: Compressing objects: 47% (82/174) \rremote: Compressing objects: 48% (84/174) \rremote: Compressing objects: 49% (86/174) \rremote: Compressing objects: 50% (87/174) \rremote: Compressing objects: 51% (89/174) \rremote:"] +[5.2213688182830715, "o", " Compressing objects: 52% (91/174) \rremote: Compressing objects: 53% (93/174) \rremote: Compressing objects: 54% (94/174) \rremote: Compressing objects: 55% (96/174) \rremote: Compressing objects: 56% (98/174) \rremote: Compressing objects: 57% (100/174) \rremote: Compressing objects: 58% (101/174) \rremote: Compressing objects: 59% (103/174) \rremote: Compressing objects: 60% (105/174) \rremote: Compressing objects: 61% (107/174) \rremo"] +[5.221375970840445, "o", "te: Compressing objects: 62% (108/174) \rremote: Compressing objects: 63% (110/174) \rremote: Compressing objects: 64% (112/174) \rremote: Compressing objects: 65% (114/174) \rremote: Compressing objects: 66% (115/174) \rremote: Compressing objects: 67% (117/174) \rremote: Compressing objects: 68% (119/174) \rremote: Compressing objects: 69% (121/174) \rremote: Compressing objects: 70% (122/174) \rremote: Compressing objects: 71% (124/174) "] +[5.221388130187979, "o", " \rremote: Compressing objects: 72% (126/174) \rremote: Compressing objects: 73% (128/174) \rremote: Compressing objects: 74% (129/174) \rremote: Compressing objects: 75% (131/174) \rremote: Compressing objects: 76% (133/174) \rremote: Compressing objects: 77% (134/174) \rremote: Compressing objects: 78% (136/174) \r"] +[5.248133687973013, "o", "remote: Compressing objects: 79% (138/174) \rremote: Compressing objects: 80% (140/174) \rremote: Compressing objects: 81% (141/174) \rremote: Compressing objects: 82% (143/174) \rremote: Compressing objects: 83% (145/174) \rremote: Compressing objects: 84% (147/174) \r"] +[5.248143463134756, "o", "remote: Compressing objects: 85% (148/174) \rremote: Compressing objects: 86% (150/174) \rremote: Compressing objects: 87% (152/174) \rremote: Compressing objects: 88% (154/174) \rremote: Compressing objects: 89% (155/174) \rremote: Compressing objects: 90% (157/174) \rremote: Compressing objects: 91% (159/174) \rremote: Compressing objects: 92% (161/174) \rremote: Compressing objects: 93% (162/174) \rremote: Compressing objects: 94% (164/174) "] +[5.248149662017813, "o", " \rremote: Compressing objects: 95% (166/174) \rremote: Compressing objects: 96% (168/174) \rremote: Compressing objects: 97% (169/174) \rremote: Compressing objects: 98% (171/174) \rremote: Compressing objects: 99% (173/174) \rremote: Compressing objects: 100% (174/174) \rremote: Compressing objects: 100% (174/174), done. \r\n"] +[5.252901821136465, "o", "Receiving objects: 0% (1/405)\r"] +[5.25333049774169, "o", "Receiving objects: 1% (5/405)\r"] +[5.2533581542968655, "o", "Receiving objects: 2% (9/405)\r"] +[5.2533653068542385, "o", "Receiving objects: 3% (13/405)\r"] +[5.253461627960196, "o", "Receiving objects: 4% (17/405)\r"] +[5.253489284515371, "o", "Receiving objects: 5% (21/405)\r"] +[5.253572254180899, "o", "Receiving objects: 6% (25/405)\r"] +[5.253609685897818, "o", "Receiving objects: 7% (29/405)\r"] +[5.253708391189566, "o", "Receiving objects: 8% (33/405)\r"] +[5.253756790161123, "o", "Receiving objects: 9% (37/405)\r"] +[5.253804950714102, "o", "Receiving objects: 10% (41/405)\r"] +[5.253859310150137, "o", "Receiving objects: 11% (45/405)\r"] +[5.253957300186148, "o", "Receiving objects: 12% (49/405)\r"] +[5.254015235900869, "o", "Receiving objects: 13% (53/405)\r"] +[5.254071502685537, "o", "Receiving objects: 14% (57/405)\r"] +[5.280142335891714, "o", "Receiving objects: 15% (61/405)\r"] +[5.280163555145254, "o", "Receiving objects: 16% (65/405)\r"] +[5.28016999244689, "o", "Receiving objects: 17% (69/405)\r"] +[5.280277519226065, "o", "Receiving objects: 18% (73/405)\r"] +[5.280361919403067, "o", "Receiving objects: 19% (77/405)\r"] +[5.280440359115591, "o", "Receiving objects: 20% (81/405)\r"] +[5.280551462173452, "o", "Receiving objects: 21% (86/405)\r"] +[5.28082540512084, "o", "Receiving objects: 22% (90/405)\r"] +[5.280834465026846, "o", "Receiving objects: 23% (94/405)\r"] +[5.284715442657461, "o", "Receiving objects: 24% (98/405)\r"] +[5.284726648330679, "o", "Receiving objects: 25% (102/405)\r"] +[5.31264594078063, "o", "Receiving objects: 26% (106/405)\r"] +[5.312669305801382, "o", "Receiving objects: 27% (110/405)\rReceiving objects: 28% (114/405)\rReceiving objects: 29% (118/405)\rReceiving objects: 30% (122/405)\r"] +[5.312738208770742, "o", "Receiving objects: 31% (126/405)\r"] +[5.312753944396963, "o", "Receiving objects: 32% (130/405)\r"] +[5.3166327762603665, "o", "Receiving objects: 33% (134/405)\r"] +[5.316783456802359, "o", "Receiving objects: 34% (138/405)\r"] +[5.344522504806509, "o", "Receiving objects: 35% (142/405)\r"] +[5.345485000610342, "o", "Receiving objects: 36% (146/405)\r"] +[5.345537929534903, "o", "Receiving objects: 37% (150/405)\r"] +[5.345608978271475, "o", "Receiving objects: 38% (154/405)\r"] +[5.345793991088858, "o", "Receiving objects: 39% (158/405)\r"] +[5.35034182548522, "o", "remote: Total 405 (delta 191), reused 405 (delta 191), pack-reused 0 \r\n"] +[5.350494413375845, "o", "Receiving objects: 40% (162/405)\r"] +[5.350588350296011, "o", "Receiving objects: 41% (167/405)\r"] +[5.350630788803091, "o", "Receiving objects: 42% (171/405)\r"] +[5.350976495742788, "o", "Receiving objects: 43% (175/405)\r"] +[5.351187019348135, "o", "Receiving objects: 44% (179/405)\r"] +[5.351474075317373, "o", "Receiving objects: 45% (183/405)\r"] +[5.351554183959951, "o", "Receiving objects: 46% (187/405)\r"] +[5.3520050334930325, "o", "Receiving objects: 47% (191/405)\r"] +[5.35223916053771, "o", "Receiving objects: 48% (195/405)\r"] +[5.352290897369375, "o", "Receiving objects: 49% (199/405)\r"] +[5.352686433792105, "o", "Receiving objects: 50% (203/405)\r"] +[5.35276201248168, "o", "Receiving objects: 51% (207/405)\r"] +[5.352942256927481, "o", "Receiving objects: 52% (211/405)\r"] +[5.352992324829092, "o", "Receiving objects: 53% (215/405)\rReceiving objects: 54% (219/405)\r"] +[5.353129177093496, "o", "Receiving objects: 55% (223/405)\r"] +[5.353192119598379, "o", "Receiving objects: 56% (227/405)\r"] +[5.353292016983023, "o", "Receiving objects: 57% (231/405)\r"] +[5.35333517074584, "o", "Receiving objects: 58% (235/405)\r"] +[5.3535332965850735, "o", "Receiving objects: 59% (239/405)\r"] +[5.353595762252798, "o", "Receiving objects: 60% (243/405)\r"] +[5.353808431625357, "o", "Receiving objects: 61% (248/405)\r"] +[5.353886632919302, "o", "Receiving objects: 62% (252/405)\r"] +[5.354113368988028, "o", "Receiving objects: 63% (256/405)\rReceiving objects: 64% (260/405)\rReceiving objects: 65% (264/405)\r"] +[5.354196815490713, "o", "Receiving objects: 66% (268/405)\r"] +[5.35428002357482, "o", "Receiving objects: 67% (272/405)\r"] +[5.354355125427237, "o", "Receiving objects: 68% (276/405)\r"] +[5.35441520690917, "o", "Receiving objects: 69% (280/405)\r"] +[5.3544817256927395, "o", "Receiving objects: 70% (284/405)\r"] +[5.354576377868643, "o", "Receiving objects: 71% (288/405)\r"] +[5.354629783630362, "o", "Receiving objects: 72% (292/405)\r"] +[5.3546719837188625, "o", "Receiving objects: 73% (296/405)\r"] +[5.35470726966857, "o", "Receiving objects: 74% (300/405)\r"] +[5.354764013290396, "o", "Receiving objects: 75% (304/405)\r"] +[5.354828147888174, "o", "Receiving objects: 76% (308/405)\r"] +[5.354901580810537, "o", "Receiving objects: 77% (312/405)\r"] +[5.3549607086181545, "o", "Receiving objects: 78% (316/405)\r"] +[5.355051546096792, "o", "Receiving objects: 79% (320/405)\r"] +[5.355094223022451, "o", "Receiving objects: 80% (324/405)\r"] +[5.355193405151358, "o", "Receiving objects: 81% (329/405)\r"] +[5.355266122817984, "o", "Receiving objects: 82% (333/405)\r"] +[5.355337171554556, "o", "Receiving objects: 83% (337/405)\r"] +[5.355412034988394, "o", "Receiving objects: 84% (341/405)\r"] +[5.355473546981802, "o", "Receiving objects: 85% (345/405)\r"] +[5.355530529022207, "o", "Receiving objects: 86% (349/405)\r"] +[5.355573444366446, "o", "Receiving objects: 87% (353/405)\r"] +[5.355617551803579, "o", "Receiving objects: 88% (357/405)\r"] +[5.355673818588247, "o", "Receiving objects: 89% (361/405)\r"] +[5.355814485549917, "o", "Receiving objects: 90% (365/405)\r"] +[5.355916528701773, "o", "Receiving objects: 91% (369/405)\r"] +[5.3559747028350735, "o", "Receiving objects: 92% (373/405)\r"] +[5.356048374176016, "o", "Receiving objects: 93% (377/405)\r"] +[5.356108694076529, "o", "Receiving objects: 94% (381/405)\r"] +[5.356186895370474, "o", "Receiving objects: 95% (385/405)\r"] +[5.356302289962759, "o", "Receiving objects: 96% (389/405)\r"] +[5.356345443725576, "o", "Receiving objects: 97% (393/405)\r"] +[5.356412916183462, "o", "Receiving objects: 98% (397/405)\r"] +[5.3564718055725, "o", "Receiving objects: 99% (401/405)\r"] +[5.356712369918814, "o", "Receiving objects: 100% (405/405)\r"] +[5.356773405075064, "o", "Receiving objects: 100% (405/405), 270.20 KiB | 2.50 MiB/s, done.\r\n"] +[5.357048301696768, "o", "Resolving deltas: 0% (0/191)\r"] +[5.357307224273672, "o", "Resolving deltas: 1% (2/191)\r"] +[5.35743525505065, "o", "Resolving deltas: 2% (4/191)\r"] +[5.357541112899771, "o", "Resolving deltas: 3% (6/191)\r"] +[5.357675104141226, "o", "Resolving deltas: 4% (8/191)\r"] +[5.357791929244986, "o", "Resolving deltas: 5% (10/191)\r"] +[5.357896118164053, "o", "Resolving deltas: 6% (12/191)\r"] +[5.357999830245962, "o", "Resolving deltas: 7% (14/191)\r"] +[5.358087091445913, "o", "Resolving deltas: 8% (16/191)\r"] +[5.358149557113638, "o", "Resolving deltas: 9% (18/191)\r"] +[5.358224897384634, "o", "Resolving deltas: 10% (20/191)\r"] +[5.358349351882925, "o", "Resolving deltas: 11% (22/191)\r"] +[5.358400611877432, "o", "Resolving deltas: 12% (23/191)\r"] +[5.358460931777945, "o", "Resolving deltas: 13% (25/191)\r"] +[5.358524827957144, "o", "Resolving deltas: 14% (27/191)\r"] +[5.358593969345083, "o", "Resolving deltas: 15% (29/191)\r"] +[5.358685760498037, "o", "Resolving deltas: 16% (31/191)\r"] +[5.358758716583242, "o", "Resolving deltas: 17% (33/191)\r"] +[5.358818082809439, "o", "Resolving deltas: 18% (35/191)\r"] +[5.358888177871695, "o", "Resolving deltas: 19% (37/191)\r"] +[5.358966856002798, "o", "Resolving deltas: 20% (39/191)\r"] +[5.3590476799011135, "o", "Resolving deltas: 21% (41/191)\r"] +[5.359134702682486, "o", "Resolving deltas: 22% (43/191)\r"] +[5.35919454574584, "o", "Resolving deltas: 23% (44/191)\r"] +[5.359267501831045, "o", "Resolving deltas: 24% (46/191)\r"] +[5.359375743865957, "o", "Resolving deltas: 25% (48/191)\r"] +[5.359470872879019, "o", "Resolving deltas: 26% (50/191)\r"] +[5.35955026626586, "o", "Resolving deltas: 27% (52/191)\r"] +[5.359625606536856, "o", "Resolving deltas: 28% (54/191)\r"] +[5.359701900482168, "o", "Resolving deltas: 29% (56/191)\r"] +[5.35978630065917, "o", "Resolving deltas: 30% (58/191)\r"] +[5.359851627349844, "o", "Resolving deltas: 31% (60/191)\r"] +[5.359920053482046, "o", "Resolving deltas: 32% (62/191)\r"] +[5.359987287521353, "o", "Resolving deltas: 33% (64/191)\r"] +[5.360037593841543, "o", "Resolving deltas: 34% (65/191)\r"] +[5.360097198486319, "o", "Resolving deltas: 35% (67/191)\r"] +[5.360152988433828, "o", "Resolving deltas: 36% (69/191)\r"] +[5.360222129821768, "o", "Resolving deltas: 37% (71/191)\r"] +[5.360280303955069, "o", "Resolving deltas: 38% (73/191)\r"] +[5.360360651016226, "o", "Resolving deltas: 39% (75/191)\r"] +[5.360410957336416, "o", "Resolving deltas: 40% (77/191)\r"] +[5.360474376678457, "o", "Resolving deltas: 41% (79/191)\r"] +[5.360533981323233, "o", "Resolving deltas: 42% (81/191)\r"] +[5.360586194992056, "o", "Resolving deltas: 43% (83/191)\r"] +[5.360654859542837, "o", "Resolving deltas: 44% (85/191)\r"] +[5.360702304840078, "o", "Resolving deltas: 45% (86/191)\r"] +[5.360755233764639, "o", "Resolving deltas: 46% (88/191)\r"] +[5.3608057785034084, "o", "Resolving deltas: 47% (90/191)\r"] +[5.368844537734976, "o", "Resolving deltas: 48% (92/191)\rResolving deltas: 49% (94/191)\rResolving deltas: 50% (96/191)\rResolving deltas: 51% (98/191)\rResolving deltas: 52% (100/191)\rResolving deltas: 53% (102/191)\rResolving deltas: 54% (104/191)\rResolving deltas: 55% (106/191)\rResolving deltas: 56% (107/191)\rResolving deltas: 57% (109/191)\rResolving deltas: 58% (111/191)\rResolving deltas: 59% (113/191)\rResolving deltas: 60% (115/191)\rResolving deltas: 61% (117/191)\rResolving deltas: 62% (119/191)\rResolving deltas: 63"] +[5.36885931968688, "o", "% (121/191)\rResolving deltas: 64% (123/191)\rResolving deltas: 65% (125/191)\rResolving deltas: 66% (127/191)\rResolving deltas: 67% (128/191)\rResolving deltas: 68% (130/191)\rResolving deltas: 69% (132/191)\rResolving deltas: 70% (134/191)\rResolving deltas: 71% (136/191)\rResolving deltas: 72% (138/191)\rResolving deltas: 73% (140/191)\rResolving deltas: 74% (142/191)\rResolving deltas: 75% (144/191)\rResolving deltas: 76% (146/191)\r"] +[5.370302705764761, "o", "Resolving deltas: 77% (148/191)\r"] +[5.37188723564147, "o", "Resolving deltas: 78% (149/191)\r"] +[5.373072652816763, "o", "Resolving deltas: 79% (151/191)\r"] +[5.376086502075186, "o", "Resolving deltas: 80% (153/191)\r"] +[5.376577167510977, "o", "Resolving deltas: 81% (155/191)\r"] +[5.376870183944693, "o", "Resolving deltas: 82% (157/191)\r"] +[5.376999168395987, "o", "Resolving deltas: 83% (159/191)\rResolving deltas: 84% (161/191)\r"] +[5.377007274627676, "o", "Resolving deltas: 85% (163/191)\r"] +[5.377268104553213, "o", "Resolving deltas: 86% (165/191)\rResolving deltas: 87% (167/191)\rResolving deltas: 88% (169/191)\rResolving deltas: 89% (170/191)\rResolving deltas: 90% (172/191)\r"] +[5.377276210784903, "o", "Resolving deltas: 91% (174/191)\r"] +[5.3777385044097805, "o", "Resolving deltas: 92% (176/191)\rResolving deltas: 93% (178/191)\rResolving deltas: 94% (180/191)\rResolving deltas: 95% (182/191)\rResolving deltas: 96% (184/191)\r"] +[5.378067998886099, "o", "Resolving deltas: 97% (186/191)\rResolving deltas: 98% (188/191)\r"] +[5.37839153289794, "o", "Resolving deltas: 99% (190/191)\rResolving deltas: 100% (191/191)\r"] +[5.378745107650747, "o", "Resolving deltas: 100% (191/191), done.\r\n"] +[5.408745107650748, "o", "\u001b[1m"] +[5.438745107650748, "o", "\u001b[36m"] +[5.468745107650748, "o", "\u001b[91m"] +[5.498745107650748, "o", "$"] +[5.528745107650749, "o", " "] +[5.558745107650749, "o", "\u001b[0m"] +[12.03, "o", "\u001b[H"] +[12.059999999999999, "o", "\u001b[J"] +[12.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the initial data (in CSV) from this branch of the project."] +[12.119999999999997, "o", "\r\n"] +[12.149999999999997, "o", "$"] +[12.179999999999996, "o", " "] +[12.209999999999996, "o", "s"] +[12.239999999999995, "o", "g"] +[12.269999999999994, "o", "r"] +[12.299999999999994, "o", " "] +[12.329999999999993, "o", "i"] +[12.359999999999992, "o", "n"] +[12.389999999999992, "o", "i"] +[12.419999999999991, "o", "t"] +[12.44999999999999, "o", " "] +[12.47999999999999, "o", "r"] +[12.50999999999999, "o", "a"] +[12.539999999999988, "o", "w"] +[12.569999999999988, "o", "_"] +[12.599999999999987, "o", "j"] +[12.629999999999987, "o", "a"] +[12.659999999999986, "o", "f"] +[12.689999999999985, "o", "f"] +[12.719999999999985, "o", "l"] +[12.749999999999984, "o", "e"] +[12.779999999999983, "o", "_"] +[12.809999999999983, "o", "s"] +[12.839999999999982, "o", "h"] +[12.869999999999981, "o", "o"] +[12.89999999999998, "o", "p"] +[12.92999999999998, "o", "\r\n"] +[12.95999999999998, "o", "$"] +[12.989999999999979, "o", " "] +[13.019999999999978, "o", "s"] +[13.049999999999978, "o", "g"] +[13.079999999999977, "o", "r"] +[13.109999999999976, "o", " "] +[13.139999999999976, "o", "c"] +[13.169999999999975, "o", "s"] +[13.199999999999974, "o", "v"] +[13.229999999999974, "o", " "] +[13.259999999999973, "o", "i"] +[13.289999999999973, "o", "m"] +[13.319999999999972, "o", "p"] +[13.349999999999971, "o", "o"] +[13.37999999999997, "o", "r"] +[13.40999999999997, "o", "t"] +[13.43999999999997, "o", " "] +[13.469999999999969, "o", "-"] +[13.499999999999968, "o", "f"] +[13.529999999999967, "o", " "] +[13.559999999999967, "o", "j"] +[13.589999999999966, "o", "a"] +[13.619999999999965, "o", "f"] +[13.649999999999965, "o", "f"] +[13.679999999999964, "o", "l"] +[13.709999999999964, "o", "e"] +[13.739999999999963, "o", "_"] +[13.769999999999962, "o", "s"] +[13.799999999999962, "o", "h"] +[13.829999999999961, "o", "o"] +[13.85999999999996, "o", "p"] +[13.88999999999996, "o", "/"] +[13.919999999999959, "o", "d"] +[13.949999999999958, "o", "a"] +[13.979999999999958, "o", "t"] +[14.009999999999957, "o", "a"] +[14.039999999999957, "o", "/"] +[14.069999999999956, "o", "r"] +[14.099999999999955, "o", "a"] +[14.129999999999955, "o", "w"] +[14.159999999999954, "o", "_"] +[14.189999999999953, "o", "c"] +[14.219999999999953, "o", "u"] +[14.249999999999952, "o", "s"] +[14.279999999999951, "o", "t"] +[14.30999999999995, "o", "o"] +[14.33999999999995, "o", "m"] +[14.36999999999995, "o", "e"] +[14.399999999999949, "o", "r"] +[14.429999999999948, "o", "s"] +[14.459999999999948, "o", "."] +[14.489999999999947, "o", "c"] +[14.519999999999946, "o", "s"] +[14.549999999999946, "o", "v"] +[14.579999999999945, "o", " "] +[14.609999999999944, "o", "-"] +[14.639999999999944, "o", "k"] +[14.669999999999943, "o", " "] +[14.699999999999942, "o", "i"] +[14.729999999999942, "o", "d"] +[14.759999999999941, "o", " "] +[14.78999999999994, "o", "r"] +[14.81999999999994, "o", "a"] +[14.84999999999994, "o", "w"] +[14.879999999999939, "o", "_"] +[14.909999999999938, "o", "j"] +[14.939999999999937, "o", "a"] +[14.969999999999937, "o", "f"] +[14.999999999999936, "o", "f"] +[15.029999999999935, "o", "l"] +[15.059999999999935, "o", "e"] +[15.089999999999934, "o", "_"] +[15.119999999999933, "o", "s"] +[15.149999999999933, "o", "h"] +[15.179999999999932, "o", "o"] +[15.209999999999932, "o", "p"] +[15.239999999999931, "o", " "] +[15.26999999999993, "o", "c"] +[15.29999999999993, "o", "u"] +[15.329999999999929, "o", "s"] +[15.359999999999928, "o", "t"] +[15.389999999999928, "o", "o"] +[15.419999999999927, "o", "m"] +[15.449999999999926, "o", "e"] +[15.479999999999926, "o", "r"] +[15.509999999999925, "o", "s"] +[15.539999999999925, "o", "\r\n"] +[15.569999999999924, "o", "$"] +[15.599999999999923, "o", " "] +[15.629999999999923, "o", "s"] +[15.659999999999922, "o", "g"] +[15.689999999999921, "o", "r"] +[15.71999999999992, "o", " "] +[15.74999999999992, "o", "c"] +[15.77999999999992, "o", "s"] +[15.809999999999919, "o", "v"] +[15.839999999999918, "o", " "] +[15.869999999999918, "o", "i"] +[15.899999999999917, "o", "m"] +[15.929999999999916, "o", "p"] +[15.959999999999916, "o", "o"] +[15.989999999999915, "o", "r"] +[16.019999999999914, "o", "t"] +[16.049999999999915, "o", " "] +[16.079999999999917, "o", "-"] +[16.109999999999918, "o", "f"] +[16.13999999999992, "o", " "] +[16.16999999999992, "o", "j"] +[16.19999999999992, "o", "a"] +[16.229999999999922, "o", "f"] +[16.259999999999923, "o", "f"] +[16.289999999999925, "o", "l"] +[16.319999999999926, "o", "e"] +[16.349999999999927, "o", "_"] +[16.379999999999928, "o", "s"] +[16.40999999999993, "o", "h"] +[16.43999999999993, "o", "o"] +[16.46999999999993, "o", "p"] +[16.499999999999932, "o", "/"] +[16.529999999999934, "o", "d"] +[16.559999999999935, "o", "a"] +[16.589999999999936, "o", "t"] +[16.619999999999937, "o", "a"] +[16.649999999999938, "o", "/"] +[16.67999999999994, "o", "r"] +[16.70999999999994, "o", "a"] +[16.73999999999994, "o", "w"] +[16.769999999999943, "o", "_"] +[16.799999999999944, "o", "o"] +[16.829999999999945, "o", "r"] +[16.859999999999946, "o", "d"] +[16.889999999999947, "o", "e"] +[16.91999999999995, "o", "r"] +[16.94999999999995, "o", "s"] +[16.97999999999995, "o", "."] +[17.009999999999952, "o", "c"] +[17.039999999999953, "o", "s"] +[17.069999999999954, "o", "v"] +[17.099999999999955, "o", " "] +[17.129999999999956, "o", "-"] +[17.159999999999958, "o", "k"] +[17.18999999999996, "o", " "] +[17.21999999999996, "o", "i"] +[17.24999999999996, "o", "d"] +[17.279999999999962, "o", " "] +[17.309999999999963, "o", "-"] +[17.339999999999964, "o", "t"] +[17.369999999999965, "o", " "] +[17.399999999999967, "o", "o"] +[17.429999999999968, "o", "r"] +[17.45999999999997, "o", "d"] +[17.48999999999997, "o", "e"] +[17.51999999999997, "o", "r"] +[17.549999999999972, "o", "_"] +[17.579999999999973, "o", "d"] +[17.609999999999975, "o", "a"] +[17.639999999999976, "o", "t"] +[17.669999999999977, "o", "e"] +[17.699999999999978, "o", " "] +[17.72999999999998, "o", "t"] +[17.75999999999998, "o", "i"] +[17.78999999999998, "o", "m"] +[17.819999999999983, "o", "e"] +[17.849999999999984, "o", "s"] +[17.879999999999985, "o", "t"] +[17.909999999999986, "o", "a"] +[17.939999999999987, "o", "m"] +[17.969999999999988, "o", "p"] +[17.99999999999999, "o", " "] +[18.02999999999999, "o", "r"] +[18.05999999999999, "o", "a"] +[18.089999999999993, "o", "w"] +[18.119999999999994, "o", "_"] +[18.149999999999995, "o", "j"] +[18.179999999999996, "o", "a"] +[18.209999999999997, "o", "f"] +[18.24, "o", "f"] +[18.27, "o", "l"] +[18.3, "o", "e"] +[18.330000000000002, "o", "_"] +[18.360000000000003, "o", "s"] +[18.390000000000004, "o", "h"] +[18.420000000000005, "o", "o"] +[18.450000000000006, "o", "p"] +[18.480000000000008, "o", " "] +[18.51000000000001, "o", "o"] +[18.54000000000001, "o", "r"] +[18.57000000000001, "o", "d"] +[18.600000000000012, "o", "e"] +[18.630000000000013, "o", "r"] +[18.660000000000014, "o", "s"] +[18.690000000000015, "o", "\r\n"] +[18.720000000000017, "o", "$"] +[18.750000000000018, "o", " "] +[18.78000000000002, "o", "s"] +[18.81000000000002, "o", "g"] +[18.84000000000002, "o", "r"] +[18.870000000000022, "o", " "] +[18.900000000000023, "o", "c"] +[18.930000000000025, "o", "s"] +[18.960000000000026, "o", "v"] +[18.990000000000027, "o", " "] +[19.020000000000028, "o", "i"] +[19.05000000000003, "o", "m"] +[19.08000000000003, "o", "p"] +[19.11000000000003, "o", "o"] +[19.140000000000033, "o", "r"] +[19.170000000000034, "o", "t"] +[19.200000000000035, "o", " "] +[19.230000000000036, "o", "-"] +[19.260000000000037, "o", "f"] +[19.29000000000004, "o", " "] +[19.32000000000004, "o", "j"] +[19.35000000000004, "o", "a"] +[19.38000000000004, "o", "f"] +[19.410000000000043, "o", "f"] +[19.440000000000044, "o", "l"] +[19.470000000000045, "o", "e"] +[19.500000000000046, "o", "_"] +[19.530000000000047, "o", "s"] +[19.56000000000005, "o", "h"] +[19.59000000000005, "o", "o"] +[19.62000000000005, "o", "p"] +[19.650000000000052, "o", "/"] +[19.680000000000053, "o", "d"] +[19.710000000000054, "o", "a"] +[19.740000000000055, "o", "t"] +[19.770000000000056, "o", "a"] +[19.800000000000058, "o", "/"] +[19.83000000000006, "o", "r"] +[19.86000000000006, "o", "a"] +[19.89000000000006, "o", "w"] +[19.920000000000062, "o", "_"] +[19.950000000000063, "o", "p"] +[19.980000000000064, "o", "a"] +[20.010000000000066, "o", "y"] +[20.040000000000067, "o", "m"] +[20.070000000000068, "o", "e"] +[20.10000000000007, "o", "n"] +[20.13000000000007, "o", "t"] +[20.16000000000007, "o", "s"] +[20.190000000000072, "o", "."] +[20.220000000000073, "o", "c"] +[20.250000000000075, "o", "s"] +[20.280000000000076, "o", "v"] +[20.310000000000077, "o", " "] +[20.340000000000078, "o", "-"] +[20.37000000000008, "o", "k"] +[20.40000000000008, "o", " "] +[20.43000000000008, "o", "i"] +[20.460000000000083, "o", "d"] +[20.490000000000084, "o", " "] +[20.520000000000085, "o", "r"] +[20.550000000000086, "o", "a"] +[20.580000000000087, "o", "w"] +[20.61000000000009, "o", "_"] +[20.64000000000009, "o", "j"] +[20.67000000000009, "o", "a"] +[20.70000000000009, "o", "f"] +[20.730000000000093, "o", "f"] +[20.760000000000094, "o", "l"] +[20.790000000000095, "o", "e"] +[20.820000000000096, "o", "_"] +[20.850000000000097, "o", "s"] +[20.8800000000001, "o", "h"] +[20.9100000000001, "o", "o"] +[20.9400000000001, "o", "p"] +[20.970000000000102, "o", " "] +[21.000000000000103, "o", "p"] +[21.030000000000104, "o", "a"] +[21.060000000000105, "o", "y"] +[21.090000000000106, "o", "m"] +[21.120000000000108, "o", "e"] +[21.15000000000011, "o", "n"] +[21.18000000000011, "o", "t"] +[21.21000000000011, "o", "s"] +[21.240000000000112, "o", "\r\n"] +[21.270000000000113, "o", "\u001b[0m"] +[21.300000000000114, "o", "\r\n"] +[21.717509794235344, "o", "Initialized empty repository raw_jaffle_shop\r\n"] +[21.747509794235345, "o", "\u001b[1m"] +[21.777509794235346, "o", "\u001b[36m"] +[21.807509794235347, "o", "\u001b[91m"] +[21.83750979423535, "o", "$"] +[21.86750979423535, "o", " "] +[21.89750979423535, "o", "\u001b[0m"] +[26.927509794235352, "o", "\u001b[H"] +[26.957509794235353, "o", "\u001b[J"] +[26.987509794235354, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Snapshot the initial data with Splitgraph."] +[27.017509794235355, "o", "\r\n"] +[27.047509794235356, "o", "$"] +[27.077509794235358, "o", " "] +[27.10750979423536, "o", "s"] +[27.13750979423536, "o", "g"] +[27.16750979423536, "o", "r"] +[27.197509794235362, "o", " "] +[27.227509794235363, "o", "d"] +[27.257509794235364, "o", "i"] +[27.287509794235365, "o", "f"] +[27.317509794235367, "o", "f"] +[27.347509794235368, "o", " "] +[27.37750979423537, "o", "r"] +[27.40750979423537, "o", "a"] +[27.43750979423537, "o", "w"] +[27.467509794235372, "o", "_"] +[27.497509794235373, "o", "j"] +[27.527509794235375, "o", "a"] +[27.557509794235376, "o", "f"] +[27.587509794235377, "o", "f"] +[27.617509794235378, "o", "l"] +[27.64750979423538, "o", "e"] +[27.67750979423538, "o", "_"] +[27.70750979423538, "o", "s"] +[27.737509794235383, "o", "h"] +[27.767509794235384, "o", "o"] +[27.797509794235385, "o", "p"] +[27.827509794235386, "o", "\r\n"] +[27.857509794235387, "o", "$"] +[27.88750979423539, "o", " "] +[27.91750979423539, "o", "s"] +[27.94750979423539, "o", "g"] +[27.97750979423539, "o", "r"] +[28.007509794235393, "o", " "] +[28.037509794235394, "o", "c"] +[28.067509794235395, "o", "o"] +[28.097509794235396, "o", "m"] +[28.127509794235397, "o", "m"] +[28.1575097942354, "o", "i"] +[28.1875097942354, "o", "t"] +[28.2175097942354, "o", " "] +[28.247509794235402, "o", "r"] +[28.277509794235403, "o", "a"] +[28.307509794235404, "o", "w"] +[28.337509794235405, "o", "_"] +[28.367509794235406, "o", "j"] +[28.397509794235408, "o", "a"] +[28.42750979423541, "o", "f"] +[28.45750979423541, "o", "f"] +[28.48750979423541, "o", "l"] +[28.517509794235412, "o", "e"] +[28.547509794235413, "o", "_"] +[28.577509794235414, "o", "s"] +[28.607509794235416, "o", "h"] +[28.637509794235417, "o", "o"] +[28.667509794235418, "o", "p"] +[28.69750979423542, "o", "\r\n"] +[28.72750979423542, "o", "$"] +[28.75750979423542, "o", " "] +[28.787509794235422, "o", "s"] +[28.817509794235423, "o", "g"] +[28.847509794235425, "o", "r"] +[28.877509794235426, "o", " "] +[28.907509794235427, "o", "t"] +[28.937509794235428, "o", "a"] +[28.96750979423543, "o", "g"] +[28.99750979423543, "o", " "] +[29.02750979423543, "o", "r"] +[29.057509794235433, "o", "a"] +[29.087509794235434, "o", "w"] +[29.117509794235435, "o", "_"] +[29.147509794235436, "o", "j"] +[29.177509794235437, "o", "a"] +[29.20750979423544, "o", "f"] +[29.23750979423544, "o", "f"] +[29.26750979423544, "o", "l"] +[29.29750979423544, "o", "e"] +[29.327509794235443, "o", "_"] +[29.357509794235444, "o", "s"] +[29.387509794235445, "o", "h"] +[29.417509794235446, "o", "o"] +[29.447509794235447, "o", "p"] +[29.47750979423545, "o", " "] +[29.50750979423545, "o", "a"] +[29.53750979423545, "o", "s"] +[29.567509794235452, "o", "o"] +[29.597509794235453, "o", "f"] +[29.627509794235454, "o", "_"] +[29.657509794235455, "o", "2"] +[29.687509794235456, "o", "0"] +[29.717509794235458, "o", "1"] +[29.74750979423546, "o", "8"] +[29.77750979423546, "o", "0"] +[29.80750979423546, "o", "4"] +[29.837509794235462, "o", "0"] +[29.867509794235463, "o", "9"] +[29.897509794235464, "o", "\r\n"] +[29.927509794235466, "o", "\u001b[0m"] +[29.957509794235467, "o", "\r\n"] +[30.347621002197503, "o", "Between 000000000000 and the current working copy: \r\n"] +[30.34764055252099, "o", "customers: table added\r\norders: table added\r\npayments: table added\r\n"] +[30.73009423255944, "o", "Committing raw_jaffle_shop...\r\n"] +[30.756194629669427, "o", "Processing table orders\r\n"] +[30.842108764648675, "o", "Processing table payments\r\n"] +[30.870596208572625, "o", "Processing table customers\r\n"] +[30.905029811859368, "o", "Committed raw_jaffle_shop as b5a336ec24f2.\r\n"] +[31.288715639114617, "o", "Tagged raw_jaffle_shop:b5a336ec24f23fe8db5bf2de9dfa7f6545ffff8c12e88c989e35cf2522e5a9f9 with asof_20180409."] +[31.288734235763787, "o", "\r\n"] +[31.318734235763788, "o", "\u001b[1m"] +[31.34873423576379, "o", "\u001b[36m"] +[31.37873423576379, "o", "\u001b[91m"] +[31.40873423576379, "o", "$"] +[31.438734235763793, "o", " "] +[31.468734235763794, "o", "\u001b[0m"] +[36.49873423576379, "o", "\u001b[H"] +[36.52873423576379, "o", "\u001b[J"] +[36.558734235763794, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the original data"] +[36.588734235763795, "o", "\r\n"] +[36.618734235763796, "o", "$"] +[36.6487342357638, "o", " "] +[36.6787342357638, "o", "s"] +[36.7087342357638, "o", "g"] +[36.7387342357638, "o", "r"] +[36.7687342357638, "o", " "] +[36.7987342357638, "o", "s"] +[36.828734235763804, "o", "h"] +[36.858734235763805, "o", "o"] +[36.888734235763806, "o", "w"] +[36.91873423576381, "o", " "] +[36.94873423576381, "o", "r"] +[36.97873423576381, "o", "a"] +[37.00873423576381, "o", "w"] +[37.03873423576381, "o", "_"] +[37.06873423576381, "o", "j"] +[37.098734235763814, "o", "a"] +[37.128734235763815, "o", "f"] +[37.158734235763816, "o", "f"] +[37.18873423576382, "o", "l"] +[37.21873423576382, "o", "e"] +[37.24873423576382, "o", "_"] +[37.27873423576382, "o", "s"] +[37.30873423576382, "o", "h"] +[37.33873423576382, "o", "o"] +[37.368734235763824, "o", "p"] +[37.398734235763825, "o", ":"] +[37.42873423576383, "o", "a"] +[37.45873423576383, "o", "s"] +[37.48873423576383, "o", "o"] +[37.51873423576383, "o", "f"] +[37.54873423576383, "o", "_"] +[37.57873423576383, "o", "2"] +[37.60873423576383, "o", "0"] +[37.638734235763835, "o", "1"] +[37.668734235763836, "o", "8"] +[37.69873423576384, "o", "0"] +[37.72873423576384, "o", "4"] +[37.75873423576384, "o", "0"] +[37.78873423576384, "o", "9"] +[37.81873423576384, "o", "\r\n"] +[37.84873423576384, "o", "$"] +[37.878734235763844, "o", " "] +[37.908734235763845, "o", "s"] +[37.938734235763846, "o", "g"] +[37.96873423576385, "o", "r"] +[37.99873423576385, "o", " "] +[38.02873423576385, "o", "t"] +[38.05873423576385, "o", "a"] +[38.08873423576385, "o", "b"] +[38.11873423576385, "o", "l"] +[38.148734235763854, "o", "e"] +[38.178734235763855, "o", " "] +[38.208734235763856, "o", "r"] +[38.23873423576386, "o", "a"] +[38.26873423576386, "o", "w"] +[38.29873423576386, "o", "_"] +[38.32873423576386, "o", "j"] +[38.35873423576386, "o", "a"] +[38.38873423576386, "o", "f"] +[38.418734235763864, "o", "f"] +[38.448734235763865, "o", "l"] +[38.478734235763866, "o", "e"] +[38.50873423576387, "o", "_"] +[38.53873423576387, "o", "s"] +[38.56873423576387, "o", "h"] +[38.59873423576387, "o", "o"] +[38.62873423576387, "o", "p"] +[38.65873423576387, "o", ":"] +[38.688734235763874, "o", "a"] +[38.718734235763876, "o", "s"] +[38.74873423576388, "o", "o"] +[38.77873423576388, "o", "f"] +[38.80873423576388, "o", "_"] +[38.83873423576388, "o", "2"] +[38.86873423576388, "o", "0"] +[38.89873423576388, "o", "1"] +[38.92873423576388, "o", "8"] +[38.958734235763885, "o", "0"] +[38.988734235763886, "o", "4"] +[39.01873423576389, "o", "0"] +[39.04873423576389, "o", "9"] +[39.07873423576389, "o", " "] +[39.10873423576389, "o", "o"] +[39.13873423576389, "o", "r"] +[39.16873423576389, "o", "d"] +[39.198734235763894, "o", "e"] +[39.228734235763895, "o", "r"] +[39.258734235763896, "o", "s"] +[39.2887342357639, "o", "\r\n"] +[39.3187342357639, "o", "\u001b[0m"] +[39.3487342357639, "o", "\r\n"] +[39.739793157577864, "o", "Image raw_jaffle_shop:b5a336ec24f23fe8db5bf2de9dfa7f6545ffff8c12e88c989e35cf2522e5a9f9\r\n\r\nCreated at 2021-05-05T11:30:34.014261\r\n"] +[39.741895055771224, "o", "Size: 7.58 KiB\r\n"] +[39.74191222190892, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[39.7430430412296, "o", " customers\r\n"] +[39.74315438270604, "o", " orders\r\n payments\r\n"] +[40.13093862533604, "o", "Table raw_jaffle_shop:b5a336ec24f23fe8db5bf2de9dfa7f6545ffff8c12e88c989e35cf2522e5a9f9/orders\r\n"] +[40.131458377838484, "o", "\r\n"] +[40.1322031974796, "o", "Size: 1.73 KiB\r\n"] +[40.13311777114903, "o", "Rows: 99\r\n"] +[40.13313708305394, "o", "Columns: \r\n id (integer, PK)\r\n user_id (integer)\r\n order_date (timestamp without time zone)\r\n status (character varying)\r\n\r\nObjects: \r\n o7e3ffa6e2141edde30498e4c4a6a2b510d8b7e479081aafe154d31ca4436bd\r\n"] +[40.16313708305394, "o", "\u001b[1m"] +[40.19313708305394, "o", "\u001b[36m"] +[40.22313708305394, "o", "\u001b[91m"] +[40.25313708305394, "o", "$"] +[40.283137083053944, "o", " "] +[40.313137083053945, "o", "\u001b[0m"] +[49.49873423576379, "o", "\u001b[H"] +[49.52873423576379, "o", "\u001b[J"] +[49.558734235763794, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The status column in the raw_orders table in the initial dataset can"] +[49.588734235763795, "o", "\r\n"] +[49.618734235763796, "o", "$ # change through time. Pretend that some jaffles were actually returned.\r\n"] +[49.6487342357638, "o", "$"] +[49.6787342357638, "o", " "] +[49.7087342357638, "o", "s"] +[49.7387342357638, "o", "g"] +[49.7687342357638, "o", "r"] +[49.7987342357638, "o", " "] +[49.828734235763804, "o", "s"] +[49.858734235763805, "o", "q"] +[49.888734235763806, "o", "l"] +[49.91873423576381, "o", " "] +[49.94873423576381, "o", "-"] +[49.97873423576381, "o", "s"] +[50.00873423576381, "o", " "] +[50.03873423576381, "o", "r"] +[50.06873423576381, "o", "a"] +[50.098734235763814, "o", "w"] +[50.128734235763815, "o", "_"] +[50.158734235763816, "o", "j"] +[50.18873423576382, "o", "a"] +[50.21873423576382, "o", "f"] +[50.24873423576382, "o", "f"] +[50.27873423576382, "o", "l"] +[50.30873423576382, "o", "e"] +[50.33873423576382, "o", "_"] +[50.368734235763824, "o", "s"] +[50.398734235763825, "o", "h"] +[50.42873423576383, "o", "o"] +[50.45873423576383, "o", "p"] +[50.48873423576383, "o", " "] +[50.51873423576383, "o", "\""] +[50.54873423576383, "o", "U"] +[50.57873423576383, "o", "P"] +[50.60873423576383, "o", "D"] +[50.638734235763835, "o", "A"] +[50.668734235763836, "o", "T"] +[50.69873423576384, "o", "E"] +[50.72873423576384, "o", " "] +[50.75873423576384, "o", "o"] +[50.78873423576384, "o", "r"] +[50.81873423576384, "o", "d"] +[50.84873423576384, "o", "e"] +[50.878734235763844, "o", "r"] +[50.908734235763845, "o", "s"] +[50.938734235763846, "o", " "] +[50.96873423576385, "o", "S"] +[50.99873423576385, "o", "E"] +[51.02873423576385, "o", "T"] +[51.05873423576385, "o", " "] +[51.08873423576385, "o", "s"] +[51.11873423576385, "o", "t"] +[51.148734235763854, "o", "a"] +[51.178734235763855, "o", "t"] +[51.208734235763856, "o", "u"] +[51.23873423576386, "o", "s"] +[51.26873423576386, "o", " "] +[51.29873423576386, "o", "="] +[51.32873423576386, "o", " "] +[51.35873423576386, "o", "'"] +[51.38873423576386, "o", "r"] +[51.418734235763864, "o", "e"] +[51.448734235763865, "o", "t"] +[51.478734235763866, "o", "u"] +[51.50873423576387, "o", "r"] +[51.53873423576387, "o", "n"] +[51.56873423576387, "o", "e"] +[51.59873423576387, "o", "d"] +[51.62873423576387, "o", "'"] +[51.65873423576387, "o", " "] +[51.688734235763874, "o", "\\"] +[51.718734235763876, "o", "\r\n "] +[51.74873423576388, "o", "W"] +[51.77873423576388, "o", "H"] +[51.80873423576388, "o", "E"] +[51.83873423576388, "o", "R"] +[51.86873423576388, "o", "E"] +[51.89873423576388, "o", " "] +[51.92873423576388, "o", "s"] +[51.958734235763885, "o", "t"] +[51.988734235763886, "o", "a"] +[52.01873423576389, "o", "t"] +[52.04873423576389, "o", "u"] +[52.07873423576389, "o", "s"] +[52.10873423576389, "o", " "] +[52.13873423576389, "o", "="] +[52.16873423576389, "o", " "] +[52.198734235763894, "o", "'"] +[52.228734235763895, "o", "r"] +[52.258734235763896, "o", "e"] +[52.2887342357639, "o", "t"] +[52.3187342357639, "o", "u"] +[52.3487342357639, "o", "r"] +[52.3787342357639, "o", "n"] +[52.4087342357639, "o", "_"] +[52.4387342357639, "o", "p"] +[52.468734235763904, "o", "e"] +[52.498734235763905, "o", "n"] +[52.528734235763906, "o", "d"] +[52.55873423576391, "o", "i"] +[52.58873423576391, "o", "n"] +[52.61873423576391, "o", "g"] +[52.64873423576391, "o", "'"] +[52.67873423576391, "o", " "] +[52.70873423576391, "o", "O"] +[52.738734235763914, "o", "R"] +[52.768734235763915, "o", " "] +[52.798734235763916, "o", "o"] +[52.82873423576392, "o", "r"] +[52.85873423576392, "o", "d"] +[52.88873423576392, "o", "e"] +[52.91873423576392, "o", "r"] +[52.94873423576392, "o", "_"] +[52.97873423576392, "o", "d"] +[53.008734235763924, "o", "a"] +[53.038734235763926, "o", "t"] +[53.06873423576393, "o", "e"] +[53.09873423576393, "o", " "] +[53.12873423576393, "o", "="] +[53.15873423576393, "o", " "] +[53.18873423576393, "o", "'"] +[53.21873423576393, "o", "2"] +[53.24873423576393, "o", "0"] +[53.278734235763935, "o", "1"] +[53.308734235763936, "o", "8"] +[53.33873423576394, "o", "-"] +[53.36873423576394, "o", "0"] +[53.39873423576394, "o", "3"] +[53.42873423576394, "o", "-"] +[53.45873423576394, "o", "2"] +[53.48873423576394, "o", "6"] +[53.518734235763944, "o", "'"] +[53.548734235763945, "o", "\""] +[53.578734235763946, "o", "\r\n"] +[53.60873423576395, "o", "$"] +[53.63873423576395, "o", " "] +[53.66873423576395, "o", "s"] +[53.69873423576395, "o", "g"] +[53.72873423576395, "o", "r"] +[53.75873423576395, "o", " "] +[53.788734235763954, "o", "d"] +[53.818734235763955, "o", "i"] +[53.848734235763956, "o", "f"] +[53.87873423576396, "o", "f"] +[53.90873423576396, "o", " "] +[53.93873423576396, "o", "-"] +[53.96873423576396, "o", "v"] +[53.99873423576396, "o", " "] +[54.02873423576396, "o", "r"] +[54.058734235763964, "o", "a"] +[54.088734235763965, "o", "w"] +[54.11873423576397, "o", "_"] +[54.14873423576397, "o", "j"] +[54.17873423576397, "o", "a"] +[54.20873423576397, "o", "f"] +[54.23873423576397, "o", "f"] +[54.26873423576397, "o", "l"] +[54.29873423576397, "o", "e"] +[54.328734235763974, "o", "_"] +[54.358734235763976, "o", "s"] +[54.38873423576398, "o", "h"] +[54.41873423576398, "o", "o"] +[54.44873423576398, "o", "p"] +[54.47873423576398, "o", "\r\n"] +[54.50873423576398, "o", "\u001b[0m"] +[54.53873423576398, "o", "\r\n"] +[55.19024256706281, "o", "Between b5a336ec24f2 and the current working copy: \r\n"] +[55.190537014008, "o", "customers: no changes.\r\norders: added 5 rows, removed 5 rows.\r\n- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending')\r\n- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending')\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped')\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned')\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned')\r\n+ (84, 7"] +[55.190549173355535, "o", "0, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\npayments: no changes.\r\n"] +[55.220549173355536, "o", "\u001b[1m"] +[55.25054917335554, "o", "\u001b[36m"] +[55.28054917335554, "o", "\u001b[91m"] +[55.31054917335554, "o", "$"] +[55.34054917335554, "o", " "] +[55.37054917335554, "o", "\u001b[0m"] +[60.40054917335554, "o", "\u001b[H"] +[60.430549173355544, "o", "\u001b[J"] +[60.460549173355545, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit this dataset and check out the original data"] +[60.49054917335555, "o", "\r\n"] +[60.52054917335555, "o", "$"] +[60.55054917335555, "o", " "] +[60.58054917335555, "o", "s"] +[60.61054917335555, "o", "g"] +[60.64054917335555, "o", "r"] +[60.67054917335555, "o", " "] +[60.700549173355554, "o", "c"] +[60.730549173355556, "o", "o"] +[60.76054917335556, "o", "m"] +[60.79054917335556, "o", "m"] +[60.82054917335556, "o", "i"] +[60.85054917335556, "o", "t"] +[60.88054917335556, "o", " "] +[60.91054917335556, "o", "r"] +[60.94054917335556, "o", "a"] +[60.970549173355565, "o", "w"] +[61.000549173355566, "o", "_"] +[61.03054917335557, "o", "j"] +[61.06054917335557, "o", "a"] +[61.09054917335557, "o", "f"] +[61.12054917335557, "o", "f"] +[61.15054917335557, "o", "l"] +[61.18054917335557, "o", "e"] +[61.210549173355574, "o", "_"] +[61.240549173355575, "o", "s"] +[61.270549173355576, "o", "h"] +[61.30054917335558, "o", "o"] +[61.33054917335558, "o", "p"] +[61.36054917335558, "o", "\r\n"] +[61.39054917335558, "o", "$"] +[61.42054917335558, "o", " "] +[61.45054917335558, "o", "s"] +[61.480549173355584, "o", "g"] +[61.510549173355585, "o", "r"] +[61.540549173355586, "o", " "] +[61.57054917335559, "o", "t"] +[61.60054917335559, "o", "a"] +[61.63054917335559, "o", "g"] +[61.66054917335559, "o", " "] +[61.69054917335559, "o", "r"] +[61.72054917335559, "o", "a"] +[61.750549173355594, "o", "w"] +[61.780549173355595, "o", "_"] +[61.8105491733556, "o", "j"] +[61.8405491733556, "o", "a"] +[61.8705491733556, "o", "f"] +[61.9005491733556, "o", "f"] +[61.9305491733556, "o", "l"] +[61.9605491733556, "o", "e"] +[61.9905491733556, "o", "_"] +[62.020549173355604, "o", "s"] +[62.050549173355606, "o", "h"] +[62.08054917335561, "o", "o"] +[62.11054917335561, "o", "p"] +[62.14054917335561, "o", " "] +[62.17054917335561, "o", "a"] +[62.20054917335561, "o", "s"] +[62.23054917335561, "o", "o"] +[62.260549173355614, "o", "f"] +[62.290549173355615, "o", "_"] +[62.320549173355616, "o", "2"] +[62.35054917335562, "o", "0"] +[62.38054917335562, "o", "1"] +[62.41054917335562, "o", "8"] +[62.44054917335562, "o", "0"] +[62.47054917335562, "o", "4"] +[62.50054917335562, "o", "1"] +[62.530549173355624, "o", "0"] +[62.560549173355625, "o", "\r\n"] +[62.590549173355626, "o", "$"] +[62.62054917335563, "o", " "] +[62.65054917335563, "o", "s"] +[62.68054917335563, "o", "g"] +[62.71054917335563, "o", "r"] +[62.74054917335563, "o", " "] +[62.77054917335563, "o", "c"] +[62.800549173355634, "o", "h"] +[62.830549173355635, "o", "e"] +[62.860549173355636, "o", "c"] +[62.89054917335564, "o", "k"] +[62.92054917335564, "o", "o"] +[62.95054917335564, "o", "u"] +[62.98054917335564, "o", "t"] +[63.01054917335564, "o", " "] +[63.04054917335564, "o", "r"] +[63.070549173355644, "o", "a"] +[63.100549173355645, "o", "w"] +[63.13054917335565, "o", "_"] +[63.16054917335565, "o", "j"] +[63.19054917335565, "o", "a"] +[63.22054917335565, "o", "f"] +[63.25054917335565, "o", "f"] +[63.28054917335565, "o", "l"] +[63.31054917335565, "o", "e"] +[63.340549173355654, "o", "_"] +[63.370549173355656, "o", "s"] +[63.40054917335566, "o", "h"] +[63.43054917335566, "o", "o"] +[63.46054917335566, "o", "p"] +[63.49054917335566, "o", ":"] +[63.52054917335566, "o", "a"] +[63.55054917335566, "o", "s"] +[63.580549173355664, "o", "o"] +[63.610549173355665, "o", "f"] +[63.640549173355666, "o", "_"] +[63.67054917335567, "o", "2"] +[63.70054917335567, "o", "0"] +[63.73054917335567, "o", "1"] +[63.76054917335567, "o", "8"] +[63.79054917335567, "o", "0"] +[63.82054917335567, "o", "4"] +[63.850549173355674, "o", "0"] +[63.880549173355675, "o", "9"] +[63.910549173355676, "o", "\r\n"] +[63.94054917335568, "o", "\u001b[0m"] +[63.97054917335568, "o", "\r\n"] +[64.35564906120358, "o", "Committing raw_jaffle_shop...\r\n"] +[64.38175732612667, "o", "Storing and indexing table orders\r\n"] +[64.47818881988583, "o", "Committed raw_jaffle_shop as f6bc3edf2d5e.\r\n"] +[64.85534126281796, "o", "Tagged raw_jaffle_shop:f6bc3edf2d5e0f014179343a2ec6f558e0d13c5d4210c5aa97fb6679476c9e1a with asof_20180410.\r\n"] +[65.53697521209774, "o", "Checked out raw_jaffle_shop:b5a336ec24f2.\r\n"] +[65.56697521209774, "o", "\u001b[1m"] +[65.59697521209775, "o", "\u001b[36m"] +[65.62697521209775, "o", "\u001b[91m"] +[65.65697521209775, "o", "$"] +[65.68697521209775, "o", " "] +[65.71697521209775, "o", "\u001b[0m"] +[70.74697521209775, "o", "\u001b[H"] +[70.77697521209775, "o", "\u001b[J"] +[70.80697521209775, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the 'serious' version of the dbt project that uses data from"] +[70.83697521209776, "o", "\r\n"] +[70.86697521209776, "o", "$ # the actual warehouse rather than seed data.\r\n"] +[70.89697521209776, "o", "$"] +[70.92697521209776, "o", " "] +[70.95697521209776, "o", "c"] +[70.98697521209776, "o", "d"] +[71.01697521209776, "o", " "] +[71.04697521209776, "o", "j"] +[71.07697521209776, "o", "a"] +[71.10697521209777, "o", "f"] +[71.13697521209777, "o", "f"] +[71.16697521209777, "o", "l"] +[71.19697521209777, "o", "e"] +[71.22697521209777, "o", "_"] +[71.25697521209777, "o", "s"] +[71.28697521209777, "o", "h"] +[71.31697521209777, "o", "o"] +[71.34697521209777, "o", "p"] +[71.37697521209778, "o", " "] +[71.40697521209778, "o", "&"] +[71.43697521209778, "o", "&"] +[71.46697521209778, "o", " "] +[71.49697521209778, "o", "g"] +[71.52697521209778, "o", "i"] +[71.55697521209778, "o", "t"] +[71.58697521209778, "o", " "] +[71.61697521209778, "o", "c"] +[71.64697521209779, "o", "h"] +[71.67697521209779, "o", "e"] +[71.70697521209779, "o", "c"] +[71.73697521209779, "o", "k"] +[71.76697521209779, "o", "o"] +[71.79697521209779, "o", "u"] +[71.82697521209779, "o", "t"] +[71.8569752120978, "o", " "] +[71.8869752120978, "o", "d"] +[71.9169752120978, "o", "e"] +[71.9469752120978, "o", "m"] +[71.9769752120978, "o", "o"] +[72.0069752120978, "o", "/"] +[72.0369752120978, "o", "m"] +[72.0669752120978, "o", "a"] +[72.0969752120978, "o", "s"] +[72.1269752120978, "o", "t"] +[72.1569752120978, "o", "e"] +[72.1869752120978, "o", "r"] +[72.21697521209781, "o", " "] +[72.24697521209781, "o", "-"] +[72.27697521209781, "o", "-"] +[72.30697521209781, "o", "f"] +[72.33697521209781, "o", "o"] +[72.36697521209781, "o", "r"] +[72.39697521209781, "o", "c"] +[72.42697521209782, "o", "e"] +[72.45697521209782, "o", "\r\n"] +[72.48697521209782, "o", "\u001b[0m"] +[72.51697521209782, "o", "\r\n"] +[72.52366428375309, "o", "Branch 'demo/master' set up to track remote branch 'demo/master' from 'origin'.\r\n"] +[72.52417998313969, "o", "Switched to a new branch 'demo/master'\r\n"] +[72.55417998313969, "o", "\u001b[1m"] +[72.58417998313969, "o", "\u001b[36m"] +[72.61417998313969, "o", "\u001b[91m"] +[72.6441799831397, "o", "$"] +[72.6741799831397, "o", " "] +[72.7041799831397, "o", "\u001b[0m"] +[77.7341799831397, "o", "\u001b[H"] +[77.7641799831397, "o", "\u001b[J"] +[77.7941799831397, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check that dbt is set up to connect to the Splitgraph engine."] +[77.8241799831397, "o", "\r\n"] +[77.8541799831397, "o", "$ # We will be outputting data into the dbt_jaffle repository, so set that up.\r\n"] +[77.8841799831397, "o", "$"] +[77.9141799831397, "o", " "] +[77.9441799831397, "o", "c"] +[77.9741799831397, "o", "a"] +[78.00417998313971, "o", "t"] +[78.03417998313971, "o", " "] +[78.06417998313971, "o", "."] +[78.09417998313971, "o", "d"] +[78.12417998313971, "o", "b"] +[78.15417998313971, "o", "t"] +[78.18417998313971, "o", "/"] +[78.21417998313972, "o", "p"] +[78.24417998313972, "o", "r"] +[78.27417998313972, "o", "o"] +[78.30417998313972, "o", "f"] +[78.33417998313972, "o", "i"] +[78.36417998313972, "o", "l"] +[78.39417998313972, "o", "e"] +[78.42417998313972, "o", "s"] +[78.45417998313972, "o", "."] +[78.48417998313973, "o", "y"] +[78.51417998313973, "o", "m"] +[78.54417998313973, "o", "l"] +[78.57417998313973, "o", "\r\n"] +[78.60417998313973, "o", "$"] +[78.63417998313973, "o", " "] +[78.66417998313973, "o", "d"] +[78.69417998313973, "o", "b"] +[78.72417998313973, "o", "t"] +[78.75417998313974, "o", " "] +[78.78417998313974, "o", "d"] +[78.81417998313974, "o", "e"] +[78.84417998313974, "o", "b"] +[78.87417998313974, "o", "u"] +[78.90417998313974, "o", "g"] +[78.93417998313974, "o", " "] +[78.96417998313974, "o", "-"] +[78.99417998313974, "o", "-"] +[79.02417998313975, "o", "p"] +[79.05417998313975, "o", "r"] +[79.08417998313975, "o", "o"] +[79.11417998313975, "o", "f"] +[79.14417998313975, "o", "i"] +[79.17417998313975, "o", "l"] +[79.20417998313975, "o", "e"] +[79.23417998313975, "o", "s"] +[79.26417998313975, "o", "-"] +[79.29417998313976, "o", "d"] +[79.32417998313976, "o", "i"] +[79.35417998313976, "o", "r"] +[79.38417998313976, "o", " "] +[79.41417998313976, "o", "."] +[79.44417998313976, "o", "d"] +[79.47417998313976, "o", "b"] +[79.50417998313976, "o", "t"] +[79.53417998313977, "o", " "] +[79.56417998313977, "o", "-"] +[79.59417998313977, "o", "-"] +[79.62417998313977, "o", "p"] +[79.65417998313977, "o", "r"] +[79.68417998313977, "o", "o"] +[79.71417998313977, "o", "j"] +[79.74417998313977, "o", "e"] +[79.77417998313977, "o", "c"] +[79.80417998313978, "o", "t"] +[79.83417998313978, "o", "-"] +[79.86417998313978, "o", "d"] +[79.89417998313978, "o", "i"] +[79.92417998313978, "o", "r"] +[79.95417998313978, "o", " "] +[79.98417998313978, "o", "j"] +[80.01417998313978, "o", "a"] +[80.04417998313978, "o", "f"] +[80.07417998313979, "o", "f"] +[80.10417998313979, "o", "l"] +[80.13417998313979, "o", "e"] +[80.16417998313979, "o", "_"] +[80.19417998313979, "o", "s"] +[80.22417998313979, "o", "h"] +[80.25417998313979, "o", "o"] +[80.2841799831398, "o", "p"] +[80.3141799831398, "o", "\r\n"] +[80.3441799831398, "o", "$"] +[80.3741799831398, "o", " "] +[80.4041799831398, "o", "s"] +[80.4341799831398, "o", "g"] +[80.4641799831398, "o", "r"] +[80.4941799831398, "o", " "] +[80.5241799831398, "o", "i"] +[80.5541799831398, "o", "n"] +[80.5841799831398, "o", "i"] +[80.6141799831398, "o", "t"] +[80.64417998313981, "o", " "] +[80.67417998313981, "o", "d"] +[80.70417998313981, "o", "b"] +[80.73417998313981, "o", "t"] +[80.76417998313981, "o", "_"] +[80.79417998313981, "o", "j"] +[80.82417998313981, "o", "a"] +[80.85417998313982, "o", "f"] +[80.88417998313982, "o", "f"] +[80.91417998313982, "o", "l"] +[80.94417998313982, "o", "e"] +[80.97417998313982, "o", "\r\n"] +[81.00417998313982, "o", "\u001b[0m"] +[81.03417998313982, "o", "\r\n"] +[81.03754383087237, "o", "jaffle_shop:\r\n target: splitgraph\r\n outputs:\r\n splitgraph:"] +[81.03755551338274, "o", "\r\n type: postgres\r\n host: localhost\r\n user: sgr\r\n pass: supersecure\r\n port: 5432\r\n dbname: splitgraph\r\n # The final schema that dbt writes to is a combination of this profile schema\r\n # and the schema specified in the model.\r\n schema: \"dbt_jaffle\"\r\n threads: 4\r\n"] +[82.03755551338274, "o", "Running with dbt=0.18.0\r\n"] +[82.04531389236529, "o", "dbt version: 0.18.0\r\npython version: 3.7.10\r\n"] +[82.04532795906145, "o", "python path: /opt/hostedtoolcache/Python/3.7.10/x64/bin/python\r\nos info: Linux-5.4.0-1046-azure-x86_64-with-debian-buster-sid\r\nUsing profiles.yml file at .dbt/profiles.yml\r\nUsing dbt_project.yml file at /home/runner/work/splitgraph/splitgraph/examples/dbt/jaffle_shop/dbt_project.yml\r\n\r\n"] +[82.11985569953997, "o", "Configuration:\r\n profiles.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n dbt_project.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n\r\nRequired dependencies:\r\n"] +[82.12536030769427, "o", " - git [\u001b[32mOK found\u001b[0m]\r\n\r\nConnection:\r\n"] +[82.12581997871477, "o", " host: localhost\r\n port: 5432\r\n user: sgr\r\n database: splitgraph\r\n schema: dbt_jaffle\r\n search_path: None\r\n keepalives_idle: 0\r\n sslmode: None\r\n"] +[82.1395519351967, "o", " Connection test: \u001b[32mOK connection ok\u001b[0m"] +[82.13959389686663, "o", "\r\n"] +[82.13962751388628, "o", "\r\n"] +[82.36664086341936, "o", "\u001b[0m"] +[82.76560812950213, "o", "Initialized empty repository dbt_jaffle\r\n"] +[82.79560812950213, "o", "\u001b[1m"] +[82.82560812950213, "o", "\u001b[36m"] +[82.85560812950213, "o", "\u001b[91m"] +[82.88560812950213, "o", "$"] +[82.91560812950213, "o", " "] +[82.94560812950213, "o", "\u001b[0m"] +[101.2341799831397, "o", "\u001b[H"] +[101.2641799831397, "o", "\u001b[J"] +[101.2941799831397, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now run the dbt models."] +[101.3241799831397, "o", "\r\n"] +[101.3541799831397, "o", "$"] +[101.3841799831397, "o", " "] +[101.4141799831397, "o", "c"] +[101.4441799831397, "o", "d"] +[101.4741799831397, "o", " "] +[101.50417998313971, "o", "j"] +[101.53417998313971, "o", "a"] +[101.56417998313971, "o", "f"] +[101.59417998313971, "o", "f"] +[101.62417998313971, "o", "l"] +[101.65417998313971, "o", "e"] +[101.68417998313971, "o", "_"] +[101.71417998313972, "o", "s"] +[101.74417998313972, "o", "h"] +[101.77417998313972, "o", "o"] +[101.80417998313972, "o", "p"] +[101.83417998313972, "o", " "] +[101.86417998313972, "o", "&"] +[101.89417998313972, "o", "&"] +[101.92417998313972, "o", " "] +[101.95417998313972, "o", "d"] +[101.98417998313973, "o", "b"] +[102.01417998313973, "o", "t"] +[102.04417998313973, "o", " "] +[102.07417998313973, "o", "r"] +[102.10417998313973, "o", "u"] +[102.13417998313973, "o", "n"] +[102.16417998313973, "o", " "] +[102.19417998313973, "o", "-"] +[102.22417998313973, "o", "-"] +[102.25417998313974, "o", "p"] +[102.28417998313974, "o", "r"] +[102.31417998313974, "o", "o"] +[102.34417998313974, "o", "f"] +[102.37417998313974, "o", "i"] +[102.40417998313974, "o", "l"] +[102.43417998313974, "o", "e"] +[102.46417998313974, "o", "s"] +[102.49417998313974, "o", "-"] +[102.52417998313975, "o", "d"] +[102.55417998313975, "o", "i"] +[102.58417998313975, "o", "r"] +[102.61417998313975, "o", " "] +[102.64417998313975, "o", "."] +[102.67417998313975, "o", "."] +[102.70417998313975, "o", "/"] +[102.73417998313975, "o", "."] +[102.76417998313975, "o", "d"] +[102.79417998313976, "o", "b"] +[102.82417998313976, "o", "t"] +[102.85417998313976, "o", "\r\n"] +[102.88417998313976, "o", "\u001b[0m"] +[102.91417998313976, "o", "\r\n"] +[103.91417998313976, "o", "Running with dbt=0.18.0\r\n"] +[104.34245413780285, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[105.30590075492931, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[105.30839914321972, "o", "\r\n"] +[105.63008851051403, "o", "11:30:43 | Concurrency: 4 threads (target='splitgraph')\r\n"] +[105.630447092057, "o", "11:30:43 | \r\n"] +[105.63443273544384, "o", "11:30:43 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]"] +[105.63447374343944, "o", "\r\n"] +[105.63924211502147, "o", "11:30:43 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]\r\n"] +[105.63958305358959, "o", "11:30:43 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]"] +[105.63962024688793, "o", "\r\n"] +[105.65235966682506, "o", "11:30:43 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]"] +[105.6524013900764, "o", "\r\n"] +[105.98225492477489, "o", "11:30:43 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.33s]"] +[105.98231333732677, "o", "\r\n"] +[105.98424619674755, "o", "11:30:43 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.32s]"] +[105.98443216323925, "o", "\r\n"] +[105.9848217391975, "o", "11:30:43 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.34s]\r\n"] +[105.98535698890758, "o", "11:30:43 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.34s]\r\n"] +[105.98758381843639, "o", "11:30:43 | 5 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]"] +[105.9876498603828, "o", "\r\n"] +[105.99009508133007, "o", "11:30:43 | 6 of 9 START table model dbt_jaffle.customer_payments................ [RUN]"] +[105.99013632774425, "o", "\r\n"] +[105.99273818969799, "o", "11:30:43 | 7 of 9 START table model dbt_jaffle.order_payments................... [RUN]"] +[105.99279350280834, "o", "\r\n"] +[106.17649096489025, "o", "11:30:43 | 5 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.18s]"] +[106.17656988143993, "o", "\r\n"] +[106.18736762046886, "o", "11:30:43 | 6 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.19s]"] +[106.18741387367321, "o", "\r\n"] +[106.18897336959911, "o", "11:30:43 | 7 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.19s]\r\n"] +[106.19299000740124, "o", "11:30:43 | 8 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]"] +[106.19305438041759, "o", "\r\n"] +[106.19365018844677, "o", "11:30:43 | 9 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]"] +[106.19370192527843, "o", "\r\n"] +[106.32389301300121, "o", "11:30:43 | 9 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.13s]"] +[106.32392877578808, "o", "\r\n"] +[106.32691902160717, "o", "11:30:43 | 8 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.13s]\r\n"] +[106.42975014686657, "o", "11:30:43 | \r\n"] +[106.42984074592663, "o", "11:30:43 | Finished running 4 view models, 5 table models in 1.12s.\r\n"] +[106.46721118927074, "o", "\r\n"] +[106.46730560302807, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[106.4676486873634, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[106.60275262832714, "o", "\u001b[0m"] +[106.63275262832714, "o", "\u001b[1m"] +[106.66275262832714, "o", "\u001b[36m"] +[106.69275262832714, "o", "\u001b[91m"] +[106.72275262832714, "o", "$"] +[106.75275262832714, "o", " "] +[106.78275262832715, "o", "\u001b[0m"] +[121.7341799831397, "o", "\u001b[H"] +[121.7641799831397, "o", "\u001b[J"] +[121.7941799831397, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Take a look at the built dataset and commit it."] +[121.8241799831397, "o", "\r\n"] +[121.8541799831397, "o", "$ # Note Splitgraph doesn't currently support storing views\r\n"] +[121.8841799831397, "o", "$ # that dbt uses as a staging point for the initial data.\r\n"] +[121.9141799831397, "o", "$"] +[121.9441799831397, "o", " "] +[121.9741799831397, "o", "s"] +[122.00417998313971, "o", "g"] +[122.03417998313971, "o", "r"] +[122.06417998313971, "o", " "] +[122.09417998313971, "o", "d"] +[122.12417998313971, "o", "i"] +[122.15417998313971, "o", "f"] +[122.18417998313971, "o", "f"] +[122.21417998313972, "o", " "] +[122.24417998313972, "o", "d"] +[122.27417998313972, "o", "b"] +[122.30417998313972, "o", "t"] +[122.33417998313972, "o", "_"] +[122.36417998313972, "o", "j"] +[122.39417998313972, "o", "a"] +[122.42417998313972, "o", "f"] +[122.45417998313972, "o", "f"] +[122.48417998313973, "o", "l"] +[122.51417998313973, "o", "e"] +[122.54417998313973, "o", "\r\n"] +[122.57417998313973, "o", "$"] +[122.60417998313973, "o", " "] +[122.63417998313973, "o", "s"] +[122.66417998313973, "o", "g"] +[122.69417998313973, "o", "r"] +[122.72417998313973, "o", " "] +[122.75417998313974, "o", "c"] +[122.78417998313974, "o", "o"] +[122.81417998313974, "o", "m"] +[122.84417998313974, "o", "m"] +[122.87417998313974, "o", "i"] +[122.90417998313974, "o", "t"] +[122.93417998313974, "o", " "] +[122.96417998313974, "o", "d"] +[122.99417998313974, "o", "b"] +[123.02417998313975, "o", "t"] +[123.05417998313975, "o", "_"] +[123.08417998313975, "o", "j"] +[123.11417998313975, "o", "a"] +[123.14417998313975, "o", "f"] +[123.17417998313975, "o", "f"] +[123.20417998313975, "o", "l"] +[123.23417998313975, "o", "e"] +[123.26417998313975, "o", "\r\n"] +[123.29417998313976, "o", "$"] +[123.32417998313976, "o", " "] +[123.35417998313976, "o", "s"] +[123.38417998313976, "o", "g"] +[123.41417998313976, "o", "r"] +[123.44417998313976, "o", " "] +[123.47417998313976, "o", "t"] +[123.50417998313976, "o", "a"] +[123.53417998313977, "o", "g"] +[123.56417998313977, "o", " "] +[123.59417998313977, "o", "d"] +[123.62417998313977, "o", "b"] +[123.65417998313977, "o", "t"] +[123.68417998313977, "o", "_"] +[123.71417998313977, "o", "j"] +[123.74417998313977, "o", "a"] +[123.77417998313977, "o", "f"] +[123.80417998313978, "o", "f"] +[123.83417998313978, "o", "l"] +[123.86417998313978, "o", "e"] +[123.89417998313978, "o", " "] +[123.92417998313978, "o", "a"] +[123.95417998313978, "o", "s"] +[123.98417998313978, "o", "o"] +[124.01417998313978, "o", "f"] +[124.04417998313978, "o", "_"] +[124.07417998313979, "o", "2"] +[124.10417998313979, "o", "0"] +[124.13417998313979, "o", "1"] +[124.16417998313979, "o", "8"] +[124.19417998313979, "o", "0"] +[124.22417998313979, "o", "4"] +[124.25417998313979, "o", "0"] +[124.2841799831398, "o", "9"] +[124.3141799831398, "o", "\r\n"] +[124.3441799831398, "o", "\u001b[0m"] +[124.3741799831398, "o", "\r\n"] +[124.78404774665908, "o", "Between 000000000000 and the current working copy: \r\n"] +[124.78406395912246, "o", "customer_orders: table added\r\ncustomer_payments: table added\r\ndim_customers: table added\r\nfct_orders: table added\r\norder_payments: table added\r\nstg_jaffle_shop__customers: untracked\r\nstg_jaffle_shop__orders: untracked\r\nstg_jaffle_shop__payments: untracked\r\nstg_stripe__payments: untracked\r\n"] +[125.17379059791641, "o", "Committing dbt_jaffle...\r\n"] +[125.18991484642105, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.19080438613967, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.19179835319595, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.19275321960525, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.20179858207779, "o", "Processing table customer_orders\r\n"] +[125.28293457031326, "o", "Processing table customer_payments\r\n"] +[125.31405200958328, "o", "Processing table order_payments\r\n"] +[125.34375753402786, "o", "Processing table dim_customers\r\n"] +[125.37468590736465, "o", "Processing table fct_orders\r\n"] +[125.41838517189102, "o", "Committed dbt_jaffle as 43a70c52c46c.\r\n"] +[125.79142060279922, "o", "Tagged dbt_jaffle:43a70c52c46caef8d93fdcc06198804246c262556f306a484c9d47b942503214 with asof_20180409.\r\n"] +[125.82142060279922, "o", "\u001b[1m"] +[125.85142060279922, "o", "\u001b[36m"] +[125.88142060279922, "o", "\u001b[91m"] +[125.91142060279923, "o", "$"] +[125.94142060279923, "o", " "] +[125.97142060279923, "o", "\u001b[0m"] +[136.23417998313968, "o", "\u001b[H"] +[136.26417998313968, "o", "\u001b[J"] +[136.29417998313968, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the new version of the raw dataset and run dbt against it as well."] +[136.3241799831397, "o", "\r\n"] +[136.3541799831397, "o", "$"] +[136.3841799831397, "o", " "] +[136.4141799831397, "o", "s"] +[136.4441799831397, "o", "g"] +[136.4741799831397, "o", "r"] +[136.5041799831397, "o", " "] +[136.5341799831397, "o", "c"] +[136.5641799831397, "o", "h"] +[136.5941799831397, "o", "e"] +[136.6241799831397, "o", "c"] +[136.6541799831397, "o", "k"] +[136.6841799831397, "o", "o"] +[136.7141799831397, "o", "u"] +[136.7441799831397, "o", "t"] +[136.7741799831397, "o", " "] +[136.8041799831397, "o", "r"] +[136.8341799831397, "o", "a"] +[136.8641799831397, "o", "w"] +[136.8941799831397, "o", "_"] +[136.9241799831397, "o", "j"] +[136.9541799831397, "o", "a"] +[136.9841799831397, "o", "f"] +[137.0141799831397, "o", "f"] +[137.0441799831397, "o", "l"] +[137.07417998313971, "o", "e"] +[137.10417998313972, "o", "_"] +[137.13417998313972, "o", "s"] +[137.16417998313972, "o", "h"] +[137.19417998313972, "o", "o"] +[137.22417998313972, "o", "p"] +[137.25417998313972, "o", ":"] +[137.28417998313972, "o", "a"] +[137.31417998313972, "o", "s"] +[137.34417998313972, "o", "o"] +[137.37417998313973, "o", "f"] +[137.40417998313973, "o", "_"] +[137.43417998313973, "o", "2"] +[137.46417998313973, "o", "0"] +[137.49417998313973, "o", "1"] +[137.52417998313973, "o", "8"] +[137.55417998313973, "o", "0"] +[137.58417998313973, "o", "4"] +[137.61417998313973, "o", "1"] +[137.64417998313974, "o", "0"] +[137.67417998313974, "o", "\r\n"] +[137.70417998313974, "o", "$"] +[137.73417998313974, "o", " "] +[137.76417998313974, "o", "c"] +[137.79417998313974, "o", "d"] +[137.82417998313974, "o", " "] +[137.85417998313974, "o", "j"] +[137.88417998313975, "o", "a"] +[137.91417998313975, "o", "f"] +[137.94417998313975, "o", "f"] +[137.97417998313975, "o", "l"] +[138.00417998313975, "o", "e"] +[138.03417998313975, "o", "_"] +[138.06417998313975, "o", "s"] +[138.09417998313975, "o", "h"] +[138.12417998313975, "o", "o"] +[138.15417998313976, "o", "p"] +[138.18417998313976, "o", " "] +[138.21417998313976, "o", "&"] +[138.24417998313976, "o", "&"] +[138.27417998313976, "o", " "] +[138.30417998313976, "o", "d"] +[138.33417998313976, "o", "b"] +[138.36417998313976, "o", "t"] +[138.39417998313976, "o", " "] +[138.42417998313977, "o", "r"] +[138.45417998313977, "o", "u"] +[138.48417998313977, "o", "n"] +[138.51417998313977, "o", " "] +[138.54417998313977, "o", "-"] +[138.57417998313977, "o", "-"] +[138.60417998313977, "o", "p"] +[138.63417998313977, "o", "r"] +[138.66417998313977, "o", "o"] +[138.69417998313978, "o", "f"] +[138.72417998313978, "o", "i"] +[138.75417998313978, "o", "l"] +[138.78417998313978, "o", "e"] +[138.81417998313978, "o", "s"] +[138.84417998313978, "o", "-"] +[138.87417998313978, "o", "d"] +[138.90417998313978, "o", "i"] +[138.93417998313979, "o", "r"] +[138.9641799831398, "o", " "] +[138.9941799831398, "o", "."] +[139.0241799831398, "o", "."] +[139.0541799831398, "o", "/"] +[139.0841799831398, "o", "."] +[139.1141799831398, "o", "d"] +[139.1441799831398, "o", "b"] +[139.1741799831398, "o", "t"] +[139.2041799831398, "o", "\r\n"] +[139.2341799831398, "o", "\u001b[0m"] +[139.2641799831398, "o", "\r\n"] +[139.93688730239944, "o", "Checked out raw_jaffle_shop:f6bc3edf2d5e.\r\n"] +[140.93688730239944, "o", "Running with dbt=0.18.0\r\n"] +[141.37862566948013, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[142.35942462921219, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[142.36213020324783, "o", "\r\n"] +[142.81036643028335, "o", "11:30:49 | Concurrency: 4 threads (target='splitgraph')\r\n"] +[142.81045464515762, "o", "11:30:49 | \r\n"] +[142.81568864822464, "o", "11:30:49 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]\r\n"] +[142.84491781234817, "o", "11:30:49 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]"] +[142.84496358871536, "o", "\r\n"] +[142.8467851066597, "o", "11:30:49 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]"] +[142.84686902999954, "o", "\r\n"] +[142.8479442977913, "o", "11:30:49 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]\r\n"] +[143.10863808631973, "o", "11:30:49 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.26s]\r\n"] +[143.11076430320816, "o", "11:30:49 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.29s]\r\n"] +[143.11644557952957, "o", "11:30:49 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.26s]\r\n"] +[143.12177542686538, "o", "11:30:49 | 6 of 9 START table model dbt_jaffle.customer_payments................ [RUN]"] +[143.1218207263954, "o", "\r\n"] +[143.12381319046096, "o", "11:30:49 | 5 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]"] +[143.12385324478225, "o", "\r\n"] +[143.12541393280105, "o", "11:30:49 | 7 of 9 START table model dbt_jaffle.order_payments................... [RUN]\r\n"] +[143.12622407913284, "o", "11:30:49 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.27s]\r\n"] +[143.38323406219558, "o", "11:30:50 | 6 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.25s]"] +[143.3833067798622, "o", "\r\n"] +[143.39434436798172, "o", "11:30:50 | 7 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.26s]\r\n"] +[143.39865306854324, "o", "11:30:50 | 8 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]\r\n"] +[143.40163163185196, "o", "11:30:50 | 5 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.27s]"] +[143.40167168617324, "o", "\r\n"] +[143.42258194923477, "o", "11:30:50 | 9 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]"] +[143.42263583183365, "o", "\r\n"] +[143.54892972946243, "o", "11:30:50 | 8 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.15s]"] +[143.5489893341072, "o", "\r\n"] +[143.56434539794998, "o", "11:30:50 | 9 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.14s]\r\n"] +[143.6413576984413, "o", "11:30:50 | \r\n"] +[143.6414595031746, "o", "11:30:50 | Finished running 4 view models, 5 table models in 1.28s.\r\n"] +[143.67361716270523, "o", "\r\n"] +[143.67382077217178, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[143.67404035568313, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[143.80596760749893, "o", "\u001b[0m"] +[143.83596760749893, "o", "\u001b[1m"] +[143.86596760749893, "o", "\u001b[36m"] +[143.89596760749893, "o", "\u001b[91m"] +[143.92596760749893, "o", "$"] +[143.95596760749893, "o", " "] +[143.98596760749894, "o", "\u001b[0m"] +[157.73417998313968, "o", "\u001b[H"] +[157.76417998313968, "o", "\u001b[J"] +[157.79417998313968, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create an image from the new data."] +[157.8241799831397, "o", "\r\n"] +[157.8541799831397, "o", "$"] +[157.8841799831397, "o", " "] +[157.9141799831397, "o", "s"] +[157.9441799831397, "o", "g"] +[157.9741799831397, "o", "r"] +[158.0041799831397, "o", " "] +[158.0341799831397, "o", "c"] +[158.0641799831397, "o", "o"] +[158.0941799831397, "o", "m"] +[158.1241799831397, "o", "m"] +[158.1541799831397, "o", "i"] +[158.1841799831397, "o", "t"] +[158.2141799831397, "o", " "] +[158.2441799831397, "o", "d"] +[158.2741799831397, "o", "b"] +[158.3041799831397, "o", "t"] +[158.3341799831397, "o", "_"] +[158.3641799831397, "o", "j"] +[158.3941799831397, "o", "a"] +[158.4241799831397, "o", "f"] +[158.4541799831397, "o", "f"] +[158.4841799831397, "o", "l"] +[158.5141799831397, "o", "e"] +[158.5441799831397, "o", "\r\n"] +[158.57417998313971, "o", "$"] +[158.60417998313972, "o", " "] +[158.63417998313972, "o", "s"] +[158.66417998313972, "o", "g"] +[158.69417998313972, "o", "r"] +[158.72417998313972, "o", " "] +[158.75417998313972, "o", "t"] +[158.78417998313972, "o", "a"] +[158.81417998313972, "o", "g"] +[158.84417998313972, "o", " "] +[158.87417998313973, "o", "d"] +[158.90417998313973, "o", "b"] +[158.93417998313973, "o", "t"] +[158.96417998313973, "o", "_"] +[158.99417998313973, "o", "j"] +[159.02417998313973, "o", "a"] +[159.05417998313973, "o", "f"] +[159.08417998313973, "o", "f"] +[159.11417998313973, "o", "l"] +[159.14417998313974, "o", "e"] +[159.17417998313974, "o", " "] +[159.20417998313974, "o", "a"] +[159.23417998313974, "o", "s"] +[159.26417998313974, "o", "o"] +[159.29417998313974, "o", "f"] +[159.32417998313974, "o", "_"] +[159.35417998313974, "o", "2"] +[159.38417998313975, "o", "0"] +[159.41417998313975, "o", "1"] +[159.44417998313975, "o", "8"] +[159.47417998313975, "o", "0"] +[159.50417998313975, "o", "4"] +[159.53417998313975, "o", "1"] +[159.56417998313975, "o", "0"] +[159.59417998313975, "o", "\r\n"] +[159.62417998313975, "o", "\u001b[0m"] +[159.65417998313976, "o", "\r\n"] +[160.02902071952892, "o", "Committing dbt_jaffle..."] +[160.02904551506114, "o", "\r\n"] +[160.05632393837047, "o", "Processing table fct_orders\r\n"] +[160.14196746826244, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.14331810951305, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.14454644203258, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.15324204444957, "o", "Processing table order_payments\r\n"] +[160.16007273674083, "o", "Object o87940f703edacc7113c37ae83a6abe6293f48cbb940171ef03875a066b0c5c already exists, skipping\r\n"] +[160.17695372581554, "o", "Processing table customer_payments\r\n"] +[160.18331592559886, "o", "Object o47a7af4dc6d74898da55e6c760eac4d702db25633cfab4e28e6df77cf00098 already exists, skipping\r\n"] +[160.19135087013316, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.199646644593, "o", "Processing table customer_orders\r\n"] +[160.20560019493175, "o", "Object o0fafb9e76c06e221af3aa558b0a751b176857a09b2d75ca00826becbd12ef5 already exists, skipping\r\n"] +[160.22454970359874, "o", "Processing table dim_customers\r\n"] +[160.23298805236888, "o", "Object o9656926ef986d89e326952a43869eaf3dc59905ff22aba22cd3dd67a834dc5 already exists, skipping\r\n"] +[160.26519101142955, "o", "Committed dbt_jaffle as d8937c28c55b.\r\n"] +[160.65091817855907, "o", "Tagged dbt_jaffle:d8937c28c55b602c39ed1311ff039e46765c1e0e46f140aa340b8821cd48c9ec with asof_20180410.\r\n"] +[160.68091817855907, "o", "\u001b[1m"] +[160.71091817855907, "o", "\u001b[36m"] +[160.74091817855907, "o", "\u001b[91m"] +[160.77091817855907, "o", "$"] +[160.80091817855907, "o", " "] +[160.83091817855907, "o", "\u001b[0m"] +[167.73417998313968, "o", "\u001b[H"] +[167.76417998313968, "o", "\u001b[J"] +[167.79417998313968, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We now have two versions of the source and the target dataset."] +[167.8241799831397, "o", "\r\n"] +[167.8541799831397, "o", "$"] +[167.8841799831397, "o", " "] +[167.9141799831397, "o", "s"] +[167.9441799831397, "o", "g"] +[167.9741799831397, "o", "r"] +[168.0041799831397, "o", " "] +[168.0341799831397, "o", "l"] +[168.0641799831397, "o", "o"] +[168.0941799831397, "o", "g"] +[168.1241799831397, "o", " "] +[168.1541799831397, "o", "-"] +[168.1841799831397, "o", "t"] +[168.2141799831397, "o", " "] +[168.2441799831397, "o", "r"] +[168.2741799831397, "o", "a"] +[168.3041799831397, "o", "w"] +[168.3341799831397, "o", "_"] +[168.3641799831397, "o", "j"] +[168.3941799831397, "o", "a"] +[168.4241799831397, "o", "f"] +[168.4541799831397, "o", "f"] +[168.4841799831397, "o", "l"] +[168.5141799831397, "o", "e"] +[168.5441799831397, "o", "_"] +[168.57417998313971, "o", "s"] +[168.60417998313972, "o", "h"] +[168.63417998313972, "o", "o"] +[168.66417998313972, "o", "p"] +[168.69417998313972, "o", "\r\n"] +[168.72417998313972, "o", "$"] +[168.75417998313972, "o", " "] +[168.78417998313972, "o", "s"] +[168.81417998313972, "o", "g"] +[168.84417998313972, "o", "r"] +[168.87417998313973, "o", " "] +[168.90417998313973, "o", "l"] +[168.93417998313973, "o", "o"] +[168.96417998313973, "o", "g"] +[168.99417998313973, "o", " "] +[169.02417998313973, "o", "-"] +[169.05417998313973, "o", "t"] +[169.08417998313973, "o", " "] +[169.11417998313973, "o", "d"] +[169.14417998313974, "o", "b"] +[169.17417998313974, "o", "t"] +[169.20417998313974, "o", "_"] +[169.23417998313974, "o", "j"] +[169.26417998313974, "o", "a"] +[169.29417998313974, "o", "f"] +[169.32417998313974, "o", "f"] +[169.35417998313974, "o", "l"] +[169.38417998313975, "o", "e"] +[169.41417998313975, "o", "\r\n"] +[169.44417998313975, "o", "\u001b[0m"] +[169.47417998313975, "o", "\r\n"] +[169.8789234161384, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-05-05 11:30:31\u001b[0m\r\n \u2514 \u001b[1m\u001b[91mb5a336ec24\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-05-05 11:30:34\u001b[0m\r\n \u2514 \u001b[1m\u001b[91mf6bc3edf2d\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-05-05 11:30:37\u001b[0m\r\n"] +[170.2613470554359, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-05-05 11:30:40\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m43a70c52c4\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-05-05 11:30:45\u001b[0m\r\n \u2514 \u001b[1m\u001b[91md8937c28c5\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-05-05 11:30:51\u001b[0m\r\n"] +[170.2913470554359, "o", "\u001b[1m"] +[170.3213470554359, "o", "\u001b[36m"] +[170.3513470554359, "o", "\u001b[91m"] +[170.3813470554359, "o", "$"] +[170.4113470554359, "o", " "] +[170.4413470554359, "o", "\u001b[0m"] +[175.4713470554359, "o", "\u001b[H"] +[175.5013470554359, "o", "\u001b[J"] +[175.5313470554359, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the difference between the two datasets that dbt built."] +[175.5613470554359, "o", "\r\n"] +[175.5913470554359, "o", "$"] +[175.6213470554359, "o", " "] +[175.6513470554359, "o", "s"] +[175.6813470554359, "o", "g"] +[175.7113470554359, "o", "r"] +[175.7413470554359, "o", " "] +[175.7713470554359, "o", "d"] +[175.8013470554359, "o", "i"] +[175.8313470554359, "o", "f"] +[175.8613470554359, "o", "f"] +[175.89134705543592, "o", " "] +[175.92134705543592, "o", "d"] +[175.95134705543592, "o", "b"] +[175.98134705543592, "o", "t"] +[176.01134705543592, "o", "_"] +[176.04134705543592, "o", "j"] +[176.07134705543592, "o", "a"] +[176.10134705543592, "o", "f"] +[176.13134705543592, "o", "f"] +[176.16134705543593, "o", "l"] +[176.19134705543593, "o", "e"] +[176.22134705543593, "o", " "] +[176.25134705543593, "o", "a"] +[176.28134705543593, "o", "s"] +[176.31134705543593, "o", "o"] +[176.34134705543593, "o", "f"] +[176.37134705543593, "o", "_"] +[176.40134705543593, "o", "2"] +[176.43134705543594, "o", "0"] +[176.46134705543594, "o", "1"] +[176.49134705543594, "o", "8"] +[176.52134705543594, "o", "0"] +[176.55134705543594, "o", "4"] +[176.58134705543594, "o", "0"] +[176.61134705543594, "o", "9"] +[176.64134705543594, "o", " "] +[176.67134705543594, "o", "a"] +[176.70134705543595, "o", "s"] +[176.73134705543595, "o", "o"] +[176.76134705543595, "o", "f"] +[176.79134705543595, "o", "_"] +[176.82134705543595, "o", "2"] +[176.85134705543595, "o", "0"] +[176.88134705543595, "o", "1"] +[176.91134705543595, "o", "8"] +[176.94134705543595, "o", "0"] +[176.97134705543596, "o", "4"] +[177.00134705543596, "o", "1"] +[177.03134705543596, "o", "0"] +[177.06134705543596, "o", " "] +[177.09134705543596, "o", "-"] +[177.12134705543596, "o", "-"] +[177.15134705543596, "o", "v"] +[177.18134705543596, "o", "e"] +[177.21134705543597, "o", "r"] +[177.24134705543597, "o", "b"] +[177.27134705543597, "o", "o"] +[177.30134705543597, "o", "s"] +[177.33134705543597, "o", "e"] +[177.36134705543597, "o", "\r\n"] +[177.39134705543597, "o", "\u001b[0m"] +[177.42134705543597, "o", "\r\n"] +[178.0132531261452, "o", "Between 43a70c52c46c and d8937c28c55b: \r\n"] +[178.01356760025104, "o", "customer_orders: no changes.\r\ncustomer_payments: no changes.\r\ndim_customers: no changes.\r\nfct_orders: added 5 rows, removed 5 rows.\r\n- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending', 0, 0, 0, 23, 23)\r\n- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending', 0, 0, 15, 0, 15)\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 0, 25, 0, 25)\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped', 0, 0, 17, 0, 17)\r\n"] +[178.01375642776568, "o", "- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 23, 0, 0, 23)\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned', 0, 0, 0, 23, 23)\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned', 0, 0, 15, 0, 15)\r\n+ (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 25, 0, 25)\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 17, 0, 17)\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 23, 0, 0, 23)\r\norder_payments: no changes.\r\n"] +[178.0437564277657, "o", "\u001b[1m"] +[178.0737564277657, "o", "\u001b[36m"] +[178.1037564277657, "o", "\u001b[91m"] +[178.1337564277657, "o", "$"] +[178.1637564277657, "o", " "] +[178.1937564277657, "o", "\u001b[0m"] +[184.9713470554359, "o", "\u001b[H"] +[185.0013470554359, "o", "\u001b[J"] +[185.0313470554359, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a sample query: how much in bank transfer refunds did we process?"] +[185.0613470554359, "o", "\r\n"] +[185.0913470554359, "o", "$"] +[185.1213470554359, "o", " "] +[185.1513470554359, "o", "s"] +[185.1813470554359, "o", "g"] +[185.2113470554359, "o", "r"] +[185.2413470554359, "o", " "] +[185.2713470554359, "o", "s"] +[185.3013470554359, "o", "q"] +[185.3313470554359, "o", "l"] +[185.3613470554359, "o", " "] +[185.39134705543592, "o", "-"] +[185.42134705543592, "o", "i"] +[185.45134705543592, "o", " "] +[185.48134705543592, "o", "d"] +[185.51134705543592, "o", "b"] +[185.54134705543592, "o", "t"] +[185.57134705543592, "o", "_"] +[185.60134705543592, "o", "j"] +[185.63134705543592, "o", "a"] +[185.66134705543593, "o", "f"] +[185.69134705543593, "o", "f"] +[185.72134705543593, "o", "l"] +[185.75134705543593, "o", "e"] +[185.78134705543593, "o", ":"] +[185.81134705543593, "o", "a"] +[185.84134705543593, "o", "s"] +[185.87134705543593, "o", "o"] +[185.90134705543593, "o", "f"] +[185.93134705543594, "o", "_"] +[185.96134705543594, "o", "2"] +[185.99134705543594, "o", "0"] +[186.02134705543594, "o", "1"] +[186.05134705543594, "o", "8"] +[186.08134705543594, "o", "0"] +[186.11134705543594, "o", "4"] +[186.14134705543594, "o", "0"] +[186.17134705543594, "o", "9"] +[186.20134705543595, "o", " "] +[186.23134705543595, "o", "\""] +[186.26134705543595, "o", "S"] +[186.29134705543595, "o", "E"] +[186.32134705543595, "o", "L"] +[186.35134705543595, "o", "E"] +[186.38134705543595, "o", "C"] +[186.41134705543595, "o", "T"] +[186.44134705543595, "o", " "] +[186.47134705543596, "o", "s"] +[186.50134705543596, "o", "u"] +[186.53134705543596, "o", "m"] +[186.56134705543596, "o", "("] +[186.59134705543596, "o", "b"] +[186.62134705543596, "o", "a"] +[186.65134705543596, "o", "n"] +[186.68134705543596, "o", "k"] +[186.71134705543597, "o", "_"] +[186.74134705543597, "o", "t"] +[186.77134705543597, "o", "r"] +[186.80134705543597, "o", "a"] +[186.83134705543597, "o", "n"] +[186.86134705543597, "o", "s"] +[186.89134705543597, "o", "f"] +[186.92134705543597, "o", "e"] +[186.95134705543597, "o", "r"] +[186.98134705543598, "o", "_"] +[187.01134705543598, "o", "a"] +[187.04134705543598, "o", "m"] +[187.07134705543598, "o", "o"] +[187.10134705543598, "o", "u"] +[187.13134705543598, "o", "n"] +[187.16134705543598, "o", "t"] +[187.19134705543598, "o", ")"] +[187.22134705543598, "o", " "] +[187.25134705543599, "o", "F"] +[187.281347055436, "o", "R"] +[187.311347055436, "o", "O"] +[187.341347055436, "o", "M"] +[187.371347055436, "o", " "] +[187.401347055436, "o", "f"] +[187.431347055436, "o", "c"] +[187.461347055436, "o", "t"] +[187.491347055436, "o", "_"] +[187.521347055436, "o", "o"] +[187.551347055436, "o", "r"] +[187.581347055436, "o", "d"] +[187.611347055436, "o", "e"] +[187.641347055436, "o", "r"] +[187.671347055436, "o", "s"] +[187.701347055436, "o", " "] +[187.731347055436, "o", "W"] +[187.761347055436, "o", "H"] +[187.791347055436, "o", "E"] +[187.821347055436, "o", "R"] +[187.851347055436, "o", "E"] +[187.881347055436, "o", " "] +[187.911347055436, "o", "s"] +[187.941347055436, "o", "t"] +[187.971347055436, "o", "a"] +[188.001347055436, "o", "t"] +[188.03134705543602, "o", "u"] +[188.06134705543602, "o", "s"] +[188.09134705543602, "o", " "] +[188.12134705543602, "o", "="] +[188.15134705543602, "o", " "] +[188.18134705543602, "o", "'"] +[188.21134705543602, "o", "r"] +[188.24134705543602, "o", "e"] +[188.27134705543602, "o", "t"] +[188.30134705543603, "o", "u"] +[188.33134705543603, "o", "r"] +[188.36134705543603, "o", "n"] +[188.39134705543603, "o", "e"] +[188.42134705543603, "o", "d"] +[188.45134705543603, "o", "'"] +[188.48134705543603, "o", "\""] +[188.51134705543603, "o", "\r\n"] +[188.54134705543603, "o", "$"] +[188.57134705543604, "o", " "] +[188.60134705543604, "o", "s"] +[188.63134705543604, "o", "g"] +[188.66134705543604, "o", "r"] +[188.69134705543604, "o", " "] +[188.72134705543604, "o", "s"] +[188.75134705543604, "o", "q"] +[188.78134705543604, "o", "l"] +[188.81134705543604, "o", " "] +[188.84134705543605, "o", "-"] +[188.87134705543605, "o", "i"] +[188.90134705543605, "o", " "] +[188.93134705543605, "o", "d"] +[188.96134705543605, "o", "b"] +[188.99134705543605, "o", "t"] +[189.02134705543605, "o", "_"] +[189.05134705543605, "o", "j"] +[189.08134705543605, "o", "a"] +[189.11134705543606, "o", "f"] +[189.14134705543606, "o", "f"] +[189.17134705543606, "o", "l"] +[189.20134705543606, "o", "e"] +[189.23134705543606, "o", ":"] +[189.26134705543606, "o", "a"] +[189.29134705543606, "o", "s"] +[189.32134705543606, "o", "o"] +[189.35134705543607, "o", "f"] +[189.38134705543607, "o", "_"] +[189.41134705543607, "o", "2"] +[189.44134705543607, "o", "0"] +[189.47134705543607, "o", "1"] +[189.50134705543607, "o", "8"] +[189.53134705543607, "o", "0"] +[189.56134705543607, "o", "4"] +[189.59134705543607, "o", "1"] +[189.62134705543608, "o", "0"] +[189.65134705543608, "o", " "] +[189.68134705543608, "o", "\""] +[189.71134705543608, "o", "S"] +[189.74134705543608, "o", "E"] +[189.77134705543608, "o", "L"] +[189.80134705543608, "o", "E"] +[189.83134705543608, "o", "C"] +[189.86134705543608, "o", "T"] +[189.89134705543609, "o", " "] +[189.9213470554361, "o", "s"] +[189.9513470554361, "o", "u"] +[189.9813470554361, "o", "m"] +[190.0113470554361, "o", "("] +[190.0413470554361, "o", "b"] +[190.0713470554361, "o", "a"] +[190.1013470554361, "o", "n"] +[190.1313470554361, "o", "k"] +[190.1613470554361, "o", "_"] +[190.1913470554361, "o", "t"] +[190.2213470554361, "o", "r"] +[190.2513470554361, "o", "a"] +[190.2813470554361, "o", "n"] +[190.3113470554361, "o", "s"] +[190.3413470554361, "o", "f"] +[190.3713470554361, "o", "e"] +[190.4013470554361, "o", "r"] +[190.4313470554361, "o", "_"] +[190.4613470554361, "o", "a"] +[190.4913470554361, "o", "m"] +[190.5213470554361, "o", "o"] +[190.5513470554361, "o", "u"] +[190.5813470554361, "o", "n"] +[190.6113470554361, "o", "t"] +[190.6413470554361, "o", ")"] +[190.67134705543612, "o", " "] +[190.70134705543612, "o", "F"] +[190.73134705543612, "o", "R"] +[190.76134705543612, "o", "O"] +[190.79134705543612, "o", "M"] +[190.82134705543612, "o", " "] +[190.85134705543612, "o", "f"] +[190.88134705543612, "o", "c"] +[190.91134705543612, "o", "t"] +[190.94134705543613, "o", "_"] +[190.97134705543613, "o", "o"] +[191.00134705543613, "o", "r"] +[191.03134705543613, "o", "d"] +[191.06134705543613, "o", "e"] +[191.09134705543613, "o", "r"] +[191.12134705543613, "o", "s"] +[191.15134705543613, "o", " "] +[191.18134705543613, "o", "W"] +[191.21134705543614, "o", "H"] +[191.24134705543614, "o", "E"] +[191.27134705543614, "o", "R"] +[191.30134705543614, "o", "E"] +[191.33134705543614, "o", " "] +[191.36134705543614, "o", "s"] +[191.39134705543614, "o", "t"] +[191.42134705543614, "o", "a"] +[191.45134705543614, "o", "t"] +[191.48134705543615, "o", "u"] +[191.51134705543615, "o", "s"] +[191.54134705543615, "o", " "] +[191.57134705543615, "o", "="] +[191.60134705543615, "o", " "] +[191.63134705543615, "o", "'"] +[191.66134705543615, "o", "r"] +[191.69134705543615, "o", "e"] +[191.72134705543615, "o", "t"] +[191.75134705543616, "o", "u"] +[191.78134705543616, "o", "r"] +[191.81134705543616, "o", "n"] +[191.84134705543616, "o", "e"] +[191.87134705543616, "o", "d"] +[191.90134705543616, "o", "'"] +[191.93134705543616, "o", "\""] +[191.96134705543616, "o", "\r\n"] +[191.99134705543617, "o", "\u001b[0m"] +[192.02134705543617, "o", "\r\n"] +[192.86106515884498, "o", "3\r\n"] +[193.7311489677439, "o", "60\r\n"] +[193.7611489677439, "o", "\u001b[1m"] +[193.7911489677439, "o", "\u001b[36m"] +[193.8211489677439, "o", "\u001b[91m"] +[193.8511489677439, "o", "$"] +[193.8811489677439, "o", " "] +[193.9111489677439, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.14/import-from-csv.cast b/content/casts/versioned/archive/v0.2.14/import-from-csv.cast new file mode 100644 index 00000000..abc851e1 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.14/import-from-csv.cast @@ -0,0 +1,608 @@ +{"version": 2, "width": 100, "height": 45, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1620214169, "metadata": {"tss": [{"h": "Inspect the data file", "ts": 0.06}, {"h": "Initialize the repository", "ts": 6.50153160095215}, {"h": "Ingest the data into a new table (wrapper around COPY FROM STDIN)", "ts": 27.501531600952152}, {"h": "The data is now in a table but not committed as a Splitgraph image", "ts": 36.19153160095229}, {"h": "Create a new image and tag it", "ts": 43.83486418724081}, {"h": "Inspect the image", "ts": 52.06306507110625}, {"h": "Inspect the table", "ts": 58.920272579193465}, {"h": "Inspect object metadata", "ts": 78.42027257919347}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the data file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # (originally from https://data.townofcary.org/api/v2/catalog/datasets/rdu-weather-history/exports/csv)\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "h"] +[0.27, "o", "e"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "d"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "n"] +[0.4500000000000002, "o", "5"] +[0.4800000000000002, "o", " "] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", "d"] +[0.5700000000000003, "o", "u"] +[0.6000000000000003, "o", "-"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "-"] +[0.8700000000000006, "o", "h"] +[0.9000000000000006, "o", "i"] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "t"] +[0.9900000000000007, "o", "o"] +[1.0200000000000007, "o", "r"] +[1.0500000000000007, "o", "y"] +[1.0800000000000007, "o", "."] +[1.1100000000000008, "o", "c"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", "v"] +[1.2000000000000008, "o", "\r\n"] +[1.2300000000000009, "o", "\u001b[0m"] +[1.260000000000001, "o", "\r\n"] +[1.261521587371827, "o", "date;temperaturemin;temperaturemax;precipitation;snowfall;snowdepth;avgwindspeed;fastest2minwinddir;fastest2minwindspeed;fastest5secwinddir;fastest5secwindspeed;fog;fogheavy;mist;rain;fogground;ice;glaze;drizzle;snow;freezingrain;smokehaze;thunder;highwind;hail;blowingsnow;dust;freezingfog\r\r\n2007-01-06;50.0;71.1;0.13;0.0;0.0;8.05;230;17.9;230;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-09;30.0;55.0;0.0;0.0;0.0;7.61;280;23.04;270;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;N"] +[1.2615316009521493, "o", "o;No\r\r\n2007-01-14;50.0;73.9;0.0;0.0;0.0;8.5;230;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-15;57.0;73.9;0.0;0.0;0.0;13.2;230;23.94;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n"] +[1.2915316009521494, "o", "\u001b[1m"] +[1.3215316009521494, "o", "\u001b[36m"] +[1.3515316009521494, "o", "\u001b[91m"] +[1.3815316009521494, "o", "$"] +[1.4115316009521495, "o", " "] +[1.4415316009521495, "o", "\u001b[0m"] +[6.47153160095215, "o", "\u001b[H"] +[6.50153160095215, "o", "\u001b[J"] +[6.5315316009521505, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the repository"] +[6.561531600952151, "o", "\r\n"] +[6.591531600952151, "o", "$"] +[6.621531600952151, "o", " "] +[6.6515316009521515, "o", "s"] +[6.681531600952152, "o", "g"] +[6.711531600952152, "o", "r"] +[6.741531600952152, "o", " "] +[6.7715316009521525, "o", "i"] +[6.801531600952153, "o", "n"] +[6.831531600952153, "o", "i"] +[6.861531600952153, "o", "t"] +[6.8915316009521534, "o", " "] +[6.921531600952154, "o", "d"] +[6.951531600952154, "o", "e"] +[6.981531600952154, "o", "m"] +[7.011531600952154, "o", "o"] +[7.041531600952155, "o", "/"] +[7.071531600952155, "o", "w"] +[7.101531600952155, "o", "e"] +[7.131531600952155, "o", "a"] +[7.161531600952156, "o", "t"] +[7.191531600952156, "o", "h"] +[7.221531600952156, "o", "e"] +[7.251531600952156, "o", "r"] +[7.281531600952157, "o", "\r\n"] +[7.311531600952157, "o", "$"] +[7.341531600952157, "o", " "] +[7.371531600952157, "o", "s"] +[7.401531600952158, "o", "g"] +[7.431531600952158, "o", "r"] +[7.461531600952158, "o", " "] +[7.491531600952158, "o", "c"] +[7.521531600952159, "o", "s"] +[7.551531600952159, "o", "v"] +[7.581531600952159, "o", " "] +[7.611531600952159, "o", "i"] +[7.64153160095216, "o", "m"] +[7.67153160095216, "o", "p"] +[7.70153160095216, "o", "o"] +[7.73153160095216, "o", "r"] +[7.761531600952161, "o", "t"] +[7.791531600952161, "o", " "] +[7.821531600952161, "o", "-"] +[7.851531600952161, "o", "-"] +[7.881531600952162, "o", "h"] +[7.911531600952162, "o", "e"] +[7.941531600952162, "o", "l"] +[7.971531600952162, "o", "p"] +[8.001531600952163, "o", "\r\n"] +[8.031531600952162, "o", "\u001b[0m"] +[8.061531600952161, "o", "\r\n"] +[8.48105579376222, "o", "Initialized empty repository demo/weather\r\n"] +[8.827128229141248, "o", "Usage: sgr csv import [OPTIONS] REPOSITORY TABLE\r\n\r\n Import a CSV file into a checked-out Splitgraph repository. This doesn't\r\n create a new image, use sgr commit after the import and any adjustments\r\n (e.g. adding primary keys or converting column types) to do so.\r\n\r\n If the target table doesn't exist, this will create a new table.\r\n\r\n If the target table does exist, this will try and patch the new values in\r\n by updating rows that exist in the current table (as per its primary key\r\n constraints) an"] +[8.827139434814466, "o", "d inserting new ones. Rows existing in the current table\r\n but missing in the CSV won't be deleted.\r\n\r\n If -r is passed, the table will instead be deleted and recreated from the\r\n CSV file if it exists.\r\n\r\nOptions:\r\n -f, --file FILENAME File name to import data from, default\r\n stdin.\r\n\r\n -r, --replace Replace the table if it already exists.\r\n -k, --primary-key TEXT Use the specified column(s) as primary\r\n "] +[8.827144918441785, "o", " key(s)\r\n\r\n -t, --override-type ...\r\n Explicitly set types of these columns to PG\r\n types\r\n\r\n --encoding TEXT Encoding to use for the CSV file\r\n --separator TEXT CSV separator to use\r\n --no-header Treats the first line of the CSV as data\r\n rather than a header.\r\n\r\n --skip-schema-check Skips checking that the dataframe is\r\n "] +[8.827149686813367, "o", " compatible with the target schema.\r\n\r\n --help Show this message and exit.\r\n"] +[8.857149686813367, "o", "\u001b[1m"] +[8.887149686813366, "o", "\u001b[36m"] +[8.917149686813366, "o", "\u001b[91m"] +[8.947149686813365, "o", "$"] +[8.977149686813364, "o", " "] +[9.007149686813364, "o", "\u001b[0m"] +[27.47153160095215, "o", "\u001b[H"] +[27.501531600952152, "o", "\u001b[J"] +[27.531531600952153, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the data into a new table (wrapper around COPY FROM STDIN)"] +[27.561531600952154, "o", "\r\n"] +[27.591531600952155, "o", "$"] +[27.621531600952157, "o", " "] +[27.651531600952158, "o", "s"] +[27.68153160095216, "o", "g"] +[27.71153160095216, "o", "r"] +[27.74153160095216, "o", " "] +[27.771531600952162, "o", "c"] +[27.801531600952163, "o", "s"] +[27.831531600952164, "o", "v"] +[27.861531600952166, "o", " "] +[27.891531600952167, "o", "i"] +[27.921531600952168, "o", "m"] +[27.95153160095217, "o", "p"] +[27.98153160095217, "o", "o"] +[28.01153160095217, "o", "r"] +[28.041531600952172, "o", "t"] +[28.071531600952174, "o", " "] +[28.101531600952175, "o", "-"] +[28.131531600952176, "o", "f"] +[28.161531600952177, "o", " "] +[28.191531600952178, "o", "r"] +[28.22153160095218, "o", "d"] +[28.25153160095218, "o", "u"] +[28.28153160095218, "o", "-"] +[28.311531600952183, "o", "w"] +[28.341531600952184, "o", "e"] +[28.371531600952185, "o", "a"] +[28.401531600952186, "o", "t"] +[28.431531600952187, "o", "h"] +[28.46153160095219, "o", "e"] +[28.49153160095219, "o", "r"] +[28.52153160095219, "o", "-"] +[28.551531600952192, "o", "h"] +[28.581531600952193, "o", "i"] +[28.611531600952194, "o", "s"] +[28.641531600952195, "o", "t"] +[28.671531600952196, "o", "o"] +[28.701531600952197, "o", "r"] +[28.7315316009522, "o", "y"] +[28.7615316009522, "o", "."] +[28.7915316009522, "o", "c"] +[28.821531600952202, "o", "s"] +[28.851531600952203, "o", "v"] +[28.881531600952204, "o", " "] +[28.911531600952205, "o", "\\"] +[28.941531600952207, "o", "\r\n "] +[28.971531600952208, "o", "-"] +[29.00153160095221, "o", "k"] +[29.03153160095221, "o", " "] +[29.06153160095221, "o", "d"] +[29.091531600952212, "o", "a"] +[29.121531600952213, "o", "t"] +[29.151531600952215, "o", "e"] +[29.181531600952216, "o", " "] +[29.211531600952217, "o", "\\"] +[29.241531600952218, "o", "\r\n "] +[29.27153160095222, "o", "-"] +[29.30153160095222, "o", "t"] +[29.33153160095222, "o", " "] +[29.361531600952222, "o", "d"] +[29.391531600952224, "o", "a"] +[29.421531600952225, "o", "t"] +[29.451531600952226, "o", "e"] +[29.481531600952227, "o", " "] +[29.511531600952228, "o", "t"] +[29.54153160095223, "o", "i"] +[29.57153160095223, "o", "m"] +[29.60153160095223, "o", "e"] +[29.631531600952233, "o", "s"] +[29.661531600952234, "o", "t"] +[29.691531600952235, "o", "a"] +[29.721531600952236, "o", "m"] +[29.751531600952237, "o", "p"] +[29.78153160095224, "o", " "] +[29.81153160095224, "o", "\\"] +[29.84153160095224, "o", "\r\n "] +[29.871531600952242, "o", "-"] +[29.901531600952243, "o", "-"] +[29.931531600952244, "o", "s"] +[29.961531600952245, "o", "e"] +[29.991531600952246, "o", "p"] +[30.021531600952247, "o", "a"] +[30.05153160095225, "o", "r"] +[30.08153160095225, "o", "a"] +[30.11153160095225, "o", "t"] +[30.141531600952252, "o", "o"] +[30.171531600952253, "o", "r"] +[30.201531600952254, "o", " "] +[30.231531600952255, "o", "\""] +[30.261531600952257, "o", ";"] +[30.291531600952258, "o", "\""] +[30.32153160095226, "o", " "] +[30.35153160095226, "o", "\\"] +[30.38153160095226, "o", "\r\n "] +[30.411531600952262, "o", "d"] +[30.441531600952263, "o", "e"] +[30.471531600952265, "o", "m"] +[30.501531600952266, "o", "o"] +[30.531531600952267, "o", "/"] +[30.561531600952268, "o", "w"] +[30.59153160095227, "o", "e"] +[30.62153160095227, "o", "a"] +[30.65153160095227, "o", "t"] +[30.681531600952272, "o", "h"] +[30.711531600952274, "o", "e"] +[30.741531600952275, "o", "r"] +[30.771531600952276, "o", " "] +[30.801531600952277, "o", "r"] +[30.831531600952278, "o", "d"] +[30.86153160095228, "o", "u"] +[30.89153160095228, "o", "\r\n"] +[30.92153160095228, "o", "\u001b[0m"] +[30.951531600952283, "o", "\r\n"] +[30.981531600952284, "o", "\u001b[1m"] +[31.011531600952285, "o", "\u001b[36m"] +[31.041531600952286, "o", "\u001b[91m"] +[31.071531600952287, "o", "$"] +[31.10153160095229, "o", " "] +[31.13153160095229, "o", "\u001b[0m"] +[36.16153160095229, "o", "\u001b[H"] +[36.19153160095229, "o", "\u001b[J"] +[36.22153160095229, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The data is now in a table but not committed as a Splitgraph image"] +[36.25153160095229, "o", "\r\n"] +[36.28153160095229, "o", "$"] +[36.31153160095229, "o", " "] +[36.341531600952294, "o", "s"] +[36.371531600952295, "o", "g"] +[36.401531600952296, "o", "r"] +[36.4315316009523, "o", " "] +[36.4615316009523, "o", "s"] +[36.4915316009523, "o", "t"] +[36.5215316009523, "o", "a"] +[36.5515316009523, "o", "t"] +[36.5815316009523, "o", "u"] +[36.611531600952304, "o", "s"] +[36.641531600952305, "o", " "] +[36.67153160095231, "o", "d"] +[36.70153160095231, "o", "e"] +[36.73153160095231, "o", "m"] +[36.76153160095231, "o", "o"] +[36.79153160095231, "o", "/"] +[36.82153160095231, "o", "w"] +[36.85153160095231, "o", "e"] +[36.881531600952314, "o", "a"] +[36.911531600952316, "o", "t"] +[36.94153160095232, "o", "h"] +[36.97153160095232, "o", "e"] +[37.00153160095232, "o", "r"] +[37.03153160095232, "o", "\r\n"] +[37.06153160095232, "o", "$"] +[37.09153160095232, "o", " "] +[37.12153160095232, "o", "s"] +[37.151531600952325, "o", "g"] +[37.181531600952326, "o", "r"] +[37.21153160095233, "o", " "] +[37.24153160095233, "o", "d"] +[37.27153160095233, "o", "i"] +[37.30153160095233, "o", "f"] +[37.33153160095233, "o", "f"] +[37.36153160095233, "o", " "] +[37.391531600952334, "o", "d"] +[37.421531600952335, "o", "e"] +[37.451531600952336, "o", "m"] +[37.48153160095234, "o", "o"] +[37.51153160095234, "o", "/"] +[37.54153160095234, "o", "w"] +[37.57153160095234, "o", "e"] +[37.60153160095234, "o", "a"] +[37.63153160095234, "o", "t"] +[37.661531600952344, "o", "h"] +[37.691531600952345, "o", "e"] +[37.721531600952346, "o", "r"] +[37.75153160095235, "o", "\r\n"] +[37.78153160095235, "o", "\u001b[0m"] +[37.81153160095235, "o", "\r\n"] +[38.198331413269244, "o", "demo/weather: on image 0000000000000000000000000000000000000000000000000000000000000000.\r\n"] +[38.5948334312441, "o", "Between 000000000000 and the current working copy: \r\n"] +[38.5948641872408, "o", "rdu: table added\r\n"] +[38.6248641872408, "o", "\u001b[1m"] +[38.654864187240804, "o", "\u001b[36m"] +[38.684864187240805, "o", "\u001b[91m"] +[38.714864187240806, "o", "$"] +[38.74486418724081, "o", " "] +[38.77486418724081, "o", "\u001b[0m"] +[43.80486418724081, "o", "\u001b[H"] +[43.83486418724081, "o", "\u001b[J"] +[43.86486418724081, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a new image and tag it"] +[43.89486418724081, "o", "\r\n"] +[43.924864187240814, "o", "$"] +[43.954864187240815, "o", " "] +[43.98486418724082, "o", "s"] +[44.01486418724082, "o", "g"] +[44.04486418724082, "o", "r"] +[44.07486418724082, "o", " "] +[44.10486418724082, "o", "c"] +[44.13486418724082, "o", "o"] +[44.16486418724082, "o", "m"] +[44.194864187240825, "o", "m"] +[44.224864187240826, "o", "i"] +[44.25486418724083, "o", "t"] +[44.28486418724083, "o", " "] +[44.31486418724083, "o", "d"] +[44.34486418724083, "o", "e"] +[44.37486418724083, "o", "m"] +[44.40486418724083, "o", "o"] +[44.434864187240834, "o", "/"] +[44.464864187240835, "o", "w"] +[44.494864187240836, "o", "e"] +[44.52486418724084, "o", "a"] +[44.55486418724084, "o", "t"] +[44.58486418724084, "o", "h"] +[44.61486418724084, "o", "e"] +[44.64486418724084, "o", "r"] +[44.67486418724084, "o", "\r\n"] +[44.704864187240844, "o", "$"] +[44.734864187240845, "o", " "] +[44.764864187240846, "o", "s"] +[44.79486418724085, "o", "g"] +[44.82486418724085, "o", "r"] +[44.85486418724085, "o", " "] +[44.88486418724085, "o", "t"] +[44.91486418724085, "o", "a"] +[44.94486418724085, "o", "g"] +[44.974864187240854, "o", " "] +[45.004864187240855, "o", "d"] +[45.034864187240856, "o", "e"] +[45.06486418724086, "o", "m"] +[45.09486418724086, "o", "o"] +[45.12486418724086, "o", "/"] +[45.15486418724086, "o", "w"] +[45.18486418724086, "o", "e"] +[45.21486418724086, "o", "a"] +[45.244864187240864, "o", "t"] +[45.274864187240865, "o", "h"] +[45.30486418724087, "o", "e"] +[45.33486418724087, "o", "r"] +[45.36486418724087, "o", " "] +[45.39486418724087, "o", "i"] +[45.42486418724087, "o", "n"] +[45.45486418724087, "o", "i"] +[45.48486418724087, "o", "t"] +[45.514864187240875, "o", "i"] +[45.544864187240876, "o", "a"] +[45.57486418724088, "o", "l"] +[45.60486418724088, "o", "_"] +[45.63486418724088, "o", "d"] +[45.66486418724088, "o", "a"] +[45.69486418724088, "o", "t"] +[45.72486418724088, "o", "a"] +[45.754864187240884, "o", "\r\n"] +[45.784864187240885, "o", "\u001b[0m"] +[45.814864187240886, "o", "\r\n"] +[46.201225309372234, "o", "Committing demo/weather...\r\n"] +[46.228499917984294, "o", "Processing table rdu\r\n"] +[46.44295146942167, "o", "Committed demo/weather as 0e9019753970.\r\n"] +[46.82306507110624, "o", "Tagged demo/weather:0e90197539703a4fa4a5f0fb18277b063b04b1f223f7c78c33393e23d855146f with initial_data.\r\n"] +[46.85306507110624, "o", "\u001b[1m"] +[46.883065071106245, "o", "\u001b[36m"] +[46.913065071106246, "o", "\u001b[91m"] +[46.94306507110625, "o", "$"] +[46.97306507110625, "o", " "] +[47.00306507110625, "o", "\u001b[0m"] +[52.03306507110625, "o", "\u001b[H"] +[52.06306507110625, "o", "\u001b[J"] +[52.09306507110625, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image"] +[52.123065071106254, "o", "\r\n"] +[52.153065071106255, "o", "$"] +[52.183065071106256, "o", " "] +[52.21306507110626, "o", "s"] +[52.24306507110626, "o", "g"] +[52.27306507110626, "o", "r"] +[52.30306507110626, "o", " "] +[52.33306507110626, "o", "s"] +[52.36306507110626, "o", "h"] +[52.393065071106264, "o", "o"] +[52.423065071106265, "o", "w"] +[52.453065071106266, "o", " "] +[52.48306507110627, "o", "d"] +[52.51306507110627, "o", "e"] +[52.54306507110627, "o", "m"] +[52.57306507110627, "o", "o"] +[52.60306507110627, "o", "/"] +[52.63306507110627, "o", "w"] +[52.663065071106274, "o", "e"] +[52.693065071106275, "o", "a"] +[52.72306507110628, "o", "t"] +[52.75306507110628, "o", "h"] +[52.78306507110628, "o", "e"] +[52.81306507110628, "o", "r"] +[52.84306507110628, "o", ":"] +[52.87306507110628, "o", "i"] +[52.90306507110628, "o", "n"] +[52.933065071106284, "o", "i"] +[52.963065071106286, "o", "t"] +[52.99306507110629, "o", "i"] +[53.02306507110629, "o", "a"] +[53.05306507110629, "o", "l"] +[53.08306507110629, "o", "_"] +[53.11306507110629, "o", "d"] +[53.14306507110629, "o", "a"] +[53.17306507110629, "o", "t"] +[53.203065071106295, "o", "a"] +[53.233065071106296, "o", "\r\n"] +[53.2630650711063, "o", "\u001b[0m"] +[53.2930650711063, "o", "\r\n"] +[53.67814278602634, "o", "Image demo/weather:0e90197539703a4fa4a5f0fb18277b063b04b1f223f7c78c33393e23d855146f\r\n\r\nCreated at 2021-05-05T11:29:40.545955\r\n"] +[53.679643869400365, "o", "Size: 109.61 KiB\r\n"] +[53.67965841293369, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[53.680272579193456, "o", " rdu\r\n"] +[53.71027257919346, "o", "\u001b[1m"] +[53.74027257919346, "o", "\u001b[36m"] +[53.77027257919346, "o", "\u001b[91m"] +[53.80027257919346, "o", "$"] +[53.83027257919346, "o", " "] +[53.86027257919346, "o", "\u001b[0m"] +[58.890272579193464, "o", "\u001b[H"] +[58.920272579193465, "o", "\u001b[J"] +[58.95027257919347, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the table"] +[58.98027257919347, "o", "\r\n"] +[59.01027257919347, "o", "$"] +[59.04027257919347, "o", " "] +[59.07027257919347, "o", "s"] +[59.10027257919347, "o", "g"] +[59.13027257919347, "o", "r"] +[59.160272579193474, "o", " "] +[59.190272579193476, "o", "t"] +[59.22027257919348, "o", "a"] +[59.25027257919348, "o", "b"] +[59.28027257919348, "o", "l"] +[59.31027257919348, "o", "e"] +[59.34027257919348, "o", " "] +[59.37027257919348, "o", "d"] +[59.400272579193484, "o", "e"] +[59.430272579193485, "o", "m"] +[59.460272579193486, "o", "o"] +[59.49027257919349, "o", "/"] +[59.52027257919349, "o", "w"] +[59.55027257919349, "o", "e"] +[59.58027257919349, "o", "a"] +[59.61027257919349, "o", "t"] +[59.64027257919349, "o", "h"] +[59.670272579193494, "o", "e"] +[59.700272579193495, "o", "r"] +[59.730272579193496, "o", ":"] +[59.7602725791935, "o", "i"] +[59.7902725791935, "o", "n"] +[59.8202725791935, "o", "i"] +[59.8502725791935, "o", "t"] +[59.8802725791935, "o", "i"] +[59.9102725791935, "o", "a"] +[59.940272579193504, "o", "l"] +[59.970272579193505, "o", "_"] +[60.000272579193506, "o", "d"] +[60.03027257919351, "o", "a"] +[60.06027257919351, "o", "t"] +[60.09027257919351, "o", "a"] +[60.12027257919351, "o", " "] +[60.15027257919351, "o", "r"] +[60.18027257919351, "o", "d"] +[60.210272579193514, "o", "u"] +[60.240272579193515, "o", "\r\n"] +[60.27027257919352, "o", "\u001b[0m"] +[60.30027257919352, "o", "\r\n"] +[60.68182432174723, "o", "Table demo/weather:0e90197539703a4fa4a5f0fb18277b063b04b1f223f7c78c33393e23d855146f/rdu\r\n"] +[60.681836004257605, "o", "\r\n"] +[60.683125610351965, "o", "Size: 109.61 KiB\r\n"] +[60.68406950950663, "o", "Rows: 4633\r\n"] +[60.684091682434484, "o", "Columns: \r\n date (timestamp without time zone, PK)\r\n temperaturemin (numeric)\r\n temperaturemax (numeric)\r\n precipitation (numeric)\r\n snowfall (numeric)\r\n snowdepth (numeric)\r\n avgwindspeed (numeric)\r\n fastest2minwinddir (integer)\r\n fastest2minwindspeed (numeric)\r\n"] +[60.68409764289896, "o", " fastest5secwinddir (integer)\r\n fastest5secwindspeed (numeric)\r\n fog (character varying)\r\n"] +[60.68411623954813, "o", " fogheavy (character varying)\r\n"] +[60.68413340568583, "o", " mist (character varying)\r\n rain (character varying)\r\n fogground (character varying)\r\n"] +[60.68414413452189, "o", " ice (character varying)\r\n glaze (character varying)\r\n"] +[60.68415462493937, "o", " drizzle (character varying)\r\n"] +[60.68416511535685, "o", " snow (character varying)\r\n freezingrain (character varying)\r\n"] +[60.684176559448645, "o", " smokehaze (character varying)\r\n"] +[60.68418585777323, "o", " thunder (character varying)\r\n highwind (character varying)\r\n"] +[60.684202785492346, "o", " hail (character varying)\r\n blowingsnow (character varying)\r\n"] +[60.684213275909826, "o", " dust (character varying)\r\n freezingfog (character varying)\r\n"] +[60.684224004745886, "o", "\r\n"] +[60.6842421245579, "o", "Objects: \r\n ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] +[60.7142421245579, "o", "\u001b[1m"] +[60.7442421245579, "o", "\u001b[36m"] +[60.7742421245579, "o", "\u001b[91m"] +[60.8042421245579, "o", "$"] +[60.8342421245579, "o", " "] +[60.864242124557904, "o", "\u001b[0m"] +[78.39027257919346, "o", "\u001b[H"] +[78.42027257919347, "o", "\u001b[J"] +[78.45027257919347, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect object metadata"] +[78.48027257919347, "o", "\r\n"] +[78.51027257919347, "o", "$"] +[78.54027257919347, "o", " "] +[78.57027257919347, "o", "s"] +[78.60027257919347, "o", "g"] +[78.63027257919347, "o", "r"] +[78.66027257919347, "o", " "] +[78.69027257919348, "o", "o"] +[78.72027257919348, "o", "b"] +[78.75027257919348, "o", "j"] +[78.78027257919348, "o", "e"] +[78.81027257919348, "o", "c"] +[78.84027257919348, "o", "t"] +[78.87027257919348, "o", " "] +[78.90027257919348, "o", "o"] +[78.93027257919348, "o", "b"] +[78.96027257919349, "o", "7"] +[78.99027257919349, "o", "9"] +[79.02027257919349, "o", "9"] +[79.05027257919349, "o", "c"] +[79.08027257919349, "o", "a"] +[79.11027257919349, "o", "7"] +[79.14027257919349, "o", "6"] +[79.1702725791935, "o", "1"] +[79.2002725791935, "o", "e"] +[79.2302725791935, "o", "a"] +[79.2602725791935, "o", "6"] +[79.2902725791935, "o", "3"] +[79.3202725791935, "o", "8"] +[79.3502725791935, "o", "c"] +[79.3802725791935, "o", "0"] +[79.4102725791935, "o", "d"] +[79.4402725791935, "o", "b"] +[79.4702725791935, "o", "b"] +[79.5002725791935, "o", "4"] +[79.53027257919351, "o", "d"] +[79.56027257919351, "o", "f"] +[79.59027257919351, "o", "3"] +[79.62027257919351, "o", "e"] +[79.65027257919351, "o", "5"] +[79.68027257919351, "o", "9"] +[79.71027257919351, "o", "a"] +[79.74027257919352, "o", "b"] +[79.77027257919352, "o", "6"] +[79.80027257919352, "o", "a"] +[79.83027257919352, "o", "9"] +[79.86027257919352, "o", "9"] +[79.89027257919352, "o", "5"] +[79.92027257919352, "o", "d"] +[79.95027257919352, "o", "8"] +[79.98027257919352, "o", "7"] +[80.01027257919353, "o", "9"] +[80.04027257919353, "o", "9"] +[80.07027257919353, "o", "9"] +[80.10027257919353, "o", "9"] +[80.13027257919353, "o", "0"] +[80.16027257919353, "o", "9"] +[80.19027257919353, "o", "d"] +[80.22027257919353, "o", "0"] +[80.25027257919353, "o", "0"] +[80.28027257919354, "o", "8"] +[80.31027257919354, "o", "a"] +[80.34027257919354, "o", "3"] +[80.37027257919354, "o", "4"] +[80.40027257919354, "o", "9"] +[80.43027257919354, "o", "5"] +[80.46027257919354, "o", "7"] +[80.49027257919354, "o", "1"] +[80.52027257919354, "o", "1"] +[80.55027257919355, "o", "c"] +[80.58027257919355, "o", "9"] +[80.61027257919355, "o", "0"] +[80.64027257919355, "o", "0"] +[80.67027257919355, "o", "9"] +[80.70027257919355, "o", "f"] +[80.73027257919355, "o", "8"] +[80.76027257919355, "o", "f"] +[80.79027257919356, "o", "\r\n"] +[80.82027257919356, "o", "\u001b[0m"] +[80.85027257919356, "o", "\r\n"] +[81.244582099915, "o", "Object ID: ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] +[81.24460951805159, "o", "\r\nNamespace: demo\r\nFormat: FRAG\r\nSize: 109.61 KiB\r\nCreated: 2021-05-05 11:29:40.756565\r\nRows inserted: 4633\r\nInsertion hash: 4b49b5701a582aa5c418238e4bf75c84d0dcd2ec993fb4e7fe1d0dfcf6ef6877\r\nRows deleted: 0\r\nDeletion hash: 0000000000000000000000000000000000000000000000000000000000000000\r\nColumn index:\r\n fog: ['No', 'Yes']\r\n ice: ['No', 'Yes']\r\n date: ['2007-01-01 00:00:00', '2019-09-07 00:00:00']\r\n dust: ['No', 'Yes']\r\n hail: ['No', 'Yes']\r\n mist: ['No', 'Yes']\r\n rain: ['No', 'Yes']\r\n snow: ['No', '"] +[81.2446243000035, "o", "Yes']\r\n glaze: ['No', 'Yes']\r\n drizzle: ['No', 'Yes']\r\n thunder: ['No', 'Yes']\r\n fogheavy: ['No', 'Yes']\r\n highwind: ['No', 'Yes']\r\n snowfall: ['0.0', '7.01']\r\n"] +[81.24463526725813, "o", " fogground: ['No', 'Yes']\r\n smokehaze: ['No', 'Yes']\r\n snowdepth: ['0.0', '5.91']\r\n"] +[81.2446550560002, "o", " blowingsnow: ['No', 'Yes']\r\n freezingfog: ['No', 'Yes']\r\n"] +[81.24466816902205, "o", " avgwindspeed: ['0.0', '20.36']\r\n"] +[81.24469010353133, "o", " freezingrain: ['No', 'Yes']\r\n precipitation: ['0.0', '6.45']\r\n"] +[81.24470011711165, "o", " temperaturemax: ['23.2', '105.1']\r\n temperaturemin: ['4.1', '80.1']\r\n"] +[81.24471132278487, "o", " fastest2minwinddir: [10, 360]\r\n"] +[81.2447222900395, "o", " fastest5secwinddir: [10, 360]\r\n fastest2minwindspeed: ['4.92', '59.95']\r\n"] +[81.24472681999251, "o", " fastest5secwindspeed: ['6.93', '86.12']\r\n"] +[81.24473278045699, "o", "\r\n"] +[81.26661245346114, "o", "Location: created locally\r\n"] +[81.29661245346114, "o", "\u001b[1m"] +[81.32661245346114, "o", "\u001b[36m"] +[81.35661245346114, "o", "\u001b[91m"] +[81.38661245346114, "o", "$"] +[81.41661245346114, "o", " "] +[81.44661245346114, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.14/import-from-mongo.cast b/content/casts/versioned/archive/v0.2.14/import-from-mongo.cast new file mode 100644 index 00000000..aab89ef8 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.14/import-from-mongo.cast @@ -0,0 +1,669 @@ +{"version": 2, "width": 100, "height": 35, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1620214184, "metadata": {"tss": [{"h": "Inspect the config file", "ts": 0.06}, {"h": "Do some preliminary cleanup", "ts": 6.0600000000000005}, {"h": "Mount the Mongo database", "ts": 12.419882078170783}, {"h": "Check the contents of the new table", "ts": 29.419882078170787}, {"h": "Import the data into a new Splitgraph repository", "ts": 36.47183029174812}, {"h": "Alternatively, data can be imported from other databases with Splitfiles", "ts": 45.50278570175189}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the config file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "c"] +[0.24, "o", "a"] +[0.27, "o", "t"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "."] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "g"] +[0.42000000000000015, "o", "c"] +[0.4500000000000002, "o", "o"] +[0.4800000000000002, "o", "n"] +[0.5100000000000002, "o", "f"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "g"] +[0.6000000000000003, "o", "\r\n"] +[0.6300000000000003, "o", "\u001b[0m"] +[0.6600000000000004, "o", "\r\n"] +[0.6612395381927494, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[data_sources]\r\nmongo_fdw=splitgraph.hooks.data_source.MongoDataSource\r\n"] +[0.6912395381927494, "o", "\u001b[1m"] +[0.7212395381927494, "o", "\u001b[36m"] +[0.7512395381927495, "o", "\u001b[91m"] +[0.7812395381927495, "o", "$"] +[0.8112395381927495, "o", " "] +[0.8412395381927495, "o", "\u001b[0m"] +[6.03, "o", "\u001b[H"] +[6.0600000000000005, "o", "\u001b[J"] +[6.090000000000001, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Do some preliminary cleanup"] +[6.120000000000001, "o", "\r\n"] +[6.150000000000001, "o", "$"] +[6.1800000000000015, "o", " "] +[6.210000000000002, "o", "s"] +[6.240000000000002, "o", "g"] +[6.270000000000002, "o", "r"] +[6.3000000000000025, "o", " "] +[6.330000000000003, "o", "r"] +[6.360000000000003, "o", "m"] +[6.390000000000003, "o", " "] +[6.4200000000000035, "o", "-"] +[6.450000000000004, "o", "y"] +[6.480000000000004, "o", " "] +[6.510000000000004, "o", "s"] +[6.5400000000000045, "o", "t"] +[6.570000000000005, "o", "a"] +[6.600000000000005, "o", "g"] +[6.630000000000005, "o", "i"] +[6.6600000000000055, "o", "n"] +[6.690000000000006, "o", "g"] +[6.720000000000006, "o", "\r\n"] +[6.750000000000006, "o", "\u001b[0m"] +[6.7800000000000065, "o", "\r\n"] +[7.179882078170783, "o", "Postgres schema staging will be deleted.\r\n"] +[7.209882078170783, "o", "\u001b[1m"] +[7.239882078170783, "o", "\u001b[36m"] +[7.269882078170784, "o", "\u001b[91m"] +[7.299882078170784, "o", "$"] +[7.329882078170784, "o", " "] +[7.359882078170784, "o", "\u001b[0m"] +[12.389882078170784, "o", "\u001b[H"] +[12.419882078170783, "o", "\u001b[J"] +[12.449882078170782, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Mount the Mongo database"] +[12.479882078170782, "o", "\r\n"] +[12.509882078170781, "o", "$"] +[12.53988207817078, "o", " "] +[12.56988207817078, "o", "s"] +[12.59988207817078, "o", "g"] +[12.629882078170779, "o", "r"] +[12.659882078170778, "o", " "] +[12.689882078170777, "o", "m"] +[12.719882078170777, "o", "o"] +[12.749882078170776, "o", "u"] +[12.779882078170775, "o", "n"] +[12.809882078170775, "o", "t"] +[12.839882078170774, "o", " "] +[12.869882078170773, "o", "m"] +[12.899882078170773, "o", "o"] +[12.929882078170772, "o", "n"] +[12.959882078170772, "o", "g"] +[12.989882078170771, "o", "o"] +[13.01988207817077, "o", "_"] +[13.04988207817077, "o", "f"] +[13.079882078170769, "o", "d"] +[13.109882078170768, "o", "w"] +[13.139882078170768, "o", " "] +[13.169882078170767, "o", "-"] +[13.199882078170766, "o", "-"] +[13.229882078170766, "o", "h"] +[13.259882078170765, "o", "e"] +[13.289882078170765, "o", "l"] +[13.319882078170764, "o", "p"] +[13.349882078170763, "o", "\r\n"] +[13.379882078170763, "o", "$"] +[13.409882078170762, "o", " "] +[13.439882078170761, "o", "s"] +[13.46988207817076, "o", "g"] +[13.49988207817076, "o", "r"] +[13.52988207817076, "o", " "] +[13.559882078170759, "o", "m"] +[13.589882078170758, "o", "o"] +[13.619882078170757, "o", "u"] +[13.649882078170757, "o", "n"] +[13.679882078170756, "o", "t"] +[13.709882078170756, "o", " "] +[13.739882078170755, "o", "m"] +[13.769882078170754, "o", "o"] +[13.799882078170754, "o", "n"] +[13.829882078170753, "o", "g"] +[13.859882078170752, "o", "o"] +[13.889882078170752, "o", "_"] +[13.919882078170751, "o", "f"] +[13.94988207817075, "o", "d"] +[13.97988207817075, "o", "w"] +[14.00988207817075, "o", " "] +[14.039882078170749, "o", "s"] +[14.069882078170748, "o", "t"] +[14.099882078170747, "o", "a"] +[14.129882078170747, "o", "g"] +[14.159882078170746, "o", "i"] +[14.189882078170745, "o", "n"] +[14.219882078170745, "o", "g"] +[14.249882078170744, "o", " "] +[14.279882078170743, "o", "-"] +[14.309882078170743, "o", "c"] +[14.339882078170742, "o", " "] +[14.369882078170741, "o", "o"] +[14.39988207817074, "o", "r"] +[14.42988207817074, "o", "i"] +[14.45988207817074, "o", "g"] +[14.489882078170739, "o", "i"] +[14.519882078170738, "o", "n"] +[14.549882078170738, "o", "r"] +[14.579882078170737, "o", "o"] +[14.609882078170736, "o", ":"] +[14.639882078170736, "o", "o"] +[14.669882078170735, "o", "r"] +[14.699882078170734, "o", "i"] +[14.729882078170734, "o", "g"] +[14.759882078170733, "o", "i"] +[14.789882078170733, "o", "n"] +[14.819882078170732, "o", "p"] +[14.849882078170731, "o", "a"] +[14.87988207817073, "o", "s"] +[14.90988207817073, "o", "s"] +[14.93988207817073, "o", "@"] +[14.969882078170729, "o", "m"] +[14.999882078170728, "o", "o"] +[15.029882078170727, "o", "n"] +[15.059882078170727, "o", "g"] +[15.089882078170726, "o", "o"] +[15.119882078170725, "o", ":"] +[15.149882078170725, "o", "2"] +[15.179882078170724, "o", "7"] +[15.209882078170724, "o", "0"] +[15.239882078170723, "o", "1"] +[15.269882078170722, "o", "7"] +[15.299882078170722, "o", " "] +[15.329882078170721, "o", "-"] +[15.35988207817072, "o", "o"] +[15.38988207817072, "o", " "] +[15.419882078170719, "o", "'"] +[15.449882078170718, "o", "{"] +[15.479882078170718, "o", "\""] +[15.509882078170717, "o", "t"] +[15.539882078170717, "o", "a"] +[15.569882078170716, "o", "b"] +[15.599882078170715, "o", "l"] +[15.629882078170715, "o", "e"] +[15.659882078170714, "o", "s"] +[15.689882078170713, "o", "\""] +[15.719882078170713, "o", ":"] +[15.749882078170712, "o", " "] +[15.779882078170711, "o", "{"] +[15.80988207817071, "o", "\""] +[15.83988207817071, "o", "s"] +[15.86988207817071, "o", "t"] +[15.899882078170709, "o", "u"] +[15.929882078170708, "o", "f"] +[15.959882078170708, "o", "f"] +[15.989882078170707, "o", "\""] +[16.019882078170706, "o", ":"] +[16.049882078170707, "o", " "] +[16.07988207817071, "o", "{"] +[16.10988207817071, "o", "\r\n "] +[16.13988207817071, "o", "\""] +[16.169882078170712, "o", "o"] +[16.199882078170713, "o", "p"] +[16.229882078170714, "o", "t"] +[16.259882078170715, "o", "i"] +[16.289882078170717, "o", "o"] +[16.319882078170718, "o", "n"] +[16.34988207817072, "o", "s"] +[16.37988207817072, "o", "\""] +[16.40988207817072, "o", ":"] +[16.439882078170722, "o", "\r\n "] +[16.469882078170723, "o", "{"] +[16.499882078170724, "o", "\r\n "] +[16.529882078170726, "o", "\""] +[16.559882078170727, "o", "d"] +[16.589882078170728, "o", "a"] +[16.61988207817073, "o", "t"] +[16.64988207817073, "o", "a"] +[16.67988207817073, "o", "b"] +[16.709882078170732, "o", "a"] +[16.739882078170734, "o", "s"] +[16.769882078170735, "o", "e"] +[16.799882078170736, "o", "\""] +[16.829882078170737, "o", ":"] +[16.859882078170738, "o", " "] +[16.88988207817074, "o", "\""] +[16.91988207817074, "o", "o"] +[16.94988207817074, "o", "r"] +[16.979882078170743, "o", "i"] +[17.009882078170744, "o", "g"] +[17.039882078170745, "o", "i"] +[17.069882078170746, "o", "n"] +[17.099882078170747, "o", "d"] +[17.12988207817075, "o", "b"] +[17.15988207817075, "o", "\""] +[17.18988207817075, "o", ","] +[17.219882078170752, "o", "\r\n "] +[17.249882078170753, "o", "\""] +[17.279882078170754, "o", "c"] +[17.309882078170755, "o", "o"] +[17.339882078170756, "o", "l"] +[17.369882078170757, "o", "l"] +[17.39988207817076, "o", "e"] +[17.42988207817076, "o", "c"] +[17.45988207817076, "o", "t"] +[17.489882078170762, "o", "i"] +[17.519882078170763, "o", "o"] +[17.549882078170764, "o", "n"] +[17.579882078170765, "o", "\""] +[17.609882078170767, "o", ":"] +[17.639882078170768, "o", " "] +[17.66988207817077, "o", "\""] +[17.69988207817077, "o", "s"] +[17.72988207817077, "o", "t"] +[17.759882078170772, "o", "u"] +[17.789882078170773, "o", "f"] +[17.819882078170775, "o", "f"] +[17.849882078170776, "o", "\""] +[17.879882078170777, "o", "\r\n "] +[17.909882078170778, "o", "}"] +[17.93988207817078, "o", ","] +[17.96988207817078, "o", "\r\n "] +[17.99988207817078, "o", "\""] +[18.029882078170782, "o", "s"] +[18.059882078170784, "o", "c"] +[18.089882078170785, "o", "h"] +[18.119882078170786, "o", "e"] +[18.149882078170787, "o", "m"] +[18.179882078170788, "o", "a"] +[18.20988207817079, "o", "\""] +[18.23988207817079, "o", ":"] +[18.26988207817079, "o", " "] +[18.299882078170793, "o", "{"] +[18.329882078170794, "o", "\r\n "] +[18.359882078170795, "o", "\""] +[18.389882078170796, "o", "n"] +[18.419882078170797, "o", "a"] +[18.4498820781708, "o", "m"] +[18.4798820781708, "o", "e"] +[18.5098820781708, "o", "\""] +[18.539882078170802, "o", ":"] +[18.569882078170803, "o", " "] +[18.599882078170804, "o", "\""] +[18.629882078170805, "o", "t"] +[18.659882078170806, "o", "e"] +[18.689882078170807, "o", "x"] +[18.71988207817081, "o", "t"] +[18.74988207817081, "o", "\""] +[18.77988207817081, "o", ","] +[18.809882078170812, "o", "\r\n "] +[18.839882078170813, "o", "\""] +[18.869882078170814, "o", "d"] +[18.899882078170815, "o", "u"] +[18.929882078170817, "o", "r"] +[18.959882078170818, "o", "a"] +[18.98988207817082, "o", "t"] +[19.01988207817082, "o", "i"] +[19.04988207817082, "o", "o"] +[19.079882078170822, "o", "n"] +[19.109882078170823, "o", "\""] +[19.139882078170825, "o", ":"] +[19.169882078170826, "o", " "] +[19.199882078170827, "o", "\""] +[19.229882078170828, "o", "n"] +[19.25988207817083, "o", "u"] +[19.28988207817083, "o", "m"] +[19.31988207817083, "o", "e"] +[19.349882078170833, "o", "r"] +[19.379882078170834, "o", "i"] +[19.409882078170835, "o", "c"] +[19.439882078170836, "o", "\""] +[19.469882078170837, "o", ","] +[19.499882078170838, "o", "\r\n "] +[19.52988207817084, "o", "\""] +[19.55988207817084, "o", "h"] +[19.58988207817084, "o", "a"] +[19.619882078170843, "o", "p"] +[19.649882078170844, "o", "p"] +[19.679882078170845, "o", "y"] +[19.709882078170846, "o", "\""] +[19.739882078170847, "o", ":"] +[19.76988207817085, "o", " "] +[19.79988207817085, "o", "\""] +[19.82988207817085, "o", "b"] +[19.859882078170852, "o", "o"] +[19.889882078170853, "o", "o"] +[19.919882078170854, "o", "l"] +[19.949882078170855, "o", "e"] +[19.979882078170856, "o", "a"] +[20.009882078170858, "o", "n"] +[20.03988207817086, "o", "\""] +[20.06988207817086, "o", "}"] +[20.09988207817086, "o", "}"] +[20.129882078170862, "o", "}"] +[20.159882078170863, "o", "}"] +[20.189882078170864, "o", "'"] +[20.219882078170865, "o", "\r\n"] +[20.249882078170867, "o", "\u001b[0m"] +[20.279882078170868, "o", "\r\n"] +[20.6311441707612, "o", "Usage: sgr mount mongo_fdw [OPTIONS] SCHEMA\r\n\r\n Mount a Mongo database.\r\n\r\n Mounts one or more collections on a remote Mongo database as a set of\r\n foreign tables locally.\r\n\r\nOptions:\r\n -c, --connection TEXT Connection string in the form\r\n username:password@server:port\r\n\r\n -o, --handler-options JSON JSON-encoded dictionary or @filename.json with\r\n handler options:\r\n \r\n tables: A di"] +[20.631160144806, "o", "ctionary of form { \"table_name\":\r\n { \"schema\": {\"col1\": \"type1\"...},\r\n \"options\": {\"database\": , \"collection\":\r\n } } }\r\n\r\n --help Show this message and exit.\r\n"] +[21.08217037200937, "o", "Mounting table stuff\r\n"] +[21.11217037200937, "o", "\u001b[1m"] +[21.14217037200937, "o", "\u001b[36m"] +[21.172170372009372, "o", "\u001b[91m"] +[21.202170372009373, "o", "$"] +[21.232170372009374, "o", " "] +[21.262170372009376, "o", "\u001b[0m"] +[29.389882078170785, "o", "\u001b[H"] +[29.419882078170787, "o", "\u001b[J"] +[29.449882078170788, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the contents of the new table"] +[29.47988207817079, "o", "\r\n"] +[29.50988207817079, "o", "$"] +[29.53988207817079, "o", " "] +[29.569882078170792, "o", "s"] +[29.599882078170793, "o", "g"] +[29.629882078170795, "o", "r"] +[29.659882078170796, "o", " "] +[29.689882078170797, "o", "s"] +[29.719882078170798, "o", "q"] +[29.7498820781708, "o", "l"] +[29.7798820781708, "o", " "] +[29.8098820781708, "o", "-"] +[29.839882078170803, "o", "s"] +[29.869882078170804, "o", " "] +[29.899882078170805, "o", "s"] +[29.929882078170806, "o", "t"] +[29.959882078170807, "o", "a"] +[29.989882078170808, "o", "g"] +[30.01988207817081, "o", "i"] +[30.04988207817081, "o", "n"] +[30.07988207817081, "o", "g"] +[30.109882078170813, "o", " "] +[30.139882078170814, "o", "\""] +[30.169882078170815, "o", "S"] +[30.199882078170816, "o", "E"] +[30.229882078170817, "o", "L"] +[30.25988207817082, "o", "E"] +[30.28988207817082, "o", "C"] +[30.31988207817082, "o", "T"] +[30.349882078170822, "o", " "] +[30.379882078170823, "o", "*"] +[30.409882078170824, "o", " "] +[30.439882078170825, "o", "F"] +[30.469882078170826, "o", "R"] +[30.499882078170828, "o", "O"] +[30.52988207817083, "o", "M"] +[30.55988207817083, "o", " "] +[30.58988207817083, "o", "s"] +[30.619882078170832, "o", "t"] +[30.649882078170833, "o", "u"] +[30.679882078170834, "o", "f"] +[30.709882078170835, "o", "f"] +[30.739882078170837, "o", "\""] +[30.769882078170838, "o", "\r\n"] +[30.79988207817084, "o", "\u001b[0m"] +[30.82988207817084, "o", "\r\n"] +[31.23183029174811, "o", "Alex 12 False 609281b58f2b02002bf446e1\r\nJames 2 True 609281b58f2b02002bf446e2\r\nAlice 98765 True 609281b58f2b02002bf446e3\r\n"] +[31.26183029174811, "o", "\u001b[1m"] +[31.291830291748113, "o", "\u001b[36m"] +[31.321830291748114, "o", "\u001b[91m"] +[31.351830291748115, "o", "$"] +[31.381830291748116, "o", " "] +[31.411830291748117, "o", "\u001b[0m"] +[36.44183029174812, "o", "\u001b[H"] +[36.47183029174812, "o", "\u001b[J"] +[36.50183029174812, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Import the data into a new Splitgraph repository"] +[36.53183029174812, "o", "\r\n"] +[36.56183029174812, "o", "$"] +[36.591830291748124, "o", " "] +[36.621830291748125, "o", "s"] +[36.65183029174813, "o", "g"] +[36.68183029174813, "o", "r"] +[36.71183029174813, "o", " "] +[36.74183029174813, "o", "i"] +[36.77183029174813, "o", "m"] +[36.80183029174813, "o", "p"] +[36.83183029174813, "o", "o"] +[36.861830291748134, "o", "r"] +[36.891830291748136, "o", "t"] +[36.92183029174814, "o", " "] +[36.95183029174814, "o", "s"] +[36.98183029174814, "o", "t"] +[37.01183029174814, "o", "a"] +[37.04183029174814, "o", "g"] +[37.07183029174814, "o", "i"] +[37.10183029174814, "o", "n"] +[37.131830291748145, "o", "g"] +[37.161830291748146, "o", " "] +[37.19183029174815, "o", "\""] +[37.22183029174815, "o", "S"] +[37.25183029174815, "o", "E"] +[37.28183029174815, "o", "L"] +[37.31183029174815, "o", "E"] +[37.34183029174815, "o", "C"] +[37.371830291748154, "o", "T"] +[37.401830291748155, "o", " "] +[37.431830291748156, "o", "n"] +[37.46183029174816, "o", "a"] +[37.49183029174816, "o", "m"] +[37.52183029174816, "o", "e"] +[37.55183029174816, "o", ","] +[37.58183029174816, "o", " "] +[37.61183029174816, "o", "d"] +[37.641830291748164, "o", "u"] +[37.671830291748165, "o", "r"] +[37.701830291748166, "o", "a"] +[37.73183029174817, "o", "t"] +[37.76183029174817, "o", "i"] +[37.79183029174817, "o", "o"] +[37.82183029174817, "o", "n"] +[37.85183029174817, "o", ","] +[37.88183029174817, "o", " "] +[37.911830291748174, "o", "h"] +[37.941830291748175, "o", "a"] +[37.97183029174818, "o", "p"] +[38.00183029174818, "o", "p"] +[38.03183029174818, "o", "y"] +[38.06183029174818, "o", " "] +[38.09183029174818, "o", "F"] +[38.12183029174818, "o", "R"] +[38.15183029174818, "o", "O"] +[38.181830291748184, "o", "M"] +[38.211830291748186, "o", " "] +[38.24183029174819, "o", "s"] +[38.27183029174819, "o", "t"] +[38.30183029174819, "o", "u"] +[38.33183029174819, "o", "f"] +[38.36183029174819, "o", "f"] +[38.39183029174819, "o", "\""] +[38.42183029174819, "o", " "] +[38.451830291748195, "o", "m"] +[38.481830291748196, "o", "y"] +[38.5118302917482, "o", "/"] +[38.5418302917482, "o", "r"] +[38.5718302917482, "o", "e"] +[38.6018302917482, "o", "p"] +[38.6318302917482, "o", "o"] +[38.6618302917482, "o", "s"] +[38.691830291748204, "o", "i"] +[38.721830291748205, "o", "t"] +[38.751830291748206, "o", "o"] +[38.78183029174821, "o", "r"] +[38.81183029174821, "o", "y"] +[38.84183029174821, "o", " "] +[38.87183029174821, "o", "s"] +[38.90183029174821, "o", "t"] +[38.93183029174821, "o", "u"] +[38.961830291748214, "o", "f"] +[38.991830291748215, "o", "f"] +[39.021830291748216, "o", "\r\n"] +[39.05183029174822, "o", "\u001b[0m"] +[39.08183029174822, "o", "\r\n"] +[39.97499754905718, "o", "Processing table sg_tmp_59c9a5f299a3bc2fe03c268dbed422c6\r\n"] +[40.26278570175188, "o", "my/repository:stuff has been imported from staging:SELECT name, duration, happy FROM stuff\r\n"] +[40.29278570175188, "o", "\u001b[1m"] +[40.32278570175188, "o", "\u001b[36m"] +[40.352785701751884, "o", "\u001b[91m"] +[40.382785701751885, "o", "$"] +[40.412785701751886, "o", " "] +[40.44278570175189, "o", "\u001b[0m"] +[45.47278570175189, "o", "\u001b[H"] +[45.50278570175189, "o", "\u001b[J"] +[45.53278570175189, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Alternatively, data can be imported from other databases with Splitfiles"] +[45.56278570175189, "o", "\r\n"] +[45.59278570175189, "o", "$"] +[45.622785701751894, "o", " "] +[45.652785701751895, "o", "c"] +[45.6827857017519, "o", "a"] +[45.7127857017519, "o", "t"] +[45.7427857017519, "o", " "] +[45.7727857017519, "o", "m"] +[45.8027857017519, "o", "o"] +[45.8327857017519, "o", "n"] +[45.8627857017519, "o", "g"] +[45.892785701751905, "o", "o"] +[45.922785701751906, "o", "_"] +[45.95278570175191, "o", "i"] +[45.98278570175191, "o", "m"] +[46.01278570175191, "o", "p"] +[46.04278570175191, "o", "o"] +[46.07278570175191, "o", "r"] +[46.10278570175191, "o", "t"] +[46.132785701751914, "o", "."] +[46.162785701751915, "o", "s"] +[46.192785701751916, "o", "p"] +[46.22278570175192, "o", "l"] +[46.25278570175192, "o", "i"] +[46.28278570175192, "o", "t"] +[46.31278570175192, "o", "f"] +[46.34278570175192, "o", "i"] +[46.37278570175192, "o", "l"] +[46.402785701751924, "o", "e"] +[46.432785701751925, "o", "\r\n"] +[46.462785701751926, "o", "$"] +[46.49278570175193, "o", " "] +[46.52278570175193, "o", "s"] +[46.55278570175193, "o", "g"] +[46.58278570175193, "o", "r"] +[46.61278570175193, "o", " "] +[46.64278570175193, "o", "b"] +[46.672785701751934, "o", "u"] +[46.702785701751935, "o", "i"] +[46.732785701751936, "o", "l"] +[46.76278570175194, "o", "d"] +[46.79278570175194, "o", " "] +[46.82278570175194, "o", "m"] +[46.85278570175194, "o", "o"] +[46.88278570175194, "o", "n"] +[46.91278570175194, "o", "g"] +[46.942785701751944, "o", "o"] +[46.972785701751945, "o", "_"] +[47.00278570175195, "o", "i"] +[47.03278570175195, "o", "m"] +[47.06278570175195, "o", "p"] +[47.09278570175195, "o", "o"] +[47.12278570175195, "o", "r"] +[47.15278570175195, "o", "t"] +[47.18278570175195, "o", "."] +[47.212785701751955, "o", "s"] +[47.242785701751956, "o", "p"] +[47.27278570175196, "o", "l"] +[47.30278570175196, "o", "i"] +[47.33278570175196, "o", "t"] +[47.36278570175196, "o", "f"] +[47.39278570175196, "o", "i"] +[47.42278570175196, "o", "l"] +[47.452785701751964, "o", "e"] +[47.482785701751965, "o", "\r\n"] +[47.512785701751966, "o", "\u001b[0m"] +[47.54278570175197, "o", "\r\n"] +[47.545068321228285, "o", "FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"tables\": {\"stuff\": {\r\n \"options\": {\r\n \"database\": \"origindb\",\r\n \"collection\": \"stuff\"\r\n },\r\n \"schema\": {\r\n \"name\": \"text\",\r\n \"duration\": \"numeric\",\r\n \"happy\": \"boolean\"}}}}'\r\n IMPORT {SELECT * FROM stuff} AS stuff\r\n"] +[47.92909532547023, "o", "Executing Splitfile mongo_import.splitfile with arguments {}\r\n"] +[47.967381057739516, "o", "\u001b[1m\r\nStep 1/1 : FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"t...\u001b[0m\r\n"] +[48.04931789398219, "o", "Mounting table stuff\r\n"] +[48.58990722656276, "o", "Processing table sg_tmp_74a83f92e90575555d871d4fa431d97e\r\n"] +[48.916032371521254, "o", "Successfully built mongo_import:30a075486115.\r\n"] +[48.946032371521255, "o", "\u001b[1m"] +[48.976032371521256, "o", "\u001b[36m"] +[49.00603237152126, "o", "\u001b[91m"] +[49.03603237152126, "o", "$"] +[49.06603237152126, "o", " "] +[49.09603237152126, "o", "\u001b[0m"] +[55.47278570175189, "o", "\u001b[H"] +[55.50278570175189, "o", "\u001b[J"] +[55.53278570175189, "o", "\u001b[1m"] +[55.56278570175189, "o", "\u001b[36m"] +[55.59278570175189, "o", "\u001b[91m"] +[55.622785701751894, "o", "$"] +[55.652785701751895, "o", " "] +[55.6827857017519, "o", "s"] +[55.7127857017519, "o", "g"] +[55.7427857017519, "o", "r"] +[55.7727857017519, "o", " "] +[55.8027857017519, "o", "s"] +[55.8327857017519, "o", "h"] +[55.8627857017519, "o", "o"] +[55.892785701751905, "o", "w"] +[55.922785701751906, "o", " "] +[55.95278570175191, "o", "m"] +[55.98278570175191, "o", "o"] +[56.01278570175191, "o", "n"] +[56.04278570175191, "o", "g"] +[56.07278570175191, "o", "o"] +[56.10278570175191, "o", "_"] +[56.132785701751914, "o", "i"] +[56.162785701751915, "o", "m"] +[56.192785701751916, "o", "p"] +[56.22278570175192, "o", "o"] +[56.25278570175192, "o", "r"] +[56.28278570175192, "o", "t"] +[56.31278570175192, "o", ":"] +[56.34278570175192, "o", "l"] +[56.37278570175192, "o", "a"] +[56.402785701751924, "o", "t"] +[56.432785701751925, "o", "e"] +[56.462785701751926, "o", "s"] +[56.49278570175193, "o", "t"] +[56.52278570175193, "o", "\r\n"] +[56.55278570175193, "o", "$"] +[56.58278570175193, "o", " "] +[56.61278570175193, "o", "s"] +[56.64278570175193, "o", "g"] +[56.672785701751934, "o", "r"] +[56.702785701751935, "o", " "] +[56.732785701751936, "o", "s"] +[56.76278570175194, "o", "q"] +[56.79278570175194, "o", "l"] +[56.82278570175194, "o", " "] +[56.85278570175194, "o", "-"] +[56.88278570175194, "o", "s"] +[56.91278570175194, "o", " "] +[56.942785701751944, "o", "m"] +[56.972785701751945, "o", "o"] +[57.00278570175195, "o", "n"] +[57.03278570175195, "o", "g"] +[57.06278570175195, "o", "o"] +[57.09278570175195, "o", "_"] +[57.12278570175195, "o", "i"] +[57.15278570175195, "o", "m"] +[57.18278570175195, "o", "p"] +[57.212785701751955, "o", "o"] +[57.242785701751956, "o", "r"] +[57.27278570175196, "o", "t"] +[57.30278570175196, "o", " "] +[57.33278570175196, "o", "\""] +[57.36278570175196, "o", "S"] +[57.39278570175196, "o", "E"] +[57.42278570175196, "o", "L"] +[57.452785701751964, "o", "E"] +[57.482785701751965, "o", "C"] +[57.512785701751966, "o", "T"] +[57.54278570175197, "o", " "] +[57.57278570175197, "o", "*"] +[57.60278570175197, "o", " "] +[57.63278570175197, "o", "F"] +[57.66278570175197, "o", "R"] +[57.69278570175197, "o", "O"] +[57.722785701751974, "o", "M"] +[57.752785701751975, "o", " "] +[57.782785701751976, "o", "s"] +[57.81278570175198, "o", "t"] +[57.84278570175198, "o", "u"] +[57.87278570175198, "o", "f"] +[57.90278570175198, "o", "f"] +[57.93278570175198, "o", "\""] +[57.96278570175198, "o", "\r\n"] +[57.992785701751984, "o", "\u001b[0m"] +[58.022785701751985, "o", "\r\n"] +[58.39890936851529, "o", "Image mongo_import:30a0754861153dfca674cd2fbe745e4f37f9edaebb4a1420a130309b0caee9b7\r\n"] +[58.39893273353604, "o", "Importing 1 table from mongo_fdw_tmp_staging\r\nCreated at 2021-05-05T11:30:05.370825\r\n"] +[58.399990835190096, "o", "Size: 589.00 B\r\n"] +[58.400001564026155, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[58.40074328422574, "o", " stuff\r\n"] +[58.80038002967862, "o", "Alex 12 False 609281b58f2b02002bf446e1\r\nAlice 98765 True 609281b58f2b02002bf446e3\r\nJames 2 True 609281b58f2b02002bf446e2\r\n"] +[58.83038002967862, "o", "\u001b[1m"] +[58.86038002967862, "o", "\u001b[36m"] +[58.890380029678624, "o", "\u001b[91m"] +[58.920380029678626, "o", "$"] +[58.95038002967863, "o", " "] +[58.98038002967863, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.14/metadata.json b/content/casts/versioned/archive/v0.2.14/metadata.json new file mode 100644 index 00000000..4e67fe32 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.14/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.14", + "updated_at": "2022-01-20T00:00:44.676Z", + "release": { + "id": 42470070, + "tag_name": "v0.2.14", + "target_commitish": "b6085d0bc345aaff8f9bb1812d783c177a2c1a0e", + "created_at": "2021-05-05T11:12:15Z", + "published_at": "2021-05-05T13:43:59Z", + "assets": [ + { + "id": 36435419, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/36435419", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-05-05T11:39:07Z", + "updated_at": "2021-05-05T11:39:07Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.14/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/casts/versioned/archive/v0.2.14/pg-replication.cast b/content/casts/versioned/archive/v0.2.14/pg-replication.cast new file mode 100644 index 00000000..33a9aabc --- /dev/null +++ b/content/casts/versioned/archive/v0.2.14/pg-replication.cast @@ -0,0 +1,1402 @@ +{"version": 2, "width": 100, "height": 21, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1620214256, "metadata": {"tss": [{"h": "The configuration file for sgr contains credentials for the", "ts": 0.06}, {"h": "The origin database has been set up with a couple of tables.", "ts": 10.059999999999999}, {"h": "Create a publication on the origin database", "ts": 19.7889340400695}, {"h": "Create a schema with the same name and same tables", "ts": 28.568934040069642}, {"h": "Set up replication from the origin database.", "ts": 38.56893404006964}, {"h": "Check the data on the engine", "ts": 49.50893404006987}, {"h": "Commit the data as an initial image", "ts": 58.13539489746133}, {"h": "Make a change on the origin database", "ts": 68.29207270622308}, {"h": "The change propagates to the subscriber and gets", "ts": 84.3620727062235}, {"h": "Committing creates a new image, snapshotting the state.", "ts": 91.24848917961222}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The configuration file for sgr contains credentials for the"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # origin database: this is just so that we can use sgr to query it\r\n"] +[0.18, "o", "$ # (replication can be set up through any PostgreSQL client)\r\n"] +[0.21, "o", "$"] +[0.24, "o", " "] +[0.27, "o", "c"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "t"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "."] +[0.42000000000000015, "o", "s"] +[0.4500000000000002, "o", "g"] +[0.4800000000000002, "o", "c"] +[0.5100000000000002, "o", "o"] +[0.5400000000000003, "o", "n"] +[0.5700000000000003, "o", "f"] +[0.6000000000000003, "o", "i"] +[0.6300000000000003, "o", "g"] +[0.6600000000000004, "o", "\r\n"] +[0.6900000000000004, "o", "\u001b[0m"] +[0.7200000000000004, "o", "\r\n"] +[0.7211320114135746, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n; Add the origin database here so that we can\r\n; use sgr to talk to it (can use any pg client)\r\n[remote:origin]\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=originuser\r\nSG_ENGINE_PWD=originpass\r\nSG_ENGINE_DB=originuser\r\n"] +[0.7511320114135747, "o", "\u001b[1m"] +[0.7811320114135747, "o", "\u001b[36m"] +[0.8111320114135747, "o", "\u001b[91m"] +[0.8411320114135747, "o", "$"] +[0.8711320114135748, "o", " "] +[0.9011320114135748, "o", "\u001b[0m"] +[10.03, "o", "\u001b[H"] +[10.059999999999999, "o", "\u001b[J"] +[10.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The origin database has been set up with a couple of tables."] +[10.119999999999997, "o", "\r\n"] +[10.149999999999997, "o", "$"] +[10.179999999999996, "o", " "] +[10.209999999999996, "o", "s"] +[10.239999999999995, "o", "g"] +[10.269999999999994, "o", "r"] +[10.299999999999994, "o", " "] +[10.329999999999993, "o", "s"] +[10.359999999999992, "o", "q"] +[10.389999999999992, "o", "l"] +[10.419999999999991, "o", " "] +[10.44999999999999, "o", "-"] +[10.47999999999999, "o", "r"] +[10.50999999999999, "o", " "] +[10.539999999999988, "o", "o"] +[10.569999999999988, "o", "r"] +[10.599999999999987, "o", "i"] +[10.629999999999987, "o", "g"] +[10.659999999999986, "o", "i"] +[10.689999999999985, "o", "n"] +[10.719999999999985, "o", " "] +[10.749999999999984, "o", "\""] +[10.779999999999983, "o", "S"] +[10.809999999999983, "o", "E"] +[10.839999999999982, "o", "L"] +[10.869999999999981, "o", "E"] +[10.89999999999998, "o", "C"] +[10.92999999999998, "o", "T"] +[10.95999999999998, "o", " "] +[10.989999999999979, "o", "*"] +[11.019999999999978, "o", " "] +[11.049999999999978, "o", "F"] +[11.079999999999977, "o", "R"] +[11.109999999999976, "o", "O"] +[11.139999999999976, "o", "M"] +[11.169999999999975, "o", " "] +[11.199999999999974, "o", "p"] +[11.229999999999974, "o", "r"] +[11.259999999999973, "o", "o"] +[11.289999999999973, "o", "d"] +[11.319999999999972, "o", "u"] +[11.349999999999971, "o", "c"] +[11.37999999999997, "o", "t"] +[11.40999999999997, "o", "i"] +[11.43999999999997, "o", "o"] +[11.469999999999969, "o", "n"] +[11.499999999999968, "o", "_"] +[11.529999999999967, "o", "d"] +[11.559999999999967, "o", "a"] +[11.589999999999966, "o", "t"] +[11.619999999999965, "o", "a"] +[11.649999999999965, "o", "."] +[11.679999999999964, "o", "c"] +[11.709999999999964, "o", "u"] +[11.739999999999963, "o", "s"] +[11.769999999999962, "o", "t"] +[11.799999999999962, "o", "o"] +[11.829999999999961, "o", "m"] +[11.85999999999996, "o", "e"] +[11.88999999999996, "o", "r"] +[11.919999999999959, "o", "s"] +[11.949999999999958, "o", "\""] +[11.979999999999958, "o", "\r\n"] +[12.009999999999957, "o", "$"] +[12.039999999999957, "o", " "] +[12.069999999999956, "o", "s"] +[12.099999999999955, "o", "g"] +[12.129999999999955, "o", "r"] +[12.159999999999954, "o", " "] +[12.189999999999953, "o", "s"] +[12.219999999999953, "o", "q"] +[12.249999999999952, "o", "l"] +[12.279999999999951, "o", " "] +[12.30999999999995, "o", "-"] +[12.33999999999995, "o", "r"] +[12.36999999999995, "o", " "] +[12.399999999999949, "o", "o"] +[12.429999999999948, "o", "r"] +[12.459999999999948, "o", "i"] +[12.489999999999947, "o", "g"] +[12.519999999999946, "o", "i"] +[12.549999999999946, "o", "n"] +[12.579999999999945, "o", " "] +[12.609999999999944, "o", "\""] +[12.639999999999944, "o", "S"] +[12.669999999999943, "o", "E"] +[12.699999999999942, "o", "L"] +[12.729999999999942, "o", "E"] +[12.759999999999941, "o", "C"] +[12.78999999999994, "o", "T"] +[12.81999999999994, "o", " "] +[12.84999999999994, "o", "*"] +[12.879999999999939, "o", " "] +[12.909999999999938, "o", "F"] +[12.939999999999937, "o", "R"] +[12.969999999999937, "o", "O"] +[12.999999999999936, "o", "M"] +[13.029999999999935, "o", " "] +[13.059999999999935, "o", "p"] +[13.089999999999934, "o", "r"] +[13.119999999999933, "o", "o"] +[13.149999999999933, "o", "d"] +[13.179999999999932, "o", "u"] +[13.209999999999932, "o", "c"] +[13.239999999999931, "o", "t"] +[13.26999999999993, "o", "i"] +[13.29999999999993, "o", "o"] +[13.329999999999929, "o", "n"] +[13.359999999999928, "o", "_"] +[13.389999999999928, "o", "d"] +[13.419999999999927, "o", "a"] +[13.449999999999926, "o", "t"] +[13.479999999999926, "o", "a"] +[13.509999999999925, "o", "."] +[13.539999999999925, "o", "o"] +[13.569999999999924, "o", "r"] +[13.599999999999923, "o", "d"] +[13.629999999999923, "o", "e"] +[13.659999999999922, "o", "r"] +[13.689999999999921, "o", "s"] +[13.71999999999992, "o", "\""] +[13.74999999999992, "o", "\r\n"] +[13.77999999999992, "o", "\u001b[0m"] +[13.809999999999919, "o", "\r\n"] +[14.194187698364177, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[14.548934040069499, "o", "1 1 15 Toilet Roll 2020-03-15 12:00:00\r\n2 1 20 Hand Sanitizer 2020-03-16 02:00:00\r\n3 2 5 Pasta 2020-03-21 17:32:11\r\n4 3 50 Surgical Mask 2020-04-01 12:00:01\r\n5 1 50 Surgical Mask 2020-04-02 11:29:42\r\n"] +[14.578934040069498, "o", "\u001b[1m"] +[14.608934040069498, "o", "\u001b[36m"] +[14.638934040069497, "o", "\u001b[91m"] +[14.668934040069496, "o", "$"] +[14.698934040069496, "o", " "] +[14.728934040069495, "o", "\u001b[0m"] +[19.758934040069498, "o", "\u001b[H"] +[19.7889340400695, "o", "\u001b[J"] +[19.8189340400695, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a publication on the origin database"] +[19.8489340400695, "o", "\r\n"] +[19.878934040069502, "o", "$"] +[19.908934040069504, "o", " "] +[19.938934040069505, "o", "s"] +[19.968934040069506, "o", "g"] +[19.998934040069507, "o", "r"] +[20.028934040069508, "o", " "] +[20.05893404006951, "o", "s"] +[20.08893404006951, "o", "q"] +[20.11893404006951, "o", "l"] +[20.148934040069513, "o", " "] +[20.178934040069514, "o", "-"] +[20.208934040069515, "o", "r"] +[20.238934040069516, "o", " "] +[20.268934040069517, "o", "o"] +[20.29893404006952, "o", "r"] +[20.32893404006952, "o", "i"] +[20.35893404006952, "o", "g"] +[20.388934040069522, "o", "i"] +[20.418934040069523, "o", "n"] +[20.448934040069524, "o", " "] +[20.478934040069525, "o", "\""] +[20.508934040069526, "o", "C"] +[20.538934040069527, "o", "R"] +[20.56893404006953, "o", "E"] +[20.59893404006953, "o", "A"] +[20.62893404006953, "o", "T"] +[20.658934040069532, "o", "E"] +[20.688934040069533, "o", " "] +[20.718934040069534, "o", "P"] +[20.748934040069535, "o", "U"] +[20.778934040069537, "o", "B"] +[20.808934040069538, "o", "L"] +[20.83893404006954, "o", "I"] +[20.86893404006954, "o", "C"] +[20.89893404006954, "o", "A"] +[20.928934040069542, "o", "T"] +[20.958934040069543, "o", "I"] +[20.988934040069545, "o", "O"] +[21.018934040069546, "o", "N"] +[21.048934040069547, "o", " "] +[21.078934040069548, "o", "p"] +[21.10893404006955, "o", "u"] +[21.13893404006955, "o", "b"] +[21.16893404006955, "o", "_"] +[21.198934040069553, "o", "o"] +[21.228934040069554, "o", "r"] +[21.258934040069555, "o", "d"] +[21.288934040069556, "o", "e"] +[21.318934040069557, "o", "r"] +[21.348934040069558, "o", "s"] +[21.37893404006956, "o", " "] +[21.40893404006956, "o", "\\"] +[21.43893404006956, "o", "\r\n "] +[21.468934040069563, "o", "F"] +[21.498934040069564, "o", "O"] +[21.528934040069565, "o", "R"] +[21.558934040069566, "o", " "] +[21.588934040069567, "o", "T"] +[21.61893404006957, "o", "A"] +[21.64893404006957, "o", "B"] +[21.67893404006957, "o", "L"] +[21.708934040069572, "o", "E"] +[21.738934040069573, "o", " "] +[21.768934040069574, "o", "p"] +[21.798934040069575, "o", "r"] +[21.828934040069576, "o", "o"] +[21.858934040069578, "o", "d"] +[21.88893404006958, "o", "u"] +[21.91893404006958, "o", "c"] +[21.94893404006958, "o", "t"] +[21.978934040069582, "o", "i"] +[22.008934040069583, "o", "o"] +[22.038934040069584, "o", "n"] +[22.068934040069585, "o", "_"] +[22.098934040069587, "o", "d"] +[22.128934040069588, "o", "a"] +[22.15893404006959, "o", "t"] +[22.18893404006959, "o", "a"] +[22.21893404006959, "o", "."] +[22.248934040069592, "o", "c"] +[22.278934040069593, "o", "u"] +[22.308934040069595, "o", "s"] +[22.338934040069596, "o", "t"] +[22.368934040069597, "o", "o"] +[22.398934040069598, "o", "m"] +[22.4289340400696, "o", "e"] +[22.4589340400696, "o", "r"] +[22.4889340400696, "o", "s"] +[22.518934040069603, "o", ","] +[22.548934040069604, "o", " "] +[22.578934040069605, "o", "p"] +[22.608934040069606, "o", "r"] +[22.638934040069607, "o", "o"] +[22.668934040069608, "o", "d"] +[22.69893404006961, "o", "u"] +[22.72893404006961, "o", "c"] +[22.75893404006961, "o", "t"] +[22.788934040069613, "o", "i"] +[22.818934040069614, "o", "o"] +[22.848934040069615, "o", "n"] +[22.878934040069616, "o", "_"] +[22.908934040069617, "o", "d"] +[22.93893404006962, "o", "a"] +[22.96893404006962, "o", "t"] +[22.99893404006962, "o", "a"] +[23.028934040069622, "o", "."] +[23.058934040069623, "o", "o"] +[23.088934040069624, "o", "r"] +[23.118934040069625, "o", "d"] +[23.148934040069626, "o", "e"] +[23.178934040069628, "o", "r"] +[23.20893404006963, "o", "s"] +[23.23893404006963, "o", "\""] +[23.26893404006963, "o", "\r\n"] +[23.298934040069632, "o", "\u001b[0m"] +[23.328934040069633, "o", "\r\n"] +[23.358934040069634, "o", "\u001b[1m"] +[23.388934040069636, "o", "\u001b[36m"] +[23.418934040069637, "o", "\u001b[91m"] +[23.448934040069638, "o", "$"] +[23.47893404006964, "o", " "] +[23.50893404006964, "o", "\u001b[0m"] +[28.53893404006964, "o", "\u001b[H"] +[28.568934040069642, "o", "\u001b[J"] +[28.598934040069643, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a schema with the same name and same tables"] +[28.628934040069645, "o", "\r\n"] +[28.658934040069646, "o", "$ # on the engine and initialize the repository.\r\n"] +[28.688934040069647, "o", "$"] +[28.718934040069648, "o", " "] +[28.74893404006965, "o", "s"] +[28.77893404006965, "o", "g"] +[28.80893404006965, "o", "r"] +[28.838934040069653, "o", " "] +[28.868934040069654, "o", "i"] +[28.898934040069655, "o", "n"] +[28.928934040069656, "o", "i"] +[28.958934040069657, "o", "t"] +[28.98893404006966, "o", " "] +[29.01893404006966, "o", "p"] +[29.04893404006966, "o", "r"] +[29.07893404006966, "o", "o"] +[29.108934040069663, "o", "d"] +[29.138934040069664, "o", "u"] +[29.168934040069665, "o", "c"] +[29.198934040069666, "o", "t"] +[29.228934040069667, "o", "i"] +[29.25893404006967, "o", "o"] +[29.28893404006967, "o", "n"] +[29.31893404006967, "o", "_"] +[29.348934040069672, "o", "d"] +[29.378934040069673, "o", "a"] +[29.408934040069674, "o", "t"] +[29.438934040069675, "o", "a"] +[29.468934040069676, "o", "\r\n"] +[29.498934040069678, "o", "$"] +[29.52893404006968, "o", " "] +[29.55893404006968, "o", "c"] +[29.58893404006968, "o", "a"] +[29.618934040069682, "o", "t"] +[29.648934040069683, "o", " "] +[29.678934040069684, "o", "e"] +[29.708934040069686, "o", "n"] +[29.738934040069687, "o", "g"] +[29.768934040069688, "o", "i"] +[29.79893404006969, "o", "n"] +[29.82893404006969, "o", "e"] +[29.85893404006969, "o", "/"] +[29.888934040069692, "o", "s"] +[29.918934040069693, "o", "c"] +[29.948934040069695, "o", "h"] +[29.978934040069696, "o", "e"] +[30.008934040069697, "o", "m"] +[30.038934040069698, "o", "a"] +[30.0689340400697, "o", "."] +[30.0989340400697, "o", "s"] +[30.1289340400697, "o", "q"] +[30.158934040069703, "o", "l"] +[30.188934040069704, "o", "\r\n"] +[30.218934040069705, "o", "$"] +[30.248934040069706, "o", " "] +[30.278934040069707, "o", "s"] +[30.30893404006971, "o", "g"] +[30.33893404006971, "o", "r"] +[30.36893404006971, "o", " "] +[30.39893404006971, "o", "s"] +[30.428934040069713, "o", "q"] +[30.458934040069714, "o", "l"] +[30.488934040069715, "o", " "] +[30.518934040069716, "o", "-"] +[30.548934040069717, "o", "s"] +[30.57893404006972, "o", " "] +[30.60893404006972, "o", "p"] +[30.63893404006972, "o", "r"] +[30.668934040069722, "o", "o"] +[30.698934040069723, "o", "d"] +[30.728934040069724, "o", "u"] +[30.758934040069725, "o", "c"] +[30.788934040069726, "o", "t"] +[30.818934040069728, "o", "i"] +[30.84893404006973, "o", "o"] +[30.87893404006973, "o", "n"] +[30.90893404006973, "o", "_"] +[30.938934040069732, "o", "d"] +[30.968934040069733, "o", "a"] +[30.998934040069734, "o", "t"] +[31.028934040069736, "o", "a"] +[31.058934040069737, "o", " "] +[31.088934040069738, "o", "\""] +[31.11893404006974, "o", "$"] +[31.14893404006974, "o", "("] +[31.17893404006974, "o", "c"] +[31.208934040069742, "o", "a"] +[31.238934040069744, "o", "t"] +[31.268934040069745, "o", " "] +[31.298934040069746, "o", "e"] +[31.328934040069747, "o", "n"] +[31.358934040069748, "o", "g"] +[31.38893404006975, "o", "i"] +[31.41893404006975, "o", "n"] +[31.44893404006975, "o", "e"] +[31.478934040069753, "o", "/"] +[31.508934040069754, "o", "s"] +[31.538934040069755, "o", "c"] +[31.568934040069756, "o", "h"] +[31.598934040069757, "o", "e"] +[31.62893404006976, "o", "m"] +[31.65893404006976, "o", "a"] +[31.68893404006976, "o", "."] +[31.71893404006976, "o", "s"] +[31.748934040069763, "o", "q"] +[31.778934040069764, "o", "l"] +[31.808934040069765, "o", ")"] +[31.838934040069766, "o", "\""] +[31.868934040069767, "o", "\r\n"] +[31.89893404006977, "o", "\u001b[0m"] +[31.92893404006977, "o", "\r\n"] +[32.40041440963764, "o", "Initialized empty repository production_data\r\n"] +[32.40237397193928, "o", "CREATE TABLE production_data.customers ("] +[32.40243929862995, "o", "\r\n id INTEGER PRIMARY KEY,\r\n name VARCHAR,\r\n registration_time TIMESTAMP\r\n);\r\n\r\nCREATE TABLE production_data.orders (\r\n id INTEGER PRIMARY KEY,\r\n customer_id INTEGER,\r\n quantity INTEGER,\r\n item_name VARCHAR,\r\n placed_time TIMESTAMP\r\n);\r\n"] +[32.43243929862995, "o", "\u001b[1m"] +[32.46243929862995, "o", "\u001b[36m"] +[32.492439298629954, "o", "\u001b[91m"] +[32.522439298629955, "o", "$"] +[32.552439298629956, "o", " "] +[32.58243929862996, "o", "\u001b[0m"] +[38.53893404006964, "o", "\u001b[H"] +[38.56893404006964, "o", "\u001b[J"] +[38.59893404006964, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Set up replication from the origin database."] +[38.628934040069645, "o", "\r\n"] +[38.658934040069646, "o", "$ # This will copy existing data into the tables too.\r\n"] +[38.68893404006965, "o", "$"] +[38.71893404006965, "o", " "] +[38.74893404006965, "o", "s"] +[38.77893404006965, "o", "g"] +[38.80893404006965, "o", "r"] +[38.83893404006965, "o", " "] +[38.868934040069654, "o", "s"] +[38.898934040069655, "o", "q"] +[38.928934040069656, "o", "l"] +[38.95893404006966, "o", " "] +[38.98893404006966, "o", "-"] +[39.01893404006966, "o", "-"] +[39.04893404006966, "o", "n"] +[39.07893404006966, "o", "o"] +[39.10893404006966, "o", "-"] +[39.138934040069664, "o", "t"] +[39.168934040069665, "o", "r"] +[39.198934040069666, "o", "a"] +[39.22893404006967, "o", "n"] +[39.25893404006967, "o", "s"] +[39.28893404006967, "o", "a"] +[39.31893404006967, "o", "c"] +[39.34893404006967, "o", "t"] +[39.37893404006967, "o", "i"] +[39.408934040069674, "o", "o"] +[39.438934040069675, "o", "n"] +[39.468934040069676, "o", " "] +[39.49893404006968, "o", "\""] +[39.52893404006968, "o", "C"] +[39.55893404006968, "o", "R"] +[39.58893404006968, "o", "E"] +[39.61893404006968, "o", "A"] +[39.64893404006968, "o", "T"] +[39.678934040069684, "o", "E"] +[39.708934040069686, "o", " "] +[39.73893404006969, "o", "S"] +[39.76893404006969, "o", "U"] +[39.79893404006969, "o", "B"] +[39.82893404006969, "o", "S"] +[39.85893404006969, "o", "C"] +[39.88893404006969, "o", "R"] +[39.91893404006969, "o", "I"] +[39.948934040069695, "o", "P"] +[39.978934040069696, "o", "T"] +[40.0089340400697, "o", "I"] +[40.0389340400697, "o", "O"] +[40.0689340400697, "o", "N"] +[40.0989340400697, "o", " "] +[40.1289340400697, "o", "s"] +[40.1589340400697, "o", "u"] +[40.188934040069704, "o", "b"] +[40.218934040069705, "o", "_"] +[40.248934040069706, "o", "o"] +[40.27893404006971, "o", "r"] +[40.30893404006971, "o", "d"] +[40.33893404006971, "o", "e"] +[40.36893404006971, "o", "r"] +[40.39893404006971, "o", "s"] +[40.42893404006971, "o", " "] +[40.458934040069714, "o", "\\"] +[40.488934040069715, "o", "\r\n "] +[40.518934040069716, "o", "C"] +[40.54893404006972, "o", "O"] +[40.57893404006972, "o", "N"] +[40.60893404006972, "o", "N"] +[40.63893404006972, "o", "E"] +[40.66893404006972, "o", "C"] +[40.69893404006972, "o", "T"] +[40.728934040069724, "o", "I"] +[40.758934040069725, "o", "O"] +[40.78893404006973, "o", "N"] +[40.81893404006973, "o", " "] +[40.84893404006973, "o", "'"] +[40.87893404006973, "o", "p"] +[40.90893404006973, "o", "o"] +[40.93893404006973, "o", "s"] +[40.96893404006973, "o", "t"] +[40.998934040069734, "o", "g"] +[41.028934040069736, "o", "r"] +[41.05893404006974, "o", "e"] +[41.08893404006974, "o", "s"] +[41.11893404006974, "o", "q"] +[41.14893404006974, "o", "l"] +[41.17893404006974, "o", ":"] +[41.20893404006974, "o", "/"] +[41.23893404006974, "o", "/"] +[41.268934040069745, "o", "o"] +[41.298934040069746, "o", "r"] +[41.32893404006975, "o", "i"] +[41.35893404006975, "o", "g"] +[41.38893404006975, "o", "i"] +[41.41893404006975, "o", "n"] +[41.44893404006975, "o", "u"] +[41.47893404006975, "o", "s"] +[41.508934040069754, "o", "e"] +[41.538934040069755, "o", "r"] +[41.568934040069756, "o", ":"] +[41.59893404006976, "o", "o"] +[41.62893404006976, "o", "r"] +[41.65893404006976, "o", "i"] +[41.68893404006976, "o", "g"] +[41.71893404006976, "o", "i"] +[41.74893404006976, "o", "n"] +[41.778934040069764, "o", "p"] +[41.808934040069765, "o", "a"] +[41.838934040069766, "o", "s"] +[41.86893404006977, "o", "s"] +[41.89893404006977, "o", "@"] +[41.92893404006977, "o", "o"] +[41.95893404006977, "o", "r"] +[41.98893404006977, "o", "i"] +[42.01893404006977, "o", "g"] +[42.048934040069774, "o", "i"] +[42.078934040069775, "o", "n"] +[42.10893404006978, "o", ":"] +[42.13893404006978, "o", "5"] +[42.16893404006978, "o", "4"] +[42.19893404006978, "o", "3"] +[42.22893404006978, "o", "2"] +[42.25893404006978, "o", "/"] +[42.28893404006978, "o", "o"] +[42.318934040069784, "o", "r"] +[42.348934040069786, "o", "i"] +[42.37893404006979, "o", "g"] +[42.40893404006979, "o", "i"] +[42.43893404006979, "o", "n"] +[42.46893404006979, "o", "u"] +[42.49893404006979, "o", "s"] +[42.52893404006979, "o", "e"] +[42.55893404006979, "o", "r"] +[42.588934040069795, "o", "'"] +[42.618934040069796, "o", " "] +[42.6489340400698, "o", "\\"] +[42.6789340400698, "o", "\r\n "] +[42.7089340400698, "o", "P"] +[42.7389340400698, "o", "U"] +[42.7689340400698, "o", "B"] +[42.7989340400698, "o", "L"] +[42.828934040069804, "o", "I"] +[42.858934040069805, "o", "C"] +[42.888934040069806, "o", "A"] +[42.91893404006981, "o", "T"] +[42.94893404006981, "o", "I"] +[42.97893404006981, "o", "O"] +[43.00893404006981, "o", "N"] +[43.03893404006981, "o", " "] +[43.06893404006981, "o", "p"] +[43.098934040069814, "o", "u"] +[43.128934040069815, "o", "b"] +[43.158934040069816, "o", "_"] +[43.18893404006982, "o", "o"] +[43.21893404006982, "o", "r"] +[43.24893404006982, "o", "d"] +[43.27893404006982, "o", "e"] +[43.30893404006982, "o", "r"] +[43.33893404006982, "o", "s"] +[43.368934040069824, "o", " "] +[43.398934040069825, "o", "\\"] +[43.42893404006983, "o", "\r\n "] +[43.45893404006983, "o", "W"] +[43.48893404006983, "o", "I"] +[43.51893404006983, "o", "T"] +[43.54893404006983, "o", "H"] +[43.57893404006983, "o", " "] +[43.60893404006983, "o", "("] +[43.638934040069834, "o", "c"] +[43.668934040069836, "o", "o"] +[43.69893404006984, "o", "p"] +[43.72893404006984, "o", "y"] +[43.75893404006984, "o", "_"] +[43.78893404006984, "o", "d"] +[43.81893404006984, "o", "a"] +[43.84893404006984, "o", "t"] +[43.87893404006984, "o", "a"] +[43.908934040069845, "o", " "] +[43.938934040069846, "o", "="] +[43.96893404006985, "o", " "] +[43.99893404006985, "o", "t"] +[44.02893404006985, "o", "r"] +[44.05893404006985, "o", "u"] +[44.08893404006985, "o", "e"] +[44.11893404006985, "o", ")"] +[44.148934040069854, "o", ";"] +[44.178934040069855, "o", "\""] +[44.208934040069856, "o", "\r\n"] +[44.23893404006986, "o", "\u001b[0m"] +[44.26893404006986, "o", "\r\n"] +[44.29893404006986, "o", "\u001b[1m"] +[44.32893404006986, "o", "\u001b[36m"] +[44.35893404006986, "o", "\u001b[91m"] +[44.38893404006986, "o", "$"] +[44.418934040069864, "o", " "] +[44.448934040069865, "o", "\u001b[0m"] +[49.478934040069866, "o", "\u001b[H"] +[49.50893404006987, "o", "\u001b[J"] +[49.53893404006987, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the data on the engine"] +[49.56893404006987, "o", "\r\n"] +[49.59893404006987, "o", "$"] +[49.62893404006987, "o", " "] +[49.65893404006987, "o", "s"] +[49.688934040069874, "o", "g"] +[49.718934040069875, "o", "r"] +[49.74893404006988, "o", " "] +[49.77893404006988, "o", "d"] +[49.80893404006988, "o", "i"] +[49.83893404006988, "o", "f"] +[49.86893404006988, "o", "f"] +[49.89893404006988, "o", " "] +[49.92893404006988, "o", "p"] +[49.958934040069884, "o", "r"] +[49.988934040069886, "o", "o"] +[50.01893404006989, "o", "d"] +[50.04893404006989, "o", "u"] +[50.07893404006989, "o", "c"] +[50.10893404006989, "o", "t"] +[50.13893404006989, "o", "i"] +[50.16893404006989, "o", "o"] +[50.198934040069894, "o", "n"] +[50.228934040069895, "o", "_"] +[50.258934040069896, "o", "d"] +[50.2889340400699, "o", "a"] +[50.3189340400699, "o", "t"] +[50.3489340400699, "o", "a"] +[50.3789340400699, "o", "\r\n"] +[50.4089340400699, "o", "$"] +[50.4389340400699, "o", " "] +[50.468934040069904, "o", "s"] +[50.498934040069905, "o", "g"] +[50.528934040069906, "o", "r"] +[50.55893404006991, "o", " "] +[50.58893404006991, "o", "s"] +[50.61893404006991, "o", "q"] +[50.64893404006991, "o", "l"] +[50.67893404006991, "o", " "] +[50.70893404006991, "o", "-"] +[50.738934040069914, "o", "s"] +[50.768934040069915, "o", " "] +[50.798934040069916, "o", "p"] +[50.82893404006992, "o", "r"] +[50.85893404006992, "o", "o"] +[50.88893404006992, "o", "d"] +[50.91893404006992, "o", "u"] +[50.94893404006992, "o", "c"] +[50.97893404006992, "o", "t"] +[51.008934040069924, "o", "i"] +[51.038934040069925, "o", "o"] +[51.06893404006993, "o", "n"] +[51.09893404006993, "o", "_"] +[51.12893404006993, "o", "d"] +[51.15893404006993, "o", "a"] +[51.18893404006993, "o", "t"] +[51.21893404006993, "o", "a"] +[51.24893404006993, "o", " "] +[51.278934040069934, "o", "\""] +[51.308934040069936, "o", "S"] +[51.33893404006994, "o", "E"] +[51.36893404006994, "o", "L"] +[51.39893404006994, "o", "E"] +[51.42893404006994, "o", "C"] +[51.45893404006994, "o", "T"] +[51.48893404006994, "o", " "] +[51.518934040069944, "o", "*"] +[51.548934040069945, "o", " "] +[51.578934040069946, "o", "F"] +[51.60893404006995, "o", "R"] +[51.63893404006995, "o", "O"] +[51.66893404006995, "o", "M"] +[51.69893404006995, "o", " "] +[51.72893404006995, "o", "c"] +[51.75893404006995, "o", "u"] +[51.788934040069954, "o", "s"] +[51.818934040069955, "o", "t"] +[51.848934040069956, "o", "o"] +[51.87893404006996, "o", "m"] +[51.90893404006996, "o", "e"] +[51.93893404006996, "o", "r"] +[51.96893404006996, "o", "s"] +[51.99893404006996, "o", "\""] +[52.02893404006996, "o", "\r\n"] +[52.058934040069964, "o", "\u001b[0m"] +[52.088934040069965, "o", "\r\n"] +[52.49870190620461, "o", "Between 000000000000 and the current working copy: \r\n"] +[52.49882445335427, "o", "customers: table added\r\norders: table added\r\n"] +[52.89539489746132, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[52.925394897461324, "o", "\u001b[1m"] +[52.955394897461325, "o", "\u001b[36m"] +[52.985394897461326, "o", "\u001b[91m"] +[53.01539489746133, "o", "$"] +[53.04539489746133, "o", " "] +[53.07539489746133, "o", "\u001b[0m"] +[58.10539489746133, "o", "\u001b[H"] +[58.13539489746133, "o", "\u001b[J"] +[58.16539489746133, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit the data as an initial image"] +[58.195394897461334, "o", "\r\n"] +[58.225394897461335, "o", "$"] +[58.255394897461336, "o", " "] +[58.28539489746134, "o", "s"] +[58.31539489746134, "o", "g"] +[58.34539489746134, "o", "r"] +[58.37539489746134, "o", " "] +[58.40539489746134, "o", "c"] +[58.43539489746134, "o", "o"] +[58.465394897461344, "o", "m"] +[58.495394897461345, "o", "m"] +[58.52539489746135, "o", "i"] +[58.55539489746135, "o", "t"] +[58.58539489746135, "o", " "] +[58.61539489746135, "o", "p"] +[58.64539489746135, "o", "r"] +[58.67539489746135, "o", "o"] +[58.70539489746135, "o", "d"] +[58.735394897461354, "o", "u"] +[58.765394897461356, "o", "c"] +[58.79539489746136, "o", "t"] +[58.82539489746136, "o", "i"] +[58.85539489746136, "o", "o"] +[58.88539489746136, "o", "n"] +[58.91539489746136, "o", "_"] +[58.94539489746136, "o", "d"] +[58.97539489746136, "o", "a"] +[59.005394897461365, "o", "t"] +[59.035394897461366, "o", "a"] +[59.06539489746137, "o", "\r\n"] +[59.09539489746137, "o", "$"] +[59.12539489746137, "o", " "] +[59.15539489746137, "o", "s"] +[59.18539489746137, "o", "g"] +[59.21539489746137, "o", "r"] +[59.245394897461374, "o", " "] +[59.275394897461375, "o", "t"] +[59.305394897461376, "o", "a"] +[59.33539489746138, "o", "g"] +[59.36539489746138, "o", " "] +[59.39539489746138, "o", "p"] +[59.42539489746138, "o", "r"] +[59.45539489746138, "o", "o"] +[59.48539489746138, "o", "d"] +[59.515394897461384, "o", "u"] +[59.545394897461385, "o", "c"] +[59.575394897461386, "o", "t"] +[59.60539489746139, "o", "i"] +[59.63539489746139, "o", "o"] +[59.66539489746139, "o", "n"] +[59.69539489746139, "o", "_"] +[59.72539489746139, "o", "d"] +[59.75539489746139, "o", "a"] +[59.785394897461394, "o", "t"] +[59.815394897461395, "o", "a"] +[59.8453948974614, "o", " "] +[59.8753948974614, "o", "i"] +[59.9053948974614, "o", "n"] +[59.9353948974614, "o", "i"] +[59.9653948974614, "o", "t"] +[59.9953948974614, "o", "i"] +[60.0253948974614, "o", "a"] +[60.055394897461404, "o", "l"] +[60.085394897461406, "o", "_"] +[60.11539489746141, "o", "s"] +[60.14539489746141, "o", "n"] +[60.17539489746141, "o", "a"] +[60.20539489746141, "o", "p"] +[60.23539489746141, "o", "s"] +[60.26539489746141, "o", "h"] +[60.295394897461414, "o", "o"] +[60.325394897461415, "o", "t"] +[60.355394897461416, "o", "\r\n"] +[60.38539489746142, "o", "$"] +[60.41539489746142, "o", " "] +[60.44539489746142, "o", "s"] +[60.47539489746142, "o", "g"] +[60.50539489746142, "o", "r"] +[60.53539489746142, "o", " "] +[60.565394897461424, "o", "s"] +[60.595394897461425, "o", "h"] +[60.625394897461426, "o", "o"] +[60.65539489746143, "o", "w"] +[60.68539489746143, "o", " "] +[60.71539489746143, "o", "p"] +[60.74539489746143, "o", "r"] +[60.77539489746143, "o", "o"] +[60.80539489746143, "o", "d"] +[60.835394897461434, "o", "u"] +[60.865394897461435, "o", "c"] +[60.895394897461436, "o", "t"] +[60.92539489746144, "o", "i"] +[60.95539489746144, "o", "o"] +[60.98539489746144, "o", "n"] +[61.01539489746144, "o", "_"] +[61.04539489746144, "o", "d"] +[61.07539489746144, "o", "a"] +[61.105394897461444, "o", "t"] +[61.135394897461445, "o", "a"] +[61.16539489746145, "o", ":"] +[61.19539489746145, "o", "i"] +[61.22539489746145, "o", "n"] +[61.25539489746145, "o", "i"] +[61.28539489746145, "o", "t"] +[61.31539489746145, "o", "i"] +[61.34539489746145, "o", "a"] +[61.375394897461454, "o", "l"] +[61.405394897461456, "o", "_"] +[61.43539489746146, "o", "s"] +[61.46539489746146, "o", "n"] +[61.49539489746146, "o", "a"] +[61.52539489746146, "o", "p"] +[61.55539489746146, "o", "s"] +[61.58539489746146, "o", "h"] +[61.615394897461464, "o", "o"] +[61.645394897461465, "o", "t"] +[61.675394897461466, "o", "\r\n"] +[61.70539489746147, "o", "\u001b[0m"] +[61.73539489746147, "o", "\r\n"] +[62.118242683411175, "o", "Committing production_data...\r\n"] +[62.146191539764935, "o", "Processing table customers\r\n"] +[62.23916477203422, "o", "Processing table orders\r\n"] +[62.272868337631756, "o", "Committed production_data as 08886b2bd8e5.\r\n"] +[62.666088762283856, "o", "Tagged production_data:08886b2bd8e52a96b2162bf3752232e717c8a08090bc134512a5e5da320624cc with initial_snapshot.\r\n"] +[63.04901761055046, "o", "Image production_data:08886b2bd8e52a96b2162bf3752232e717c8a08090bc134512a5e5da320624cc\r\n"] +[63.04906171798759, "o", "\r\nCreated at 2021-05-05T11:31:19.585110\r\n"] +[63.050916614533, "o", "Size: 1.11 KiB\r\n"] +[63.05095356941276, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[63.05205792427116, "o", " customers\r\n"] +[63.052072706223065, "o", " orders\r\n"] +[63.082072706223066, "o", "\u001b[1m"] +[63.11207270622307, "o", "\u001b[36m"] +[63.14207270622307, "o", "\u001b[91m"] +[63.17207270622307, "o", "$"] +[63.20207270622307, "o", " "] +[63.23207270622307, "o", "\u001b[0m"] +[68.26207270622308, "o", "\u001b[H"] +[68.29207270622308, "o", "\u001b[J"] +[68.32207270622308, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make a change on the origin database"] +[68.35207270622308, "o", "\r\n"] +[68.38207270622308, "o", "$"] +[68.41207270622309, "o", " "] +[68.44207270622309, "o", "s"] +[68.47207270622309, "o", "g"] +[68.50207270622309, "o", "r"] +[68.53207270622309, "o", " "] +[68.56207270622309, "o", "s"] +[68.59207270622309, "o", "q"] +[68.6220727062231, "o", "l"] +[68.6520727062231, "o", " "] +[68.6820727062231, "o", "-"] +[68.7120727062231, "o", "r"] +[68.7420727062231, "o", " "] +[68.7720727062231, "o", "o"] +[68.8020727062231, "o", "r"] +[68.8320727062231, "o", "i"] +[68.8620727062231, "o", "g"] +[68.8920727062231, "o", "i"] +[68.9220727062231, "o", "n"] +[68.9520727062231, "o", " "] +[68.98207270622311, "o", "-"] +[69.01207270622311, "o", "s"] +[69.04207270622311, "o", " "] +[69.07207270622311, "o", "p"] +[69.10207270622311, "o", "r"] +[69.13207270622311, "o", "o"] +[69.16207270622311, "o", "d"] +[69.19207270622312, "o", "u"] +[69.22207270622312, "o", "c"] +[69.25207270622312, "o", "t"] +[69.28207270622312, "o", "i"] +[69.31207270622312, "o", "o"] +[69.34207270622312, "o", "n"] +[69.37207270622312, "o", "_"] +[69.40207270622312, "o", "d"] +[69.43207270622312, "o", "a"] +[69.46207270622313, "o", "t"] +[69.49207270622313, "o", "a"] +[69.52207270622313, "o", " "] +[69.55207270622313, "o", "\""] +[69.58207270622313, "o", "U"] +[69.61207270622313, "o", "P"] +[69.64207270622313, "o", "D"] +[69.67207270622313, "o", "A"] +[69.70207270622313, "o", "T"] +[69.73207270622314, "o", "E"] +[69.76207270622314, "o", " "] +[69.79207270622314, "o", "o"] +[69.82207270622314, "o", "r"] +[69.85207270622314, "o", "d"] +[69.88207270622314, "o", "e"] +[69.91207270622314, "o", "r"] +[69.94207270622314, "o", "s"] +[69.97207270622314, "o", " "] +[70.00207270622315, "o", "\\"] +[70.03207270622315, "o", "\r\n "] +[70.06207270622315, "o", "S"] +[70.09207270622315, "o", "E"] +[70.12207270622315, "o", "T"] +[70.15207270622315, "o", " "] +[70.18207270622315, "o", "q"] +[70.21207270622315, "o", "u"] +[70.24207270622315, "o", "a"] +[70.27207270622316, "o", "n"] +[70.30207270622316, "o", "t"] +[70.33207270622316, "o", "i"] +[70.36207270622316, "o", "t"] +[70.39207270622316, "o", "y"] +[70.42207270622316, "o", " "] +[70.45207270622316, "o", "="] +[70.48207270622316, "o", " "] +[70.51207270622317, "o", "q"] +[70.54207270622317, "o", "u"] +[70.57207270622317, "o", "a"] +[70.60207270622317, "o", "n"] +[70.63207270622317, "o", "t"] +[70.66207270622317, "o", "i"] +[70.69207270622317, "o", "t"] +[70.72207270622317, "o", "y"] +[70.75207270622317, "o", " "] +[70.78207270622318, "o", "+"] +[70.81207270622318, "o", " "] +[70.84207270622318, "o", "5"] +[70.87207270622318, "o", " "] +[70.90207270622318, "o", "W"] +[70.93207270622318, "o", "H"] +[70.96207270622318, "o", "E"] +[70.99207270622318, "o", "R"] +[71.02207270622318, "o", "E"] +[71.05207270622319, "o", " "] +[71.08207270622319, "o", "i"] +[71.11207270622319, "o", "d"] +[71.14207270622319, "o", " "] +[71.17207270622319, "o", "="] +[71.20207270622319, "o", " "] +[71.23207270622319, "o", "2"] +[71.2620727062232, "o", ";"] +[71.2920727062232, "o", " "] +[71.3220727062232, "o", "\\"] +[71.3520727062232, "o", "\r\n "] +[71.3820727062232, "o", "D"] +[71.4120727062232, "o", "E"] +[71.4420727062232, "o", "L"] +[71.4720727062232, "o", "E"] +[71.5020727062232, "o", "T"] +[71.5320727062232, "o", "E"] +[71.5620727062232, "o", " "] +[71.5920727062232, "o", "F"] +[71.62207270622321, "o", "R"] +[71.65207270622321, "o", "O"] +[71.68207270622321, "o", "M"] +[71.71207270622321, "o", " "] +[71.74207270622321, "o", "o"] +[71.77207270622321, "o", "r"] +[71.80207270622321, "o", "d"] +[71.83207270622322, "o", "e"] +[71.86207270622322, "o", "r"] +[71.89207270622322, "o", "s"] +[71.92207270622322, "o", " "] +[71.95207270622322, "o", "W"] +[71.98207270622322, "o", "H"] +[72.01207270622322, "o", "E"] +[72.04207270622322, "o", "R"] +[72.07207270622322, "o", "E"] +[72.10207270622323, "o", " "] +[72.13207270622323, "o", "i"] +[72.16207270622323, "o", "d"] +[72.19207270622323, "o", " "] +[72.22207270622323, "o", "="] +[72.25207270622323, "o", " "] +[72.28207270622323, "o", "5"] +[72.31207270622323, "o", ";"] +[72.34207270622323, "o", " "] +[72.37207270622324, "o", "\\"] +[72.40207270622324, "o", "\r\n "] +[72.43207270622324, "o", "I"] +[72.46207270622324, "o", "N"] +[72.49207270622324, "o", "S"] +[72.52207270622324, "o", "E"] +[72.55207270622324, "o", "R"] +[72.58207270622324, "o", "T"] +[72.61207270622324, "o", " "] +[72.64207270622325, "o", "I"] +[72.67207270622325, "o", "N"] +[72.70207270622325, "o", "T"] +[72.73207270622325, "o", "O"] +[72.76207270622325, "o", " "] +[72.79207270622325, "o", "c"] +[72.82207270622325, "o", "u"] +[72.85207270622325, "o", "s"] +[72.88207270622325, "o", "t"] +[72.91207270622326, "o", "o"] +[72.94207270622326, "o", "m"] +[72.97207270622326, "o", "e"] +[73.00207270622326, "o", "r"] +[73.03207270622326, "o", "s"] +[73.06207270622326, "o", " "] +[73.09207270622326, "o", "("] +[73.12207270622326, "o", "n"] +[73.15207270622327, "o", "a"] +[73.18207270622327, "o", "m"] +[73.21207270622327, "o", "e"] +[73.24207270622327, "o", ","] +[73.27207270622327, "o", " "] +[73.30207270622327, "o", "r"] +[73.33207270622327, "o", "e"] +[73.36207270622327, "o", "g"] +[73.39207270622327, "o", "i"] +[73.42207270622328, "o", "s"] +[73.45207270622328, "o", "t"] +[73.48207270622328, "o", "r"] +[73.51207270622328, "o", "a"] +[73.54207270622328, "o", "t"] +[73.57207270622328, "o", "i"] +[73.60207270622328, "o", "o"] +[73.63207270622328, "o", "n"] +[73.66207270622328, "o", "_"] +[73.69207270622329, "o", "t"] +[73.72207270622329, "o", "i"] +[73.75207270622329, "o", "m"] +[73.78207270622329, "o", "e"] +[73.81207270622329, "o", ")"] +[73.84207270622329, "o", " "] +[73.87207270622329, "o", "V"] +[73.9020727062233, "o", "A"] +[73.9320727062233, "o", "L"] +[73.9620727062233, "o", "U"] +[73.9920727062233, "o", "E"] +[74.0220727062233, "o", "S"] +[74.0520727062233, "o", " "] +[74.0820727062233, "o", "\\"] +[74.1120727062233, "o", "\r\n "] +[74.1420727062233, "o", "("] +[74.1720727062233, "o", "'"] +[74.2020727062233, "o", "J"] +[74.2320727062233, "o", "a"] +[74.26207270622331, "o", "c"] +[74.29207270622331, "o", "k"] +[74.32207270622331, "o", " "] +[74.35207270622331, "o", "S"] +[74.38207270622331, "o", "a"] +[74.41207270622331, "o", "m"] +[74.44207270622331, "o", "p"] +[74.47207270622332, "o", "l"] +[74.50207270622332, "o", "e"] +[74.53207270622332, "o", "'"] +[74.56207270622332, "o", ","] +[74.59207270622332, "o", " "] +[74.62207270622332, "o", "'"] +[74.65207270622332, "o", "2"] +[74.68207270622332, "o", "0"] +[74.71207270622332, "o", "2"] +[74.74207270622333, "o", "0"] +[74.77207270622333, "o", "-"] +[74.80207270622333, "o", "0"] +[74.83207270622333, "o", "4"] +[74.86207270622333, "o", "-"] +[74.89207270622333, "o", "2"] +[74.92207270622333, "o", "0"] +[74.95207270622333, "o", " "] +[74.98207270622333, "o", "1"] +[75.01207270622334, "o", "4"] +[75.04207270622334, "o", ":"] +[75.07207270622334, "o", "0"] +[75.10207270622334, "o", "3"] +[75.13207270622334, "o", ":"] +[75.16207270622334, "o", "4"] +[75.19207270622334, "o", "8"] +[75.22207270622334, "o", "'"] +[75.25207270622334, "o", ")"] +[75.28207270622335, "o", ";"] +[75.31207270622335, "o", " "] +[75.34207270622335, "o", "\\"] +[75.37207270622335, "o", "\r\n "] +[75.40207270622335, "o", "I"] +[75.43207270622335, "o", "N"] +[75.46207270622335, "o", "S"] +[75.49207270622335, "o", "E"] +[75.52207270622335, "o", "R"] +[75.55207270622336, "o", "T"] +[75.58207270622336, "o", " "] +[75.61207270622336, "o", "I"] +[75.64207270622336, "o", "N"] +[75.67207270622336, "o", "T"] +[75.70207270622336, "o", "O"] +[75.73207270622336, "o", " "] +[75.76207270622336, "o", "o"] +[75.79207270622337, "o", "r"] +[75.82207270622337, "o", "d"] +[75.85207270622337, "o", "e"] +[75.88207270622337, "o", "r"] +[75.91207270622337, "o", "s"] +[75.94207270622337, "o", " "] +[75.97207270622337, "o", "("] +[76.00207270622337, "o", "c"] +[76.03207270622337, "o", "u"] +[76.06207270622338, "o", "s"] +[76.09207270622338, "o", "t"] +[76.12207270622338, "o", "o"] +[76.15207270622338, "o", "m"] +[76.18207270622338, "o", "e"] +[76.21207270622338, "o", "r"] +[76.24207270622338, "o", "_"] +[76.27207270622338, "o", "i"] +[76.30207270622338, "o", "d"] +[76.33207270622339, "o", ","] +[76.36207270622339, "o", " "] +[76.39207270622339, "o", "q"] +[76.42207270622339, "o", "u"] +[76.45207270622339, "o", "a"] +[76.48207270622339, "o", "n"] +[76.51207270622339, "o", "t"] +[76.5420727062234, "o", "i"] +[76.5720727062234, "o", "t"] +[76.6020727062234, "o", "y"] +[76.6320727062234, "o", ","] +[76.6620727062234, "o", " "] +[76.6920727062234, "o", "i"] +[76.7220727062234, "o", "t"] +[76.7520727062234, "o", "e"] +[76.7820727062234, "o", "m"] +[76.8120727062234, "o", "_"] +[76.8420727062234, "o", "n"] +[76.8720727062234, "o", "a"] +[76.90207270622341, "o", "m"] +[76.93207270622341, "o", "e"] +[76.96207270622341, "o", ","] +[76.99207270622341, "o", " "] +[77.02207270622341, "o", "p"] +[77.05207270622341, "o", "l"] +[77.08207270622341, "o", "a"] +[77.11207270622342, "o", "c"] +[77.14207270622342, "o", "e"] +[77.17207270622342, "o", "d"] +[77.20207270622342, "o", "_"] +[77.23207270622342, "o", "t"] +[77.26207270622342, "o", "i"] +[77.29207270622342, "o", "m"] +[77.32207270622342, "o", "e"] +[77.35207270622342, "o", ")"] +[77.38207270622343, "o", " "] +[77.41207270622343, "o", "V"] +[77.44207270622343, "o", "A"] +[77.47207270622343, "o", "L"] +[77.50207270622343, "o", "U"] +[77.53207270622343, "o", "E"] +[77.56207270622343, "o", "S"] +[77.59207270622343, "o", " "] +[77.62207270622343, "o", "\\"] +[77.65207270622344, "o", "\r\n "] +[77.68207270622344, "o", "("] +[77.71207270622344, "o", "4"] +[77.74207270622344, "o", ","] +[77.77207270622344, "o", " "] +[77.80207270622344, "o", "5"] +[77.83207270622344, "o", ","] +[77.86207270622344, "o", " "] +[77.89207270622344, "o", "'"] +[77.92207270622345, "o", "T"] +[77.95207270622345, "o", "o"] +[77.98207270622345, "o", "i"] +[78.01207270622345, "o", "l"] +[78.04207270622345, "o", "e"] +[78.07207270622345, "o", "t"] +[78.10207270622345, "o", " "] +[78.13207270622345, "o", "R"] +[78.16207270622346, "o", "o"] +[78.19207270622346, "o", "l"] +[78.22207270622346, "o", "l"] +[78.25207270622346, "o", "'"] +[78.28207270622346, "o", ","] +[78.31207270622346, "o", " "] +[78.34207270622346, "o", "'"] +[78.37207270622346, "o", "2"] +[78.40207270622346, "o", "0"] +[78.43207270622347, "o", "2"] +[78.46207270622347, "o", "0"] +[78.49207270622347, "o", "-"] +[78.52207270622347, "o", "0"] +[78.55207270622347, "o", "4"] +[78.58207270622347, "o", "-"] +[78.61207270622347, "o", "2"] +[78.64207270622347, "o", "0"] +[78.67207270622347, "o", " "] +[78.70207270622348, "o", "1"] +[78.73207270622348, "o", "4"] +[78.76207270622348, "o", ":"] +[78.79207270622348, "o", "0"] +[78.82207270622348, "o", "5"] +[78.85207270622348, "o", ":"] +[78.88207270622348, "o", "1"] +[78.91207270622348, "o", "7"] +[78.94207270622348, "o", "'"] +[78.97207270622349, "o", ")"] +[79.00207270622349, "o", ";"] +[79.03207270622349, "o", "\""] +[79.06207270622349, "o", "\r\n"] +[79.09207270622349, "o", "\u001b[0m"] +[79.12207270622349, "o", "\r\n"] +[79.15207270622349, "o", "\u001b[1m"] +[79.1820727062235, "o", "\u001b[36m"] +[79.2120727062235, "o", "\u001b[91m"] +[79.2420727062235, "o", "$"] +[79.2720727062235, "o", " "] +[79.3020727062235, "o", "\u001b[0m"] +[84.3320727062235, "o", "\u001b[H"] +[84.3620727062235, "o", "\u001b[J"] +[84.3920727062235, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The change propagates to the subscriber and gets"] +[84.4220727062235, "o", "\r\n"] +[84.4520727062235, "o", "$ # captured by Splitgraph's change tracking\r\n"] +[84.4820727062235, "o", "$"] +[84.5120727062235, "o", " "] +[84.54207270622351, "o", "s"] +[84.57207270622351, "o", "g"] +[84.60207270622351, "o", "r"] +[84.63207270622351, "o", " "] +[84.66207270622351, "o", "d"] +[84.69207270622351, "o", "i"] +[84.72207270622351, "o", "f"] +[84.75207270622352, "o", "f"] +[84.78207270622352, "o", " "] +[84.81207270622352, "o", "-"] +[84.84207270622352, "o", "v"] +[84.87207270622352, "o", " "] +[84.90207270622352, "o", "p"] +[84.93207270622352, "o", "r"] +[84.96207270622352, "o", "o"] +[84.99207270622352, "o", "d"] +[85.02207270622353, "o", "u"] +[85.05207270622353, "o", "c"] +[85.08207270622353, "o", "t"] +[85.11207270622353, "o", "i"] +[85.14207270622353, "o", "o"] +[85.17207270622353, "o", "n"] +[85.20207270622353, "o", "_"] +[85.23207270622353, "o", "d"] +[85.26207270622353, "o", "a"] +[85.29207270622354, "o", "t"] +[85.32207270622354, "o", "a"] +[85.35207270622354, "o", "\r\n"] +[85.38207270622354, "o", "\u001b[0m"] +[85.41207270622354, "o", "\r\n"] +[86.00801210403543, "o", "Between 08886b2bd8e5 and the current working copy: \r\n"] +[86.00822620391946, "o", "customers: added 1 row.\r\n+ (4, 'Jack Sample', datetime.datetime(2020, 4, 20, 14, 3, 48))\r\n"] +[86.00848917961221, "o", "orders: added 2 rows, removed 2 rows.\r\n- (2, 1, 20, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n- (5, 1, 50, 'Surgical Mask', datetime.datetime(2020, 4, 2, 11, 29, 42))\r\n+ (2, 1, 25, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n+ (6, 4, 5, 'Toilet Roll', datetime.datetime(2020, 4, 20, 14, 5, 17))\r\n"] +[86.03848917961221, "o", "\u001b[1m"] +[86.06848917961221, "o", "\u001b[36m"] +[86.09848917961222, "o", "\u001b[91m"] +[86.12848917961222, "o", "$"] +[86.15848917961222, "o", " "] +[86.18848917961222, "o", "\u001b[0m"] +[91.21848917961222, "o", "\u001b[H"] +[91.24848917961222, "o", "\u001b[J"] +[91.27848917961222, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Committing creates a new image, snapshotting the state."] +[91.30848917961222, "o", "\r\n"] +[91.33848917961222, "o", "$"] +[91.36848917961223, "o", " "] +[91.39848917961223, "o", "s"] +[91.42848917961223, "o", "g"] +[91.45848917961223, "o", "r"] +[91.48848917961223, "o", " "] +[91.51848917961223, "o", "c"] +[91.54848917961223, "o", "o"] +[91.57848917961223, "o", "m"] +[91.60848917961223, "o", "m"] +[91.63848917961224, "o", "i"] +[91.66848917961224, "o", "t"] +[91.69848917961224, "o", " "] +[91.72848917961224, "o", "p"] +[91.75848917961224, "o", "r"] +[91.78848917961224, "o", "o"] +[91.81848917961224, "o", "d"] +[91.84848917961224, "o", "u"] +[91.87848917961225, "o", "c"] +[91.90848917961225, "o", "t"] +[91.93848917961225, "o", "i"] +[91.96848917961225, "o", "o"] +[91.99848917961225, "o", "n"] +[92.02848917961225, "o", "_"] +[92.05848917961225, "o", "d"] +[92.08848917961225, "o", "a"] +[92.11848917961225, "o", "t"] +[92.14848917961226, "o", "a"] +[92.17848917961226, "o", "\r\n"] +[92.20848917961226, "o", "$"] +[92.23848917961226, "o", " "] +[92.26848917961226, "o", "s"] +[92.29848917961226, "o", "g"] +[92.32848917961226, "o", "r"] +[92.35848917961226, "o", " "] +[92.38848917961226, "o", "t"] +[92.41848917961227, "o", "a"] +[92.44848917961227, "o", "g"] +[92.47848917961227, "o", " "] +[92.50848917961227, "o", "p"] +[92.53848917961227, "o", "r"] +[92.56848917961227, "o", "o"] +[92.59848917961227, "o", "d"] +[92.62848917961227, "o", "u"] +[92.65848917961227, "o", "c"] +[92.68848917961228, "o", "t"] +[92.71848917961228, "o", "i"] +[92.74848917961228, "o", "o"] +[92.77848917961228, "o", "n"] +[92.80848917961228, "o", "_"] +[92.83848917961228, "o", "d"] +[92.86848917961228, "o", "a"] +[92.89848917961228, "o", "t"] +[92.92848917961228, "o", "a"] +[92.95848917961229, "o", " "] +[92.98848917961229, "o", "c"] +[93.01848917961229, "o", "u"] +[93.04848917961229, "o", "r"] +[93.07848917961229, "o", "r"] +[93.10848917961229, "o", "e"] +[93.1384891796123, "o", "n"] +[93.1684891796123, "o", "t"] +[93.1984891796123, "o", "_"] +[93.2284891796123, "o", "s"] +[93.2584891796123, "o", "n"] +[93.2884891796123, "o", "a"] +[93.3184891796123, "o", "p"] +[93.3484891796123, "o", "s"] +[93.3784891796123, "o", "h"] +[93.4084891796123, "o", "o"] +[93.4384891796123, "o", "t"] +[93.4684891796123, "o", "\r\n"] +[93.4984891796123, "o", "$"] +[93.52848917961231, "o", " "] +[93.55848917961231, "o", "s"] +[93.58848917961231, "o", "g"] +[93.61848917961231, "o", "r"] +[93.64848917961231, "o", " "] +[93.67848917961231, "o", "s"] +[93.70848917961231, "o", "h"] +[93.73848917961232, "o", "o"] +[93.76848917961232, "o", "w"] +[93.79848917961232, "o", " "] +[93.82848917961232, "o", "p"] +[93.85848917961232, "o", "r"] +[93.88848917961232, "o", "o"] +[93.91848917961232, "o", "d"] +[93.94848917961232, "o", "u"] +[93.97848917961232, "o", "c"] +[94.00848917961233, "o", "t"] +[94.03848917961233, "o", "i"] +[94.06848917961233, "o", "o"] +[94.09848917961233, "o", "n"] +[94.12848917961233, "o", "_"] +[94.15848917961233, "o", "d"] +[94.18848917961233, "o", "a"] +[94.21848917961233, "o", "t"] +[94.24848917961233, "o", "a"] +[94.27848917961234, "o", ":"] +[94.30848917961234, "o", "c"] +[94.33848917961234, "o", "u"] +[94.36848917961234, "o", "r"] +[94.39848917961234, "o", "r"] +[94.42848917961234, "o", "e"] +[94.45848917961234, "o", "n"] +[94.48848917961234, "o", "t"] +[94.51848917961235, "o", "_"] +[94.54848917961235, "o", "s"] +[94.57848917961235, "o", "n"] +[94.60848917961235, "o", "a"] +[94.63848917961235, "o", "p"] +[94.66848917961235, "o", "s"] +[94.69848917961235, "o", "h"] +[94.72848917961235, "o", "o"] +[94.75848917961235, "o", "t"] +[94.78848917961236, "o", "\r\n"] +[94.81848917961236, "o", "\u001b[0m"] +[94.84848917961236, "o", "\r\n"] +[95.23371089935418, "o", "Committing production_data...\r\n"] +[95.26947964668389, "o", "Committed production_data as ba5ec250c437.\r\n"] +[95.65909017562981, "o", "Tagged production_data:ba5ec250c43756436d5494137375e580904774fe41736d34278a86ca5fbf4064 with current_snapshot.\r\n"] +[96.08356775283929, "o", "Image production_data:ba5ec250c43756436d5494137375e580904774fe41736d34278a86ca5fbf4064\r\n\r\n"] +[96.08358897209283, "o", "Created at 2021-05-05T11:31:22.121743\r\n"] +[96.08493985176202, "o", "Size: 1.11 KiB\r\n"] +[96.08495654106255, "o", "Parent: 08886b2bd8e52a96b2162bf3752232e717c8a08090bc134512a5e5da320624cc\r\n\r\nTables:\r\n"] +[96.08564771652337, "o", " customers\r\n"] +[96.08567966461297, "o", " orders\r\n"] +[96.11567966461297, "o", "\u001b[1m"] +[96.14567966461297, "o", "\u001b[36m"] +[96.17567966461297, "o", "\u001b[91m"] +[96.20567966461297, "o", "$"] +[96.23567966461297, "o", " "] +[96.26567966461297, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.14/postgrest.cast b/content/casts/versioned/archive/v0.2.14/postgrest.cast new file mode 100644 index 00000000..d5d0fba3 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.14/postgrest.cast @@ -0,0 +1,1153 @@ +{"version": 2, "width": 100, "height": 16, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1620214285, "metadata": {"tss": [{"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 0.06}, {"h": "Also create another image so we can switch between them.", "ts": 13.344760799407965}, {"h": "Check out the original version of the dataset and look at the API spec for it.", "ts": 26.269168930053823}, {"h": "Get all rows in the table", "ts": 38.270952548981015}, {"h": "Run a query selecting one row", "ts": 44.94787257194555}, {"h": "Run the query against the new version of the dataset.", "ts": 53.62341913223317}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "s"] +[0.24, "o", "g"] +[0.27, "o", "r"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "i"] +[0.3600000000000001, "o", "n"] +[0.3900000000000001, "o", "i"] +[0.42000000000000015, "o", "t"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "d"] +[0.5100000000000002, "o", "e"] +[0.5400000000000003, "o", "m"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "/"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "\r\n"] +[0.8700000000000006, "o", "$"] +[0.9000000000000006, "o", " "] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "g"] +[0.9900000000000007, "o", "r"] +[1.0200000000000007, "o", " "] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "s"] +[1.1100000000000008, "o", "v"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "i"] +[1.2000000000000008, "o", "m"] +[1.2300000000000009, "o", "p"] +[1.260000000000001, "o", "o"] +[1.290000000000001, "o", "r"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", " "] +[1.380000000000001, "o", "-"] +[1.410000000000001, "o", "f"] +[1.440000000000001, "o", " "] +[1.470000000000001, "o", "."] +[1.500000000000001, "o", "."] +[1.5300000000000011, "o", "/"] +[1.5600000000000012, "o", "i"] +[1.5900000000000012, "o", "m"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "o"] +[1.6800000000000013, "o", "r"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "-"] +[1.7700000000000014, "o", "f"] +[1.8000000000000014, "o", "r"] +[1.8300000000000014, "o", "o"] +[1.8600000000000014, "o", "m"] +[1.8900000000000015, "o", "-"] +[1.9200000000000015, "o", "c"] +[1.9500000000000015, "o", "s"] +[1.9800000000000015, "o", "v"] +[2.0100000000000016, "o", "/"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "d"] +[2.100000000000001, "o", "u"] +[2.130000000000001, "o", "-"] +[2.1600000000000006, "o", "w"] +[2.1900000000000004, "o", "e"] +[2.22, "o", "a"] +[2.25, "o", "t"] +[2.28, "o", "h"] +[2.3099999999999996, "o", "e"] +[2.3399999999999994, "o", "r"] +[2.369999999999999, "o", "-"] +[2.399999999999999, "o", "h"] +[2.429999999999999, "o", "i"] +[2.4599999999999986, "o", "s"] +[2.4899999999999984, "o", "t"] +[2.5199999999999982, "o", "o"] +[2.549999999999998, "o", "r"] +[2.579999999999998, "o", "y"] +[2.6099999999999977, "o", "."] +[2.6399999999999975, "o", "c"] +[2.6699999999999973, "o", "s"] +[2.699999999999997, "o", "v"] +[2.729999999999997, "o", " "] +[2.7599999999999967, "o", "\\"] +[2.7899999999999965, "o", "\r\n "] +[2.8199999999999963, "o", "-"] +[2.849999999999996, "o", "k"] +[2.879999999999996, "o", " "] +[2.9099999999999957, "o", "d"] +[2.9399999999999955, "o", "a"] +[2.9699999999999953, "o", "t"] +[2.999999999999995, "o", "e"] +[3.029999999999995, "o", " "] +[3.0599999999999947, "o", "\\"] +[3.0899999999999945, "o", "\r\n "] +[3.1199999999999943, "o", "-"] +[3.149999999999994, "o", "t"] +[3.179999999999994, "o", " "] +[3.2099999999999937, "o", "d"] +[3.2399999999999936, "o", "a"] +[3.2699999999999934, "o", "t"] +[3.299999999999993, "o", "e"] +[3.329999999999993, "o", " "] +[3.3599999999999928, "o", "t"] +[3.3899999999999926, "o", "i"] +[3.4199999999999924, "o", "m"] +[3.449999999999992, "o", "e"] +[3.479999999999992, "o", "s"] +[3.509999999999992, "o", "t"] +[3.5399999999999916, "o", "a"] +[3.5699999999999914, "o", "m"] +[3.599999999999991, "o", "p"] +[3.629999999999991, "o", " "] +[3.659999999999991, "o", "\\"] +[3.6899999999999906, "o", "\r\n "] +[3.7199999999999904, "o", "-"] +[3.7499999999999902, "o", "-"] +[3.77999999999999, "o", "s"] +[3.80999999999999, "o", "e"] +[3.8399999999999896, "o", "p"] +[3.8699999999999894, "o", "a"] +[3.8999999999999893, "o", "r"] +[3.929999999999989, "o", "a"] +[3.959999999999989, "o", "t"] +[3.9899999999999887, "o", "o"] +[4.019999999999989, "o", "r"] +[4.049999999999989, "o", " "] +[4.079999999999989, "o", "\""] +[4.10999999999999, "o", ";"] +[4.13999999999999, "o", "\""] +[4.16999999999999, "o", " "] +[4.19999999999999, "o", "\\"] +[4.229999999999991, "o", "\r\n "] +[4.259999999999991, "o", "d"] +[4.289999999999991, "o", "e"] +[4.319999999999991, "o", "m"] +[4.349999999999992, "o", "o"] +[4.379999999999992, "o", "/"] +[4.409999999999992, "o", "w"] +[4.439999999999992, "o", "e"] +[4.469999999999993, "o", "a"] +[4.499999999999993, "o", "t"] +[4.529999999999993, "o", "h"] +[4.559999999999993, "o", "e"] +[4.589999999999994, "o", "r"] +[4.619999999999994, "o", " "] +[4.649999999999994, "o", "r"] +[4.679999999999994, "o", "d"] +[4.709999999999995, "o", "u"] +[4.739999999999995, "o", "\r\n"] +[4.769999999999995, "o", "$"] +[4.799999999999995, "o", " "] +[4.829999999999996, "o", "s"] +[4.859999999999996, "o", "g"] +[4.889999999999996, "o", "r"] +[4.919999999999996, "o", " "] +[4.949999999999997, "o", "c"] +[4.979999999999997, "o", "o"] +[5.009999999999997, "o", "m"] +[5.039999999999997, "o", "m"] +[5.069999999999998, "o", "i"] +[5.099999999999998, "o", "t"] +[5.129999999999998, "o", " "] +[5.159999999999998, "o", "d"] +[5.189999999999999, "o", "e"] +[5.219999999999999, "o", "m"] +[5.249999999999999, "o", "o"] +[5.279999999999999, "o", "/"] +[5.31, "o", "w"] +[5.34, "o", "e"] +[5.37, "o", "a"] +[5.4, "o", "t"] +[5.430000000000001, "o", "h"] +[5.460000000000001, "o", "e"] +[5.490000000000001, "o", "r"] +[5.520000000000001, "o", "\r\n"] +[5.550000000000002, "o", "$"] +[5.580000000000002, "o", " "] +[5.610000000000002, "o", "s"] +[5.640000000000002, "o", "g"] +[5.670000000000003, "o", "r"] +[5.700000000000003, "o", " "] +[5.730000000000003, "o", "t"] +[5.760000000000003, "o", "a"] +[5.790000000000004, "o", "g"] +[5.820000000000004, "o", " "] +[5.850000000000004, "o", "d"] +[5.880000000000004, "o", "e"] +[5.910000000000005, "o", "m"] +[5.940000000000005, "o", "o"] +[5.970000000000005, "o", "/"] +[6.000000000000005, "o", "w"] +[6.030000000000006, "o", "e"] +[6.060000000000006, "o", "a"] +[6.090000000000006, "o", "t"] +[6.120000000000006, "o", "h"] +[6.150000000000007, "o", "e"] +[6.180000000000007, "o", "r"] +[6.210000000000007, "o", " "] +[6.240000000000007, "o", "i"] +[6.270000000000008, "o", "n"] +[6.300000000000008, "o", "i"] +[6.330000000000008, "o", "t"] +[6.360000000000008, "o", "i"] +[6.390000000000009, "o", "a"] +[6.420000000000009, "o", "l"] +[6.450000000000009, "o", "_"] +[6.480000000000009, "o", "d"] +[6.51000000000001, "o", "a"] +[6.54000000000001, "o", "t"] +[6.57000000000001, "o", "a"] +[6.60000000000001, "o", "\r\n"] +[6.6300000000000106, "o", "\u001b[0m"] +[6.660000000000011, "o", "\r\n"] +[7.07503930091859, "o", "Initialized empty repository demo/weather\r\n"] +[7.4699639415741075, "o", "Committing demo/weather...\r\n"] +[7.499003324508678, "o", "Processing table rdu\r\n"] +[7.716506395339977, "o", "Committed demo/weather as 41b15a2f1060.\r\n"] +[8.10476079940797, "o", "Tagged demo/weather:41b15a2f1060e7d543b5512cc90406aa9c712a27624b59a2d1951d1dd5594f69 with initial_data.\r\n"] +[8.13476079940797, "o", "\u001b[1m"] +[8.164760799407969, "o", "\u001b[36m"] +[8.194760799407968, "o", "\u001b[91m"] +[8.224760799407967, "o", "$"] +[8.254760799407967, "o", " "] +[8.284760799407966, "o", "\u001b[0m"] +[13.314760799407965, "o", "\u001b[H"] +[13.344760799407965, "o", "\u001b[J"] +[13.374760799407964, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Also create another image so we can switch between them."] +[13.404760799407963, "o", "\r\n"] +[13.434760799407963, "o", "$"] +[13.464760799407962, "o", " "] +[13.494760799407961, "o", "s"] +[13.52476079940796, "o", "g"] +[13.55476079940796, "o", "r"] +[13.58476079940796, "o", " "] +[13.614760799407959, "o", "s"] +[13.644760799407958, "o", "q"] +[13.674760799407958, "o", "l"] +[13.704760799407957, "o", " "] +[13.734760799407956, "o", "-"] +[13.764760799407956, "o", "s"] +[13.794760799407955, "o", " "] +[13.824760799407954, "o", "d"] +[13.854760799407954, "o", "e"] +[13.884760799407953, "o", "m"] +[13.914760799407953, "o", "o"] +[13.944760799407952, "o", "/"] +[13.974760799407951, "o", "w"] +[14.00476079940795, "o", "e"] +[14.03476079940795, "o", "a"] +[14.06476079940795, "o", "t"] +[14.094760799407949, "o", "h"] +[14.124760799407948, "o", "e"] +[14.154760799407947, "o", "r"] +[14.184760799407947, "o", " "] +[14.214760799407946, "o", "\""] +[14.244760799407945, "o", "U"] +[14.274760799407945, "o", "P"] +[14.304760799407944, "o", "D"] +[14.334760799407944, "o", "A"] +[14.364760799407943, "o", "T"] +[14.394760799407942, "o", "E"] +[14.424760799407942, "o", " "] +[14.454760799407941, "o", "r"] +[14.48476079940794, "o", "d"] +[14.51476079940794, "o", "u"] +[14.544760799407939, "o", " "] +[14.574760799407938, "o", "S"] +[14.604760799407938, "o", "E"] +[14.634760799407937, "o", "T"] +[14.664760799407937, "o", " "] +[14.694760799407936, "o", "p"] +[14.724760799407935, "o", "r"] +[14.754760799407935, "o", "e"] +[14.784760799407934, "o", "c"] +[14.814760799407933, "o", "i"] +[14.844760799407933, "o", "p"] +[14.874760799407932, "o", "i"] +[14.904760799407931, "o", "t"] +[14.93476079940793, "o", "a"] +[14.96476079940793, "o", "t"] +[14.99476079940793, "o", "i"] +[15.024760799407929, "o", "o"] +[15.054760799407928, "o", "n"] +[15.084760799407928, "o", " "] +[15.114760799407927, "o", "="] +[15.144760799407926, "o", " "] +[15.174760799407926, "o", "p"] +[15.204760799407925, "o", "r"] +[15.234760799407924, "o", "e"] +[15.264760799407924, "o", "c"] +[15.294760799407923, "o", "i"] +[15.324760799407922, "o", "p"] +[15.354760799407922, "o", "i"] +[15.384760799407921, "o", "t"] +[15.41476079940792, "o", "a"] +[15.44476079940792, "o", "t"] +[15.47476079940792, "o", "i"] +[15.504760799407919, "o", "o"] +[15.534760799407918, "o", "n"] +[15.564760799407917, "o", " "] +[15.594760799407917, "o", "*"] +[15.624760799407916, "o", " "] +[15.654760799407915, "o", "1"] +[15.684760799407915, "o", "."] +[15.714760799407914, "o", "2"] +[15.744760799407914, "o", " "] +[15.774760799407913, "o", "W"] +[15.804760799407912, "o", "H"] +[15.834760799407912, "o", "E"] +[15.864760799407911, "o", "R"] +[15.89476079940791, "o", "E"] +[15.92476079940791, "o", " "] +[15.954760799407909, "o", "E"] +[15.984760799407908, "o", "X"] +[16.01476079940791, "o", "T"] +[16.04476079940791, "o", "R"] +[16.074760799407912, "o", "A"] +[16.104760799407913, "o", "C"] +[16.134760799407914, "o", "T"] +[16.164760799407915, "o", " "] +[16.194760799407916, "o", "("] +[16.224760799407917, "o", "y"] +[16.25476079940792, "o", "e"] +[16.28476079940792, "o", "a"] +[16.31476079940792, "o", "r"] +[16.344760799407922, "o", " "] +[16.374760799407923, "o", "F"] +[16.404760799407924, "o", "R"] +[16.434760799407925, "o", "O"] +[16.464760799407927, "o", "M"] +[16.494760799407928, "o", " "] +[16.52476079940793, "o", "d"] +[16.55476079940793, "o", "a"] +[16.58476079940793, "o", "t"] +[16.614760799407932, "o", "e"] +[16.644760799407933, "o", ")"] +[16.674760799407935, "o", " "] +[16.704760799407936, "o", "="] +[16.734760799407937, "o", " "] +[16.764760799407938, "o", "2"] +[16.79476079940794, "o", "0"] +[16.82476079940794, "o", "1"] +[16.85476079940794, "o", "2"] +[16.884760799407942, "o", "\""] +[16.914760799407944, "o", "\r\n"] +[16.944760799407945, "o", "$"] +[16.974760799407946, "o", " "] +[17.004760799407947, "o", "s"] +[17.034760799407948, "o", "g"] +[17.06476079940795, "o", "r"] +[17.09476079940795, "o", " "] +[17.12476079940795, "o", "c"] +[17.154760799407953, "o", "o"] +[17.184760799407954, "o", "m"] +[17.214760799407955, "o", "m"] +[17.244760799407956, "o", "i"] +[17.274760799407957, "o", "t"] +[17.30476079940796, "o", " "] +[17.33476079940796, "o", "-"] +[17.36476079940796, "o", "m"] +[17.394760799407962, "o", " "] +[17.424760799407963, "o", "\""] +[17.454760799407964, "o", "R"] +[17.484760799407965, "o", "e"] +[17.514760799407966, "o", "v"] +[17.544760799407968, "o", "i"] +[17.57476079940797, "o", "s"] +[17.60476079940797, "o", "i"] +[17.63476079940797, "o", "o"] +[17.664760799407972, "o", "n"] +[17.694760799407973, "o", " "] +[17.724760799407974, "o", "t"] +[17.754760799407975, "o", "o"] +[17.784760799407977, "o", " "] +[17.814760799407978, "o", "t"] +[17.84476079940798, "o", "h"] +[17.87476079940798, "o", "e"] +[17.90476079940798, "o", " "] +[17.934760799407982, "o", "2"] +[17.964760799407983, "o", "0"] +[17.994760799407985, "o", "1"] +[18.024760799407986, "o", "2"] +[18.054760799407987, "o", " "] +[18.084760799407988, "o", "r"] +[18.11476079940799, "o", "a"] +[18.14476079940799, "o", "i"] +[18.17476079940799, "o", "n"] +[18.204760799407993, "o", "f"] +[18.234760799407994, "o", "a"] +[18.264760799407995, "o", "l"] +[18.294760799407996, "o", "l"] +[18.324760799407997, "o", " "] +[18.354760799407998, "o", "d"] +[18.384760799408, "o", "a"] +[18.414760799408, "o", "t"] +[18.444760799408, "o", "a"] +[18.474760799408003, "o", "\""] +[18.504760799408004, "o", " "] +[18.534760799408005, "o", "d"] +[18.564760799408006, "o", "e"] +[18.594760799408007, "o", "m"] +[18.62476079940801, "o", "o"] +[18.65476079940801, "o", "/"] +[18.68476079940801, "o", "w"] +[18.714760799408012, "o", "e"] +[18.744760799408013, "o", "a"] +[18.774760799408014, "o", "t"] +[18.804760799408015, "o", "h"] +[18.834760799408016, "o", "e"] +[18.864760799408018, "o", "r"] +[18.89476079940802, "o", "\r\n"] +[18.92476079940802, "o", "$"] +[18.95476079940802, "o", " "] +[18.984760799408022, "o", "s"] +[19.014760799408023, "o", "g"] +[19.044760799408024, "o", "r"] +[19.074760799408025, "o", " "] +[19.104760799408027, "o", "t"] +[19.134760799408028, "o", "a"] +[19.16476079940803, "o", "g"] +[19.19476079940803, "o", " "] +[19.22476079940803, "o", "d"] +[19.254760799408032, "o", "e"] +[19.284760799408033, "o", "m"] +[19.314760799408035, "o", "o"] +[19.344760799408036, "o", "/"] +[19.374760799408037, "o", "w"] +[19.404760799408038, "o", "e"] +[19.43476079940804, "o", "a"] +[19.46476079940804, "o", "t"] +[19.49476079940804, "o", "h"] +[19.524760799408043, "o", "e"] +[19.554760799408044, "o", "r"] +[19.584760799408045, "o", " "] +[19.614760799408046, "o", "r"] +[19.644760799408047, "o", "e"] +[19.67476079940805, "o", "v"] +[19.70476079940805, "o", "i"] +[19.73476079940805, "o", "s"] +[19.76476079940805, "o", "e"] +[19.794760799408053, "o", "d"] +[19.824760799408054, "o", "_"] +[19.854760799408055, "o", "d"] +[19.884760799408056, "o", "a"] +[19.914760799408057, "o", "t"] +[19.94476079940806, "o", "a"] +[19.97476079940806, "o", "\r\n"] +[20.00476079940806, "o", "\u001b[0m"] +[20.034760799408062, "o", "\r\n"] +[20.420292940139873, "o", "Committing demo/weather...\r\n"] +[20.455936279296978, "o", "Storing and indexing table rdu\r\n"] +[20.633220758438213, "o", "Committed demo/weather as 86cfd4a0ffaf.\r\n"] +[21.029168930053814, "o", "Tagged demo/weather:86cfd4a0ffafc436bc8d297960466533f6466633fb1e1ec8b5f6eaf1629903f1 with revised_data.\r\n"] +[21.059168930053815, "o", "\u001b[1m"] +[21.089168930053816, "o", "\u001b[36m"] +[21.119168930053817, "o", "\u001b[91m"] +[21.14916893005382, "o", "$"] +[21.17916893005382, "o", " "] +[21.20916893005382, "o", "\u001b[0m"] +[26.239168930053822, "o", "\u001b[H"] +[26.269168930053823, "o", "\u001b[J"] +[26.299168930053824, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the original version of the dataset and look at the API spec for it."] +[26.329168930053825, "o", "\r\n"] +[26.359168930053826, "o", "$ # For this, we need to restart PostgREST so that it picks up the new schema.\r\n"] +[26.389168930053827, "o", "$"] +[26.41916893005383, "o", " "] +[26.44916893005383, "o", "d"] +[26.47916893005383, "o", "o"] +[26.509168930053832, "o", "c"] +[26.539168930053833, "o", "k"] +[26.569168930053834, "o", "e"] +[26.599168930053835, "o", "r"] +[26.629168930053837, "o", "-"] +[26.659168930053838, "o", "c"] +[26.68916893005384, "o", "o"] +[26.71916893005384, "o", "m"] +[26.74916893005384, "o", "p"] +[26.779168930053842, "o", "o"] +[26.809168930053843, "o", "s"] +[26.839168930053845, "o", "e"] +[26.869168930053846, "o", " "] +[26.899168930053847, "o", "-"] +[26.929168930053848, "o", "-"] +[26.95916893005385, "o", "p"] +[26.98916893005385, "o", "r"] +[27.01916893005385, "o", "o"] +[27.049168930053852, "o", "j"] +[27.079168930053854, "o", "e"] +[27.109168930053855, "o", "c"] +[27.139168930053856, "o", "t"] +[27.169168930053857, "o", "-"] +[27.199168930053858, "o", "n"] +[27.22916893005386, "o", "a"] +[27.25916893005386, "o", "m"] +[27.28916893005386, "o", "e"] +[27.319168930053863, "o", " "] +[27.349168930053864, "o", "s"] +[27.379168930053865, "o", "p"] +[27.409168930053866, "o", "l"] +[27.439168930053867, "o", "i"] +[27.46916893005387, "o", "t"] +[27.49916893005387, "o", "g"] +[27.52916893005387, "o", "r"] +[27.559168930053872, "o", "a"] +[27.589168930053873, "o", "p"] +[27.619168930053874, "o", "h"] +[27.649168930053875, "o", "_"] +[27.679168930053876, "o", "e"] +[27.709168930053877, "o", "x"] +[27.73916893005388, "o", "a"] +[27.76916893005388, "o", "m"] +[27.79916893005388, "o", "p"] +[27.829168930053882, "o", "l"] +[27.859168930053883, "o", "e"] +[27.889168930053884, "o", " "] +[27.919168930053885, "o", "r"] +[27.949168930053887, "o", "e"] +[27.979168930053888, "o", "s"] +[28.00916893005389, "o", "t"] +[28.03916893005389, "o", "a"] +[28.06916893005389, "o", "r"] +[28.099168930053892, "o", "t"] +[28.129168930053893, "o", " "] +[28.159168930053895, "o", "p"] +[28.189168930053896, "o", "o"] +[28.219168930053897, "o", "s"] +[28.249168930053898, "o", "t"] +[28.2791689300539, "o", "g"] +[28.3091689300539, "o", "r"] +[28.3391689300539, "o", "e"] +[28.369168930053902, "o", "s"] +[28.399168930053904, "o", "t"] +[28.429168930053905, "o", "\r\n"] +[28.459168930053906, "o", "$"] +[28.489168930053907, "o", " "] +[28.519168930053908, "o", "s"] +[28.54916893005391, "o", "g"] +[28.57916893005391, "o", "r"] +[28.60916893005391, "o", " "] +[28.639168930053913, "o", "c"] +[28.669168930053914, "o", "h"] +[28.699168930053915, "o", "e"] +[28.729168930053916, "o", "c"] +[28.759168930053917, "o", "k"] +[28.78916893005392, "o", "o"] +[28.81916893005392, "o", "u"] +[28.84916893005392, "o", "t"] +[28.879168930053922, "o", " "] +[28.909168930053923, "o", "d"] +[28.939168930053924, "o", "e"] +[28.969168930053925, "o", "m"] +[28.999168930053926, "o", "o"] +[29.029168930053928, "o", "/"] +[29.05916893005393, "o", "w"] +[29.08916893005393, "o", "e"] +[29.11916893005393, "o", "a"] +[29.149168930053932, "o", "t"] +[29.179168930053933, "o", "h"] +[29.209168930053934, "o", "e"] +[29.239168930053935, "o", "r"] +[29.269168930053937, "o", ":"] +[29.299168930053938, "o", "i"] +[29.32916893005394, "o", "n"] +[29.35916893005394, "o", "i"] +[29.38916893005394, "o", "t"] +[29.419168930053942, "o", "i"] +[29.449168930053943, "o", "a"] +[29.479168930053945, "o", "l"] +[29.509168930053946, "o", "_"] +[29.539168930053947, "o", "d"] +[29.569168930053948, "o", "a"] +[29.59916893005395, "o", "t"] +[29.62916893005395, "o", "a"] +[29.65916893005395, "o", "\r\n"] +[29.689168930053953, "o", "$"] +[29.719168930053954, "o", " "] +[29.749168930053955, "o", "c"] +[29.779168930053956, "o", "u"] +[29.809168930053957, "o", "r"] +[29.839168930053958, "o", "l"] +[29.86916893005396, "o", " "] +[29.89916893005396, "o", "h"] +[29.92916893005396, "o", "t"] +[29.959168930053963, "o", "t"] +[29.989168930053964, "o", "p"] +[30.019168930053965, "o", ":"] +[30.049168930053966, "o", "/"] +[30.079168930053967, "o", "/"] +[30.10916893005397, "o", "l"] +[30.13916893005397, "o", "o"] +[30.16916893005397, "o", "c"] +[30.199168930053972, "o", "a"] +[30.229168930053973, "o", "l"] +[30.259168930053974, "o", "h"] +[30.289168930053975, "o", "o"] +[30.319168930053976, "o", "s"] +[30.349168930053978, "o", "t"] +[30.37916893005398, "o", ":"] +[30.40916893005398, "o", "8"] +[30.43916893005398, "o", "0"] +[30.469168930053982, "o", "8"] +[30.499168930053983, "o", "0"] +[30.529168930053984, "o", "/"] +[30.559168930053985, "o", " "] +[30.589168930053987, "o", "|"] +[30.619168930053988, "o", " "] +[30.64916893005399, "o", "c"] +[30.67916893005399, "o", "u"] +[30.70916893005399, "o", "t"] +[30.739168930053992, "o", " "] +[30.769168930053993, "o", "-"] +[30.799168930053995, "o", "c"] +[30.829168930053996, "o", " "] +[30.859168930053997, "o", "-"] +[30.889168930053998, "o", "7"] +[30.919168930054, "o", "9"] +[30.949168930054, "o", "3"] +[30.979168930054, "o", "\r\n"] +[31.009168930054003, "o", "\u001b[0m"] +[31.039168930054004, "o", "\r\n"] +[31.676598644256885, "o", "Restarting splitgraph_example_postgrest_1 ... \r\r\n"] +[32.48932466506987, "o", "\u001b[1A\u001b[2K\r"] +[32.48942432403594, "o", "Restarting splitgraph_example_postgrest_1 ... \u001b[32mdone\u001b[0m\r"] +[32.48978219032317, "o", "\u001b[1B"] +[32.993206119537646, "o", "Checked out demo/weather:41b15a2f1060.\r\n"] +[33.00434265136748, "o", " "] +[33.00441679954558, "o", " "] +[33.00446162223845, "o", "%"] +[33.004511451721484, "o", " "] +[33.0045443534854, "o", "T"] +[33.00457653999358, "o", "o"] +[33.00461802482634, "o", "t"] +[33.004683589935595, "o", "al % Rece"] +[33.004694080353076, "o", "ived % Xferd"] +[33.00470051765471, "o", " A"] +[33.00471148490935, "o", "v"] +[33.004715776443774, "o", "er"] +[33.00474081039458, "o", "ag"] +[33.004752492904956, "o", "e Sp"] +[33.00476131439238, "o", "e"] +[33.00476965904265, "o", "ed"] +[33.00477347373992, "o", " "] +[33.0047930240634, "o", " "] +[33.00480208396941, "o", "Ti"] +[33.004805898666675, "o", "me"] +[33.00482544899016, "o", " "] +[33.00483403205901, "o", " "] +[33.00483808517485, "o", "T"] +[33.00485715866118, "o", "im"] +[33.00486550331145, "o", "e "] +[33.004869556427295, "o", " "] +[33.00488958358794, "o", " "] +[33.00489816665679, "o", " T"] +[33.00490221977263, "o", "im"] +[33.00492177009612, "o", "e "] +[33.00492987632781, "o", " C"] +[33.00493369102507, "o", "u"] +[33.00494227409392, "o", "r"] +[33.004946088791186, "o", "re"] +[33.00496563911467, "o", "nt"] +[33.00497398376494, "o", "\r\n "] +[33.00497779846221, "o", " "] +[33.005180215835864, "o", " "] +[33.00521836280852, "o", " "] +[33.005251502991015, "o", " "] +[33.00567755699187, "o", " Dload Upload Total Spent Left Speed\r\n"] +[33.00599370002776, "o", "\r 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0"] +[33.03093800544768, "o", "\r100 12010 0 12010 0 0 434k 0 --:--:-- --:--:-- --:--:-- 434k\r\n{\"swagger\":\"2.0\",\"info\":{\"version\":\"7.0.1 (UNKNOWN)\",\"title\":\"PostgREST API\",\"description\":\"This is a dynamic API generated by PostgREST\"},\"host\":\"localhost:8080\",\"basePath\":\"/\",\"schemes\":[\"http\"],\"consumes\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"produces\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"paths\":{\"/\":{\"get\":{\"tags\":[\"Introspection\"],\"summary\":\"OpenAPI description"] +[33.030952548981006, "o", " (this document)\",\"produces\":[\"application/openapi+json\",\"application/json\"],\"responses\":{\"200\":{\"description\":\"OK\"}}}},\"/rdu\":{\"get\":{\"tags\":[\"rdu\"],\"parameters\":[{\"$ref\":\"#/parameters/rowFilter.rdu.date\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemin\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemax\"},{\"$ref\":\"#/parameters/rowFilter.rdu.precipitation\r\n"] +[33.06095254898101, "o", "\u001b[1m"] +[33.09095254898101, "o", "\u001b[36m"] +[33.12095254898101, "o", "\u001b[91m"] +[33.15095254898101, "o", "$"] +[33.18095254898101, "o", " "] +[33.21095254898101, "o", "\u001b[0m"] +[38.240952548981014, "o", "\u001b[H"] +[38.270952548981015, "o", "\u001b[J"] +[38.300952548981016, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get all rows in the table"] +[38.33095254898102, "o", "\r\n"] +[38.36095254898102, "o", "$"] +[38.39095254898102, "o", " "] +[38.42095254898102, "o", "c"] +[38.45095254898102, "o", "u"] +[38.48095254898102, "o", "r"] +[38.510952548981024, "o", "l"] +[38.540952548981025, "o", " "] +[38.570952548981026, "o", "h"] +[38.60095254898103, "o", "t"] +[38.63095254898103, "o", "t"] +[38.66095254898103, "o", "p"] +[38.69095254898103, "o", ":"] +[38.72095254898103, "o", "/"] +[38.75095254898103, "o", "/"] +[38.780952548981034, "o", "l"] +[38.810952548981035, "o", "o"] +[38.840952548981036, "o", "c"] +[38.87095254898104, "o", "a"] +[38.90095254898104, "o", "l"] +[38.93095254898104, "o", "h"] +[38.96095254898104, "o", "o"] +[38.99095254898104, "o", "s"] +[39.02095254898104, "o", "t"] +[39.050952548981044, "o", ":"] +[39.080952548981045, "o", "8"] +[39.11095254898105, "o", "0"] +[39.14095254898105, "o", "8"] +[39.17095254898105, "o", "0"] +[39.20095254898105, "o", "/"] +[39.23095254898105, "o", "r"] +[39.26095254898105, "o", "d"] +[39.29095254898105, "o", "u"] +[39.320952548981055, "o", " "] +[39.350952548981056, "o", "|"] +[39.38095254898106, "o", " "] +[39.41095254898106, "o", "w"] +[39.44095254898106, "o", "c"] +[39.47095254898106, "o", " "] +[39.50095254898106, "o", "-"] +[39.53095254898106, "o", "l"] +[39.560952548981064, "o", "\r\n"] +[39.590952548981065, "o", "\u001b[0m"] +[39.620952548981066, "o", "\r\n"] +[39.62953180313146, "o", " "] +[39.62954205513036, "o", "% Total % Received % Xferd "] +[39.629550399780626, "o", " Aver"] +[39.62955492973363, "o", "ag"] +[39.62955922126805, "o", "e "] +[39.62956279754674, "o", "Sp"] +[39.629566373825426, "o", "ee"] +[39.62957018852269, "o", "d "] +[39.62957424163854, "o", " "] +[39.62957877159154, "o", "Tim"] +[39.62958306312596, "o", "e "] +[39.62958687782323, "o", " "] +[39.629590692520495, "o", " T"] +[39.62959426879918, "o", "im"] +[39.62959808349645, "o", "e "] +[39.62960189819371, "o", " "] +[39.62960595130956, "o", " "] +[39.6296100044254, "o", "Ti"] +[39.62961381912267, "o", "me"] +[39.62961763381993, "o", " "] +[39.62962574005162, "o", "Cur"] +[39.62962931633031, "o", "re"] +[39.629633131027575, "o", "nt"] +[39.62963885307347, "o", "\r\n "] +[39.62964290618932, "o", " "] +[39.62964672088658, "o", " "] +[39.62965029716527, "o", " "] +[39.62965387344396, "o", " "] +[39.62965744972264, "o", " "] +[39.62966102600133, "o", " "] +[39.629665079117174, "o", " "] +[39.62966865539586, "o", " "] +[39.62968486785924, "o", " "] +[39.629688444137926, "o", " "] +[39.629691781998034, "o", " "] +[39.62969511985814, "o", " "] +[39.62969869613683, "o", " "] +[39.629702033996935, "o", " "] +[39.62970680236852, "o", " "] +[39.62971085548436, "o", " D"] +[39.62971443176305, "o", "lo"] +[39.629718246460314, "o", "ad "] +[39.62972206115758, "o", "Up"] +[39.629725875854845, "o", "lo"] +[39.62972945213353, "o", "ad"] +[39.6297332668308, "o", " "] +[39.629736843109484, "o", " T"] +[39.62974113464391, "o", "ot"] +[39.629744710922594, "o", "al"] +[39.6297480487827, "o", " "] +[39.62975162506139, "o", " S"] +[39.629755439758654, "o", "pe"] +[39.62975901603734, "o", "nt"] +[39.629762830734606, "o", " "] +[39.62976640701329, "o", " "] +[39.62976998329198, "o", "Le"] +[39.629773559570665, "o", "ft "] +[39.62977713584935, "o", " S"] +[39.62978095054662, "o", "pe"] +[39.629784526825304, "o", "ed"] +[39.629789533615465, "o", "\r\n"] +[39.62979310989415, "o", "\r "] +[39.62979644775426, "o", "0 "] +[39.629800262451525, "o", " "] +[39.62980360031163, "o", " "] +[39.62980693817174, "o", "0 "] +[39.629810514450426, "o", " "] +[39.62981409072911, "o", " 0"] +[39.629819097519274, "o", " "] +[39.62982267379796, "o", " "] +[39.629826726913805, "o", "0 "] +[39.62983006477391, "o", " "] +[39.6298336410526, "o", " 0"] +[39.629837217331286, "o", " "] +[39.62984079360997, "o", " "] +[39.62984460830724, "o", " 0"] +[39.629848184585924, "o", " "] +[39.62985152244603, "o", " "] +[39.62985509872472, "o", " "] +[39.629858675003405, "o", "0 "] +[39.62986225128209, "o", " "] +[39.62986582756078, "o", " "] +[39.629869403839464, "o", " 0"] +[39.629874410629625, "o", " -"] +[39.62987941741979, "o", "-:"] +[39.62988299369847, "o", "--:"] +[39.62988633155858, "o", "--"] +[39.62988990783727, "o", " -"] +[39.629893484115954, "o", "-:"] +[39.62989706039464, "o", "--"] +[39.62990039825475, "o", ":-"] +[39.62990564346349, "o", "- "] +[39.62991112709081, "o", "--:"] +[39.62991494178807, "o", "--:"] +[39.62991851806676, "o", "--"] +[39.629922332764025, "o", " "] +[39.62992590904271, "o", " "] +[39.629930438995714, "o", " 0"] +[39.70621294021642, "o", "\r100 22"] +[39.70622867584264, "o", "92k 0 2292k 0 0 29.0M "] +[39.706234874725695, "o", " 0 --"] +[39.70623892784154, "o", ":--"] +[39.70624226570165, "o", ":--"] +[39.706245603561754, "o", " -"] +[39.70624941825902, "o", "-:"] +[39.70625299453771, "o", "--"] +[39.70625657081639, "o", ":-"] +[39.70626205444371, "o", "- "] +[39.70626539230382, "o", "--:"] +[39.706269683838244, "o", "--:-"] +[39.70627349853551, "o", "- 29"] +[39.70627683639562, "o", ".4"] +[39.7062804126743, "o", "M"] +[39.706285419464464, "o", "\r\n"] +[39.70787257194554, "o", "4632\r\n"] +[39.737872571945545, "o", "\u001b[1m"] +[39.767872571945546, "o", "\u001b[36m"] +[39.79787257194555, "o", "\u001b[91m"] +[39.82787257194555, "o", "$"] +[39.85787257194555, "o", " "] +[39.88787257194555, "o", "\u001b[0m"] +[44.91787257194555, "o", "\u001b[H"] +[44.94787257194555, "o", "\u001b[J"] +[44.977872571945554, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a query selecting one row"] +[45.007872571945555, "o", "\r\n"] +[45.037872571945556, "o", "$"] +[45.06787257194556, "o", " "] +[45.09787257194556, "o", "c"] +[45.12787257194556, "o", "u"] +[45.15787257194556, "o", "r"] +[45.18787257194556, "o", "l"] +[45.21787257194556, "o", " "] +[45.247872571945564, "o", "\""] +[45.277872571945565, "o", "h"] +[45.307872571945566, "o", "t"] +[45.33787257194557, "o", "t"] +[45.36787257194557, "o", "p"] +[45.39787257194557, "o", ":"] +[45.42787257194557, "o", "/"] +[45.45787257194557, "o", "/"] +[45.48787257194557, "o", "l"] +[45.517872571945574, "o", "o"] +[45.547872571945575, "o", "c"] +[45.577872571945576, "o", "a"] +[45.60787257194558, "o", "l"] +[45.63787257194558, "o", "h"] +[45.66787257194558, "o", "o"] +[45.69787257194558, "o", "s"] +[45.72787257194558, "o", "t"] +[45.75787257194558, "o", ":"] +[45.787872571945584, "o", "8"] +[45.817872571945585, "o", "0"] +[45.84787257194559, "o", "8"] +[45.87787257194559, "o", "0"] +[45.90787257194559, "o", "/"] +[45.93787257194559, "o", "r"] +[45.96787257194559, "o", "d"] +[45.99787257194559, "o", "u"] +[46.02787257194559, "o", "?"] +[46.057872571945595, "o", "d"] +[46.087872571945596, "o", "a"] +[46.1178725719456, "o", "t"] +[46.1478725719456, "o", "e"] +[46.1778725719456, "o", "="] +[46.2078725719456, "o", "e"] +[46.2378725719456, "o", "q"] +[46.2678725719456, "o", "."] +[46.297872571945604, "o", "2"] +[46.327872571945605, "o", "0"] +[46.357872571945606, "o", "1"] +[46.38787257194561, "o", "2"] +[46.41787257194561, "o", "-"] +[46.44787257194561, "o", "1"] +[46.47787257194561, "o", "2"] +[46.50787257194561, "o", "-"] +[46.53787257194561, "o", "2"] +[46.567872571945614, "o", "6"] +[46.597872571945615, "o", "&"] +[46.627872571945616, "o", "s"] +[46.65787257194562, "o", "e"] +[46.68787257194562, "o", "l"] +[46.71787257194562, "o", "e"] +[46.74787257194562, "o", "c"] +[46.77787257194562, "o", "t"] +[46.80787257194562, "o", "="] +[46.837872571945624, "o", "d"] +[46.867872571945625, "o", "a"] +[46.897872571945626, "o", "t"] +[46.92787257194563, "o", "e"] +[46.95787257194563, "o", ","] +[46.98787257194563, "o", "t"] +[47.01787257194563, "o", "e"] +[47.04787257194563, "o", "m"] +[47.07787257194563, "o", "p"] +[47.107872571945634, "o", "e"] +[47.137872571945636, "o", "r"] +[47.16787257194564, "o", "a"] +[47.19787257194564, "o", "t"] +[47.22787257194564, "o", "u"] +[47.25787257194564, "o", "r"] +[47.28787257194564, "o", "e"] +[47.31787257194564, "o", "m"] +[47.34787257194564, "o", "i"] +[47.377872571945645, "o", "n"] +[47.407872571945646, "o", ","] +[47.43787257194565, "o", "t"] +[47.46787257194565, "o", "e"] +[47.49787257194565, "o", "m"] +[47.52787257194565, "o", "p"] +[47.55787257194565, "o", "e"] +[47.58787257194565, "o", "r"] +[47.617872571945654, "o", "a"] +[47.647872571945655, "o", "t"] +[47.677872571945656, "o", "u"] +[47.70787257194566, "o", "r"] +[47.73787257194566, "o", "e"] +[47.76787257194566, "o", "m"] +[47.79787257194566, "o", "a"] +[47.82787257194566, "o", "x"] +[47.85787257194566, "o", ","] +[47.887872571945664, "o", "p"] +[47.917872571945665, "o", "r"] +[47.947872571945666, "o", "e"] +[47.97787257194567, "o", "c"] +[48.00787257194567, "o", "i"] +[48.03787257194567, "o", "p"] +[48.06787257194567, "o", "i"] +[48.09787257194567, "o", "t"] +[48.12787257194567, "o", "a"] +[48.157872571945674, "o", "t"] +[48.187872571945675, "o", "i"] +[48.217872571945676, "o", "o"] +[48.24787257194568, "o", "n"] +[48.27787257194568, "o", "\""] +[48.30787257194568, "o", "\r\n"] +[48.33787257194568, "o", "\u001b[0m"] +[48.36787257194568, "o", "\r\n"] +[48.38341913223316, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.41}]"] +[48.41341913223316, "o", "\u001b[1m"] +[48.44341913223316, "o", "\u001b[36m"] +[48.47341913223316, "o", "\u001b[91m"] +[48.50341913223316, "o", "$"] +[48.53341913223316, "o", " "] +[48.563419132233165, "o", "\u001b[0m"] +[53.593419132233166, "o", "\u001b[H"] +[53.62341913223317, "o", "\u001b[J"] +[53.65341913223317, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run the query against the new version of the dataset."] +[53.68341913223317, "o", "\r\n"] +[53.71341913223317, "o", "$ # This time, use layered querying that queries fragments directly without checkout,\r\n"] +[53.74341913223317, "o", "$ # downloading them if they're not local. This is seamless to PostgREST or any other application.\r\n"] +[53.77341913223317, "o", "$"] +[53.803419132233174, "o", " "] +[53.833419132233175, "o", "s"] +[53.863419132233176, "o", "g"] +[53.89341913223318, "o", "r"] +[53.92341913223318, "o", " "] +[53.95341913223318, "o", "c"] +[53.98341913223318, "o", "h"] +[54.01341913223318, "o", "e"] +[54.04341913223318, "o", "c"] +[54.073419132233184, "o", "k"] +[54.103419132233185, "o", "o"] +[54.133419132233186, "o", "u"] +[54.16341913223319, "o", "t"] +[54.19341913223319, "o", " "] +[54.22341913223319, "o", "-"] +[54.25341913223319, "o", "-"] +[54.28341913223319, "o", "l"] +[54.31341913223319, "o", "a"] +[54.343419132233194, "o", "y"] +[54.373419132233195, "o", "e"] +[54.403419132233196, "o", "r"] +[54.4334191322332, "o", "e"] +[54.4634191322332, "o", "d"] +[54.4934191322332, "o", " "] +[54.5234191322332, "o", "d"] +[54.5534191322332, "o", "e"] +[54.5834191322332, "o", "m"] +[54.613419132233204, "o", "o"] +[54.643419132233205, "o", "/"] +[54.67341913223321, "o", "w"] +[54.70341913223321, "o", "e"] +[54.73341913223321, "o", "a"] +[54.76341913223321, "o", "t"] +[54.79341913223321, "o", "h"] +[54.82341913223321, "o", "e"] +[54.85341913223321, "o", "r"] +[54.883419132233215, "o", ":"] +[54.913419132233216, "o", "r"] +[54.94341913223322, "o", "e"] +[54.97341913223322, "o", "v"] +[55.00341913223322, "o", "i"] +[55.03341913223322, "o", "s"] +[55.06341913223322, "o", "e"] +[55.09341913223322, "o", "d"] +[55.123419132233224, "o", "_"] +[55.153419132233225, "o", "d"] +[55.183419132233226, "o", "a"] +[55.21341913223323, "o", "t"] +[55.24341913223323, "o", "a"] +[55.27341913223323, "o", "\r\n"] +[55.30341913223323, "o", "$"] +[55.33341913223323, "o", " "] +[55.36341913223323, "o", "c"] +[55.393419132233234, "o", "u"] +[55.423419132233235, "o", "r"] +[55.453419132233236, "o", "l"] +[55.48341913223324, "o", " "] +[55.51341913223324, "o", "\""] +[55.54341913223324, "o", "h"] +[55.57341913223324, "o", "t"] +[55.60341913223324, "o", "t"] +[55.63341913223324, "o", "p"] +[55.663419132233244, "o", ":"] +[55.693419132233245, "o", "/"] +[55.723419132233246, "o", "/"] +[55.75341913223325, "o", "l"] +[55.78341913223325, "o", "o"] +[55.81341913223325, "o", "c"] +[55.84341913223325, "o", "a"] +[55.87341913223325, "o", "l"] +[55.90341913223325, "o", "h"] +[55.933419132233254, "o", "o"] +[55.963419132233255, "o", "s"] +[55.99341913223326, "o", "t"] +[56.02341913223326, "o", ":"] +[56.05341913223326, "o", "8"] +[56.08341913223326, "o", "0"] +[56.11341913223326, "o", "8"] +[56.14341913223326, "o", "0"] +[56.17341913223326, "o", "/"] +[56.203419132233265, "o", "r"] +[56.233419132233266, "o", "d"] +[56.26341913223327, "o", "u"] +[56.29341913223327, "o", "?"] +[56.32341913223327, "o", "d"] +[56.35341913223327, "o", "a"] +[56.38341913223327, "o", "t"] +[56.41341913223327, "o", "e"] +[56.443419132233274, "o", "="] +[56.473419132233275, "o", "e"] +[56.503419132233276, "o", "q"] +[56.53341913223328, "o", "."] +[56.56341913223328, "o", "2"] +[56.59341913223328, "o", "0"] +[56.62341913223328, "o", "1"] +[56.65341913223328, "o", "2"] +[56.68341913223328, "o", "-"] +[56.713419132233284, "o", "1"] +[56.743419132233285, "o", "2"] +[56.773419132233286, "o", "-"] +[56.80341913223329, "o", "2"] +[56.83341913223329, "o", "6"] +[56.86341913223329, "o", "&"] +[56.89341913223329, "o", "s"] +[56.92341913223329, "o", "e"] +[56.95341913223329, "o", "l"] +[56.983419132233294, "o", "e"] +[57.013419132233295, "o", "c"] +[57.043419132233296, "o", "t"] +[57.0734191322333, "o", "="] +[57.1034191322333, "o", "d"] +[57.1334191322333, "o", "a"] +[57.1634191322333, "o", "t"] +[57.1934191322333, "o", "e"] +[57.2234191322333, "o", ","] +[57.253419132233304, "o", "t"] +[57.283419132233306, "o", "e"] +[57.31341913223331, "o", "m"] +[57.34341913223331, "o", "p"] +[57.37341913223331, "o", "e"] +[57.40341913223331, "o", "r"] +[57.43341913223331, "o", "a"] +[57.46341913223331, "o", "t"] +[57.49341913223331, "o", "u"] +[57.523419132233315, "o", "r"] +[57.553419132233316, "o", "e"] +[57.58341913223332, "o", "m"] +[57.61341913223332, "o", "i"] +[57.64341913223332, "o", "n"] +[57.67341913223332, "o", ","] +[57.70341913223332, "o", "t"] +[57.73341913223332, "o", "e"] +[57.763419132233324, "o", "m"] +[57.793419132233325, "o", "p"] +[57.823419132233326, "o", "e"] +[57.85341913223333, "o", "r"] +[57.88341913223333, "o", "a"] +[57.91341913223333, "o", "t"] +[57.94341913223333, "o", "u"] +[57.97341913223333, "o", "r"] +[58.00341913223333, "o", "e"] +[58.033419132233334, "o", "m"] +[58.063419132233335, "o", "a"] +[58.093419132233336, "o", "x"] +[58.12341913223334, "o", ","] +[58.15341913223334, "o", "p"] +[58.18341913223334, "o", "r"] +[58.21341913223334, "o", "e"] +[58.24341913223334, "o", "c"] +[58.27341913223334, "o", "i"] +[58.303419132233344, "o", "p"] +[58.333419132233345, "o", "i"] +[58.363419132233346, "o", "t"] +[58.39341913223335, "o", "a"] +[58.42341913223335, "o", "t"] +[58.45341913223335, "o", "i"] +[58.48341913223335, "o", "o"] +[58.51341913223335, "o", "n"] +[58.54341913223335, "o", "\""] +[58.573419132233354, "o", "\r\n"] +[58.603419132233356, "o", "\u001b[0m"] +[58.63341913223336, "o", "\r\n"] +[59.244609451294636, "o", "Checked out demo/weather:86cfd4a0ffaf.\r\n"] +[59.6052204132087, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.692}]"] +[59.6352204132087, "o", "\u001b[1m"] +[59.6652204132087, "o", "\u001b[36m"] +[59.6952204132087, "o", "\u001b[91m"] +[59.7252204132087, "o", "$"] +[59.755220413208704, "o", " "] +[59.785220413208705, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.14/push-to-other-engine.cast b/content/casts/versioned/archive/v0.2.14/push-to-other-engine.cast new file mode 100644 index 00000000..715bd2e1 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.14/push-to-other-engine.cast @@ -0,0 +1,889 @@ +{"version": 2, "width": 100, "height": 26, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1620214306, "metadata": {"tss": [{"h": "The .sgconfig file is written from the point of view of the first engine.", "ts": 0.06}, {"h": "Initialize the two engines", "ts": 9.559999999999999}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 22.060000000000002}, {"h": "Push the dataset out to the other engine", "ts": 35.33526363372829}, {"h": "Check that the dataset exists on the remote engine", "ts": 43.63615924835241}, {"h": "Update the dataset on the local engine", "ts": 50.8587307262425}, {"h": "Inspect our changes", "ts": 62.514564847946815}, {"h": "Push the changes out to the remote engine", "ts": 70.25457653045726}, {"h": "Inspect the dataset on the remote engine", "ts": 77.49239398956377}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The .sgconfig file is written from the point of view of the first engine."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Here, the first engine is local and default and the second one is remote.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "c"] +[0.27, "o", "a"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "."] +[0.3900000000000001, "o", "s"] +[0.42000000000000015, "o", "g"] +[0.4500000000000002, "o", "c"] +[0.4800000000000002, "o", "o"] +[0.5100000000000002, "o", "n"] +[0.5400000000000003, "o", "f"] +[0.5700000000000003, "o", "i"] +[0.6000000000000003, "o", "g"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "\u001b[0m"] +[0.6900000000000004, "o", "\r\n"] +[0.6960150623321537, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[remote: engine_2]\r\nSG_ENGINE_ADMIN_USER=sgr\r\nSG_ENGINE_ADMIN_PWD=supersecure\r\nSG_ENGINE_POSTGRES_DB_NAME=splitgraph\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\nSG_ENGINE_DB_NAME=splitgraph"] +[0.7260150623321537, "o", "\u001b[1m"] +[0.7560150623321538, "o", "\u001b[36m"] +[0.7860150623321538, "o", "\u001b[91m"] +[0.8160150623321538, "o", "$"] +[0.8460150623321538, "o", " "] +[0.8760150623321539, "o", "\u001b[0m"] +[9.53, "o", "\u001b[H"] +[9.559999999999999, "o", "\u001b[J"] +[9.589999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the two engines"] +[9.619999999999997, "o", "\r\n"] +[9.649999999999997, "o", "$"] +[9.679999999999996, "o", " "] +[9.709999999999996, "o", "s"] +[9.739999999999995, "o", "g"] +[9.769999999999994, "o", "r"] +[9.799999999999994, "o", " "] +[9.829999999999993, "o", "i"] +[9.859999999999992, "o", "n"] +[9.889999999999992, "o", "i"] +[9.919999999999991, "o", "t"] +[9.94999999999999, "o", "\r\n"] +[9.97999999999999, "o", "$"] +[10.00999999999999, "o", " "] +[10.039999999999988, "o", "S"] +[10.069999999999988, "o", "G"] +[10.099999999999987, "o", "_"] +[10.129999999999987, "o", "E"] +[10.159999999999986, "o", "N"] +[10.189999999999985, "o", "G"] +[10.219999999999985, "o", "I"] +[10.249999999999984, "o", "N"] +[10.279999999999983, "o", "E"] +[10.309999999999983, "o", "="] +[10.339999999999982, "o", "e"] +[10.369999999999981, "o", "n"] +[10.39999999999998, "o", "g"] +[10.42999999999998, "o", "i"] +[10.45999999999998, "o", "n"] +[10.489999999999979, "o", "e"] +[10.519999999999978, "o", "_"] +[10.549999999999978, "o", "2"] +[10.579999999999977, "o", " "] +[10.609999999999976, "o", "s"] +[10.639999999999976, "o", "g"] +[10.669999999999975, "o", "r"] +[10.699999999999974, "o", " "] +[10.729999999999974, "o", "i"] +[10.759999999999973, "o", "n"] +[10.789999999999973, "o", "i"] +[10.819999999999972, "o", "t"] +[10.849999999999971, "o", "\r\n"] +[10.87999999999997, "o", "\u001b[0m"] +[10.90999999999997, "o", "\r\n"] +[11.317862186431855, "o", "Initializing engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph)...\r\n"] +[11.319422159194916, "o", "Waiting for connection....\r\n"] +[12.319422159194916, "o", "Database splitgraph already exists, skipping\r\n"] +[12.319437417983979, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[12.330982360839814, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.377307329177826, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.378838453292817, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.408425722122162, "o", "Installing Splitgraph API functions...\r\n"] +[12.446746740341156, "o", "Installing CStore management functions...\r\n"] +[12.450572166442841, "o", "Installing the audit trigger...\r\n"] +[12.464749965667695, "o", "Engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph) initialized.\r\n"] +[12.808364543914765, "o", "Initializing engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph)...\r\n"] +[12.817002687454194, "o", "Database splitgraph already exists, skipping\r\n"] +[12.817376527786225, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[12.827460680007905, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.861086521148652, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.862522993087738, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.889086399078339, "o", "Installing Splitgraph API functions...\r\n"] +[12.926367197036713, "o", "Installing CStore management functions...\r\n"] +[12.930495891571015, "o", "Installing the audit trigger...\r\n"] +[12.94687310218808, "o", "Engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph) initialized.\r\n"] +[12.97687310218808, "o", "\u001b[1m"] +[13.006873102188079, "o", "\u001b[36m"] +[13.036873102188078, "o", "\u001b[91m"] +[13.066873102188078, "o", "$"] +[13.096873102188077, "o", " "] +[13.126873102188076, "o", "\u001b[0m"] +[22.03, "o", "\u001b[H"] +[22.060000000000002, "o", "\u001b[J"] +[22.090000000000003, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[22.120000000000005, "o", "\r\n"] +[22.150000000000006, "o", "$"] +[22.180000000000007, "o", " "] +[22.210000000000008, "o", "s"] +[22.24000000000001, "o", "g"] +[22.27000000000001, "o", "r"] +[22.30000000000001, "o", " "] +[22.330000000000013, "o", "i"] +[22.360000000000014, "o", "n"] +[22.390000000000015, "o", "i"] +[22.420000000000016, "o", "t"] +[22.450000000000017, "o", " "] +[22.480000000000018, "o", "d"] +[22.51000000000002, "o", "e"] +[22.54000000000002, "o", "m"] +[22.57000000000002, "o", "o"] +[22.600000000000023, "o", "/"] +[22.630000000000024, "o", "w"] +[22.660000000000025, "o", "e"] +[22.690000000000026, "o", "a"] +[22.720000000000027, "o", "t"] +[22.75000000000003, "o", "h"] +[22.78000000000003, "o", "e"] +[22.81000000000003, "o", "r"] +[22.840000000000032, "o", "\r\n"] +[22.870000000000033, "o", "$"] +[22.900000000000034, "o", " "] +[22.930000000000035, "o", "s"] +[22.960000000000036, "o", "g"] +[22.990000000000038, "o", "r"] +[23.02000000000004, "o", " "] +[23.05000000000004, "o", "c"] +[23.08000000000004, "o", "s"] +[23.110000000000042, "o", "v"] +[23.140000000000043, "o", " "] +[23.170000000000044, "o", "i"] +[23.200000000000045, "o", "m"] +[23.230000000000047, "o", "p"] +[23.260000000000048, "o", "o"] +[23.29000000000005, "o", "r"] +[23.32000000000005, "o", "t"] +[23.35000000000005, "o", " "] +[23.380000000000052, "o", "-"] +[23.410000000000053, "o", "f"] +[23.440000000000055, "o", " "] +[23.470000000000056, "o", "."] +[23.500000000000057, "o", "."] +[23.530000000000058, "o", "/"] +[23.56000000000006, "o", "i"] +[23.59000000000006, "o", "m"] +[23.62000000000006, "o", "p"] +[23.650000000000063, "o", "o"] +[23.680000000000064, "o", "r"] +[23.710000000000065, "o", "t"] +[23.740000000000066, "o", "-"] +[23.770000000000067, "o", "f"] +[23.800000000000068, "o", "r"] +[23.83000000000007, "o", "o"] +[23.86000000000007, "o", "m"] +[23.89000000000007, "o", "-"] +[23.920000000000073, "o", "c"] +[23.950000000000074, "o", "s"] +[23.980000000000075, "o", "v"] +[24.010000000000076, "o", "/"] +[24.040000000000077, "o", "r"] +[24.07000000000008, "o", "d"] +[24.10000000000008, "o", "u"] +[24.13000000000008, "o", "-"] +[24.160000000000082, "o", "w"] +[24.190000000000083, "o", "e"] +[24.220000000000084, "o", "a"] +[24.250000000000085, "o", "t"] +[24.280000000000086, "o", "h"] +[24.310000000000088, "o", "e"] +[24.34000000000009, "o", "r"] +[24.37000000000009, "o", "-"] +[24.40000000000009, "o", "h"] +[24.430000000000092, "o", "i"] +[24.460000000000093, "o", "s"] +[24.490000000000094, "o", "t"] +[24.520000000000095, "o", "o"] +[24.550000000000097, "o", "r"] +[24.580000000000098, "o", "y"] +[24.6100000000001, "o", "."] +[24.6400000000001, "o", "c"] +[24.6700000000001, "o", "s"] +[24.700000000000102, "o", "v"] +[24.730000000000103, "o", " "] +[24.760000000000105, "o", "\\"] +[24.790000000000106, "o", "\r\n "] +[24.820000000000107, "o", "-"] +[24.850000000000108, "o", "k"] +[24.88000000000011, "o", " "] +[24.91000000000011, "o", "d"] +[24.94000000000011, "o", "a"] +[24.970000000000113, "o", "t"] +[25.000000000000114, "o", "e"] +[25.030000000000115, "o", " "] +[25.060000000000116, "o", "\\"] +[25.090000000000117, "o", "\r\n "] +[25.12000000000012, "o", "-"] +[25.15000000000012, "o", "t"] +[25.18000000000012, "o", " "] +[25.21000000000012, "o", "d"] +[25.240000000000123, "o", "a"] +[25.270000000000124, "o", "t"] +[25.300000000000125, "o", "e"] +[25.330000000000126, "o", " "] +[25.360000000000127, "o", "t"] +[25.39000000000013, "o", "i"] +[25.42000000000013, "o", "m"] +[25.45000000000013, "o", "e"] +[25.480000000000132, "o", "s"] +[25.510000000000133, "o", "t"] +[25.540000000000134, "o", "a"] +[25.570000000000135, "o", "m"] +[25.600000000000136, "o", "p"] +[25.630000000000138, "o", " "] +[25.66000000000014, "o", "\\"] +[25.69000000000014, "o", "\r\n "] +[25.72000000000014, "o", "-"] +[25.750000000000142, "o", "-"] +[25.780000000000143, "o", "s"] +[25.810000000000144, "o", "e"] +[25.840000000000146, "o", "p"] +[25.870000000000147, "o", "a"] +[25.900000000000148, "o", "r"] +[25.93000000000015, "o", "a"] +[25.96000000000015, "o", "t"] +[25.99000000000015, "o", "o"] +[26.020000000000152, "o", "r"] +[26.050000000000153, "o", " "] +[26.080000000000155, "o", "\""] +[26.110000000000156, "o", ";"] +[26.140000000000157, "o", "\""] +[26.170000000000158, "o", " "] +[26.20000000000016, "o", "\\"] +[26.23000000000016, "o", "\r\n "] +[26.26000000000016, "o", "d"] +[26.290000000000163, "o", "e"] +[26.320000000000164, "o", "m"] +[26.350000000000165, "o", "o"] +[26.380000000000166, "o", "/"] +[26.410000000000167, "o", "w"] +[26.44000000000017, "o", "e"] +[26.47000000000017, "o", "a"] +[26.50000000000017, "o", "t"] +[26.53000000000017, "o", "h"] +[26.560000000000173, "o", "e"] +[26.590000000000174, "o", "r"] +[26.620000000000175, "o", " "] +[26.650000000000176, "o", "r"] +[26.680000000000177, "o", "d"] +[26.71000000000018, "o", "u"] +[26.74000000000018, "o", "\r\n"] +[26.77000000000018, "o", "$"] +[26.800000000000182, "o", " "] +[26.830000000000183, "o", "s"] +[26.860000000000184, "o", "g"] +[26.890000000000185, "o", "r"] +[26.920000000000186, "o", " "] +[26.950000000000188, "o", "c"] +[26.98000000000019, "o", "o"] +[27.01000000000019, "o", "m"] +[27.04000000000019, "o", "m"] +[27.070000000000192, "o", "i"] +[27.100000000000193, "o", "t"] +[27.130000000000194, "o", " "] +[27.160000000000196, "o", "d"] +[27.190000000000197, "o", "e"] +[27.220000000000198, "o", "m"] +[27.2500000000002, "o", "o"] +[27.2800000000002, "o", "/"] +[27.3100000000002, "o", "w"] +[27.340000000000202, "o", "e"] +[27.370000000000203, "o", "a"] +[27.400000000000205, "o", "t"] +[27.430000000000206, "o", "h"] +[27.460000000000207, "o", "e"] +[27.490000000000208, "o", "r"] +[27.52000000000021, "o", "\r\n"] +[27.55000000000021, "o", "$"] +[27.58000000000021, "o", " "] +[27.610000000000213, "o", "s"] +[27.640000000000214, "o", "g"] +[27.670000000000215, "o", "r"] +[27.700000000000216, "o", " "] +[27.730000000000217, "o", "t"] +[27.76000000000022, "o", "a"] +[27.79000000000022, "o", "g"] +[27.82000000000022, "o", " "] +[27.85000000000022, "o", "d"] +[27.880000000000223, "o", "e"] +[27.910000000000224, "o", "m"] +[27.940000000000225, "o", "o"] +[27.970000000000226, "o", "/"] +[28.000000000000227, "o", "w"] +[28.03000000000023, "o", "e"] +[28.06000000000023, "o", "a"] +[28.09000000000023, "o", "t"] +[28.120000000000232, "o", "h"] +[28.150000000000233, "o", "e"] +[28.180000000000234, "o", "r"] +[28.210000000000235, "o", " "] +[28.240000000000236, "o", "i"] +[28.270000000000238, "o", "n"] +[28.30000000000024, "o", "i"] +[28.33000000000024, "o", "t"] +[28.36000000000024, "o", "i"] +[28.390000000000242, "o", "a"] +[28.420000000000243, "o", "l"] +[28.450000000000244, "o", "_"] +[28.480000000000246, "o", "d"] +[28.510000000000247, "o", "a"] +[28.540000000000248, "o", "t"] +[28.57000000000025, "o", "a"] +[28.60000000000025, "o", "\r\n"] +[28.63000000000025, "o", "\u001b[0m"] +[28.660000000000252, "o", "\r\n"] +[29.053273115158333, "o", "Initialized empty repository demo/weather\r\n"] +[29.445151004791512, "o", "Committing demo/weather...\r\n"] +[29.47270766258265, "o", "Processing table rdu\r\n"] +[29.711862716675057, "o", "Committed demo/weather as f6760c44d8d5.\r\n"] +[30.09526363372828, "o", "Tagged demo/weather:f6760c44d8d564a2e5739a6910625ca23d3fa05ba76a5bc9f8715cf5e96a3cc9 with initial_data.\r\n"] +[30.12526363372828, "o", "\u001b[1m"] +[30.155263633728282, "o", "\u001b[36m"] +[30.185263633728283, "o", "\u001b[91m"] +[30.215263633728284, "o", "$"] +[30.245263633728285, "o", " "] +[30.275263633728287, "o", "\u001b[0m"] +[35.30526363372829, "o", "\u001b[H"] +[35.33526363372829, "o", "\u001b[J"] +[35.36526363372829, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset out to the other engine"] +[35.39526363372829, "o", "\r\n"] +[35.42526363372829, "o", "$ # Since by default Splitgraph is configured to use S3 for uploading, we need\r\n"] +[35.45526363372829, "o", "$ # to override the upload handler and upload data to the actual database.\r\n"] +[35.485263633728295, "o", "$"] +[35.515263633728296, "o", " "] +[35.5452636337283, "o", "s"] +[35.5752636337283, "o", "g"] +[35.6052636337283, "o", "r"] +[35.6352636337283, "o", " "] +[35.6652636337283, "o", "p"] +[35.6952636337283, "o", "u"] +[35.725263633728304, "o", "s"] +[35.755263633728305, "o", "h"] +[35.785263633728306, "o", " "] +[35.81526363372831, "o", "d"] +[35.84526363372831, "o", "e"] +[35.87526363372831, "o", "m"] +[35.90526363372831, "o", "o"] +[35.93526363372831, "o", "/"] +[35.96526363372831, "o", "w"] +[35.995263633728314, "o", "e"] +[36.025263633728315, "o", "a"] +[36.055263633728316, "o", "t"] +[36.08526363372832, "o", "h"] +[36.11526363372832, "o", "e"] +[36.14526363372832, "o", "r"] +[36.17526363372832, "o", " "] +[36.20526363372832, "o", "-"] +[36.23526363372832, "o", "-"] +[36.265263633728324, "o", "r"] +[36.295263633728325, "o", "e"] +[36.325263633728326, "o", "m"] +[36.35526363372833, "o", "o"] +[36.38526363372833, "o", "t"] +[36.41526363372833, "o", "e"] +[36.44526363372833, "o", " "] +[36.47526363372833, "o", "e"] +[36.50526363372833, "o", "n"] +[36.535263633728334, "o", "g"] +[36.565263633728335, "o", "i"] +[36.59526363372834, "o", "n"] +[36.62526363372834, "o", "e"] +[36.65526363372834, "o", "_"] +[36.68526363372834, "o", "2"] +[36.71526363372834, "o", " "] +[36.74526363372834, "o", "d"] +[36.77526363372834, "o", "e"] +[36.805263633728345, "o", "m"] +[36.835263633728346, "o", "o"] +[36.86526363372835, "o", "/"] +[36.89526363372835, "o", "w"] +[36.92526363372835, "o", "e"] +[36.95526363372835, "o", "a"] +[36.98526363372835, "o", "t"] +[37.01526363372835, "o", "h"] +[37.045263633728354, "o", "e"] +[37.075263633728355, "o", "r"] +[37.105263633728356, "o", " "] +[37.13526363372836, "o", "-"] +[37.16526363372836, "o", "-"] +[37.19526363372836, "o", "u"] +[37.22526363372836, "o", "p"] +[37.25526363372836, "o", "l"] +[37.28526363372836, "o", "o"] +[37.315263633728364, "o", "a"] +[37.345263633728365, "o", "d"] +[37.375263633728366, "o", "-"] +[37.40526363372837, "o", "h"] +[37.43526363372837, "o", "a"] +[37.46526363372837, "o", "n"] +[37.49526363372837, "o", "d"] +[37.52526363372837, "o", "l"] +[37.55526363372837, "o", "e"] +[37.585263633728374, "o", "r"] +[37.615263633728375, "o", " "] +[37.645263633728376, "o", "D"] +[37.67526363372838, "o", "B"] +[37.70526363372838, "o", "\r\n"] +[37.73526363372838, "o", "\u001b[0m"] +[37.76526363372838, "o", "\r\n"] +[38.1038225460056, "o", "Pushing demo/weather to demo/weather on remote engine_2\r\n"] +[38.1038556861881, "o", "Gathering remote metadata...\r\n"] +[38.168091611862536, "o", "Uploading 1 object, total size 109.61 KiB\r\n"] +[38.17383010864293, "o", "\r 0%| | 0/1 [00:00 6ff7efe8d083\r\n"] +[25.031337461471683, "o", "\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[25.039435348510867, "o", "Executing SQL...\r\n"] +[25.246935091018802, "o", "Committing demo/summary...\r\n"] +[25.276754102707034, "o", "Processing table monthly_summary\r\n"] +[25.37997671127332, "o", " ---> e855c34be6a5\r\n"] +[25.384117088317996, "o", "Successfully built demo/summary:e855c34be6a5.\r\n"] +[25.805613479614383, "o", "Tagged demo/summary:e855c34be6a573900e91cb1b5f67dc47a1eac4577c0d7455ef26d6002ddb7007 with based_on_initial.\r\n"] +[25.835613479614384, "o", "\u001b[1m"] +[25.865613479614385, "o", "\u001b[36m"] +[25.895613479614386, "o", "\u001b[91m"] +[25.925613479614388, "o", "$"] +[25.95561347961439, "o", " "] +[25.98561347961439, "o", "\u001b[0m"] +[31.01561347961439, "o", "\u001b[H"] +[31.045613479614392, "o", "\u001b[J"] +[31.075613479614393, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Much like with Docker, the build result is cached, so running build again checks out the existing image."] +[31.105613479614394, "o", "\r\n"] +[31.135613479614396, "o", "$"] +[31.165613479614397, "o", " "] +[31.195613479614398, "o", "s"] +[31.2256134796144, "o", "g"] +[31.2556134796144, "o", "r"] +[31.2856134796144, "o", " "] +[31.315613479614402, "o", "b"] +[31.345613479614403, "o", "u"] +[31.375613479614405, "o", "i"] +[31.405613479614406, "o", "l"] +[31.435613479614407, "o", "d"] +[31.465613479614408, "o", " "] +[31.49561347961441, "o", "r"] +[31.52561347961441, "o", "d"] +[31.55561347961441, "o", "u"] +[31.585613479614413, "o", "-"] +[31.615613479614414, "o", "w"] +[31.645613479614415, "o", "e"] +[31.675613479614416, "o", "a"] +[31.705613479614417, "o", "t"] +[31.73561347961442, "o", "h"] +[31.76561347961442, "o", "e"] +[31.79561347961442, "o", "r"] +[31.82561347961442, "o", "-"] +[31.855613479614423, "o", "s"] +[31.885613479614424, "o", "u"] +[31.915613479614425, "o", "m"] +[31.945613479614426, "o", "m"] +[31.975613479614427, "o", "a"] +[32.005613479614425, "o", "r"] +[32.035613479614426, "o", "y"] +[32.06561347961443, "o", "."] +[32.09561347961443, "o", "s"] +[32.12561347961443, "o", "p"] +[32.15561347961443, "o", "l"] +[32.18561347961443, "o", "i"] +[32.21561347961443, "o", "t"] +[32.245613479614434, "o", "f"] +[32.275613479614435, "o", "i"] +[32.305613479614436, "o", "l"] +[32.33561347961444, "o", "e"] +[32.36561347961444, "o", " "] +[32.39561347961444, "o", "-"] +[32.42561347961444, "o", "o"] +[32.45561347961444, "o", " "] +[32.48561347961444, "o", "d"] +[32.515613479614444, "o", "e"] +[32.545613479614445, "o", "m"] +[32.57561347961445, "o", "o"] +[32.60561347961445, "o", "/"] +[32.63561347961445, "o", "s"] +[32.66561347961445, "o", "u"] +[32.69561347961445, "o", "m"] +[32.72561347961445, "o", "m"] +[32.75561347961445, "o", "a"] +[32.785613479614454, "o", "r"] +[32.815613479614456, "o", "y"] +[32.84561347961446, "o", "\r\n"] +[32.87561347961446, "o", "\u001b[0m"] +[32.90561347961446, "o", "\r\n"] +[33.28827458381673, "o", "Executing Splitfile rdu-weather-summary.splitfile with arguments {}\r\n"] +[33.378997621536456, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather IMPORT rdu AS source_data\u001b[0m\r\n"] +[33.38006096839925, "o", "Resolving repository demo/weather\r\n"] +[33.51736885070821, "o", " ---> Using cache\r\n"] +[33.517385778427325, "o", " ---> 6ff7efe8d083\r\n"] +[33.517739114761554, "o", "\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[33.76427393913289, "o", " ---> Using cache\r\n"] +[33.764668521881305, "o", " ---> e855c34be6a5\r\n"] +[33.76808529853841, "o", "Successfully built demo/summary:e855c34be6a5.\r\n"] +[33.79808529853841, "o", "\u001b[1m"] +[33.82808529853841, "o", "\u001b[36m"] +[33.85808529853841, "o", "\u001b[91m"] +[33.888085298538414, "o", "$"] +[33.918085298538415, "o", " "] +[33.948085298538416, "o", "\u001b[0m"] +[38.97808529853842, "o", "\u001b[H"] +[39.00808529853842, "o", "\u001b[J"] +[39.03808529853842, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the new dataset"] +[39.06808529853842, "o", "\r\n"] +[39.09808529853842, "o", "$"] +[39.12808529853842, "o", " "] +[39.158085298538424, "o", "s"] +[39.188085298538425, "o", "g"] +[39.218085298538426, "o", "r"] +[39.24808529853843, "o", " "] +[39.27808529853843, "o", "s"] +[39.30808529853843, "o", "h"] +[39.33808529853843, "o", "o"] +[39.36808529853843, "o", "w"] +[39.39808529853843, "o", " "] +[39.428085298538434, "o", "d"] +[39.458085298538435, "o", "e"] +[39.48808529853844, "o", "m"] +[39.51808529853844, "o", "o"] +[39.54808529853844, "o", "/"] +[39.57808529853844, "o", "s"] +[39.60808529853844, "o", "u"] +[39.63808529853844, "o", "m"] +[39.66808529853844, "o", "m"] +[39.698085298538444, "o", "a"] +[39.728085298538446, "o", "r"] +[39.75808529853845, "o", "y"] +[39.78808529853845, "o", ":"] +[39.81808529853845, "o", "b"] +[39.84808529853845, "o", "a"] +[39.87808529853845, "o", "s"] +[39.90808529853845, "o", "e"] +[39.938085298538454, "o", "d"] +[39.968085298538455, "o", "_"] +[39.998085298538456, "o", "o"] +[40.02808529853846, "o", "n"] +[40.05808529853846, "o", "_"] +[40.08808529853846, "o", "i"] +[40.11808529853846, "o", "n"] +[40.14808529853846, "o", "i"] +[40.17808529853846, "o", "t"] +[40.208085298538464, "o", "i"] +[40.238085298538465, "o", "a"] +[40.268085298538466, "o", "l"] +[40.29808529853847, "o", "\r\n"] +[40.32808529853847, "o", "$"] +[40.35808529853847, "o", " "] +[40.38808529853847, "o", "s"] +[40.41808529853847, "o", "g"] +[40.44808529853847, "o", "r"] +[40.478085298538474, "o", " "] +[40.508085298538475, "o", "t"] +[40.538085298538476, "o", "a"] +[40.56808529853848, "o", "b"] +[40.59808529853848, "o", "l"] +[40.62808529853848, "o", "e"] +[40.65808529853848, "o", " "] +[40.68808529853848, "o", "d"] +[40.71808529853848, "o", "e"] +[40.748085298538484, "o", "m"] +[40.778085298538485, "o", "o"] +[40.80808529853849, "o", "/"] +[40.83808529853849, "o", "s"] +[40.86808529853849, "o", "u"] +[40.89808529853849, "o", "m"] +[40.92808529853849, "o", "m"] +[40.95808529853849, "o", "a"] +[40.98808529853849, "o", "r"] +[41.018085298538494, "o", "y"] +[41.048085298538496, "o", ":"] +[41.0780852985385, "o", "b"] +[41.1080852985385, "o", "a"] +[41.1380852985385, "o", "s"] +[41.1680852985385, "o", "e"] +[41.1980852985385, "o", "d"] +[41.2280852985385, "o", "_"] +[41.258085298538504, "o", "o"] +[41.288085298538505, "o", "n"] +[41.318085298538506, "o", "_"] +[41.34808529853851, "o", "i"] +[41.37808529853851, "o", "n"] +[41.40808529853851, "o", "i"] +[41.43808529853851, "o", "t"] +[41.46808529853851, "o", "i"] +[41.49808529853851, "o", "a"] +[41.528085298538514, "o", "l"] +[41.558085298538515, "o", " "] +[41.588085298538516, "o", "m"] +[41.61808529853852, "o", "o"] +[41.64808529853852, "o", "n"] +[41.67808529853852, "o", "t"] +[41.70808529853852, "o", "h"] +[41.73808529853852, "o", "l"] +[41.76808529853852, "o", "y"] +[41.798085298538524, "o", "_"] +[41.828085298538525, "o", "s"] +[41.858085298538526, "o", "u"] +[41.88808529853853, "o", "m"] +[41.91808529853853, "o", "m"] +[41.94808529853853, "o", "a"] +[41.97808529853853, "o", "r"] +[42.00808529853853, "o", "y"] +[42.03808529853853, "o", "\r\n"] +[42.068085298538534, "o", "$"] +[42.098085298538535, "o", " "] +[42.12808529853854, "o", "s"] +[42.15808529853854, "o", "g"] +[42.18808529853854, "o", "r"] +[42.21808529853854, "o", " "] +[42.24808529853854, "o", "s"] +[42.27808529853854, "o", "q"] +[42.30808529853854, "o", "l"] +[42.338085298538545, "o", " "] +[42.368085298538546, "o", "-"] +[42.39808529853855, "o", "s"] +[42.42808529853855, "o", " "] +[42.45808529853855, "o", "d"] +[42.48808529853855, "o", "e"] +[42.51808529853855, "o", "m"] +[42.54808529853855, "o", "o"] +[42.578085298538554, "o", "/"] +[42.608085298538555, "o", "s"] +[42.638085298538556, "o", "u"] +[42.66808529853856, "o", "m"] +[42.69808529853856, "o", "m"] +[42.72808529853856, "o", "a"] +[42.75808529853856, "o", "r"] +[42.78808529853856, "o", "y"] +[42.81808529853856, "o", " "] +[42.848085298538564, "o", "\""] +[42.878085298538565, "o", "S"] +[42.908085298538566, "o", "E"] +[42.93808529853857, "o", "L"] +[42.96808529853857, "o", "E"] +[42.99808529853857, "o", "C"] +[43.02808529853857, "o", "T"] +[43.05808529853857, "o", " "] +[43.08808529853857, "o", "*"] +[43.118085298538574, "o", " "] +[43.148085298538575, "o", "F"] +[43.178085298538576, "o", "R"] +[43.20808529853858, "o", "O"] +[43.23808529853858, "o", "M"] +[43.26808529853858, "o", " "] +[43.29808529853858, "o", "m"] +[43.32808529853858, "o", "o"] +[43.35808529853858, "o", "n"] +[43.388085298538584, "o", "t"] +[43.418085298538585, "o", "h"] +[43.44808529853859, "o", "l"] +[43.47808529853859, "o", "y"] +[43.50808529853859, "o", "_"] +[43.53808529853859, "o", "s"] +[43.56808529853859, "o", "u"] +[43.59808529853859, "o", "m"] +[43.62808529853859, "o", "m"] +[43.658085298538595, "o", "a"] +[43.688085298538596, "o", "r"] +[43.7180852985386, "o", "y"] +[43.7480852985386, "o", " "] +[43.7780852985386, "o", "O"] +[43.8080852985386, "o", "R"] +[43.8380852985386, "o", "D"] +[43.8680852985386, "o", "E"] +[43.898085298538604, "o", "R"] +[43.928085298538605, "o", " "] +[43.958085298538606, "o", "B"] +[43.98808529853861, "o", "Y"] +[44.01808529853861, "o", " "] +[44.04808529853861, "o", "m"] +[44.07808529853861, "o", "o"] +[44.10808529853861, "o", "n"] +[44.13808529853861, "o", "t"] +[44.168085298538614, "o", "h"] +[44.198085298538615, "o", " "] +[44.228085298538616, "o", "D"] +[44.25808529853862, "o", "E"] +[44.28808529853862, "o", "S"] +[44.31808529853862, "o", "C"] +[44.34808529853862, "o", " "] +[44.37808529853862, "o", "L"] +[44.40808529853862, "o", "I"] +[44.438085298538624, "o", "M"] +[44.468085298538625, "o", "I"] +[44.498085298538626, "o", "T"] +[44.52808529853863, "o", " "] +[44.55808529853863, "o", "5"] +[44.58808529853863, "o", "\""] +[44.61808529853863, "o", "\r\n"] +[44.64808529853863, "o", "\u001b[0m"] +[44.67808529853863, "o", "\r\n"] +[45.06318947792096, "o", "Image demo/summary:e855c34be6a573900e91cb1b5f67dc47a1eac4577c0d7455ef26d6002ddb7007\r\n"] +[45.06365820884747, "o", "CREATE TABLE monthly_summary AS ( SELECT to_char(date, 'YYYYMM') AS month, AVG(precipitation) AS average_precipitation, AVG(snowfall) AS average_snowfall FROM source_data GROUP BY month ORDER BY month ASC)\r\nCreated at 2021-05-05T11:32:58.427273\r\n"] +[45.06473299980206, "o", "Size: 111.78 KiB\r\n"] +[45.06474635124249, "o", "Parent: 6ff7efe8d0839e5dcba9f64695bae6bc670fffc0e34e3d291d1addee82a29364\r\n\r\nTables:\r\n"] +[45.06582304954571, "o", " monthly_summary\r\n"] +[45.065904827118345, "o", " source_data\r\n"] +[45.44423481941266, "o", "Table demo/summary:e855c34be6a573900e91cb1b5f67dc47a1eac4577c0d7455ef26d6002ddb7007/monthly_summary\r\n"] +[45.44424530983014, "o", "\r\n"] +[45.445811481476255, "o", "Size: 2.17 KiB\r\n"] +[45.44690653801007, "o", "Rows: 153\r\n"] +[45.44692179679913, "o", "Columns: \r\n month (text)\r\n average_precipitation (numeric)\r\n average_snowfall (numeric)\r\n\r\nObjects: \r\n o5e29c3cf82603335df66690a448ca1f604f0002d5a3496b18c982a5ea835f3\r\n"] +[45.829478712082334, "o", "201909 0.171667 0\r\n201908 0.139032 0\r\n201907 0.117097 0\r\n201906 0.12 0\r\n201905 0.103548 0\r\n"] +[45.859478712082336, "o", "\u001b[1m"] +[45.88947871208234, "o", "\u001b[36m"] +[45.91947871208234, "o", "\u001b[91m"] +[45.94947871208234, "o", "$"] +[45.97947871208234, "o", " "] +[46.00947871208234, "o", "\u001b[0m"] +[53.97808529853842, "o", "\u001b[H"] +[54.00808529853842, "o", "\u001b[J"] +[54.03808529853842, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image's provenance (generated from its metadata)"] +[54.06808529853842, "o", "\r\n"] +[54.09808529853842, "o", "$"] +[54.12808529853842, "o", " "] +[54.158085298538424, "o", "s"] +[54.188085298538425, "o", "g"] +[54.218085298538426, "o", "r"] +[54.24808529853843, "o", " "] +[54.27808529853843, "o", "p"] +[54.30808529853843, "o", "r"] +[54.33808529853843, "o", "o"] +[54.36808529853843, "o", "v"] +[54.39808529853843, "o", "e"] +[54.428085298538434, "o", "n"] +[54.458085298538435, "o", "a"] +[54.48808529853844, "o", "n"] +[54.51808529853844, "o", "c"] +[54.54808529853844, "o", "e"] +[54.57808529853844, "o", " "] +[54.60808529853844, "o", "d"] +[54.63808529853844, "o", "e"] +[54.66808529853844, "o", "m"] +[54.698085298538444, "o", "o"] +[54.728085298538446, "o", "/"] +[54.75808529853845, "o", "s"] +[54.78808529853845, "o", "u"] +[54.81808529853845, "o", "m"] +[54.84808529853845, "o", "m"] +[54.87808529853845, "o", "a"] +[54.90808529853845, "o", "r"] +[54.938085298538454, "o", "y"] +[54.968085298538455, "o", "\r\n"] +[54.998085298538456, "o", "$"] +[55.02808529853846, "o", " "] +[55.05808529853846, "o", "s"] +[55.08808529853846, "o", "g"] +[55.11808529853846, "o", "r"] +[55.14808529853846, "o", " "] +[55.17808529853846, "o", "p"] +[55.208085298538464, "o", "r"] +[55.238085298538465, "o", "o"] +[55.268085298538466, "o", "v"] +[55.29808529853847, "o", "e"] +[55.32808529853847, "o", "n"] +[55.35808529853847, "o", "a"] +[55.38808529853847, "o", "n"] +[55.41808529853847, "o", "c"] +[55.44808529853847, "o", "e"] +[55.478085298538474, "o", " "] +[55.508085298538475, "o", "-"] +[55.538085298538476, "o", "-"] +[55.56808529853848, "o", "f"] +[55.59808529853848, "o", "u"] +[55.62808529853848, "o", "l"] +[55.65808529853848, "o", "l"] +[55.68808529853848, "o", " "] +[55.71808529853848, "o", "d"] +[55.748085298538484, "o", "e"] +[55.778085298538485, "o", "m"] +[55.80808529853849, "o", "o"] +[55.83808529853849, "o", "/"] +[55.86808529853849, "o", "s"] +[55.89808529853849, "o", "u"] +[55.92808529853849, "o", "m"] +[55.95808529853849, "o", "m"] +[55.98808529853849, "o", "a"] +[56.018085298538494, "o", "r"] +[56.048085298538496, "o", "y"] +[56.0780852985385, "o", "\r\n"] +[56.1080852985385, "o", "\u001b[0m"] +[56.1380852985385, "o", "\r\n"] +[56.519123249054246, "o", "demo/summary:e855c34be6a573900e91cb1b5f67dc47a1eac4577c0d7455ef26d6002ddb7007 depends on:\r\ndemo/weather:57c041c542fd45891334df8c0d58867d84560fc2fb51d0b6ff6695c3223b442e\r\n"] +[56.91276710510283, "o", "# Splitfile commands used to recreate demo/summary:e855c34be6a573900e91cb1b5f67dc47a1eac4577c0d7455ef26d6002ddb7007\r\nFROM demo/weather:57c041c542fd45891334df8c0d58867d84560fc2fb51d0b6ff6695c3223b442e IMPORT rdu AS source_data\r\nSQL {CREATE TABLE monthly_summary\r\n AS SELECT to_char(date, 'YYYYMM') AS month\r\n , avg(precipitation) AS average_precipitation\r\n , avg(snowfall) AS average_snowfall\r\n FROM source_data\r\n GROUP BY month\r\n ORDER BY month ASC}\r\n"] +[56.94276710510283, "o", "\u001b[1m"] +[56.97276710510283, "o", "\u001b[36m"] +[57.00276710510283, "o", "\u001b[91m"] +[57.032767105102835, "o", "$"] +[57.062767105102836, "o", " "] +[57.09276710510284, "o", "\u001b[0m"] +[62.12276710510284, "o", "\u001b[H"] +[62.15276710510284, "o", "\u001b[J"] +[62.18276710510284, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We can also see that a new image has been derived from demo/weather"] +[62.21276710510284, "o", "\r\n"] +[62.24276710510284, "o", "$"] +[62.272767105102844, "o", " "] +[62.302767105102845, "o", "s"] +[62.332767105102846, "o", "g"] +[62.36276710510285, "o", "r"] +[62.39276710510285, "o", " "] +[62.42276710510285, "o", "d"] +[62.45276710510285, "o", "e"] +[62.48276710510285, "o", "p"] +[62.51276710510285, "o", "e"] +[62.542767105102854, "o", "n"] +[62.572767105102855, "o", "d"] +[62.602767105102856, "o", "e"] +[62.63276710510286, "o", "n"] +[62.66276710510286, "o", "t"] +[62.69276710510286, "o", "s"] +[62.72276710510286, "o", " "] +[62.75276710510286, "o", "d"] +[62.78276710510286, "o", "e"] +[62.812767105102864, "o", "m"] +[62.842767105102865, "o", "o"] +[62.87276710510287, "o", "/"] +[62.90276710510287, "o", "w"] +[62.93276710510287, "o", "e"] +[62.96276710510287, "o", "a"] +[62.99276710510287, "o", "t"] +[63.02276710510287, "o", "h"] +[63.05276710510287, "o", "e"] +[63.082767105102874, "o", "r"] +[63.112767105102876, "o", "\r\n"] +[63.14276710510288, "o", "\u001b[0m"] +[63.17276710510288, "o", "\r\n"] +[63.58284586906467, "o", "demo/weather:57c041c542fd45891334df8c0d58867d84560fc2fb51d0b6ff6695c3223b442e is depended on by:\r\n"] +[63.58287161827121, "o", "demo/summary:e855c34be6a573900e91cb1b5f67dc47a1eac4577c0d7455ef26d6002ddb7007\r\n"] +[63.612871618271214, "o", "\u001b[1m"] +[63.642871618271215, "o", "\u001b[36m"] +[63.672871618271216, "o", "\u001b[91m"] +[63.70287161827122, "o", "$"] +[63.73287161827122, "o", " "] +[63.76287161827122, "o", "\u001b[0m"] +[68.79287161827122, "o", "\u001b[H"] +[68.82287161827122, "o", "\u001b[J"] +[68.85287161827122, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now pretend there's been a revision to the source historical weather data"] +[68.88287161827122, "o", "\r\n"] +[68.91287161827123, "o", "$"] +[68.94287161827123, "o", " "] +[68.97287161827123, "o", "s"] +[69.00287161827123, "o", "g"] +[69.03287161827123, "o", "r"] +[69.06287161827123, "o", " "] +[69.09287161827123, "o", "s"] +[69.12287161827123, "o", "q"] +[69.15287161827123, "o", "l"] +[69.18287161827124, "o", " "] +[69.21287161827124, "o", "-"] +[69.24287161827124, "o", "s"] +[69.27287161827124, "o", " "] +[69.30287161827124, "o", "d"] +[69.33287161827124, "o", "e"] +[69.36287161827124, "o", "m"] +[69.39287161827124, "o", "o"] +[69.42287161827124, "o", "/"] +[69.45287161827125, "o", "w"] +[69.48287161827125, "o", "e"] +[69.51287161827125, "o", "a"] +[69.54287161827125, "o", "t"] +[69.57287161827125, "o", "h"] +[69.60287161827125, "o", "e"] +[69.63287161827125, "o", "r"] +[69.66287161827125, "o", " "] +[69.69287161827125, "o", "\""] +[69.72287161827126, "o", "U"] +[69.75287161827126, "o", "P"] +[69.78287161827126, "o", "D"] +[69.81287161827126, "o", "A"] +[69.84287161827126, "o", "T"] +[69.87287161827126, "o", "E"] +[69.90287161827126, "o", " "] +[69.93287161827126, "o", "r"] +[69.96287161827127, "o", "d"] +[69.99287161827127, "o", "u"] +[70.02287161827127, "o", " "] +[70.05287161827127, "o", "S"] +[70.08287161827127, "o", "E"] +[70.11287161827127, "o", "T"] +[70.14287161827127, "o", " "] +[70.17287161827127, "o", "p"] +[70.20287161827127, "o", "r"] +[70.23287161827128, "o", "e"] +[70.26287161827128, "o", "c"] +[70.29287161827128, "o", "i"] +[70.32287161827128, "o", "p"] +[70.35287161827128, "o", "i"] +[70.38287161827128, "o", "t"] +[70.41287161827128, "o", "a"] +[70.44287161827128, "o", "t"] +[70.47287161827128, "o", "i"] +[70.50287161827129, "o", "o"] +[70.53287161827129, "o", "n"] +[70.56287161827129, "o", " "] +[70.59287161827129, "o", "="] +[70.62287161827129, "o", " "] +[70.65287161827129, "o", "p"] +[70.68287161827129, "o", "r"] +[70.7128716182713, "o", "e"] +[70.7428716182713, "o", "c"] +[70.7728716182713, "o", "i"] +[70.8028716182713, "o", "p"] +[70.8328716182713, "o", "i"] +[70.8628716182713, "o", "t"] +[70.8928716182713, "o", "a"] +[70.9228716182713, "o", "t"] +[70.9528716182713, "o", "i"] +[70.9828716182713, "o", "o"] +[71.0128716182713, "o", "n"] +[71.0428716182713, "o", " "] +[71.07287161827131, "o", "*"] +[71.10287161827131, "o", " "] +[71.13287161827131, "o", "1"] +[71.16287161827131, "o", "."] +[71.19287161827131, "o", "2"] +[71.22287161827131, "o", " "] +[71.25287161827131, "o", "W"] +[71.28287161827132, "o", "H"] +[71.31287161827132, "o", "E"] +[71.34287161827132, "o", "R"] +[71.37287161827132, "o", "E"] +[71.40287161827132, "o", " "] +[71.43287161827132, "o", "E"] +[71.46287161827132, "o", "X"] +[71.49287161827132, "o", "T"] +[71.52287161827132, "o", "R"] +[71.55287161827133, "o", "A"] +[71.58287161827133, "o", "C"] +[71.61287161827133, "o", "T"] +[71.64287161827133, "o", " "] +[71.67287161827133, "o", "("] +[71.70287161827133, "o", "y"] +[71.73287161827133, "o", "e"] +[71.76287161827133, "o", "a"] +[71.79287161827133, "o", "r"] +[71.82287161827134, "o", " "] +[71.85287161827134, "o", "F"] +[71.88287161827134, "o", "R"] +[71.91287161827134, "o", "O"] +[71.94287161827134, "o", "M"] +[71.97287161827134, "o", " "] +[72.00287161827134, "o", "d"] +[72.03287161827134, "o", "a"] +[72.06287161827134, "o", "t"] +[72.09287161827135, "o", "e"] +[72.12287161827135, "o", ")"] +[72.15287161827135, "o", " "] +[72.18287161827135, "o", "="] +[72.21287161827135, "o", " "] +[72.24287161827135, "o", "2"] +[72.27287161827135, "o", "0"] +[72.30287161827135, "o", "1"] +[72.33287161827135, "o", "2"] +[72.36287161827136, "o", "\""] +[72.39287161827136, "o", "\r\n"] +[72.42287161827136, "o", "$"] +[72.45287161827136, "o", " "] +[72.48287161827136, "o", "s"] +[72.51287161827136, "o", "g"] +[72.54287161827136, "o", "r"] +[72.57287161827136, "o", " "] +[72.60287161827137, "o", "c"] +[72.63287161827137, "o", "o"] +[72.66287161827137, "o", "m"] +[72.69287161827137, "o", "m"] +[72.72287161827137, "o", "i"] +[72.75287161827137, "o", "t"] +[72.78287161827137, "o", " "] +[72.81287161827137, "o", "-"] +[72.84287161827137, "o", "m"] +[72.87287161827138, "o", " "] +[72.90287161827138, "o", "\""] +[72.93287161827138, "o", "R"] +[72.96287161827138, "o", "e"] +[72.99287161827138, "o", "v"] +[73.02287161827138, "o", "i"] +[73.05287161827138, "o", "s"] +[73.08287161827138, "o", "i"] +[73.11287161827138, "o", "o"] +[73.14287161827139, "o", "n"] +[73.17287161827139, "o", " "] +[73.20287161827139, "o", "t"] +[73.23287161827139, "o", "o"] +[73.26287161827139, "o", " "] +[73.29287161827139, "o", "t"] +[73.32287161827139, "o", "h"] +[73.3528716182714, "o", "e"] +[73.3828716182714, "o", " "] +[73.4128716182714, "o", "2"] +[73.4428716182714, "o", "0"] +[73.4728716182714, "o", "1"] +[73.5028716182714, "o", "2"] +[73.5328716182714, "o", " "] +[73.5628716182714, "o", "r"] +[73.5928716182714, "o", "a"] +[73.6228716182714, "o", "i"] +[73.6528716182714, "o", "n"] +[73.6828716182714, "o", "f"] +[73.71287161827141, "o", "a"] +[73.74287161827141, "o", "l"] +[73.77287161827141, "o", "l"] +[73.80287161827141, "o", " "] +[73.83287161827141, "o", "d"] +[73.86287161827141, "o", "a"] +[73.89287161827141, "o", "t"] +[73.92287161827142, "o", "a"] +[73.95287161827142, "o", "\""] +[73.98287161827142, "o", " "] +[74.01287161827142, "o", "d"] +[74.04287161827142, "o", "e"] +[74.07287161827142, "o", "m"] +[74.10287161827142, "o", "o"] +[74.13287161827142, "o", "/"] +[74.16287161827142, "o", "w"] +[74.19287161827143, "o", "e"] +[74.22287161827143, "o", "a"] +[74.25287161827143, "o", "t"] +[74.28287161827143, "o", "h"] +[74.31287161827143, "o", "e"] +[74.34287161827143, "o", "r"] +[74.37287161827143, "o", "\r\n"] +[74.40287161827143, "o", "$"] +[74.43287161827143, "o", " "] +[74.46287161827144, "o", "s"] +[74.49287161827144, "o", "g"] +[74.52287161827144, "o", "r"] +[74.55287161827144, "o", " "] +[74.58287161827144, "o", "t"] +[74.61287161827144, "o", "a"] +[74.64287161827144, "o", "g"] +[74.67287161827144, "o", " "] +[74.70287161827144, "o", "d"] +[74.73287161827145, "o", "e"] +[74.76287161827145, "o", "m"] +[74.79287161827145, "o", "o"] +[74.82287161827145, "o", "/"] +[74.85287161827145, "o", "w"] +[74.88287161827145, "o", "e"] +[74.91287161827145, "o", "a"] +[74.94287161827145, "o", "t"] +[74.97287161827145, "o", "h"] +[75.00287161827146, "o", "e"] +[75.03287161827146, "o", "r"] +[75.06287161827146, "o", " "] +[75.09287161827146, "o", "r"] +[75.12287161827146, "o", "e"] +[75.15287161827146, "o", "v"] +[75.18287161827146, "o", "i"] +[75.21287161827146, "o", "s"] +[75.24287161827147, "o", "e"] +[75.27287161827147, "o", "d"] +[75.30287161827147, "o", "_"] +[75.33287161827147, "o", "d"] +[75.36287161827147, "o", "a"] +[75.39287161827147, "o", "t"] +[75.42287161827147, "o", "a"] +[75.45287161827147, "o", "\r\n"] +[75.48287161827147, "o", "\u001b[0m"] +[75.51287161827148, "o", "\r\n"] +[75.90568124771178, "o", "Committing demo/weather...\r\n"] +[75.9418367099768, "o", "Storing and indexing table rdu\r\n"] +[76.13644945144713, "o", "Committed demo/weather as fef6340cac10.\r\n"] +[76.54712235450805, "o", "Tagged demo/weather:fef6340cac1025b8a5ebc5082ec64c91b7486018677177da46e63b3d08f51d90 with revised_data.\r\n"] +[76.57712235450805, "o", "\u001b[1m"] +[76.60712235450805, "o", "\u001b[36m"] +[76.63712235450805, "o", "\u001b[91m"] +[76.66712235450805, "o", "$"] +[76.69712235450805, "o", " "] +[76.72712235450805, "o", "\u001b[0m"] +[81.75712235450806, "o", "\u001b[H"] +[81.78712235450806, "o", "\u001b[J"] +[81.81712235450806, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Use the derivative image's provenance to rebuild it against the revised version"] +[81.84712235450806, "o", "\r\n"] +[81.87712235450806, "o", "$"] +[81.90712235450806, "o", " "] +[81.93712235450806, "o", "s"] +[81.96712235450806, "o", "g"] +[81.99712235450806, "o", "r"] +[82.02712235450807, "o", " "] +[82.05712235450807, "o", "r"] +[82.08712235450807, "o", "e"] +[82.11712235450807, "o", "b"] +[82.14712235450807, "o", "u"] +[82.17712235450807, "o", "i"] +[82.20712235450807, "o", "l"] +[82.23712235450807, "o", "d"] +[82.26712235450807, "o", " "] +[82.29712235450808, "o", "d"] +[82.32712235450808, "o", "e"] +[82.35712235450808, "o", "m"] +[82.38712235450808, "o", "o"] +[82.41712235450808, "o", "/"] +[82.44712235450808, "o", "s"] +[82.47712235450808, "o", "u"] +[82.50712235450808, "o", "m"] +[82.53712235450809, "o", "m"] +[82.56712235450809, "o", "a"] +[82.59712235450809, "o", "r"] +[82.62712235450809, "o", "y"] +[82.65712235450809, "o", " "] +[82.68712235450809, "o", "-"] +[82.71712235450809, "o", "-"] +[82.7471223545081, "o", "a"] +[82.7771223545081, "o", "g"] +[82.8071223545081, "o", "a"] +[82.8371223545081, "o", "i"] +[82.8671223545081, "o", "n"] +[82.8971223545081, "o", "s"] +[82.9271223545081, "o", "t"] +[82.9571223545081, "o", " "] +[82.9871223545081, "o", "d"] +[83.0171223545081, "o", "e"] +[83.0471223545081, "o", "m"] +[83.0771223545081, "o", "o"] +[83.1071223545081, "o", "/"] +[83.13712235450811, "o", "w"] +[83.16712235450811, "o", "e"] +[83.19712235450811, "o", "a"] +[83.22712235450811, "o", "t"] +[83.25712235450811, "o", "h"] +[83.28712235450811, "o", "e"] +[83.31712235450811, "o", "r"] +[83.34712235450812, "o", ":"] +[83.37712235450812, "o", "r"] +[83.40712235450812, "o", "e"] +[83.43712235450812, "o", "v"] +[83.46712235450812, "o", "i"] +[83.49712235450812, "o", "s"] +[83.52712235450812, "o", "e"] +[83.55712235450812, "o", "d"] +[83.58712235450812, "o", "_"] +[83.61712235450813, "o", "d"] +[83.64712235450813, "o", "a"] +[83.67712235450813, "o", "t"] +[83.70712235450813, "o", "a"] +[83.73712235450813, "o", "\r\n"] +[83.76712235450813, "o", "$"] +[83.79712235450813, "o", " "] +[83.82712235450813, "o", "s"] +[83.85712235450814, "o", "g"] +[83.88712235450814, "o", "r"] +[83.91712235450814, "o", " "] +[83.94712235450814, "o", "t"] +[83.97712235450814, "o", "a"] +[84.00712235450814, "o", "g"] +[84.03712235450814, "o", " "] +[84.06712235450814, "o", "d"] +[84.09712235450814, "o", "e"] +[84.12712235450815, "o", "m"] +[84.15712235450815, "o", "o"] +[84.18712235450815, "o", "/"] +[84.21712235450815, "o", "s"] +[84.24712235450815, "o", "u"] +[84.27712235450815, "o", "m"] +[84.30712235450815, "o", "m"] +[84.33712235450815, "o", "a"] +[84.36712235450815, "o", "r"] +[84.39712235450816, "o", "y"] +[84.42712235450816, "o", " "] +[84.45712235450816, "o", "b"] +[84.48712235450816, "o", "a"] +[84.51712235450816, "o", "s"] +[84.54712235450816, "o", "e"] +[84.57712235450816, "o", "d"] +[84.60712235450816, "o", "_"] +[84.63712235450816, "o", "o"] +[84.66712235450817, "o", "n"] +[84.69712235450817, "o", "_"] +[84.72712235450817, "o", "r"] +[84.75712235450817, "o", "e"] +[84.78712235450817, "o", "v"] +[84.81712235450817, "o", "i"] +[84.84712235450817, "o", "s"] +[84.87712235450817, "o", "e"] +[84.90712235450818, "o", "d"] +[84.93712235450818, "o", "\r\n"] +[84.96712235450818, "o", "\u001b[0m"] +[84.99712235450818, "o", "\r\n"] +[85.37562520027234, "o", "Rerunning demo/summary:e855c34be6a573900e91cb1b5f67dc47a1eac4577c0d7455ef26d6002ddb7007 against:\r\n"] +[85.37563783645703, "o", "demo/weather:revised_data\r\n"] +[85.45824248313977, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather:revised_data IMPORT rdu AS source_data\u001b[0m\r\n"] +[85.4601290893562, "o", "Resolving repository demo/weather\r\n"] +[85.46443397522046, "o", "Importing 1 table from demo/weather:fef6340cac10 into demo/summary\r\n"] +[85.63169891357495, "o", " ---> 2e0f971687c1\r\n"] +[85.63171631813123, "o", "\u001b[1m\r\nStep 2/2 : SQL {CREATE TABLE monthly_summary AS SELECT to_char(dat...\u001b[0m\r\n"] +[85.63676125526501, "o", "Executing SQL...\r\n"] +[85.84874493599011, "o", "Committing demo/summary...\r\n"] +[85.87301046371533, "o", "Processing table monthly_summary\r\n"] +[85.97412569046094, "o", " ---> 50ab7ebaab20\r\n"] +[85.97790843963696, "o", "Successfully built demo/summary:50ab7ebaab20.\r\n"] +[86.3767550659187, "o", "Tagged demo/summary:50ab7ebaab203ecf7b7d1ed055318d72aa811616aeed15c1172277e13b65e99d with based_on_revised.\r\n"] +[86.4067550659187, "o", "\u001b[1m"] +[86.4367550659187, "o", "\u001b[36m"] +[86.4667550659187, "o", "\u001b[91m"] +[86.4967550659187, "o", "$"] +[86.5267550659187, "o", " "] +[86.55675506591871, "o", "\u001b[0m"] +[91.58675506591871, "o", "\u001b[H"] +[91.61675506591871, "o", "\u001b[J"] +[91.64675506591871, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Compare the two resultant datasets"] +[91.67675506591871, "o", "\r\n"] +[91.70675506591871, "o", "$"] +[91.73675506591871, "o", " "] +[91.76675506591872, "o", "s"] +[91.79675506591872, "o", "g"] +[91.82675506591872, "o", "r"] +[91.85675506591872, "o", " "] +[91.88675506591872, "o", "d"] +[91.91675506591872, "o", "i"] +[91.94675506591872, "o", "f"] +[91.97675506591872, "o", "f"] +[92.00675506591872, "o", " "] +[92.03675506591873, "o", "d"] +[92.06675506591873, "o", "e"] +[92.09675506591873, "o", "m"] +[92.12675506591873, "o", "o"] +[92.15675506591873, "o", "/"] +[92.18675506591873, "o", "s"] +[92.21675506591873, "o", "u"] +[92.24675506591873, "o", "m"] +[92.27675506591873, "o", "m"] +[92.30675506591874, "o", "a"] +[92.33675506591874, "o", "r"] +[92.36675506591874, "o", "y"] +[92.39675506591874, "o", " "] +[92.42675506591874, "o", "b"] +[92.45675506591874, "o", "a"] +[92.48675506591874, "o", "s"] +[92.51675506591874, "o", "e"] +[92.54675506591875, "o", "d"] +[92.57675506591875, "o", "_"] +[92.60675506591875, "o", "o"] +[92.63675506591875, "o", "n"] +[92.66675506591875, "o", "_"] +[92.69675506591875, "o", "i"] +[92.72675506591875, "o", "n"] +[92.75675506591875, "o", "i"] +[92.78675506591875, "o", "t"] +[92.81675506591876, "o", "i"] +[92.84675506591876, "o", "a"] +[92.87675506591876, "o", "l"] +[92.90675506591876, "o", " "] +[92.93675506591876, "o", "b"] +[92.96675506591876, "o", "a"] +[92.99675506591876, "o", "s"] +[93.02675506591876, "o", "e"] +[93.05675506591876, "o", "d"] +[93.08675506591877, "o", "_"] +[93.11675506591877, "o", "o"] +[93.14675506591877, "o", "n"] +[93.17675506591877, "o", "_"] +[93.20675506591877, "o", "r"] +[93.23675506591877, "o", "e"] +[93.26675506591877, "o", "v"] +[93.29675506591877, "o", "i"] +[93.32675506591877, "o", "s"] +[93.35675506591878, "o", "e"] +[93.38675506591878, "o", "d"] +[93.41675506591878, "o", " "] +[93.44675506591878, "o", "-"] +[93.47675506591878, "o", "-"] +[93.50675506591878, "o", "v"] +[93.53675506591878, "o", "e"] +[93.56675506591878, "o", "r"] +[93.59675506591879, "o", "b"] +[93.62675506591879, "o", "o"] +[93.65675506591879, "o", "s"] +[93.68675506591879, "o", "e"] +[93.71675506591879, "o", " "] +[93.74675506591879, "o", "-"] +[93.77675506591879, "o", "-"] +[93.8067550659188, "o", "t"] +[93.8367550659188, "o", "a"] +[93.8667550659188, "o", "b"] +[93.8967550659188, "o", "l"] +[93.9267550659188, "o", "e"] +[93.9567550659188, "o", "-"] +[93.9867550659188, "o", "n"] +[94.0167550659188, "o", "a"] +[94.0467550659188, "o", "m"] +[94.0767550659188, "o", "e"] +[94.1067550659188, "o", " "] +[94.1367550659188, "o", "m"] +[94.1667550659188, "o", "o"] +[94.19675506591881, "o", "n"] +[94.22675506591881, "o", "t"] +[94.25675506591881, "o", "h"] +[94.28675506591881, "o", "l"] +[94.31675506591881, "o", "y"] +[94.34675506591881, "o", "_"] +[94.37675506591881, "o", "s"] +[94.40675506591882, "o", "u"] +[94.43675506591882, "o", "m"] +[94.46675506591882, "o", "m"] +[94.49675506591882, "o", "a"] +[94.52675506591882, "o", "r"] +[94.55675506591882, "o", "y"] +[94.58675506591882, "o", "\r\n"] +[94.61675506591882, "o", "\u001b[0m"] +[94.64675506591882, "o", "\r\n"] +[95.2460668945321, "o", "Between e855c34be6a5 and 50ab7ebaab20: \r\n"] +[95.24614724159326, "o", "monthly_summary: added 12 rows, removed 12 rows.\r\n- ('201201', Decimal('0.06322580645161290323'), Decimal('0E-20'))\r\n- ('201202', Decimal('0.06689655172413793103'), Decimal('0.03137931034482758621'))\r\n"] +[95.24684318542566, "o", "- ('201203', Decimal('0.17290322580645161290'), Decimal('0E-20'))\r\n"] +[95.24688967704859, "o", "- ('201204', Decimal('0.08766666666666666667'), Decimal('0E-20'))\r\n- ('201205', Decimal('0.12806451612903225806'), Decimal('0E-20'))\r\n- ('201206', Decimal('0.10333333333333333333'), Decimal('0E-20'))\r\n- ('201207', Decimal('0.14967741935483870968'), Decimal('0E-20'))\r\n- ('201208', Decimal('0.13000000000000000000'), Decimal('0E-20'))\r\n- ('201209', Decimal('0.26100000000000000000'), Decimal('0E-20'))\r\n"] +[95.24712594986048, "o", "- ('201210', Decimal('0.05903225806451612903'), Decimal('0E-20'))\r\n- ('201211', Decimal('0.01866666666666666667'), Decimal('0E-20'))\r\n- ('201212', Decimal('0.09483870967741935484'), Decimal('0E-20'))\r\n+ ('201201', Decimal('0.07587096774193548387'), Decimal('0E-20'))\r\n+ ('201202', Decimal('0.08027586206896551724'), Decimal('0.03137931034482758621'))\r\n+ ('201203', Decimal('0.20748387096774193548'), Decimal('0E-20'))\r\n+ ('201204', Decimal('0.10520000000000000000'), Decimal('0E-20'))\r\n+ ('201205', Decimal('0.15"] +[95.24714192390528, "o", "367741935483870968'), Decimal('0E-20'))\r\n+ ('201206', Decimal('0.12400000000000000000'), Decimal('0E-20'))\r\n+ ('201207', Decimal('0.17961290322580645161'), Decimal('0E-20'))\r\n+ ('201208', Decimal('0.15600000000000000000'), Decimal('0E-20'))\r\n+ ('201209', Decimal('0.31320000000000000000'), Decimal('0E-20'))\r\n+ ('201210', Decimal('0.07083870967741935484'), Decimal('0E-20'))\r\n+ ('201211', Decimal('0.02240000000000000000'), Decimal('0E-20'))\r\n"] +[95.2471474075326, "o", "+ ('201212', Decimal('0.11380645161290322581'), Decimal('0E-20'))\r\n"] +[95.2771474075326, "o", "\u001b[1m"] +[95.3071474075326, "o", "\u001b[36m"] +[95.3371474075326, "o", "\u001b[91m"] +[95.3671474075326, "o", "$"] +[95.3971474075326, "o", " "] +[95.4271474075326, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.14/splitgraph-cloud.cast b/content/casts/versioned/archive/v0.2.14/splitgraph-cloud.cast new file mode 100644 index 00000000..3c19011c --- /dev/null +++ b/content/casts/versioned/archive/v0.2.14/splitgraph-cloud.cast @@ -0,0 +1,1340 @@ +{"version": 2, "width": 100, "height": 22, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1620214326, "metadata": {"tss": [{"h": "Make sure you are registered and logged into Splitgraph Cloud.", "ts": 0.06}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport", "ts": 8.849999999999994}, {"h": "Push the dataset to Splitgraph", "ts": 21.540227260589475}, {"h": "Upload some dataset metadata as well.", "ts": 29.8638539505004}, {"h": "Perform a request against an automatically-generated", "ts": 40.3638539505004}, {"h": "sgr also has a shorthand to access the query API", "ts": 50.104971456527764}, {"h": "You can also run a query against the Splitgraph Data Delivery Network.", "ts": 59.10497145652788}, {"h": "The query API also supports running one-off Splitfile commands against a repository,", "ts": 70.29497145652807}, {"h": "Run another command against the new layer to join the two datasets", "ts": 79.80651998519947}, {"h": "Pull the dataset and check out the new image", "ts": 89.40814957618777}, {"h": "Inspect the generated data", "ts": 102.58559210777354}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make sure you are registered and logged into Splitgraph Cloud."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Test the connection.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "s"] +[0.27, "o", "g"] +[0.30000000000000004, "o", "r"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "q"] +[0.42000000000000015, "o", "l"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "-"] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", " "] +[0.5700000000000003, "o", "d"] +[0.6000000000000003, "o", "a"] +[0.6300000000000003, "o", "t"] +[0.6600000000000004, "o", "a"] +[0.6900000000000004, "o", "."] +[0.7200000000000004, "o", "s"] +[0.7500000000000004, "o", "p"] +[0.7800000000000005, "o", "l"] +[0.8100000000000005, "o", "i"] +[0.8400000000000005, "o", "t"] +[0.8700000000000006, "o", "g"] +[0.9000000000000006, "o", "r"] +[0.9300000000000006, "o", "a"] +[0.9600000000000006, "o", "p"] +[0.9900000000000007, "o", "h"] +[1.0200000000000007, "o", "."] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "o"] +[1.1100000000000008, "o", "m"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "\""] +[1.2000000000000008, "o", "S"] +[1.2300000000000009, "o", "E"] +[1.260000000000001, "o", "L"] +[1.290000000000001, "o", "E"] +[1.320000000000001, "o", "C"] +[1.350000000000001, "o", "T"] +[1.380000000000001, "o", " "] +[1.410000000000001, "o", "s"] +[1.440000000000001, "o", "p"] +[1.470000000000001, "o", "l"] +[1.500000000000001, "o", "i"] +[1.5300000000000011, "o", "t"] +[1.5600000000000012, "o", "g"] +[1.5900000000000012, "o", "r"] +[1.6200000000000012, "o", "a"] +[1.6500000000000012, "o", "p"] +[1.6800000000000013, "o", "h"] +[1.7100000000000013, "o", "_"] +[1.7400000000000013, "o", "a"] +[1.7700000000000014, "o", "p"] +[1.8000000000000014, "o", "i"] +[1.8300000000000014, "o", "."] +[1.8600000000000014, "o", "g"] +[1.8900000000000015, "o", "e"] +[1.9200000000000015, "o", "t"] +[1.9500000000000015, "o", "_"] +[1.9800000000000015, "o", "c"] +[2.0100000000000016, "o", "u"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "r"] +[2.100000000000001, "o", "e"] +[2.130000000000001, "o", "n"] +[2.1600000000000006, "o", "t"] +[2.1900000000000004, "o", "_"] +[2.22, "o", "u"] +[2.25, "o", "s"] +[2.28, "o", "e"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "n"] +[2.369999999999999, "o", "a"] +[2.399999999999999, "o", "m"] +[2.429999999999999, "o", "e"] +[2.4599999999999986, "o", "("] +[2.4899999999999984, "o", ")"] +[2.5199999999999982, "o", "\""] +[2.549999999999998, "o", "\r\n"] +[2.579999999999998, "o", "\u001b[0m"] +[2.6099999999999977, "o", "\r\n"] +[3.6099999999999977, "o", "splitgraph-demo\r\n"] +[3.6399999999999975, "o", "\u001b[1m"] +[3.6699999999999973, "o", "\u001b[36m"] +[3.699999999999997, "o", "\u001b[91m"] +[3.729999999999997, "o", "$"] +[3.7599999999999967, "o", " "] +[3.7899999999999965, "o", "\u001b[0m"] +[8.819999999999995, "o", "\u001b[H"] +[8.849999999999994, "o", "\u001b[J"] +[8.879999999999994, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport"] +[8.909999999999993, "o", "\r\n"] +[8.939999999999992, "o", "$"] +[8.969999999999992, "o", " "] +[8.999999999999991, "o", "s"] +[9.02999999999999, "o", "g"] +[9.05999999999999, "o", "r"] +[9.08999999999999, "o", " "] +[9.119999999999989, "o", "i"] +[9.149999999999988, "o", "n"] +[9.179999999999987, "o", "i"] +[9.209999999999987, "o", "t"] +[9.239999999999986, "o", " "] +[9.269999999999985, "o", "w"] +[9.299999999999985, "o", "e"] +[9.329999999999984, "o", "a"] +[9.359999999999983, "o", "t"] +[9.389999999999983, "o", "h"] +[9.419999999999982, "o", "e"] +[9.449999999999982, "o", "r"] +[9.47999999999998, "o", "\r\n"] +[9.50999999999998, "o", "$"] +[9.53999999999998, "o", " "] +[9.569999999999979, "o", "s"] +[9.599999999999978, "o", "g"] +[9.629999999999978, "o", "r"] +[9.659999999999977, "o", " "] +[9.689999999999976, "o", "c"] +[9.719999999999976, "o", "s"] +[9.749999999999975, "o", "v"] +[9.779999999999974, "o", " "] +[9.809999999999974, "o", "i"] +[9.839999999999973, "o", "m"] +[9.869999999999973, "o", "p"] +[9.899999999999972, "o", "o"] +[9.929999999999971, "o", "r"] +[9.95999999999997, "o", "t"] +[9.98999999999997, "o", " "] +[10.01999999999997, "o", "-"] +[10.049999999999969, "o", "f"] +[10.079999999999968, "o", " "] +[10.109999999999967, "o", "."] +[10.139999999999967, "o", "."] +[10.169999999999966, "o", "/"] +[10.199999999999966, "o", "i"] +[10.229999999999965, "o", "m"] +[10.259999999999964, "o", "p"] +[10.289999999999964, "o", "o"] +[10.319999999999963, "o", "r"] +[10.349999999999962, "o", "t"] +[10.379999999999962, "o", "-"] +[10.409999999999961, "o", "f"] +[10.43999999999996, "o", "r"] +[10.46999999999996, "o", "o"] +[10.49999999999996, "o", "m"] +[10.529999999999959, "o", "-"] +[10.559999999999958, "o", "c"] +[10.589999999999957, "o", "s"] +[10.619999999999957, "o", "v"] +[10.649999999999956, "o", "/"] +[10.679999999999955, "o", "r"] +[10.709999999999955, "o", "d"] +[10.739999999999954, "o", "u"] +[10.769999999999953, "o", "-"] +[10.799999999999953, "o", "w"] +[10.829999999999952, "o", "e"] +[10.859999999999951, "o", "a"] +[10.88999999999995, "o", "t"] +[10.91999999999995, "o", "h"] +[10.94999999999995, "o", "e"] +[10.979999999999949, "o", "r"] +[11.009999999999948, "o", "-"] +[11.039999999999948, "o", "h"] +[11.069999999999947, "o", "i"] +[11.099999999999946, "o", "s"] +[11.129999999999946, "o", "t"] +[11.159999999999945, "o", "o"] +[11.189999999999944, "o", "r"] +[11.219999999999944, "o", "y"] +[11.249999999999943, "o", "."] +[11.279999999999943, "o", "c"] +[11.309999999999942, "o", "s"] +[11.339999999999941, "o", "v"] +[11.36999999999994, "o", " "] +[11.39999999999994, "o", "\\"] +[11.42999999999994, "o", "\r\n "] +[11.459999999999939, "o", "-"] +[11.489999999999938, "o", "k"] +[11.519999999999937, "o", " "] +[11.549999999999937, "o", "d"] +[11.579999999999936, "o", "a"] +[11.609999999999935, "o", "t"] +[11.639999999999935, "o", "e"] +[11.669999999999934, "o", " "] +[11.699999999999934, "o", "\\"] +[11.729999999999933, "o", "\r\n "] +[11.759999999999932, "o", "-"] +[11.789999999999932, "o", "t"] +[11.819999999999931, "o", " "] +[11.84999999999993, "o", "d"] +[11.87999999999993, "o", "a"] +[11.909999999999929, "o", "t"] +[11.939999999999928, "o", "e"] +[11.969999999999928, "o", " "] +[11.999999999999927, "o", "t"] +[12.029999999999927, "o", "i"] +[12.059999999999926, "o", "m"] +[12.089999999999925, "o", "e"] +[12.119999999999925, "o", "s"] +[12.149999999999924, "o", "t"] +[12.179999999999923, "o", "a"] +[12.209999999999923, "o", "m"] +[12.239999999999922, "o", "p"] +[12.269999999999921, "o", " "] +[12.29999999999992, "o", "\\"] +[12.32999999999992, "o", "\r\n "] +[12.35999999999992, "o", "-"] +[12.389999999999919, "o", "-"] +[12.419999999999918, "o", "s"] +[12.449999999999918, "o", "e"] +[12.479999999999917, "o", "p"] +[12.509999999999916, "o", "a"] +[12.539999999999916, "o", "r"] +[12.569999999999915, "o", "a"] +[12.599999999999914, "o", "t"] +[12.629999999999914, "o", "o"] +[12.659999999999913, "o", "r"] +[12.689999999999912, "o", " "] +[12.719999999999912, "o", "\""] +[12.749999999999911, "o", ";"] +[12.77999999999991, "o", "\""] +[12.80999999999991, "o", " "] +[12.83999999999991, "o", "\\"] +[12.869999999999909, "o", "\r\n "] +[12.899999999999908, "o", "w"] +[12.929999999999907, "o", "e"] +[12.959999999999907, "o", "a"] +[12.989999999999906, "o", "t"] +[13.019999999999905, "o", "h"] +[13.049999999999905, "o", "e"] +[13.079999999999904, "o", "r"] +[13.109999999999904, "o", " "] +[13.139999999999903, "o", "r"] +[13.169999999999902, "o", "d"] +[13.199999999999902, "o", "u"] +[13.229999999999901, "o", "\r\n"] +[13.2599999999999, "o", "$"] +[13.2899999999999, "o", " "] +[13.319999999999899, "o", "s"] +[13.349999999999898, "o", "g"] +[13.379999999999898, "o", "r"] +[13.409999999999897, "o", " "] +[13.439999999999896, "o", "c"] +[13.469999999999896, "o", "o"] +[13.499999999999895, "o", "m"] +[13.529999999999895, "o", "m"] +[13.559999999999894, "o", "i"] +[13.589999999999893, "o", "t"] +[13.619999999999893, "o", " "] +[13.649999999999892, "o", "w"] +[13.679999999999891, "o", "e"] +[13.70999999999989, "o", "a"] +[13.73999999999989, "o", "t"] +[13.76999999999989, "o", "h"] +[13.799999999999889, "o", "e"] +[13.829999999999888, "o", "r"] +[13.859999999999888, "o", "\r\n"] +[13.889999999999887, "o", "$"] +[13.919999999999886, "o", " "] +[13.949999999999886, "o", "s"] +[13.979999999999885, "o", "g"] +[14.009999999999884, "o", "r"] +[14.039999999999884, "o", " "] +[14.069999999999883, "o", "t"] +[14.099999999999882, "o", "a"] +[14.129999999999882, "o", "g"] +[14.159999999999881, "o", " "] +[14.18999999999988, "o", "w"] +[14.21999999999988, "o", "e"] +[14.24999999999988, "o", "a"] +[14.279999999999879, "o", "t"] +[14.309999999999878, "o", "h"] +[14.339999999999877, "o", "e"] +[14.369999999999877, "o", "r"] +[14.399999999999876, "o", " "] +[14.429999999999875, "o", "i"] +[14.459999999999875, "o", "n"] +[14.489999999999874, "o", "i"] +[14.519999999999873, "o", "t"] +[14.549999999999873, "o", "i"] +[14.579999999999872, "o", "a"] +[14.609999999999872, "o", "l"] +[14.639999999999871, "o", "_"] +[14.66999999999987, "o", "d"] +[14.69999999999987, "o", "a"] +[14.729999999999869, "o", "t"] +[14.759999999999868, "o", "a"] +[14.789999999999868, "o", "\r\n"] +[14.819999999999867, "o", "\u001b[0m"] +[14.849999999999866, "o", "\r\n"] +[15.264710998535023, "o", "Initialized empty repository weather\r\n"] +[15.652485227584705, "o", "Committing weather...\r\n"] +[15.679717397689686, "o", "Processing table rdu\r\n"] +[15.911805725097523, "o", "Committed weather as 34248ac7a9f2.\r\n"] +[16.300227260589466, "o", "Tagged weather:34248ac7a9f2cf06e9bd04f1ef1839c96f498e7db4485d2ca45491832e6d73dd with initial_data.\r\n"] +[16.330227260589467, "o", "\u001b[1m"] +[16.36022726058947, "o", "\u001b[36m"] +[16.39022726058947, "o", "\u001b[91m"] +[16.42022726058947, "o", "$"] +[16.45022726058947, "o", " "] +[16.480227260589473, "o", "\u001b[0m"] +[21.510227260589474, "o", "\u001b[H"] +[21.540227260589475, "o", "\u001b[J"] +[21.570227260589476, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset to Splitgraph"] +[21.600227260589477, "o", "\r\n"] +[21.63022726058948, "o", "$"] +[21.66022726058948, "o", " "] +[21.69022726058948, "o", "s"] +[21.720227260589482, "o", "g"] +[21.750227260589483, "o", "r"] +[21.780227260589484, "o", " "] +[21.810227260589485, "o", "p"] +[21.840227260589486, "o", "u"] +[21.870227260589488, "o", "s"] +[21.90022726058949, "o", "h"] +[21.93022726058949, "o", " "] +[21.96022726058949, "o", "w"] +[21.990227260589492, "o", "e"] +[22.020227260589493, "o", "a"] +[22.050227260589494, "o", "t"] +[22.080227260589496, "o", "h"] +[22.110227260589497, "o", "e"] +[22.140227260589498, "o", "r"] +[22.1702272605895, "o", "\r\n"] +[22.2002272605895, "o", "\u001b[0m"] +[22.2302272605895, "o", "\r\n"] +[22.616494445800683, "o", "Pushing weather to splitgraph-demo/weather on remote data.splitgraph.com\r\n"] +[22.617250947952172, "o", "Gathering remote metadata...\r\n"] +[23.617250947952172, "o", "No objects to upload.\r\n"] +[24.617250947952172, "o", "Uploaded metadata for 2 images, 1 table, 0 objects and 1 tag."] +[24.61731746673574, "o", "\r\n"] +[24.62385395050039, "o", "Setting upstream for weather to splitgraph-demo/weather.\r\n"] +[24.65385395050039, "o", "\u001b[1m"] +[24.683853950500392, "o", "\u001b[36m"] +[24.713853950500393, "o", "\u001b[91m"] +[24.743853950500394, "o", "$"] +[24.773853950500396, "o", " "] +[24.803853950500397, "o", "\u001b[0m"] +[29.833853950500398, "o", "\u001b[H"] +[29.8638539505004, "o", "\u001b[J"] +[29.8938539505004, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Upload some dataset metadata as well."] +[29.9238539505004, "o", "\r\n"] +[29.953853950500402, "o", "$"] +[29.983853950500404, "o", " "] +[30.013853950500405, "o", "c"] +[30.043853950500406, "o", "a"] +[30.073853950500407, "o", "t"] +[30.103853950500408, "o", " "] +[30.13385395050041, "o", "d"] +[30.16385395050041, "o", "a"] +[30.19385395050041, "o", "t"] +[30.223853950500413, "o", "a"] +[30.253853950500414, "o", "s"] +[30.283853950500415, "o", "e"] +[30.313853950500416, "o", "t"] +[30.343853950500417, "o", "-"] +[30.37385395050042, "o", "m"] +[30.40385395050042, "o", "e"] +[30.43385395050042, "o", "t"] +[30.46385395050042, "o", "a"] +[30.493853950500423, "o", "d"] +[30.523853950500424, "o", "a"] +[30.553853950500425, "o", "t"] +[30.583853950500426, "o", "a"] +[30.613853950500427, "o", "."] +[30.64385395050043, "o", "y"] +[30.67385395050043, "o", "m"] +[30.70385395050043, "o", "l"] +[30.733853950500432, "o", "\r\n"] +[30.763853950500433, "o", "$"] +[30.793853950500434, "o", " "] +[30.823853950500435, "o", "c"] +[30.853853950500437, "o", "a"] +[30.883853950500438, "o", "t"] +[30.91385395050044, "o", " "] +[30.94385395050044, "o", "d"] +[30.97385395050044, "o", "a"] +[31.003853950500442, "o", "t"] +[31.033853950500443, "o", "a"] +[31.063853950500445, "o", "s"] +[31.093853950500446, "o", "e"] +[31.123853950500447, "o", "t"] +[31.153853950500448, "o", "-"] +[31.18385395050045, "o", "r"] +[31.21385395050045, "o", "e"] +[31.24385395050045, "o", "a"] +[31.273853950500452, "o", "d"] +[31.303853950500454, "o", "m"] +[31.333853950500455, "o", "e"] +[31.363853950500456, "o", "."] +[31.393853950500457, "o", "m"] +[31.423853950500458, "o", "d"] +[31.45385395050046, "o", "\r\n"] +[31.48385395050046, "o", "$"] +[31.51385395050046, "o", " "] +[31.543853950500463, "o", "s"] +[31.573853950500464, "o", "g"] +[31.603853950500465, "o", "r"] +[31.633853950500466, "o", " "] +[31.663853950500467, "o", "c"] +[31.69385395050047, "o", "l"] +[31.72385395050047, "o", "o"] +[31.75385395050047, "o", "u"] +[31.783853950500472, "o", "d"] +[31.813853950500473, "o", " "] +[31.843853950500474, "o", "m"] +[31.873853950500475, "o", "e"] +[31.903853950500476, "o", "t"] +[31.933853950500477, "o", "a"] +[31.96385395050048, "o", "d"] +[31.99385395050048, "o", "a"] +[32.02385395050048, "o", "t"] +[32.05385395050048, "o", "a"] +[32.08385395050048, "o", " "] +[32.113853950500484, "o", "s"] +[32.143853950500485, "o", "p"] +[32.17385395050049, "o", "l"] +[32.20385395050049, "o", "i"] +[32.23385395050049, "o", "t"] +[32.26385395050049, "o", "g"] +[32.29385395050049, "o", "r"] +[32.32385395050049, "o", "a"] +[32.35385395050049, "o", "p"] +[32.383853950500495, "o", "h"] +[32.413853950500496, "o", "-"] +[32.4438539505005, "o", "d"] +[32.4738539505005, "o", "e"] +[32.5038539505005, "o", "m"] +[32.5338539505005, "o", "o"] +[32.5638539505005, "o", "/"] +[32.5938539505005, "o", "w"] +[32.623853950500504, "o", "e"] +[32.653853950500505, "o", "a"] +[32.683853950500506, "o", "t"] +[32.71385395050051, "o", "h"] +[32.74385395050051, "o", "e"] +[32.77385395050051, "o", "r"] +[32.80385395050051, "o", " "] +[32.83385395050051, "o", "d"] +[32.86385395050051, "o", "a"] +[32.893853950500514, "o", "t"] +[32.923853950500515, "o", "a"] +[32.953853950500516, "o", "s"] +[32.98385395050052, "o", "e"] +[33.01385395050052, "o", "t"] +[33.04385395050052, "o", "-"] +[33.07385395050052, "o", "m"] +[33.10385395050052, "o", "e"] +[33.13385395050052, "o", "t"] +[33.163853950500524, "o", "a"] +[33.193853950500525, "o", "d"] +[33.223853950500526, "o", "a"] +[33.25385395050053, "o", "t"] +[33.28385395050053, "o", "a"] +[33.31385395050053, "o", "."] +[33.34385395050053, "o", "y"] +[33.37385395050053, "o", "m"] +[33.40385395050053, "o", "l"] +[33.433853950500534, "o", "\r\n"] +[33.463853950500535, "o", "\u001b[0m"] +[33.49385395050054, "o", "\r\n"] +[33.495613956451464, "o", "# This is a sample dataset metadata file that's used\r\n# to update the dataset's README and description.\r\n\r\nreadme: dataset-readme.md\r\ndescription: Weather history in Raleigh-Durham International airport joined with US domestic flights data (uploaded from Splitgraph release CI)\r\n"] +[33.497057342529345, "o", "# Sample dataset README\r\n\r\nDataset of weather history in Raleigh-Durham International airport, joined with\r\n[US domestic flights data](/splitgraph/domestic_us_flights).\r\n\r\nThis dataset was uploaded from a CI job.\r\n\r\n## Source\r\n\r\n[data.gov](https://catalog.data.gov/dataset/local-weather-archive)\r\n"] +[34.497057342529345, "o", "Metadata updated for repository splitgraph-demo/weather.\r\n"] +[34.527057342529346, "o", "\u001b[1m"] +[34.55705734252935, "o", "\u001b[36m"] +[34.58705734252935, "o", "\u001b[91m"] +[34.61705734252935, "o", "$"] +[34.64705734252935, "o", " "] +[34.67705734252935, "o", "\u001b[0m"] +[40.3338539505004, "o", "\u001b[H"] +[40.3638539505004, "o", "\u001b[J"] +[40.3938539505004, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Perform a request against an automatically-generated"] +[40.4238539505004, "o", "\r\n"] +[40.4538539505004, "o", "$ # Postgrest (https://postgrest.org) endpoint.\r\n"] +[40.483853950500404, "o", "$"] +[40.513853950500405, "o", " "] +[40.543853950500406, "o", "c"] +[40.57385395050041, "o", "u"] +[40.60385395050041, "o", "r"] +[40.63385395050041, "o", "l"] +[40.66385395050041, "o", " "] +[40.69385395050041, "o", "\""] +[40.72385395050041, "o", "h"] +[40.753853950500414, "o", "t"] +[40.783853950500415, "o", "t"] +[40.813853950500416, "o", "p"] +[40.84385395050042, "o", "s"] +[40.87385395050042, "o", ":"] +[40.90385395050042, "o", "/"] +[40.93385395050042, "o", "/"] +[40.96385395050042, "o", "d"] +[40.99385395050042, "o", "a"] +[41.023853950500424, "o", "t"] +[41.053853950500425, "o", "a"] +[41.083853950500426, "o", "."] +[41.11385395050043, "o", "s"] +[41.14385395050043, "o", "p"] +[41.17385395050043, "o", "l"] +[41.20385395050043, "o", "i"] +[41.23385395050043, "o", "t"] +[41.26385395050043, "o", "g"] +[41.293853950500434, "o", "r"] +[41.323853950500435, "o", "a"] +[41.35385395050044, "o", "p"] +[41.38385395050044, "o", "h"] +[41.41385395050044, "o", "."] +[41.44385395050044, "o", "c"] +[41.47385395050044, "o", "o"] +[41.50385395050044, "o", "m"] +[41.53385395050044, "o", "/"] +[41.563853950500445, "o", "s"] +[41.593853950500446, "o", "p"] +[41.62385395050045, "o", "l"] +[41.65385395050045, "o", "i"] +[41.68385395050045, "o", "t"] +[41.71385395050045, "o", "g"] +[41.74385395050045, "o", "r"] +[41.77385395050045, "o", "a"] +[41.803853950500454, "o", "p"] +[41.833853950500455, "o", "h"] +[41.863853950500456, "o", "-"] +[41.89385395050046, "o", "d"] +[41.92385395050046, "o", "e"] +[41.95385395050046, "o", "m"] +[41.98385395050046, "o", "o"] +[42.01385395050046, "o", "/"] +[42.04385395050046, "o", "w"] +[42.073853950500464, "o", "e"] +[42.103853950500465, "o", "a"] +[42.133853950500466, "o", "t"] +[42.16385395050047, "o", "h"] +[42.19385395050047, "o", "e"] +[42.22385395050047, "o", "r"] +[42.25385395050047, "o", "/"] +[42.28385395050047, "o", "i"] +[42.31385395050047, "o", "n"] +[42.343853950500474, "o", "i"] +[42.373853950500475, "o", "t"] +[42.403853950500476, "o", "i"] +[42.43385395050048, "o", "a"] +[42.46385395050048, "o", "l"] +[42.49385395050048, "o", "_"] +[42.52385395050048, "o", "d"] +[42.55385395050048, "o", "a"] +[42.58385395050048, "o", "t"] +[42.613853950500484, "o", "a"] +[42.643853950500485, "o", "/"] +[42.67385395050049, "o", "-"] +[42.70385395050049, "o", "/"] +[42.73385395050049, "o", "r"] +[42.76385395050049, "o", "e"] +[42.79385395050049, "o", "s"] +[42.82385395050049, "o", "t"] +[42.85385395050049, "o", "/"] +[42.883853950500495, "o", "r"] +[42.913853950500496, "o", "d"] +[42.9438539505005, "o", "u"] +[42.9738539505005, "o", "?"] +[43.0038539505005, "o", "d"] +[43.0338539505005, "o", "a"] +[43.0638539505005, "o", "t"] +[43.0938539505005, "o", "e"] +[43.123853950500504, "o", "="] +[43.153853950500505, "o", "e"] +[43.183853950500506, "o", "q"] +[43.21385395050051, "o", "."] +[43.24385395050051, "o", "2"] +[43.27385395050051, "o", "0"] +[43.30385395050051, "o", "0"] +[43.33385395050051, "o", "9"] +[43.36385395050051, "o", "-"] +[43.393853950500514, "o", "0"] +[43.423853950500515, "o", "8"] +[43.453853950500516, "o", "-"] +[43.48385395050052, "o", "2"] +[43.51385395050052, "o", "5"] +[43.54385395050052, "o", "T"] +[43.57385395050052, "o", "0"] +[43.60385395050052, "o", "0"] +[43.63385395050052, "o", ":"] +[43.663853950500524, "o", "0"] +[43.693853950500525, "o", "0"] +[43.723853950500526, "o", ":"] +[43.75385395050053, "o", "0"] +[43.78385395050053, "o", "0"] +[43.81385395050053, "o", "\""] +[43.84385395050053, "o", "\r\n"] +[43.87385395050053, "o", "\u001b[0m"] +[43.90385395050053, "o", "\r\n"] +[44.864971456527755, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[44.894971456527756, "o", "\u001b[1m"] +[44.92497145652776, "o", "\u001b[36m"] +[44.95497145652776, "o", "\u001b[91m"] +[44.98497145652776, "o", "$"] +[45.01497145652776, "o", " "] +[45.04497145652776, "o", "\u001b[0m"] +[50.07497145652776, "o", "\u001b[H"] +[50.104971456527764, "o", "\u001b[J"] +[50.134971456527765, "o", "\u001b[1m\u001b[36m\u001b[91m$ # sgr also has a shorthand to access the query API"] +[50.164971456527766, "o", "\r\n"] +[50.19497145652777, "o", "$"] +[50.22497145652777, "o", " "] +[50.25497145652777, "o", "s"] +[50.28497145652777, "o", "g"] +[50.31497145652777, "o", "r"] +[50.34497145652777, "o", " "] +[50.374971456527774, "o", "c"] +[50.404971456527775, "o", "l"] +[50.43497145652778, "o", "o"] +[50.46497145652778, "o", "u"] +[50.49497145652778, "o", "d"] +[50.52497145652778, "o", " "] +[50.55497145652778, "o", "c"] +[50.58497145652778, "o", "u"] +[50.61497145652778, "o", "r"] +[50.644971456527784, "o", "l"] +[50.674971456527786, "o", " "] +[50.70497145652779, "o", "s"] +[50.73497145652779, "o", "p"] +[50.76497145652779, "o", "l"] +[50.79497145652779, "o", "i"] +[50.82497145652779, "o", "t"] +[50.85497145652779, "o", "g"] +[50.88497145652779, "o", "r"] +[50.914971456527795, "o", "a"] +[50.944971456527796, "o", "p"] +[50.9749714565278, "o", "h"] +[51.0049714565278, "o", "-"] +[51.0349714565278, "o", "d"] +[51.0649714565278, "o", "e"] +[51.0949714565278, "o", "m"] +[51.1249714565278, "o", "o"] +[51.154971456527804, "o", "/"] +[51.184971456527805, "o", "w"] +[51.214971456527806, "o", "e"] +[51.24497145652781, "o", "a"] +[51.27497145652781, "o", "t"] +[51.30497145652781, "o", "h"] +[51.33497145652781, "o", "e"] +[51.36497145652781, "o", "r"] +[51.39497145652781, "o", ":"] +[51.424971456527814, "o", "i"] +[51.454971456527815, "o", "n"] +[51.484971456527816, "o", "i"] +[51.51497145652782, "o", "t"] +[51.54497145652782, "o", "i"] +[51.57497145652782, "o", "a"] +[51.60497145652782, "o", "l"] +[51.63497145652782, "o", "_"] +[51.66497145652782, "o", "d"] +[51.694971456527824, "o", "a"] +[51.724971456527825, "o", "t"] +[51.75497145652783, "o", "a"] +[51.78497145652783, "o", " "] +[51.81497145652783, "o", "\""] +[51.84497145652783, "o", "r"] +[51.87497145652783, "o", "d"] +[51.90497145652783, "o", "u"] +[51.93497145652783, "o", "?"] +[51.964971456527834, "o", "d"] +[51.994971456527836, "o", "a"] +[52.02497145652784, "o", "t"] +[52.05497145652784, "o", "e"] +[52.08497145652784, "o", "="] +[52.11497145652784, "o", "e"] +[52.14497145652784, "o", "q"] +[52.17497145652784, "o", "."] +[52.20497145652784, "o", "2"] +[52.234971456527845, "o", "0"] +[52.264971456527846, "o", "0"] +[52.29497145652785, "o", "9"] +[52.32497145652785, "o", "-"] +[52.35497145652785, "o", "0"] +[52.38497145652785, "o", "8"] +[52.41497145652785, "o", "-"] +[52.44497145652785, "o", "2"] +[52.474971456527854, "o", "5"] +[52.504971456527855, "o", "T"] +[52.534971456527856, "o", "0"] +[52.56497145652786, "o", "0"] +[52.59497145652786, "o", ":"] +[52.62497145652786, "o", "0"] +[52.65497145652786, "o", "0"] +[52.68497145652786, "o", ":"] +[52.71497145652786, "o", "0"] +[52.744971456527864, "o", "0"] +[52.774971456527865, "o", "\""] +[52.804971456527866, "o", "\r\n"] +[52.83497145652787, "o", "\u001b[0m"] +[52.86497145652787, "o", "\r\n"] +[53.86497145652787, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[53.89497145652787, "o", "\u001b[1m"] +[53.92497145652787, "o", "\u001b[36m"] +[53.95497145652787, "o", "\u001b[91m"] +[53.98497145652787, "o", "$"] +[54.014971456527874, "o", " "] +[54.044971456527875, "o", "\u001b[0m"] +[59.07497145652788, "o", "\u001b[H"] +[59.10497145652788, "o", "\u001b[J"] +[59.13497145652788, "o", "\u001b[1m\u001b[36m\u001b[91m$ # You can also run a query against the Splitgraph Data Delivery Network."] +[59.16497145652788, "o", "\r\n"] +[59.19497145652788, "o", "$ # It supports most PostgresSQL clients and lets you query Splitgraph images and other\r\n"] +[59.22497145652788, "o", "$ # datasets proxied by Splitgraph.\r\n"] +[59.25497145652788, "o", "$"] +[59.284971456527884, "o", " "] +[59.314971456527886, "o", "s"] +[59.34497145652789, "o", "g"] +[59.37497145652789, "o", "r"] +[59.40497145652789, "o", " "] +[59.43497145652789, "o", "c"] +[59.46497145652789, "o", "l"] +[59.49497145652789, "o", "o"] +[59.524971456527894, "o", "u"] +[59.554971456527895, "o", "d"] +[59.584971456527896, "o", " "] +[59.6149714565279, "o", "s"] +[59.6449714565279, "o", "q"] +[59.6749714565279, "o", "l"] +[59.7049714565279, "o", " "] +[59.7349714565279, "o", "\""] +[59.7649714565279, "o", "S"] +[59.794971456527904, "o", "E"] +[59.824971456527905, "o", "L"] +[59.854971456527906, "o", "E"] +[59.88497145652791, "o", "C"] +[59.91497145652791, "o", "T"] +[59.94497145652791, "o", " "] +[59.97497145652791, "o", "d"] +[60.00497145652791, "o", "a"] +[60.03497145652791, "o", "t"] +[60.064971456527914, "o", "e"] +[60.094971456527915, "o", ","] +[60.124971456527916, "o", " "] +[60.15497145652792, "o", "t"] +[60.18497145652792, "o", "e"] +[60.21497145652792, "o", "m"] +[60.24497145652792, "o", "p"] +[60.27497145652792, "o", "e"] +[60.30497145652792, "o", "r"] +[60.334971456527924, "o", "a"] +[60.364971456527925, "o", "t"] +[60.39497145652793, "o", "u"] +[60.42497145652793, "o", "r"] +[60.45497145652793, "o", "e"] +[60.48497145652793, "o", "m"] +[60.51497145652793, "o", "i"] +[60.54497145652793, "o", "n"] +[60.57497145652793, "o", ","] +[60.604971456527934, "o", " "] +[60.634971456527936, "o", "t"] +[60.66497145652794, "o", "e"] +[60.69497145652794, "o", "m"] +[60.72497145652794, "o", "p"] +[60.75497145652794, "o", "e"] +[60.78497145652794, "o", "r"] +[60.81497145652794, "o", "a"] +[60.844971456527944, "o", "t"] +[60.874971456527945, "o", "u"] +[60.904971456527946, "o", "r"] +[60.93497145652795, "o", "e"] +[60.96497145652795, "o", "m"] +[60.99497145652795, "o", "a"] +[61.02497145652795, "o", "x"] +[61.05497145652795, "o", "\r\n "] +[61.08497145652795, "o", "F"] +[61.114971456527954, "o", "R"] +[61.144971456527955, "o", "O"] +[61.174971456527956, "o", "M"] +[61.20497145652796, "o", " "] +[61.23497145652796, "o", "\\"] +[61.26497145652796, "o", "\""] +[61.29497145652796, "o", "s"] +[61.32497145652796, "o", "p"] +[61.35497145652796, "o", "l"] +[61.384971456527964, "o", "i"] +[61.414971456527965, "o", "t"] +[61.444971456527966, "o", "g"] +[61.47497145652797, "o", "r"] +[61.50497145652797, "o", "a"] +[61.53497145652797, "o", "p"] +[61.56497145652797, "o", "h"] +[61.59497145652797, "o", "-"] +[61.62497145652797, "o", "d"] +[61.654971456527974, "o", "e"] +[61.684971456527975, "o", "m"] +[61.71497145652798, "o", "o"] +[61.74497145652798, "o", "/"] +[61.77497145652798, "o", "w"] +[61.80497145652798, "o", "e"] +[61.83497145652798, "o", "a"] +[61.86497145652798, "o", "t"] +[61.89497145652798, "o", "h"] +[61.924971456527985, "o", "e"] +[61.954971456527986, "o", "r"] +[61.98497145652799, "o", ":"] +[62.01497145652799, "o", "i"] +[62.04497145652799, "o", "n"] +[62.07497145652799, "o", "i"] +[62.10497145652799, "o", "t"] +[62.13497145652799, "o", "i"] +[62.164971456527994, "o", "a"] +[62.194971456527995, "o", "l"] +[62.224971456527996, "o", "_"] +[62.254971456528, "o", "d"] +[62.284971456528, "o", "a"] +[62.314971456528, "o", "t"] +[62.344971456528, "o", "a"] +[62.374971456528, "o", "\\"] +[62.404971456528, "o", "\""] +[62.434971456528004, "o", "."] +[62.464971456528005, "o", "r"] +[62.494971456528006, "o", "d"] +[62.52497145652801, "o", "u"] +[62.55497145652801, "o", "\r\n "] +[62.58497145652801, "o", "W"] +[62.61497145652801, "o", "H"] +[62.64497145652801, "o", "E"] +[62.67497145652801, "o", "R"] +[62.704971456528014, "o", "E"] +[62.734971456528015, "o", " "] +[62.764971456528016, "o", "d"] +[62.79497145652802, "o", "a"] +[62.82497145652802, "o", "t"] +[62.85497145652802, "o", "e"] +[62.88497145652802, "o", "_"] +[62.91497145652802, "o", "t"] +[62.94497145652802, "o", "r"] +[62.974971456528024, "o", "u"] +[63.004971456528025, "o", "n"] +[63.03497145652803, "o", "c"] +[63.06497145652803, "o", "("] +[63.09497145652803, "o", "'"] +[63.12497145652803, "o", "m"] +[63.15497145652803, "o", "o"] +[63.18497145652803, "o", "n"] +[63.21497145652803, "o", "t"] +[63.244971456528035, "o", "h"] +[63.274971456528036, "o", "'"] +[63.30497145652804, "o", ","] +[63.33497145652804, "o", " "] +[63.36497145652804, "o", "d"] +[63.39497145652804, "o", "a"] +[63.42497145652804, "o", "t"] +[63.45497145652804, "o", "e"] +[63.484971456528044, "o", ")"] +[63.514971456528045, "o", " "] +[63.544971456528046, "o", "="] +[63.57497145652805, "o", " "] +[63.60497145652805, "o", "'"] +[63.63497145652805, "o", "2"] +[63.66497145652805, "o", "0"] +[63.69497145652805, "o", "0"] +[63.72497145652805, "o", "9"] +[63.754971456528054, "o", "-"] +[63.784971456528055, "o", "0"] +[63.814971456528056, "o", "8"] +[63.84497145652806, "o", "-"] +[63.87497145652806, "o", "0"] +[63.90497145652806, "o", "1"] +[63.93497145652806, "o", "'"] +[63.96497145652806, "o", "\""] +[63.99497145652806, "o", "\r\n"] +[64.02497145652806, "o", "\u001b[0m"] +[64.05497145652807, "o", "\r\n"] +[65.05497145652807, "o", "2009-08-01 00:00:00 73 91.9\r\n2009-08-02 00:00:00 73.9 82.9\r\n2009-08-03 00:00:00 70 95\r\n2009-08-04 00:00:00 66.9 95\r\n2009-08-05 00:00:00 72 96.1\r\n2009-08-06 00:00:00 70 84.9\r\n2009-08-07 00:00:00 68 88\r\n2009-08-08 00:00:00 69.1 91\r\n2009-08-09 00:00:00 70 99\r\n2009-08-10 00:00:00 72 99\r\n"] +[65.08497145652807, "o", "\u001b[1m"] +[65.11497145652807, "o", "\u001b[36m"] +[65.14497145652807, "o", "\u001b[91m"] +[65.17497145652807, "o", "$"] +[65.20497145652807, "o", " "] +[65.23497145652807, "o", "\u001b[0m"] +[70.26497145652807, "o", "\u001b[H"] +[70.29497145652807, "o", "\u001b[J"] +[70.32497145652808, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The query API also supports running one-off Splitfile commands against a repository,"] +[70.35497145652808, "o", "\r\n"] +[70.38497145652808, "o", "$ # creating new images that can be pulled. sgr handles authentication for this automatically.\r\n"] +[70.41497145652808, "o", "$"] +[70.44497145652808, "o", " "] +[70.47497145652808, "o", "c"] +[70.50497145652808, "o", "a"] +[70.53497145652808, "o", "t"] +[70.56497145652808, "o", " "] +[70.59497145652809, "o", "r"] +[70.62497145652809, "o", "e"] +[70.65497145652809, "o", "q"] +[70.68497145652809, "o", "u"] +[70.71497145652809, "o", "e"] +[70.74497145652809, "o", "s"] +[70.77497145652809, "o", "t"] +[70.8049714565281, "o", "_"] +[70.8349714565281, "o", "1"] +[70.8649714565281, "o", "."] +[70.8949714565281, "o", "j"] +[70.9249714565281, "o", "s"] +[70.9549714565281, "o", "o"] +[70.9849714565281, "o", "n"] +[71.0149714565281, "o", "\r\n"] +[71.0449714565281, "o", "$"] +[71.0749714565281, "o", " "] +[71.1049714565281, "o", "s"] +[71.1349714565281, "o", "g"] +[71.16497145652811, "o", "r"] +[71.19497145652811, "o", " "] +[71.22497145652811, "o", "c"] +[71.25497145652811, "o", "l"] +[71.28497145652811, "o", "o"] +[71.31497145652811, "o", "u"] +[71.34497145652811, "o", "d"] +[71.37497145652812, "o", " "] +[71.40497145652812, "o", "c"] +[71.43497145652812, "o", "u"] +[71.46497145652812, "o", "r"] +[71.49497145652812, "o", "l"] +[71.52497145652812, "o", " "] +[71.55497145652812, "o", "-"] +[71.58497145652812, "o", "t"] +[71.61497145652812, "o", " "] +[71.64497145652813, "o", "s"] +[71.67497145652813, "o", "p"] +[71.70497145652813, "o", "l"] +[71.73497145652813, "o", "i"] +[71.76497145652813, "o", "t"] +[71.79497145652813, "o", "f"] +[71.82497145652813, "o", "i"] +[71.85497145652813, "o", "l"] +[71.88497145652813, "o", "e"] +[71.91497145652814, "o", " "] +[71.94497145652814, "o", "s"] +[71.97497145652814, "o", "p"] +[72.00497145652814, "o", "l"] +[72.03497145652814, "o", "i"] +[72.06497145652814, "o", "t"] +[72.09497145652814, "o", "g"] +[72.12497145652814, "o", "r"] +[72.15497145652814, "o", "a"] +[72.18497145652815, "o", "p"] +[72.21497145652815, "o", "h"] +[72.24497145652815, "o", "-"] +[72.27497145652815, "o", "d"] +[72.30497145652815, "o", "e"] +[72.33497145652815, "o", "m"] +[72.36497145652815, "o", "o"] +[72.39497145652815, "o", "/"] +[72.42497145652816, "o", "w"] +[72.45497145652816, "o", "e"] +[72.48497145652816, "o", "a"] +[72.51497145652816, "o", "t"] +[72.54497145652816, "o", "h"] +[72.57497145652816, "o", "e"] +[72.60497145652816, "o", "r"] +[72.63497145652816, "o", ":"] +[72.66497145652816, "o", "i"] +[72.69497145652817, "o", "n"] +[72.72497145652817, "o", "i"] +[72.75497145652817, "o", "t"] +[72.78497145652817, "o", "i"] +[72.81497145652817, "o", "a"] +[72.84497145652817, "o", "l"] +[72.87497145652817, "o", "_"] +[72.90497145652817, "o", "d"] +[72.93497145652817, "o", "a"] +[72.96497145652818, "o", "t"] +[72.99497145652818, "o", "a"] +[73.02497145652818, "o", " "] +[73.05497145652818, "o", "@"] +[73.08497145652818, "o", "r"] +[73.11497145652818, "o", "e"] +[73.14497145652818, "o", "q"] +[73.17497145652818, "o", "u"] +[73.20497145652818, "o", "e"] +[73.23497145652819, "o", "s"] +[73.26497145652819, "o", "t"] +[73.29497145652819, "o", "_"] +[73.32497145652819, "o", "1"] +[73.35497145652819, "o", "."] +[73.38497145652819, "o", "j"] +[73.41497145652819, "o", "s"] +[73.4449714565282, "o", "o"] +[73.4749714565282, "o", "n"] +[73.5049714565282, "o", "\r\n"] +[73.5349714565282, "o", "\u001b[0m"] +[73.5649714565282, "o", "\r\n"] +[73.56651998519946, "o", "{\"command\": \"FROM splitgraph/domestic_us_flights:latest IMPORT {SELECT fly_month, SUM(passengers) AS total_passengers FROM flights WHERE origin_airport = 'RDU' OR destination_airport = 'RDU' GROUP BY fly_month ORDER BY fly_month} AS flights\",\r\n \"tag\": \"with_flight_data\"}\r\n\r\n"] +[74.56651998519946, "o", "{\"image_hash\":\"98ca161d7ac2f0ceb7bc84894cec6922bbfcef06780206673c1120b81fb873bf\"}"] +[74.59651998519946, "o", "\u001b[1m"] +[74.62651998519947, "o", "\u001b[36m"] +[74.65651998519947, "o", "\u001b[91m"] +[74.68651998519947, "o", "$"] +[74.71651998519947, "o", " "] +[74.74651998519947, "o", "\u001b[0m"] +[79.77651998519947, "o", "\u001b[H"] +[79.80651998519947, "o", "\u001b[J"] +[79.83651998519947, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run another command against the new layer to join the two datasets"] +[79.86651998519947, "o", "\r\n"] +[79.89651998519948, "o", "$"] +[79.92651998519948, "o", " "] +[79.95651998519948, "o", "c"] +[79.98651998519948, "o", "a"] +[80.01651998519948, "o", "t"] +[80.04651998519948, "o", " "] +[80.07651998519948, "o", "r"] +[80.10651998519948, "o", "e"] +[80.13651998519948, "o", "q"] +[80.16651998519949, "o", "u"] +[80.19651998519949, "o", "e"] +[80.22651998519949, "o", "s"] +[80.25651998519949, "o", "t"] +[80.28651998519949, "o", "_"] +[80.31651998519949, "o", "2"] +[80.34651998519949, "o", "."] +[80.3765199851995, "o", "j"] +[80.4065199851995, "o", "s"] +[80.4365199851995, "o", "o"] +[80.4665199851995, "o", "n"] +[80.4965199851995, "o", "\r\n"] +[80.5265199851995, "o", "$"] +[80.5565199851995, "o", " "] +[80.5865199851995, "o", "s"] +[80.6165199851995, "o", "g"] +[80.6465199851995, "o", "r"] +[80.6765199851995, "o", " "] +[80.7065199851995, "o", "c"] +[80.73651998519951, "o", "l"] +[80.76651998519951, "o", "o"] +[80.79651998519951, "o", "u"] +[80.82651998519951, "o", "d"] +[80.85651998519951, "o", " "] +[80.88651998519951, "o", "c"] +[80.91651998519951, "o", "u"] +[80.94651998519952, "o", "r"] +[80.97651998519952, "o", "l"] +[81.00651998519952, "o", " "] +[81.03651998519952, "o", "-"] +[81.06651998519952, "o", "t"] +[81.09651998519952, "o", " "] +[81.12651998519952, "o", "s"] +[81.15651998519952, "o", "p"] +[81.18651998519952, "o", "l"] +[81.21651998519953, "o", "i"] +[81.24651998519953, "o", "t"] +[81.27651998519953, "o", "f"] +[81.30651998519953, "o", "i"] +[81.33651998519953, "o", "l"] +[81.36651998519953, "o", "e"] +[81.39651998519953, "o", " "] +[81.42651998519953, "o", "s"] +[81.45651998519953, "o", "p"] +[81.48651998519954, "o", "l"] +[81.51651998519954, "o", "i"] +[81.54651998519954, "o", "t"] +[81.57651998519954, "o", "g"] +[81.60651998519954, "o", "r"] +[81.63651998519954, "o", "a"] +[81.66651998519954, "o", "p"] +[81.69651998519954, "o", "h"] +[81.72651998519954, "o", "-"] +[81.75651998519955, "o", "d"] +[81.78651998519955, "o", "e"] +[81.81651998519955, "o", "m"] +[81.84651998519955, "o", "o"] +[81.87651998519955, "o", "/"] +[81.90651998519955, "o", "w"] +[81.93651998519955, "o", "e"] +[81.96651998519955, "o", "a"] +[81.99651998519955, "o", "t"] +[82.02651998519956, "o", "h"] +[82.05651998519956, "o", "e"] +[82.08651998519956, "o", "r"] +[82.11651998519956, "o", ":"] +[82.14651998519956, "o", "w"] +[82.17651998519956, "o", "i"] +[82.20651998519956, "o", "t"] +[82.23651998519956, "o", "h"] +[82.26651998519957, "o", "_"] +[82.29651998519957, "o", "f"] +[82.32651998519957, "o", "l"] +[82.35651998519957, "o", "i"] +[82.38651998519957, "o", "g"] +[82.41651998519957, "o", "h"] +[82.44651998519957, "o", "t"] +[82.47651998519957, "o", "_"] +[82.50651998519957, "o", "d"] +[82.53651998519958, "o", "a"] +[82.56651998519958, "o", "t"] +[82.59651998519958, "o", "a"] +[82.62651998519958, "o", " "] +[82.65651998519958, "o", "@"] +[82.68651998519958, "o", "r"] +[82.71651998519958, "o", "e"] +[82.74651998519958, "o", "q"] +[82.77651998519958, "o", "u"] +[82.80651998519959, "o", "e"] +[82.83651998519959, "o", "s"] +[82.86651998519959, "o", "t"] +[82.89651998519959, "o", "_"] +[82.92651998519959, "o", "2"] +[82.95651998519959, "o", "."] +[82.98651998519959, "o", "j"] +[83.0165199851996, "o", "s"] +[83.0465199851996, "o", "o"] +[83.0765199851996, "o", "n"] +[83.1065199851996, "o", "\r\n"] +[83.1365199851996, "o", "\u001b[0m"] +[83.1665199851996, "o", "\r\n"] +[83.16814957618776, "o", "{\"command\": \"SQL CREATE TABLE rdu_flights_weather AS ( WITH monthly_summary AS (SELECT date_trunc ('month', date) AS month, AVG(temperaturemin) AS tmin_avg, AVG(temperaturemax) AS tmax_avg FROM rdu GROUP BY month) SELECT w.month, w.tmin_avg, w.tmax_avg, f.total_passengers FROM monthly_summary w JOIN flights f ON w.month = f.fly_month)\",\r\n \"tag\": \"joined_data\"}\r\n\r\n"] +[84.16814957618776, "o", "{\"image_hash\":\"f344fe503c43adba0d70fca102c99c70c43d22b6c30f143fc31be5c23e22e0c8\"}"] +[84.19814957618776, "o", "\u001b[1m"] +[84.22814957618776, "o", "\u001b[36m"] +[84.25814957618776, "o", "\u001b[91m"] +[84.28814957618776, "o", "$"] +[84.31814957618776, "o", " "] +[84.34814957618777, "o", "\u001b[0m"] +[89.37814957618777, "o", "\u001b[H"] +[89.40814957618777, "o", "\u001b[J"] +[89.43814957618777, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Pull the dataset and check out the new image"] +[89.46814957618777, "o", "\r\n"] +[89.49814957618777, "o", "$"] +[89.52814957618777, "o", " "] +[89.55814957618777, "o", "s"] +[89.58814957618777, "o", "g"] +[89.61814957618778, "o", "r"] +[89.64814957618778, "o", " "] +[89.67814957618778, "o", "p"] +[89.70814957618778, "o", "u"] +[89.73814957618778, "o", "l"] +[89.76814957618778, "o", "l"] +[89.79814957618778, "o", " "] +[89.82814957618778, "o", "w"] +[89.85814957618778, "o", "e"] +[89.88814957618779, "o", "a"] +[89.91814957618779, "o", "t"] +[89.94814957618779, "o", "h"] +[89.97814957618779, "o", "e"] +[90.00814957618779, "o", "r"] +[90.03814957618779, "o", "\r\n"] +[90.06814957618779, "o", "$"] +[90.0981495761878, "o", " "] +[90.1281495761878, "o", "s"] +[90.1581495761878, "o", "g"] +[90.1881495761878, "o", "r"] +[90.2181495761878, "o", " "] +[90.2481495761878, "o", "c"] +[90.2781495761878, "o", "h"] +[90.3081495761878, "o", "e"] +[90.3381495761878, "o", "c"] +[90.3681495761878, "o", "k"] +[90.3981495761878, "o", "o"] +[90.4281495761878, "o", "u"] +[90.45814957618781, "o", "t"] +[90.48814957618781, "o", " "] +[90.51814957618781, "o", "w"] +[90.54814957618781, "o", "e"] +[90.57814957618781, "o", "a"] +[90.60814957618781, "o", "t"] +[90.63814957618781, "o", "h"] +[90.66814957618782, "o", "e"] +[90.69814957618782, "o", "r"] +[90.72814957618782, "o", ":"] +[90.75814957618782, "o", "j"] +[90.78814957618782, "o", "o"] +[90.81814957618782, "o", "i"] +[90.84814957618782, "o", "n"] +[90.87814957618782, "o", "e"] +[90.90814957618782, "o", "d"] +[90.93814957618783, "o", "_"] +[90.96814957618783, "o", "d"] +[90.99814957618783, "o", "a"] +[91.02814957618783, "o", "t"] +[91.05814957618783, "o", "a"] +[91.08814957618783, "o", "\r\n"] +[91.11814957618783, "o", "\u001b[0m"] +[91.14814957618783, "o", "\r\n"] +[91.53456553459237, "o", "Gathering remote metadata...\r\n"] +[92.53456553459237, "o", "Fetched metadata for 2 images, 5 tables, 2 objects and 2 tags.\r\n"] +[92.96120461463998, "o", "Need to download 1 object (3.02 KiB), cache occupancy: 0.00 B/10.00 GiB\r\n"] +[93.01918634414743, "o", "Fetching 1 object, total size 3.02 KiB\r\n"] +[93.02180799484323, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (ca446922b2844ed19f8e6c8b35edbe31@data.splitgraph.com:5432/sgregistry)...\r\n"] +[94.02180799484323, "o", "\r 0%| | 0/1 [00:00 Foreign Scan on precinct_results (cost=20.00..9784680.00 rows=489234 width=20)\r\nFilter: ((state)::text = 'New York'::text)\r\nMulticorn: Original Multicorn quals: [state = New York]\r\nMulticorn: CNF quals: [[('state', '=', 'New York')]]\r\nMulticorn: Objects removed by filter: 15\r\nMulticorn: Scan through 5 object(s) (6.63 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Deforming true\r\n"] +[13.496812477111728, "o", "\u001b[1m"] +[13.526812477111728, "o", "\u001b[36m"] +[13.556812477111727, "o", "\u001b[91m"] +[13.586812477111726, "o", "$"] +[13.616812477111726, "o", " "] +[13.646812477111725, "o", "\u001b[0m"] +[18.676812477111724, "o", "\u001b[H"] +[18.706812477111725, "o", "\u001b[J"] +[18.736812477111727, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Currently we have no fragments in cache. Let's run this query and check the cache again"] +[18.766812477111728, "o", "\r\n"] +[18.79681247711173, "o", "$"] +[18.82681247711173, "o", " "] +[18.85681247711173, "o", "s"] +[18.886812477111732, "o", "g"] +[18.916812477111733, "o", "r"] +[18.946812477111735, "o", " "] +[18.976812477111736, "o", "o"] +[19.006812477111737, "o", "b"] +[19.036812477111738, "o", "j"] +[19.06681247711174, "o", "e"] +[19.09681247711174, "o", "c"] +[19.12681247711174, "o", "t"] +[19.156812477111743, "o", "s"] +[19.186812477111744, "o", " "] +[19.216812477111745, "o", "-"] +[19.246812477111746, "o", "-"] +[19.276812477111747, "o", "l"] +[19.306812477111748, "o", "o"] +[19.33681247711175, "o", "c"] +[19.36681247711175, "o", "a"] +[19.39681247711175, "o", "l"] +[19.426812477111753, "o", "\r\n"] +[19.456812477111754, "o", "$"] +[19.486812477111755, "o", " "] +[19.516812477111756, "o", "s"] +[19.546812477111757, "o", "g"] +[19.57681247711176, "o", "r"] +[19.60681247711176, "o", " "] +[19.63681247711176, "o", "s"] +[19.666812477111762, "o", "q"] +[19.696812477111763, "o", "l"] +[19.726812477111764, "o", " "] +[19.756812477111765, "o", "-"] +[19.786812477111766, "o", "-"] +[19.816812477111768, "o", "i"] +[19.84681247711177, "o", "m"] +[19.87681247711177, "o", "a"] +[19.90681247711177, "o", "g"] +[19.936812477111772, "o", "e"] +[19.966812477111773, "o", " "] +[19.996812477111774, "o", "s"] +[20.026812477111775, "o", "p"] +[20.056812477111777, "o", "l"] +[20.086812477111778, "o", "i"] +[20.11681247711178, "o", "t"] +[20.14681247711178, "o", "g"] +[20.17681247711178, "o", "r"] +[20.206812477111782, "o", "a"] +[20.236812477111783, "o", "p"] +[20.266812477111785, "o", "h"] +[20.296812477111786, "o", "/"] +[20.326812477111787, "o", "2"] +[20.356812477111788, "o", "0"] +[20.38681247711179, "o", "1"] +[20.41681247711179, "o", "6"] +[20.44681247711179, "o", "_"] +[20.476812477111793, "o", "e"] +[20.506812477111794, "o", "l"] +[20.536812477111795, "o", "e"] +[20.566812477111796, "o", "c"] +[20.596812477111797, "o", "t"] +[20.626812477111798, "o", "i"] +[20.6568124771118, "o", "o"] +[20.6868124771118, "o", "n"] +[20.7168124771118, "o", ":"] +[20.746812477111803, "o", "l"] +[20.776812477111804, "o", "a"] +[20.806812477111805, "o", "t"] +[20.836812477111806, "o", "e"] +[20.866812477111807, "o", "s"] +[20.89681247711181, "o", "t"] +[20.92681247711181, "o", " "] +[20.95681247711181, "o", "\\"] +[20.986812477111812, "o", "\r\n "] +[21.016812477111813, "o", "\""] +[21.046812477111814, "o", "S"] +[21.076812477111815, "o", "E"] +[21.106812477111816, "o", "L"] +[21.136812477111818, "o", "E"] +[21.16681247711182, "o", "C"] +[21.19681247711182, "o", "T"] +[21.22681247711182, "o", " "] +[21.256812477111822, "o", "S"] +[21.286812477111823, "o", "U"] +[21.316812477111824, "o", "M"] +[21.346812477111826, "o", "("] +[21.376812477111827, "o", "v"] +[21.406812477111828, "o", "o"] +[21.43681247711183, "o", "t"] +[21.46681247711183, "o", "e"] +[21.49681247711183, "o", "s"] +[21.526812477111832, "o", ")"] +[21.556812477111833, "o", " "] +[21.586812477111835, "o", "F"] +[21.616812477111836, "o", "R"] +[21.646812477111837, "o", "O"] +[21.676812477111838, "o", "M"] +[21.70681247711184, "o", " "] +[21.73681247711184, "o", "p"] +[21.76681247711184, "o", "r"] +[21.796812477111843, "o", "e"] +[21.826812477111844, "o", "c"] +[21.856812477111845, "o", "i"] +[21.886812477111846, "o", "n"] +[21.916812477111847, "o", "c"] +[21.94681247711185, "o", "t"] +[21.97681247711185, "o", "_"] +[22.00681247711185, "o", "r"] +[22.03681247711185, "o", "e"] +[22.066812477111853, "o", "s"] +[22.096812477111854, "o", "u"] +[22.126812477111855, "o", "l"] +[22.156812477111856, "o", "t"] +[22.186812477111857, "o", "s"] +[22.21681247711186, "o", " "] +[22.24681247711186, "o", "W"] +[22.27681247711186, "o", "H"] +[22.306812477111862, "o", "E"] +[22.336812477111863, "o", "R"] +[22.366812477111864, "o", "E"] +[22.396812477111865, "o", " "] +[22.426812477111866, "o", "s"] +[22.456812477111868, "o", "t"] +[22.48681247711187, "o", "a"] +[22.51681247711187, "o", "t"] +[22.54681247711187, "o", "e"] +[22.576812477111872, "o", " "] +[22.606812477111873, "o", "="] +[22.636812477111874, "o", " "] +[22.666812477111876, "o", "'"] +[22.696812477111877, "o", "N"] +[22.726812477111878, "o", "e"] +[22.75681247711188, "o", "w"] +[22.78681247711188, "o", " "] +[22.81681247711188, "o", "Y"] +[22.846812477111882, "o", "o"] +[22.876812477111883, "o", "r"] +[22.906812477111885, "o", "k"] +[22.936812477111886, "o", "'"] +[22.966812477111887, "o", "\""] +[22.996812477111888, "o", "\r\n"] +[23.02681247711189, "o", "$"] +[23.05681247711189, "o", " "] +[23.08681247711189, "o", "s"] +[23.116812477111893, "o", "g"] +[23.146812477111894, "o", "r"] +[23.176812477111895, "o", " "] +[23.206812477111896, "o", "o"] +[23.236812477111897, "o", "b"] +[23.2668124771119, "o", "j"] +[23.2968124771119, "o", "e"] +[23.3268124771119, "o", "c"] +[23.3568124771119, "o", "t"] +[23.386812477111903, "o", "s"] +[23.416812477111904, "o", " "] +[23.446812477111905, "o", "-"] +[23.476812477111906, "o", "-"] +[23.506812477111907, "o", "l"] +[23.53681247711191, "o", "o"] +[23.56681247711191, "o", "c"] +[23.59681247711191, "o", "a"] +[23.626812477111912, "o", "l"] +[23.656812477111913, "o", "\r\n"] +[23.686812477111914, "o", "\u001b[0m"] +[23.716812477111915, "o", "\r\n"] +[24.108589038848976, "o", "\r\n"] +[25.108589038848976, "o", "7.91188e+06\r\n"] +[25.508127794265846, "o", "o65dbd9dc992982689ec65866ab733be69c897c659d93488457a2fccb63e97c\r\no974b20261ee5f1ac124a8445a65c00e6377cfabb93b5db92bd60fc7ca3fcee\r\no9c33b53f1a4872c598ad9d08aaafd78fabce1f16ef4c5e19ad9756b9b85fda\r\no9d4cf85101cc4d431c895998cf1cad642f1fe6cd923c8209f2df38441afeeb\r\noc438159794e378ca23c306143ccdc7ce1683045f80a511aeeabb19302be63d\r\n"] +[25.538127794265847, "o", "\u001b[1m"] +[25.56812779426585, "o", "\u001b[36m"] +[25.59812779426585, "o", "\u001b[91m"] +[25.62812779426585, "o", "$"] +[25.65812779426585, "o", " "] +[25.688127794265853, "o", "\u001b[0m"] +[30.718127794265854, "o", "\u001b[H"] +[30.748127794265855, "o", "\u001b[J"] +[30.778127794265856, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Since default indexing in Splitgraph is done by min-max values for every column"] +[30.808127794265857, "o", "\r\n"] +[30.83812779426586, "o", "$ # in every fragment, it's going to do worse if multiple fragments span the same value\r\n"] +[30.86812779426586, "o", "$"] +[30.89812779426586, "o", " "] +[30.928127794265862, "o", "s"] +[30.958127794265863, "o", "g"] +[30.988127794265864, "o", "r"] +[31.018127794265865, "o", " "] +[31.048127794265866, "o", "s"] +[31.078127794265868, "o", "q"] +[31.10812779426587, "o", "l"] +[31.13812779426587, "o", " "] +[31.16812779426587, "o", "-"] +[31.198127794265872, "o", "-"] +[31.228127794265873, "o", "i"] +[31.258127794265874, "o", "m"] +[31.288127794265876, "o", "a"] +[31.318127794265877, "o", "g"] +[31.348127794265878, "o", "e"] +[31.37812779426588, "o", " "] +[31.40812779426588, "o", "s"] +[31.43812779426588, "o", "p"] +[31.468127794265882, "o", "l"] +[31.498127794265883, "o", "i"] +[31.528127794265885, "o", "t"] +[31.558127794265886, "o", "g"] +[31.588127794265887, "o", "r"] +[31.618127794265888, "o", "a"] +[31.64812779426589, "o", "p"] +[31.67812779426589, "o", "h"] +[31.70812779426589, "o", "/"] +[31.738127794265893, "o", "2"] +[31.768127794265894, "o", "0"] +[31.798127794265895, "o", "1"] +[31.828127794265896, "o", "6"] +[31.858127794265897, "o", "_"] +[31.8881277942659, "o", "e"] +[31.9181277942659, "o", "l"] +[31.9481277942659, "o", "e"] +[31.9781277942659, "o", "c"] +[32.0081277942659, "o", "t"] +[32.038127794265904, "o", "i"] +[32.068127794265905, "o", "o"] +[32.098127794265906, "o", "n"] +[32.12812779426591, "o", ":"] +[32.15812779426591, "o", "l"] +[32.18812779426591, "o", "a"] +[32.21812779426591, "o", "t"] +[32.24812779426591, "o", "e"] +[32.27812779426591, "o", "s"] +[32.308127794265914, "o", "t"] +[32.338127794265915, "o", " "] +[32.36812779426592, "o", "\\"] +[32.39812779426592, "o", "\r\n "] +[32.42812779426592, "o", "\""] +[32.45812779426592, "o", "E"] +[32.48812779426592, "o", "X"] +[32.51812779426592, "o", "P"] +[32.54812779426592, "o", "L"] +[32.578127794265924, "o", "A"] +[32.608127794265926, "o", "I"] +[32.63812779426593, "o", "N"] +[32.66812779426593, "o", " "] +[32.69812779426593, "o", "S"] +[32.72812779426593, "o", "E"] +[32.75812779426593, "o", "L"] +[32.78812779426593, "o", "E"] +[32.81812779426593, "o", "C"] +[32.848127794265935, "o", "T"] +[32.878127794265936, "o", " "] +[32.90812779426594, "o", "S"] +[32.93812779426594, "o", "U"] +[32.96812779426594, "o", "M"] +[32.99812779426594, "o", "("] +[33.02812779426594, "o", "v"] +[33.05812779426594, "o", "o"] +[33.088127794265944, "o", "t"] +[33.118127794265945, "o", "e"] +[33.148127794265946, "o", "s"] +[33.17812779426595, "o", ")"] +[33.20812779426595, "o", " "] +[33.23812779426595, "o", "F"] +[33.26812779426595, "o", "R"] +[33.29812779426595, "o", "O"] +[33.32812779426595, "o", "M"] +[33.358127794265954, "o", " "] +[33.388127794265955, "o", "p"] +[33.418127794265956, "o", "r"] +[33.44812779426596, "o", "e"] +[33.47812779426596, "o", "c"] +[33.50812779426596, "o", "i"] +[33.53812779426596, "o", "n"] +[33.56812779426596, "o", "c"] +[33.59812779426596, "o", "t"] +[33.628127794265964, "o", "_"] +[33.658127794265965, "o", "r"] +[33.68812779426597, "o", "e"] +[33.71812779426597, "o", "s"] +[33.74812779426597, "o", "u"] +[33.77812779426597, "o", "l"] +[33.80812779426597, "o", "t"] +[33.83812779426597, "o", "s"] +[33.86812779426597, "o", " "] +[33.898127794265974, "o", "W"] +[33.928127794265976, "o", "H"] +[33.95812779426598, "o", "E"] +[33.98812779426598, "o", "R"] +[34.01812779426598, "o", "E"] +[34.04812779426598, "o", " "] +[34.07812779426598, "o", "c"] +[34.10812779426598, "o", "o"] +[34.13812779426598, "o", "u"] +[34.168127794265985, "o", "n"] +[34.198127794265986, "o", "t"] +[34.22812779426599, "o", "y"] +[34.25812779426599, "o", "_"] +[34.28812779426599, "o", "n"] +[34.31812779426599, "o", "a"] +[34.34812779426599, "o", "m"] +[34.37812779426599, "o", "e"] +[34.408127794265994, "o", " "] +[34.438127794265995, "o", "="] +[34.468127794265996, "o", " "] +[34.498127794266, "o", "'"] +[34.528127794266, "o", "N"] +[34.558127794266, "o", "e"] +[34.588127794266, "o", "w"] +[34.618127794266, "o", " "] +[34.648127794266, "o", "Y"] +[34.678127794266004, "o", "o"] +[34.708127794266005, "o", "r"] +[34.738127794266006, "o", "k"] +[34.76812779426601, "o", " "] +[34.79812779426601, "o", "C"] +[34.82812779426601, "o", "o"] +[34.85812779426601, "o", "u"] +[34.88812779426601, "o", "n"] +[34.91812779426601, "o", "t"] +[34.948127794266014, "o", "y"] +[34.978127794266015, "o", "'"] +[35.00812779426602, "o", "\""] +[35.03812779426602, "o", "\r\n"] +[35.06812779426602, "o", "\u001b[0m"] +[35.09812779426602, "o", "\r\n"] +[36.02689762115506, "o", "Aggregate (cost=37789403.09..37789403.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..37784680.00 rows=1889234 width=20)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 1\r\nMulticorn: Scan through 19 object(s) (25.51 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true,"] +[36.02798194885281, "o", " Deforming true\r\n"] +[36.05798194885281, "o", "\u001b[1m"] +[36.087981948852814, "o", "\u001b[36m"] +[36.117981948852815, "o", "\u001b[91m"] +[36.14798194885282, "o", "$"] +[36.17798194885282, "o", " "] +[36.20798194885282, "o", "\u001b[0m"] +[41.23798194885282, "o", "\u001b[H"] +[41.26798194885282, "o", "\u001b[J"] +[41.29798194885282, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Let's download the whole dataset and add a bloom filter index on county_name"] +[41.32798194885282, "o", "\r\n"] +[41.357981948852824, "o", "$"] +[41.387981948852826, "o", " "] +[41.41798194885283, "o", "s"] +[41.44798194885283, "o", "g"] +[41.47798194885283, "o", "r"] +[41.50798194885283, "o", " "] +[41.53798194885283, "o", "r"] +[41.56798194885283, "o", "e"] +[41.59798194885283, "o", "i"] +[41.627981948852835, "o", "n"] +[41.657981948852836, "o", "d"] +[41.68798194885284, "o", "e"] +[41.71798194885284, "o", "x"] +[41.74798194885284, "o", " "] +[41.77798194885284, "o", "-"] +[41.80798194885284, "o", "i"] +[41.83798194885284, "o", " "] +[41.867981948852844, "o", "'"] +[41.897981948852845, "o", "{"] +[41.927981948852846, "o", "\""] +[41.95798194885285, "o", "b"] +[41.98798194885285, "o", "l"] +[42.01798194885285, "o", "o"] +[42.04798194885285, "o", "o"] +[42.07798194885285, "o", "m"] +[42.10798194885285, "o", "\""] +[42.137981948852854, "o", ":"] +[42.167981948852855, "o", " "] +[42.197981948852856, "o", "{"] +[42.22798194885286, "o", "\""] +[42.25798194885286, "o", "c"] +[42.28798194885286, "o", "o"] +[42.31798194885286, "o", "u"] +[42.34798194885286, "o", "n"] +[42.37798194885286, "o", "t"] +[42.407981948852864, "o", "y"] +[42.437981948852865, "o", "_"] +[42.46798194885287, "o", "n"] +[42.49798194885287, "o", "a"] +[42.52798194885287, "o", "m"] +[42.55798194885287, "o", "e"] +[42.58798194885287, "o", "\""] +[42.61798194885287, "o", ":"] +[42.64798194885287, "o", " "] +[42.677981948852874, "o", "{"] +[42.707981948852876, "o", "\""] +[42.73798194885288, "o", "p"] +[42.76798194885288, "o", "r"] +[42.79798194885288, "o", "o"] +[42.82798194885288, "o", "b"] +[42.85798194885288, "o", "a"] +[42.88798194885288, "o", "b"] +[42.91798194885288, "o", "i"] +[42.947981948852885, "o", "l"] +[42.977981948852886, "o", "i"] +[43.00798194885289, "o", "t"] +[43.03798194885289, "o", "y"] +[43.06798194885289, "o", "\""] +[43.09798194885289, "o", ":"] +[43.12798194885289, "o", " "] +[43.15798194885289, "o", "0"] +[43.187981948852894, "o", "."] +[43.217981948852895, "o", "0"] +[43.247981948852896, "o", "1"] +[43.2779819488529, "o", "}"] +[43.3079819488529, "o", "}"] +[43.3379819488529, "o", "}"] +[43.3679819488529, "o", "'"] +[43.3979819488529, "o", " "] +[43.4279819488529, "o", "\\"] +[43.457981948852904, "o", "\r\n "] +[43.487981948852905, "o", "s"] +[43.517981948852906, "o", "p"] +[43.54798194885291, "o", "l"] +[43.57798194885291, "o", "i"] +[43.60798194885291, "o", "t"] +[43.63798194885291, "o", "g"] +[43.66798194885291, "o", "r"] +[43.69798194885291, "o", "a"] +[43.727981948852914, "o", "p"] +[43.757981948852915, "o", "h"] +[43.78798194885292, "o", "/"] +[43.81798194885292, "o", "2"] +[43.84798194885292, "o", "0"] +[43.87798194885292, "o", "1"] +[43.90798194885292, "o", "6"] +[43.93798194885292, "o", "_"] +[43.96798194885292, "o", "e"] +[43.997981948852924, "o", "l"] +[44.027981948852926, "o", "e"] +[44.05798194885293, "o", "c"] +[44.08798194885293, "o", "t"] +[44.11798194885293, "o", "i"] +[44.14798194885293, "o", "o"] +[44.17798194885293, "o", "n"] +[44.20798194885293, "o", ":"] +[44.237981948852934, "o", "l"] +[44.267981948852935, "o", "a"] +[44.297981948852936, "o", "t"] +[44.32798194885294, "o", "e"] +[44.35798194885294, "o", "s"] +[44.38798194885294, "o", "t"] +[44.41798194885294, "o", " "] +[44.44798194885294, "o", "p"] +[44.47798194885294, "o", "r"] +[44.507981948852944, "o", "e"] +[44.537981948852945, "o", "c"] +[44.567981948852946, "o", "i"] +[44.59798194885295, "o", "n"] +[44.62798194885295, "o", "c"] +[44.65798194885295, "o", "t"] +[44.68798194885295, "o", "_"] +[44.71798194885295, "o", "r"] +[44.74798194885295, "o", "e"] +[44.777981948852954, "o", "s"] +[44.807981948852955, "o", "u"] +[44.837981948852956, "o", "l"] +[44.86798194885296, "o", "t"] +[44.89798194885296, "o", "s"] +[44.92798194885296, "o", "\r\n"] +[44.95798194885296, "o", "\u001b[0m"] +[44.98798194885296, "o", "\r\n"] +[45.380588684082454, "o", "Reindexing table splitgraph/2016_election:3835145ada3f07cad99087d1b1071122d58c48783cbfe4694c101d35651fba90/precinct_results\r\n"] +[45.41252532959027, "o", "Need to download 20 objects (20.19 MiB), cache occupancy: 6.63 MiB/10.00 GiB\r\n"] +[45.465711269379085, "o", "Fetching 15 objects, total size 20.19 MiB\r\n"] +[45.46795454978985, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (85b17bb993c0441f83f3619be8faba12@data.splitgraph.com:5432/sgregistry)...\r\n"] +[46.46795454978985, "o", "\r 0%| | 0/15 [00:00 Foreign Scan on precinct_results (cost=20.00..4000000.00 rows=200000 width=20)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 18\r\nMulticorn: Scan through 2 object(s) (2.64 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Defo"] +[104.96665620803893, "o", "rming true\r\n"] +[104.99665620803893, "o", "\u001b[1m"] +[105.02665620803893, "o", "\u001b[36m"] +[105.05665620803893, "o", "\u001b[91m"] +[105.08665620803893, "o", "$"] +[105.11665620803893, "o", " "] +[105.14665620803893, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.15/dbt.cast b/content/casts/versioned/archive/v0.2.15/dbt.cast new file mode 100644 index 00000000..47fd89e0 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.15/dbt.cast @@ -0,0 +1,2229 @@ +{"version": 2, "width": 100, "height": 48, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1627292771, "metadata": {"tss": [{"h": "dbt must be installed for this to work (pip install dbt)", "ts": 0.06}, {"h": "Ingest the initial data (in CSV) from this branch of the project.", "ts": 12.059999999999999}, {"h": "Snapshot the initial data with Splitgraph.", "ts": 26.95254281997693}, {"h": "Inspect the original data", "ts": 36.605722694397215}, {"h": "The status column in the raw_orders table in the initial dataset can", "ts": 49.605722694397215}, {"h": "Commit this dataset and check out the original data", "ts": 60.51709106445357}, {"h": "Check out the 'serious' version of the dbt project that uses data from", "ts": 70.80281501770078}, {"h": "Check that dbt is set up to connect to the Splitgraph engine.", "ts": 77.78854969978399}, {"h": "Now run the dbt models.", "ts": 101.28854969978399}, {"h": "Take a look at the built dataset and commit it.", "ts": 121.78854969978399}, {"h": "Check out the new version of the raw dataset and run dbt against it as well.", "ts": 136.28854969978397}, {"h": "Create an image from the new data.", "ts": 157.78854969978397}, {"h": "We now have two versions of the source and the target dataset.", "ts": 167.78854969978397}, {"h": "Inspect the difference between the two datasets that dbt built.", "ts": 175.4842400455482}, {"h": "Run a sample query: how much in bank transfer refunds did we process?", "ts": 184.9842400455482}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # dbt must be installed for this to work (pip install dbt)"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Clone the Jaffle Shop dbt example project\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "d"] +[0.27, "o", "b"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "-"] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "v"] +[0.4500000000000002, "o", "e"] +[0.4800000000000002, "o", "r"] +[0.5100000000000002, "o", "s"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "n"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "$"] +[0.6900000000000004, "o", " "] +[0.7200000000000004, "o", "g"] +[0.7500000000000004, "o", "i"] +[0.7800000000000005, "o", "t"] +[0.8100000000000005, "o", " "] +[0.8400000000000005, "o", "c"] +[0.8700000000000006, "o", "l"] +[0.9000000000000006, "o", "o"] +[0.9300000000000006, "o", "n"] +[0.9600000000000006, "o", "e"] +[0.9900000000000007, "o", " "] +[1.0200000000000007, "o", "h"] +[1.0500000000000007, "o", "t"] +[1.0800000000000007, "o", "t"] +[1.1100000000000008, "o", "p"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", ":"] +[1.2000000000000008, "o", "/"] +[1.2300000000000009, "o", "/"] +[1.260000000000001, "o", "g"] +[1.290000000000001, "o", "i"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", "h"] +[1.380000000000001, "o", "u"] +[1.410000000000001, "o", "b"] +[1.440000000000001, "o", "."] +[1.470000000000001, "o", "c"] +[1.500000000000001, "o", "o"] +[1.5300000000000011, "o", "m"] +[1.5600000000000012, "o", "/"] +[1.5900000000000012, "o", "s"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "l"] +[1.6800000000000013, "o", "i"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "g"] +[1.7700000000000014, "o", "r"] +[1.8000000000000014, "o", "a"] +[1.8300000000000014, "o", "p"] +[1.8600000000000014, "o", "h"] +[1.8900000000000015, "o", "/"] +[1.9200000000000015, "o", "j"] +[1.9500000000000015, "o", "a"] +[1.9800000000000015, "o", "f"] +[2.0100000000000016, "o", "f"] +[2.0400000000000014, "o", "l"] +[2.070000000000001, "o", "e"] +[2.100000000000001, "o", "_"] +[2.130000000000001, "o", "s"] +[2.1600000000000006, "o", "h"] +[2.1900000000000004, "o", "o"] +[2.22, "o", "p"] +[2.25, "o", "_"] +[2.28, "o", "a"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "c"] +[2.369999999999999, "o", "h"] +[2.399999999999999, "o", "i"] +[2.429999999999999, "o", "v"] +[2.4599999999999986, "o", "e"] +[2.4899999999999984, "o", "."] +[2.5199999999999982, "o", "g"] +[2.549999999999998, "o", "i"] +[2.579999999999998, "o", "t"] +[2.6099999999999977, "o", "\r\n"] +[2.6399999999999975, "o", "$"] +[2.6699999999999973, "o", " "] +[2.699999999999997, "o", "m"] +[2.729999999999997, "o", "v"] +[2.7599999999999967, "o", " "] +[2.7899999999999965, "o", "j"] +[2.8199999999999963, "o", "a"] +[2.849999999999996, "o", "f"] +[2.879999999999996, "o", "f"] +[2.9099999999999957, "o", "l"] +[2.9399999999999955, "o", "e"] +[2.9699999999999953, "o", "_"] +[2.999999999999995, "o", "s"] +[3.029999999999995, "o", "h"] +[3.0599999999999947, "o", "o"] +[3.0899999999999945, "o", "p"] +[3.1199999999999943, "o", "_"] +[3.149999999999994, "o", "a"] +[3.179999999999994, "o", "r"] +[3.2099999999999937, "o", "c"] +[3.2399999999999936, "o", "h"] +[3.2699999999999934, "o", "i"] +[3.299999999999993, "o", "v"] +[3.329999999999993, "o", "e"] +[3.3599999999999928, "o", " "] +[3.3899999999999926, "o", "j"] +[3.4199999999999924, "o", "a"] +[3.449999999999992, "o", "f"] +[3.479999999999992, "o", "f"] +[3.509999999999992, "o", "l"] +[3.5399999999999916, "o", "e"] +[3.5699999999999914, "o", "_"] +[3.599999999999991, "o", "s"] +[3.629999999999991, "o", "h"] +[3.659999999999991, "o", "o"] +[3.6899999999999906, "o", "p"] +[3.7199999999999904, "o", "\r\n"] +[3.7499999999999902, "o", "\u001b[0m"] +[3.77999999999999, "o", "\r\n"] +[4.7799999999999905, "o", "installed version: 0.18.0\r\n latest version: 0.20.0\r\n\r\nYour version of dbt is out of date! You can find instructions for upgrading here:\r\nhttps://docs.getdbt.com/docs/installation\r\n\r\nPlugins:\r\n - redshift: 0.18.0\r\n - postgres: 0.18.0\r\n - snowflake: 0.18.0\r\n - bigquery: 0.18.0\r\n"] +[4.78122356414794, "o", "\u001b[0m"] +[4.78311565399169, "o", "Cloning into 'jaffle_shop_archive'...\r\n"] +[5.223300008773794, "o", "remote: Enumerating objects: 405, done. \r\nremote: Counting objects: 0% (1/405) \rremote: Counting objects: 1% (5/405) \rremote: Counting objects: 2% (9/405) \rremote: Counting objects: 3% (13/405) \rremote: Counting objects: 4% (17/405) \rremote: Counting objects: 5% (21/405) \rremote: Counting objects: 6% (25/405) \rremote: Counting objects: 7% (29/405) \rremote: Counting objects: 8% (33/405) \rremote: Counting objects: 9% (37"] +[5.22331431388854, "o", "/405) \rremote: Counting objects: 10% (41/405) \rremote: Counting objects: 11% (45/405) \rremote: Counting objects: 12% (49/405) \rremote: Counting objects: 13% (53/405) \rremote: Counting objects: 14% (57/405) \r"] +[5.223401813507071, "o", "remote: Counting objects: 15% (61/405) \rremote: Counting objects: 16% (65/405) \rremote: Counting objects: 17% (69/405) \r"] +[5.2235660839080715, "o", "remote: Counting objects: 18% (73/405) \rremote: Counting objects: 19% (77/405) \rremote: Counting objects: 20% (81/405) \r"] +[5.223765878677359, "o", "remote: Counting objects: 21% (86/405) \rremote: Counting objects: 22% (90/405) \r"] +[5.2238993930816555, "o", "remote: Counting objects: 23% (94/405) \r"] +[5.225478916168203, "o", "remote: Counting objects: 24% (98/405) \rremote: Counting objects: 25% (102/405) \rremote: Counting objects: 26% (106/405) \rremote: Counting objects: 27% (110/405) \rremote: Counting objects: 28% (114/405) \rremote: Counting objects: 29% (118/405) \rremote: Counting objects: 30% (122/405) \rremote: Counting objects: 31% (126/405) \rremote: Counting objects: 32% (130/405) \rremote: Counting objects: 33% (134/405) \rremote: Counting object"] +[5.225545673370352, "o", "s: 34% (138/405) \rremote: Counting objects: 35% (142/405) \rremote: Counting objects: 36% (146/405) \rremote: Counting objects: 37% (150/405) \rremote: Counting objects: 38% (154/405) \rremote: Counting objects: 39% (158/405) \rremote: Counting objects: 40% (162/405) \rremote: Counting objects: 41% (167/405) \rremote: Counting objects: 42% (171/405) \rremote: Counting objects: 43% (175/405) \rremote: Counting objects: 44% (179/405) "] +[5.225578813552847, "o", " \rremote: Counting objects: 45% (183/405) \rremote: Counting objects: 46% (187/405) \rremote: Counting objects: 47% (191/405) \rremote: Counting objects: 48% (195/405) \rremote: Counting objects: 49% (199/405) \rremote: Counting objects: 50% (203/405) \rremote: Counting objects: 51% (207/405) \rremote: Counting objects: 52% (211/405) \rremote: Counting objects: 53% (215/405) \rremote: Counting objects: 54% (219/405) \rremote: Counting o"] +[5.225599555969229, "o", "bjects: 55% (223/405) \rremote: Counting objects: 56% (227/405) \rremote: Counting objects: 57% (231/405) \rremote: Counting objects: 58% (235/405) \rremote: Counting objects: 59% (239/405) \rremote: Counting objects: 60% (243/405) \rremote: Counting objects: 61% (248/405) \rremote: Counting objects: 62% (252/405) \rremote: Counting objects: 63% (256/405) \rremote: Counting objects: 64% (260/405) \rremote: Counting objects: 65% (264/405)"] +[5.225610046386709, "o", " \rremote: Counting objects: 66% (268/405) \rremote: Counting objects: 67% (272/405) \rremote: Counting objects: 68% (276/405) \rremote: Counting objects: 69% (280/405) \rremote: Counting objects: 70% (284/405) \rremote: Counting objects: 71% (288/405) \rremote: Counting objects: 72% (292/405) \rremote: Counting objects: 73% (296/405) \rremote: Counting objects: 74% (300/405) \rremote: Counting objects: 75% (304/405) \rremote: Count"] +[5.225621013641348, "o", "ing objects: 76% (308/405) \rremote: Counting objects: 77% (312/405) \rremote: Counting objects: 78% (316/405) \rremote: Counting objects: 79% (320/405) \rremote: Counting objects: 80% (324/405) \rremote: Counting objects: 81% (329/405) \rremote: Counting objects: 82% (333/405) \rremote: Counting objects: 83% (337/405) \rremote: Counting objects: 84% (341/405) \rremote: Counting objects: 85% (345/405) \rremote: Counting objects: 86% (349"] +[5.225630073547354, "o", "/405) \rremote: Counting objects: 87% (353/405) \rremote: Counting objects: 88% (357/405) \rremote: Counting objects: 89% (361/405) \rremote: Counting objects: 90% (365/405) \rremote: Counting objects: 91% (369/405) \rremote: Counting objects: 92% (373/405) \rremote: Counting objects: 93% (377/405) \rremote: Counting objects: 94% (381/405) \rremote: Counting objects: 95% (385/405) \rremote: Counting objects: 96% (389/405) \rremote: "] +[5.225640325546255, "o", "Counting objects: 97% (393/405) \rremote: Counting objects: 98% (397/405) \rremote: Counting objects: 99% (401/405) \rremote: Counting objects: 100% (405/405) \rremote: Counting objects: 100% (405/405), done. \r\nremote: Compressing objects: 0% (1/174) \rremote: Compressing objects: 1% (2/174) \rremote: Compressing objects: 2% (4/174) \rremote: Compressing objects: 3% (6/174) \rremote: Compressing objects: 4% (7/174) \rremote: Compressi"] +[5.2256443786621, "o", "ng objects: 5% (9/174) \rremote: Compressing objects: 6% (11/174) \rremote: Compressing objects: 7% (13/174) \rremote: Compressing objects: 8% (14/174) \rremote: Compressing objects: 9% (16/174) \rremote: Compressing objects: 10% (18/174) \rremote: Compressing objects: 11% (20/174) \rremote: Compressing objects: 12% (21/174) \rremote: Compressing objects: 13% (23/174) \rremote: Compressing objects: 14% (25/174) \rremote: Compressing "] +[5.225659399032583, "o", "objects: 15% (27/174) \rremote: Compressing objects: 16% (28/174) \rremote: Compressing objects: 17% (30/174) \rremote: Compressing objects: 18% (32/174) \rremote: Compressing objects: 19% (34/174) \rremote: Compressing objects: 20% (35/174) \rremote: Compressing objects: 21% (37/174) \rremote: Compressing objects: 22% (39/174) \rremote: Compressing objects: 23% (41/174) \rremote: Compressing objects: 24% (42/174) \rremote: Compressing ob"] +[5.225667743682852, "o", "jects: 25% (44/174) \rremote: Compressing objects: 26% (46/174) \rremote: Compressing objects: 27% (47/174) \rremote: Compressing objects: 28% (49/174) \rremote: Compressing objects: 29% (51/174) \rremote: Compressing objects: 30% (53/174) \rremote: Compressing objects: 31% (54/174) \rremote: Compressing objects: 32% (56/174) \rremote: Compressing objects: 33% (58/174) \rremote: Compressing objects: 34% (60/174) \rremote: Compressing obje"] +[5.225675611495962, "o", "cts: 35% (61/174) \rremote: Compressing objects: 36% (63/174) \rremote: Compressing objects: 37% (65/174) \rremote: Compressing objects: 38% (67/174) \rremote: Compressing objects: 39% (68/174) \rremote: Compressing objects: 40% (70/174) \rremote: Compressing objects: 41% (72/174) \rremote: Compressing objects: 42% (74/174) \rremote: Compressing objects: 43% (75/174)\rremote: Compressing objects: 44% (77/174) \rremote: Compressing objects: 45% "] +[5.225679187774649, "o", "(79/174) \rremote: Compressing objects: 46% (81/174) \rremote: Compressing objects: 47% (82/174) \rremote: Compressing objects: 48% (84/174) \rremote: Compressing objects: 49% (86/174) \rremote: Compressing objects: 50% (87/174) \rremote: Compressing objects: 51% (89/174) \rremote: Compressing objects: 52% (91/174) \rremote: Compressing objects: 53% (93/174) \rremote: Compressing objects: 54% (94/174) \rremote: Compressing objects: 55% (9"] +[5.225682764053335, "o", "6/174) \rremote: Compressing objects: 56% (98/174) \rremote: Compressing objects: 57% (100/174) \rremote: Compressing objects: 58% (101/174) \rremote: Compressing objects: 59% (103/174) \rremote: Compressing objects: 60% (105/174) \rremote: Compressing objects: 61% (107/174) \rremote: Compressing objects: 62% (108/174) \rremote: Compressing objects: 63% (110/174) \rremote: Compressing objects: 64% (112/174) \rremote: Compressing objects: "] +[5.225688486099234, "o", "65% (114/174) \rremote: Compressing objects: 66% (115/174) \rremote: Compressing objects: 67% (117/174) \rremote: Compressing objects: 68% (119/174) \rremote: Compressing objects: 69% (121/174) \rremote: Compressing objects: 70% (122/174) \rremote: Compressing objects: 71% (124/174) \rremote: Compressing objects: 72% (126/174) \rremote: Compressing objects: 73% (128/174) \rremote: Compressing objects: 74% (129/174) \rremote: Compressing ob"] +[5.22569206237792, "o", "jects: 75% (131/174) \rremote: Compressing objects: 76% (133/174) \rremote: Compressing objects: 77% (134/174) \rremote: Compressing objects: 78% (136/174) \rremote: Compressing objects: 79% (138/174) \rremote: Compressing objects: 80% (140/174) \rremote: Compressing objects: 81% (141/174) \rremote: Compressing objects: 82% (143/174) \rremote: Compressing objects: 83% (145/174) \rremote: Compressing objects: 84% (147/174) \rremote: Compre"] +[5.225696592330923, "o", "ssing objects: 85% (148/174) \rremote: Compressing objects: 86% (150/174) \rremote: Compressing objects: 87% (152/174) \rremote: Compressing objects: 88% (154/174) \rremote: Compressing objects: 89% (155/174) \rremote: Compressing objects: 90% (157/174) \rremote: Compressing objects: 91% (159/174) \rremote: Compressing objects: 92% (161/174) \rremote: Compressing objects: 93% (162/174) \rremote: Compressing objects: 94% (164/174) \rremote"] +[5.2257044601440334, "o", ": Compressing objects: 95% (166/174) \rremote: Compressing objects: 96% (168/174) \rremote: Compressing objects: 97% (169/174) \rremote: Compressing objects: 98% (171/174) \rremote: Compressing objects: 99% (173/174) \rremote: Compressing objects: 100% (174/174) \rremote: Compressing objects: 100% (174/174), done. \r\n"] +[5.2284207630157375, "o", "Receiving objects: 0% (1/405)\r"] +[5.228546886444082, "o", "Receiving objects: 1% (5/405)\r"] +[5.228772192001333, "o", "Receiving objects: 2% (9/405)\r"] +[5.228800086975088, "o", "Receiving objects: 3% (13/405)\r"] +[5.228996543884268, "o", "Receiving objects: 4% (17/405)\r"] +[5.230543642044058, "o", "Receiving objects: 5% (21/405)\r"] +[5.230786590576162, "o", "Receiving objects: 6% (25/405)\r"] +[5.230934171676626, "o", "Receiving objects: 7% (29/405)\r"] +[5.23112681388854, "o", "Receiving objects: 8% (33/405)\r"] +[5.231260566711416, "o", "Receiving objects: 9% (37/405)\r"] +[5.231383590698233, "o", "Receiving objects: 10% (41/405)\r"] +[5.231538562774649, "o", "Receiving objects: 11% (45/405)\r"] +[5.231705932617178, "o", "Receiving objects: 12% (49/405)\r"] +[5.231841115951529, "o", "Receiving objects: 13% (53/405)\r"] +[5.231987028121939, "o", "Receiving objects: 14% (57/405)\r"] +[5.232153682708731, "o", "Receiving objects: 15% (61/405)\r"] +[5.232276945114126, "o", "Receiving objects: 16% (65/405)\r"] +[5.2325263309478665, "o", "Receiving objects: 17% (69/405)\r"] +[5.23265007019042, "o", "Receiving objects: 18% (73/405)\r"] +[5.232741622924795, "o", "Receiving objects: 19% (77/405)\r"] +[5.2328620243072415, "o", "Receiving objects: 20% (81/405)\r"] +[5.232961921691885, "o", "Receiving objects: 21% (86/405)\r"] +[5.233546047210684, "o", "Receiving objects: 22% (90/405)\r"] +[5.2335522460937405, "o", "Receiving objects: 23% (94/405)\r"] +[5.233690528869619, "o", "Receiving objects: 24% (98/405)\r"] +[5.233708171844473, "o", "Receiving objects: 25% (102/405)\r"] +[5.235724954605093, "o", "Receiving objects: 26% (106/405)\r"] +[5.235942630767813, "o", "Receiving objects: 27% (110/405)\r"] +[5.235952167510977, "o", "Receiving objects: 28% (114/405)\r"] +[5.235957889556875, "o", "Receiving objects: 29% (118/405)\r"] +[5.236130504608145, "o", "Receiving objects: 30% (122/405)\r"] +[5.236143140792837, "o", "Receiving objects: 31% (126/405)\r"] +[5.2361486244201565, "o", "Receiving objects: 32% (130/405)\r"] +[5.238642959594717, "o", "Receiving objects: 33% (134/405)\r"] +[5.238682775497427, "o", "Receiving objects: 34% (138/405)\r"] +[5.24126127243041, "o", "Receiving objects: 35% (142/405)\r"] +[5.241724281311026, "o", "Receiving objects: 36% (146/405)\r"] +[5.2417309570312405, "o", "Receiving objects: 37% (150/405)\r"] +[5.241784601211538, "o", "Receiving objects: 38% (154/405)\r"] +[5.241790084838858, "o", "Receiving objects: 39% (158/405)\r"] +[5.2449705886840725, "o", "Receiving objects: 40% (162/405)\rReceiving objects: 41% (167/405)\rReceiving objects: 42% (171/405)\r"] +[5.2454729366302395, "o", "Receiving objects: 43% (175/405)\r"] +[5.245871572494497, "o", "Receiving objects: 44% (179/405)\r"] +[5.245984821319571, "o", "remote: Total 405 (delta 191), reused 405 (delta 191), pack-reused 0 "] +[5.245992212295523, "o", "\r\n"] +[5.246597557067862, "o", "Receiving objects: 45% (183/405)\rReceiving objects: 46% (187/405)\r"] +[5.246885805129995, "o", "Receiving objects: 47% (191/405)\r"] +[5.247414855957022, "o", "Receiving objects: 48% (195/405)\rReceiving objects: 49% (199/405)\r"] +[5.2479307937621975, "o", "Receiving objects: 50% (203/405)\rReceiving objects: 51% (207/405)\rReceiving objects: 52% (211/405)\r"] +[5.2482829380035305, "o", "Receiving objects: 53% (215/405)\rReceiving objects: 54% (219/405)\rReceiving objects: 55% (223/405)\r"] +[5.248304634094229, "o", "Receiving objects: 56% (227/405)\r"] +[5.248311309814444, "o", "Receiving objects: 57% (231/405)\rReceiving objects: 58% (235/405)\r"] +[5.248801021575918, "o", "Receiving objects: 59% (239/405)\rReceiving objects: 60% (243/405)\r"] +[5.248817710876455, "o", "Receiving objects: 61% (248/405)\r"] +[5.248823432922354, "o", "Receiving objects: 62% (252/405)\r"] +[5.248836069107046, "o", "Receiving objects: 63% (256/405)\r"] +[5.248873500823965, "o", "Receiving objects: 64% (260/405)\r"] +[5.248879461288443, "o", "Receiving objects: 65% (264/405)\r"] +[5.248907833099356, "o", "Receiving objects: 66% (268/405)\r"] +[5.249578504562368, "o", "Receiving objects: 67% (272/405)\r"] +[5.249585180282583, "o", "Receiving objects: 68% (276/405)\r"] +[5.249590663909903, "o", "Receiving objects: 69% (280/405)\r"] +[5.249596147537222, "o", "Receiving objects: 70% (284/405)\r"] +[5.2500224399566555, "o", "Receiving objects: 71% (288/405)\rReceiving objects: 72% (292/405)\rReceiving objects: 73% (296/405)\rReceiving objects: 74% (300/405)\rReceiving objects: 75% (304/405)\r"] +[5.250044374465933, "o", "Receiving objects: 76% (308/405)\r"] +[5.250057964324942, "o", "Receiving objects: 77% (312/405)\r"] +[5.250063209533682, "o", "Receiving objects: 78% (316/405)\r"] +[5.25076153755187, "o", "Receiving objects: 79% (320/405)\rReceiving objects: 80% (324/405)\rReceiving objects: 81% (329/405)\r"] +[5.250776319503775, "o", "Receiving objects: 82% (333/405)\rReceiving objects: 83% (337/405)\rReceiving objects: 84% (341/405)\r"] +[5.250788717269888, "o", "Receiving objects: 85% (345/405)\r"] +[5.250800638198843, "o", "Receiving objects: 86% (349/405)\r"] +[5.250806121826162, "o", "Receiving objects: 87% (353/405)\rReceiving objects: 88% (357/405)\r"] +[5.250811367034903, "o", "Receiving objects: 89% (361/405)\r"] +[5.251930503845205, "o", "Receiving objects: 90% (365/405)\r"] +[5.251971035003653, "o", "Receiving objects: 91% (369/405)\r"] +[5.251979379653921, "o", "Receiving objects: 92% (373/405)\r"] +[5.252007036209097, "o", "Receiving objects: 93% (377/405)\r"] +[5.252575426101675, "o", "Receiving objects: 94% (381/405)\r"] +[5.252591161727896, "o", "Receiving objects: 95% (385/405)\r"] +[5.252908020019522, "o", "Receiving objects: 96% (389/405)\r"] +[5.252920656204214, "o", "Receiving objects: 97% (393/405)\rReceiving objects: 98% (397/405)\r"] +[5.2529261398315334, "o", "Receiving objects: 99% (401/405)\r"] +[5.253380327224722, "o", "Receiving objects: 100% (405/405)\rReceiving objects: 100% (405/405), 270.20 KiB | 10.39 MiB/s, done.\r\n"] +[5.253821878433218, "o", "Resolving deltas: 0% (0/191)\r"] +[5.25387433052062, "o", "Resolving deltas: 1% (2/191)\r"] +[5.2539191532134915, "o", "Resolving deltas: 2% (4/191)\r"] +[5.25406554222106, "o", "Resolving deltas: 3% (6/191)\r"] +[5.254209070205679, "o", "Resolving deltas: 4% (8/191)\r"] +[5.254389553070059, "o", "Resolving deltas: 5% (10/191)\r"] +[5.254489212036123, "o", "Resolving deltas: 6% (12/191)\r"] +[5.254585056304922, "o", "Resolving deltas: 7% (14/191)\r"] +[5.254645614624014, "o", "Resolving deltas: 8% (16/191)\r"] +[5.2547478961944485, "o", "Resolving deltas: 9% (18/191)\r"] +[5.254975109100332, "o", "Resolving deltas: 10% (20/191)\r"] +[5.255057125091543, "o", "Resolving deltas: 11% (22/191)\r"] +[5.255128412246695, "o", "Resolving deltas: 12% (23/191)\r"] +[5.259471445083609, "o", "Resolving deltas: 13% (25/191)\r"] +[5.259481220245352, "o", "Resolving deltas: 14% (27/191)\r"] +[5.2596800613403225, "o", "Resolving deltas: 15% (29/191)\rResolving deltas: 16% (31/191)\rResolving deltas: 17% (33/191)\r"] +[5.2596869754791165, "o", "Resolving deltas: 18% (35/191)\r"] +[5.259990720748892, "o", "Resolving deltas: 19% (37/191)\rResolving deltas: 20% (39/191)\rResolving deltas: 21% (41/191)\rResolving deltas: 22% (43/191)\r"] +[5.259997873306265, "o", "Resolving deltas: 23% (44/191)\r"] +[5.260333089828482, "o", "Resolving deltas: 24% (46/191)\rResolving deltas: 25% (48/191)\rResolving deltas: 26% (50/191)\rResolving deltas: 27% (52/191)\r"] +[5.260340242385855, "o", "Resolving deltas: 28% (54/191)\r"] +[5.260384588241568, "o", "Resolving deltas: 29% (56/191)\r"] +[5.26042917251586, "o", "Resolving deltas: 30% (58/191)\r"] +[5.260435132980337, "o", "Resolving deltas: 31% (60/191)\r"] +[5.260458736419668, "o", "Resolving deltas: 32% (62/191)\r"] +[5.2604639816284084, "o", "Resolving deltas: 33% (64/191)\r"] +[5.260490922927847, "o", "Resolving deltas: 34% (65/191)\r"] +[5.260527877807608, "o", "Resolving deltas: 35% (67/191)\r"] +[5.260533123016348, "o", "Resolving deltas: 36% (69/191)\r"] +[5.260557203292837, "o", "Resolving deltas: 37% (71/191)\r"] +[5.260583429336538, "o", "Resolving deltas: 38% (73/191)\r"] +[5.260589151382437, "o", "Resolving deltas: 39% (75/191)\r"] +[5.26059368133544, "o", "Resolving deltas: 40% (77/191)\r"] +[5.260627536773672, "o", "Resolving deltas: 41% (79/191)\r"] +[5.26067045211791, "o", "Resolving deltas: 42% (81/191)\r"] +[5.260676174163809, "o", "Resolving deltas: 43% (83/191)\r"] +[5.260698585510244, "o", "Resolving deltas: 44% (85/191)\r"] +[5.260704069137564, "o", "Resolving deltas: 45% (86/191)\r"] +[5.260709075927725, "o", "Resolving deltas: 46% (88/191)\r"] +[5.260735540390005, "o", "Resolving deltas: 47% (90/191)\r"] +[5.260740785598745, "o", "Resolving deltas: 48% (92/191)\r"] +[5.260770349502554, "o", "Resolving deltas: 49% (94/191)\r"] +[5.260775356292715, "o", "Resolving deltas: 50% (96/191)\r"] +[5.262300519943228, "o", "Resolving deltas: 51% (98/191)\rResolving deltas: 52% (100/191)\rResolving deltas: 53% (102/191)\rResolving deltas: 54% (104/191)\rResolving deltas: 55% (106/191)\rResolving deltas: 56% (107/191)\rResolving deltas: 57% (109/191)\rResolving deltas: 58% (111/191)\rResolving deltas: 59% (113/191)\rResolving deltas: 60% (115/191)\rResolving deltas: 61% (117/191)\rResolving deltas: 62% (119/191)\rResolving deltas: 63% (121/191)\rResolving deltas: 64% (123/191)\rResolving deltas: 65% (125/191)\rResolving deltas: "] +[5.262311964035025, "o", " 66% (127/191)\rResolving deltas: 67% (128/191)\rResolving deltas: 68% (130/191)\rResolving deltas: 69% (132/191)\rResolving deltas: 70% (134/191)\r"] +[5.2623584556579495, "o", "Resolving deltas: 71% (136/191)\r"] +[5.262818841934195, "o", "Resolving deltas: 72% (138/191)\r"] +[5.265203266143789, "o", "Resolving deltas: 73% (140/191)\r"] +[5.265543727874746, "o", "Resolving deltas: 74% (142/191)\r"] +[5.2658045578002834, "o", "Resolving deltas: 75% (144/191)\r"] +[5.2660792160034084, "o", "Resolving deltas: 76% (146/191)\r"] +[5.266258983612051, "o", "Resolving deltas: 77% (148/191)\r"] +[5.266265897750845, "o", "Resolving deltas: 78% (149/191)\r"] +[5.2664573478698635, "o", "Resolving deltas: 79% (151/191)\r"] +[5.266613273620596, "o", "Resolving deltas: 80% (153/191)\r"] +[5.2677109527587795, "o", "Resolving deltas: 81% (155/191)\r"] +[5.268712072372427, "o", "Resolving deltas: 82% (157/191)\r"] +[5.269536046981802, "o", "Resolving deltas: 83% (159/191)\r"] +[5.270320920944204, "o", "Resolving deltas: 84% (161/191)\r"] +[5.2703283119201565, "o", "Resolving deltas: 85% (163/191)\r"] +[5.2709880161285305, "o", "Resolving deltas: 86% (165/191)\r"] +[5.271188764572134, "o", "Resolving deltas: 87% (167/191)\rResolving deltas: 88% (169/191)\rResolving deltas: 89% (170/191)\rResolving deltas: 90% (172/191)\rResolving deltas: 91% (174/191)\rResolving deltas: 92% (176/191)\r"] +[5.271253852844229, "o", "Resolving deltas: 93% (178/191)\r"] +[5.271418838500967, "o", "Resolving deltas: 94% (180/191)\r"] +[5.271515636444082, "o", "Resolving deltas: 95% (182/191)\r"] +[5.271571664810171, "o", "Resolving deltas: 96% (184/191)\r"] +[5.271613149642935, "o", "Resolving deltas: 97% (186/191)\r"] +[5.2716546344756985, "o", "Resolving deltas: 98% (188/191)\r"] +[5.271705179214468, "o", "Resolving deltas: 99% (190/191)\r"] +[5.2717883872985745, "o", "Resolving deltas: 100% (191/191)\r"] +[5.2721100139617825, "o", "Resolving deltas: 100% (191/191), done.\r\n"] +[5.302110013961783, "o", "\u001b[1m"] +[5.332110013961783, "o", "\u001b[36m"] +[5.362110013961783, "o", "\u001b[91m"] +[5.3921100139617835, "o", "$"] +[5.422110013961784, "o", " "] +[5.452110013961784, "o", "\u001b[0m"] +[12.03, "o", "\u001b[H"] +[12.059999999999999, "o", "\u001b[J"] +[12.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the initial data (in CSV) from this branch of the project."] +[12.119999999999997, "o", "\r\n"] +[12.149999999999997, "o", "$"] +[12.179999999999996, "o", " "] +[12.209999999999996, "o", "s"] +[12.239999999999995, "o", "g"] +[12.269999999999994, "o", "r"] +[12.299999999999994, "o", " "] +[12.329999999999993, "o", "i"] +[12.359999999999992, "o", "n"] +[12.389999999999992, "o", "i"] +[12.419999999999991, "o", "t"] +[12.44999999999999, "o", " "] +[12.47999999999999, "o", "r"] +[12.50999999999999, "o", "a"] +[12.539999999999988, "o", "w"] +[12.569999999999988, "o", "_"] +[12.599999999999987, "o", "j"] +[12.629999999999987, "o", "a"] +[12.659999999999986, "o", "f"] +[12.689999999999985, "o", "f"] +[12.719999999999985, "o", "l"] +[12.749999999999984, "o", "e"] +[12.779999999999983, "o", "_"] +[12.809999999999983, "o", "s"] +[12.839999999999982, "o", "h"] +[12.869999999999981, "o", "o"] +[12.89999999999998, "o", "p"] +[12.92999999999998, "o", "\r\n"] +[12.95999999999998, "o", "$"] +[12.989999999999979, "o", " "] +[13.019999999999978, "o", "s"] +[13.049999999999978, "o", "g"] +[13.079999999999977, "o", "r"] +[13.109999999999976, "o", " "] +[13.139999999999976, "o", "c"] +[13.169999999999975, "o", "s"] +[13.199999999999974, "o", "v"] +[13.229999999999974, "o", " "] +[13.259999999999973, "o", "i"] +[13.289999999999973, "o", "m"] +[13.319999999999972, "o", "p"] +[13.349999999999971, "o", "o"] +[13.37999999999997, "o", "r"] +[13.40999999999997, "o", "t"] +[13.43999999999997, "o", " "] +[13.469999999999969, "o", "-"] +[13.499999999999968, "o", "f"] +[13.529999999999967, "o", " "] +[13.559999999999967, "o", "j"] +[13.589999999999966, "o", "a"] +[13.619999999999965, "o", "f"] +[13.649999999999965, "o", "f"] +[13.679999999999964, "o", "l"] +[13.709999999999964, "o", "e"] +[13.739999999999963, "o", "_"] +[13.769999999999962, "o", "s"] +[13.799999999999962, "o", "h"] +[13.829999999999961, "o", "o"] +[13.85999999999996, "o", "p"] +[13.88999999999996, "o", "/"] +[13.919999999999959, "o", "d"] +[13.949999999999958, "o", "a"] +[13.979999999999958, "o", "t"] +[14.009999999999957, "o", "a"] +[14.039999999999957, "o", "/"] +[14.069999999999956, "o", "r"] +[14.099999999999955, "o", "a"] +[14.129999999999955, "o", "w"] +[14.159999999999954, "o", "_"] +[14.189999999999953, "o", "c"] +[14.219999999999953, "o", "u"] +[14.249999999999952, "o", "s"] +[14.279999999999951, "o", "t"] +[14.30999999999995, "o", "o"] +[14.33999999999995, "o", "m"] +[14.36999999999995, "o", "e"] +[14.399999999999949, "o", "r"] +[14.429999999999948, "o", "s"] +[14.459999999999948, "o", "."] +[14.489999999999947, "o", "c"] +[14.519999999999946, "o", "s"] +[14.549999999999946, "o", "v"] +[14.579999999999945, "o", " "] +[14.609999999999944, "o", "-"] +[14.639999999999944, "o", "k"] +[14.669999999999943, "o", " "] +[14.699999999999942, "o", "i"] +[14.729999999999942, "o", "d"] +[14.759999999999941, "o", " "] +[14.78999999999994, "o", "r"] +[14.81999999999994, "o", "a"] +[14.84999999999994, "o", "w"] +[14.879999999999939, "o", "_"] +[14.909999999999938, "o", "j"] +[14.939999999999937, "o", "a"] +[14.969999999999937, "o", "f"] +[14.999999999999936, "o", "f"] +[15.029999999999935, "o", "l"] +[15.059999999999935, "o", "e"] +[15.089999999999934, "o", "_"] +[15.119999999999933, "o", "s"] +[15.149999999999933, "o", "h"] +[15.179999999999932, "o", "o"] +[15.209999999999932, "o", "p"] +[15.239999999999931, "o", " "] +[15.26999999999993, "o", "c"] +[15.29999999999993, "o", "u"] +[15.329999999999929, "o", "s"] +[15.359999999999928, "o", "t"] +[15.389999999999928, "o", "o"] +[15.419999999999927, "o", "m"] +[15.449999999999926, "o", "e"] +[15.479999999999926, "o", "r"] +[15.509999999999925, "o", "s"] +[15.539999999999925, "o", "\r\n"] +[15.569999999999924, "o", "$"] +[15.599999999999923, "o", " "] +[15.629999999999923, "o", "s"] +[15.659999999999922, "o", "g"] +[15.689999999999921, "o", "r"] +[15.71999999999992, "o", " "] +[15.74999999999992, "o", "c"] +[15.77999999999992, "o", "s"] +[15.809999999999919, "o", "v"] +[15.839999999999918, "o", " "] +[15.869999999999918, "o", "i"] +[15.899999999999917, "o", "m"] +[15.929999999999916, "o", "p"] +[15.959999999999916, "o", "o"] +[15.989999999999915, "o", "r"] +[16.019999999999914, "o", "t"] +[16.049999999999915, "o", " "] +[16.079999999999917, "o", "-"] +[16.109999999999918, "o", "f"] +[16.13999999999992, "o", " "] +[16.16999999999992, "o", "j"] +[16.19999999999992, "o", "a"] +[16.229999999999922, "o", "f"] +[16.259999999999923, "o", "f"] +[16.289999999999925, "o", "l"] +[16.319999999999926, "o", "e"] +[16.349999999999927, "o", "_"] +[16.379999999999928, "o", "s"] +[16.40999999999993, "o", "h"] +[16.43999999999993, "o", "o"] +[16.46999999999993, "o", "p"] +[16.499999999999932, "o", "/"] +[16.529999999999934, "o", "d"] +[16.559999999999935, "o", "a"] +[16.589999999999936, "o", "t"] +[16.619999999999937, "o", "a"] +[16.649999999999938, "o", "/"] +[16.67999999999994, "o", "r"] +[16.70999999999994, "o", "a"] +[16.73999999999994, "o", "w"] +[16.769999999999943, "o", "_"] +[16.799999999999944, "o", "o"] +[16.829999999999945, "o", "r"] +[16.859999999999946, "o", "d"] +[16.889999999999947, "o", "e"] +[16.91999999999995, "o", "r"] +[16.94999999999995, "o", "s"] +[16.97999999999995, "o", "."] +[17.009999999999952, "o", "c"] +[17.039999999999953, "o", "s"] +[17.069999999999954, "o", "v"] +[17.099999999999955, "o", " "] +[17.129999999999956, "o", "-"] +[17.159999999999958, "o", "k"] +[17.18999999999996, "o", " "] +[17.21999999999996, "o", "i"] +[17.24999999999996, "o", "d"] +[17.279999999999962, "o", " "] +[17.309999999999963, "o", "-"] +[17.339999999999964, "o", "t"] +[17.369999999999965, "o", " "] +[17.399999999999967, "o", "o"] +[17.429999999999968, "o", "r"] +[17.45999999999997, "o", "d"] +[17.48999999999997, "o", "e"] +[17.51999999999997, "o", "r"] +[17.549999999999972, "o", "_"] +[17.579999999999973, "o", "d"] +[17.609999999999975, "o", "a"] +[17.639999999999976, "o", "t"] +[17.669999999999977, "o", "e"] +[17.699999999999978, "o", " "] +[17.72999999999998, "o", "t"] +[17.75999999999998, "o", "i"] +[17.78999999999998, "o", "m"] +[17.819999999999983, "o", "e"] +[17.849999999999984, "o", "s"] +[17.879999999999985, "o", "t"] +[17.909999999999986, "o", "a"] +[17.939999999999987, "o", "m"] +[17.969999999999988, "o", "p"] +[17.99999999999999, "o", " "] +[18.02999999999999, "o", "r"] +[18.05999999999999, "o", "a"] +[18.089999999999993, "o", "w"] +[18.119999999999994, "o", "_"] +[18.149999999999995, "o", "j"] +[18.179999999999996, "o", "a"] +[18.209999999999997, "o", "f"] +[18.24, "o", "f"] +[18.27, "o", "l"] +[18.3, "o", "e"] +[18.330000000000002, "o", "_"] +[18.360000000000003, "o", "s"] +[18.390000000000004, "o", "h"] +[18.420000000000005, "o", "o"] +[18.450000000000006, "o", "p"] +[18.480000000000008, "o", " "] +[18.51000000000001, "o", "o"] +[18.54000000000001, "o", "r"] +[18.57000000000001, "o", "d"] +[18.600000000000012, "o", "e"] +[18.630000000000013, "o", "r"] +[18.660000000000014, "o", "s"] +[18.690000000000015, "o", "\r\n"] +[18.720000000000017, "o", "$"] +[18.750000000000018, "o", " "] +[18.78000000000002, "o", "s"] +[18.81000000000002, "o", "g"] +[18.84000000000002, "o", "r"] +[18.870000000000022, "o", " "] +[18.900000000000023, "o", "c"] +[18.930000000000025, "o", "s"] +[18.960000000000026, "o", "v"] +[18.990000000000027, "o", " "] +[19.020000000000028, "o", "i"] +[19.05000000000003, "o", "m"] +[19.08000000000003, "o", "p"] +[19.11000000000003, "o", "o"] +[19.140000000000033, "o", "r"] +[19.170000000000034, "o", "t"] +[19.200000000000035, "o", " "] +[19.230000000000036, "o", "-"] +[19.260000000000037, "o", "f"] +[19.29000000000004, "o", " "] +[19.32000000000004, "o", "j"] +[19.35000000000004, "o", "a"] +[19.38000000000004, "o", "f"] +[19.410000000000043, "o", "f"] +[19.440000000000044, "o", "l"] +[19.470000000000045, "o", "e"] +[19.500000000000046, "o", "_"] +[19.530000000000047, "o", "s"] +[19.56000000000005, "o", "h"] +[19.59000000000005, "o", "o"] +[19.62000000000005, "o", "p"] +[19.650000000000052, "o", "/"] +[19.680000000000053, "o", "d"] +[19.710000000000054, "o", "a"] +[19.740000000000055, "o", "t"] +[19.770000000000056, "o", "a"] +[19.800000000000058, "o", "/"] +[19.83000000000006, "o", "r"] +[19.86000000000006, "o", "a"] +[19.89000000000006, "o", "w"] +[19.920000000000062, "o", "_"] +[19.950000000000063, "o", "p"] +[19.980000000000064, "o", "a"] +[20.010000000000066, "o", "y"] +[20.040000000000067, "o", "m"] +[20.070000000000068, "o", "e"] +[20.10000000000007, "o", "n"] +[20.13000000000007, "o", "t"] +[20.16000000000007, "o", "s"] +[20.190000000000072, "o", "."] +[20.220000000000073, "o", "c"] +[20.250000000000075, "o", "s"] +[20.280000000000076, "o", "v"] +[20.310000000000077, "o", " "] +[20.340000000000078, "o", "-"] +[20.37000000000008, "o", "k"] +[20.40000000000008, "o", " "] +[20.43000000000008, "o", "i"] +[20.460000000000083, "o", "d"] +[20.490000000000084, "o", " "] +[20.520000000000085, "o", "r"] +[20.550000000000086, "o", "a"] +[20.580000000000087, "o", "w"] +[20.61000000000009, "o", "_"] +[20.64000000000009, "o", "j"] +[20.67000000000009, "o", "a"] +[20.70000000000009, "o", "f"] +[20.730000000000093, "o", "f"] +[20.760000000000094, "o", "l"] +[20.790000000000095, "o", "e"] +[20.820000000000096, "o", "_"] +[20.850000000000097, "o", "s"] +[20.8800000000001, "o", "h"] +[20.9100000000001, "o", "o"] +[20.9400000000001, "o", "p"] +[20.970000000000102, "o", " "] +[21.000000000000103, "o", "p"] +[21.030000000000104, "o", "a"] +[21.060000000000105, "o", "y"] +[21.090000000000106, "o", "m"] +[21.120000000000108, "o", "e"] +[21.15000000000011, "o", "n"] +[21.18000000000011, "o", "t"] +[21.21000000000011, "o", "s"] +[21.240000000000112, "o", "\r\n"] +[21.270000000000113, "o", "\u001b[0m"] +[21.300000000000114, "o", "\r\n"] +[21.71254281997692, "o", "Initialized empty repository raw_jaffle_shop\r\n"] +[21.742542819976922, "o", "\u001b[1m"] +[21.772542819976923, "o", "\u001b[36m"] +[21.802542819976924, "o", "\u001b[91m"] +[21.832542819976926, "o", "$"] +[21.862542819976927, "o", " "] +[21.892542819976928, "o", "\u001b[0m"] +[26.92254281997693, "o", "\u001b[H"] +[26.95254281997693, "o", "\u001b[J"] +[26.98254281997693, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Snapshot the initial data with Splitgraph."] +[27.012542819976932, "o", "\r\n"] +[27.042542819976934, "o", "$"] +[27.072542819976935, "o", " "] +[27.102542819976936, "o", "s"] +[27.132542819976937, "o", "g"] +[27.162542819976938, "o", "r"] +[27.19254281997694, "o", " "] +[27.22254281997694, "o", "d"] +[27.25254281997694, "o", "i"] +[27.282542819976943, "o", "f"] +[27.312542819976944, "o", "f"] +[27.342542819976945, "o", " "] +[27.372542819976946, "o", "r"] +[27.402542819976947, "o", "a"] +[27.43254281997695, "o", "w"] +[27.46254281997695, "o", "_"] +[27.49254281997695, "o", "j"] +[27.52254281997695, "o", "a"] +[27.552542819976953, "o", "f"] +[27.582542819976954, "o", "f"] +[27.612542819976955, "o", "l"] +[27.642542819976956, "o", "e"] +[27.672542819976957, "o", "_"] +[27.70254281997696, "o", "s"] +[27.73254281997696, "o", "h"] +[27.76254281997696, "o", "o"] +[27.792542819976962, "o", "p"] +[27.822542819976963, "o", "\r\n"] +[27.852542819976964, "o", "$"] +[27.882542819976965, "o", " "] +[27.912542819976967, "o", "s"] +[27.942542819976968, "o", "g"] +[27.97254281997697, "o", "r"] +[28.00254281997697, "o", " "] +[28.03254281997697, "o", "c"] +[28.062542819976972, "o", "o"] +[28.092542819976973, "o", "m"] +[28.122542819976974, "o", "m"] +[28.152542819976976, "o", "i"] +[28.182542819976977, "o", "t"] +[28.212542819976978, "o", " "] +[28.24254281997698, "o", "r"] +[28.27254281997698, "o", "a"] +[28.30254281997698, "o", "w"] +[28.332542819976982, "o", "_"] +[28.362542819976984, "o", "j"] +[28.392542819976985, "o", "a"] +[28.422542819976986, "o", "f"] +[28.452542819976987, "o", "f"] +[28.482542819976988, "o", "l"] +[28.51254281997699, "o", "e"] +[28.54254281997699, "o", "_"] +[28.57254281997699, "o", "s"] +[28.602542819976993, "o", "h"] +[28.632542819976994, "o", "o"] +[28.662542819976995, "o", "p"] +[28.692542819976996, "o", "\r\n"] +[28.722542819976997, "o", "$"] +[28.752542819977, "o", " "] +[28.782542819977, "o", "s"] +[28.812542819977, "o", "g"] +[28.842542819977, "o", "r"] +[28.872542819977003, "o", " "] +[28.902542819977004, "o", "t"] +[28.932542819977005, "o", "a"] +[28.962542819977006, "o", "g"] +[28.992542819977007, "o", " "] +[29.02254281997701, "o", "r"] +[29.05254281997701, "o", "a"] +[29.08254281997701, "o", "w"] +[29.112542819977012, "o", "_"] +[29.142542819977013, "o", "j"] +[29.172542819977014, "o", "a"] +[29.202542819977015, "o", "f"] +[29.232542819977017, "o", "f"] +[29.262542819977018, "o", "l"] +[29.29254281997702, "o", "e"] +[29.32254281997702, "o", "_"] +[29.35254281997702, "o", "s"] +[29.382542819977022, "o", "h"] +[29.412542819977023, "o", "o"] +[29.442542819977024, "o", "p"] +[29.472542819977026, "o", " "] +[29.502542819977027, "o", "a"] +[29.532542819977028, "o", "s"] +[29.56254281997703, "o", "o"] +[29.59254281997703, "o", "f"] +[29.62254281997703, "o", "_"] +[29.652542819977032, "o", "2"] +[29.682542819977034, "o", "0"] +[29.712542819977035, "o", "1"] +[29.742542819977036, "o", "8"] +[29.772542819977037, "o", "0"] +[29.802542819977038, "o", "4"] +[29.83254281997704, "o", "0"] +[29.86254281997704, "o", "9"] +[29.89254281997704, "o", "\r\n"] +[29.922542819977043, "o", "\u001b[0m"] +[29.952542819977044, "o", "\r\n"] +[30.3596797370913, "o", "Between 000000000000 and the current working copy: \r\n"] +[30.359690227508782, "o", "customers: table added\r\norders: table added\r\npayments: table added\r\n"] +[30.75613001823449, "o", "Committing raw_jaffle_shop...\r\n"] +[30.782459058761834, "o", "Processing table orders\r\n"] +[30.872050561905144, "o", "Processing table payments\r\n"] +[30.89757756233239, "o", "Processing table customers\r\n"] +[30.934414663315057, "o", "Committed raw_jaffle_shop as 1cddaa0da082.\r\n"] +[31.36572269439721, "o", "Tagged raw_jaffle_shop:1cddaa0da0827625e9b9f47a3c0c42d523aef9cc501de2160ea73fb7ac4fe930 with asof_20180409.\r\n"] +[31.39572269439721, "o", "\u001b[1m"] +[31.425722694397212, "o", "\u001b[36m"] +[31.455722694397213, "o", "\u001b[91m"] +[31.485722694397214, "o", "$"] +[31.515722694397216, "o", " "] +[31.545722694397217, "o", "\u001b[0m"] +[36.575722694397214, "o", "\u001b[H"] +[36.605722694397215, "o", "\u001b[J"] +[36.63572269439722, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the original data"] +[36.66572269439722, "o", "\r\n"] +[36.69572269439722, "o", "$"] +[36.72572269439722, "o", " "] +[36.75572269439722, "o", "s"] +[36.78572269439722, "o", "g"] +[36.81572269439722, "o", "r"] +[36.845722694397224, "o", " "] +[36.875722694397226, "o", "s"] +[36.90572269439723, "o", "h"] +[36.93572269439723, "o", "o"] +[36.96572269439723, "o", "w"] +[36.99572269439723, "o", " "] +[37.02572269439723, "o", "r"] +[37.05572269439723, "o", "a"] +[37.085722694397234, "o", "w"] +[37.115722694397235, "o", "_"] +[37.145722694397236, "o", "j"] +[37.17572269439724, "o", "a"] +[37.20572269439724, "o", "f"] +[37.23572269439724, "o", "f"] +[37.26572269439724, "o", "l"] +[37.29572269439724, "o", "e"] +[37.32572269439724, "o", "_"] +[37.355722694397244, "o", "s"] +[37.385722694397245, "o", "h"] +[37.415722694397246, "o", "o"] +[37.44572269439725, "o", "p"] +[37.47572269439725, "o", ":"] +[37.50572269439725, "o", "a"] +[37.53572269439725, "o", "s"] +[37.56572269439725, "o", "o"] +[37.59572269439725, "o", "f"] +[37.625722694397254, "o", "_"] +[37.655722694397255, "o", "2"] +[37.685722694397256, "o", "0"] +[37.71572269439726, "o", "1"] +[37.74572269439726, "o", "8"] +[37.77572269439726, "o", "0"] +[37.80572269439726, "o", "4"] +[37.83572269439726, "o", "0"] +[37.86572269439726, "o", "9"] +[37.895722694397264, "o", "\r\n"] +[37.925722694397265, "o", "$"] +[37.95572269439727, "o", " "] +[37.98572269439727, "o", "s"] +[38.01572269439727, "o", "g"] +[38.04572269439727, "o", "r"] +[38.07572269439727, "o", " "] +[38.10572269439727, "o", "t"] +[38.13572269439727, "o", "a"] +[38.165722694397274, "o", "b"] +[38.195722694397276, "o", "l"] +[38.22572269439728, "o", "e"] +[38.25572269439728, "o", " "] +[38.28572269439728, "o", "r"] +[38.31572269439728, "o", "a"] +[38.34572269439728, "o", "w"] +[38.37572269439728, "o", "_"] +[38.405722694397284, "o", "j"] +[38.435722694397285, "o", "a"] +[38.465722694397286, "o", "f"] +[38.49572269439729, "o", "f"] +[38.52572269439729, "o", "l"] +[38.55572269439729, "o", "e"] +[38.58572269439729, "o", "_"] +[38.61572269439729, "o", "s"] +[38.64572269439729, "o", "h"] +[38.675722694397294, "o", "o"] +[38.705722694397295, "o", "p"] +[38.735722694397296, "o", ":"] +[38.7657226943973, "o", "a"] +[38.7957226943973, "o", "s"] +[38.8257226943973, "o", "o"] +[38.8557226943973, "o", "f"] +[38.8857226943973, "o", "_"] +[38.9157226943973, "o", "2"] +[38.945722694397304, "o", "0"] +[38.975722694397305, "o", "1"] +[39.005722694397306, "o", "8"] +[39.03572269439731, "o", "0"] +[39.06572269439731, "o", "4"] +[39.09572269439731, "o", "0"] +[39.12572269439731, "o", "9"] +[39.15572269439731, "o", " "] +[39.18572269439731, "o", "o"] +[39.215722694397314, "o", "r"] +[39.245722694397315, "o", "d"] +[39.27572269439732, "o", "e"] +[39.30572269439732, "o", "r"] +[39.33572269439732, "o", "s"] +[39.36572269439732, "o", "\r\n"] +[39.39572269439732, "o", "\u001b[0m"] +[39.42572269439732, "o", "\r\n"] +[39.839343643188826, "o", "Image raw_jaffle_shop:1cddaa0da0827625e9b9f47a3c0c42d523aef9cc501de2160ea73fb7ac4fe930\r\n\r\nCreated at 2021-07-26T09:46:25.685457\r\n"] +[39.841127490997664, "o", "Size: 7.58 KiB\r\n"] +[39.84120640754735, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n"] +[39.841252183914534, "o", "\r\n"] +[39.84129295349156, "o", "Tables:\r\n"] +[39.8419929504398, "o", " customers\r\n orders"] +[39.84202823638951, "o", "\r\n"] +[39.84207615852391, "o", " payments\r\n"] +[40.244415855408064, "o", "Table raw_jaffle_shop:1cddaa0da0827625e9b9f47a3c0c42d523aef9cc501de2160ea73fb7ac4fe930/orders\r\n"] +[40.244431591034285, "o", "\r\n"] +[40.24604187011754, "o", "Size: 1.73 KiB\r\n"] +[40.24717912673985, "o", "Rows: 99\r\n"] +[40.24719533920323, "o", "Columns: \r\n id (integer, PK)\r\n user_id (integer)\r\n order_date (timestamp without time zone)\r\n status (character varying)\r\n\r\n"] +[40.24785361290013, "o", "Objects: \r\n o7e3ffa6e2141edde30498e4c4a6a2b510d8b7e479081aafe154d31ca4436bd\r\n"] +[40.27785361290013, "o", "\u001b[1m"] +[40.30785361290013, "o", "\u001b[36m"] +[40.33785361290013, "o", "\u001b[91m"] +[40.367853612900134, "o", "$"] +[40.397853612900136, "o", " "] +[40.42785361290014, "o", "\u001b[0m"] +[49.575722694397214, "o", "\u001b[H"] +[49.605722694397215, "o", "\u001b[J"] +[49.63572269439722, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The status column in the raw_orders table in the initial dataset can"] +[49.66572269439722, "o", "\r\n"] +[49.69572269439722, "o", "$ # change through time. Pretend that some jaffles were actually returned.\r\n"] +[49.72572269439722, "o", "$"] +[49.75572269439722, "o", " "] +[49.78572269439722, "o", "s"] +[49.81572269439722, "o", "g"] +[49.845722694397224, "o", "r"] +[49.875722694397226, "o", " "] +[49.90572269439723, "o", "s"] +[49.93572269439723, "o", "q"] +[49.96572269439723, "o", "l"] +[49.99572269439723, "o", " "] +[50.02572269439723, "o", "-"] +[50.05572269439723, "o", "s"] +[50.085722694397234, "o", " "] +[50.115722694397235, "o", "r"] +[50.145722694397236, "o", "a"] +[50.17572269439724, "o", "w"] +[50.20572269439724, "o", "_"] +[50.23572269439724, "o", "j"] +[50.26572269439724, "o", "a"] +[50.29572269439724, "o", "f"] +[50.32572269439724, "o", "f"] +[50.355722694397244, "o", "l"] +[50.385722694397245, "o", "e"] +[50.415722694397246, "o", "_"] +[50.44572269439725, "o", "s"] +[50.47572269439725, "o", "h"] +[50.50572269439725, "o", "o"] +[50.53572269439725, "o", "p"] +[50.56572269439725, "o", " "] +[50.59572269439725, "o", "\""] +[50.625722694397254, "o", "U"] +[50.655722694397255, "o", "P"] +[50.685722694397256, "o", "D"] +[50.71572269439726, "o", "A"] +[50.74572269439726, "o", "T"] +[50.77572269439726, "o", "E"] +[50.80572269439726, "o", " "] +[50.83572269439726, "o", "o"] +[50.86572269439726, "o", "r"] +[50.895722694397264, "o", "d"] +[50.925722694397265, "o", "e"] +[50.95572269439727, "o", "r"] +[50.98572269439727, "o", "s"] +[51.01572269439727, "o", " "] +[51.04572269439727, "o", "S"] +[51.07572269439727, "o", "E"] +[51.10572269439727, "o", "T"] +[51.13572269439727, "o", " "] +[51.165722694397274, "o", "s"] +[51.195722694397276, "o", "t"] +[51.22572269439728, "o", "a"] +[51.25572269439728, "o", "t"] +[51.28572269439728, "o", "u"] +[51.31572269439728, "o", "s"] +[51.34572269439728, "o", " "] +[51.37572269439728, "o", "="] +[51.405722694397284, "o", " "] +[51.435722694397285, "o", "'"] +[51.465722694397286, "o", "r"] +[51.49572269439729, "o", "e"] +[51.52572269439729, "o", "t"] +[51.55572269439729, "o", "u"] +[51.58572269439729, "o", "r"] +[51.61572269439729, "o", "n"] +[51.64572269439729, "o", "e"] +[51.675722694397294, "o", "d"] +[51.705722694397295, "o", "'"] +[51.735722694397296, "o", " "] +[51.7657226943973, "o", "\\"] +[51.7957226943973, "o", "\r\n "] +[51.8257226943973, "o", "W"] +[51.8557226943973, "o", "H"] +[51.8857226943973, "o", "E"] +[51.9157226943973, "o", "R"] +[51.945722694397304, "o", "E"] +[51.975722694397305, "o", " "] +[52.005722694397306, "o", "s"] +[52.03572269439731, "o", "t"] +[52.06572269439731, "o", "a"] +[52.09572269439731, "o", "t"] +[52.12572269439731, "o", "u"] +[52.15572269439731, "o", "s"] +[52.18572269439731, "o", " "] +[52.215722694397314, "o", "="] +[52.245722694397315, "o", " "] +[52.27572269439732, "o", "'"] +[52.30572269439732, "o", "r"] +[52.33572269439732, "o", "e"] +[52.36572269439732, "o", "t"] +[52.39572269439732, "o", "u"] +[52.42572269439732, "o", "r"] +[52.45572269439732, "o", "n"] +[52.485722694397325, "o", "_"] +[52.515722694397326, "o", "p"] +[52.54572269439733, "o", "e"] +[52.57572269439733, "o", "n"] +[52.60572269439733, "o", "d"] +[52.63572269439733, "o", "i"] +[52.66572269439733, "o", "n"] +[52.69572269439733, "o", "g"] +[52.725722694397334, "o", "'"] +[52.755722694397335, "o", " "] +[52.785722694397336, "o", "O"] +[52.81572269439734, "o", "R"] +[52.84572269439734, "o", " "] +[52.87572269439734, "o", "o"] +[52.90572269439734, "o", "r"] +[52.93572269439734, "o", "d"] +[52.96572269439734, "o", "e"] +[52.995722694397344, "o", "r"] +[53.025722694397345, "o", "_"] +[53.055722694397346, "o", "d"] +[53.08572269439735, "o", "a"] +[53.11572269439735, "o", "t"] +[53.14572269439735, "o", "e"] +[53.17572269439735, "o", " "] +[53.20572269439735, "o", "="] +[53.23572269439735, "o", " "] +[53.265722694397354, "o", "'"] +[53.295722694397355, "o", "2"] +[53.325722694397356, "o", "0"] +[53.35572269439736, "o", "1"] +[53.38572269439736, "o", "8"] +[53.41572269439736, "o", "-"] +[53.44572269439736, "o", "0"] +[53.47572269439736, "o", "3"] +[53.50572269439736, "o", "-"] +[53.535722694397364, "o", "2"] +[53.565722694397365, "o", "6"] +[53.59572269439737, "o", "'"] +[53.62572269439737, "o", "\""] +[53.65572269439737, "o", "\r\n"] +[53.68572269439737, "o", "$"] +[53.71572269439737, "o", " "] +[53.74572269439737, "o", "s"] +[53.77572269439737, "o", "g"] +[53.805722694397375, "o", "r"] +[53.835722694397376, "o", " "] +[53.86572269439738, "o", "d"] +[53.89572269439738, "o", "i"] +[53.92572269439738, "o", "f"] +[53.95572269439738, "o", "f"] +[53.98572269439738, "o", " "] +[54.01572269439738, "o", "-"] +[54.045722694397384, "o", "v"] +[54.075722694397385, "o", " "] +[54.105722694397386, "o", "r"] +[54.13572269439739, "o", "a"] +[54.16572269439739, "o", "w"] +[54.19572269439739, "o", "_"] +[54.22572269439739, "o", "j"] +[54.25572269439739, "o", "a"] +[54.28572269439739, "o", "f"] +[54.315722694397394, "o", "f"] +[54.345722694397395, "o", "l"] +[54.375722694397396, "o", "e"] +[54.4057226943974, "o", "_"] +[54.4357226943974, "o", "s"] +[54.4657226943974, "o", "h"] +[54.4957226943974, "o", "o"] +[54.5257226943974, "o", "p"] +[54.5557226943974, "o", "\r\n"] +[54.585722694397404, "o", "\u001b[0m"] +[54.615722694397405, "o", "\r\n"] +[55.27532247543378, "o", "Between 1cddaa0da082 and the current working copy: \r\n"] +[55.27576569557233, "o", "customers: no changes.\r\n"] +[55.275823631287054, "o", "orders: added 5 rows, removed 5 rows."] +[55.27597502708478, "o", "\r\n"] +[55.27600506782575, "o", "- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending')\r\n"] +[55.276338376999334, "o", "- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending')\r\n"] +[55.27637366294904, "o", "- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped')\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned')\r\n"] +[55.27693466186567, "o", "+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned')\r\n"] +[55.27696231842084, "o", "+ (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n"] +[55.27709106445356, "o", "payments: no changes.\r\n"] +[55.30709106445356, "o", "\u001b[1m"] +[55.33709106445356, "o", "\u001b[36m"] +[55.36709106445356, "o", "\u001b[91m"] +[55.39709106445356, "o", "$"] +[55.42709106445356, "o", " "] +[55.457091064453564, "o", "\u001b[0m"] +[60.487091064453566, "o", "\u001b[H"] +[60.51709106445357, "o", "\u001b[J"] +[60.54709106445357, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit this dataset and check out the original data"] +[60.57709106445357, "o", "\r\n"] +[60.60709106445357, "o", "$"] +[60.63709106445357, "o", " "] +[60.66709106445357, "o", "s"] +[60.69709106445357, "o", "g"] +[60.727091064453575, "o", "r"] +[60.757091064453576, "o", " "] +[60.78709106445358, "o", "c"] +[60.81709106445358, "o", "o"] +[60.84709106445358, "o", "m"] +[60.87709106445358, "o", "m"] +[60.90709106445358, "o", "i"] +[60.93709106445358, "o", "t"] +[60.967091064453584, "o", " "] +[60.997091064453585, "o", "r"] +[61.027091064453586, "o", "a"] +[61.05709106445359, "o", "w"] +[61.08709106445359, "o", "_"] +[61.11709106445359, "o", "j"] +[61.14709106445359, "o", "a"] +[61.17709106445359, "o", "f"] +[61.20709106445359, "o", "f"] +[61.237091064453594, "o", "l"] +[61.267091064453595, "o", "e"] +[61.297091064453596, "o", "_"] +[61.3270910644536, "o", "s"] +[61.3570910644536, "o", "h"] +[61.3870910644536, "o", "o"] +[61.4170910644536, "o", "p"] +[61.4470910644536, "o", "\r\n"] +[61.4770910644536, "o", "$"] +[61.507091064453604, "o", " "] +[61.537091064453605, "o", "s"] +[61.56709106445361, "o", "g"] +[61.59709106445361, "o", "r"] +[61.62709106445361, "o", " "] +[61.65709106445361, "o", "t"] +[61.68709106445361, "o", "a"] +[61.71709106445361, "o", "g"] +[61.74709106445361, "o", " "] +[61.777091064453614, "o", "r"] +[61.807091064453616, "o", "a"] +[61.83709106445362, "o", "w"] +[61.86709106445362, "o", "_"] +[61.89709106445362, "o", "j"] +[61.92709106445362, "o", "a"] +[61.95709106445362, "o", "f"] +[61.98709106445362, "o", "f"] +[62.01709106445362, "o", "l"] +[62.047091064453625, "o", "e"] +[62.077091064453626, "o", "_"] +[62.10709106445363, "o", "s"] +[62.13709106445363, "o", "h"] +[62.16709106445363, "o", "o"] +[62.19709106445363, "o", "p"] +[62.22709106445363, "o", " "] +[62.25709106445363, "o", "a"] +[62.287091064453634, "o", "s"] +[62.317091064453635, "o", "o"] +[62.347091064453636, "o", "f"] +[62.37709106445364, "o", "_"] +[62.40709106445364, "o", "2"] +[62.43709106445364, "o", "0"] +[62.46709106445364, "o", "1"] +[62.49709106445364, "o", "8"] +[62.52709106445364, "o", "0"] +[62.557091064453644, "o", "4"] +[62.587091064453645, "o", "1"] +[62.617091064453646, "o", "0"] +[62.64709106445365, "o", "\r\n"] +[62.67709106445365, "o", "$"] +[62.70709106445365, "o", " "] +[62.73709106445365, "o", "s"] +[62.76709106445365, "o", "g"] +[62.79709106445365, "o", "r"] +[62.827091064453654, "o", " "] +[62.857091064453655, "o", "c"] +[62.88709106445366, "o", "h"] +[62.91709106445366, "o", "e"] +[62.94709106445366, "o", "c"] +[62.97709106445366, "o", "k"] +[63.00709106445366, "o", "o"] +[63.03709106445366, "o", "u"] +[63.06709106445366, "o", "t"] +[63.097091064453664, "o", " "] +[63.127091064453666, "o", "r"] +[63.15709106445367, "o", "a"] +[63.18709106445367, "o", "w"] +[63.21709106445367, "o", "_"] +[63.24709106445367, "o", "j"] +[63.27709106445367, "o", "a"] +[63.30709106445367, "o", "f"] +[63.33709106445367, "o", "f"] +[63.367091064453675, "o", "l"] +[63.397091064453676, "o", "e"] +[63.42709106445368, "o", "_"] +[63.45709106445368, "o", "s"] +[63.48709106445368, "o", "h"] +[63.51709106445368, "o", "o"] +[63.54709106445368, "o", "p"] +[63.57709106445368, "o", ":"] +[63.607091064453684, "o", "a"] +[63.637091064453685, "o", "s"] +[63.667091064453686, "o", "o"] +[63.69709106445369, "o", "f"] +[63.72709106445369, "o", "_"] +[63.75709106445369, "o", "2"] +[63.78709106445369, "o", "0"] +[63.81709106445369, "o", "1"] +[63.84709106445369, "o", "8"] +[63.877091064453694, "o", "0"] +[63.907091064453695, "o", "4"] +[63.937091064453696, "o", "0"] +[63.9670910644537, "o", "9"] +[63.9970910644537, "o", "\r\n"] +[64.0270910644537, "o", "\u001b[0m"] +[64.0570910644537, "o", "\r\n"] +[64.42417413711605, "o", "Committing raw_jaffle_shop...\r\n"] +[64.44894678115902, "o", "Storing and indexing table orders\r\n"] +[64.53466565132199, "o", "Committed raw_jaffle_shop as 45dc0c8385be.\r\n"] +[64.92237860679684, "o", "Tagged raw_jaffle_shop:45dc0c8385be904b8b5eff4f51c514a57e99988c8a96a08908fc9d7dfab8492f with asof_20180410.\r\n"] +[65.56281501770077, "o", "Checked out raw_jaffle_shop:1cddaa0da082.\r\n"] +[65.59281501770077, "o", "\u001b[1m"] +[65.62281501770077, "o", "\u001b[36m"] +[65.65281501770077, "o", "\u001b[91m"] +[65.68281501770078, "o", "$"] +[65.71281501770078, "o", " "] +[65.74281501770078, "o", "\u001b[0m"] +[70.77281501770078, "o", "\u001b[H"] +[70.80281501770078, "o", "\u001b[J"] +[70.83281501770078, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the 'serious' version of the dbt project that uses data from"] +[70.86281501770078, "o", "\r\n"] +[70.89281501770078, "o", "$ # the actual warehouse rather than seed data.\r\n"] +[70.92281501770078, "o", "$"] +[70.95281501770079, "o", " "] +[70.98281501770079, "o", "c"] +[71.01281501770079, "o", "d"] +[71.04281501770079, "o", " "] +[71.07281501770079, "o", "j"] +[71.10281501770079, "o", "a"] +[71.13281501770079, "o", "f"] +[71.1628150177008, "o", "f"] +[71.1928150177008, "o", "l"] +[71.2228150177008, "o", "e"] +[71.2528150177008, "o", "_"] +[71.2828150177008, "o", "s"] +[71.3128150177008, "o", "h"] +[71.3428150177008, "o", "o"] +[71.3728150177008, "o", "p"] +[71.4028150177008, "o", " "] +[71.4328150177008, "o", "&"] +[71.4628150177008, "o", "&"] +[71.4928150177008, "o", " "] +[71.52281501770081, "o", "g"] +[71.55281501770081, "o", "i"] +[71.58281501770081, "o", "t"] +[71.61281501770081, "o", " "] +[71.64281501770081, "o", "c"] +[71.67281501770081, "o", "h"] +[71.70281501770081, "o", "e"] +[71.73281501770082, "o", "c"] +[71.76281501770082, "o", "k"] +[71.79281501770082, "o", "o"] +[71.82281501770082, "o", "u"] +[71.85281501770082, "o", "t"] +[71.88281501770082, "o", " "] +[71.91281501770082, "o", "d"] +[71.94281501770082, "o", "e"] +[71.97281501770082, "o", "m"] +[72.00281501770083, "o", "o"] +[72.03281501770083, "o", "/"] +[72.06281501770083, "o", "m"] +[72.09281501770083, "o", "a"] +[72.12281501770083, "o", "s"] +[72.15281501770083, "o", "t"] +[72.18281501770083, "o", "e"] +[72.21281501770083, "o", "r"] +[72.24281501770083, "o", " "] +[72.27281501770084, "o", "-"] +[72.30281501770084, "o", "-"] +[72.33281501770084, "o", "f"] +[72.36281501770084, "o", "o"] +[72.39281501770084, "o", "r"] +[72.42281501770084, "o", "c"] +[72.45281501770084, "o", "e"] +[72.48281501770084, "o", "\r\n"] +[72.51281501770085, "o", "\u001b[0m"] +[72.54281501770085, "o", "\r\n"] +[72.54825334549015, "o", "Branch 'demo/master' set up to track remote branch 'demo/master' from 'origin'.\r\n"] +[72.54854969978398, "o", "Switched to a new branch 'demo/master'\r\n"] +[72.57854969978398, "o", "\u001b[1m"] +[72.60854969978398, "o", "\u001b[36m"] +[72.63854969978398, "o", "\u001b[91m"] +[72.66854969978398, "o", "$"] +[72.69854969978398, "o", " "] +[72.72854969978398, "o", "\u001b[0m"] +[77.75854969978398, "o", "\u001b[H"] +[77.78854969978399, "o", "\u001b[J"] +[77.81854969978399, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check that dbt is set up to connect to the Splitgraph engine."] +[77.84854969978399, "o", "\r\n"] +[77.87854969978399, "o", "$ # We will be outputting data into the dbt_jaffle repository, so set that up.\r\n"] +[77.90854969978399, "o", "$"] +[77.93854969978399, "o", " "] +[77.96854969978399, "o", "c"] +[77.998549699784, "o", "a"] +[78.028549699784, "o", "t"] +[78.058549699784, "o", " "] +[78.088549699784, "o", "."] +[78.118549699784, "o", "d"] +[78.148549699784, "o", "b"] +[78.178549699784, "o", "t"] +[78.208549699784, "o", "/"] +[78.238549699784, "o", "p"] +[78.268549699784, "o", "r"] +[78.298549699784, "o", "o"] +[78.328549699784, "o", "f"] +[78.358549699784, "o", "i"] +[78.38854969978401, "o", "l"] +[78.41854969978401, "o", "e"] +[78.44854969978401, "o", "s"] +[78.47854969978401, "o", "."] +[78.50854969978401, "o", "y"] +[78.53854969978401, "o", "m"] +[78.56854969978401, "o", "l"] +[78.59854969978402, "o", "\r\n"] +[78.62854969978402, "o", "$"] +[78.65854969978402, "o", " "] +[78.68854969978402, "o", "d"] +[78.71854969978402, "o", "b"] +[78.74854969978402, "o", "t"] +[78.77854969978402, "o", " "] +[78.80854969978402, "o", "d"] +[78.83854969978402, "o", "e"] +[78.86854969978403, "o", "b"] +[78.89854969978403, "o", "u"] +[78.92854969978403, "o", "g"] +[78.95854969978403, "o", " "] +[78.98854969978403, "o", "-"] +[79.01854969978403, "o", "-"] +[79.04854969978403, "o", "p"] +[79.07854969978403, "o", "r"] +[79.10854969978404, "o", "o"] +[79.13854969978404, "o", "f"] +[79.16854969978404, "o", "i"] +[79.19854969978404, "o", "l"] +[79.22854969978404, "o", "e"] +[79.25854969978404, "o", "s"] +[79.28854969978404, "o", "-"] +[79.31854969978404, "o", "d"] +[79.34854969978404, "o", "i"] +[79.37854969978405, "o", "r"] +[79.40854969978405, "o", " "] +[79.43854969978405, "o", "."] +[79.46854969978405, "o", "d"] +[79.49854969978405, "o", "b"] +[79.52854969978405, "o", "t"] +[79.55854969978405, "o", " "] +[79.58854969978405, "o", "-"] +[79.61854969978405, "o", "-"] +[79.64854969978406, "o", "p"] +[79.67854969978406, "o", "r"] +[79.70854969978406, "o", "o"] +[79.73854969978406, "o", "j"] +[79.76854969978406, "o", "e"] +[79.79854969978406, "o", "c"] +[79.82854969978406, "o", "t"] +[79.85854969978406, "o", "-"] +[79.88854969978406, "o", "d"] +[79.91854969978407, "o", "i"] +[79.94854969978407, "o", "r"] +[79.97854969978407, "o", " "] +[80.00854969978407, "o", "j"] +[80.03854969978407, "o", "a"] +[80.06854969978407, "o", "f"] +[80.09854969978407, "o", "f"] +[80.12854969978407, "o", "l"] +[80.15854969978407, "o", "e"] +[80.18854969978408, "o", "_"] +[80.21854969978408, "o", "s"] +[80.24854969978408, "o", "h"] +[80.27854969978408, "o", "o"] +[80.30854969978408, "o", "p"] +[80.33854969978408, "o", "\r\n"] +[80.36854969978408, "o", "$"] +[80.39854969978408, "o", " "] +[80.42854969978409, "o", "s"] +[80.45854969978409, "o", "g"] +[80.48854969978409, "o", "r"] +[80.51854969978409, "o", " "] +[80.54854969978409, "o", "i"] +[80.57854969978409, "o", "n"] +[80.60854969978409, "o", "i"] +[80.6385496997841, "o", "t"] +[80.6685496997841, "o", " "] +[80.6985496997841, "o", "d"] +[80.7285496997841, "o", "b"] +[80.7585496997841, "o", "t"] +[80.7885496997841, "o", "_"] +[80.8185496997841, "o", "j"] +[80.8485496997841, "o", "a"] +[80.8785496997841, "o", "f"] +[80.9085496997841, "o", "f"] +[80.9385496997841, "o", "l"] +[80.9685496997841, "o", "e"] +[80.9985496997841, "o", "\r\n"] +[81.02854969978411, "o", "\u001b[0m"] +[81.05854969978411, "o", "\r\n"] +[81.05973821640093, "o", "jaffle_shop:\r\n target: splitgraph\r\n outputs:\r\n splitgraph:\r\n type: postgres\r\n host: localhost\r\n user: sgr\r\n pass: supersecure\r\n port: 5432\r\n dbname: splitgraph\r\n # The final schema that dbt writes to is a combination of this profile schema\r\n # and the schema specified in the model.\r\n schema: \"dbt_jaffle\"\r\n threads: 4\r\n"] +[82.04890185356219, "o", "Running with dbt=0.18.0\r\n"] +[82.05119162559588, "o", "dbt version: 0.18.0\r\npython version: 3.8.11\r\n"] +[82.05120306968767, "o", "python path: /opt/hostedtoolcache/Python/3.8.11/x64/bin/python\r\nos info: Linux-5.4.0-1051-azure-x86_64-with-glibc2.2.5\r\nUsing profiles.yml file at .dbt/profiles.yml\r\nUsing dbt_project.yml file at /home/runner/work/splitgraph/splitgraph/examples/dbt/jaffle_shop/dbt_project.yml\r\n\r\n"] +[82.13936763763506, "o", "Configuration:\r\n profiles.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n dbt_project.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n\r\nRequired dependencies:\r\n"] +[82.14483815193255, "o", " - git [\u001b[32mOK found\u001b[0m]\r\n\r\nConnection:\r\n"] +[82.14513379097063, "o", " host: localhost\r\n port: 5432\r\n user: sgr\r\n database: splitgraph\r\n schema: dbt_jaffle\r\n search_path: None\r\n keepalives_idle: 0\r\n sslmode: None\r\n"] +[82.1564148044594, "o", " Connection test: \u001b[32mOK connection ok\u001b[0m"] +[82.15646534919817, "o", "\r\n"] +[82.15655308723528, "o", "\r\n"] +[82.65488224983294, "o", "\u001b[0m"] +[83.08615737915117, "o", "Initialized empty repository dbt_jaffle\r\n"] +[83.11615737915118, "o", "\u001b[1m"] +[83.14615737915118, "o", "\u001b[36m"] +[83.17615737915118, "o", "\u001b[91m"] +[83.20615737915118, "o", "$"] +[83.23615737915118, "o", " "] +[83.26615737915118, "o", "\u001b[0m"] +[101.25854969978398, "o", "\u001b[H"] +[101.28854969978399, "o", "\u001b[J"] +[101.31854969978399, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now run the dbt models."] +[101.34854969978399, "o", "\r\n"] +[101.37854969978399, "o", "$"] +[101.40854969978399, "o", " "] +[101.43854969978399, "o", "c"] +[101.46854969978399, "o", "d"] +[101.498549699784, "o", " "] +[101.528549699784, "o", "j"] +[101.558549699784, "o", "a"] +[101.588549699784, "o", "f"] +[101.618549699784, "o", "f"] +[101.648549699784, "o", "l"] +[101.678549699784, "o", "e"] +[101.708549699784, "o", "_"] +[101.738549699784, "o", "s"] +[101.768549699784, "o", "h"] +[101.798549699784, "o", "o"] +[101.828549699784, "o", "p"] +[101.858549699784, "o", " "] +[101.88854969978401, "o", "&"] +[101.91854969978401, "o", "&"] +[101.94854969978401, "o", " "] +[101.97854969978401, "o", "d"] +[102.00854969978401, "o", "b"] +[102.03854969978401, "o", "t"] +[102.06854969978401, "o", " "] +[102.09854969978402, "o", "r"] +[102.12854969978402, "o", "u"] +[102.15854969978402, "o", "n"] +[102.18854969978402, "o", " "] +[102.21854969978402, "o", "-"] +[102.24854969978402, "o", "-"] +[102.27854969978402, "o", "p"] +[102.30854969978402, "o", "r"] +[102.33854969978402, "o", "o"] +[102.36854969978403, "o", "f"] +[102.39854969978403, "o", "i"] +[102.42854969978403, "o", "l"] +[102.45854969978403, "o", "e"] +[102.48854969978403, "o", "s"] +[102.51854969978403, "o", "-"] +[102.54854969978403, "o", "d"] +[102.57854969978403, "o", "i"] +[102.60854969978404, "o", "r"] +[102.63854969978404, "o", " "] +[102.66854969978404, "o", "."] +[102.69854969978404, "o", "."] +[102.72854969978404, "o", "/"] +[102.75854969978404, "o", "."] +[102.78854969978404, "o", "d"] +[102.81854969978404, "o", "b"] +[102.84854969978404, "o", "t"] +[102.87854969978405, "o", "\r\n"] +[102.90854969978405, "o", "\u001b[0m"] +[102.93854969978405, "o", "\r\n"] +[103.93854969978405, "o", "Running with dbt=0.18.0\r\n"] +[104.34575027465893, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[105.15996259689403, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[105.16220611572338, "o", "\r\n"] +[105.44863170623852, "o", "09:46:34 | Concurrency: 4 threads (target='splitgraph')\r\n"] +[105.44870418548656, "o", "09:46:34 | \r\n"] +[105.45734781265331, "o", "09:46:34 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]"] +[105.4573707008369, "o", "\r\n"] +[105.46019333839489, "o", "09:46:34 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]"] +[105.46021431922985, "o", "\r\n"] +[105.46598452568126, "o", "09:46:34 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]"] +[105.46600526809765, "o", "\r\n"] +[105.47687834739757, "o", "09:46:34 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]"] +[105.47690028190685, "o", "\r\n"] +[105.72042936325145, "o", "09:46:35 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.25s]"] +[105.72047418594433, "o", "\r\n"] +[105.72369355201793, "o", "09:46:35 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.25s]"] +[105.72374338150097, "o", "\r\n"] +[105.72500223159862, "o", "09:46:35 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.25s]"] +[105.72504943847728, "o", "\r\n"] +[105.72719258308483, "o", "09:46:35 | 5 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]"] +[105.72724551200939, "o", "\r\n"] +[105.73012131691051, "o", "09:46:35 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.23s]"] +[105.73015493393017, "o", "\r\n"] +[105.73253530502392, "o", "09:46:35 | 6 of 9 START table model dbt_jaffle.customer_payments................ [RUN]"] +[105.73258489608837, "o", "\r\n"] +[105.73305434227062, "o", "09:46:35 | 7 of 9 START table model dbt_jaffle.order_payments................... [RUN]\r\n"] +[105.88878172874523, "o", "09:46:35 | 6 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.15s]\r\n"] +[105.89081758499218, "o", "09:46:35 | 7 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.15s]\r\n"] +[105.89380306243969, "o", "09:46:35 | 5 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.16s]"] +[105.89383644104076, "o", "\r\n"] +[105.89513224601818, "o", "09:46:35 | 8 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]\r\n"] +[105.90213269233776, "o", "09:46:35 | 9 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]\r\n"] +[105.99192518234325, "o", "09:46:35 | 9 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.09s]"] +[105.99196952819896, "o", "\r\n"] +[105.99545043945385, "o", "09:46:35 | 8 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.10s]\r\n"] +[106.0037586116798, "o", "09:46:35 | \r\n"] +[106.00386899948192, "o", "09:46:35 | Finished running 4 view models, 5 table models in 0.84s."] +[106.00392526626659, "o", "\r\n"] +[106.03543323516918, "o", "\r\n"] +[106.03557247161937, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[106.03609198570324, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[106.44009465217663, "o", "\u001b[0m"] +[106.47009465217663, "o", "\u001b[1m"] +[106.50009465217663, "o", "\u001b[36m"] +[106.53009465217663, "o", "\u001b[91m"] +[106.56009465217663, "o", "$"] +[106.59009465217663, "o", " "] +[106.62009465217663, "o", "\u001b[0m"] +[121.75854969978398, "o", "\u001b[H"] +[121.78854969978399, "o", "\u001b[J"] +[121.81854969978399, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Take a look at the built dataset and commit it."] +[121.84854969978399, "o", "\r\n"] +[121.87854969978399, "o", "$ # Note Splitgraph doesn't currently support storing views\r\n"] +[121.90854969978399, "o", "$ # that dbt uses as a staging point for the initial data.\r\n"] +[121.93854969978399, "o", "$"] +[121.96854969978399, "o", " "] +[121.998549699784, "o", "s"] +[122.028549699784, "o", "g"] +[122.058549699784, "o", "r"] +[122.088549699784, "o", " "] +[122.118549699784, "o", "d"] +[122.148549699784, "o", "i"] +[122.178549699784, "o", "f"] +[122.208549699784, "o", "f"] +[122.238549699784, "o", " "] +[122.268549699784, "o", "d"] +[122.298549699784, "o", "b"] +[122.328549699784, "o", "t"] +[122.358549699784, "o", "_"] +[122.38854969978401, "o", "j"] +[122.41854969978401, "o", "a"] +[122.44854969978401, "o", "f"] +[122.47854969978401, "o", "f"] +[122.50854969978401, "o", "l"] +[122.53854969978401, "o", "e"] +[122.56854969978401, "o", "\r\n"] +[122.59854969978402, "o", "$"] +[122.62854969978402, "o", " "] +[122.65854969978402, "o", "s"] +[122.68854969978402, "o", "g"] +[122.71854969978402, "o", "r"] +[122.74854969978402, "o", " "] +[122.77854969978402, "o", "c"] +[122.80854969978402, "o", "o"] +[122.83854969978402, "o", "m"] +[122.86854969978403, "o", "m"] +[122.89854969978403, "o", "i"] +[122.92854969978403, "o", "t"] +[122.95854969978403, "o", " "] +[122.98854969978403, "o", "d"] +[123.01854969978403, "o", "b"] +[123.04854969978403, "o", "t"] +[123.07854969978403, "o", "_"] +[123.10854969978404, "o", "j"] +[123.13854969978404, "o", "a"] +[123.16854969978404, "o", "f"] +[123.19854969978404, "o", "f"] +[123.22854969978404, "o", "l"] +[123.25854969978404, "o", "e"] +[123.28854969978404, "o", "\r\n"] +[123.31854969978404, "o", "$"] +[123.34854969978404, "o", " "] +[123.37854969978405, "o", "s"] +[123.40854969978405, "o", "g"] +[123.43854969978405, "o", "r"] +[123.46854969978405, "o", " "] +[123.49854969978405, "o", "t"] +[123.52854969978405, "o", "a"] +[123.55854969978405, "o", "g"] +[123.58854969978405, "o", " "] +[123.61854969978405, "o", "d"] +[123.64854969978406, "o", "b"] +[123.67854969978406, "o", "t"] +[123.70854969978406, "o", "_"] +[123.73854969978406, "o", "j"] +[123.76854969978406, "o", "a"] +[123.79854969978406, "o", "f"] +[123.82854969978406, "o", "f"] +[123.85854969978406, "o", "l"] +[123.88854969978406, "o", "e"] +[123.91854969978407, "o", " "] +[123.94854969978407, "o", "a"] +[123.97854969978407, "o", "s"] +[124.00854969978407, "o", "o"] +[124.03854969978407, "o", "f"] +[124.06854969978407, "o", "_"] +[124.09854969978407, "o", "2"] +[124.12854969978407, "o", "0"] +[124.15854969978407, "o", "1"] +[124.18854969978408, "o", "8"] +[124.21854969978408, "o", "0"] +[124.24854969978408, "o", "4"] +[124.27854969978408, "o", "0"] +[124.30854969978408, "o", "9"] +[124.33854969978408, "o", "\r\n"] +[124.36854969978408, "o", "\u001b[0m"] +[124.39854969978408, "o", "\r\n"] +[124.83221759796218, "o", "Between 000000000000 and the current working copy: \r\n"] +[124.83223547935562, "o", "customer_orders: table added\r\ncustomer_payments: table added\r\ndim_customers: table added\r\nfct_orders: table added\r\norder_payments: table added\r\nstg_jaffle_shop__customers: untracked\r\nstg_jaffle_shop__orders: untracked\r\nstg_jaffle_shop__payments: untracked\r\n"] +[124.83303465843277, "o", "stg_stripe__payments: untracked\r\n"] +[125.23332467079238, "o", "Committing dbt_jaffle...\r\n"] +[125.25023546218948, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.25135412216262, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.25258221626358, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.25369181633071, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.26175036430435, "o", "Processing table order_payments\r\n"] +[125.33572735786514, "o", "Processing table customer_payments\r\n"] +[125.35781946182327, "o", "Processing table customer_orders\r\n"] +[125.38122501373367, "o", "Processing table dim_customers\r\n"] +[125.40790572166519, "o", "Processing table fct_orders\r\n"] +[125.44825115203933, "o", "Committed dbt_jaffle as 1f63fe4855d9.\r\n"] +[125.81372752189712, "o", "Tagged dbt_jaffle:1f63fe4855d9fcadbfb2ff2806baa86a402e620b4dbdb1b913b1555bdc0e1fcc with asof_20180409.\r\n"] +[125.84372752189712, "o", "\u001b[1m"] +[125.87372752189712, "o", "\u001b[36m"] +[125.90372752189712, "o", "\u001b[91m"] +[125.93372752189713, "o", "$"] +[125.96372752189713, "o", " "] +[125.99372752189713, "o", "\u001b[0m"] +[136.25854969978397, "o", "\u001b[H"] +[136.28854969978397, "o", "\u001b[J"] +[136.31854969978397, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the new version of the raw dataset and run dbt against it as well."] +[136.34854969978397, "o", "\r\n"] +[136.37854969978397, "o", "$"] +[136.40854969978398, "o", " "] +[136.43854969978398, "o", "s"] +[136.46854969978398, "o", "g"] +[136.49854969978398, "o", "r"] +[136.52854969978398, "o", " "] +[136.55854969978398, "o", "c"] +[136.58854969978398, "o", "h"] +[136.61854969978398, "o", "e"] +[136.64854969978398, "o", "c"] +[136.67854969978399, "o", "k"] +[136.708549699784, "o", "o"] +[136.738549699784, "o", "u"] +[136.768549699784, "o", "t"] +[136.798549699784, "o", " "] +[136.828549699784, "o", "r"] +[136.858549699784, "o", "a"] +[136.888549699784, "o", "w"] +[136.918549699784, "o", "_"] +[136.948549699784, "o", "j"] +[136.978549699784, "o", "a"] +[137.008549699784, "o", "f"] +[137.038549699784, "o", "f"] +[137.068549699784, "o", "l"] +[137.098549699784, "o", "e"] +[137.128549699784, "o", "_"] +[137.158549699784, "o", "s"] +[137.188549699784, "o", "h"] +[137.218549699784, "o", "o"] +[137.248549699784, "o", "p"] +[137.278549699784, "o", ":"] +[137.308549699784, "o", "a"] +[137.338549699784, "o", "s"] +[137.368549699784, "o", "o"] +[137.398549699784, "o", "f"] +[137.428549699784, "o", "_"] +[137.45854969978402, "o", "2"] +[137.48854969978402, "o", "0"] +[137.51854969978402, "o", "1"] +[137.54854969978402, "o", "8"] +[137.57854969978402, "o", "0"] +[137.60854969978402, "o", "4"] +[137.63854969978402, "o", "1"] +[137.66854969978402, "o", "0"] +[137.69854969978402, "o", "\r\n"] +[137.72854969978403, "o", "$"] +[137.75854969978403, "o", " "] +[137.78854969978403, "o", "c"] +[137.81854969978403, "o", "d"] +[137.84854969978403, "o", " "] +[137.87854969978403, "o", "j"] +[137.90854969978403, "o", "a"] +[137.93854969978403, "o", "f"] +[137.96854969978403, "o", "f"] +[137.99854969978404, "o", "l"] +[138.02854969978404, "o", "e"] +[138.05854969978404, "o", "_"] +[138.08854969978404, "o", "s"] +[138.11854969978404, "o", "h"] +[138.14854969978404, "o", "o"] +[138.17854969978404, "o", "p"] +[138.20854969978404, "o", " "] +[138.23854969978404, "o", "&"] +[138.26854969978405, "o", "&"] +[138.29854969978405, "o", " "] +[138.32854969978405, "o", "d"] +[138.35854969978405, "o", "b"] +[138.38854969978405, "o", "t"] +[138.41854969978405, "o", " "] +[138.44854969978405, "o", "r"] +[138.47854969978405, "o", "u"] +[138.50854969978406, "o", "n"] +[138.53854969978406, "o", " "] +[138.56854969978406, "o", "-"] +[138.59854969978406, "o", "-"] +[138.62854969978406, "o", "p"] +[138.65854969978406, "o", "r"] +[138.68854969978406, "o", "o"] +[138.71854969978406, "o", "f"] +[138.74854969978406, "o", "i"] +[138.77854969978407, "o", "l"] +[138.80854969978407, "o", "e"] +[138.83854969978407, "o", "s"] +[138.86854969978407, "o", "-"] +[138.89854969978407, "o", "d"] +[138.92854969978407, "o", "i"] +[138.95854969978407, "o", "r"] +[138.98854969978407, "o", " "] +[139.01854969978407, "o", "."] +[139.04854969978408, "o", "."] +[139.07854969978408, "o", "/"] +[139.10854969978408, "o", "."] +[139.13854969978408, "o", "d"] +[139.16854969978408, "o", "b"] +[139.19854969978408, "o", "t"] +[139.22854969978408, "o", "\r\n"] +[139.25854969978408, "o", "\u001b[0m"] +[139.28854969978408, "o", "\r\n"] +[139.93865088462906, "o", "Checked out raw_jaffle_shop:45dc0c8385be.\r\n"] +[140.9237122917183, "o", "Running with dbt=0.18.0\r\n"] +[141.33093480110244, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[142.1267996215828, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[142.12931231498794, "o", "\r\n"] +[142.51041726112442, "o", "09:46:40 | Concurrency: 4 threads (target='splitgraph')\r\n"] +[142.51074651718216, "o", "09:46:40 | \r\n"] +[142.51880077362136, "o", "09:46:40 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]"] +[142.51881937027053, "o", "\r\n"] +[142.52044824600296, "o", "09:46:40 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]\r\n"] +[142.52111367225723, "o", "09:46:40 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]"] +[142.5211322689064, "o", "\r\n"] +[142.54589275360183, "o", "09:46:40 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]\r\n"] +[142.7859163665779, "o", "09:46:41 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.26s]"] +[142.78748229980545, "o", "\r\n"] +[142.78955177307205, "o", "09:46:41 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.26s]\r\n"] +[142.79608110427932, "o", "09:46:41 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.27s]"] +[142.7961054229744, "o", "\r\n"] +[142.80185154914932, "o", "09:46:41 | 5 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]"] +[142.80198029518203, "o", "\r\n"] +[142.80393294334488, "o", "09:46:41 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.25s]"] +[142.80395487785415, "o", "\r\n"] +[142.80565241813736, "o", "09:46:41 | 6 of 9 START table model dbt_jaffle.customer_payments................ [RUN]"] +[142.80568198204116, "o", "\r\n"] +[142.81678227424698, "o", "09:46:41 | 7 of 9 START table model dbt_jaffle.order_payments................... [RUN]"] +[142.81691745758133, "o", "\r\n"] +[142.97349361419754, "o", "09:46:41 | 5 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.17s]"] +[142.97542957305984, "o", "\r\n"] +[142.97663191795425, "o", "09:46:41 | 7 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.16s]"] +[142.97667054176407, "o", "\r\n"] +[142.98303750991897, "o", "09:46:41 | 6 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.17s]"] +[142.98307303428726, "o", "\r\n"] +[142.98452333450393, "o", "09:46:41 | 8 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]"] +[142.98465851783828, "o", "\r\n"] +[142.9970012092598, "o", "09:46:41 | 9 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]"] +[142.9970400714882, "o", "\r\n"] +[143.1039402866371, "o", "09:46:41 | 8 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.12s]"] +[143.10399202346878, "o", "\r\n"] +[143.11285928726272, "o", "09:46:41 | 9 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.11s]\r\n"] +[143.1211262130745, "o", "09:46:41 | \r\n"] +[143.12144521713333, "o", "09:46:41 | Finished running 4 view models, 5 table models in 0.99s.\r\n"] +[143.15445260047989, "o", "\r\n"] +[143.15475396156387, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[143.15514234542923, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[143.5627205753334, "o", "\u001b[0m"] +[143.5927205753334, "o", "\u001b[1m"] +[143.6227205753334, "o", "\u001b[36m"] +[143.6527205753334, "o", "\u001b[91m"] +[143.6827205753334, "o", "$"] +[143.7127205753334, "o", " "] +[143.7427205753334, "o", "\u001b[0m"] +[157.75854969978397, "o", "\u001b[H"] +[157.78854969978397, "o", "\u001b[J"] +[157.81854969978397, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create an image from the new data."] +[157.84854969978397, "o", "\r\n"] +[157.87854969978397, "o", "$"] +[157.90854969978398, "o", " "] +[157.93854969978398, "o", "s"] +[157.96854969978398, "o", "g"] +[157.99854969978398, "o", "r"] +[158.02854969978398, "o", " "] +[158.05854969978398, "o", "c"] +[158.08854969978398, "o", "o"] +[158.11854969978398, "o", "m"] +[158.14854969978398, "o", "m"] +[158.17854969978399, "o", "i"] +[158.208549699784, "o", "t"] +[158.238549699784, "o", " "] +[158.268549699784, "o", "d"] +[158.298549699784, "o", "b"] +[158.328549699784, "o", "t"] +[158.358549699784, "o", "_"] +[158.388549699784, "o", "j"] +[158.418549699784, "o", "a"] +[158.448549699784, "o", "f"] +[158.478549699784, "o", "f"] +[158.508549699784, "o", "l"] +[158.538549699784, "o", "e"] +[158.568549699784, "o", "\r\n"] +[158.598549699784, "o", "$"] +[158.628549699784, "o", " "] +[158.658549699784, "o", "s"] +[158.688549699784, "o", "g"] +[158.718549699784, "o", "r"] +[158.748549699784, "o", " "] +[158.778549699784, "o", "t"] +[158.808549699784, "o", "a"] +[158.838549699784, "o", "g"] +[158.868549699784, "o", " "] +[158.898549699784, "o", "d"] +[158.928549699784, "o", "b"] +[158.95854969978402, "o", "t"] +[158.98854969978402, "o", "_"] +[159.01854969978402, "o", "j"] +[159.04854969978402, "o", "a"] +[159.07854969978402, "o", "f"] +[159.10854969978402, "o", "f"] +[159.13854969978402, "o", "l"] +[159.16854969978402, "o", "e"] +[159.19854969978402, "o", " "] +[159.22854969978403, "o", "a"] +[159.25854969978403, "o", "s"] +[159.28854969978403, "o", "o"] +[159.31854969978403, "o", "f"] +[159.34854969978403, "o", "_"] +[159.37854969978403, "o", "2"] +[159.40854969978403, "o", "0"] +[159.43854969978403, "o", "1"] +[159.46854969978403, "o", "8"] +[159.49854969978404, "o", "0"] +[159.52854969978404, "o", "4"] +[159.55854969978404, "o", "1"] +[159.58854969978404, "o", "0"] +[159.61854969978404, "o", "\r\n"] +[159.64854969978404, "o", "\u001b[0m"] +[159.67854969978404, "o", "\r\n"] +[160.09650366783214, "o", "Committing dbt_jaffle...\r\n"] +[160.12037222862315, "o", "Processing table fct_orders\r\n"] +[160.20551937103343, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.2067438888557, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.20786397934032, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.20918553352428, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.21756642341686, "o", "Processing table customer_orders\r\n"] +[160.22366064071727, "o", "Object o0fafb9e76c06e221af3aa558b0a751b176857a09b2d75ca00826becbd12ef5 already exists, skipping\r\n"] +[160.23931782722545, "o", "Processing table order_payments\r\n"] +[160.2462283897407, "o", "Object o87940f703edacc7113c37ae83a6abe6293f48cbb940171ef03875a066b0c5c already exists, skipping\r\n"] +[160.2613138484962, "o", "Processing table customer_payments\r\n"] +[160.26678841590953, "o", "Object o47a7af4dc6d74898da55e6c760eac4d702db25633cfab4e28e6df77cf00098 already exists, skipping\r\n"] +[160.28316252708507, "o", "Processing table dim_customers\r\n"] +[160.28960364341808, "o", "Object o9656926ef986d89e326952a43869eaf3dc59905ff22aba22cd3dd67a834dc5 already exists, skipping\r\n"] +[160.31538670539928, "o", "Committed dbt_jaffle as 0a25db52c62d.\r\n"] +[160.67989700317455, "o", "Tagged dbt_jaffle:0a25db52c62d86e2aa183d368fc248f9ee53fbc274ff252d63528ebd87a2dab2 with asof_20180410.\r\n"] +[160.70989700317455, "o", "\u001b[1m"] +[160.73989700317455, "o", "\u001b[36m"] +[160.76989700317455, "o", "\u001b[91m"] +[160.79989700317455, "o", "$"] +[160.82989700317455, "o", " "] +[160.85989700317455, "o", "\u001b[0m"] +[167.75854969978397, "o", "\u001b[H"] +[167.78854969978397, "o", "\u001b[J"] +[167.81854969978397, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We now have two versions of the source and the target dataset."] +[167.84854969978397, "o", "\r\n"] +[167.87854969978397, "o", "$"] +[167.90854969978398, "o", " "] +[167.93854969978398, "o", "s"] +[167.96854969978398, "o", "g"] +[167.99854969978398, "o", "r"] +[168.02854969978398, "o", " "] +[168.05854969978398, "o", "l"] +[168.08854969978398, "o", "o"] +[168.11854969978398, "o", "g"] +[168.14854969978398, "o", " "] +[168.17854969978399, "o", "-"] +[168.208549699784, "o", "t"] +[168.238549699784, "o", " "] +[168.268549699784, "o", "r"] +[168.298549699784, "o", "a"] +[168.328549699784, "o", "w"] +[168.358549699784, "o", "_"] +[168.388549699784, "o", "j"] +[168.418549699784, "o", "a"] +[168.448549699784, "o", "f"] +[168.478549699784, "o", "f"] +[168.508549699784, "o", "l"] +[168.538549699784, "o", "e"] +[168.568549699784, "o", "_"] +[168.598549699784, "o", "s"] +[168.628549699784, "o", "h"] +[168.658549699784, "o", "o"] +[168.688549699784, "o", "p"] +[168.718549699784, "o", "\r\n"] +[168.748549699784, "o", "$"] +[168.778549699784, "o", " "] +[168.808549699784, "o", "s"] +[168.838549699784, "o", "g"] +[168.868549699784, "o", "r"] +[168.898549699784, "o", " "] +[168.928549699784, "o", "l"] +[168.95854969978402, "o", "o"] +[168.98854969978402, "o", "g"] +[169.01854969978402, "o", " "] +[169.04854969978402, "o", "-"] +[169.07854969978402, "o", "t"] +[169.10854969978402, "o", " "] +[169.13854969978402, "o", "d"] +[169.16854969978402, "o", "b"] +[169.19854969978402, "o", "t"] +[169.22854969978403, "o", "_"] +[169.25854969978403, "o", "j"] +[169.28854969978403, "o", "a"] +[169.31854969978403, "o", "f"] +[169.34854969978403, "o", "f"] +[169.37854969978403, "o", "l"] +[169.40854969978403, "o", "e"] +[169.43854969978403, "o", "\r\n"] +[169.46854969978403, "o", "\u001b[0m"] +[169.49854969978404, "o", "\r\n"] +[169.86558079719615, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-07-26 09:46:23\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m1cddaa0da0\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-07-26 09:46:25\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m45dc0c8385\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-07-26 09:46:28\u001b[0m\r\n"] +[170.2442400455482, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-07-26 09:46:32\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m1f63fe4855\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-07-26 09:46:36\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m0a25db52c6\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-07-26 09:46:42\u001b[0m\r\n"] +[170.2742400455482, "o", "\u001b[1m"] +[170.3042400455482, "o", "\u001b[36m"] +[170.3342400455482, "o", "\u001b[91m"] +[170.3642400455482, "o", "$"] +[170.3942400455482, "o", " "] +[170.4242400455482, "o", "\u001b[0m"] +[175.4542400455482, "o", "\u001b[H"] +[175.4842400455482, "o", "\u001b[J"] +[175.5142400455482, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the difference between the two datasets that dbt built."] +[175.5442400455482, "o", "\r\n"] +[175.5742400455482, "o", "$"] +[175.6042400455482, "o", " "] +[175.6342400455482, "o", "s"] +[175.6642400455482, "o", "g"] +[175.6942400455482, "o", "r"] +[175.7242400455482, "o", " "] +[175.75424004554822, "o", "d"] +[175.78424004554822, "o", "i"] +[175.81424004554822, "o", "f"] +[175.84424004554822, "o", "f"] +[175.87424004554822, "o", " "] +[175.90424004554822, "o", "d"] +[175.93424004554822, "o", "b"] +[175.96424004554822, "o", "t"] +[175.99424004554822, "o", "_"] +[176.02424004554823, "o", "j"] +[176.05424004554823, "o", "a"] +[176.08424004554823, "o", "f"] +[176.11424004554823, "o", "f"] +[176.14424004554823, "o", "l"] +[176.17424004554823, "o", "e"] +[176.20424004554823, "o", " "] +[176.23424004554823, "o", "a"] +[176.26424004554823, "o", "s"] +[176.29424004554824, "o", "o"] +[176.32424004554824, "o", "f"] +[176.35424004554824, "o", "_"] +[176.38424004554824, "o", "2"] +[176.41424004554824, "o", "0"] +[176.44424004554824, "o", "1"] +[176.47424004554824, "o", "8"] +[176.50424004554824, "o", "0"] +[176.53424004554824, "o", "4"] +[176.56424004554825, "o", "0"] +[176.59424004554825, "o", "9"] +[176.62424004554825, "o", " "] +[176.65424004554825, "o", "a"] +[176.68424004554825, "o", "s"] +[176.71424004554825, "o", "o"] +[176.74424004554825, "o", "f"] +[176.77424004554825, "o", "_"] +[176.80424004554826, "o", "2"] +[176.83424004554826, "o", "0"] +[176.86424004554826, "o", "1"] +[176.89424004554826, "o", "8"] +[176.92424004554826, "o", "0"] +[176.95424004554826, "o", "4"] +[176.98424004554826, "o", "1"] +[177.01424004554826, "o", "0"] +[177.04424004554826, "o", " "] +[177.07424004554827, "o", "-"] +[177.10424004554827, "o", "-"] +[177.13424004554827, "o", "v"] +[177.16424004554827, "o", "e"] +[177.19424004554827, "o", "r"] +[177.22424004554827, "o", "b"] +[177.25424004554827, "o", "o"] +[177.28424004554827, "o", "s"] +[177.31424004554827, "o", "e"] +[177.34424004554828, "o", "\r\n"] +[177.37424004554828, "o", "\u001b[0m"] +[177.40424004554828, "o", "\r\n"] +[177.97474351883014, "o", "Between 1f63fe4855d9 and 0a25db52c62d: \r\n"] +[177.97482315063556, "o", "customer_orders: no changes.\r\n"] +[177.97485652923663, "o", "customer_payments: no changes.\r\n"] +[177.97488704681476, "o", "dim_customers: no changes.\r\n"] +[177.9750005340584, "o", "fct_orders: added 5 rows, removed 5 rows.\r\n"] +[177.97501793861468, "o", "- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending', 0, 0, 0, 23, 23)\r\n"] +[177.97503081321796, "o", "- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending', 0, 0, 15, 0, 15)\r\n"] +[177.9750417804726, "o", "- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 0, 25, 0, 25)\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped', 0, 0, 17, 0, 17)\r\n"] +[177.97505370140155, "o", "- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 23, 0, 0, 23)\r\n"] +[177.97506657600482, "o", "+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned', 0, 0, 0, 23, 23)\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned', 0, 0, 15, 0, 15)\r\n"] +[177.97507730484088, "o", "+ (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 25, 0, 25)\r\n"] +[177.97508779525836, "o", "+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 17, 0, 17)\r\n"] +[177.9750999546059, "o", "+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 23, 0, 0, 23)\r\n"] +[177.97514167785724, "o", "order_payments: no changes.\r\n"] +[178.00514167785724, "o", "\u001b[1m"] +[178.03514167785724, "o", "\u001b[36m"] +[178.06514167785724, "o", "\u001b[91m"] +[178.09514167785724, "o", "$"] +[178.12514167785724, "o", " "] +[178.15514167785724, "o", "\u001b[0m"] +[184.9542400455482, "o", "\u001b[H"] +[184.9842400455482, "o", "\u001b[J"] +[185.0142400455482, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a sample query: how much in bank transfer refunds did we process?"] +[185.0442400455482, "o", "\r\n"] +[185.0742400455482, "o", "$"] +[185.1042400455482, "o", " "] +[185.1342400455482, "o", "s"] +[185.1642400455482, "o", "g"] +[185.1942400455482, "o", "r"] +[185.2242400455482, "o", " "] +[185.25424004554822, "o", "s"] +[185.28424004554822, "o", "q"] +[185.31424004554822, "o", "l"] +[185.34424004554822, "o", " "] +[185.37424004554822, "o", "-"] +[185.40424004554822, "o", "i"] +[185.43424004554822, "o", " "] +[185.46424004554822, "o", "d"] +[185.49424004554822, "o", "b"] +[185.52424004554823, "o", "t"] +[185.55424004554823, "o", "_"] +[185.58424004554823, "o", "j"] +[185.61424004554823, "o", "a"] +[185.64424004554823, "o", "f"] +[185.67424004554823, "o", "f"] +[185.70424004554823, "o", "l"] +[185.73424004554823, "o", "e"] +[185.76424004554823, "o", ":"] +[185.79424004554824, "o", "a"] +[185.82424004554824, "o", "s"] +[185.85424004554824, "o", "o"] +[185.88424004554824, "o", "f"] +[185.91424004554824, "o", "_"] +[185.94424004554824, "o", "2"] +[185.97424004554824, "o", "0"] +[186.00424004554824, "o", "1"] +[186.03424004554824, "o", "8"] +[186.06424004554825, "o", "0"] +[186.09424004554825, "o", "4"] +[186.12424004554825, "o", "0"] +[186.15424004554825, "o", "9"] +[186.18424004554825, "o", " "] +[186.21424004554825, "o", "\""] +[186.24424004554825, "o", "S"] +[186.27424004554825, "o", "E"] +[186.30424004554826, "o", "L"] +[186.33424004554826, "o", "E"] +[186.36424004554826, "o", "C"] +[186.39424004554826, "o", "T"] +[186.42424004554826, "o", " "] +[186.45424004554826, "o", "s"] +[186.48424004554826, "o", "u"] +[186.51424004554826, "o", "m"] +[186.54424004554826, "o", "("] +[186.57424004554827, "o", "b"] +[186.60424004554827, "o", "a"] +[186.63424004554827, "o", "n"] +[186.66424004554827, "o", "k"] +[186.69424004554827, "o", "_"] +[186.72424004554827, "o", "t"] +[186.75424004554827, "o", "r"] +[186.78424004554827, "o", "a"] +[186.81424004554827, "o", "n"] +[186.84424004554828, "o", "s"] +[186.87424004554828, "o", "f"] +[186.90424004554828, "o", "e"] +[186.93424004554828, "o", "r"] +[186.96424004554828, "o", "_"] +[186.99424004554828, "o", "a"] +[187.02424004554828, "o", "m"] +[187.05424004554828, "o", "o"] +[187.08424004554828, "o", "u"] +[187.11424004554829, "o", "n"] +[187.1442400455483, "o", "t"] +[187.1742400455483, "o", ")"] +[187.2042400455483, "o", " "] +[187.2342400455483, "o", "F"] +[187.2642400455483, "o", "R"] +[187.2942400455483, "o", "O"] +[187.3242400455483, "o", "M"] +[187.3542400455483, "o", " "] +[187.3842400455483, "o", "f"] +[187.4142400455483, "o", "c"] +[187.4442400455483, "o", "t"] +[187.4742400455483, "o", "_"] +[187.5042400455483, "o", "o"] +[187.5342400455483, "o", "r"] +[187.5642400455483, "o", "d"] +[187.5942400455483, "o", "e"] +[187.6242400455483, "o", "r"] +[187.6542400455483, "o", "s"] +[187.6842400455483, "o", " "] +[187.7142400455483, "o", "W"] +[187.7442400455483, "o", "H"] +[187.7742400455483, "o", "E"] +[187.8042400455483, "o", "R"] +[187.8342400455483, "o", "E"] +[187.8642400455483, "o", " "] +[187.89424004554832, "o", "s"] +[187.92424004554832, "o", "t"] +[187.95424004554832, "o", "a"] +[187.98424004554832, "o", "t"] +[188.01424004554832, "o", "u"] +[188.04424004554832, "o", "s"] +[188.07424004554832, "o", " "] +[188.10424004554832, "o", "="] +[188.13424004554832, "o", " "] +[188.16424004554833, "o", "'"] +[188.19424004554833, "o", "r"] +[188.22424004554833, "o", "e"] +[188.25424004554833, "o", "t"] +[188.28424004554833, "o", "u"] +[188.31424004554833, "o", "r"] +[188.34424004554833, "o", "n"] +[188.37424004554833, "o", "e"] +[188.40424004554833, "o", "d"] +[188.43424004554834, "o", "'"] +[188.46424004554834, "o", "\""] +[188.49424004554834, "o", "\r\n"] +[188.52424004554834, "o", "$"] +[188.55424004554834, "o", " "] +[188.58424004554834, "o", "s"] +[188.61424004554834, "o", "g"] +[188.64424004554834, "o", "r"] +[188.67424004554834, "o", " "] +[188.70424004554835, "o", "s"] +[188.73424004554835, "o", "q"] +[188.76424004554835, "o", "l"] +[188.79424004554835, "o", " "] +[188.82424004554835, "o", "-"] +[188.85424004554835, "o", "i"] +[188.88424004554835, "o", " "] +[188.91424004554835, "o", "d"] +[188.94424004554836, "o", "b"] +[188.97424004554836, "o", "t"] +[189.00424004554836, "o", "_"] +[189.03424004554836, "o", "j"] +[189.06424004554836, "o", "a"] +[189.09424004554836, "o", "f"] +[189.12424004554836, "o", "f"] +[189.15424004554836, "o", "l"] +[189.18424004554836, "o", "e"] +[189.21424004554837, "o", ":"] +[189.24424004554837, "o", "a"] +[189.27424004554837, "o", "s"] +[189.30424004554837, "o", "o"] +[189.33424004554837, "o", "f"] +[189.36424004554837, "o", "_"] +[189.39424004554837, "o", "2"] +[189.42424004554837, "o", "0"] +[189.45424004554837, "o", "1"] +[189.48424004554838, "o", "8"] +[189.51424004554838, "o", "0"] +[189.54424004554838, "o", "4"] +[189.57424004554838, "o", "1"] +[189.60424004554838, "o", "0"] +[189.63424004554838, "o", " "] +[189.66424004554838, "o", "\""] +[189.69424004554838, "o", "S"] +[189.72424004554838, "o", "E"] +[189.75424004554839, "o", "L"] +[189.7842400455484, "o", "E"] +[189.8142400455484, "o", "C"] +[189.8442400455484, "o", "T"] +[189.8742400455484, "o", " "] +[189.9042400455484, "o", "s"] +[189.9342400455484, "o", "u"] +[189.9642400455484, "o", "m"] +[189.9942400455484, "o", "("] +[190.0242400455484, "o", "b"] +[190.0542400455484, "o", "a"] +[190.0842400455484, "o", "n"] +[190.1142400455484, "o", "k"] +[190.1442400455484, "o", "_"] +[190.1742400455484, "o", "t"] +[190.2042400455484, "o", "r"] +[190.2342400455484, "o", "a"] +[190.2642400455484, "o", "n"] +[190.2942400455484, "o", "s"] +[190.3242400455484, "o", "f"] +[190.3542400455484, "o", "e"] +[190.3842400455484, "o", "r"] +[190.4142400455484, "o", "_"] +[190.4442400455484, "o", "a"] +[190.4742400455484, "o", "m"] +[190.5042400455484, "o", "o"] +[190.53424004554842, "o", "u"] +[190.56424004554842, "o", "n"] +[190.59424004554842, "o", "t"] +[190.62424004554842, "o", ")"] +[190.65424004554842, "o", " "] +[190.68424004554842, "o", "F"] +[190.71424004554842, "o", "R"] +[190.74424004554842, "o", "O"] +[190.77424004554842, "o", "M"] +[190.80424004554843, "o", " "] +[190.83424004554843, "o", "f"] +[190.86424004554843, "o", "c"] +[190.89424004554843, "o", "t"] +[190.92424004554843, "o", "_"] +[190.95424004554843, "o", "o"] +[190.98424004554843, "o", "r"] +[191.01424004554843, "o", "d"] +[191.04424004554843, "o", "e"] +[191.07424004554844, "o", "r"] +[191.10424004554844, "o", "s"] +[191.13424004554844, "o", " "] +[191.16424004554844, "o", "W"] +[191.19424004554844, "o", "H"] +[191.22424004554844, "o", "E"] +[191.25424004554844, "o", "R"] +[191.28424004554844, "o", "E"] +[191.31424004554844, "o", " "] +[191.34424004554845, "o", "s"] +[191.37424004554845, "o", "t"] +[191.40424004554845, "o", "a"] +[191.43424004554845, "o", "t"] +[191.46424004554845, "o", "u"] +[191.49424004554845, "o", "s"] +[191.52424004554845, "o", " "] +[191.55424004554845, "o", "="] +[191.58424004554846, "o", " "] +[191.61424004554846, "o", "'"] +[191.64424004554846, "o", "r"] +[191.67424004554846, "o", "e"] +[191.70424004554846, "o", "t"] +[191.73424004554846, "o", "u"] +[191.76424004554846, "o", "r"] +[191.79424004554846, "o", "n"] +[191.82424004554846, "o", "e"] +[191.85424004554847, "o", "d"] +[191.88424004554847, "o", "'"] +[191.91424004554847, "o", "\""] +[191.94424004554847, "o", "\r\n"] +[191.97424004554847, "o", "\u001b[0m"] +[192.00424004554847, "o", "\r\n"] +[192.84169603347877, "o", "3\r\n"] +[193.7580101585398, "o", "60\r\n"] +[193.7880101585398, "o", "\u001b[1m"] +[193.8180101585398, "o", "\u001b[36m"] +[193.8480101585398, "o", "\u001b[91m"] +[193.8780101585398, "o", "$"] +[193.9080101585398, "o", " "] +[193.9380101585398, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.15/import-from-csv.cast b/content/casts/versioned/archive/v0.2.15/import-from-csv.cast new file mode 100644 index 00000000..f9861778 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.15/import-from-csv.cast @@ -0,0 +1,591 @@ +{"version": 2, "width": 100, "height": 45, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1627292721, "metadata": {"tss": [{"h": "Inspect the data file", "ts": 0.06}, {"h": "Initialize the repository", "ts": 6.5017147064209}, {"h": "Ingest the data into a new table (wrapper around COPY FROM STDIN)", "ts": 27.501714706420902}, {"h": "The data is now in a table but not committed as a Splitgraph image", "ts": 36.19171470642104}, {"h": "Create a new image and tag it", "ts": 43.83856134414694}, {"h": "Inspect the image", "ts": 52.102469224930104}, {"h": "Inspect the table", "ts": 58.937942733765}, {"h": "Inspect object metadata", "ts": 78.437942733765}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the data file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # (originally from https://data.townofcary.org/api/v2/catalog/datasets/rdu-weather-history/exports/csv)\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "h"] +[0.27, "o", "e"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "d"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "n"] +[0.4500000000000002, "o", "5"] +[0.4800000000000002, "o", " "] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", "d"] +[0.5700000000000003, "o", "u"] +[0.6000000000000003, "o", "-"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "-"] +[0.8700000000000006, "o", "h"] +[0.9000000000000006, "o", "i"] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "t"] +[0.9900000000000007, "o", "o"] +[1.0200000000000007, "o", "r"] +[1.0500000000000007, "o", "y"] +[1.0800000000000007, "o", "."] +[1.1100000000000008, "o", "c"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", "v"] +[1.2000000000000008, "o", "\r\n"] +[1.2300000000000009, "o", "\u001b[0m"] +[1.260000000000001, "o", "\r\n"] +[1.2617058849334726, "o", "date;temperaturemin;temperaturemax;precipitation;snowfall;snowdepth;avgwindspeed;fastest2minwinddir;fastest2minwindspeed;fastest5secwinddir;fastest5secwindspeed;fog;fogheavy;mist;rain;fogground;ice;glaze;drizzle;snow;freezingrain;smokehaze;thunder;highwind;hail;blowingsnow;dust;freezingfog\r\r\n2007-01-06;50.0;71.1;0.13;0.0;0.0;8.05;230;17.9;230;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-09;30.0;55.0;0.0;0.0;0.0;7.61;280;23.04;270;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;N"] +[1.2617147064208993, "o", "o;No\r\r\n2007-01-14;50.0;73.9;0.0;0.0;0.0;8.5;230;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-15;57.0;73.9;0.0;0.0;0.0;13.2;230;23.94;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n"] +[1.2917147064208994, "o", "\u001b[1m"] +[1.3217147064208994, "o", "\u001b[36m"] +[1.3517147064208994, "o", "\u001b[91m"] +[1.3817147064208994, "o", "$"] +[1.4117147064208995, "o", " "] +[1.4417147064208995, "o", "\u001b[0m"] +[6.4717147064209, "o", "\u001b[H"] +[6.5017147064209, "o", "\u001b[J"] +[6.5317147064209005, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the repository"] +[6.561714706420901, "o", "\r\n"] +[6.591714706420901, "o", "$"] +[6.621714706420901, "o", " "] +[6.6517147064209015, "o", "s"] +[6.681714706420902, "o", "g"] +[6.711714706420902, "o", "r"] +[6.741714706420902, "o", " "] +[6.7717147064209025, "o", "i"] +[6.801714706420903, "o", "n"] +[6.831714706420903, "o", "i"] +[6.861714706420903, "o", "t"] +[6.8917147064209034, "o", " "] +[6.921714706420904, "o", "d"] +[6.951714706420904, "o", "e"] +[6.981714706420904, "o", "m"] +[7.011714706420904, "o", "o"] +[7.041714706420905, "o", "/"] +[7.071714706420905, "o", "w"] +[7.101714706420905, "o", "e"] +[7.131714706420905, "o", "a"] +[7.161714706420906, "o", "t"] +[7.191714706420906, "o", "h"] +[7.221714706420906, "o", "e"] +[7.251714706420906, "o", "r"] +[7.281714706420907, "o", "\r\n"] +[7.311714706420907, "o", "$"] +[7.341714706420907, "o", " "] +[7.371714706420907, "o", "s"] +[7.401714706420908, "o", "g"] +[7.431714706420908, "o", "r"] +[7.461714706420908, "o", " "] +[7.491714706420908, "o", "c"] +[7.521714706420909, "o", "s"] +[7.551714706420909, "o", "v"] +[7.581714706420909, "o", " "] +[7.611714706420909, "o", "i"] +[7.64171470642091, "o", "m"] +[7.67171470642091, "o", "p"] +[7.70171470642091, "o", "o"] +[7.73171470642091, "o", "r"] +[7.761714706420911, "o", "t"] +[7.791714706420911, "o", " "] +[7.821714706420911, "o", "-"] +[7.851714706420911, "o", "-"] +[7.881714706420912, "o", "h"] +[7.911714706420912, "o", "e"] +[7.941714706420912, "o", "l"] +[7.971714706420912, "o", "p"] +[8.001714706420913, "o", "\r\n"] +[8.031714706420912, "o", "\u001b[0m"] +[8.061714706420911, "o", "\r\n"] +[8.449008760452283, "o", "Initialized empty repository demo/weather\r\n"] +[8.80707889556886, "o", "Usage: sgr csv import [OPTIONS] REPOSITORY TABLE\r\n\r\n Import a CSV file into a checked-out Splitgraph repository. This doesn't\r\n create a new image, use sgr commit after the import and any adjustments\r\n (e.g. adding primary keys or converting column types) to do so.\r\n\r\n If the target table doesn't exist, this will create a new table.\r\n\r\n If the target table does exist, this will try and patch the new values in\r\n by updating rows that exist in the current table (as per its primary key\r\n constraints) an"] +[8.807088193893446, "o", "d inserting new ones. Rows existing in the current table\r\n but missing in the CSV won't be deleted.\r\n\r\n If -r is passed, the table will instead be deleted and recreated from the\r\n CSV file if it exists.\r\n\r\nOptions:\r\n -f, --file FILENAME File name to import data from, default\r\n stdin.\r\n\r\n -r, --replace Replace the table if it already exists.\r\n -k, --primary-key TEXT Use the specified column(s) as primary\r\n "] +[8.80709486961366, "o", " key(s)\r\n\r\n -t, --override-type ...\r\n Explicitly set types of these columns to PG\r\n types\r\n\r\n --encoding TEXT Encoding to use for the CSV file\r\n --separator TEXT CSV separator to use\r\n --no-header Treats the first line of the CSV as data\r\n rather than a header.\r\n\r\n --skip-schema-check Skips checking that the dataframe is\r\n "] +[8.807100591659559, "o", " compatible with the target schema.\r\n\r\n --help Show this message and exit.\r\n"] +[8.837100591659558, "o", "\u001b[1m"] +[8.867100591659558, "o", "\u001b[36m"] +[8.897100591659557, "o", "\u001b[91m"] +[8.927100591659556, "o", "$"] +[8.957100591659556, "o", " "] +[8.987100591659555, "o", "\u001b[0m"] +[27.4717147064209, "o", "\u001b[H"] +[27.501714706420902, "o", "\u001b[J"] +[27.531714706420903, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the data into a new table (wrapper around COPY FROM STDIN)"] +[27.561714706420904, "o", "\r\n"] +[27.591714706420905, "o", "$"] +[27.621714706420907, "o", " "] +[27.651714706420908, "o", "s"] +[27.68171470642091, "o", "g"] +[27.71171470642091, "o", "r"] +[27.74171470642091, "o", " "] +[27.771714706420912, "o", "c"] +[27.801714706420913, "o", "s"] +[27.831714706420914, "o", "v"] +[27.861714706420916, "o", " "] +[27.891714706420917, "o", "i"] +[27.921714706420918, "o", "m"] +[27.95171470642092, "o", "p"] +[27.98171470642092, "o", "o"] +[28.01171470642092, "o", "r"] +[28.041714706420922, "o", "t"] +[28.071714706420924, "o", " "] +[28.101714706420925, "o", "-"] +[28.131714706420926, "o", "f"] +[28.161714706420927, "o", " "] +[28.191714706420928, "o", "r"] +[28.22171470642093, "o", "d"] +[28.25171470642093, "o", "u"] +[28.28171470642093, "o", "-"] +[28.311714706420933, "o", "w"] +[28.341714706420934, "o", "e"] +[28.371714706420935, "o", "a"] +[28.401714706420936, "o", "t"] +[28.431714706420937, "o", "h"] +[28.46171470642094, "o", "e"] +[28.49171470642094, "o", "r"] +[28.52171470642094, "o", "-"] +[28.551714706420942, "o", "h"] +[28.581714706420943, "o", "i"] +[28.611714706420944, "o", "s"] +[28.641714706420945, "o", "t"] +[28.671714706420946, "o", "o"] +[28.701714706420947, "o", "r"] +[28.73171470642095, "o", "y"] +[28.76171470642095, "o", "."] +[28.79171470642095, "o", "c"] +[28.821714706420952, "o", "s"] +[28.851714706420953, "o", "v"] +[28.881714706420954, "o", " "] +[28.911714706420955, "o", "\\"] +[28.941714706420957, "o", "\r\n "] +[28.971714706420958, "o", "-"] +[29.00171470642096, "o", "k"] +[29.03171470642096, "o", " "] +[29.06171470642096, "o", "d"] +[29.091714706420962, "o", "a"] +[29.121714706420963, "o", "t"] +[29.151714706420965, "o", "e"] +[29.181714706420966, "o", " "] +[29.211714706420967, "o", "\\"] +[29.241714706420968, "o", "\r\n "] +[29.27171470642097, "o", "-"] +[29.30171470642097, "o", "t"] +[29.33171470642097, "o", " "] +[29.361714706420972, "o", "d"] +[29.391714706420974, "o", "a"] +[29.421714706420975, "o", "t"] +[29.451714706420976, "o", "e"] +[29.481714706420977, "o", " "] +[29.511714706420978, "o", "t"] +[29.54171470642098, "o", "i"] +[29.57171470642098, "o", "m"] +[29.60171470642098, "o", "e"] +[29.631714706420983, "o", "s"] +[29.661714706420984, "o", "t"] +[29.691714706420985, "o", "a"] +[29.721714706420986, "o", "m"] +[29.751714706420987, "o", "p"] +[29.78171470642099, "o", " "] +[29.81171470642099, "o", "\\"] +[29.84171470642099, "o", "\r\n "] +[29.871714706420992, "o", "-"] +[29.901714706420993, "o", "-"] +[29.931714706420994, "o", "s"] +[29.961714706420995, "o", "e"] +[29.991714706420996, "o", "p"] +[30.021714706420997, "o", "a"] +[30.051714706421, "o", "r"] +[30.081714706421, "o", "a"] +[30.111714706421, "o", "t"] +[30.141714706421002, "o", "o"] +[30.171714706421003, "o", "r"] +[30.201714706421004, "o", " "] +[30.231714706421005, "o", "\""] +[30.261714706421007, "o", ";"] +[30.291714706421008, "o", "\""] +[30.32171470642101, "o", " "] +[30.35171470642101, "o", "\\"] +[30.38171470642101, "o", "\r\n "] +[30.411714706421012, "o", "d"] +[30.441714706421013, "o", "e"] +[30.471714706421015, "o", "m"] +[30.501714706421016, "o", "o"] +[30.531714706421017, "o", "/"] +[30.561714706421018, "o", "w"] +[30.59171470642102, "o", "e"] +[30.62171470642102, "o", "a"] +[30.65171470642102, "o", "t"] +[30.681714706421022, "o", "h"] +[30.711714706421024, "o", "e"] +[30.741714706421025, "o", "r"] +[30.771714706421026, "o", " "] +[30.801714706421027, "o", "r"] +[30.831714706421028, "o", "d"] +[30.86171470642103, "o", "u"] +[30.89171470642103, "o", "\r\n"] +[30.92171470642103, "o", "\u001b[0m"] +[30.951714706421033, "o", "\r\n"] +[30.981714706421034, "o", "\u001b[1m"] +[31.011714706421035, "o", "\u001b[36m"] +[31.041714706421036, "o", "\u001b[91m"] +[31.071714706421037, "o", "$"] +[31.10171470642104, "o", " "] +[31.13171470642104, "o", "\u001b[0m"] +[36.16171470642104, "o", "\u001b[H"] +[36.19171470642104, "o", "\u001b[J"] +[36.22171470642104, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The data is now in a table but not committed as a Splitgraph image"] +[36.25171470642104, "o", "\r\n"] +[36.28171470642104, "o", "$"] +[36.31171470642104, "o", " "] +[36.341714706421044, "o", "s"] +[36.371714706421045, "o", "g"] +[36.401714706421046, "o", "r"] +[36.43171470642105, "o", " "] +[36.46171470642105, "o", "s"] +[36.49171470642105, "o", "t"] +[36.52171470642105, "o", "a"] +[36.55171470642105, "o", "t"] +[36.58171470642105, "o", "u"] +[36.611714706421054, "o", "s"] +[36.641714706421055, "o", " "] +[36.67171470642106, "o", "d"] +[36.70171470642106, "o", "e"] +[36.73171470642106, "o", "m"] +[36.76171470642106, "o", "o"] +[36.79171470642106, "o", "/"] +[36.82171470642106, "o", "w"] +[36.85171470642106, "o", "e"] +[36.881714706421064, "o", "a"] +[36.911714706421066, "o", "t"] +[36.94171470642107, "o", "h"] +[36.97171470642107, "o", "e"] +[37.00171470642107, "o", "r"] +[37.03171470642107, "o", "\r\n"] +[37.06171470642107, "o", "$"] +[37.09171470642107, "o", " "] +[37.12171470642107, "o", "s"] +[37.151714706421075, "o", "g"] +[37.181714706421076, "o", "r"] +[37.21171470642108, "o", " "] +[37.24171470642108, "o", "d"] +[37.27171470642108, "o", "i"] +[37.30171470642108, "o", "f"] +[37.33171470642108, "o", "f"] +[37.36171470642108, "o", " "] +[37.391714706421084, "o", "d"] +[37.421714706421085, "o", "e"] +[37.451714706421086, "o", "m"] +[37.48171470642109, "o", "o"] +[37.51171470642109, "o", "/"] +[37.54171470642109, "o", "w"] +[37.57171470642109, "o", "e"] +[37.60171470642109, "o", "a"] +[37.63171470642109, "o", "t"] +[37.661714706421094, "o", "h"] +[37.691714706421095, "o", "e"] +[37.721714706421096, "o", "r"] +[37.7517147064211, "o", "\r\n"] +[37.7817147064211, "o", "\u001b[0m"] +[37.8117147064211, "o", "\r\n"] +[38.18283420562764, "o", "demo/weather: on image 0000000000000000000000000000000000000000000000000000000000000000.\r\n"] +[38.59854894638082, "o", "Between 000000000000 and the current working copy: \r\n"] +[38.59856134414693, "o", "rdu: table added\r\n"] +[38.62856134414693, "o", "\u001b[1m"] +[38.65856134414693, "o", "\u001b[36m"] +[38.68856134414693, "o", "\u001b[91m"] +[38.718561344146934, "o", "$"] +[38.748561344146935, "o", " "] +[38.77856134414694, "o", "\u001b[0m"] +[43.80856134414694, "o", "\u001b[H"] +[43.83856134414694, "o", "\u001b[J"] +[43.86856134414694, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a new image and tag it"] +[43.89856134414694, "o", "\r\n"] +[43.92856134414694, "o", "$"] +[43.95856134414694, "o", " "] +[43.988561344146945, "o", "s"] +[44.018561344146946, "o", "g"] +[44.04856134414695, "o", "r"] +[44.07856134414695, "o", " "] +[44.10856134414695, "o", "c"] +[44.13856134414695, "o", "o"] +[44.16856134414695, "o", "m"] +[44.19856134414695, "o", "m"] +[44.228561344146954, "o", "i"] +[44.258561344146955, "o", "t"] +[44.288561344146956, "o", " "] +[44.31856134414696, "o", "d"] +[44.34856134414696, "o", "e"] +[44.37856134414696, "o", "m"] +[44.40856134414696, "o", "o"] +[44.43856134414696, "o", "/"] +[44.46856134414696, "o", "w"] +[44.498561344146964, "o", "e"] +[44.528561344146965, "o", "a"] +[44.558561344146966, "o", "t"] +[44.58856134414697, "o", "h"] +[44.61856134414697, "o", "e"] +[44.64856134414697, "o", "r"] +[44.67856134414697, "o", "\r\n"] +[44.70856134414697, "o", "$"] +[44.73856134414697, "o", " "] +[44.768561344146974, "o", "s"] +[44.798561344146975, "o", "g"] +[44.828561344146976, "o", "r"] +[44.85856134414698, "o", " "] +[44.88856134414698, "o", "t"] +[44.91856134414698, "o", "a"] +[44.94856134414698, "o", "g"] +[44.97856134414698, "o", " "] +[45.00856134414698, "o", "d"] +[45.038561344146984, "o", "e"] +[45.068561344146985, "o", "m"] +[45.09856134414699, "o", "o"] +[45.12856134414699, "o", "/"] +[45.15856134414699, "o", "w"] +[45.18856134414699, "o", "e"] +[45.21856134414699, "o", "a"] +[45.24856134414699, "o", "t"] +[45.27856134414699, "o", "h"] +[45.308561344146995, "o", "e"] +[45.338561344146996, "o", "r"] +[45.368561344147, "o", " "] +[45.398561344147, "o", "i"] +[45.428561344147, "o", "n"] +[45.458561344147, "o", "i"] +[45.488561344147, "o", "t"] +[45.518561344147, "o", "i"] +[45.548561344147004, "o", "a"] +[45.578561344147005, "o", "l"] +[45.608561344147006, "o", "_"] +[45.63856134414701, "o", "d"] +[45.66856134414701, "o", "a"] +[45.69856134414701, "o", "t"] +[45.72856134414701, "o", "a"] +[45.75856134414701, "o", "\r\n"] +[45.78856134414701, "o", "\u001b[0m"] +[45.818561344147014, "o", "\r\n"] +[46.234138517380046, "o", "Committing demo/weather...\r\n"] +[46.262140302658366, "o", "Processing table rdu\r\n"] +[46.47545698165922, "o", "Committed demo/weather as 9f07c9746d00.\r\n"] +[46.862469224930095, "o", "Tagged demo/weather:9f07c9746d004ab618fcbf0816c67b456cad83916471ed3f56f8db905d3db6bb with initial_data.\r\n"] +[46.892469224930096, "o", "\u001b[1m"] +[46.9224692249301, "o", "\u001b[36m"] +[46.9524692249301, "o", "\u001b[91m"] +[46.9824692249301, "o", "$"] +[47.0124692249301, "o", " "] +[47.0424692249301, "o", "\u001b[0m"] +[52.0724692249301, "o", "\u001b[H"] +[52.102469224930104, "o", "\u001b[J"] +[52.132469224930105, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image"] +[52.162469224930106, "o", "\r\n"] +[52.19246922493011, "o", "$"] +[52.22246922493011, "o", " "] +[52.25246922493011, "o", "s"] +[52.28246922493011, "o", "g"] +[52.31246922493011, "o", "r"] +[52.34246922493011, "o", " "] +[52.372469224930114, "o", "s"] +[52.402469224930115, "o", "h"] +[52.43246922493012, "o", "o"] +[52.46246922493012, "o", "w"] +[52.49246922493012, "o", " "] +[52.52246922493012, "o", "d"] +[52.55246922493012, "o", "e"] +[52.58246922493012, "o", "m"] +[52.61246922493012, "o", "o"] +[52.642469224930124, "o", "/"] +[52.672469224930126, "o", "w"] +[52.70246922493013, "o", "e"] +[52.73246922493013, "o", "a"] +[52.76246922493013, "o", "t"] +[52.79246922493013, "o", "h"] +[52.82246922493013, "o", "e"] +[52.85246922493013, "o", "r"] +[52.882469224930134, "o", ":"] +[52.912469224930135, "o", "i"] +[52.942469224930136, "o", "n"] +[52.97246922493014, "o", "i"] +[53.00246922493014, "o", "t"] +[53.03246922493014, "o", "i"] +[53.06246922493014, "o", "a"] +[53.09246922493014, "o", "l"] +[53.12246922493014, "o", "_"] +[53.152469224930144, "o", "d"] +[53.182469224930145, "o", "a"] +[53.212469224930146, "o", "t"] +[53.24246922493015, "o", "a"] +[53.27246922493015, "o", "\r\n"] +[53.30246922493015, "o", "\u001b[0m"] +[53.33246922493015, "o", "\r\n"] +[53.69492793083225, "o", "Image demo/weather:9f07c9746d004ab618fcbf0816c67b456cad83916471ed3f56f8db905d3db6bb\r\n"] +[53.694942712784155, "o", "\r\nCreated at 2021-07-26T09:45:32.145573\r\n"] +[53.69711256027256, "o", "Size: 109.61 KiB\r\n"] +[53.69712543487583, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[53.69794273376499, "o", " rdu\r\n"] +[53.72794273376499, "o", "\u001b[1m"] +[53.75794273376499, "o", "\u001b[36m"] +[53.78794273376499, "o", "\u001b[91m"] +[53.817942733764994, "o", "$"] +[53.847942733764995, "o", " "] +[53.877942733764996, "o", "\u001b[0m"] +[58.907942733765, "o", "\u001b[H"] +[58.937942733765, "o", "\u001b[J"] +[58.967942733765, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the table"] +[58.997942733765, "o", "\r\n"] +[59.027942733765, "o", "$"] +[59.057942733765, "o", " "] +[59.087942733765004, "o", "s"] +[59.117942733765005, "o", "g"] +[59.14794273376501, "o", "r"] +[59.17794273376501, "o", " "] +[59.20794273376501, "o", "t"] +[59.23794273376501, "o", "a"] +[59.26794273376501, "o", "b"] +[59.29794273376501, "o", "l"] +[59.32794273376501, "o", "e"] +[59.357942733765015, "o", " "] +[59.387942733765016, "o", "d"] +[59.41794273376502, "o", "e"] +[59.44794273376502, "o", "m"] +[59.47794273376502, "o", "o"] +[59.50794273376502, "o", "/"] +[59.53794273376502, "o", "w"] +[59.56794273376502, "o", "e"] +[59.597942733765024, "o", "a"] +[59.627942733765025, "o", "t"] +[59.657942733765026, "o", "h"] +[59.68794273376503, "o", "e"] +[59.71794273376503, "o", "r"] +[59.74794273376503, "o", ":"] +[59.77794273376503, "o", "i"] +[59.80794273376503, "o", "n"] +[59.83794273376503, "o", "i"] +[59.867942733765034, "o", "t"] +[59.897942733765035, "o", "i"] +[59.927942733765036, "o", "a"] +[59.95794273376504, "o", "l"] +[59.98794273376504, "o", "_"] +[60.01794273376504, "o", "d"] +[60.04794273376504, "o", "a"] +[60.07794273376504, "o", "t"] +[60.10794273376504, "o", "a"] +[60.137942733765044, "o", " "] +[60.167942733765045, "o", "r"] +[60.197942733765046, "o", "d"] +[60.22794273376505, "o", "u"] +[60.25794273376505, "o", "\r\n"] +[60.28794273376505, "o", "\u001b[0m"] +[60.31794273376505, "o", "\r\n"] +[60.665417308807775, "o", "Table demo/weather:9f07c9746d004ab618fcbf0816c67b456cad83916471ed3f56f8db905d3db6bb/rdu\r\n"] +[60.66544854164164, "o", "\r\n"] +[60.666380996704504, "o", "Size: 109.61 KiB\r\n"] +[60.66754161834757, "o", "Rows: 4633\r\n"] +[60.66762101173441, "o", "Columns: \r\n date (timestamp without time zone, PK)\r\n temperaturemin (numeric)\r\n temperaturemax (numeric)\r\n precipitation (numeric)\r\n snowfall (numeric)\r\n snowdepth (numeric)\r\n avgwindspeed (numeric)\r\n fastest2minwinddir (integer)\r\n fastest2minwindspeed (numeric)\r\n fastest5secwinddir (integer)\r\n fastest5secwindspeed (numeric)\r\n fog (character varying)\r\n fogheavy (character varying)\r\n mist (character varying)\r\n rain (character varying)\r\n fogground (character varying)\r\n ice (character varying)"] +[60.66763531684916, "o", "\r\n glaze (character varying)\r\n drizzle (character varying)\r\n snow (character varying)\r\n freezingrain (character varying)\r\n smokehaze (character varying)\r\n thunder (character varying)\r\n highwind (character varying)\r\n hail (character varying)\r\n blowingsnow (character varying)\r\n dust (character varying)\r\n freezingfog (character varying)\r\n\r\nObjects: \r\n ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] +[60.69763531684916, "o", "\u001b[1m"] +[60.72763531684916, "o", "\u001b[36m"] +[60.75763531684916, "o", "\u001b[91m"] +[60.78763531684916, "o", "$"] +[60.81763531684916, "o", " "] +[60.847635316849164, "o", "\u001b[0m"] +[78.407942733765, "o", "\u001b[H"] +[78.437942733765, "o", "\u001b[J"] +[78.467942733765, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect object metadata"] +[78.497942733765, "o", "\r\n"] +[78.527942733765, "o", "$"] +[78.557942733765, "o", " "] +[78.587942733765, "o", "s"] +[78.617942733765, "o", "g"] +[78.647942733765, "o", "r"] +[78.67794273376501, "o", " "] +[78.70794273376501, "o", "o"] +[78.73794273376501, "o", "b"] +[78.76794273376501, "o", "j"] +[78.79794273376501, "o", "e"] +[78.82794273376501, "o", "c"] +[78.85794273376501, "o", "t"] +[78.88794273376502, "o", " "] +[78.91794273376502, "o", "o"] +[78.94794273376502, "o", "b"] +[78.97794273376502, "o", "7"] +[79.00794273376502, "o", "9"] +[79.03794273376502, "o", "9"] +[79.06794273376502, "o", "c"] +[79.09794273376502, "o", "a"] +[79.12794273376502, "o", "7"] +[79.15794273376503, "o", "6"] +[79.18794273376503, "o", "1"] +[79.21794273376503, "o", "e"] +[79.24794273376503, "o", "a"] +[79.27794273376503, "o", "6"] +[79.30794273376503, "o", "3"] +[79.33794273376503, "o", "8"] +[79.36794273376503, "o", "c"] +[79.39794273376503, "o", "0"] +[79.42794273376504, "o", "d"] +[79.45794273376504, "o", "b"] +[79.48794273376504, "o", "b"] +[79.51794273376504, "o", "4"] +[79.54794273376504, "o", "d"] +[79.57794273376504, "o", "f"] +[79.60794273376504, "o", "3"] +[79.63794273376504, "o", "e"] +[79.66794273376505, "o", "5"] +[79.69794273376505, "o", "9"] +[79.72794273376505, "o", "a"] +[79.75794273376505, "o", "b"] +[79.78794273376505, "o", "6"] +[79.81794273376505, "o", "a"] +[79.84794273376505, "o", "9"] +[79.87794273376505, "o", "9"] +[79.90794273376505, "o", "5"] +[79.93794273376506, "o", "d"] +[79.96794273376506, "o", "8"] +[79.99794273376506, "o", "7"] +[80.02794273376506, "o", "9"] +[80.05794273376506, "o", "9"] +[80.08794273376506, "o", "9"] +[80.11794273376506, "o", "9"] +[80.14794273376506, "o", "0"] +[80.17794273376506, "o", "9"] +[80.20794273376507, "o", "d"] +[80.23794273376507, "o", "0"] +[80.26794273376507, "o", "0"] +[80.29794273376507, "o", "8"] +[80.32794273376507, "o", "a"] +[80.35794273376507, "o", "3"] +[80.38794273376507, "o", "4"] +[80.41794273376507, "o", "9"] +[80.44794273376507, "o", "5"] +[80.47794273376508, "o", "7"] +[80.50794273376508, "o", "1"] +[80.53794273376508, "o", "1"] +[80.56794273376508, "o", "c"] +[80.59794273376508, "o", "9"] +[80.62794273376508, "o", "0"] +[80.65794273376508, "o", "0"] +[80.68794273376508, "o", "9"] +[80.71794273376508, "o", "f"] +[80.74794273376509, "o", "8"] +[80.77794273376509, "o", "f"] +[80.80794273376509, "o", "\r\n"] +[80.83794273376509, "o", "\u001b[0m"] +[80.86794273376509, "o", "\r\n"] +[81.24862138748213, "o", "Object ID: ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] +[81.24915759086653, "o", "\r\nNamespace: demo\r\nFormat: FRAG\r\n"] +[81.24918572425887, "o", "Size: 109.61 KiB\r\nCreated: 2021-07-26 09:45:32.357284\r\nRows inserted: 4633\r\nInsertion hash: 4b49b5701a582aa5c418238e4bf75c84d0dcd2ec993fb4e7fe1d0dfcf6ef6877\r\nRows deleted: 0\r\nDeletion hash: 0000000000000000000000000000000000000000000000000000000000000000\r\nColumn index:\r\n fog: ['No', 'Yes']\r\n ice: ['No', 'Yes']\r\n date: ['2007-01-01 00:00:00', '2019-09-07 00:00:00']\r\n dust: ['No', 'Yes']\r\n hail: ['No', 'Yes']\r\n mist: ['No', 'Yes']\r\n rain: ['No', 'Yes']\r\n snow: ['No', 'Yes']\r\n glaze: ['No', 'Yes']\r\n "] +[81.24919263839766, "o", "drizzle: ['No', 'Yes']\r\n thunder: ['No', 'Yes']\r\n fogheavy: ['No', 'Yes']\r\n highwind: ['No', 'Yes']\r\n snowfall: ['0.0', '7.01']\r\n fogground: ['No', 'Yes']\r\n smokehaze: ['No', 'Yes']\r\n snowdepth: ['0.0', '5.91']\r\n blowingsnow: ['No', 'Yes']\r\n freezingfog: ['No', 'Yes']\r\n avgwindspeed: ['0.0', '20.36']\r\n freezingrain: ['No', 'Yes']\r\n precipitation: ['0.0', '6.45']\r\n temperaturemax: ['23.2', '105.1']\r\n temperaturemin: ['4.1', '80.1']\r\n fastest2minwinddir: [10, 360]\r\n fastest5secwinddir: [10, 36"] +[81.24921171188399, "o", "0]\r\n fastest2minwindspeed: ['4.92', '59.95']\r\n fastest5secwindspeed: ['6.93', '86.12']\r\n\r\n"] +[81.26892582893416, "o", "Location: created locally\r\n"] +[81.29892582893416, "o", "\u001b[1m"] +[81.32892582893416, "o", "\u001b[36m"] +[81.35892582893416, "o", "\u001b[91m"] +[81.38892582893416, "o", "$"] +[81.41892582893416, "o", " "] +[81.44892582893416, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.15/import-from-mongo.cast b/content/casts/versioned/archive/v0.2.15/import-from-mongo.cast new file mode 100644 index 00000000..ccda3827 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.15/import-from-mongo.cast @@ -0,0 +1,669 @@ +{"version": 2, "width": 100, "height": 35, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1627292735, "metadata": {"tss": [{"h": "Inspect the config file", "ts": 0.06}, {"h": "Do some preliminary cleanup", "ts": 6.0600000000000005}, {"h": "Mount the Mongo database", "ts": 12.379629631042487}, {"h": "Check the contents of the new table", "ts": 29.37962963104249}, {"h": "Import the data into a new Splitgraph repository", "ts": 36.47276775360115}, {"h": "Alternatively, data can be imported from other databases with Splitfiles", "ts": 45.51203085899371}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the config file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "c"] +[0.24, "o", "a"] +[0.27, "o", "t"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "."] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "g"] +[0.42000000000000015, "o", "c"] +[0.4500000000000002, "o", "o"] +[0.4800000000000002, "o", "n"] +[0.5100000000000002, "o", "f"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "g"] +[0.6000000000000003, "o", "\r\n"] +[0.6300000000000003, "o", "\u001b[0m"] +[0.6600000000000004, "o", "\r\n"] +[0.6614348030090336, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[data_sources]\r\nmongo_fdw=splitgraph.hooks.data_source.MongoDataSource\r\n"] +[0.6914348030090336, "o", "\u001b[1m"] +[0.7214348030090336, "o", "\u001b[36m"] +[0.7514348030090336, "o", "\u001b[91m"] +[0.7814348030090337, "o", "$"] +[0.8114348030090337, "o", " "] +[0.8414348030090337, "o", "\u001b[0m"] +[6.03, "o", "\u001b[H"] +[6.0600000000000005, "o", "\u001b[J"] +[6.090000000000001, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Do some preliminary cleanup"] +[6.120000000000001, "o", "\r\n"] +[6.150000000000001, "o", "$"] +[6.1800000000000015, "o", " "] +[6.210000000000002, "o", "s"] +[6.240000000000002, "o", "g"] +[6.270000000000002, "o", "r"] +[6.3000000000000025, "o", " "] +[6.330000000000003, "o", "r"] +[6.360000000000003, "o", "m"] +[6.390000000000003, "o", " "] +[6.4200000000000035, "o", "-"] +[6.450000000000004, "o", "y"] +[6.480000000000004, "o", " "] +[6.510000000000004, "o", "s"] +[6.5400000000000045, "o", "t"] +[6.570000000000005, "o", "a"] +[6.600000000000005, "o", "g"] +[6.630000000000005, "o", "i"] +[6.6600000000000055, "o", "n"] +[6.690000000000006, "o", "g"] +[6.720000000000006, "o", "\r\n"] +[6.750000000000006, "o", "\u001b[0m"] +[6.7800000000000065, "o", "\r\n"] +[7.139629631042487, "o", "Postgres schema staging will be deleted.\r\n"] +[7.169629631042487, "o", "\u001b[1m"] +[7.199629631042487, "o", "\u001b[36m"] +[7.229629631042488, "o", "\u001b[91m"] +[7.259629631042488, "o", "$"] +[7.289629631042488, "o", " "] +[7.319629631042488, "o", "\u001b[0m"] +[12.349629631042488, "o", "\u001b[H"] +[12.379629631042487, "o", "\u001b[J"] +[12.409629631042487, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Mount the Mongo database"] +[12.439629631042486, "o", "\r\n"] +[12.469629631042485, "o", "$"] +[12.499629631042485, "o", " "] +[12.529629631042484, "o", "s"] +[12.559629631042483, "o", "g"] +[12.589629631042483, "o", "r"] +[12.619629631042482, "o", " "] +[12.649629631042481, "o", "m"] +[12.67962963104248, "o", "o"] +[12.70962963104248, "o", "u"] +[12.73962963104248, "o", "n"] +[12.769629631042479, "o", "t"] +[12.799629631042478, "o", " "] +[12.829629631042478, "o", "m"] +[12.859629631042477, "o", "o"] +[12.889629631042476, "o", "n"] +[12.919629631042476, "o", "g"] +[12.949629631042475, "o", "o"] +[12.979629631042474, "o", "_"] +[13.009629631042474, "o", "f"] +[13.039629631042473, "o", "d"] +[13.069629631042472, "o", "w"] +[13.099629631042472, "o", " "] +[13.129629631042471, "o", "-"] +[13.15962963104247, "o", "-"] +[13.18962963104247, "o", "h"] +[13.21962963104247, "o", "e"] +[13.249629631042469, "o", "l"] +[13.279629631042468, "o", "p"] +[13.309629631042467, "o", "\r\n"] +[13.339629631042467, "o", "$"] +[13.369629631042466, "o", " "] +[13.399629631042465, "o", "s"] +[13.429629631042465, "o", "g"] +[13.459629631042464, "o", "r"] +[13.489629631042463, "o", " "] +[13.519629631042463, "o", "m"] +[13.549629631042462, "o", "o"] +[13.579629631042462, "o", "u"] +[13.609629631042461, "o", "n"] +[13.63962963104246, "o", "t"] +[13.66962963104246, "o", " "] +[13.699629631042459, "o", "m"] +[13.729629631042458, "o", "o"] +[13.759629631042458, "o", "n"] +[13.789629631042457, "o", "g"] +[13.819629631042456, "o", "o"] +[13.849629631042456, "o", "_"] +[13.879629631042455, "o", "f"] +[13.909629631042455, "o", "d"] +[13.939629631042454, "o", "w"] +[13.969629631042453, "o", " "] +[13.999629631042453, "o", "s"] +[14.029629631042452, "o", "t"] +[14.059629631042451, "o", "a"] +[14.08962963104245, "o", "g"] +[14.11962963104245, "o", "i"] +[14.14962963104245, "o", "n"] +[14.179629631042449, "o", "g"] +[14.209629631042448, "o", " "] +[14.239629631042447, "o", "-"] +[14.269629631042447, "o", "c"] +[14.299629631042446, "o", " "] +[14.329629631042446, "o", "o"] +[14.359629631042445, "o", "r"] +[14.389629631042444, "o", "i"] +[14.419629631042444, "o", "g"] +[14.449629631042443, "o", "i"] +[14.479629631042442, "o", "n"] +[14.509629631042442, "o", "r"] +[14.539629631042441, "o", "o"] +[14.56962963104244, "o", ":"] +[14.59962963104244, "o", "o"] +[14.62962963104244, "o", "r"] +[14.659629631042439, "o", "i"] +[14.689629631042438, "o", "g"] +[14.719629631042437, "o", "i"] +[14.749629631042437, "o", "n"] +[14.779629631042436, "o", "p"] +[14.809629631042435, "o", "a"] +[14.839629631042435, "o", "s"] +[14.869629631042434, "o", "s"] +[14.899629631042433, "o", "@"] +[14.929629631042433, "o", "m"] +[14.959629631042432, "o", "o"] +[14.989629631042432, "o", "n"] +[15.01962963104243, "o", "g"] +[15.04962963104243, "o", "o"] +[15.07962963104243, "o", ":"] +[15.109629631042429, "o", "2"] +[15.139629631042428, "o", "7"] +[15.169629631042428, "o", "0"] +[15.199629631042427, "o", "1"] +[15.229629631042426, "o", "7"] +[15.259629631042426, "o", " "] +[15.289629631042425, "o", "-"] +[15.319629631042424, "o", "o"] +[15.349629631042424, "o", " "] +[15.379629631042423, "o", "'"] +[15.409629631042423, "o", "{"] +[15.439629631042422, "o", "\""] +[15.469629631042421, "o", "t"] +[15.49962963104242, "o", "a"] +[15.52962963104242, "o", "b"] +[15.55962963104242, "o", "l"] +[15.589629631042419, "o", "e"] +[15.619629631042418, "o", "s"] +[15.649629631042417, "o", "\""] +[15.679629631042417, "o", ":"] +[15.709629631042416, "o", " "] +[15.739629631042416, "o", "{"] +[15.769629631042415, "o", "\""] +[15.799629631042414, "o", "s"] +[15.829629631042414, "o", "t"] +[15.859629631042413, "o", "u"] +[15.889629631042412, "o", "f"] +[15.919629631042412, "o", "f"] +[15.949629631042411, "o", "\""] +[15.97962963104241, "o", ":"] +[16.00962963104241, "o", " "] +[16.039629631042413, "o", "{"] +[16.069629631042414, "o", "\r\n "] +[16.099629631042415, "o", "\""] +[16.129629631042416, "o", "o"] +[16.159629631042417, "o", "p"] +[16.18962963104242, "o", "t"] +[16.21962963104242, "o", "i"] +[16.24962963104242, "o", "o"] +[16.279629631042422, "o", "n"] +[16.309629631042423, "o", "s"] +[16.339629631042424, "o", "\""] +[16.369629631042425, "o", ":"] +[16.399629631042426, "o", "\r\n "] +[16.429629631042427, "o", "{"] +[16.45962963104243, "o", "\r\n "] +[16.48962963104243, "o", "\""] +[16.51962963104243, "o", "d"] +[16.549629631042432, "o", "a"] +[16.579629631042433, "o", "t"] +[16.609629631042434, "o", "a"] +[16.639629631042435, "o", "b"] +[16.669629631042437, "o", "a"] +[16.699629631042438, "o", "s"] +[16.72962963104244, "o", "e"] +[16.75962963104244, "o", "\""] +[16.78962963104244, "o", ":"] +[16.819629631042442, "o", " "] +[16.849629631042443, "o", "\""] +[16.879629631042445, "o", "o"] +[16.909629631042446, "o", "r"] +[16.939629631042447, "o", "i"] +[16.969629631042448, "o", "g"] +[16.99962963104245, "o", "i"] +[17.02962963104245, "o", "n"] +[17.05962963104245, "o", "d"] +[17.089629631042452, "o", "b"] +[17.119629631042454, "o", "\""] +[17.149629631042455, "o", ","] +[17.179629631042456, "o", "\r\n "] +[17.209629631042457, "o", "\""] +[17.239629631042458, "o", "c"] +[17.26962963104246, "o", "o"] +[17.29962963104246, "o", "l"] +[17.32962963104246, "o", "l"] +[17.359629631042463, "o", "e"] +[17.389629631042464, "o", "c"] +[17.419629631042465, "o", "t"] +[17.449629631042466, "o", "i"] +[17.479629631042467, "o", "o"] +[17.50962963104247, "o", "n"] +[17.53962963104247, "o", "\""] +[17.56962963104247, "o", ":"] +[17.599629631042472, "o", " "] +[17.629629631042473, "o", "\""] +[17.659629631042474, "o", "s"] +[17.689629631042475, "o", "t"] +[17.719629631042476, "o", "u"] +[17.749629631042477, "o", "f"] +[17.77962963104248, "o", "f"] +[17.80962963104248, "o", "\""] +[17.83962963104248, "o", "\r\n "] +[17.869629631042482, "o", "}"] +[17.899629631042483, "o", ","] +[17.929629631042484, "o", "\r\n "] +[17.959629631042485, "o", "\""] +[17.989629631042487, "o", "s"] +[18.019629631042488, "o", "c"] +[18.04962963104249, "o", "h"] +[18.07962963104249, "o", "e"] +[18.10962963104249, "o", "m"] +[18.139629631042492, "o", "a"] +[18.169629631042493, "o", "\""] +[18.199629631042495, "o", ":"] +[18.229629631042496, "o", " "] +[18.259629631042497, "o", "{"] +[18.289629631042498, "o", "\r\n "] +[18.3196296310425, "o", "\""] +[18.3496296310425, "o", "n"] +[18.3796296310425, "o", "a"] +[18.409629631042502, "o", "m"] +[18.439629631042504, "o", "e"] +[18.469629631042505, "o", "\""] +[18.499629631042506, "o", ":"] +[18.529629631042507, "o", " "] +[18.559629631042508, "o", "\""] +[18.58962963104251, "o", "t"] +[18.61962963104251, "o", "e"] +[18.64962963104251, "o", "x"] +[18.679629631042513, "o", "t"] +[18.709629631042514, "o", "\""] +[18.739629631042515, "o", ","] +[18.769629631042516, "o", "\r\n "] +[18.799629631042517, "o", "\""] +[18.82962963104252, "o", "d"] +[18.85962963104252, "o", "u"] +[18.88962963104252, "o", "r"] +[18.919629631042522, "o", "a"] +[18.949629631042523, "o", "t"] +[18.979629631042524, "o", "i"] +[19.009629631042525, "o", "o"] +[19.039629631042526, "o", "n"] +[19.069629631042528, "o", "\""] +[19.09962963104253, "o", ":"] +[19.12962963104253, "o", " "] +[19.15962963104253, "o", "\""] +[19.189629631042532, "o", "n"] +[19.219629631042533, "o", "u"] +[19.249629631042534, "o", "m"] +[19.279629631042535, "o", "e"] +[19.309629631042537, "o", "r"] +[19.339629631042538, "o", "i"] +[19.36962963104254, "o", "c"] +[19.39962963104254, "o", "\""] +[19.42962963104254, "o", ","] +[19.459629631042542, "o", "\r\n "] +[19.489629631042543, "o", "\""] +[19.519629631042545, "o", "h"] +[19.549629631042546, "o", "a"] +[19.579629631042547, "o", "p"] +[19.609629631042548, "o", "p"] +[19.63962963104255, "o", "y"] +[19.66962963104255, "o", "\""] +[19.69962963104255, "o", ":"] +[19.729629631042553, "o", " "] +[19.759629631042554, "o", "\""] +[19.789629631042555, "o", "b"] +[19.819629631042556, "o", "o"] +[19.849629631042557, "o", "o"] +[19.879629631042558, "o", "l"] +[19.90962963104256, "o", "e"] +[19.93962963104256, "o", "a"] +[19.96962963104256, "o", "n"] +[19.999629631042563, "o", "\""] +[20.029629631042564, "o", "}"] +[20.059629631042565, "o", "}"] +[20.089629631042566, "o", "}"] +[20.119629631042567, "o", "}"] +[20.14962963104257, "o", "'"] +[20.17962963104257, "o", "\r\n"] +[20.20962963104257, "o", "\u001b[0m"] +[20.239629631042572, "o", "\r\n"] +[20.56099856376657, "o", "Usage: sgr mount mongo_fdw [OPTIONS] SCHEMA\r\n\r\n Mount a Mongo database.\r\n\r\n Mounts one or more collections on a remote Mongo database as a set of\r\n foreign tables locally.\r\n\r\nOptions:\r\n -c, --connection TEXT Connection string in the form\r\n username:password@server:port\r\n\r\n -o, --handler-options JSON JSON-encoded dictionary or @filename.json with\r\n handler options:\r\n \r\n tables: A di"] +[20.56100929260263, "o", "ctionary of form { \"table_name\":\r\n { \"schema\": {\"col1\": \"type1\"...},\r\n \"options\": {\"database\": , \"collection\":\r\n } } }\r\n\r\n --help Show this message and exit.\r\n"] +[20.971822624206634, "o", "Mounting table stuff\r\n"] +[21.001822624206635, "o", "\u001b[1m"] +[21.031822624206637, "o", "\u001b[36m"] +[21.061822624206638, "o", "\u001b[91m"] +[21.09182262420664, "o", "$"] +[21.12182262420664, "o", " "] +[21.15182262420664, "o", "\u001b[0m"] +[29.34962963104249, "o", "\u001b[H"] +[29.37962963104249, "o", "\u001b[J"] +[29.409629631042492, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the contents of the new table"] +[29.439629631042493, "o", "\r\n"] +[29.469629631042494, "o", "$"] +[29.499629631042495, "o", " "] +[29.529629631042496, "o", "s"] +[29.559629631042498, "o", "g"] +[29.5896296310425, "o", "r"] +[29.6196296310425, "o", " "] +[29.6496296310425, "o", "s"] +[29.679629631042502, "o", "q"] +[29.709629631042503, "o", "l"] +[29.739629631042504, "o", " "] +[29.769629631042505, "o", "-"] +[29.799629631042507, "o", "s"] +[29.829629631042508, "o", " "] +[29.85962963104251, "o", "s"] +[29.88962963104251, "o", "t"] +[29.91962963104251, "o", "a"] +[29.949629631042512, "o", "g"] +[29.979629631042513, "o", "i"] +[30.009629631042515, "o", "n"] +[30.039629631042516, "o", "g"] +[30.069629631042517, "o", " "] +[30.099629631042518, "o", "\""] +[30.12962963104252, "o", "S"] +[30.15962963104252, "o", "E"] +[30.18962963104252, "o", "L"] +[30.219629631042523, "o", "E"] +[30.249629631042524, "o", "C"] +[30.279629631042525, "o", "T"] +[30.309629631042526, "o", " "] +[30.339629631042527, "o", "*"] +[30.369629631042528, "o", " "] +[30.39962963104253, "o", "F"] +[30.42962963104253, "o", "R"] +[30.45962963104253, "o", "O"] +[30.489629631042533, "o", "M"] +[30.519629631042534, "o", " "] +[30.549629631042535, "o", "s"] +[30.579629631042536, "o", "t"] +[30.609629631042537, "o", "u"] +[30.63962963104254, "o", "f"] +[30.66962963104254, "o", "f"] +[30.69962963104254, "o", "\""] +[30.729629631042542, "o", "\r\n"] +[30.759629631042543, "o", "\u001b[0m"] +[30.789629631042544, "o", "\r\n"] +[31.232767753601138, "o", "Alex 12 False 60fe844db00c2e9c35a3e66b\r\nJames 2 True 60fe844db00c2e9c35a3e66c\r\nAlice 98765 True 60fe844db00c2e9c35a3e66d\r\n"] +[31.26276775360114, "o", "\u001b[1m"] +[31.29276775360114, "o", "\u001b[36m"] +[31.32276775360114, "o", "\u001b[91m"] +[31.352767753601142, "o", "$"] +[31.382767753601144, "o", " "] +[31.412767753601145, "o", "\u001b[0m"] +[36.442767753601146, "o", "\u001b[H"] +[36.47276775360115, "o", "\u001b[J"] +[36.50276775360115, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Import the data into a new Splitgraph repository"] +[36.53276775360115, "o", "\r\n"] +[36.56276775360115, "o", "$"] +[36.59276775360115, "o", " "] +[36.62276775360115, "o", "s"] +[36.652767753601154, "o", "g"] +[36.682767753601155, "o", "r"] +[36.712767753601156, "o", " "] +[36.74276775360116, "o", "i"] +[36.77276775360116, "o", "m"] +[36.80276775360116, "o", "p"] +[36.83276775360116, "o", "o"] +[36.86276775360116, "o", "r"] +[36.89276775360116, "o", "t"] +[36.922767753601164, "o", " "] +[36.952767753601165, "o", "s"] +[36.982767753601166, "o", "t"] +[37.01276775360117, "o", "a"] +[37.04276775360117, "o", "g"] +[37.07276775360117, "o", "i"] +[37.10276775360117, "o", "n"] +[37.13276775360117, "o", "g"] +[37.16276775360117, "o", " "] +[37.192767753601174, "o", "\""] +[37.222767753601175, "o", "S"] +[37.25276775360118, "o", "E"] +[37.28276775360118, "o", "L"] +[37.31276775360118, "o", "E"] +[37.34276775360118, "o", "C"] +[37.37276775360118, "o", "T"] +[37.40276775360118, "o", " "] +[37.43276775360118, "o", "n"] +[37.462767753601184, "o", "a"] +[37.492767753601186, "o", "m"] +[37.52276775360119, "o", "e"] +[37.55276775360119, "o", ","] +[37.58276775360119, "o", " "] +[37.61276775360119, "o", "d"] +[37.64276775360119, "o", "u"] +[37.67276775360119, "o", "r"] +[37.702767753601194, "o", "a"] +[37.732767753601195, "o", "t"] +[37.762767753601196, "o", "i"] +[37.7927677536012, "o", "o"] +[37.8227677536012, "o", "n"] +[37.8527677536012, "o", ","] +[37.8827677536012, "o", " "] +[37.9127677536012, "o", "h"] +[37.9427677536012, "o", "a"] +[37.972767753601204, "o", "p"] +[38.002767753601205, "o", "p"] +[38.032767753601206, "o", "y"] +[38.06276775360121, "o", " "] +[38.09276775360121, "o", "F"] +[38.12276775360121, "o", "R"] +[38.15276775360121, "o", "O"] +[38.18276775360121, "o", "M"] +[38.21276775360121, "o", " "] +[38.242767753601214, "o", "s"] +[38.272767753601215, "o", "t"] +[38.302767753601216, "o", "u"] +[38.33276775360122, "o", "f"] +[38.36276775360122, "o", "f"] +[38.39276775360122, "o", "\""] +[38.42276775360122, "o", " "] +[38.45276775360122, "o", "m"] +[38.48276775360122, "o", "y"] +[38.512767753601224, "o", "/"] +[38.542767753601225, "o", "r"] +[38.57276775360123, "o", "e"] +[38.60276775360123, "o", "p"] +[38.63276775360123, "o", "o"] +[38.66276775360123, "o", "s"] +[38.69276775360123, "o", "i"] +[38.72276775360123, "o", "t"] +[38.75276775360123, "o", "o"] +[38.782767753601235, "o", "r"] +[38.812767753601236, "o", "y"] +[38.84276775360124, "o", " "] +[38.87276775360124, "o", "s"] +[38.90276775360124, "o", "t"] +[38.93276775360124, "o", "u"] +[38.96276775360124, "o", "f"] +[38.99276775360124, "o", "f"] +[39.022767753601244, "o", "\r\n"] +[39.052767753601245, "o", "\u001b[0m"] +[39.082767753601246, "o", "\r\n"] +[40.00651863098162, "o", "Processing table sg_tmp_282d7c9120652ce908e41d26e7b06721\r\n"] +[40.2720308589937, "o", "my/repository:stuff has been imported from staging:SELECT name, duration, happy FROM stuff\r\n"] +[40.3020308589937, "o", "\u001b[1m"] +[40.332030858993704, "o", "\u001b[36m"] +[40.362030858993705, "o", "\u001b[91m"] +[40.39203085899371, "o", "$"] +[40.42203085899371, "o", " "] +[40.45203085899371, "o", "\u001b[0m"] +[45.48203085899371, "o", "\u001b[H"] +[45.51203085899371, "o", "\u001b[J"] +[45.54203085899371, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Alternatively, data can be imported from other databases with Splitfiles"] +[45.57203085899371, "o", "\r\n"] +[45.602030858993714, "o", "$"] +[45.632030858993716, "o", " "] +[45.66203085899372, "o", "c"] +[45.69203085899372, "o", "a"] +[45.72203085899372, "o", "t"] +[45.75203085899372, "o", " "] +[45.78203085899372, "o", "m"] +[45.81203085899372, "o", "o"] +[45.84203085899372, "o", "n"] +[45.872030858993725, "o", "g"] +[45.902030858993726, "o", "o"] +[45.93203085899373, "o", "_"] +[45.96203085899373, "o", "i"] +[45.99203085899373, "o", "m"] +[46.02203085899373, "o", "p"] +[46.05203085899373, "o", "o"] +[46.08203085899373, "o", "r"] +[46.112030858993734, "o", "t"] +[46.142030858993735, "o", "."] +[46.172030858993736, "o", "s"] +[46.20203085899374, "o", "p"] +[46.23203085899374, "o", "l"] +[46.26203085899374, "o", "i"] +[46.29203085899374, "o", "t"] +[46.32203085899374, "o", "f"] +[46.35203085899374, "o", "i"] +[46.382030858993744, "o", "l"] +[46.412030858993745, "o", "e"] +[46.442030858993746, "o", "\r\n"] +[46.47203085899375, "o", "$"] +[46.50203085899375, "o", " "] +[46.53203085899375, "o", "s"] +[46.56203085899375, "o", "g"] +[46.59203085899375, "o", "r"] +[46.62203085899375, "o", " "] +[46.652030858993754, "o", "b"] +[46.682030858993755, "o", "u"] +[46.71203085899376, "o", "i"] +[46.74203085899376, "o", "l"] +[46.77203085899376, "o", "d"] +[46.80203085899376, "o", " "] +[46.83203085899376, "o", "m"] +[46.86203085899376, "o", "o"] +[46.89203085899376, "o", "n"] +[46.922030858993764, "o", "g"] +[46.952030858993766, "o", "o"] +[46.98203085899377, "o", "_"] +[47.01203085899377, "o", "i"] +[47.04203085899377, "o", "m"] +[47.07203085899377, "o", "p"] +[47.10203085899377, "o", "o"] +[47.13203085899377, "o", "r"] +[47.162030858993774, "o", "t"] +[47.192030858993775, "o", "."] +[47.222030858993776, "o", "s"] +[47.25203085899378, "o", "p"] +[47.28203085899378, "o", "l"] +[47.31203085899378, "o", "i"] +[47.34203085899378, "o", "t"] +[47.37203085899378, "o", "f"] +[47.40203085899378, "o", "i"] +[47.432030858993784, "o", "l"] +[47.462030858993785, "o", "e"] +[47.492030858993786, "o", "\r\n"] +[47.52203085899379, "o", "\u001b[0m"] +[47.55203085899379, "o", "\r\n"] +[47.55327158927943, "o", "FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"tables\": {\"stuff\": {\r\n \"options\": {\r\n \"database\": \"origindb\",\r\n \"collection\": \"stuff\"\r\n },\r\n \"schema\": {\r\n \"name\": \"text\",\r\n \"duration\": \"numeric\",\r\n \"happy\": \"boolean\"}}}}'\r\n IMPORT {SELECT * FROM stuff} AS stuff\r\n"] +[47.925702390671034, "o", "Executing Splitfile mongo_import.splitfile with arguments {}\r\n"] +[47.963538942337294, "o", "\u001b[1m\r\nStep 1/1 : FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"t...\u001b[0m\r\n"] +[48.08160859107997, "o", "Mounting table stuff\r\n"] +[48.604784784317275, "o", "Processing table sg_tmp_5f89f12b6806d9537a2831a6f2ec591b\r\n"] +[48.91251998901393, "o", "Successfully built mongo_import:f8e8682aa52d.\r\n"] +[48.94251998901393, "o", "\u001b[1m"] +[48.97251998901393, "o", "\u001b[36m"] +[49.00251998901393, "o", "\u001b[91m"] +[49.032519989013934, "o", "$"] +[49.062519989013936, "o", " "] +[49.09251998901394, "o", "\u001b[0m"] +[55.48203085899371, "o", "\u001b[H"] +[55.51203085899371, "o", "\u001b[J"] +[55.54203085899371, "o", "\u001b[1m"] +[55.57203085899371, "o", "\u001b[36m"] +[55.602030858993714, "o", "\u001b[91m"] +[55.632030858993716, "o", "$"] +[55.66203085899372, "o", " "] +[55.69203085899372, "o", "s"] +[55.72203085899372, "o", "g"] +[55.75203085899372, "o", "r"] +[55.78203085899372, "o", " "] +[55.81203085899372, "o", "s"] +[55.84203085899372, "o", "h"] +[55.872030858993725, "o", "o"] +[55.902030858993726, "o", "w"] +[55.93203085899373, "o", " "] +[55.96203085899373, "o", "m"] +[55.99203085899373, "o", "o"] +[56.02203085899373, "o", "n"] +[56.05203085899373, "o", "g"] +[56.08203085899373, "o", "o"] +[56.112030858993734, "o", "_"] +[56.142030858993735, "o", "i"] +[56.172030858993736, "o", "m"] +[56.20203085899374, "o", "p"] +[56.23203085899374, "o", "o"] +[56.26203085899374, "o", "r"] +[56.29203085899374, "o", "t"] +[56.32203085899374, "o", ":"] +[56.35203085899374, "o", "l"] +[56.382030858993744, "o", "a"] +[56.412030858993745, "o", "t"] +[56.442030858993746, "o", "e"] +[56.47203085899375, "o", "s"] +[56.50203085899375, "o", "t"] +[56.53203085899375, "o", "\r\n"] +[56.56203085899375, "o", "$"] +[56.59203085899375, "o", " "] +[56.62203085899375, "o", "s"] +[56.652030858993754, "o", "g"] +[56.682030858993755, "o", "r"] +[56.71203085899376, "o", " "] +[56.74203085899376, "o", "s"] +[56.77203085899376, "o", "q"] +[56.80203085899376, "o", "l"] +[56.83203085899376, "o", " "] +[56.86203085899376, "o", "-"] +[56.89203085899376, "o", "s"] +[56.922030858993764, "o", " "] +[56.952030858993766, "o", "m"] +[56.98203085899377, "o", "o"] +[57.01203085899377, "o", "n"] +[57.04203085899377, "o", "g"] +[57.07203085899377, "o", "o"] +[57.10203085899377, "o", "_"] +[57.13203085899377, "o", "i"] +[57.162030858993774, "o", "m"] +[57.192030858993775, "o", "p"] +[57.222030858993776, "o", "o"] +[57.25203085899378, "o", "r"] +[57.28203085899378, "o", "t"] +[57.31203085899378, "o", " "] +[57.34203085899378, "o", "\""] +[57.37203085899378, "o", "S"] +[57.40203085899378, "o", "E"] +[57.432030858993784, "o", "L"] +[57.462030858993785, "o", "E"] +[57.492030858993786, "o", "C"] +[57.52203085899379, "o", "T"] +[57.55203085899379, "o", " "] +[57.58203085899379, "o", "*"] +[57.61203085899379, "o", " "] +[57.64203085899379, "o", "F"] +[57.67203085899379, "o", "R"] +[57.702030858993794, "o", "O"] +[57.732030858993795, "o", "M"] +[57.762030858993796, "o", " "] +[57.7920308589938, "o", "s"] +[57.8220308589938, "o", "t"] +[57.8520308589938, "o", "u"] +[57.8820308589938, "o", "f"] +[57.9120308589938, "o", "f"] +[57.9420308589938, "o", "\""] +[57.972030858993804, "o", "\r\n"] +[58.002030858993805, "o", "\u001b[0m"] +[58.03203085899381, "o", "\r\n"] +[58.430850543976106, "o", "Image mongo_import:f8e8682aa52d78f2ec6782f62373000bc4abbf54e929541aea6782312ef6c690\r\n"] +[58.431257047653475, "o", "Importing 1 table from mongo_fdw_tmp_staging\r\nCreated at 2021-07-26T09:45:57.946463\r\n"] +[58.432291784286775, "o", "Size: 589.00 B\r\n"] +[58.43230036735562, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[58.432989873886385, "o", " stuff\r\n"] +[58.80712059974698, "o", "Alex 12 False 60fe844db00c2e9c35a3e66b\r\nAlice 98765 True 60fe844db00c2e9c35a3e66d\r\nJames 2 True 60fe844db00c2e9c35a3e66c\r\n"] +[58.83712059974698, "o", "\u001b[1m"] +[58.86712059974698, "o", "\u001b[36m"] +[58.897120599746984, "o", "\u001b[91m"] +[58.927120599746985, "o", "$"] +[58.957120599746986, "o", " "] +[58.98712059974699, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.15/metadata.json b/content/casts/versioned/archive/v0.2.15/metadata.json new file mode 100644 index 00000000..fd972445 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.15/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.15", + "updated_at": "2022-01-20T00:00:42.851Z", + "release": { + "id": 46757318, + "tag_name": "v0.2.15", + "target_commitish": "443e9cf2d61db94fcb0dec8d674c2f79c58e01e5", + "created_at": "2021-07-26T09:25:14Z", + "published_at": "2021-07-26T09:58:34Z", + "assets": [ + { + "id": 41030652, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/41030652", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-07-26T09:56:59Z", + "updated_at": "2021-07-26T09:57:00Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.15/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/casts/versioned/archive/v0.2.15/pg-replication.cast b/content/casts/versioned/archive/v0.2.15/pg-replication.cast new file mode 100644 index 00000000..c8c73657 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.15/pg-replication.cast @@ -0,0 +1,1407 @@ +{"version": 2, "width": 100, "height": 21, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1627292808, "metadata": {"tss": [{"h": "The configuration file for sgr contains credentials for the", "ts": 0.06}, {"h": "The origin database has been set up with a couple of tables.", "ts": 10.059999999999999}, {"h": "Create a publication on the origin database", "ts": 19.752531814575114}, {"h": "Create a schema with the same name and same tables", "ts": 28.532531814575258}, {"h": "Set up replication from the origin database.", "ts": 38.53253181457526}, {"h": "Check the data on the engine", "ts": 49.47253181457548}, {"h": "Commit the data as an initial image", "ts": 58.016298379898465}, {"h": "Make a change on the origin database", "ts": 68.2177705097204}, {"h": "The change propagates to the subscriber and gets", "ts": 84.28777050972081}, {"h": "Committing creates a new image, snapshotting the state.", "ts": 91.10832456588847}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The configuration file for sgr contains credentials for the"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # origin database: this is just so that we can use sgr to query it\r\n"] +[0.18, "o", "$ # (replication can be set up through any PostgreSQL client)\r\n"] +[0.21, "o", "$"] +[0.24, "o", " "] +[0.27, "o", "c"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "t"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "."] +[0.42000000000000015, "o", "s"] +[0.4500000000000002, "o", "g"] +[0.4800000000000002, "o", "c"] +[0.5100000000000002, "o", "o"] +[0.5400000000000003, "o", "n"] +[0.5700000000000003, "o", "f"] +[0.6000000000000003, "o", "i"] +[0.6300000000000003, "o", "g"] +[0.6600000000000004, "o", "\r\n"] +[0.6900000000000004, "o", "\u001b[0m"] +[0.7200000000000004, "o", "\r\n"] +[0.7214925003051762, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n; Add the origin database here so that we can\r\n; use sgr to talk to it (can use any pg client)\r\n[remote:origin]\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=originuser\r\nSG_ENGINE_PWD=originpass\r\nSG_ENGINE_DB=originuser\r\n"] +[0.7514925003051762, "o", "\u001b[1m"] +[0.7814925003051763, "o", "\u001b[36m"] +[0.8114925003051763, "o", "\u001b[91m"] +[0.8414925003051763, "o", "$"] +[0.8714925003051763, "o", " "] +[0.9014925003051764, "o", "\u001b[0m"] +[10.03, "o", "\u001b[H"] +[10.059999999999999, "o", "\u001b[J"] +[10.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The origin database has been set up with a couple of tables."] +[10.119999999999997, "o", "\r\n"] +[10.149999999999997, "o", "$"] +[10.179999999999996, "o", " "] +[10.209999999999996, "o", "s"] +[10.239999999999995, "o", "g"] +[10.269999999999994, "o", "r"] +[10.299999999999994, "o", " "] +[10.329999999999993, "o", "s"] +[10.359999999999992, "o", "q"] +[10.389999999999992, "o", "l"] +[10.419999999999991, "o", " "] +[10.44999999999999, "o", "-"] +[10.47999999999999, "o", "r"] +[10.50999999999999, "o", " "] +[10.539999999999988, "o", "o"] +[10.569999999999988, "o", "r"] +[10.599999999999987, "o", "i"] +[10.629999999999987, "o", "g"] +[10.659999999999986, "o", "i"] +[10.689999999999985, "o", "n"] +[10.719999999999985, "o", " "] +[10.749999999999984, "o", "\""] +[10.779999999999983, "o", "S"] +[10.809999999999983, "o", "E"] +[10.839999999999982, "o", "L"] +[10.869999999999981, "o", "E"] +[10.89999999999998, "o", "C"] +[10.92999999999998, "o", "T"] +[10.95999999999998, "o", " "] +[10.989999999999979, "o", "*"] +[11.019999999999978, "o", " "] +[11.049999999999978, "o", "F"] +[11.079999999999977, "o", "R"] +[11.109999999999976, "o", "O"] +[11.139999999999976, "o", "M"] +[11.169999999999975, "o", " "] +[11.199999999999974, "o", "p"] +[11.229999999999974, "o", "r"] +[11.259999999999973, "o", "o"] +[11.289999999999973, "o", "d"] +[11.319999999999972, "o", "u"] +[11.349999999999971, "o", "c"] +[11.37999999999997, "o", "t"] +[11.40999999999997, "o", "i"] +[11.43999999999997, "o", "o"] +[11.469999999999969, "o", "n"] +[11.499999999999968, "o", "_"] +[11.529999999999967, "o", "d"] +[11.559999999999967, "o", "a"] +[11.589999999999966, "o", "t"] +[11.619999999999965, "o", "a"] +[11.649999999999965, "o", "."] +[11.679999999999964, "o", "c"] +[11.709999999999964, "o", "u"] +[11.739999999999963, "o", "s"] +[11.769999999999962, "o", "t"] +[11.799999999999962, "o", "o"] +[11.829999999999961, "o", "m"] +[11.85999999999996, "o", "e"] +[11.88999999999996, "o", "r"] +[11.919999999999959, "o", "s"] +[11.949999999999958, "o", "\""] +[11.979999999999958, "o", "\r\n"] +[12.009999999999957, "o", "$"] +[12.039999999999957, "o", " "] +[12.069999999999956, "o", "s"] +[12.099999999999955, "o", "g"] +[12.129999999999955, "o", "r"] +[12.159999999999954, "o", " "] +[12.189999999999953, "o", "s"] +[12.219999999999953, "o", "q"] +[12.249999999999952, "o", "l"] +[12.279999999999951, "o", " "] +[12.30999999999995, "o", "-"] +[12.33999999999995, "o", "r"] +[12.36999999999995, "o", " "] +[12.399999999999949, "o", "o"] +[12.429999999999948, "o", "r"] +[12.459999999999948, "o", "i"] +[12.489999999999947, "o", "g"] +[12.519999999999946, "o", "i"] +[12.549999999999946, "o", "n"] +[12.579999999999945, "o", " "] +[12.609999999999944, "o", "\""] +[12.639999999999944, "o", "S"] +[12.669999999999943, "o", "E"] +[12.699999999999942, "o", "L"] +[12.729999999999942, "o", "E"] +[12.759999999999941, "o", "C"] +[12.78999999999994, "o", "T"] +[12.81999999999994, "o", " "] +[12.84999999999994, "o", "*"] +[12.879999999999939, "o", " "] +[12.909999999999938, "o", "F"] +[12.939999999999937, "o", "R"] +[12.969999999999937, "o", "O"] +[12.999999999999936, "o", "M"] +[13.029999999999935, "o", " "] +[13.059999999999935, "o", "p"] +[13.089999999999934, "o", "r"] +[13.119999999999933, "o", "o"] +[13.149999999999933, "o", "d"] +[13.179999999999932, "o", "u"] +[13.209999999999932, "o", "c"] +[13.239999999999931, "o", "t"] +[13.26999999999993, "o", "i"] +[13.29999999999993, "o", "o"] +[13.329999999999929, "o", "n"] +[13.359999999999928, "o", "_"] +[13.389999999999928, "o", "d"] +[13.419999999999927, "o", "a"] +[13.449999999999926, "o", "t"] +[13.479999999999926, "o", "a"] +[13.509999999999925, "o", "."] +[13.539999999999925, "o", "o"] +[13.569999999999924, "o", "r"] +[13.599999999999923, "o", "d"] +[13.629999999999923, "o", "e"] +[13.659999999999922, "o", "r"] +[13.689999999999921, "o", "s"] +[13.71999999999992, "o", "\""] +[13.74999999999992, "o", "\r\n"] +[13.77999999999992, "o", "\u001b[0m"] +[13.809999999999919, "o", "\r\n"] +[14.16092806816093, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[14.512531814575114, "o", "1 1 15 Toilet Roll 2020-03-15 12:00:00\r\n2 1 20 Hand Sanitizer 2020-03-16 02:00:00\r\n3 2 5 Pasta 2020-03-21 17:32:11\r\n4 3 50 Surgical Mask 2020-04-01 12:00:01\r\n5 1 50 Surgical Mask 2020-04-02 11:29:42\r\n"] +[14.542531814575113, "o", "\u001b[1m"] +[14.572531814575113, "o", "\u001b[36m"] +[14.602531814575112, "o", "\u001b[91m"] +[14.632531814575112, "o", "$"] +[14.662531814575111, "o", " "] +[14.69253181457511, "o", "\u001b[0m"] +[19.722531814575113, "o", "\u001b[H"] +[19.752531814575114, "o", "\u001b[J"] +[19.782531814575115, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a publication on the origin database"] +[19.812531814575117, "o", "\r\n"] +[19.842531814575118, "o", "$"] +[19.87253181457512, "o", " "] +[19.90253181457512, "o", "s"] +[19.93253181457512, "o", "g"] +[19.962531814575122, "o", "r"] +[19.992531814575123, "o", " "] +[20.022531814575125, "o", "s"] +[20.052531814575126, "o", "q"] +[20.082531814575127, "o", "l"] +[20.112531814575128, "o", " "] +[20.14253181457513, "o", "-"] +[20.17253181457513, "o", "r"] +[20.20253181457513, "o", " "] +[20.232531814575133, "o", "o"] +[20.262531814575134, "o", "r"] +[20.292531814575135, "o", "i"] +[20.322531814575136, "o", "g"] +[20.352531814575137, "o", "i"] +[20.382531814575138, "o", "n"] +[20.41253181457514, "o", " "] +[20.44253181457514, "o", "\""] +[20.47253181457514, "o", "C"] +[20.502531814575143, "o", "R"] +[20.532531814575144, "o", "E"] +[20.562531814575145, "o", "A"] +[20.592531814575146, "o", "T"] +[20.622531814575147, "o", "E"] +[20.65253181457515, "o", " "] +[20.68253181457515, "o", "P"] +[20.71253181457515, "o", "U"] +[20.742531814575152, "o", "B"] +[20.772531814575153, "o", "L"] +[20.802531814575154, "o", "I"] +[20.832531814575155, "o", "C"] +[20.862531814575156, "o", "A"] +[20.892531814575158, "o", "T"] +[20.92253181457516, "o", "I"] +[20.95253181457516, "o", "O"] +[20.98253181457516, "o", "N"] +[21.012531814575162, "o", " "] +[21.042531814575163, "o", "p"] +[21.072531814575164, "o", "u"] +[21.102531814575165, "o", "b"] +[21.132531814575167, "o", "_"] +[21.162531814575168, "o", "o"] +[21.19253181457517, "o", "r"] +[21.22253181457517, "o", "d"] +[21.25253181457517, "o", "e"] +[21.282531814575172, "o", "r"] +[21.312531814575173, "o", "s"] +[21.342531814575175, "o", " "] +[21.372531814575176, "o", "\\"] +[21.402531814575177, "o", "\r\n "] +[21.432531814575178, "o", "F"] +[21.46253181457518, "o", "O"] +[21.49253181457518, "o", "R"] +[21.52253181457518, "o", " "] +[21.552531814575183, "o", "T"] +[21.582531814575184, "o", "A"] +[21.612531814575185, "o", "B"] +[21.642531814575186, "o", "L"] +[21.672531814575187, "o", "E"] +[21.702531814575188, "o", " "] +[21.73253181457519, "o", "p"] +[21.76253181457519, "o", "r"] +[21.79253181457519, "o", "o"] +[21.822531814575193, "o", "d"] +[21.852531814575194, "o", "u"] +[21.882531814575195, "o", "c"] +[21.912531814575196, "o", "t"] +[21.942531814575197, "o", "i"] +[21.9725318145752, "o", "o"] +[22.0025318145752, "o", "n"] +[22.0325318145752, "o", "_"] +[22.062531814575202, "o", "d"] +[22.092531814575203, "o", "a"] +[22.122531814575204, "o", "t"] +[22.152531814575205, "o", "a"] +[22.182531814575206, "o", "."] +[22.212531814575208, "o", "c"] +[22.24253181457521, "o", "u"] +[22.27253181457521, "o", "s"] +[22.30253181457521, "o", "t"] +[22.332531814575212, "o", "o"] +[22.362531814575213, "o", "m"] +[22.392531814575214, "o", "e"] +[22.422531814575215, "o", "r"] +[22.452531814575217, "o", "s"] +[22.482531814575218, "o", ","] +[22.51253181457522, "o", " "] +[22.54253181457522, "o", "p"] +[22.57253181457522, "o", "r"] +[22.602531814575222, "o", "o"] +[22.632531814575223, "o", "d"] +[22.662531814575225, "o", "u"] +[22.692531814575226, "o", "c"] +[22.722531814575227, "o", "t"] +[22.752531814575228, "o", "i"] +[22.78253181457523, "o", "o"] +[22.81253181457523, "o", "n"] +[22.84253181457523, "o", "_"] +[22.872531814575233, "o", "d"] +[22.902531814575234, "o", "a"] +[22.932531814575235, "o", "t"] +[22.962531814575236, "o", "a"] +[22.992531814575237, "o", "."] +[23.02253181457524, "o", "o"] +[23.05253181457524, "o", "r"] +[23.08253181457524, "o", "d"] +[23.11253181457524, "o", "e"] +[23.142531814575243, "o", "r"] +[23.172531814575244, "o", "s"] +[23.202531814575245, "o", "\""] +[23.232531814575246, "o", "\r\n"] +[23.262531814575247, "o", "\u001b[0m"] +[23.29253181457525, "o", "\r\n"] +[23.32253181457525, "o", "\u001b[1m"] +[23.35253181457525, "o", "\u001b[36m"] +[23.382531814575252, "o", "\u001b[91m"] +[23.412531814575253, "o", "$"] +[23.442531814575254, "o", " "] +[23.472531814575255, "o", "\u001b[0m"] +[28.502531814575256, "o", "\u001b[H"] +[28.532531814575258, "o", "\u001b[J"] +[28.56253181457526, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a schema with the same name and same tables"] +[28.59253181457526, "o", "\r\n"] +[28.62253181457526, "o", "$ # on the engine and initialize the repository.\r\n"] +[28.652531814575262, "o", "$"] +[28.682531814575263, "o", " "] +[28.712531814575264, "o", "s"] +[28.742531814575266, "o", "g"] +[28.772531814575267, "o", "r"] +[28.802531814575268, "o", " "] +[28.83253181457527, "o", "i"] +[28.86253181457527, "o", "n"] +[28.89253181457527, "o", "i"] +[28.922531814575272, "o", "t"] +[28.952531814575273, "o", " "] +[28.982531814575275, "o", "p"] +[29.012531814575276, "o", "r"] +[29.042531814575277, "o", "o"] +[29.072531814575278, "o", "d"] +[29.10253181457528, "o", "u"] +[29.13253181457528, "o", "c"] +[29.16253181457528, "o", "t"] +[29.192531814575283, "o", "i"] +[29.222531814575284, "o", "o"] +[29.252531814575285, "o", "n"] +[29.282531814575286, "o", "_"] +[29.312531814575287, "o", "d"] +[29.34253181457529, "o", "a"] +[29.37253181457529, "o", "t"] +[29.40253181457529, "o", "a"] +[29.43253181457529, "o", "\r\n"] +[29.462531814575293, "o", "$"] +[29.492531814575294, "o", " "] +[29.522531814575295, "o", "c"] +[29.552531814575296, "o", "a"] +[29.582531814575297, "o", "t"] +[29.6125318145753, "o", " "] +[29.6425318145753, "o", "e"] +[29.6725318145753, "o", "n"] +[29.702531814575302, "o", "g"] +[29.732531814575303, "o", "i"] +[29.762531814575304, "o", "n"] +[29.792531814575305, "o", "e"] +[29.822531814575306, "o", "/"] +[29.852531814575308, "o", "s"] +[29.88253181457531, "o", "c"] +[29.91253181457531, "o", "h"] +[29.94253181457531, "o", "e"] +[29.972531814575312, "o", "m"] +[30.002531814575313, "o", "a"] +[30.032531814575314, "o", "."] +[30.062531814575316, "o", "s"] +[30.092531814575317, "o", "q"] +[30.122531814575318, "o", "l"] +[30.15253181457532, "o", "\r\n"] +[30.18253181457532, "o", "$"] +[30.21253181457532, "o", " "] +[30.242531814575322, "o", "s"] +[30.272531814575323, "o", "g"] +[30.302531814575325, "o", "r"] +[30.332531814575326, "o", " "] +[30.362531814575327, "o", "s"] +[30.392531814575328, "o", "q"] +[30.42253181457533, "o", "l"] +[30.45253181457533, "o", " "] +[30.48253181457533, "o", "-"] +[30.512531814575333, "o", "s"] +[30.542531814575334, "o", " "] +[30.572531814575335, "o", "p"] +[30.602531814575336, "o", "r"] +[30.632531814575337, "o", "o"] +[30.66253181457534, "o", "d"] +[30.69253181457534, "o", "u"] +[30.72253181457534, "o", "c"] +[30.75253181457534, "o", "t"] +[30.782531814575343, "o", "i"] +[30.812531814575344, "o", "o"] +[30.842531814575345, "o", "n"] +[30.872531814575346, "o", "_"] +[30.902531814575347, "o", "d"] +[30.93253181457535, "o", "a"] +[30.96253181457535, "o", "t"] +[30.99253181457535, "o", "a"] +[31.022531814575352, "o", " "] +[31.052531814575353, "o", "\""] +[31.082531814575354, "o", "$"] +[31.112531814575355, "o", "("] +[31.142531814575356, "o", "c"] +[31.172531814575358, "o", "a"] +[31.20253181457536, "o", "t"] +[31.23253181457536, "o", " "] +[31.26253181457536, "o", "e"] +[31.292531814575362, "o", "n"] +[31.322531814575363, "o", "g"] +[31.352531814575364, "o", "i"] +[31.382531814575366, "o", "n"] +[31.412531814575367, "o", "e"] +[31.442531814575368, "o", "/"] +[31.47253181457537, "o", "s"] +[31.50253181457537, "o", "c"] +[31.53253181457537, "o", "h"] +[31.562531814575372, "o", "e"] +[31.592531814575374, "o", "m"] +[31.622531814575375, "o", "a"] +[31.652531814575376, "o", "."] +[31.682531814575377, "o", "s"] +[31.712531814575378, "o", "q"] +[31.74253181457538, "o", "l"] +[31.77253181457538, "o", ")"] +[31.80253181457538, "o", "\""] +[31.832531814575383, "o", "\r\n"] +[31.862531814575384, "o", "\u001b[0m"] +[31.892531814575385, "o", "\r\n"] +[32.29440278053303, "o", "Initialized empty repository production_data\r\n"] +[32.29549211502094, "o", "CREATE TABLE production_data.customers (\r\n id INTEGER PRIMARY KEY,\r\n name VARCHAR,\r\n registration_time TIMESTAMP\r\n);\r\n\r\nCREATE TABLE production_data.orders (\r\n id INTEGER PRIMARY KEY,\r\n customer_id INTEGER,\r\n quantity INTEGER,\r\n item_name VARCHAR,\r\n placed_time TIMESTAMP\r\n);\r\n"] +[32.32549211502094, "o", "\u001b[1m"] +[32.355492115020944, "o", "\u001b[36m"] +[32.385492115020945, "o", "\u001b[91m"] +[32.415492115020946, "o", "$"] +[32.44549211502095, "o", " "] +[32.47549211502095, "o", "\u001b[0m"] +[38.502531814575256, "o", "\u001b[H"] +[38.53253181457526, "o", "\u001b[J"] +[38.56253181457526, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Set up replication from the origin database."] +[38.59253181457526, "o", "\r\n"] +[38.62253181457526, "o", "$ # This will copy existing data into the tables too.\r\n"] +[38.65253181457526, "o", "$"] +[38.68253181457526, "o", " "] +[38.712531814575264, "o", "s"] +[38.742531814575266, "o", "g"] +[38.77253181457527, "o", "r"] +[38.80253181457527, "o", " "] +[38.83253181457527, "o", "s"] +[38.86253181457527, "o", "q"] +[38.89253181457527, "o", "l"] +[38.92253181457527, "o", " "] +[38.95253181457527, "o", "-"] +[38.982531814575275, "o", "-"] +[39.012531814575276, "o", "n"] +[39.04253181457528, "o", "o"] +[39.07253181457528, "o", "-"] +[39.10253181457528, "o", "t"] +[39.13253181457528, "o", "r"] +[39.16253181457528, "o", "a"] +[39.19253181457528, "o", "n"] +[39.222531814575284, "o", "s"] +[39.252531814575285, "o", "a"] +[39.282531814575286, "o", "c"] +[39.31253181457529, "o", "t"] +[39.34253181457529, "o", "i"] +[39.37253181457529, "o", "o"] +[39.40253181457529, "o", "n"] +[39.43253181457529, "o", " "] +[39.46253181457529, "o", "\""] +[39.492531814575294, "o", "C"] +[39.522531814575295, "o", "R"] +[39.552531814575296, "o", "E"] +[39.5825318145753, "o", "A"] +[39.6125318145753, "o", "T"] +[39.6425318145753, "o", "E"] +[39.6725318145753, "o", " "] +[39.7025318145753, "o", "S"] +[39.7325318145753, "o", "U"] +[39.762531814575304, "o", "B"] +[39.792531814575305, "o", "S"] +[39.822531814575306, "o", "C"] +[39.85253181457531, "o", "R"] +[39.88253181457531, "o", "I"] +[39.91253181457531, "o", "P"] +[39.94253181457531, "o", "T"] +[39.97253181457531, "o", "I"] +[40.00253181457531, "o", "O"] +[40.032531814575314, "o", "N"] +[40.062531814575316, "o", " "] +[40.09253181457532, "o", "s"] +[40.12253181457532, "o", "u"] +[40.15253181457532, "o", "b"] +[40.18253181457532, "o", "_"] +[40.21253181457532, "o", "o"] +[40.24253181457532, "o", "r"] +[40.27253181457532, "o", "d"] +[40.302531814575325, "o", "e"] +[40.332531814575326, "o", "r"] +[40.36253181457533, "o", "s"] +[40.39253181457533, "o", " "] +[40.42253181457533, "o", "\\"] +[40.45253181457533, "o", "\r\n "] +[40.48253181457533, "o", "C"] +[40.51253181457533, "o", "O"] +[40.542531814575334, "o", "N"] +[40.572531814575335, "o", "N"] +[40.602531814575336, "o", "E"] +[40.63253181457534, "o", "C"] +[40.66253181457534, "o", "T"] +[40.69253181457534, "o", "I"] +[40.72253181457534, "o", "O"] +[40.75253181457534, "o", "N"] +[40.78253181457534, "o", " "] +[40.812531814575344, "o", "'"] +[40.842531814575345, "o", "p"] +[40.872531814575346, "o", "o"] +[40.90253181457535, "o", "s"] +[40.93253181457535, "o", "t"] +[40.96253181457535, "o", "g"] +[40.99253181457535, "o", "r"] +[41.02253181457535, "o", "e"] +[41.05253181457535, "o", "s"] +[41.082531814575354, "o", "q"] +[41.112531814575355, "o", "l"] +[41.14253181457536, "o", ":"] +[41.17253181457536, "o", "/"] +[41.20253181457536, "o", "/"] +[41.23253181457536, "o", "o"] +[41.26253181457536, "o", "r"] +[41.29253181457536, "o", "i"] +[41.32253181457536, "o", "g"] +[41.352531814575364, "o", "i"] +[41.382531814575366, "o", "n"] +[41.41253181457537, "o", "u"] +[41.44253181457537, "o", "s"] +[41.47253181457537, "o", "e"] +[41.50253181457537, "o", "r"] +[41.53253181457537, "o", ":"] +[41.56253181457537, "o", "o"] +[41.59253181457537, "o", "r"] +[41.622531814575375, "o", "i"] +[41.652531814575376, "o", "g"] +[41.68253181457538, "o", "i"] +[41.71253181457538, "o", "n"] +[41.74253181457538, "o", "p"] +[41.77253181457538, "o", "a"] +[41.80253181457538, "o", "s"] +[41.83253181457538, "o", "s"] +[41.862531814575384, "o", "@"] +[41.892531814575385, "o", "o"] +[41.922531814575386, "o", "r"] +[41.95253181457539, "o", "i"] +[41.98253181457539, "o", "g"] +[42.01253181457539, "o", "i"] +[42.04253181457539, "o", "n"] +[42.07253181457539, "o", ":"] +[42.10253181457539, "o", "5"] +[42.132531814575394, "o", "4"] +[42.162531814575395, "o", "3"] +[42.192531814575396, "o", "2"] +[42.2225318145754, "o", "/"] +[42.2525318145754, "o", "o"] +[42.2825318145754, "o", "r"] +[42.3125318145754, "o", "i"] +[42.3425318145754, "o", "g"] +[42.3725318145754, "o", "i"] +[42.402531814575404, "o", "n"] +[42.432531814575405, "o", "u"] +[42.46253181457541, "o", "s"] +[42.49253181457541, "o", "e"] +[42.52253181457541, "o", "r"] +[42.55253181457541, "o", "'"] +[42.58253181457541, "o", " "] +[42.61253181457541, "o", "\\"] +[42.64253181457541, "o", "\r\n "] +[42.672531814575414, "o", "P"] +[42.702531814575416, "o", "U"] +[42.73253181457542, "o", "B"] +[42.76253181457542, "o", "L"] +[42.79253181457542, "o", "I"] +[42.82253181457542, "o", "C"] +[42.85253181457542, "o", "A"] +[42.88253181457542, "o", "T"] +[42.91253181457542, "o", "I"] +[42.942531814575425, "o", "O"] +[42.972531814575426, "o", "N"] +[43.00253181457543, "o", " "] +[43.03253181457543, "o", "p"] +[43.06253181457543, "o", "u"] +[43.09253181457543, "o", "b"] +[43.12253181457543, "o", "_"] +[43.15253181457543, "o", "o"] +[43.182531814575434, "o", "r"] +[43.212531814575435, "o", "d"] +[43.242531814575436, "o", "e"] +[43.27253181457544, "o", "r"] +[43.30253181457544, "o", "s"] +[43.33253181457544, "o", " "] +[43.36253181457544, "o", "\\"] +[43.39253181457544, "o", "\r\n "] +[43.42253181457544, "o", "W"] +[43.452531814575444, "o", "I"] +[43.482531814575445, "o", "T"] +[43.512531814575446, "o", "H"] +[43.54253181457545, "o", " "] +[43.57253181457545, "o", "("] +[43.60253181457545, "o", "c"] +[43.63253181457545, "o", "o"] +[43.66253181457545, "o", "p"] +[43.69253181457545, "o", "y"] +[43.722531814575454, "o", "_"] +[43.752531814575455, "o", "d"] +[43.78253181457546, "o", "a"] +[43.81253181457546, "o", "t"] +[43.84253181457546, "o", "a"] +[43.87253181457546, "o", " "] +[43.90253181457546, "o", "="] +[43.93253181457546, "o", " "] +[43.96253181457546, "o", "t"] +[43.992531814575464, "o", "r"] +[44.022531814575466, "o", "u"] +[44.05253181457547, "o", "e"] +[44.08253181457547, "o", ")"] +[44.11253181457547, "o", ";"] +[44.14253181457547, "o", "\""] +[44.17253181457547, "o", "\r\n"] +[44.20253181457547, "o", "\u001b[0m"] +[44.232531814575474, "o", "\r\n"] +[44.262531814575475, "o", "\u001b[1m"] +[44.292531814575476, "o", "\u001b[36m"] +[44.32253181457548, "o", "\u001b[91m"] +[44.35253181457548, "o", "$"] +[44.38253181457548, "o", " "] +[44.41253181457548, "o", "\u001b[0m"] +[49.44253181457548, "o", "\u001b[H"] +[49.47253181457548, "o", "\u001b[J"] +[49.502531814575484, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the data on the engine"] +[49.532531814575485, "o", "\r\n"] +[49.562531814575486, "o", "$"] +[49.59253181457549, "o", " "] +[49.62253181457549, "o", "s"] +[49.65253181457549, "o", "g"] +[49.68253181457549, "o", "r"] +[49.71253181457549, "o", " "] +[49.74253181457549, "o", "d"] +[49.772531814575494, "o", "i"] +[49.802531814575495, "o", "f"] +[49.832531814575496, "o", "f"] +[49.8625318145755, "o", " "] +[49.8925318145755, "o", "p"] +[49.9225318145755, "o", "r"] +[49.9525318145755, "o", "o"] +[49.9825318145755, "o", "d"] +[50.0125318145755, "o", "u"] +[50.042531814575504, "o", "c"] +[50.072531814575505, "o", "t"] +[50.10253181457551, "o", "i"] +[50.13253181457551, "o", "o"] +[50.16253181457551, "o", "n"] +[50.19253181457551, "o", "_"] +[50.22253181457551, "o", "d"] +[50.25253181457551, "o", "a"] +[50.28253181457551, "o", "t"] +[50.312531814575514, "o", "a"] +[50.342531814575516, "o", "\r\n"] +[50.37253181457552, "o", "$"] +[50.40253181457552, "o", " "] +[50.43253181457552, "o", "s"] +[50.46253181457552, "o", "g"] +[50.49253181457552, "o", "r"] +[50.52253181457552, "o", " "] +[50.552531814575524, "o", "s"] +[50.582531814575525, "o", "q"] +[50.612531814575526, "o", "l"] +[50.64253181457553, "o", " "] +[50.67253181457553, "o", "-"] +[50.70253181457553, "o", "s"] +[50.73253181457553, "o", " "] +[50.76253181457553, "o", "p"] +[50.79253181457553, "o", "r"] +[50.822531814575534, "o", "o"] +[50.852531814575535, "o", "d"] +[50.882531814575536, "o", "u"] +[50.91253181457554, "o", "c"] +[50.94253181457554, "o", "t"] +[50.97253181457554, "o", "i"] +[51.00253181457554, "o", "o"] +[51.03253181457554, "o", "n"] +[51.06253181457554, "o", "_"] +[51.092531814575544, "o", "d"] +[51.122531814575545, "o", "a"] +[51.152531814575546, "o", "t"] +[51.18253181457555, "o", "a"] +[51.21253181457555, "o", " "] +[51.24253181457555, "o", "\""] +[51.27253181457555, "o", "S"] +[51.30253181457555, "o", "E"] +[51.33253181457555, "o", "L"] +[51.362531814575554, "o", "E"] +[51.392531814575555, "o", "C"] +[51.42253181457556, "o", "T"] +[51.45253181457556, "o", " "] +[51.48253181457556, "o", "*"] +[51.51253181457556, "o", " "] +[51.54253181457556, "o", "F"] +[51.57253181457556, "o", "R"] +[51.60253181457556, "o", "O"] +[51.632531814575565, "o", "M"] +[51.662531814575566, "o", " "] +[51.69253181457557, "o", "c"] +[51.72253181457557, "o", "u"] +[51.75253181457557, "o", "s"] +[51.78253181457557, "o", "t"] +[51.81253181457557, "o", "o"] +[51.84253181457557, "o", "m"] +[51.872531814575574, "o", "e"] +[51.902531814575575, "o", "r"] +[51.932531814575576, "o", "s"] +[51.96253181457558, "o", "\""] +[51.99253181457558, "o", "\r\n"] +[52.02253181457558, "o", "\u001b[0m"] +[52.05253181457558, "o", "\r\n"] +[52.414015626907734, "o", "Between 000000000000 and the current working copy: \r\n"] +[52.414025640488056, "o", "customers: table added\r\norders: table added\r\n"] +[52.776298379898456, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[52.80629837989846, "o", "\u001b[1m"] +[52.83629837989846, "o", "\u001b[36m"] +[52.86629837989846, "o", "\u001b[91m"] +[52.89629837989846, "o", "$"] +[52.92629837989846, "o", " "] +[52.95629837989846, "o", "\u001b[0m"] +[57.986298379898464, "o", "\u001b[H"] +[58.016298379898465, "o", "\u001b[J"] +[58.04629837989847, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit the data as an initial image"] +[58.07629837989847, "o", "\r\n"] +[58.10629837989847, "o", "$"] +[58.13629837989847, "o", " "] +[58.16629837989847, "o", "s"] +[58.19629837989847, "o", "g"] +[58.22629837989847, "o", "r"] +[58.256298379898475, "o", " "] +[58.286298379898476, "o", "c"] +[58.31629837989848, "o", "o"] +[58.34629837989848, "o", "m"] +[58.37629837989848, "o", "m"] +[58.40629837989848, "o", "i"] +[58.43629837989848, "o", "t"] +[58.46629837989848, "o", " "] +[58.496298379898484, "o", "p"] +[58.526298379898485, "o", "r"] +[58.556298379898486, "o", "o"] +[58.58629837989849, "o", "d"] +[58.61629837989849, "o", "u"] +[58.64629837989849, "o", "c"] +[58.67629837989849, "o", "t"] +[58.70629837989849, "o", "i"] +[58.73629837989849, "o", "o"] +[58.766298379898494, "o", "n"] +[58.796298379898495, "o", "_"] +[58.826298379898496, "o", "d"] +[58.8562983798985, "o", "a"] +[58.8862983798985, "o", "t"] +[58.9162983798985, "o", "a"] +[58.9462983798985, "o", "\r\n"] +[58.9762983798985, "o", "$"] +[59.0062983798985, "o", " "] +[59.036298379898504, "o", "s"] +[59.066298379898505, "o", "g"] +[59.096298379898506, "o", "r"] +[59.12629837989851, "o", " "] +[59.15629837989851, "o", "t"] +[59.18629837989851, "o", "a"] +[59.21629837989851, "o", "g"] +[59.24629837989851, "o", " "] +[59.27629837989851, "o", "p"] +[59.306298379898514, "o", "r"] +[59.336298379898516, "o", "o"] +[59.36629837989852, "o", "d"] +[59.39629837989852, "o", "u"] +[59.42629837989852, "o", "c"] +[59.45629837989852, "o", "t"] +[59.48629837989852, "o", "i"] +[59.51629837989852, "o", "o"] +[59.54629837989852, "o", "n"] +[59.576298379898525, "o", "_"] +[59.606298379898526, "o", "d"] +[59.63629837989853, "o", "a"] +[59.66629837989853, "o", "t"] +[59.69629837989853, "o", "a"] +[59.72629837989853, "o", " "] +[59.75629837989853, "o", "i"] +[59.78629837989853, "o", "n"] +[59.816298379898534, "o", "i"] +[59.846298379898535, "o", "t"] +[59.876298379898536, "o", "i"] +[59.90629837989854, "o", "a"] +[59.93629837989854, "o", "l"] +[59.96629837989854, "o", "_"] +[59.99629837989854, "o", "s"] +[60.02629837989854, "o", "n"] +[60.05629837989854, "o", "a"] +[60.086298379898544, "o", "p"] +[60.116298379898545, "o", "s"] +[60.146298379898546, "o", "h"] +[60.17629837989855, "o", "o"] +[60.20629837989855, "o", "t"] +[60.23629837989855, "o", "\r\n"] +[60.26629837989855, "o", "$"] +[60.29629837989855, "o", " "] +[60.32629837989855, "o", "s"] +[60.356298379898554, "o", "g"] +[60.386298379898555, "o", "r"] +[60.41629837989856, "o", " "] +[60.44629837989856, "o", "s"] +[60.47629837989856, "o", "h"] +[60.50629837989856, "o", "o"] +[60.53629837989856, "o", "w"] +[60.56629837989856, "o", " "] +[60.59629837989856, "o", "p"] +[60.626298379898564, "o", "r"] +[60.656298379898566, "o", "o"] +[60.68629837989857, "o", "d"] +[60.71629837989857, "o", "u"] +[60.74629837989857, "o", "c"] +[60.77629837989857, "o", "t"] +[60.80629837989857, "o", "i"] +[60.83629837989857, "o", "o"] +[60.86629837989857, "o", "n"] +[60.896298379898575, "o", "_"] +[60.926298379898576, "o", "d"] +[60.95629837989858, "o", "a"] +[60.98629837989858, "o", "t"] +[61.01629837989858, "o", "a"] +[61.04629837989858, "o", ":"] +[61.07629837989858, "o", "i"] +[61.10629837989858, "o", "n"] +[61.136298379898584, "o", "i"] +[61.166298379898585, "o", "t"] +[61.196298379898586, "o", "i"] +[61.22629837989859, "o", "a"] +[61.25629837989859, "o", "l"] +[61.28629837989859, "o", "_"] +[61.31629837989859, "o", "s"] +[61.34629837989859, "o", "n"] +[61.37629837989859, "o", "a"] +[61.406298379898594, "o", "p"] +[61.436298379898595, "o", "s"] +[61.466298379898596, "o", "h"] +[61.4962983798986, "o", "o"] +[61.5262983798986, "o", "t"] +[61.5562983798986, "o", "\r\n"] +[61.5862983798986, "o", "\u001b[0m"] +[61.6162983798986, "o", "\r\n"] +[61.99712604522758, "o", "Committing production_data...\r\n"] +[62.02246660232597, "o", "Processing table customers\r\n"] +[62.10723680496269, "o", "Processing table orders\r\n"] +[62.14215916633659, "o", "Committed production_data as d2a2ff2a377d.\r\n"] +[62.56571859359794, "o", "Tagged production_data:d2a2ff2a377dfab1ea915391689f3fabbe7f830be225164e4a6aee29de89b367 with initial_snapshot.\r\n"] +[62.97488922119194, "o", "Image production_data:d2a2ff2a377dfab1ea915391689f3fabbe7f830be225164e4a6aee29de89b367\r\n"] +[62.975359621048504, "o", "\r\nCreated at 2021-07-26T09:47:11.423058\r\n"] +[62.976553859711224, "o", "Size: 1.11 KiB\r\n"] +[62.97660345077568, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n"] +[62.97696179390007, "o", "\r\n"] +[62.977060260773236, "o", "Tables:\r\n"] +[62.97777050972038, "o", " customers\r\n orders\r\n"] +[63.00777050972038, "o", "\u001b[1m"] +[63.03777050972038, "o", "\u001b[36m"] +[63.06777050972038, "o", "\u001b[91m"] +[63.097770509720384, "o", "$"] +[63.127770509720385, "o", " "] +[63.157770509720386, "o", "\u001b[0m"] +[68.1877705097204, "o", "\u001b[H"] +[68.2177705097204, "o", "\u001b[J"] +[68.2477705097204, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make a change on the origin database"] +[68.2777705097204, "o", "\r\n"] +[68.3077705097204, "o", "$"] +[68.3377705097204, "o", " "] +[68.3677705097204, "o", "s"] +[68.3977705097204, "o", "g"] +[68.4277705097204, "o", "r"] +[68.4577705097204, "o", " "] +[68.4877705097204, "o", "s"] +[68.5177705097204, "o", "q"] +[68.54777050972041, "o", "l"] +[68.57777050972041, "o", " "] +[68.60777050972041, "o", "-"] +[68.63777050972041, "o", "r"] +[68.66777050972041, "o", " "] +[68.69777050972041, "o", "o"] +[68.72777050972041, "o", "r"] +[68.75777050972042, "o", "i"] +[68.78777050972042, "o", "g"] +[68.81777050972042, "o", "i"] +[68.84777050972042, "o", "n"] +[68.87777050972042, "o", " "] +[68.90777050972042, "o", "-"] +[68.93777050972042, "o", "s"] +[68.96777050972042, "o", " "] +[68.99777050972043, "o", "p"] +[69.02777050972043, "o", "r"] +[69.05777050972043, "o", "o"] +[69.08777050972043, "o", "d"] +[69.11777050972043, "o", "u"] +[69.14777050972043, "o", "c"] +[69.17777050972043, "o", "t"] +[69.20777050972043, "o", "i"] +[69.23777050972043, "o", "o"] +[69.26777050972044, "o", "n"] +[69.29777050972044, "o", "_"] +[69.32777050972044, "o", "d"] +[69.35777050972044, "o", "a"] +[69.38777050972044, "o", "t"] +[69.41777050972044, "o", "a"] +[69.44777050972044, "o", " "] +[69.47777050972044, "o", "\""] +[69.50777050972044, "o", "U"] +[69.53777050972045, "o", "P"] +[69.56777050972045, "o", "D"] +[69.59777050972045, "o", "A"] +[69.62777050972045, "o", "T"] +[69.65777050972045, "o", "E"] +[69.68777050972045, "o", " "] +[69.71777050972045, "o", "o"] +[69.74777050972045, "o", "r"] +[69.77777050972045, "o", "d"] +[69.80777050972046, "o", "e"] +[69.83777050972046, "o", "r"] +[69.86777050972046, "o", "s"] +[69.89777050972046, "o", " "] +[69.92777050972046, "o", "\\"] +[69.95777050972046, "o", "\r\n "] +[69.98777050972046, "o", "S"] +[70.01777050972046, "o", "E"] +[70.04777050972046, "o", "T"] +[70.07777050972047, "o", " "] +[70.10777050972047, "o", "q"] +[70.13777050972047, "o", "u"] +[70.16777050972047, "o", "a"] +[70.19777050972047, "o", "n"] +[70.22777050972047, "o", "t"] +[70.25777050972047, "o", "i"] +[70.28777050972047, "o", "t"] +[70.31777050972048, "o", "y"] +[70.34777050972048, "o", " "] +[70.37777050972048, "o", "="] +[70.40777050972048, "o", " "] +[70.43777050972048, "o", "q"] +[70.46777050972048, "o", "u"] +[70.49777050972048, "o", "a"] +[70.52777050972048, "o", "n"] +[70.55777050972048, "o", "t"] +[70.58777050972049, "o", "i"] +[70.61777050972049, "o", "t"] +[70.64777050972049, "o", "y"] +[70.67777050972049, "o", " "] +[70.70777050972049, "o", "+"] +[70.73777050972049, "o", " "] +[70.76777050972049, "o", "5"] +[70.7977705097205, "o", " "] +[70.8277705097205, "o", "W"] +[70.8577705097205, "o", "H"] +[70.8877705097205, "o", "E"] +[70.9177705097205, "o", "R"] +[70.9477705097205, "o", "E"] +[70.9777705097205, "o", " "] +[71.0077705097205, "o", "i"] +[71.0377705097205, "o", "d"] +[71.0677705097205, "o", " "] +[71.0977705097205, "o", "="] +[71.1277705097205, "o", " "] +[71.1577705097205, "o", "2"] +[71.18777050972051, "o", ";"] +[71.21777050972051, "o", " "] +[71.24777050972051, "o", "\\"] +[71.27777050972051, "o", "\r\n "] +[71.30777050972051, "o", "D"] +[71.33777050972051, "o", "E"] +[71.36777050972051, "o", "L"] +[71.39777050972052, "o", "E"] +[71.42777050972052, "o", "T"] +[71.45777050972052, "o", "E"] +[71.48777050972052, "o", " "] +[71.51777050972052, "o", "F"] +[71.54777050972052, "o", "R"] +[71.57777050972052, "o", "O"] +[71.60777050972052, "o", "M"] +[71.63777050972053, "o", " "] +[71.66777050972053, "o", "o"] +[71.69777050972053, "o", "r"] +[71.72777050972053, "o", "d"] +[71.75777050972053, "o", "e"] +[71.78777050972053, "o", "r"] +[71.81777050972053, "o", "s"] +[71.84777050972053, "o", " "] +[71.87777050972053, "o", "W"] +[71.90777050972054, "o", "H"] +[71.93777050972054, "o", "E"] +[71.96777050972054, "o", "R"] +[71.99777050972054, "o", "E"] +[72.02777050972054, "o", " "] +[72.05777050972054, "o", "i"] +[72.08777050972054, "o", "d"] +[72.11777050972054, "o", " "] +[72.14777050972054, "o", "="] +[72.17777050972055, "o", " "] +[72.20777050972055, "o", "5"] +[72.23777050972055, "o", ";"] +[72.26777050972055, "o", " "] +[72.29777050972055, "o", "\\"] +[72.32777050972055, "o", "\r\n "] +[72.35777050972055, "o", "I"] +[72.38777050972055, "o", "N"] +[72.41777050972055, "o", "S"] +[72.44777050972056, "o", "E"] +[72.47777050972056, "o", "R"] +[72.50777050972056, "o", "T"] +[72.53777050972056, "o", " "] +[72.56777050972056, "o", "I"] +[72.59777050972056, "o", "N"] +[72.62777050972056, "o", "T"] +[72.65777050972056, "o", "O"] +[72.68777050972056, "o", " "] +[72.71777050972057, "o", "c"] +[72.74777050972057, "o", "u"] +[72.77777050972057, "o", "s"] +[72.80777050972057, "o", "t"] +[72.83777050972057, "o", "o"] +[72.86777050972057, "o", "m"] +[72.89777050972057, "o", "e"] +[72.92777050972057, "o", "r"] +[72.95777050972058, "o", "s"] +[72.98777050972058, "o", " "] +[73.01777050972058, "o", "("] +[73.04777050972058, "o", "n"] +[73.07777050972058, "o", "a"] +[73.10777050972058, "o", "m"] +[73.13777050972058, "o", "e"] +[73.16777050972058, "o", ","] +[73.19777050972058, "o", " "] +[73.22777050972059, "o", "r"] +[73.25777050972059, "o", "e"] +[73.28777050972059, "o", "g"] +[73.31777050972059, "o", "i"] +[73.34777050972059, "o", "s"] +[73.37777050972059, "o", "t"] +[73.40777050972059, "o", "r"] +[73.4377705097206, "o", "a"] +[73.4677705097206, "o", "t"] +[73.4977705097206, "o", "i"] +[73.5277705097206, "o", "o"] +[73.5577705097206, "o", "n"] +[73.5877705097206, "o", "_"] +[73.6177705097206, "o", "t"] +[73.6477705097206, "o", "i"] +[73.6777705097206, "o", "m"] +[73.7077705097206, "o", "e"] +[73.7377705097206, "o", ")"] +[73.7677705097206, "o", " "] +[73.7977705097206, "o", "V"] +[73.82777050972061, "o", "A"] +[73.85777050972061, "o", "L"] +[73.88777050972061, "o", "U"] +[73.91777050972061, "o", "E"] +[73.94777050972061, "o", "S"] +[73.97777050972061, "o", " "] +[74.00777050972061, "o", "\\"] +[74.03777050972062, "o", "\r\n "] +[74.06777050972062, "o", "("] +[74.09777050972062, "o", "'"] +[74.12777050972062, "o", "J"] +[74.15777050972062, "o", "a"] +[74.18777050972062, "o", "c"] +[74.21777050972062, "o", "k"] +[74.24777050972062, "o", " "] +[74.27777050972063, "o", "S"] +[74.30777050972063, "o", "a"] +[74.33777050972063, "o", "m"] +[74.36777050972063, "o", "p"] +[74.39777050972063, "o", "l"] +[74.42777050972063, "o", "e"] +[74.45777050972063, "o", "'"] +[74.48777050972063, "o", ","] +[74.51777050972063, "o", " "] +[74.54777050972064, "o", "'"] +[74.57777050972064, "o", "2"] +[74.60777050972064, "o", "0"] +[74.63777050972064, "o", "2"] +[74.66777050972064, "o", "0"] +[74.69777050972064, "o", "-"] +[74.72777050972064, "o", "0"] +[74.75777050972064, "o", "4"] +[74.78777050972064, "o", "-"] +[74.81777050972065, "o", "2"] +[74.84777050972065, "o", "0"] +[74.87777050972065, "o", " "] +[74.90777050972065, "o", "1"] +[74.93777050972065, "o", "4"] +[74.96777050972065, "o", ":"] +[74.99777050972065, "o", "0"] +[75.02777050972065, "o", "3"] +[75.05777050972065, "o", ":"] +[75.08777050972066, "o", "4"] +[75.11777050972066, "o", "8"] +[75.14777050972066, "o", "'"] +[75.17777050972066, "o", ")"] +[75.20777050972066, "o", ";"] +[75.23777050972066, "o", " "] +[75.26777050972066, "o", "\\"] +[75.29777050972066, "o", "\r\n "] +[75.32777050972066, "o", "I"] +[75.35777050972067, "o", "N"] +[75.38777050972067, "o", "S"] +[75.41777050972067, "o", "E"] +[75.44777050972067, "o", "R"] +[75.47777050972067, "o", "T"] +[75.50777050972067, "o", " "] +[75.53777050972067, "o", "I"] +[75.56777050972067, "o", "N"] +[75.59777050972068, "o", "T"] +[75.62777050972068, "o", "O"] +[75.65777050972068, "o", " "] +[75.68777050972068, "o", "o"] +[75.71777050972068, "o", "r"] +[75.74777050972068, "o", "d"] +[75.77777050972068, "o", "e"] +[75.80777050972068, "o", "r"] +[75.83777050972068, "o", "s"] +[75.86777050972069, "o", " "] +[75.89777050972069, "o", "("] +[75.92777050972069, "o", "c"] +[75.95777050972069, "o", "u"] +[75.98777050972069, "o", "s"] +[76.01777050972069, "o", "t"] +[76.04777050972069, "o", "o"] +[76.0777705097207, "o", "m"] +[76.1077705097207, "o", "e"] +[76.1377705097207, "o", "r"] +[76.1677705097207, "o", "_"] +[76.1977705097207, "o", "i"] +[76.2277705097207, "o", "d"] +[76.2577705097207, "o", ","] +[76.2877705097207, "o", " "] +[76.3177705097207, "o", "q"] +[76.3477705097207, "o", "u"] +[76.3777705097207, "o", "a"] +[76.4077705097207, "o", "n"] +[76.4377705097207, "o", "t"] +[76.46777050972071, "o", "i"] +[76.49777050972071, "o", "t"] +[76.52777050972071, "o", "y"] +[76.55777050972071, "o", ","] +[76.58777050972071, "o", " "] +[76.61777050972071, "o", "i"] +[76.64777050972071, "o", "t"] +[76.67777050972072, "o", "e"] +[76.70777050972072, "o", "m"] +[76.73777050972072, "o", "_"] +[76.76777050972072, "o", "n"] +[76.79777050972072, "o", "a"] +[76.82777050972072, "o", "m"] +[76.85777050972072, "o", "e"] +[76.88777050972072, "o", ","] +[76.91777050972073, "o", " "] +[76.94777050972073, "o", "p"] +[76.97777050972073, "o", "l"] +[77.00777050972073, "o", "a"] +[77.03777050972073, "o", "c"] +[77.06777050972073, "o", "e"] +[77.09777050972073, "o", "d"] +[77.12777050972073, "o", "_"] +[77.15777050972073, "o", "t"] +[77.18777050972074, "o", "i"] +[77.21777050972074, "o", "m"] +[77.24777050972074, "o", "e"] +[77.27777050972074, "o", ")"] +[77.30777050972074, "o", " "] +[77.33777050972074, "o", "V"] +[77.36777050972074, "o", "A"] +[77.39777050972074, "o", "L"] +[77.42777050972074, "o", "U"] +[77.45777050972075, "o", "E"] +[77.48777050972075, "o", "S"] +[77.51777050972075, "o", " "] +[77.54777050972075, "o", "\\"] +[77.57777050972075, "o", "\r\n "] +[77.60777050972075, "o", "("] +[77.63777050972075, "o", "4"] +[77.66777050972075, "o", ","] +[77.69777050972075, "o", " "] +[77.72777050972076, "o", "5"] +[77.75777050972076, "o", ","] +[77.78777050972076, "o", " "] +[77.81777050972076, "o", "'"] +[77.84777050972076, "o", "T"] +[77.87777050972076, "o", "o"] +[77.90777050972076, "o", "i"] +[77.93777050972076, "o", "l"] +[77.96777050972076, "o", "e"] +[77.99777050972077, "o", "t"] +[78.02777050972077, "o", " "] +[78.05777050972077, "o", "R"] +[78.08777050972077, "o", "o"] +[78.11777050972077, "o", "l"] +[78.14777050972077, "o", "l"] +[78.17777050972077, "o", "'"] +[78.20777050972077, "o", ","] +[78.23777050972078, "o", " "] +[78.26777050972078, "o", "'"] +[78.29777050972078, "o", "2"] +[78.32777050972078, "o", "0"] +[78.35777050972078, "o", "2"] +[78.38777050972078, "o", "0"] +[78.41777050972078, "o", "-"] +[78.44777050972078, "o", "0"] +[78.47777050972078, "o", "4"] +[78.50777050972079, "o", "-"] +[78.53777050972079, "o", "2"] +[78.56777050972079, "o", "0"] +[78.59777050972079, "o", " "] +[78.62777050972079, "o", "1"] +[78.65777050972079, "o", "4"] +[78.68777050972079, "o", ":"] +[78.7177705097208, "o", "0"] +[78.7477705097208, "o", "5"] +[78.7777705097208, "o", ":"] +[78.8077705097208, "o", "1"] +[78.8377705097208, "o", "7"] +[78.8677705097208, "o", "'"] +[78.8977705097208, "o", ")"] +[78.9277705097208, "o", ";"] +[78.9577705097208, "o", "\""] +[78.9877705097208, "o", "\r\n"] +[79.0177705097208, "o", "\u001b[0m"] +[79.0477705097208, "o", "\r\n"] +[79.0777705097208, "o", "\u001b[1m"] +[79.10777050972081, "o", "\u001b[36m"] +[79.13777050972081, "o", "\u001b[91m"] +[79.16777050972081, "o", "$"] +[79.19777050972081, "o", " "] +[79.22777050972081, "o", "\u001b[0m"] +[84.25777050972081, "o", "\u001b[H"] +[84.28777050972081, "o", "\u001b[J"] +[84.31777050972082, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The change propagates to the subscriber and gets"] +[84.34777050972082, "o", "\r\n"] +[84.37777050972082, "o", "$ # captured by Splitgraph's change tracking\r\n"] +[84.40777050972082, "o", "$"] +[84.43777050972082, "o", " "] +[84.46777050972082, "o", "s"] +[84.49777050972082, "o", "g"] +[84.52777050972082, "o", "r"] +[84.55777050972083, "o", " "] +[84.58777050972083, "o", "d"] +[84.61777050972083, "o", "i"] +[84.64777050972083, "o", "f"] +[84.67777050972083, "o", "f"] +[84.70777050972083, "o", " "] +[84.73777050972083, "o", "-"] +[84.76777050972083, "o", "v"] +[84.79777050972083, "o", " "] +[84.82777050972084, "o", "p"] +[84.85777050972084, "o", "r"] +[84.88777050972084, "o", "o"] +[84.91777050972084, "o", "d"] +[84.94777050972084, "o", "u"] +[84.97777050972084, "o", "c"] +[85.00777050972084, "o", "t"] +[85.03777050972084, "o", "i"] +[85.06777050972084, "o", "o"] +[85.09777050972085, "o", "n"] +[85.12777050972085, "o", "_"] +[85.15777050972085, "o", "d"] +[85.18777050972085, "o", "a"] +[85.21777050972085, "o", "t"] +[85.24777050972085, "o", "a"] +[85.27777050972085, "o", "\r\n"] +[85.30777050972085, "o", "\u001b[0m"] +[85.33777050972085, "o", "\r\n"] +[85.86808733940225, "o", "Between d2a2ff2a377d and the current working copy: \r\n"] +[85.86832456588846, "o", "customers: added 1 row.\r\n+ (4, 'Jack Sample', datetime.datetime(2020, 4, 20, 14, 3, 48))\r\norders: added 2 rows, removed 2 rows.\r\n- (2, 1, 20, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n- (5, 1, 50, 'Surgical Mask', datetime.datetime(2020, 4, 2, 11, 29, 42))\r\n+ (2, 1, 25, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n+ (6, 4, 5, 'Toilet Roll', datetime.datetime(2020, 4, 20, 14, 5, 17))\r\n"] +[85.89832456588846, "o", "\u001b[1m"] +[85.92832456588846, "o", "\u001b[36m"] +[85.95832456588846, "o", "\u001b[91m"] +[85.98832456588846, "o", "$"] +[86.01832456588846, "o", " "] +[86.04832456588846, "o", "\u001b[0m"] +[91.07832456588847, "o", "\u001b[H"] +[91.10832456588847, "o", "\u001b[J"] +[91.13832456588847, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Committing creates a new image, snapshotting the state."] +[91.16832456588847, "o", "\r\n"] +[91.19832456588847, "o", "$"] +[91.22832456588847, "o", " "] +[91.25832456588847, "o", "s"] +[91.28832456588847, "o", "g"] +[91.31832456588847, "o", "r"] +[91.34832456588848, "o", " "] +[91.37832456588848, "o", "c"] +[91.40832456588848, "o", "o"] +[91.43832456588848, "o", "m"] +[91.46832456588848, "o", "m"] +[91.49832456588848, "o", "i"] +[91.52832456588848, "o", "t"] +[91.55832456588848, "o", " "] +[91.58832456588848, "o", "p"] +[91.61832456588849, "o", "r"] +[91.64832456588849, "o", "o"] +[91.67832456588849, "o", "d"] +[91.70832456588849, "o", "u"] +[91.73832456588849, "o", "c"] +[91.76832456588849, "o", "t"] +[91.79832456588849, "o", "i"] +[91.8283245658885, "o", "o"] +[91.8583245658885, "o", "n"] +[91.8883245658885, "o", "_"] +[91.9183245658885, "o", "d"] +[91.9483245658885, "o", "a"] +[91.9783245658885, "o", "t"] +[92.0083245658885, "o", "a"] +[92.0383245658885, "o", "\r\n"] +[92.0683245658885, "o", "$"] +[92.0983245658885, "o", " "] +[92.1283245658885, "o", "s"] +[92.1583245658885, "o", "g"] +[92.18832456588851, "o", "r"] +[92.21832456588851, "o", " "] +[92.24832456588851, "o", "t"] +[92.27832456588851, "o", "a"] +[92.30832456588851, "o", "g"] +[92.33832456588851, "o", " "] +[92.36832456588851, "o", "p"] +[92.39832456588852, "o", "r"] +[92.42832456588852, "o", "o"] +[92.45832456588852, "o", "d"] +[92.48832456588852, "o", "u"] +[92.51832456588852, "o", "c"] +[92.54832456588852, "o", "t"] +[92.57832456588852, "o", "i"] +[92.60832456588852, "o", "o"] +[92.63832456588852, "o", "n"] +[92.66832456588853, "o", "_"] +[92.69832456588853, "o", "d"] +[92.72832456588853, "o", "a"] +[92.75832456588853, "o", "t"] +[92.78832456588853, "o", "a"] +[92.81832456588853, "o", " "] +[92.84832456588853, "o", "c"] +[92.87832456588853, "o", "u"] +[92.90832456588853, "o", "r"] +[92.93832456588854, "o", "r"] +[92.96832456588854, "o", "e"] +[92.99832456588854, "o", "n"] +[93.02832456588854, "o", "t"] +[93.05832456588854, "o", "_"] +[93.08832456588854, "o", "s"] +[93.11832456588854, "o", "n"] +[93.14832456588854, "o", "a"] +[93.17832456588854, "o", "p"] +[93.20832456588855, "o", "s"] +[93.23832456588855, "o", "h"] +[93.26832456588855, "o", "o"] +[93.29832456588855, "o", "t"] +[93.32832456588855, "o", "\r\n"] +[93.35832456588855, "o", "$"] +[93.38832456588855, "o", " "] +[93.41832456588855, "o", "s"] +[93.44832456588856, "o", "g"] +[93.47832456588856, "o", "r"] +[93.50832456588856, "o", " "] +[93.53832456588856, "o", "s"] +[93.56832456588856, "o", "h"] +[93.59832456588856, "o", "o"] +[93.62832456588856, "o", "w"] +[93.65832456588856, "o", " "] +[93.68832456588856, "o", "p"] +[93.71832456588857, "o", "r"] +[93.74832456588857, "o", "o"] +[93.77832456588857, "o", "d"] +[93.80832456588857, "o", "u"] +[93.83832456588857, "o", "c"] +[93.86832456588857, "o", "t"] +[93.89832456588857, "o", "i"] +[93.92832456588857, "o", "o"] +[93.95832456588857, "o", "n"] +[93.98832456588858, "o", "_"] +[94.01832456588858, "o", "d"] +[94.04832456588858, "o", "a"] +[94.07832456588858, "o", "t"] +[94.10832456588858, "o", "a"] +[94.13832456588858, "o", ":"] +[94.16832456588858, "o", "c"] +[94.19832456588858, "o", "u"] +[94.22832456588858, "o", "r"] +[94.25832456588859, "o", "r"] +[94.28832456588859, "o", "e"] +[94.31832456588859, "o", "n"] +[94.34832456588859, "o", "t"] +[94.37832456588859, "o", "_"] +[94.40832456588859, "o", "s"] +[94.43832456588859, "o", "n"] +[94.4683245658886, "o", "a"] +[94.4983245658886, "o", "p"] +[94.5283245658886, "o", "s"] +[94.5583245658886, "o", "h"] +[94.5883245658886, "o", "o"] +[94.6183245658886, "o", "t"] +[94.6483245658886, "o", "\r\n"] +[94.6783245658886, "o", "\u001b[0m"] +[94.7083245658886, "o", "\r\n"] +[95.06489361763116, "o", "Committing production_data...\r\n"] +[95.09801091194268, "o", "Committed production_data as 1aabcb52feda.\r\n"] +[95.503125562669, "o", "Tagged production_data:1aabcb52feda2b913d42f570ee4d5319f2685589839a4310e6c36e0cc33c8c52 with current_snapshot.\r\n"] +[95.90335740089532, "o", "Image production_data:1aabcb52feda2b913d42f570ee4d5319f2685589839a4310e6c36e0cc33c8c52\r\n\r\nCreated at 2021-07-26T09:47:13.908579\r\n"] +[95.90501321792718, "o", "Size: 1.11 KiB"] +[95.90504540443536, "o", "\r\n"] +[95.90534128189202, "o", "Parent: d2a2ff2a377dfab1ea915391689f3fabbe7f830be225164e4a6aee29de89b367"] +[95.90537108421441, "o", "\r\n"] +[95.9058469676983, "o", "\r\n"] +[95.90607370376702, "o", "Tables:"] +[95.90610302925225, "o", "\r\n"] +[95.90693320274468, "o", " customers"] +[95.90698231697198, "o", "\r\n"] +[95.90733922958489, "o", " orders"] +[95.90736688614007, "o", "\r\n"] +[95.93736688614007, "o", "\u001b[1m"] +[95.96736688614007, "o", "\u001b[36m"] +[95.99736688614007, "o", "\u001b[91m"] +[96.02736688614007, "o", "$"] +[96.05736688614007, "o", " "] +[96.08736688614007, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.15/postgrest.cast b/content/casts/versioned/archive/v0.2.15/postgrest.cast new file mode 100644 index 00000000..b487f3cd --- /dev/null +++ b/content/casts/versioned/archive/v0.2.15/postgrest.cast @@ -0,0 +1,1116 @@ +{"version": 2, "width": 100, "height": 16, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1627292836, "metadata": {"tss": [{"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 0.06}, {"h": "Also create another image so we can switch between them.", "ts": 13.247268819808966}, {"h": "Check out the original version of the dataset and look at the API spec for it.", "ts": 26.130696849823103}, {"h": "Get all rows in the table", "ts": 37.91671499252349}, {"h": "Run a query selecting one row", "ts": 44.58833973884618}, {"h": "Run the query against the new version of the dataset.", "ts": 53.26280006408741}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "s"] +[0.24, "o", "g"] +[0.27, "o", "r"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "i"] +[0.3600000000000001, "o", "n"] +[0.3900000000000001, "o", "i"] +[0.42000000000000015, "o", "t"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "d"] +[0.5100000000000002, "o", "e"] +[0.5400000000000003, "o", "m"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "/"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "\r\n"] +[0.8700000000000006, "o", "$"] +[0.9000000000000006, "o", " "] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "g"] +[0.9900000000000007, "o", "r"] +[1.0200000000000007, "o", " "] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "s"] +[1.1100000000000008, "o", "v"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "i"] +[1.2000000000000008, "o", "m"] +[1.2300000000000009, "o", "p"] +[1.260000000000001, "o", "o"] +[1.290000000000001, "o", "r"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", " "] +[1.380000000000001, "o", "-"] +[1.410000000000001, "o", "f"] +[1.440000000000001, "o", " "] +[1.470000000000001, "o", "."] +[1.500000000000001, "o", "."] +[1.5300000000000011, "o", "/"] +[1.5600000000000012, "o", "i"] +[1.5900000000000012, "o", "m"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "o"] +[1.6800000000000013, "o", "r"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "-"] +[1.7700000000000014, "o", "f"] +[1.8000000000000014, "o", "r"] +[1.8300000000000014, "o", "o"] +[1.8600000000000014, "o", "m"] +[1.8900000000000015, "o", "-"] +[1.9200000000000015, "o", "c"] +[1.9500000000000015, "o", "s"] +[1.9800000000000015, "o", "v"] +[2.0100000000000016, "o", "/"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "d"] +[2.100000000000001, "o", "u"] +[2.130000000000001, "o", "-"] +[2.1600000000000006, "o", "w"] +[2.1900000000000004, "o", "e"] +[2.22, "o", "a"] +[2.25, "o", "t"] +[2.28, "o", "h"] +[2.3099999999999996, "o", "e"] +[2.3399999999999994, "o", "r"] +[2.369999999999999, "o", "-"] +[2.399999999999999, "o", "h"] +[2.429999999999999, "o", "i"] +[2.4599999999999986, "o", "s"] +[2.4899999999999984, "o", "t"] +[2.5199999999999982, "o", "o"] +[2.549999999999998, "o", "r"] +[2.579999999999998, "o", "y"] +[2.6099999999999977, "o", "."] +[2.6399999999999975, "o", "c"] +[2.6699999999999973, "o", "s"] +[2.699999999999997, "o", "v"] +[2.729999999999997, "o", " "] +[2.7599999999999967, "o", "\\"] +[2.7899999999999965, "o", "\r\n "] +[2.8199999999999963, "o", "-"] +[2.849999999999996, "o", "k"] +[2.879999999999996, "o", " "] +[2.9099999999999957, "o", "d"] +[2.9399999999999955, "o", "a"] +[2.9699999999999953, "o", "t"] +[2.999999999999995, "o", "e"] +[3.029999999999995, "o", " "] +[3.0599999999999947, "o", "\\"] +[3.0899999999999945, "o", "\r\n "] +[3.1199999999999943, "o", "-"] +[3.149999999999994, "o", "t"] +[3.179999999999994, "o", " "] +[3.2099999999999937, "o", "d"] +[3.2399999999999936, "o", "a"] +[3.2699999999999934, "o", "t"] +[3.299999999999993, "o", "e"] +[3.329999999999993, "o", " "] +[3.3599999999999928, "o", "t"] +[3.3899999999999926, "o", "i"] +[3.4199999999999924, "o", "m"] +[3.449999999999992, "o", "e"] +[3.479999999999992, "o", "s"] +[3.509999999999992, "o", "t"] +[3.5399999999999916, "o", "a"] +[3.5699999999999914, "o", "m"] +[3.599999999999991, "o", "p"] +[3.629999999999991, "o", " "] +[3.659999999999991, "o", "\\"] +[3.6899999999999906, "o", "\r\n "] +[3.7199999999999904, "o", "-"] +[3.7499999999999902, "o", "-"] +[3.77999999999999, "o", "s"] +[3.80999999999999, "o", "e"] +[3.8399999999999896, "o", "p"] +[3.8699999999999894, "o", "a"] +[3.8999999999999893, "o", "r"] +[3.929999999999989, "o", "a"] +[3.959999999999989, "o", "t"] +[3.9899999999999887, "o", "o"] +[4.019999999999989, "o", "r"] +[4.049999999999989, "o", " "] +[4.079999999999989, "o", "\""] +[4.10999999999999, "o", ";"] +[4.13999999999999, "o", "\""] +[4.16999999999999, "o", " "] +[4.19999999999999, "o", "\\"] +[4.229999999999991, "o", "\r\n "] +[4.259999999999991, "o", "d"] +[4.289999999999991, "o", "e"] +[4.319999999999991, "o", "m"] +[4.349999999999992, "o", "o"] +[4.379999999999992, "o", "/"] +[4.409999999999992, "o", "w"] +[4.439999999999992, "o", "e"] +[4.469999999999993, "o", "a"] +[4.499999999999993, "o", "t"] +[4.529999999999993, "o", "h"] +[4.559999999999993, "o", "e"] +[4.589999999999994, "o", "r"] +[4.619999999999994, "o", " "] +[4.649999999999994, "o", "r"] +[4.679999999999994, "o", "d"] +[4.709999999999995, "o", "u"] +[4.739999999999995, "o", "\r\n"] +[4.769999999999995, "o", "$"] +[4.799999999999995, "o", " "] +[4.829999999999996, "o", "s"] +[4.859999999999996, "o", "g"] +[4.889999999999996, "o", "r"] +[4.919999999999996, "o", " "] +[4.949999999999997, "o", "c"] +[4.979999999999997, "o", "o"] +[5.009999999999997, "o", "m"] +[5.039999999999997, "o", "m"] +[5.069999999999998, "o", "i"] +[5.099999999999998, "o", "t"] +[5.129999999999998, "o", " "] +[5.159999999999998, "o", "d"] +[5.189999999999999, "o", "e"] +[5.219999999999999, "o", "m"] +[5.249999999999999, "o", "o"] +[5.279999999999999, "o", "/"] +[5.31, "o", "w"] +[5.34, "o", "e"] +[5.37, "o", "a"] +[5.4, "o", "t"] +[5.430000000000001, "o", "h"] +[5.460000000000001, "o", "e"] +[5.490000000000001, "o", "r"] +[5.520000000000001, "o", "\r\n"] +[5.550000000000002, "o", "$"] +[5.580000000000002, "o", " "] +[5.610000000000002, "o", "s"] +[5.640000000000002, "o", "g"] +[5.670000000000003, "o", "r"] +[5.700000000000003, "o", " "] +[5.730000000000003, "o", "t"] +[5.760000000000003, "o", "a"] +[5.790000000000004, "o", "g"] +[5.820000000000004, "o", " "] +[5.850000000000004, "o", "d"] +[5.880000000000004, "o", "e"] +[5.910000000000005, "o", "m"] +[5.940000000000005, "o", "o"] +[5.970000000000005, "o", "/"] +[6.000000000000005, "o", "w"] +[6.030000000000006, "o", "e"] +[6.060000000000006, "o", "a"] +[6.090000000000006, "o", "t"] +[6.120000000000006, "o", "h"] +[6.150000000000007, "o", "e"] +[6.180000000000007, "o", "r"] +[6.210000000000007, "o", " "] +[6.240000000000007, "o", "i"] +[6.270000000000008, "o", "n"] +[6.300000000000008, "o", "i"] +[6.330000000000008, "o", "t"] +[6.360000000000008, "o", "i"] +[6.390000000000009, "o", "a"] +[6.420000000000009, "o", "l"] +[6.450000000000009, "o", "_"] +[6.480000000000009, "o", "d"] +[6.51000000000001, "o", "a"] +[6.54000000000001, "o", "t"] +[6.57000000000001, "o", "a"] +[6.60000000000001, "o", "\r\n"] +[6.6300000000000106, "o", "\u001b[0m"] +[6.660000000000011, "o", "\r\n"] +[7.059410724639903, "o", "Initialized empty repository demo/weather\r\n"] +[7.428184185028087, "o", "Committing demo/weather...\r\n"] +[7.452025089263927, "o", "Processing table rdu\r\n"] +[7.646212730407726, "o", "Committed demo/weather as 194e3d97859e.\r\n"] +[8.00726881980897, "o", "Tagged demo/weather:194e3d97859e50613ceb61cdc30512da00bbf10313e6cbee5f30cc1acd6a8a81 with initial_data.\r\n"] +[8.03726881980897, "o", "\u001b[1m"] +[8.06726881980897, "o", "\u001b[36m"] +[8.097268819808969, "o", "\u001b[91m"] +[8.127268819808968, "o", "$"] +[8.157268819808968, "o", " "] +[8.187268819808967, "o", "\u001b[0m"] +[13.217268819808966, "o", "\u001b[H"] +[13.247268819808966, "o", "\u001b[J"] +[13.277268819808965, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Also create another image so we can switch between them."] +[13.307268819808964, "o", "\r\n"] +[13.337268819808964, "o", "$"] +[13.367268819808963, "o", " "] +[13.397268819808962, "o", "s"] +[13.427268819808962, "o", "g"] +[13.457268819808961, "o", "r"] +[13.48726881980896, "o", " "] +[13.51726881980896, "o", "s"] +[13.54726881980896, "o", "q"] +[13.577268819808959, "o", "l"] +[13.607268819808958, "o", " "] +[13.637268819808957, "o", "-"] +[13.667268819808957, "o", "s"] +[13.697268819808956, "o", " "] +[13.727268819808955, "o", "d"] +[13.757268819808955, "o", "e"] +[13.787268819808954, "o", "m"] +[13.817268819808953, "o", "o"] +[13.847268819808953, "o", "/"] +[13.877268819808952, "o", "w"] +[13.907268819808952, "o", "e"] +[13.937268819808951, "o", "a"] +[13.96726881980895, "o", "t"] +[13.99726881980895, "o", "h"] +[14.027268819808949, "o", "e"] +[14.057268819808948, "o", "r"] +[14.087268819808948, "o", " "] +[14.117268819808947, "o", "\""] +[14.147268819808946, "o", "U"] +[14.177268819808946, "o", "P"] +[14.207268819808945, "o", "D"] +[14.237268819808945, "o", "A"] +[14.267268819808944, "o", "T"] +[14.297268819808943, "o", "E"] +[14.327268819808943, "o", " "] +[14.357268819808942, "o", "r"] +[14.387268819808941, "o", "d"] +[14.41726881980894, "o", "u"] +[14.44726881980894, "o", " "] +[14.47726881980894, "o", "S"] +[14.507268819808939, "o", "E"] +[14.537268819808938, "o", "T"] +[14.567268819808938, "o", " "] +[14.597268819808937, "o", "p"] +[14.627268819808936, "o", "r"] +[14.657268819808936, "o", "e"] +[14.687268819808935, "o", "c"] +[14.717268819808934, "o", "i"] +[14.747268819808934, "o", "p"] +[14.777268819808933, "o", "i"] +[14.807268819808932, "o", "t"] +[14.837268819808932, "o", "a"] +[14.867268819808931, "o", "t"] +[14.89726881980893, "o", "i"] +[14.92726881980893, "o", "o"] +[14.95726881980893, "o", "n"] +[14.987268819808929, "o", " "] +[15.017268819808928, "o", "="] +[15.047268819808927, "o", " "] +[15.077268819808927, "o", "p"] +[15.107268819808926, "o", "r"] +[15.137268819808925, "o", "e"] +[15.167268819808925, "o", "c"] +[15.197268819808924, "o", "i"] +[15.227268819808923, "o", "p"] +[15.257268819808923, "o", "i"] +[15.287268819808922, "o", "t"] +[15.317268819808922, "o", "a"] +[15.34726881980892, "o", "t"] +[15.37726881980892, "o", "i"] +[15.40726881980892, "o", "o"] +[15.437268819808919, "o", "n"] +[15.467268819808918, "o", " "] +[15.497268819808918, "o", "*"] +[15.527268819808917, "o", " "] +[15.557268819808916, "o", "1"] +[15.587268819808916, "o", "."] +[15.617268819808915, "o", "2"] +[15.647268819808914, "o", " "] +[15.677268819808914, "o", "W"] +[15.707268819808913, "o", "H"] +[15.737268819808913, "o", "E"] +[15.767268819808912, "o", "R"] +[15.797268819808911, "o", "E"] +[15.82726881980891, "o", " "] +[15.85726881980891, "o", "E"] +[15.88726881980891, "o", "X"] +[15.917268819808909, "o", "T"] +[15.947268819808908, "o", "R"] +[15.977268819808907, "o", "A"] +[16.007268819808907, "o", "C"] +[16.037268819808908, "o", "T"] +[16.06726881980891, "o", " "] +[16.09726881980891, "o", "("] +[16.12726881980891, "o", "y"] +[16.157268819808912, "o", "e"] +[16.187268819808914, "o", "a"] +[16.217268819808915, "o", "r"] +[16.247268819808916, "o", " "] +[16.277268819808917, "o", "F"] +[16.307268819808918, "o", "R"] +[16.33726881980892, "o", "O"] +[16.36726881980892, "o", "M"] +[16.39726881980892, "o", " "] +[16.427268819808923, "o", "d"] +[16.457268819808924, "o", "a"] +[16.487268819808925, "o", "t"] +[16.517268819808926, "o", "e"] +[16.547268819808927, "o", ")"] +[16.57726881980893, "o", " "] +[16.60726881980893, "o", "="] +[16.63726881980893, "o", " "] +[16.667268819808932, "o", "2"] +[16.697268819808933, "o", "0"] +[16.727268819808934, "o", "1"] +[16.757268819808935, "o", "2"] +[16.787268819808936, "o", "\""] +[16.817268819808938, "o", "\r\n"] +[16.84726881980894, "o", "$"] +[16.87726881980894, "o", " "] +[16.90726881980894, "o", "s"] +[16.937268819808942, "o", "g"] +[16.967268819808943, "o", "r"] +[16.997268819808944, "o", " "] +[17.027268819808945, "o", "c"] +[17.057268819808947, "o", "o"] +[17.087268819808948, "o", "m"] +[17.11726881980895, "o", "m"] +[17.14726881980895, "o", "i"] +[17.17726881980895, "o", "t"] +[17.207268819808952, "o", " "] +[17.237268819808953, "o", "-"] +[17.267268819808955, "o", "m"] +[17.297268819808956, "o", " "] +[17.327268819808957, "o", "\""] +[17.357268819808958, "o", "R"] +[17.38726881980896, "o", "e"] +[17.41726881980896, "o", "v"] +[17.44726881980896, "o", "i"] +[17.477268819808963, "o", "s"] +[17.507268819808964, "o", "i"] +[17.537268819808965, "o", "o"] +[17.567268819808966, "o", "n"] +[17.597268819808967, "o", " "] +[17.627268819808968, "o", "t"] +[17.65726881980897, "o", "o"] +[17.68726881980897, "o", " "] +[17.71726881980897, "o", "t"] +[17.747268819808973, "o", "h"] +[17.777268819808974, "o", "e"] +[17.807268819808975, "o", " "] +[17.837268819808976, "o", "2"] +[17.867268819808977, "o", "0"] +[17.89726881980898, "o", "1"] +[17.92726881980898, "o", "2"] +[17.95726881980898, "o", " "] +[17.987268819808982, "o", "r"] +[18.017268819808983, "o", "a"] +[18.047268819808984, "o", "i"] +[18.077268819808985, "o", "n"] +[18.107268819808986, "o", "f"] +[18.137268819808988, "o", "a"] +[18.16726881980899, "o", "l"] +[18.19726881980899, "o", "l"] +[18.22726881980899, "o", " "] +[18.257268819808992, "o", "d"] +[18.287268819808993, "o", "a"] +[18.317268819808994, "o", "t"] +[18.347268819808995, "o", "a"] +[18.377268819808997, "o", "\""] +[18.407268819808998, "o", " "] +[18.437268819809, "o", "d"] +[18.467268819809, "o", "e"] +[18.497268819809, "o", "m"] +[18.527268819809002, "o", "o"] +[18.557268819809003, "o", "/"] +[18.587268819809005, "o", "w"] +[18.617268819809006, "o", "e"] +[18.647268819809007, "o", "a"] +[18.677268819809008, "o", "t"] +[18.70726881980901, "o", "h"] +[18.73726881980901, "o", "e"] +[18.76726881980901, "o", "r"] +[18.797268819809013, "o", "\r\n"] +[18.827268819809014, "o", "$"] +[18.857268819809015, "o", " "] +[18.887268819809016, "o", "s"] +[18.917268819809017, "o", "g"] +[18.94726881980902, "o", "r"] +[18.97726881980902, "o", " "] +[19.00726881980902, "o", "t"] +[19.03726881980902, "o", "a"] +[19.067268819809023, "o", "g"] +[19.097268819809024, "o", " "] +[19.127268819809025, "o", "d"] +[19.157268819809026, "o", "e"] +[19.187268819809027, "o", "m"] +[19.21726881980903, "o", "o"] +[19.24726881980903, "o", "/"] +[19.27726881980903, "o", "w"] +[19.307268819809032, "o", "e"] +[19.337268819809033, "o", "a"] +[19.367268819809034, "o", "t"] +[19.397268819809035, "o", "h"] +[19.427268819809036, "o", "e"] +[19.457268819809038, "o", "r"] +[19.48726881980904, "o", " "] +[19.51726881980904, "o", "r"] +[19.54726881980904, "o", "e"] +[19.577268819809042, "o", "v"] +[19.607268819809043, "o", "i"] +[19.637268819809044, "o", "s"] +[19.667268819809046, "o", "e"] +[19.697268819809047, "o", "d"] +[19.727268819809048, "o", "_"] +[19.75726881980905, "o", "d"] +[19.78726881980905, "o", "a"] +[19.81726881980905, "o", "t"] +[19.847268819809052, "o", "a"] +[19.877268819809053, "o", "\r\n"] +[19.907268819809055, "o", "\u001b[0m"] +[19.937268819809056, "o", "\r\n"] +[20.325380649566746, "o", "Committing demo/weather...\r\n"] +[20.36113056182871, "o", "Storing and indexing table rdu\r\n"] +[20.526457633972264, "o", "Committed demo/weather as f16888454d22.\r\n"] +[20.890696849823094, "o", "Tagged demo/weather:f16888454d22231e5944480f7af6d52ae1f4c97bfdd0b68524dbf9dfcd1a5d8f with revised_data.\r\n"] +[20.920696849823095, "o", "\u001b[1m"] +[20.950696849823096, "o", "\u001b[36m"] +[20.980696849823097, "o", "\u001b[91m"] +[21.0106968498231, "o", "$"] +[21.0406968498231, "o", " "] +[21.0706968498231, "o", "\u001b[0m"] +[26.100696849823102, "o", "\u001b[H"] +[26.130696849823103, "o", "\u001b[J"] +[26.160696849823104, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the original version of the dataset and look at the API spec for it."] +[26.190696849823105, "o", "\r\n"] +[26.220696849823106, "o", "$ # For this, we need to restart PostgREST so that it picks up the new schema.\r\n"] +[26.250696849823107, "o", "$"] +[26.28069684982311, "o", " "] +[26.31069684982311, "o", "d"] +[26.34069684982311, "o", "o"] +[26.370696849823112, "o", "c"] +[26.400696849823113, "o", "k"] +[26.430696849823114, "o", "e"] +[26.460696849823115, "o", "r"] +[26.490696849823117, "o", "-"] +[26.520696849823118, "o", "c"] +[26.55069684982312, "o", "o"] +[26.58069684982312, "o", "m"] +[26.61069684982312, "o", "p"] +[26.640696849823122, "o", "o"] +[26.670696849823123, "o", "s"] +[26.700696849823125, "o", "e"] +[26.730696849823126, "o", " "] +[26.760696849823127, "o", "-"] +[26.790696849823128, "o", "-"] +[26.82069684982313, "o", "p"] +[26.85069684982313, "o", "r"] +[26.88069684982313, "o", "o"] +[26.910696849823132, "o", "j"] +[26.940696849823134, "o", "e"] +[26.970696849823135, "o", "c"] +[27.000696849823136, "o", "t"] +[27.030696849823137, "o", "-"] +[27.060696849823138, "o", "n"] +[27.09069684982314, "o", "a"] +[27.12069684982314, "o", "m"] +[27.15069684982314, "o", "e"] +[27.180696849823143, "o", " "] +[27.210696849823144, "o", "s"] +[27.240696849823145, "o", "p"] +[27.270696849823146, "o", "l"] +[27.300696849823147, "o", "i"] +[27.33069684982315, "o", "t"] +[27.36069684982315, "o", "g"] +[27.39069684982315, "o", "r"] +[27.420696849823152, "o", "a"] +[27.450696849823153, "o", "p"] +[27.480696849823154, "o", "h"] +[27.510696849823155, "o", "_"] +[27.540696849823156, "o", "e"] +[27.570696849823157, "o", "x"] +[27.60069684982316, "o", "a"] +[27.63069684982316, "o", "m"] +[27.66069684982316, "o", "p"] +[27.690696849823162, "o", "l"] +[27.720696849823163, "o", "e"] +[27.750696849823164, "o", " "] +[27.780696849823165, "o", "r"] +[27.810696849823167, "o", "e"] +[27.840696849823168, "o", "s"] +[27.87069684982317, "o", "t"] +[27.90069684982317, "o", "a"] +[27.93069684982317, "o", "r"] +[27.960696849823172, "o", "t"] +[27.990696849823173, "o", " "] +[28.020696849823175, "o", "p"] +[28.050696849823176, "o", "o"] +[28.080696849823177, "o", "s"] +[28.110696849823178, "o", "t"] +[28.14069684982318, "o", "g"] +[28.17069684982318, "o", "r"] +[28.20069684982318, "o", "e"] +[28.230696849823183, "o", "s"] +[28.260696849823184, "o", "t"] +[28.290696849823185, "o", "\r\n"] +[28.320696849823186, "o", "$"] +[28.350696849823187, "o", " "] +[28.380696849823188, "o", "s"] +[28.41069684982319, "o", "g"] +[28.44069684982319, "o", "r"] +[28.47069684982319, "o", " "] +[28.500696849823193, "o", "c"] +[28.530696849823194, "o", "h"] +[28.560696849823195, "o", "e"] +[28.590696849823196, "o", "c"] +[28.620696849823197, "o", "k"] +[28.6506968498232, "o", "o"] +[28.6806968498232, "o", "u"] +[28.7106968498232, "o", "t"] +[28.740696849823202, "o", " "] +[28.770696849823203, "o", "d"] +[28.800696849823204, "o", "e"] +[28.830696849823205, "o", "m"] +[28.860696849823206, "o", "o"] +[28.890696849823208, "o", "/"] +[28.92069684982321, "o", "w"] +[28.95069684982321, "o", "e"] +[28.98069684982321, "o", "a"] +[29.010696849823212, "o", "t"] +[29.040696849823213, "o", "h"] +[29.070696849823214, "o", "e"] +[29.100696849823215, "o", "r"] +[29.130696849823217, "o", ":"] +[29.160696849823218, "o", "i"] +[29.19069684982322, "o", "n"] +[29.22069684982322, "o", "i"] +[29.25069684982322, "o", "t"] +[29.280696849823222, "o", "i"] +[29.310696849823223, "o", "a"] +[29.340696849823225, "o", "l"] +[29.370696849823226, "o", "_"] +[29.400696849823227, "o", "d"] +[29.430696849823228, "o", "a"] +[29.46069684982323, "o", "t"] +[29.49069684982323, "o", "a"] +[29.52069684982323, "o", "\r\n"] +[29.550696849823233, "o", "$"] +[29.580696849823234, "o", " "] +[29.610696849823235, "o", "c"] +[29.640696849823236, "o", "u"] +[29.670696849823237, "o", "r"] +[29.700696849823238, "o", "l"] +[29.73069684982324, "o", " "] +[29.76069684982324, "o", "h"] +[29.79069684982324, "o", "t"] +[29.820696849823243, "o", "t"] +[29.850696849823244, "o", "p"] +[29.880696849823245, "o", ":"] +[29.910696849823246, "o", "/"] +[29.940696849823247, "o", "/"] +[29.97069684982325, "o", "l"] +[30.00069684982325, "o", "o"] +[30.03069684982325, "o", "c"] +[30.060696849823252, "o", "a"] +[30.090696849823253, "o", "l"] +[30.120696849823254, "o", "h"] +[30.150696849823255, "o", "o"] +[30.180696849823256, "o", "s"] +[30.210696849823258, "o", "t"] +[30.24069684982326, "o", ":"] +[30.27069684982326, "o", "8"] +[30.30069684982326, "o", "0"] +[30.330696849823262, "o", "8"] +[30.360696849823263, "o", "0"] +[30.390696849823264, "o", "/"] +[30.420696849823265, "o", " "] +[30.450696849823267, "o", "|"] +[30.480696849823268, "o", " "] +[30.51069684982327, "o", "c"] +[30.54069684982327, "o", "u"] +[30.57069684982327, "o", "t"] +[30.600696849823272, "o", " "] +[30.630696849823273, "o", "-"] +[30.660696849823275, "o", "c"] +[30.690696849823276, "o", " "] +[30.720696849823277, "o", "-"] +[30.750696849823278, "o", "7"] +[30.78069684982328, "o", "9"] +[30.81069684982328, "o", "3"] +[30.84069684982328, "o", "\r\n"] +[30.870696849823283, "o", "\u001b[0m"] +[30.900696849823284, "o", "\r\n"] +[31.518117046356487, "o", "Restarting splitgraph_example_postgrest_1 ... \r\r\n"] +[32.115455484390544, "o", "\u001b[1A\u001b[2K\r"] +[32.1155415534976, "o", "Restarting splitgraph_example_postgrest_1 ... \u001b[32mdone\u001b[0m\r"] +[32.11574325561552, "o", "\u001b[1B"] +[32.64106950759916, "o", "Checked out demo/weather:194e3d97859e.\r\n"] +[32.65002450943022, "o", " "] +[32.65007076263456, "o", " "] +[32.65009555816679, "o", "%"] +[32.650117969513225, "o", " "] +[32.650139427185344, "o", "T"] +[32.650176620483684, "o", "o"] +[32.650197839737224, "o", "t"] +[32.65021762847929, "o", "a"] +[32.650253391266155, "o", "l"] +[32.650348997116375, "o", " % Receiv"] +[32.650356864929485, "o", "ed % "] +[32.65100607872038, "o", "Xferd Average Speed "] +[32.651033496856975, "o", " Time T"] +[32.65103802680998, "o", "ime "] +[32.65104207992582, "o", " "] +[32.65106329917936, "o", " "] +[32.65106711387663, "o", "Ti"] +[32.65107116699247, "o", "me "] +[32.65107498168974, "o", " C"] +[32.651078796387004, "o", "ur"] +[32.65109858512907, "o", "re"] +[32.651102399826335, "o", "nt"] +[32.651107645035076, "o", "\r\n "] +[32.65112957954435, "o", " "] +[32.651150560379314, "o", " "] +[32.65115389823942, "o", " "] +[32.65115747451811, "o", " "] +[32.65116128921537, "o", " "] +[32.65116510391264, "o", " "] +[32.65116844177275, "o", " "] +[32.65117225647001, "o", " "] +[32.6511758327487, "o", " "] +[32.651179409027385, "o", " "] +[32.65119323730497, "o", " "] +[32.65119895935087, "o", " "] +[32.651205873489666, "o", " D"] +[32.65120968818693, "o", "load"] +[32.65121326446562, "o", " "] +[32.65121731758146, "o", "Up"] +[32.65122089386015, "o", "loa"] +[32.651224708557415, "o", "d "] +[32.65122876167326, "o", " "] +[32.65123305320768, "o", "Tot"] +[32.65123639106779, "o", "al"] +[32.6512397289279, "o", " "] +[32.651243305206584, "o", " S"] +[32.65124688148527, "o", "pent"] +[32.65125164985685, "o", " "] +[32.65125546455412, "o", " L"] +[32.651258802414226, "o", "ef"] +[32.65126237869291, "o", "t "] +[32.6512659549716, "o", " S"] +[32.651269531250286, "o", "pe"] +[32.65127429962187, "o", "ed\r\n"] +[32.651296234131145, "o", "\r 0 0 0 0 0 "] +[32.65130195617704, "o", "0 "] +[32.65194211006193, "o", " "] +[32.652012443542766, "o", " "] +[32.65202126503019, "o", " 0 0 -"] +[32.652031278610515, "o", "-:--:-- --:--:-- --:--:-- 0"] +[32.67567667961149, "o", "\r"] +[32.675721263885784, "o", "100 1"] +[32.676288938522625, "o", "2000 0 12000 0 0 450k 0 --:--:-- --:--:-- --:--:-- 450k\r\n"] +[32.67670497894316, "o", "{\"swagger\":\"2.0\",\"info\":{\"version\":\"8.0.0\",\"title\":\"PostgREST API\",\"description\":\"This is a dynamic API generated by PostgREST\"},\"host\":\"localhost:8080\",\"basePath\":\"/\",\"schemes\":[\"http\"],\"consumes\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"produces\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"paths\":{\"/\":{\"get\":{\"tags\":[\"Introspection\"],\"summary\":\"OpenAPI description (this document)\",\"produces\":[\"application/openapi+json\",\"application/json\"],\"responses\":{\""] +[32.67671499252348, "o", "200\":{\"description\":\"OK\"}}}},\"/rdu\":{\"get\":{\"tags\":[\"rdu\"],\"parameters\":[{\"$ref\":\"#/parameters/rowFilter.rdu.date\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemin\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemax\"},{\"$ref\":\"#/parameters/rowFilter.rdu.precipitation\"},{\"$ref\"\r\n"] +[32.70671499252348, "o", "\u001b[1m"] +[32.73671499252348, "o", "\u001b[36m"] +[32.76671499252348, "o", "\u001b[91m"] +[32.79671499252348, "o", "$"] +[32.826714992523485, "o", " "] +[32.856714992523486, "o", "\u001b[0m"] +[37.88671499252349, "o", "\u001b[H"] +[37.91671499252349, "o", "\u001b[J"] +[37.94671499252349, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get all rows in the table"] +[37.97671499252349, "o", "\r\n"] +[38.00671499252349, "o", "$"] +[38.03671499252349, "o", " "] +[38.066714992523494, "o", "c"] +[38.096714992523495, "o", "u"] +[38.126714992523496, "o", "r"] +[38.1567149925235, "o", "l"] +[38.1867149925235, "o", " "] +[38.2167149925235, "o", "h"] +[38.2467149925235, "o", "t"] +[38.2767149925235, "o", "t"] +[38.3067149925235, "o", "p"] +[38.336714992523504, "o", ":"] +[38.366714992523505, "o", "/"] +[38.396714992523506, "o", "/"] +[38.42671499252351, "o", "l"] +[38.45671499252351, "o", "o"] +[38.48671499252351, "o", "c"] +[38.51671499252351, "o", "a"] +[38.54671499252351, "o", "l"] +[38.57671499252351, "o", "h"] +[38.606714992523514, "o", "o"] +[38.636714992523515, "o", "s"] +[38.66671499252352, "o", "t"] +[38.69671499252352, "o", ":"] +[38.72671499252352, "o", "8"] +[38.75671499252352, "o", "0"] +[38.78671499252352, "o", "8"] +[38.81671499252352, "o", "0"] +[38.84671499252352, "o", "/"] +[38.876714992523524, "o", "r"] +[38.906714992523526, "o", "d"] +[38.93671499252353, "o", "u"] +[38.96671499252353, "o", " "] +[38.99671499252353, "o", "|"] +[39.02671499252353, "o", " "] +[39.05671499252353, "o", "w"] +[39.08671499252353, "o", "c"] +[39.116714992523534, "o", " "] +[39.146714992523535, "o", "-"] +[39.176714992523536, "o", "l"] +[39.20671499252354, "o", "\r\n"] +[39.23671499252354, "o", "\u001b[0m"] +[39.26671499252354, "o", "\r\n"] +[39.27498835563694, "o", " "] +[39.275011720657695, "o", " "] +[39.275024833679545, "o", "%"] +[39.27505225181614, "o", " "] +[39.27508419990574, "o", "T"] +[39.2751109027866, "o", "o"] +[39.27513855934178, "o", "t"] +[39.2751645469669, "o", "a"] +[39.2751747989658, "o", "l"] +[39.275184335708964, "o", " "] +[39.27519387245213, "o", " "] +[39.27520364761387, "o", " "] +[39.275213422775614, "o", " "] +[39.27522343635594, "o", "%"] +[39.2752329730991, "o", " "] +[39.27524298667942, "o", "R"] +[39.275253000259745, "o", "e"] +[39.27526277542149, "o", "c"] +[39.27527255058323, "o", "e"] +[39.275282325744975, "o", "i"] +[39.27529376983677, "o", "v"] +[39.27530402183567, "o", "e"] +[39.275322380066264, "o", "d"] +[39.275356235504496, "o", " "] +[39.27537292480503, "o", "%"] +[39.27538913726841, "o", " "] +[39.275404396057475, "o", "X"] +[39.275420608520854, "o", "f"] +[39.27544492721592, "o", "e"] +[39.275462808609355, "o", "r"] +[39.275478782654154, "o", "d"] +[39.27549499511753, "o", " "] +[39.27551096916233, "o", " "] +[39.2755467319492, "o", "A"] +[39.27559870719944, "o", "v"] +[39.27563399314915, "o", "e"] +[39.27565187454258, "o", "r"] +[39.275669517517436, "o", "a"] +[39.275706949234355, "o", "g"] +[39.275725545883525, "o", "e"] +[39.27575367927586, "o", " "] +[39.27577418327366, "o", "S"] +[39.27579254150425, "o", "p"] +[39.27581113815342, "o", "e"] +[39.275829257965434, "o", "e"] +[39.27584690094029, "o", "d"] +[39.275884571075785, "o", " "] +[39.27590102195774, "o", " "] +[39.2759174728397, "o", " "] +[39.27594894409214, "o", "T"] +[39.275966587066996, "o", "i"] +[39.27598494529759, "o", "m"] +[39.2765449905399, "o", "e Time Time Current\r\n Dload Upload Total Spent Left Speed\r\n"] +[39.27655381202732, "o", "\r 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0"] +[39.34710544586216, "o", "\r100 2292k "] +[39.3474563980106, "o", "0 2292k 0 0 31.0M 0 --:--:-- --:--:-- --:--:-- 31.0M\r\n"] +[39.34833973884617, "o", "4632\r\n"] +[39.37833973884617, "o", "\u001b[1m"] +[39.40833973884617, "o", "\u001b[36m"] +[39.438339738846174, "o", "\u001b[91m"] +[39.468339738846176, "o", "$"] +[39.49833973884618, "o", " "] +[39.52833973884618, "o", "\u001b[0m"] +[44.55833973884618, "o", "\u001b[H"] +[44.58833973884618, "o", "\u001b[J"] +[44.61833973884618, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a query selecting one row"] +[44.64833973884618, "o", "\r\n"] +[44.678339738846184, "o", "$"] +[44.708339738846185, "o", " "] +[44.738339738846186, "o", "c"] +[44.76833973884619, "o", "u"] +[44.79833973884619, "o", "r"] +[44.82833973884619, "o", "l"] +[44.85833973884619, "o", " "] +[44.88833973884619, "o", "\""] +[44.91833973884619, "o", "h"] +[44.948339738846194, "o", "t"] +[44.978339738846195, "o", "t"] +[45.008339738846196, "o", "p"] +[45.0383397388462, "o", ":"] +[45.0683397388462, "o", "/"] +[45.0983397388462, "o", "/"] +[45.1283397388462, "o", "l"] +[45.1583397388462, "o", "o"] +[45.1883397388462, "o", "c"] +[45.218339738846204, "o", "a"] +[45.248339738846205, "o", "l"] +[45.278339738846206, "o", "h"] +[45.30833973884621, "o", "o"] +[45.33833973884621, "o", "s"] +[45.36833973884621, "o", "t"] +[45.39833973884621, "o", ":"] +[45.42833973884621, "o", "8"] +[45.45833973884621, "o", "0"] +[45.488339738846214, "o", "8"] +[45.518339738846215, "o", "0"] +[45.54833973884622, "o", "/"] +[45.57833973884622, "o", "r"] +[45.60833973884622, "o", "d"] +[45.63833973884622, "o", "u"] +[45.66833973884622, "o", "?"] +[45.69833973884622, "o", "d"] +[45.72833973884622, "o", "a"] +[45.758339738846225, "o", "t"] +[45.788339738846226, "o", "e"] +[45.81833973884623, "o", "="] +[45.84833973884623, "o", "e"] +[45.87833973884623, "o", "q"] +[45.90833973884623, "o", "."] +[45.93833973884623, "o", "2"] +[45.96833973884623, "o", "0"] +[45.998339738846234, "o", "1"] +[46.028339738846235, "o", "2"] +[46.058339738846236, "o", "-"] +[46.08833973884624, "o", "1"] +[46.11833973884624, "o", "2"] +[46.14833973884624, "o", "-"] +[46.17833973884624, "o", "2"] +[46.20833973884624, "o", "6"] +[46.23833973884624, "o", "&"] +[46.268339738846244, "o", "s"] +[46.298339738846245, "o", "e"] +[46.328339738846246, "o", "l"] +[46.35833973884625, "o", "e"] +[46.38833973884625, "o", "c"] +[46.41833973884625, "o", "t"] +[46.44833973884625, "o", "="] +[46.47833973884625, "o", "d"] +[46.50833973884625, "o", "a"] +[46.538339738846254, "o", "t"] +[46.568339738846255, "o", "e"] +[46.598339738846256, "o", ","] +[46.62833973884626, "o", "t"] +[46.65833973884626, "o", "e"] +[46.68833973884626, "o", "m"] +[46.71833973884626, "o", "p"] +[46.74833973884626, "o", "e"] +[46.77833973884626, "o", "r"] +[46.808339738846264, "o", "a"] +[46.838339738846265, "o", "t"] +[46.86833973884627, "o", "u"] +[46.89833973884627, "o", "r"] +[46.92833973884627, "o", "e"] +[46.95833973884627, "o", "m"] +[46.98833973884627, "o", "i"] +[47.01833973884627, "o", "n"] +[47.04833973884627, "o", ","] +[47.078339738846275, "o", "t"] +[47.108339738846276, "o", "e"] +[47.13833973884628, "o", "m"] +[47.16833973884628, "o", "p"] +[47.19833973884628, "o", "e"] +[47.22833973884628, "o", "r"] +[47.25833973884628, "o", "a"] +[47.28833973884628, "o", "t"] +[47.318339738846284, "o", "u"] +[47.348339738846285, "o", "r"] +[47.378339738846286, "o", "e"] +[47.40833973884629, "o", "m"] +[47.43833973884629, "o", "a"] +[47.46833973884629, "o", "x"] +[47.49833973884629, "o", ","] +[47.52833973884629, "o", "p"] +[47.55833973884629, "o", "r"] +[47.588339738846294, "o", "e"] +[47.618339738846295, "o", "c"] +[47.648339738846296, "o", "i"] +[47.6783397388463, "o", "p"] +[47.7083397388463, "o", "i"] +[47.7383397388463, "o", "t"] +[47.7683397388463, "o", "a"] +[47.7983397388463, "o", "t"] +[47.8283397388463, "o", "i"] +[47.858339738846304, "o", "o"] +[47.888339738846305, "o", "n"] +[47.918339738846306, "o", "\""] +[47.94833973884631, "o", "\r\n"] +[47.97833973884631, "o", "\u001b[0m"] +[48.00833973884631, "o", "\r\n"] +[48.0228000640874, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.41}]"] +[48.0528000640874, "o", "\u001b[1m"] +[48.0828000640874, "o", "\u001b[36m"] +[48.1128000640874, "o", "\u001b[91m"] +[48.1428000640874, "o", "$"] +[48.172800064087404, "o", " "] +[48.202800064087405, "o", "\u001b[0m"] +[53.23280006408741, "o", "\u001b[H"] +[53.26280006408741, "o", "\u001b[J"] +[53.29280006408741, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run the query against the new version of the dataset."] +[53.32280006408741, "o", "\r\n"] +[53.35280006408741, "o", "$ # This time, use layered querying that queries fragments directly without checkout,\r\n"] +[53.38280006408741, "o", "$ # downloading them if they're not local. This is seamless to PostgREST or any other application.\r\n"] +[53.41280006408741, "o", "$"] +[53.442800064087415, "o", " "] +[53.472800064087416, "o", "s"] +[53.50280006408742, "o", "g"] +[53.53280006408742, "o", "r"] +[53.56280006408742, "o", " "] +[53.59280006408742, "o", "c"] +[53.62280006408742, "o", "h"] +[53.65280006408742, "o", "e"] +[53.682800064087424, "o", "c"] +[53.712800064087425, "o", "k"] +[53.742800064087426, "o", "o"] +[53.77280006408743, "o", "u"] +[53.80280006408743, "o", "t"] +[53.83280006408743, "o", " "] +[53.86280006408743, "o", "-"] +[53.89280006408743, "o", "-"] +[53.92280006408743, "o", "l"] +[53.952800064087434, "o", "a"] +[53.982800064087435, "o", "y"] +[54.012800064087436, "o", "e"] +[54.04280006408744, "o", "r"] +[54.07280006408744, "o", "e"] +[54.10280006408744, "o", "d"] +[54.13280006408744, "o", " "] +[54.16280006408744, "o", "d"] +[54.19280006408744, "o", "e"] +[54.222800064087444, "o", "m"] +[54.252800064087445, "o", "o"] +[54.282800064087446, "o", "/"] +[54.31280006408745, "o", "w"] +[54.34280006408745, "o", "e"] +[54.37280006408745, "o", "a"] +[54.40280006408745, "o", "t"] +[54.43280006408745, "o", "h"] +[54.46280006408745, "o", "e"] +[54.492800064087454, "o", "r"] +[54.522800064087455, "o", ":"] +[54.55280006408746, "o", "r"] +[54.58280006408746, "o", "e"] +[54.61280006408746, "o", "v"] +[54.64280006408746, "o", "i"] +[54.67280006408746, "o", "s"] +[54.70280006408746, "o", "e"] +[54.73280006408746, "o", "d"] +[54.762800064087465, "o", "_"] +[54.792800064087466, "o", "d"] +[54.82280006408747, "o", "a"] +[54.85280006408747, "o", "t"] +[54.88280006408747, "o", "a"] +[54.91280006408747, "o", "\r\n"] +[54.94280006408747, "o", "$"] +[54.97280006408747, "o", " "] +[55.002800064087474, "o", "c"] +[55.032800064087475, "o", "u"] +[55.062800064087476, "o", "r"] +[55.09280006408748, "o", "l"] +[55.12280006408748, "o", " "] +[55.15280006408748, "o", "\""] +[55.18280006408748, "o", "h"] +[55.21280006408748, "o", "t"] +[55.24280006408748, "o", "t"] +[55.272800064087484, "o", "p"] +[55.302800064087485, "o", ":"] +[55.332800064087486, "o", "/"] +[55.36280006408749, "o", "/"] +[55.39280006408749, "o", "l"] +[55.42280006408749, "o", "o"] +[55.45280006408749, "o", "c"] +[55.48280006408749, "o", "a"] +[55.51280006408749, "o", "l"] +[55.542800064087494, "o", "h"] +[55.572800064087495, "o", "o"] +[55.602800064087496, "o", "s"] +[55.6328000640875, "o", "t"] +[55.6628000640875, "o", ":"] +[55.6928000640875, "o", "8"] +[55.7228000640875, "o", "0"] +[55.7528000640875, "o", "8"] +[55.7828000640875, "o", "0"] +[55.812800064087504, "o", "/"] +[55.842800064087506, "o", "r"] +[55.87280006408751, "o", "d"] +[55.90280006408751, "o", "u"] +[55.93280006408751, "o", "?"] +[55.96280006408751, "o", "d"] +[55.99280006408751, "o", "a"] +[56.02280006408751, "o", "t"] +[56.05280006408751, "o", "e"] +[56.082800064087515, "o", "="] +[56.112800064087516, "o", "e"] +[56.14280006408752, "o", "q"] +[56.17280006408752, "o", "."] +[56.20280006408752, "o", "2"] +[56.23280006408752, "o", "0"] +[56.26280006408752, "o", "1"] +[56.29280006408752, "o", "2"] +[56.322800064087524, "o", "-"] +[56.352800064087525, "o", "1"] +[56.382800064087526, "o", "2"] +[56.41280006408753, "o", "-"] +[56.44280006408753, "o", "2"] +[56.47280006408753, "o", "6"] +[56.50280006408753, "o", "&"] +[56.53280006408753, "o", "s"] +[56.56280006408753, "o", "e"] +[56.592800064087534, "o", "l"] +[56.622800064087535, "o", "e"] +[56.652800064087536, "o", "c"] +[56.68280006408754, "o", "t"] +[56.71280006408754, "o", "="] +[56.74280006408754, "o", "d"] +[56.77280006408754, "o", "a"] +[56.80280006408754, "o", "t"] +[56.83280006408754, "o", "e"] +[56.862800064087544, "o", ","] +[56.892800064087545, "o", "t"] +[56.922800064087546, "o", "e"] +[56.95280006408755, "o", "m"] +[56.98280006408755, "o", "p"] +[57.01280006408755, "o", "e"] +[57.04280006408755, "o", "r"] +[57.07280006408755, "o", "a"] +[57.10280006408755, "o", "t"] +[57.132800064087554, "o", "u"] +[57.162800064087556, "o", "r"] +[57.19280006408756, "o", "e"] +[57.22280006408756, "o", "m"] +[57.25280006408756, "o", "i"] +[57.28280006408756, "o", "n"] +[57.31280006408756, "o", ","] +[57.34280006408756, "o", "t"] +[57.37280006408756, "o", "e"] +[57.402800064087565, "o", "m"] +[57.432800064087566, "o", "p"] +[57.46280006408757, "o", "e"] +[57.49280006408757, "o", "r"] +[57.52280006408757, "o", "a"] +[57.55280006408757, "o", "t"] +[57.58280006408757, "o", "u"] +[57.61280006408757, "o", "r"] +[57.642800064087574, "o", "e"] +[57.672800064087575, "o", "m"] +[57.702800064087576, "o", "a"] +[57.73280006408758, "o", "x"] +[57.76280006408758, "o", ","] +[57.79280006408758, "o", "p"] +[57.82280006408758, "o", "r"] +[57.85280006408758, "o", "e"] +[57.88280006408758, "o", "c"] +[57.912800064087584, "o", "i"] +[57.942800064087585, "o", "p"] +[57.972800064087586, "o", "i"] +[58.00280006408759, "o", "t"] +[58.03280006408759, "o", "a"] +[58.06280006408759, "o", "t"] +[58.09280006408759, "o", "i"] +[58.12280006408759, "o", "o"] +[58.15280006408759, "o", "n"] +[58.182800064087594, "o", "\""] +[58.212800064087595, "o", "\r\n"] +[58.2428000640876, "o", "\u001b[0m"] +[58.2728000640876, "o", "\r\n"] +[58.84140214920112, "o", "Checked out demo/weather:f16888454d22.\r\n"] +[59.1685930252082, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.692}]"] +[59.198593025208204, "o", "\u001b[1m"] +[59.228593025208205, "o", "\u001b[36m"] +[59.25859302520821, "o", "\u001b[91m"] +[59.28859302520821, "o", "$"] +[59.31859302520821, "o", " "] +[59.34859302520821, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.15/push-to-other-engine.cast b/content/casts/versioned/archive/v0.2.15/push-to-other-engine.cast new file mode 100644 index 00000000..80673ea8 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.15/push-to-other-engine.cast @@ -0,0 +1,887 @@ +{"version": 2, "width": 100, "height": 26, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1627292855, "metadata": {"tss": [{"h": "The .sgconfig file is written from the point of view of the first engine.", "ts": 0.06}, {"h": "Initialize the two engines", "ts": 9.559999999999999}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 22.060000000000002}, {"h": "Push the dataset out to the other engine", "ts": 35.34670343399074}, {"h": "Check that the dataset exists on the remote engine", "ts": 43.64884049415625}, {"h": "Update the dataset on the local engine", "ts": 50.87966197013898}, {"h": "Inspect our changes", "ts": 62.5042506217963}, {"h": "Push the changes out to the remote engine", "ts": 70.24426087379527}, {"h": "Inspect the dataset on the remote engine", "ts": 77.47461487770158}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The .sgconfig file is written from the point of view of the first engine."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Here, the first engine is local and default and the second one is remote.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "c"] +[0.27, "o", "a"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "."] +[0.3900000000000001, "o", "s"] +[0.42000000000000015, "o", "g"] +[0.4500000000000002, "o", "c"] +[0.4800000000000002, "o", "o"] +[0.5100000000000002, "o", "n"] +[0.5400000000000003, "o", "f"] +[0.5700000000000003, "o", "i"] +[0.6000000000000003, "o", "g"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "\u001b[0m"] +[0.6900000000000004, "o", "\r\n"] +[0.6914073848724369, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[remote: engine_2]\r\nSG_ENGINE_ADMIN_USER=sgr\r\nSG_ENGINE_ADMIN_PWD=supersecure\r\nSG_ENGINE_POSTGRES_DB_NAME=splitgraph\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\nSG_ENGINE_DB_NAME=splitgraph"] +[0.7214073848724369, "o", "\u001b[1m"] +[0.751407384872437, "o", "\u001b[36m"] +[0.781407384872437, "o", "\u001b[91m"] +[0.811407384872437, "o", "$"] +[0.841407384872437, "o", " "] +[0.8714073848724371, "o", "\u001b[0m"] +[9.53, "o", "\u001b[H"] +[9.559999999999999, "o", "\u001b[J"] +[9.589999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the two engines"] +[9.619999999999997, "o", "\r\n"] +[9.649999999999997, "o", "$"] +[9.679999999999996, "o", " "] +[9.709999999999996, "o", "s"] +[9.739999999999995, "o", "g"] +[9.769999999999994, "o", "r"] +[9.799999999999994, "o", " "] +[9.829999999999993, "o", "i"] +[9.859999999999992, "o", "n"] +[9.889999999999992, "o", "i"] +[9.919999999999991, "o", "t"] +[9.94999999999999, "o", "\r\n"] +[9.97999999999999, "o", "$"] +[10.00999999999999, "o", " "] +[10.039999999999988, "o", "S"] +[10.069999999999988, "o", "G"] +[10.099999999999987, "o", "_"] +[10.129999999999987, "o", "E"] +[10.159999999999986, "o", "N"] +[10.189999999999985, "o", "G"] +[10.219999999999985, "o", "I"] +[10.249999999999984, "o", "N"] +[10.279999999999983, "o", "E"] +[10.309999999999983, "o", "="] +[10.339999999999982, "o", "e"] +[10.369999999999981, "o", "n"] +[10.39999999999998, "o", "g"] +[10.42999999999998, "o", "i"] +[10.45999999999998, "o", "n"] +[10.489999999999979, "o", "e"] +[10.519999999999978, "o", "_"] +[10.549999999999978, "o", "2"] +[10.579999999999977, "o", " "] +[10.609999999999976, "o", "s"] +[10.639999999999976, "o", "g"] +[10.669999999999975, "o", "r"] +[10.699999999999974, "o", " "] +[10.729999999999974, "o", "i"] +[10.759999999999973, "o", "n"] +[10.789999999999973, "o", "i"] +[10.819999999999972, "o", "t"] +[10.849999999999971, "o", "\r\n"] +[10.87999999999997, "o", "\u001b[0m"] +[10.90999999999997, "o", "\r\n"] +[11.30430832862851, "o", "Initializing engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph)...\r\n"] +[11.305918130874604, "o", "Waiting for connection....\r\n"] +[12.305918130874604, "o", "Database splitgraph already exists, skipping\r\n"] +[12.305961284637421, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[12.318029079437226, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.34975305557248, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.351216707229584, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.372992906570405, "o", "Installing Splitgraph API functions...\r\n"] +[12.410701189041108, "o", "Installing CStore management functions...\r\n"] +[12.41462293624875, "o", "Installing the audit trigger...\r\n"] +[12.430544528961152, "o", "Engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph) initialized.\r\n"] +[12.756601486206025, "o", "Initializing engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph)...\r\n"] +[12.764673624038666, "o", "Database splitgraph already exists, skipping\r\n"] +[12.764888200759858, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[12.772072229385346, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.830926570892304, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.832619819641083, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.857447061538666, "o", "Installing Splitgraph API functions...\r\n"] +[12.899485502243012, "o", "Installing CStore management functions...\r\n"] +[12.903897676467865, "o", "Installing the audit trigger...\r\n"] +[12.918078098297089, "o", "Engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph) initialized.\r\n"] +[12.948078098297088, "o", "\u001b[1m"] +[12.978078098297088, "o", "\u001b[36m"] +[13.008078098297087, "o", "\u001b[91m"] +[13.038078098297087, "o", "$"] +[13.068078098297086, "o", " "] +[13.098078098297085, "o", "\u001b[0m"] +[22.03, "o", "\u001b[H"] +[22.060000000000002, "o", "\u001b[J"] +[22.090000000000003, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[22.120000000000005, "o", "\r\n"] +[22.150000000000006, "o", "$"] +[22.180000000000007, "o", " "] +[22.210000000000008, "o", "s"] +[22.24000000000001, "o", "g"] +[22.27000000000001, "o", "r"] +[22.30000000000001, "o", " "] +[22.330000000000013, "o", "i"] +[22.360000000000014, "o", "n"] +[22.390000000000015, "o", "i"] +[22.420000000000016, "o", "t"] +[22.450000000000017, "o", " "] +[22.480000000000018, "o", "d"] +[22.51000000000002, "o", "e"] +[22.54000000000002, "o", "m"] +[22.57000000000002, "o", "o"] +[22.600000000000023, "o", "/"] +[22.630000000000024, "o", "w"] +[22.660000000000025, "o", "e"] +[22.690000000000026, "o", "a"] +[22.720000000000027, "o", "t"] +[22.75000000000003, "o", "h"] +[22.78000000000003, "o", "e"] +[22.81000000000003, "o", "r"] +[22.840000000000032, "o", "\r\n"] +[22.870000000000033, "o", "$"] +[22.900000000000034, "o", " "] +[22.930000000000035, "o", "s"] +[22.960000000000036, "o", "g"] +[22.990000000000038, "o", "r"] +[23.02000000000004, "o", " "] +[23.05000000000004, "o", "c"] +[23.08000000000004, "o", "s"] +[23.110000000000042, "o", "v"] +[23.140000000000043, "o", " "] +[23.170000000000044, "o", "i"] +[23.200000000000045, "o", "m"] +[23.230000000000047, "o", "p"] +[23.260000000000048, "o", "o"] +[23.29000000000005, "o", "r"] +[23.32000000000005, "o", "t"] +[23.35000000000005, "o", " "] +[23.380000000000052, "o", "-"] +[23.410000000000053, "o", "f"] +[23.440000000000055, "o", " "] +[23.470000000000056, "o", "."] +[23.500000000000057, "o", "."] +[23.530000000000058, "o", "/"] +[23.56000000000006, "o", "i"] +[23.59000000000006, "o", "m"] +[23.62000000000006, "o", "p"] +[23.650000000000063, "o", "o"] +[23.680000000000064, "o", "r"] +[23.710000000000065, "o", "t"] +[23.740000000000066, "o", "-"] +[23.770000000000067, "o", "f"] +[23.800000000000068, "o", "r"] +[23.83000000000007, "o", "o"] +[23.86000000000007, "o", "m"] +[23.89000000000007, "o", "-"] +[23.920000000000073, "o", "c"] +[23.950000000000074, "o", "s"] +[23.980000000000075, "o", "v"] +[24.010000000000076, "o", "/"] +[24.040000000000077, "o", "r"] +[24.07000000000008, "o", "d"] +[24.10000000000008, "o", "u"] +[24.13000000000008, "o", "-"] +[24.160000000000082, "o", "w"] +[24.190000000000083, "o", "e"] +[24.220000000000084, "o", "a"] +[24.250000000000085, "o", "t"] +[24.280000000000086, "o", "h"] +[24.310000000000088, "o", "e"] +[24.34000000000009, "o", "r"] +[24.37000000000009, "o", "-"] +[24.40000000000009, "o", "h"] +[24.430000000000092, "o", "i"] +[24.460000000000093, "o", "s"] +[24.490000000000094, "o", "t"] +[24.520000000000095, "o", "o"] +[24.550000000000097, "o", "r"] +[24.580000000000098, "o", "y"] +[24.6100000000001, "o", "."] +[24.6400000000001, "o", "c"] +[24.6700000000001, "o", "s"] +[24.700000000000102, "o", "v"] +[24.730000000000103, "o", " "] +[24.760000000000105, "o", "\\"] +[24.790000000000106, "o", "\r\n "] +[24.820000000000107, "o", "-"] +[24.850000000000108, "o", "k"] +[24.88000000000011, "o", " "] +[24.91000000000011, "o", "d"] +[24.94000000000011, "o", "a"] +[24.970000000000113, "o", "t"] +[25.000000000000114, "o", "e"] +[25.030000000000115, "o", " "] +[25.060000000000116, "o", "\\"] +[25.090000000000117, "o", "\r\n "] +[25.12000000000012, "o", "-"] +[25.15000000000012, "o", "t"] +[25.18000000000012, "o", " "] +[25.21000000000012, "o", "d"] +[25.240000000000123, "o", "a"] +[25.270000000000124, "o", "t"] +[25.300000000000125, "o", "e"] +[25.330000000000126, "o", " "] +[25.360000000000127, "o", "t"] +[25.39000000000013, "o", "i"] +[25.42000000000013, "o", "m"] +[25.45000000000013, "o", "e"] +[25.480000000000132, "o", "s"] +[25.510000000000133, "o", "t"] +[25.540000000000134, "o", "a"] +[25.570000000000135, "o", "m"] +[25.600000000000136, "o", "p"] +[25.630000000000138, "o", " "] +[25.66000000000014, "o", "\\"] +[25.69000000000014, "o", "\r\n "] +[25.72000000000014, "o", "-"] +[25.750000000000142, "o", "-"] +[25.780000000000143, "o", "s"] +[25.810000000000144, "o", "e"] +[25.840000000000146, "o", "p"] +[25.870000000000147, "o", "a"] +[25.900000000000148, "o", "r"] +[25.93000000000015, "o", "a"] +[25.96000000000015, "o", "t"] +[25.99000000000015, "o", "o"] +[26.020000000000152, "o", "r"] +[26.050000000000153, "o", " "] +[26.080000000000155, "o", "\""] +[26.110000000000156, "o", ";"] +[26.140000000000157, "o", "\""] +[26.170000000000158, "o", " "] +[26.20000000000016, "o", "\\"] +[26.23000000000016, "o", "\r\n "] +[26.26000000000016, "o", "d"] +[26.290000000000163, "o", "e"] +[26.320000000000164, "o", "m"] +[26.350000000000165, "o", "o"] +[26.380000000000166, "o", "/"] +[26.410000000000167, "o", "w"] +[26.44000000000017, "o", "e"] +[26.47000000000017, "o", "a"] +[26.50000000000017, "o", "t"] +[26.53000000000017, "o", "h"] +[26.560000000000173, "o", "e"] +[26.590000000000174, "o", "r"] +[26.620000000000175, "o", " "] +[26.650000000000176, "o", "r"] +[26.680000000000177, "o", "d"] +[26.71000000000018, "o", "u"] +[26.74000000000018, "o", "\r\n"] +[26.77000000000018, "o", "$"] +[26.800000000000182, "o", " "] +[26.830000000000183, "o", "s"] +[26.860000000000184, "o", "g"] +[26.890000000000185, "o", "r"] +[26.920000000000186, "o", " "] +[26.950000000000188, "o", "c"] +[26.98000000000019, "o", "o"] +[27.01000000000019, "o", "m"] +[27.04000000000019, "o", "m"] +[27.070000000000192, "o", "i"] +[27.100000000000193, "o", "t"] +[27.130000000000194, "o", " "] +[27.160000000000196, "o", "d"] +[27.190000000000197, "o", "e"] +[27.220000000000198, "o", "m"] +[27.2500000000002, "o", "o"] +[27.2800000000002, "o", "/"] +[27.3100000000002, "o", "w"] +[27.340000000000202, "o", "e"] +[27.370000000000203, "o", "a"] +[27.400000000000205, "o", "t"] +[27.430000000000206, "o", "h"] +[27.460000000000207, "o", "e"] +[27.490000000000208, "o", "r"] +[27.52000000000021, "o", "\r\n"] +[27.55000000000021, "o", "$"] +[27.58000000000021, "o", " "] +[27.610000000000213, "o", "s"] +[27.640000000000214, "o", "g"] +[27.670000000000215, "o", "r"] +[27.700000000000216, "o", " "] +[27.730000000000217, "o", "t"] +[27.76000000000022, "o", "a"] +[27.79000000000022, "o", "g"] +[27.82000000000022, "o", " "] +[27.85000000000022, "o", "d"] +[27.880000000000223, "o", "e"] +[27.910000000000224, "o", "m"] +[27.940000000000225, "o", "o"] +[27.970000000000226, "o", "/"] +[28.000000000000227, "o", "w"] +[28.03000000000023, "o", "e"] +[28.06000000000023, "o", "a"] +[28.09000000000023, "o", "t"] +[28.120000000000232, "o", "h"] +[28.150000000000233, "o", "e"] +[28.180000000000234, "o", "r"] +[28.210000000000235, "o", " "] +[28.240000000000236, "o", "i"] +[28.270000000000238, "o", "n"] +[28.30000000000024, "o", "i"] +[28.33000000000024, "o", "t"] +[28.36000000000024, "o", "i"] +[28.390000000000242, "o", "a"] +[28.420000000000243, "o", "l"] +[28.450000000000244, "o", "_"] +[28.480000000000246, "o", "d"] +[28.510000000000247, "o", "a"] +[28.540000000000248, "o", "t"] +[28.57000000000025, "o", "a"] +[28.60000000000025, "o", "\r\n"] +[28.63000000000025, "o", "\u001b[0m"] +[28.660000000000252, "o", "\r\n"] +[29.03586593627955, "o", "Initialized empty repository demo/weather\r\n"] +[29.443857345581307, "o", "Committing demo/weather...\r\n"] +[29.472133789062752, "o", "Processing table rdu\r\n"] +[29.685267601013436, "o", "Committed demo/weather as 6cf28a0ef9c8.\r\n"] +[30.10670343399073, "o", "Tagged demo/weather:6cf28a0ef9c8b18730e5d41673a076a33bd5f13bfe0308f3994e2b1a207a4b37 with initial_data.\r\n"] +[30.136703433990732, "o", "\u001b[1m"] +[30.166703433990733, "o", "\u001b[36m"] +[30.196703433990734, "o", "\u001b[91m"] +[30.226703433990735, "o", "$"] +[30.256703433990737, "o", " "] +[30.286703433990738, "o", "\u001b[0m"] +[35.31670343399074, "o", "\u001b[H"] +[35.34670343399074, "o", "\u001b[J"] +[35.37670343399074, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset out to the other engine"] +[35.40670343399074, "o", "\r\n"] +[35.43670343399074, "o", "$ # Since by default Splitgraph is configured to use S3 for uploading, we need\r\n"] +[35.466703433990745, "o", "$ # to override the upload handler and upload data to the actual database.\r\n"] +[35.496703433990746, "o", "$"] +[35.52670343399075, "o", " "] +[35.55670343399075, "o", "s"] +[35.58670343399075, "o", "g"] +[35.61670343399075, "o", "r"] +[35.64670343399075, "o", " "] +[35.67670343399075, "o", "p"] +[35.706703433990754, "o", "u"] +[35.736703433990755, "o", "s"] +[35.766703433990756, "o", "h"] +[35.79670343399076, "o", " "] +[35.82670343399076, "o", "d"] +[35.85670343399076, "o", "e"] +[35.88670343399076, "o", "m"] +[35.91670343399076, "o", "o"] +[35.94670343399076, "o", "/"] +[35.976703433990764, "o", "w"] +[36.006703433990765, "o", "e"] +[36.036703433990766, "o", "a"] +[36.06670343399077, "o", "t"] +[36.09670343399077, "o", "h"] +[36.12670343399077, "o", "e"] +[36.15670343399077, "o", "r"] +[36.18670343399077, "o", " "] +[36.21670343399077, "o", "-"] +[36.246703433990774, "o", "-"] +[36.276703433990775, "o", "r"] +[36.306703433990776, "o", "e"] +[36.33670343399078, "o", "m"] +[36.36670343399078, "o", "o"] +[36.39670343399078, "o", "t"] +[36.42670343399078, "o", "e"] +[36.45670343399078, "o", " "] +[36.48670343399078, "o", "e"] +[36.516703433990784, "o", "n"] +[36.546703433990785, "o", "g"] +[36.57670343399079, "o", "i"] +[36.60670343399079, "o", "n"] +[36.63670343399079, "o", "e"] +[36.66670343399079, "o", "_"] +[36.69670343399079, "o", "2"] +[36.72670343399079, "o", " "] +[36.75670343399079, "o", "d"] +[36.786703433990795, "o", "e"] +[36.816703433990796, "o", "m"] +[36.8467034339908, "o", "o"] +[36.8767034339908, "o", "/"] +[36.9067034339908, "o", "w"] +[36.9367034339908, "o", "e"] +[36.9667034339908, "o", "a"] +[36.9967034339908, "o", "t"] +[37.026703433990804, "o", "h"] +[37.056703433990805, "o", "e"] +[37.086703433990806, "o", "r"] +[37.11670343399081, "o", " "] +[37.14670343399081, "o", "-"] +[37.17670343399081, "o", "-"] +[37.20670343399081, "o", "u"] +[37.23670343399081, "o", "p"] +[37.26670343399081, "o", "l"] +[37.296703433990814, "o", "o"] +[37.326703433990815, "o", "a"] +[37.356703433990816, "o", "d"] +[37.38670343399082, "o", "-"] +[37.41670343399082, "o", "h"] +[37.44670343399082, "o", "a"] +[37.47670343399082, "o", "n"] +[37.50670343399082, "o", "d"] +[37.53670343399082, "o", "l"] +[37.566703433990824, "o", "e"] +[37.596703433990825, "o", "r"] +[37.626703433990826, "o", " "] +[37.65670343399083, "o", "D"] +[37.68670343399083, "o", "B"] +[37.71670343399083, "o", "\r\n"] +[37.74670343399083, "o", "\u001b[0m"] +[37.77670343399083, "o", "\r\n"] +[38.140976743698474, "o", "Pushing demo/weather to demo/weather on remote engine_2\r\n"] +[38.141347723007556, "o", "Gathering remote metadata...\r\n"] +[38.2055824565891, "o", "Uploading 1 object, total size 109.61 KiB\r\n"] +[38.210564451218005, "o", "\r 0%| | 0/1 [00:00 a90176119118\r\n"] +[24.968517742157108, "o", "\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[24.976554355621463, "o", "Executing SQL...\r\n"] +[25.18798323631299, "o", "Committing demo/summary...\r\n"] +[25.217739067077762, "o", "Processing table monthly_summary\r\n"] +[25.30946227073682, "o", " ---> d8b47a92fb09\r\n"] +[25.31361504554761, "o", "Successfully built demo/summary:d8b47a92fb09.\r\n"] +[25.694927654266483, "o", "Tagged demo/summary:d8b47a92fb09edc06626ed0f897bf091ecc05160390eb5c9b320ea0b9b5cf38a with based_on_initial.\r\n"] +[25.724927654266484, "o", "\u001b[1m"] +[25.754927654266485, "o", "\u001b[36m"] +[25.784927654266486, "o", "\u001b[91m"] +[25.814927654266487, "o", "$"] +[25.84492765426649, "o", " "] +[25.87492765426649, "o", "\u001b[0m"] +[30.90492765426649, "o", "\u001b[H"] +[30.93492765426649, "o", "\u001b[J"] +[30.964927654266493, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Much like with Docker, the build result is cached, so running build again checks out the existing image."] +[30.994927654266494, "o", "\r\n"] +[31.024927654266495, "o", "$"] +[31.054927654266496, "o", " "] +[31.084927654266497, "o", "s"] +[31.1149276542665, "o", "g"] +[31.1449276542665, "o", "r"] +[31.1749276542665, "o", " "] +[31.204927654266502, "o", "b"] +[31.234927654266503, "o", "u"] +[31.264927654266504, "o", "i"] +[31.294927654266505, "o", "l"] +[31.324927654266506, "o", "d"] +[31.354927654266508, "o", " "] +[31.38492765426651, "o", "r"] +[31.41492765426651, "o", "d"] +[31.44492765426651, "o", "u"] +[31.474927654266512, "o", "-"] +[31.504927654266513, "o", "w"] +[31.534927654266514, "o", "e"] +[31.564927654266516, "o", "a"] +[31.594927654266517, "o", "t"] +[31.624927654266518, "o", "h"] +[31.65492765426652, "o", "e"] +[31.68492765426652, "o", "r"] +[31.71492765426652, "o", "-"] +[31.744927654266522, "o", "s"] +[31.774927654266524, "o", "u"] +[31.804927654266525, "o", "m"] +[31.834927654266526, "o", "m"] +[31.864927654266527, "o", "a"] +[31.894927654266528, "o", "r"] +[31.92492765426653, "o", "y"] +[31.95492765426653, "o", "."] +[31.98492765426653, "o", "s"] +[32.01492765426653, "o", "p"] +[32.04492765426653, "o", "l"] +[32.07492765426653, "o", "i"] +[32.10492765426653, "o", "t"] +[32.134927654266534, "o", "f"] +[32.164927654266535, "o", "i"] +[32.194927654266536, "o", "l"] +[32.22492765426654, "o", "e"] +[32.25492765426654, "o", " "] +[32.28492765426654, "o", "-"] +[32.31492765426654, "o", "o"] +[32.34492765426654, "o", " "] +[32.37492765426654, "o", "d"] +[32.404927654266544, "o", "e"] +[32.434927654266545, "o", "m"] +[32.464927654266546, "o", "o"] +[32.49492765426655, "o", "/"] +[32.52492765426655, "o", "s"] +[32.55492765426655, "o", "u"] +[32.58492765426655, "o", "m"] +[32.61492765426655, "o", "m"] +[32.64492765426655, "o", "a"] +[32.674927654266554, "o", "r"] +[32.704927654266555, "o", "y"] +[32.734927654266556, "o", "\r\n"] +[32.76492765426656, "o", "\u001b[0m"] +[32.79492765426656, "o", "\r\n"] +[33.175533113479815, "o", "Executing Splitfile rdu-weather-summary.splitfile with arguments {}\r\n"] +[33.25953751564046, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather IMPORT rdu AS source_data\u001b[0m\r\n"] +[33.26051455497762, "o", "Resolving repository demo/weather\r\n"] +[33.390945253372394, "o", " ---> Using cache\r\n"] +[33.39112215995809, "o", " ---> a90176119118\r\n\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[33.606268701553546, "o", " ---> Using cache\r\n"] +[33.606404600143634, "o", " ---> d8b47a92fb09\r\n"] +[33.60989528656026, "o", "Successfully built demo/summary:d8b47a92fb09.\r\n"] +[33.63989528656026, "o", "\u001b[1m"] +[33.66989528656026, "o", "\u001b[36m"] +[33.69989528656026, "o", "\u001b[91m"] +[33.729895286560264, "o", "$"] +[33.759895286560266, "o", " "] +[33.78989528656027, "o", "\u001b[0m"] +[38.81989528656027, "o", "\u001b[H"] +[38.84989528656027, "o", "\u001b[J"] +[38.87989528656027, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the new dataset"] +[38.90989528656027, "o", "\r\n"] +[38.93989528656027, "o", "$"] +[38.96989528656027, "o", " "] +[38.999895286560275, "o", "s"] +[39.029895286560276, "o", "g"] +[39.05989528656028, "o", "r"] +[39.08989528656028, "o", " "] +[39.11989528656028, "o", "s"] +[39.14989528656028, "o", "h"] +[39.17989528656028, "o", "o"] +[39.20989528656028, "o", "w"] +[39.239895286560284, "o", " "] +[39.269895286560285, "o", "d"] +[39.299895286560286, "o", "e"] +[39.32989528656029, "o", "m"] +[39.35989528656029, "o", "o"] +[39.38989528656029, "o", "/"] +[39.41989528656029, "o", "s"] +[39.44989528656029, "o", "u"] +[39.47989528656029, "o", "m"] +[39.509895286560294, "o", "m"] +[39.539895286560295, "o", "a"] +[39.569895286560296, "o", "r"] +[39.5998952865603, "o", "y"] +[39.6298952865603, "o", ":"] +[39.6598952865603, "o", "b"] +[39.6898952865603, "o", "a"] +[39.7198952865603, "o", "s"] +[39.7498952865603, "o", "e"] +[39.779895286560304, "o", "d"] +[39.809895286560305, "o", "_"] +[39.839895286560306, "o", "o"] +[39.86989528656031, "o", "n"] +[39.89989528656031, "o", "_"] +[39.92989528656031, "o", "i"] +[39.95989528656031, "o", "n"] +[39.98989528656031, "o", "i"] +[40.01989528656031, "o", "t"] +[40.049895286560314, "o", "i"] +[40.079895286560316, "o", "a"] +[40.10989528656032, "o", "l"] +[40.13989528656032, "o", "\r\n"] +[40.16989528656032, "o", "$"] +[40.19989528656032, "o", " "] +[40.22989528656032, "o", "s"] +[40.25989528656032, "o", "g"] +[40.28989528656032, "o", "r"] +[40.319895286560325, "o", " "] +[40.349895286560326, "o", "t"] +[40.37989528656033, "o", "a"] +[40.40989528656033, "o", "b"] +[40.43989528656033, "o", "l"] +[40.46989528656033, "o", "e"] +[40.49989528656033, "o", " "] +[40.52989528656033, "o", "d"] +[40.559895286560334, "o", "e"] +[40.589895286560335, "o", "m"] +[40.619895286560336, "o", "o"] +[40.64989528656034, "o", "/"] +[40.67989528656034, "o", "s"] +[40.70989528656034, "o", "u"] +[40.73989528656034, "o", "m"] +[40.76989528656034, "o", "m"] +[40.79989528656034, "o", "a"] +[40.829895286560344, "o", "r"] +[40.859895286560345, "o", "y"] +[40.889895286560346, "o", ":"] +[40.91989528656035, "o", "b"] +[40.94989528656035, "o", "a"] +[40.97989528656035, "o", "s"] +[41.00989528656035, "o", "e"] +[41.03989528656035, "o", "d"] +[41.06989528656035, "o", "_"] +[41.099895286560354, "o", "o"] +[41.129895286560355, "o", "n"] +[41.15989528656036, "o", "_"] +[41.18989528656036, "o", "i"] +[41.21989528656036, "o", "n"] +[41.24989528656036, "o", "i"] +[41.27989528656036, "o", "t"] +[41.30989528656036, "o", "i"] +[41.33989528656036, "o", "a"] +[41.369895286560364, "o", "l"] +[41.399895286560366, "o", " "] +[41.42989528656037, "o", "m"] +[41.45989528656037, "o", "o"] +[41.48989528656037, "o", "n"] +[41.51989528656037, "o", "t"] +[41.54989528656037, "o", "h"] +[41.57989528656037, "o", "l"] +[41.60989528656037, "o", "y"] +[41.639895286560375, "o", "_"] +[41.669895286560376, "o", "s"] +[41.69989528656038, "o", "u"] +[41.72989528656038, "o", "m"] +[41.75989528656038, "o", "m"] +[41.78989528656038, "o", "a"] +[41.81989528656038, "o", "r"] +[41.84989528656038, "o", "y"] +[41.879895286560384, "o", "\r\n"] +[41.909895286560385, "o", "$"] +[41.939895286560386, "o", " "] +[41.96989528656039, "o", "s"] +[41.99989528656039, "o", "g"] +[42.02989528656039, "o", "r"] +[42.05989528656039, "o", " "] +[42.08989528656039, "o", "s"] +[42.11989528656039, "o", "q"] +[42.149895286560394, "o", "l"] +[42.179895286560395, "o", " "] +[42.209895286560396, "o", "-"] +[42.2398952865604, "o", "s"] +[42.2698952865604, "o", " "] +[42.2998952865604, "o", "d"] +[42.3298952865604, "o", "e"] +[42.3598952865604, "o", "m"] +[42.3898952865604, "o", "o"] +[42.419895286560404, "o", "/"] +[42.449895286560405, "o", "s"] +[42.47989528656041, "o", "u"] +[42.50989528656041, "o", "m"] +[42.53989528656041, "o", "m"] +[42.56989528656041, "o", "a"] +[42.59989528656041, "o", "r"] +[42.62989528656041, "o", "y"] +[42.65989528656041, "o", " "] +[42.689895286560414, "o", "\""] +[42.719895286560416, "o", "S"] +[42.74989528656042, "o", "E"] +[42.77989528656042, "o", "L"] +[42.80989528656042, "o", "E"] +[42.83989528656042, "o", "C"] +[42.86989528656042, "o", "T"] +[42.89989528656042, "o", " "] +[42.92989528656042, "o", "*"] +[42.959895286560425, "o", " "] +[42.989895286560426, "o", "F"] +[43.01989528656043, "o", "R"] +[43.04989528656043, "o", "O"] +[43.07989528656043, "o", "M"] +[43.10989528656043, "o", " "] +[43.13989528656043, "o", "m"] +[43.16989528656043, "o", "o"] +[43.199895286560434, "o", "n"] +[43.229895286560435, "o", "t"] +[43.259895286560436, "o", "h"] +[43.28989528656044, "o", "l"] +[43.31989528656044, "o", "y"] +[43.34989528656044, "o", "_"] +[43.37989528656044, "o", "s"] +[43.40989528656044, "o", "u"] +[43.43989528656044, "o", "m"] +[43.469895286560444, "o", "m"] +[43.499895286560445, "o", "a"] +[43.529895286560446, "o", "r"] +[43.55989528656045, "o", "y"] +[43.58989528656045, "o", " "] +[43.61989528656045, "o", "O"] +[43.64989528656045, "o", "R"] +[43.67989528656045, "o", "D"] +[43.70989528656045, "o", "E"] +[43.739895286560454, "o", "R"] +[43.769895286560455, "o", " "] +[43.79989528656046, "o", "B"] +[43.82989528656046, "o", "Y"] +[43.85989528656046, "o", " "] +[43.88989528656046, "o", "m"] +[43.91989528656046, "o", "o"] +[43.94989528656046, "o", "n"] +[43.97989528656046, "o", "t"] +[44.009895286560464, "o", "h"] +[44.039895286560466, "o", " "] +[44.06989528656047, "o", "D"] +[44.09989528656047, "o", "E"] +[44.12989528656047, "o", "S"] +[44.15989528656047, "o", "C"] +[44.18989528656047, "o", " "] +[44.21989528656047, "o", "L"] +[44.24989528656047, "o", "I"] +[44.279895286560475, "o", "M"] +[44.309895286560476, "o", "I"] +[44.33989528656048, "o", "T"] +[44.36989528656048, "o", " "] +[44.39989528656048, "o", "5"] +[44.42989528656048, "o", "\""] +[44.45989528656048, "o", "\r\n"] +[44.48989528656048, "o", "\u001b[0m"] +[44.519895286560484, "o", "\r\n"] +[44.91470620155377, "o", "Image demo/summary:d8b47a92fb09edc06626ed0f897bf091ecc05160390eb5c9b320ea0b9b5cf38a\r\n"] +[44.91471883773846, "o", "CREATE TABLE monthly_summary AS ( SELECT to_char(date, 'YYYYMM') AS month, AVG(precipitation) AS average_precipitation, AVG(snowfall) AS average_snowfall FROM source_data GROUP BY month ORDER BY month ASC)\r\nCreated at 2021-07-26T09:48:49.577887\r\n"] +[44.9165711116795, "o", "Size: 111.78 KiB\r\n"] +[44.91658279418988, "o", "Parent: a90176119118c9aa0a3fe17c9b4e94cc68a85143468ba1a6735e743801da7cd4\r\n\r\nTables:\r\n"] +[44.91727206230206, "o", " monthly_summary\r\n"] +[44.91727969169659, "o", " source_data\r\n"] +[45.328907699585386, "o", "Table demo/summary:d8b47a92fb09edc06626ed0f897bf091ecc05160390eb5c9b320ea0b9b5cf38a/monthly_summary\r\n"] +[45.328926773071714, "o", "\r\n"] +[45.329951257706114, "o", "Size: 2.17 KiB\r\n"] +[45.331025571823545, "o", "Rows: 153\r\n"] +[45.33103987693829, "o", "Columns: \r\n month (text)\r\n average_precipitation (numeric)\r\n average_snowfall (numeric)\r\n\r\nObjects: \r\n o5e29c3cf82603335df66690a448ca1f604f0002d5a3496b18c982a5ea835f3\r\n"] +[45.748750419617124, "o", "201909 0.171667 0\r\n201908 0.139032 0\r\n201907 0.117097 0\r\n201906 0.12 0\r\n201905 0.103548 0\r\n"] +[45.778750419617126, "o", "\u001b[1m"] +[45.80875041961713, "o", "\u001b[36m"] +[45.83875041961713, "o", "\u001b[91m"] +[45.86875041961713, "o", "$"] +[45.89875041961713, "o", " "] +[45.92875041961713, "o", "\u001b[0m"] +[53.81989528656027, "o", "\u001b[H"] +[53.84989528656027, "o", "\u001b[J"] +[53.87989528656027, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image's provenance (generated from its metadata)"] +[53.90989528656027, "o", "\r\n"] +[53.93989528656027, "o", "$"] +[53.96989528656027, "o", " "] +[53.999895286560275, "o", "s"] +[54.029895286560276, "o", "g"] +[54.05989528656028, "o", "r"] +[54.08989528656028, "o", " "] +[54.11989528656028, "o", "p"] +[54.14989528656028, "o", "r"] +[54.17989528656028, "o", "o"] +[54.20989528656028, "o", "v"] +[54.239895286560284, "o", "e"] +[54.269895286560285, "o", "n"] +[54.299895286560286, "o", "a"] +[54.32989528656029, "o", "n"] +[54.35989528656029, "o", "c"] +[54.38989528656029, "o", "e"] +[54.41989528656029, "o", " "] +[54.44989528656029, "o", "d"] +[54.47989528656029, "o", "e"] +[54.509895286560294, "o", "m"] +[54.539895286560295, "o", "o"] +[54.569895286560296, "o", "/"] +[54.5998952865603, "o", "s"] +[54.6298952865603, "o", "u"] +[54.6598952865603, "o", "m"] +[54.6898952865603, "o", "m"] +[54.7198952865603, "o", "a"] +[54.7498952865603, "o", "r"] +[54.779895286560304, "o", "y"] +[54.809895286560305, "o", "\r\n"] +[54.839895286560306, "o", "$"] +[54.86989528656031, "o", " "] +[54.89989528656031, "o", "s"] +[54.92989528656031, "o", "g"] +[54.95989528656031, "o", "r"] +[54.98989528656031, "o", " "] +[55.01989528656031, "o", "p"] +[55.049895286560314, "o", "r"] +[55.079895286560316, "o", "o"] +[55.10989528656032, "o", "v"] +[55.13989528656032, "o", "e"] +[55.16989528656032, "o", "n"] +[55.19989528656032, "o", "a"] +[55.22989528656032, "o", "n"] +[55.25989528656032, "o", "c"] +[55.28989528656032, "o", "e"] +[55.319895286560325, "o", " "] +[55.349895286560326, "o", "-"] +[55.37989528656033, "o", "-"] +[55.40989528656033, "o", "f"] +[55.43989528656033, "o", "u"] +[55.46989528656033, "o", "l"] +[55.49989528656033, "o", "l"] +[55.52989528656033, "o", " "] +[55.559895286560334, "o", "d"] +[55.589895286560335, "o", "e"] +[55.619895286560336, "o", "m"] +[55.64989528656034, "o", "o"] +[55.67989528656034, "o", "/"] +[55.70989528656034, "o", "s"] +[55.73989528656034, "o", "u"] +[55.76989528656034, "o", "m"] +[55.79989528656034, "o", "m"] +[55.829895286560344, "o", "a"] +[55.859895286560345, "o", "r"] +[55.889895286560346, "o", "y"] +[55.91989528656035, "o", "\r\n"] +[55.94989528656035, "o", "\u001b[0m"] +[55.97989528656035, "o", "\r\n"] +[56.36114662170439, "o", "demo/summary:d8b47a92fb09edc06626ed0f897bf091ecc05160390eb5c9b320ea0b9b5cf38a depends on:\r\n"] +[56.361161880493455, "o", "demo/weather:0039a275920ec948c884f0a6c5db8c8233cdcda88b48acfe7cfbf31bb34708f4\r\n"] +[56.746678285599046, "o", "# Splitfile commands used to recreate demo/summary:d8b47a92fb09edc06626ed0f897bf091ecc05160390eb5c9b320ea0b9b5cf38a\r\n"] +[56.746694259643846, "o", "FROM demo/weather:0039a275920ec948c884f0a6c5db8c8233cdcda88b48acfe7cfbf31bb34708f4 IMPORT rdu AS source_data\r\nSQL {CREATE TABLE monthly_summary\r\n AS SELECT to_char(date, 'YYYYMM') AS month\r\n , avg(precipitation) AS average_precipitation\r\n , avg(snowfall) AS average_snowfall\r\n FROM source_data\r\n GROUP BY month\r\n ORDER BY month ASC}\r\n"] +[56.77669425964385, "o", "\u001b[1m"] +[56.80669425964385, "o", "\u001b[36m"] +[56.83669425964385, "o", "\u001b[91m"] +[56.86669425964385, "o", "$"] +[56.89669425964385, "o", " "] +[56.92669425964385, "o", "\u001b[0m"] +[61.956694259643854, "o", "\u001b[H"] +[61.986694259643855, "o", "\u001b[J"] +[62.016694259643856, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We can also see that a new image has been derived from demo/weather"] +[62.04669425964386, "o", "\r\n"] +[62.07669425964386, "o", "$"] +[62.10669425964386, "o", " "] +[62.13669425964386, "o", "s"] +[62.16669425964386, "o", "g"] +[62.19669425964386, "o", "r"] +[62.226694259643864, "o", " "] +[62.256694259643865, "o", "d"] +[62.286694259643866, "o", "e"] +[62.31669425964387, "o", "p"] +[62.34669425964387, "o", "e"] +[62.37669425964387, "o", "n"] +[62.40669425964387, "o", "d"] +[62.43669425964387, "o", "e"] +[62.46669425964387, "o", "n"] +[62.496694259643874, "o", "t"] +[62.526694259643875, "o", "s"] +[62.556694259643876, "o", " "] +[62.58669425964388, "o", "d"] +[62.61669425964388, "o", "e"] +[62.64669425964388, "o", "m"] +[62.67669425964388, "o", "o"] +[62.70669425964388, "o", "/"] +[62.73669425964388, "o", "w"] +[62.766694259643884, "o", "e"] +[62.796694259643886, "o", "a"] +[62.82669425964389, "o", "t"] +[62.85669425964389, "o", "h"] +[62.88669425964389, "o", "e"] +[62.91669425964389, "o", "r"] +[62.94669425964389, "o", "\r\n"] +[62.97669425964389, "o", "\u001b[0m"] +[63.00669425964389, "o", "\r\n"] +[63.37787074089084, "o", "demo/weather:0039a275920ec948c884f0a6c5db8c8233cdcda88b48acfe7cfbf31bb34708f4 is depended on by:\r\n"] +[63.377880516052585, "o", "demo/summary:d8b47a92fb09edc06626ed0f897bf091ecc05160390eb5c9b320ea0b9b5cf38a\r\n"] +[63.407880516052586, "o", "\u001b[1m"] +[63.43788051605259, "o", "\u001b[36m"] +[63.46788051605259, "o", "\u001b[91m"] +[63.49788051605259, "o", "$"] +[63.52788051605259, "o", " "] +[63.55788051605259, "o", "\u001b[0m"] +[68.58788051605259, "o", "\u001b[H"] +[68.6178805160526, "o", "\u001b[J"] +[68.6478805160526, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now pretend there's been a revision to the source historical weather data"] +[68.6778805160526, "o", "\r\n"] +[68.7078805160526, "o", "$"] +[68.7378805160526, "o", " "] +[68.7678805160526, "o", "s"] +[68.7978805160526, "o", "g"] +[68.8278805160526, "o", "r"] +[68.8578805160526, "o", " "] +[68.8878805160526, "o", "s"] +[68.9178805160526, "o", "q"] +[68.9478805160526, "o", "l"] +[68.97788051605261, "o", " "] +[69.00788051605261, "o", "-"] +[69.03788051605261, "o", "s"] +[69.06788051605261, "o", " "] +[69.09788051605261, "o", "d"] +[69.12788051605261, "o", "e"] +[69.15788051605261, "o", "m"] +[69.18788051605262, "o", "o"] +[69.21788051605262, "o", "/"] +[69.24788051605262, "o", "w"] +[69.27788051605262, "o", "e"] +[69.30788051605262, "o", "a"] +[69.33788051605262, "o", "t"] +[69.36788051605262, "o", "h"] +[69.39788051605262, "o", "e"] +[69.42788051605262, "o", "r"] +[69.45788051605263, "o", " "] +[69.48788051605263, "o", "\""] +[69.51788051605263, "o", "U"] +[69.54788051605263, "o", "P"] +[69.57788051605263, "o", "D"] +[69.60788051605263, "o", "A"] +[69.63788051605263, "o", "T"] +[69.66788051605263, "o", "E"] +[69.69788051605263, "o", " "] +[69.72788051605264, "o", "r"] +[69.75788051605264, "o", "d"] +[69.78788051605264, "o", "u"] +[69.81788051605264, "o", " "] +[69.84788051605264, "o", "S"] +[69.87788051605264, "o", "E"] +[69.90788051605264, "o", "T"] +[69.93788051605264, "o", " "] +[69.96788051605265, "o", "p"] +[69.99788051605265, "o", "r"] +[70.02788051605265, "o", "e"] +[70.05788051605265, "o", "c"] +[70.08788051605265, "o", "i"] +[70.11788051605265, "o", "p"] +[70.14788051605265, "o", "i"] +[70.17788051605265, "o", "t"] +[70.20788051605265, "o", "a"] +[70.23788051605266, "o", "t"] +[70.26788051605266, "o", "i"] +[70.29788051605266, "o", "o"] +[70.32788051605266, "o", "n"] +[70.35788051605266, "o", " "] +[70.38788051605266, "o", "="] +[70.41788051605266, "o", " "] +[70.44788051605266, "o", "p"] +[70.47788051605266, "o", "r"] +[70.50788051605267, "o", "e"] +[70.53788051605267, "o", "c"] +[70.56788051605267, "o", "i"] +[70.59788051605267, "o", "p"] +[70.62788051605267, "o", "i"] +[70.65788051605267, "o", "t"] +[70.68788051605267, "o", "a"] +[70.71788051605267, "o", "t"] +[70.74788051605267, "o", "i"] +[70.77788051605268, "o", "o"] +[70.80788051605268, "o", "n"] +[70.83788051605268, "o", " "] +[70.86788051605268, "o", "*"] +[70.89788051605268, "o", " "] +[70.92788051605268, "o", "1"] +[70.95788051605268, "o", "."] +[70.98788051605268, "o", "2"] +[71.01788051605268, "o", " "] +[71.04788051605269, "o", "W"] +[71.07788051605269, "o", "H"] +[71.10788051605269, "o", "E"] +[71.13788051605269, "o", "R"] +[71.16788051605269, "o", "E"] +[71.19788051605269, "o", " "] +[71.22788051605269, "o", "E"] +[71.2578805160527, "o", "X"] +[71.2878805160527, "o", "T"] +[71.3178805160527, "o", "R"] +[71.3478805160527, "o", "A"] +[71.3778805160527, "o", "C"] +[71.4078805160527, "o", "T"] +[71.4378805160527, "o", " "] +[71.4678805160527, "o", "("] +[71.4978805160527, "o", "y"] +[71.5278805160527, "o", "e"] +[71.5578805160527, "o", "a"] +[71.5878805160527, "o", "r"] +[71.61788051605271, "o", " "] +[71.64788051605271, "o", "F"] +[71.67788051605271, "o", "R"] +[71.70788051605271, "o", "O"] +[71.73788051605271, "o", "M"] +[71.76788051605271, "o", " "] +[71.79788051605271, "o", "d"] +[71.82788051605272, "o", "a"] +[71.85788051605272, "o", "t"] +[71.88788051605272, "o", "e"] +[71.91788051605272, "o", ")"] +[71.94788051605272, "o", " "] +[71.97788051605272, "o", "="] +[72.00788051605272, "o", " "] +[72.03788051605272, "o", "2"] +[72.06788051605272, "o", "0"] +[72.09788051605273, "o", "1"] +[72.12788051605273, "o", "2"] +[72.15788051605273, "o", "\""] +[72.18788051605273, "o", "\r\n"] +[72.21788051605273, "o", "$"] +[72.24788051605273, "o", " "] +[72.27788051605273, "o", "s"] +[72.30788051605273, "o", "g"] +[72.33788051605273, "o", "r"] +[72.36788051605274, "o", " "] +[72.39788051605274, "o", "c"] +[72.42788051605274, "o", "o"] +[72.45788051605274, "o", "m"] +[72.48788051605274, "o", "m"] +[72.51788051605274, "o", "i"] +[72.54788051605274, "o", "t"] +[72.57788051605274, "o", " "] +[72.60788051605275, "o", "-"] +[72.63788051605275, "o", "m"] +[72.66788051605275, "o", " "] +[72.69788051605275, "o", "\""] +[72.72788051605275, "o", "R"] +[72.75788051605275, "o", "e"] +[72.78788051605275, "o", "v"] +[72.81788051605275, "o", "i"] +[72.84788051605275, "o", "s"] +[72.87788051605276, "o", "i"] +[72.90788051605276, "o", "o"] +[72.93788051605276, "o", "n"] +[72.96788051605276, "o", " "] +[72.99788051605276, "o", "t"] +[73.02788051605276, "o", "o"] +[73.05788051605276, "o", " "] +[73.08788051605276, "o", "t"] +[73.11788051605276, "o", "h"] +[73.14788051605277, "o", "e"] +[73.17788051605277, "o", " "] +[73.20788051605277, "o", "2"] +[73.23788051605277, "o", "0"] +[73.26788051605277, "o", "1"] +[73.29788051605277, "o", "2"] +[73.32788051605277, "o", " "] +[73.35788051605277, "o", "r"] +[73.38788051605277, "o", "a"] +[73.41788051605278, "o", "i"] +[73.44788051605278, "o", "n"] +[73.47788051605278, "o", "f"] +[73.50788051605278, "o", "a"] +[73.53788051605278, "o", "l"] +[73.56788051605278, "o", "l"] +[73.59788051605278, "o", " "] +[73.62788051605278, "o", "d"] +[73.65788051605278, "o", "a"] +[73.68788051605279, "o", "t"] +[73.71788051605279, "o", "a"] +[73.74788051605279, "o", "\""] +[73.77788051605279, "o", " "] +[73.80788051605279, "o", "d"] +[73.83788051605279, "o", "e"] +[73.8678805160528, "o", "m"] +[73.8978805160528, "o", "o"] +[73.9278805160528, "o", "/"] +[73.9578805160528, "o", "w"] +[73.9878805160528, "o", "e"] +[74.0178805160528, "o", "a"] +[74.0478805160528, "o", "t"] +[74.0778805160528, "o", "h"] +[74.1078805160528, "o", "e"] +[74.1378805160528, "o", "r"] +[74.1678805160528, "o", "\r\n"] +[74.1978805160528, "o", "$"] +[74.2278805160528, "o", " "] +[74.25788051605281, "o", "s"] +[74.28788051605281, "o", "g"] +[74.31788051605281, "o", "r"] +[74.34788051605281, "o", " "] +[74.37788051605281, "o", "t"] +[74.40788051605281, "o", "a"] +[74.43788051605281, "o", "g"] +[74.46788051605282, "o", " "] +[74.49788051605282, "o", "d"] +[74.52788051605282, "o", "e"] +[74.55788051605282, "o", "m"] +[74.58788051605282, "o", "o"] +[74.61788051605282, "o", "/"] +[74.64788051605282, "o", "w"] +[74.67788051605282, "o", "e"] +[74.70788051605282, "o", "a"] +[74.73788051605283, "o", "t"] +[74.76788051605283, "o", "h"] +[74.79788051605283, "o", "e"] +[74.82788051605283, "o", "r"] +[74.85788051605283, "o", " "] +[74.88788051605283, "o", "r"] +[74.91788051605283, "o", "e"] +[74.94788051605283, "o", "v"] +[74.97788051605283, "o", "i"] +[75.00788051605284, "o", "s"] +[75.03788051605284, "o", "e"] +[75.06788051605284, "o", "d"] +[75.09788051605284, "o", "_"] +[75.12788051605284, "o", "d"] +[75.15788051605284, "o", "a"] +[75.18788051605284, "o", "t"] +[75.21788051605284, "o", "a"] +[75.24788051605285, "o", "\r\n"] +[75.27788051605285, "o", "\u001b[0m"] +[75.30788051605285, "o", "\r\n"] +[75.68905221939147, "o", "Committing demo/weather...\r\n"] +[75.72243701934875, "o", "Storing and indexing table rdu\r\n"] +[75.90400254249633, "o", "Committed demo/weather as 17e861154769.\r\n"] +[76.28650152206481, "o", "Tagged demo/weather:17e861154769c2c24fe4d12767abe90ada8eb2927bb91deda422fe39b3811f53 with revised_data.\r\n"] +[76.31650152206481, "o", "\u001b[1m"] +[76.34650152206481, "o", "\u001b[36m"] +[76.37650152206481, "o", "\u001b[91m"] +[76.40650152206481, "o", "$"] +[76.43650152206482, "o", " "] +[76.46650152206482, "o", "\u001b[0m"] +[81.49650152206482, "o", "\u001b[H"] +[81.52650152206482, "o", "\u001b[J"] +[81.55650152206482, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Use the derivative image's provenance to rebuild it against the revised version"] +[81.58650152206482, "o", "\r\n"] +[81.61650152206482, "o", "$"] +[81.64650152206482, "o", " "] +[81.67650152206483, "o", "s"] +[81.70650152206483, "o", "g"] +[81.73650152206483, "o", "r"] +[81.76650152206483, "o", " "] +[81.79650152206483, "o", "r"] +[81.82650152206483, "o", "e"] +[81.85650152206483, "o", "b"] +[81.88650152206483, "o", "u"] +[81.91650152206483, "o", "i"] +[81.94650152206484, "o", "l"] +[81.97650152206484, "o", "d"] +[82.00650152206484, "o", " "] +[82.03650152206484, "o", "d"] +[82.06650152206484, "o", "e"] +[82.09650152206484, "o", "m"] +[82.12650152206484, "o", "o"] +[82.15650152206484, "o", "/"] +[82.18650152206484, "o", "s"] +[82.21650152206485, "o", "u"] +[82.24650152206485, "o", "m"] +[82.27650152206485, "o", "m"] +[82.30650152206485, "o", "a"] +[82.33650152206485, "o", "r"] +[82.36650152206485, "o", "y"] +[82.39650152206485, "o", " "] +[82.42650152206485, "o", "-"] +[82.45650152206485, "o", "-"] +[82.48650152206486, "o", "a"] +[82.51650152206486, "o", "g"] +[82.54650152206486, "o", "a"] +[82.57650152206486, "o", "i"] +[82.60650152206486, "o", "n"] +[82.63650152206486, "o", "s"] +[82.66650152206486, "o", "t"] +[82.69650152206486, "o", " "] +[82.72650152206486, "o", "d"] +[82.75650152206487, "o", "e"] +[82.78650152206487, "o", "m"] +[82.81650152206487, "o", "o"] +[82.84650152206487, "o", "/"] +[82.87650152206487, "o", "w"] +[82.90650152206487, "o", "e"] +[82.93650152206487, "o", "a"] +[82.96650152206487, "o", "t"] +[82.99650152206488, "o", "h"] +[83.02650152206488, "o", "e"] +[83.05650152206488, "o", "r"] +[83.08650152206488, "o", ":"] +[83.11650152206488, "o", "r"] +[83.14650152206488, "o", "e"] +[83.17650152206488, "o", "v"] +[83.20650152206488, "o", "i"] +[83.23650152206488, "o", "s"] +[83.26650152206489, "o", "e"] +[83.29650152206489, "o", "d"] +[83.32650152206489, "o", "_"] +[83.35650152206489, "o", "d"] +[83.38650152206489, "o", "a"] +[83.41650152206489, "o", "t"] +[83.44650152206489, "o", "a"] +[83.4765015220649, "o", "\r\n"] +[83.5065015220649, "o", "$"] +[83.5365015220649, "o", " "] +[83.5665015220649, "o", "s"] +[83.5965015220649, "o", "g"] +[83.6265015220649, "o", "r"] +[83.6565015220649, "o", " "] +[83.6865015220649, "o", "t"] +[83.7165015220649, "o", "a"] +[83.7465015220649, "o", "g"] +[83.7765015220649, "o", " "] +[83.8065015220649, "o", "d"] +[83.8365015220649, "o", "e"] +[83.86650152206491, "o", "m"] +[83.89650152206491, "o", "o"] +[83.92650152206491, "o", "/"] +[83.95650152206491, "o", "s"] +[83.98650152206491, "o", "u"] +[84.01650152206491, "o", "m"] +[84.04650152206491, "o", "m"] +[84.07650152206492, "o", "a"] +[84.10650152206492, "o", "r"] +[84.13650152206492, "o", "y"] +[84.16650152206492, "o", " "] +[84.19650152206492, "o", "b"] +[84.22650152206492, "o", "a"] +[84.25650152206492, "o", "s"] +[84.28650152206492, "o", "e"] +[84.31650152206493, "o", "d"] +[84.34650152206493, "o", "_"] +[84.37650152206493, "o", "o"] +[84.40650152206493, "o", "n"] +[84.43650152206493, "o", "_"] +[84.46650152206493, "o", "r"] +[84.49650152206493, "o", "e"] +[84.52650152206493, "o", "v"] +[84.55650152206493, "o", "i"] +[84.58650152206494, "o", "s"] +[84.61650152206494, "o", "e"] +[84.64650152206494, "o", "d"] +[84.67650152206494, "o", "\r\n"] +[84.70650152206494, "o", "\u001b[0m"] +[84.73650152206494, "o", "\r\n"] +[85.11298233985974, "o", "Rerunning demo/summary:d8b47a92fb09edc06626ed0f897bf091ecc05160390eb5c9b320ea0b9b5cf38a against:\r\n"] +[85.11299283027722, "o", "demo/weather:revised_data\r\n"] +[85.20245081901624, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather:revised_data IMPORT rdu AS source_data\u001b[0m\r\n"] +[85.20367223739697, "o", "Resolving repository demo/weather\r\n"] +[85.20792467117383, "o", "Importing 1 table from demo/weather:17e861154769 into demo/summary\r\n"] +[85.35792047500684, "o", " ---> d7606bc5ccf3\r\n"] +[85.35820109367444, "o", "\u001b[1m\r\nStep 2/2 : SQL {CREATE TABLE monthly_summary AS SELECT to_char(dat...\u001b[0m\r\n"] +[85.36349184036328, "o", "Executing SQL...\r\n"] +[85.58377320289685, "o", "Committing demo/summary...\r\n"] +[85.61149413108899, "o", "Processing table monthly_summary\r\n"] +[85.71171123504712, "o", " ---> 061c4e06abff\r\n"] +[85.71488363266064, "o", "Successfully built demo/summary:061c4e06abff.\r\n"] +[86.12564141273572, "o", "Tagged demo/summary:061c4e06abffacaebb056dd82e4286bc60f567e4fae4b4a8a7fed8ad70311d08 with based_on_revised.\r\n"] +[86.15564141273572, "o", "\u001b[1m"] +[86.18564141273572, "o", "\u001b[36m"] +[86.21564141273572, "o", "\u001b[91m"] +[86.24564141273572, "o", "$"] +[86.27564141273572, "o", " "] +[86.30564141273572, "o", "\u001b[0m"] +[91.33564141273573, "o", "\u001b[H"] +[91.36564141273573, "o", "\u001b[J"] +[91.39564141273573, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Compare the two resultant datasets"] +[91.42564141273573, "o", "\r\n"] +[91.45564141273573, "o", "$"] +[91.48564141273573, "o", " "] +[91.51564141273573, "o", "s"] +[91.54564141273573, "o", "g"] +[91.57564141273573, "o", "r"] +[91.60564141273574, "o", " "] +[91.63564141273574, "o", "d"] +[91.66564141273574, "o", "i"] +[91.69564141273574, "o", "f"] +[91.72564141273574, "o", "f"] +[91.75564141273574, "o", " "] +[91.78564141273574, "o", "d"] +[91.81564141273574, "o", "e"] +[91.84564141273574, "o", "m"] +[91.87564141273575, "o", "o"] +[91.90564141273575, "o", "/"] +[91.93564141273575, "o", "s"] +[91.96564141273575, "o", "u"] +[91.99564141273575, "o", "m"] +[92.02564141273575, "o", "m"] +[92.05564141273575, "o", "a"] +[92.08564141273575, "o", "r"] +[92.11564141273576, "o", "y"] +[92.14564141273576, "o", " "] +[92.17564141273576, "o", "b"] +[92.20564141273576, "o", "a"] +[92.23564141273576, "o", "s"] +[92.26564141273576, "o", "e"] +[92.29564141273576, "o", "d"] +[92.32564141273576, "o", "_"] +[92.35564141273576, "o", "o"] +[92.38564141273577, "o", "n"] +[92.41564141273577, "o", "_"] +[92.44564141273577, "o", "i"] +[92.47564141273577, "o", "n"] +[92.50564141273577, "o", "i"] +[92.53564141273577, "o", "t"] +[92.56564141273577, "o", "i"] +[92.59564141273577, "o", "a"] +[92.62564141273577, "o", "l"] +[92.65564141273578, "o", " "] +[92.68564141273578, "o", "b"] +[92.71564141273578, "o", "a"] +[92.74564141273578, "o", "s"] +[92.77564141273578, "o", "e"] +[92.80564141273578, "o", "d"] +[92.83564141273578, "o", "_"] +[92.86564141273578, "o", "o"] +[92.89564141273578, "o", "n"] +[92.92564141273579, "o", "_"] +[92.95564141273579, "o", "r"] +[92.98564141273579, "o", "e"] +[93.01564141273579, "o", "v"] +[93.04564141273579, "o", "i"] +[93.07564141273579, "o", "s"] +[93.10564141273579, "o", "e"] +[93.1356414127358, "o", "d"] +[93.1656414127358, "o", " "] +[93.1956414127358, "o", "-"] +[93.2256414127358, "o", "-"] +[93.2556414127358, "o", "v"] +[93.2856414127358, "o", "e"] +[93.3156414127358, "o", "r"] +[93.3456414127358, "o", "b"] +[93.3756414127358, "o", "o"] +[93.4056414127358, "o", "s"] +[93.4356414127358, "o", "e"] +[93.4656414127358, "o", " "] +[93.49564141273581, "o", "-"] +[93.52564141273581, "o", "-"] +[93.55564141273581, "o", "t"] +[93.58564141273581, "o", "a"] +[93.61564141273581, "o", "b"] +[93.64564141273581, "o", "l"] +[93.67564141273581, "o", "e"] +[93.70564141273582, "o", "-"] +[93.73564141273582, "o", "n"] +[93.76564141273582, "o", "a"] +[93.79564141273582, "o", "m"] +[93.82564141273582, "o", "e"] +[93.85564141273582, "o", " "] +[93.88564141273582, "o", "m"] +[93.91564141273582, "o", "o"] +[93.94564141273582, "o", "n"] +[93.97564141273583, "o", "t"] +[94.00564141273583, "o", "h"] +[94.03564141273583, "o", "l"] +[94.06564141273583, "o", "y"] +[94.09564141273583, "o", "_"] +[94.12564141273583, "o", "s"] +[94.15564141273583, "o", "u"] +[94.18564141273583, "o", "m"] +[94.21564141273583, "o", "m"] +[94.24564141273584, "o", "a"] +[94.27564141273584, "o", "r"] +[94.30564141273584, "o", "y"] +[94.33564141273584, "o", "\r\n"] +[94.36564141273584, "o", "\u001b[0m"] +[94.39564141273584, "o", "\r\n"] +[94.96512135505762, "o", "Between d8b47a92fb09 and 061c4e06abff: \r\n"] +[94.9654854202279, "o", "monthly_summary: added 12 rows, removed 12 rows.\r\n"] +[94.96594556808557, "o", "- ('201201', Decimal('0.06322580645161290323'), Decimal('0E-20'))\r\n- ('201202', Decimal('0.06689655172413793103'), Decimal('0.03137931034482758621'))\r\n- ('201203', Decimal('0.17290322580645161290'), Decimal('0E-20'))\r\n- ('201204', Decimal('0.08766666666666666667'), Decimal('0E-20'))\r\n- ('201205', Decimal('0.12806451612903225806'), Decimal('0E-20'))\r\n- ('201206', Decimal('0.10333333333333333333'), Decimal('0E-20'))\r\n- ('201207', Decimal('0.14967741935483870968'), Decimal('0E-20'))\r\n- ('201208', Decimal('0.13"] +[94.96595748901453, "o", "000000000000000000'), Decimal('0E-20'))\r\n- ('201209', Decimal('0.26100000000000000000'), Decimal('0E-20'))\r\n- ('201210', Decimal('0.05903225806451612903'), Decimal('0E-20'))\r\n- ('201211', Decimal('0.01866666666666666667'), Decimal('0E-20'))\r\n- ('201212', Decimal('0.09483870967741935484'), Decimal('0E-20'))\r\n+ ('201201', Decimal('0.07587096774193548387'), Decimal('0E-20'))\r\n+ ('201202', Decimal('0.08027586206896551724'), Decimal('0.03137931034482758621'))\r\n+ ('201203', Decimal('0.20748387096774193548'), Deci"] +[94.965963449479, "o", "mal('0E-20'))\r\n+ ('201204', Decimal('0.10520000000000000000'), Decimal('0E-20'))\r\n+ ('201205', Decimal('0.15367741935483870968'), Decimal('0E-20'))\r\n+ ('201206', Decimal('0.12400000000000000000'), Decimal('0E-20'))\r\n+ ('201207', Decimal('0.17961290322580645161'), Decimal('0E-20'))\r\n+ ('201208', Decimal('0.15600000000000000000'), Decimal('0E-20'))\r\n+ ('201209', Decimal('0.31320000000000000000'), Decimal('0E-20'))\r\n+ ('201210', Decimal('0.07083870967741935484'), Decimal('0E-20'))\r\n+ ('201211', Decimal('0.0224"] +[94.96596845626917, "o", "0000000000000000'), Decimal('0E-20'))\r\n+ ('201212', Decimal('0.11380645161290322581'), Decimal('0E-20'))\r\n"] +[94.99596845626917, "o", "\u001b[1m"] +[95.02596845626917, "o", "\u001b[36m"] +[95.05596845626917, "o", "\u001b[91m"] +[95.08596845626917, "o", "$"] +[95.11596845626917, "o", " "] +[95.14596845626917, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.15/splitgraph-cloud.cast b/content/casts/versioned/archive/v0.2.15/splitgraph-cloud.cast new file mode 100644 index 00000000..7c6cb8f5 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.15/splitgraph-cloud.cast @@ -0,0 +1,1336 @@ +{"version": 2, "width": 100, "height": 22, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1627292873, "metadata": {"tss": [{"h": "Make sure you are registered and logged into Splitgraph Cloud.", "ts": 0.06}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport", "ts": 8.849999999999994}, {"h": "Push the dataset to Splitgraph", "ts": 21.43487175941455}, {"h": "Upload some dataset metadata as well.", "ts": 29.74125244140616}, {"h": "Perform a request against an automatically-generated", "ts": 40.24125244140616}, {"h": "sgr also has a shorthand to access the query API", "ts": 50.021252441406304}, {"h": "You can also run a query against the Splitgraph Data Delivery Network.", "ts": 59.02125244140642}, {"h": "The query API also supports running one-off Splitfile commands against a repository,", "ts": 70.21125244140661}, {"h": "Run another command against the new layer to join the two datasets", "ts": 79.72302269935658}, {"h": "Pull the dataset and check out the new image", "ts": 89.32463202476565}, {"h": "Inspect the generated data", "ts": 102.48408754348826}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make sure you are registered and logged into Splitgraph Cloud."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Test the connection.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "s"] +[0.27, "o", "g"] +[0.30000000000000004, "o", "r"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "q"] +[0.42000000000000015, "o", "l"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "-"] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", " "] +[0.5700000000000003, "o", "d"] +[0.6000000000000003, "o", "a"] +[0.6300000000000003, "o", "t"] +[0.6600000000000004, "o", "a"] +[0.6900000000000004, "o", "."] +[0.7200000000000004, "o", "s"] +[0.7500000000000004, "o", "p"] +[0.7800000000000005, "o", "l"] +[0.8100000000000005, "o", "i"] +[0.8400000000000005, "o", "t"] +[0.8700000000000006, "o", "g"] +[0.9000000000000006, "o", "r"] +[0.9300000000000006, "o", "a"] +[0.9600000000000006, "o", "p"] +[0.9900000000000007, "o", "h"] +[1.0200000000000007, "o", "."] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "o"] +[1.1100000000000008, "o", "m"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "\""] +[1.2000000000000008, "o", "S"] +[1.2300000000000009, "o", "E"] +[1.260000000000001, "o", "L"] +[1.290000000000001, "o", "E"] +[1.320000000000001, "o", "C"] +[1.350000000000001, "o", "T"] +[1.380000000000001, "o", " "] +[1.410000000000001, "o", "s"] +[1.440000000000001, "o", "p"] +[1.470000000000001, "o", "l"] +[1.500000000000001, "o", "i"] +[1.5300000000000011, "o", "t"] +[1.5600000000000012, "o", "g"] +[1.5900000000000012, "o", "r"] +[1.6200000000000012, "o", "a"] +[1.6500000000000012, "o", "p"] +[1.6800000000000013, "o", "h"] +[1.7100000000000013, "o", "_"] +[1.7400000000000013, "o", "a"] +[1.7700000000000014, "o", "p"] +[1.8000000000000014, "o", "i"] +[1.8300000000000014, "o", "."] +[1.8600000000000014, "o", "g"] +[1.8900000000000015, "o", "e"] +[1.9200000000000015, "o", "t"] +[1.9500000000000015, "o", "_"] +[1.9800000000000015, "o", "c"] +[2.0100000000000016, "o", "u"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "r"] +[2.100000000000001, "o", "e"] +[2.130000000000001, "o", "n"] +[2.1600000000000006, "o", "t"] +[2.1900000000000004, "o", "_"] +[2.22, "o", "u"] +[2.25, "o", "s"] +[2.28, "o", "e"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "n"] +[2.369999999999999, "o", "a"] +[2.399999999999999, "o", "m"] +[2.429999999999999, "o", "e"] +[2.4599999999999986, "o", "("] +[2.4899999999999984, "o", ")"] +[2.5199999999999982, "o", "\""] +[2.549999999999998, "o", "\r\n"] +[2.579999999999998, "o", "\u001b[0m"] +[2.6099999999999977, "o", "\r\n"] +[3.6099999999999977, "o", "splitgraph-demo\r\n"] +[3.6399999999999975, "o", "\u001b[1m"] +[3.6699999999999973, "o", "\u001b[36m"] +[3.699999999999997, "o", "\u001b[91m"] +[3.729999999999997, "o", "$"] +[3.7599999999999967, "o", " "] +[3.7899999999999965, "o", "\u001b[0m"] +[8.819999999999995, "o", "\u001b[H"] +[8.849999999999994, "o", "\u001b[J"] +[8.879999999999994, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport"] +[8.909999999999993, "o", "\r\n"] +[8.939999999999992, "o", "$"] +[8.969999999999992, "o", " "] +[8.999999999999991, "o", "s"] +[9.02999999999999, "o", "g"] +[9.05999999999999, "o", "r"] +[9.08999999999999, "o", " "] +[9.119999999999989, "o", "i"] +[9.149999999999988, "o", "n"] +[9.179999999999987, "o", "i"] +[9.209999999999987, "o", "t"] +[9.239999999999986, "o", " "] +[9.269999999999985, "o", "w"] +[9.299999999999985, "o", "e"] +[9.329999999999984, "o", "a"] +[9.359999999999983, "o", "t"] +[9.389999999999983, "o", "h"] +[9.419999999999982, "o", "e"] +[9.449999999999982, "o", "r"] +[9.47999999999998, "o", "\r\n"] +[9.50999999999998, "o", "$"] +[9.53999999999998, "o", " "] +[9.569999999999979, "o", "s"] +[9.599999999999978, "o", "g"] +[9.629999999999978, "o", "r"] +[9.659999999999977, "o", " "] +[9.689999999999976, "o", "c"] +[9.719999999999976, "o", "s"] +[9.749999999999975, "o", "v"] +[9.779999999999974, "o", " "] +[9.809999999999974, "o", "i"] +[9.839999999999973, "o", "m"] +[9.869999999999973, "o", "p"] +[9.899999999999972, "o", "o"] +[9.929999999999971, "o", "r"] +[9.95999999999997, "o", "t"] +[9.98999999999997, "o", " "] +[10.01999999999997, "o", "-"] +[10.049999999999969, "o", "f"] +[10.079999999999968, "o", " "] +[10.109999999999967, "o", "."] +[10.139999999999967, "o", "."] +[10.169999999999966, "o", "/"] +[10.199999999999966, "o", "i"] +[10.229999999999965, "o", "m"] +[10.259999999999964, "o", "p"] +[10.289999999999964, "o", "o"] +[10.319999999999963, "o", "r"] +[10.349999999999962, "o", "t"] +[10.379999999999962, "o", "-"] +[10.409999999999961, "o", "f"] +[10.43999999999996, "o", "r"] +[10.46999999999996, "o", "o"] +[10.49999999999996, "o", "m"] +[10.529999999999959, "o", "-"] +[10.559999999999958, "o", "c"] +[10.589999999999957, "o", "s"] +[10.619999999999957, "o", "v"] +[10.649999999999956, "o", "/"] +[10.679999999999955, "o", "r"] +[10.709999999999955, "o", "d"] +[10.739999999999954, "o", "u"] +[10.769999999999953, "o", "-"] +[10.799999999999953, "o", "w"] +[10.829999999999952, "o", "e"] +[10.859999999999951, "o", "a"] +[10.88999999999995, "o", "t"] +[10.91999999999995, "o", "h"] +[10.94999999999995, "o", "e"] +[10.979999999999949, "o", "r"] +[11.009999999999948, "o", "-"] +[11.039999999999948, "o", "h"] +[11.069999999999947, "o", "i"] +[11.099999999999946, "o", "s"] +[11.129999999999946, "o", "t"] +[11.159999999999945, "o", "o"] +[11.189999999999944, "o", "r"] +[11.219999999999944, "o", "y"] +[11.249999999999943, "o", "."] +[11.279999999999943, "o", "c"] +[11.309999999999942, "o", "s"] +[11.339999999999941, "o", "v"] +[11.36999999999994, "o", " "] +[11.39999999999994, "o", "\\"] +[11.42999999999994, "o", "\r\n "] +[11.459999999999939, "o", "-"] +[11.489999999999938, "o", "k"] +[11.519999999999937, "o", " "] +[11.549999999999937, "o", "d"] +[11.579999999999936, "o", "a"] +[11.609999999999935, "o", "t"] +[11.639999999999935, "o", "e"] +[11.669999999999934, "o", " "] +[11.699999999999934, "o", "\\"] +[11.729999999999933, "o", "\r\n "] +[11.759999999999932, "o", "-"] +[11.789999999999932, "o", "t"] +[11.819999999999931, "o", " "] +[11.84999999999993, "o", "d"] +[11.87999999999993, "o", "a"] +[11.909999999999929, "o", "t"] +[11.939999999999928, "o", "e"] +[11.969999999999928, "o", " "] +[11.999999999999927, "o", "t"] +[12.029999999999927, "o", "i"] +[12.059999999999926, "o", "m"] +[12.089999999999925, "o", "e"] +[12.119999999999925, "o", "s"] +[12.149999999999924, "o", "t"] +[12.179999999999923, "o", "a"] +[12.209999999999923, "o", "m"] +[12.239999999999922, "o", "p"] +[12.269999999999921, "o", " "] +[12.29999999999992, "o", "\\"] +[12.32999999999992, "o", "\r\n "] +[12.35999999999992, "o", "-"] +[12.389999999999919, "o", "-"] +[12.419999999999918, "o", "s"] +[12.449999999999918, "o", "e"] +[12.479999999999917, "o", "p"] +[12.509999999999916, "o", "a"] +[12.539999999999916, "o", "r"] +[12.569999999999915, "o", "a"] +[12.599999999999914, "o", "t"] +[12.629999999999914, "o", "o"] +[12.659999999999913, "o", "r"] +[12.689999999999912, "o", " "] +[12.719999999999912, "o", "\""] +[12.749999999999911, "o", ";"] +[12.77999999999991, "o", "\""] +[12.80999999999991, "o", " "] +[12.83999999999991, "o", "\\"] +[12.869999999999909, "o", "\r\n "] +[12.899999999999908, "o", "w"] +[12.929999999999907, "o", "e"] +[12.959999999999907, "o", "a"] +[12.989999999999906, "o", "t"] +[13.019999999999905, "o", "h"] +[13.049999999999905, "o", "e"] +[13.079999999999904, "o", "r"] +[13.109999999999904, "o", " "] +[13.139999999999903, "o", "r"] +[13.169999999999902, "o", "d"] +[13.199999999999902, "o", "u"] +[13.229999999999901, "o", "\r\n"] +[13.2599999999999, "o", "$"] +[13.2899999999999, "o", " "] +[13.319999999999899, "o", "s"] +[13.349999999999898, "o", "g"] +[13.379999999999898, "o", "r"] +[13.409999999999897, "o", " "] +[13.439999999999896, "o", "c"] +[13.469999999999896, "o", "o"] +[13.499999999999895, "o", "m"] +[13.529999999999895, "o", "m"] +[13.559999999999894, "o", "i"] +[13.589999999999893, "o", "t"] +[13.619999999999893, "o", " "] +[13.649999999999892, "o", "w"] +[13.679999999999891, "o", "e"] +[13.70999999999989, "o", "a"] +[13.73999999999989, "o", "t"] +[13.76999999999989, "o", "h"] +[13.799999999999889, "o", "e"] +[13.829999999999888, "o", "r"] +[13.859999999999888, "o", "\r\n"] +[13.889999999999887, "o", "$"] +[13.919999999999886, "o", " "] +[13.949999999999886, "o", "s"] +[13.979999999999885, "o", "g"] +[14.009999999999884, "o", "r"] +[14.039999999999884, "o", " "] +[14.069999999999883, "o", "t"] +[14.099999999999882, "o", "a"] +[14.129999999999882, "o", "g"] +[14.159999999999881, "o", " "] +[14.18999999999988, "o", "w"] +[14.21999999999988, "o", "e"] +[14.24999999999988, "o", "a"] +[14.279999999999879, "o", "t"] +[14.309999999999878, "o", "h"] +[14.339999999999877, "o", "e"] +[14.369999999999877, "o", "r"] +[14.399999999999876, "o", " "] +[14.429999999999875, "o", "i"] +[14.459999999999875, "o", "n"] +[14.489999999999874, "o", "i"] +[14.519999999999873, "o", "t"] +[14.549999999999873, "o", "i"] +[14.579999999999872, "o", "a"] +[14.609999999999872, "o", "l"] +[14.639999999999871, "o", "_"] +[14.66999999999987, "o", "d"] +[14.69999999999987, "o", "a"] +[14.729999999999869, "o", "t"] +[14.759999999999868, "o", "a"] +[14.789999999999868, "o", "\r\n"] +[14.819999999999867, "o", "\u001b[0m"] +[14.849999999999866, "o", "\r\n"] +[15.262794351577625, "o", "Initialized empty repository weather\r\n"] +[15.620786762237415, "o", "Committing weather...\r\n"] +[15.645410156249866, "o", "Processing table rdu\r\n"] +[15.830232000350819, "o", "Committed weather as 68f856de4171.\r\n"] +[16.19487175941454, "o", "Tagged weather:68f856de41717452d651334c6ef7ab17bb3dbe540ed4abb28ca81dbfb680d0ae with initial_data.\r\n"] +[16.22487175941454, "o", "\u001b[1m"] +[16.25487175941454, "o", "\u001b[36m"] +[16.284871759414543, "o", "\u001b[91m"] +[16.314871759414544, "o", "$"] +[16.344871759414545, "o", " "] +[16.374871759414546, "o", "\u001b[0m"] +[21.404871759414547, "o", "\u001b[H"] +[21.43487175941455, "o", "\u001b[J"] +[21.46487175941455, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset to Splitgraph"] +[21.49487175941455, "o", "\r\n"] +[21.52487175941455, "o", "$"] +[21.554871759414553, "o", " "] +[21.584871759414554, "o", "s"] +[21.614871759414555, "o", "g"] +[21.644871759414556, "o", "r"] +[21.674871759414557, "o", " "] +[21.70487175941456, "o", "p"] +[21.73487175941456, "o", "u"] +[21.76487175941456, "o", "s"] +[21.794871759414562, "o", "h"] +[21.824871759414563, "o", " "] +[21.854871759414564, "o", "w"] +[21.884871759414565, "o", "e"] +[21.914871759414567, "o", "a"] +[21.944871759414568, "o", "t"] +[21.97487175941457, "o", "h"] +[22.00487175941457, "o", "e"] +[22.03487175941457, "o", "r"] +[22.064871759414572, "o", "\r\n"] +[22.094871759414573, "o", "\u001b[0m"] +[22.124871759414575, "o", "\r\n"] +[22.49355223655691, "o", "Pushing weather to splitgraph-demo/weather on remote data.splitgraph.com\r\nGathering remote metadata...\r\n"] +[23.49355223655691, "o", "No objects to upload.\r\n"] +[24.49355223655691, "o", "Uploaded metadata for 2 images, 1 table, 0 objects and 1 tag.\r\n"] +[24.50125244140615, "o", "Setting upstream for weather to splitgraph-demo/weather.\r\n"] +[24.531252441406153, "o", "\u001b[1m"] +[24.561252441406154, "o", "\u001b[36m"] +[24.591252441406155, "o", "\u001b[91m"] +[24.621252441406156, "o", "$"] +[24.651252441406157, "o", " "] +[24.68125244140616, "o", "\u001b[0m"] +[29.71125244140616, "o", "\u001b[H"] +[29.74125244140616, "o", "\u001b[J"] +[29.771252441406162, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Upload some dataset metadata as well."] +[29.801252441406163, "o", "\r\n"] +[29.831252441406164, "o", "$"] +[29.861252441406165, "o", " "] +[29.891252441406166, "o", "c"] +[29.921252441406168, "o", "a"] +[29.95125244140617, "o", "t"] +[29.98125244140617, "o", " "] +[30.01125244140617, "o", "d"] +[30.041252441406172, "o", "a"] +[30.071252441406173, "o", "t"] +[30.101252441406174, "o", "a"] +[30.131252441406176, "o", "s"] +[30.161252441406177, "o", "e"] +[30.191252441406178, "o", "t"] +[30.22125244140618, "o", "-"] +[30.25125244140618, "o", "m"] +[30.28125244140618, "o", "e"] +[30.311252441406182, "o", "t"] +[30.341252441406183, "o", "a"] +[30.371252441406185, "o", "d"] +[30.401252441406186, "o", "a"] +[30.431252441406187, "o", "t"] +[30.461252441406188, "o", "a"] +[30.49125244140619, "o", "."] +[30.52125244140619, "o", "y"] +[30.55125244140619, "o", "m"] +[30.581252441406193, "o", "l"] +[30.611252441406194, "o", "\r\n"] +[30.641252441406195, "o", "$"] +[30.671252441406196, "o", " "] +[30.701252441406197, "o", "c"] +[30.7312524414062, "o", "a"] +[30.7612524414062, "o", "t"] +[30.7912524414062, "o", " "] +[30.8212524414062, "o", "d"] +[30.851252441406203, "o", "a"] +[30.881252441406204, "o", "t"] +[30.911252441406205, "o", "a"] +[30.941252441406206, "o", "s"] +[30.971252441406207, "o", "e"] +[31.00125244140621, "o", "t"] +[31.03125244140621, "o", "-"] +[31.06125244140621, "o", "r"] +[31.091252441406212, "o", "e"] +[31.121252441406213, "o", "a"] +[31.151252441406214, "o", "d"] +[31.181252441406215, "o", "m"] +[31.211252441406216, "o", "e"] +[31.241252441406218, "o", "."] +[31.27125244140622, "o", "m"] +[31.30125244140622, "o", "d"] +[31.33125244140622, "o", "\r\n"] +[31.361252441406222, "o", "$"] +[31.391252441406223, "o", " "] +[31.421252441406224, "o", "s"] +[31.451252441406226, "o", "g"] +[31.481252441406227, "o", "r"] +[31.511252441406228, "o", " "] +[31.54125244140623, "o", "c"] +[31.57125244140623, "o", "l"] +[31.60125244140623, "o", "o"] +[31.631252441406232, "o", "u"] +[31.661252441406234, "o", "d"] +[31.691252441406235, "o", " "] +[31.721252441406236, "o", "m"] +[31.751252441406237, "o", "e"] +[31.781252441406238, "o", "t"] +[31.81125244140624, "o", "a"] +[31.84125244140624, "o", "d"] +[31.87125244140624, "o", "a"] +[31.901252441406243, "o", "t"] +[31.931252441406244, "o", "a"] +[31.961252441406245, "o", " "] +[31.991252441406246, "o", "s"] +[32.02125244140625, "o", "p"] +[32.05125244140625, "o", "l"] +[32.08125244140625, "o", "i"] +[32.11125244140625, "o", "t"] +[32.14125244140625, "o", "g"] +[32.17125244140625, "o", "r"] +[32.201252441406254, "o", "a"] +[32.231252441406255, "o", "p"] +[32.261252441406256, "o", "h"] +[32.29125244140626, "o", "-"] +[32.32125244140626, "o", "d"] +[32.35125244140626, "o", "e"] +[32.38125244140626, "o", "m"] +[32.41125244140626, "o", "o"] +[32.44125244140626, "o", "/"] +[32.471252441406264, "o", "w"] +[32.501252441406265, "o", "e"] +[32.53125244140627, "o", "a"] +[32.56125244140627, "o", "t"] +[32.59125244140627, "o", "h"] +[32.62125244140627, "o", "e"] +[32.65125244140627, "o", "r"] +[32.68125244140627, "o", " "] +[32.71125244140627, "o", "d"] +[32.741252441406274, "o", "a"] +[32.771252441406276, "o", "t"] +[32.80125244140628, "o", "a"] +[32.83125244140628, "o", "s"] +[32.86125244140628, "o", "e"] +[32.89125244140628, "o", "t"] +[32.92125244140628, "o", "-"] +[32.95125244140628, "o", "m"] +[32.98125244140628, "o", "e"] +[33.011252441406285, "o", "t"] +[33.041252441406286, "o", "a"] +[33.07125244140629, "o", "d"] +[33.10125244140629, "o", "a"] +[33.13125244140629, "o", "t"] +[33.16125244140629, "o", "a"] +[33.19125244140629, "o", "."] +[33.22125244140629, "o", "y"] +[33.251252441406294, "o", "m"] +[33.281252441406295, "o", "l"] +[33.311252441406296, "o", "\r\n"] +[33.3412524414063, "o", "\u001b[0m"] +[33.3712524414063, "o", "\r\n"] +[33.37298669815068, "o", "# This is a sample dataset metadata file that's used\r\n# to update the dataset's README and description.\r\n\r\nreadme: dataset-readme.md\r\ndescription: Weather history in Raleigh-Durham International airport joined with US domestic flights data (uploaded from Splitgraph release CI)\r\n"] +[33.37449493408208, "o", "# Sample dataset README\r\n\r\nDataset of weather history in Raleigh-Durham International airport, joined with\r\n[US domestic flights data](/splitgraph/domestic_us_flights).\r\n\r\nThis dataset was uploaded from a CI job.\r\n\r\n## Source\r\n\r\n[data.gov](https://catalog.data.gov/dataset/local-weather-archive)\r\n"] +[34.37449493408208, "o", "Metadata updated for repository splitgraph-demo/weather.\r\n"] +[34.40449493408208, "o", "\u001b[1m"] +[34.43449493408208, "o", "\u001b[36m"] +[34.46449493408208, "o", "\u001b[91m"] +[34.494494934082084, "o", "$"] +[34.524494934082085, "o", " "] +[34.554494934082086, "o", "\u001b[0m"] +[40.21125244140616, "o", "\u001b[H"] +[40.24125244140616, "o", "\u001b[J"] +[40.27125244140616, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Perform a request against an automatically-generated"] +[40.30125244140616, "o", "\r\n"] +[40.331252441406164, "o", "$ # Postgrest (https://postgrest.org) endpoint.\r\n"] +[40.361252441406165, "o", "$"] +[40.391252441406166, "o", " "] +[40.42125244140617, "o", "c"] +[40.45125244140617, "o", "u"] +[40.48125244140617, "o", "r"] +[40.51125244140617, "o", "l"] +[40.54125244140617, "o", " "] +[40.57125244140617, "o", "\""] +[40.601252441406174, "o", "h"] +[40.631252441406176, "o", "t"] +[40.66125244140618, "o", "t"] +[40.69125244140618, "o", "p"] +[40.72125244140618, "o", "s"] +[40.75125244140618, "o", ":"] +[40.78125244140618, "o", "/"] +[40.81125244140618, "o", "/"] +[40.84125244140618, "o", "d"] +[40.871252441406185, "o", "a"] +[40.901252441406186, "o", "t"] +[40.93125244140619, "o", "a"] +[40.96125244140619, "o", "."] +[40.99125244140619, "o", "s"] +[41.02125244140619, "o", "p"] +[41.05125244140619, "o", "l"] +[41.08125244140619, "o", "i"] +[41.111252441406194, "o", "t"] +[41.141252441406195, "o", "g"] +[41.171252441406196, "o", "r"] +[41.2012524414062, "o", "a"] +[41.2312524414062, "o", "p"] +[41.2612524414062, "o", "h"] +[41.2912524414062, "o", "."] +[41.3212524414062, "o", "c"] +[41.3512524414062, "o", "o"] +[41.381252441406204, "o", "m"] +[41.411252441406205, "o", "/"] +[41.441252441406206, "o", "s"] +[41.47125244140621, "o", "p"] +[41.50125244140621, "o", "l"] +[41.53125244140621, "o", "i"] +[41.56125244140621, "o", "t"] +[41.59125244140621, "o", "g"] +[41.62125244140621, "o", "r"] +[41.651252441406214, "o", "a"] +[41.681252441406215, "o", "p"] +[41.71125244140622, "o", "h"] +[41.74125244140622, "o", "-"] +[41.77125244140622, "o", "d"] +[41.80125244140622, "o", "e"] +[41.83125244140622, "o", "m"] +[41.86125244140622, "o", "o"] +[41.89125244140622, "o", "/"] +[41.921252441406224, "o", "w"] +[41.951252441406226, "o", "e"] +[41.98125244140623, "o", "a"] +[42.01125244140623, "o", "t"] +[42.04125244140623, "o", "h"] +[42.07125244140623, "o", "e"] +[42.10125244140623, "o", "r"] +[42.13125244140623, "o", "/"] +[42.16125244140623, "o", "i"] +[42.191252441406235, "o", "n"] +[42.221252441406236, "o", "i"] +[42.25125244140624, "o", "t"] +[42.28125244140624, "o", "i"] +[42.31125244140624, "o", "a"] +[42.34125244140624, "o", "l"] +[42.37125244140624, "o", "_"] +[42.40125244140624, "o", "d"] +[42.431252441406244, "o", "a"] +[42.461252441406245, "o", "t"] +[42.491252441406246, "o", "a"] +[42.52125244140625, "o", "/"] +[42.55125244140625, "o", "-"] +[42.58125244140625, "o", "/"] +[42.61125244140625, "o", "r"] +[42.64125244140625, "o", "e"] +[42.67125244140625, "o", "s"] +[42.701252441406254, "o", "t"] +[42.731252441406255, "o", "/"] +[42.761252441406256, "o", "r"] +[42.79125244140626, "o", "d"] +[42.82125244140626, "o", "u"] +[42.85125244140626, "o", "?"] +[42.88125244140626, "o", "d"] +[42.91125244140626, "o", "a"] +[42.94125244140626, "o", "t"] +[42.971252441406264, "o", "e"] +[43.001252441406265, "o", "="] +[43.03125244140627, "o", "e"] +[43.06125244140627, "o", "q"] +[43.09125244140627, "o", "."] +[43.12125244140627, "o", "2"] +[43.15125244140627, "o", "0"] +[43.18125244140627, "o", "0"] +[43.21125244140627, "o", "9"] +[43.241252441406274, "o", "-"] +[43.271252441406276, "o", "0"] +[43.30125244140628, "o", "8"] +[43.33125244140628, "o", "-"] +[43.36125244140628, "o", "2"] +[43.39125244140628, "o", "5"] +[43.42125244140628, "o", "T"] +[43.45125244140628, "o", "0"] +[43.48125244140628, "o", "0"] +[43.511252441406285, "o", ":"] +[43.541252441406286, "o", "0"] +[43.57125244140629, "o", "0"] +[43.60125244140629, "o", ":"] +[43.63125244140629, "o", "0"] +[43.66125244140629, "o", "0"] +[43.69125244140629, "o", "\""] +[43.72125244140629, "o", "\r\n"] +[43.751252441406294, "o", "\u001b[0m"] +[43.781252441406295, "o", "\r\n"] +[44.781252441406295, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[44.811252441406296, "o", "\u001b[1m"] +[44.8412524414063, "o", "\u001b[36m"] +[44.8712524414063, "o", "\u001b[91m"] +[44.9012524414063, "o", "$"] +[44.9312524414063, "o", " "] +[44.9612524414063, "o", "\u001b[0m"] +[49.9912524414063, "o", "\u001b[H"] +[50.021252441406304, "o", "\u001b[J"] +[50.051252441406305, "o", "\u001b[1m\u001b[36m\u001b[91m$ # sgr also has a shorthand to access the query API"] +[50.081252441406306, "o", "\r\n"] +[50.11125244140631, "o", "$"] +[50.14125244140631, "o", " "] +[50.17125244140631, "o", "s"] +[50.20125244140631, "o", "g"] +[50.23125244140631, "o", "r"] +[50.26125244140631, "o", " "] +[50.291252441406314, "o", "c"] +[50.321252441406315, "o", "l"] +[50.35125244140632, "o", "o"] +[50.38125244140632, "o", "u"] +[50.41125244140632, "o", "d"] +[50.44125244140632, "o", " "] +[50.47125244140632, "o", "c"] +[50.50125244140632, "o", "u"] +[50.53125244140632, "o", "r"] +[50.561252441406324, "o", "l"] +[50.591252441406326, "o", " "] +[50.62125244140633, "o", "s"] +[50.65125244140633, "o", "p"] +[50.68125244140633, "o", "l"] +[50.71125244140633, "o", "i"] +[50.74125244140633, "o", "t"] +[50.77125244140633, "o", "g"] +[50.801252441406334, "o", "r"] +[50.831252441406335, "o", "a"] +[50.861252441406336, "o", "p"] +[50.89125244140634, "o", "h"] +[50.92125244140634, "o", "-"] +[50.95125244140634, "o", "d"] +[50.98125244140634, "o", "e"] +[51.01125244140634, "o", "m"] +[51.04125244140634, "o", "o"] +[51.071252441406344, "o", "/"] +[51.101252441406345, "o", "w"] +[51.131252441406346, "o", "e"] +[51.16125244140635, "o", "a"] +[51.19125244140635, "o", "t"] +[51.22125244140635, "o", "h"] +[51.25125244140635, "o", "e"] +[51.28125244140635, "o", "r"] +[51.31125244140635, "o", ":"] +[51.341252441406354, "o", "i"] +[51.371252441406355, "o", "n"] +[51.401252441406356, "o", "i"] +[51.43125244140636, "o", "t"] +[51.46125244140636, "o", "i"] +[51.49125244140636, "o", "a"] +[51.52125244140636, "o", "l"] +[51.55125244140636, "o", "_"] +[51.58125244140636, "o", "d"] +[51.611252441406364, "o", "a"] +[51.641252441406365, "o", "t"] +[51.67125244140637, "o", "a"] +[51.70125244140637, "o", " "] +[51.73125244140637, "o", "\""] +[51.76125244140637, "o", "r"] +[51.79125244140637, "o", "d"] +[51.82125244140637, "o", "u"] +[51.85125244140637, "o", "?"] +[51.881252441406374, "o", "d"] +[51.911252441406376, "o", "a"] +[51.94125244140638, "o", "t"] +[51.97125244140638, "o", "e"] +[52.00125244140638, "o", "="] +[52.03125244140638, "o", "e"] +[52.06125244140638, "o", "q"] +[52.09125244140638, "o", "."] +[52.121252441406384, "o", "2"] +[52.151252441406385, "o", "0"] +[52.181252441406386, "o", "0"] +[52.21125244140639, "o", "9"] +[52.24125244140639, "o", "-"] +[52.27125244140639, "o", "0"] +[52.30125244140639, "o", "8"] +[52.33125244140639, "o", "-"] +[52.36125244140639, "o", "2"] +[52.391252441406394, "o", "5"] +[52.421252441406395, "o", "T"] +[52.451252441406396, "o", "0"] +[52.4812524414064, "o", "0"] +[52.5112524414064, "o", ":"] +[52.5412524414064, "o", "0"] +[52.5712524414064, "o", "0"] +[52.6012524414064, "o", ":"] +[52.6312524414064, "o", "0"] +[52.661252441406404, "o", "0"] +[52.691252441406405, "o", "\""] +[52.721252441406406, "o", "\r\n"] +[52.75125244140641, "o", "\u001b[0m"] +[52.78125244140641, "o", "\r\n"] +[53.78125244140641, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[53.81125244140641, "o", "\u001b[1m"] +[53.84125244140641, "o", "\u001b[36m"] +[53.87125244140641, "o", "\u001b[91m"] +[53.90125244140641, "o", "$"] +[53.931252441406414, "o", " "] +[53.961252441406415, "o", "\u001b[0m"] +[58.99125244140642, "o", "\u001b[H"] +[59.02125244140642, "o", "\u001b[J"] +[59.05125244140642, "o", "\u001b[1m\u001b[36m\u001b[91m$ # You can also run a query against the Splitgraph Data Delivery Network."] +[59.08125244140642, "o", "\r\n"] +[59.11125244140642, "o", "$ # It supports most PostgresSQL clients and lets you query Splitgraph images and other\r\n"] +[59.14125244140642, "o", "$ # datasets proxied by Splitgraph.\r\n"] +[59.17125244140642, "o", "$"] +[59.201252441406425, "o", " "] +[59.231252441406426, "o", "s"] +[59.26125244140643, "o", "g"] +[59.29125244140643, "o", "r"] +[59.32125244140643, "o", " "] +[59.35125244140643, "o", "c"] +[59.38125244140643, "o", "l"] +[59.41125244140643, "o", "o"] +[59.441252441406434, "o", "u"] +[59.471252441406435, "o", "d"] +[59.501252441406436, "o", " "] +[59.53125244140644, "o", "s"] +[59.56125244140644, "o", "q"] +[59.59125244140644, "o", "l"] +[59.62125244140644, "o", " "] +[59.65125244140644, "o", "\""] +[59.68125244140644, "o", "S"] +[59.711252441406444, "o", "E"] +[59.741252441406445, "o", "L"] +[59.771252441406446, "o", "E"] +[59.80125244140645, "o", "C"] +[59.83125244140645, "o", "T"] +[59.86125244140645, "o", " "] +[59.89125244140645, "o", "d"] +[59.92125244140645, "o", "a"] +[59.95125244140645, "o", "t"] +[59.981252441406454, "o", "e"] +[60.011252441406455, "o", ","] +[60.041252441406456, "o", " "] +[60.07125244140646, "o", "t"] +[60.10125244140646, "o", "e"] +[60.13125244140646, "o", "m"] +[60.16125244140646, "o", "p"] +[60.19125244140646, "o", "e"] +[60.22125244140646, "o", "r"] +[60.251252441406464, "o", "a"] +[60.281252441406465, "o", "t"] +[60.31125244140647, "o", "u"] +[60.34125244140647, "o", "r"] +[60.37125244140647, "o", "e"] +[60.40125244140647, "o", "m"] +[60.43125244140647, "o", "i"] +[60.46125244140647, "o", "n"] +[60.49125244140647, "o", ","] +[60.521252441406475, "o", " "] +[60.551252441406476, "o", "t"] +[60.58125244140648, "o", "e"] +[60.61125244140648, "o", "m"] +[60.64125244140648, "o", "p"] +[60.67125244140648, "o", "e"] +[60.70125244140648, "o", "r"] +[60.73125244140648, "o", "a"] +[60.761252441406484, "o", "t"] +[60.791252441406485, "o", "u"] +[60.821252441406486, "o", "r"] +[60.85125244140649, "o", "e"] +[60.88125244140649, "o", "m"] +[60.91125244140649, "o", "a"] +[60.94125244140649, "o", "x"] +[60.97125244140649, "o", "\r\n "] +[61.00125244140649, "o", "F"] +[61.031252441406494, "o", "R"] +[61.061252441406495, "o", "O"] +[61.091252441406496, "o", "M"] +[61.1212524414065, "o", " "] +[61.1512524414065, "o", "\\"] +[61.1812524414065, "o", "\""] +[61.2112524414065, "o", "s"] +[61.2412524414065, "o", "p"] +[61.2712524414065, "o", "l"] +[61.301252441406504, "o", "i"] +[61.331252441406505, "o", "t"] +[61.361252441406506, "o", "g"] +[61.39125244140651, "o", "r"] +[61.42125244140651, "o", "a"] +[61.45125244140651, "o", "p"] +[61.48125244140651, "o", "h"] +[61.51125244140651, "o", "-"] +[61.54125244140651, "o", "d"] +[61.571252441406514, "o", "e"] +[61.601252441406515, "o", "m"] +[61.63125244140652, "o", "o"] +[61.66125244140652, "o", "/"] +[61.69125244140652, "o", "w"] +[61.72125244140652, "o", "e"] +[61.75125244140652, "o", "a"] +[61.78125244140652, "o", "t"] +[61.81125244140652, "o", "h"] +[61.841252441406525, "o", "e"] +[61.871252441406526, "o", "r"] +[61.90125244140653, "o", ":"] +[61.93125244140653, "o", "i"] +[61.96125244140653, "o", "n"] +[61.99125244140653, "o", "i"] +[62.02125244140653, "o", "t"] +[62.05125244140653, "o", "i"] +[62.081252441406534, "o", "a"] +[62.111252441406535, "o", "l"] +[62.141252441406536, "o", "_"] +[62.17125244140654, "o", "d"] +[62.20125244140654, "o", "a"] +[62.23125244140654, "o", "t"] +[62.26125244140654, "o", "a"] +[62.29125244140654, "o", "\\"] +[62.32125244140654, "o", "\""] +[62.351252441406544, "o", "."] +[62.381252441406545, "o", "r"] +[62.411252441406546, "o", "d"] +[62.44125244140655, "o", "u"] +[62.47125244140655, "o", "\r\n "] +[62.50125244140655, "o", "W"] +[62.53125244140655, "o", "H"] +[62.56125244140655, "o", "E"] +[62.59125244140655, "o", "R"] +[62.621252441406554, "o", "E"] +[62.651252441406555, "o", " "] +[62.681252441406556, "o", "d"] +[62.71125244140656, "o", "a"] +[62.74125244140656, "o", "t"] +[62.77125244140656, "o", "e"] +[62.80125244140656, "o", "_"] +[62.83125244140656, "o", "t"] +[62.86125244140656, "o", "r"] +[62.891252441406564, "o", "u"] +[62.921252441406565, "o", "n"] +[62.95125244140657, "o", "c"] +[62.98125244140657, "o", "("] +[63.01125244140657, "o", "'"] +[63.04125244140657, "o", "m"] +[63.07125244140657, "o", "o"] +[63.10125244140657, "o", "n"] +[63.13125244140657, "o", "t"] +[63.161252441406575, "o", "h"] +[63.191252441406576, "o", "'"] +[63.22125244140658, "o", ","] +[63.25125244140658, "o", " "] +[63.28125244140658, "o", "d"] +[63.31125244140658, "o", "a"] +[63.34125244140658, "o", "t"] +[63.37125244140658, "o", "e"] +[63.401252441406584, "o", ")"] +[63.431252441406585, "o", " "] +[63.461252441406586, "o", "="] +[63.49125244140659, "o", " "] +[63.52125244140659, "o", "'"] +[63.55125244140659, "o", "2"] +[63.58125244140659, "o", "0"] +[63.61125244140659, "o", "0"] +[63.64125244140659, "o", "9"] +[63.671252441406594, "o", "-"] +[63.701252441406595, "o", "0"] +[63.731252441406596, "o", "8"] +[63.7612524414066, "o", "-"] +[63.7912524414066, "o", "0"] +[63.8212524414066, "o", "1"] +[63.8512524414066, "o", "'"] +[63.8812524414066, "o", "\""] +[63.9112524414066, "o", "\r\n"] +[63.941252441406604, "o", "\u001b[0m"] +[63.971252441406605, "o", "\r\n"] +[64.9712524414066, "o", "2009-08-01 00:00:00 73 91.9\r\n2009-08-02 00:00:00 73.9 82.9\r\n2009-08-03 00:00:00 70 95\r\n2009-08-04 00:00:00 66.9 95\r\n2009-08-05 00:00:00 72 96.1\r\n2009-08-06 00:00:00 70 84.9\r\n2009-08-07 00:00:00 68 88\r\n2009-08-08 00:00:00 69.1 91\r\n2009-08-09 00:00:00 70 99\r\n2009-08-10 00:00:00 72 99\r\n"] +[65.0012524414066, "o", "\u001b[1m"] +[65.03125244140661, "o", "\u001b[36m"] +[65.06125244140661, "o", "\u001b[91m"] +[65.09125244140661, "o", "$"] +[65.12125244140661, "o", " "] +[65.15125244140661, "o", "\u001b[0m"] +[70.18125244140661, "o", "\u001b[H"] +[70.21125244140661, "o", "\u001b[J"] +[70.24125244140662, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The query API also supports running one-off Splitfile commands against a repository,"] +[70.27125244140662, "o", "\r\n"] +[70.30125244140662, "o", "$ # creating new images that can be pulled. sgr handles authentication for this automatically.\r\n"] +[70.33125244140662, "o", "$"] +[70.36125244140662, "o", " "] +[70.39125244140662, "o", "c"] +[70.42125244140662, "o", "a"] +[70.45125244140662, "o", "t"] +[70.48125244140662, "o", " "] +[70.51125244140663, "o", "r"] +[70.54125244140663, "o", "e"] +[70.57125244140663, "o", "q"] +[70.60125244140663, "o", "u"] +[70.63125244140663, "o", "e"] +[70.66125244140663, "o", "s"] +[70.69125244140663, "o", "t"] +[70.72125244140663, "o", "_"] +[70.75125244140663, "o", "1"] +[70.78125244140664, "o", "."] +[70.81125244140664, "o", "j"] +[70.84125244140664, "o", "s"] +[70.87125244140664, "o", "o"] +[70.90125244140664, "o", "n"] +[70.93125244140664, "o", "\r\n"] +[70.96125244140664, "o", "$"] +[70.99125244140664, "o", " "] +[71.02125244140665, "o", "s"] +[71.05125244140665, "o", "g"] +[71.08125244140665, "o", "r"] +[71.11125244140665, "o", " "] +[71.14125244140665, "o", "c"] +[71.17125244140665, "o", "l"] +[71.20125244140665, "o", "o"] +[71.23125244140665, "o", "u"] +[71.26125244140665, "o", "d"] +[71.29125244140666, "o", " "] +[71.32125244140666, "o", "c"] +[71.35125244140666, "o", "u"] +[71.38125244140666, "o", "r"] +[71.41125244140666, "o", "l"] +[71.44125244140666, "o", " "] +[71.47125244140666, "o", "-"] +[71.50125244140666, "o", "t"] +[71.53125244140666, "o", " "] +[71.56125244140667, "o", "s"] +[71.59125244140667, "o", "p"] +[71.62125244140667, "o", "l"] +[71.65125244140667, "o", "i"] +[71.68125244140667, "o", "t"] +[71.71125244140667, "o", "f"] +[71.74125244140667, "o", "i"] +[71.77125244140667, "o", "l"] +[71.80125244140667, "o", "e"] +[71.83125244140668, "o", " "] +[71.86125244140668, "o", "s"] +[71.89125244140668, "o", "p"] +[71.92125244140668, "o", "l"] +[71.95125244140668, "o", "i"] +[71.98125244140668, "o", "t"] +[72.01125244140668, "o", "g"] +[72.04125244140668, "o", "r"] +[72.07125244140668, "o", "a"] +[72.10125244140669, "o", "p"] +[72.13125244140669, "o", "h"] +[72.16125244140669, "o", "-"] +[72.19125244140669, "o", "d"] +[72.22125244140669, "o", "e"] +[72.25125244140669, "o", "m"] +[72.28125244140669, "o", "o"] +[72.3112524414067, "o", "/"] +[72.3412524414067, "o", "w"] +[72.3712524414067, "o", "e"] +[72.4012524414067, "o", "a"] +[72.4312524414067, "o", "t"] +[72.4612524414067, "o", "h"] +[72.4912524414067, "o", "e"] +[72.5212524414067, "o", "r"] +[72.5512524414067, "o", ":"] +[72.5812524414067, "o", "i"] +[72.6112524414067, "o", "n"] +[72.6412524414067, "o", "i"] +[72.67125244140671, "o", "t"] +[72.70125244140671, "o", "i"] +[72.73125244140671, "o", "a"] +[72.76125244140671, "o", "l"] +[72.79125244140671, "o", "_"] +[72.82125244140671, "o", "d"] +[72.85125244140671, "o", "a"] +[72.88125244140672, "o", "t"] +[72.91125244140672, "o", "a"] +[72.94125244140672, "o", " "] +[72.97125244140672, "o", "@"] +[73.00125244140672, "o", "r"] +[73.03125244140672, "o", "e"] +[73.06125244140672, "o", "q"] +[73.09125244140672, "o", "u"] +[73.12125244140672, "o", "e"] +[73.15125244140673, "o", "s"] +[73.18125244140673, "o", "t"] +[73.21125244140673, "o", "_"] +[73.24125244140673, "o", "1"] +[73.27125244140673, "o", "."] +[73.30125244140673, "o", "j"] +[73.33125244140673, "o", "s"] +[73.36125244140673, "o", "o"] +[73.39125244140673, "o", "n"] +[73.42125244140674, "o", "\r\n"] +[73.45125244140674, "o", "\u001b[0m"] +[73.48125244140674, "o", "\r\n"] +[73.48302269935657, "o", "{\"command\": \"FROM splitgraph/domestic_us_flights:latest IMPORT {SELECT fly_month, SUM(passengers) AS total_passengers FROM flights WHERE origin_airport = 'RDU' OR destination_airport = 'RDU' GROUP BY fly_month ORDER BY fly_month} AS flights\",\r\n \"tag\": \"with_flight_data\"}\r\n\r\n"] +[74.48302269935657, "o", "{\"image_hash\":\"35b1ac2ca93273c917bedc9bcda1fa6ac26f5f2d45023c23ec542c3c08f76f56\"}"] +[74.51302269935657, "o", "\u001b[1m"] +[74.54302269935657, "o", "\u001b[36m"] +[74.57302269935657, "o", "\u001b[91m"] +[74.60302269935657, "o", "$"] +[74.63302269935657, "o", " "] +[74.66302269935657, "o", "\u001b[0m"] +[79.69302269935658, "o", "\u001b[H"] +[79.72302269935658, "o", "\u001b[J"] +[79.75302269935658, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run another command against the new layer to join the two datasets"] +[79.78302269935658, "o", "\r\n"] +[79.81302269935658, "o", "$"] +[79.84302269935658, "o", " "] +[79.87302269935658, "o", "c"] +[79.90302269935658, "o", "a"] +[79.93302269935658, "o", "t"] +[79.96302269935659, "o", " "] +[79.99302269935659, "o", "r"] +[80.02302269935659, "o", "e"] +[80.05302269935659, "o", "q"] +[80.08302269935659, "o", "u"] +[80.11302269935659, "o", "e"] +[80.14302269935659, "o", "s"] +[80.1730226993566, "o", "t"] +[80.2030226993566, "o", "_"] +[80.2330226993566, "o", "2"] +[80.2630226993566, "o", "."] +[80.2930226993566, "o", "j"] +[80.3230226993566, "o", "s"] +[80.3530226993566, "o", "o"] +[80.3830226993566, "o", "n"] +[80.4130226993566, "o", "\r\n"] +[80.4430226993566, "o", "$"] +[80.4730226993566, "o", " "] +[80.5030226993566, "o", "s"] +[80.53302269935661, "o", "g"] +[80.56302269935661, "o", "r"] +[80.59302269935661, "o", " "] +[80.62302269935661, "o", "c"] +[80.65302269935661, "o", "l"] +[80.68302269935661, "o", "o"] +[80.71302269935661, "o", "u"] +[80.74302269935662, "o", "d"] +[80.77302269935662, "o", " "] +[80.80302269935662, "o", "c"] +[80.83302269935662, "o", "u"] +[80.86302269935662, "o", "r"] +[80.89302269935662, "o", "l"] +[80.92302269935662, "o", " "] +[80.95302269935662, "o", "-"] +[80.98302269935662, "o", "t"] +[81.01302269935663, "o", " "] +[81.04302269935663, "o", "s"] +[81.07302269935663, "o", "p"] +[81.10302269935663, "o", "l"] +[81.13302269935663, "o", "i"] +[81.16302269935663, "o", "t"] +[81.19302269935663, "o", "f"] +[81.22302269935663, "o", "i"] +[81.25302269935663, "o", "l"] +[81.28302269935664, "o", "e"] +[81.31302269935664, "o", " "] +[81.34302269935664, "o", "s"] +[81.37302269935664, "o", "p"] +[81.40302269935664, "o", "l"] +[81.43302269935664, "o", "i"] +[81.46302269935664, "o", "t"] +[81.49302269935664, "o", "g"] +[81.52302269935664, "o", "r"] +[81.55302269935665, "o", "a"] +[81.58302269935665, "o", "p"] +[81.61302269935665, "o", "h"] +[81.64302269935665, "o", "-"] +[81.67302269935665, "o", "d"] +[81.70302269935665, "o", "e"] +[81.73302269935665, "o", "m"] +[81.76302269935665, "o", "o"] +[81.79302269935665, "o", "/"] +[81.82302269935666, "o", "w"] +[81.85302269935666, "o", "e"] +[81.88302269935666, "o", "a"] +[81.91302269935666, "o", "t"] +[81.94302269935666, "o", "h"] +[81.97302269935666, "o", "e"] +[82.00302269935666, "o", "r"] +[82.03302269935666, "o", ":"] +[82.06302269935667, "o", "w"] +[82.09302269935667, "o", "i"] +[82.12302269935667, "o", "t"] +[82.15302269935667, "o", "h"] +[82.18302269935667, "o", "_"] +[82.21302269935667, "o", "f"] +[82.24302269935667, "o", "l"] +[82.27302269935667, "o", "i"] +[82.30302269935667, "o", "g"] +[82.33302269935668, "o", "h"] +[82.36302269935668, "o", "t"] +[82.39302269935668, "o", "_"] +[82.42302269935668, "o", "d"] +[82.45302269935668, "o", "a"] +[82.48302269935668, "o", "t"] +[82.51302269935668, "o", "a"] +[82.54302269935668, "o", " "] +[82.57302269935668, "o", "@"] +[82.60302269935669, "o", "r"] +[82.63302269935669, "o", "e"] +[82.66302269935669, "o", "q"] +[82.69302269935669, "o", "u"] +[82.72302269935669, "o", "e"] +[82.75302269935669, "o", "s"] +[82.78302269935669, "o", "t"] +[82.8130226993567, "o", "_"] +[82.8430226993567, "o", "2"] +[82.8730226993567, "o", "."] +[82.9030226993567, "o", "j"] +[82.9330226993567, "o", "s"] +[82.9630226993567, "o", "o"] +[82.9930226993567, "o", "n"] +[83.0230226993567, "o", "\r\n"] +[83.0530226993567, "o", "\u001b[0m"] +[83.0830226993567, "o", "\r\n"] +[83.08463202476564, "o", "{\"command\": \"SQL CREATE TABLE rdu_flights_weather AS ( WITH monthly_summary AS (SELECT date_trunc ('month', date) AS month, AVG(temperaturemin) AS tmin_avg, AVG(temperaturemax) AS tmax_avg FROM rdu GROUP BY month) SELECT w.month, w.tmin_avg, w.tmax_avg, f.total_passengers FROM monthly_summary w JOIN flights f ON w.month = f.fly_month)\",\r\n \"tag\": \"joined_data\"}\r\n\r\n"] +[84.08463202476564, "o", "{\"image_hash\":\"3a5e2cc6ce53f61fceb1f53d166fa86a8dc2f05c52c869ebd317685db0a137e3\"}"] +[84.11463202476564, "o", "\u001b[1m"] +[84.14463202476564, "o", "\u001b[36m"] +[84.17463202476564, "o", "\u001b[91m"] +[84.20463202476564, "o", "$"] +[84.23463202476565, "o", " "] +[84.26463202476565, "o", "\u001b[0m"] +[89.29463202476565, "o", "\u001b[H"] +[89.32463202476565, "o", "\u001b[J"] +[89.35463202476565, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Pull the dataset and check out the new image"] +[89.38463202476565, "o", "\r\n"] +[89.41463202476565, "o", "$"] +[89.44463202476565, "o", " "] +[89.47463202476565, "o", "s"] +[89.50463202476566, "o", "g"] +[89.53463202476566, "o", "r"] +[89.56463202476566, "o", " "] +[89.59463202476566, "o", "p"] +[89.62463202476566, "o", "u"] +[89.65463202476566, "o", "l"] +[89.68463202476566, "o", "l"] +[89.71463202476566, "o", " "] +[89.74463202476566, "o", "w"] +[89.77463202476567, "o", "e"] +[89.80463202476567, "o", "a"] +[89.83463202476567, "o", "t"] +[89.86463202476567, "o", "h"] +[89.89463202476567, "o", "e"] +[89.92463202476567, "o", "r"] +[89.95463202476567, "o", "\r\n"] +[89.98463202476567, "o", "$"] +[90.01463202476567, "o", " "] +[90.04463202476568, "o", "s"] +[90.07463202476568, "o", "g"] +[90.10463202476568, "o", "r"] +[90.13463202476568, "o", " "] +[90.16463202476568, "o", "c"] +[90.19463202476568, "o", "h"] +[90.22463202476568, "o", "e"] +[90.25463202476568, "o", "c"] +[90.28463202476568, "o", "k"] +[90.31463202476569, "o", "o"] +[90.34463202476569, "o", "u"] +[90.37463202476569, "o", "t"] +[90.40463202476569, "o", " "] +[90.43463202476569, "o", "w"] +[90.46463202476569, "o", "e"] +[90.49463202476569, "o", "a"] +[90.5246320247657, "o", "t"] +[90.5546320247657, "o", "h"] +[90.5846320247657, "o", "e"] +[90.6146320247657, "o", "r"] +[90.6446320247657, "o", ":"] +[90.6746320247657, "o", "j"] +[90.7046320247657, "o", "o"] +[90.7346320247657, "o", "i"] +[90.7646320247657, "o", "n"] +[90.7946320247657, "o", "e"] +[90.8246320247657, "o", "d"] +[90.8546320247657, "o", "_"] +[90.88463202476571, "o", "d"] +[90.91463202476571, "o", "a"] +[90.94463202476571, "o", "t"] +[90.97463202476571, "o", "a"] +[91.00463202476571, "o", "\r\n"] +[91.03463202476571, "o", "\u001b[0m"] +[91.06463202476571, "o", "\r\n"] +[91.46841725349496, "o", "Gathering remote metadata...\r\n"] +[92.46841725349496, "o", "Fetched metadata for 2 images, 5 tables, 2 objects and 2 tags.\r\n"] +[92.87761720657419, "o", "Need to download 1 object (3.02 KiB), cache occupancy: 0.00 B/10.00 GiB\r\n"] +[92.9287713432319, "o", "Fetching 1 object, total size 3.02 KiB\r\n"] +[92.93127235412668, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (85b17bb993c0441f83f3619be8faba12@data.splitgraph.com:5432/sgregistry)...\r\n"] +[93.93127235412668, "o", "\r 0%| | 0/1 [00:00 Foreign Scan on precinct_results (cost=20.00..489234.00 rows=489234 width=1)\r\nFilter: ((state)::text = 'New York'::text)\r\nMulticorn: Original Multicorn quals: [state = New York]\r\nMulticorn: CNF quals: [[('state', '=', 'New York')]]\r\nMulticorn: Objects removed by filter: 15\r\nMulticorn: Scan through 5 object(s) (6.63 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining false, Optimization false, Expressions true, Deforming true\r\n"] +[13.459842815399082, "o", "\u001b[1m"] +[13.489842815399081, "o", "\u001b[36m"] +[13.51984281539908, "o", "\u001b[91m"] +[13.54984281539908, "o", "$"] +[13.57984281539908, "o", " "] +[13.609842815399078, "o", "\u001b[0m"] +[18.639842815399078, "o", "\u001b[H"] +[18.66984281539908, "o", "\u001b[J"] +[18.69984281539908, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Currently we have no fragments in cache. Let's run this query and check the cache again"] +[18.72984281539908, "o", "\r\n"] +[18.759842815399082, "o", "$"] +[18.789842815399084, "o", " "] +[18.819842815399085, "o", "s"] +[18.849842815399086, "o", "g"] +[18.879842815399087, "o", "r"] +[18.909842815399088, "o", " "] +[18.93984281539909, "o", "o"] +[18.96984281539909, "o", "b"] +[18.99984281539909, "o", "j"] +[19.029842815399093, "o", "e"] +[19.059842815399094, "o", "c"] +[19.089842815399095, "o", "t"] +[19.119842815399096, "o", "s"] +[19.149842815399097, "o", " "] +[19.1798428153991, "o", "-"] +[19.2098428153991, "o", "-"] +[19.2398428153991, "o", "l"] +[19.2698428153991, "o", "o"] +[19.299842815399103, "o", "c"] +[19.329842815399104, "o", "a"] +[19.359842815399105, "o", "l"] +[19.389842815399106, "o", "\r\n"] +[19.419842815399107, "o", "$"] +[19.44984281539911, "o", " "] +[19.47984281539911, "o", "s"] +[19.50984281539911, "o", "g"] +[19.539842815399112, "o", "r"] +[19.569842815399113, "o", " "] +[19.599842815399114, "o", "s"] +[19.629842815399115, "o", "q"] +[19.659842815399116, "o", "l"] +[19.689842815399118, "o", " "] +[19.71984281539912, "o", "-"] +[19.74984281539912, "o", "-"] +[19.77984281539912, "o", "i"] +[19.809842815399122, "o", "m"] +[19.839842815399123, "o", "a"] +[19.869842815399124, "o", "g"] +[19.899842815399126, "o", "e"] +[19.929842815399127, "o", " "] +[19.959842815399128, "o", "s"] +[19.98984281539913, "o", "p"] +[20.01984281539913, "o", "l"] +[20.04984281539913, "o", "i"] +[20.079842815399132, "o", "t"] +[20.109842815399134, "o", "g"] +[20.139842815399135, "o", "r"] +[20.169842815399136, "o", "a"] +[20.199842815399137, "o", "p"] +[20.229842815399138, "o", "h"] +[20.25984281539914, "o", "/"] +[20.28984281539914, "o", "2"] +[20.31984281539914, "o", "0"] +[20.349842815399143, "o", "1"] +[20.379842815399144, "o", "6"] +[20.409842815399145, "o", "_"] +[20.439842815399146, "o", "e"] +[20.469842815399147, "o", "l"] +[20.49984281539915, "o", "e"] +[20.52984281539915, "o", "c"] +[20.55984281539915, "o", "t"] +[20.58984281539915, "o", "i"] +[20.619842815399153, "o", "o"] +[20.649842815399154, "o", "n"] +[20.679842815399155, "o", ":"] +[20.709842815399156, "o", "l"] +[20.739842815399157, "o", "a"] +[20.76984281539916, "o", "t"] +[20.79984281539916, "o", "e"] +[20.82984281539916, "o", "s"] +[20.859842815399162, "o", "t"] +[20.889842815399163, "o", " "] +[20.919842815399164, "o", "\\"] +[20.949842815399165, "o", "\r\n "] +[20.979842815399167, "o", "\""] +[21.009842815399168, "o", "S"] +[21.03984281539917, "o", "E"] +[21.06984281539917, "o", "L"] +[21.09984281539917, "o", "E"] +[21.129842815399172, "o", "C"] +[21.159842815399173, "o", "T"] +[21.189842815399174, "o", " "] +[21.219842815399176, "o", "S"] +[21.249842815399177, "o", "U"] +[21.279842815399178, "o", "M"] +[21.30984281539918, "o", "("] +[21.33984281539918, "o", "v"] +[21.36984281539918, "o", "o"] +[21.399842815399182, "o", "t"] +[21.429842815399184, "o", "e"] +[21.459842815399185, "o", "s"] +[21.489842815399186, "o", ")"] +[21.519842815399187, "o", " "] +[21.549842815399188, "o", "F"] +[21.57984281539919, "o", "R"] +[21.60984281539919, "o", "O"] +[21.63984281539919, "o", "M"] +[21.669842815399193, "o", " "] +[21.699842815399194, "o", "p"] +[21.729842815399195, "o", "r"] +[21.759842815399196, "o", "e"] +[21.789842815399197, "o", "c"] +[21.8198428153992, "o", "i"] +[21.8498428153992, "o", "n"] +[21.8798428153992, "o", "c"] +[21.9098428153992, "o", "t"] +[21.939842815399203, "o", "_"] +[21.969842815399204, "o", "r"] +[21.999842815399205, "o", "e"] +[22.029842815399206, "o", "s"] +[22.059842815399207, "o", "u"] +[22.08984281539921, "o", "l"] +[22.11984281539921, "o", "t"] +[22.14984281539921, "o", "s"] +[22.179842815399212, "o", " "] +[22.209842815399213, "o", "W"] +[22.239842815399214, "o", "H"] +[22.269842815399215, "o", "E"] +[22.299842815399217, "o", "R"] +[22.329842815399218, "o", "E"] +[22.35984281539922, "o", " "] +[22.38984281539922, "o", "s"] +[22.41984281539922, "o", "t"] +[22.449842815399222, "o", "a"] +[22.479842815399223, "o", "t"] +[22.509842815399224, "o", "e"] +[22.539842815399226, "o", " "] +[22.569842815399227, "o", "="] +[22.599842815399228, "o", " "] +[22.62984281539923, "o", "'"] +[22.65984281539923, "o", "N"] +[22.68984281539923, "o", "e"] +[22.719842815399232, "o", "w"] +[22.749842815399234, "o", " "] +[22.779842815399235, "o", "Y"] +[22.809842815399236, "o", "o"] +[22.839842815399237, "o", "r"] +[22.869842815399238, "o", "k"] +[22.89984281539924, "o", "'"] +[22.92984281539924, "o", "\""] +[22.95984281539924, "o", "\r\n"] +[22.989842815399243, "o", "$"] +[23.019842815399244, "o", " "] +[23.049842815399245, "o", "s"] +[23.079842815399246, "o", "g"] +[23.109842815399247, "o", "r"] +[23.13984281539925, "o", " "] +[23.16984281539925, "o", "o"] +[23.19984281539925, "o", "b"] +[23.229842815399252, "o", "j"] +[23.259842815399253, "o", "e"] +[23.289842815399254, "o", "c"] +[23.319842815399255, "o", "t"] +[23.349842815399256, "o", "s"] +[23.379842815399257, "o", " "] +[23.40984281539926, "o", "-"] +[23.43984281539926, "o", "-"] +[23.46984281539926, "o", "l"] +[23.499842815399262, "o", "o"] +[23.529842815399263, "o", "c"] +[23.559842815399264, "o", "a"] +[23.589842815399265, "o", "l"] +[23.619842815399267, "o", "\r\n"] +[23.649842815399268, "o", "\u001b[0m"] +[23.67984281539927, "o", "\r\n"] +[24.05091510772715, "o", "\r\n"] +[25.05091510772715, "o", "7.91188e+06\r\n"] +[25.417532787323097, "o", "o65dbd9dc992982689ec65866ab733be69c897c659d93488457a2fccb63e97c\r\no974b20261ee5f1ac124a8445a65c00e6377cfabb93b5db92bd60fc7ca3fcee\r\no9c33b53f1a4872c598ad9d08aaafd78fabce1f16ef4c5e19ad9756b9b85fda\r\no9d4cf85101cc4d431c895998cf1cad642f1fe6cd923c8209f2df38441afeeb\r\noc438159794e378ca23c306143ccdc7ce1683045f80a511aeeabb19302be63d\r\n"] +[25.447532787323098, "o", "\u001b[1m"] +[25.4775327873231, "o", "\u001b[36m"] +[25.5075327873231, "o", "\u001b[91m"] +[25.5375327873231, "o", "$"] +[25.567532787323103, "o", " "] +[25.597532787323104, "o", "\u001b[0m"] +[30.627532787323105, "o", "\u001b[H"] +[30.657532787323106, "o", "\u001b[J"] +[30.687532787323107, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Since default indexing in Splitgraph is done by min-max values for every column"] +[30.71753278732311, "o", "\r\n"] +[30.74753278732311, "o", "$ # in every fragment, it's going to do worse if multiple fragments span the same value\r\n"] +[30.77753278732311, "o", "$"] +[30.80753278732311, "o", " "] +[30.837532787323113, "o", "s"] +[30.867532787323114, "o", "g"] +[30.897532787323115, "o", "r"] +[30.927532787323116, "o", " "] +[30.957532787323117, "o", "s"] +[30.98753278732312, "o", "q"] +[31.01753278732312, "o", "l"] +[31.04753278732312, "o", " "] +[31.077532787323122, "o", "-"] +[31.107532787323123, "o", "-"] +[31.137532787323124, "o", "i"] +[31.167532787323125, "o", "m"] +[31.197532787323127, "o", "a"] +[31.227532787323128, "o", "g"] +[31.25753278732313, "o", "e"] +[31.28753278732313, "o", " "] +[31.31753278732313, "o", "s"] +[31.347532787323132, "o", "p"] +[31.377532787323133, "o", "l"] +[31.407532787323134, "o", "i"] +[31.437532787323136, "o", "t"] +[31.467532787323137, "o", "g"] +[31.497532787323138, "o", "r"] +[31.52753278732314, "o", "a"] +[31.55753278732314, "o", "p"] +[31.58753278732314, "o", "h"] +[31.617532787323142, "o", "/"] +[31.647532787323144, "o", "2"] +[31.677532787323145, "o", "0"] +[31.707532787323146, "o", "1"] +[31.737532787323147, "o", "6"] +[31.767532787323148, "o", "_"] +[31.79753278732315, "o", "e"] +[31.82753278732315, "o", "l"] +[31.85753278732315, "o", "e"] +[31.887532787323153, "o", "c"] +[31.917532787323154, "o", "t"] +[31.947532787323155, "o", "i"] +[31.977532787323156, "o", "o"] +[32.00753278732316, "o", "n"] +[32.03753278732316, "o", ":"] +[32.06753278732316, "o", "l"] +[32.09753278732316, "o", "a"] +[32.12753278732316, "o", "t"] +[32.15753278732316, "o", "e"] +[32.187532787323164, "o", "s"] +[32.217532787323165, "o", "t"] +[32.247532787323166, "o", " "] +[32.27753278732317, "o", "\\"] +[32.30753278732317, "o", "\r\n "] +[32.33753278732317, "o", "\""] +[32.36753278732317, "o", "E"] +[32.39753278732317, "o", "X"] +[32.42753278732317, "o", "P"] +[32.457532787323174, "o", "L"] +[32.487532787323175, "o", "A"] +[32.51753278732318, "o", "I"] +[32.54753278732318, "o", "N"] +[32.57753278732318, "o", " "] +[32.60753278732318, "o", "S"] +[32.63753278732318, "o", "E"] +[32.66753278732318, "o", "L"] +[32.69753278732318, "o", "E"] +[32.727532787323184, "o", "C"] +[32.757532787323186, "o", "T"] +[32.78753278732319, "o", " "] +[32.81753278732319, "o", "S"] +[32.84753278732319, "o", "U"] +[32.87753278732319, "o", "M"] +[32.90753278732319, "o", "("] +[32.93753278732319, "o", "v"] +[32.967532787323194, "o", "o"] +[32.997532787323195, "o", "t"] +[33.027532787323196, "o", "e"] +[33.0575327873232, "o", "s"] +[33.0875327873232, "o", ")"] +[33.1175327873232, "o", " "] +[33.1475327873232, "o", "F"] +[33.1775327873232, "o", "R"] +[33.2075327873232, "o", "O"] +[33.237532787323204, "o", "M"] +[33.267532787323205, "o", " "] +[33.297532787323206, "o", "p"] +[33.32753278732321, "o", "r"] +[33.35753278732321, "o", "e"] +[33.38753278732321, "o", "c"] +[33.41753278732321, "o", "i"] +[33.44753278732321, "o", "n"] +[33.47753278732321, "o", "c"] +[33.507532787323214, "o", "t"] +[33.537532787323215, "o", "_"] +[33.567532787323216, "o", "r"] +[33.59753278732322, "o", "e"] +[33.62753278732322, "o", "s"] +[33.65753278732322, "o", "u"] +[33.68753278732322, "o", "l"] +[33.71753278732322, "o", "t"] +[33.74753278732322, "o", "s"] +[33.777532787323224, "o", " "] +[33.807532787323225, "o", "W"] +[33.83753278732323, "o", "H"] +[33.86753278732323, "o", "E"] +[33.89753278732323, "o", "R"] +[33.92753278732323, "o", "E"] +[33.95753278732323, "o", " "] +[33.98753278732323, "o", "c"] +[34.01753278732323, "o", "o"] +[34.047532787323235, "o", "u"] +[34.077532787323236, "o", "n"] +[34.10753278732324, "o", "t"] +[34.13753278732324, "o", "y"] +[34.16753278732324, "o", "_"] +[34.19753278732324, "o", "n"] +[34.22753278732324, "o", "a"] +[34.25753278732324, "o", "m"] +[34.287532787323244, "o", "e"] +[34.317532787323245, "o", " "] +[34.347532787323246, "o", "="] +[34.37753278732325, "o", " "] +[34.40753278732325, "o", "'"] +[34.43753278732325, "o", "N"] +[34.46753278732325, "o", "e"] +[34.49753278732325, "o", "w"] +[34.52753278732325, "o", " "] +[34.557532787323254, "o", "Y"] +[34.587532787323255, "o", "o"] +[34.617532787323256, "o", "r"] +[34.64753278732326, "o", "k"] +[34.67753278732326, "o", " "] +[34.70753278732326, "o", "C"] +[34.73753278732326, "o", "o"] +[34.76753278732326, "o", "u"] +[34.79753278732326, "o", "n"] +[34.827532787323264, "o", "t"] +[34.857532787323265, "o", "y"] +[34.887532787323266, "o", "'"] +[34.91753278732327, "o", "\""] +[34.94753278732327, "o", "\r\n"] +[34.97753278732327, "o", "\u001b[0m"] +[35.00753278732327, "o", "\r\n"] +[35.82175703048733, "o", "Aggregate (cost=1893957.09..1893957.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..1889234.00 rows=1889234 width=1)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 1\r\nMulticorn: Scan through 19 object(s) (25.51 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Def"] +[35.821772527694975, "o", "orming true\r\n"] +[35.851772527694976, "o", "\u001b[1m"] +[35.88177252769498, "o", "\u001b[36m"] +[35.91177252769498, "o", "\u001b[91m"] +[35.94177252769498, "o", "$"] +[35.97177252769498, "o", " "] +[36.00177252769498, "o", "\u001b[0m"] +[41.03177252769498, "o", "\u001b[H"] +[41.061772527694984, "o", "\u001b[J"] +[41.091772527694985, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Let's download the whole dataset and add a bloom filter index on county_name"] +[41.121772527694986, "o", "\r\n"] +[41.15177252769499, "o", "$"] +[41.18177252769499, "o", " "] +[41.21177252769499, "o", "s"] +[41.24177252769499, "o", "g"] +[41.27177252769499, "o", "r"] +[41.30177252769499, "o", " "] +[41.331772527694994, "o", "r"] +[41.361772527694995, "o", "e"] +[41.391772527695, "o", "i"] +[41.421772527695, "o", "n"] +[41.451772527695, "o", "d"] +[41.481772527695, "o", "e"] +[41.511772527695, "o", "x"] +[41.541772527695, "o", " "] +[41.571772527695, "o", "-"] +[41.601772527695005, "o", "i"] +[41.631772527695006, "o", " "] +[41.66177252769501, "o", "'"] +[41.69177252769501, "o", "{"] +[41.72177252769501, "o", "\""] +[41.75177252769501, "o", "b"] +[41.78177252769501, "o", "l"] +[41.81177252769501, "o", "o"] +[41.841772527695014, "o", "o"] +[41.871772527695015, "o", "m"] +[41.901772527695016, "o", "\""] +[41.93177252769502, "o", ":"] +[41.96177252769502, "o", " "] +[41.99177252769502, "o", "{"] +[42.02177252769502, "o", "\""] +[42.05177252769502, "o", "c"] +[42.08177252769502, "o", "o"] +[42.111772527695024, "o", "u"] +[42.141772527695025, "o", "n"] +[42.171772527695026, "o", "t"] +[42.20177252769503, "o", "y"] +[42.23177252769503, "o", "_"] +[42.26177252769503, "o", "n"] +[42.29177252769503, "o", "a"] +[42.32177252769503, "o", "m"] +[42.35177252769503, "o", "e"] +[42.381772527695034, "o", "\""] +[42.411772527695035, "o", ":"] +[42.441772527695036, "o", " "] +[42.47177252769504, "o", "{"] +[42.50177252769504, "o", "\""] +[42.53177252769504, "o", "p"] +[42.56177252769504, "o", "r"] +[42.59177252769504, "o", "o"] +[42.62177252769504, "o", "b"] +[42.651772527695044, "o", "a"] +[42.681772527695045, "o", "b"] +[42.71177252769505, "o", "i"] +[42.74177252769505, "o", "l"] +[42.77177252769505, "o", "i"] +[42.80177252769505, "o", "t"] +[42.83177252769505, "o", "y"] +[42.86177252769505, "o", "\""] +[42.89177252769505, "o", ":"] +[42.921772527695055, "o", " "] +[42.951772527695056, "o", "0"] +[42.98177252769506, "o", "."] +[43.01177252769506, "o", "0"] +[43.04177252769506, "o", "1"] +[43.07177252769506, "o", "}"] +[43.10177252769506, "o", "}"] +[43.13177252769506, "o", "}"] +[43.161772527695064, "o", "'"] +[43.191772527695065, "o", " "] +[43.221772527695066, "o", "\\"] +[43.25177252769507, "o", "\r\n "] +[43.28177252769507, "o", "s"] +[43.31177252769507, "o", "p"] +[43.34177252769507, "o", "l"] +[43.37177252769507, "o", "i"] +[43.40177252769507, "o", "t"] +[43.431772527695074, "o", "g"] +[43.461772527695075, "o", "r"] +[43.491772527695076, "o", "a"] +[43.52177252769508, "o", "p"] +[43.55177252769508, "o", "h"] +[43.58177252769508, "o", "/"] +[43.61177252769508, "o", "2"] +[43.64177252769508, "o", "0"] +[43.67177252769508, "o", "1"] +[43.701772527695084, "o", "6"] +[43.731772527695085, "o", "_"] +[43.761772527695086, "o", "e"] +[43.79177252769509, "o", "l"] +[43.82177252769509, "o", "e"] +[43.85177252769509, "o", "c"] +[43.88177252769509, "o", "t"] +[43.91177252769509, "o", "i"] +[43.94177252769509, "o", "o"] +[43.971772527695094, "o", "n"] +[44.001772527695096, "o", ":"] +[44.0317725276951, "o", "l"] +[44.0617725276951, "o", "a"] +[44.0917725276951, "o", "t"] +[44.1217725276951, "o", "e"] +[44.1517725276951, "o", "s"] +[44.1817725276951, "o", "t"] +[44.2117725276951, "o", " "] +[44.241772527695105, "o", "p"] +[44.271772527695106, "o", "r"] +[44.30177252769511, "o", "e"] +[44.33177252769511, "o", "c"] +[44.36177252769511, "o", "i"] +[44.39177252769511, "o", "n"] +[44.42177252769511, "o", "c"] +[44.45177252769511, "o", "t"] +[44.481772527695114, "o", "_"] +[44.511772527695115, "o", "r"] +[44.541772527695116, "o", "e"] +[44.57177252769512, "o", "s"] +[44.60177252769512, "o", "u"] +[44.63177252769512, "o", "l"] +[44.66177252769512, "o", "t"] +[44.69177252769512, "o", "s"] +[44.72177252769512, "o", "\r\n"] +[44.751772527695124, "o", "\u001b[0m"] +[44.781772527695125, "o", "\r\n"] +[45.13250556945843, "o", "Reindexing table splitgraph/2016_election:3835145ada3f07cad99087d1b1071122d58c48783cbfe4694c101d35651fba90/precinct_results\r\n"] +[45.16283956527752, "o", "Need to download 20 objects (20.19 MiB), cache occupancy: 6.63 MiB/10.00 GiB\r\n"] +[45.21344700813336, "o", "Fetching 15 objects, total size 20.19 MiB\r\n"] +[45.21411195755047, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (85b17bb993c0441f83f3619be8faba12@data.splitgraph.com:5432/sgregistry)...\r\n"] +[46.21411195755047, "o", "\r 0%| | 0/15 [00:00 Foreign Scan on precinct_results (cost=20.00..200000.00 rows=200000 width=1)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 18\r\nMulticorn: Scan through 2 object(s) (2.64 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining false, Optimization false, Expressions true, Deform"] +[104.16400957107604, "o", "ing true\r\n"] +[104.19400957107604, "o", "\u001b[1m"] +[104.22400957107604, "o", "\u001b[36m"] +[104.25400957107604, "o", "\u001b[91m"] +[104.28400957107604, "o", "$"] +[104.31400957107604, "o", " "] +[104.34400957107604, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.16/dbt.cast b/content/casts/versioned/archive/v0.2.16/dbt.cast new file mode 100644 index 00000000..837a699d --- /dev/null +++ b/content/casts/versioned/archive/v0.2.16/dbt.cast @@ -0,0 +1,2322 @@ +{"version": 2, "width": 100, "height": 48, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1629312060, "metadata": {"tss": [{"h": "dbt must be installed for this to work (pip install dbt)", "ts": 0.06}, {"h": "Ingest the initial data (in CSV) from this branch of the project.", "ts": 12.059999999999999}, {"h": "Snapshot the initial data with Splitgraph.", "ts": 26.922372379303102}, {"h": "Inspect the original data", "ts": 36.610173254013304}, {"h": "The status column in the raw_orders table in the initial dataset can", "ts": 49.610173254013304}, {"h": "Commit this dataset and check out the original data", "ts": 60.48794105529829}, {"h": "Check out the 'serious' version of the dbt project that uses data from", "ts": 70.81414752960264}, {"h": "Check that dbt is set up to connect to the Splitgraph engine.", "ts": 77.79947523117131}, {"h": "Now run the dbt models.", "ts": 101.29947523117131}, {"h": "Take a look at the built dataset and commit it.", "ts": 121.79947523117131}, {"h": "Check out the new version of the raw dataset and run dbt against it as well.", "ts": 136.2994752311713}, {"h": "Create an image from the new data.", "ts": 157.7994752311713}, {"h": "We now have two versions of the source and the target dataset.", "ts": 167.7994752311713}, {"h": "Inspect the difference between the two datasets that dbt built.", "ts": 175.47513293266368}, {"h": "Run a sample query: how much in bank transfer refunds did we process?", "ts": 184.97513293266368}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # dbt must be installed for this to work (pip install dbt)"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Clone the Jaffle Shop dbt example project\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "d"] +[0.27, "o", "b"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "-"] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "v"] +[0.4500000000000002, "o", "e"] +[0.4800000000000002, "o", "r"] +[0.5100000000000002, "o", "s"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "n"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "$"] +[0.6900000000000004, "o", " "] +[0.7200000000000004, "o", "g"] +[0.7500000000000004, "o", "i"] +[0.7800000000000005, "o", "t"] +[0.8100000000000005, "o", " "] +[0.8400000000000005, "o", "c"] +[0.8700000000000006, "o", "l"] +[0.9000000000000006, "o", "o"] +[0.9300000000000006, "o", "n"] +[0.9600000000000006, "o", "e"] +[0.9900000000000007, "o", " "] +[1.0200000000000007, "o", "h"] +[1.0500000000000007, "o", "t"] +[1.0800000000000007, "o", "t"] +[1.1100000000000008, "o", "p"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", ":"] +[1.2000000000000008, "o", "/"] +[1.2300000000000009, "o", "/"] +[1.260000000000001, "o", "g"] +[1.290000000000001, "o", "i"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", "h"] +[1.380000000000001, "o", "u"] +[1.410000000000001, "o", "b"] +[1.440000000000001, "o", "."] +[1.470000000000001, "o", "c"] +[1.500000000000001, "o", "o"] +[1.5300000000000011, "o", "m"] +[1.5600000000000012, "o", "/"] +[1.5900000000000012, "o", "s"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "l"] +[1.6800000000000013, "o", "i"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "g"] +[1.7700000000000014, "o", "r"] +[1.8000000000000014, "o", "a"] +[1.8300000000000014, "o", "p"] +[1.8600000000000014, "o", "h"] +[1.8900000000000015, "o", "/"] +[1.9200000000000015, "o", "j"] +[1.9500000000000015, "o", "a"] +[1.9800000000000015, "o", "f"] +[2.0100000000000016, "o", "f"] +[2.0400000000000014, "o", "l"] +[2.070000000000001, "o", "e"] +[2.100000000000001, "o", "_"] +[2.130000000000001, "o", "s"] +[2.1600000000000006, "o", "h"] +[2.1900000000000004, "o", "o"] +[2.22, "o", "p"] +[2.25, "o", "_"] +[2.28, "o", "a"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "c"] +[2.369999999999999, "o", "h"] +[2.399999999999999, "o", "i"] +[2.429999999999999, "o", "v"] +[2.4599999999999986, "o", "e"] +[2.4899999999999984, "o", "."] +[2.5199999999999982, "o", "g"] +[2.549999999999998, "o", "i"] +[2.579999999999998, "o", "t"] +[2.6099999999999977, "o", "\r\n"] +[2.6399999999999975, "o", "$"] +[2.6699999999999973, "o", " "] +[2.699999999999997, "o", "m"] +[2.729999999999997, "o", "v"] +[2.7599999999999967, "o", " "] +[2.7899999999999965, "o", "j"] +[2.8199999999999963, "o", "a"] +[2.849999999999996, "o", "f"] +[2.879999999999996, "o", "f"] +[2.9099999999999957, "o", "l"] +[2.9399999999999955, "o", "e"] +[2.9699999999999953, "o", "_"] +[2.999999999999995, "o", "s"] +[3.029999999999995, "o", "h"] +[3.0599999999999947, "o", "o"] +[3.0899999999999945, "o", "p"] +[3.1199999999999943, "o", "_"] +[3.149999999999994, "o", "a"] +[3.179999999999994, "o", "r"] +[3.2099999999999937, "o", "c"] +[3.2399999999999936, "o", "h"] +[3.2699999999999934, "o", "i"] +[3.299999999999993, "o", "v"] +[3.329999999999993, "o", "e"] +[3.3599999999999928, "o", " "] +[3.3899999999999926, "o", "j"] +[3.4199999999999924, "o", "a"] +[3.449999999999992, "o", "f"] +[3.479999999999992, "o", "f"] +[3.509999999999992, "o", "l"] +[3.5399999999999916, "o", "e"] +[3.5699999999999914, "o", "_"] +[3.599999999999991, "o", "s"] +[3.629999999999991, "o", "h"] +[3.659999999999991, "o", "o"] +[3.6899999999999906, "o", "p"] +[3.7199999999999904, "o", "\r\n"] +[3.7499999999999902, "o", "\u001b[0m"] +[3.77999999999999, "o", "\r\n"] +[4.7799999999999905, "o", "installed version: 0.18.0\r\n latest version: 0.20.1\r\n\r\nYour version of dbt is out of date! You can find instructions for upgrading here:\r\nhttps://docs.getdbt.com/docs/installation\r\n\r\nPlugins:\r\n - snowflake: 0.18.0\r\n - bigquery: 0.18.0\r\n - postgres: 0.18.0\r\n - redshift: 0.18.0\r\n"] +[4.780662326812735, "o", "\u001b[0m"] +[4.782299070358267, "o", "Cloning into 'jaffle_shop_archive'...\r\n"] +[5.243404178619375, "o", "remote: Enumerating objects: 405, done. "] +[5.243766098022451, "o", "\r\nremote: Counting objects: 0% (1/405) \rremote: Counting objects: 1% (5/405) \rremote: Counting objects: 2% (9/405) \rremote: Counting objects: 3% (13/405) \r"] +[5.243775396347036, "o", "remote: Counting objects: 4% (17/405) \rremote: Counting objects: 5% (21/405) \rremote: Counting objects: 6% (25/405) \rremote: Counting objects: 7% (29/405) \rremote: Counting objects: 8% (33/405) \rremote: Counting objects: 9% (37/405) \rremote: Counting objects: 10% (41/405) \rremote: Counting objects: 11% (45/405) \rremote: Counting objects: 12% (49/405) \rremote: Counting objects: 13% (53/405) \rremote: Counting objects: 14% ("] +[5.243784217834463, "o", "57/405) \rremote: Counting objects: 15% (61/405) \rremote: Counting objects: 16% (65/405) \rremote: Counting objects: 17% (69/405) \rremote: Counting objects: 18% (73/405) \rremote: Counting objects: 19% (77/405) \rremote: Counting objects: 20% (81/405) \rremote: Counting objects: 21% (86/405) \rremote: Counting objects: 22% (90/405) \rremote: Counting objects: 23% (94/405) \rremote: Counting objects: 24% (98/405) \rremote: Counting"] +[5.243788747787466, "o", " objects: 25% (102/405) \rremote: Counting objects: 26% (106/405) \rremote: Counting objects: 27% (110/405) \rremote: Counting objects: 28% (114/405) \rremote: Counting objects: 29% (118/405) \rremote: Counting objects: 30% (122/405) \rremote: Counting objects: 31% (126/405) \rremote: Counting objects: 32% (130/405) \rremote: Counting objects: 33% (134/405) \rremote: Counting objects: 34% (138/405) \rremote: Counting objects: 35% (142/40"] +[5.243792800903311, "o", "5) \rremote: Counting objects: 36% (146/405) \rremote: Counting objects: 37% (150/405) \rremote: Counting objects: 38% (154/405) \rremote: Counting objects: 39% (158/405) \rremote: Counting objects: 40% (162/405) \rremote: Counting objects: 41% (167/405) \rremote: Counting objects: 42% (171/405) \rremote: Counting objects: 43% (175/405) \rremote: Counting objects: 44% (179/405) \rremote: Counting objects: 45% (183/405) \rremote: Cou"] +[5.243796615600576, "o", "nting objects: 46% (187/405) \rremote: Counting objects: 47% (191/405) \rremote: Counting objects: 48% (195/405) \rremote: Counting objects: 49% (199/405) \rremote: Counting objects: 50% (203/405) \rremote: Counting objects: 51% (207/405) \rremote: Counting objects: 52% (211/405) \rremote: Counting objects: 53% (215/405) \rremote: Counting objects: 54% (219/405) \rremote: Counting objects: 55% (223/405) \rremote: Counting objects: 56% (2"] +[5.243804244995108, "o", "27/405) \rremote: Counting objects: 57% (231/405) \rremote: Counting objects: 58% (235/405) \rremote: Counting objects: 59% (239/405) \rremote: Counting objects: 60% (243/405) \rremote: Counting objects: 61% (248/405) \rremote: Counting objects: 62% (252/405) \rremote: Counting objects: 63% (256/405) \rremote: Counting objects: 64% (260/405) \rremote: Counting objects: 65% (264/405) \rremote: Counting objects: 66% (268/405) \rremote"] +[5.243823080062857, "o", ": Counting objects: 67% (272/405) \rremote: Counting objects: 68% (276/405) \rremote: Counting objects: 69% (280/405) \r"] +[5.243829994201651, "o", "remote: Counting objects: 70% (284/405) \rremote: Counting objects: 71% (288/405) \rremote: Counting objects: 72% (292/405) \r"] +[5.243834524154654, "o", "remote: Counting objects: 73% (296/405) \rremote: Counting objects: 74% (300/405) \rremote: Counting objects: 75% (304/405) \r"] +[5.243838577270498, "o", "remote: Counting objects: 76% (308/405) \r"] +[5.243843107223501, "o", "remote: Counting objects: 77% (312/405) \rremote: Counting objects: 78% (316/405) \r"] +[5.243847160339346, "o", "remote: Counting objects: 79% (320/405) \rremote: Counting objects: 80% (324/405) \r"] +[5.243850975036612, "o", "remote: Counting objects: 81% (329/405) \r"] +[5.243856458663931, "o", "remote: Counting objects: 82% (333/405) \rremote: Counting objects: 83% (337/405) \r"] +[5.243860988616934, "o", "remote: Counting objects: 84% (341/405) \rremote: Counting objects: 85% (345/405) \r"] +[5.243865518569937, "o", "remote: Counting objects: 86% (349/405) \r"] +[5.243871240615835, "o", "remote: Counting objects: 87% (353/405) \rremote: Counting objects: 88% (357/405) \r"] +[5.243875532150259, "o", "remote: Counting objects: 89% (361/405) \rremote: Counting objects: 90% (365/405) \r"] +[5.243879823684683, "o", "remote: Counting objects: 91% (369/405) \rremote: Counting objects: 92% (373/405) \r"] +[5.243886499404898, "o", "remote: Counting objects: 93% (377/405) \r"] +[5.2438931751251125, "o", "remote: Counting objects: 94% (381/405) \rremote: Counting objects: 95% (385/405) \rremote: Counting objects: 96% (389/405) \r"] +[5.243897228240957, "o", "remote: Counting objects: 97% (393/405) \rremote: Counting objects: 98% (397/405) \r"] +[5.243901281356802, "o", "remote: Counting objects: 99% (401/405) \r"] +[5.243905334472647, "o", "remote: Counting objects: 100% (405/405) \r"] +[5.2439093875884915, "o", "remote: Counting objects: 100% (405/405), done. \r\n"] +[5.243915348052969, "o", "remote: Compressing objects: 0% (1/174) \r"] +[5.243919401168814, "o", "remote: Compressing objects: 1% (2/174) \rremote: Compressing objects: 2% (4/174) \rremote: Compressing objects: 3% (6/174) \r"] +[5.2439234542846584, "o", "remote: Compressing objects: 4% (7/174) \r"] +[5.243927745819082, "o", "remote: Compressing objects: 5% (9/174) \rremote: Compressing objects: 6% (11/174) \r"] +[5.243936805725088, "o", "remote: Compressing objects: 7% (13/174) \rremote: Compressing objects: 8% (14/174) \r"] +[5.243941335678091, "o", "remote: Compressing objects: 9% (16/174) \rremote: Compressing objects: 10% (18/174) \rremote: Compressing objects: 11% (20/174) \r"] +[5.243945627212515, "o", "remote: Compressing objects: 12% (21/174) \rremote: Compressing objects: 13% (23/174) \r"] +[5.24394968032836, "o", "remote: Compressing objects: 14% (25/174) \r"] +[5.2439539718627834, "o", "remote: Compressing objects: 15% (27/174) \r"] +[5.243959932327261, "o", "remote: Compressing objects: 16% (28/174) \rremote: Compressing objects: 17% (30/174) \r"] +[5.243965177536001, "o", "remote: Compressing objects: 18% (32/174) \rremote: Compressing objects: 19% (34/174) \r"] +[5.243968992233267, "o", "remote: Compressing objects: 20% (35/174) \rremote: Compressing objects: 21% (37/174) \r"] +[5.243973283767691, "o", "remote: Compressing objects: 22% (39/174) \rremote: Compressing objects: 23% (41/174) \r"] +[5.243977813720694, "o", "remote: Compressing objects: 24% (42/174) \r"] +[5.2439823436736965, "o", "remote: Compressing objects: 25% (44/174) \rremote: Compressing objects: 26% (46/174) \r"] +[5.24399736404418, "o", "remote: Compressing objects: 27% (47/174) \rremote: Compressing objects: 28% (49/174) \r"] +[5.244001178741446, "o", "remote: Compressing objects: 29% (51/174) \r"] +[5.244004993438711, "o", "remote: Compressing objects: 30% (53/174) \rremote: Compressing objects: 31% (54/174) \r"] +[5.244008569717398, "o", "remote: Compressing objects: 32% (56/174) \rremote: Compressing objects: 33% (58/174) \r"] +[5.244012384414663, "o", "remote: Compressing objects: 34% (60/174) \r"] +[5.244016675949087, "o", "remote: Compressing objects: 35% (61/174) \rremote: Compressing objects: 36% (63/174) \r"] +[5.244020729064932, "o", "remote: Compressing objects: 37% (65/174) \r"] +[5.2440245437621975, "o", "remote: Compressing objects: 38% (67/174) \rremote: Compressing objects: 39% (68/174) \r"] +[5.244028835296621, "o", "remote: Compressing objects: 40% (70/174) \rremote: Compressing objects: 41% (72/174) \r"] +[5.244033126831045, "o", "remote: Compressing objects: 42% (74/174) \r"] +[5.244037418365469, "o", "remote: Compressing objects: 43% (75/174) \rremote: Compressing objects: 44% (77/174) \r"] +[5.244041471481314, "o", "remote: Compressing objects: 45% (79/174) \r"] +[5.2440455245971584, "o", "remote: Compressing objects: 46% (81/174) \rremote: Compressing objects: 47% (82/174) \r"] +[5.244049577713003, "o", "remote: Compressing objects: 48% (84/174) \r"] +[5.2440550613403225, "o", "remote: Compressing objects: 49% (86/174) \rremote: Compressing objects: 50% (87/174) \r"] +[5.244059591293325, "o", "remote: Compressing objects: 51% (89/174) \r"] +[5.244063167572012, "o", "remote: Compressing objects: 52% (91/174) \rremote: Compressing objects: 53% (93/174) \r"] +[5.244067220687857, "o", "remote: Compressing objects: 54% (94/174) \r"] +[5.244071273803701, "o", "remote: Compressing objects: 55% (96/174) \rremote: Compressing objects: 56% (98/174) \r"] +[5.244074850082388, "o", "remote: Compressing objects: 57% (100/174) \r"] +[5.244078903198233, "o", "remote: Compressing objects: 58% (101/174) \rremote: Compressing objects: 59% (103/174) \r"] +[5.244082956314077, "o", "remote: Compressing objects: 60% (105/174) \rremote: Compressing objects: 61% (107/174) \r"] +[5.2440879631042385, "o", "remote: Compressing objects: 62% (108/174) \r"] +[5.2440924930572415, "o", "remote: Compressing objects: 63% (110/174) \rremote: Compressing objects: 64% (112/174) \r"] +[5.244097738265982, "o", "remote: Compressing objects: 65% (114/174) \rremote: Compressing objects: 66% (115/174) \r"] +[5.244103698730459, "o", "remote: Compressing objects: 67% (117/174) \rremote: Compressing objects: 68% (119/174) \rremote: Compressing objects: 69% (121/174) \r"] +[5.244109182357779, "o", "remote: Compressing objects: 70% (122/174) \rremote: Compressing objects: 71% (124/174) \r"] +[5.244113235473623, "o", "remote: Compressing objects: 72% (126/174) \rremote: Compressing objects: 73% (128/174) \r"] +[5.244117288589468, "o", "remote: Compressing objects: 74% (129/174) \r"] +[5.244121580123892, "o", "remote: Compressing objects: 75% (131/174) \rremote: Compressing objects: 76% (133/174) \r"] +[5.244125633239737, "o", "remote: Compressing objects: 77% (134/174) \rremote: Compressing objects: 78% (136/174) \r"] +[5.244131355285635, "o", "remote: Compressing objects: 79% (138/174) \r"] +[5.244135169982901, "o", "remote: Compressing objects: 80% (140/174) \rremote: Compressing objects: 81% (141/174) \rremote: Compressing objects: 82% (143/174) \r"] +[5.244138984680166, "o", "remote: Compressing objects: 83% (145/174) \r"] +[5.244144945144644, "o", "remote: Compressing objects: 84% (147/174) \rremote: Compressing objects: 85% (148/174) \r"] +[5.244148759841909, "o", "remote: Compressing objects: 86% (150/174) \rremote: Compressing objects: 87% (152/174) \r"] +[5.244152574539175, "o", "remote: Compressing objects: 88% (154/174) \r"] +[5.244159011840811, "o", "remote: Compressing objects: 89% (155/174) \rremote: Compressing objects: 90% (157/174) \r"] +[5.24416449546813, "o", "remote: Compressing objects: 91% (159/174) \rremote: Compressing objects: 92% (161/174) \r"] +[5.244168310165396, "o", "remote: Compressing objects: 93% (162/174) \rremote: Compressing objects: 94% (164/174) \r"] +[5.244172124862661, "o", "remote: Compressing objects: 95% (166/174) \rremote: Compressing objects: 96% (168/174) \r"] +[5.244175939559927, "o", "remote: Compressing objects: 97% (169/174) \rremote: Compressing objects: 98% (171/174) \r"] +[5.244179754257193, "o", "remote: Compressing objects: 99% (173/174) \r"] +[5.244183807373037, "o", "remote: Compressing objects: 100% (174/174) \r"] +[5.2441888141631985, "o", "remote: Compressing objects: 100% (174/174), done. \r\n"] +[5.253453760147085, "o", "Receiving objects: 0% (1/405)\r"] +[5.253524570465078, "o", "Receiving objects: 1% (5/405)\r"] +[5.253713159561148, "o", "Receiving objects: 2% (9/405)\r"] +[5.253769664764395, "o", "Receiving objects: 3% (13/405)\r"] +[5.2539849567413235, "o", "Receiving objects: 4% (17/405)\r"] +[5.25415828704833, "o", "Receiving objects: 5% (21/405)\r"] +[5.2545366573333645, "o", "Receiving objects: 6% (25/405)\r"] +[5.2546892452239895, "o", "Receiving objects: 7% (29/405)\r"] +[5.254910974502554, "o", "Receiving objects: 8% (33/405)\r"] +[5.255095987319937, "o", "Receiving objects: 9% (37/405)\r"] +[5.25525167465209, "o", "Receiving objects: 10% (41/405)\r"] +[5.255415945053091, "o", "Receiving objects: 11% (45/405)\r"] +[5.255624799728384, "o", "Receiving objects: 12% (49/405)\r"] +[5.255804805755606, "o", "Receiving objects: 13% (53/405)\r"] +[5.255991249084463, "o", "Receiving objects: 14% (57/405)\r"] +[5.256194620132437, "o", "Receiving objects: 15% (61/405)\r"] +[5.256354122161856, "o", "Receiving objects: 16% (65/405)\r"] +[5.2565062332153225, "o", "Receiving objects: 17% (69/405)\r"] +[5.256719379425039, "o", "Receiving objects: 18% (73/405)\r"] +[5.256928234100332, "o", "Receiving objects: 19% (77/405)\r"] +[5.257126121520987, "o", "Receiving objects: 20% (81/405)\r"] +[5.257302551269522, "o", "Receiving objects: 21% (86/405)\r"] +[5.25767710685729, "o", "Receiving objects: 22% (90/405)\r"] +[5.257683544158926, "o", "Receiving objects: 23% (94/405)\r"] +[5.257967262268057, "o", "Receiving objects: 24% (98/405)\r"] +[5.2581150817871, "o", "Receiving objects: 25% (102/405)\r"] +[5.260057001113882, "o", "Receiving objects: 26% (106/405)\r"] +[5.260288267135611, "o", "Receiving objects: 27% (110/405)\r"] +[5.260667352676382, "o", "Receiving objects: 28% (114/405)\r"] +[5.260829000473013, "o", "Receiving objects: 29% (118/405)\r"] +[5.2610416698455715, "o", "Receiving objects: 30% (122/405)\r"] +[5.261261730194082, "o", "Receiving objects: 31% (126/405)\r"] +[5.261419801712027, "o", "Receiving objects: 32% (130/405)\r"] +[5.261615543365469, "o", "Receiving objects: 33% (134/405)\r"] +[5.26180103302001, "o", "Receiving objects: 34% (138/405)\r"] +[5.263905792236319, "o", "Receiving objects: 35% (142/405)\r"] +[5.264299421310415, "o", "Receiving objects: 36% (146/405)\r"] +[5.264341144561758, "o", "Receiving objects: 37% (150/405)\r"] +[5.264374284744253, "o", "Receiving objects: 38% (154/405)\r"] +[5.26440432548522, "o", "Receiving objects: 39% (158/405)\r"] +[5.267296581268301, "o", "remote: Total 405 (delta 191), reused 405 (delta 191), pack-reused 0 "] +[5.2673142242431545, "o", "\r\n"] +[5.267502336502066, "o", "Receiving objects: 40% (162/405)\r"] +[5.267568616867056, "o", "Receiving objects: 41% (167/405)\r"] +[5.267592935562124, "o", "Receiving objects: 42% (171/405)\r"] +[5.267791538238516, "o", "Receiving objects: 43% (175/405)\r"] +[5.267925291061392, "o", "Receiving objects: 44% (179/405)\r"] +[5.26821234703063, "o", "Receiving objects: 45% (183/405)\r"] +[5.268257646560659, "o", "Receiving objects: 46% (187/405)\r"] +[5.268393306732168, "o", "Receiving objects: 47% (191/405)\r"] +[5.268697290420523, "o", "Receiving objects: 48% (195/405)\r"] +[5.2687366294860745, "o", "Receiving objects: 49% (199/405)\r"] +[5.269071130752554, "o", "Receiving objects: 50% (203/405)\r"] +[5.26912787437438, "o", "Receiving objects: 51% (207/405)\r"] +[5.269170074462881, "o", "Receiving objects: 52% (211/405)\r"] +[5.2692883300781155, "o", "Receiving objects: 53% (215/405)\r"] +[5.269318132400503, "o", "Receiving objects: 54% (219/405)\r"] +[5.269362239837637, "o", "Receiving objects: 55% (223/405)\r"] +[5.26940134048461, "o", "Receiving objects: 56% (227/405)\r"] +[5.269455461502066, "o", "Receiving objects: 57% (231/405)\r"] +[5.269480495452871, "o", "Receiving objects: 58% (235/405)\r"] +[5.269530324935904, "o", "Receiving objects: 59% (239/405)\r"] +[5.269565134048452, "o", "Receiving objects: 60% (243/405)\r"] +[5.26962426185607, "o", "Receiving objects: 61% (248/405)\r"] +[5.269670276641836, "o", "Receiving objects: 62% (252/405)\r"] +[5.2697251129150295, "o", "Receiving objects: 63% (256/405)\r"] +[5.269770889282217, "o", "Receiving objects: 64% (260/405)\r"] +[5.269808320999136, "o", "Receiving objects: 65% (264/405)\r"] +[5.26986029624938, "o", "Receiving objects: 66% (268/405)\r"] +[5.269914894103994, "o", "Receiving objects: 67% (272/405)\r"] +[5.269957571029654, "o", "Receiving objects: 68% (276/405)\r"] +[5.269991903305044, "o", "Receiving objects: 69% (280/405)\r"] +[5.270081310272207, "o", "Receiving objects: 70% (284/405)\r"] +[5.270171670913687, "o", "Receiving objects: 71% (288/405)\r"] +[5.27020791053771, "o", "Receiving objects: 72% (292/405)\r"] +[5.270265607833853, "o", "Receiving objects: 73% (296/405)\r"] +[5.270293741226187, "o", "Receiving objects: 74% (300/405)\r"] +[5.270350484848013, "o", "Receiving objects: 75% (304/405)\r"] +[5.27039912223815, "o", "Receiving objects: 76% (308/405)\r"] +[5.270440368652334, "o", "Receiving objects: 77% (312/405)\r"] +[5.270477323532095, "o", "Receiving objects: 78% (316/405)\r"] +[5.270561962127676, "o", "Receiving objects: 79% (320/405)\r"] +[5.270605592727652, "o", "Receiving objects: 80% (324/405)\r"] +[5.2706723499298, "o", "Receiving objects: 81% (329/405)\r"] +[5.270712881088247, "o", "Receiving objects: 82% (333/405)\r"] +[5.270752935409536, "o", "Receiving objects: 83% (337/405)\r"] +[5.2708072948455715, "o", "Receiving objects: 84% (341/405)\r"] +[5.270845203399649, "o", "Receiving objects: 85% (345/405)\r"] +[5.270873575210562, "o", "Receiving objects: 86% (349/405)\r"] +[5.2709009933471584, "o", "Receiving objects: 87% (353/405)\r"] +[5.270926504135122, "o", "Receiving objects: 88% (357/405)\r"] +[5.270958452224722, "o", "Receiving objects: 89% (361/405)\r"] +[5.2710655021667385, "o", "Receiving objects: 90% (365/405)\r"] +[5.2711451339721584, "o", "Receiving objects: 91% (369/405)\r"] +[5.271199016571035, "o", "Receiving objects: 92% (373/405)\r"] +[5.271254568099966, "o", "Receiving objects: 93% (377/405)\r"] +[5.271286277770987, "o", "Receiving objects: 94% (381/405)\r"] +[5.271325855255117, "o", "Receiving objects: 95% (385/405)\r"] +[5.2714057254791165, "o", "Receiving objects: 96% (389/405)\r"] +[5.271435527801504, "o", "Receiving objects: 97% (393/405)\r"] +[5.271496324539175, "o", "Receiving objects: 98% (397/405)\r"] +[5.271526365280142, "o", "Receiving objects: 99% (401/405)\r"] +[5.271600036621084, "o", "Receiving objects: 100% (405/405)\r"] +[5.271632938385, "o", "Receiving objects: 100% (405/405), 270.20 KiB | 14.22 MiB/s, done."] +[5.271665363311758, "o", "\r\n"] +[5.271845130920401, "o", "Resolving deltas: 0% (0/191)\r"] +[5.2719340610504055, "o", "Resolving deltas: 1% (2/191)\r"] +[5.272011785507193, "o", "Resolving deltas: 2% (4/191)\r"] +[5.2720794963836575, "o", "Resolving deltas: 3% (6/191)\r"] +[5.272172002792349, "o", "Resolving deltas: 4% (8/191)\r"] +[5.2722485351562405, "o", "Resolving deltas: 5% (10/191)\r"] +[5.2723167228698635, "o", "Resolving deltas: 6% (12/191)\r"] +[5.272403030395498, "o", "Resolving deltas: 7% (14/191)\r"] +[5.272460727691641, "o", "Resolving deltas: 8% (16/191)\r"] +[5.272493152618399, "o", "Resolving deltas: 9% (18/191)\r"] +[5.272534399032583, "o", "Resolving deltas: 10% (20/191)\r"] +[5.272611646652212, "o", "Resolving deltas: 11% (22/191)\r"] +[5.27263882637023, "o", "Resolving deltas: 12% (23/191)\r"] +[5.2726710128784084, "o", "Resolving deltas: 13% (25/191)\r"] +[5.272709875106802, "o", "Resolving deltas: 14% (27/191)\r"] +[5.272749452590933, "o", "Resolving deltas: 15% (29/191)\r"] +[5.272804527282705, "o", "Resolving deltas: 16% (31/191)\r"] +[5.272843866348257, "o", "Resolving deltas: 17% (33/191)\r"] +[5.272875099182119, "o", "Resolving deltas: 18% (35/191)\r"] +[5.272913246154776, "o", "Resolving deltas: 19% (37/191)\r"] +[5.272957830429068, "o", "Resolving deltas: 20% (39/191)\r"] +[5.273005752563467, "o", "Resolving deltas: 21% (41/191)\r"] +[5.273056774139395, "o", "Resolving deltas: 22% (43/191)\r"] +[5.273089437484732, "o", "Resolving deltas: 23% (44/191)\r"] +[5.273131399154654, "o", "Resolving deltas: 24% (46/191)\r"] +[5.273241786956778, "o", "Resolving deltas: 25% (48/191)\r"] +[5.273331193923941, "o", "Resolving deltas: 26% (50/191)\r"] +[5.2733917522430325, "o", "Resolving deltas: 27% (52/191)\r"] +[5.273502378463736, "o", "Resolving deltas: 28% (54/191)\r"] +[5.273574142456045, "o", "Resolving deltas: 29% (56/191)\r"] +[5.273645906448355, "o", "Resolving deltas: 30% (58/191)\r"] +[5.273714809417715, "o", "Resolving deltas: 31% (60/191)\r"] +[5.273789911270132, "o", "Resolving deltas: 32% (62/191)\r"] +[5.273863821029654, "o", "Resolving deltas: 33% (64/191)\r"] +[5.273915796279898, "o", "Resolving deltas: 34% (65/191)\r"] +[5.273973731994619, "o", "Resolving deltas: 35% (67/191)\r"] +[5.274029998779287, "o", "Resolving deltas: 36% (69/191)\r"] +[5.274097232818594, "o", "Resolving deltas: 37% (71/191)\r"] +[5.274154214858999, "o", "Resolving deltas: 38% (73/191)\r"] +[5.274358777999868, "o", "Resolving deltas: 39% (75/191)\r"] +[5.274414806365957, "o", "Resolving deltas: 40% (77/191)\r"] +[5.274505882263174, "o", "Resolving deltas: 41% (79/191)\r"] +[5.274566917419424, "o", "Resolving deltas: 42% (81/191)\r"] +[5.274637727737417, "o", "Resolving deltas: 43% (83/191)\r"] +[5.274723796844473, "o", "Resolving deltas: 44% (85/191)\r"] +[5.274782209396353, "o", "Resolving deltas: 45% (86/191)\r"] +[5.274846820831289, "o", "Resolving deltas: 46% (88/191)\r"] +[5.274895935058584, "o", "Resolving deltas: 47% (90/191)\r"] +[5.274994163513174, "o", "Resolving deltas: 48% (92/191)\r"] +[5.275072841644278, "o", "Resolving deltas: 49% (94/191)\r"] +[5.27512791633605, "o", "Resolving deltas: 50% (96/191)\r"] +[5.275183229446402, "o", "Resolving deltas: 51% (98/191)\r"] +[5.275261907577505, "o", "Resolving deltas: 52% (100/191)\r"] +[5.275343685150137, "o", "Resolving deltas: 53% (102/191)\r"] +[5.275403766632071, "o", "Resolving deltas: 54% (104/191)\r"] +[5.2754552650451565, "o", "Resolving deltas: 55% (106/191)\r"] +[5.275514869689932, "o", "Resolving deltas: 56% (107/191)\r"] +[5.275581388473501, "o", "Resolving deltas: 57% (109/191)\r"] +[5.275657682418814, "o", "Resolving deltas: 58% (111/191)\r"] +[5.275743274688711, "o", "Resolving deltas: 59% (113/191)\r"] +[5.27582839012145, "o", "Resolving deltas: 60% (115/191)\r"] +[5.275895147323599, "o", "Resolving deltas: 61% (117/191)\r"] +[5.2759833621978665, "o", "Resolving deltas: 62% (119/191)\r"] +[5.276127367019644, "o", "Resolving deltas: 63% (121/191)\r"] +[5.27623441696166, "o", "Resolving deltas: 64% (123/191)\r"] +[5.276323108673086, "o", "Resolving deltas: 65% (125/191)\r"] +[5.27638581275939, "o", "Resolving deltas: 66% (127/191)\r"] +[5.276432304382315, "o", "Resolving deltas: 67% (128/191)\r"] +[5.276488571166983, "o", "Resolving deltas: 68% (130/191)\r"] +[5.276561527252188, "o", "Resolving deltas: 69% (132/191)\r"] +[5.276634006500235, "o", "Resolving deltas: 70% (134/191)\r"] +[5.276704816818228, "o", "Resolving deltas: 71% (136/191)\r"] +[5.279860286712637, "o", "Resolving deltas: 72% (138/191)\r"] +[5.28034499168395, "o", "Resolving deltas: 73% (140/191)\r"] +[5.280705242156973, "o", "Resolving deltas: 74% (142/191)\r"] +[5.280939369201651, "o", "Resolving deltas: 75% (144/191)\r"] +[5.284001140594473, "o", "Resolving deltas: 76% (146/191)\r"] +[5.2852146911621, "o", "Resolving deltas: 77% (148/191)\r"] +[5.285521535873404, "o", "Resolving deltas: 78% (149/191)\r"] +[5.286412506103506, "o", "Resolving deltas: 79% (151/191)\r"] +[5.286491422653189, "o", "Resolving deltas: 80% (153/191)\r"] +[5.286550073623648, "o", "Resolving deltas: 81% (155/191)\r"] +[5.28661325454711, "o", "Resolving deltas: 82% (157/191)\r"] +[5.286693601608267, "o", "Resolving deltas: 83% (159/191)\r"] +[5.286773948669424, "o", "Resolving deltas: 84% (161/191)\r"] +[5.286823301315298, "o", "Resolving deltas: 85% (163/191)\r"] +[5.28689435005187, "o", "Resolving deltas: 86% (165/191)\r"] +[5.286961107254019, "o", "Resolving deltas: 87% (167/191)\r"] +[5.2870331096649075, "o", "Resolving deltas: 88% (169/191)\r"] +[5.287092952728262, "o", "Resolving deltas: 89% (170/191)\r"] +[5.287158994674673, "o", "Resolving deltas: 90% (172/191)\r"] +[5.2872233676910305, "o", "Resolving deltas: 91% (174/191)\r"] +[5.287283449172964, "o", "Resolving deltas: 92% (176/191)\r"] +[5.2874088573455715, "o", "Resolving deltas: 93% (178/191)\r"] +[5.287475852966299, "o", "Resolving deltas: 94% (180/191)\r"] +[5.287529735565176, "o", "Resolving deltas: 95% (182/191)\r"] +[5.287591009140005, "o", "Resolving deltas: 96% (184/191)\r"] +[5.287685422897329, "o", "Resolving deltas: 97% (186/191)\r"] +[5.287757425308218, "o", "Resolving deltas: 98% (188/191)\r"] +[5.287823467254629, "o", "Resolving deltas: 99% (190/191)\r"] +[5.289001255035391, "o", "Resolving deltas: 100% (191/191)\r"] +[5.2893619823455715, "o", "Resolving deltas: 100% (191/191), done.\r\n"] +[5.319361982345572, "o", "\u001b[1m"] +[5.349361982345572, "o", "\u001b[36m"] +[5.379361982345572, "o", "\u001b[91m"] +[5.4093619823455725, "o", "$"] +[5.439361982345573, "o", " "] +[5.469361982345573, "o", "\u001b[0m"] +[12.03, "o", "\u001b[H"] +[12.059999999999999, "o", "\u001b[J"] +[12.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the initial data (in CSV) from this branch of the project."] +[12.119999999999997, "o", "\r\n"] +[12.149999999999997, "o", "$"] +[12.179999999999996, "o", " "] +[12.209999999999996, "o", "s"] +[12.239999999999995, "o", "g"] +[12.269999999999994, "o", "r"] +[12.299999999999994, "o", " "] +[12.329999999999993, "o", "i"] +[12.359999999999992, "o", "n"] +[12.389999999999992, "o", "i"] +[12.419999999999991, "o", "t"] +[12.44999999999999, "o", " "] +[12.47999999999999, "o", "r"] +[12.50999999999999, "o", "a"] +[12.539999999999988, "o", "w"] +[12.569999999999988, "o", "_"] +[12.599999999999987, "o", "j"] +[12.629999999999987, "o", "a"] +[12.659999999999986, "o", "f"] +[12.689999999999985, "o", "f"] +[12.719999999999985, "o", "l"] +[12.749999999999984, "o", "e"] +[12.779999999999983, "o", "_"] +[12.809999999999983, "o", "s"] +[12.839999999999982, "o", "h"] +[12.869999999999981, "o", "o"] +[12.89999999999998, "o", "p"] +[12.92999999999998, "o", "\r\n"] +[12.95999999999998, "o", "$"] +[12.989999999999979, "o", " "] +[13.019999999999978, "o", "s"] +[13.049999999999978, "o", "g"] +[13.079999999999977, "o", "r"] +[13.109999999999976, "o", " "] +[13.139999999999976, "o", "c"] +[13.169999999999975, "o", "s"] +[13.199999999999974, "o", "v"] +[13.229999999999974, "o", " "] +[13.259999999999973, "o", "i"] +[13.289999999999973, "o", "m"] +[13.319999999999972, "o", "p"] +[13.349999999999971, "o", "o"] +[13.37999999999997, "o", "r"] +[13.40999999999997, "o", "t"] +[13.43999999999997, "o", " "] +[13.469999999999969, "o", "-"] +[13.499999999999968, "o", "f"] +[13.529999999999967, "o", " "] +[13.559999999999967, "o", "j"] +[13.589999999999966, "o", "a"] +[13.619999999999965, "o", "f"] +[13.649999999999965, "o", "f"] +[13.679999999999964, "o", "l"] +[13.709999999999964, "o", "e"] +[13.739999999999963, "o", "_"] +[13.769999999999962, "o", "s"] +[13.799999999999962, "o", "h"] +[13.829999999999961, "o", "o"] +[13.85999999999996, "o", "p"] +[13.88999999999996, "o", "/"] +[13.919999999999959, "o", "d"] +[13.949999999999958, "o", "a"] +[13.979999999999958, "o", "t"] +[14.009999999999957, "o", "a"] +[14.039999999999957, "o", "/"] +[14.069999999999956, "o", "r"] +[14.099999999999955, "o", "a"] +[14.129999999999955, "o", "w"] +[14.159999999999954, "o", "_"] +[14.189999999999953, "o", "c"] +[14.219999999999953, "o", "u"] +[14.249999999999952, "o", "s"] +[14.279999999999951, "o", "t"] +[14.30999999999995, "o", "o"] +[14.33999999999995, "o", "m"] +[14.36999999999995, "o", "e"] +[14.399999999999949, "o", "r"] +[14.429999999999948, "o", "s"] +[14.459999999999948, "o", "."] +[14.489999999999947, "o", "c"] +[14.519999999999946, "o", "s"] +[14.549999999999946, "o", "v"] +[14.579999999999945, "o", " "] +[14.609999999999944, "o", "-"] +[14.639999999999944, "o", "k"] +[14.669999999999943, "o", " "] +[14.699999999999942, "o", "i"] +[14.729999999999942, "o", "d"] +[14.759999999999941, "o", " "] +[14.78999999999994, "o", "r"] +[14.81999999999994, "o", "a"] +[14.84999999999994, "o", "w"] +[14.879999999999939, "o", "_"] +[14.909999999999938, "o", "j"] +[14.939999999999937, "o", "a"] +[14.969999999999937, "o", "f"] +[14.999999999999936, "o", "f"] +[15.029999999999935, "o", "l"] +[15.059999999999935, "o", "e"] +[15.089999999999934, "o", "_"] +[15.119999999999933, "o", "s"] +[15.149999999999933, "o", "h"] +[15.179999999999932, "o", "o"] +[15.209999999999932, "o", "p"] +[15.239999999999931, "o", " "] +[15.26999999999993, "o", "c"] +[15.29999999999993, "o", "u"] +[15.329999999999929, "o", "s"] +[15.359999999999928, "o", "t"] +[15.389999999999928, "o", "o"] +[15.419999999999927, "o", "m"] +[15.449999999999926, "o", "e"] +[15.479999999999926, "o", "r"] +[15.509999999999925, "o", "s"] +[15.539999999999925, "o", "\r\n"] +[15.569999999999924, "o", "$"] +[15.599999999999923, "o", " "] +[15.629999999999923, "o", "s"] +[15.659999999999922, "o", "g"] +[15.689999999999921, "o", "r"] +[15.71999999999992, "o", " "] +[15.74999999999992, "o", "c"] +[15.77999999999992, "o", "s"] +[15.809999999999919, "o", "v"] +[15.839999999999918, "o", " "] +[15.869999999999918, "o", "i"] +[15.899999999999917, "o", "m"] +[15.929999999999916, "o", "p"] +[15.959999999999916, "o", "o"] +[15.989999999999915, "o", "r"] +[16.019999999999914, "o", "t"] +[16.049999999999915, "o", " "] +[16.079999999999917, "o", "-"] +[16.109999999999918, "o", "f"] +[16.13999999999992, "o", " "] +[16.16999999999992, "o", "j"] +[16.19999999999992, "o", "a"] +[16.229999999999922, "o", "f"] +[16.259999999999923, "o", "f"] +[16.289999999999925, "o", "l"] +[16.319999999999926, "o", "e"] +[16.349999999999927, "o", "_"] +[16.379999999999928, "o", "s"] +[16.40999999999993, "o", "h"] +[16.43999999999993, "o", "o"] +[16.46999999999993, "o", "p"] +[16.499999999999932, "o", "/"] +[16.529999999999934, "o", "d"] +[16.559999999999935, "o", "a"] +[16.589999999999936, "o", "t"] +[16.619999999999937, "o", "a"] +[16.649999999999938, "o", "/"] +[16.67999999999994, "o", "r"] +[16.70999999999994, "o", "a"] +[16.73999999999994, "o", "w"] +[16.769999999999943, "o", "_"] +[16.799999999999944, "o", "o"] +[16.829999999999945, "o", "r"] +[16.859999999999946, "o", "d"] +[16.889999999999947, "o", "e"] +[16.91999999999995, "o", "r"] +[16.94999999999995, "o", "s"] +[16.97999999999995, "o", "."] +[17.009999999999952, "o", "c"] +[17.039999999999953, "o", "s"] +[17.069999999999954, "o", "v"] +[17.099999999999955, "o", " "] +[17.129999999999956, "o", "-"] +[17.159999999999958, "o", "k"] +[17.18999999999996, "o", " "] +[17.21999999999996, "o", "i"] +[17.24999999999996, "o", "d"] +[17.279999999999962, "o", " "] +[17.309999999999963, "o", "-"] +[17.339999999999964, "o", "t"] +[17.369999999999965, "o", " "] +[17.399999999999967, "o", "o"] +[17.429999999999968, "o", "r"] +[17.45999999999997, "o", "d"] +[17.48999999999997, "o", "e"] +[17.51999999999997, "o", "r"] +[17.549999999999972, "o", "_"] +[17.579999999999973, "o", "d"] +[17.609999999999975, "o", "a"] +[17.639999999999976, "o", "t"] +[17.669999999999977, "o", "e"] +[17.699999999999978, "o", " "] +[17.72999999999998, "o", "t"] +[17.75999999999998, "o", "i"] +[17.78999999999998, "o", "m"] +[17.819999999999983, "o", "e"] +[17.849999999999984, "o", "s"] +[17.879999999999985, "o", "t"] +[17.909999999999986, "o", "a"] +[17.939999999999987, "o", "m"] +[17.969999999999988, "o", "p"] +[17.99999999999999, "o", " "] +[18.02999999999999, "o", "r"] +[18.05999999999999, "o", "a"] +[18.089999999999993, "o", "w"] +[18.119999999999994, "o", "_"] +[18.149999999999995, "o", "j"] +[18.179999999999996, "o", "a"] +[18.209999999999997, "o", "f"] +[18.24, "o", "f"] +[18.27, "o", "l"] +[18.3, "o", "e"] +[18.330000000000002, "o", "_"] +[18.360000000000003, "o", "s"] +[18.390000000000004, "o", "h"] +[18.420000000000005, "o", "o"] +[18.450000000000006, "o", "p"] +[18.480000000000008, "o", " "] +[18.51000000000001, "o", "o"] +[18.54000000000001, "o", "r"] +[18.57000000000001, "o", "d"] +[18.600000000000012, "o", "e"] +[18.630000000000013, "o", "r"] +[18.660000000000014, "o", "s"] +[18.690000000000015, "o", "\r\n"] +[18.720000000000017, "o", "$"] +[18.750000000000018, "o", " "] +[18.78000000000002, "o", "s"] +[18.81000000000002, "o", "g"] +[18.84000000000002, "o", "r"] +[18.870000000000022, "o", " "] +[18.900000000000023, "o", "c"] +[18.930000000000025, "o", "s"] +[18.960000000000026, "o", "v"] +[18.990000000000027, "o", " "] +[19.020000000000028, "o", "i"] +[19.05000000000003, "o", "m"] +[19.08000000000003, "o", "p"] +[19.11000000000003, "o", "o"] +[19.140000000000033, "o", "r"] +[19.170000000000034, "o", "t"] +[19.200000000000035, "o", " "] +[19.230000000000036, "o", "-"] +[19.260000000000037, "o", "f"] +[19.29000000000004, "o", " "] +[19.32000000000004, "o", "j"] +[19.35000000000004, "o", "a"] +[19.38000000000004, "o", "f"] +[19.410000000000043, "o", "f"] +[19.440000000000044, "o", "l"] +[19.470000000000045, "o", "e"] +[19.500000000000046, "o", "_"] +[19.530000000000047, "o", "s"] +[19.56000000000005, "o", "h"] +[19.59000000000005, "o", "o"] +[19.62000000000005, "o", "p"] +[19.650000000000052, "o", "/"] +[19.680000000000053, "o", "d"] +[19.710000000000054, "o", "a"] +[19.740000000000055, "o", "t"] +[19.770000000000056, "o", "a"] +[19.800000000000058, "o", "/"] +[19.83000000000006, "o", "r"] +[19.86000000000006, "o", "a"] +[19.89000000000006, "o", "w"] +[19.920000000000062, "o", "_"] +[19.950000000000063, "o", "p"] +[19.980000000000064, "o", "a"] +[20.010000000000066, "o", "y"] +[20.040000000000067, "o", "m"] +[20.070000000000068, "o", "e"] +[20.10000000000007, "o", "n"] +[20.13000000000007, "o", "t"] +[20.16000000000007, "o", "s"] +[20.190000000000072, "o", "."] +[20.220000000000073, "o", "c"] +[20.250000000000075, "o", "s"] +[20.280000000000076, "o", "v"] +[20.310000000000077, "o", " "] +[20.340000000000078, "o", "-"] +[20.37000000000008, "o", "k"] +[20.40000000000008, "o", " "] +[20.43000000000008, "o", "i"] +[20.460000000000083, "o", "d"] +[20.490000000000084, "o", " "] +[20.520000000000085, "o", "r"] +[20.550000000000086, "o", "a"] +[20.580000000000087, "o", "w"] +[20.61000000000009, "o", "_"] +[20.64000000000009, "o", "j"] +[20.67000000000009, "o", "a"] +[20.70000000000009, "o", "f"] +[20.730000000000093, "o", "f"] +[20.760000000000094, "o", "l"] +[20.790000000000095, "o", "e"] +[20.820000000000096, "o", "_"] +[20.850000000000097, "o", "s"] +[20.8800000000001, "o", "h"] +[20.9100000000001, "o", "o"] +[20.9400000000001, "o", "p"] +[20.970000000000102, "o", " "] +[21.000000000000103, "o", "p"] +[21.030000000000104, "o", "a"] +[21.060000000000105, "o", "y"] +[21.090000000000106, "o", "m"] +[21.120000000000108, "o", "e"] +[21.15000000000011, "o", "n"] +[21.18000000000011, "o", "t"] +[21.21000000000011, "o", "s"] +[21.240000000000112, "o", "\r\n"] +[21.270000000000113, "o", "\u001b[0m"] +[21.300000000000114, "o", "\r\n"] +[21.682372379303093, "o", "Initialized empty repository raw_jaffle_shop\r\n"] +[21.712372379303094, "o", "\u001b[1m"] +[21.742372379303095, "o", "\u001b[36m"] +[21.772372379303096, "o", "\u001b[91m"] +[21.802372379303097, "o", "$"] +[21.8323723793031, "o", " "] +[21.8623723793031, "o", "\u001b[0m"] +[26.8923723793031, "o", "\u001b[H"] +[26.922372379303102, "o", "\u001b[J"] +[26.952372379303103, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Snapshot the initial data with Splitgraph."] +[26.982372379303104, "o", "\r\n"] +[27.012372379303105, "o", "$"] +[27.042372379303107, "o", " "] +[27.072372379303108, "o", "s"] +[27.10237237930311, "o", "g"] +[27.13237237930311, "o", "r"] +[27.16237237930311, "o", " "] +[27.192372379303112, "o", "d"] +[27.222372379303113, "o", "i"] +[27.252372379303115, "o", "f"] +[27.282372379303116, "o", "f"] +[27.312372379303117, "o", " "] +[27.342372379303118, "o", "r"] +[27.37237237930312, "o", "a"] +[27.40237237930312, "o", "w"] +[27.43237237930312, "o", "_"] +[27.462372379303122, "o", "j"] +[27.492372379303124, "o", "a"] +[27.522372379303125, "o", "f"] +[27.552372379303126, "o", "f"] +[27.582372379303127, "o", "l"] +[27.612372379303128, "o", "e"] +[27.64237237930313, "o", "_"] +[27.67237237930313, "o", "s"] +[27.70237237930313, "o", "h"] +[27.732372379303133, "o", "o"] +[27.762372379303134, "o", "p"] +[27.792372379303135, "o", "\r\n"] +[27.822372379303136, "o", "$"] +[27.852372379303137, "o", " "] +[27.88237237930314, "o", "s"] +[27.91237237930314, "o", "g"] +[27.94237237930314, "o", "r"] +[27.972372379303142, "o", " "] +[28.002372379303143, "o", "c"] +[28.032372379303144, "o", "o"] +[28.062372379303145, "o", "m"] +[28.092372379303146, "o", "m"] +[28.122372379303147, "o", "i"] +[28.15237237930315, "o", "t"] +[28.18237237930315, "o", " "] +[28.21237237930315, "o", "r"] +[28.242372379303152, "o", "a"] +[28.272372379303153, "o", "w"] +[28.302372379303154, "o", "_"] +[28.332372379303155, "o", "j"] +[28.362372379303157, "o", "a"] +[28.392372379303158, "o", "f"] +[28.42237237930316, "o", "f"] +[28.45237237930316, "o", "l"] +[28.48237237930316, "o", "e"] +[28.512372379303162, "o", "_"] +[28.542372379303163, "o", "s"] +[28.572372379303165, "o", "h"] +[28.602372379303166, "o", "o"] +[28.632372379303167, "o", "p"] +[28.662372379303168, "o", "\r\n"] +[28.69237237930317, "o", "$"] +[28.72237237930317, "o", " "] +[28.75237237930317, "o", "s"] +[28.782372379303172, "o", "g"] +[28.812372379303174, "o", "r"] +[28.842372379303175, "o", " "] +[28.872372379303176, "o", "t"] +[28.902372379303177, "o", "a"] +[28.932372379303178, "o", "g"] +[28.96237237930318, "o", " "] +[28.99237237930318, "o", "r"] +[29.02237237930318, "o", "a"] +[29.052372379303183, "o", "w"] +[29.082372379303184, "o", "_"] +[29.112372379303185, "o", "j"] +[29.142372379303186, "o", "a"] +[29.172372379303187, "o", "f"] +[29.20237237930319, "o", "f"] +[29.23237237930319, "o", "l"] +[29.26237237930319, "o", "e"] +[29.292372379303192, "o", "_"] +[29.322372379303193, "o", "s"] +[29.352372379303194, "o", "h"] +[29.382372379303195, "o", "o"] +[29.412372379303196, "o", "p"] +[29.442372379303198, "o", " "] +[29.4723723793032, "o", "a"] +[29.5023723793032, "o", "s"] +[29.5323723793032, "o", "o"] +[29.562372379303202, "o", "f"] +[29.592372379303203, "o", "_"] +[29.622372379303204, "o", "2"] +[29.652372379303205, "o", "0"] +[29.682372379303207, "o", "1"] +[29.712372379303208, "o", "8"] +[29.74237237930321, "o", "0"] +[29.77237237930321, "o", "4"] +[29.80237237930321, "o", "0"] +[29.832372379303212, "o", "9"] +[29.862372379303213, "o", "\r\n"] +[29.892372379303215, "o", "\u001b[0m"] +[29.922372379303216, "o", "\r\n"] +[30.310227909088372, "o", "Between 000000000000 and the current working copy: \r\n"] +[30.31032160758996, "o", "customers: table added\r\norders: table added\r\npayments: table added\r\n"] +[30.72441271781945, "o", "Committing raw_jaffle_shop...\r\n"] +[30.743109979629754, "o", "Processing table orders\r\n"] +[30.83858875274682, "o", "Processing table payments\r\n"] +[30.92693308830285, "o", "Processing table customers\r\n"] +[31.015594758987664, "o", "Committed raw_jaffle_shop as 3d8fe0d40ad4.\r\n"] +[31.3701732540133, "o", "Tagged raw_jaffle_shop:3d8fe0d40ad497b417a53a5eb6cafa8c64de855b0870c0f67b955fc98433b172 with asof_20180409.\r\n"] +[31.4001732540133, "o", "\u001b[1m"] +[31.4301732540133, "o", "\u001b[36m"] +[31.460173254013302, "o", "\u001b[91m"] +[31.490173254013303, "o", "$"] +[31.520173254013304, "o", " "] +[31.550173254013306, "o", "\u001b[0m"] +[36.5801732540133, "o", "\u001b[H"] +[36.610173254013304, "o", "\u001b[J"] +[36.640173254013305, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the original data"] +[36.67017325401331, "o", "\r\n"] +[36.70017325401331, "o", "$"] +[36.73017325401331, "o", " "] +[36.76017325401331, "o", "s"] +[36.79017325401331, "o", "g"] +[36.82017325401331, "o", "r"] +[36.85017325401331, "o", " "] +[36.880173254013314, "o", "s"] +[36.910173254013316, "o", "h"] +[36.94017325401332, "o", "o"] +[36.97017325401332, "o", "w"] +[37.00017325401332, "o", " "] +[37.03017325401332, "o", "r"] +[37.06017325401332, "o", "a"] +[37.09017325401332, "o", "w"] +[37.120173254013324, "o", "_"] +[37.150173254013325, "o", "j"] +[37.180173254013326, "o", "a"] +[37.21017325401333, "o", "f"] +[37.24017325401333, "o", "f"] +[37.27017325401333, "o", "l"] +[37.30017325401333, "o", "e"] +[37.33017325401333, "o", "_"] +[37.36017325401333, "o", "s"] +[37.390173254013334, "o", "h"] +[37.420173254013335, "o", "o"] +[37.450173254013336, "o", "p"] +[37.48017325401334, "o", ":"] +[37.51017325401334, "o", "a"] +[37.54017325401334, "o", "s"] +[37.57017325401334, "o", "o"] +[37.60017325401334, "o", "f"] +[37.63017325401334, "o", "_"] +[37.660173254013344, "o", "2"] +[37.690173254013345, "o", "0"] +[37.720173254013346, "o", "1"] +[37.75017325401335, "o", "8"] +[37.78017325401335, "o", "0"] +[37.81017325401335, "o", "4"] +[37.84017325401335, "o", "0"] +[37.87017325401335, "o", "9"] +[37.90017325401335, "o", "\r\n"] +[37.930173254013354, "o", "$"] +[37.960173254013355, "o", " "] +[37.99017325401336, "o", "s"] +[38.02017325401336, "o", "g"] +[38.05017325401336, "o", "r"] +[38.08017325401336, "o", " "] +[38.11017325401336, "o", "t"] +[38.14017325401336, "o", "a"] +[38.17017325401336, "o", "b"] +[38.200173254013364, "o", "l"] +[38.230173254013366, "o", "e"] +[38.26017325401337, "o", " "] +[38.29017325401337, "o", "r"] +[38.32017325401337, "o", "a"] +[38.35017325401337, "o", "w"] +[38.38017325401337, "o", "_"] +[38.41017325401337, "o", "j"] +[38.440173254013374, "o", "a"] +[38.470173254013375, "o", "f"] +[38.500173254013376, "o", "f"] +[38.53017325401338, "o", "l"] +[38.56017325401338, "o", "e"] +[38.59017325401338, "o", "_"] +[38.62017325401338, "o", "s"] +[38.65017325401338, "o", "h"] +[38.68017325401338, "o", "o"] +[38.710173254013384, "o", "p"] +[38.740173254013385, "o", ":"] +[38.770173254013386, "o", "a"] +[38.80017325401339, "o", "s"] +[38.83017325401339, "o", "o"] +[38.86017325401339, "o", "f"] +[38.89017325401339, "o", "_"] +[38.92017325401339, "o", "2"] +[38.95017325401339, "o", "0"] +[38.980173254013394, "o", "1"] +[39.010173254013395, "o", "8"] +[39.040173254013396, "o", "0"] +[39.0701732540134, "o", "4"] +[39.1001732540134, "o", "0"] +[39.1301732540134, "o", "9"] +[39.1601732540134, "o", " "] +[39.1901732540134, "o", "o"] +[39.2201732540134, "o", "r"] +[39.250173254013404, "o", "d"] +[39.280173254013405, "o", "e"] +[39.31017325401341, "o", "r"] +[39.34017325401341, "o", "s"] +[39.37017325401341, "o", "\r\n"] +[39.40017325401341, "o", "\u001b[0m"] +[39.43017325401341, "o", "\r\n"] +[39.80464825630223, "o", "Image raw_jaffle_shop:3d8fe0d40ad497b417a53a5eb6cafa8c64de855b0870c0f67b955fc98433b172\r\n\r\n"] +[39.804659938812605, "o", "Created at 2021-08-18T18:41:13.907021\r\n"] +[39.8061955928806, "o", "Size: 7.58 KiB\r\n"] +[39.80620799064671, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[39.812037563324324, "o", " customers\r\n"] +[39.81211647987401, "o", " orders\r\n payments\r\n"] +[40.1720129013065, "o", "Table raw_jaffle_shop:3d8fe0d40ad497b417a53a5eb6cafa8c64de855b0870c0f67b955fc98433b172/orders\r\n"] +[40.172022676468245, "o", "\r\n"] +[40.17340621948277, "o", "Size: 1.73 KiB\r\n"] +[40.17442212104832, "o", "Rows: 99\r\nColumns: \r\n"] +[40.17443857193028, "o", " id (integer, PK)\r\n user_id (integer)\r\n order_date (timestamp without time zone)\r\n status (character varying)\r\n"] +[40.17485198974644, "o", "\r\n"] +[40.17486152648961, "o", "Objects: \r\n o7e3ffa6e2141edde30498e4c4a6a2b510d8b7e479081aafe154d31ca4436bd\r\n"] +[40.20486152648961, "o", "\u001b[1m"] +[40.23486152648961, "o", "\u001b[36m"] +[40.26486152648961, "o", "\u001b[91m"] +[40.29486152648961, "o", "$"] +[40.32486152648961, "o", " "] +[40.354861526489614, "o", "\u001b[0m"] +[49.5801732540133, "o", "\u001b[H"] +[49.610173254013304, "o", "\u001b[J"] +[49.640173254013305, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The status column in the raw_orders table in the initial dataset can"] +[49.67017325401331, "o", "\r\n"] +[49.70017325401331, "o", "$ # change through time. Pretend that some jaffles were actually returned.\r\n"] +[49.73017325401331, "o", "$"] +[49.76017325401331, "o", " "] +[49.79017325401331, "o", "s"] +[49.82017325401331, "o", "g"] +[49.85017325401331, "o", "r"] +[49.880173254013314, "o", " "] +[49.910173254013316, "o", "s"] +[49.94017325401332, "o", "q"] +[49.97017325401332, "o", "l"] +[50.00017325401332, "o", " "] +[50.03017325401332, "o", "-"] +[50.06017325401332, "o", "s"] +[50.09017325401332, "o", " "] +[50.120173254013324, "o", "r"] +[50.150173254013325, "o", "a"] +[50.180173254013326, "o", "w"] +[50.21017325401333, "o", "_"] +[50.24017325401333, "o", "j"] +[50.27017325401333, "o", "a"] +[50.30017325401333, "o", "f"] +[50.33017325401333, "o", "f"] +[50.36017325401333, "o", "l"] +[50.390173254013334, "o", "e"] +[50.420173254013335, "o", "_"] +[50.450173254013336, "o", "s"] +[50.48017325401334, "o", "h"] +[50.51017325401334, "o", "o"] +[50.54017325401334, "o", "p"] +[50.57017325401334, "o", " "] +[50.60017325401334, "o", "\""] +[50.63017325401334, "o", "U"] +[50.660173254013344, "o", "P"] +[50.690173254013345, "o", "D"] +[50.720173254013346, "o", "A"] +[50.75017325401335, "o", "T"] +[50.78017325401335, "o", "E"] +[50.81017325401335, "o", " "] +[50.84017325401335, "o", "o"] +[50.87017325401335, "o", "r"] +[50.90017325401335, "o", "d"] +[50.930173254013354, "o", "e"] +[50.960173254013355, "o", "r"] +[50.99017325401336, "o", "s"] +[51.02017325401336, "o", " "] +[51.05017325401336, "o", "S"] +[51.08017325401336, "o", "E"] +[51.11017325401336, "o", "T"] +[51.14017325401336, "o", " "] +[51.17017325401336, "o", "s"] +[51.200173254013364, "o", "t"] +[51.230173254013366, "o", "a"] +[51.26017325401337, "o", "t"] +[51.29017325401337, "o", "u"] +[51.32017325401337, "o", "s"] +[51.35017325401337, "o", " "] +[51.38017325401337, "o", "="] +[51.41017325401337, "o", " "] +[51.440173254013374, "o", "'"] +[51.470173254013375, "o", "r"] +[51.500173254013376, "o", "e"] +[51.53017325401338, "o", "t"] +[51.56017325401338, "o", "u"] +[51.59017325401338, "o", "r"] +[51.62017325401338, "o", "n"] +[51.65017325401338, "o", "e"] +[51.68017325401338, "o", "d"] +[51.710173254013384, "o", "'"] +[51.740173254013385, "o", " "] +[51.770173254013386, "o", "\\"] +[51.80017325401339, "o", "\r\n "] +[51.83017325401339, "o", "W"] +[51.86017325401339, "o", "H"] +[51.89017325401339, "o", "E"] +[51.92017325401339, "o", "R"] +[51.95017325401339, "o", "E"] +[51.980173254013394, "o", " "] +[52.010173254013395, "o", "s"] +[52.040173254013396, "o", "t"] +[52.0701732540134, "o", "a"] +[52.1001732540134, "o", "t"] +[52.1301732540134, "o", "u"] +[52.1601732540134, "o", "s"] +[52.1901732540134, "o", " "] +[52.2201732540134, "o", "="] +[52.250173254013404, "o", " "] +[52.280173254013405, "o", "'"] +[52.31017325401341, "o", "r"] +[52.34017325401341, "o", "e"] +[52.37017325401341, "o", "t"] +[52.40017325401341, "o", "u"] +[52.43017325401341, "o", "r"] +[52.46017325401341, "o", "n"] +[52.49017325401341, "o", "_"] +[52.520173254013415, "o", "p"] +[52.550173254013416, "o", "e"] +[52.58017325401342, "o", "n"] +[52.61017325401342, "o", "d"] +[52.64017325401342, "o", "i"] +[52.67017325401342, "o", "n"] +[52.70017325401342, "o", "g"] +[52.73017325401342, "o", "'"] +[52.760173254013424, "o", " "] +[52.790173254013425, "o", "O"] +[52.820173254013426, "o", "R"] +[52.85017325401343, "o", " "] +[52.88017325401343, "o", "o"] +[52.91017325401343, "o", "r"] +[52.94017325401343, "o", "d"] +[52.97017325401343, "o", "e"] +[53.00017325401343, "o", "r"] +[53.030173254013434, "o", "_"] +[53.060173254013435, "o", "d"] +[53.090173254013436, "o", "a"] +[53.12017325401344, "o", "t"] +[53.15017325401344, "o", "e"] +[53.18017325401344, "o", " "] +[53.21017325401344, "o", "="] +[53.24017325401344, "o", " "] +[53.27017325401344, "o", "'"] +[53.300173254013444, "o", "2"] +[53.330173254013445, "o", "0"] +[53.360173254013446, "o", "1"] +[53.39017325401345, "o", "8"] +[53.42017325401345, "o", "-"] +[53.45017325401345, "o", "0"] +[53.48017325401345, "o", "3"] +[53.51017325401345, "o", "-"] +[53.54017325401345, "o", "2"] +[53.570173254013454, "o", "6"] +[53.600173254013455, "o", "'"] +[53.63017325401346, "o", "\""] +[53.66017325401346, "o", "\r\n"] +[53.69017325401346, "o", "$"] +[53.72017325401346, "o", " "] +[53.75017325401346, "o", "s"] +[53.78017325401346, "o", "g"] +[53.81017325401346, "o", "r"] +[53.840173254013465, "o", " "] +[53.870173254013466, "o", "d"] +[53.90017325401347, "o", "i"] +[53.93017325401347, "o", "f"] +[53.96017325401347, "o", "f"] +[53.99017325401347, "o", " "] +[54.02017325401347, "o", "-"] +[54.05017325401347, "o", "v"] +[54.080173254013474, "o", " "] +[54.110173254013475, "o", "r"] +[54.140173254013476, "o", "a"] +[54.17017325401348, "o", "w"] +[54.20017325401348, "o", "_"] +[54.23017325401348, "o", "j"] +[54.26017325401348, "o", "a"] +[54.29017325401348, "o", "f"] +[54.32017325401348, "o", "f"] +[54.350173254013484, "o", "l"] +[54.380173254013485, "o", "e"] +[54.410173254013486, "o", "_"] +[54.44017325401349, "o", "s"] +[54.47017325401349, "o", "h"] +[54.50017325401349, "o", "o"] +[54.53017325401349, "o", "p"] +[54.56017325401349, "o", "\r\n"] +[54.59017325401349, "o", "\u001b[0m"] +[54.620173254013494, "o", "\r\n"] +[55.2475438499455, "o", "Between 3d8fe0d40ad4 and the current working copy: \r\n"] +[55.24779132843061, "o", "customers: no changes.\r\norders: added 5 rows, removed 5 rows.\r\n"] +[55.2478244686131, "o", "- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending')\r\n- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending')\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped')\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned')\r\n"] +[55.247941055298284, "o", "+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned')\r\n+ (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\npayments: no changes.\r\n"] +[55.277941055298285, "o", "\u001b[1m"] +[55.307941055298286, "o", "\u001b[36m"] +[55.33794105529829, "o", "\u001b[91m"] +[55.36794105529829, "o", "$"] +[55.39794105529829, "o", " "] +[55.42794105529829, "o", "\u001b[0m"] +[60.45794105529829, "o", "\u001b[H"] +[60.48794105529829, "o", "\u001b[J"] +[60.517941055298294, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit this dataset and check out the original data"] +[60.547941055298296, "o", "\r\n"] +[60.5779410552983, "o", "$"] +[60.6079410552983, "o", " "] +[60.6379410552983, "o", "s"] +[60.6679410552983, "o", "g"] +[60.6979410552983, "o", "r"] +[60.7279410552983, "o", " "] +[60.7579410552983, "o", "c"] +[60.787941055298305, "o", "o"] +[60.817941055298306, "o", "m"] +[60.84794105529831, "o", "m"] +[60.87794105529831, "o", "i"] +[60.90794105529831, "o", "t"] +[60.93794105529831, "o", " "] +[60.96794105529831, "o", "r"] +[60.99794105529831, "o", "a"] +[61.027941055298314, "o", "w"] +[61.057941055298315, "o", "_"] +[61.087941055298316, "o", "j"] +[61.11794105529832, "o", "a"] +[61.14794105529832, "o", "f"] +[61.17794105529832, "o", "f"] +[61.20794105529832, "o", "l"] +[61.23794105529832, "o", "e"] +[61.26794105529832, "o", "_"] +[61.297941055298324, "o", "s"] +[61.327941055298325, "o", "h"] +[61.357941055298326, "o", "o"] +[61.38794105529833, "o", "p"] +[61.41794105529833, "o", "\r\n"] +[61.44794105529833, "o", "$"] +[61.47794105529833, "o", " "] +[61.50794105529833, "o", "s"] +[61.53794105529833, "o", "g"] +[61.567941055298334, "o", "r"] +[61.597941055298335, "o", " "] +[61.627941055298336, "o", "t"] +[61.65794105529834, "o", "a"] +[61.68794105529834, "o", "g"] +[61.71794105529834, "o", " "] +[61.74794105529834, "o", "r"] +[61.77794105529834, "o", "a"] +[61.80794105529834, "o", "w"] +[61.837941055298344, "o", "_"] +[61.867941055298346, "o", "j"] +[61.89794105529835, "o", "a"] +[61.92794105529835, "o", "f"] +[61.95794105529835, "o", "f"] +[61.98794105529835, "o", "l"] +[62.01794105529835, "o", "e"] +[62.04794105529835, "o", "_"] +[62.07794105529835, "o", "s"] +[62.107941055298355, "o", "h"] +[62.137941055298356, "o", "o"] +[62.16794105529836, "o", "p"] +[62.19794105529836, "o", " "] +[62.22794105529836, "o", "a"] +[62.25794105529836, "o", "s"] +[62.28794105529836, "o", "o"] +[62.31794105529836, "o", "f"] +[62.347941055298364, "o", "_"] +[62.377941055298365, "o", "2"] +[62.407941055298366, "o", "0"] +[62.43794105529837, "o", "1"] +[62.46794105529837, "o", "8"] +[62.49794105529837, "o", "0"] +[62.52794105529837, "o", "4"] +[62.55794105529837, "o", "1"] +[62.58794105529837, "o", "0"] +[62.617941055298374, "o", "\r\n"] +[62.647941055298375, "o", "$"] +[62.677941055298376, "o", " "] +[62.70794105529838, "o", "s"] +[62.73794105529838, "o", "g"] +[62.76794105529838, "o", "r"] +[62.79794105529838, "o", " "] +[62.82794105529838, "o", "c"] +[62.85794105529838, "o", "h"] +[62.887941055298384, "o", "e"] +[62.917941055298385, "o", "c"] +[62.94794105529839, "o", "k"] +[62.97794105529839, "o", "o"] +[63.00794105529839, "o", "u"] +[63.03794105529839, "o", "t"] +[63.06794105529839, "o", " "] +[63.09794105529839, "o", "r"] +[63.12794105529839, "o", "a"] +[63.157941055298394, "o", "w"] +[63.187941055298396, "o", "_"] +[63.2179410552984, "o", "j"] +[63.2479410552984, "o", "a"] +[63.2779410552984, "o", "f"] +[63.3079410552984, "o", "f"] +[63.3379410552984, "o", "l"] +[63.3679410552984, "o", "e"] +[63.3979410552984, "o", "_"] +[63.427941055298405, "o", "s"] +[63.457941055298406, "o", "h"] +[63.48794105529841, "o", "o"] +[63.51794105529841, "o", "p"] +[63.54794105529841, "o", ":"] +[63.57794105529841, "o", "a"] +[63.60794105529841, "o", "s"] +[63.63794105529841, "o", "o"] +[63.667941055298414, "o", "f"] +[63.697941055298415, "o", "_"] +[63.727941055298416, "o", "2"] +[63.75794105529842, "o", "0"] +[63.78794105529842, "o", "1"] +[63.81794105529842, "o", "8"] +[63.84794105529842, "o", "0"] +[63.87794105529842, "o", "4"] +[63.90794105529842, "o", "0"] +[63.937941055298424, "o", "9"] +[63.967941055298425, "o", "\r\n"] +[63.997941055298426, "o", "\u001b[0m"] +[64.02794105529843, "o", "\r\n"] +[64.4294226837164, "o", "Committing raw_jaffle_shop...\r\n"] +[64.44761211395321, "o", "Storing and indexing table orders\r\n"] +[64.53474146843014, "o", "Committed raw_jaffle_shop as ca2c12d048eb.\r\n"] +[64.92594820976315, "o", "Tagged raw_jaffle_shop:ca2c12d048eba3ddd6b3ae0e90e1e1de2c5d0f647fc6c9430e6b314c687c6f8d with asof_20180410.\r\n"] +[65.57414752960263, "o", "Checked out raw_jaffle_shop:3d8fe0d40ad4.\r\n"] +[65.60414752960263, "o", "\u001b[1m"] +[65.63414752960263, "o", "\u001b[36m"] +[65.66414752960263, "o", "\u001b[91m"] +[65.69414752960263, "o", "$"] +[65.72414752960263, "o", " "] +[65.75414752960263, "o", "\u001b[0m"] +[70.78414752960263, "o", "\u001b[H"] +[70.81414752960264, "o", "\u001b[J"] +[70.84414752960264, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the 'serious' version of the dbt project that uses data from"] +[70.87414752960264, "o", "\r\n"] +[70.90414752960264, "o", "$ # the actual warehouse rather than seed data.\r\n"] +[70.93414752960264, "o", "$"] +[70.96414752960264, "o", " "] +[70.99414752960264, "o", "c"] +[71.02414752960264, "o", "d"] +[71.05414752960264, "o", " "] +[71.08414752960265, "o", "j"] +[71.11414752960265, "o", "a"] +[71.14414752960265, "o", "f"] +[71.17414752960265, "o", "f"] +[71.20414752960265, "o", "l"] +[71.23414752960265, "o", "e"] +[71.26414752960265, "o", "_"] +[71.29414752960265, "o", "s"] +[71.32414752960266, "o", "h"] +[71.35414752960266, "o", "o"] +[71.38414752960266, "o", "p"] +[71.41414752960266, "o", " "] +[71.44414752960266, "o", "&"] +[71.47414752960266, "o", "&"] +[71.50414752960266, "o", " "] +[71.53414752960266, "o", "g"] +[71.56414752960266, "o", "i"] +[71.59414752960267, "o", "t"] +[71.62414752960267, "o", " "] +[71.65414752960267, "o", "c"] +[71.68414752960267, "o", "h"] +[71.71414752960267, "o", "e"] +[71.74414752960267, "o", "c"] +[71.77414752960267, "o", "k"] +[71.80414752960267, "o", "o"] +[71.83414752960267, "o", "u"] +[71.86414752960268, "o", "t"] +[71.89414752960268, "o", " "] +[71.92414752960268, "o", "d"] +[71.95414752960268, "o", "e"] +[71.98414752960268, "o", "m"] +[72.01414752960268, "o", "o"] +[72.04414752960268, "o", "/"] +[72.07414752960268, "o", "m"] +[72.10414752960268, "o", "a"] +[72.13414752960269, "o", "s"] +[72.16414752960269, "o", "t"] +[72.19414752960269, "o", "e"] +[72.22414752960269, "o", "r"] +[72.25414752960269, "o", " "] +[72.28414752960269, "o", "-"] +[72.31414752960269, "o", "-"] +[72.3441475296027, "o", "f"] +[72.3741475296027, "o", "o"] +[72.4041475296027, "o", "r"] +[72.4341475296027, "o", "c"] +[72.4641475296027, "o", "e"] +[72.4941475296027, "o", "\r\n"] +[72.5241475296027, "o", "\u001b[0m"] +[72.5541475296027, "o", "\r\n"] +[72.55920438766545, "o", "Branch 'demo/master' set up to track remote branch 'demo/master' from 'origin'.\r\n"] +[72.5594752311713, "o", "Switched to a new branch 'demo/master'\r\n"] +[72.5894752311713, "o", "\u001b[1m"] +[72.61947523117131, "o", "\u001b[36m"] +[72.64947523117131, "o", "\u001b[91m"] +[72.67947523117131, "o", "$"] +[72.70947523117131, "o", " "] +[72.73947523117131, "o", "\u001b[0m"] +[77.76947523117131, "o", "\u001b[H"] +[77.79947523117131, "o", "\u001b[J"] +[77.82947523117132, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check that dbt is set up to connect to the Splitgraph engine."] +[77.85947523117132, "o", "\r\n"] +[77.88947523117132, "o", "$ # We will be outputting data into the dbt_jaffle repository, so set that up.\r\n"] +[77.91947523117132, "o", "$"] +[77.94947523117132, "o", " "] +[77.97947523117132, "o", "c"] +[78.00947523117132, "o", "a"] +[78.03947523117132, "o", "t"] +[78.06947523117132, "o", " "] +[78.09947523117133, "o", "."] +[78.12947523117133, "o", "d"] +[78.15947523117133, "o", "b"] +[78.18947523117133, "o", "t"] +[78.21947523117133, "o", "/"] +[78.24947523117133, "o", "p"] +[78.27947523117133, "o", "r"] +[78.30947523117133, "o", "o"] +[78.33947523117133, "o", "f"] +[78.36947523117134, "o", "i"] +[78.39947523117134, "o", "l"] +[78.42947523117134, "o", "e"] +[78.45947523117134, "o", "s"] +[78.48947523117134, "o", "."] +[78.51947523117134, "o", "y"] +[78.54947523117134, "o", "m"] +[78.57947523117134, "o", "l"] +[78.60947523117134, "o", "\r\n"] +[78.63947523117135, "o", "$"] +[78.66947523117135, "o", " "] +[78.69947523117135, "o", "d"] +[78.72947523117135, "o", "b"] +[78.75947523117135, "o", "t"] +[78.78947523117135, "o", " "] +[78.81947523117135, "o", "d"] +[78.84947523117135, "o", "e"] +[78.87947523117136, "o", "b"] +[78.90947523117136, "o", "u"] +[78.93947523117136, "o", "g"] +[78.96947523117136, "o", " "] +[78.99947523117136, "o", "-"] +[79.02947523117136, "o", "-"] +[79.05947523117136, "o", "p"] +[79.08947523117136, "o", "r"] +[79.11947523117136, "o", "o"] +[79.14947523117137, "o", "f"] +[79.17947523117137, "o", "i"] +[79.20947523117137, "o", "l"] +[79.23947523117137, "o", "e"] +[79.26947523117137, "o", "s"] +[79.29947523117137, "o", "-"] +[79.32947523117137, "o", "d"] +[79.35947523117137, "o", "i"] +[79.38947523117137, "o", "r"] +[79.41947523117138, "o", " "] +[79.44947523117138, "o", "."] +[79.47947523117138, "o", "d"] +[79.50947523117138, "o", "b"] +[79.53947523117138, "o", "t"] +[79.56947523117138, "o", " "] +[79.59947523117138, "o", "-"] +[79.62947523117138, "o", "-"] +[79.65947523117138, "o", "p"] +[79.68947523117139, "o", "r"] +[79.71947523117139, "o", "o"] +[79.74947523117139, "o", "j"] +[79.77947523117139, "o", "e"] +[79.80947523117139, "o", "c"] +[79.83947523117139, "o", "t"] +[79.86947523117139, "o", "-"] +[79.8994752311714, "o", "d"] +[79.9294752311714, "o", "i"] +[79.9594752311714, "o", "r"] +[79.9894752311714, "o", " "] +[80.0194752311714, "o", "j"] +[80.0494752311714, "o", "a"] +[80.0794752311714, "o", "f"] +[80.1094752311714, "o", "f"] +[80.1394752311714, "o", "l"] +[80.1694752311714, "o", "e"] +[80.1994752311714, "o", "_"] +[80.2294752311714, "o", "s"] +[80.25947523117141, "o", "h"] +[80.28947523117141, "o", "o"] +[80.31947523117141, "o", "p"] +[80.34947523117141, "o", "\r\n"] +[80.37947523117141, "o", "$"] +[80.40947523117141, "o", " "] +[80.43947523117141, "o", "s"] +[80.46947523117142, "o", "g"] +[80.49947523117142, "o", "r"] +[80.52947523117142, "o", " "] +[80.55947523117142, "o", "i"] +[80.58947523117142, "o", "n"] +[80.61947523117142, "o", "i"] +[80.64947523117142, "o", "t"] +[80.67947523117142, "o", " "] +[80.70947523117142, "o", "d"] +[80.73947523117143, "o", "b"] +[80.76947523117143, "o", "t"] +[80.79947523117143, "o", "_"] +[80.82947523117143, "o", "j"] +[80.85947523117143, "o", "a"] +[80.88947523117143, "o", "f"] +[80.91947523117143, "o", "f"] +[80.94947523117143, "o", "l"] +[80.97947523117143, "o", "e"] +[81.00947523117144, "o", "\r\n"] +[81.03947523117144, "o", "\u001b[0m"] +[81.06947523117144, "o", "\r\n"] +[81.07036381721575, "o", "jaffle_shop:\r\n target: splitgraph\r\n outputs:\r\n splitgraph:\r\n type: postgres\r\n host: localhost\r\n user: sgr\r\n pass: supersecure\r\n port: 5432\r\n dbname: splitgraph\r\n # The final schema that dbt writes to is a combination of this profile schema\r\n # and the schema specified in the model.\r\n schema: \"dbt_jaffle\"\r\n threads: 4\r\n"] +[81.79532414436419, "o", "Running with dbt=0.18.0\r\n"] +[81.79784327507097, "o", "dbt version: 0.18.0\r\npython version: 3.8.11\r\npython path: /opt/hostedtoolcache/Python/3.8.11/x64/bin/python\r\nos info: Linux-5.4.0-1055-azure-x86_64-with-glibc2.2.5\r\nUsing profiles.yml file at .dbt/profiles.yml\r\nUsing dbt_project.yml file at /home/runner/work/splitgraph/splitgraph/examples/dbt/jaffle_shop/dbt_project.yml\r\n\r\n"] +[81.86287146568377, "o", "Configuration:\r\n profiles.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n dbt_project.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n\r\nRequired dependencies:\r\n"] +[81.86671215057451, "o", " - git [\u001b[32mOK found\u001b[0m]\r\n\r\nConnection:\r\n"] +[81.86697894096453, "o", " host: localhost\r\n port: 5432\r\n user: sgr\r\n database: splitgraph\r\n schema: dbt_jaffle\r\n search_path: None\r\n keepalives_idle: 0\r\n sslmode: None\r\n"] +[81.87604123115618, "o", " Connection test: \u001b[32mOK connection ok\u001b[0m"] +[81.876088914872, "o", "\r\n"] +[81.87635665893633, "o", "\r\n"] +[82.3399937725075, "o", "\u001b[0m"] +[82.73199015617449, "o", "Initialized empty repository dbt_jaffle\r\n"] +[82.76199015617449, "o", "\u001b[1m"] +[82.79199015617449, "o", "\u001b[36m"] +[82.8219901561745, "o", "\u001b[91m"] +[82.8519901561745, "o", "$"] +[82.8819901561745, "o", " "] +[82.9119901561745, "o", "\u001b[0m"] +[101.26947523117131, "o", "\u001b[H"] +[101.29947523117131, "o", "\u001b[J"] +[101.32947523117132, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now run the dbt models."] +[101.35947523117132, "o", "\r\n"] +[101.38947523117132, "o", "$"] +[101.41947523117132, "o", " "] +[101.44947523117132, "o", "c"] +[101.47947523117132, "o", "d"] +[101.50947523117132, "o", " "] +[101.53947523117132, "o", "j"] +[101.56947523117132, "o", "a"] +[101.59947523117133, "o", "f"] +[101.62947523117133, "o", "f"] +[101.65947523117133, "o", "l"] +[101.68947523117133, "o", "e"] +[101.71947523117133, "o", "_"] +[101.74947523117133, "o", "s"] +[101.77947523117133, "o", "h"] +[101.80947523117133, "o", "o"] +[101.83947523117133, "o", "p"] +[101.86947523117134, "o", " "] +[101.89947523117134, "o", "&"] +[101.92947523117134, "o", "&"] +[101.95947523117134, "o", " "] +[101.98947523117134, "o", "d"] +[102.01947523117134, "o", "b"] +[102.04947523117134, "o", "t"] +[102.07947523117134, "o", " "] +[102.10947523117134, "o", "r"] +[102.13947523117135, "o", "u"] +[102.16947523117135, "o", "n"] +[102.19947523117135, "o", " "] +[102.22947523117135, "o", "-"] +[102.25947523117135, "o", "-"] +[102.28947523117135, "o", "p"] +[102.31947523117135, "o", "r"] +[102.34947523117135, "o", "o"] +[102.37947523117136, "o", "f"] +[102.40947523117136, "o", "i"] +[102.43947523117136, "o", "l"] +[102.46947523117136, "o", "e"] +[102.49947523117136, "o", "s"] +[102.52947523117136, "o", "-"] +[102.55947523117136, "o", "d"] +[102.58947523117136, "o", "i"] +[102.61947523117136, "o", "r"] +[102.64947523117137, "o", " "] +[102.67947523117137, "o", "."] +[102.70947523117137, "o", "."] +[102.73947523117137, "o", "/"] +[102.76947523117137, "o", "."] +[102.79947523117137, "o", "d"] +[102.82947523117137, "o", "b"] +[102.85947523117137, "o", "t"] +[102.88947523117137, "o", "\r\n"] +[102.91947523117138, "o", "\u001b[0m"] +[102.94947523117138, "o", "\r\n"] +[103.69105571746898, "o", "Running with dbt=0.18.0\r\n"] +[104.07300824165416, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[104.9041435146339, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[104.90734714508129, "o", "\r\n"] +[105.18699354171825, "o", "18:41:22 | Concurrency: 4 threads (target='splitgraph')\r\n"] +[105.1870853328712, "o", "18:41:22 | \r\n"] +[105.19523591041637, "o", "18:41:22 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]\r\n"] +[105.19660419464184, "o", "18:41:22 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]\r\n"] +[105.1969262981422, "o", "18:41:22 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]"] +[105.1969639682777, "o", "\r\n"] +[105.2129220390327, "o", "18:41:22 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]\r\n"] +[105.44917911529613, "o", "18:41:22 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.24s]"] +[105.44923371315075, "o", "\r\n"] +[105.45094770431591, "o", "18:41:22 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.25s]\r\n"] +[105.45255702972484, "o", "18:41:22 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.23s]\r\n"] +[105.45328063011242, "o", "18:41:22 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.25s]\r\n"] +[105.45570105552746, "o", "18:41:22 | 5 of 9 START table model dbt_jaffle.order_payments................... [RUN]\r\n"] +[105.46824974060131, "o", "18:41:22 | 6 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]"] +[105.4682828807838, "o", "\r\n"] +[105.46891516685558, "o", "18:41:22 | 7 of 9 START table model dbt_jaffle.customer_payments................ [RUN]"] +[105.46894997596813, "o", "\r\n"] +[105.580411853791, "o", "18:41:22 | 5 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.12s]\r\n"] +[105.58912867546154, "o", "18:41:22 | 8 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]\r\n"] +[105.61346715927196, "o", "18:41:22 | 6 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.13s]\r\n"] +[105.6228844547279, "o", "18:41:22 | 7 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.13s]"] +[105.62291926384044, "o", "\r\n"] +[105.6264814758308, "o", "18:41:22 | 9 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]"] +[105.62650937080456, "o", "\r\n"] +[105.6845857524879, "o", "18:41:22 | 8 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.09s]"] +[105.68461960792614, "o", "\r\n"] +[105.69383424758983, "o", "18:41:22 | 9 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.06s]\r\n"] +[105.70059699058605, "o", "18:41:22 | \r\n"] +[105.70091957092357, "o", "18:41:22 | Finished running 4 view models, 5 table models in 0.79s.\r\n"] +[105.73004716873241, "o", "\r\n"] +[105.73033350944591, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[105.73073786735607, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[106.10157317161632, "o", "\u001b[0m"] +[106.13157317161632, "o", "\u001b[1m"] +[106.16157317161633, "o", "\u001b[36m"] +[106.19157317161633, "o", "\u001b[91m"] +[106.22157317161633, "o", "$"] +[106.25157317161633, "o", " "] +[106.28157317161633, "o", "\u001b[0m"] +[121.76947523117131, "o", "\u001b[H"] +[121.79947523117131, "o", "\u001b[J"] +[121.82947523117132, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Take a look at the built dataset and commit it."] +[121.85947523117132, "o", "\r\n"] +[121.88947523117132, "o", "$ # Note Splitgraph doesn't currently support storing views\r\n"] +[121.91947523117132, "o", "$ # that dbt uses as a staging point for the initial data.\r\n"] +[121.94947523117132, "o", "$"] +[121.97947523117132, "o", " "] +[122.00947523117132, "o", "s"] +[122.03947523117132, "o", "g"] +[122.06947523117132, "o", "r"] +[122.09947523117133, "o", " "] +[122.12947523117133, "o", "d"] +[122.15947523117133, "o", "i"] +[122.18947523117133, "o", "f"] +[122.21947523117133, "o", "f"] +[122.24947523117133, "o", " "] +[122.27947523117133, "o", "d"] +[122.30947523117133, "o", "b"] +[122.33947523117133, "o", "t"] +[122.36947523117134, "o", "_"] +[122.39947523117134, "o", "j"] +[122.42947523117134, "o", "a"] +[122.45947523117134, "o", "f"] +[122.48947523117134, "o", "f"] +[122.51947523117134, "o", "l"] +[122.54947523117134, "o", "e"] +[122.57947523117134, "o", "\r\n"] +[122.60947523117134, "o", "$"] +[122.63947523117135, "o", " "] +[122.66947523117135, "o", "s"] +[122.69947523117135, "o", "g"] +[122.72947523117135, "o", "r"] +[122.75947523117135, "o", " "] +[122.78947523117135, "o", "c"] +[122.81947523117135, "o", "o"] +[122.84947523117135, "o", "m"] +[122.87947523117136, "o", "m"] +[122.90947523117136, "o", "i"] +[122.93947523117136, "o", "t"] +[122.96947523117136, "o", " "] +[122.99947523117136, "o", "d"] +[123.02947523117136, "o", "b"] +[123.05947523117136, "o", "t"] +[123.08947523117136, "o", "_"] +[123.11947523117136, "o", "j"] +[123.14947523117137, "o", "a"] +[123.17947523117137, "o", "f"] +[123.20947523117137, "o", "f"] +[123.23947523117137, "o", "l"] +[123.26947523117137, "o", "e"] +[123.29947523117137, "o", "\r\n"] +[123.32947523117137, "o", "$"] +[123.35947523117137, "o", " "] +[123.38947523117137, "o", "s"] +[123.41947523117138, "o", "g"] +[123.44947523117138, "o", "r"] +[123.47947523117138, "o", " "] +[123.50947523117138, "o", "t"] +[123.53947523117138, "o", "a"] +[123.56947523117138, "o", "g"] +[123.59947523117138, "o", " "] +[123.62947523117138, "o", "d"] +[123.65947523117138, "o", "b"] +[123.68947523117139, "o", "t"] +[123.71947523117139, "o", "_"] +[123.74947523117139, "o", "j"] +[123.77947523117139, "o", "a"] +[123.80947523117139, "o", "f"] +[123.83947523117139, "o", "f"] +[123.86947523117139, "o", "l"] +[123.8994752311714, "o", "e"] +[123.9294752311714, "o", " "] +[123.9594752311714, "o", "a"] +[123.9894752311714, "o", "s"] +[124.0194752311714, "o", "o"] +[124.0494752311714, "o", "f"] +[124.0794752311714, "o", "_"] +[124.1094752311714, "o", "2"] +[124.1394752311714, "o", "0"] +[124.1694752311714, "o", "1"] +[124.1994752311714, "o", "8"] +[124.2294752311714, "o", "0"] +[124.25947523117141, "o", "4"] +[124.28947523117141, "o", "0"] +[124.31947523117141, "o", "9"] +[124.34947523117141, "o", "\r\n"] +[124.37947523117141, "o", "\u001b[0m"] +[124.40947523117141, "o", "\r\n"] +[124.78656783104019, "o", "Between 000000000000 and the current working copy: \r\n"] +[124.78658046722488, "o", "customer_orders: table added\r\ncustomer_payments: table added\r\ndim_customers: table added\r\nfct_orders: table added\r\norder_payments: table added\r\nstg_jaffle_shop__customers: untracked\r\nstg_jaffle_shop__orders: untracked\r\nstg_jaffle_shop__payments: untracked\r\nstg_stripe__payments: untracked\r\n"] +[125.13996114730911, "o", "Committing dbt_jaffle...\r\n"] +[125.15448369979934, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.15563287735061, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.15666642189102, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.15773692131118, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.163404369355, "o", "Processing table order_payments\r\n"] +[125.25081076622085, "o", "Processing table customer_orders\r\n"] +[125.33007135391311, "o", "Processing table customer_payments\r\n"] +[125.40715065002517, "o", "Processing table fct_orders\r\n"] +[125.48607888221817, "o", "Processing table dim_customers\r\n"] +[125.57756581306533, "o", "Committed dbt_jaffle as a77e214fcf77.\r\n"] +[125.9370142459877, "o", "Tagged dbt_jaffle:a77e214fcf777fd78341d5b160f14d28455e4d97155edae9a7c02e5187017584 with asof_20180409.\r\n"] +[125.9670142459877, "o", "\u001b[1m"] +[125.9970142459877, "o", "\u001b[36m"] +[126.0270142459877, "o", "\u001b[91m"] +[126.0570142459877, "o", "$"] +[126.0870142459877, "o", " "] +[126.1170142459877, "o", "\u001b[0m"] +[136.2694752311713, "o", "\u001b[H"] +[136.2994752311713, "o", "\u001b[J"] +[136.3294752311713, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the new version of the raw dataset and run dbt against it as well."] +[136.3594752311713, "o", "\r\n"] +[136.3894752311713, "o", "$"] +[136.4194752311713, "o", " "] +[136.4494752311713, "o", "s"] +[136.4794752311713, "o", "g"] +[136.5094752311713, "o", "r"] +[136.5394752311713, "o", " "] +[136.5694752311713, "o", "c"] +[136.5994752311713, "o", "h"] +[136.6294752311713, "o", "e"] +[136.6594752311713, "o", "c"] +[136.68947523117131, "o", "k"] +[136.71947523117132, "o", "o"] +[136.74947523117132, "o", "u"] +[136.77947523117132, "o", "t"] +[136.80947523117132, "o", " "] +[136.83947523117132, "o", "r"] +[136.86947523117132, "o", "a"] +[136.89947523117132, "o", "w"] +[136.92947523117132, "o", "_"] +[136.95947523117133, "o", "j"] +[136.98947523117133, "o", "a"] +[137.01947523117133, "o", "f"] +[137.04947523117133, "o", "f"] +[137.07947523117133, "o", "l"] +[137.10947523117133, "o", "e"] +[137.13947523117133, "o", "_"] +[137.16947523117133, "o", "s"] +[137.19947523117133, "o", "h"] +[137.22947523117134, "o", "o"] +[137.25947523117134, "o", "p"] +[137.28947523117134, "o", ":"] +[137.31947523117134, "o", "a"] +[137.34947523117134, "o", "s"] +[137.37947523117134, "o", "o"] +[137.40947523117134, "o", "f"] +[137.43947523117134, "o", "_"] +[137.46947523117134, "o", "2"] +[137.49947523117135, "o", "0"] +[137.52947523117135, "o", "1"] +[137.55947523117135, "o", "8"] +[137.58947523117135, "o", "0"] +[137.61947523117135, "o", "4"] +[137.64947523117135, "o", "1"] +[137.67947523117135, "o", "0"] +[137.70947523117135, "o", "\r\n"] +[137.73947523117135, "o", "$"] +[137.76947523117136, "o", " "] +[137.79947523117136, "o", "c"] +[137.82947523117136, "o", "d"] +[137.85947523117136, "o", " "] +[137.88947523117136, "o", "j"] +[137.91947523117136, "o", "a"] +[137.94947523117136, "o", "f"] +[137.97947523117136, "o", "f"] +[138.00947523117136, "o", "l"] +[138.03947523117137, "o", "e"] +[138.06947523117137, "o", "_"] +[138.09947523117137, "o", "s"] +[138.12947523117137, "o", "h"] +[138.15947523117137, "o", "o"] +[138.18947523117137, "o", "p"] +[138.21947523117137, "o", " "] +[138.24947523117137, "o", "&"] +[138.27947523117138, "o", "&"] +[138.30947523117138, "o", " "] +[138.33947523117138, "o", "d"] +[138.36947523117138, "o", "b"] +[138.39947523117138, "o", "t"] +[138.42947523117138, "o", " "] +[138.45947523117138, "o", "r"] +[138.48947523117138, "o", "u"] +[138.51947523117138, "o", "n"] +[138.54947523117139, "o", " "] +[138.5794752311714, "o", "-"] +[138.6094752311714, "o", "-"] +[138.6394752311714, "o", "p"] +[138.6694752311714, "o", "r"] +[138.6994752311714, "o", "o"] +[138.7294752311714, "o", "f"] +[138.7594752311714, "o", "i"] +[138.7894752311714, "o", "l"] +[138.8194752311714, "o", "e"] +[138.8494752311714, "o", "s"] +[138.8794752311714, "o", "-"] +[138.9094752311714, "o", "d"] +[138.9394752311714, "o", "i"] +[138.9694752311714, "o", "r"] +[138.9994752311714, "o", " "] +[139.0294752311714, "o", "."] +[139.0594752311714, "o", "."] +[139.0894752311714, "o", "/"] +[139.1194752311714, "o", "."] +[139.1494752311714, "o", "d"] +[139.1794752311714, "o", "b"] +[139.2094752311714, "o", "t"] +[139.2394752311714, "o", "\r\n"] +[139.2694752311714, "o", "\u001b[0m"] +[139.2994752311714, "o", "\r\n"] +[139.91631559372024, "o", "Checked out raw_jaffle_shop:ca2c12d048eb.\r\n"] +[140.65604309082107, "o", "Running with dbt=0.18.0\r\n"] +[141.02693537712173, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[141.84969929695205, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[141.85238007545547, "o", "\r\n"] +[142.23996500015335, "o", "18:41:28 | Concurrency: 4 threads (target='splitgraph')\r\n"] +[142.24003437995987, "o", "18:41:28 | \r\n"] +[142.2500424766548, "o", "18:41:28 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]\r\n"] +[142.25041584014969, "o", "18:41:28 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]"] +[142.25044683456497, "o", "\r\n"] +[142.26140717506485, "o", "18:41:28 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]\r\n"] +[142.27939704895095, "o", "18:41:28 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]"] +[142.27943114280777, "o", "\r\n"] +[142.45962742805557, "o", "18:41:28 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.19s]"] +[142.45965246200637, "o", "\r\n"] +[142.46609357833938, "o", "18:41:28 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.21s]\r\n"] +[142.46884755134658, "o", "18:41:28 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.21s]\r\n"] +[142.47449139595108, "o", "18:41:28 | 5 of 9 START table model dbt_jaffle.order_payments................... [RUN]"] +[142.4745412254341, "o", "\r\n"] +[142.4887709999092, "o", "18:41:28 | 6 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]"] +[142.48880366325454, "o", "\r\n"] +[142.48952106475906, "o", "18:41:28 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.19s]"] +[142.4895546817787, "o", "\r\n"] +[142.49026278495865, "o", "18:41:28 | 7 of 9 START table model dbt_jaffle.customer_payments................ [RUN]"] +[142.49029354095535, "o", "\r\n"] +[142.62253002166824, "o", "18:41:28 | 6 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.13s]\r\n"] +[142.6328289890297, "o", "18:41:28 | 5 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.15s]\r\n"] +[142.63492874145584, "o", "18:41:28 | 7 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.13s]"] +[142.63496092796402, "o", "\r\n"] +[142.63657001495437, "o", "18:41:28 | 8 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]\r\n"] +[142.64902953147964, "o", "18:41:28 | 9 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]\r\n"] +[142.74568299293594, "o", "18:41:28 | 8 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.10s]"] +[142.74574593544082, "o", "\r\n"] +[142.74613431930618, "o", "18:41:28 | 9 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.09s]\r\n"] +[142.75366333961563, "o", "18:41:28 | \r\n"] +[142.7538805389412, "o", "18:41:28 | Finished running 4 view models, 5 table models in 0.90s.\r\n"] +[142.7824848079689, "o", "\r\n"] +[142.78256443977432, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[142.78301481247024, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[143.15371731758194, "o", "\u001b[0m"] +[143.18371731758194, "o", "\u001b[1m"] +[143.21371731758194, "o", "\u001b[36m"] +[143.24371731758194, "o", "\u001b[91m"] +[143.27371731758194, "o", "$"] +[143.30371731758194, "o", " "] +[143.33371731758194, "o", "\u001b[0m"] +[157.7694752311713, "o", "\u001b[H"] +[157.7994752311713, "o", "\u001b[J"] +[157.8294752311713, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create an image from the new data."] +[157.8594752311713, "o", "\r\n"] +[157.8894752311713, "o", "$"] +[157.9194752311713, "o", " "] +[157.9494752311713, "o", "s"] +[157.9794752311713, "o", "g"] +[158.0094752311713, "o", "r"] +[158.0394752311713, "o", " "] +[158.0694752311713, "o", "c"] +[158.0994752311713, "o", "o"] +[158.1294752311713, "o", "m"] +[158.1594752311713, "o", "m"] +[158.18947523117131, "o", "i"] +[158.21947523117132, "o", "t"] +[158.24947523117132, "o", " "] +[158.27947523117132, "o", "d"] +[158.30947523117132, "o", "b"] +[158.33947523117132, "o", "t"] +[158.36947523117132, "o", "_"] +[158.39947523117132, "o", "j"] +[158.42947523117132, "o", "a"] +[158.45947523117133, "o", "f"] +[158.48947523117133, "o", "f"] +[158.51947523117133, "o", "l"] +[158.54947523117133, "o", "e"] +[158.57947523117133, "o", "\r\n"] +[158.60947523117133, "o", "$"] +[158.63947523117133, "o", " "] +[158.66947523117133, "o", "s"] +[158.69947523117133, "o", "g"] +[158.72947523117134, "o", "r"] +[158.75947523117134, "o", " "] +[158.78947523117134, "o", "t"] +[158.81947523117134, "o", "a"] +[158.84947523117134, "o", "g"] +[158.87947523117134, "o", " "] +[158.90947523117134, "o", "d"] +[158.93947523117134, "o", "b"] +[158.96947523117134, "o", "t"] +[158.99947523117135, "o", "_"] +[159.02947523117135, "o", "j"] +[159.05947523117135, "o", "a"] +[159.08947523117135, "o", "f"] +[159.11947523117135, "o", "f"] +[159.14947523117135, "o", "l"] +[159.17947523117135, "o", "e"] +[159.20947523117135, "o", " "] +[159.23947523117135, "o", "a"] +[159.26947523117136, "o", "s"] +[159.29947523117136, "o", "o"] +[159.32947523117136, "o", "f"] +[159.35947523117136, "o", "_"] +[159.38947523117136, "o", "2"] +[159.41947523117136, "o", "0"] +[159.44947523117136, "o", "1"] +[159.47947523117136, "o", "8"] +[159.50947523117136, "o", "0"] +[159.53947523117137, "o", "4"] +[159.56947523117137, "o", "1"] +[159.59947523117137, "o", "0"] +[159.62947523117137, "o", "\r\n"] +[159.65947523117137, "o", "\u001b[0m"] +[159.68947523117137, "o", "\r\n"] +[160.04487460136485, "o", "Committing dbt_jaffle...\r\n"] +[160.06520979881358, "o", "Processing table customer_orders\r\n"] +[160.1238478946693, "o", "Object o0fafb9e76c06e221af3aa558b0a751b176857a09b2d75ca00826becbd12ef5 already exists, skipping\r\n"] +[160.14081352233958, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.14124172210765, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.14201896667552, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.14282768249583, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.1472865867622, "o", "Processing table order_payments\r\n"] +[160.204289846421, "o", "Object o87940f703edacc7113c37ae83a6abe6293f48cbb940171ef03875a066b0c5c already exists, skipping\r\n"] +[160.22263520240855, "o", "Processing table customer_payments\r\n"] +[160.2772480773933, "o", "Object o47a7af4dc6d74898da55e6c760eac4d702db25633cfab4e28e6df77cf00098 already exists, skipping\r\n"] +[160.2944132614143, "o", "Processing table fct_orders\r\n"] +[160.37350171089244, "o", "Processing table dim_customers\r\n"] +[160.42856638908458, "o", "Object o9656926ef986d89e326952a43869eaf3dc59905ff22aba22cd3dd67a834dc5 already exists, skipping\r\n"] +[160.4586147594459, "o", "Committed dbt_jaffle as 7c9aa8d5f947.\r\n"] +[160.81965368270946, "o", "Tagged dbt_jaffle:7c9aa8d5f9477bd1b95c3ba2f06fe563d6668bccb366acb4b2db53e0d082d218 with asof_20180410.\r\n"] +[160.84965368270946, "o", "\u001b[1m"] +[160.87965368270946, "o", "\u001b[36m"] +[160.90965368270946, "o", "\u001b[91m"] +[160.93965368270946, "o", "$"] +[160.96965368270946, "o", " "] +[160.99965368270946, "o", "\u001b[0m"] +[167.7694752311713, "o", "\u001b[H"] +[167.7994752311713, "o", "\u001b[J"] +[167.8294752311713, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We now have two versions of the source and the target dataset."] +[167.8594752311713, "o", "\r\n"] +[167.8894752311713, "o", "$"] +[167.9194752311713, "o", " "] +[167.9494752311713, "o", "s"] +[167.9794752311713, "o", "g"] +[168.0094752311713, "o", "r"] +[168.0394752311713, "o", " "] +[168.0694752311713, "o", "l"] +[168.0994752311713, "o", "o"] +[168.1294752311713, "o", "g"] +[168.1594752311713, "o", " "] +[168.18947523117131, "o", "-"] +[168.21947523117132, "o", "t"] +[168.24947523117132, "o", " "] +[168.27947523117132, "o", "r"] +[168.30947523117132, "o", "a"] +[168.33947523117132, "o", "w"] +[168.36947523117132, "o", "_"] +[168.39947523117132, "o", "j"] +[168.42947523117132, "o", "a"] +[168.45947523117133, "o", "f"] +[168.48947523117133, "o", "f"] +[168.51947523117133, "o", "l"] +[168.54947523117133, "o", "e"] +[168.57947523117133, "o", "_"] +[168.60947523117133, "o", "s"] +[168.63947523117133, "o", "h"] +[168.66947523117133, "o", "o"] +[168.69947523117133, "o", "p"] +[168.72947523117134, "o", "\r\n"] +[168.75947523117134, "o", "$"] +[168.78947523117134, "o", " "] +[168.81947523117134, "o", "s"] +[168.84947523117134, "o", "g"] +[168.87947523117134, "o", "r"] +[168.90947523117134, "o", " "] +[168.93947523117134, "o", "l"] +[168.96947523117134, "o", "o"] +[168.99947523117135, "o", "g"] +[169.02947523117135, "o", " "] +[169.05947523117135, "o", "-"] +[169.08947523117135, "o", "t"] +[169.11947523117135, "o", " "] +[169.14947523117135, "o", "d"] +[169.17947523117135, "o", "b"] +[169.20947523117135, "o", "t"] +[169.23947523117135, "o", "_"] +[169.26947523117136, "o", "j"] +[169.29947523117136, "o", "a"] +[169.32947523117136, "o", "f"] +[169.35947523117136, "o", "f"] +[169.38947523117136, "o", "l"] +[169.41947523117136, "o", "e"] +[169.44947523117136, "o", "\r\n"] +[169.47947523117136, "o", "\u001b[0m"] +[169.50947523117136, "o", "\r\n"] +[169.87262177467417, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-08-18 18:41:11\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m3d8fe0d40a\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-08-18 18:41:13\u001b[0m\r\n \u2514 \u001b[1m\u001b[91mca2c12d048\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-08-18 18:41:17\u001b[0m\r\n"] +[170.23513293266367, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-08-18 18:41:20\u001b[0m\r\n \u2514 \u001b[1m\u001b[91ma77e214fcf\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-08-18 18:41:24\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m7c9aa8d5f9\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-08-18 18:41:29\u001b[0m\r\n"] +[170.26513293266368, "o", "\u001b[1m"] +[170.29513293266368, "o", "\u001b[36m"] +[170.32513293266368, "o", "\u001b[91m"] +[170.35513293266368, "o", "$"] +[170.38513293266368, "o", " "] +[170.41513293266368, "o", "\u001b[0m"] +[175.44513293266368, "o", "\u001b[H"] +[175.47513293266368, "o", "\u001b[J"] +[175.50513293266368, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the difference between the two datasets that dbt built."] +[175.53513293266369, "o", "\r\n"] +[175.5651329326637, "o", "$"] +[175.5951329326637, "o", " "] +[175.6251329326637, "o", "s"] +[175.6551329326637, "o", "g"] +[175.6851329326637, "o", "r"] +[175.7151329326637, "o", " "] +[175.7451329326637, "o", "d"] +[175.7751329326637, "o", "i"] +[175.8051329326637, "o", "f"] +[175.8351329326637, "o", "f"] +[175.8651329326637, "o", " "] +[175.8951329326637, "o", "d"] +[175.9251329326637, "o", "b"] +[175.9551329326637, "o", "t"] +[175.9851329326637, "o", "_"] +[176.0151329326637, "o", "j"] +[176.0451329326637, "o", "a"] +[176.0751329326637, "o", "f"] +[176.1051329326637, "o", "f"] +[176.1351329326637, "o", "l"] +[176.1651329326637, "o", "e"] +[176.1951329326637, "o", " "] +[176.2251329326637, "o", "a"] +[176.2551329326637, "o", "s"] +[176.2851329326637, "o", "o"] +[176.31513293266372, "o", "f"] +[176.34513293266372, "o", "_"] +[176.37513293266372, "o", "2"] +[176.40513293266372, "o", "0"] +[176.43513293266372, "o", "1"] +[176.46513293266372, "o", "8"] +[176.49513293266372, "o", "0"] +[176.52513293266372, "o", "4"] +[176.55513293266372, "o", "0"] +[176.58513293266373, "o", "9"] +[176.61513293266373, "o", " "] +[176.64513293266373, "o", "a"] +[176.67513293266373, "o", "s"] +[176.70513293266373, "o", "o"] +[176.73513293266373, "o", "f"] +[176.76513293266373, "o", "_"] +[176.79513293266373, "o", "2"] +[176.82513293266373, "o", "0"] +[176.85513293266374, "o", "1"] +[176.88513293266374, "o", "8"] +[176.91513293266374, "o", "0"] +[176.94513293266374, "o", "4"] +[176.97513293266374, "o", "1"] +[177.00513293266374, "o", "0"] +[177.03513293266374, "o", " "] +[177.06513293266374, "o", "-"] +[177.09513293266374, "o", "-"] +[177.12513293266375, "o", "v"] +[177.15513293266375, "o", "e"] +[177.18513293266375, "o", "r"] +[177.21513293266375, "o", "b"] +[177.24513293266375, "o", "o"] +[177.27513293266375, "o", "s"] +[177.30513293266375, "o", "e"] +[177.33513293266375, "o", "\r\n"] +[177.36513293266376, "o", "\u001b[0m"] +[177.39513293266376, "o", "\r\n"] +[177.91804305076678, "o", "Between a77e214fcf77 and 7c9aa8d5f947: \r\n"] +[177.91842666626056, "o", "customer_orders: no changes.\r\n"] +[177.91847578048785, "o", "customer_payments: no changes.\r\ndim_customers: no changes.\r\n"] +[177.9188288784035, "o", "fct_orders: added 5 rows, removed 5 rows.\r\n"] +[177.918960008622, "o", "- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending', 0, 0, 0, 23, 23)\r\n- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending', 0, 0, 15, 0, 15)\r\n"] +[177.9194585418709, "o", "- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 0, 25, 0, 25)\r\n"] +[177.9194745159157, "o", "- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped', 0, 0, 17, 0, 17)\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 23, 0, 0, 23)\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned', 0, 0, 0, 23, 23)\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned', 0, 0, 15, 0, 15)\r\n"] +[177.91948739051898, "o", "+ (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 25, 0, 25)\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 17, 0, 17)\r\n"] +[177.91949382782062, "o", "+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 23, 0, 0, 23)\r\n"] +[177.91954723358234, "o", "order_payments: no changes."] +[177.9195694065102, "o", "\r\n"] +[177.9495694065102, "o", "\u001b[1m"] +[177.9795694065102, "o", "\u001b[36m"] +[178.0095694065102, "o", "\u001b[91m"] +[178.0395694065102, "o", "$"] +[178.0695694065102, "o", " "] +[178.0995694065102, "o", "\u001b[0m"] +[184.94513293266368, "o", "\u001b[H"] +[184.97513293266368, "o", "\u001b[J"] +[185.00513293266368, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a sample query: how much in bank transfer refunds did we process?"] +[185.03513293266369, "o", "\r\n"] +[185.0651329326637, "o", "$"] +[185.0951329326637, "o", " "] +[185.1251329326637, "o", "s"] +[185.1551329326637, "o", "g"] +[185.1851329326637, "o", "r"] +[185.2151329326637, "o", " "] +[185.2451329326637, "o", "s"] +[185.2751329326637, "o", "q"] +[185.3051329326637, "o", "l"] +[185.3351329326637, "o", " "] +[185.3651329326637, "o", "-"] +[185.3951329326637, "o", "i"] +[185.4251329326637, "o", " "] +[185.4551329326637, "o", "d"] +[185.4851329326637, "o", "b"] +[185.5151329326637, "o", "t"] +[185.5451329326637, "o", "_"] +[185.5751329326637, "o", "j"] +[185.6051329326637, "o", "a"] +[185.6351329326637, "o", "f"] +[185.6651329326637, "o", "f"] +[185.6951329326637, "o", "l"] +[185.7251329326637, "o", "e"] +[185.7551329326637, "o", ":"] +[185.7851329326637, "o", "a"] +[185.81513293266372, "o", "s"] +[185.84513293266372, "o", "o"] +[185.87513293266372, "o", "f"] +[185.90513293266372, "o", "_"] +[185.93513293266372, "o", "2"] +[185.96513293266372, "o", "0"] +[185.99513293266372, "o", "1"] +[186.02513293266372, "o", "8"] +[186.05513293266372, "o", "0"] +[186.08513293266373, "o", "4"] +[186.11513293266373, "o", "0"] +[186.14513293266373, "o", "9"] +[186.17513293266373, "o", " "] +[186.20513293266373, "o", "\""] +[186.23513293266373, "o", "S"] +[186.26513293266373, "o", "E"] +[186.29513293266373, "o", "L"] +[186.32513293266373, "o", "E"] +[186.35513293266374, "o", "C"] +[186.38513293266374, "o", "T"] +[186.41513293266374, "o", " "] +[186.44513293266374, "o", "s"] +[186.47513293266374, "o", "u"] +[186.50513293266374, "o", "m"] +[186.53513293266374, "o", "("] +[186.56513293266374, "o", "b"] +[186.59513293266374, "o", "a"] +[186.62513293266375, "o", "n"] +[186.65513293266375, "o", "k"] +[186.68513293266375, "o", "_"] +[186.71513293266375, "o", "t"] +[186.74513293266375, "o", "r"] +[186.77513293266375, "o", "a"] +[186.80513293266375, "o", "n"] +[186.83513293266375, "o", "s"] +[186.86513293266376, "o", "f"] +[186.89513293266376, "o", "e"] +[186.92513293266376, "o", "r"] +[186.95513293266376, "o", "_"] +[186.98513293266376, "o", "a"] +[187.01513293266376, "o", "m"] +[187.04513293266376, "o", "o"] +[187.07513293266376, "o", "u"] +[187.10513293266376, "o", "n"] +[187.13513293266377, "o", "t"] +[187.16513293266377, "o", ")"] +[187.19513293266377, "o", " "] +[187.22513293266377, "o", "F"] +[187.25513293266377, "o", "R"] +[187.28513293266377, "o", "O"] +[187.31513293266377, "o", "M"] +[187.34513293266377, "o", " "] +[187.37513293266377, "o", "f"] +[187.40513293266378, "o", "c"] +[187.43513293266378, "o", "t"] +[187.46513293266378, "o", "_"] +[187.49513293266378, "o", "o"] +[187.52513293266378, "o", "r"] +[187.55513293266378, "o", "d"] +[187.58513293266378, "o", "e"] +[187.61513293266378, "o", "r"] +[187.64513293266378, "o", "s"] +[187.6751329326638, "o", " "] +[187.7051329326638, "o", "W"] +[187.7351329326638, "o", "H"] +[187.7651329326638, "o", "E"] +[187.7951329326638, "o", "R"] +[187.8251329326638, "o", "E"] +[187.8551329326638, "o", " "] +[187.8851329326638, "o", "s"] +[187.9151329326638, "o", "t"] +[187.9451329326638, "o", "a"] +[187.9751329326638, "o", "t"] +[188.0051329326638, "o", "u"] +[188.0351329326638, "o", "s"] +[188.0651329326638, "o", " "] +[188.0951329326638, "o", "="] +[188.1251329326638, "o", " "] +[188.1551329326638, "o", "'"] +[188.1851329326638, "o", "r"] +[188.2151329326638, "o", "e"] +[188.2451329326638, "o", "t"] +[188.2751329326638, "o", "u"] +[188.3051329326638, "o", "r"] +[188.3351329326638, "o", "n"] +[188.3651329326638, "o", "e"] +[188.3951329326638, "o", "d"] +[188.42513293266381, "o", "'"] +[188.45513293266382, "o", "\""] +[188.48513293266382, "o", "\r\n"] +[188.51513293266382, "o", "$"] +[188.54513293266382, "o", " "] +[188.57513293266382, "o", "s"] +[188.60513293266382, "o", "g"] +[188.63513293266382, "o", "r"] +[188.66513293266382, "o", " "] +[188.69513293266382, "o", "s"] +[188.72513293266383, "o", "q"] +[188.75513293266383, "o", "l"] +[188.78513293266383, "o", " "] +[188.81513293266383, "o", "-"] +[188.84513293266383, "o", "i"] +[188.87513293266383, "o", " "] +[188.90513293266383, "o", "d"] +[188.93513293266383, "o", "b"] +[188.96513293266383, "o", "t"] +[188.99513293266384, "o", "_"] +[189.02513293266384, "o", "j"] +[189.05513293266384, "o", "a"] +[189.08513293266384, "o", "f"] +[189.11513293266384, "o", "f"] +[189.14513293266384, "o", "l"] +[189.17513293266384, "o", "e"] +[189.20513293266384, "o", ":"] +[189.23513293266384, "o", "a"] +[189.26513293266385, "o", "s"] +[189.29513293266385, "o", "o"] +[189.32513293266385, "o", "f"] +[189.35513293266385, "o", "_"] +[189.38513293266385, "o", "2"] +[189.41513293266385, "o", "0"] +[189.44513293266385, "o", "1"] +[189.47513293266385, "o", "8"] +[189.50513293266386, "o", "0"] +[189.53513293266386, "o", "4"] +[189.56513293266386, "o", "1"] +[189.59513293266386, "o", "0"] +[189.62513293266386, "o", " "] +[189.65513293266386, "o", "\""] +[189.68513293266386, "o", "S"] +[189.71513293266386, "o", "E"] +[189.74513293266386, "o", "L"] +[189.77513293266387, "o", "E"] +[189.80513293266387, "o", "C"] +[189.83513293266387, "o", "T"] +[189.86513293266387, "o", " "] +[189.89513293266387, "o", "s"] +[189.92513293266387, "o", "u"] +[189.95513293266387, "o", "m"] +[189.98513293266387, "o", "("] +[190.01513293266387, "o", "b"] +[190.04513293266388, "o", "a"] +[190.07513293266388, "o", "n"] +[190.10513293266388, "o", "k"] +[190.13513293266388, "o", "_"] +[190.16513293266388, "o", "t"] +[190.19513293266388, "o", "r"] +[190.22513293266388, "o", "a"] +[190.25513293266388, "o", "n"] +[190.28513293266388, "o", "s"] +[190.3151329326639, "o", "f"] +[190.3451329326639, "o", "e"] +[190.3751329326639, "o", "r"] +[190.4051329326639, "o", "_"] +[190.4351329326639, "o", "a"] +[190.4651329326639, "o", "m"] +[190.4951329326639, "o", "o"] +[190.5251329326639, "o", "u"] +[190.5551329326639, "o", "n"] +[190.5851329326639, "o", "t"] +[190.6151329326639, "o", ")"] +[190.6451329326639, "o", " "] +[190.6751329326639, "o", "F"] +[190.7051329326639, "o", "R"] +[190.7351329326639, "o", "O"] +[190.7651329326639, "o", "M"] +[190.7951329326639, "o", " "] +[190.8251329326639, "o", "f"] +[190.8551329326639, "o", "c"] +[190.8851329326639, "o", "t"] +[190.9151329326639, "o", "_"] +[190.9451329326639, "o", "o"] +[190.9751329326639, "o", "r"] +[191.0051329326639, "o", "d"] +[191.0351329326639, "o", "e"] +[191.06513293266391, "o", "r"] +[191.09513293266392, "o", "s"] +[191.12513293266392, "o", " "] +[191.15513293266392, "o", "W"] +[191.18513293266392, "o", "H"] +[191.21513293266392, "o", "E"] +[191.24513293266392, "o", "R"] +[191.27513293266392, "o", "E"] +[191.30513293266392, "o", " "] +[191.33513293266392, "o", "s"] +[191.36513293266393, "o", "t"] +[191.39513293266393, "o", "a"] +[191.42513293266393, "o", "t"] +[191.45513293266393, "o", "u"] +[191.48513293266393, "o", "s"] +[191.51513293266393, "o", " "] +[191.54513293266393, "o", "="] +[191.57513293266393, "o", " "] +[191.60513293266393, "o", "'"] +[191.63513293266394, "o", "r"] +[191.66513293266394, "o", "e"] +[191.69513293266394, "o", "t"] +[191.72513293266394, "o", "u"] +[191.75513293266394, "o", "r"] +[191.78513293266394, "o", "n"] +[191.81513293266394, "o", "e"] +[191.84513293266394, "o", "d"] +[191.87513293266394, "o", "'"] +[191.90513293266395, "o", "\""] +[191.93513293266395, "o", "\r\n"] +[191.96513293266395, "o", "\u001b[0m"] +[191.99513293266395, "o", "\r\n"] +[192.79258156776527, "o", "3\r\n"] +[193.58874870300392, "o", "60\r\n"] +[193.61874870300392, "o", "\u001b[1m"] +[193.64874870300392, "o", "\u001b[36m"] +[193.67874870300392, "o", "\u001b[91m"] +[193.70874870300392, "o", "$"] +[193.73874870300392, "o", " "] +[193.76874870300392, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.16/import-from-csv.cast b/content/casts/versioned/archive/v0.2.16/import-from-csv.cast new file mode 100644 index 00000000..604d431b --- /dev/null +++ b/content/casts/versioned/archive/v0.2.16/import-from-csv.cast @@ -0,0 +1,601 @@ +{"version": 2, "width": 100, "height": 45, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1629312014, "metadata": {"tss": [{"h": "Inspect the data file", "ts": 0.06}, {"h": "Initialize the repository", "ts": 6.5019125938415545}, {"h": "Ingest the data into a new table (wrapper around COPY FROM STDIN)", "ts": 27.501912593841556}, {"h": "The data is now in a table but not committed as a Splitgraph image", "ts": 36.19191259384169}, {"h": "Create a new image and tag it", "ts": 43.774026679992886}, {"h": "Inspect the image", "ts": 51.902140874862965}, {"h": "Inspect the table", "ts": 58.73360013008153}, {"h": "Inspect object metadata", "ts": 78.23360013008153}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the data file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # (originally from https://data.townofcary.org/api/v2/catalog/datasets/rdu-weather-history/exports/csv)\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "h"] +[0.27, "o", "e"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "d"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "n"] +[0.4500000000000002, "o", "5"] +[0.4800000000000002, "o", " "] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", "d"] +[0.5700000000000003, "o", "u"] +[0.6000000000000003, "o", "-"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "-"] +[0.8700000000000006, "o", "h"] +[0.9000000000000006, "o", "i"] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "t"] +[0.9900000000000007, "o", "o"] +[1.0200000000000007, "o", "r"] +[1.0500000000000007, "o", "y"] +[1.0800000000000007, "o", "."] +[1.1100000000000008, "o", "c"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", "v"] +[1.2000000000000008, "o", "\r\n"] +[1.2300000000000009, "o", "\u001b[0m"] +[1.260000000000001, "o", "\r\n"] +[1.2619009113311777, "o", "date;temperaturemin;temperaturemax;precipitation;snowfall;snowdepth;avgwindspeed;fastest2minwinddir;fastest2minwindspeed;fastest5secwinddir;fastest5secwindspeed;fog;fogheavy;mist;rain;fogground;ice;glaze;drizzle;snow;freezingrain;smokehaze;thunder;highwind;hail;blowingsnow;dust;freezingfog\r\r\n2007-01-06;50.0;71.1;0.13;0.0;0.0;8.05;230;17.9;230;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-09;30.0;55.0;0.0;0.0;0.0;7.61;280;23.04;270;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;N"] +[1.2619125938415536, "o", "o;No\r\r\n2007-01-14;50.0;73.9;0.0;0.0;0.0;8.5;230;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-15;57.0;73.9;0.0;0.0;0.0;13.2;230;23.94;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n"] +[1.2919125938415537, "o", "\u001b[1m"] +[1.3219125938415537, "o", "\u001b[36m"] +[1.3519125938415537, "o", "\u001b[91m"] +[1.3819125938415537, "o", "$"] +[1.4119125938415538, "o", " "] +[1.4419125938415538, "o", "\u001b[0m"] +[6.471912593841554, "o", "\u001b[H"] +[6.5019125938415545, "o", "\u001b[J"] +[6.531912593841555, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the repository"] +[6.561912593841555, "o", "\r\n"] +[6.591912593841555, "o", "$"] +[6.6219125938415555, "o", " "] +[6.651912593841556, "o", "s"] +[6.681912593841556, "o", "g"] +[6.711912593841556, "o", "r"] +[6.7419125938415565, "o", " "] +[6.771912593841557, "o", "i"] +[6.801912593841557, "o", "n"] +[6.831912593841557, "o", "i"] +[6.8619125938415575, "o", "t"] +[6.891912593841558, "o", " "] +[6.921912593841558, "o", "d"] +[6.951912593841558, "o", "e"] +[6.9819125938415585, "o", "m"] +[7.011912593841559, "o", "o"] +[7.041912593841559, "o", "/"] +[7.071912593841559, "o", "w"] +[7.1019125938415595, "o", "e"] +[7.13191259384156, "o", "a"] +[7.16191259384156, "o", "t"] +[7.19191259384156, "o", "h"] +[7.2219125938415605, "o", "e"] +[7.251912593841561, "o", "r"] +[7.281912593841561, "o", "\r\n"] +[7.311912593841561, "o", "$"] +[7.3419125938415615, "o", " "] +[7.371912593841562, "o", "s"] +[7.401912593841562, "o", "g"] +[7.431912593841562, "o", "r"] +[7.4619125938415625, "o", " "] +[7.491912593841563, "o", "c"] +[7.521912593841563, "o", "s"] +[7.551912593841563, "o", "v"] +[7.5819125938415635, "o", " "] +[7.611912593841564, "o", "i"] +[7.641912593841564, "o", "m"] +[7.671912593841564, "o", "p"] +[7.7019125938415645, "o", "o"] +[7.731912593841565, "o", "r"] +[7.761912593841565, "o", "t"] +[7.791912593841565, "o", " "] +[7.8219125938415655, "o", "-"] +[7.851912593841566, "o", "-"] +[7.881912593841566, "o", "h"] +[7.911912593841566, "o", "e"] +[7.9419125938415664, "o", "l"] +[7.971912593841567, "o", "p"] +[8.001912593841567, "o", "\r\n"] +[8.031912593841566, "o", "\u001b[0m"] +[8.061912593841566, "o", "\r\n"] +[8.44259291648866, "o", "Initialized empty repository demo/weather\r\n"] +[8.765548286438001, "o", "Usage: sgr csv import [OPTIONS] REPOSITORY TABLE\r\n\r\n Import a CSV file into a checked-out Splitgraph repository. This doesn't\r\n create a new image, use sgr commit after the import and any adjustments\r\n (e.g. adding primary keys or converting column types) to do so.\r\n\r\n If the target table doesn't exist, this will create a new table.\r\n\r\n If the target table does exist, this will try and patch the new values in\r\n by updating rows that exist in the current table (as per its primary key\r\n constraints) an"] +[8.76555901527406, "o", "d inserting new ones. Rows existing in the current table\r\n but missing in the CSV won't be deleted.\r\n\r\n If -r is passed, the table will instead be deleted and recreated from the\r\n CSV file if it exists.\r\n\r\nOptions:\r\n -f, --file FILENAME File name to import data from, default\r\n stdin.\r\n\r\n -r, --replace Replace the table if it already exists.\r\n -k, --primary-key TEXT Use the specified column(s) as primary\r\n "] +[8.765564022064222, "o", " key(s)\r\n\r\n -t, --override-type ...\r\n Explicitly set types of these columns to PG\r\n types\r\n\r\n --encoding TEXT Encoding to use for the CSV file\r\n --separator TEXT CSV separator to use\r\n --no-header Treats the first line of the CSV as data\r\n rather than a header.\r\n\r\n --skip-schema-check Skips checking that the dataframe is\r\n "] +[8.765570697784437, "o", " compatible with the target schema.\r\n\r\n --help Show this message and exit.\r\n"] +[8.795570697784436, "o", "\u001b[1m"] +[8.825570697784435, "o", "\u001b[36m"] +[8.855570697784435, "o", "\u001b[91m"] +[8.885570697784434, "o", "$"] +[8.915570697784434, "o", " "] +[8.945570697784433, "o", "\u001b[0m"] +[27.471912593841555, "o", "\u001b[H"] +[27.501912593841556, "o", "\u001b[J"] +[27.531912593841557, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the data into a new table (wrapper around COPY FROM STDIN)"] +[27.56191259384156, "o", "\r\n"] +[27.59191259384156, "o", "$"] +[27.62191259384156, "o", " "] +[27.651912593841562, "o", "s"] +[27.681912593841563, "o", "g"] +[27.711912593841564, "o", "r"] +[27.741912593841565, "o", " "] +[27.771912593841567, "o", "c"] +[27.801912593841568, "o", "s"] +[27.83191259384157, "o", "v"] +[27.86191259384157, "o", " "] +[27.89191259384157, "o", "i"] +[27.921912593841572, "o", "m"] +[27.951912593841573, "o", "p"] +[27.981912593841574, "o", "o"] +[28.011912593841576, "o", "r"] +[28.041912593841577, "o", "t"] +[28.071912593841578, "o", " "] +[28.10191259384158, "o", "-"] +[28.13191259384158, "o", "f"] +[28.16191259384158, "o", " "] +[28.191912593841582, "o", "r"] +[28.221912593841584, "o", "d"] +[28.251912593841585, "o", "u"] +[28.281912593841586, "o", "-"] +[28.311912593841587, "o", "w"] +[28.341912593841588, "o", "e"] +[28.37191259384159, "o", "a"] +[28.40191259384159, "o", "t"] +[28.43191259384159, "o", "h"] +[28.461912593841593, "o", "e"] +[28.491912593841594, "o", "r"] +[28.521912593841595, "o", "-"] +[28.551912593841596, "o", "h"] +[28.581912593841597, "o", "i"] +[28.6119125938416, "o", "s"] +[28.6419125938416, "o", "t"] +[28.6719125938416, "o", "o"] +[28.7019125938416, "o", "r"] +[28.731912593841603, "o", "y"] +[28.761912593841604, "o", "."] +[28.791912593841605, "o", "c"] +[28.821912593841606, "o", "s"] +[28.851912593841607, "o", "v"] +[28.88191259384161, "o", " "] +[28.91191259384161, "o", "\\"] +[28.94191259384161, "o", "\r\n "] +[28.971912593841612, "o", "-"] +[29.001912593841613, "o", "k"] +[29.031912593841614, "o", " "] +[29.061912593841615, "o", "d"] +[29.091912593841617, "o", "a"] +[29.121912593841618, "o", "t"] +[29.15191259384162, "o", "e"] +[29.18191259384162, "o", " "] +[29.21191259384162, "o", "\\"] +[29.241912593841622, "o", "\r\n "] +[29.271912593841623, "o", "-"] +[29.301912593841624, "o", "t"] +[29.331912593841626, "o", " "] +[29.361912593841627, "o", "d"] +[29.391912593841628, "o", "a"] +[29.42191259384163, "o", "t"] +[29.45191259384163, "o", "e"] +[29.48191259384163, "o", " "] +[29.511912593841632, "o", "t"] +[29.541912593841634, "o", "i"] +[29.571912593841635, "o", "m"] +[29.601912593841636, "o", "e"] +[29.631912593841637, "o", "s"] +[29.661912593841638, "o", "t"] +[29.69191259384164, "o", "a"] +[29.72191259384164, "o", "m"] +[29.75191259384164, "o", "p"] +[29.781912593841643, "o", " "] +[29.811912593841644, "o", "\\"] +[29.841912593841645, "o", "\r\n "] +[29.871912593841646, "o", "-"] +[29.901912593841647, "o", "-"] +[29.93191259384165, "o", "s"] +[29.96191259384165, "o", "e"] +[29.99191259384165, "o", "p"] +[30.021912593841652, "o", "a"] +[30.051912593841653, "o", "r"] +[30.081912593841654, "o", "a"] +[30.111912593841655, "o", "t"] +[30.141912593841656, "o", "o"] +[30.171912593841657, "o", "r"] +[30.20191259384166, "o", " "] +[30.23191259384166, "o", "\""] +[30.26191259384166, "o", ";"] +[30.291912593841662, "o", "\""] +[30.321912593841663, "o", " "] +[30.351912593841664, "o", "\\"] +[30.381912593841665, "o", "\r\n "] +[30.411912593841667, "o", "d"] +[30.441912593841668, "o", "e"] +[30.47191259384167, "o", "m"] +[30.50191259384167, "o", "o"] +[30.53191259384167, "o", "/"] +[30.561912593841672, "o", "w"] +[30.591912593841673, "o", "e"] +[30.621912593841675, "o", "a"] +[30.651912593841676, "o", "t"] +[30.681912593841677, "o", "h"] +[30.711912593841678, "o", "e"] +[30.74191259384168, "o", "r"] +[30.77191259384168, "o", " "] +[30.80191259384168, "o", "r"] +[30.831912593841682, "o", "d"] +[30.861912593841684, "o", "u"] +[30.891912593841685, "o", "\r\n"] +[30.921912593841686, "o", "\u001b[0m"] +[30.951912593841687, "o", "\r\n"] +[30.981912593841688, "o", "\u001b[1m"] +[31.01191259384169, "o", "\u001b[36m"] +[31.04191259384169, "o", "\u001b[91m"] +[31.07191259384169, "o", "$"] +[31.101912593841693, "o", " "] +[31.131912593841694, "o", "\u001b[0m"] +[36.16191259384169, "o", "\u001b[H"] +[36.19191259384169, "o", "\u001b[J"] +[36.221912593841694, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The data is now in a table but not committed as a Splitgraph image"] +[36.251912593841695, "o", "\r\n"] +[36.281912593841696, "o", "$"] +[36.3119125938417, "o", " "] +[36.3419125938417, "o", "s"] +[36.3719125938417, "o", "g"] +[36.4019125938417, "o", "r"] +[36.4319125938417, "o", " "] +[36.4619125938417, "o", "s"] +[36.491912593841704, "o", "t"] +[36.521912593841705, "o", "a"] +[36.551912593841706, "o", "t"] +[36.58191259384171, "o", "u"] +[36.61191259384171, "o", "s"] +[36.64191259384171, "o", " "] +[36.67191259384171, "o", "d"] +[36.70191259384171, "o", "e"] +[36.73191259384171, "o", "m"] +[36.761912593841714, "o", "o"] +[36.791912593841715, "o", "/"] +[36.821912593841716, "o", "w"] +[36.85191259384172, "o", "e"] +[36.88191259384172, "o", "a"] +[36.91191259384172, "o", "t"] +[36.94191259384172, "o", "h"] +[36.97191259384172, "o", "e"] +[37.00191259384172, "o", "r"] +[37.031912593841724, "o", "\r\n"] +[37.061912593841726, "o", "$"] +[37.09191259384173, "o", " "] +[37.12191259384173, "o", "s"] +[37.15191259384173, "o", "g"] +[37.18191259384173, "o", "r"] +[37.21191259384173, "o", " "] +[37.24191259384173, "o", "d"] +[37.27191259384173, "o", "i"] +[37.301912593841735, "o", "f"] +[37.331912593841736, "o", "f"] +[37.36191259384174, "o", " "] +[37.39191259384174, "o", "d"] +[37.42191259384174, "o", "e"] +[37.45191259384174, "o", "m"] +[37.48191259384174, "o", "o"] +[37.51191259384174, "o", "/"] +[37.541912593841744, "o", "w"] +[37.571912593841745, "o", "e"] +[37.601912593841746, "o", "a"] +[37.63191259384175, "o", "t"] +[37.66191259384175, "o", "h"] +[37.69191259384175, "o", "e"] +[37.72191259384175, "o", "r"] +[37.75191259384175, "o", "\r\n"] +[37.78191259384175, "o", "\u001b[0m"] +[37.811912593841754, "o", "\r\n"] +[38.16237145423909, "o", "demo/weather: on image 0000000000000000000000000000000000000000000000000000000000000000.\r\n"] +[38.53401309013387, "o", "Between 000000000000 and the current working copy: \r\n"] +[38.53402667999288, "o", "rdu: table added\r\n"] +[38.56402667999288, "o", "\u001b[1m"] +[38.59402667999288, "o", "\u001b[36m"] +[38.62402667999288, "o", "\u001b[91m"] +[38.65402667999288, "o", "$"] +[38.68402667999288, "o", " "] +[38.714026679992884, "o", "\u001b[0m"] +[43.744026679992885, "o", "\u001b[H"] +[43.774026679992886, "o", "\u001b[J"] +[43.80402667999289, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a new image and tag it"] +[43.83402667999289, "o", "\r\n"] +[43.86402667999289, "o", "$"] +[43.89402667999289, "o", " "] +[43.92402667999289, "o", "s"] +[43.95402667999289, "o", "g"] +[43.984026679992894, "o", "r"] +[44.014026679992895, "o", " "] +[44.044026679992896, "o", "c"] +[44.0740266799929, "o", "o"] +[44.1040266799929, "o", "m"] +[44.1340266799929, "o", "m"] +[44.1640266799929, "o", "i"] +[44.1940266799929, "o", "t"] +[44.2240266799929, "o", " "] +[44.254026679992904, "o", "d"] +[44.284026679992905, "o", "e"] +[44.31402667999291, "o", "m"] +[44.34402667999291, "o", "o"] +[44.37402667999291, "o", "/"] +[44.40402667999291, "o", "w"] +[44.43402667999291, "o", "e"] +[44.46402667999291, "o", "a"] +[44.49402667999291, "o", "t"] +[44.524026679992915, "o", "h"] +[44.554026679992916, "o", "e"] +[44.58402667999292, "o", "r"] +[44.61402667999292, "o", "\r\n"] +[44.64402667999292, "o", "$"] +[44.67402667999292, "o", " "] +[44.70402667999292, "o", "s"] +[44.73402667999292, "o", "g"] +[44.764026679992924, "o", "r"] +[44.794026679992925, "o", " "] +[44.824026679992926, "o", "t"] +[44.85402667999293, "o", "a"] +[44.88402667999293, "o", "g"] +[44.91402667999293, "o", " "] +[44.94402667999293, "o", "d"] +[44.97402667999293, "o", "e"] +[45.00402667999293, "o", "m"] +[45.034026679992934, "o", "o"] +[45.064026679992935, "o", "/"] +[45.094026679992936, "o", "w"] +[45.12402667999294, "o", "e"] +[45.15402667999294, "o", "a"] +[45.18402667999294, "o", "t"] +[45.21402667999294, "o", "h"] +[45.24402667999294, "o", "e"] +[45.27402667999294, "o", "r"] +[45.304026679992944, "o", " "] +[45.334026679992945, "o", "i"] +[45.364026679992946, "o", "n"] +[45.39402667999295, "o", "i"] +[45.42402667999295, "o", "t"] +[45.45402667999295, "o", "i"] +[45.48402667999295, "o", "a"] +[45.51402667999295, "o", "l"] +[45.54402667999295, "o", "_"] +[45.574026679992954, "o", "d"] +[45.604026679992955, "o", "a"] +[45.63402667999296, "o", "t"] +[45.66402667999296, "o", "a"] +[45.69402667999296, "o", "\r\n"] +[45.72402667999296, "o", "\u001b[0m"] +[45.75402667999296, "o", "\r\n"] +[46.10510590553312, "o", "Committing demo/weather...\r\n"] +[46.12257006645231, "o", "Processing table rdu\r\n"] +[46.309962778091716, "o", "Committed demo/weather as 0784f64e62b6.\r\n"] +[46.662140874862956, "o", "Tagged demo/weather:0784f64e62b6a55a8f44f2469fb8a23488d44169dd86f127c4c5765ba747cc59 with initial_data.\r\n"] +[46.69214087486296, "o", "\u001b[1m"] +[46.72214087486296, "o", "\u001b[36m"] +[46.75214087486296, "o", "\u001b[91m"] +[46.78214087486296, "o", "$"] +[46.81214087486296, "o", " "] +[46.84214087486296, "o", "\u001b[0m"] +[51.872140874862964, "o", "\u001b[H"] +[51.902140874862965, "o", "\u001b[J"] +[51.93214087486297, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image"] +[51.96214087486297, "o", "\r\n"] +[51.99214087486297, "o", "$"] +[52.02214087486297, "o", " "] +[52.05214087486297, "o", "s"] +[52.08214087486297, "o", "g"] +[52.11214087486297, "o", "r"] +[52.142140874862974, "o", " "] +[52.172140874862976, "o", "s"] +[52.20214087486298, "o", "h"] +[52.23214087486298, "o", "o"] +[52.26214087486298, "o", "w"] +[52.29214087486298, "o", " "] +[52.32214087486298, "o", "d"] +[52.35214087486298, "o", "e"] +[52.38214087486298, "o", "m"] +[52.412140874862985, "o", "o"] +[52.442140874862986, "o", "/"] +[52.47214087486299, "o", "w"] +[52.50214087486299, "o", "e"] +[52.53214087486299, "o", "a"] +[52.56214087486299, "o", "t"] +[52.59214087486299, "o", "h"] +[52.62214087486299, "o", "e"] +[52.652140874862994, "o", "r"] +[52.682140874862995, "o", ":"] +[52.712140874862996, "o", "i"] +[52.742140874863, "o", "n"] +[52.772140874863, "o", "i"] +[52.802140874863, "o", "t"] +[52.832140874863, "o", "i"] +[52.862140874863, "o", "a"] +[52.892140874863, "o", "l"] +[52.922140874863004, "o", "_"] +[52.952140874863005, "o", "d"] +[52.982140874863006, "o", "a"] +[53.01214087486301, "o", "t"] +[53.04214087486301, "o", "a"] +[53.07214087486301, "o", "\r\n"] +[53.10214087486301, "o", "\u001b[0m"] +[53.13214087486301, "o", "\r\n"] +[53.4909729957584, "o", "Image demo/weather:0784f64e62b6a55a8f44f2469fb8a23488d44169dd86f127c4c5765ba747cc59\r\n"] +[53.49100685119663, "o", "\r\nCreated at 2021-08-18T18:40:24.471274\r\n"] +[53.49274969100986, "o", "Size: 113.04 KiB\r\n"] +[53.492759943008764, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[53.49360013008152, "o", " rdu\r\n"] +[53.52360013008152, "o", "\u001b[1m"] +[53.55360013008152, "o", "\u001b[36m"] +[53.58360013008152, "o", "\u001b[91m"] +[53.61360013008152, "o", "$"] +[53.64360013008152, "o", " "] +[53.673600130081525, "o", "\u001b[0m"] +[58.703600130081526, "o", "\u001b[H"] +[58.73360013008153, "o", "\u001b[J"] +[58.76360013008153, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the table"] +[58.79360013008153, "o", "\r\n"] +[58.82360013008153, "o", "$"] +[58.85360013008153, "o", " "] +[58.88360013008153, "o", "s"] +[58.913600130081534, "o", "g"] +[58.943600130081535, "o", "r"] +[58.973600130081536, "o", " "] +[59.00360013008154, "o", "t"] +[59.03360013008154, "o", "a"] +[59.06360013008154, "o", "b"] +[59.09360013008154, "o", "l"] +[59.12360013008154, "o", "e"] +[59.15360013008154, "o", " "] +[59.183600130081544, "o", "d"] +[59.213600130081545, "o", "e"] +[59.243600130081546, "o", "m"] +[59.27360013008155, "o", "o"] +[59.30360013008155, "o", "/"] +[59.33360013008155, "o", "w"] +[59.36360013008155, "o", "e"] +[59.39360013008155, "o", "a"] +[59.42360013008155, "o", "t"] +[59.453600130081554, "o", "h"] +[59.483600130081555, "o", "e"] +[59.51360013008156, "o", "r"] +[59.54360013008156, "o", ":"] +[59.57360013008156, "o", "i"] +[59.60360013008156, "o", "n"] +[59.63360013008156, "o", "i"] +[59.66360013008156, "o", "t"] +[59.69360013008156, "o", "i"] +[59.723600130081564, "o", "a"] +[59.753600130081566, "o", "l"] +[59.78360013008157, "o", "_"] +[59.81360013008157, "o", "d"] +[59.84360013008157, "o", "a"] +[59.87360013008157, "o", "t"] +[59.90360013008157, "o", "a"] +[59.93360013008157, "o", " "] +[59.96360013008157, "o", "r"] +[59.993600130081575, "o", "d"] +[60.023600130081576, "o", "u"] +[60.05360013008158, "o", "\r\n"] +[60.08360013008158, "o", "\u001b[0m"] +[60.11360013008158, "o", "\r\n"] +[60.473079557419226, "o", "Table demo/weather:0784f64e62b6a55a8f44f2469fb8a23488d44169dd86f127c4c5765ba747cc59/rdu\r\n"] +[60.473111505508825, "o", "\r\n"] +[60.47398769378702, "o", "Size: 113.04 KiB\r\n"] +[60.47468339920084, "o", "Rows: 4633"] +[60.47474252700846, "o", "\r\nColumns: \r\n date (timestamp without time zone, PK)\r\n temperaturemin (numeric)\r\n temperaturemax (numeric)\r\n precipitation (numeric)\r\n"] +[60.47476064682047, "o", " snowfall (numeric)\r\n snowdepth (numeric)\r\n avgwindspeed (numeric)\r\n fastest2minwinddir (integer)\r\n fastest2minwindspeed (numeric)\r\n fastest5secwinddir (integer)\r\n fastest5secwindspeed (numeric)\r\n fog (character varying)\r\n fogheavy (character varying)\r\n"] +[60.47477900505106, "o", " mist (character varying)\r\n rain (character varying)\r\n fogground (character varying)\r\n ice (character varying)\r\n glaze (character varying)\r\n"] +[60.47478806495707, "o", " drizzle (character varying)\r\n snow (character varying)\r\n freezingrain (character varying)\r\n"] +[60.47479855537455, "o", " smokehaze (character varying)\r\n thunder (character varying)\r\n"] +[60.47481381416361, "o", " highwind (character varying)\r\n hail (character varying)\r\n"] +[60.47484886169474, "o", " blowingsnow (character varying)\r\n dust (character varying)\r\n freezingfog (character varying)\r\n"] +[60.474857444763586, "o", "\r\nObjects: \r\n ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] +[60.50485744476359, "o", "\u001b[1m"] +[60.53485744476359, "o", "\u001b[36m"] +[60.56485744476359, "o", "\u001b[91m"] +[60.59485744476359, "o", "$"] +[60.62485744476359, "o", " "] +[60.65485744476359, "o", "\u001b[0m"] +[78.20360013008153, "o", "\u001b[H"] +[78.23360013008153, "o", "\u001b[J"] +[78.26360013008153, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect object metadata"] +[78.29360013008153, "o", "\r\n"] +[78.32360013008153, "o", "$"] +[78.35360013008153, "o", " "] +[78.38360013008153, "o", "s"] +[78.41360013008153, "o", "g"] +[78.44360013008153, "o", "r"] +[78.47360013008154, "o", " "] +[78.50360013008154, "o", "o"] +[78.53360013008154, "o", "b"] +[78.56360013008154, "o", "j"] +[78.59360013008154, "o", "e"] +[78.62360013008154, "o", "c"] +[78.65360013008154, "o", "t"] +[78.68360013008154, "o", " "] +[78.71360013008155, "o", "o"] +[78.74360013008155, "o", "b"] +[78.77360013008155, "o", "7"] +[78.80360013008155, "o", "9"] +[78.83360013008155, "o", "9"] +[78.86360013008155, "o", "c"] +[78.89360013008155, "o", "a"] +[78.92360013008155, "o", "7"] +[78.95360013008155, "o", "6"] +[78.98360013008156, "o", "1"] +[79.01360013008156, "o", "e"] +[79.04360013008156, "o", "a"] +[79.07360013008156, "o", "6"] +[79.10360013008156, "o", "3"] +[79.13360013008156, "o", "8"] +[79.16360013008156, "o", "c"] +[79.19360013008156, "o", "0"] +[79.22360013008156, "o", "d"] +[79.25360013008157, "o", "b"] +[79.28360013008157, "o", "b"] +[79.31360013008157, "o", "4"] +[79.34360013008157, "o", "d"] +[79.37360013008157, "o", "f"] +[79.40360013008157, "o", "3"] +[79.43360013008157, "o", "e"] +[79.46360013008157, "o", "5"] +[79.49360013008157, "o", "9"] +[79.52360013008158, "o", "a"] +[79.55360013008158, "o", "b"] +[79.58360013008158, "o", "6"] +[79.61360013008158, "o", "a"] +[79.64360013008158, "o", "9"] +[79.67360013008158, "o", "9"] +[79.70360013008158, "o", "5"] +[79.73360013008158, "o", "d"] +[79.76360013008158, "o", "8"] +[79.79360013008159, "o", "7"] +[79.82360013008159, "o", "9"] +[79.85360013008159, "o", "9"] +[79.88360013008159, "o", "9"] +[79.91360013008159, "o", "9"] +[79.94360013008159, "o", "0"] +[79.97360013008159, "o", "9"] +[80.0036001300816, "o", "d"] +[80.0336001300816, "o", "0"] +[80.0636001300816, "o", "0"] +[80.0936001300816, "o", "8"] +[80.1236001300816, "o", "a"] +[80.1536001300816, "o", "3"] +[80.1836001300816, "o", "4"] +[80.2136001300816, "o", "9"] +[80.2436001300816, "o", "5"] +[80.2736001300816, "o", "7"] +[80.3036001300816, "o", "1"] +[80.3336001300816, "o", "1"] +[80.36360013008161, "o", "c"] +[80.39360013008161, "o", "9"] +[80.42360013008161, "o", "0"] +[80.45360013008161, "o", "0"] +[80.48360013008161, "o", "9"] +[80.51360013008161, "o", "f"] +[80.54360013008161, "o", "8"] +[80.57360013008162, "o", "f"] +[80.60360013008162, "o", "\r\n"] +[80.63360013008162, "o", "\u001b[0m"] +[80.66360013008162, "o", "\r\n"] +[81.02336613655135, "o", "Object ID: ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] +[81.02339045524641, "o", "\r\nNamespace: demo\r\nFormat: FRAG\r\nSize: 113.04 KiB\r\nCreated: 2021-08-18 18:40:24.645864\r\nRows inserted: 4633\r\nInsertion hash: 4b49b5701a582aa5c418238e4bf75c84d0dcd2ec993fb4e7fe1d0dfcf6ef6877\r\nRows deleted: 0\r\nDeletion hash: 0000000000000000000000000000000000000000000000000000000000000000\r\nColumn index:\r\n fog: ['No', 'Yes']\r\n ice: ['No', 'Yes']\r\n date: ['2007-01-01 00:00:00', '2019-09-07 00:00:00']\r\n dust: ['No', 'Yes']\r\n hail: ['No', 'Yes']\r\n mist: ['No', 'Yes']\r\n rain: ['No', 'Yes']\r\n snow: ['No', '"] +[81.0234054756169, "o", "Yes']\r\n glaze: ['No', 'Yes']\r\n drizzle: ['No', 'Yes']\r\n thunder: ['No', 'Yes']\r\n fogheavy: ['No', 'Yes']\r\n highwind: ['No', 'Yes']\r\n snowfall: ['0.0', '7.01']\r\n fogground: ['No', 'Yes']\r\n"] +[81.02341620445296, "o", " smokehaze: ['No', 'Yes']\r\n snowdepth: ['0.0', '5.91']\r\n blowingsnow: ['No', 'Yes']\r\n"] +[81.02342550277754, "o", " freezingfog: ['No', 'Yes']\r\n avgwindspeed: ['0.0', '20.36']\r\n"] +[81.02344409942671, "o", " freezingrain: ['No', 'Yes']\r\n precipitation: ['0.0', '6.45']\r\n temperaturemax: ['23.2', '105.1']\r\n"] +[81.02345387458845, "o", " temperaturemin: ['4.1', '80.1']\r\n fastest2minwinddir: [10, 360]\r\n"] +[81.02346317291304, "o", " fastest5secwinddir: [10, 360]\r\n fastest2minwindspeed: ['4.92', '59.95']\r\n"] +[81.02347342491194, "o", " fastest5secwindspeed: ['6.93', '86.12']\r\n\r\n"] +[81.04188076973006, "o", "Location: created locally\r\n"] +[81.07188076973006, "o", "\u001b[1m"] +[81.10188076973006, "o", "\u001b[36m"] +[81.13188076973006, "o", "\u001b[91m"] +[81.16188076973006, "o", "$"] +[81.19188076973006, "o", " "] +[81.22188076973006, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.16/import-from-mongo.cast b/content/casts/versioned/archive/v0.2.16/import-from-mongo.cast new file mode 100644 index 00000000..37f9adf1 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.16/import-from-mongo.cast @@ -0,0 +1,669 @@ +{"version": 2, "width": 100, "height": 35, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1629312027, "metadata": {"tss": [{"h": "Inspect the config file", "ts": 0.06}, {"h": "Do some preliminary cleanup", "ts": 6.0600000000000005}, {"h": "Mount the Mongo database", "ts": 12.379452247619636}, {"h": "Check the contents of the new table", "ts": 29.37945224761964}, {"h": "Import the data into a new Splitgraph repository", "ts": 36.40630475997932}, {"h": "Alternatively, data can be imported from other databases with Splitfiles", "ts": 44.81553771019}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the config file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "c"] +[0.24, "o", "a"] +[0.27, "o", "t"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "."] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "g"] +[0.42000000000000015, "o", "c"] +[0.4500000000000002, "o", "o"] +[0.4800000000000002, "o", "n"] +[0.5100000000000002, "o", "f"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "g"] +[0.6000000000000003, "o", "\r\n"] +[0.6300000000000003, "o", "\u001b[0m"] +[0.6600000000000004, "o", "\r\n"] +[0.6610914802551273, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[data_sources]\r\nmongo_fdw=splitgraph.hooks.data_source.MongoDataSource\r\n"] +[0.6910914802551273, "o", "\u001b[1m"] +[0.7210914802551274, "o", "\u001b[36m"] +[0.7510914802551274, "o", "\u001b[91m"] +[0.7810914802551274, "o", "$"] +[0.8110914802551275, "o", " "] +[0.8410914802551275, "o", "\u001b[0m"] +[6.03, "o", "\u001b[H"] +[6.0600000000000005, "o", "\u001b[J"] +[6.090000000000001, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Do some preliminary cleanup"] +[6.120000000000001, "o", "\r\n"] +[6.150000000000001, "o", "$"] +[6.1800000000000015, "o", " "] +[6.210000000000002, "o", "s"] +[6.240000000000002, "o", "g"] +[6.270000000000002, "o", "r"] +[6.3000000000000025, "o", " "] +[6.330000000000003, "o", "r"] +[6.360000000000003, "o", "m"] +[6.390000000000003, "o", " "] +[6.4200000000000035, "o", "-"] +[6.450000000000004, "o", "y"] +[6.480000000000004, "o", " "] +[6.510000000000004, "o", "s"] +[6.5400000000000045, "o", "t"] +[6.570000000000005, "o", "a"] +[6.600000000000005, "o", "g"] +[6.630000000000005, "o", "i"] +[6.6600000000000055, "o", "n"] +[6.690000000000006, "o", "g"] +[6.720000000000006, "o", "\r\n"] +[6.750000000000006, "o", "\u001b[0m"] +[6.7800000000000065, "o", "\r\n"] +[7.139452247619635, "o", "Postgres schema staging will be deleted.\r\n"] +[7.169452247619636, "o", "\u001b[1m"] +[7.199452247619636, "o", "\u001b[36m"] +[7.229452247619636, "o", "\u001b[91m"] +[7.259452247619636, "o", "$"] +[7.289452247619637, "o", " "] +[7.319452247619637, "o", "\u001b[0m"] +[12.349452247619636, "o", "\u001b[H"] +[12.379452247619636, "o", "\u001b[J"] +[12.409452247619635, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Mount the Mongo database"] +[12.439452247619634, "o", "\r\n"] +[12.469452247619634, "o", "$"] +[12.499452247619633, "o", " "] +[12.529452247619632, "o", "s"] +[12.559452247619632, "o", "g"] +[12.589452247619631, "o", "r"] +[12.61945224761963, "o", " "] +[12.64945224761963, "o", "m"] +[12.67945224761963, "o", "o"] +[12.709452247619629, "o", "u"] +[12.739452247619628, "o", "n"] +[12.769452247619627, "o", "t"] +[12.799452247619627, "o", " "] +[12.829452247619626, "o", "m"] +[12.859452247619625, "o", "o"] +[12.889452247619625, "o", "n"] +[12.919452247619624, "o", "g"] +[12.949452247619623, "o", "o"] +[12.979452247619623, "o", "_"] +[13.009452247619622, "o", "f"] +[13.039452247619622, "o", "d"] +[13.06945224761962, "o", "w"] +[13.09945224761962, "o", " "] +[13.12945224761962, "o", "-"] +[13.159452247619619, "o", "-"] +[13.189452247619618, "o", "h"] +[13.219452247619618, "o", "e"] +[13.249452247619617, "o", "l"] +[13.279452247619616, "o", "p"] +[13.309452247619616, "o", "\r\n"] +[13.339452247619615, "o", "$"] +[13.369452247619614, "o", " "] +[13.399452247619614, "o", "s"] +[13.429452247619613, "o", "g"] +[13.459452247619613, "o", "r"] +[13.489452247619612, "o", " "] +[13.519452247619611, "o", "m"] +[13.54945224761961, "o", "o"] +[13.57945224761961, "o", "u"] +[13.60945224761961, "o", "n"] +[13.639452247619609, "o", "t"] +[13.669452247619608, "o", " "] +[13.699452247619607, "o", "m"] +[13.729452247619607, "o", "o"] +[13.759452247619606, "o", "n"] +[13.789452247619606, "o", "g"] +[13.819452247619605, "o", "o"] +[13.849452247619604, "o", "_"] +[13.879452247619604, "o", "f"] +[13.909452247619603, "o", "d"] +[13.939452247619602, "o", "w"] +[13.969452247619602, "o", " "] +[13.999452247619601, "o", "s"] +[14.0294522476196, "o", "t"] +[14.0594522476196, "o", "a"] +[14.0894522476196, "o", "g"] +[14.119452247619598, "o", "i"] +[14.149452247619598, "o", "n"] +[14.179452247619597, "o", "g"] +[14.209452247619597, "o", " "] +[14.239452247619596, "o", "-"] +[14.269452247619595, "o", "c"] +[14.299452247619595, "o", " "] +[14.329452247619594, "o", "o"] +[14.359452247619593, "o", "r"] +[14.389452247619593, "o", "i"] +[14.419452247619592, "o", "g"] +[14.449452247619591, "o", "i"] +[14.47945224761959, "o", "n"] +[14.50945224761959, "o", "r"] +[14.53945224761959, "o", "o"] +[14.569452247619589, "o", ":"] +[14.599452247619588, "o", "o"] +[14.629452247619588, "o", "r"] +[14.659452247619587, "o", "i"] +[14.689452247619586, "o", "g"] +[14.719452247619586, "o", "i"] +[14.749452247619585, "o", "n"] +[14.779452247619584, "o", "p"] +[14.809452247619584, "o", "a"] +[14.839452247619583, "o", "s"] +[14.869452247619583, "o", "s"] +[14.899452247619582, "o", "@"] +[14.929452247619581, "o", "m"] +[14.95945224761958, "o", "o"] +[14.98945224761958, "o", "n"] +[15.01945224761958, "o", "g"] +[15.049452247619579, "o", "o"] +[15.079452247619578, "o", ":"] +[15.109452247619577, "o", "2"] +[15.139452247619577, "o", "7"] +[15.169452247619576, "o", "0"] +[15.199452247619575, "o", "1"] +[15.229452247619575, "o", "7"] +[15.259452247619574, "o", " "] +[15.289452247619574, "o", "-"] +[15.319452247619573, "o", "o"] +[15.349452247619572, "o", " "] +[15.379452247619572, "o", "'"] +[15.409452247619571, "o", "{"] +[15.43945224761957, "o", "\""] +[15.46945224761957, "o", "t"] +[15.499452247619569, "o", "a"] +[15.529452247619568, "o", "b"] +[15.559452247619568, "o", "l"] +[15.589452247619567, "o", "e"] +[15.619452247619567, "o", "s"] +[15.649452247619566, "o", "\""] +[15.679452247619565, "o", ":"] +[15.709452247619565, "o", " "] +[15.739452247619564, "o", "{"] +[15.769452247619563, "o", "\""] +[15.799452247619563, "o", "s"] +[15.829452247619562, "o", "t"] +[15.859452247619561, "o", "u"] +[15.88945224761956, "o", "f"] +[15.91945224761956, "o", "f"] +[15.94945224761956, "o", "\""] +[15.979452247619559, "o", ":"] +[16.00945224761956, "o", " "] +[16.03945224761956, "o", "{"] +[16.069452247619562, "o", "\r\n "] +[16.099452247619563, "o", "\""] +[16.129452247619565, "o", "o"] +[16.159452247619566, "o", "p"] +[16.189452247619567, "o", "t"] +[16.219452247619568, "o", "i"] +[16.24945224761957, "o", "o"] +[16.27945224761957, "o", "n"] +[16.30945224761957, "o", "s"] +[16.339452247619572, "o", "\""] +[16.369452247619574, "o", ":"] +[16.399452247619575, "o", "\r\n "] +[16.429452247619576, "o", "{"] +[16.459452247619577, "o", "\r\n "] +[16.489452247619578, "o", "\""] +[16.51945224761958, "o", "d"] +[16.54945224761958, "o", "a"] +[16.57945224761958, "o", "t"] +[16.609452247619583, "o", "a"] +[16.639452247619584, "o", "b"] +[16.669452247619585, "o", "a"] +[16.699452247619586, "o", "s"] +[16.729452247619587, "o", "e"] +[16.75945224761959, "o", "\""] +[16.78945224761959, "o", ":"] +[16.81945224761959, "o", " "] +[16.849452247619592, "o", "\""] +[16.879452247619593, "o", "o"] +[16.909452247619594, "o", "r"] +[16.939452247619595, "o", "i"] +[16.969452247619596, "o", "g"] +[16.999452247619598, "o", "i"] +[17.0294522476196, "o", "n"] +[17.0594522476196, "o", "d"] +[17.0894522476196, "o", "b"] +[17.119452247619602, "o", "\""] +[17.149452247619603, "o", ","] +[17.179452247619604, "o", "\r\n "] +[17.209452247619605, "o", "\""] +[17.239452247619607, "o", "c"] +[17.269452247619608, "o", "o"] +[17.29945224761961, "o", "l"] +[17.32945224761961, "o", "l"] +[17.35945224761961, "o", "e"] +[17.389452247619612, "o", "c"] +[17.419452247619613, "o", "t"] +[17.449452247619615, "o", "i"] +[17.479452247619616, "o", "o"] +[17.509452247619617, "o", "n"] +[17.539452247619618, "o", "\""] +[17.56945224761962, "o", ":"] +[17.59945224761962, "o", " "] +[17.62945224761962, "o", "\""] +[17.659452247619623, "o", "s"] +[17.689452247619624, "o", "t"] +[17.719452247619625, "o", "u"] +[17.749452247619626, "o", "f"] +[17.779452247619627, "o", "f"] +[17.809452247619628, "o", "\""] +[17.83945224761963, "o", "\r\n "] +[17.86945224761963, "o", "}"] +[17.89945224761963, "o", ","] +[17.929452247619633, "o", "\r\n "] +[17.959452247619634, "o", "\""] +[17.989452247619635, "o", "s"] +[18.019452247619636, "o", "c"] +[18.049452247619637, "o", "h"] +[18.07945224761964, "o", "e"] +[18.10945224761964, "o", "m"] +[18.13945224761964, "o", "a"] +[18.169452247619642, "o", "\""] +[18.199452247619643, "o", ":"] +[18.229452247619644, "o", " "] +[18.259452247619645, "o", "{"] +[18.289452247619646, "o", "\r\n "] +[18.319452247619648, "o", "\""] +[18.34945224761965, "o", "n"] +[18.37945224761965, "o", "a"] +[18.40945224761965, "o", "m"] +[18.439452247619652, "o", "e"] +[18.469452247619653, "o", "\""] +[18.499452247619654, "o", ":"] +[18.529452247619655, "o", " "] +[18.559452247619657, "o", "\""] +[18.589452247619658, "o", "t"] +[18.61945224761966, "o", "e"] +[18.64945224761966, "o", "x"] +[18.67945224761966, "o", "t"] +[18.709452247619662, "o", "\""] +[18.739452247619663, "o", ","] +[18.769452247619665, "o", "\r\n "] +[18.799452247619666, "o", "\""] +[18.829452247619667, "o", "d"] +[18.859452247619668, "o", "u"] +[18.88945224761967, "o", "r"] +[18.91945224761967, "o", "a"] +[18.94945224761967, "o", "t"] +[18.979452247619673, "o", "i"] +[19.009452247619674, "o", "o"] +[19.039452247619675, "o", "n"] +[19.069452247619676, "o", "\""] +[19.099452247619677, "o", ":"] +[19.129452247619678, "o", " "] +[19.15945224761968, "o", "\""] +[19.18945224761968, "o", "n"] +[19.21945224761968, "o", "u"] +[19.249452247619683, "o", "m"] +[19.279452247619684, "o", "e"] +[19.309452247619685, "o", "r"] +[19.339452247619686, "o", "i"] +[19.369452247619687, "o", "c"] +[19.39945224761969, "o", "\""] +[19.42945224761969, "o", ","] +[19.45945224761969, "o", "\r\n "] +[19.489452247619692, "o", "\""] +[19.519452247619693, "o", "h"] +[19.549452247619694, "o", "a"] +[19.579452247619695, "o", "p"] +[19.609452247619696, "o", "p"] +[19.639452247619698, "o", "y"] +[19.6694522476197, "o", "\""] +[19.6994522476197, "o", ":"] +[19.7294522476197, "o", " "] +[19.759452247619702, "o", "\""] +[19.789452247619703, "o", "b"] +[19.819452247619704, "o", "o"] +[19.849452247619706, "o", "o"] +[19.879452247619707, "o", "l"] +[19.909452247619708, "o", "e"] +[19.93945224761971, "o", "a"] +[19.96945224761971, "o", "n"] +[19.99945224761971, "o", "\""] +[20.029452247619712, "o", "}"] +[20.059452247619713, "o", "}"] +[20.089452247619715, "o", "}"] +[20.119452247619716, "o", "}"] +[20.149452247619717, "o", "'"] +[20.179452247619718, "o", "\r\n"] +[20.20945224761972, "o", "\u001b[0m"] +[20.23945224761972, "o", "\r\n"] +[20.556108837127777, "o", "Usage: sgr mount mongo_fdw [OPTIONS] SCHEMA\r\n\r\n Mount a Mongo database.\r\n\r\n Mounts one or more collections on a remote Mongo database as a set of\r\n foreign tables locally.\r\n\r\nOptions:\r\n -c, --connection TEXT Connection string in the form\r\n username:password@server:port\r\n\r\n -o, --handler-options JSON JSON-encoded dictionary or @filename.json with\r\n handler options:\r\n \r\n tables: A di"] +[20.556123142242523, "o", "ctionary of form { \"table_name\":\r\n { \"schema\": {\"col1\": \"type1\"...},\r\n \"options\": {\"database\": , \"collection\":\r\n } } }\r\n\r\n --help Show this message and exit.\r\n"] +[20.954304819107147, "o", "Mounting table stuff\r\n"] +[20.984304819107148, "o", "\u001b[1m"] +[21.01430481910715, "o", "\u001b[36m"] +[21.04430481910715, "o", "\u001b[91m"] +[21.07430481910715, "o", "$"] +[21.104304819107153, "o", " "] +[21.134304819107154, "o", "\u001b[0m"] +[29.349452247619638, "o", "\u001b[H"] +[29.37945224761964, "o", "\u001b[J"] +[29.40945224761964, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the contents of the new table"] +[29.43945224761964, "o", "\r\n"] +[29.469452247619643, "o", "$"] +[29.499452247619644, "o", " "] +[29.529452247619645, "o", "s"] +[29.559452247619646, "o", "g"] +[29.589452247619647, "o", "r"] +[29.61945224761965, "o", " "] +[29.64945224761965, "o", "s"] +[29.67945224761965, "o", "q"] +[29.70945224761965, "o", "l"] +[29.739452247619653, "o", " "] +[29.769452247619654, "o", "-"] +[29.799452247619655, "o", "s"] +[29.829452247619656, "o", " "] +[29.859452247619657, "o", "s"] +[29.88945224761966, "o", "t"] +[29.91945224761966, "o", "a"] +[29.94945224761966, "o", "g"] +[29.979452247619662, "o", "i"] +[30.009452247619663, "o", "n"] +[30.039452247619664, "o", "g"] +[30.069452247619665, "o", " "] +[30.099452247619666, "o", "\""] +[30.129452247619668, "o", "S"] +[30.15945224761967, "o", "E"] +[30.18945224761967, "o", "L"] +[30.21945224761967, "o", "E"] +[30.249452247619672, "o", "C"] +[30.279452247619673, "o", "T"] +[30.309452247619674, "o", " "] +[30.339452247619676, "o", "*"] +[30.369452247619677, "o", " "] +[30.399452247619678, "o", "F"] +[30.42945224761968, "o", "R"] +[30.45945224761968, "o", "O"] +[30.48945224761968, "o", "M"] +[30.519452247619682, "o", " "] +[30.549452247619683, "o", "s"] +[30.579452247619685, "o", "t"] +[30.609452247619686, "o", "u"] +[30.639452247619687, "o", "f"] +[30.669452247619688, "o", "f"] +[30.69945224761969, "o", "\""] +[30.72945224761969, "o", "\r\n"] +[30.75945224761969, "o", "\u001b[0m"] +[30.789452247619693, "o", "\r\n"] +[31.16630475997931, "o", "Alex 12 False 611d54283fbd955a6bf63a0c\r\nJames 2 True 611d54283fbd955a6bf63a0d\r\nAlice 98765 True 611d54283fbd955a6bf63a0e\r\n"] +[31.196304759979313, "o", "\u001b[1m"] +[31.226304759979314, "o", "\u001b[36m"] +[31.256304759979315, "o", "\u001b[91m"] +[31.286304759979316, "o", "$"] +[31.316304759979317, "o", " "] +[31.34630475997932, "o", "\u001b[0m"] +[36.37630475997932, "o", "\u001b[H"] +[36.40630475997932, "o", "\u001b[J"] +[36.43630475997932, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Import the data into a new Splitgraph repository"] +[36.46630475997932, "o", "\r\n"] +[36.496304759979324, "o", "$"] +[36.526304759979325, "o", " "] +[36.55630475997933, "o", "s"] +[36.58630475997933, "o", "g"] +[36.61630475997933, "o", "r"] +[36.64630475997933, "o", " "] +[36.67630475997933, "o", "i"] +[36.70630475997933, "o", "m"] +[36.73630475997933, "o", "p"] +[36.766304759979334, "o", "o"] +[36.796304759979336, "o", "r"] +[36.82630475997934, "o", "t"] +[36.85630475997934, "o", " "] +[36.88630475997934, "o", "s"] +[36.91630475997934, "o", "t"] +[36.94630475997934, "o", "a"] +[36.97630475997934, "o", "g"] +[37.00630475997934, "o", "i"] +[37.036304759979345, "o", "n"] +[37.066304759979346, "o", "g"] +[37.09630475997935, "o", " "] +[37.12630475997935, "o", "\""] +[37.15630475997935, "o", "S"] +[37.18630475997935, "o", "E"] +[37.21630475997935, "o", "L"] +[37.24630475997935, "o", "E"] +[37.276304759979354, "o", "C"] +[37.306304759979355, "o", "T"] +[37.336304759979356, "o", " "] +[37.36630475997936, "o", "n"] +[37.39630475997936, "o", "a"] +[37.42630475997936, "o", "m"] +[37.45630475997936, "o", "e"] +[37.48630475997936, "o", ","] +[37.51630475997936, "o", " "] +[37.546304759979364, "o", "d"] +[37.576304759979365, "o", "u"] +[37.606304759979366, "o", "r"] +[37.63630475997937, "o", "a"] +[37.66630475997937, "o", "t"] +[37.69630475997937, "o", "i"] +[37.72630475997937, "o", "o"] +[37.75630475997937, "o", "n"] +[37.78630475997937, "o", ","] +[37.816304759979374, "o", " "] +[37.846304759979375, "o", "h"] +[37.87630475997938, "o", "a"] +[37.90630475997938, "o", "p"] +[37.93630475997938, "o", "p"] +[37.96630475997938, "o", "y"] +[37.99630475997938, "o", " "] +[38.02630475997938, "o", "F"] +[38.05630475997938, "o", "R"] +[38.086304759979384, "o", "O"] +[38.116304759979386, "o", "M"] +[38.14630475997939, "o", " "] +[38.17630475997939, "o", "s"] +[38.20630475997939, "o", "t"] +[38.23630475997939, "o", "u"] +[38.26630475997939, "o", "f"] +[38.29630475997939, "o", "f"] +[38.326304759979394, "o", "\""] +[38.356304759979395, "o", " "] +[38.386304759979396, "o", "m"] +[38.4163047599794, "o", "y"] +[38.4463047599794, "o", "/"] +[38.4763047599794, "o", "r"] +[38.5063047599794, "o", "e"] +[38.5363047599794, "o", "p"] +[38.5663047599794, "o", "o"] +[38.596304759979404, "o", "s"] +[38.626304759979405, "o", "i"] +[38.656304759979406, "o", "t"] +[38.68630475997941, "o", "o"] +[38.71630475997941, "o", "r"] +[38.74630475997941, "o", "y"] +[38.77630475997941, "o", " "] +[38.80630475997941, "o", "s"] +[38.83630475997941, "o", "t"] +[38.866304759979414, "o", "u"] +[38.896304759979415, "o", "f"] +[38.926304759979416, "o", "f"] +[38.95630475997942, "o", "\r\n"] +[38.98630475997942, "o", "\u001b[0m"] +[39.01630475997942, "o", "\r\n"] +[39.41153719902056, "o", "Processing table sg_tmp_7c3b8d0c15192aff8a47edbc8747427e\r\n"] +[39.57553771018999, "o", "my/repository:stuff has been imported from staging:SELECT name, duration, happy FROM stuff\r\n"] +[39.60553771018999, "o", "\u001b[1m"] +[39.63553771018999, "o", "\u001b[36m"] +[39.665537710189994, "o", "\u001b[91m"] +[39.695537710189996, "o", "$"] +[39.72553771019, "o", " "] +[39.75553771019, "o", "\u001b[0m"] +[44.78553771019, "o", "\u001b[H"] +[44.81553771019, "o", "\u001b[J"] +[44.84553771019, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Alternatively, data can be imported from other databases with Splitfiles"] +[44.87553771019, "o", "\r\n"] +[44.90553771019, "o", "$"] +[44.935537710190005, "o", " "] +[44.965537710190006, "o", "c"] +[44.99553771019001, "o", "a"] +[45.02553771019001, "o", "t"] +[45.05553771019001, "o", " "] +[45.08553771019001, "o", "m"] +[45.11553771019001, "o", "o"] +[45.14553771019001, "o", "n"] +[45.175537710190014, "o", "g"] +[45.205537710190015, "o", "o"] +[45.235537710190016, "o", "_"] +[45.26553771019002, "o", "i"] +[45.29553771019002, "o", "m"] +[45.32553771019002, "o", "p"] +[45.35553771019002, "o", "o"] +[45.38553771019002, "o", "r"] +[45.41553771019002, "o", "t"] +[45.445537710190024, "o", "."] +[45.475537710190025, "o", "s"] +[45.505537710190026, "o", "p"] +[45.53553771019003, "o", "l"] +[45.56553771019003, "o", "i"] +[45.59553771019003, "o", "t"] +[45.62553771019003, "o", "f"] +[45.65553771019003, "o", "i"] +[45.68553771019003, "o", "l"] +[45.715537710190034, "o", "e"] +[45.745537710190035, "o", "\r\n"] +[45.77553771019004, "o", "$"] +[45.80553771019004, "o", " "] +[45.83553771019004, "o", "s"] +[45.86553771019004, "o", "g"] +[45.89553771019004, "o", "r"] +[45.92553771019004, "o", " "] +[45.95553771019004, "o", "b"] +[45.985537710190044, "o", "u"] +[46.015537710190046, "o", "i"] +[46.04553771019005, "o", "l"] +[46.07553771019005, "o", "d"] +[46.10553771019005, "o", " "] +[46.13553771019005, "o", "m"] +[46.16553771019005, "o", "o"] +[46.19553771019005, "o", "n"] +[46.22553771019005, "o", "g"] +[46.255537710190055, "o", "o"] +[46.285537710190056, "o", "_"] +[46.31553771019006, "o", "i"] +[46.34553771019006, "o", "m"] +[46.37553771019006, "o", "p"] +[46.40553771019006, "o", "o"] +[46.43553771019006, "o", "r"] +[46.46553771019006, "o", "t"] +[46.495537710190064, "o", "."] +[46.525537710190065, "o", "s"] +[46.555537710190066, "o", "p"] +[46.58553771019007, "o", "l"] +[46.61553771019007, "o", "i"] +[46.64553771019007, "o", "t"] +[46.67553771019007, "o", "f"] +[46.70553771019007, "o", "i"] +[46.73553771019007, "o", "l"] +[46.765537710190074, "o", "e"] +[46.795537710190075, "o", "\r\n"] +[46.825537710190076, "o", "\u001b[0m"] +[46.85553771019008, "o", "\r\n"] +[46.856581506729384, "o", "FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"tables\": {\"stuff\": {\r\n \"options\": {\r\n \"database\": \"origindb\",\r\n \"collection\": \"stuff\"\r\n },\r\n \"schema\": {\r\n \"name\": \"text\",\r\n \"duration\": \"numeric\",\r\n \"happy\": \"boolean\"}}}}'\r\n IMPORT {SELECT * FROM stuff} AS stuff\r\n"] +[47.20281582832362, "o", "Executing Splitfile mongo_import.splitfile with arguments {}\r\n"] +[47.23572855949428, "o", "\u001b[1m\r\nStep 1/1 : FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"t...\u001b[0m\r\n"] +[47.30820780754115, "o", "Mounting table stuff\r\n"] +[47.358558473587294, "o", "Processing table sg_tmp_e5e7db00583aac0564f4603b57b6adb5\r\n"] +[47.54300194740321, "o", "Successfully built mongo_import:c2a87cf6b52a.\r\n"] +[47.57300194740321, "o", "\u001b[1m"] +[47.603001947403214, "o", "\u001b[36m"] +[47.633001947403216, "o", "\u001b[91m"] +[47.66300194740322, "o", "$"] +[47.69300194740322, "o", " "] +[47.72300194740322, "o", "\u001b[0m"] +[54.78553771019, "o", "\u001b[H"] +[54.81553771019, "o", "\u001b[J"] +[54.84553771019, "o", "\u001b[1m"] +[54.87553771019, "o", "\u001b[36m"] +[54.90553771019, "o", "\u001b[91m"] +[54.935537710190005, "o", "$"] +[54.965537710190006, "o", " "] +[54.99553771019001, "o", "s"] +[55.02553771019001, "o", "g"] +[55.05553771019001, "o", "r"] +[55.08553771019001, "o", " "] +[55.11553771019001, "o", "s"] +[55.14553771019001, "o", "h"] +[55.175537710190014, "o", "o"] +[55.205537710190015, "o", "w"] +[55.235537710190016, "o", " "] +[55.26553771019002, "o", "m"] +[55.29553771019002, "o", "o"] +[55.32553771019002, "o", "n"] +[55.35553771019002, "o", "g"] +[55.38553771019002, "o", "o"] +[55.41553771019002, "o", "_"] +[55.445537710190024, "o", "i"] +[55.475537710190025, "o", "m"] +[55.505537710190026, "o", "p"] +[55.53553771019003, "o", "o"] +[55.56553771019003, "o", "r"] +[55.59553771019003, "o", "t"] +[55.62553771019003, "o", ":"] +[55.65553771019003, "o", "l"] +[55.68553771019003, "o", "a"] +[55.715537710190034, "o", "t"] +[55.745537710190035, "o", "e"] +[55.77553771019004, "o", "s"] +[55.80553771019004, "o", "t"] +[55.83553771019004, "o", "\r\n"] +[55.86553771019004, "o", "$"] +[55.89553771019004, "o", " "] +[55.92553771019004, "o", "s"] +[55.95553771019004, "o", "g"] +[55.985537710190044, "o", "r"] +[56.015537710190046, "o", " "] +[56.04553771019005, "o", "s"] +[56.07553771019005, "o", "q"] +[56.10553771019005, "o", "l"] +[56.13553771019005, "o", " "] +[56.16553771019005, "o", "-"] +[56.19553771019005, "o", "s"] +[56.22553771019005, "o", " "] +[56.255537710190055, "o", "m"] +[56.285537710190056, "o", "o"] +[56.31553771019006, "o", "n"] +[56.34553771019006, "o", "g"] +[56.37553771019006, "o", "o"] +[56.40553771019006, "o", "_"] +[56.43553771019006, "o", "i"] +[56.46553771019006, "o", "m"] +[56.495537710190064, "o", "p"] +[56.525537710190065, "o", "o"] +[56.555537710190066, "o", "r"] +[56.58553771019007, "o", "t"] +[56.61553771019007, "o", " "] +[56.64553771019007, "o", "\""] +[56.67553771019007, "o", "S"] +[56.70553771019007, "o", "E"] +[56.73553771019007, "o", "L"] +[56.765537710190074, "o", "E"] +[56.795537710190075, "o", "C"] +[56.825537710190076, "o", "T"] +[56.85553771019008, "o", " "] +[56.88553771019008, "o", "*"] +[56.91553771019008, "o", " "] +[56.94553771019008, "o", "F"] +[56.97553771019008, "o", "R"] +[57.00553771019008, "o", "O"] +[57.035537710190084, "o", "M"] +[57.065537710190085, "o", " "] +[57.09553771019009, "o", "s"] +[57.12553771019009, "o", "t"] +[57.15553771019009, "o", "u"] +[57.18553771019009, "o", "f"] +[57.21553771019009, "o", "f"] +[57.24553771019009, "o", "\""] +[57.27553771019009, "o", "\r\n"] +[57.305537710190094, "o", "\u001b[0m"] +[57.335537710190096, "o", "\r\n"] +[57.67975620269803, "o", "Image mongo_import:c2a87cf6b52aca03ee63ed6322a20d228bdfd524c83e87169c77b2535ca61111\r\n"] +[57.67997316360501, "o", "Importing 1 table from mongo_fdw_tmp_staging\r\nCreated at 2021-08-18T18:40:47.880128\r\n"] +[57.681177654266634, "o", "Size: 589.00 B\r\n"] +[57.68118671417264, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[57.681856670379915, "o", " stuff\r\n"] +[58.033692159652986, "o", "Alex 12 False 611d54283fbd955a6bf63a0c\r\nJames 2 True 611d54283fbd955a6bf63a0d\r\nAlice 98765 True 611d54283fbd955a6bf63a0e\r\n"] +[58.06369215965299, "o", "\u001b[1m"] +[58.09369215965299, "o", "\u001b[36m"] +[58.12369215965299, "o", "\u001b[91m"] +[58.15369215965299, "o", "$"] +[58.18369215965299, "o", " "] +[58.21369215965299, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.16/metadata.json b/content/casts/versioned/archive/v0.2.16/metadata.json new file mode 100644 index 00000000..b20dc655 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.16/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.16", + "updated_at": "2022-01-20T00:00:40.028Z", + "release": { + "id": 48066336, + "tag_name": "v0.2.16", + "target_commitish": "e7553fcf76b6a34ac0d396e407f122d7cd2a6e59", + "created_at": "2021-08-18T17:39:35Z", + "published_at": "2021-08-18T19:13:55Z", + "assets": [ + { + "id": 42751073, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/42751073", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-08-18T18:52:44Z", + "updated_at": "2021-08-18T18:52:45Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.16/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/casts/versioned/archive/v0.2.16/pg-replication.cast b/content/casts/versioned/archive/v0.2.16/pg-replication.cast new file mode 100644 index 00000000..61e0d7d2 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.16/pg-replication.cast @@ -0,0 +1,1405 @@ +{"version": 2, "width": 100, "height": 21, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1629312095, "metadata": {"tss": [{"h": "The configuration file for sgr contains credentials for the", "ts": 0.06}, {"h": "The origin database has been set up with a couple of tables.", "ts": 10.059999999999999}, {"h": "Create a publication on the origin database", "ts": 19.708745765685954}, {"h": "Create a schema with the same name and same tables", "ts": 28.488745765686097}, {"h": "Set up replication from the origin database.", "ts": 38.4887457656861}, {"h": "Check the data on the engine", "ts": 49.42874576568632}, {"h": "Commit the data as an initial image", "ts": 57.96901377677957}, {"h": "Make a change on the origin database", "ts": 68.90856044769342}, {"h": "The change propagates to the subscriber and gets", "ts": 84.97856044769384}, {"h": "Committing creates a new image, snapshotting the state.", "ts": 91.73687509536845}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The configuration file for sgr contains credentials for the"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # origin database: this is just so that we can use sgr to query it\r\n"] +[0.18, "o", "$ # (replication can be set up through any PostgreSQL client)\r\n"] +[0.21, "o", "$"] +[0.24, "o", " "] +[0.27, "o", "c"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "t"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "."] +[0.42000000000000015, "o", "s"] +[0.4500000000000002, "o", "g"] +[0.4800000000000002, "o", "c"] +[0.5100000000000002, "o", "o"] +[0.5400000000000003, "o", "n"] +[0.5700000000000003, "o", "f"] +[0.6000000000000003, "o", "i"] +[0.6300000000000003, "o", "g"] +[0.6600000000000004, "o", "\r\n"] +[0.6900000000000004, "o", "\u001b[0m"] +[0.7200000000000004, "o", "\r\n"] +[0.7209636878967289, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n; Add the origin database here so that we can\r\n; use sgr to talk to it (can use any pg client)\r\n[remote:origin]\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=originuser\r\nSG_ENGINE_PWD=originpass\r\nSG_ENGINE_DB=originuser\r\n"] +[0.750963687896729, "o", "\u001b[1m"] +[0.780963687896729, "o", "\u001b[36m"] +[0.810963687896729, "o", "\u001b[91m"] +[0.840963687896729, "o", "$"] +[0.8709636878967291, "o", " "] +[0.9009636878967291, "o", "\u001b[0m"] +[10.03, "o", "\u001b[H"] +[10.059999999999999, "o", "\u001b[J"] +[10.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The origin database has been set up with a couple of tables."] +[10.119999999999997, "o", "\r\n"] +[10.149999999999997, "o", "$"] +[10.179999999999996, "o", " "] +[10.209999999999996, "o", "s"] +[10.239999999999995, "o", "g"] +[10.269999999999994, "o", "r"] +[10.299999999999994, "o", " "] +[10.329999999999993, "o", "s"] +[10.359999999999992, "o", "q"] +[10.389999999999992, "o", "l"] +[10.419999999999991, "o", " "] +[10.44999999999999, "o", "-"] +[10.47999999999999, "o", "r"] +[10.50999999999999, "o", " "] +[10.539999999999988, "o", "o"] +[10.569999999999988, "o", "r"] +[10.599999999999987, "o", "i"] +[10.629999999999987, "o", "g"] +[10.659999999999986, "o", "i"] +[10.689999999999985, "o", "n"] +[10.719999999999985, "o", " "] +[10.749999999999984, "o", "\""] +[10.779999999999983, "o", "S"] +[10.809999999999983, "o", "E"] +[10.839999999999982, "o", "L"] +[10.869999999999981, "o", "E"] +[10.89999999999998, "o", "C"] +[10.92999999999998, "o", "T"] +[10.95999999999998, "o", " "] +[10.989999999999979, "o", "*"] +[11.019999999999978, "o", " "] +[11.049999999999978, "o", "F"] +[11.079999999999977, "o", "R"] +[11.109999999999976, "o", "O"] +[11.139999999999976, "o", "M"] +[11.169999999999975, "o", " "] +[11.199999999999974, "o", "p"] +[11.229999999999974, "o", "r"] +[11.259999999999973, "o", "o"] +[11.289999999999973, "o", "d"] +[11.319999999999972, "o", "u"] +[11.349999999999971, "o", "c"] +[11.37999999999997, "o", "t"] +[11.40999999999997, "o", "i"] +[11.43999999999997, "o", "o"] +[11.469999999999969, "o", "n"] +[11.499999999999968, "o", "_"] +[11.529999999999967, "o", "d"] +[11.559999999999967, "o", "a"] +[11.589999999999966, "o", "t"] +[11.619999999999965, "o", "a"] +[11.649999999999965, "o", "."] +[11.679999999999964, "o", "c"] +[11.709999999999964, "o", "u"] +[11.739999999999963, "o", "s"] +[11.769999999999962, "o", "t"] +[11.799999999999962, "o", "o"] +[11.829999999999961, "o", "m"] +[11.85999999999996, "o", "e"] +[11.88999999999996, "o", "r"] +[11.919999999999959, "o", "s"] +[11.949999999999958, "o", "\""] +[11.979999999999958, "o", "\r\n"] +[12.009999999999957, "o", "$"] +[12.039999999999957, "o", " "] +[12.069999999999956, "o", "s"] +[12.099999999999955, "o", "g"] +[12.129999999999955, "o", "r"] +[12.159999999999954, "o", " "] +[12.189999999999953, "o", "s"] +[12.219999999999953, "o", "q"] +[12.249999999999952, "o", "l"] +[12.279999999999951, "o", " "] +[12.30999999999995, "o", "-"] +[12.33999999999995, "o", "r"] +[12.36999999999995, "o", " "] +[12.399999999999949, "o", "o"] +[12.429999999999948, "o", "r"] +[12.459999999999948, "o", "i"] +[12.489999999999947, "o", "g"] +[12.519999999999946, "o", "i"] +[12.549999999999946, "o", "n"] +[12.579999999999945, "o", " "] +[12.609999999999944, "o", "\""] +[12.639999999999944, "o", "S"] +[12.669999999999943, "o", "E"] +[12.699999999999942, "o", "L"] +[12.729999999999942, "o", "E"] +[12.759999999999941, "o", "C"] +[12.78999999999994, "o", "T"] +[12.81999999999994, "o", " "] +[12.84999999999994, "o", "*"] +[12.879999999999939, "o", " "] +[12.909999999999938, "o", "F"] +[12.939999999999937, "o", "R"] +[12.969999999999937, "o", "O"] +[12.999999999999936, "o", "M"] +[13.029999999999935, "o", " "] +[13.059999999999935, "o", "p"] +[13.089999999999934, "o", "r"] +[13.119999999999933, "o", "o"] +[13.149999999999933, "o", "d"] +[13.179999999999932, "o", "u"] +[13.209999999999932, "o", "c"] +[13.239999999999931, "o", "t"] +[13.26999999999993, "o", "i"] +[13.29999999999993, "o", "o"] +[13.329999999999929, "o", "n"] +[13.359999999999928, "o", "_"] +[13.389999999999928, "o", "d"] +[13.419999999999927, "o", "a"] +[13.449999999999926, "o", "t"] +[13.479999999999926, "o", "a"] +[13.509999999999925, "o", "."] +[13.539999999999925, "o", "o"] +[13.569999999999924, "o", "r"] +[13.599999999999923, "o", "d"] +[13.629999999999923, "o", "e"] +[13.659999999999922, "o", "r"] +[13.689999999999921, "o", "s"] +[13.71999999999992, "o", "\""] +[13.74999999999992, "o", "\r\n"] +[13.77999999999992, "o", "\u001b[0m"] +[13.809999999999919, "o", "\r\n"] +[14.135999498367228, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[14.468745765685954, "o", "1 1 15 Toilet Roll 2020-03-15 12:00:00\r\n2 1 20 Hand Sanitizer 2020-03-16 02:00:00\r\n3 2 5 Pasta 2020-03-21 17:32:11\r\n4 3 50 Surgical Mask 2020-04-01 12:00:01\r\n5 1 50 Surgical Mask 2020-04-02 11:29:42\r\n"] +[14.498745765685953, "o", "\u001b[1m"] +[14.528745765685953, "o", "\u001b[36m"] +[14.558745765685952, "o", "\u001b[91m"] +[14.588745765685951, "o", "$"] +[14.61874576568595, "o", " "] +[14.64874576568595, "o", "\u001b[0m"] +[19.678745765685953, "o", "\u001b[H"] +[19.708745765685954, "o", "\u001b[J"] +[19.738745765685955, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a publication on the origin database"] +[19.768745765685956, "o", "\r\n"] +[19.798745765685958, "o", "$"] +[19.82874576568596, "o", " "] +[19.85874576568596, "o", "s"] +[19.88874576568596, "o", "g"] +[19.918745765685962, "o", "r"] +[19.948745765685963, "o", " "] +[19.978745765685964, "o", "s"] +[20.008745765685966, "o", "q"] +[20.038745765685967, "o", "l"] +[20.068745765685968, "o", " "] +[20.09874576568597, "o", "-"] +[20.12874576568597, "o", "r"] +[20.15874576568597, "o", " "] +[20.188745765685972, "o", "o"] +[20.218745765685973, "o", "r"] +[20.248745765685975, "o", "i"] +[20.278745765685976, "o", "g"] +[20.308745765685977, "o", "i"] +[20.338745765685978, "o", "n"] +[20.36874576568598, "o", " "] +[20.39874576568598, "o", "\""] +[20.42874576568598, "o", "C"] +[20.458745765685983, "o", "R"] +[20.488745765685984, "o", "E"] +[20.518745765685985, "o", "A"] +[20.548745765685986, "o", "T"] +[20.578745765685987, "o", "E"] +[20.60874576568599, "o", " "] +[20.63874576568599, "o", "P"] +[20.66874576568599, "o", "U"] +[20.69874576568599, "o", "B"] +[20.728745765685993, "o", "L"] +[20.758745765685994, "o", "I"] +[20.788745765685995, "o", "C"] +[20.818745765685996, "o", "A"] +[20.848745765685997, "o", "T"] +[20.878745765686, "o", "I"] +[20.908745765686, "o", "O"] +[20.938745765686, "o", "N"] +[20.968745765686002, "o", " "] +[20.998745765686003, "o", "p"] +[21.028745765686004, "o", "u"] +[21.058745765686005, "o", "b"] +[21.088745765686006, "o", "_"] +[21.118745765686008, "o", "o"] +[21.14874576568601, "o", "r"] +[21.17874576568601, "o", "d"] +[21.20874576568601, "o", "e"] +[21.238745765686012, "o", "r"] +[21.268745765686013, "o", "s"] +[21.298745765686014, "o", " "] +[21.328745765686016, "o", "\\"] +[21.358745765686017, "o", "\r\n "] +[21.388745765686018, "o", "F"] +[21.41874576568602, "o", "O"] +[21.44874576568602, "o", "R"] +[21.47874576568602, "o", " "] +[21.508745765686022, "o", "T"] +[21.538745765686024, "o", "A"] +[21.568745765686025, "o", "B"] +[21.598745765686026, "o", "L"] +[21.628745765686027, "o", "E"] +[21.658745765686028, "o", " "] +[21.68874576568603, "o", "p"] +[21.71874576568603, "o", "r"] +[21.74874576568603, "o", "o"] +[21.778745765686033, "o", "d"] +[21.808745765686034, "o", "u"] +[21.838745765686035, "o", "c"] +[21.868745765686036, "o", "t"] +[21.898745765686037, "o", "i"] +[21.92874576568604, "o", "o"] +[21.95874576568604, "o", "n"] +[21.98874576568604, "o", "_"] +[22.01874576568604, "o", "d"] +[22.048745765686043, "o", "a"] +[22.078745765686044, "o", "t"] +[22.108745765686045, "o", "a"] +[22.138745765686046, "o", "."] +[22.168745765686047, "o", "c"] +[22.19874576568605, "o", "u"] +[22.22874576568605, "o", "s"] +[22.25874576568605, "o", "t"] +[22.288745765686052, "o", "o"] +[22.318745765686053, "o", "m"] +[22.348745765686054, "o", "e"] +[22.378745765686055, "o", "r"] +[22.408745765686056, "o", "s"] +[22.438745765686058, "o", ","] +[22.46874576568606, "o", " "] +[22.49874576568606, "o", "p"] +[22.52874576568606, "o", "r"] +[22.558745765686062, "o", "o"] +[22.588745765686063, "o", "d"] +[22.618745765686064, "o", "u"] +[22.648745765686066, "o", "c"] +[22.678745765686067, "o", "t"] +[22.708745765686068, "o", "i"] +[22.73874576568607, "o", "o"] +[22.76874576568607, "o", "n"] +[22.79874576568607, "o", "_"] +[22.828745765686072, "o", "d"] +[22.858745765686074, "o", "a"] +[22.888745765686075, "o", "t"] +[22.918745765686076, "o", "a"] +[22.948745765686077, "o", "."] +[22.978745765686078, "o", "o"] +[23.00874576568608, "o", "r"] +[23.03874576568608, "o", "d"] +[23.06874576568608, "o", "e"] +[23.098745765686083, "o", "r"] +[23.128745765686084, "o", "s"] +[23.158745765686085, "o", "\""] +[23.188745765686086, "o", "\r\n"] +[23.218745765686087, "o", "\u001b[0m"] +[23.24874576568609, "o", "\r\n"] +[23.27874576568609, "o", "\u001b[1m"] +[23.30874576568609, "o", "\u001b[36m"] +[23.33874576568609, "o", "\u001b[91m"] +[23.368745765686093, "o", "$"] +[23.398745765686094, "o", " "] +[23.428745765686095, "o", "\u001b[0m"] +[28.458745765686096, "o", "\u001b[H"] +[28.488745765686097, "o", "\u001b[J"] +[28.5187457656861, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a schema with the same name and same tables"] +[28.5487457656861, "o", "\r\n"] +[28.5787457656861, "o", "$ # on the engine and initialize the repository.\r\n"] +[28.608745765686102, "o", "$"] +[28.638745765686103, "o", " "] +[28.668745765686104, "o", "s"] +[28.698745765686105, "o", "g"] +[28.728745765686106, "o", "r"] +[28.758745765686108, "o", " "] +[28.78874576568611, "o", "i"] +[28.81874576568611, "o", "n"] +[28.84874576568611, "o", "i"] +[28.878745765686112, "o", "t"] +[28.908745765686113, "o", " "] +[28.938745765686114, "o", "p"] +[28.968745765686116, "o", "r"] +[28.998745765686117, "o", "o"] +[29.028745765686118, "o", "d"] +[29.05874576568612, "o", "u"] +[29.08874576568612, "o", "c"] +[29.11874576568612, "o", "t"] +[29.148745765686122, "o", "i"] +[29.178745765686124, "o", "o"] +[29.208745765686125, "o", "n"] +[29.238745765686126, "o", "_"] +[29.268745765686127, "o", "d"] +[29.298745765686128, "o", "a"] +[29.32874576568613, "o", "t"] +[29.35874576568613, "o", "a"] +[29.38874576568613, "o", "\r\n"] +[29.418745765686133, "o", "$"] +[29.448745765686134, "o", " "] +[29.478745765686135, "o", "c"] +[29.508745765686136, "o", "a"] +[29.538745765686137, "o", "t"] +[29.56874576568614, "o", " "] +[29.59874576568614, "o", "e"] +[29.62874576568614, "o", "n"] +[29.65874576568614, "o", "g"] +[29.688745765686143, "o", "i"] +[29.718745765686144, "o", "n"] +[29.748745765686145, "o", "e"] +[29.778745765686146, "o", "/"] +[29.808745765686147, "o", "s"] +[29.83874576568615, "o", "c"] +[29.86874576568615, "o", "h"] +[29.89874576568615, "o", "e"] +[29.928745765686152, "o", "m"] +[29.958745765686153, "o", "a"] +[29.988745765686154, "o", "."] +[30.018745765686155, "o", "s"] +[30.048745765686157, "o", "q"] +[30.078745765686158, "o", "l"] +[30.10874576568616, "o", "\r\n"] +[30.13874576568616, "o", "$"] +[30.16874576568616, "o", " "] +[30.198745765686162, "o", "s"] +[30.228745765686163, "o", "g"] +[30.258745765686164, "o", "r"] +[30.288745765686166, "o", " "] +[30.318745765686167, "o", "s"] +[30.348745765686168, "o", "q"] +[30.37874576568617, "o", "l"] +[30.40874576568617, "o", " "] +[30.43874576568617, "o", "-"] +[30.468745765686172, "o", "s"] +[30.498745765686174, "o", " "] +[30.528745765686175, "o", "p"] +[30.558745765686176, "o", "r"] +[30.588745765686177, "o", "o"] +[30.618745765686178, "o", "d"] +[30.64874576568618, "o", "u"] +[30.67874576568618, "o", "c"] +[30.70874576568618, "o", "t"] +[30.738745765686183, "o", "i"] +[30.768745765686184, "o", "o"] +[30.798745765686185, "o", "n"] +[30.828745765686186, "o", "_"] +[30.858745765686187, "o", "d"] +[30.88874576568619, "o", "a"] +[30.91874576568619, "o", "t"] +[30.94874576568619, "o", "a"] +[30.97874576568619, "o", " "] +[31.008745765686193, "o", "\""] +[31.038745765686194, "o", "$"] +[31.068745765686195, "o", "("] +[31.098745765686196, "o", "c"] +[31.128745765686197, "o", "a"] +[31.1587457656862, "o", "t"] +[31.1887457656862, "o", " "] +[31.2187457656862, "o", "e"] +[31.248745765686202, "o", "n"] +[31.278745765686203, "o", "g"] +[31.308745765686204, "o", "i"] +[31.338745765686205, "o", "n"] +[31.368745765686207, "o", "e"] +[31.398745765686208, "o", "/"] +[31.42874576568621, "o", "s"] +[31.45874576568621, "o", "c"] +[31.48874576568621, "o", "h"] +[31.518745765686212, "o", "e"] +[31.548745765686213, "o", "m"] +[31.578745765686214, "o", "a"] +[31.608745765686216, "o", "."] +[31.638745765686217, "o", "s"] +[31.668745765686218, "o", "q"] +[31.69874576568622, "o", "l"] +[31.72874576568622, "o", ")"] +[31.75874576568622, "o", "\""] +[31.788745765686222, "o", "\r\n"] +[31.818745765686224, "o", "\u001b[0m"] +[31.848745765686225, "o", "\r\n"] +[32.22262782096882, "o", "Initialized empty repository production_data\r\n"] +[32.223852100372504, "o", "CREATE TABLE production_data.customers (\r\n id INTEGER PRIMARY KEY,\r\n name VARCHAR,\r\n registration_time TIMESTAMP\r\n);\r\n\r\nCREATE TABLE production_data.orders (\r\n id INTEGER PRIMARY KEY,\r\n customer_id INTEGER,\r\n quantity INTEGER,\r\n item_name VARCHAR,\r\n placed_time TIMESTAMP\r\n);\r\n"] +[32.253852100372505, "o", "\u001b[1m"] +[32.283852100372506, "o", "\u001b[36m"] +[32.31385210037251, "o", "\u001b[91m"] +[32.34385210037251, "o", "$"] +[32.37385210037251, "o", " "] +[32.40385210037251, "o", "\u001b[0m"] +[38.458745765686096, "o", "\u001b[H"] +[38.4887457656861, "o", "\u001b[J"] +[38.5187457656861, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Set up replication from the origin database."] +[38.5487457656861, "o", "\r\n"] +[38.5787457656861, "o", "$ # This will copy existing data into the tables too.\r\n"] +[38.6087457656861, "o", "$"] +[38.6387457656861, "o", " "] +[38.668745765686104, "o", "s"] +[38.698745765686105, "o", "g"] +[38.72874576568611, "o", "r"] +[38.75874576568611, "o", " "] +[38.78874576568611, "o", "s"] +[38.81874576568611, "o", "q"] +[38.84874576568611, "o", "l"] +[38.87874576568611, "o", " "] +[38.90874576568611, "o", "-"] +[38.938745765686114, "o", "-"] +[38.968745765686116, "o", "n"] +[38.99874576568612, "o", "o"] +[39.02874576568612, "o", "-"] +[39.05874576568612, "o", "t"] +[39.08874576568612, "o", "r"] +[39.11874576568612, "o", "a"] +[39.14874576568612, "o", "n"] +[39.17874576568612, "o", "s"] +[39.208745765686125, "o", "a"] +[39.238745765686126, "o", "c"] +[39.26874576568613, "o", "t"] +[39.29874576568613, "o", "i"] +[39.32874576568613, "o", "o"] +[39.35874576568613, "o", "n"] +[39.38874576568613, "o", " "] +[39.41874576568613, "o", "\""] +[39.448745765686134, "o", "C"] +[39.478745765686135, "o", "R"] +[39.508745765686136, "o", "E"] +[39.53874576568614, "o", "A"] +[39.56874576568614, "o", "T"] +[39.59874576568614, "o", "E"] +[39.62874576568614, "o", " "] +[39.65874576568614, "o", "S"] +[39.68874576568614, "o", "U"] +[39.718745765686144, "o", "B"] +[39.748745765686145, "o", "S"] +[39.778745765686146, "o", "C"] +[39.80874576568615, "o", "R"] +[39.83874576568615, "o", "I"] +[39.86874576568615, "o", "P"] +[39.89874576568615, "o", "T"] +[39.92874576568615, "o", "I"] +[39.95874576568615, "o", "O"] +[39.988745765686154, "o", "N"] +[40.018745765686155, "o", " "] +[40.04874576568616, "o", "s"] +[40.07874576568616, "o", "u"] +[40.10874576568616, "o", "b"] +[40.13874576568616, "o", "_"] +[40.16874576568616, "o", "o"] +[40.19874576568616, "o", "r"] +[40.22874576568616, "o", "d"] +[40.258745765686164, "o", "e"] +[40.288745765686166, "o", "r"] +[40.31874576568617, "o", "s"] +[40.34874576568617, "o", " "] +[40.37874576568617, "o", "\\"] +[40.40874576568617, "o", "\r\n "] +[40.43874576568617, "o", "C"] +[40.46874576568617, "o", "O"] +[40.498745765686174, "o", "N"] +[40.528745765686175, "o", "N"] +[40.558745765686176, "o", "E"] +[40.58874576568618, "o", "C"] +[40.61874576568618, "o", "T"] +[40.64874576568618, "o", "I"] +[40.67874576568618, "o", "O"] +[40.70874576568618, "o", "N"] +[40.73874576568618, "o", " "] +[40.768745765686184, "o", "'"] +[40.798745765686185, "o", "p"] +[40.828745765686186, "o", "o"] +[40.85874576568619, "o", "s"] +[40.88874576568619, "o", "t"] +[40.91874576568619, "o", "g"] +[40.94874576568619, "o", "r"] +[40.97874576568619, "o", "e"] +[41.00874576568619, "o", "s"] +[41.038745765686194, "o", "q"] +[41.068745765686195, "o", "l"] +[41.098745765686196, "o", ":"] +[41.1287457656862, "o", "/"] +[41.1587457656862, "o", "/"] +[41.1887457656862, "o", "o"] +[41.2187457656862, "o", "r"] +[41.2487457656862, "o", "i"] +[41.2787457656862, "o", "g"] +[41.308745765686204, "o", "i"] +[41.338745765686205, "o", "n"] +[41.36874576568621, "o", "u"] +[41.39874576568621, "o", "s"] +[41.42874576568621, "o", "e"] +[41.45874576568621, "o", "r"] +[41.48874576568621, "o", ":"] +[41.51874576568621, "o", "o"] +[41.54874576568621, "o", "r"] +[41.578745765686214, "o", "i"] +[41.608745765686216, "o", "g"] +[41.63874576568622, "o", "i"] +[41.66874576568622, "o", "n"] +[41.69874576568622, "o", "p"] +[41.72874576568622, "o", "a"] +[41.75874576568622, "o", "s"] +[41.78874576568622, "o", "s"] +[41.818745765686224, "o", "@"] +[41.848745765686225, "o", "o"] +[41.878745765686226, "o", "r"] +[41.90874576568623, "o", "i"] +[41.93874576568623, "o", "g"] +[41.96874576568623, "o", "i"] +[41.99874576568623, "o", "n"] +[42.02874576568623, "o", ":"] +[42.05874576568623, "o", "5"] +[42.088745765686234, "o", "4"] +[42.118745765686235, "o", "3"] +[42.148745765686236, "o", "2"] +[42.17874576568624, "o", "/"] +[42.20874576568624, "o", "o"] +[42.23874576568624, "o", "r"] +[42.26874576568624, "o", "i"] +[42.29874576568624, "o", "g"] +[42.32874576568624, "o", "i"] +[42.358745765686244, "o", "n"] +[42.388745765686245, "o", "u"] +[42.418745765686246, "o", "s"] +[42.44874576568625, "o", "e"] +[42.47874576568625, "o", "r"] +[42.50874576568625, "o", "'"] +[42.53874576568625, "o", " "] +[42.56874576568625, "o", "\\"] +[42.59874576568625, "o", "\r\n "] +[42.628745765686254, "o", "P"] +[42.658745765686255, "o", "U"] +[42.68874576568626, "o", "B"] +[42.71874576568626, "o", "L"] +[42.74874576568626, "o", "I"] +[42.77874576568626, "o", "C"] +[42.80874576568626, "o", "A"] +[42.83874576568626, "o", "T"] +[42.86874576568626, "o", "I"] +[42.898745765686265, "o", "O"] +[42.928745765686266, "o", "N"] +[42.95874576568627, "o", " "] +[42.98874576568627, "o", "p"] +[43.01874576568627, "o", "u"] +[43.04874576568627, "o", "b"] +[43.07874576568627, "o", "_"] +[43.10874576568627, "o", "o"] +[43.138745765686274, "o", "r"] +[43.168745765686275, "o", "d"] +[43.198745765686276, "o", "e"] +[43.22874576568628, "o", "r"] +[43.25874576568628, "o", "s"] +[43.28874576568628, "o", " "] +[43.31874576568628, "o", "\\"] +[43.34874576568628, "o", "\r\n "] +[43.37874576568628, "o", "W"] +[43.408745765686284, "o", "I"] +[43.438745765686285, "o", "T"] +[43.468745765686286, "o", "H"] +[43.49874576568629, "o", " "] +[43.52874576568629, "o", "("] +[43.55874576568629, "o", "c"] +[43.58874576568629, "o", "o"] +[43.61874576568629, "o", "p"] +[43.64874576568629, "o", "y"] +[43.678745765686294, "o", "_"] +[43.708745765686295, "o", "d"] +[43.738745765686296, "o", "a"] +[43.7687457656863, "o", "t"] +[43.7987457656863, "o", "a"] +[43.8287457656863, "o", " "] +[43.8587457656863, "o", "="] +[43.8887457656863, "o", " "] +[43.9187457656863, "o", "t"] +[43.948745765686304, "o", "r"] +[43.978745765686305, "o", "u"] +[44.00874576568631, "o", "e"] +[44.03874576568631, "o", ")"] +[44.06874576568631, "o", ";"] +[44.09874576568631, "o", "\""] +[44.12874576568631, "o", "\r\n"] +[44.15874576568631, "o", "\u001b[0m"] +[44.18874576568631, "o", "\r\n"] +[44.218745765686315, "o", "\u001b[1m"] +[44.248745765686316, "o", "\u001b[36m"] +[44.27874576568632, "o", "\u001b[91m"] +[44.30874576568632, "o", "$"] +[44.33874576568632, "o", " "] +[44.36874576568632, "o", "\u001b[0m"] +[49.39874576568632, "o", "\u001b[H"] +[49.42874576568632, "o", "\u001b[J"] +[49.458745765686324, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the data on the engine"] +[49.488745765686325, "o", "\r\n"] +[49.518745765686326, "o", "$"] +[49.54874576568633, "o", " "] +[49.57874576568633, "o", "s"] +[49.60874576568633, "o", "g"] +[49.63874576568633, "o", "r"] +[49.66874576568633, "o", " "] +[49.69874576568633, "o", "d"] +[49.728745765686334, "o", "i"] +[49.758745765686335, "o", "f"] +[49.788745765686336, "o", "f"] +[49.81874576568634, "o", " "] +[49.84874576568634, "o", "p"] +[49.87874576568634, "o", "r"] +[49.90874576568634, "o", "o"] +[49.93874576568634, "o", "d"] +[49.96874576568634, "o", "u"] +[49.998745765686344, "o", "c"] +[50.028745765686345, "o", "t"] +[50.058745765686346, "o", "i"] +[50.08874576568635, "o", "o"] +[50.11874576568635, "o", "n"] +[50.14874576568635, "o", "_"] +[50.17874576568635, "o", "d"] +[50.20874576568635, "o", "a"] +[50.23874576568635, "o", "t"] +[50.268745765686354, "o", "a"] +[50.298745765686355, "o", "\r\n"] +[50.32874576568636, "o", "$"] +[50.35874576568636, "o", " "] +[50.38874576568636, "o", "s"] +[50.41874576568636, "o", "g"] +[50.44874576568636, "o", "r"] +[50.47874576568636, "o", " "] +[50.50874576568636, "o", "s"] +[50.538745765686365, "o", "q"] +[50.568745765686366, "o", "l"] +[50.59874576568637, "o", " "] +[50.62874576568637, "o", "-"] +[50.65874576568637, "o", "s"] +[50.68874576568637, "o", " "] +[50.71874576568637, "o", "p"] +[50.74874576568637, "o", "r"] +[50.778745765686374, "o", "o"] +[50.808745765686375, "o", "d"] +[50.838745765686376, "o", "u"] +[50.86874576568638, "o", "c"] +[50.89874576568638, "o", "t"] +[50.92874576568638, "o", "i"] +[50.95874576568638, "o", "o"] +[50.98874576568638, "o", "n"] +[51.01874576568638, "o", "_"] +[51.048745765686384, "o", "d"] +[51.078745765686385, "o", "a"] +[51.108745765686386, "o", "t"] +[51.13874576568639, "o", "a"] +[51.16874576568639, "o", " "] +[51.19874576568639, "o", "\""] +[51.22874576568639, "o", "S"] +[51.25874576568639, "o", "E"] +[51.28874576568639, "o", "L"] +[51.318745765686394, "o", "E"] +[51.348745765686395, "o", "C"] +[51.378745765686396, "o", "T"] +[51.4087457656864, "o", " "] +[51.4387457656864, "o", "*"] +[51.4687457656864, "o", " "] +[51.4987457656864, "o", "F"] +[51.5287457656864, "o", "R"] +[51.5587457656864, "o", "O"] +[51.588745765686404, "o", "M"] +[51.618745765686405, "o", " "] +[51.64874576568641, "o", "c"] +[51.67874576568641, "o", "u"] +[51.70874576568641, "o", "s"] +[51.73874576568641, "o", "t"] +[51.76874576568641, "o", "o"] +[51.79874576568641, "o", "m"] +[51.82874576568641, "o", "e"] +[51.858745765686415, "o", "r"] +[51.888745765686416, "o", "s"] +[51.91874576568642, "o", "\""] +[51.94874576568642, "o", "\r\n"] +[51.97874576568642, "o", "\u001b[0m"] +[52.00874576568642, "o", "\r\n"] +[52.37499842643776, "o", "Between 000000000000 and the current working copy: \r\n"] +[52.37501606941262, "o", "customers: table added\r\norders: table added\r\n"] +[52.72901377677956, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[52.75901377677956, "o", "\u001b[1m"] +[52.78901377677956, "o", "\u001b[36m"] +[52.81901377677956, "o", "\u001b[91m"] +[52.849013776779564, "o", "$"] +[52.879013776779566, "o", " "] +[52.90901377677957, "o", "\u001b[0m"] +[57.93901377677957, "o", "\u001b[H"] +[57.96901377677957, "o", "\u001b[J"] +[57.99901377677957, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit the data as an initial image"] +[58.02901377677957, "o", "\r\n"] +[58.05901377677957, "o", "$"] +[58.089013776779574, "o", " "] +[58.119013776779575, "o", "s"] +[58.149013776779576, "o", "g"] +[58.17901377677958, "o", "r"] +[58.20901377677958, "o", " "] +[58.23901377677958, "o", "c"] +[58.26901377677958, "o", "o"] +[58.29901377677958, "o", "m"] +[58.32901377677958, "o", "m"] +[58.359013776779584, "o", "i"] +[58.389013776779585, "o", "t"] +[58.419013776779586, "o", " "] +[58.44901377677959, "o", "p"] +[58.47901377677959, "o", "r"] +[58.50901377677959, "o", "o"] +[58.53901377677959, "o", "d"] +[58.56901377677959, "o", "u"] +[58.59901377677959, "o", "c"] +[58.629013776779594, "o", "t"] +[58.659013776779595, "o", "i"] +[58.689013776779596, "o", "o"] +[58.7190137767796, "o", "n"] +[58.7490137767796, "o", "_"] +[58.7790137767796, "o", "d"] +[58.8090137767796, "o", "a"] +[58.8390137767796, "o", "t"] +[58.8690137767796, "o", "a"] +[58.899013776779604, "o", "\r\n"] +[58.929013776779605, "o", "$"] +[58.95901377677961, "o", " "] +[58.98901377677961, "o", "s"] +[59.01901377677961, "o", "g"] +[59.04901377677961, "o", "r"] +[59.07901377677961, "o", " "] +[59.10901377677961, "o", "t"] +[59.13901377677961, "o", "a"] +[59.169013776779614, "o", "g"] +[59.199013776779616, "o", " "] +[59.22901377677962, "o", "p"] +[59.25901377677962, "o", "r"] +[59.28901377677962, "o", "o"] +[59.31901377677962, "o", "d"] +[59.34901377677962, "o", "u"] +[59.37901377677962, "o", "c"] +[59.409013776779624, "o", "t"] +[59.439013776779625, "o", "i"] +[59.469013776779626, "o", "o"] +[59.49901377677963, "o", "n"] +[59.52901377677963, "o", "_"] +[59.55901377677963, "o", "d"] +[59.58901377677963, "o", "a"] +[59.61901377677963, "o", "t"] +[59.64901377677963, "o", "a"] +[59.679013776779634, "o", " "] +[59.709013776779635, "o", "i"] +[59.739013776779636, "o", "n"] +[59.76901377677964, "o", "i"] +[59.79901377677964, "o", "t"] +[59.82901377677964, "o", "i"] +[59.85901377677964, "o", "a"] +[59.88901377677964, "o", "l"] +[59.91901377677964, "o", "_"] +[59.949013776779644, "o", "s"] +[59.979013776779645, "o", "n"] +[60.009013776779646, "o", "a"] +[60.03901377677965, "o", "p"] +[60.06901377677965, "o", "s"] +[60.09901377677965, "o", "h"] +[60.12901377677965, "o", "o"] +[60.15901377677965, "o", "t"] +[60.18901377677965, "o", "\r\n"] +[60.219013776779654, "o", "$"] +[60.249013776779655, "o", " "] +[60.27901377677966, "o", "s"] +[60.30901377677966, "o", "g"] +[60.33901377677966, "o", "r"] +[60.36901377677966, "o", " "] +[60.39901377677966, "o", "s"] +[60.42901377677966, "o", "h"] +[60.45901377677966, "o", "o"] +[60.489013776779665, "o", "w"] +[60.519013776779666, "o", " "] +[60.54901377677967, "o", "p"] +[60.57901377677967, "o", "r"] +[60.60901377677967, "o", "o"] +[60.63901377677967, "o", "d"] +[60.66901377677967, "o", "u"] +[60.69901377677967, "o", "c"] +[60.729013776779674, "o", "t"] +[60.759013776779675, "o", "i"] +[60.789013776779676, "o", "o"] +[60.81901377677968, "o", "n"] +[60.84901377677968, "o", "_"] +[60.87901377677968, "o", "d"] +[60.90901377677968, "o", "a"] +[60.93901377677968, "o", "t"] +[60.96901377677968, "o", "a"] +[60.999013776779684, "o", ":"] +[61.029013776779685, "o", "i"] +[61.059013776779686, "o", "n"] +[61.08901377677969, "o", "i"] +[61.11901377677969, "o", "t"] +[61.14901377677969, "o", "i"] +[61.17901377677969, "o", "a"] +[61.20901377677969, "o", "l"] +[61.23901377677969, "o", "_"] +[61.269013776779694, "o", "s"] +[61.299013776779695, "o", "n"] +[61.329013776779696, "o", "a"] +[61.3590137767797, "o", "p"] +[61.3890137767797, "o", "s"] +[61.4190137767797, "o", "h"] +[61.4490137767797, "o", "o"] +[61.4790137767797, "o", "t"] +[61.5090137767797, "o", "\r\n"] +[61.539013776779704, "o", "\u001b[0m"] +[61.569013776779705, "o", "\r\n"] +[61.93053263664299, "o", "Committing production_data...\r\n"] +[61.953649702072674, "o", "Processing table customers\r\n"] +[62.953649702072674, "o", "Committed production_data as fd044bb159c5.\r\n"] +[63.32537788391166, "o", "Tagged production_data:fd044bb159c5cad79f0ec3e5680027767fd9ca607d06ac8ef848593c52422c8c with initial_snapshot.\r\n"] +[63.66657322883659, "o", "Image production_data:fd044bb159c5cad79f0ec3e5680027767fd9ca607d06ac8ef848593c52422c8c\r\n"] +[63.66667098045402, "o", "\r\nCreated at 2021-08-18T18:41:56.263675\r\n"] +[63.6678439998632, "o", "Size: 447.00 B\r\n"] +[63.667856636047894, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[63.668477478027874, "o", " customers"] +[63.6685604476934, "o", "\r\n orders\r\n"] +[63.6985604476934, "o", "\u001b[1m"] +[63.728560447693404, "o", "\u001b[36m"] +[63.758560447693405, "o", "\u001b[91m"] +[63.788560447693406, "o", "$"] +[63.81856044769341, "o", " "] +[63.84856044769341, "o", "\u001b[0m"] +[68.87856044769342, "o", "\u001b[H"] +[68.90856044769342, "o", "\u001b[J"] +[68.93856044769342, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make a change on the origin database"] +[68.96856044769342, "o", "\r\n"] +[68.99856044769342, "o", "$"] +[69.02856044769342, "o", " "] +[69.05856044769342, "o", "s"] +[69.08856044769342, "o", "g"] +[69.11856044769343, "o", "r"] +[69.14856044769343, "o", " "] +[69.17856044769343, "o", "s"] +[69.20856044769343, "o", "q"] +[69.23856044769343, "o", "l"] +[69.26856044769343, "o", " "] +[69.29856044769343, "o", "-"] +[69.32856044769343, "o", "r"] +[69.35856044769343, "o", " "] +[69.38856044769344, "o", "o"] +[69.41856044769344, "o", "r"] +[69.44856044769344, "o", "i"] +[69.47856044769344, "o", "g"] +[69.50856044769344, "o", "i"] +[69.53856044769344, "o", "n"] +[69.56856044769344, "o", " "] +[69.59856044769344, "o", "-"] +[69.62856044769345, "o", "s"] +[69.65856044769345, "o", " "] +[69.68856044769345, "o", "p"] +[69.71856044769345, "o", "r"] +[69.74856044769345, "o", "o"] +[69.77856044769345, "o", "d"] +[69.80856044769345, "o", "u"] +[69.83856044769345, "o", "c"] +[69.86856044769345, "o", "t"] +[69.89856044769346, "o", "i"] +[69.92856044769346, "o", "o"] +[69.95856044769346, "o", "n"] +[69.98856044769346, "o", "_"] +[70.01856044769346, "o", "d"] +[70.04856044769346, "o", "a"] +[70.07856044769346, "o", "t"] +[70.10856044769346, "o", "a"] +[70.13856044769346, "o", " "] +[70.16856044769347, "o", "\""] +[70.19856044769347, "o", "U"] +[70.22856044769347, "o", "P"] +[70.25856044769347, "o", "D"] +[70.28856044769347, "o", "A"] +[70.31856044769347, "o", "T"] +[70.34856044769347, "o", "E"] +[70.37856044769347, "o", " "] +[70.40856044769347, "o", "o"] +[70.43856044769348, "o", "r"] +[70.46856044769348, "o", "d"] +[70.49856044769348, "o", "e"] +[70.52856044769348, "o", "r"] +[70.55856044769348, "o", "s"] +[70.58856044769348, "o", " "] +[70.61856044769348, "o", "\\"] +[70.64856044769348, "o", "\r\n "] +[70.67856044769349, "o", "S"] +[70.70856044769349, "o", "E"] +[70.73856044769349, "o", "T"] +[70.76856044769349, "o", " "] +[70.79856044769349, "o", "q"] +[70.82856044769349, "o", "u"] +[70.85856044769349, "o", "a"] +[70.8885604476935, "o", "n"] +[70.9185604476935, "o", "t"] +[70.9485604476935, "o", "i"] +[70.9785604476935, "o", "t"] +[71.0085604476935, "o", "y"] +[71.0385604476935, "o", " "] +[71.0685604476935, "o", "="] +[71.0985604476935, "o", " "] +[71.1285604476935, "o", "q"] +[71.1585604476935, "o", "u"] +[71.1885604476935, "o", "a"] +[71.2185604476935, "o", "n"] +[71.2485604476935, "o", "t"] +[71.27856044769351, "o", "i"] +[71.30856044769351, "o", "t"] +[71.33856044769351, "o", "y"] +[71.36856044769351, "o", " "] +[71.39856044769351, "o", "+"] +[71.42856044769351, "o", " "] +[71.45856044769351, "o", "5"] +[71.48856044769352, "o", " "] +[71.51856044769352, "o", "W"] +[71.54856044769352, "o", "H"] +[71.57856044769352, "o", "E"] +[71.60856044769352, "o", "R"] +[71.63856044769352, "o", "E"] +[71.66856044769352, "o", " "] +[71.69856044769352, "o", "i"] +[71.72856044769352, "o", "d"] +[71.75856044769353, "o", " "] +[71.78856044769353, "o", "="] +[71.81856044769353, "o", " "] +[71.84856044769353, "o", "2"] +[71.87856044769353, "o", ";"] +[71.90856044769353, "o", " "] +[71.93856044769353, "o", "\\"] +[71.96856044769353, "o", "\r\n "] +[71.99856044769354, "o", "D"] +[72.02856044769354, "o", "E"] +[72.05856044769354, "o", "L"] +[72.08856044769354, "o", "E"] +[72.11856044769354, "o", "T"] +[72.14856044769354, "o", "E"] +[72.17856044769354, "o", " "] +[72.20856044769354, "o", "F"] +[72.23856044769354, "o", "R"] +[72.26856044769355, "o", "O"] +[72.29856044769355, "o", "M"] +[72.32856044769355, "o", " "] +[72.35856044769355, "o", "o"] +[72.38856044769355, "o", "r"] +[72.41856044769355, "o", "d"] +[72.44856044769355, "o", "e"] +[72.47856044769355, "o", "r"] +[72.50856044769355, "o", "s"] +[72.53856044769356, "o", " "] +[72.56856044769356, "o", "W"] +[72.59856044769356, "o", "H"] +[72.62856044769356, "o", "E"] +[72.65856044769356, "o", "R"] +[72.68856044769356, "o", "E"] +[72.71856044769356, "o", " "] +[72.74856044769356, "o", "i"] +[72.77856044769356, "o", "d"] +[72.80856044769357, "o", " "] +[72.83856044769357, "o", "="] +[72.86856044769357, "o", " "] +[72.89856044769357, "o", "5"] +[72.92856044769357, "o", ";"] +[72.95856044769357, "o", " "] +[72.98856044769357, "o", "\\"] +[73.01856044769357, "o", "\r\n "] +[73.04856044769357, "o", "I"] +[73.07856044769358, "o", "N"] +[73.10856044769358, "o", "S"] +[73.13856044769358, "o", "E"] +[73.16856044769358, "o", "R"] +[73.19856044769358, "o", "T"] +[73.22856044769358, "o", " "] +[73.25856044769358, "o", "I"] +[73.28856044769358, "o", "N"] +[73.31856044769359, "o", "T"] +[73.34856044769359, "o", "O"] +[73.37856044769359, "o", " "] +[73.40856044769359, "o", "c"] +[73.43856044769359, "o", "u"] +[73.46856044769359, "o", "s"] +[73.49856044769359, "o", "t"] +[73.5285604476936, "o", "o"] +[73.5585604476936, "o", "m"] +[73.5885604476936, "o", "e"] +[73.6185604476936, "o", "r"] +[73.6485604476936, "o", "s"] +[73.6785604476936, "o", " "] +[73.7085604476936, "o", "("] +[73.7385604476936, "o", "n"] +[73.7685604476936, "o", "a"] +[73.7985604476936, "o", "m"] +[73.8285604476936, "o", "e"] +[73.8585604476936, "o", ","] +[73.8885604476936, "o", " "] +[73.91856044769361, "o", "r"] +[73.94856044769361, "o", "e"] +[73.97856044769361, "o", "g"] +[74.00856044769361, "o", "i"] +[74.03856044769361, "o", "s"] +[74.06856044769361, "o", "t"] +[74.09856044769361, "o", "r"] +[74.12856044769362, "o", "a"] +[74.15856044769362, "o", "t"] +[74.18856044769362, "o", "i"] +[74.21856044769362, "o", "o"] +[74.24856044769362, "o", "n"] +[74.27856044769362, "o", "_"] +[74.30856044769362, "o", "t"] +[74.33856044769362, "o", "i"] +[74.36856044769362, "o", "m"] +[74.39856044769363, "o", "e"] +[74.42856044769363, "o", ")"] +[74.45856044769363, "o", " "] +[74.48856044769363, "o", "V"] +[74.51856044769363, "o", "A"] +[74.54856044769363, "o", "L"] +[74.57856044769363, "o", "U"] +[74.60856044769363, "o", "E"] +[74.63856044769364, "o", "S"] +[74.66856044769364, "o", " "] +[74.69856044769364, "o", "\\"] +[74.72856044769364, "o", "\r\n "] +[74.75856044769364, "o", "("] +[74.78856044769364, "o", "'"] +[74.81856044769364, "o", "J"] +[74.84856044769364, "o", "a"] +[74.87856044769364, "o", "c"] +[74.90856044769365, "o", "k"] +[74.93856044769365, "o", " "] +[74.96856044769365, "o", "S"] +[74.99856044769365, "o", "a"] +[75.02856044769365, "o", "m"] +[75.05856044769365, "o", "p"] +[75.08856044769365, "o", "l"] +[75.11856044769365, "o", "e"] +[75.14856044769365, "o", "'"] +[75.17856044769366, "o", ","] +[75.20856044769366, "o", " "] +[75.23856044769366, "o", "'"] +[75.26856044769366, "o", "2"] +[75.29856044769366, "o", "0"] +[75.32856044769366, "o", "2"] +[75.35856044769366, "o", "0"] +[75.38856044769366, "o", "-"] +[75.41856044769366, "o", "0"] +[75.44856044769367, "o", "4"] +[75.47856044769367, "o", "-"] +[75.50856044769367, "o", "2"] +[75.53856044769367, "o", "0"] +[75.56856044769367, "o", " "] +[75.59856044769367, "o", "1"] +[75.62856044769367, "o", "4"] +[75.65856044769367, "o", ":"] +[75.68856044769367, "o", "0"] +[75.71856044769368, "o", "3"] +[75.74856044769368, "o", ":"] +[75.77856044769368, "o", "4"] +[75.80856044769368, "o", "8"] +[75.83856044769368, "o", "'"] +[75.86856044769368, "o", ")"] +[75.89856044769368, "o", ";"] +[75.92856044769368, "o", " "] +[75.95856044769369, "o", "\\"] +[75.98856044769369, "o", "\r\n "] +[76.01856044769369, "o", "I"] +[76.04856044769369, "o", "N"] +[76.07856044769369, "o", "S"] +[76.10856044769369, "o", "E"] +[76.13856044769369, "o", "R"] +[76.1685604476937, "o", "T"] +[76.1985604476937, "o", " "] +[76.2285604476937, "o", "I"] +[76.2585604476937, "o", "N"] +[76.2885604476937, "o", "T"] +[76.3185604476937, "o", "O"] +[76.3485604476937, "o", " "] +[76.3785604476937, "o", "o"] +[76.4085604476937, "o", "r"] +[76.4385604476937, "o", "d"] +[76.4685604476937, "o", "e"] +[76.4985604476937, "o", "r"] +[76.5285604476937, "o", "s"] +[76.55856044769371, "o", " "] +[76.58856044769371, "o", "("] +[76.61856044769371, "o", "c"] +[76.64856044769371, "o", "u"] +[76.67856044769371, "o", "s"] +[76.70856044769371, "o", "t"] +[76.73856044769371, "o", "o"] +[76.76856044769372, "o", "m"] +[76.79856044769372, "o", "e"] +[76.82856044769372, "o", "r"] +[76.85856044769372, "o", "_"] +[76.88856044769372, "o", "i"] +[76.91856044769372, "o", "d"] +[76.94856044769372, "o", ","] +[76.97856044769372, "o", " "] +[77.00856044769372, "o", "q"] +[77.03856044769373, "o", "u"] +[77.06856044769373, "o", "a"] +[77.09856044769373, "o", "n"] +[77.12856044769373, "o", "t"] +[77.15856044769373, "o", "i"] +[77.18856044769373, "o", "t"] +[77.21856044769373, "o", "y"] +[77.24856044769373, "o", ","] +[77.27856044769374, "o", " "] +[77.30856044769374, "o", "i"] +[77.33856044769374, "o", "t"] +[77.36856044769374, "o", "e"] +[77.39856044769374, "o", "m"] +[77.42856044769374, "o", "_"] +[77.45856044769374, "o", "n"] +[77.48856044769374, "o", "a"] +[77.51856044769374, "o", "m"] +[77.54856044769375, "o", "e"] +[77.57856044769375, "o", ","] +[77.60856044769375, "o", " "] +[77.63856044769375, "o", "p"] +[77.66856044769375, "o", "l"] +[77.69856044769375, "o", "a"] +[77.72856044769375, "o", "c"] +[77.75856044769375, "o", "e"] +[77.78856044769375, "o", "d"] +[77.81856044769376, "o", "_"] +[77.84856044769376, "o", "t"] +[77.87856044769376, "o", "i"] +[77.90856044769376, "o", "m"] +[77.93856044769376, "o", "e"] +[77.96856044769376, "o", ")"] +[77.99856044769376, "o", " "] +[78.02856044769376, "o", "V"] +[78.05856044769376, "o", "A"] +[78.08856044769377, "o", "L"] +[78.11856044769377, "o", "U"] +[78.14856044769377, "o", "E"] +[78.17856044769377, "o", "S"] +[78.20856044769377, "o", " "] +[78.23856044769377, "o", "\\"] +[78.26856044769377, "o", "\r\n "] +[78.29856044769377, "o", "("] +[78.32856044769377, "o", "4"] +[78.35856044769378, "o", ","] +[78.38856044769378, "o", " "] +[78.41856044769378, "o", "5"] +[78.44856044769378, "o", ","] +[78.47856044769378, "o", " "] +[78.50856044769378, "o", "'"] +[78.53856044769378, "o", "T"] +[78.56856044769378, "o", "o"] +[78.59856044769379, "o", "i"] +[78.62856044769379, "o", "l"] +[78.65856044769379, "o", "e"] +[78.68856044769379, "o", "t"] +[78.71856044769379, "o", " "] +[78.74856044769379, "o", "R"] +[78.77856044769379, "o", "o"] +[78.8085604476938, "o", "l"] +[78.8385604476938, "o", "l"] +[78.8685604476938, "o", "'"] +[78.8985604476938, "o", ","] +[78.9285604476938, "o", " "] +[78.9585604476938, "o", "'"] +[78.9885604476938, "o", "2"] +[79.0185604476938, "o", "0"] +[79.0485604476938, "o", "2"] +[79.0785604476938, "o", "0"] +[79.1085604476938, "o", "-"] +[79.1385604476938, "o", "0"] +[79.1685604476938, "o", "4"] +[79.19856044769381, "o", "-"] +[79.22856044769381, "o", "2"] +[79.25856044769381, "o", "0"] +[79.28856044769381, "o", " "] +[79.31856044769381, "o", "1"] +[79.34856044769381, "o", "4"] +[79.37856044769381, "o", ":"] +[79.40856044769382, "o", "0"] +[79.43856044769382, "o", "5"] +[79.46856044769382, "o", ":"] +[79.49856044769382, "o", "1"] +[79.52856044769382, "o", "7"] +[79.55856044769382, "o", "'"] +[79.58856044769382, "o", ")"] +[79.61856044769382, "o", ";"] +[79.64856044769382, "o", "\""] +[79.67856044769383, "o", "\r\n"] +[79.70856044769383, "o", "\u001b[0m"] +[79.73856044769383, "o", "\r\n"] +[79.76856044769383, "o", "\u001b[1m"] +[79.79856044769383, "o", "\u001b[36m"] +[79.82856044769383, "o", "\u001b[91m"] +[79.85856044769383, "o", "$"] +[79.88856044769383, "o", " "] +[79.91856044769384, "o", "\u001b[0m"] +[84.94856044769384, "o", "\u001b[H"] +[84.97856044769384, "o", "\u001b[J"] +[85.00856044769384, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The change propagates to the subscriber and gets"] +[85.03856044769384, "o", "\r\n"] +[85.06856044769384, "o", "$ # captured by Splitgraph's change tracking\r\n"] +[85.09856044769384, "o", "$"] +[85.12856044769384, "o", " "] +[85.15856044769384, "o", "s"] +[85.18856044769385, "o", "g"] +[85.21856044769385, "o", "r"] +[85.24856044769385, "o", " "] +[85.27856044769385, "o", "d"] +[85.30856044769385, "o", "i"] +[85.33856044769385, "o", "f"] +[85.36856044769385, "o", "f"] +[85.39856044769385, "o", " "] +[85.42856044769385, "o", "-"] +[85.45856044769386, "o", "v"] +[85.48856044769386, "o", " "] +[85.51856044769386, "o", "p"] +[85.54856044769386, "o", "r"] +[85.57856044769386, "o", "o"] +[85.60856044769386, "o", "d"] +[85.63856044769386, "o", "u"] +[85.66856044769386, "o", "c"] +[85.69856044769386, "o", "t"] +[85.72856044769387, "o", "i"] +[85.75856044769387, "o", "o"] +[85.78856044769387, "o", "n"] +[85.81856044769387, "o", "_"] +[85.84856044769387, "o", "d"] +[85.87856044769387, "o", "a"] +[85.90856044769387, "o", "t"] +[85.93856044769387, "o", "a"] +[85.96856044769387, "o", "\r\n"] +[85.99856044769388, "o", "\u001b[0m"] +[86.02856044769388, "o", "\r\n"] +[86.49572925567728, "o", "Between fd044bb159c5 and the current working copy: \r\n"] +[86.49581627845865, "o", "customers: added 1 row.\r\n"] +[86.49628405571084, "o", "+ (4, 'Jack Sample', datetime.datetime(2020, 4, 20, 14, 3, 48))\r\n"] +[86.49632935524087, "o", "orders: added 5 rows.\r\n+ (1, 1, 15, 'Toilet Roll', datetime.datetime(2020, 3, 15, 12, 0))\r\n+ (3, 2, 5, 'Pasta', datetime.datetime(2020, 3, 21, 17, 32, 11))\r\n"] +[86.49686722755533, "o", "+ (4, 3, 50, 'Surgical Mask', datetime.datetime(2020, 4, 1, 12, 0, 1))\r\n+ (2, 1, 25, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n"] +[86.49687509536844, "o", "+ (6, 4, 5, 'Toilet Roll', datetime.datetime(2020, 4, 20, 14, 5, 17))\r\n"] +[86.52687509536844, "o", "\u001b[1m"] +[86.55687509536844, "o", "\u001b[36m"] +[86.58687509536844, "o", "\u001b[91m"] +[86.61687509536844, "o", "$"] +[86.64687509536844, "o", " "] +[86.67687509536844, "o", "\u001b[0m"] +[91.70687509536845, "o", "\u001b[H"] +[91.73687509536845, "o", "\u001b[J"] +[91.76687509536845, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Committing creates a new image, snapshotting the state."] +[91.79687509536845, "o", "\r\n"] +[91.82687509536845, "o", "$"] +[91.85687509536845, "o", " "] +[91.88687509536845, "o", "s"] +[91.91687509536845, "o", "g"] +[91.94687509536845, "o", "r"] +[91.97687509536846, "o", " "] +[92.00687509536846, "o", "c"] +[92.03687509536846, "o", "o"] +[92.06687509536846, "o", "m"] +[92.09687509536846, "o", "m"] +[92.12687509536846, "o", "i"] +[92.15687509536846, "o", "t"] +[92.18687509536846, "o", " "] +[92.21687509536847, "o", "p"] +[92.24687509536847, "o", "r"] +[92.27687509536847, "o", "o"] +[92.30687509536847, "o", "d"] +[92.33687509536847, "o", "u"] +[92.36687509536847, "o", "c"] +[92.39687509536847, "o", "t"] +[92.42687509536847, "o", "i"] +[92.45687509536847, "o", "o"] +[92.48687509536848, "o", "n"] +[92.51687509536848, "o", "_"] +[92.54687509536848, "o", "d"] +[92.57687509536848, "o", "a"] +[92.60687509536848, "o", "t"] +[92.63687509536848, "o", "a"] +[92.66687509536848, "o", "\r\n"] +[92.69687509536848, "o", "$"] +[92.72687509536848, "o", " "] +[92.75687509536849, "o", "s"] +[92.78687509536849, "o", "g"] +[92.81687509536849, "o", "r"] +[92.84687509536849, "o", " "] +[92.87687509536849, "o", "t"] +[92.90687509536849, "o", "a"] +[92.93687509536849, "o", "g"] +[92.9668750953685, "o", " "] +[92.9968750953685, "o", "p"] +[93.0268750953685, "o", "r"] +[93.0568750953685, "o", "o"] +[93.0868750953685, "o", "d"] +[93.1168750953685, "o", "u"] +[93.1468750953685, "o", "c"] +[93.1768750953685, "o", "t"] +[93.2068750953685, "o", "i"] +[93.2368750953685, "o", "o"] +[93.2668750953685, "o", "n"] +[93.2968750953685, "o", "_"] +[93.32687509536851, "o", "d"] +[93.35687509536851, "o", "a"] +[93.38687509536851, "o", "t"] +[93.41687509536851, "o", "a"] +[93.44687509536851, "o", " "] +[93.47687509536851, "o", "c"] +[93.50687509536851, "o", "u"] +[93.53687509536852, "o", "r"] +[93.56687509536852, "o", "r"] +[93.59687509536852, "o", "e"] +[93.62687509536852, "o", "n"] +[93.65687509536852, "o", "t"] +[93.68687509536852, "o", "_"] +[93.71687509536852, "o", "s"] +[93.74687509536852, "o", "n"] +[93.77687509536852, "o", "a"] +[93.80687509536853, "o", "p"] +[93.83687509536853, "o", "s"] +[93.86687509536853, "o", "h"] +[93.89687509536853, "o", "o"] +[93.92687509536853, "o", "t"] +[93.95687509536853, "o", "\r\n"] +[93.98687509536853, "o", "$"] +[94.01687509536853, "o", " "] +[94.04687509536853, "o", "s"] +[94.07687509536854, "o", "g"] +[94.10687509536854, "o", "r"] +[94.13687509536854, "o", " "] +[94.16687509536854, "o", "s"] +[94.19687509536854, "o", "h"] +[94.22687509536854, "o", "o"] +[94.25687509536854, "o", "w"] +[94.28687509536854, "o", " "] +[94.31687509536854, "o", "p"] +[94.34687509536855, "o", "r"] +[94.37687509536855, "o", "o"] +[94.40687509536855, "o", "d"] +[94.43687509536855, "o", "u"] +[94.46687509536855, "o", "c"] +[94.49687509536855, "o", "t"] +[94.52687509536855, "o", "i"] +[94.55687509536855, "o", "o"] +[94.58687509536855, "o", "n"] +[94.61687509536856, "o", "_"] +[94.64687509536856, "o", "d"] +[94.67687509536856, "o", "a"] +[94.70687509536856, "o", "t"] +[94.73687509536856, "o", "a"] +[94.76687509536856, "o", ":"] +[94.79687509536856, "o", "c"] +[94.82687509536856, "o", "u"] +[94.85687509536857, "o", "r"] +[94.88687509536857, "o", "r"] +[94.91687509536857, "o", "e"] +[94.94687509536857, "o", "n"] +[94.97687509536857, "o", "t"] +[95.00687509536857, "o", "_"] +[95.03687509536857, "o", "s"] +[95.06687509536857, "o", "n"] +[95.09687509536857, "o", "a"] +[95.12687509536858, "o", "p"] +[95.15687509536858, "o", "s"] +[95.18687509536858, "o", "h"] +[95.21687509536858, "o", "o"] +[95.24687509536858, "o", "t"] +[95.27687509536858, "o", "\r\n"] +[95.30687509536858, "o", "\u001b[0m"] +[95.33687509536858, "o", "\r\n"] +[95.69440807342644, "o", "Committing production_data...\r\n"] +[95.72478069305535, "o", "Committed production_data as f764595e8770.\r\n"] +[96.08826626777764, "o", "Tagged production_data:f764595e877081a155b86a1227ce913c6ea04074150cbca8e28304ca5afa410e with current_snapshot.\r\n"] +[96.44110263824578, "o", "Image production_data:f764595e877081a155b86a1227ce913c6ea04074150cbca8e28304ca5afa410e\r\n"] +[96.44123281478997, "o", "\r\nCreated at 2021-08-18T18:42:05.889306\r\n"] +[96.44286884307976, "o", "Size: 447.00 B\r\n"] +[96.4428798103344, "o", "Parent: fd044bb159c5cad79f0ec3e5680027767fd9ca607d06ac8ef848593c52422c8c\r\n\r\nTables:\r\n"] +[96.44427646637078, "o", " customers"] +[96.44431294441338, "o", "\r\n"] +[96.44440449714776, "o", " orders"] +[96.44442023277398, "o", "\r\n"] +[96.47442023277398, "o", "\u001b[1m"] +[96.50442023277398, "o", "\u001b[36m"] +[96.53442023277398, "o", "\u001b[91m"] +[96.56442023277398, "o", "$"] +[96.59442023277398, "o", " "] +[96.62442023277399, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.16/postgrest.cast b/content/casts/versioned/archive/v0.2.16/postgrest.cast new file mode 100644 index 00000000..c19a6c2e --- /dev/null +++ b/content/casts/versioned/archive/v0.2.16/postgrest.cast @@ -0,0 +1,1133 @@ +{"version": 2, "width": 100, "height": 16, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1629312128, "metadata": {"tss": [{"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 0.06}, {"h": "Also create another image so we can switch between them.", "ts": 13.224293851852423}, {"h": "Check out the original version of the dataset and look at the API spec for it.", "ts": 26.05521305084239}, {"h": "Get all rows in the table", "ts": 37.643933620453176}, {"h": "Run a query selecting one row", "ts": 44.30882351875341}, {"h": "Run the query against the new version of the dataset.", "ts": 52.98214968681385}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "s"] +[0.24, "o", "g"] +[0.27, "o", "r"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "i"] +[0.3600000000000001, "o", "n"] +[0.3900000000000001, "o", "i"] +[0.42000000000000015, "o", "t"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "d"] +[0.5100000000000002, "o", "e"] +[0.5400000000000003, "o", "m"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "/"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "\r\n"] +[0.8700000000000006, "o", "$"] +[0.9000000000000006, "o", " "] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "g"] +[0.9900000000000007, "o", "r"] +[1.0200000000000007, "o", " "] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "s"] +[1.1100000000000008, "o", "v"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "i"] +[1.2000000000000008, "o", "m"] +[1.2300000000000009, "o", "p"] +[1.260000000000001, "o", "o"] +[1.290000000000001, "o", "r"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", " "] +[1.380000000000001, "o", "-"] +[1.410000000000001, "o", "f"] +[1.440000000000001, "o", " "] +[1.470000000000001, "o", "."] +[1.500000000000001, "o", "."] +[1.5300000000000011, "o", "/"] +[1.5600000000000012, "o", "i"] +[1.5900000000000012, "o", "m"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "o"] +[1.6800000000000013, "o", "r"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "-"] +[1.7700000000000014, "o", "f"] +[1.8000000000000014, "o", "r"] +[1.8300000000000014, "o", "o"] +[1.8600000000000014, "o", "m"] +[1.8900000000000015, "o", "-"] +[1.9200000000000015, "o", "c"] +[1.9500000000000015, "o", "s"] +[1.9800000000000015, "o", "v"] +[2.0100000000000016, "o", "/"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "d"] +[2.100000000000001, "o", "u"] +[2.130000000000001, "o", "-"] +[2.1600000000000006, "o", "w"] +[2.1900000000000004, "o", "e"] +[2.22, "o", "a"] +[2.25, "o", "t"] +[2.28, "o", "h"] +[2.3099999999999996, "o", "e"] +[2.3399999999999994, "o", "r"] +[2.369999999999999, "o", "-"] +[2.399999999999999, "o", "h"] +[2.429999999999999, "o", "i"] +[2.4599999999999986, "o", "s"] +[2.4899999999999984, "o", "t"] +[2.5199999999999982, "o", "o"] +[2.549999999999998, "o", "r"] +[2.579999999999998, "o", "y"] +[2.6099999999999977, "o", "."] +[2.6399999999999975, "o", "c"] +[2.6699999999999973, "o", "s"] +[2.699999999999997, "o", "v"] +[2.729999999999997, "o", " "] +[2.7599999999999967, "o", "\\"] +[2.7899999999999965, "o", "\r\n "] +[2.8199999999999963, "o", "-"] +[2.849999999999996, "o", "k"] +[2.879999999999996, "o", " "] +[2.9099999999999957, "o", "d"] +[2.9399999999999955, "o", "a"] +[2.9699999999999953, "o", "t"] +[2.999999999999995, "o", "e"] +[3.029999999999995, "o", " "] +[3.0599999999999947, "o", "\\"] +[3.0899999999999945, "o", "\r\n "] +[3.1199999999999943, "o", "-"] +[3.149999999999994, "o", "t"] +[3.179999999999994, "o", " "] +[3.2099999999999937, "o", "d"] +[3.2399999999999936, "o", "a"] +[3.2699999999999934, "o", "t"] +[3.299999999999993, "o", "e"] +[3.329999999999993, "o", " "] +[3.3599999999999928, "o", "t"] +[3.3899999999999926, "o", "i"] +[3.4199999999999924, "o", "m"] +[3.449999999999992, "o", "e"] +[3.479999999999992, "o", "s"] +[3.509999999999992, "o", "t"] +[3.5399999999999916, "o", "a"] +[3.5699999999999914, "o", "m"] +[3.599999999999991, "o", "p"] +[3.629999999999991, "o", " "] +[3.659999999999991, "o", "\\"] +[3.6899999999999906, "o", "\r\n "] +[3.7199999999999904, "o", "-"] +[3.7499999999999902, "o", "-"] +[3.77999999999999, "o", "s"] +[3.80999999999999, "o", "e"] +[3.8399999999999896, "o", "p"] +[3.8699999999999894, "o", "a"] +[3.8999999999999893, "o", "r"] +[3.929999999999989, "o", "a"] +[3.959999999999989, "o", "t"] +[3.9899999999999887, "o", "o"] +[4.019999999999989, "o", "r"] +[4.049999999999989, "o", " "] +[4.079999999999989, "o", "\""] +[4.10999999999999, "o", ";"] +[4.13999999999999, "o", "\""] +[4.16999999999999, "o", " "] +[4.19999999999999, "o", "\\"] +[4.229999999999991, "o", "\r\n "] +[4.259999999999991, "o", "d"] +[4.289999999999991, "o", "e"] +[4.319999999999991, "o", "m"] +[4.349999999999992, "o", "o"] +[4.379999999999992, "o", "/"] +[4.409999999999992, "o", "w"] +[4.439999999999992, "o", "e"] +[4.469999999999993, "o", "a"] +[4.499999999999993, "o", "t"] +[4.529999999999993, "o", "h"] +[4.559999999999993, "o", "e"] +[4.589999999999994, "o", "r"] +[4.619999999999994, "o", " "] +[4.649999999999994, "o", "r"] +[4.679999999999994, "o", "d"] +[4.709999999999995, "o", "u"] +[4.739999999999995, "o", "\r\n"] +[4.769999999999995, "o", "$"] +[4.799999999999995, "o", " "] +[4.829999999999996, "o", "s"] +[4.859999999999996, "o", "g"] +[4.889999999999996, "o", "r"] +[4.919999999999996, "o", " "] +[4.949999999999997, "o", "c"] +[4.979999999999997, "o", "o"] +[5.009999999999997, "o", "m"] +[5.039999999999997, "o", "m"] +[5.069999999999998, "o", "i"] +[5.099999999999998, "o", "t"] +[5.129999999999998, "o", " "] +[5.159999999999998, "o", "d"] +[5.189999999999999, "o", "e"] +[5.219999999999999, "o", "m"] +[5.249999999999999, "o", "o"] +[5.279999999999999, "o", "/"] +[5.31, "o", "w"] +[5.34, "o", "e"] +[5.37, "o", "a"] +[5.4, "o", "t"] +[5.430000000000001, "o", "h"] +[5.460000000000001, "o", "e"] +[5.490000000000001, "o", "r"] +[5.520000000000001, "o", "\r\n"] +[5.550000000000002, "o", "$"] +[5.580000000000002, "o", " "] +[5.610000000000002, "o", "s"] +[5.640000000000002, "o", "g"] +[5.670000000000003, "o", "r"] +[5.700000000000003, "o", " "] +[5.730000000000003, "o", "t"] +[5.760000000000003, "o", "a"] +[5.790000000000004, "o", "g"] +[5.820000000000004, "o", " "] +[5.850000000000004, "o", "d"] +[5.880000000000004, "o", "e"] +[5.910000000000005, "o", "m"] +[5.940000000000005, "o", "o"] +[5.970000000000005, "o", "/"] +[6.000000000000005, "o", "w"] +[6.030000000000006, "o", "e"] +[6.060000000000006, "o", "a"] +[6.090000000000006, "o", "t"] +[6.120000000000006, "o", "h"] +[6.150000000000007, "o", "e"] +[6.180000000000007, "o", "r"] +[6.210000000000007, "o", " "] +[6.240000000000007, "o", "i"] +[6.270000000000008, "o", "n"] +[6.300000000000008, "o", "i"] +[6.330000000000008, "o", "t"] +[6.360000000000008, "o", "i"] +[6.390000000000009, "o", "a"] +[6.420000000000009, "o", "l"] +[6.450000000000009, "o", "_"] +[6.480000000000009, "o", "d"] +[6.51000000000001, "o", "a"] +[6.54000000000001, "o", "t"] +[6.57000000000001, "o", "a"] +[6.60000000000001, "o", "\r\n"] +[6.6300000000000106, "o", "\u001b[0m"] +[6.660000000000011, "o", "\r\n"] +[7.066917095184337, "o", "Initialized empty repository demo/weather\r\n"] +[7.411473903656017, "o", "Committing demo/weather...\r\n"] +[7.429273042678844, "o", "Processing table rdu\r\n"] +[7.6157745456695665, "o", "Committed demo/weather as 0ecc455fd156.\r\n"] +[7.984293851852428, "o", "Tagged demo/weather:0ecc455fd156efa71b21f0fc8b37fa4ff35fc6604b57e3b32468533f6a74e41c with initial_data.\r\n"] +[8.014293851852427, "o", "\u001b[1m"] +[8.044293851852427, "o", "\u001b[36m"] +[8.074293851852426, "o", "\u001b[91m"] +[8.104293851852425, "o", "$"] +[8.134293851852425, "o", " "] +[8.164293851852424, "o", "\u001b[0m"] +[13.194293851852423, "o", "\u001b[H"] +[13.224293851852423, "o", "\u001b[J"] +[13.254293851852422, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Also create another image so we can switch between them."] +[13.284293851852421, "o", "\r\n"] +[13.31429385185242, "o", "$"] +[13.34429385185242, "o", " "] +[13.37429385185242, "o", "s"] +[13.404293851852419, "o", "g"] +[13.434293851852418, "o", "r"] +[13.464293851852418, "o", " "] +[13.494293851852417, "o", "s"] +[13.524293851852416, "o", "q"] +[13.554293851852416, "o", "l"] +[13.584293851852415, "o", " "] +[13.614293851852414, "o", "-"] +[13.644293851852414, "o", "s"] +[13.674293851852413, "o", " "] +[13.704293851852412, "o", "d"] +[13.734293851852412, "o", "e"] +[13.764293851852411, "o", "m"] +[13.79429385185241, "o", "o"] +[13.82429385185241, "o", "/"] +[13.85429385185241, "o", "w"] +[13.884293851852409, "o", "e"] +[13.914293851852408, "o", "a"] +[13.944293851852407, "o", "t"] +[13.974293851852407, "o", "h"] +[14.004293851852406, "o", "e"] +[14.034293851852405, "o", "r"] +[14.064293851852405, "o", " "] +[14.094293851852404, "o", "\""] +[14.124293851852403, "o", "U"] +[14.154293851852403, "o", "P"] +[14.184293851852402, "o", "D"] +[14.214293851852402, "o", "A"] +[14.244293851852401, "o", "T"] +[14.2742938518524, "o", "E"] +[14.3042938518524, "o", " "] +[14.334293851852399, "o", "r"] +[14.364293851852398, "o", "d"] +[14.394293851852398, "o", "u"] +[14.424293851852397, "o", " "] +[14.454293851852396, "o", "S"] +[14.484293851852396, "o", "E"] +[14.514293851852395, "o", "T"] +[14.544293851852395, "o", " "] +[14.574293851852394, "o", "p"] +[14.604293851852393, "o", "r"] +[14.634293851852393, "o", "e"] +[14.664293851852392, "o", "c"] +[14.694293851852391, "o", "i"] +[14.72429385185239, "o", "p"] +[14.75429385185239, "o", "i"] +[14.78429385185239, "o", "t"] +[14.814293851852389, "o", "a"] +[14.844293851852388, "o", "t"] +[14.874293851852388, "o", "i"] +[14.904293851852387, "o", "o"] +[14.934293851852386, "o", "n"] +[14.964293851852386, "o", " "] +[14.994293851852385, "o", "="] +[15.024293851852384, "o", " "] +[15.054293851852384, "o", "p"] +[15.084293851852383, "o", "r"] +[15.114293851852382, "o", "e"] +[15.144293851852382, "o", "c"] +[15.174293851852381, "o", "i"] +[15.20429385185238, "o", "p"] +[15.23429385185238, "o", "i"] +[15.26429385185238, "o", "t"] +[15.294293851852379, "o", "a"] +[15.324293851852378, "o", "t"] +[15.354293851852377, "o", "i"] +[15.384293851852377, "o", "o"] +[15.414293851852376, "o", "n"] +[15.444293851852375, "o", " "] +[15.474293851852375, "o", "*"] +[15.504293851852374, "o", " "] +[15.534293851852373, "o", "1"] +[15.564293851852373, "o", "."] +[15.594293851852372, "o", "2"] +[15.624293851852372, "o", " "] +[15.65429385185237, "o", "W"] +[15.68429385185237, "o", "H"] +[15.71429385185237, "o", "E"] +[15.744293851852369, "o", "R"] +[15.774293851852368, "o", "E"] +[15.804293851852368, "o", " "] +[15.834293851852367, "o", "E"] +[15.864293851852366, "o", "X"] +[15.894293851852366, "o", "T"] +[15.924293851852365, "o", "R"] +[15.954293851852364, "o", "A"] +[15.984293851852364, "o", "C"] +[16.014293851852365, "o", "T"] +[16.044293851852366, "o", " "] +[16.074293851852367, "o", "("] +[16.10429385185237, "o", "y"] +[16.13429385185237, "o", "e"] +[16.16429385185237, "o", "a"] +[16.194293851852372, "o", "r"] +[16.224293851852373, "o", " "] +[16.254293851852374, "o", "F"] +[16.284293851852375, "o", "R"] +[16.314293851852376, "o", "O"] +[16.344293851852377, "o", "M"] +[16.37429385185238, "o", " "] +[16.40429385185238, "o", "d"] +[16.43429385185238, "o", "a"] +[16.464293851852382, "o", "t"] +[16.494293851852383, "o", "e"] +[16.524293851852384, "o", ")"] +[16.554293851852385, "o", " "] +[16.584293851852387, "o", "="] +[16.614293851852388, "o", " "] +[16.64429385185239, "o", "2"] +[16.67429385185239, "o", "0"] +[16.70429385185239, "o", "1"] +[16.734293851852392, "o", "2"] +[16.764293851852393, "o", "\""] +[16.794293851852395, "o", "\r\n"] +[16.824293851852396, "o", "$"] +[16.854293851852397, "o", " "] +[16.884293851852398, "o", "s"] +[16.9142938518524, "o", "g"] +[16.9442938518524, "o", "r"] +[16.9742938518524, "o", " "] +[17.004293851852402, "o", "c"] +[17.034293851852404, "o", "o"] +[17.064293851852405, "o", "m"] +[17.094293851852406, "o", "m"] +[17.124293851852407, "o", "i"] +[17.154293851852408, "o", "t"] +[17.18429385185241, "o", " "] +[17.21429385185241, "o", "-"] +[17.24429385185241, "o", "m"] +[17.274293851852413, "o", " "] +[17.304293851852414, "o", "\""] +[17.334293851852415, "o", "R"] +[17.364293851852416, "o", "e"] +[17.394293851852417, "o", "v"] +[17.42429385185242, "o", "i"] +[17.45429385185242, "o", "s"] +[17.48429385185242, "o", "i"] +[17.514293851852422, "o", "o"] +[17.544293851852423, "o", "n"] +[17.574293851852424, "o", " "] +[17.604293851852425, "o", "t"] +[17.634293851852426, "o", "o"] +[17.664293851852428, "o", " "] +[17.69429385185243, "o", "t"] +[17.72429385185243, "o", "h"] +[17.75429385185243, "o", "e"] +[17.784293851852432, "o", " "] +[17.814293851852433, "o", "2"] +[17.844293851852434, "o", "0"] +[17.874293851852435, "o", "1"] +[17.904293851852437, "o", "2"] +[17.934293851852438, "o", " "] +[17.96429385185244, "o", "r"] +[17.99429385185244, "o", "a"] +[18.02429385185244, "o", "i"] +[18.054293851852442, "o", "n"] +[18.084293851852443, "o", "f"] +[18.114293851852445, "o", "a"] +[18.144293851852446, "o", "l"] +[18.174293851852447, "o", "l"] +[18.204293851852448, "o", " "] +[18.23429385185245, "o", "d"] +[18.26429385185245, "o", "a"] +[18.29429385185245, "o", "t"] +[18.324293851852453, "o", "a"] +[18.354293851852454, "o", "\""] +[18.384293851852455, "o", " "] +[18.414293851852456, "o", "d"] +[18.444293851852457, "o", "e"] +[18.474293851852458, "o", "m"] +[18.50429385185246, "o", "o"] +[18.53429385185246, "o", "/"] +[18.56429385185246, "o", "w"] +[18.594293851852463, "o", "e"] +[18.624293851852464, "o", "a"] +[18.654293851852465, "o", "t"] +[18.684293851852466, "o", "h"] +[18.714293851852467, "o", "e"] +[18.74429385185247, "o", "r"] +[18.77429385185247, "o", "\r\n"] +[18.80429385185247, "o", "$"] +[18.834293851852472, "o", " "] +[18.864293851852473, "o", "s"] +[18.894293851852474, "o", "g"] +[18.924293851852475, "o", "r"] +[18.954293851852476, "o", " "] +[18.984293851852478, "o", "t"] +[19.01429385185248, "o", "a"] +[19.04429385185248, "o", "g"] +[19.07429385185248, "o", " "] +[19.104293851852482, "o", "d"] +[19.134293851852483, "o", "e"] +[19.164293851852484, "o", "m"] +[19.194293851852485, "o", "o"] +[19.224293851852487, "o", "/"] +[19.254293851852488, "o", "w"] +[19.28429385185249, "o", "e"] +[19.31429385185249, "o", "a"] +[19.34429385185249, "o", "t"] +[19.374293851852492, "o", "h"] +[19.404293851852493, "o", "e"] +[19.434293851852495, "o", "r"] +[19.464293851852496, "o", " "] +[19.494293851852497, "o", "r"] +[19.524293851852498, "o", "e"] +[19.5542938518525, "o", "v"] +[19.5842938518525, "o", "i"] +[19.6142938518525, "o", "s"] +[19.644293851852503, "o", "e"] +[19.674293851852504, "o", "d"] +[19.704293851852505, "o", "_"] +[19.734293851852506, "o", "d"] +[19.764293851852507, "o", "a"] +[19.79429385185251, "o", "t"] +[19.82429385185251, "o", "a"] +[19.85429385185251, "o", "\r\n"] +[19.88429385185251, "o", "\u001b[0m"] +[19.914293851852513, "o", "\r\n"] +[20.27567276000986, "o", "Committing demo/weather...\r\n"] +[20.304558124542332, "o", "Storing and indexing table rdu\r\n"] +[20.460693206787205, "o", "Committed demo/weather as 6852e8cf09d0.\r\n"] +[20.81521305084238, "o", "Tagged demo/weather:6852e8cf09d0b19768e9c0af45df54a7cd660d42a229fb0808c0525b4f6537e8 with revised_data.\r\n"] +[20.845213050842382, "o", "\u001b[1m"] +[20.875213050842383, "o", "\u001b[36m"] +[20.905213050842384, "o", "\u001b[91m"] +[20.935213050842385, "o", "$"] +[20.965213050842387, "o", " "] +[20.995213050842388, "o", "\u001b[0m"] +[26.02521305084239, "o", "\u001b[H"] +[26.05521305084239, "o", "\u001b[J"] +[26.08521305084239, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the original version of the dataset and look at the API spec for it."] +[26.115213050842392, "o", "\r\n"] +[26.145213050842393, "o", "$ # For this, we need to restart PostgREST so that it picks up the new schema.\r\n"] +[26.175213050842395, "o", "$"] +[26.205213050842396, "o", " "] +[26.235213050842397, "o", "d"] +[26.265213050842398, "o", "o"] +[26.2952130508424, "o", "c"] +[26.3252130508424, "o", "k"] +[26.3552130508424, "o", "e"] +[26.385213050842403, "o", "r"] +[26.415213050842404, "o", "-"] +[26.445213050842405, "o", "c"] +[26.475213050842406, "o", "o"] +[26.505213050842407, "o", "m"] +[26.535213050842408, "o", "p"] +[26.56521305084241, "o", "o"] +[26.59521305084241, "o", "s"] +[26.62521305084241, "o", "e"] +[26.655213050842413, "o", " "] +[26.685213050842414, "o", "-"] +[26.715213050842415, "o", "-"] +[26.745213050842416, "o", "p"] +[26.775213050842417, "o", "r"] +[26.80521305084242, "o", "o"] +[26.83521305084242, "o", "j"] +[26.86521305084242, "o", "e"] +[26.895213050842422, "o", "c"] +[26.925213050842423, "o", "t"] +[26.955213050842424, "o", "-"] +[26.985213050842425, "o", "n"] +[27.015213050842426, "o", "a"] +[27.045213050842428, "o", "m"] +[27.07521305084243, "o", "e"] +[27.10521305084243, "o", " "] +[27.13521305084243, "o", "s"] +[27.165213050842432, "o", "p"] +[27.195213050842433, "o", "l"] +[27.225213050842434, "o", "i"] +[27.255213050842436, "o", "t"] +[27.285213050842437, "o", "g"] +[27.315213050842438, "o", "r"] +[27.34521305084244, "o", "a"] +[27.37521305084244, "o", "p"] +[27.40521305084244, "o", "h"] +[27.435213050842442, "o", "_"] +[27.465213050842443, "o", "e"] +[27.495213050842445, "o", "x"] +[27.525213050842446, "o", "a"] +[27.555213050842447, "o", "m"] +[27.585213050842448, "o", "p"] +[27.61521305084245, "o", "l"] +[27.64521305084245, "o", "e"] +[27.67521305084245, "o", " "] +[27.705213050842453, "o", "r"] +[27.735213050842454, "o", "e"] +[27.765213050842455, "o", "s"] +[27.795213050842456, "o", "t"] +[27.825213050842457, "o", "a"] +[27.85521305084246, "o", "r"] +[27.88521305084246, "o", "t"] +[27.91521305084246, "o", " "] +[27.94521305084246, "o", "p"] +[27.975213050842463, "o", "o"] +[28.005213050842464, "o", "s"] +[28.035213050842465, "o", "t"] +[28.065213050842466, "o", "g"] +[28.095213050842467, "o", "r"] +[28.12521305084247, "o", "e"] +[28.15521305084247, "o", "s"] +[28.18521305084247, "o", "t"] +[28.215213050842472, "o", "\r\n"] +[28.245213050842473, "o", "$"] +[28.275213050842474, "o", " "] +[28.305213050842475, "o", "s"] +[28.335213050842476, "o", "g"] +[28.365213050842478, "o", "r"] +[28.39521305084248, "o", " "] +[28.42521305084248, "o", "c"] +[28.45521305084248, "o", "h"] +[28.485213050842482, "o", "e"] +[28.515213050842483, "o", "c"] +[28.545213050842484, "o", "k"] +[28.575213050842486, "o", "o"] +[28.605213050842487, "o", "u"] +[28.635213050842488, "o", "t"] +[28.66521305084249, "o", " "] +[28.69521305084249, "o", "d"] +[28.72521305084249, "o", "e"] +[28.755213050842492, "o", "m"] +[28.785213050842493, "o", "o"] +[28.815213050842495, "o", "/"] +[28.845213050842496, "o", "w"] +[28.875213050842497, "o", "e"] +[28.905213050842498, "o", "a"] +[28.9352130508425, "o", "t"] +[28.9652130508425, "o", "h"] +[28.9952130508425, "o", "e"] +[29.025213050842503, "o", "r"] +[29.055213050842504, "o", ":"] +[29.085213050842505, "o", "i"] +[29.115213050842506, "o", "n"] +[29.145213050842507, "o", "i"] +[29.17521305084251, "o", "t"] +[29.20521305084251, "o", "i"] +[29.23521305084251, "o", "a"] +[29.26521305084251, "o", "l"] +[29.295213050842513, "o", "_"] +[29.325213050842514, "o", "d"] +[29.355213050842515, "o", "a"] +[29.385213050842516, "o", "t"] +[29.415213050842517, "o", "a"] +[29.44521305084252, "o", "\r\n"] +[29.47521305084252, "o", "$"] +[29.50521305084252, "o", " "] +[29.535213050842522, "o", "c"] +[29.565213050842523, "o", "u"] +[29.595213050842524, "o", "r"] +[29.625213050842525, "o", "l"] +[29.655213050842526, "o", " "] +[29.685213050842528, "o", "h"] +[29.71521305084253, "o", "t"] +[29.74521305084253, "o", "t"] +[29.77521305084253, "o", "p"] +[29.805213050842532, "o", ":"] +[29.835213050842533, "o", "/"] +[29.865213050842534, "o", "/"] +[29.895213050842536, "o", "l"] +[29.925213050842537, "o", "o"] +[29.955213050842538, "o", "c"] +[29.98521305084254, "o", "a"] +[30.01521305084254, "o", "l"] +[30.04521305084254, "o", "h"] +[30.075213050842542, "o", "o"] +[30.105213050842544, "o", "s"] +[30.135213050842545, "o", "t"] +[30.165213050842546, "o", ":"] +[30.195213050842547, "o", "8"] +[30.225213050842548, "o", "0"] +[30.25521305084255, "o", "8"] +[30.28521305084255, "o", "0"] +[30.31521305084255, "o", "/"] +[30.345213050842553, "o", " "] +[30.375213050842554, "o", "|"] +[30.405213050842555, "o", " "] +[30.435213050842556, "o", "c"] +[30.465213050842557, "o", "u"] +[30.49521305084256, "o", "t"] +[30.52521305084256, "o", " "] +[30.55521305084256, "o", "-"] +[30.58521305084256, "o", "c"] +[30.615213050842563, "o", " "] +[30.645213050842564, "o", "-"] +[30.675213050842565, "o", "7"] +[30.705213050842566, "o", "9"] +[30.735213050842567, "o", "3"] +[30.76521305084257, "o", "\r\n"] +[30.79521305084257, "o", "\u001b[0m"] +[30.82521305084257, "o", "\r\n"] +[31.380700445175457, "o", "Restarting splitgraph_example_postgrest_1 ... \r\r\n"] +[31.921310520172405, "o", "\u001b[1A\u001b[2K\r"] +[31.92138562202482, "o", "Restarting splitgraph_example_postgrest_1 ... \u001b[32mdone\u001b[0m\r"] +[31.92181096076994, "o", "\u001b[1B"] +[32.374055719375896, "o", "Checked out demo/weather:0ecc455fd156.\r\n"] +[32.38180360794096, "o", " "] +[32.38185343742399, "o", " "] +[32.38188061714201, "o", "%"] +[32.38190708160429, "o", " "] +[32.381931877136516, "o", "T"] +[32.38195548057585, "o", "o"] +[32.38197908401518, "o", "t"] +[32.38200244903593, "o", "a"] +[32.38205895423918, "o", "l % Recei"] +[32.38206586837797, "o", "ved % Xferd "] +[32.38206968307524, "o", " Av"] +[32.382072782516765, "o", "er"] +[32.38207612037687, "o", "ag"] +[32.3820792198184, "o", "e"] +[32.38208255767851, "o", " Sp"] +[32.38208565712004, "o", "ee"] +[32.382088756561565, "o", "d "] +[32.382091617584514, "o", " "] +[32.38209471702604, "o", " T"] +[32.38209781646757, "o", "im"] +[32.3821009159091, "o", "e "] +[32.38210401535063, "o", " "] +[32.382107353210735, "o", " "] +[32.38211045265226, "o", "Ti"] +[32.38211331367521, "o", "me"] +[32.38211641311674, "o", " "] +[32.38211998939543, "o", " "] +[32.382123088836956, "o", " "] +[32.38212642669706, "o", "Ti"] +[32.38212952613859, "o", "m"] +[32.38213262558012, "o", "e "] +[32.38213572502165, "o", "C"] +[32.382139539718914, "o", "ur"] +[32.38214263916044, "o", "re"] +[32.38214573860197, "o", "nt"] +[32.38215026855497, "o", "\r\n "] +[32.38215360641508, "o", " "] +[32.38215646743803, "o", " "] +[32.38215956687956, "o", " "] +[32.382162666321086, "o", " "] +[32.382165765762615, "o", " "] +[32.38216886520414, "o", " "] +[32.38217196464567, "o", " "] +[32.38217554092436, "o", " "] +[32.382178878784465, "o", " "] +[32.382181978225994, "o", " "] +[32.38218579292326, "o", " "] +[32.38218913078337, "o", " "] +[32.382192230224895, "o", " "] +[32.38219532966642, "o", " "] +[32.38219866752653, "o", " "] +[32.38220391273527, "o", " "] +[32.38220725059538, "o", " D"] +[32.38221035003691, "o", "lo"] +[32.382216072082805, "o", "ad Upload Total Spent "] +[32.38222012519865, "o", " Le"] +[32.38222346305876, "o", "ft"] +[32.382226562500286, "o", " "] +[32.382229661941814, "o", "Sp"] +[32.38223276138334, "o", "e"] +[32.38223586082487, "o", "ed"] +[32.382240152359294, "o", "\r\n"] +[32.38224611282377, "o", "\r "] +[32.38224945068388, "o", " 0 "] +[32.38225255012541, "o", " "] +[32.38225541114836, "o", " "] +[32.382258749008464, "o", " 0"] +[32.38226184844999, "o", " "] +[32.38226494789152, "o", " "] +[32.38226876258879, "o", "0 "] +[32.382271862030315, "o", " "] +[32.38227496147184, "o", " "] +[32.38227806091337, "o", " 0"] +[32.38228092193632, "o", " "] +[32.38228425979643, "o", " "] +[32.38228735923796, "o", " 0"] +[32.38229093551664, "o", " "] +[32.38229427337675, "o", " "] +[32.38230977058439, "o", " "] +[32.38231644630461, "o", "0 "] +[32.38232002258329, "o", " "] +[32.38232359886198, "o", " "] +[32.38232717514067, "o", "0"] +[32.382330513000774, "o", " "] +[32.38233385086088, "o", " "] +[32.38233766555815, "o", " "] +[32.38234171867399, "o", "0"] +[32.38234744071989, "o", " -"] +[32.382351732254314, "o", "-:"] +[32.382355308533, "o", "--"] +[32.38235888481169, "o", ":-"] +[32.38236246109037, "o", "- "] +[32.38236603736906, "o", "--"] +[32.38236937522917, "o", ":"] +[32.382372951507854, "o", "--:"] +[32.38237652778654, "o", "-"] +[32.38238177299528, "o", "- "] +[32.38238677978544, "o", "--"] +[32.38239011764555, "o", ":--"] +[32.38239345550566, "o", ":"] +[32.38239703178434, "o", "--"] +[32.38240036964445, "o", " "] +[32.38240394592314, "o", " "] +[32.382407283783245, "o", " "] +[32.38241062164335, "o", "0"] +[32.4029909133914, "o", "\r100 12000 0"] +[32.40331516265898, "o", " 12000 0 0 558k 0 --:--:-- --:--:-- --:--:-- 558k\r\n"] +[32.40392003059416, "o", "{\"swagger\":\"2.0\",\"info\":{\"version\":\"8.0.0\",\"title\":\"PostgREST API\",\"description\":\"This is a dynamic API generated by PostgREST\"},\"host\":\"localhost:8080\",\"basePath\":\"/\",\"schemes\":[\"http\"],\"consumes\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"produces\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"paths\":{\"/\":{\"get\":{\"tags\":[\"Introspection\"],\"summary\":\"OpenAPI description (this document)\",\"produces\":[\"application/openapi+json\",\"application/json\"],\"responses\":{\""] +[32.40393362045317, "o", "200\":{\"description\":\"OK\"}}}},\"/rdu\":{\"get\":{\"tags\":[\"rdu\"],\"parameters\":[{\"$ref\":\"#/parameters/rowFilter.rdu.date\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemin\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemax\"},{\"$ref\":\"#/parameters/rowFilter.rdu.precipitation\"},{\"$ref\"\r\n"] +[32.43393362045317, "o", "\u001b[1m"] +[32.46393362045317, "o", "\u001b[36m"] +[32.49393362045317, "o", "\u001b[91m"] +[32.52393362045317, "o", "$"] +[32.55393362045317, "o", " "] +[32.58393362045317, "o", "\u001b[0m"] +[37.613933620453174, "o", "\u001b[H"] +[37.643933620453176, "o", "\u001b[J"] +[37.67393362045318, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get all rows in the table"] +[37.70393362045318, "o", "\r\n"] +[37.73393362045318, "o", "$"] +[37.76393362045318, "o", " "] +[37.79393362045318, "o", "c"] +[37.82393362045318, "o", "u"] +[37.85393362045318, "o", "r"] +[37.883933620453185, "o", "l"] +[37.913933620453186, "o", " "] +[37.94393362045319, "o", "h"] +[37.97393362045319, "o", "t"] +[38.00393362045319, "o", "t"] +[38.03393362045319, "o", "p"] +[38.06393362045319, "o", ":"] +[38.09393362045319, "o", "/"] +[38.123933620453194, "o", "/"] +[38.153933620453195, "o", "l"] +[38.183933620453196, "o", "o"] +[38.2139336204532, "o", "c"] +[38.2439336204532, "o", "a"] +[38.2739336204532, "o", "l"] +[38.3039336204532, "o", "h"] +[38.3339336204532, "o", "o"] +[38.3639336204532, "o", "s"] +[38.393933620453204, "o", "t"] +[38.423933620453205, "o", ":"] +[38.453933620453206, "o", "8"] +[38.48393362045321, "o", "0"] +[38.51393362045321, "o", "8"] +[38.54393362045321, "o", "0"] +[38.57393362045321, "o", "/"] +[38.60393362045321, "o", "r"] +[38.63393362045321, "o", "d"] +[38.663933620453214, "o", "u"] +[38.693933620453215, "o", " "] +[38.72393362045322, "o", "|"] +[38.75393362045322, "o", " "] +[38.78393362045322, "o", "w"] +[38.81393362045322, "o", "c"] +[38.84393362045322, "o", " "] +[38.87393362045322, "o", "-"] +[38.90393362045322, "o", "l"] +[38.933933620453224, "o", "\r\n"] +[38.963933620453226, "o", "\u001b[0m"] +[38.99393362045323, "o", "\r\n"] +[39.001492204666484, "o", " "] +[39.00151890754734, "o", " "] +[39.00154131889378, "o", "%"] +[39.001560869217265, "o", " "] +[39.00157803535496, "o", "T"] +[39.001595201492655, "o", "o"] +[39.00161165237461, "o", "t"] +[39.00162810325657, "o", "a"] +[39.00164479255711, "o", "l"] +[39.00166124343907, "o", " "] +[39.001677694321025, "o", " "] +[39.0016939067844, "o", " "] +[39.001717510223735, "o", " "] +[39.001735630035746, "o", "%"] +[39.00176209449803, "o", " "] +[39.00177997589146, "o", "R"] +[39.001796903610575, "o", "e"] +[39.00181359291111, "o", "c"] +[39.00183004379307, "o", "e"] +[39.00184649467503, "o", "i"] +[39.001863183975566, "o", "v"] +[39.001879396438945, "o", "e"] +[39.00189560890232, "o", "d"] +[39.0019118213657, "o", " "] +[39.00192398071324, "o", "%"] +[39.002460422516215, "o", " Xferd Average Speed Time Time Time Current\r\n Dload Upload Total Spent Left Speed\r\n"] +[39.00247210502659, "o", "\r 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0"] +[39.06787365913426, "o", "\r100 2292k"] +[39.06788534164463, "o", " 0 2292k 0 0 33.9M 0 --:--:-- --:--:-- --:--:-- 33.9M\r\n"] +[39.0688235187534, "o", "4632\r\n"] +[39.0988235187534, "o", "\u001b[1m"] +[39.1288235187534, "o", "\u001b[36m"] +[39.1588235187534, "o", "\u001b[91m"] +[39.1888235187534, "o", "$"] +[39.2188235187534, "o", " "] +[39.248823518753404, "o", "\u001b[0m"] +[44.278823518753406, "o", "\u001b[H"] +[44.30882351875341, "o", "\u001b[J"] +[44.33882351875341, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a query selecting one row"] +[44.36882351875341, "o", "\r\n"] +[44.39882351875341, "o", "$"] +[44.42882351875341, "o", " "] +[44.45882351875341, "o", "c"] +[44.488823518753414, "o", "u"] +[44.518823518753415, "o", "r"] +[44.548823518753416, "o", "l"] +[44.57882351875342, "o", " "] +[44.60882351875342, "o", "\""] +[44.63882351875342, "o", "h"] +[44.66882351875342, "o", "t"] +[44.69882351875342, "o", "t"] +[44.72882351875342, "o", "p"] +[44.758823518753424, "o", ":"] +[44.788823518753425, "o", "/"] +[44.818823518753426, "o", "/"] +[44.84882351875343, "o", "l"] +[44.87882351875343, "o", "o"] +[44.90882351875343, "o", "c"] +[44.93882351875343, "o", "a"] +[44.96882351875343, "o", "l"] +[44.99882351875343, "o", "h"] +[45.028823518753434, "o", "o"] +[45.058823518753435, "o", "s"] +[45.088823518753436, "o", "t"] +[45.11882351875344, "o", ":"] +[45.14882351875344, "o", "8"] +[45.17882351875344, "o", "0"] +[45.20882351875344, "o", "8"] +[45.23882351875344, "o", "0"] +[45.26882351875344, "o", "/"] +[45.298823518753444, "o", "r"] +[45.328823518753445, "o", "d"] +[45.35882351875345, "o", "u"] +[45.38882351875345, "o", "?"] +[45.41882351875345, "o", "d"] +[45.44882351875345, "o", "a"] +[45.47882351875345, "o", "t"] +[45.50882351875345, "o", "e"] +[45.53882351875345, "o", "="] +[45.568823518753454, "o", "e"] +[45.598823518753456, "o", "q"] +[45.62882351875346, "o", "."] +[45.65882351875346, "o", "2"] +[45.68882351875346, "o", "0"] +[45.71882351875346, "o", "1"] +[45.74882351875346, "o", "2"] +[45.77882351875346, "o", "-"] +[45.808823518753464, "o", "1"] +[45.838823518753465, "o", "2"] +[45.868823518753466, "o", "-"] +[45.89882351875347, "o", "2"] +[45.92882351875347, "o", "6"] +[45.95882351875347, "o", "&"] +[45.98882351875347, "o", "s"] +[46.01882351875347, "o", "e"] +[46.04882351875347, "o", "l"] +[46.078823518753474, "o", "e"] +[46.108823518753475, "o", "c"] +[46.138823518753476, "o", "t"] +[46.16882351875348, "o", "="] +[46.19882351875348, "o", "d"] +[46.22882351875348, "o", "a"] +[46.25882351875348, "o", "t"] +[46.28882351875348, "o", "e"] +[46.31882351875348, "o", ","] +[46.348823518753484, "o", "t"] +[46.378823518753485, "o", "e"] +[46.408823518753486, "o", "m"] +[46.43882351875349, "o", "p"] +[46.46882351875349, "o", "e"] +[46.49882351875349, "o", "r"] +[46.52882351875349, "o", "a"] +[46.55882351875349, "o", "t"] +[46.58882351875349, "o", "u"] +[46.618823518753494, "o", "r"] +[46.648823518753495, "o", "e"] +[46.6788235187535, "o", "m"] +[46.7088235187535, "o", "i"] +[46.7388235187535, "o", "n"] +[46.7688235187535, "o", ","] +[46.7988235187535, "o", "t"] +[46.8288235187535, "o", "e"] +[46.8588235187535, "o", "m"] +[46.888823518753505, "o", "p"] +[46.918823518753506, "o", "e"] +[46.94882351875351, "o", "r"] +[46.97882351875351, "o", "a"] +[47.00882351875351, "o", "t"] +[47.03882351875351, "o", "u"] +[47.06882351875351, "o", "r"] +[47.09882351875351, "o", "e"] +[47.128823518753514, "o", "m"] +[47.158823518753515, "o", "a"] +[47.188823518753516, "o", "x"] +[47.21882351875352, "o", ","] +[47.24882351875352, "o", "p"] +[47.27882351875352, "o", "r"] +[47.30882351875352, "o", "e"] +[47.33882351875352, "o", "c"] +[47.36882351875352, "o", "i"] +[47.398823518753524, "o", "p"] +[47.428823518753525, "o", "i"] +[47.458823518753526, "o", "t"] +[47.48882351875353, "o", "a"] +[47.51882351875353, "o", "t"] +[47.54882351875353, "o", "i"] +[47.57882351875353, "o", "o"] +[47.60882351875353, "o", "n"] +[47.63882351875353, "o", "\""] +[47.668823518753534, "o", "\r\n"] +[47.698823518753535, "o", "\u001b[0m"] +[47.728823518753536, "o", "\r\n"] +[47.74214968681384, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.41}]"] +[47.77214968681384, "o", "\u001b[1m"] +[47.80214968681384, "o", "\u001b[36m"] +[47.83214968681384, "o", "\u001b[91m"] +[47.862149686813844, "o", "$"] +[47.892149686813845, "o", " "] +[47.922149686813846, "o", "\u001b[0m"] +[52.95214968681385, "o", "\u001b[H"] +[52.98214968681385, "o", "\u001b[J"] +[53.01214968681385, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run the query against the new version of the dataset."] +[53.04214968681385, "o", "\r\n"] +[53.07214968681385, "o", "$ # This time, use layered querying that queries fragments directly without checkout,\r\n"] +[53.10214968681385, "o", "$ # downloading them if they're not local. This is seamless to PostgREST or any other application.\r\n"] +[53.132149686813854, "o", "$"] +[53.162149686813855, "o", " "] +[53.192149686813856, "o", "s"] +[53.22214968681386, "o", "g"] +[53.25214968681386, "o", "r"] +[53.28214968681386, "o", " "] +[53.31214968681386, "o", "c"] +[53.34214968681386, "o", "h"] +[53.37214968681386, "o", "e"] +[53.402149686813864, "o", "c"] +[53.432149686813865, "o", "k"] +[53.462149686813866, "o", "o"] +[53.49214968681387, "o", "u"] +[53.52214968681387, "o", "t"] +[53.55214968681387, "o", " "] +[53.58214968681387, "o", "-"] +[53.61214968681387, "o", "-"] +[53.64214968681387, "o", "l"] +[53.672149686813874, "o", "a"] +[53.702149686813875, "o", "y"] +[53.73214968681388, "o", "e"] +[53.76214968681388, "o", "r"] +[53.79214968681388, "o", "e"] +[53.82214968681388, "o", "d"] +[53.85214968681388, "o", " "] +[53.88214968681388, "o", "d"] +[53.91214968681388, "o", "e"] +[53.942149686813885, "o", "m"] +[53.972149686813886, "o", "o"] +[54.00214968681389, "o", "/"] +[54.03214968681389, "o", "w"] +[54.06214968681389, "o", "e"] +[54.09214968681389, "o", "a"] +[54.12214968681389, "o", "t"] +[54.15214968681389, "o", "h"] +[54.182149686813894, "o", "e"] +[54.212149686813895, "o", "r"] +[54.242149686813896, "o", ":"] +[54.2721496868139, "o", "r"] +[54.3021496868139, "o", "e"] +[54.3321496868139, "o", "v"] +[54.3621496868139, "o", "i"] +[54.3921496868139, "o", "s"] +[54.4221496868139, "o", "e"] +[54.452149686813904, "o", "d"] +[54.482149686813905, "o", "_"] +[54.512149686813906, "o", "d"] +[54.54214968681391, "o", "a"] +[54.57214968681391, "o", "t"] +[54.60214968681391, "o", "a"] +[54.63214968681391, "o", "\r\n"] +[54.66214968681391, "o", "$"] +[54.69214968681391, "o", " "] +[54.722149686813914, "o", "c"] +[54.752149686813915, "o", "u"] +[54.782149686813916, "o", "r"] +[54.81214968681392, "o", "l"] +[54.84214968681392, "o", " "] +[54.87214968681392, "o", "\""] +[54.90214968681392, "o", "h"] +[54.93214968681392, "o", "t"] +[54.96214968681392, "o", "t"] +[54.992149686813924, "o", "p"] +[55.022149686813925, "o", ":"] +[55.05214968681393, "o", "/"] +[55.08214968681393, "o", "/"] +[55.11214968681393, "o", "l"] +[55.14214968681393, "o", "o"] +[55.17214968681393, "o", "c"] +[55.20214968681393, "o", "a"] +[55.23214968681393, "o", "l"] +[55.262149686813935, "o", "h"] +[55.292149686813936, "o", "o"] +[55.32214968681394, "o", "s"] +[55.35214968681394, "o", "t"] +[55.38214968681394, "o", ":"] +[55.41214968681394, "o", "8"] +[55.44214968681394, "o", "0"] +[55.47214968681394, "o", "8"] +[55.502149686813944, "o", "0"] +[55.532149686813945, "o", "/"] +[55.562149686813946, "o", "r"] +[55.59214968681395, "o", "d"] +[55.62214968681395, "o", "u"] +[55.65214968681395, "o", "?"] +[55.68214968681395, "o", "d"] +[55.71214968681395, "o", "a"] +[55.74214968681395, "o", "t"] +[55.772149686813954, "o", "e"] +[55.802149686813955, "o", "="] +[55.832149686813956, "o", "e"] +[55.86214968681396, "o", "q"] +[55.89214968681396, "o", "."] +[55.92214968681396, "o", "2"] +[55.95214968681396, "o", "0"] +[55.98214968681396, "o", "1"] +[56.01214968681396, "o", "2"] +[56.042149686813964, "o", "-"] +[56.072149686813965, "o", "1"] +[56.102149686813966, "o", "2"] +[56.13214968681397, "o", "-"] +[56.16214968681397, "o", "2"] +[56.19214968681397, "o", "6"] +[56.22214968681397, "o", "&"] +[56.25214968681397, "o", "s"] +[56.28214968681397, "o", "e"] +[56.312149686813974, "o", "l"] +[56.342149686813976, "o", "e"] +[56.37214968681398, "o", "c"] +[56.40214968681398, "o", "t"] +[56.43214968681398, "o", "="] +[56.46214968681398, "o", "d"] +[56.49214968681398, "o", "a"] +[56.52214968681398, "o", "t"] +[56.55214968681398, "o", "e"] +[56.582149686813985, "o", ","] +[56.612149686813986, "o", "t"] +[56.64214968681399, "o", "e"] +[56.67214968681399, "o", "m"] +[56.70214968681399, "o", "p"] +[56.73214968681399, "o", "e"] +[56.76214968681399, "o", "r"] +[56.79214968681399, "o", "a"] +[56.822149686813994, "o", "t"] +[56.852149686813995, "o", "u"] +[56.882149686813996, "o", "r"] +[56.912149686814, "o", "e"] +[56.942149686814, "o", "m"] +[56.972149686814, "o", "i"] +[57.002149686814, "o", "n"] +[57.032149686814, "o", ","] +[57.062149686814, "o", "t"] +[57.092149686814004, "o", "e"] +[57.122149686814005, "o", "m"] +[57.152149686814006, "o", "p"] +[57.18214968681401, "o", "e"] +[57.21214968681401, "o", "r"] +[57.24214968681401, "o", "a"] +[57.27214968681401, "o", "t"] +[57.30214968681401, "o", "u"] +[57.33214968681401, "o", "r"] +[57.362149686814014, "o", "e"] +[57.392149686814015, "o", "m"] +[57.422149686814016, "o", "a"] +[57.45214968681402, "o", "x"] +[57.48214968681402, "o", ","] +[57.51214968681402, "o", "p"] +[57.54214968681402, "o", "r"] +[57.57214968681402, "o", "e"] +[57.60214968681402, "o", "c"] +[57.632149686814024, "o", "i"] +[57.662149686814026, "o", "p"] +[57.69214968681403, "o", "i"] +[57.72214968681403, "o", "t"] +[57.75214968681403, "o", "a"] +[57.78214968681403, "o", "t"] +[57.81214968681403, "o", "i"] +[57.84214968681403, "o", "o"] +[57.87214968681403, "o", "n"] +[57.902149686814035, "o", "\""] +[57.932149686814036, "o", "\r\n"] +[57.96214968681404, "o", "\u001b[0m"] +[57.99214968681404, "o", "\r\n"] +[58.5463481903083, "o", "Checked out demo/weather:6852e8cf09d0.\r\n"] +[58.83634982109138, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.692}]"] +[58.86634982109138, "o", "\u001b[1m"] +[58.896349821091384, "o", "\u001b[36m"] +[58.926349821091385, "o", "\u001b[91m"] +[58.956349821091386, "o", "$"] +[58.98634982109139, "o", " "] +[59.01634982109139, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.16/push-to-other-engine.cast b/content/casts/versioned/archive/v0.2.16/push-to-other-engine.cast new file mode 100644 index 00000000..62632ec0 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.16/push-to-other-engine.cast @@ -0,0 +1,920 @@ +{"version": 2, "width": 100, "height": 26, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1629312147, "metadata": {"tss": [{"h": "The .sgconfig file is written from the point of view of the first engine.", "ts": 0.06}, {"h": "Initialize the two engines", "ts": 9.559999999999999}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 22.060000000000002}, {"h": "Push the dataset out to the other engine", "ts": 35.191617155075335}, {"h": "Check that the dataset exists on the remote engine", "ts": 43.41754848480261}, {"h": "Update the dataset on the local engine", "ts": 50.613490037918524}, {"h": "Inspect our changes", "ts": 62.20538053512638}, {"h": "Push the changes out to the remote engine", "ts": 69.94538959503245}, {"h": "Inspect the dataset on the remote engine", "ts": 77.1296873283394}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The .sgconfig file is written from the point of view of the first engine."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Here, the first engine is local and default and the second one is remote.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "c"] +[0.27, "o", "a"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "."] +[0.3900000000000001, "o", "s"] +[0.42000000000000015, "o", "g"] +[0.4500000000000002, "o", "c"] +[0.4800000000000002, "o", "o"] +[0.5100000000000002, "o", "n"] +[0.5400000000000003, "o", "f"] +[0.5700000000000003, "o", "i"] +[0.6000000000000003, "o", "g"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "\u001b[0m"] +[0.6900000000000004, "o", "\r\n"] +[0.6908080005645756, "o", "[defaults]"] +[0.6908664131164555, "o", "\r\n"] +[0.6908835792541508, "o", "SG_LOGLEVEL=INFO"] +[0.6908947849273686, "o", "\r\n"] +[0.6909045600891117, "o", "SG_ENGINE_HOST=localhost"] +[0.6909143352508549, "o", "\r\n"] +[0.690924110412598, "o", "SG_ENGINE_PORT=5432"] +[0.6909360313415531, "o", "\r\n"] +[0.6909467601776127, "o", "SG_ENGINE_USER=sgr"] +[0.6909560585021977, "o", "\r\n"] +[0.6909665489196781, "o", "SG_ENGINE_PWD=supersecure"] +[0.6909763240814213, "o", "\r\n"] +[0.6909853839874271, "o", "\r\n"] +[0.6909961128234867, "o", "[remote: engine_2]"] +[0.6910056495666508, "o", "\r\n"] +[0.6910147094726566, "o", "SG_ENGINE_ADMIN_USER=sgr"] +[0.6910261535644535, "o", "\r\n"] +[0.691036643981934, "o", "SG_ENGINE_ADMIN_PWD=supersecure"] +[0.691045942306519, "o", "\r\n"] +[0.6910557174682621, "o", "SG_ENGINE_POSTGRES_DB_NAME=splitgraph"] +[0.6910650157928471, "o", "\r\n"] +[0.691074314117432, "o", "SG_ENGINE_HOST=localhost"] +[0.6910838508605961, "o", "\r\n"] +[0.691093149185181, "o", "SG_ENGINE_PORT=5431"] +[0.691102447509766, "o", "\r\n"] +[0.6911126995086674, "o", "SG_ENGINE_USER=sgr"] +[0.6911222362518314, "o", "\r\n"] +[0.6911336803436283, "o", "SG_ENGINE_PWD=supersecure"] +[0.6911479854583744, "o", "\r\n"] +[0.6911596679687504, "o", "SG_ENGINE_DB_NAME=splitgraph"] +[0.7211596679687504, "o", "\u001b[1m"] +[0.7511596679687504, "o", "\u001b[36m"] +[0.7811596679687505, "o", "\u001b[91m"] +[0.8111596679687505, "o", "$"] +[0.8411596679687505, "o", " "] +[0.8711596679687506, "o", "\u001b[0m"] +[9.53, "o", "\u001b[H"] +[9.559999999999999, "o", "\u001b[J"] +[9.589999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the two engines"] +[9.619999999999997, "o", "\r\n"] +[9.649999999999997, "o", "$"] +[9.679999999999996, "o", " "] +[9.709999999999996, "o", "s"] +[9.739999999999995, "o", "g"] +[9.769999999999994, "o", "r"] +[9.799999999999994, "o", " "] +[9.829999999999993, "o", "i"] +[9.859999999999992, "o", "n"] +[9.889999999999992, "o", "i"] +[9.919999999999991, "o", "t"] +[9.94999999999999, "o", "\r\n"] +[9.97999999999999, "o", "$"] +[10.00999999999999, "o", " "] +[10.039999999999988, "o", "S"] +[10.069999999999988, "o", "G"] +[10.099999999999987, "o", "_"] +[10.129999999999987, "o", "E"] +[10.159999999999986, "o", "N"] +[10.189999999999985, "o", "G"] +[10.219999999999985, "o", "I"] +[10.249999999999984, "o", "N"] +[10.279999999999983, "o", "E"] +[10.309999999999983, "o", "="] +[10.339999999999982, "o", "e"] +[10.369999999999981, "o", "n"] +[10.39999999999998, "o", "g"] +[10.42999999999998, "o", "i"] +[10.45999999999998, "o", "n"] +[10.489999999999979, "o", "e"] +[10.519999999999978, "o", "_"] +[10.549999999999978, "o", "2"] +[10.579999999999977, "o", " "] +[10.609999999999976, "o", "s"] +[10.639999999999976, "o", "g"] +[10.669999999999975, "o", "r"] +[10.699999999999974, "o", " "] +[10.729999999999974, "o", "i"] +[10.759999999999973, "o", "n"] +[10.789999999999973, "o", "i"] +[10.819999999999972, "o", "t"] +[10.849999999999971, "o", "\r\n"] +[10.87999999999997, "o", "\u001b[0m"] +[10.90999999999997, "o", "\r\n"] +[11.292160425186127, "o", "Initializing engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph)..."] +[11.292190704345673, "o", "\r\n"] +[11.297102842330903, "o", "Waiting for connection....\r\n"] +[12.297102842330903, "o", "Database splitgraph already exists, skipping\r\n"] +[12.297357950210541, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[12.31041160583493, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.342973861694306, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.344486865997284, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.36562744140622, "o", "Installing Splitgraph API functions...\r\n"] +[12.40419355392453, "o", "Installing CStore management functions...\r\n"] +[12.407407913207978, "o", "Installing the audit trigger...\r\n"] +[12.420120391845673, "o", "Engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph) initialized.\r\n"] +[12.744555149078339, "o", "Initializing engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph)...\r\n"] +[12.752431783676117, "o", "Database splitgraph already exists, skipping\r\n"] +[12.75268045425412, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[12.75937310218808, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.785306367874115, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.78669849395749, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.805899772644013, "o", "Installing Splitgraph API functions...\r\n"] +[12.839538011550873, "o", "Installing CStore management functions...\r\n"] +[12.842761430740326, "o", "Installing the audit trigger...\r\n"] +[12.853565845489472, "o", "Engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph) initialized.\r\n"] +[12.883565845489471, "o", "\u001b[1m"] +[12.91356584548947, "o", "\u001b[36m"] +[12.94356584548947, "o", "\u001b[91m"] +[12.97356584548947, "o", "$"] +[13.003565845489469, "o", " "] +[13.033565845489468, "o", "\u001b[0m"] +[22.03, "o", "\u001b[H"] +[22.060000000000002, "o", "\u001b[J"] +[22.090000000000003, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[22.120000000000005, "o", "\r\n"] +[22.150000000000006, "o", "$"] +[22.180000000000007, "o", " "] +[22.210000000000008, "o", "s"] +[22.24000000000001, "o", "g"] +[22.27000000000001, "o", "r"] +[22.30000000000001, "o", " "] +[22.330000000000013, "o", "i"] +[22.360000000000014, "o", "n"] +[22.390000000000015, "o", "i"] +[22.420000000000016, "o", "t"] +[22.450000000000017, "o", " "] +[22.480000000000018, "o", "d"] +[22.51000000000002, "o", "e"] +[22.54000000000002, "o", "m"] +[22.57000000000002, "o", "o"] +[22.600000000000023, "o", "/"] +[22.630000000000024, "o", "w"] +[22.660000000000025, "o", "e"] +[22.690000000000026, "o", "a"] +[22.720000000000027, "o", "t"] +[22.75000000000003, "o", "h"] +[22.78000000000003, "o", "e"] +[22.81000000000003, "o", "r"] +[22.840000000000032, "o", "\r\n"] +[22.870000000000033, "o", "$"] +[22.900000000000034, "o", " "] +[22.930000000000035, "o", "s"] +[22.960000000000036, "o", "g"] +[22.990000000000038, "o", "r"] +[23.02000000000004, "o", " "] +[23.05000000000004, "o", "c"] +[23.08000000000004, "o", "s"] +[23.110000000000042, "o", "v"] +[23.140000000000043, "o", " "] +[23.170000000000044, "o", "i"] +[23.200000000000045, "o", "m"] +[23.230000000000047, "o", "p"] +[23.260000000000048, "o", "o"] +[23.29000000000005, "o", "r"] +[23.32000000000005, "o", "t"] +[23.35000000000005, "o", " "] +[23.380000000000052, "o", "-"] +[23.410000000000053, "o", "f"] +[23.440000000000055, "o", " "] +[23.470000000000056, "o", "."] +[23.500000000000057, "o", "."] +[23.530000000000058, "o", "/"] +[23.56000000000006, "o", "i"] +[23.59000000000006, "o", "m"] +[23.62000000000006, "o", "p"] +[23.650000000000063, "o", "o"] +[23.680000000000064, "o", "r"] +[23.710000000000065, "o", "t"] +[23.740000000000066, "o", "-"] +[23.770000000000067, "o", "f"] +[23.800000000000068, "o", "r"] +[23.83000000000007, "o", "o"] +[23.86000000000007, "o", "m"] +[23.89000000000007, "o", "-"] +[23.920000000000073, "o", "c"] +[23.950000000000074, "o", "s"] +[23.980000000000075, "o", "v"] +[24.010000000000076, "o", "/"] +[24.040000000000077, "o", "r"] +[24.07000000000008, "o", "d"] +[24.10000000000008, "o", "u"] +[24.13000000000008, "o", "-"] +[24.160000000000082, "o", "w"] +[24.190000000000083, "o", "e"] +[24.220000000000084, "o", "a"] +[24.250000000000085, "o", "t"] +[24.280000000000086, "o", "h"] +[24.310000000000088, "o", "e"] +[24.34000000000009, "o", "r"] +[24.37000000000009, "o", "-"] +[24.40000000000009, "o", "h"] +[24.430000000000092, "o", "i"] +[24.460000000000093, "o", "s"] +[24.490000000000094, "o", "t"] +[24.520000000000095, "o", "o"] +[24.550000000000097, "o", "r"] +[24.580000000000098, "o", "y"] +[24.6100000000001, "o", "."] +[24.6400000000001, "o", "c"] +[24.6700000000001, "o", "s"] +[24.700000000000102, "o", "v"] +[24.730000000000103, "o", " "] +[24.760000000000105, "o", "\\"] +[24.790000000000106, "o", "\r\n "] +[24.820000000000107, "o", "-"] +[24.850000000000108, "o", "k"] +[24.88000000000011, "o", " "] +[24.91000000000011, "o", "d"] +[24.94000000000011, "o", "a"] +[24.970000000000113, "o", "t"] +[25.000000000000114, "o", "e"] +[25.030000000000115, "o", " "] +[25.060000000000116, "o", "\\"] +[25.090000000000117, "o", "\r\n "] +[25.12000000000012, "o", "-"] +[25.15000000000012, "o", "t"] +[25.18000000000012, "o", " "] +[25.21000000000012, "o", "d"] +[25.240000000000123, "o", "a"] +[25.270000000000124, "o", "t"] +[25.300000000000125, "o", "e"] +[25.330000000000126, "o", " "] +[25.360000000000127, "o", "t"] +[25.39000000000013, "o", "i"] +[25.42000000000013, "o", "m"] +[25.45000000000013, "o", "e"] +[25.480000000000132, "o", "s"] +[25.510000000000133, "o", "t"] +[25.540000000000134, "o", "a"] +[25.570000000000135, "o", "m"] +[25.600000000000136, "o", "p"] +[25.630000000000138, "o", " "] +[25.66000000000014, "o", "\\"] +[25.69000000000014, "o", "\r\n "] +[25.72000000000014, "o", "-"] +[25.750000000000142, "o", "-"] +[25.780000000000143, "o", "s"] +[25.810000000000144, "o", "e"] +[25.840000000000146, "o", "p"] +[25.870000000000147, "o", "a"] +[25.900000000000148, "o", "r"] +[25.93000000000015, "o", "a"] +[25.96000000000015, "o", "t"] +[25.99000000000015, "o", "o"] +[26.020000000000152, "o", "r"] +[26.050000000000153, "o", " "] +[26.080000000000155, "o", "\""] +[26.110000000000156, "o", ";"] +[26.140000000000157, "o", "\""] +[26.170000000000158, "o", " "] +[26.20000000000016, "o", "\\"] +[26.23000000000016, "o", "\r\n "] +[26.26000000000016, "o", "d"] +[26.290000000000163, "o", "e"] +[26.320000000000164, "o", "m"] +[26.350000000000165, "o", "o"] +[26.380000000000166, "o", "/"] +[26.410000000000167, "o", "w"] +[26.44000000000017, "o", "e"] +[26.47000000000017, "o", "a"] +[26.50000000000017, "o", "t"] +[26.53000000000017, "o", "h"] +[26.560000000000173, "o", "e"] +[26.590000000000174, "o", "r"] +[26.620000000000175, "o", " "] +[26.650000000000176, "o", "r"] +[26.680000000000177, "o", "d"] +[26.71000000000018, "o", "u"] +[26.74000000000018, "o", "\r\n"] +[26.77000000000018, "o", "$"] +[26.800000000000182, "o", " "] +[26.830000000000183, "o", "s"] +[26.860000000000184, "o", "g"] +[26.890000000000185, "o", "r"] +[26.920000000000186, "o", " "] +[26.950000000000188, "o", "c"] +[26.98000000000019, "o", "o"] +[27.01000000000019, "o", "m"] +[27.04000000000019, "o", "m"] +[27.070000000000192, "o", "i"] +[27.100000000000193, "o", "t"] +[27.130000000000194, "o", " "] +[27.160000000000196, "o", "d"] +[27.190000000000197, "o", "e"] +[27.220000000000198, "o", "m"] +[27.2500000000002, "o", "o"] +[27.2800000000002, "o", "/"] +[27.3100000000002, "o", "w"] +[27.340000000000202, "o", "e"] +[27.370000000000203, "o", "a"] +[27.400000000000205, "o", "t"] +[27.430000000000206, "o", "h"] +[27.460000000000207, "o", "e"] +[27.490000000000208, "o", "r"] +[27.52000000000021, "o", "\r\n"] +[27.55000000000021, "o", "$"] +[27.58000000000021, "o", " "] +[27.610000000000213, "o", "s"] +[27.640000000000214, "o", "g"] +[27.670000000000215, "o", "r"] +[27.700000000000216, "o", " "] +[27.730000000000217, "o", "t"] +[27.76000000000022, "o", "a"] +[27.79000000000022, "o", "g"] +[27.82000000000022, "o", " "] +[27.85000000000022, "o", "d"] +[27.880000000000223, "o", "e"] +[27.910000000000224, "o", "m"] +[27.940000000000225, "o", "o"] +[27.970000000000226, "o", "/"] +[28.000000000000227, "o", "w"] +[28.03000000000023, "o", "e"] +[28.06000000000023, "o", "a"] +[28.09000000000023, "o", "t"] +[28.120000000000232, "o", "h"] +[28.150000000000233, "o", "e"] +[28.180000000000234, "o", "r"] +[28.210000000000235, "o", " "] +[28.240000000000236, "o", "i"] +[28.270000000000238, "o", "n"] +[28.30000000000024, "o", "i"] +[28.33000000000024, "o", "t"] +[28.36000000000024, "o", "i"] +[28.390000000000242, "o", "a"] +[28.420000000000243, "o", "l"] +[28.450000000000244, "o", "_"] +[28.480000000000246, "o", "d"] +[28.510000000000247, "o", "a"] +[28.540000000000248, "o", "t"] +[28.57000000000025, "o", "a"] +[28.60000000000025, "o", "\r\n"] +[28.63000000000025, "o", "\u001b[0m"] +[28.660000000000252, "o", "\r\n"] +[29.029693994522347, "o", "Initialized empty repository demo/weather\r\n"] +[29.386716279983773, "o", "Committing demo/weather...\r\n"] +[29.406911048889413, "o", "Processing table rdu\r\n"] +[29.599535140991463, "o", "Committed demo/weather as c541a7e99174.\r\n"] +[29.951617155075326, "o", "Tagged demo/weather:c541a7e99174af40296356dcc96c2b6503068fd137c077da139bdabbae870ed4 with initial_data.\r\n"] +[29.981617155075327, "o", "\u001b[1m"] +[30.011617155075328, "o", "\u001b[36m"] +[30.04161715507533, "o", "\u001b[91m"] +[30.07161715507533, "o", "$"] +[30.10161715507533, "o", " "] +[30.131617155075332, "o", "\u001b[0m"] +[35.161617155075334, "o", "\u001b[H"] +[35.191617155075335, "o", "\u001b[J"] +[35.221617155075336, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset out to the other engine"] +[35.25161715507534, "o", "\r\n"] +[35.28161715507534, "o", "$ # Since by default Splitgraph is configured to use S3 for uploading, we need\r\n"] +[35.31161715507534, "o", "$ # to override the upload handler and upload data to the actual database.\r\n"] +[35.34161715507534, "o", "$"] +[35.37161715507534, "o", " "] +[35.40161715507534, "o", "s"] +[35.431617155075344, "o", "g"] +[35.461617155075345, "o", "r"] +[35.491617155075346, "o", " "] +[35.52161715507535, "o", "p"] +[35.55161715507535, "o", "u"] +[35.58161715507535, "o", "s"] +[35.61161715507535, "o", "h"] +[35.64161715507535, "o", " "] +[35.67161715507535, "o", "d"] +[35.701617155075354, "o", "e"] +[35.731617155075355, "o", "m"] +[35.761617155075356, "o", "o"] +[35.79161715507536, "o", "/"] +[35.82161715507536, "o", "w"] +[35.85161715507536, "o", "e"] +[35.88161715507536, "o", "a"] +[35.91161715507536, "o", "t"] +[35.94161715507536, "o", "h"] +[35.971617155075364, "o", "e"] +[36.001617155075365, "o", "r"] +[36.03161715507537, "o", " "] +[36.06161715507537, "o", "-"] +[36.09161715507537, "o", "-"] +[36.12161715507537, "o", "r"] +[36.15161715507537, "o", "e"] +[36.18161715507537, "o", "m"] +[36.21161715507537, "o", "o"] +[36.241617155075375, "o", "t"] +[36.271617155075376, "o", "e"] +[36.30161715507538, "o", " "] +[36.33161715507538, "o", "e"] +[36.36161715507538, "o", "n"] +[36.39161715507538, "o", "g"] +[36.42161715507538, "o", "i"] +[36.45161715507538, "o", "n"] +[36.481617155075384, "o", "e"] +[36.511617155075385, "o", "_"] +[36.541617155075386, "o", "2"] +[36.57161715507539, "o", " "] +[36.60161715507539, "o", "d"] +[36.63161715507539, "o", "e"] +[36.66161715507539, "o", "m"] +[36.69161715507539, "o", "o"] +[36.72161715507539, "o", "/"] +[36.751617155075394, "o", "w"] +[36.781617155075395, "o", "e"] +[36.811617155075396, "o", "a"] +[36.8416171550754, "o", "t"] +[36.8716171550754, "o", "h"] +[36.9016171550754, "o", "e"] +[36.9316171550754, "o", "r"] +[36.9616171550754, "o", " "] +[36.9916171550754, "o", "-"] +[37.021617155075404, "o", "-"] +[37.051617155075405, "o", "u"] +[37.081617155075406, "o", "p"] +[37.11161715507541, "o", "l"] +[37.14161715507541, "o", "o"] +[37.17161715507541, "o", "a"] +[37.20161715507541, "o", "d"] +[37.23161715507541, "o", "-"] +[37.26161715507541, "o", "h"] +[37.291617155075414, "o", "a"] +[37.321617155075415, "o", "n"] +[37.35161715507542, "o", "d"] +[37.38161715507542, "o", "l"] +[37.41161715507542, "o", "e"] +[37.44161715507542, "o", "r"] +[37.47161715507542, "o", " "] +[37.50161715507542, "o", "D"] +[37.53161715507542, "o", "B"] +[37.561617155075425, "o", "\r\n"] +[37.591617155075426, "o", "\u001b[0m"] +[37.62161715507543, "o", "\r\n"] +[37.93569000244176, "o", "Pushing demo/weather to demo/weather on remote engine_2\r\n"] +[37.93574555397069, "o", "Gathering remote metadata...\r\n"] +[37.992141084671374, "o", "Uploading 1 object, total size 113.04 KiB\r\n"] +[37.99659164428746, "o", "\r 0%| | 0/1 [00:00 7a901ee62872\r\n"] +[24.787078342437873, "o", "\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[24.79397078514112, "o", "Executing SQL...\r\n"] +[24.989807329177985, "o", "Committing demo/summary...\r\n"] +[25.009091815948615, "o", "Processing table monthly_summary\r\n"] +[25.10101696014417, "o", " ---> 69dd907d7cbd\r\n"] +[25.103887758255134, "o", "Successfully built demo/summary:69dd907d7cbd.\r\n"] +[25.462338647842536, "o", "Tagged demo/summary:69dd907d7cbdcfb3d696186f5688b40226f767561ba4a57865ab37a467037a0c with based_on_initial.\r\n"] +[25.492338647842537, "o", "\u001b[1m"] +[25.52233864784254, "o", "\u001b[36m"] +[25.55233864784254, "o", "\u001b[91m"] +[25.58233864784254, "o", "$"] +[25.61233864784254, "o", " "] +[25.642338647842543, "o", "\u001b[0m"] +[30.672338647842544, "o", "\u001b[H"] +[30.702338647842545, "o", "\u001b[J"] +[30.732338647842546, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Much like with Docker, the build result is cached, so running build again checks out the existing image."] +[30.762338647842547, "o", "\r\n"] +[30.79233864784255, "o", "$"] +[30.82233864784255, "o", " "] +[30.85233864784255, "o", "s"] +[30.882338647842552, "o", "g"] +[30.912338647842553, "o", "r"] +[30.942338647842554, "o", " "] +[30.972338647842555, "o", "b"] +[31.002338647842556, "o", "u"] +[31.032338647842558, "o", "i"] +[31.06233864784256, "o", "l"] +[31.09233864784256, "o", "d"] +[31.12233864784256, "o", " "] +[31.152338647842562, "o", "r"] +[31.182338647842563, "o", "d"] +[31.212338647842564, "o", "u"] +[31.242338647842566, "o", "-"] +[31.272338647842567, "o", "w"] +[31.302338647842568, "o", "e"] +[31.33233864784257, "o", "a"] +[31.36233864784257, "o", "t"] +[31.39233864784257, "o", "h"] +[31.422338647842572, "o", "e"] +[31.452338647842573, "o", "r"] +[31.482338647842575, "o", "-"] +[31.512338647842576, "o", "s"] +[31.542338647842577, "o", "u"] +[31.572338647842578, "o", "m"] +[31.60233864784258, "o", "m"] +[31.63233864784258, "o", "a"] +[31.66233864784258, "o", "r"] +[31.692338647842583, "o", "y"] +[31.722338647842584, "o", "."] +[31.752338647842585, "o", "s"] +[31.782338647842586, "o", "p"] +[31.812338647842587, "o", "l"] +[31.84233864784259, "o", "i"] +[31.87233864784259, "o", "t"] +[31.90233864784259, "o", "f"] +[31.93233864784259, "o", "i"] +[31.962338647842593, "o", "l"] +[31.992338647842594, "o", "e"] +[32.022338647842595, "o", " "] +[32.052338647842596, "o", "-"] +[32.0823386478426, "o", "o"] +[32.1123386478426, "o", " "] +[32.1423386478426, "o", "d"] +[32.1723386478426, "o", "e"] +[32.2023386478426, "o", "m"] +[32.2323386478426, "o", "o"] +[32.262338647842604, "o", "/"] +[32.292338647842605, "o", "s"] +[32.32233864784261, "o", "u"] +[32.35233864784261, "o", "m"] +[32.38233864784261, "o", "m"] +[32.41233864784261, "o", "a"] +[32.44233864784261, "o", "r"] +[32.47233864784261, "o", "y"] +[32.50233864784261, "o", "\r\n"] +[32.532338647842614, "o", "\u001b[0m"] +[32.562338647842616, "o", "\r\n"] +[32.91627532005331, "o", "Executing Splitfile rdu-weather-summary.splitfile with arguments {}\r\n"] +[32.99698740005514, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather IMPORT rdu AS source_data\u001b[0m\r\n"] +[32.99797659873983, "o", "Resolving repository demo/weather\r\n"] +[33.11608105659506, "o", " ---> Using cache\r\n"] +[33.11609607696554, "o", " ---> 7a901ee62872\r\n"] +[33.11646753311178, "o", "\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[33.326204357147425, "o", " ---> Using cache\r\n"] +[33.32621961593649, "o", " ---> 69dd907d7cbd\r\n"] +[33.32889324188253, "o", "Successfully built demo/summary:69dd907d7cbd.\r\n"] +[33.358893241882534, "o", "\u001b[1m"] +[33.388893241882535, "o", "\u001b[36m"] +[33.418893241882536, "o", "\u001b[91m"] +[33.44889324188254, "o", "$"] +[33.47889324188254, "o", " "] +[33.50889324188254, "o", "\u001b[0m"] +[38.53889324188254, "o", "\u001b[H"] +[38.56889324188254, "o", "\u001b[J"] +[38.59889324188254, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the new dataset"] +[38.628893241882544, "o", "\r\n"] +[38.658893241882545, "o", "$"] +[38.688893241882546, "o", " "] +[38.71889324188255, "o", "s"] +[38.74889324188255, "o", "g"] +[38.77889324188255, "o", "r"] +[38.80889324188255, "o", " "] +[38.83889324188255, "o", "s"] +[38.86889324188255, "o", "h"] +[38.898893241882554, "o", "o"] +[38.928893241882555, "o", "w"] +[38.958893241882556, "o", " "] +[38.98889324188256, "o", "d"] +[39.01889324188256, "o", "e"] +[39.04889324188256, "o", "m"] +[39.07889324188256, "o", "o"] +[39.10889324188256, "o", "/"] +[39.13889324188256, "o", "s"] +[39.168893241882564, "o", "u"] +[39.198893241882566, "o", "m"] +[39.22889324188257, "o", "m"] +[39.25889324188257, "o", "a"] +[39.28889324188257, "o", "r"] +[39.31889324188257, "o", "y"] +[39.34889324188257, "o", ":"] +[39.37889324188257, "o", "b"] +[39.40889324188257, "o", "a"] +[39.438893241882575, "o", "s"] +[39.468893241882576, "o", "e"] +[39.49889324188258, "o", "d"] +[39.52889324188258, "o", "_"] +[39.55889324188258, "o", "o"] +[39.58889324188258, "o", "n"] +[39.61889324188258, "o", "_"] +[39.64889324188258, "o", "i"] +[39.678893241882584, "o", "n"] +[39.708893241882585, "o", "i"] +[39.738893241882586, "o", "t"] +[39.76889324188259, "o", "i"] +[39.79889324188259, "o", "a"] +[39.82889324188259, "o", "l"] +[39.85889324188259, "o", "\r\n"] +[39.88889324188259, "o", "$"] +[39.91889324188259, "o", " "] +[39.948893241882594, "o", "s"] +[39.978893241882595, "o", "g"] +[40.008893241882596, "o", "r"] +[40.0388932418826, "o", " "] +[40.0688932418826, "o", "t"] +[40.0988932418826, "o", "a"] +[40.1288932418826, "o", "b"] +[40.1588932418826, "o", "l"] +[40.1888932418826, "o", "e"] +[40.218893241882604, "o", " "] +[40.248893241882605, "o", "d"] +[40.278893241882606, "o", "e"] +[40.30889324188261, "o", "m"] +[40.33889324188261, "o", "o"] +[40.36889324188261, "o", "/"] +[40.39889324188261, "o", "s"] +[40.42889324188261, "o", "u"] +[40.45889324188261, "o", "m"] +[40.488893241882614, "o", "m"] +[40.518893241882616, "o", "a"] +[40.54889324188262, "o", "r"] +[40.57889324188262, "o", "y"] +[40.60889324188262, "o", ":"] +[40.63889324188262, "o", "b"] +[40.66889324188262, "o", "a"] +[40.69889324188262, "o", "s"] +[40.72889324188262, "o", "e"] +[40.758893241882625, "o", "d"] +[40.788893241882626, "o", "_"] +[40.81889324188263, "o", "o"] +[40.84889324188263, "o", "n"] +[40.87889324188263, "o", "_"] +[40.90889324188263, "o", "i"] +[40.93889324188263, "o", "n"] +[40.96889324188263, "o", "i"] +[40.998893241882634, "o", "t"] +[41.028893241882635, "o", "i"] +[41.058893241882636, "o", "a"] +[41.08889324188264, "o", "l"] +[41.11889324188264, "o", " "] +[41.14889324188264, "o", "m"] +[41.17889324188264, "o", "o"] +[41.20889324188264, "o", "n"] +[41.23889324188264, "o", "t"] +[41.268893241882644, "o", "h"] +[41.298893241882645, "o", "l"] +[41.328893241882646, "o", "y"] +[41.35889324188265, "o", "_"] +[41.38889324188265, "o", "s"] +[41.41889324188265, "o", "u"] +[41.44889324188265, "o", "m"] +[41.47889324188265, "o", "m"] +[41.50889324188265, "o", "a"] +[41.538893241882654, "o", "r"] +[41.568893241882655, "o", "y"] +[41.59889324188266, "o", "\r\n"] +[41.62889324188266, "o", "$"] +[41.65889324188266, "o", " "] +[41.68889324188266, "o", "s"] +[41.71889324188266, "o", "g"] +[41.74889324188266, "o", "r"] +[41.77889324188266, "o", " "] +[41.808893241882664, "o", "s"] +[41.838893241882666, "o", "q"] +[41.86889324188267, "o", "l"] +[41.89889324188267, "o", " "] +[41.92889324188267, "o", "-"] +[41.95889324188267, "o", "s"] +[41.98889324188267, "o", " "] +[42.01889324188267, "o", "d"] +[42.04889324188267, "o", "e"] +[42.078893241882675, "o", "m"] +[42.108893241882676, "o", "o"] +[42.13889324188268, "o", "/"] +[42.16889324188268, "o", "s"] +[42.19889324188268, "o", "u"] +[42.22889324188268, "o", "m"] +[42.25889324188268, "o", "m"] +[42.28889324188268, "o", "a"] +[42.318893241882684, "o", "r"] +[42.348893241882685, "o", "y"] +[42.378893241882686, "o", " "] +[42.40889324188269, "o", "\""] +[42.43889324188269, "o", "S"] +[42.46889324188269, "o", "E"] +[42.49889324188269, "o", "L"] +[42.52889324188269, "o", "E"] +[42.55889324188269, "o", "C"] +[42.588893241882694, "o", "T"] +[42.618893241882695, "o", " "] +[42.648893241882696, "o", "*"] +[42.6788932418827, "o", " "] +[42.7088932418827, "o", "F"] +[42.7388932418827, "o", "R"] +[42.7688932418827, "o", "O"] +[42.7988932418827, "o", "M"] +[42.8288932418827, "o", " "] +[42.858893241882704, "o", "m"] +[42.888893241882705, "o", "o"] +[42.91889324188271, "o", "n"] +[42.94889324188271, "o", "t"] +[42.97889324188271, "o", "h"] +[43.00889324188271, "o", "l"] +[43.03889324188271, "o", "y"] +[43.06889324188271, "o", "_"] +[43.09889324188271, "o", "s"] +[43.128893241882714, "o", "u"] +[43.158893241882716, "o", "m"] +[43.18889324188272, "o", "m"] +[43.21889324188272, "o", "a"] +[43.24889324188272, "o", "r"] +[43.27889324188272, "o", "y"] +[43.30889324188272, "o", " "] +[43.33889324188272, "o", "O"] +[43.36889324188272, "o", "R"] +[43.398893241882725, "o", "D"] +[43.428893241882726, "o", "E"] +[43.45889324188273, "o", "R"] +[43.48889324188273, "o", " "] +[43.51889324188273, "o", "B"] +[43.54889324188273, "o", "Y"] +[43.57889324188273, "o", " "] +[43.60889324188273, "o", "m"] +[43.638893241882734, "o", "o"] +[43.668893241882735, "o", "n"] +[43.698893241882736, "o", "t"] +[43.72889324188274, "o", "h"] +[43.75889324188274, "o", " "] +[43.78889324188274, "o", "D"] +[43.81889324188274, "o", "E"] +[43.84889324188274, "o", "S"] +[43.87889324188274, "o", "C"] +[43.908893241882744, "o", " "] +[43.938893241882745, "o", "L"] +[43.968893241882746, "o", "I"] +[43.99889324188275, "o", "M"] +[44.02889324188275, "o", "I"] +[44.05889324188275, "o", "T"] +[44.08889324188275, "o", " "] +[44.11889324188275, "o", "5"] +[44.14889324188275, "o", "\""] +[44.178893241882754, "o", "\r\n"] +[44.208893241882755, "o", "\u001b[0m"] +[44.23889324188276, "o", "\r\n"] +[44.601609439850286, "o", "Image demo/summary:69dd907d7cbdcfb3d696186f5688b40226f767561ba4a57865ab37a467037a0c\r\n"] +[44.6016275596623, "o", "CREATE TABLE monthly_summary AS ( SELECT to_char(date, 'YYYYMM') AS month, AVG(precipitation) AS average_precipitation, AVG(snowfall) AS average_snowfall FROM source_data GROUP BY month ORDER BY month ASC)\r\nCreated at 2021-08-18T18:43:39.400590\r\n"] +[44.60285231590314, "o", "Size: 115.21 KiB\r\n"] +[44.602862567902044, "o", "Parent: 7a901ee6287255e7b72d1dd4af523d593b1ac4c4c1e6e1ea83b50a05ddc78640\r\n\r\nTables:\r\n"] +[44.603512735367254, "o", " monthly_summary\r\n"] +[44.60351917266889, "o", " source_data\r\n"] +[44.952357740402654, "o", "Table demo/summary:69dd907d7cbdcfb3d696186f5688b40226f767561ba4a57865ab37a467037a0c/monthly_summary\r\n"] +[44.952375860214666, "o", "\r\n"] +[44.95296356201215, "o", "Size: 2.17 KiB\r\n"] +[44.95380756378217, "o", "Rows: 153\r\n"] +[44.95387145996137, "o", "Columns: \r\n month (text)\r\n average_precipitation (numeric)\r\n average_snowfall (numeric)\r\n\r\nObjects: \r\n o5e29c3cf82603335df66690a448ca1f604f0002d5a3496b18c982a5ea835f3\r\n"] +[45.314672679901555, "o", "201909 0.171667 0\r\n201908 0.139032 0\r\n201907 0.117097 0\r\n201906 0.12 0\r\n201905 0.103548 0\r\n"] +[45.34467267990156, "o", "\u001b[1m"] +[45.37467267990156, "o", "\u001b[36m"] +[45.40467267990156, "o", "\u001b[91m"] +[45.43467267990156, "o", "$"] +[45.46467267990156, "o", " "] +[45.49467267990156, "o", "\u001b[0m"] +[53.53889324188254, "o", "\u001b[H"] +[53.56889324188254, "o", "\u001b[J"] +[53.59889324188254, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image's provenance (generated from its metadata)"] +[53.628893241882544, "o", "\r\n"] +[53.658893241882545, "o", "$"] +[53.688893241882546, "o", " "] +[53.71889324188255, "o", "s"] +[53.74889324188255, "o", "g"] +[53.77889324188255, "o", "r"] +[53.80889324188255, "o", " "] +[53.83889324188255, "o", "p"] +[53.86889324188255, "o", "r"] +[53.898893241882554, "o", "o"] +[53.928893241882555, "o", "v"] +[53.958893241882556, "o", "e"] +[53.98889324188256, "o", "n"] +[54.01889324188256, "o", "a"] +[54.04889324188256, "o", "n"] +[54.07889324188256, "o", "c"] +[54.10889324188256, "o", "e"] +[54.13889324188256, "o", " "] +[54.168893241882564, "o", "d"] +[54.198893241882566, "o", "e"] +[54.22889324188257, "o", "m"] +[54.25889324188257, "o", "o"] +[54.28889324188257, "o", "/"] +[54.31889324188257, "o", "s"] +[54.34889324188257, "o", "u"] +[54.37889324188257, "o", "m"] +[54.40889324188257, "o", "m"] +[54.438893241882575, "o", "a"] +[54.468893241882576, "o", "r"] +[54.49889324188258, "o", "y"] +[54.52889324188258, "o", "\r\n"] +[54.55889324188258, "o", "$"] +[54.58889324188258, "o", " "] +[54.61889324188258, "o", "s"] +[54.64889324188258, "o", "g"] +[54.678893241882584, "o", "r"] +[54.708893241882585, "o", " "] +[54.738893241882586, "o", "p"] +[54.76889324188259, "o", "r"] +[54.79889324188259, "o", "o"] +[54.82889324188259, "o", "v"] +[54.85889324188259, "o", "e"] +[54.88889324188259, "o", "n"] +[54.91889324188259, "o", "a"] +[54.948893241882594, "o", "n"] +[54.978893241882595, "o", "c"] +[55.008893241882596, "o", "e"] +[55.0388932418826, "o", " "] +[55.0688932418826, "o", "-"] +[55.0988932418826, "o", "-"] +[55.1288932418826, "o", "f"] +[55.1588932418826, "o", "u"] +[55.1888932418826, "o", "l"] +[55.218893241882604, "o", "l"] +[55.248893241882605, "o", " "] +[55.278893241882606, "o", "d"] +[55.30889324188261, "o", "e"] +[55.33889324188261, "o", "m"] +[55.36889324188261, "o", "o"] +[55.39889324188261, "o", "/"] +[55.42889324188261, "o", "s"] +[55.45889324188261, "o", "u"] +[55.488893241882614, "o", "m"] +[55.518893241882616, "o", "m"] +[55.54889324188262, "o", "a"] +[55.57889324188262, "o", "r"] +[55.60889324188262, "o", "y"] +[55.63889324188262, "o", "\r\n"] +[55.66889324188262, "o", "\u001b[0m"] +[55.69889324188262, "o", "\r\n"] +[56.070081644058526, "o", "demo/summary:69dd907d7cbdcfb3d696186f5688b40226f767561ba4a57865ab37a467037a0c depends on:\r\n"] +[56.07009594917327, "o", "demo/weather:ea465ccf1b322d027f8a8b47b96a2833a1bb6d72628be49d4b7fac92d0be1e24\r\n"] +[56.42505591392547, "o", "# Splitfile commands used to recreate demo/summary:69dd907d7cbdcfb3d696186f5688b40226f767561ba4a57865ab37a467037a0c\r\n"] +[56.42507689476043, "o", "FROM demo/weather:ea465ccf1b322d027f8a8b47b96a2833a1bb6d72628be49d4b7fac92d0be1e24 IMPORT rdu AS source_data\r\nSQL {CREATE TABLE monthly_summary\r\n AS SELECT to_char(date, 'YYYYMM') AS month\r\n , avg(precipitation) AS average_precipitation\r\n , avg(snowfall) AS average_snowfall\r\n FROM source_data\r\n GROUP BY month\r\n ORDER BY month ASC}\r\n"] +[56.45507689476043, "o", "\u001b[1m"] +[56.48507689476043, "o", "\u001b[36m"] +[56.51507689476043, "o", "\u001b[91m"] +[56.545076894760435, "o", "$"] +[56.575076894760436, "o", " "] +[56.60507689476044, "o", "\u001b[0m"] +[61.63507689476044, "o", "\u001b[H"] +[61.66507689476044, "o", "\u001b[J"] +[61.69507689476044, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We can also see that a new image has been derived from demo/weather"] +[61.72507689476044, "o", "\r\n"] +[61.75507689476044, "o", "$"] +[61.785076894760444, "o", " "] +[61.815076894760445, "o", "s"] +[61.845076894760446, "o", "g"] +[61.87507689476045, "o", "r"] +[61.90507689476045, "o", " "] +[61.93507689476045, "o", "d"] +[61.96507689476045, "o", "e"] +[61.99507689476045, "o", "p"] +[62.02507689476045, "o", "e"] +[62.055076894760454, "o", "n"] +[62.085076894760455, "o", "d"] +[62.115076894760456, "o", "e"] +[62.14507689476046, "o", "n"] +[62.17507689476046, "o", "t"] +[62.20507689476046, "o", "s"] +[62.23507689476046, "o", " "] +[62.26507689476046, "o", "d"] +[62.29507689476046, "o", "e"] +[62.325076894760464, "o", "m"] +[62.355076894760465, "o", "o"] +[62.385076894760466, "o", "/"] +[62.41507689476047, "o", "w"] +[62.44507689476047, "o", "e"] +[62.47507689476047, "o", "a"] +[62.50507689476047, "o", "t"] +[62.53507689476047, "o", "h"] +[62.56507689476047, "o", "e"] +[62.595076894760474, "o", "r"] +[62.625076894760475, "o", "\r\n"] +[62.65507689476048, "o", "\u001b[0m"] +[62.68507689476048, "o", "\r\n"] +[63.038910570145, "o", "demo/weather:ea465ccf1b322d027f8a8b47b96a2833a1bb6d72628be49d4b7fac92d0be1e24 is depended on by:\r\n"] +[63.038929882049906, "o", "demo/summary:69dd907d7cbdcfb3d696186f5688b40226f767561ba4a57865ab37a467037a0c\r\n"] +[63.06892988204991, "o", "\u001b[1m"] +[63.09892988204991, "o", "\u001b[36m"] +[63.12892988204991, "o", "\u001b[91m"] +[63.15892988204991, "o", "$"] +[63.18892988204991, "o", " "] +[63.21892988204991, "o", "\u001b[0m"] +[68.24892988204991, "o", "\u001b[H"] +[68.27892988204991, "o", "\u001b[J"] +[68.30892988204991, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now pretend there's been a revision to the source historical weather data"] +[68.33892988204991, "o", "\r\n"] +[68.36892988204991, "o", "$"] +[68.39892988204991, "o", " "] +[68.42892988204991, "o", "s"] +[68.45892988204992, "o", "g"] +[68.48892988204992, "o", "r"] +[68.51892988204992, "o", " "] +[68.54892988204992, "o", "s"] +[68.57892988204992, "o", "q"] +[68.60892988204992, "o", "l"] +[68.63892988204992, "o", " "] +[68.66892988204992, "o", "-"] +[68.69892988204992, "o", "s"] +[68.72892988204993, "o", " "] +[68.75892988204993, "o", "d"] +[68.78892988204993, "o", "e"] +[68.81892988204993, "o", "m"] +[68.84892988204993, "o", "o"] +[68.87892988204993, "o", "/"] +[68.90892988204993, "o", "w"] +[68.93892988204993, "o", "e"] +[68.96892988204993, "o", "a"] +[68.99892988204994, "o", "t"] +[69.02892988204994, "o", "h"] +[69.05892988204994, "o", "e"] +[69.08892988204994, "o", "r"] +[69.11892988204994, "o", " "] +[69.14892988204994, "o", "\""] +[69.17892988204994, "o", "U"] +[69.20892988204994, "o", "P"] +[69.23892988204994, "o", "D"] +[69.26892988204995, "o", "A"] +[69.29892988204995, "o", "T"] +[69.32892988204995, "o", "E"] +[69.35892988204995, "o", " "] +[69.38892988204995, "o", "r"] +[69.41892988204995, "o", "d"] +[69.44892988204995, "o", "u"] +[69.47892988204995, "o", " "] +[69.50892988204996, "o", "S"] +[69.53892988204996, "o", "E"] +[69.56892988204996, "o", "T"] +[69.59892988204996, "o", " "] +[69.62892988204996, "o", "p"] +[69.65892988204996, "o", "r"] +[69.68892988204996, "o", "e"] +[69.71892988204996, "o", "c"] +[69.74892988204996, "o", "i"] +[69.77892988204997, "o", "p"] +[69.80892988204997, "o", "i"] +[69.83892988204997, "o", "t"] +[69.86892988204997, "o", "a"] +[69.89892988204997, "o", "t"] +[69.92892988204997, "o", "i"] +[69.95892988204997, "o", "o"] +[69.98892988204997, "o", "n"] +[70.01892988204997, "o", " "] +[70.04892988204998, "o", "="] +[70.07892988204998, "o", " "] +[70.10892988204998, "o", "p"] +[70.13892988204998, "o", "r"] +[70.16892988204998, "o", "e"] +[70.19892988204998, "o", "c"] +[70.22892988204998, "o", "i"] +[70.25892988204998, "o", "p"] +[70.28892988204998, "o", "i"] +[70.31892988204999, "o", "t"] +[70.34892988204999, "o", "a"] +[70.37892988204999, "o", "t"] +[70.40892988204999, "o", "i"] +[70.43892988204999, "o", "o"] +[70.46892988204999, "o", "n"] +[70.49892988204999, "o", " "] +[70.52892988205, "o", "*"] +[70.55892988205, "o", " "] +[70.58892988205, "o", "1"] +[70.61892988205, "o", "."] +[70.64892988205, "o", "2"] +[70.67892988205, "o", " "] +[70.70892988205, "o", "W"] +[70.73892988205, "o", "H"] +[70.76892988205, "o", "E"] +[70.79892988205, "o", "R"] +[70.82892988205, "o", "E"] +[70.85892988205, "o", " "] +[70.88892988205001, "o", "E"] +[70.91892988205001, "o", "X"] +[70.94892988205001, "o", "T"] +[70.97892988205001, "o", "R"] +[71.00892988205001, "o", "A"] +[71.03892988205001, "o", "C"] +[71.06892988205001, "o", "T"] +[71.09892988205002, "o", " "] +[71.12892988205002, "o", "("] +[71.15892988205002, "o", "y"] +[71.18892988205002, "o", "e"] +[71.21892988205002, "o", "a"] +[71.24892988205002, "o", "r"] +[71.27892988205002, "o", " "] +[71.30892988205002, "o", "F"] +[71.33892988205002, "o", "R"] +[71.36892988205003, "o", "O"] +[71.39892988205003, "o", "M"] +[71.42892988205003, "o", " "] +[71.45892988205003, "o", "d"] +[71.48892988205003, "o", "a"] +[71.51892988205003, "o", "t"] +[71.54892988205003, "o", "e"] +[71.57892988205003, "o", ")"] +[71.60892988205003, "o", " "] +[71.63892988205004, "o", "="] +[71.66892988205004, "o", " "] +[71.69892988205004, "o", "2"] +[71.72892988205004, "o", "0"] +[71.75892988205004, "o", "1"] +[71.78892988205004, "o", "2"] +[71.81892988205004, "o", "\""] +[71.84892988205004, "o", "\r\n"] +[71.87892988205004, "o", "$"] +[71.90892988205005, "o", " "] +[71.93892988205005, "o", "s"] +[71.96892988205005, "o", "g"] +[71.99892988205005, "o", "r"] +[72.02892988205005, "o", " "] +[72.05892988205005, "o", "c"] +[72.08892988205005, "o", "o"] +[72.11892988205005, "o", "m"] +[72.14892988205006, "o", "m"] +[72.17892988205006, "o", "i"] +[72.20892988205006, "o", "t"] +[72.23892988205006, "o", " "] +[72.26892988205006, "o", "-"] +[72.29892988205006, "o", "m"] +[72.32892988205006, "o", " "] +[72.35892988205006, "o", "\""] +[72.38892988205006, "o", "R"] +[72.41892988205007, "o", "e"] +[72.44892988205007, "o", "v"] +[72.47892988205007, "o", "i"] +[72.50892988205007, "o", "s"] +[72.53892988205007, "o", "i"] +[72.56892988205007, "o", "o"] +[72.59892988205007, "o", "n"] +[72.62892988205007, "o", " "] +[72.65892988205007, "o", "t"] +[72.68892988205008, "o", "o"] +[72.71892988205008, "o", " "] +[72.74892988205008, "o", "t"] +[72.77892988205008, "o", "h"] +[72.80892988205008, "o", "e"] +[72.83892988205008, "o", " "] +[72.86892988205008, "o", "2"] +[72.89892988205008, "o", "0"] +[72.92892988205008, "o", "1"] +[72.95892988205009, "o", "2"] +[72.98892988205009, "o", " "] +[73.01892988205009, "o", "r"] +[73.04892988205009, "o", "a"] +[73.07892988205009, "o", "i"] +[73.10892988205009, "o", "n"] +[73.13892988205009, "o", "f"] +[73.1689298820501, "o", "a"] +[73.1989298820501, "o", "l"] +[73.2289298820501, "o", "l"] +[73.2589298820501, "o", " "] +[73.2889298820501, "o", "d"] +[73.3189298820501, "o", "a"] +[73.3489298820501, "o", "t"] +[73.3789298820501, "o", "a"] +[73.4089298820501, "o", "\""] +[73.4389298820501, "o", " "] +[73.4689298820501, "o", "d"] +[73.4989298820501, "o", "e"] +[73.52892988205011, "o", "m"] +[73.55892988205011, "o", "o"] +[73.58892988205011, "o", "/"] +[73.61892988205011, "o", "w"] +[73.64892988205011, "o", "e"] +[73.67892988205011, "o", "a"] +[73.70892988205011, "o", "t"] +[73.73892988205012, "o", "h"] +[73.76892988205012, "o", "e"] +[73.79892988205012, "o", "r"] +[73.82892988205012, "o", "\r\n"] +[73.85892988205012, "o", "$"] +[73.88892988205012, "o", " "] +[73.91892988205012, "o", "s"] +[73.94892988205012, "o", "g"] +[73.97892988205012, "o", "r"] +[74.00892988205013, "o", " "] +[74.03892988205013, "o", "t"] +[74.06892988205013, "o", "a"] +[74.09892988205013, "o", "g"] +[74.12892988205013, "o", " "] +[74.15892988205013, "o", "d"] +[74.18892988205013, "o", "e"] +[74.21892988205013, "o", "m"] +[74.24892988205013, "o", "o"] +[74.27892988205014, "o", "/"] +[74.30892988205014, "o", "w"] +[74.33892988205014, "o", "e"] +[74.36892988205014, "o", "a"] +[74.39892988205014, "o", "t"] +[74.42892988205014, "o", "h"] +[74.45892988205014, "o", "e"] +[74.48892988205014, "o", "r"] +[74.51892988205014, "o", " "] +[74.54892988205015, "o", "r"] +[74.57892988205015, "o", "e"] +[74.60892988205015, "o", "v"] +[74.63892988205015, "o", "i"] +[74.66892988205015, "o", "s"] +[74.69892988205015, "o", "e"] +[74.72892988205015, "o", "d"] +[74.75892988205015, "o", "_"] +[74.78892988205016, "o", "d"] +[74.81892988205016, "o", "a"] +[74.84892988205016, "o", "t"] +[74.87892988205016, "o", "a"] +[74.90892988205016, "o", "\r\n"] +[74.93892988205016, "o", "\u001b[0m"] +[74.96892988205016, "o", "\r\n"] +[75.31305944442809, "o", "Committing demo/weather...\r\n"] +[75.34328996658385, "o", "Storing and indexing table rdu\r\n"] +[75.51063620567382, "o", "Committed demo/weather as 3c2eaa8fa2e2.\r\n"] +[75.85986101150573, "o", "Tagged demo/weather:3c2eaa8fa2e2e22579df706b80a109b7b38559baa2a4048737a075b68a665291 with revised_data.\r\n"] +[75.88986101150573, "o", "\u001b[1m"] +[75.91986101150573, "o", "\u001b[36m"] +[75.94986101150573, "o", "\u001b[91m"] +[75.97986101150573, "o", "$"] +[76.00986101150573, "o", " "] +[76.03986101150574, "o", "\u001b[0m"] +[81.06986101150574, "o", "\u001b[H"] +[81.09986101150574, "o", "\u001b[J"] +[81.12986101150574, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Use the derivative image's provenance to rebuild it against the revised version"] +[81.15986101150574, "o", "\r\n"] +[81.18986101150574, "o", "$"] +[81.21986101150574, "o", " "] +[81.24986101150574, "o", "s"] +[81.27986101150574, "o", "g"] +[81.30986101150575, "o", "r"] +[81.33986101150575, "o", " "] +[81.36986101150575, "o", "r"] +[81.39986101150575, "o", "e"] +[81.42986101150575, "o", "b"] +[81.45986101150575, "o", "u"] +[81.48986101150575, "o", "i"] +[81.51986101150575, "o", "l"] +[81.54986101150575, "o", "d"] +[81.57986101150576, "o", " "] +[81.60986101150576, "o", "d"] +[81.63986101150576, "o", "e"] +[81.66986101150576, "o", "m"] +[81.69986101150576, "o", "o"] +[81.72986101150576, "o", "/"] +[81.75986101150576, "o", "s"] +[81.78986101150576, "o", "u"] +[81.81986101150576, "o", "m"] +[81.84986101150577, "o", "m"] +[81.87986101150577, "o", "a"] +[81.90986101150577, "o", "r"] +[81.93986101150577, "o", "y"] +[81.96986101150577, "o", " "] +[81.99986101150577, "o", "-"] +[82.02986101150577, "o", "-"] +[82.05986101150577, "o", "a"] +[82.08986101150577, "o", "g"] +[82.11986101150578, "o", "a"] +[82.14986101150578, "o", "i"] +[82.17986101150578, "o", "n"] +[82.20986101150578, "o", "s"] +[82.23986101150578, "o", "t"] +[82.26986101150578, "o", " "] +[82.29986101150578, "o", "d"] +[82.32986101150578, "o", "e"] +[82.35986101150579, "o", "m"] +[82.38986101150579, "o", "o"] +[82.41986101150579, "o", "/"] +[82.44986101150579, "o", "w"] +[82.47986101150579, "o", "e"] +[82.50986101150579, "o", "a"] +[82.53986101150579, "o", "t"] +[82.5698610115058, "o", "h"] +[82.5998610115058, "o", "e"] +[82.6298610115058, "o", "r"] +[82.6598610115058, "o", ":"] +[82.6898610115058, "o", "r"] +[82.7198610115058, "o", "e"] +[82.7498610115058, "o", "v"] +[82.7798610115058, "o", "i"] +[82.8098610115058, "o", "s"] +[82.8398610115058, "o", "e"] +[82.8698610115058, "o", "d"] +[82.8998610115058, "o", "_"] +[82.9298610115058, "o", "d"] +[82.95986101150581, "o", "a"] +[82.98986101150581, "o", "t"] +[83.01986101150581, "o", "a"] +[83.04986101150581, "o", "\r\n"] +[83.07986101150581, "o", "$"] +[83.10986101150581, "o", " "] +[83.13986101150581, "o", "s"] +[83.16986101150582, "o", "g"] +[83.19986101150582, "o", "r"] +[83.22986101150582, "o", " "] +[83.25986101150582, "o", "t"] +[83.28986101150582, "o", "a"] +[83.31986101150582, "o", "g"] +[83.34986101150582, "o", " "] +[83.37986101150582, "o", "d"] +[83.40986101150582, "o", "e"] +[83.43986101150583, "o", "m"] +[83.46986101150583, "o", "o"] +[83.49986101150583, "o", "/"] +[83.52986101150583, "o", "s"] +[83.55986101150583, "o", "u"] +[83.58986101150583, "o", "m"] +[83.61986101150583, "o", "m"] +[83.64986101150583, "o", "a"] +[83.67986101150584, "o", "r"] +[83.70986101150584, "o", "y"] +[83.73986101150584, "o", " "] +[83.76986101150584, "o", "b"] +[83.79986101150584, "o", "a"] +[83.82986101150584, "o", "s"] +[83.85986101150584, "o", "e"] +[83.88986101150584, "o", "d"] +[83.91986101150584, "o", "_"] +[83.94986101150585, "o", "o"] +[83.97986101150585, "o", "n"] +[84.00986101150585, "o", "_"] +[84.03986101150585, "o", "r"] +[84.06986101150585, "o", "e"] +[84.09986101150585, "o", "v"] +[84.12986101150585, "o", "i"] +[84.15986101150585, "o", "s"] +[84.18986101150585, "o", "e"] +[84.21986101150586, "o", "d"] +[84.24986101150586, "o", "\r\n"] +[84.27986101150586, "o", "\u001b[0m"] +[84.30986101150586, "o", "\r\n"] +[84.6610568237312, "o", "Rerunning demo/summary:69dd907d7cbdcfb3d696186f5688b40226f767561ba4a57865ab37a467037a0c against:\r\n"] +[84.66106683731152, "o", "demo/weather:revised_data\r\n"] +[84.73774296760632, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather:revised_data IMPORT rdu AS source_data\u001b[0m\r\n"] +[84.73871595382764, "o", "Resolving repository demo/weather\r\n"] +[84.74269325256421, "o", "Importing 1 table from demo/weather:3c2eaa8fa2e2 into demo/summary\r\n"] +[84.87948543548657, "o", " ---> ec531706b44c\r\n"] +[84.87950808525159, "o", "\u001b[1m\r\nStep 2/2 : SQL {CREATE TABLE monthly_summary AS SELECT to_char(dat...\u001b[0m\r\n"] +[84.88448149681165, "o", "Executing SQL...\r\n"] +[85.07507569313123, "o", "Committing demo/summary...\r\n"] +[85.09852344513013, "o", "Processing table monthly_summary\r\n"] +[85.19240910530164, "o", " ---> 73a1523bd18e\r\n"] +[85.19532234191968, "o", "Successfully built demo/summary:73a1523bd18e.\r\n"] +[85.54483181953503, "o", "Tagged demo/summary:73a1523bd18e98681eaf20745e3e218e02ad0caf607ea4ba15774b7a8429cb7d with based_on_revised.\r\n"] +[85.57483181953504, "o", "\u001b[1m"] +[85.60483181953504, "o", "\u001b[36m"] +[85.63483181953504, "o", "\u001b[91m"] +[85.66483181953504, "o", "$"] +[85.69483181953504, "o", " "] +[85.72483181953504, "o", "\u001b[0m"] +[90.75483181953504, "o", "\u001b[H"] +[90.78483181953504, "o", "\u001b[J"] +[90.81483181953504, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Compare the two resultant datasets"] +[90.84483181953505, "o", "\r\n"] +[90.87483181953505, "o", "$"] +[90.90483181953505, "o", " "] +[90.93483181953505, "o", "s"] +[90.96483181953505, "o", "g"] +[90.99483181953505, "o", "r"] +[91.02483181953505, "o", " "] +[91.05483181953505, "o", "d"] +[91.08483181953505, "o", "i"] +[91.11483181953506, "o", "f"] +[91.14483181953506, "o", "f"] +[91.17483181953506, "o", " "] +[91.20483181953506, "o", "d"] +[91.23483181953506, "o", "e"] +[91.26483181953506, "o", "m"] +[91.29483181953506, "o", "o"] +[91.32483181953506, "o", "/"] +[91.35483181953506, "o", "s"] +[91.38483181953507, "o", "u"] +[91.41483181953507, "o", "m"] +[91.44483181953507, "o", "m"] +[91.47483181953507, "o", "a"] +[91.50483181953507, "o", "r"] +[91.53483181953507, "o", "y"] +[91.56483181953507, "o", " "] +[91.59483181953507, "o", "b"] +[91.62483181953507, "o", "a"] +[91.65483181953508, "o", "s"] +[91.68483181953508, "o", "e"] +[91.71483181953508, "o", "d"] +[91.74483181953508, "o", "_"] +[91.77483181953508, "o", "o"] +[91.80483181953508, "o", "n"] +[91.83483181953508, "o", "_"] +[91.86483181953508, "o", "i"] +[91.89483181953509, "o", "n"] +[91.92483181953509, "o", "i"] +[91.95483181953509, "o", "t"] +[91.98483181953509, "o", "i"] +[92.01483181953509, "o", "a"] +[92.04483181953509, "o", "l"] +[92.07483181953509, "o", " "] +[92.1048318195351, "o", "b"] +[92.1348318195351, "o", "a"] +[92.1648318195351, "o", "s"] +[92.1948318195351, "o", "e"] +[92.2248318195351, "o", "d"] +[92.2548318195351, "o", "_"] +[92.2848318195351, "o", "o"] +[92.3148318195351, "o", "n"] +[92.3448318195351, "o", "_"] +[92.3748318195351, "o", "r"] +[92.4048318195351, "o", "e"] +[92.4348318195351, "o", "v"] +[92.4648318195351, "o", "i"] +[92.49483181953511, "o", "s"] +[92.52483181953511, "o", "e"] +[92.55483181953511, "o", "d"] +[92.58483181953511, "o", " "] +[92.61483181953511, "o", "-"] +[92.64483181953511, "o", "-"] +[92.67483181953511, "o", "v"] +[92.70483181953512, "o", "e"] +[92.73483181953512, "o", "r"] +[92.76483181953512, "o", "b"] +[92.79483181953512, "o", "o"] +[92.82483181953512, "o", "s"] +[92.85483181953512, "o", "e"] +[92.88483181953512, "o", " "] +[92.91483181953512, "o", "-"] +[92.94483181953512, "o", "-"] +[92.97483181953513, "o", "t"] +[93.00483181953513, "o", "a"] +[93.03483181953513, "o", "b"] +[93.06483181953513, "o", "l"] +[93.09483181953513, "o", "e"] +[93.12483181953513, "o", "-"] +[93.15483181953513, "o", "n"] +[93.18483181953513, "o", "a"] +[93.21483181953514, "o", "m"] +[93.24483181953514, "o", "e"] +[93.27483181953514, "o", " "] +[93.30483181953514, "o", "m"] +[93.33483181953514, "o", "o"] +[93.36483181953514, "o", "n"] +[93.39483181953514, "o", "t"] +[93.42483181953514, "o", "h"] +[93.45483181953514, "o", "l"] +[93.48483181953515, "o", "y"] +[93.51483181953515, "o", "_"] +[93.54483181953515, "o", "s"] +[93.57483181953515, "o", "u"] +[93.60483181953515, "o", "m"] +[93.63483181953515, "o", "m"] +[93.66483181953515, "o", "a"] +[93.69483181953515, "o", "r"] +[93.72483181953515, "o", "y"] +[93.75483181953516, "o", "\r\n"] +[93.78483181953516, "o", "\u001b[0m"] +[93.81483181953516, "o", "\r\n"] +[94.32257732391443, "o", "Between 69dd907d7cbd and 73a1523bd18e: \r\n"] +[94.32264908790674, "o", "monthly_summary: added 12 rows, removed 12 rows.\r\n"] +[94.32294925689783, "o", "- ('201201', Decimal('0.06322580645161290323'), Decimal('0E-20'))\r\n"] +[94.32298645019617, "o", "- ('201202', Decimal('0.06689655172413793103'), Decimal('0.03137931034482758621'))\r\n- ('201203', Decimal('0.17290322580645161290'), Decimal('0E-20'))\r\n- ('201204', Decimal('0.08766666666666666667'), Decimal('0E-20'))\r\n- ('201205', Decimal('0.12806451612903225806'), Decimal('0E-20'))\r\n"] +[94.32351478576746, "o", "- ('201206', Decimal('0.10333333333333333333'), Decimal('0E-20'))\r\n"] +[94.32354387283411, "o", "- ('201207', Decimal('0.14967741935483870968'), Decimal('0E-20'))\r\n- ('201208', Decimal('0.13000000000000000000'), Decimal('0E-20'))\r\n- ('201209', Decimal('0.26100000000000000000'), Decimal('0E-20'))\r\n- ('201210', Decimal('0.05903225806451612903'), Decimal('0E-20'))\r\n- ('201211', Decimal('0.01866666666666666667'), Decimal('0E-20'))\r\n- ('201212', Decimal('0.09483870967741935484'), Decimal('0E-20'))\r\n"] +[94.32371315002527, "o", "+ ('201201', Decimal('0.07587096774193548387'), Decimal('0E-20'))\r\n+ ('201202', Decimal('0.08027586206896551724'), Decimal('0.03137931034482758621'))\r\n+ ('201203', Decimal('0.20748387096774193548'), Decimal('0E-20'))\r\n+ ('201204', Decimal('0.10520000000000000000'), Decimal('0E-20'))\r\n+ ('201205', Decimal('0.15367741935483870968'), Decimal('0E-20'))\r\n+ ('201206', Decimal('0.12400000000000000000'), Decimal('0E-20'))\r\n+ ('201207', Decimal('0.17961290322580645161'), Decimal('0E-20'))\r\n+ ('201208', Decimal('0.15"] +[94.3237195873269, "o", "600000000000000000'), Decimal('0E-20'))\r\n+ ('201209', Decimal('0.31320000000000000000'), Decimal('0E-20'))\r\n+ ('201210', Decimal('0.07083870967741935484'), Decimal('0E-20'))\r\n+ ('201211', Decimal('0.02240000000000000000'), Decimal('0E-20'))\r\n+ ('201212', Decimal('0.11380645161290322581'), Decimal('0E-20'))\r\n"] +[94.3537195873269, "o", "\u001b[1m"] +[94.38371958732691, "o", "\u001b[36m"] +[94.41371958732691, "o", "\u001b[91m"] +[94.44371958732691, "o", "$"] +[94.47371958732691, "o", " "] +[94.50371958732691, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.16/splitgraph-cloud.cast b/content/casts/versioned/archive/v0.2.16/splitgraph-cloud.cast new file mode 100644 index 00000000..d53f2005 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.16/splitgraph-cloud.cast @@ -0,0 +1,1338 @@ +{"version": 2, "width": 100, "height": 22, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1629312165, "metadata": {"tss": [{"h": "Make sure you are registered and logged into Splitgraph Cloud.", "ts": 0.06}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport", "ts": 8.849999999999994}, {"h": "Push the dataset to Splitgraph", "ts": 21.38981446266162}, {"h": "Upload some dataset metadata as well.", "ts": 29.68443133354178}, {"h": "Perform a request against an automatically-generated", "ts": 40.18443133354178}, {"h": "sgr also has a shorthand to access the query API", "ts": 49.41551403999334}, {"h": "You can also run a query against the Splitgraph Data Delivery Network.", "ts": 58.415514039993454}, {"h": "The query API also supports running one-off Splitfile commands against a repository,", "ts": 69.60551403999365}, {"h": "Run another command against the new layer to join the two datasets", "ts": 79.11659431457569}, {"h": "Pull the dataset and check out the new image", "ts": 88.71759305000369}, {"h": "Inspect the generated data", "ts": 101.79162247657847}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make sure you are registered and logged into Splitgraph Cloud."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Test the connection.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "s"] +[0.27, "o", "g"] +[0.30000000000000004, "o", "r"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "q"] +[0.42000000000000015, "o", "l"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "-"] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", " "] +[0.5700000000000003, "o", "d"] +[0.6000000000000003, "o", "a"] +[0.6300000000000003, "o", "t"] +[0.6600000000000004, "o", "a"] +[0.6900000000000004, "o", "."] +[0.7200000000000004, "o", "s"] +[0.7500000000000004, "o", "p"] +[0.7800000000000005, "o", "l"] +[0.8100000000000005, "o", "i"] +[0.8400000000000005, "o", "t"] +[0.8700000000000006, "o", "g"] +[0.9000000000000006, "o", "r"] +[0.9300000000000006, "o", "a"] +[0.9600000000000006, "o", "p"] +[0.9900000000000007, "o", "h"] +[1.0200000000000007, "o", "."] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "o"] +[1.1100000000000008, "o", "m"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "\""] +[1.2000000000000008, "o", "S"] +[1.2300000000000009, "o", "E"] +[1.260000000000001, "o", "L"] +[1.290000000000001, "o", "E"] +[1.320000000000001, "o", "C"] +[1.350000000000001, "o", "T"] +[1.380000000000001, "o", " "] +[1.410000000000001, "o", "s"] +[1.440000000000001, "o", "p"] +[1.470000000000001, "o", "l"] +[1.500000000000001, "o", "i"] +[1.5300000000000011, "o", "t"] +[1.5600000000000012, "o", "g"] +[1.5900000000000012, "o", "r"] +[1.6200000000000012, "o", "a"] +[1.6500000000000012, "o", "p"] +[1.6800000000000013, "o", "h"] +[1.7100000000000013, "o", "_"] +[1.7400000000000013, "o", "a"] +[1.7700000000000014, "o", "p"] +[1.8000000000000014, "o", "i"] +[1.8300000000000014, "o", "."] +[1.8600000000000014, "o", "g"] +[1.8900000000000015, "o", "e"] +[1.9200000000000015, "o", "t"] +[1.9500000000000015, "o", "_"] +[1.9800000000000015, "o", "c"] +[2.0100000000000016, "o", "u"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "r"] +[2.100000000000001, "o", "e"] +[2.130000000000001, "o", "n"] +[2.1600000000000006, "o", "t"] +[2.1900000000000004, "o", "_"] +[2.22, "o", "u"] +[2.25, "o", "s"] +[2.28, "o", "e"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "n"] +[2.369999999999999, "o", "a"] +[2.399999999999999, "o", "m"] +[2.429999999999999, "o", "e"] +[2.4599999999999986, "o", "("] +[2.4899999999999984, "o", ")"] +[2.5199999999999982, "o", "\""] +[2.549999999999998, "o", "\r\n"] +[2.579999999999998, "o", "\u001b[0m"] +[2.6099999999999977, "o", "\r\n"] +[3.6099999999999977, "o", "splitgraph-demo\r\n"] +[3.6399999999999975, "o", "\u001b[1m"] +[3.6699999999999973, "o", "\u001b[36m"] +[3.699999999999997, "o", "\u001b[91m"] +[3.729999999999997, "o", "$"] +[3.7599999999999967, "o", " "] +[3.7899999999999965, "o", "\u001b[0m"] +[8.819999999999995, "o", "\u001b[H"] +[8.849999999999994, "o", "\u001b[J"] +[8.879999999999994, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport"] +[8.909999999999993, "o", "\r\n"] +[8.939999999999992, "o", "$"] +[8.969999999999992, "o", " "] +[8.999999999999991, "o", "s"] +[9.02999999999999, "o", "g"] +[9.05999999999999, "o", "r"] +[9.08999999999999, "o", " "] +[9.119999999999989, "o", "i"] +[9.149999999999988, "o", "n"] +[9.179999999999987, "o", "i"] +[9.209999999999987, "o", "t"] +[9.239999999999986, "o", " "] +[9.269999999999985, "o", "w"] +[9.299999999999985, "o", "e"] +[9.329999999999984, "o", "a"] +[9.359999999999983, "o", "t"] +[9.389999999999983, "o", "h"] +[9.419999999999982, "o", "e"] +[9.449999999999982, "o", "r"] +[9.47999999999998, "o", "\r\n"] +[9.50999999999998, "o", "$"] +[9.53999999999998, "o", " "] +[9.569999999999979, "o", "s"] +[9.599999999999978, "o", "g"] +[9.629999999999978, "o", "r"] +[9.659999999999977, "o", " "] +[9.689999999999976, "o", "c"] +[9.719999999999976, "o", "s"] +[9.749999999999975, "o", "v"] +[9.779999999999974, "o", " "] +[9.809999999999974, "o", "i"] +[9.839999999999973, "o", "m"] +[9.869999999999973, "o", "p"] +[9.899999999999972, "o", "o"] +[9.929999999999971, "o", "r"] +[9.95999999999997, "o", "t"] +[9.98999999999997, "o", " "] +[10.01999999999997, "o", "-"] +[10.049999999999969, "o", "f"] +[10.079999999999968, "o", " "] +[10.109999999999967, "o", "."] +[10.139999999999967, "o", "."] +[10.169999999999966, "o", "/"] +[10.199999999999966, "o", "i"] +[10.229999999999965, "o", "m"] +[10.259999999999964, "o", "p"] +[10.289999999999964, "o", "o"] +[10.319999999999963, "o", "r"] +[10.349999999999962, "o", "t"] +[10.379999999999962, "o", "-"] +[10.409999999999961, "o", "f"] +[10.43999999999996, "o", "r"] +[10.46999999999996, "o", "o"] +[10.49999999999996, "o", "m"] +[10.529999999999959, "o", "-"] +[10.559999999999958, "o", "c"] +[10.589999999999957, "o", "s"] +[10.619999999999957, "o", "v"] +[10.649999999999956, "o", "/"] +[10.679999999999955, "o", "r"] +[10.709999999999955, "o", "d"] +[10.739999999999954, "o", "u"] +[10.769999999999953, "o", "-"] +[10.799999999999953, "o", "w"] +[10.829999999999952, "o", "e"] +[10.859999999999951, "o", "a"] +[10.88999999999995, "o", "t"] +[10.91999999999995, "o", "h"] +[10.94999999999995, "o", "e"] +[10.979999999999949, "o", "r"] +[11.009999999999948, "o", "-"] +[11.039999999999948, "o", "h"] +[11.069999999999947, "o", "i"] +[11.099999999999946, "o", "s"] +[11.129999999999946, "o", "t"] +[11.159999999999945, "o", "o"] +[11.189999999999944, "o", "r"] +[11.219999999999944, "o", "y"] +[11.249999999999943, "o", "."] +[11.279999999999943, "o", "c"] +[11.309999999999942, "o", "s"] +[11.339999999999941, "o", "v"] +[11.36999999999994, "o", " "] +[11.39999999999994, "o", "\\"] +[11.42999999999994, "o", "\r\n "] +[11.459999999999939, "o", "-"] +[11.489999999999938, "o", "k"] +[11.519999999999937, "o", " "] +[11.549999999999937, "o", "d"] +[11.579999999999936, "o", "a"] +[11.609999999999935, "o", "t"] +[11.639999999999935, "o", "e"] +[11.669999999999934, "o", " "] +[11.699999999999934, "o", "\\"] +[11.729999999999933, "o", "\r\n "] +[11.759999999999932, "o", "-"] +[11.789999999999932, "o", "t"] +[11.819999999999931, "o", " "] +[11.84999999999993, "o", "d"] +[11.87999999999993, "o", "a"] +[11.909999999999929, "o", "t"] +[11.939999999999928, "o", "e"] +[11.969999999999928, "o", " "] +[11.999999999999927, "o", "t"] +[12.029999999999927, "o", "i"] +[12.059999999999926, "o", "m"] +[12.089999999999925, "o", "e"] +[12.119999999999925, "o", "s"] +[12.149999999999924, "o", "t"] +[12.179999999999923, "o", "a"] +[12.209999999999923, "o", "m"] +[12.239999999999922, "o", "p"] +[12.269999999999921, "o", " "] +[12.29999999999992, "o", "\\"] +[12.32999999999992, "o", "\r\n "] +[12.35999999999992, "o", "-"] +[12.389999999999919, "o", "-"] +[12.419999999999918, "o", "s"] +[12.449999999999918, "o", "e"] +[12.479999999999917, "o", "p"] +[12.509999999999916, "o", "a"] +[12.539999999999916, "o", "r"] +[12.569999999999915, "o", "a"] +[12.599999999999914, "o", "t"] +[12.629999999999914, "o", "o"] +[12.659999999999913, "o", "r"] +[12.689999999999912, "o", " "] +[12.719999999999912, "o", "\""] +[12.749999999999911, "o", ";"] +[12.77999999999991, "o", "\""] +[12.80999999999991, "o", " "] +[12.83999999999991, "o", "\\"] +[12.869999999999909, "o", "\r\n "] +[12.899999999999908, "o", "w"] +[12.929999999999907, "o", "e"] +[12.959999999999907, "o", "a"] +[12.989999999999906, "o", "t"] +[13.019999999999905, "o", "h"] +[13.049999999999905, "o", "e"] +[13.079999999999904, "o", "r"] +[13.109999999999904, "o", " "] +[13.139999999999903, "o", "r"] +[13.169999999999902, "o", "d"] +[13.199999999999902, "o", "u"] +[13.229999999999901, "o", "\r\n"] +[13.2599999999999, "o", "$"] +[13.2899999999999, "o", " "] +[13.319999999999899, "o", "s"] +[13.349999999999898, "o", "g"] +[13.379999999999898, "o", "r"] +[13.409999999999897, "o", " "] +[13.439999999999896, "o", "c"] +[13.469999999999896, "o", "o"] +[13.499999999999895, "o", "m"] +[13.529999999999895, "o", "m"] +[13.559999999999894, "o", "i"] +[13.589999999999893, "o", "t"] +[13.619999999999893, "o", " "] +[13.649999999999892, "o", "w"] +[13.679999999999891, "o", "e"] +[13.70999999999989, "o", "a"] +[13.73999999999989, "o", "t"] +[13.76999999999989, "o", "h"] +[13.799999999999889, "o", "e"] +[13.829999999999888, "o", "r"] +[13.859999999999888, "o", "\r\n"] +[13.889999999999887, "o", "$"] +[13.919999999999886, "o", " "] +[13.949999999999886, "o", "s"] +[13.979999999999885, "o", "g"] +[14.009999999999884, "o", "r"] +[14.039999999999884, "o", " "] +[14.069999999999883, "o", "t"] +[14.099999999999882, "o", "a"] +[14.129999999999882, "o", "g"] +[14.159999999999881, "o", " "] +[14.18999999999988, "o", "w"] +[14.21999999999988, "o", "e"] +[14.24999999999988, "o", "a"] +[14.279999999999879, "o", "t"] +[14.309999999999878, "o", "h"] +[14.339999999999877, "o", "e"] +[14.369999999999877, "o", "r"] +[14.399999999999876, "o", " "] +[14.429999999999875, "o", "i"] +[14.459999999999875, "o", "n"] +[14.489999999999874, "o", "i"] +[14.519999999999873, "o", "t"] +[14.549999999999873, "o", "i"] +[14.579999999999872, "o", "a"] +[14.609999999999872, "o", "l"] +[14.639999999999871, "o", "_"] +[14.66999999999987, "o", "d"] +[14.69999999999987, "o", "a"] +[14.729999999999869, "o", "t"] +[14.759999999999868, "o", "a"] +[14.789999999999868, "o", "\r\n"] +[14.819999999999867, "o", "\u001b[0m"] +[14.849999999999866, "o", "\r\n"] +[15.218535518646107, "o", "Initialized empty repository weather\r\n"] +[15.572910642623768, "o", "Committing weather...\r\n"] +[15.592315053939686, "o", "Processing table rdu\r\n"] +[15.777440404891834, "o", "Committed weather as 8dbec6c5c917.\r\n"] +[16.14981446266161, "o", "Tagged weather:8dbec6c5c917af47cd86dcc1fd0901a76652e9a89b6284211a865a4f8be7ab3d with initial_data.\r\n"] +[16.17981446266161, "o", "\u001b[1m"] +[16.209814462661612, "o", "\u001b[36m"] +[16.239814462661613, "o", "\u001b[91m"] +[16.269814462661614, "o", "$"] +[16.299814462661615, "o", " "] +[16.329814462661616, "o", "\u001b[0m"] +[21.359814462661618, "o", "\u001b[H"] +[21.38981446266162, "o", "\u001b[J"] +[21.41981446266162, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset to Splitgraph"] +[21.44981446266162, "o", "\r\n"] +[21.479814462661622, "o", "$"] +[21.509814462661623, "o", " "] +[21.539814462661624, "o", "s"] +[21.569814462661625, "o", "g"] +[21.599814462661627, "o", "r"] +[21.629814462661628, "o", " "] +[21.65981446266163, "o", "p"] +[21.68981446266163, "o", "u"] +[21.71981446266163, "o", "s"] +[21.749814462661632, "o", "h"] +[21.779814462661633, "o", " "] +[21.809814462661635, "o", "w"] +[21.839814462661636, "o", "e"] +[21.869814462661637, "o", "a"] +[21.899814462661638, "o", "t"] +[21.92981446266164, "o", "h"] +[21.95981446266164, "o", "e"] +[21.98981446266164, "o", "r"] +[22.019814462661643, "o", "\r\n"] +[22.049814462661644, "o", "\u001b[0m"] +[22.079814462661645, "o", "\r\n"] +[22.43920662879934, "o", "Pushing weather to splitgraph-demo/weather on remote data.splitgraph.com\r\n"] +[22.439279584884545, "o", "Gathering remote metadata...\r\n"] +[23.439279584884545, "o", "No objects to upload.\r\n"] +[24.439279584884545, "o", "Uploaded metadata for 2 images, 1 table, 0 objects and 1 tag.\r\n"] +[24.444431333541772, "o", "Setting upstream for weather to splitgraph-demo/weather.\r\n"] +[24.474431333541773, "o", "\u001b[1m"] +[24.504431333541774, "o", "\u001b[36m"] +[24.534431333541775, "o", "\u001b[91m"] +[24.564431333541776, "o", "$"] +[24.594431333541777, "o", " "] +[24.62443133354178, "o", "\u001b[0m"] +[29.65443133354178, "o", "\u001b[H"] +[29.68443133354178, "o", "\u001b[J"] +[29.714431333541782, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Upload some dataset metadata as well."] +[29.744431333541783, "o", "\r\n"] +[29.774431333541784, "o", "$"] +[29.804431333541785, "o", " "] +[29.834431333541787, "o", "c"] +[29.864431333541788, "o", "a"] +[29.89443133354179, "o", "t"] +[29.92443133354179, "o", " "] +[29.95443133354179, "o", "d"] +[29.984431333541792, "o", "a"] +[30.014431333541793, "o", "t"] +[30.044431333541795, "o", "a"] +[30.074431333541796, "o", "s"] +[30.104431333541797, "o", "e"] +[30.134431333541798, "o", "t"] +[30.1644313335418, "o", "-"] +[30.1944313335418, "o", "m"] +[30.2244313335418, "o", "e"] +[30.254431333541802, "o", "t"] +[30.284431333541804, "o", "a"] +[30.314431333541805, "o", "d"] +[30.344431333541806, "o", "a"] +[30.374431333541807, "o", "t"] +[30.404431333541808, "o", "a"] +[30.43443133354181, "o", "."] +[30.46443133354181, "o", "y"] +[30.49443133354181, "o", "m"] +[30.524431333541813, "o", "l"] +[30.554431333541814, "o", "\r\n"] +[30.584431333541815, "o", "$"] +[30.614431333541816, "o", " "] +[30.644431333541817, "o", "c"] +[30.67443133354182, "o", "a"] +[30.70443133354182, "o", "t"] +[30.73443133354182, "o", " "] +[30.764431333541822, "o", "d"] +[30.794431333541823, "o", "a"] +[30.824431333541824, "o", "t"] +[30.854431333541825, "o", "a"] +[30.884431333541826, "o", "s"] +[30.914431333541827, "o", "e"] +[30.94443133354183, "o", "t"] +[30.97443133354183, "o", "-"] +[31.00443133354183, "o", "r"] +[31.034431333541832, "o", "e"] +[31.064431333541833, "o", "a"] +[31.094431333541834, "o", "d"] +[31.124431333541835, "o", "m"] +[31.154431333541837, "o", "e"] +[31.184431333541838, "o", "."] +[31.21443133354184, "o", "m"] +[31.24443133354184, "o", "d"] +[31.27443133354184, "o", "\r\n"] +[31.304431333541842, "o", "$"] +[31.334431333541843, "o", " "] +[31.364431333541845, "o", "s"] +[31.394431333541846, "o", "g"] +[31.424431333541847, "o", "r"] +[31.454431333541848, "o", " "] +[31.48443133354185, "o", "c"] +[31.51443133354185, "o", "l"] +[31.54443133354185, "o", "o"] +[31.574431333541852, "o", "u"] +[31.604431333541854, "o", "d"] +[31.634431333541855, "o", " "] +[31.664431333541856, "o", "m"] +[31.694431333541857, "o", "e"] +[31.724431333541858, "o", "t"] +[31.75443133354186, "o", "a"] +[31.78443133354186, "o", "d"] +[31.81443133354186, "o", "a"] +[31.844431333541863, "o", "t"] +[31.874431333541864, "o", "a"] +[31.904431333541865, "o", " "] +[31.934431333541866, "o", "s"] +[31.964431333541867, "o", "p"] +[31.99443133354187, "o", "l"] +[32.02443133354187, "o", "i"] +[32.05443133354187, "o", "t"] +[32.08443133354187, "o", "g"] +[32.11443133354187, "o", "r"] +[32.144431333541874, "o", "a"] +[32.174431333541875, "o", "p"] +[32.204431333541876, "o", "h"] +[32.23443133354188, "o", "-"] +[32.26443133354188, "o", "d"] +[32.29443133354188, "o", "e"] +[32.32443133354188, "o", "m"] +[32.35443133354188, "o", "o"] +[32.38443133354188, "o", "/"] +[32.414431333541884, "o", "w"] +[32.444431333541885, "o", "e"] +[32.47443133354189, "o", "a"] +[32.50443133354189, "o", "t"] +[32.53443133354189, "o", "h"] +[32.56443133354189, "o", "e"] +[32.59443133354189, "o", "r"] +[32.62443133354189, "o", " "] +[32.65443133354189, "o", "d"] +[32.684431333541895, "o", "a"] +[32.714431333541896, "o", "t"] +[32.7444313335419, "o", "a"] +[32.7744313335419, "o", "s"] +[32.8044313335419, "o", "e"] +[32.8344313335419, "o", "t"] +[32.8644313335419, "o", "-"] +[32.8944313335419, "o", "m"] +[32.924431333541904, "o", "e"] +[32.954431333541905, "o", "t"] +[32.984431333541906, "o", "a"] +[33.01443133354191, "o", "d"] +[33.04443133354191, "o", "a"] +[33.07443133354191, "o", "t"] +[33.10443133354191, "o", "a"] +[33.13443133354191, "o", "."] +[33.16443133354191, "o", "y"] +[33.194431333541914, "o", "m"] +[33.224431333541915, "o", "l"] +[33.254431333541916, "o", "\r\n"] +[33.28443133354192, "o", "\u001b[0m"] +[33.31443133354192, "o", "\r\n"] +[33.3155986309052, "o", "# This is a sample dataset metadata file that's used\r\n# to update the dataset's README and description.\r\n\r\nreadme: dataset-readme.md\r\ndescription: Weather history in Raleigh-Durham International airport joined with US domestic flights data (uploaded from Splitgraph release CI)\r\n"] +[33.31657280921941, "o", "# Sample dataset README\r\n\r\nDataset of weather history in Raleigh-Durham International airport, joined with\r\n[US domestic flights data](/splitgraph/domestic_us_flights).\r\n\r\nThis dataset was uploaded from a CI job.\r\n\r\n## Source\r\n\r\n[data.gov](https://catalog.data.gov/dataset/local-weather-archive)\r\n"] +[34.16955389976506, "o", "Metadata updated for repository splitgraph-demo/weather.\r\n"] +[34.199553899765064, "o", "\u001b[1m"] +[34.229553899765065, "o", "\u001b[36m"] +[34.259553899765066, "o", "\u001b[91m"] +[34.28955389976507, "o", "$"] +[34.31955389976507, "o", " "] +[34.34955389976507, "o", "\u001b[0m"] +[40.15443133354178, "o", "\u001b[H"] +[40.18443133354178, "o", "\u001b[J"] +[40.21443133354178, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Perform a request against an automatically-generated"] +[40.24443133354178, "o", "\r\n"] +[40.274431333541784, "o", "$ # Postgrest (https://postgrest.org) endpoint.\r\n"] +[40.304431333541785, "o", "$"] +[40.33443133354179, "o", " "] +[40.36443133354179, "o", "c"] +[40.39443133354179, "o", "u"] +[40.42443133354179, "o", "r"] +[40.45443133354179, "o", "l"] +[40.48443133354179, "o", " "] +[40.51443133354179, "o", "\""] +[40.544431333541795, "o", "h"] +[40.574431333541796, "o", "t"] +[40.6044313335418, "o", "t"] +[40.6344313335418, "o", "p"] +[40.6644313335418, "o", "s"] +[40.6944313335418, "o", ":"] +[40.7244313335418, "o", "/"] +[40.7544313335418, "o", "/"] +[40.784431333541804, "o", "d"] +[40.814431333541805, "o", "a"] +[40.844431333541806, "o", "t"] +[40.87443133354181, "o", "a"] +[40.90443133354181, "o", "."] +[40.93443133354181, "o", "s"] +[40.96443133354181, "o", "p"] +[40.99443133354181, "o", "l"] +[41.02443133354181, "o", "i"] +[41.054431333541814, "o", "t"] +[41.084431333541815, "o", "g"] +[41.114431333541816, "o", "r"] +[41.14443133354182, "o", "a"] +[41.17443133354182, "o", "p"] +[41.20443133354182, "o", "h"] +[41.23443133354182, "o", "."] +[41.26443133354182, "o", "c"] +[41.29443133354182, "o", "o"] +[41.324431333541824, "o", "m"] +[41.354431333541825, "o", "/"] +[41.384431333541826, "o", "s"] +[41.41443133354183, "o", "p"] +[41.44443133354183, "o", "l"] +[41.47443133354183, "o", "i"] +[41.50443133354183, "o", "t"] +[41.53443133354183, "o", "g"] +[41.56443133354183, "o", "r"] +[41.594431333541834, "o", "a"] +[41.624431333541835, "o", "p"] +[41.65443133354184, "o", "h"] +[41.68443133354184, "o", "-"] +[41.71443133354184, "o", "d"] +[41.74443133354184, "o", "e"] +[41.77443133354184, "o", "m"] +[41.80443133354184, "o", "o"] +[41.83443133354184, "o", "/"] +[41.864431333541845, "o", "w"] +[41.894431333541846, "o", "e"] +[41.92443133354185, "o", "a"] +[41.95443133354185, "o", "t"] +[41.98443133354185, "o", "h"] +[42.01443133354185, "o", "e"] +[42.04443133354185, "o", "r"] +[42.07443133354185, "o", "/"] +[42.104431333541854, "o", "i"] +[42.134431333541855, "o", "n"] +[42.164431333541856, "o", "i"] +[42.19443133354186, "o", "t"] +[42.22443133354186, "o", "i"] +[42.25443133354186, "o", "a"] +[42.28443133354186, "o", "l"] +[42.31443133354186, "o", "_"] +[42.34443133354186, "o", "d"] +[42.374431333541864, "o", "a"] +[42.404431333541865, "o", "t"] +[42.434431333541866, "o", "a"] +[42.46443133354187, "o", "/"] +[42.49443133354187, "o", "-"] +[42.52443133354187, "o", "/"] +[42.55443133354187, "o", "r"] +[42.58443133354187, "o", "e"] +[42.61443133354187, "o", "s"] +[42.644431333541874, "o", "t"] +[42.674431333541875, "o", "/"] +[42.704431333541876, "o", "r"] +[42.73443133354188, "o", "d"] +[42.76443133354188, "o", "u"] +[42.79443133354188, "o", "?"] +[42.82443133354188, "o", "d"] +[42.85443133354188, "o", "a"] +[42.88443133354188, "o", "t"] +[42.914431333541884, "o", "e"] +[42.944431333541885, "o", "="] +[42.97443133354189, "o", "e"] +[43.00443133354189, "o", "q"] +[43.03443133354189, "o", "."] +[43.06443133354189, "o", "2"] +[43.09443133354189, "o", "0"] +[43.12443133354189, "o", "0"] +[43.15443133354189, "o", "9"] +[43.184431333541895, "o", "-"] +[43.214431333541896, "o", "0"] +[43.2444313335419, "o", "8"] +[43.2744313335419, "o", "-"] +[43.3044313335419, "o", "2"] +[43.3344313335419, "o", "5"] +[43.3644313335419, "o", "T"] +[43.3944313335419, "o", "0"] +[43.424431333541904, "o", "0"] +[43.454431333541905, "o", ":"] +[43.484431333541906, "o", "0"] +[43.51443133354191, "o", "0"] +[43.54443133354191, "o", ":"] +[43.57443133354191, "o", "0"] +[43.60443133354191, "o", "0"] +[43.63443133354191, "o", "\""] +[43.66443133354191, "o", "\r\n"] +[43.694431333541914, "o", "\u001b[0m"] +[43.724431333541915, "o", "\r\n"] +[44.17551403999333, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[44.20551403999333, "o", "\u001b[1m"] +[44.23551403999333, "o", "\u001b[36m"] +[44.265514039993334, "o", "\u001b[91m"] +[44.295514039993336, "o", "$"] +[44.32551403999334, "o", " "] +[44.35551403999334, "o", "\u001b[0m"] +[49.38551403999334, "o", "\u001b[H"] +[49.41551403999334, "o", "\u001b[J"] +[49.44551403999334, "o", "\u001b[1m\u001b[36m\u001b[91m$ # sgr also has a shorthand to access the query API"] +[49.47551403999334, "o", "\r\n"] +[49.50551403999334, "o", "$"] +[49.535514039993345, "o", " "] +[49.565514039993346, "o", "s"] +[49.59551403999335, "o", "g"] +[49.62551403999335, "o", "r"] +[49.65551403999335, "o", " "] +[49.68551403999335, "o", "c"] +[49.71551403999335, "o", "l"] +[49.74551403999335, "o", "o"] +[49.775514039993354, "o", "u"] +[49.805514039993355, "o", "d"] +[49.835514039993356, "o", " "] +[49.86551403999336, "o", "c"] +[49.89551403999336, "o", "u"] +[49.92551403999336, "o", "r"] +[49.95551403999336, "o", "l"] +[49.98551403999336, "o", " "] +[50.01551403999336, "o", "s"] +[50.045514039993364, "o", "p"] +[50.075514039993365, "o", "l"] +[50.105514039993366, "o", "i"] +[50.13551403999337, "o", "t"] +[50.16551403999337, "o", "g"] +[50.19551403999337, "o", "r"] +[50.22551403999337, "o", "a"] +[50.25551403999337, "o", "p"] +[50.28551403999337, "o", "h"] +[50.315514039993374, "o", "-"] +[50.345514039993375, "o", "d"] +[50.37551403999338, "o", "e"] +[50.40551403999338, "o", "m"] +[50.43551403999338, "o", "o"] +[50.46551403999338, "o", "/"] +[50.49551403999338, "o", "w"] +[50.52551403999338, "o", "e"] +[50.55551403999338, "o", "a"] +[50.585514039993384, "o", "t"] +[50.615514039993386, "o", "h"] +[50.64551403999339, "o", "e"] +[50.67551403999339, "o", "r"] +[50.70551403999339, "o", ":"] +[50.73551403999339, "o", "i"] +[50.76551403999339, "o", "n"] +[50.79551403999339, "o", "i"] +[50.825514039993394, "o", "t"] +[50.855514039993395, "o", "i"] +[50.885514039993396, "o", "a"] +[50.9155140399934, "o", "l"] +[50.9455140399934, "o", "_"] +[50.9755140399934, "o", "d"] +[51.0055140399934, "o", "a"] +[51.0355140399934, "o", "t"] +[51.0655140399934, "o", "a"] +[51.095514039993404, "o", " "] +[51.125514039993405, "o", "\""] +[51.155514039993406, "o", "r"] +[51.18551403999341, "o", "d"] +[51.21551403999341, "o", "u"] +[51.24551403999341, "o", "?"] +[51.27551403999341, "o", "d"] +[51.30551403999341, "o", "a"] +[51.33551403999341, "o", "t"] +[51.365514039993414, "o", "e"] +[51.395514039993415, "o", "="] +[51.425514039993416, "o", "e"] +[51.45551403999342, "o", "q"] +[51.48551403999342, "o", "."] +[51.51551403999342, "o", "2"] +[51.54551403999342, "o", "0"] +[51.57551403999342, "o", "0"] +[51.60551403999342, "o", "9"] +[51.635514039993424, "o", "-"] +[51.665514039993425, "o", "0"] +[51.69551403999343, "o", "8"] +[51.72551403999343, "o", "-"] +[51.75551403999343, "o", "2"] +[51.78551403999343, "o", "5"] +[51.81551403999343, "o", "T"] +[51.84551403999343, "o", "0"] +[51.87551403999343, "o", "0"] +[51.905514039993434, "o", ":"] +[51.935514039993436, "o", "0"] +[51.96551403999344, "o", "0"] +[51.99551403999344, "o", ":"] +[52.02551403999344, "o", "0"] +[52.05551403999344, "o", "0"] +[52.08551403999344, "o", "\""] +[52.11551403999344, "o", "\r\n"] +[52.145514039993444, "o", "\u001b[0m"] +[52.175514039993445, "o", "\r\n"] +[53.175514039993445, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[53.205514039993446, "o", "\u001b[1m"] +[53.23551403999345, "o", "\u001b[36m"] +[53.26551403999345, "o", "\u001b[91m"] +[53.29551403999345, "o", "$"] +[53.32551403999345, "o", " "] +[53.35551403999345, "o", "\u001b[0m"] +[58.38551403999345, "o", "\u001b[H"] +[58.415514039993454, "o", "\u001b[J"] +[58.445514039993455, "o", "\u001b[1m\u001b[36m\u001b[91m$ # You can also run a query against the Splitgraph Data Delivery Network."] +[58.475514039993456, "o", "\r\n"] +[58.50551403999346, "o", "$ # It supports most PostgresSQL clients and lets you query Splitgraph images and other\r\n"] +[58.53551403999346, "o", "$ # datasets proxied by Splitgraph.\r\n"] +[58.56551403999346, "o", "$"] +[58.59551403999346, "o", " "] +[58.62551403999346, "o", "s"] +[58.65551403999346, "o", "g"] +[58.685514039993464, "o", "r"] +[58.715514039993465, "o", " "] +[58.745514039993466, "o", "c"] +[58.77551403999347, "o", "l"] +[58.80551403999347, "o", "o"] +[58.83551403999347, "o", "u"] +[58.86551403999347, "o", "d"] +[58.89551403999347, "o", " "] +[58.92551403999347, "o", "s"] +[58.955514039993474, "o", "q"] +[58.985514039993475, "o", "l"] +[59.01551403999348, "o", " "] +[59.04551403999348, "o", "\""] +[59.07551403999348, "o", "S"] +[59.10551403999348, "o", "E"] +[59.13551403999348, "o", "L"] +[59.16551403999348, "o", "E"] +[59.19551403999348, "o", "C"] +[59.225514039993485, "o", "T"] +[59.255514039993486, "o", " "] +[59.28551403999349, "o", "d"] +[59.31551403999349, "o", "a"] +[59.34551403999349, "o", "t"] +[59.37551403999349, "o", "e"] +[59.40551403999349, "o", ","] +[59.43551403999349, "o", " "] +[59.465514039993494, "o", "t"] +[59.495514039993495, "o", "e"] +[59.525514039993496, "o", "m"] +[59.5555140399935, "o", "p"] +[59.5855140399935, "o", "e"] +[59.6155140399935, "o", "r"] +[59.6455140399935, "o", "a"] +[59.6755140399935, "o", "t"] +[59.7055140399935, "o", "u"] +[59.735514039993504, "o", "r"] +[59.765514039993505, "o", "e"] +[59.795514039993506, "o", "m"] +[59.82551403999351, "o", "i"] +[59.85551403999351, "o", "n"] +[59.88551403999351, "o", ","] +[59.91551403999351, "o", " "] +[59.94551403999351, "o", "t"] +[59.97551403999351, "o", "e"] +[60.005514039993514, "o", "m"] +[60.035514039993515, "o", "p"] +[60.065514039993516, "o", "e"] +[60.09551403999352, "o", "r"] +[60.12551403999352, "o", "a"] +[60.15551403999352, "o", "t"] +[60.18551403999352, "o", "u"] +[60.21551403999352, "o", "r"] +[60.24551403999352, "o", "e"] +[60.275514039993524, "o", "m"] +[60.305514039993525, "o", "a"] +[60.33551403999353, "o", "x"] +[60.36551403999353, "o", "\r\n "] +[60.39551403999353, "o", "F"] +[60.42551403999353, "o", "R"] +[60.45551403999353, "o", "O"] +[60.48551403999353, "o", "M"] +[60.51551403999353, "o", " "] +[60.545514039993535, "o", "\\"] +[60.575514039993536, "o", "\""] +[60.60551403999354, "o", "s"] +[60.63551403999354, "o", "p"] +[60.66551403999354, "o", "l"] +[60.69551403999354, "o", "i"] +[60.72551403999354, "o", "t"] +[60.75551403999354, "o", "g"] +[60.785514039993544, "o", "r"] +[60.815514039993545, "o", "a"] +[60.845514039993546, "o", "p"] +[60.87551403999355, "o", "h"] +[60.90551403999355, "o", "-"] +[60.93551403999355, "o", "d"] +[60.96551403999355, "o", "e"] +[60.99551403999355, "o", "m"] +[61.02551403999355, "o", "o"] +[61.055514039993554, "o", "/"] +[61.085514039993555, "o", "w"] +[61.115514039993556, "o", "e"] +[61.14551403999356, "o", "a"] +[61.17551403999356, "o", "t"] +[61.20551403999356, "o", "h"] +[61.23551403999356, "o", "e"] +[61.26551403999356, "o", "r"] +[61.29551403999356, "o", ":"] +[61.325514039993564, "o", "i"] +[61.355514039993565, "o", "n"] +[61.385514039993566, "o", "i"] +[61.41551403999357, "o", "t"] +[61.44551403999357, "o", "i"] +[61.47551403999357, "o", "a"] +[61.50551403999357, "o", "l"] +[61.53551403999357, "o", "_"] +[61.56551403999357, "o", "d"] +[61.595514039993574, "o", "a"] +[61.625514039993575, "o", "t"] +[61.65551403999358, "o", "a"] +[61.68551403999358, "o", "\\"] +[61.71551403999358, "o", "\""] +[61.74551403999358, "o", "."] +[61.77551403999358, "o", "r"] +[61.80551403999358, "o", "d"] +[61.83551403999358, "o", "u"] +[61.865514039993585, "o", "\r\n "] +[61.895514039993586, "o", "W"] +[61.92551403999359, "o", "H"] +[61.95551403999359, "o", "E"] +[61.98551403999359, "o", "R"] +[62.01551403999359, "o", "E"] +[62.04551403999359, "o", " "] +[62.07551403999359, "o", "d"] +[62.105514039993594, "o", "a"] +[62.135514039993595, "o", "t"] +[62.165514039993596, "o", "e"] +[62.1955140399936, "o", "_"] +[62.2255140399936, "o", "t"] +[62.2555140399936, "o", "r"] +[62.2855140399936, "o", "u"] +[62.3155140399936, "o", "n"] +[62.3455140399936, "o", "c"] +[62.375514039993604, "o", "("] +[62.405514039993605, "o", "'"] +[62.435514039993606, "o", "m"] +[62.46551403999361, "o", "o"] +[62.49551403999361, "o", "n"] +[62.52551403999361, "o", "t"] +[62.55551403999361, "o", "h"] +[62.58551403999361, "o", "'"] +[62.61551403999361, "o", ","] +[62.645514039993614, "o", " "] +[62.675514039993615, "o", "d"] +[62.705514039993616, "o", "a"] +[62.73551403999362, "o", "t"] +[62.76551403999362, "o", "e"] +[62.79551403999362, "o", ")"] +[62.82551403999362, "o", " "] +[62.85551403999362, "o", "="] +[62.88551403999362, "o", " "] +[62.915514039993624, "o", "'"] +[62.945514039993625, "o", "2"] +[62.97551403999363, "o", "0"] +[63.00551403999363, "o", "0"] +[63.03551403999363, "o", "9"] +[63.06551403999363, "o", "-"] +[63.09551403999363, "o", "0"] +[63.12551403999363, "o", "8"] +[63.15551403999363, "o", "-"] +[63.185514039993635, "o", "0"] +[63.215514039993636, "o", "1"] +[63.24551403999364, "o", "'"] +[63.27551403999364, "o", "\""] +[63.30551403999364, "o", "\r\n"] +[63.33551403999364, "o", "\u001b[0m"] +[63.36551403999364, "o", "\r\n"] +[64.36551403999364, "o", "2009-08-01 00:00:00 73 91.9\r\n2009-08-02 00:00:00 73.9 82.9\r\n2009-08-03 00:00:00 70 95\r\n2009-08-04 00:00:00 66.9 95\r\n2009-08-05 00:00:00 72 96.1\r\n2009-08-06 00:00:00 70 84.9\r\n2009-08-07 00:00:00 68 88\r\n2009-08-08 00:00:00 69.1 91\r\n2009-08-09 00:00:00 70 99\r\n2009-08-10 00:00:00 72 99\r\n"] +[64.39551403999364, "o", "\u001b[1m"] +[64.42551403999364, "o", "\u001b[36m"] +[64.45551403999364, "o", "\u001b[91m"] +[64.48551403999365, "o", "$"] +[64.51551403999365, "o", " "] +[64.54551403999365, "o", "\u001b[0m"] +[69.57551403999365, "o", "\u001b[H"] +[69.60551403999365, "o", "\u001b[J"] +[69.63551403999365, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The query API also supports running one-off Splitfile commands against a repository,"] +[69.66551403999365, "o", "\r\n"] +[69.69551403999365, "o", "$ # creating new images that can be pulled. sgr handles authentication for this automatically.\r\n"] +[69.72551403999366, "o", "$"] +[69.75551403999366, "o", " "] +[69.78551403999366, "o", "c"] +[69.81551403999366, "o", "a"] +[69.84551403999366, "o", "t"] +[69.87551403999366, "o", " "] +[69.90551403999366, "o", "r"] +[69.93551403999366, "o", "e"] +[69.96551403999366, "o", "q"] +[69.99551403999367, "o", "u"] +[70.02551403999367, "o", "e"] +[70.05551403999367, "o", "s"] +[70.08551403999367, "o", "t"] +[70.11551403999367, "o", "_"] +[70.14551403999367, "o", "1"] +[70.17551403999367, "o", "."] +[70.20551403999367, "o", "j"] +[70.23551403999367, "o", "s"] +[70.26551403999368, "o", "o"] +[70.29551403999368, "o", "n"] +[70.32551403999368, "o", "\r\n"] +[70.35551403999368, "o", "$"] +[70.38551403999368, "o", " "] +[70.41551403999368, "o", "s"] +[70.44551403999368, "o", "g"] +[70.47551403999368, "o", "r"] +[70.50551403999368, "o", " "] +[70.53551403999369, "o", "c"] +[70.56551403999369, "o", "l"] +[70.59551403999369, "o", "o"] +[70.62551403999369, "o", "u"] +[70.65551403999369, "o", "d"] +[70.68551403999369, "o", " "] +[70.71551403999369, "o", "c"] +[70.7455140399937, "o", "u"] +[70.7755140399937, "o", "r"] +[70.8055140399937, "o", "l"] +[70.8355140399937, "o", " "] +[70.8655140399937, "o", "-"] +[70.8955140399937, "o", "t"] +[70.9255140399937, "o", " "] +[70.9555140399937, "o", "s"] +[70.9855140399937, "o", "p"] +[71.0155140399937, "o", "l"] +[71.0455140399937, "o", "i"] +[71.0755140399937, "o", "t"] +[71.10551403999371, "o", "f"] +[71.13551403999371, "o", "i"] +[71.16551403999371, "o", "l"] +[71.19551403999371, "o", "e"] +[71.22551403999371, "o", " "] +[71.25551403999371, "o", "s"] +[71.28551403999371, "o", "p"] +[71.31551403999372, "o", "l"] +[71.34551403999372, "o", "i"] +[71.37551403999372, "o", "t"] +[71.40551403999372, "o", "g"] +[71.43551403999372, "o", "r"] +[71.46551403999372, "o", "a"] +[71.49551403999372, "o", "p"] +[71.52551403999372, "o", "h"] +[71.55551403999372, "o", "-"] +[71.58551403999373, "o", "d"] +[71.61551403999373, "o", "e"] +[71.64551403999373, "o", "m"] +[71.67551403999373, "o", "o"] +[71.70551403999373, "o", "/"] +[71.73551403999373, "o", "w"] +[71.76551403999373, "o", "e"] +[71.79551403999373, "o", "a"] +[71.82551403999373, "o", "t"] +[71.85551403999374, "o", "h"] +[71.88551403999374, "o", "e"] +[71.91551403999374, "o", "r"] +[71.94551403999374, "o", ":"] +[71.97551403999374, "o", "i"] +[72.00551403999374, "o", "n"] +[72.03551403999374, "o", "i"] +[72.06551403999374, "o", "t"] +[72.09551403999374, "o", "i"] +[72.12551403999375, "o", "a"] +[72.15551403999375, "o", "l"] +[72.18551403999375, "o", "_"] +[72.21551403999375, "o", "d"] +[72.24551403999375, "o", "a"] +[72.27551403999375, "o", "t"] +[72.30551403999375, "o", "a"] +[72.33551403999375, "o", " "] +[72.36551403999376, "o", "@"] +[72.39551403999376, "o", "r"] +[72.42551403999376, "o", "e"] +[72.45551403999376, "o", "q"] +[72.48551403999376, "o", "u"] +[72.51551403999376, "o", "e"] +[72.54551403999376, "o", "s"] +[72.57551403999376, "o", "t"] +[72.60551403999376, "o", "_"] +[72.63551403999377, "o", "1"] +[72.66551403999377, "o", "."] +[72.69551403999377, "o", "j"] +[72.72551403999377, "o", "s"] +[72.75551403999377, "o", "o"] +[72.78551403999377, "o", "n"] +[72.81551403999377, "o", "\r\n"] +[72.84551403999377, "o", "\u001b[0m"] +[72.87551403999377, "o", "\r\n"] +[72.87659431457568, "o", "{\"command\": \"FROM splitgraph/domestic_us_flights:latest IMPORT {SELECT fly_month, SUM(passengers) AS total_passengers FROM flights WHERE origin_airport = 'RDU' OR destination_airport = 'RDU' GROUP BY fly_month ORDER BY fly_month} AS flights\",\r\n \"tag\": \"with_flight_data\"}\r\n\r\n"] +[73.87659431457568, "o", "{\"image_hash\":\"5564509268b49f739e0566d96251fd9fc25db916eacede011b5bd14cd8afd257\"}"] +[73.90659431457568, "o", "\u001b[1m"] +[73.93659431457569, "o", "\u001b[36m"] +[73.96659431457569, "o", "\u001b[91m"] +[73.99659431457569, "o", "$"] +[74.02659431457569, "o", " "] +[74.05659431457569, "o", "\u001b[0m"] +[79.08659431457569, "o", "\u001b[H"] +[79.11659431457569, "o", "\u001b[J"] +[79.1465943145757, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run another command against the new layer to join the two datasets"] +[79.1765943145757, "o", "\r\n"] +[79.2065943145757, "o", "$"] +[79.2365943145757, "o", " "] +[79.2665943145757, "o", "c"] +[79.2965943145757, "o", "a"] +[79.3265943145757, "o", "t"] +[79.3565943145757, "o", " "] +[79.3865943145757, "o", "r"] +[79.4165943145757, "o", "e"] +[79.4465943145757, "o", "q"] +[79.4765943145757, "o", "u"] +[79.50659431457571, "o", "e"] +[79.53659431457571, "o", "s"] +[79.56659431457571, "o", "t"] +[79.59659431457571, "o", "_"] +[79.62659431457571, "o", "2"] +[79.65659431457571, "o", "."] +[79.68659431457571, "o", "j"] +[79.71659431457572, "o", "s"] +[79.74659431457572, "o", "o"] +[79.77659431457572, "o", "n"] +[79.80659431457572, "o", "\r\n"] +[79.83659431457572, "o", "$"] +[79.86659431457572, "o", " "] +[79.89659431457572, "o", "s"] +[79.92659431457572, "o", "g"] +[79.95659431457572, "o", "r"] +[79.98659431457573, "o", " "] +[80.01659431457573, "o", "c"] +[80.04659431457573, "o", "l"] +[80.07659431457573, "o", "o"] +[80.10659431457573, "o", "u"] +[80.13659431457573, "o", "d"] +[80.16659431457573, "o", " "] +[80.19659431457573, "o", "c"] +[80.22659431457573, "o", "u"] +[80.25659431457574, "o", "r"] +[80.28659431457574, "o", "l"] +[80.31659431457574, "o", " "] +[80.34659431457574, "o", "-"] +[80.37659431457574, "o", "t"] +[80.40659431457574, "o", " "] +[80.43659431457574, "o", "s"] +[80.46659431457574, "o", "p"] +[80.49659431457574, "o", "l"] +[80.52659431457575, "o", "i"] +[80.55659431457575, "o", "t"] +[80.58659431457575, "o", "f"] +[80.61659431457575, "o", "i"] +[80.64659431457575, "o", "l"] +[80.67659431457575, "o", "e"] +[80.70659431457575, "o", " "] +[80.73659431457575, "o", "s"] +[80.76659431457576, "o", "p"] +[80.79659431457576, "o", "l"] +[80.82659431457576, "o", "i"] +[80.85659431457576, "o", "t"] +[80.88659431457576, "o", "g"] +[80.91659431457576, "o", "r"] +[80.94659431457576, "o", "a"] +[80.97659431457576, "o", "p"] +[81.00659431457576, "o", "h"] +[81.03659431457577, "o", "-"] +[81.06659431457577, "o", "d"] +[81.09659431457577, "o", "e"] +[81.12659431457577, "o", "m"] +[81.15659431457577, "o", "o"] +[81.18659431457577, "o", "/"] +[81.21659431457577, "o", "w"] +[81.24659431457577, "o", "e"] +[81.27659431457577, "o", "a"] +[81.30659431457578, "o", "t"] +[81.33659431457578, "o", "h"] +[81.36659431457578, "o", "e"] +[81.39659431457578, "o", "r"] +[81.42659431457578, "o", ":"] +[81.45659431457578, "o", "w"] +[81.48659431457578, "o", "i"] +[81.51659431457578, "o", "t"] +[81.54659431457578, "o", "h"] +[81.57659431457579, "o", "_"] +[81.60659431457579, "o", "f"] +[81.63659431457579, "o", "l"] +[81.66659431457579, "o", "i"] +[81.69659431457579, "o", "g"] +[81.72659431457579, "o", "h"] +[81.75659431457579, "o", "t"] +[81.7865943145758, "o", "_"] +[81.8165943145758, "o", "d"] +[81.8465943145758, "o", "a"] +[81.8765943145758, "o", "t"] +[81.9065943145758, "o", "a"] +[81.9365943145758, "o", " "] +[81.9665943145758, "o", "@"] +[81.9965943145758, "o", "r"] +[82.0265943145758, "o", "e"] +[82.0565943145758, "o", "q"] +[82.0865943145758, "o", "u"] +[82.1165943145758, "o", "e"] +[82.14659431457581, "o", "s"] +[82.17659431457581, "o", "t"] +[82.20659431457581, "o", "_"] +[82.23659431457581, "o", "2"] +[82.26659431457581, "o", "."] +[82.29659431457581, "o", "j"] +[82.32659431457581, "o", "s"] +[82.35659431457582, "o", "o"] +[82.38659431457582, "o", "n"] +[82.41659431457582, "o", "\r\n"] +[82.44659431457582, "o", "\u001b[0m"] +[82.47659431457582, "o", "\r\n"] +[82.47759305000368, "o", "{\"command\": \"SQL CREATE TABLE rdu_flights_weather AS ( WITH monthly_summary AS (SELECT date_trunc ('month', date) AS month, AVG(temperaturemin) AS tmin_avg, AVG(temperaturemax) AS tmax_avg FROM rdu GROUP BY month) SELECT w.month, w.tmin_avg, w.tmax_avg, f.total_passengers FROM monthly_summary w JOIN flights f ON w.month = f.fly_month)\",\r\n \"tag\": \"joined_data\"}\r\n\r\n"] +[83.47759305000368, "o", "{\"image_hash\":\"f3ff444a1db3101b36adda769910b316e0f0eb1e6e71924fdc45057b675b258c\"}"] +[83.50759305000368, "o", "\u001b[1m"] +[83.53759305000368, "o", "\u001b[36m"] +[83.56759305000368, "o", "\u001b[91m"] +[83.59759305000368, "o", "$"] +[83.62759305000368, "o", " "] +[83.65759305000368, "o", "\u001b[0m"] +[88.68759305000368, "o", "\u001b[H"] +[88.71759305000369, "o", "\u001b[J"] +[88.74759305000369, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Pull the dataset and check out the new image"] +[88.77759305000369, "o", "\r\n"] +[88.80759305000369, "o", "$"] +[88.83759305000369, "o", " "] +[88.86759305000369, "o", "s"] +[88.89759305000369, "o", "g"] +[88.9275930500037, "o", "r"] +[88.9575930500037, "o", " "] +[88.9875930500037, "o", "p"] +[89.0175930500037, "o", "u"] +[89.0475930500037, "o", "l"] +[89.0775930500037, "o", "l"] +[89.1075930500037, "o", " "] +[89.1375930500037, "o", "w"] +[89.1675930500037, "o", "e"] +[89.1975930500037, "o", "a"] +[89.2275930500037, "o", "t"] +[89.2575930500037, "o", "h"] +[89.28759305000371, "o", "e"] +[89.31759305000371, "o", "r"] +[89.34759305000371, "o", "\r\n"] +[89.37759305000371, "o", "$"] +[89.40759305000371, "o", " "] +[89.43759305000371, "o", "s"] +[89.46759305000371, "o", "g"] +[89.49759305000372, "o", "r"] +[89.52759305000372, "o", " "] +[89.55759305000372, "o", "c"] +[89.58759305000372, "o", "h"] +[89.61759305000372, "o", "e"] +[89.64759305000372, "o", "c"] +[89.67759305000372, "o", "k"] +[89.70759305000372, "o", "o"] +[89.73759305000372, "o", "u"] +[89.76759305000373, "o", "t"] +[89.79759305000373, "o", " "] +[89.82759305000373, "o", "w"] +[89.85759305000373, "o", "e"] +[89.88759305000373, "o", "a"] +[89.91759305000373, "o", "t"] +[89.94759305000373, "o", "h"] +[89.97759305000373, "o", "e"] +[90.00759305000373, "o", "r"] +[90.03759305000374, "o", ":"] +[90.06759305000374, "o", "j"] +[90.09759305000374, "o", "o"] +[90.12759305000374, "o", "i"] +[90.15759305000374, "o", "n"] +[90.18759305000374, "o", "e"] +[90.21759305000374, "o", "d"] +[90.24759305000374, "o", "_"] +[90.27759305000374, "o", "d"] +[90.30759305000375, "o", "a"] +[90.33759305000375, "o", "t"] +[90.36759305000375, "o", "a"] +[90.39759305000375, "o", "\r\n"] +[90.42759305000375, "o", "\u001b[0m"] +[90.45759305000375, "o", "\r\n"] +[90.801807966233, "o", "Gathering remote metadata...\r\n"] +[91.801807966233, "o", "Fetched metadata for 2 images, 5 tables, 2 objects and 2 tags.\r\n"] +[92.20174774169992, "o", "Need to download 1 object (3.02 KiB), cache occupancy: 0.00 B/10.00 GiB\r\n"] +[92.2516518497474, "o", "Fetching 1 object, total size 3.02 KiB\r\n"] +[92.25232633590768, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (85b17bb993c0441f83f3619be8faba12@data.splitgraph.com:5432/sgregistry)...\r\n"] +[93.25232633590768, "o", "\r 0%| | 0/1 [00:00 Foreign Scan on precinct_results (cost=20.00..489234.00 rows=489234 width=1)\r\nFilter: ((state)::text = 'New York'::text)\r\nMulticorn: Original Multicorn quals: [state = New York]\r\nMulticorn: CNF quals: [[('state', '=', 'New York')]]\r\nMulticorn: Objects removed by filter: 15\r\nMulticorn: Scan through 5 object(s) (6.63 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining false, Optimization false, Expressions true, Deforming true\r\n"] +[13.639999999999912, "o", "\u001b[1m"] +[13.669999999999911, "o", "\u001b[36m"] +[13.69999999999991, "o", "\u001b[91m"] +[13.72999999999991, "o", "$"] +[13.75999999999991, "o", " "] +[13.789999999999909, "o", "\u001b[0m"] +[18.819999999999908, "o", "\u001b[H"] +[18.84999999999991, "o", "\u001b[J"] +[18.87999999999991, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Currently we have no fragments in cache. Let's run this query and check the cache again"] +[18.90999999999991, "o", "\r\n"] +[18.939999999999912, "o", "$"] +[18.969999999999914, "o", " "] +[18.999999999999915, "o", "s"] +[19.029999999999916, "o", "g"] +[19.059999999999917, "o", "r"] +[19.089999999999918, "o", " "] +[19.11999999999992, "o", "o"] +[19.14999999999992, "o", "b"] +[19.17999999999992, "o", "j"] +[19.209999999999923, "o", "e"] +[19.239999999999924, "o", "c"] +[19.269999999999925, "o", "t"] +[19.299999999999926, "o", "s"] +[19.329999999999927, "o", " "] +[19.35999999999993, "o", "-"] +[19.38999999999993, "o", "-"] +[19.41999999999993, "o", "l"] +[19.449999999999932, "o", "o"] +[19.479999999999933, "o", "c"] +[19.509999999999934, "o", "a"] +[19.539999999999935, "o", "l"] +[19.569999999999936, "o", "\r\n"] +[19.599999999999937, "o", "$"] +[19.62999999999994, "o", " "] +[19.65999999999994, "o", "s"] +[19.68999999999994, "o", "g"] +[19.719999999999942, "o", "r"] +[19.749999999999943, "o", " "] +[19.779999999999944, "o", "s"] +[19.809999999999945, "o", "q"] +[19.839999999999947, "o", "l"] +[19.869999999999948, "o", " "] +[19.89999999999995, "o", "-"] +[19.92999999999995, "o", "-"] +[19.95999999999995, "o", "i"] +[19.989999999999952, "o", "m"] +[20.019999999999953, "o", "a"] +[20.049999999999955, "o", "g"] +[20.079999999999956, "o", "e"] +[20.109999999999957, "o", " "] +[20.139999999999958, "o", "s"] +[20.16999999999996, "o", "p"] +[20.19999999999996, "o", "l"] +[20.22999999999996, "o", "i"] +[20.259999999999962, "o", "t"] +[20.289999999999964, "o", "g"] +[20.319999999999965, "o", "r"] +[20.349999999999966, "o", "a"] +[20.379999999999967, "o", "p"] +[20.409999999999968, "o", "h"] +[20.43999999999997, "o", "/"] +[20.46999999999997, "o", "2"] +[20.49999999999997, "o", "0"] +[20.529999999999973, "o", "1"] +[20.559999999999974, "o", "6"] +[20.589999999999975, "o", "_"] +[20.619999999999976, "o", "e"] +[20.649999999999977, "o", "l"] +[20.67999999999998, "o", "e"] +[20.70999999999998, "o", "c"] +[20.73999999999998, "o", "t"] +[20.769999999999982, "o", "i"] +[20.799999999999983, "o", "o"] +[20.829999999999984, "o", "n"] +[20.859999999999985, "o", ":"] +[20.889999999999986, "o", "l"] +[20.919999999999987, "o", "a"] +[20.94999999999999, "o", "t"] +[20.97999999999999, "o", "e"] +[21.00999999999999, "o", "s"] +[21.039999999999992, "o", "t"] +[21.069999999999993, "o", " "] +[21.099999999999994, "o", "\\"] +[21.129999999999995, "o", "\r\n "] +[21.159999999999997, "o", "\""] +[21.189999999999998, "o", "S"] +[21.22, "o", "E"] +[21.25, "o", "L"] +[21.28, "o", "E"] +[21.310000000000002, "o", "C"] +[21.340000000000003, "o", "T"] +[21.370000000000005, "o", " "] +[21.400000000000006, "o", "S"] +[21.430000000000007, "o", "U"] +[21.460000000000008, "o", "M"] +[21.49000000000001, "o", "("] +[21.52000000000001, "o", "v"] +[21.55000000000001, "o", "o"] +[21.580000000000013, "o", "t"] +[21.610000000000014, "o", "e"] +[21.640000000000015, "o", "s"] +[21.670000000000016, "o", ")"] +[21.700000000000017, "o", " "] +[21.730000000000018, "o", "F"] +[21.76000000000002, "o", "R"] +[21.79000000000002, "o", "O"] +[21.82000000000002, "o", "M"] +[21.850000000000023, "o", " "] +[21.880000000000024, "o", "p"] +[21.910000000000025, "o", "r"] +[21.940000000000026, "o", "e"] +[21.970000000000027, "o", "c"] +[22.00000000000003, "o", "i"] +[22.03000000000003, "o", "n"] +[22.06000000000003, "o", "c"] +[22.090000000000032, "o", "t"] +[22.120000000000033, "o", "_"] +[22.150000000000034, "o", "r"] +[22.180000000000035, "o", "e"] +[22.210000000000036, "o", "s"] +[22.240000000000038, "o", "u"] +[22.27000000000004, "o", "l"] +[22.30000000000004, "o", "t"] +[22.33000000000004, "o", "s"] +[22.360000000000042, "o", " "] +[22.390000000000043, "o", "W"] +[22.420000000000044, "o", "H"] +[22.450000000000045, "o", "E"] +[22.480000000000047, "o", "R"] +[22.510000000000048, "o", "E"] +[22.54000000000005, "o", " "] +[22.57000000000005, "o", "s"] +[22.60000000000005, "o", "t"] +[22.630000000000052, "o", "a"] +[22.660000000000053, "o", "t"] +[22.690000000000055, "o", "e"] +[22.720000000000056, "o", " "] +[22.750000000000057, "o", "="] +[22.780000000000058, "o", " "] +[22.81000000000006, "o", "'"] +[22.84000000000006, "o", "N"] +[22.87000000000006, "o", "e"] +[22.900000000000063, "o", "w"] +[22.930000000000064, "o", " "] +[22.960000000000065, "o", "Y"] +[22.990000000000066, "o", "o"] +[23.020000000000067, "o", "r"] +[23.050000000000068, "o", "k"] +[23.08000000000007, "o", "'"] +[23.11000000000007, "o", "\""] +[23.14000000000007, "o", "\r\n"] +[23.170000000000073, "o", "$"] +[23.200000000000074, "o", " "] +[23.230000000000075, "o", "s"] +[23.260000000000076, "o", "g"] +[23.290000000000077, "o", "r"] +[23.32000000000008, "o", " "] +[23.35000000000008, "o", "o"] +[23.38000000000008, "o", "b"] +[23.410000000000082, "o", "j"] +[23.440000000000083, "o", "e"] +[23.470000000000084, "o", "c"] +[23.500000000000085, "o", "t"] +[23.530000000000086, "o", "s"] +[23.560000000000088, "o", " "] +[23.59000000000009, "o", "-"] +[23.62000000000009, "o", "-"] +[23.65000000000009, "o", "l"] +[23.680000000000092, "o", "o"] +[23.710000000000093, "o", "c"] +[23.740000000000094, "o", "a"] +[23.770000000000095, "o", "l"] +[23.800000000000097, "o", "\r\n"] +[23.830000000000098, "o", "\u001b[0m"] +[23.8600000000001, "o", "\r\n"] +[24.267191276550392, "o", "\r\n"] +[25.267191276550392, "o", "7.91188e+06\r\n"] +[25.675587282180885, "o", "o65dbd9dc992982689ec65866ab733be69c897c659d93488457a2fccb63e97c\r\no974b20261ee5f1ac124a8445a65c00e6377cfabb93b5db92bd60fc7ca3fcee\r\no9c33b53f1a4872c598ad9d08aaafd78fabce1f16ef4c5e19ad9756b9b85fda\r\no9d4cf85101cc4d431c895998cf1cad642f1fe6cd923c8209f2df38441afeeb\r\noc438159794e378ca23c306143ccdc7ce1683045f80a511aeeabb19302be63d\r\n"] +[25.705587282180886, "o", "\u001b[1m"] +[25.735587282180887, "o", "\u001b[36m"] +[25.76558728218089, "o", "\u001b[91m"] +[25.79558728218089, "o", "$"] +[25.82558728218089, "o", " "] +[25.855587282180892, "o", "\u001b[0m"] +[30.885587282180893, "o", "\u001b[H"] +[30.915587282180894, "o", "\u001b[J"] +[30.945587282180895, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Since default indexing in Splitgraph is done by min-max values for every column"] +[30.975587282180896, "o", "\r\n"] +[31.005587282180898, "o", "$ # in every fragment, it's going to do worse if multiple fragments span the same value\r\n"] +[31.0355872821809, "o", "$"] +[31.0655872821809, "o", " "] +[31.0955872821809, "o", "s"] +[31.125587282180902, "o", "g"] +[31.155587282180903, "o", "r"] +[31.185587282180904, "o", " "] +[31.215587282180906, "o", "s"] +[31.245587282180907, "o", "q"] +[31.275587282180908, "o", "l"] +[31.30558728218091, "o", " "] +[31.33558728218091, "o", "-"] +[31.36558728218091, "o", "-"] +[31.395587282180912, "o", "i"] +[31.425587282180913, "o", "m"] +[31.455587282180915, "o", "a"] +[31.485587282180916, "o", "g"] +[31.515587282180917, "o", "e"] +[31.545587282180918, "o", " "] +[31.57558728218092, "o", "s"] +[31.60558728218092, "o", "p"] +[31.63558728218092, "o", "l"] +[31.665587282180923, "o", "i"] +[31.695587282180924, "o", "t"] +[31.725587282180925, "o", "g"] +[31.755587282180926, "o", "r"] +[31.785587282180927, "o", "a"] +[31.81558728218093, "o", "p"] +[31.84558728218093, "o", "h"] +[31.87558728218093, "o", "/"] +[31.90558728218093, "o", "2"] +[31.935587282180933, "o", "0"] +[31.965587282180934, "o", "1"] +[31.995587282180935, "o", "6"] +[32.025587282180936, "o", "_"] +[32.05558728218094, "o", "e"] +[32.08558728218094, "o", "l"] +[32.11558728218094, "o", "e"] +[32.14558728218094, "o", "c"] +[32.17558728218094, "o", "t"] +[32.20558728218094, "o", "i"] +[32.235587282180944, "o", "o"] +[32.265587282180945, "o", "n"] +[32.295587282180946, "o", ":"] +[32.32558728218095, "o", "l"] +[32.35558728218095, "o", "a"] +[32.38558728218095, "o", "t"] +[32.41558728218095, "o", "e"] +[32.44558728218095, "o", "s"] +[32.47558728218095, "o", "t"] +[32.505587282180954, "o", " "] +[32.535587282180956, "o", "\\"] +[32.56558728218096, "o", "\r\n "] +[32.59558728218096, "o", "\""] +[32.62558728218096, "o", "E"] +[32.65558728218096, "o", "X"] +[32.68558728218096, "o", "P"] +[32.71558728218096, "o", "L"] +[32.74558728218096, "o", "A"] +[32.775587282180965, "o", "I"] +[32.805587282180966, "o", "N"] +[32.83558728218097, "o", " "] +[32.86558728218097, "o", "S"] +[32.89558728218097, "o", "E"] +[32.92558728218097, "o", "L"] +[32.95558728218097, "o", "E"] +[32.98558728218097, "o", "C"] +[33.015587282180974, "o", "T"] +[33.045587282180975, "o", " "] +[33.075587282180976, "o", "S"] +[33.10558728218098, "o", "U"] +[33.13558728218098, "o", "M"] +[33.16558728218098, "o", "("] +[33.19558728218098, "o", "v"] +[33.22558728218098, "o", "o"] +[33.25558728218098, "o", "t"] +[33.285587282180984, "o", "e"] +[33.315587282180985, "o", "s"] +[33.345587282180986, "o", ")"] +[33.37558728218099, "o", " "] +[33.40558728218099, "o", "F"] +[33.43558728218099, "o", "R"] +[33.46558728218099, "o", "O"] +[33.49558728218099, "o", "M"] +[33.52558728218099, "o", " "] +[33.555587282180994, "o", "p"] +[33.585587282180995, "o", "r"] +[33.615587282181, "o", "e"] +[33.645587282181, "o", "c"] +[33.675587282181, "o", "i"] +[33.705587282181, "o", "n"] +[33.735587282181, "o", "c"] +[33.765587282181, "o", "t"] +[33.795587282181, "o", "_"] +[33.825587282181004, "o", "r"] +[33.855587282181006, "o", "e"] +[33.88558728218101, "o", "s"] +[33.91558728218101, "o", "u"] +[33.94558728218101, "o", "l"] +[33.97558728218101, "o", "t"] +[34.00558728218101, "o", "s"] +[34.03558728218101, "o", " "] +[34.06558728218101, "o", "W"] +[34.095587282181015, "o", "H"] +[34.125587282181016, "o", "E"] +[34.15558728218102, "o", "R"] +[34.18558728218102, "o", "E"] +[34.21558728218102, "o", " "] +[34.24558728218102, "o", "c"] +[34.27558728218102, "o", "o"] +[34.30558728218102, "o", "u"] +[34.335587282181024, "o", "n"] +[34.365587282181025, "o", "t"] +[34.395587282181026, "o", "y"] +[34.42558728218103, "o", "_"] +[34.45558728218103, "o", "n"] +[34.48558728218103, "o", "a"] +[34.51558728218103, "o", "m"] +[34.54558728218103, "o", "e"] +[34.57558728218103, "o", " "] +[34.605587282181034, "o", "="] +[34.635587282181035, "o", " "] +[34.665587282181036, "o", "'"] +[34.69558728218104, "o", "N"] +[34.72558728218104, "o", "e"] +[34.75558728218104, "o", "w"] +[34.78558728218104, "o", " "] +[34.81558728218104, "o", "Y"] +[34.84558728218104, "o", "o"] +[34.875587282181044, "o", "r"] +[34.905587282181045, "o", "k"] +[34.93558728218105, "o", " "] +[34.96558728218105, "o", "C"] +[34.99558728218105, "o", "o"] +[35.02558728218105, "o", "u"] +[35.05558728218105, "o", "n"] +[35.08558728218105, "o", "t"] +[35.11558728218105, "o", "y"] +[35.145587282181054, "o", "'"] +[35.175587282181056, "o", "\""] +[35.20558728218106, "o", "\r\n"] +[35.23558728218106, "o", "\u001b[0m"] +[35.26558728218106, "o", "\r\n"] +[36.25869626998929, "o", "Aggregate (cost=1893957.09..1893957.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..1889234.00 rows=1889234 width=1)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 1\r\nMulticorn: Scan through 19 object(s) (25.51 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Def"] +[36.258709621429716, "o", "orming true\r\n"] +[36.28870962142972, "o", "\u001b[1m"] +[36.31870962142972, "o", "\u001b[36m"] +[36.34870962142972, "o", "\u001b[91m"] +[36.37870962142972, "o", "$"] +[36.40870962142972, "o", " "] +[36.43870962142972, "o", "\u001b[0m"] +[41.468709621429724, "o", "\u001b[H"] +[41.498709621429725, "o", "\u001b[J"] +[41.528709621429726, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Let's download the whole dataset and add a bloom filter index on county_name"] +[41.55870962142973, "o", "\r\n"] +[41.58870962142973, "o", "$"] +[41.61870962142973, "o", " "] +[41.64870962142973, "o", "s"] +[41.67870962142973, "o", "g"] +[41.70870962142973, "o", "r"] +[41.738709621429734, "o", " "] +[41.768709621429736, "o", "r"] +[41.79870962142974, "o", "e"] +[41.82870962142974, "o", "i"] +[41.85870962142974, "o", "n"] +[41.88870962142974, "o", "d"] +[41.91870962142974, "o", "e"] +[41.94870962142974, "o", "x"] +[41.97870962142974, "o", " "] +[42.008709621429745, "o", "-"] +[42.038709621429746, "o", "i"] +[42.06870962142975, "o", " "] +[42.09870962142975, "o", "'"] +[42.12870962142975, "o", "{"] +[42.15870962142975, "o", "\""] +[42.18870962142975, "o", "b"] +[42.21870962142975, "o", "l"] +[42.248709621429754, "o", "o"] +[42.278709621429755, "o", "o"] +[42.308709621429756, "o", "m"] +[42.33870962142976, "o", "\""] +[42.36870962142976, "o", ":"] +[42.39870962142976, "o", " "] +[42.42870962142976, "o", "{"] +[42.45870962142976, "o", "\""] +[42.48870962142976, "o", "c"] +[42.518709621429764, "o", "o"] +[42.548709621429765, "o", "u"] +[42.578709621429766, "o", "n"] +[42.60870962142977, "o", "t"] +[42.63870962142977, "o", "y"] +[42.66870962142977, "o", "_"] +[42.69870962142977, "o", "n"] +[42.72870962142977, "o", "a"] +[42.75870962142977, "o", "m"] +[42.788709621429774, "o", "e"] +[42.818709621429775, "o", "\""] +[42.84870962142978, "o", ":"] +[42.87870962142978, "o", " "] +[42.90870962142978, "o", "{"] +[42.93870962142978, "o", "\""] +[42.96870962142978, "o", "p"] +[42.99870962142978, "o", "r"] +[43.02870962142978, "o", "o"] +[43.058709621429784, "o", "b"] +[43.088709621429786, "o", "a"] +[43.11870962142979, "o", "b"] +[43.14870962142979, "o", "i"] +[43.17870962142979, "o", "l"] +[43.20870962142979, "o", "i"] +[43.23870962142979, "o", "t"] +[43.26870962142979, "o", "y"] +[43.29870962142979, "o", "\""] +[43.328709621429795, "o", ":"] +[43.358709621429796, "o", " "] +[43.3887096214298, "o", "0"] +[43.4187096214298, "o", "."] +[43.4487096214298, "o", "0"] +[43.4787096214298, "o", "1"] +[43.5087096214298, "o", "}"] +[43.5387096214298, "o", "}"] +[43.568709621429804, "o", "}"] +[43.598709621429805, "o", "'"] +[43.628709621429806, "o", " "] +[43.65870962142981, "o", "\\"] +[43.68870962142981, "o", "\r\n "] +[43.71870962142981, "o", "s"] +[43.74870962142981, "o", "p"] +[43.77870962142981, "o", "l"] +[43.80870962142981, "o", "i"] +[43.838709621429814, "o", "t"] +[43.868709621429815, "o", "g"] +[43.898709621429816, "o", "r"] +[43.92870962142982, "o", "a"] +[43.95870962142982, "o", "p"] +[43.98870962142982, "o", "h"] +[44.01870962142982, "o", "/"] +[44.04870962142982, "o", "2"] +[44.07870962142982, "o", "0"] +[44.108709621429824, "o", "1"] +[44.138709621429825, "o", "6"] +[44.16870962142983, "o", "_"] +[44.19870962142983, "o", "e"] +[44.22870962142983, "o", "l"] +[44.25870962142983, "o", "e"] +[44.28870962142983, "o", "c"] +[44.31870962142983, "o", "t"] +[44.34870962142983, "o", "i"] +[44.378709621429834, "o", "o"] +[44.408709621429836, "o", "n"] +[44.43870962142984, "o", ":"] +[44.46870962142984, "o", "l"] +[44.49870962142984, "o", "a"] +[44.52870962142984, "o", "t"] +[44.55870962142984, "o", "e"] +[44.58870962142984, "o", "s"] +[44.61870962142984, "o", "t"] +[44.648709621429845, "o", " "] +[44.678709621429846, "o", "p"] +[44.70870962142985, "o", "r"] +[44.73870962142985, "o", "e"] +[44.76870962142985, "o", "c"] +[44.79870962142985, "o", "i"] +[44.82870962142985, "o", "n"] +[44.85870962142985, "o", "c"] +[44.888709621429854, "o", "t"] +[44.918709621429855, "o", "_"] +[44.948709621429856, "o", "r"] +[44.97870962142986, "o", "e"] +[45.00870962142986, "o", "s"] +[45.03870962142986, "o", "u"] +[45.06870962142986, "o", "l"] +[45.09870962142986, "o", "t"] +[45.12870962142986, "o", "s"] +[45.158709621429864, "o", "\r\n"] +[45.188709621429865, "o", "\u001b[0m"] +[45.218709621429866, "o", "\r\n"] +[45.614862356186336, "o", "Reindexing table splitgraph/2016_election:3835145ada3f07cad99087d1b1071122d58c48783cbfe4694c101d35651fba90/precinct_results\r\n"] +[45.64998069763226, "o", "Need to download 20 objects (20.19 MiB), cache occupancy: 6.63 MiB/10.00 GiB\r\n"] +[45.7064987754826, "o", "Fetching 15 objects, total size 20.19 MiB\r\n"] +[45.70768252372784, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (85b17bb993c0441f83f3619be8faba12@data.splitgraph.com:5432/sgregistry)...\r\n"] +[46.70768252372784, "o", "\r 0%| | 0/15 [00:00 Foreign Scan on precinct_results (cost=20.00..200000.00 rows=200000 width=1)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 18\r\nMulticorn: Scan through 2 object(s) (2.64 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining false, Optimization false, Expressions true, Deform"] +[105.41606974601805, "o", "ing true\r\n"] +[105.44606974601805, "o", "\u001b[1m"] +[105.47606974601806, "o", "\u001b[36m"] +[105.50606974601806, "o", "\u001b[91m"] +[105.53606974601806, "o", "$"] +[105.56606974601806, "o", " "] +[105.59606974601806, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.17/dbt.cast b/content/casts/versioned/archive/v0.2.17/dbt.cast new file mode 100644 index 00000000..96693463 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.17/dbt.cast @@ -0,0 +1,2348 @@ +{"version": 2, "width": 100, "height": 48, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1634247104, "metadata": {"tss": [{"h": "dbt must be installed for this to work (pip install dbt)", "ts": 0.06}, {"h": "Ingest the initial data (in CSV) from this branch of the project.", "ts": 12.059999999999999}, {"h": "Snapshot the initial data with Splitgraph.", "ts": 26.940464296341066}, {"h": "Inspect the original data", "ts": 36.65003827095056}, {"h": "The status column in the raw_orders table in the initial dataset can", "ts": 49.65003827095056}, {"h": "Commit this dataset and check out the original data", "ts": 60.561476974487746}, {"h": "Check out the 'serious' version of the dbt project that uses data from", "ts": 70.90489822387754}, {"h": "Check that dbt is set up to connect to the Splitgraph engine.", "ts": 77.89127997398442}, {"h": "Now run the dbt models.", "ts": 101.39127997398442}, {"h": "Take a look at the built dataset and commit it.", "ts": 121.89127997398442}, {"h": "Check out the new version of the raw dataset and run dbt against it as well.", "ts": 136.3912799739844}, {"h": "Create an image from the new data.", "ts": 157.8912799739844}, {"h": "We now have two versions of the source and the target dataset.", "ts": 167.8912799739844}, {"h": "Inspect the difference between the two datasets that dbt built.", "ts": 175.6315503025062}, {"h": "Run a sample query: how much in bank transfer refunds did we process?", "ts": 185.1315503025062}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # dbt must be installed for this to work (pip install dbt)"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Clone the Jaffle Shop dbt example project\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "d"] +[0.27, "o", "b"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "-"] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "v"] +[0.4500000000000002, "o", "e"] +[0.4800000000000002, "o", "r"] +[0.5100000000000002, "o", "s"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "n"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "$"] +[0.6900000000000004, "o", " "] +[0.7200000000000004, "o", "g"] +[0.7500000000000004, "o", "i"] +[0.7800000000000005, "o", "t"] +[0.8100000000000005, "o", " "] +[0.8400000000000005, "o", "c"] +[0.8700000000000006, "o", "l"] +[0.9000000000000006, "o", "o"] +[0.9300000000000006, "o", "n"] +[0.9600000000000006, "o", "e"] +[0.9900000000000007, "o", " "] +[1.0200000000000007, "o", "h"] +[1.0500000000000007, "o", "t"] +[1.0800000000000007, "o", "t"] +[1.1100000000000008, "o", "p"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", ":"] +[1.2000000000000008, "o", "/"] +[1.2300000000000009, "o", "/"] +[1.260000000000001, "o", "g"] +[1.290000000000001, "o", "i"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", "h"] +[1.380000000000001, "o", "u"] +[1.410000000000001, "o", "b"] +[1.440000000000001, "o", "."] +[1.470000000000001, "o", "c"] +[1.500000000000001, "o", "o"] +[1.5300000000000011, "o", "m"] +[1.5600000000000012, "o", "/"] +[1.5900000000000012, "o", "s"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "l"] +[1.6800000000000013, "o", "i"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "g"] +[1.7700000000000014, "o", "r"] +[1.8000000000000014, "o", "a"] +[1.8300000000000014, "o", "p"] +[1.8600000000000014, "o", "h"] +[1.8900000000000015, "o", "/"] +[1.9200000000000015, "o", "j"] +[1.9500000000000015, "o", "a"] +[1.9800000000000015, "o", "f"] +[2.0100000000000016, "o", "f"] +[2.0400000000000014, "o", "l"] +[2.070000000000001, "o", "e"] +[2.100000000000001, "o", "_"] +[2.130000000000001, "o", "s"] +[2.1600000000000006, "o", "h"] +[2.1900000000000004, "o", "o"] +[2.22, "o", "p"] +[2.25, "o", "_"] +[2.28, "o", "a"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "c"] +[2.369999999999999, "o", "h"] +[2.399999999999999, "o", "i"] +[2.429999999999999, "o", "v"] +[2.4599999999999986, "o", "e"] +[2.4899999999999984, "o", "."] +[2.5199999999999982, "o", "g"] +[2.549999999999998, "o", "i"] +[2.579999999999998, "o", "t"] +[2.6099999999999977, "o", "\r\n"] +[2.6399999999999975, "o", "$"] +[2.6699999999999973, "o", " "] +[2.699999999999997, "o", "m"] +[2.729999999999997, "o", "v"] +[2.7599999999999967, "o", " "] +[2.7899999999999965, "o", "j"] +[2.8199999999999963, "o", "a"] +[2.849999999999996, "o", "f"] +[2.879999999999996, "o", "f"] +[2.9099999999999957, "o", "l"] +[2.9399999999999955, "o", "e"] +[2.9699999999999953, "o", "_"] +[2.999999999999995, "o", "s"] +[3.029999999999995, "o", "h"] +[3.0599999999999947, "o", "o"] +[3.0899999999999945, "o", "p"] +[3.1199999999999943, "o", "_"] +[3.149999999999994, "o", "a"] +[3.179999999999994, "o", "r"] +[3.2099999999999937, "o", "c"] +[3.2399999999999936, "o", "h"] +[3.2699999999999934, "o", "i"] +[3.299999999999993, "o", "v"] +[3.329999999999993, "o", "e"] +[3.3599999999999928, "o", " "] +[3.3899999999999926, "o", "j"] +[3.4199999999999924, "o", "a"] +[3.449999999999992, "o", "f"] +[3.479999999999992, "o", "f"] +[3.509999999999992, "o", "l"] +[3.5399999999999916, "o", "e"] +[3.5699999999999914, "o", "_"] +[3.599999999999991, "o", "s"] +[3.629999999999991, "o", "h"] +[3.659999999999991, "o", "o"] +[3.6899999999999906, "o", "p"] +[3.7199999999999904, "o", "\r\n"] +[3.7499999999999902, "o", "\u001b[0m"] +[3.77999999999999, "o", "\r\n"] +[4.7799999999999905, "o", "installed version: 0.18.0"] +[4.780028610229483, "o", "\r\n"] +[4.7800445842742825, "o", " latest version: 0.21.0"] +[4.780055074691763, "o", "\r\n"] +[4.780064849853506, "o", "\r\n"] +[4.7800751018524075, "o", "Your version of dbt is out of date! You can find instructions for upgrading here:"] +[4.780084877014151, "o", "\r\n"] +[4.780095129013052, "o", "https://docs.getdbt.com/docs/installation"] +[4.780104427337637, "o", "\r\n"] +[4.780114440917959, "o", "\r\n"] +[4.780126123428335, "o", "Plugins:"] +[4.780135660171499, "o", "\r\n"] +[4.780147104263296, "o", " - bigquery: 0.18.0"] +[4.780156879425039, "o", "\r\n"] +[4.780168085098257, "o", " - snowflake: 0.18.0"] +[4.780177621841421, "o", "\r\n"] +[4.780187635421743, "o", " - redshift: 0.18.0"] +[4.7801971721649075, "o", "\r\n"] +[4.780208616256704, "o", " - postgres: 0.18.0"] +[4.780219583511343, "o", "\r\n"] +[4.7807677078246975, "o", "\u001b[0m"] +[4.782897262573233, "o", "Cloning into 'jaffle_shop_archive'...\r\n"] +[5.0458245563506985, "o", "remote: Enumerating objects: 405, done. \r\nremote: Counting objects: 0% (1/405) \rremote: Counting objects: 1% (5/405) \rremote: Counting objects: 2% (9/405) \rremote: Counting objects: 3% (13/405) \rremote: Counting objects: 4% (17/405) \r"] +[5.045868663787832, "o", "remote: Counting objects: 5% (21/405) \rremote: Counting objects: 6% (25/405) \rremote: Counting objects: 7% (29/405) \rremote: Counting objects: 8% (33/405) \rremote: Counting objects: 9% (37/405) \rremote: Counting objects: 10% (41/405) \rremote: Counting objects: 11% (45/405) \rremote: Counting objects: 12% (49/405) \rremote: Counting objects: 13% (53/405) \rremote: Counting objects: 14% (57/405) \rremote: Counting objects: 15% ("] +[5.045877008438101, "o", "61/405) \rremote: Counting objects: 16% (65/405) \rremote: Counting objects: 17% (69/405) \rremote: Counting objects: 18% (73/405) \rremote: Counting objects: 19% (77/405) \rremote: Counting objects: 20% (81/405) \rremote: Counting objects: 21% (86/405) \rremote: Counting objects: 22% (90/405) \rremote: Counting objects: 23% (94/405) \rremote: Counting objects: 24% (98/405) \rremote: Counting objects: 25% (102/405) \rremote: Countin"] +[5.0459068107604885, "o", "g objects: 26% (106/405) \rremote: Counting objects: 27% (110/405) \rremote: Counting objects: 28% (114/405) \rremote: Counting objects: 29% (118/405) \rremote: Counting objects: 30% (122/405) \rremote: Counting objects: 31% (126/405) \rremote: Counting objects: 32% (130/405) \rremote: Counting objects: 33% (134/405) \rremote: Counting objects: 34% (138/405) \rremote: Counting objects: 35% (142/405) \rremote: Counting objects: 36% (146/4"] +[5.045915155410757, "o", "05) \rremote: Counting objects: 37% (150/405) \rremote: Counting objects: 38% (154/405) \rremote: Counting objects: 39% (158/405) \rremote: Counting objects: 40% (162/405) \rremote: Counting objects: 41% (167/405) \rremote: Counting objects: 42% (171/405) \rremote: Counting objects: 43% (175/405) \rremote: Counting objects: 44% (179/405) \r"] +[5.046156673431387, "o", "remote: Counting objects: 45% (183/405) \r"] +[5.046187191009512, "o", "remote: Counting objects: 46% (187/405) \r"] +[5.046215085983267, "o", "remote: Counting objects: 47% (191/405) \r"] +[5.046241073608389, "o", "remote: Counting objects: 48% (195/405) \r"] +[5.046263008117666, "o", "remote: Counting objects: 49% (199/405) \r"] +[5.04628851890563, "o", "remote: Counting objects: 50% (203/405) \r"] +[5.046310214996328, "o", "remote: Counting objects: 51% (207/405) \r"] +[5.046335487365713, "o", "remote: Counting objects: 52% (211/405) \r"] +[5.046360521316519, "o", "remote: Counting objects: 53% (215/405) \r"] +[5.046382217407217, "o", "remote: Counting objects: 54% (219/405) \r"] +[5.046407012939444, "o", "remote: Counting objects: 55% (223/405) \r"] +[5.046428470611563, "o", "remote: Counting objects: 56% (227/405) \r"] +[5.0464630413055325, "o", "remote: Counting objects: 57% (231/405) \r"] +[5.046489505767813, "o", "remote: Counting objects: 58% (235/405) \r"] +[5.046510963439932, "o", "remote: Counting objects: 59% (239/405) \r"] +[5.046536235809317, "o", "remote: Counting objects: 60% (243/405) \r"] +[5.046558408737173, "o", "remote: Counting objects: 61% (248/405) \r"] +[5.046583681106558, "o", "remote: Counting objects: 62% (252/405) \r"] +[5.046608476638784, "o", "remote: Counting objects: 63% (256/405) \r"] +[5.046630172729483, "o", "remote: Counting objects: 64% (260/405) \r"] +[5.046655206680288, "o", "remote: Counting objects: 65% (264/405) \r"] +[5.046676902770987, "o", "remote: Counting objects: 66% (268/405) \r"] +[5.046701936721792, "o", "remote: Counting objects: 67% (272/405) \r"] +[5.0467236328124905, "o", "remote: Counting objects: 68% (276/405) \r"] +[5.046748666763296, "o", "remote: Counting objects: 69% (280/405) \r"] +[5.046773700714102, "o", "remote: Counting objects: 70% (284/405) \r"] +[5.046795158386221, "o", "remote: Counting objects: 71% (288/405) \r"] +[5.0468199539184475, "o", "remote: Counting objects: 72% (292/405) \r"] +[5.046841650009146, "o", "remote: Counting objects: 73% (296/405) \r"] +[5.0468669223785305, "o", "remote: Counting objects: 74% (300/405) \r"] +[5.046897201538076, "o", "remote: Counting objects: 75% (304/405) \r"] +[5.046919136047354, "o", "remote: Counting objects: 76% (308/405) \r"] +[5.0469444084167385, "o", "remote: Counting objects: 77% (312/405) \r"] +[5.046966342926016, "o", "remote: Counting objects: 78% (316/405) \r"] +[5.046992807388296, "o", "remote: Counting objects: 79% (320/405) \r"] +[5.047122507095327, "o", "remote: Counting objects: 80% (324/405) \r"] +[5.047152547836294, "o", "remote: Counting objects: 81% (329/405) \r"] +[5.047177820205679, "o", "remote: Counting objects: 82% (333/405) \r"] +[5.047199754714956, "o", "remote: Counting objects: 83% (337/405) \r"] +[5.047564296722403, "o", "remote: Counting objects: 84% (341/405) \r"] +[5.04759147644042, "o", "remote: Counting objects: 85% (345/405) \r"] +[5.047618417739859, "o", "remote: Counting objects: 86% (349/405) \r"] +[5.047643213272085, "o", "remote: Counting objects: 87% (353/405) \r"] +[5.047665386199942, "o", "remote: Counting objects: 88% (357/405) \r"] +[5.047690420150747, "o", "remote: Counting objects: 89% (361/405) \r"] +[5.047712116241446, "o", "remote: Counting objects: 90% (365/405) \r"] +[5.047737150192251, "o", "remote: Counting objects: 91% (369/405) \r"] +[5.04775860786437, "o", "remote: Counting objects: 92% (373/405) \r"] +[5.047783403396597, "o", "remote: Counting objects: 93% (377/405) \r"] +[5.0478081989288235, "o", "remote: Counting objects: 94% (381/405) \r"] +[5.047829895019522, "o", "remote: Counting objects: 95% (385/405) \r"] +[5.047854928970327, "o", "remote: Counting objects: 96% (389/405) \r"] +[5.047877817153921, "o", "remote: Counting objects: 97% (393/405) \r"] +[5.047903804779043, "o", "remote: Counting objects: 98% (397/405) \r"] +[5.047925262451162, "o", "remote: Counting objects: 99% (401/405) \r"] +[5.047950057983389, "o", "remote: Counting objects: 100% (405/405) \r"] +[5.047975330352774, "o", "remote: Counting objects: 100% (405/405), done. "] +[5.04800274848937, "o", "\r\n"] +[5.048028736114492, "o", "remote: Compressing objects: 0% (1/174) \r"] +[5.048050432205191, "o", "remote: Compressing objects: 1% (2/174) \r"] +[5.048075466155996, "o", "remote: Compressing objects: 2% (4/174) \r"] +[5.0480969238281155, "o", "remote: Compressing objects: 3% (6/174) \r"] +[5.048121719360342, "o", "remote: Compressing objects: 4% (7/174) \r"] +[5.04814341545104, "o", "remote: Compressing objects: 5% (9/174) \r"] +[5.048168449401846, "o", "remote: Compressing objects: 6% (11/174) \r"] +[5.048190145492544, "o", "remote: Compressing objects: 7% (13/174) \r"] +[5.048215417861929, "o", "remote: Compressing objects: 8% (14/174) \r"] +[5.048237352371206, "o", "remote: Compressing objects: 9% (16/174) \r"] +[5.04826286315917, "o", "remote: Compressing objects: 10% (18/174) \r"] +[5.0482847976684475, "o", "remote: Compressing objects: 11% (20/174) \r"] +[5.048310070037832, "o", "remote: Compressing objects: 12% (21/174) \r"] +[5.048331527709951, "o", "remote: Compressing objects: 13% (23/174) \r"] +[5.048356323242178, "o", "remote: Compressing objects: 14% (25/174) \r"] +[5.048378019332876, "o", "remote: Compressing objects: 15% (27/174) \r"] +[5.048436431884756, "o", "remote: Compressing objects: 16% (28/174) \r"] +[5.0486674594879055, "o", "remote: Compressing objects: 17% (30/174) \r"] +[5.0487003612518215, "o", "remote: Compressing objects: 18% (32/174) \r"] +[5.048758535385122, "o", "remote: Compressing objects: 19% (34/174) \r"] +[5.049146919250479, "o", "remote: Compressing objects: 20% (35/174) \rremote: Compressing objects: 21% (37/174) \rremote: Compressing objects: 22% (39/174) \rremote: Compressing objects: 23% (41/174) \rremote: Compressing objects: 24% (42/174) \rremote: Compressing objects: 25% (44/174) \rremote: Compressing objects: 26% (46/174) \rremote: Compressing objects: 27% (47/174) \rremote: Compressing objects: 28% (49/174) \rremote: Compressing objects: 29% (51/174) \rre"] +[5.049162178039541, "o", "mote: Compressing objects: 30% (53/174) \rremote: Compressing objects: 31% (54/174) \rremote: Compressing objects: 32% (56/174) \rremote: Compressing objects: 33% (58/174) \rremote: Compressing objects: 34% (60/174) \rremote: Compressing objects: 35% (61/174) \rremote: Compressing objects: 36% (63/174) \rremote: Compressing objects: 37% (65/174) \rremote: Compressing objects: 38% (67/174) \rremote: Compressing objects: 39% (68/174) \rremo"] +[5.049169330596914, "o", "te: Compressing objects: 40% (70/174) \rremote: Compressing objects: 41% (72/174) \rremote: Compressing objects: 42% (74/174) \rremote: Compressing objects: 43% (75/174) \rremote: Compressing objects: 44% (77/174) \rremote: Compressing objects: 45% (79/174) \rremote: Compressing objects: 46% (81/174) \rremote: Compressing objects: 47% (82/174) \rremote: Compressing objects: 48% (84/174) \rremote: Compressing objects: 49% (86/174) \rremote"] +[5.049176483154287, "o", ": Compressing objects: 50% (87/174) \rremote: Compressing objects: 51% (89/174) \rremote: Compressing objects: 52% (91/174) \rremote: Compressing objects: 53% (93/174) \rremote: Compressing objects: 54% (94/174) \rremote: Compressing objects: 55% (96/174) \rremote: Compressing objects: 56% (98/174) \rremote: Compressing objects: 57% (100/174) \rremote: Compressing objects: 58% (101/174) \rremote: Compressing objects: 59% (103/174) \rremot"] +[5.049181728363028, "o", "e: Compressing objects: 60% (105/174) \rremote: Compressing objects: 61% (107/174) \rremote: Compressing objects: 62% (108/174) \rremote: Compressing objects: 63% (110/174) \rremote: Compressing objects: 64% (112/174) \rremote: Compressing objects: 65% (114/174) \rremote: Compressing objects: 66% (115/174) \rremote: Compressing objects: 67% (117/174) \rremote: Compressing objects: 68% (119/174) \r"] +[5.049187450408926, "o", "remote: Compressing objects: 69% (121/174) \r"] +[5.04919960975646, "o", "remote: Compressing objects: 70% (122/174) \r"] +[5.0492048549652, "o", "remote: Compressing objects: 71% (124/174) \rremote: Compressing objects: 72% (126/174) \r"] +[5.049209384918203, "o", "remote: Compressing objects: 73% (128/174) \r"] +[5.049213914871206, "o", "remote: Compressing objects: 74% (129/174) \r"] +[5.0492191600799465, "o", "remote: Compressing objects: 75% (131/174) \r"] +[5.049224405288687, "o", "remote: Compressing objects: 76% (133/174) \r"] +[5.049229412078848, "o", "remote: Compressing objects: 77% (134/174) \r"] +[5.049233942031851, "o", "remote: Compressing objects: 78% (136/174) \r"] +[5.049240856170645, "o", "remote: Compressing objects: 79% (138/174) \r"] +[5.049245862960806, "o", "remote: Compressing objects: 80% (140/174) \r"] +[5.049250392913809, "o", "remote: Compressing objects: 81% (141/174) \r"] +[5.049255161285391, "o", "remote: Compressing objects: 82% (143/174) \r"] +[5.049259691238394, "o", "remote: Compressing objects: 83% (145/174) \r"] +[5.049294500350943, "o", "remote: Compressing objects: 84% (147/174) \r"] +[5.049321918487539, "o", "remote: Compressing objects: 85% (148/174) \r"] +[5.049345283508291, "o", "remote: Compressing objects: 86% (150/174) \r"] +[5.0493717479705715, "o", "remote: Compressing objects: 87% (152/174) \r"] +[5.049393920898428, "o", "remote: Compressing objects: 88% (154/174) \r"] +[5.049420623779287, "o", "remote: Compressing objects: 89% (155/174) \r"] +[5.04944637298583, "o", "remote: Compressing objects: 90% (157/174) \r"] +[5.049468307495108, "o", "remote: Compressing objects: 91% (159/174) \r"] +[5.049494056701651, "o", "remote: Compressing objects: 92% (161/174) \r"] +[5.049515991210928, "o", "remote: Compressing objects: 93% (162/174) \r"] +[5.04954197883605, "o", "remote: Compressing objects: 94% (164/174) \r"] +[5.0495641517639065, "o", "remote: Compressing objects: 95% (166/174) \r"] +[5.04958966255187, "o", "remote: Compressing objects: 96% (168/174) \r"] +[5.049611835479727, "o", "remote: Compressing objects: 97% (169/174) \r"] +[5.0496349620819, "o", "remote: Compressing objects: 98% (171/174) \r"] +[5.049659996032705, "o", "remote: Compressing objects: 99% (173/174) \r"] +[5.049681930541983, "o", "remote: Compressing objects: 100% (174/174) \r"] +[5.049707918167105, "o", "remote: Compressing objects: 100% (174/174), done. "] +[5.049727468490591, "o", "\r\n"] +[5.050948648452749, "o", "Receiving objects: 0% (1/405)\r"] +[5.051170616149893, "o", "Receiving objects: 1% (5/405)\r"] +[5.051332979202261, "o", "Receiving objects: 2% (9/405)\r"] +[5.051450519561758, "o", "Receiving objects: 3% (13/405)\r"] +[5.052061347961416, "o", "Receiving objects: 4% (17/405)\r"] +[5.052334575653067, "o", "Receiving objects: 5% (21/405)\r"] +[5.052528648376455, "o", "Receiving objects: 6% (25/405)\r"] +[5.05266812324523, "o", "Receiving objects: 7% (29/405)\r"] +[5.052908449172964, "o", "Receiving objects: 8% (33/405)\r"] +[5.053057460784903, "o", "Receiving objects: 9% (37/405)\r"] +[5.053230791091909, "o", "Receiving objects: 10% (41/405)\r"] +[5.053556470870962, "o", "Receiving objects: 11% (45/405)\r"] +[5.053784160614004, "o", "Receiving objects: 12% (49/405)\r"] +[5.054136066436758, "o", "Receiving objects: 13% (53/405)\r"] +[5.054290561676016, "o", "Receiving objects: 14% (57/405)\r"] +[5.054528503417959, "o", "Receiving objects: 15% (61/405)\r"] +[5.054652481079092, "o", "Receiving objects: 16% (65/405)\r"] +[5.054847269058218, "o", "Receiving objects: 17% (69/405)\r"] +[5.054984121322622, "o", "Receiving objects: 18% (73/405)\r"] +[5.055187253952017, "o", "Receiving objects: 19% (77/405)\r"] +[5.055334119796743, "o", "Receiving objects: 20% (81/405)\r"] +[5.05546763420104, "o", "Receiving objects: 21% (86/405)\r"] +[5.055870084762564, "o", "Receiving objects: 22% (90/405)\r"] +[5.0559141921996975, "o", "Receiving objects: 23% (94/405)\r"] +[5.056098251342764, "o", "Receiving objects: 24% (98/405)\r"] +[5.056145935058584, "o", "Receiving objects: 25% (102/405)\r"] +[5.0577569293975735, "o", "Receiving objects: 26% (106/405)\r"] +[5.057839899063101, "o", "Receiving objects: 27% (110/405)\r"] +[5.057911186218252, "o", "Receiving objects: 28% (114/405)\r"] +[5.057952432632437, "o", "Receiving objects: 29% (118/405)\r"] +[5.058143167495718, "o", "Receiving objects: 30% (122/405)\r"] +[5.05824878692626, "o", "Receiving objects: 31% (126/405)\r"] +[5.0582874107360745, "o", "Receiving objects: 32% (130/405)\r"] +[5.058358936309805, "o", "Receiving objects: 33% (134/405)\r"] +[5.058418779373159, "o", "Receiving objects: 34% (138/405)\r"] +[5.0611677455902, "o", "Receiving objects: 35% (142/405)\r"] +[5.061834363937368, "o", "Receiving objects: 36% (146/405)\r"] +[5.06188443183898, "o", "Receiving objects: 37% (150/405)\r"] +[5.061922340393057, "o", "Receiving objects: 38% (154/405)\r"] +[5.061955480575552, "o", "Receiving objects: 39% (158/405)\r"] +[5.068160800933828, "o", "remote: Total 405 (delta 191), reused 405 (delta 191), pack-reused 0 \r\n"] +[5.068304567337027, "o", "Receiving objects: 40% (162/405)\r"] +[5.068328886032095, "o", "Receiving objects: 41% (167/405)\r"] +[5.068334131240835, "o", "Receiving objects: 42% (171/405)\r"] +[5.068521528244009, "o", "Receiving objects: 43% (175/405)\r"] +[5.068573026657095, "o", "Receiving objects: 44% (179/405)\r"] +[5.068822174072256, "o", "Receiving objects: 45% (183/405)\r"] +[5.068838148117056, "o", "Receiving objects: 46% (187/405)\r"] +[5.068945674896231, "o", "Receiving objects: 47% (191/405)\r"] +[5.069677381515493, "o", "Receiving objects: 48% (195/405)\rReceiving objects: 49% (199/405)\rReceiving objects: 50% (203/405)\rReceiving objects: 51% (207/405)\rReceiving objects: 52% (211/405)\rReceiving objects: 53% (215/405)\rReceiving objects: 54% (219/405)\rReceiving objects: 55% (223/405)\rReceiving objects: 56% (227/405)\rReceiving objects: 57% (231/405)\rReceiving objects: 58% (235/405)\rReceiving objects: 59% (239/405)\rReceiving objects: 60% (243/405)\r"] +[5.069683818817129, "o", "Receiving objects: 61% (248/405)\r"] +[5.069701938629141, "o", "Receiving objects: 62% (252/405)\r"] +[5.069722919464102, "o", "Receiving objects: 63% (256/405)\r"] +[5.069746761322012, "o", "Receiving objects: 64% (260/405)\r"] +[5.069762973785391, "o", "Receiving objects: 65% (264/405)\r"] +[5.069794445037832, "o", "Receiving objects: 66% (268/405)\r"] +[5.069833068847647, "o", "Receiving objects: 67% (272/405)\r"] +[5.070062427520742, "o", "Receiving objects: 68% (276/405)\r"] +[5.070067434310904, "o", "Receiving objects: 69% (280/405)\r"] +[5.0700836467742825, "o", "Receiving objects: 70% (284/405)\r"] +[5.07013466835021, "o", "Receiving objects: 71% (288/405)\rReceiving objects: 72% (292/405)\r"] +[5.07015851020812, "o", "Receiving objects: 73% (296/405)\rReceiving objects: 74% (300/405)\r"] +[5.070184497833242, "o", "Receiving objects: 75% (304/405)\r"] +[5.070202617645254, "o", "Receiving objects: 76% (308/405)\r"] +[5.070224313735952, "o", "Receiving objects: 77% (312/405)\r"] +[5.070242195129385, "o", "Receiving objects: 78% (316/405)\r"] +[5.070297031402578, "o", "Receiving objects: 79% (320/405)\r"] +[5.070301561355581, "o", "Receiving objects: 80% (324/405)\r"] +[5.0703277873992825, "o", "Receiving objects: 81% (329/405)\r"] +[5.0703373241424465, "o", "Receiving objects: 82% (333/405)\r"] +[5.070363311767569, "o", "Receiving objects: 83% (337/405)\r"] +[5.070381193161001, "o", "Receiving objects: 84% (341/405)\r"] +[5.070391445159903, "o", "Receiving objects: 85% (345/405)\r"] +[5.070403366088858, "o", "Receiving objects: 86% (349/405)\r"] +[5.070415287017813, "o", "Receiving objects: 87% (353/405)\rReceiving objects: 88% (357/405)\r"] +[5.070419816970816, "o", "Receiving objects: 89% (361/405)\r"] +[5.070508270263662, "o", "Receiving objects: 90% (365/405)\r"] +[5.07055929183959, "o", "Receiving objects: 91% (369/405)\r"] +[5.070566921234121, "o", "Receiving objects: 92% (373/405)\r"] +[5.0706000614166165, "o", "Receiving objects: 93% (377/405)\rReceiving objects: 94% (381/405)\r"] +[5.070624141693106, "o", "Receiving objects: 95% (385/405)\r"] +[5.070683746337881, "o", "Receiving objects: 96% (389/405)\rReceiving objects: 97% (393/405)\r"] +[5.070709733963003, "o", "Receiving objects: 98% (397/405)\r"] +[5.070714740753164, "o", "Receiving objects: 99% (401/405)\r"] +[5.0707645702361965, "o", "Receiving objects: 100% (405/405)\r"] +[5.070769577026358, "o", "Receiving objects: 100% (405/405), 270.20 KiB | 12.87 MiB/s, done.\r\n"] +[5.070947437286367, "o", "Resolving deltas: 0% (0/191)\r"] +[5.071020631790152, "o", "Resolving deltas: 1% (2/191)\r"] +[5.071065216064444, "o", "Resolving deltas: 2% (4/191)\r"] +[5.071115045547476, "o", "Resolving deltas: 3% (6/191)\r"] +[5.071162729263296, "o", "Resolving deltas: 4% (8/191)\r"] +[5.071226625442495, "o", "Resolving deltas: 5% (10/191)\r"] +[5.071282415390005, "o", "Resolving deltas: 6% (12/191)\r"] +[5.071315793991079, "o", "Resolving deltas: 7% (14/191)\r"] +[5.071367530822744, "o", "Resolving deltas: 8% (16/191)\r"] +[5.071422128677359, "o", "Resolving deltas: 9% (18/191)\r"] +[5.0714535999298, "o", "Resolving deltas: 10% (20/191)\r"] +[5.071486978530874, "o", "Resolving deltas: 11% (22/191)\r"] +[5.071491746902456, "o", "Resolving deltas: 12% (23/191)\r"] +[5.0715015220641995, "o", "Resolving deltas: 13% (25/191)\r"] +[5.071524410247793, "o", "Resolving deltas: 14% (27/191)\r"] +[5.071562795639029, "o", "Resolving deltas: 15% (29/191)\r"] +[5.071584014892569, "o", "Resolving deltas: 16% (31/191)\r"] +[5.0716376590728665, "o", "Resolving deltas: 17% (33/191)\r"] +[5.071659116744986, "o", "Resolving deltas: 18% (35/191)\r"] +[5.07167127609252, "o", "Resolving deltas: 19% (37/191)\r"] +[5.071690349578848, "o", "Resolving deltas: 20% (39/191)\r"] +[5.071737079620352, "o", "Resolving deltas: 21% (41/191)\r"] +[5.071812181472769, "o", "Resolving deltas: 22% (43/191)\r"] +[5.071856527328482, "o", "Resolving deltas: 23% (44/191)\r"] +[5.07187560081481, "o", "Resolving deltas: 24% (46/191)\r"] +[5.071923761367788, "o", "Resolving deltas: 25% (48/191)\r"] +[5.0719805049896145, "o", "Resolving deltas: 26% (50/191)\r"] +[5.072011976242056, "o", "Resolving deltas: 27% (52/191)\r"] +[5.07206132888793, "o", "Resolving deltas: 28% (55/191)\rResolving deltas: 29% (56/191)\r"] +[5.072110681533804, "o", "Resolving deltas: 30% (58/191)\r"] +[5.07215693473815, "o", "Resolving deltas: 31% (60/191)\r"] +[5.072184591293325, "o", "Resolving deltas: 32% (62/191)\r"] +[5.072189836502066, "o", "Resolving deltas: 33% (64/191)\r"] +[5.072212247848501, "o", "Resolving deltas: 34% (65/191)\r"] +[5.072246818542471, "o", "Resolving deltas: 35% (68/191)\r"] +[5.072257308959951, "o", "Resolving deltas: 36% (69/191)\rResolving deltas: 37% (71/191)\r"] +[5.072273283004751, "o", "Resolving deltas: 38% (73/191)\r"] +[5.072309284210196, "o", "Resolving deltas: 39% (75/191)\r"] +[5.072314052581778, "o", "Resolving deltas: 40% (77/191)\r"] +[5.072328596115103, "o", "Resolving deltas: 41% (79/191)\r"] +[5.072342424392691, "o", "Resolving deltas: 42% (81/191)\r"] +[5.072362213134756, "o", "Resolving deltas: 43% (83/191)\r"] +[5.072376279830923, "o", "Resolving deltas: 44% (85/191)\r"] +[5.072381286621084, "o", "Resolving deltas: 45% (86/191)\r"] +[5.072390823364248, "o", "Resolving deltas: 46% (88/191)\r"] +[5.072415857315054, "o", "Resolving deltas: 47% (90/191)\r"] +[5.072420864105215, "o", "Resolving deltas: 48% (92/191)\r"] +[5.072446374893179, "o", "Resolving deltas: 49% (94/191)\r"] +[5.072451620101919, "o", "Resolving deltas: 50% (96/191)\r"] +[5.072477369308462, "o", "Resolving deltas: 51% (98/191)\r"] +[5.0724900054931545, "o", "Resolving deltas: 52% (100/191)\r"] +[5.072515993118277, "o", "Resolving deltas: 53% (102/191)\r"] +[5.072521476745596, "o", "Resolving deltas: 54% (104/191)\r"] +[5.072526245117178, "o", "Resolving deltas: 55% (106/191)\r"] +[5.07253101348876, "o", "Resolving deltas: 56% (107/191)\r"] +[5.072568445205679, "o", "Resolving deltas: 57% (109/191)\r"] +[5.07258680343627, "o", "Resolving deltas: 58% (111/191)\r"] +[5.072644023895254, "o", "Resolving deltas: 59% (113/191)\r"] +[5.072666912078848, "o", "Resolving deltas: 60% (115/191)\r"] +[5.072692184448233, "o", "Resolving deltas: 61% (117/191)\r"] +[5.072697668075552, "o", "Resolving deltas: 62% (119/191)\r"] +[5.072750120162954, "o", "Resolving deltas: 63% (121/191)\r"] +[5.072794227600088, "o", "Resolving deltas: 64% (123/191)\r"] +[5.07283356666564, "o", "Resolving deltas: 65% (125/191)\r"] +[5.072839050292959, "o", "Resolving deltas: 66% (127/191)\r"] +[5.072862415313711, "o", "Resolving deltas: 67% (128/191)\r"] +[5.072904853820791, "o", "Resolving deltas: 68% (130/191)\r"] +[5.072910337448111, "o", "Resolving deltas: 69% (132/191)\rResolving deltas: 70% (134/191)\r"] +[5.072943477630606, "o", "Resolving deltas: 71% (136/191)\r"] +[5.073447494506826, "o", "Resolving deltas: 72% (138/191)\r"] +[5.073823003768911, "o", "Resolving deltas: 73% (140/191)\r"] +[5.074031143188467, "o", "Resolving deltas: 74% (142/191)\r"] +[5.07515027999877, "o", "Resolving deltas: 75% (144/191)\r"] +[5.075539855957022, "o", "Resolving deltas: 76% (146/191)\r"] +[5.075593976974478, "o", "Resolving deltas: 77% (148/191)\r"] +[5.075624017715445, "o", "Resolving deltas: 78% (149/191)\r"] +[5.075663356780996, "o", "Resolving deltas: 79% (151/191)\r"] +[5.075723199844351, "o", "Resolving deltas: 80% (153/191)\r"] +[5.075772075653067, "o", "Resolving deltas: 81% (155/191)\r"] +[5.075808076858511, "o", "Resolving deltas: 82% (157/191)\r"] +[5.075845270156851, "o", "Resolving deltas: 83% (159/191)\r"] +[5.075892000198355, "o", "Resolving deltas: 84% (161/191)\r"] +[5.075946598052969, "o", "Resolving deltas: 85% (163/191)\r"] +[5.075987129211416, "o", "Resolving deltas: 86% (165/191)\r"] +[5.076035051345816, "o", "Resolving deltas: 87% (167/191)\r"] +[5.076069622039785, "o", "Resolving deltas: 88% (169/191)\r"] +[5.07609751701354, "o", "Resolving deltas: 89% (170/191)\r"] +[5.07614806175231, "o", "Resolving deltas: 90% (172/191)\r"] +[5.076258449554434, "o", "Resolving deltas: 91% (174/191)\r"] +[5.077423124313345, "o", "Resolving deltas: 92% (176/191)\r"] +[5.07848051071166, "o", "Resolving deltas: 93% (178/191)\r"] +[5.079786090850821, "o", "Resolving deltas: 94% (180/191)\r"] +[5.079837350845327, "o", "Resolving deltas: 95% (182/191)\r"] +[5.0798914718627834, "o", "Resolving deltas: 96% (184/191)\r"] +[5.079943923950186, "o", "Resolving deltas: 97% (186/191)\r"] +[5.07999589920043, "o", "Resolving deltas: 98% (188/191)\r"] +[5.080035953521719, "o", "Resolving deltas: 99% (190/191)\r"] +[5.080798177719107, "o", "Resolving deltas: 100% (191/191)\r"] +[5.080812244415274, "o", "Resolving deltas: 100% (191/191), done.\r\n"] +[5.110812244415274, "o", "\u001b[1m"] +[5.140812244415274, "o", "\u001b[36m"] +[5.170812244415274, "o", "\u001b[91m"] +[5.200812244415275, "o", "$"] +[5.230812244415275, "o", " "] +[5.260812244415275, "o", "\u001b[0m"] +[12.03, "o", "\u001b[H"] +[12.059999999999999, "o", "\u001b[J"] +[12.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the initial data (in CSV) from this branch of the project."] +[12.119999999999997, "o", "\r\n"] +[12.149999999999997, "o", "$"] +[12.179999999999996, "o", " "] +[12.209999999999996, "o", "s"] +[12.239999999999995, "o", "g"] +[12.269999999999994, "o", "r"] +[12.299999999999994, "o", " "] +[12.329999999999993, "o", "i"] +[12.359999999999992, "o", "n"] +[12.389999999999992, "o", "i"] +[12.419999999999991, "o", "t"] +[12.44999999999999, "o", " "] +[12.47999999999999, "o", "r"] +[12.50999999999999, "o", "a"] +[12.539999999999988, "o", "w"] +[12.569999999999988, "o", "_"] +[12.599999999999987, "o", "j"] +[12.629999999999987, "o", "a"] +[12.659999999999986, "o", "f"] +[12.689999999999985, "o", "f"] +[12.719999999999985, "o", "l"] +[12.749999999999984, "o", "e"] +[12.779999999999983, "o", "_"] +[12.809999999999983, "o", "s"] +[12.839999999999982, "o", "h"] +[12.869999999999981, "o", "o"] +[12.89999999999998, "o", "p"] +[12.92999999999998, "o", "\r\n"] +[12.95999999999998, "o", "$"] +[12.989999999999979, "o", " "] +[13.019999999999978, "o", "s"] +[13.049999999999978, "o", "g"] +[13.079999999999977, "o", "r"] +[13.109999999999976, "o", " "] +[13.139999999999976, "o", "c"] +[13.169999999999975, "o", "s"] +[13.199999999999974, "o", "v"] +[13.229999999999974, "o", " "] +[13.259999999999973, "o", "i"] +[13.289999999999973, "o", "m"] +[13.319999999999972, "o", "p"] +[13.349999999999971, "o", "o"] +[13.37999999999997, "o", "r"] +[13.40999999999997, "o", "t"] +[13.43999999999997, "o", " "] +[13.469999999999969, "o", "-"] +[13.499999999999968, "o", "f"] +[13.529999999999967, "o", " "] +[13.559999999999967, "o", "j"] +[13.589999999999966, "o", "a"] +[13.619999999999965, "o", "f"] +[13.649999999999965, "o", "f"] +[13.679999999999964, "o", "l"] +[13.709999999999964, "o", "e"] +[13.739999999999963, "o", "_"] +[13.769999999999962, "o", "s"] +[13.799999999999962, "o", "h"] +[13.829999999999961, "o", "o"] +[13.85999999999996, "o", "p"] +[13.88999999999996, "o", "/"] +[13.919999999999959, "o", "d"] +[13.949999999999958, "o", "a"] +[13.979999999999958, "o", "t"] +[14.009999999999957, "o", "a"] +[14.039999999999957, "o", "/"] +[14.069999999999956, "o", "r"] +[14.099999999999955, "o", "a"] +[14.129999999999955, "o", "w"] +[14.159999999999954, "o", "_"] +[14.189999999999953, "o", "c"] +[14.219999999999953, "o", "u"] +[14.249999999999952, "o", "s"] +[14.279999999999951, "o", "t"] +[14.30999999999995, "o", "o"] +[14.33999999999995, "o", "m"] +[14.36999999999995, "o", "e"] +[14.399999999999949, "o", "r"] +[14.429999999999948, "o", "s"] +[14.459999999999948, "o", "."] +[14.489999999999947, "o", "c"] +[14.519999999999946, "o", "s"] +[14.549999999999946, "o", "v"] +[14.579999999999945, "o", " "] +[14.609999999999944, "o", "-"] +[14.639999999999944, "o", "k"] +[14.669999999999943, "o", " "] +[14.699999999999942, "o", "i"] +[14.729999999999942, "o", "d"] +[14.759999999999941, "o", " "] +[14.78999999999994, "o", "r"] +[14.81999999999994, "o", "a"] +[14.84999999999994, "o", "w"] +[14.879999999999939, "o", "_"] +[14.909999999999938, "o", "j"] +[14.939999999999937, "o", "a"] +[14.969999999999937, "o", "f"] +[14.999999999999936, "o", "f"] +[15.029999999999935, "o", "l"] +[15.059999999999935, "o", "e"] +[15.089999999999934, "o", "_"] +[15.119999999999933, "o", "s"] +[15.149999999999933, "o", "h"] +[15.179999999999932, "o", "o"] +[15.209999999999932, "o", "p"] +[15.239999999999931, "o", " "] +[15.26999999999993, "o", "c"] +[15.29999999999993, "o", "u"] +[15.329999999999929, "o", "s"] +[15.359999999999928, "o", "t"] +[15.389999999999928, "o", "o"] +[15.419999999999927, "o", "m"] +[15.449999999999926, "o", "e"] +[15.479999999999926, "o", "r"] +[15.509999999999925, "o", "s"] +[15.539999999999925, "o", "\r\n"] +[15.569999999999924, "o", "$"] +[15.599999999999923, "o", " "] +[15.629999999999923, "o", "s"] +[15.659999999999922, "o", "g"] +[15.689999999999921, "o", "r"] +[15.71999999999992, "o", " "] +[15.74999999999992, "o", "c"] +[15.77999999999992, "o", "s"] +[15.809999999999919, "o", "v"] +[15.839999999999918, "o", " "] +[15.869999999999918, "o", "i"] +[15.899999999999917, "o", "m"] +[15.929999999999916, "o", "p"] +[15.959999999999916, "o", "o"] +[15.989999999999915, "o", "r"] +[16.019999999999914, "o", "t"] +[16.049999999999915, "o", " "] +[16.079999999999917, "o", "-"] +[16.109999999999918, "o", "f"] +[16.13999999999992, "o", " "] +[16.16999999999992, "o", "j"] +[16.19999999999992, "o", "a"] +[16.229999999999922, "o", "f"] +[16.259999999999923, "o", "f"] +[16.289999999999925, "o", "l"] +[16.319999999999926, "o", "e"] +[16.349999999999927, "o", "_"] +[16.379999999999928, "o", "s"] +[16.40999999999993, "o", "h"] +[16.43999999999993, "o", "o"] +[16.46999999999993, "o", "p"] +[16.499999999999932, "o", "/"] +[16.529999999999934, "o", "d"] +[16.559999999999935, "o", "a"] +[16.589999999999936, "o", "t"] +[16.619999999999937, "o", "a"] +[16.649999999999938, "o", "/"] +[16.67999999999994, "o", "r"] +[16.70999999999994, "o", "a"] +[16.73999999999994, "o", "w"] +[16.769999999999943, "o", "_"] +[16.799999999999944, "o", "o"] +[16.829999999999945, "o", "r"] +[16.859999999999946, "o", "d"] +[16.889999999999947, "o", "e"] +[16.91999999999995, "o", "r"] +[16.94999999999995, "o", "s"] +[16.97999999999995, "o", "."] +[17.009999999999952, "o", "c"] +[17.039999999999953, "o", "s"] +[17.069999999999954, "o", "v"] +[17.099999999999955, "o", " "] +[17.129999999999956, "o", "-"] +[17.159999999999958, "o", "k"] +[17.18999999999996, "o", " "] +[17.21999999999996, "o", "i"] +[17.24999999999996, "o", "d"] +[17.279999999999962, "o", " "] +[17.309999999999963, "o", "-"] +[17.339999999999964, "o", "t"] +[17.369999999999965, "o", " "] +[17.399999999999967, "o", "o"] +[17.429999999999968, "o", "r"] +[17.45999999999997, "o", "d"] +[17.48999999999997, "o", "e"] +[17.51999999999997, "o", "r"] +[17.549999999999972, "o", "_"] +[17.579999999999973, "o", "d"] +[17.609999999999975, "o", "a"] +[17.639999999999976, "o", "t"] +[17.669999999999977, "o", "e"] +[17.699999999999978, "o", " "] +[17.72999999999998, "o", "t"] +[17.75999999999998, "o", "i"] +[17.78999999999998, "o", "m"] +[17.819999999999983, "o", "e"] +[17.849999999999984, "o", "s"] +[17.879999999999985, "o", "t"] +[17.909999999999986, "o", "a"] +[17.939999999999987, "o", "m"] +[17.969999999999988, "o", "p"] +[17.99999999999999, "o", " "] +[18.02999999999999, "o", "r"] +[18.05999999999999, "o", "a"] +[18.089999999999993, "o", "w"] +[18.119999999999994, "o", "_"] +[18.149999999999995, "o", "j"] +[18.179999999999996, "o", "a"] +[18.209999999999997, "o", "f"] +[18.24, "o", "f"] +[18.27, "o", "l"] +[18.3, "o", "e"] +[18.330000000000002, "o", "_"] +[18.360000000000003, "o", "s"] +[18.390000000000004, "o", "h"] +[18.420000000000005, "o", "o"] +[18.450000000000006, "o", "p"] +[18.480000000000008, "o", " "] +[18.51000000000001, "o", "o"] +[18.54000000000001, "o", "r"] +[18.57000000000001, "o", "d"] +[18.600000000000012, "o", "e"] +[18.630000000000013, "o", "r"] +[18.660000000000014, "o", "s"] +[18.690000000000015, "o", "\r\n"] +[18.720000000000017, "o", "$"] +[18.750000000000018, "o", " "] +[18.78000000000002, "o", "s"] +[18.81000000000002, "o", "g"] +[18.84000000000002, "o", "r"] +[18.870000000000022, "o", " "] +[18.900000000000023, "o", "c"] +[18.930000000000025, "o", "s"] +[18.960000000000026, "o", "v"] +[18.990000000000027, "o", " "] +[19.020000000000028, "o", "i"] +[19.05000000000003, "o", "m"] +[19.08000000000003, "o", "p"] +[19.11000000000003, "o", "o"] +[19.140000000000033, "o", "r"] +[19.170000000000034, "o", "t"] +[19.200000000000035, "o", " "] +[19.230000000000036, "o", "-"] +[19.260000000000037, "o", "f"] +[19.29000000000004, "o", " "] +[19.32000000000004, "o", "j"] +[19.35000000000004, "o", "a"] +[19.38000000000004, "o", "f"] +[19.410000000000043, "o", "f"] +[19.440000000000044, "o", "l"] +[19.470000000000045, "o", "e"] +[19.500000000000046, "o", "_"] +[19.530000000000047, "o", "s"] +[19.56000000000005, "o", "h"] +[19.59000000000005, "o", "o"] +[19.62000000000005, "o", "p"] +[19.650000000000052, "o", "/"] +[19.680000000000053, "o", "d"] +[19.710000000000054, "o", "a"] +[19.740000000000055, "o", "t"] +[19.770000000000056, "o", "a"] +[19.800000000000058, "o", "/"] +[19.83000000000006, "o", "r"] +[19.86000000000006, "o", "a"] +[19.89000000000006, "o", "w"] +[19.920000000000062, "o", "_"] +[19.950000000000063, "o", "p"] +[19.980000000000064, "o", "a"] +[20.010000000000066, "o", "y"] +[20.040000000000067, "o", "m"] +[20.070000000000068, "o", "e"] +[20.10000000000007, "o", "n"] +[20.13000000000007, "o", "t"] +[20.16000000000007, "o", "s"] +[20.190000000000072, "o", "."] +[20.220000000000073, "o", "c"] +[20.250000000000075, "o", "s"] +[20.280000000000076, "o", "v"] +[20.310000000000077, "o", " "] +[20.340000000000078, "o", "-"] +[20.37000000000008, "o", "k"] +[20.40000000000008, "o", " "] +[20.43000000000008, "o", "i"] +[20.460000000000083, "o", "d"] +[20.490000000000084, "o", " "] +[20.520000000000085, "o", "r"] +[20.550000000000086, "o", "a"] +[20.580000000000087, "o", "w"] +[20.61000000000009, "o", "_"] +[20.64000000000009, "o", "j"] +[20.67000000000009, "o", "a"] +[20.70000000000009, "o", "f"] +[20.730000000000093, "o", "f"] +[20.760000000000094, "o", "l"] +[20.790000000000095, "o", "e"] +[20.820000000000096, "o", "_"] +[20.850000000000097, "o", "s"] +[20.8800000000001, "o", "h"] +[20.9100000000001, "o", "o"] +[20.9400000000001, "o", "p"] +[20.970000000000102, "o", " "] +[21.000000000000103, "o", "p"] +[21.030000000000104, "o", "a"] +[21.060000000000105, "o", "y"] +[21.090000000000106, "o", "m"] +[21.120000000000108, "o", "e"] +[21.15000000000011, "o", "n"] +[21.18000000000011, "o", "t"] +[21.21000000000011, "o", "s"] +[21.240000000000112, "o", "\r\n"] +[21.270000000000113, "o", "\u001b[0m"] +[21.300000000000114, "o", "\r\n"] +[21.700464296341057, "o", "Initialized empty repository raw_jaffle_shop\r\n"] +[21.730464296341058, "o", "\u001b[1m"] +[21.76046429634106, "o", "\u001b[36m"] +[21.79046429634106, "o", "\u001b[91m"] +[21.82046429634106, "o", "$"] +[21.850464296341062, "o", " "] +[21.880464296341064, "o", "\u001b[0m"] +[26.910464296341065, "o", "\u001b[H"] +[26.940464296341066, "o", "\u001b[J"] +[26.970464296341067, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Snapshot the initial data with Splitgraph."] +[27.000464296341068, "o", "\r\n"] +[27.03046429634107, "o", "$"] +[27.06046429634107, "o", " "] +[27.09046429634107, "o", "s"] +[27.120464296341073, "o", "g"] +[27.150464296341074, "o", "r"] +[27.180464296341075, "o", " "] +[27.210464296341076, "o", "d"] +[27.240464296341077, "o", "i"] +[27.27046429634108, "o", "f"] +[27.30046429634108, "o", "f"] +[27.33046429634108, "o", " "] +[27.360464296341082, "o", "r"] +[27.390464296341083, "o", "a"] +[27.420464296341084, "o", "w"] +[27.450464296341085, "o", "_"] +[27.480464296341086, "o", "j"] +[27.510464296341087, "o", "a"] +[27.54046429634109, "o", "f"] +[27.57046429634109, "o", "f"] +[27.60046429634109, "o", "l"] +[27.630464296341092, "o", "e"] +[27.660464296341093, "o", "_"] +[27.690464296341094, "o", "s"] +[27.720464296341095, "o", "h"] +[27.750464296341097, "o", "o"] +[27.780464296341098, "o", "p"] +[27.8104642963411, "o", "\r\n"] +[27.8404642963411, "o", "$"] +[27.8704642963411, "o", " "] +[27.900464296341102, "o", "s"] +[27.930464296341103, "o", "g"] +[27.960464296341105, "o", "r"] +[27.990464296341106, "o", " "] +[28.020464296341107, "o", "c"] +[28.050464296341108, "o", "o"] +[28.08046429634111, "o", "m"] +[28.11046429634111, "o", "m"] +[28.14046429634111, "o", "i"] +[28.170464296341112, "o", "t"] +[28.200464296341114, "o", " "] +[28.230464296341115, "o", "r"] +[28.260464296341116, "o", "a"] +[28.290464296341117, "o", "w"] +[28.320464296341118, "o", "_"] +[28.35046429634112, "o", "j"] +[28.38046429634112, "o", "a"] +[28.41046429634112, "o", "f"] +[28.440464296341123, "o", "f"] +[28.470464296341124, "o", "l"] +[28.500464296341125, "o", "e"] +[28.530464296341126, "o", "_"] +[28.560464296341127, "o", "s"] +[28.59046429634113, "o", "h"] +[28.62046429634113, "o", "o"] +[28.65046429634113, "o", "p"] +[28.680464296341132, "o", "\r\n"] +[28.710464296341133, "o", "$"] +[28.740464296341134, "o", " "] +[28.770464296341135, "o", "s"] +[28.800464296341136, "o", "g"] +[28.830464296341137, "o", "r"] +[28.86046429634114, "o", " "] +[28.89046429634114, "o", "t"] +[28.92046429634114, "o", "a"] +[28.950464296341142, "o", "g"] +[28.980464296341143, "o", " "] +[29.010464296341144, "o", "r"] +[29.040464296341145, "o", "a"] +[29.070464296341147, "o", "w"] +[29.100464296341148, "o", "_"] +[29.13046429634115, "o", "j"] +[29.16046429634115, "o", "a"] +[29.19046429634115, "o", "f"] +[29.220464296341152, "o", "f"] +[29.250464296341153, "o", "l"] +[29.280464296341155, "o", "e"] +[29.310464296341156, "o", "_"] +[29.340464296341157, "o", "s"] +[29.370464296341158, "o", "h"] +[29.40046429634116, "o", "o"] +[29.43046429634116, "o", "p"] +[29.46046429634116, "o", " "] +[29.490464296341163, "o", "a"] +[29.520464296341164, "o", "s"] +[29.550464296341165, "o", "o"] +[29.580464296341166, "o", "f"] +[29.610464296341167, "o", "_"] +[29.640464296341168, "o", "2"] +[29.67046429634117, "o", "0"] +[29.70046429634117, "o", "1"] +[29.73046429634117, "o", "8"] +[29.760464296341173, "o", "0"] +[29.790464296341174, "o", "4"] +[29.820464296341175, "o", "0"] +[29.850464296341176, "o", "9"] +[29.880464296341177, "o", "\r\n"] +[29.91046429634118, "o", "\u001b[0m"] +[29.94046429634118, "o", "\r\n"] +[30.349398651123284, "o", "Between 000000000000 and the current working copy: \r\n"] +[30.349412240982293, "o", "customers: table added\r\norders: table added\r\npayments: table added\r\n"] +[30.739314594269036, "o", "Committing raw_jaffle_shop...\r\n"] +[30.760716714859246, "o", "Processing table orders\r\n"] +[30.8470700168612, "o", "Processing table payments\r\n"] +[30.92842964172387, "o", "Processing table customers\r\n"] +[31.017725028991936, "o", "Committed raw_jaffle_shop as f97d601e4db6.\r\n"] +[31.410038270950555, "o", "Tagged raw_jaffle_shop:f97d601e4db6a91f82de4c3433b2e2b8a267f2df8a0ea55be66f9fdff450b38e with asof_20180409.\r\n"] +[31.440038270950556, "o", "\u001b[1m"] +[31.470038270950557, "o", "\u001b[36m"] +[31.500038270950558, "o", "\u001b[91m"] +[31.53003827095056, "o", "$"] +[31.56003827095056, "o", " "] +[31.59003827095056, "o", "\u001b[0m"] +[36.62003827095056, "o", "\u001b[H"] +[36.65003827095056, "o", "\u001b[J"] +[36.68003827095056, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the original data"] +[36.71003827095056, "o", "\r\n"] +[36.74003827095056, "o", "$"] +[36.770038270950565, "o", " "] +[36.800038270950566, "o", "s"] +[36.83003827095057, "o", "g"] +[36.86003827095057, "o", "r"] +[36.89003827095057, "o", " "] +[36.92003827095057, "o", "s"] +[36.95003827095057, "o", "h"] +[36.98003827095057, "o", "o"] +[37.010038270950574, "o", "w"] +[37.040038270950575, "o", " "] +[37.070038270950576, "o", "r"] +[37.10003827095058, "o", "a"] +[37.13003827095058, "o", "w"] +[37.16003827095058, "o", "_"] +[37.19003827095058, "o", "j"] +[37.22003827095058, "o", "a"] +[37.25003827095058, "o", "f"] +[37.280038270950584, "o", "f"] +[37.310038270950585, "o", "l"] +[37.340038270950586, "o", "e"] +[37.37003827095059, "o", "_"] +[37.40003827095059, "o", "s"] +[37.43003827095059, "o", "h"] +[37.46003827095059, "o", "o"] +[37.49003827095059, "o", "p"] +[37.52003827095059, "o", ":"] +[37.550038270950594, "o", "a"] +[37.580038270950595, "o", "s"] +[37.6100382709506, "o", "o"] +[37.6400382709506, "o", "f"] +[37.6700382709506, "o", "_"] +[37.7000382709506, "o", "2"] +[37.7300382709506, "o", "0"] +[37.7600382709506, "o", "1"] +[37.7900382709506, "o", "8"] +[37.820038270950604, "o", "0"] +[37.850038270950606, "o", "4"] +[37.88003827095061, "o", "0"] +[37.91003827095061, "o", "9"] +[37.94003827095061, "o", "\r\n"] +[37.97003827095061, "o", "$"] +[38.00003827095061, "o", " "] +[38.03003827095061, "o", "s"] +[38.06003827095061, "o", "g"] +[38.090038270950615, "o", "r"] +[38.120038270950616, "o", " "] +[38.15003827095062, "o", "t"] +[38.18003827095062, "o", "a"] +[38.21003827095062, "o", "b"] +[38.24003827095062, "o", "l"] +[38.27003827095062, "o", "e"] +[38.30003827095062, "o", " "] +[38.330038270950624, "o", "r"] +[38.360038270950625, "o", "a"] +[38.390038270950626, "o", "w"] +[38.42003827095063, "o", "_"] +[38.45003827095063, "o", "j"] +[38.48003827095063, "o", "a"] +[38.51003827095063, "o", "f"] +[38.54003827095063, "o", "f"] +[38.57003827095063, "o", "l"] +[38.600038270950634, "o", "e"] +[38.630038270950635, "o", "_"] +[38.660038270950636, "o", "s"] +[38.69003827095064, "o", "h"] +[38.72003827095064, "o", "o"] +[38.75003827095064, "o", "p"] +[38.78003827095064, "o", ":"] +[38.81003827095064, "o", "a"] +[38.84003827095064, "o", "s"] +[38.870038270950644, "o", "o"] +[38.900038270950645, "o", "f"] +[38.93003827095065, "o", "_"] +[38.96003827095065, "o", "2"] +[38.99003827095065, "o", "0"] +[39.02003827095065, "o", "1"] +[39.05003827095065, "o", "8"] +[39.08003827095065, "o", "0"] +[39.11003827095065, "o", "4"] +[39.140038270950654, "o", "0"] +[39.170038270950656, "o", "9"] +[39.20003827095066, "o", " "] +[39.23003827095066, "o", "o"] +[39.26003827095066, "o", "r"] +[39.29003827095066, "o", "d"] +[39.32003827095066, "o", "e"] +[39.35003827095066, "o", "r"] +[39.380038270950664, "o", "s"] +[39.410038270950665, "o", "\r\n"] +[39.440038270950666, "o", "\u001b[0m"] +[39.47003827095067, "o", "\r\n"] +[39.86074910163914, "o", "Image raw_jaffle_shop:f97d601e4db6a91f82de4c3433b2e2b8a267f2df8a0ea55be66f9fdff450b38e\r\n\r\n"] +[39.86077461242711, "o", "Created at 2021-10-14T21:31:59.188504\r\n"] +[39.8628419399265, "o", "Size: 7.58 KiB\r\nParent: 0000000000000000000000000000000000000000000000000000000000000000\r\n"] +[39.86285719871556, "o", "\r\nTables:\r\n"] +[39.864039516449324, "o", " customers\r\n orders\r\n"] +[39.86404881477391, "o", " payments\r\n"] +[40.25506935119664, "o", "Table raw_jaffle_shop:f97d601e4db6a91f82de4c3433b2e2b8a267f2df8a0ea55be66f9fdff450b38e/orders\r\n\r\n"] +[40.25613794326817, "o", "Size: 1.73 KiB\r\n"] +[40.25720510482823, "o", "Rows: 99\r\nColumns: \r\n"] +[40.257217502594344, "o", " id (integer, PK)\r\n user_id (integer)\r\n order_date (timestamp without time zone)\r\n status (character varying)\r\n\r\nObjects: \r\n o7e3ffa6e2141edde30498e4c4a6a2b510d8b7e479081aafe154d31ca4436bd\r\n"] +[40.287217502594345, "o", "\u001b[1m"] +[40.317217502594346, "o", "\u001b[36m"] +[40.34721750259435, "o", "\u001b[91m"] +[40.37721750259435, "o", "$"] +[40.40721750259435, "o", " "] +[40.43721750259435, "o", "\u001b[0m"] +[49.62003827095056, "o", "\u001b[H"] +[49.65003827095056, "o", "\u001b[J"] +[49.68003827095056, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The status column in the raw_orders table in the initial dataset can"] +[49.71003827095056, "o", "\r\n"] +[49.74003827095056, "o", "$ # change through time. Pretend that some jaffles were actually returned.\r\n"] +[49.770038270950565, "o", "$"] +[49.800038270950566, "o", " "] +[49.83003827095057, "o", "s"] +[49.86003827095057, "o", "g"] +[49.89003827095057, "o", "r"] +[49.92003827095057, "o", " "] +[49.95003827095057, "o", "s"] +[49.98003827095057, "o", "q"] +[50.010038270950574, "o", "l"] +[50.040038270950575, "o", " "] +[50.070038270950576, "o", "-"] +[50.10003827095058, "o", "s"] +[50.13003827095058, "o", " "] +[50.16003827095058, "o", "r"] +[50.19003827095058, "o", "a"] +[50.22003827095058, "o", "w"] +[50.25003827095058, "o", "_"] +[50.280038270950584, "o", "j"] +[50.310038270950585, "o", "a"] +[50.340038270950586, "o", "f"] +[50.37003827095059, "o", "f"] +[50.40003827095059, "o", "l"] +[50.43003827095059, "o", "e"] +[50.46003827095059, "o", "_"] +[50.49003827095059, "o", "s"] +[50.52003827095059, "o", "h"] +[50.550038270950594, "o", "o"] +[50.580038270950595, "o", "p"] +[50.6100382709506, "o", " "] +[50.6400382709506, "o", "\""] +[50.6700382709506, "o", "U"] +[50.7000382709506, "o", "P"] +[50.7300382709506, "o", "D"] +[50.7600382709506, "o", "A"] +[50.7900382709506, "o", "T"] +[50.820038270950604, "o", "E"] +[50.850038270950606, "o", " "] +[50.88003827095061, "o", "o"] +[50.91003827095061, "o", "r"] +[50.94003827095061, "o", "d"] +[50.97003827095061, "o", "e"] +[51.00003827095061, "o", "r"] +[51.03003827095061, "o", "s"] +[51.06003827095061, "o", " "] +[51.090038270950615, "o", "S"] +[51.120038270950616, "o", "E"] +[51.15003827095062, "o", "T"] +[51.18003827095062, "o", " "] +[51.21003827095062, "o", "s"] +[51.24003827095062, "o", "t"] +[51.27003827095062, "o", "a"] +[51.30003827095062, "o", "t"] +[51.330038270950624, "o", "u"] +[51.360038270950625, "o", "s"] +[51.390038270950626, "o", " "] +[51.42003827095063, "o", "="] +[51.45003827095063, "o", " "] +[51.48003827095063, "o", "'"] +[51.51003827095063, "o", "r"] +[51.54003827095063, "o", "e"] +[51.57003827095063, "o", "t"] +[51.600038270950634, "o", "u"] +[51.630038270950635, "o", "r"] +[51.660038270950636, "o", "n"] +[51.69003827095064, "o", "e"] +[51.72003827095064, "o", "d"] +[51.75003827095064, "o", "'"] +[51.78003827095064, "o", " "] +[51.81003827095064, "o", "\\"] +[51.84003827095064, "o", "\r\n "] +[51.870038270950644, "o", "W"] +[51.900038270950645, "o", "H"] +[51.93003827095065, "o", "E"] +[51.96003827095065, "o", "R"] +[51.99003827095065, "o", "E"] +[52.02003827095065, "o", " "] +[52.05003827095065, "o", "s"] +[52.08003827095065, "o", "t"] +[52.11003827095065, "o", "a"] +[52.140038270950654, "o", "t"] +[52.170038270950656, "o", "u"] +[52.20003827095066, "o", "s"] +[52.23003827095066, "o", " "] +[52.26003827095066, "o", "="] +[52.29003827095066, "o", " "] +[52.32003827095066, "o", "'"] +[52.35003827095066, "o", "r"] +[52.380038270950664, "o", "e"] +[52.410038270950665, "o", "t"] +[52.440038270950666, "o", "u"] +[52.47003827095067, "o", "r"] +[52.50003827095067, "o", "n"] +[52.53003827095067, "o", "_"] +[52.56003827095067, "o", "p"] +[52.59003827095067, "o", "e"] +[52.62003827095067, "o", "n"] +[52.650038270950674, "o", "d"] +[52.680038270950675, "o", "i"] +[52.710038270950676, "o", "n"] +[52.74003827095068, "o", "g"] +[52.77003827095068, "o", "'"] +[52.80003827095068, "o", " "] +[52.83003827095068, "o", "O"] +[52.86003827095068, "o", "R"] +[52.89003827095068, "o", " "] +[52.920038270950684, "o", "o"] +[52.950038270950685, "o", "r"] +[52.980038270950686, "o", "d"] +[53.01003827095069, "o", "e"] +[53.04003827095069, "o", "r"] +[53.07003827095069, "o", "_"] +[53.10003827095069, "o", "d"] +[53.13003827095069, "o", "a"] +[53.16003827095069, "o", "t"] +[53.190038270950694, "o", "e"] +[53.220038270950695, "o", " "] +[53.2500382709507, "o", "="] +[53.2800382709507, "o", " "] +[53.3100382709507, "o", "'"] +[53.3400382709507, "o", "2"] +[53.3700382709507, "o", "0"] +[53.4000382709507, "o", "1"] +[53.4300382709507, "o", "8"] +[53.460038270950704, "o", "-"] +[53.490038270950706, "o", "0"] +[53.52003827095071, "o", "3"] +[53.55003827095071, "o", "-"] +[53.58003827095071, "o", "2"] +[53.61003827095071, "o", "6"] +[53.64003827095071, "o", "'"] +[53.67003827095071, "o", "\""] +[53.700038270950714, "o", "\r\n"] +[53.730038270950715, "o", "$"] +[53.760038270950716, "o", " "] +[53.79003827095072, "o", "s"] +[53.82003827095072, "o", "g"] +[53.85003827095072, "o", "r"] +[53.88003827095072, "o", " "] +[53.91003827095072, "o", "d"] +[53.94003827095072, "o", "i"] +[53.970038270950724, "o", "f"] +[54.000038270950725, "o", "f"] +[54.030038270950726, "o", " "] +[54.06003827095073, "o", "-"] +[54.09003827095073, "o", "v"] +[54.12003827095073, "o", " "] +[54.15003827095073, "o", "r"] +[54.18003827095073, "o", "a"] +[54.21003827095073, "o", "w"] +[54.240038270950734, "o", "_"] +[54.270038270950735, "o", "j"] +[54.300038270950736, "o", "a"] +[54.33003827095074, "o", "f"] +[54.36003827095074, "o", "f"] +[54.39003827095074, "o", "l"] +[54.42003827095074, "o", "e"] +[54.45003827095074, "o", "_"] +[54.48003827095074, "o", "s"] +[54.510038270950744, "o", "h"] +[54.540038270950745, "o", "o"] +[54.57003827095075, "o", "p"] +[54.60003827095075, "o", "\r\n"] +[54.63003827095075, "o", "\u001b[0m"] +[54.66003827095075, "o", "\r\n"] +[55.32115701675458, "o", "Between f97d601e4db6 and the current working copy: \r\n"] +[55.321466960907415, "o", "customers: no changes.\r\norders: added 5 rows, removed 5 rows.\r\n- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending')\r\n- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending')\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped')\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned')\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned')\r\n+ (84, 7"] +[55.32147697448774, "o", "0, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\npayments: no changes.\r\n"] +[55.35147697448774, "o", "\u001b[1m"] +[55.38147697448774, "o", "\u001b[36m"] +[55.41147697448774, "o", "\u001b[91m"] +[55.44147697448774, "o", "$"] +[55.47147697448774, "o", " "] +[55.501476974487744, "o", "\u001b[0m"] +[60.531476974487745, "o", "\u001b[H"] +[60.561476974487746, "o", "\u001b[J"] +[60.59147697448775, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit this dataset and check out the original data"] +[60.62147697448775, "o", "\r\n"] +[60.65147697448775, "o", "$"] +[60.68147697448775, "o", " "] +[60.71147697448775, "o", "s"] +[60.74147697448775, "o", "g"] +[60.771476974487754, "o", "r"] +[60.801476974487755, "o", " "] +[60.83147697448776, "o", "c"] +[60.86147697448776, "o", "o"] +[60.89147697448776, "o", "m"] +[60.92147697448776, "o", "m"] +[60.95147697448776, "o", "i"] +[60.98147697448776, "o", "t"] +[61.01147697448776, "o", " "] +[61.041476974487765, "o", "r"] +[61.071476974487766, "o", "a"] +[61.10147697448777, "o", "w"] +[61.13147697448777, "o", "_"] +[61.16147697448777, "o", "j"] +[61.19147697448777, "o", "a"] +[61.22147697448777, "o", "f"] +[61.25147697448777, "o", "f"] +[61.281476974487774, "o", "l"] +[61.311476974487775, "o", "e"] +[61.341476974487776, "o", "_"] +[61.37147697448778, "o", "s"] +[61.40147697448778, "o", "h"] +[61.43147697448778, "o", "o"] +[61.46147697448778, "o", "p"] +[61.49147697448778, "o", "\r\n"] +[61.52147697448778, "o", "$"] +[61.551476974487784, "o", " "] +[61.581476974487785, "o", "s"] +[61.611476974487786, "o", "g"] +[61.64147697448779, "o", "r"] +[61.67147697448779, "o", " "] +[61.70147697448779, "o", "t"] +[61.73147697448779, "o", "a"] +[61.76147697448779, "o", "g"] +[61.79147697448779, "o", " "] +[61.821476974487794, "o", "r"] +[61.851476974487795, "o", "a"] +[61.881476974487796, "o", "w"] +[61.9114769744878, "o", "_"] +[61.9414769744878, "o", "j"] +[61.9714769744878, "o", "a"] +[62.0014769744878, "o", "f"] +[62.0314769744878, "o", "f"] +[62.0614769744878, "o", "l"] +[62.091476974487804, "o", "e"] +[62.121476974487805, "o", "_"] +[62.15147697448781, "o", "s"] +[62.18147697448781, "o", "h"] +[62.21147697448781, "o", "o"] +[62.24147697448781, "o", "p"] +[62.27147697448781, "o", " "] +[62.30147697448781, "o", "a"] +[62.33147697448781, "o", "s"] +[62.361476974487815, "o", "o"] +[62.391476974487816, "o", "f"] +[62.42147697448782, "o", "_"] +[62.45147697448782, "o", "2"] +[62.48147697448782, "o", "0"] +[62.51147697448782, "o", "1"] +[62.54147697448782, "o", "8"] +[62.57147697448782, "o", "0"] +[62.601476974487824, "o", "4"] +[62.631476974487825, "o", "1"] +[62.661476974487826, "o", "0"] +[62.69147697448783, "o", "\r\n"] +[62.72147697448783, "o", "$"] +[62.75147697448783, "o", " "] +[62.78147697448783, "o", "s"] +[62.81147697448783, "o", "g"] +[62.84147697448783, "o", "r"] +[62.871476974487834, "o", " "] +[62.901476974487835, "o", "c"] +[62.931476974487836, "o", "h"] +[62.96147697448784, "o", "e"] +[62.99147697448784, "o", "c"] +[63.02147697448784, "o", "k"] +[63.05147697448784, "o", "o"] +[63.08147697448784, "o", "u"] +[63.11147697448784, "o", "t"] +[63.141476974487844, "o", " "] +[63.171476974487845, "o", "r"] +[63.201476974487846, "o", "a"] +[63.23147697448785, "o", "w"] +[63.26147697448785, "o", "_"] +[63.29147697448785, "o", "j"] +[63.32147697448785, "o", "a"] +[63.35147697448785, "o", "f"] +[63.38147697448785, "o", "f"] +[63.411476974487854, "o", "l"] +[63.441476974487856, "o", "e"] +[63.47147697448786, "o", "_"] +[63.50147697448786, "o", "s"] +[63.53147697448786, "o", "h"] +[63.56147697448786, "o", "o"] +[63.59147697448786, "o", "p"] +[63.62147697448786, "o", ":"] +[63.65147697448786, "o", "a"] +[63.681476974487865, "o", "s"] +[63.711476974487866, "o", "o"] +[63.74147697448787, "o", "f"] +[63.77147697448787, "o", "_"] +[63.80147697448787, "o", "2"] +[63.83147697448787, "o", "0"] +[63.86147697448787, "o", "1"] +[63.89147697448787, "o", "8"] +[63.921476974487874, "o", "0"] +[63.951476974487875, "o", "4"] +[63.981476974487876, "o", "0"] +[64.01147697448788, "o", "9"] +[64.04147697448788, "o", "\r\n"] +[64.07147697448788, "o", "\u001b[0m"] +[64.10147697448788, "o", "\r\n"] +[64.49510938644467, "o", "Committing raw_jaffle_shop...\r\n"] +[64.51728732109127, "o", "Storing and indexing table orders\r\n"] +[64.60977823257504, "o", "Committed raw_jaffle_shop as b71301fe17d0.\r\n"] +[65.00462085723935, "o", "Tagged raw_jaffle_shop:b71301fe17d0541897d5354b4095d1be1c13203c4be93ae7932a4e8b9a0627c3 with asof_20180410.\r\n"] +[65.66489822387753, "o", "Checked out raw_jaffle_shop:f97d601e4db6.\r\n"] +[65.69489822387753, "o", "\u001b[1m"] +[65.72489822387753, "o", "\u001b[36m"] +[65.75489822387753, "o", "\u001b[91m"] +[65.78489822387753, "o", "$"] +[65.81489822387753, "o", " "] +[65.84489822387754, "o", "\u001b[0m"] +[70.87489822387754, "o", "\u001b[H"] +[70.90489822387754, "o", "\u001b[J"] +[70.93489822387754, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the 'serious' version of the dbt project that uses data from"] +[70.96489822387754, "o", "\r\n"] +[70.99489822387754, "o", "$ # the actual warehouse rather than seed data.\r\n"] +[71.02489822387754, "o", "$"] +[71.05489822387754, "o", " "] +[71.08489822387754, "o", "c"] +[71.11489822387755, "o", "d"] +[71.14489822387755, "o", " "] +[71.17489822387755, "o", "j"] +[71.20489822387755, "o", "a"] +[71.23489822387755, "o", "f"] +[71.26489822387755, "o", "f"] +[71.29489822387755, "o", "l"] +[71.32489822387755, "o", "e"] +[71.35489822387756, "o", "_"] +[71.38489822387756, "o", "s"] +[71.41489822387756, "o", "h"] +[71.44489822387756, "o", "o"] +[71.47489822387756, "o", "p"] +[71.50489822387756, "o", " "] +[71.53489822387756, "o", "&"] +[71.56489822387756, "o", "&"] +[71.59489822387756, "o", " "] +[71.62489822387757, "o", "g"] +[71.65489822387757, "o", "i"] +[71.68489822387757, "o", "t"] +[71.71489822387757, "o", " "] +[71.74489822387757, "o", "c"] +[71.77489822387757, "o", "h"] +[71.80489822387757, "o", "e"] +[71.83489822387757, "o", "c"] +[71.86489822387757, "o", "k"] +[71.89489822387758, "o", "o"] +[71.92489822387758, "o", "u"] +[71.95489822387758, "o", "t"] +[71.98489822387758, "o", " "] +[72.01489822387758, "o", "d"] +[72.04489822387758, "o", "e"] +[72.07489822387758, "o", "m"] +[72.10489822387758, "o", "o"] +[72.13489822387758, "o", "/"] +[72.16489822387759, "o", "m"] +[72.19489822387759, "o", "a"] +[72.22489822387759, "o", "s"] +[72.25489822387759, "o", "t"] +[72.28489822387759, "o", "e"] +[72.31489822387759, "o", "r"] +[72.34489822387759, "o", " "] +[72.3748982238776, "o", "-"] +[72.4048982238776, "o", "-"] +[72.4348982238776, "o", "f"] +[72.4648982238776, "o", "o"] +[72.4948982238776, "o", "r"] +[72.5248982238776, "o", "c"] +[72.5548982238776, "o", "e"] +[72.5848982238776, "o", "\r\n"] +[72.6148982238776, "o", "\u001b[0m"] +[72.6448982238776, "o", "\r\n"] +[72.65076880455082, "o", "Branch 'demo/master' set up to track remote branch 'demo/master' from 'origin'.\r\n"] +[72.65127997398442, "o", "Switched to a new branch 'demo/master'\r\n"] +[72.68127997398442, "o", "\u001b[1m"] +[72.71127997398442, "o", "\u001b[36m"] +[72.74127997398442, "o", "\u001b[91m"] +[72.77127997398442, "o", "$"] +[72.80127997398442, "o", " "] +[72.83127997398442, "o", "\u001b[0m"] +[77.86127997398442, "o", "\u001b[H"] +[77.89127997398442, "o", "\u001b[J"] +[77.92127997398443, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check that dbt is set up to connect to the Splitgraph engine."] +[77.95127997398443, "o", "\r\n"] +[77.98127997398443, "o", "$ # We will be outputting data into the dbt_jaffle repository, so set that up.\r\n"] +[78.01127997398443, "o", "$"] +[78.04127997398443, "o", " "] +[78.07127997398443, "o", "c"] +[78.10127997398443, "o", "a"] +[78.13127997398443, "o", "t"] +[78.16127997398443, "o", " "] +[78.19127997398444, "o", "."] +[78.22127997398444, "o", "d"] +[78.25127997398444, "o", "b"] +[78.28127997398444, "o", "t"] +[78.31127997398444, "o", "/"] +[78.34127997398444, "o", "p"] +[78.37127997398444, "o", "r"] +[78.40127997398444, "o", "o"] +[78.43127997398445, "o", "f"] +[78.46127997398445, "o", "i"] +[78.49127997398445, "o", "l"] +[78.52127997398445, "o", "e"] +[78.55127997398445, "o", "s"] +[78.58127997398445, "o", "."] +[78.61127997398445, "o", "y"] +[78.64127997398445, "o", "m"] +[78.67127997398445, "o", "l"] +[78.70127997398446, "o", "\r\n"] +[78.73127997398446, "o", "$"] +[78.76127997398446, "o", " "] +[78.79127997398446, "o", "d"] +[78.82127997398446, "o", "b"] +[78.85127997398446, "o", "t"] +[78.88127997398446, "o", " "] +[78.91127997398446, "o", "d"] +[78.94127997398446, "o", "e"] +[78.97127997398447, "o", "b"] +[79.00127997398447, "o", "u"] +[79.03127997398447, "o", "g"] +[79.06127997398447, "o", " "] +[79.09127997398447, "o", "-"] +[79.12127997398447, "o", "-"] +[79.15127997398447, "o", "p"] +[79.18127997398447, "o", "r"] +[79.21127997398447, "o", "o"] +[79.24127997398448, "o", "f"] +[79.27127997398448, "o", "i"] +[79.30127997398448, "o", "l"] +[79.33127997398448, "o", "e"] +[79.36127997398448, "o", "s"] +[79.39127997398448, "o", "-"] +[79.42127997398448, "o", "d"] +[79.45127997398448, "o", "i"] +[79.48127997398448, "o", "r"] +[79.51127997398449, "o", " "] +[79.54127997398449, "o", "."] +[79.57127997398449, "o", "d"] +[79.60127997398449, "o", "b"] +[79.63127997398449, "o", "t"] +[79.66127997398449, "o", " "] +[79.69127997398449, "o", "-"] +[79.7212799739845, "o", "-"] +[79.7512799739845, "o", "p"] +[79.7812799739845, "o", "r"] +[79.8112799739845, "o", "o"] +[79.8412799739845, "o", "j"] +[79.8712799739845, "o", "e"] +[79.9012799739845, "o", "c"] +[79.9312799739845, "o", "t"] +[79.9612799739845, "o", "-"] +[79.9912799739845, "o", "d"] +[80.0212799739845, "o", "i"] +[80.0512799739845, "o", "r"] +[80.08127997398451, "o", " "] +[80.11127997398451, "o", "j"] +[80.14127997398451, "o", "a"] +[80.17127997398451, "o", "f"] +[80.20127997398451, "o", "f"] +[80.23127997398451, "o", "l"] +[80.26127997398451, "o", "e"] +[80.29127997398452, "o", "_"] +[80.32127997398452, "o", "s"] +[80.35127997398452, "o", "h"] +[80.38127997398452, "o", "o"] +[80.41127997398452, "o", "p"] +[80.44127997398452, "o", "\r\n"] +[80.47127997398452, "o", "$"] +[80.50127997398452, "o", " "] +[80.53127997398452, "o", "s"] +[80.56127997398453, "o", "g"] +[80.59127997398453, "o", "r"] +[80.62127997398453, "o", " "] +[80.65127997398453, "o", "i"] +[80.68127997398453, "o", "n"] +[80.71127997398453, "o", "i"] +[80.74127997398453, "o", "t"] +[80.77127997398453, "o", " "] +[80.80127997398453, "o", "d"] +[80.83127997398454, "o", "b"] +[80.86127997398454, "o", "t"] +[80.89127997398454, "o", "_"] +[80.92127997398454, "o", "j"] +[80.95127997398454, "o", "a"] +[80.98127997398454, "o", "f"] +[81.01127997398454, "o", "f"] +[81.04127997398454, "o", "l"] +[81.07127997398455, "o", "e"] +[81.10127997398455, "o", "\r\n"] +[81.13127997398455, "o", "\u001b[0m"] +[81.16127997398455, "o", "\r\n"] +[81.16259842872698, "o", "jaffle_shop:\r\n target: splitgraph\r\n outputs:\r\n splitgraph:\r\n type: postgres\r\n host: localhost\r\n user: sgr\r\n pass: supersecure\r\n port: 5432\r\n dbname: splitgraph\r\n # The final schema that dbt writes to is a combination of this profile schema\r\n # and the schema specified in the model.\r\n schema: \"dbt_jaffle\"\r\n threads: 4\r\n"] +[81.91662913322527, "o", "Running with dbt=0.18.0\r\n"] +[81.91956740379412, "o", "dbt version: 0.18.0\r\npython version: 3.8.12\r\n"] +[81.91958147049029, "o", "python path: /opt/hostedtoolcache/Python/3.8.12/x64/bin/python\r\nos info: Linux-5.4.0-1059-azure-x86_64-with-glibc2.2.5\r\nUsing profiles.yml file at .dbt/profiles.yml\r\nUsing dbt_project.yml file at /home/runner/work/splitgraph/splitgraph/examples/dbt/jaffle_shop/dbt_project.yml\r\n\r\n"] +[81.98679548263628, "o", "Configuration:\r\n profiles.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n dbt_project.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n"] +[81.9868054962166, "o", "\r\nRequired dependencies:\r\n"] +[81.99221449852068, "o", " - git [\u001b[32mOK found\u001b[0m]\r\n\r\n"] +[81.992224512101, "o", "Connection:\r\n"] +[81.99262529373247, "o", " host: localhost\r\n port: 5432\r\n user: sgr\r\n database: splitgraph\r\n schema: dbt_jaffle\r\n search_path: None\r\n keepalives_idle: 0\r\n sslmode: None\r\n"] +[82.00345378875811, "o", " Connection test: \u001b[32mOK connection ok\u001b[0m"] +[82.00350838661272, "o", "\r\n"] +[82.00384932518084, "o", "\r\n"] +[82.0966642475136, "o", "\u001b[0m"] +[82.53070503234942, "o", "Initialized empty repository dbt_jaffle\r\n"] +[82.56070503234942, "o", "\u001b[1m"] +[82.59070503234942, "o", "\u001b[36m"] +[82.62070503234942, "o", "\u001b[91m"] +[82.65070503234942, "o", "$"] +[82.68070503234942, "o", " "] +[82.71070503234942, "o", "\u001b[0m"] +[101.36127997398442, "o", "\u001b[H"] +[101.39127997398442, "o", "\u001b[J"] +[101.42127997398443, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now run the dbt models."] +[101.45127997398443, "o", "\r\n"] +[101.48127997398443, "o", "$"] +[101.51127997398443, "o", " "] +[101.54127997398443, "o", "c"] +[101.57127997398443, "o", "d"] +[101.60127997398443, "o", " "] +[101.63127997398443, "o", "j"] +[101.66127997398443, "o", "a"] +[101.69127997398444, "o", "f"] +[101.72127997398444, "o", "f"] +[101.75127997398444, "o", "l"] +[101.78127997398444, "o", "e"] +[101.81127997398444, "o", "_"] +[101.84127997398444, "o", "s"] +[101.87127997398444, "o", "h"] +[101.90127997398444, "o", "o"] +[101.93127997398445, "o", "p"] +[101.96127997398445, "o", " "] +[101.99127997398445, "o", "&"] +[102.02127997398445, "o", "&"] +[102.05127997398445, "o", " "] +[102.08127997398445, "o", "d"] +[102.11127997398445, "o", "b"] +[102.14127997398445, "o", "t"] +[102.17127997398445, "o", " "] +[102.20127997398446, "o", "r"] +[102.23127997398446, "o", "u"] +[102.26127997398446, "o", "n"] +[102.29127997398446, "o", " "] +[102.32127997398446, "o", "-"] +[102.35127997398446, "o", "-"] +[102.38127997398446, "o", "p"] +[102.41127997398446, "o", "r"] +[102.44127997398446, "o", "o"] +[102.47127997398447, "o", "f"] +[102.50127997398447, "o", "i"] +[102.53127997398447, "o", "l"] +[102.56127997398447, "o", "e"] +[102.59127997398447, "o", "s"] +[102.62127997398447, "o", "-"] +[102.65127997398447, "o", "d"] +[102.68127997398447, "o", "i"] +[102.71127997398447, "o", "r"] +[102.74127997398448, "o", " "] +[102.77127997398448, "o", "."] +[102.80127997398448, "o", "."] +[102.83127997398448, "o", "/"] +[102.86127997398448, "o", "."] +[102.89127997398448, "o", "d"] +[102.92127997398448, "o", "b"] +[102.95127997398448, "o", "t"] +[102.98127997398448, "o", "\r\n"] +[103.01127997398449, "o", "\u001b[0m"] +[103.04127997398449, "o", "\r\n"] +[103.79494709014965, "o", "Running with dbt=0.18.0\r\n"] +[104.17868513107372, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[105.00535553932262, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[105.00832480430675, "o", "\r\n"] +[105.3228754425056, "o", "21:32:07 | Concurrency: 4 threads (target='splitgraph')\r\n"] +[105.32289904594494, "o", "21:32:07 | \r\n"] +[105.33303946495128, "o", "21:32:07 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]"] +[105.33308357238842, "o", "\r\n"] +[105.33466714859081, "o", "21:32:07 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]"] +[105.34099596977306, "o", "\r\n"] +[105.34662050247265, "o", "21:32:07 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]\r\n"] +[105.34710663795543, "o", "21:32:07 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]"] +[105.34712952613903, "o", "\r\n"] +[105.57477444648815, "o", "21:32:07 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.22s]\r\n"] +[105.58264988899303, "o", "21:32:07 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.22s]"] +[105.58270401001049, "o", "\r\n"] +[105.5871371650703, "o", "21:32:07 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.24s]\r\n"] +[105.59138387680126, "o", "21:32:07 | 5 of 9 START table model dbt_jaffle.order_payments................... [RUN]\r\n"] +[105.59386343002392, "o", "21:32:07 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.26s]"] +[105.59390205383373, "o", "\r\n"] +[105.60586399078441, "o", "21:32:07 | 6 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]"] +[105.60590118408275, "o", "\r\n"] +[105.60765952110363, "o", "21:32:07 | 7 of 9 START table model dbt_jaffle.customer_payments................ [RUN]\r\n"] +[105.7287227535255, "o", "21:32:08 | 6 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.12s]"] +[105.729013624192, "o", "\r\n"] +[105.73961395263744, "o", "21:32:08 | 7 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.12s]\r\n"] +[105.7415744686134, "o", "21:32:08 | 5 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.14s]\r\n"] +[105.74320882797313, "o", "21:32:08 | 8 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]"] +[105.74324316024853, "o", "\r\n"] +[105.76041954994274, "o", "21:32:08 | 9 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]\r\n"] +[105.82987421989513, "o", "21:32:08 | 8 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.08s]"] +[105.82992261886669, "o", "\r\n"] +[105.83978480339123, "o", "21:32:08 | 9 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.08s]\r\n"] +[105.84806841850353, "o", "21:32:08 | \r\n"] +[105.84814208984447, "o", "21:32:08 | Finished running 4 view models, 5 table models in 0.84s."] +[105.84823268890453, "o", "\r\n"] +[105.87682456016613, "o", "\r\n"] +[105.87692040443493, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[105.87704032898021, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[105.90990180015636, "o", "\u001b[0m"] +[105.93990180015636, "o", "\u001b[1m"] +[105.96990180015636, "o", "\u001b[36m"] +[105.99990180015637, "o", "\u001b[91m"] +[106.02990180015637, "o", "$"] +[106.05990180015637, "o", " "] +[106.08990180015637, "o", "\u001b[0m"] +[121.86127997398442, "o", "\u001b[H"] +[121.89127997398442, "o", "\u001b[J"] +[121.92127997398443, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Take a look at the built dataset and commit it."] +[121.95127997398443, "o", "\r\n"] +[121.98127997398443, "o", "$ # Note Splitgraph doesn't currently support storing views\r\n"] +[122.01127997398443, "o", "$ # that dbt uses as a staging point for the initial data.\r\n"] +[122.04127997398443, "o", "$"] +[122.07127997398443, "o", " "] +[122.10127997398443, "o", "s"] +[122.13127997398443, "o", "g"] +[122.16127997398443, "o", "r"] +[122.19127997398444, "o", " "] +[122.22127997398444, "o", "d"] +[122.25127997398444, "o", "i"] +[122.28127997398444, "o", "f"] +[122.31127997398444, "o", "f"] +[122.34127997398444, "o", " "] +[122.37127997398444, "o", "d"] +[122.40127997398444, "o", "b"] +[122.43127997398445, "o", "t"] +[122.46127997398445, "o", "_"] +[122.49127997398445, "o", "j"] +[122.52127997398445, "o", "a"] +[122.55127997398445, "o", "f"] +[122.58127997398445, "o", "f"] +[122.61127997398445, "o", "l"] +[122.64127997398445, "o", "e"] +[122.67127997398445, "o", "\r\n"] +[122.70127997398446, "o", "$"] +[122.73127997398446, "o", " "] +[122.76127997398446, "o", "s"] +[122.79127997398446, "o", "g"] +[122.82127997398446, "o", "r"] +[122.85127997398446, "o", " "] +[122.88127997398446, "o", "c"] +[122.91127997398446, "o", "o"] +[122.94127997398446, "o", "m"] +[122.97127997398447, "o", "m"] +[123.00127997398447, "o", "i"] +[123.03127997398447, "o", "t"] +[123.06127997398447, "o", " "] +[123.09127997398447, "o", "d"] +[123.12127997398447, "o", "b"] +[123.15127997398447, "o", "t"] +[123.18127997398447, "o", "_"] +[123.21127997398447, "o", "j"] +[123.24127997398448, "o", "a"] +[123.27127997398448, "o", "f"] +[123.30127997398448, "o", "f"] +[123.33127997398448, "o", "l"] +[123.36127997398448, "o", "e"] +[123.39127997398448, "o", "\r\n"] +[123.42127997398448, "o", "$"] +[123.45127997398448, "o", " "] +[123.48127997398448, "o", "s"] +[123.51127997398449, "o", "g"] +[123.54127997398449, "o", "r"] +[123.57127997398449, "o", " "] +[123.60127997398449, "o", "t"] +[123.63127997398449, "o", "a"] +[123.66127997398449, "o", "g"] +[123.69127997398449, "o", " "] +[123.7212799739845, "o", "d"] +[123.7512799739845, "o", "b"] +[123.7812799739845, "o", "t"] +[123.8112799739845, "o", "_"] +[123.8412799739845, "o", "j"] +[123.8712799739845, "o", "a"] +[123.9012799739845, "o", "f"] +[123.9312799739845, "o", "f"] +[123.9612799739845, "o", "l"] +[123.9912799739845, "o", "e"] +[124.0212799739845, "o", " "] +[124.0512799739845, "o", "a"] +[124.08127997398451, "o", "s"] +[124.11127997398451, "o", "o"] +[124.14127997398451, "o", "f"] +[124.17127997398451, "o", "_"] +[124.20127997398451, "o", "2"] +[124.23127997398451, "o", "0"] +[124.26127997398451, "o", "1"] +[124.29127997398452, "o", "8"] +[124.32127997398452, "o", "0"] +[124.35127997398452, "o", "4"] +[124.38127997398452, "o", "0"] +[124.41127997398452, "o", "9"] +[124.44127997398452, "o", "\r\n"] +[124.47127997398452, "o", "\u001b[0m"] +[124.50127997398452, "o", "\r\n"] +[124.91794457435684, "o", "Between 000000000000 and the current working copy: \r\n"] +[124.91795887947158, "o", "customer_orders: table added\r\ncustomer_payments: table added\r\ndim_customers: table added\r\nfct_orders: table added\r\norder_payments: table added\r\nstg_jaffle_shop__customers: untracked\r\nstg_jaffle_shop__orders: untracked\r\nstg_jaffle_shop__payments: untracked\r\nstg_stripe__payments: untracked\r\n"] +[125.30860462188797, "o", "Committing dbt_jaffle...\r\n"] +[125.32592763900833, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.32726492881851, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.32825961113052, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.32952632904129, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.33531513214187, "o", "Processing table customer_orders\r\n"] +[125.42645945549087, "o", "Processing table order_payments\r\n"] +[125.51020064354019, "o", "Processing table customer_payments\r\n"] +[125.59032144546585, "o", "Processing table dim_customers\r\n"] +[125.67280259132461, "o", "Processing table fct_orders\r\n"] +[125.77398028373794, "o", "Committed dbt_jaffle as 0f5950b147ec.\r\n"] +[126.16620364189224, "o", "Tagged dbt_jaffle:0f5950b147ec4e84355c0d76b988ee33e8cfdca2e37bccd19fe359b5ee6047f8 with asof_20180409.\r\n"] +[126.19620364189224, "o", "\u001b[1m"] +[126.22620364189224, "o", "\u001b[36m"] +[126.25620364189224, "o", "\u001b[91m"] +[126.28620364189224, "o", "$"] +[126.31620364189224, "o", " "] +[126.34620364189225, "o", "\u001b[0m"] +[136.3612799739844, "o", "\u001b[H"] +[136.3912799739844, "o", "\u001b[J"] +[136.4212799739844, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the new version of the raw dataset and run dbt against it as well."] +[136.4512799739844, "o", "\r\n"] +[136.4812799739844, "o", "$"] +[136.51127997398441, "o", " "] +[136.54127997398442, "o", "s"] +[136.57127997398442, "o", "g"] +[136.60127997398442, "o", "r"] +[136.63127997398442, "o", " "] +[136.66127997398442, "o", "c"] +[136.69127997398442, "o", "h"] +[136.72127997398442, "o", "e"] +[136.75127997398442, "o", "c"] +[136.78127997398443, "o", "k"] +[136.81127997398443, "o", "o"] +[136.84127997398443, "o", "u"] +[136.87127997398443, "o", "t"] +[136.90127997398443, "o", " "] +[136.93127997398443, "o", "r"] +[136.96127997398443, "o", "a"] +[136.99127997398443, "o", "w"] +[137.02127997398443, "o", "_"] +[137.05127997398444, "o", "j"] +[137.08127997398444, "o", "a"] +[137.11127997398444, "o", "f"] +[137.14127997398444, "o", "f"] +[137.17127997398444, "o", "l"] +[137.20127997398444, "o", "e"] +[137.23127997398444, "o", "_"] +[137.26127997398444, "o", "s"] +[137.29127997398444, "o", "h"] +[137.32127997398445, "o", "o"] +[137.35127997398445, "o", "p"] +[137.38127997398445, "o", ":"] +[137.41127997398445, "o", "a"] +[137.44127997398445, "o", "s"] +[137.47127997398445, "o", "o"] +[137.50127997398445, "o", "f"] +[137.53127997398445, "o", "_"] +[137.56127997398445, "o", "2"] +[137.59127997398446, "o", "0"] +[137.62127997398446, "o", "1"] +[137.65127997398446, "o", "8"] +[137.68127997398446, "o", "0"] +[137.71127997398446, "o", "4"] +[137.74127997398446, "o", "1"] +[137.77127997398446, "o", "0"] +[137.80127997398446, "o", "\r\n"] +[137.83127997398446, "o", "$"] +[137.86127997398447, "o", " "] +[137.89127997398447, "o", "c"] +[137.92127997398447, "o", "d"] +[137.95127997398447, "o", " "] +[137.98127997398447, "o", "j"] +[138.01127997398447, "o", "a"] +[138.04127997398447, "o", "f"] +[138.07127997398447, "o", "f"] +[138.10127997398448, "o", "l"] +[138.13127997398448, "o", "e"] +[138.16127997398448, "o", "_"] +[138.19127997398448, "o", "s"] +[138.22127997398448, "o", "h"] +[138.25127997398448, "o", "o"] +[138.28127997398448, "o", "p"] +[138.31127997398448, "o", " "] +[138.34127997398448, "o", "&"] +[138.37127997398449, "o", "&"] +[138.4012799739845, "o", " "] +[138.4312799739845, "o", "d"] +[138.4612799739845, "o", "b"] +[138.4912799739845, "o", "t"] +[138.5212799739845, "o", " "] +[138.5512799739845, "o", "r"] +[138.5812799739845, "o", "u"] +[138.6112799739845, "o", "n"] +[138.6412799739845, "o", " "] +[138.6712799739845, "o", "-"] +[138.7012799739845, "o", "-"] +[138.7312799739845, "o", "p"] +[138.7612799739845, "o", "r"] +[138.7912799739845, "o", "o"] +[138.8212799739845, "o", "f"] +[138.8512799739845, "o", "i"] +[138.8812799739845, "o", "l"] +[138.9112799739845, "o", "e"] +[138.9412799739845, "o", "s"] +[138.9712799739845, "o", "-"] +[139.0012799739845, "o", "d"] +[139.0312799739845, "o", "i"] +[139.0612799739845, "o", "r"] +[139.0912799739845, "o", " "] +[139.1212799739845, "o", "."] +[139.15127997398451, "o", "."] +[139.18127997398452, "o", "/"] +[139.21127997398452, "o", "."] +[139.24127997398452, "o", "d"] +[139.27127997398452, "o", "b"] +[139.30127997398452, "o", "t"] +[139.33127997398452, "o", "\r\n"] +[139.36127997398452, "o", "\u001b[0m"] +[139.39127997398452, "o", "\r\n"] +[140.06290606498794, "o", "Checked out raw_jaffle_shop:b71301fe17d0.\r\n"] +[140.82768110275344, "o", "Running with dbt=0.18.0\r\n"] +[141.21453908920364, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[142.046860733033, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[142.04991511344986, "o", "\r\n"] +[142.49114684104995, "o", "21:32:13 | Concurrency: 4 threads (target='splitgraph')\r\n21:32:13 | \r\n"] +[142.4977815532692, "o", "21:32:13 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]\r\n"] +[142.50055626869278, "o", "21:32:13 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]"] +[142.5005948925026, "o", "\r\n"] +[142.52143959045486, "o", "21:32:13 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]\r\n"] +[142.52486757278518, "o", "21:32:13 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]\r\n"] +[142.73541954994278, "o", "21:32:13 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.23s]"] +[142.73571089744644, "o", "\r\n"] +[142.73842338562088, "o", "21:32:13 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.21s]"] +[142.7384732151039, "o", "\r\n"] +[142.74534968376236, "o", "21:32:13 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.23s]"] +[142.7454107189186, "o", "\r\n"] +[142.74939040184097, "o", "21:32:13 | 6 of 9 START table model dbt_jaffle.customer_payments................ [RUN]"] +[142.74946478843765, "o", "\r\n"] +[142.74993041992263, "o", "21:32:13 | 5 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]\r\n"] +[142.75167778968887, "o", "21:32:13 | 7 of 9 START table model dbt_jaffle.order_payments................... [RUN]"] +[142.7517252349861, "o", "\r\n"] +[142.7629876518257, "o", "21:32:13 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.22s]"] +[142.7630255603798, "o", "\r\n"] +[142.91197875976638, "o", "21:32:13 | 7 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.15s]"] +[142.91202906608657, "o", "\r\n"] +[142.92056921959, "o", "21:32:13 | 6 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.17s]"] +[142.9206123733528, "o", "\r\n"] +[142.92330531120376, "o", "21:32:13 | 8 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]\r\n"] +[142.9410529518135, "o", "21:32:13 | 5 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.18s]"] +[142.94109443664627, "o", "\r\n"] +[142.95155362129287, "o", "21:32:13 | 9 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]"] +[142.95159129142837, "o", "\r\n"] +[143.07003978729324, "o", "21:32:14 | 8 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.14s]\r\n"] +[143.07976392746048, "o", "21:32:14 | 9 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.13s]\r\n"] +[143.08836964607315, "o", "21:32:14 | \r\n"] +[143.08868078231887, "o", "21:32:14 | Finished running 4 view models, 5 table models in 1.04s.\r\n"] +[143.1182237052925, "o", "\r\n"] +[143.1185670280464, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[143.11896256446914, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[143.15187005043106, "o", "\u001b[0m"] +[143.18187005043106, "o", "\u001b[1m"] +[143.21187005043106, "o", "\u001b[36m"] +[143.24187005043106, "o", "\u001b[91m"] +[143.27187005043106, "o", "$"] +[143.30187005043106, "o", " "] +[143.33187005043106, "o", "\u001b[0m"] +[157.8612799739844, "o", "\u001b[H"] +[157.8912799739844, "o", "\u001b[J"] +[157.9212799739844, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create an image from the new data."] +[157.9512799739844, "o", "\r\n"] +[157.9812799739844, "o", "$"] +[158.01127997398441, "o", " "] +[158.04127997398442, "o", "s"] +[158.07127997398442, "o", "g"] +[158.10127997398442, "o", "r"] +[158.13127997398442, "o", " "] +[158.16127997398442, "o", "c"] +[158.19127997398442, "o", "o"] +[158.22127997398442, "o", "m"] +[158.25127997398442, "o", "m"] +[158.28127997398443, "o", "i"] +[158.31127997398443, "o", "t"] +[158.34127997398443, "o", " "] +[158.37127997398443, "o", "d"] +[158.40127997398443, "o", "b"] +[158.43127997398443, "o", "t"] +[158.46127997398443, "o", "_"] +[158.49127997398443, "o", "j"] +[158.52127997398443, "o", "a"] +[158.55127997398444, "o", "f"] +[158.58127997398444, "o", "f"] +[158.61127997398444, "o", "l"] +[158.64127997398444, "o", "e"] +[158.67127997398444, "o", "\r\n"] +[158.70127997398444, "o", "$"] +[158.73127997398444, "o", " "] +[158.76127997398444, "o", "s"] +[158.79127997398444, "o", "g"] +[158.82127997398445, "o", "r"] +[158.85127997398445, "o", " "] +[158.88127997398445, "o", "t"] +[158.91127997398445, "o", "a"] +[158.94127997398445, "o", "g"] +[158.97127997398445, "o", " "] +[159.00127997398445, "o", "d"] +[159.03127997398445, "o", "b"] +[159.06127997398445, "o", "t"] +[159.09127997398446, "o", "_"] +[159.12127997398446, "o", "j"] +[159.15127997398446, "o", "a"] +[159.18127997398446, "o", "f"] +[159.21127997398446, "o", "f"] +[159.24127997398446, "o", "l"] +[159.27127997398446, "o", "e"] +[159.30127997398446, "o", " "] +[159.33127997398446, "o", "a"] +[159.36127997398447, "o", "s"] +[159.39127997398447, "o", "o"] +[159.42127997398447, "o", "f"] +[159.45127997398447, "o", "_"] +[159.48127997398447, "o", "2"] +[159.51127997398447, "o", "0"] +[159.54127997398447, "o", "1"] +[159.57127997398447, "o", "8"] +[159.60127997398448, "o", "0"] +[159.63127997398448, "o", "4"] +[159.66127997398448, "o", "1"] +[159.69127997398448, "o", "0"] +[159.72127997398448, "o", "\r\n"] +[159.75127997398448, "o", "\u001b[0m"] +[159.78127997398448, "o", "\r\n"] +[160.17232101440501, "o", "Committing dbt_jaffle...\r\n"] +[160.1896609592445, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.1958281326301, "o", "Processing table fct_orders\r\n"] +[160.2873603630073, "o", "Processing table order_payments\r\n"] +[160.3485359478004, "o", "Object o87940f703edacc7113c37ae83a6abe6293f48cbb940171ef03875a066b0c5c already exists, skipping\r\n"] +[160.3686959075935, "o", "Processing table customer_orders\r\n"] +[160.42843335151744, "o", "Object o0fafb9e76c06e221af3aa558b0a751b176857a09b2d75ca00826becbd12ef5 already exists, skipping\r\n"] +[160.44446533203197, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.4458019065864, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.44708698272777, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.45201414108348, "o", "Processing table customer_payments\r\n"] +[160.51225655555797, "o", "Object o47a7af4dc6d74898da55e6c760eac4d702db25633cfab4e28e6df77cf00098 already exists, skipping\r\n"] +[160.53168743133617, "o", "Processing table dim_customers\r\n"] +[160.59182756424022, "o", "Object o9656926ef986d89e326952a43869eaf3dc59905ff22aba22cd3dd67a834dc5 already exists, skipping\r\n"] +[160.6260198879249, "o", "Committed dbt_jaffle as 162e062af7b8.\r\n"] +[161.0173763561256, "o", "Tagged dbt_jaffle:162e062af7b82a86755a4ca8e1f82e75d1dd9e3433d57b5a7ef56f62736a7699 with asof_20180410.\r\n"] +[161.0473763561256, "o", "\u001b[1m"] +[161.0773763561256, "o", "\u001b[36m"] +[161.1073763561256, "o", "\u001b[91m"] +[161.1373763561256, "o", "$"] +[161.1673763561256, "o", " "] +[161.1973763561256, "o", "\u001b[0m"] +[167.8612799739844, "o", "\u001b[H"] +[167.8912799739844, "o", "\u001b[J"] +[167.9212799739844, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We now have two versions of the source and the target dataset."] +[167.9512799739844, "o", "\r\n"] +[167.9812799739844, "o", "$"] +[168.01127997398441, "o", " "] +[168.04127997398442, "o", "s"] +[168.07127997398442, "o", "g"] +[168.10127997398442, "o", "r"] +[168.13127997398442, "o", " "] +[168.16127997398442, "o", "l"] +[168.19127997398442, "o", "o"] +[168.22127997398442, "o", "g"] +[168.25127997398442, "o", " "] +[168.28127997398443, "o", "-"] +[168.31127997398443, "o", "t"] +[168.34127997398443, "o", " "] +[168.37127997398443, "o", "r"] +[168.40127997398443, "o", "a"] +[168.43127997398443, "o", "w"] +[168.46127997398443, "o", "_"] +[168.49127997398443, "o", "j"] +[168.52127997398443, "o", "a"] +[168.55127997398444, "o", "f"] +[168.58127997398444, "o", "f"] +[168.61127997398444, "o", "l"] +[168.64127997398444, "o", "e"] +[168.67127997398444, "o", "_"] +[168.70127997398444, "o", "s"] +[168.73127997398444, "o", "h"] +[168.76127997398444, "o", "o"] +[168.79127997398444, "o", "p"] +[168.82127997398445, "o", "\r\n"] +[168.85127997398445, "o", "$"] +[168.88127997398445, "o", " "] +[168.91127997398445, "o", "s"] +[168.94127997398445, "o", "g"] +[168.97127997398445, "o", "r"] +[169.00127997398445, "o", " "] +[169.03127997398445, "o", "l"] +[169.06127997398445, "o", "o"] +[169.09127997398446, "o", "g"] +[169.12127997398446, "o", " "] +[169.15127997398446, "o", "-"] +[169.18127997398446, "o", "t"] +[169.21127997398446, "o", " "] +[169.24127997398446, "o", "d"] +[169.27127997398446, "o", "b"] +[169.30127997398446, "o", "t"] +[169.33127997398446, "o", "_"] +[169.36127997398447, "o", "j"] +[169.39127997398447, "o", "a"] +[169.42127997398447, "o", "f"] +[169.45127997398447, "o", "f"] +[169.48127997398447, "o", "l"] +[169.51127997398447, "o", "e"] +[169.54127997398447, "o", "\r\n"] +[169.57127997398447, "o", "\u001b[0m"] +[169.60127997398448, "o", "\r\n"] +[169.99495720863413, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-10-14 21:31:56\u001b[0m\r\n \u2514 \u001b[1m\u001b[91mf97d601e4d\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-10-14 21:31:59\u001b[0m\r\n \u2514 \u001b[1m\u001b[91mb71301fe17\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-10-14 21:32:02\u001b[0m\r\n"] +[170.3915503025062, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-10-14 21:32:05\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m0f5950b147\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-10-14 21:32:09\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m162e062af7\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-10-14 21:32:14\u001b[0m\r\n"] +[170.4215503025062, "o", "\u001b[1m"] +[170.4515503025062, "o", "\u001b[36m"] +[170.4815503025062, "o", "\u001b[91m"] +[170.5115503025062, "o", "$"] +[170.5415503025062, "o", " "] +[170.5715503025062, "o", "\u001b[0m"] +[175.6015503025062, "o", "\u001b[H"] +[175.6315503025062, "o", "\u001b[J"] +[175.6615503025062, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the difference between the two datasets that dbt built."] +[175.69155030250622, "o", "\r\n"] +[175.72155030250622, "o", "$"] +[175.75155030250622, "o", " "] +[175.78155030250622, "o", "s"] +[175.81155030250622, "o", "g"] +[175.84155030250622, "o", "r"] +[175.87155030250622, "o", " "] +[175.90155030250622, "o", "d"] +[175.93155030250622, "o", "i"] +[175.96155030250623, "o", "f"] +[175.99155030250623, "o", "f"] +[176.02155030250623, "o", " "] +[176.05155030250623, "o", "d"] +[176.08155030250623, "o", "b"] +[176.11155030250623, "o", "t"] +[176.14155030250623, "o", "_"] +[176.17155030250623, "o", "j"] +[176.20155030250623, "o", "a"] +[176.23155030250624, "o", "f"] +[176.26155030250624, "o", "f"] +[176.29155030250624, "o", "l"] +[176.32155030250624, "o", "e"] +[176.35155030250624, "o", " "] +[176.38155030250624, "o", "a"] +[176.41155030250624, "o", "s"] +[176.44155030250624, "o", "o"] +[176.47155030250624, "o", "f"] +[176.50155030250625, "o", "_"] +[176.53155030250625, "o", "2"] +[176.56155030250625, "o", "0"] +[176.59155030250625, "o", "1"] +[176.62155030250625, "o", "8"] +[176.65155030250625, "o", "0"] +[176.68155030250625, "o", "4"] +[176.71155030250625, "o", "0"] +[176.74155030250625, "o", "9"] +[176.77155030250626, "o", " "] +[176.80155030250626, "o", "a"] +[176.83155030250626, "o", "s"] +[176.86155030250626, "o", "o"] +[176.89155030250626, "o", "f"] +[176.92155030250626, "o", "_"] +[176.95155030250626, "o", "2"] +[176.98155030250626, "o", "0"] +[177.01155030250627, "o", "1"] +[177.04155030250627, "o", "8"] +[177.07155030250627, "o", "0"] +[177.10155030250627, "o", "4"] +[177.13155030250627, "o", "1"] +[177.16155030250627, "o", "0"] +[177.19155030250627, "o", " "] +[177.22155030250627, "o", "-"] +[177.25155030250627, "o", "-"] +[177.28155030250628, "o", "v"] +[177.31155030250628, "o", "e"] +[177.34155030250628, "o", "r"] +[177.37155030250628, "o", "b"] +[177.40155030250628, "o", "o"] +[177.43155030250628, "o", "s"] +[177.46155030250628, "o", "e"] +[177.49155030250628, "o", "\r\n"] +[177.52155030250628, "o", "\u001b[0m"] +[177.55155030250629, "o", "\r\n"] +[178.13448205947955, "o", "Between 0f5950b147ec and 162e062af7b8: \r\n"] +[178.13476363182147, "o", "customer_orders: no changes.\r\ncustomer_payments: no changes.\r\ndim_customers: no changes.\r\nfct_orders: added 5 rows, removed 5 rows.\r\n- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending', 0, 0, 0, 23, 23)\r\n- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending', 0, 0, 15, 0, 15)\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 0, 25, 0, 25)\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped', 0, 0, 17, 0, 17)\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'plac"] +[178.13477436065753, "o", "ed', 0, 23, 0, 0, 23)\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned', 0, 0, 0, 23, 23)\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned', 0, 0, 15, 0, 15)\r\n+ (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 25, 0, 25)\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 17, 0, 17)\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 23, 0, 0, 23)\r\norder_payments: no changes.\r\n"] +[178.16477436065753, "o", "\u001b[1m"] +[178.19477436065753, "o", "\u001b[36m"] +[178.22477436065753, "o", "\u001b[91m"] +[178.25477436065754, "o", "$"] +[178.28477436065754, "o", " "] +[178.31477436065754, "o", "\u001b[0m"] +[185.1015503025062, "o", "\u001b[H"] +[185.1315503025062, "o", "\u001b[J"] +[185.1615503025062, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a sample query: how much in bank transfer refunds did we process?"] +[185.19155030250622, "o", "\r\n"] +[185.22155030250622, "o", "$"] +[185.25155030250622, "o", " "] +[185.28155030250622, "o", "s"] +[185.31155030250622, "o", "g"] +[185.34155030250622, "o", "r"] +[185.37155030250622, "o", " "] +[185.40155030250622, "o", "s"] +[185.43155030250622, "o", "q"] +[185.46155030250623, "o", "l"] +[185.49155030250623, "o", " "] +[185.52155030250623, "o", "-"] +[185.55155030250623, "o", "i"] +[185.58155030250623, "o", " "] +[185.61155030250623, "o", "d"] +[185.64155030250623, "o", "b"] +[185.67155030250623, "o", "t"] +[185.70155030250623, "o", "_"] +[185.73155030250624, "o", "j"] +[185.76155030250624, "o", "a"] +[185.79155030250624, "o", "f"] +[185.82155030250624, "o", "f"] +[185.85155030250624, "o", "l"] +[185.88155030250624, "o", "e"] +[185.91155030250624, "o", ":"] +[185.94155030250624, "o", "a"] +[185.97155030250624, "o", "s"] +[186.00155030250625, "o", "o"] +[186.03155030250625, "o", "f"] +[186.06155030250625, "o", "_"] +[186.09155030250625, "o", "2"] +[186.12155030250625, "o", "0"] +[186.15155030250625, "o", "1"] +[186.18155030250625, "o", "8"] +[186.21155030250625, "o", "0"] +[186.24155030250625, "o", "4"] +[186.27155030250626, "o", "0"] +[186.30155030250626, "o", "9"] +[186.33155030250626, "o", " "] +[186.36155030250626, "o", "\""] +[186.39155030250626, "o", "S"] +[186.42155030250626, "o", "E"] +[186.45155030250626, "o", "L"] +[186.48155030250626, "o", "E"] +[186.51155030250627, "o", "C"] +[186.54155030250627, "o", "T"] +[186.57155030250627, "o", " "] +[186.60155030250627, "o", "s"] +[186.63155030250627, "o", "u"] +[186.66155030250627, "o", "m"] +[186.69155030250627, "o", "("] +[186.72155030250627, "o", "b"] +[186.75155030250627, "o", "a"] +[186.78155030250628, "o", "n"] +[186.81155030250628, "o", "k"] +[186.84155030250628, "o", "_"] +[186.87155030250628, "o", "t"] +[186.90155030250628, "o", "r"] +[186.93155030250628, "o", "a"] +[186.96155030250628, "o", "n"] +[186.99155030250628, "o", "s"] +[187.02155030250628, "o", "f"] +[187.05155030250629, "o", "e"] +[187.0815503025063, "o", "r"] +[187.1115503025063, "o", "_"] +[187.1415503025063, "o", "a"] +[187.1715503025063, "o", "m"] +[187.2015503025063, "o", "o"] +[187.2315503025063, "o", "u"] +[187.2615503025063, "o", "n"] +[187.2915503025063, "o", "t"] +[187.3215503025063, "o", ")"] +[187.3515503025063, "o", " "] +[187.3815503025063, "o", "F"] +[187.4115503025063, "o", "R"] +[187.4415503025063, "o", "O"] +[187.4715503025063, "o", "M"] +[187.5015503025063, "o", " "] +[187.5315503025063, "o", "f"] +[187.5615503025063, "o", "c"] +[187.5915503025063, "o", "t"] +[187.6215503025063, "o", "_"] +[187.6515503025063, "o", "o"] +[187.6815503025063, "o", "r"] +[187.7115503025063, "o", "d"] +[187.7415503025063, "o", "e"] +[187.7715503025063, "o", "r"] +[187.8015503025063, "o", "s"] +[187.83155030250632, "o", " "] +[187.86155030250632, "o", "W"] +[187.89155030250632, "o", "H"] +[187.92155030250632, "o", "E"] +[187.95155030250632, "o", "R"] +[187.98155030250632, "o", "E"] +[188.01155030250632, "o", " "] +[188.04155030250632, "o", "s"] +[188.07155030250632, "o", "t"] +[188.10155030250633, "o", "a"] +[188.13155030250633, "o", "t"] +[188.16155030250633, "o", "u"] +[188.19155030250633, "o", "s"] +[188.22155030250633, "o", " "] +[188.25155030250633, "o", "="] +[188.28155030250633, "o", " "] +[188.31155030250633, "o", "'"] +[188.34155030250633, "o", "r"] +[188.37155030250634, "o", "e"] +[188.40155030250634, "o", "t"] +[188.43155030250634, "o", "u"] +[188.46155030250634, "o", "r"] +[188.49155030250634, "o", "n"] +[188.52155030250634, "o", "e"] +[188.55155030250634, "o", "d"] +[188.58155030250634, "o", "'"] +[188.61155030250634, "o", "\""] +[188.64155030250635, "o", "\r\n"] +[188.67155030250635, "o", "$"] +[188.70155030250635, "o", " "] +[188.73155030250635, "o", "s"] +[188.76155030250635, "o", "g"] +[188.79155030250635, "o", "r"] +[188.82155030250635, "o", " "] +[188.85155030250635, "o", "s"] +[188.88155030250635, "o", "q"] +[188.91155030250636, "o", "l"] +[188.94155030250636, "o", " "] +[188.97155030250636, "o", "-"] +[189.00155030250636, "o", "i"] +[189.03155030250636, "o", " "] +[189.06155030250636, "o", "d"] +[189.09155030250636, "o", "b"] +[189.12155030250636, "o", "t"] +[189.15155030250637, "o", "_"] +[189.18155030250637, "o", "j"] +[189.21155030250637, "o", "a"] +[189.24155030250637, "o", "f"] +[189.27155030250637, "o", "f"] +[189.30155030250637, "o", "l"] +[189.33155030250637, "o", "e"] +[189.36155030250637, "o", ":"] +[189.39155030250637, "o", "a"] +[189.42155030250638, "o", "s"] +[189.45155030250638, "o", "o"] +[189.48155030250638, "o", "f"] +[189.51155030250638, "o", "_"] +[189.54155030250638, "o", "2"] +[189.57155030250638, "o", "0"] +[189.60155030250638, "o", "1"] +[189.63155030250638, "o", "8"] +[189.66155030250638, "o", "0"] +[189.69155030250639, "o", "4"] +[189.7215503025064, "o", "1"] +[189.7515503025064, "o", "0"] +[189.7815503025064, "o", " "] +[189.8115503025064, "o", "\""] +[189.8415503025064, "o", "S"] +[189.8715503025064, "o", "E"] +[189.9015503025064, "o", "L"] +[189.9315503025064, "o", "E"] +[189.9615503025064, "o", "C"] +[189.9915503025064, "o", "T"] +[190.0215503025064, "o", " "] +[190.0515503025064, "o", "s"] +[190.0815503025064, "o", "u"] +[190.1115503025064, "o", "m"] +[190.1415503025064, "o", "("] +[190.1715503025064, "o", "b"] +[190.2015503025064, "o", "a"] +[190.2315503025064, "o", "n"] +[190.2615503025064, "o", "k"] +[190.2915503025064, "o", "_"] +[190.3215503025064, "o", "t"] +[190.3515503025064, "o", "r"] +[190.3815503025064, "o", "a"] +[190.4115503025064, "o", "n"] +[190.4415503025064, "o", "s"] +[190.47155030250642, "o", "f"] +[190.50155030250642, "o", "e"] +[190.53155030250642, "o", "r"] +[190.56155030250642, "o", "_"] +[190.59155030250642, "o", "a"] +[190.62155030250642, "o", "m"] +[190.65155030250642, "o", "o"] +[190.68155030250642, "o", "u"] +[190.71155030250642, "o", "n"] +[190.74155030250643, "o", "t"] +[190.77155030250643, "o", ")"] +[190.80155030250643, "o", " "] +[190.83155030250643, "o", "F"] +[190.86155030250643, "o", "R"] +[190.89155030250643, "o", "O"] +[190.92155030250643, "o", "M"] +[190.95155030250643, "o", " "] +[190.98155030250643, "o", "f"] +[191.01155030250644, "o", "c"] +[191.04155030250644, "o", "t"] +[191.07155030250644, "o", "_"] +[191.10155030250644, "o", "o"] +[191.13155030250644, "o", "r"] +[191.16155030250644, "o", "d"] +[191.19155030250644, "o", "e"] +[191.22155030250644, "o", "r"] +[191.25155030250644, "o", "s"] +[191.28155030250645, "o", " "] +[191.31155030250645, "o", "W"] +[191.34155030250645, "o", "H"] +[191.37155030250645, "o", "E"] +[191.40155030250645, "o", "R"] +[191.43155030250645, "o", "E"] +[191.46155030250645, "o", " "] +[191.49155030250645, "o", "s"] +[191.52155030250645, "o", "t"] +[191.55155030250646, "o", "a"] +[191.58155030250646, "o", "t"] +[191.61155030250646, "o", "u"] +[191.64155030250646, "o", "s"] +[191.67155030250646, "o", " "] +[191.70155030250646, "o", "="] +[191.73155030250646, "o", " "] +[191.76155030250646, "o", "'"] +[191.79155030250647, "o", "r"] +[191.82155030250647, "o", "e"] +[191.85155030250647, "o", "t"] +[191.88155030250647, "o", "u"] +[191.91155030250647, "o", "r"] +[191.94155030250647, "o", "n"] +[191.97155030250647, "o", "e"] +[192.00155030250647, "o", "d"] +[192.03155030250647, "o", "'"] +[192.06155030250648, "o", "\""] +[192.09155030250648, "o", "\r\n"] +[192.12155030250648, "o", "\u001b[0m"] +[192.15155030250648, "o", "\r\n"] +[193.13249755859474, "o", "3\r\n"] +[194.12054491996864, "o", "60\r\n"] +[194.15054491996864, "o", "\u001b[1m"] +[194.18054491996864, "o", "\u001b[36m"] +[194.21054491996864, "o", "\u001b[91m"] +[194.24054491996864, "o", "$"] +[194.27054491996864, "o", " "] +[194.30054491996864, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.17/import-from-csv.cast b/content/casts/versioned/archive/v0.2.17/import-from-csv.cast new file mode 100644 index 00000000..3a0577fa --- /dev/null +++ b/content/casts/versioned/archive/v0.2.17/import-from-csv.cast @@ -0,0 +1,633 @@ +{"version": 2, "width": 100, "height": 45, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1634247057, "metadata": {"tss": [{"h": "Inspect the data file", "ts": 0.06}, {"h": "Initialize the repository", "ts": 6.502732515335085}, {"h": "Ingest the data into a new table (wrapper around COPY FROM STDIN)", "ts": 27.502732515335087}, {"h": "The data is now in a table but not committed as a Splitgraph image", "ts": 36.19273251533522}, {"h": "Create a new image and tag it", "ts": 43.84706692695639}, {"h": "Inspect the image", "ts": 52.098647613525685}, {"h": "Inspect the table", "ts": 58.95672534942662}, {"h": "Inspect object metadata", "ts": 78.45672534942662}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the data file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # (originally from https://data.townofcary.org/api/v2/catalog/datasets/rdu-weather-history/exports/csv)\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "h"] +[0.27, "o", "e"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "d"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "n"] +[0.4500000000000002, "o", "5"] +[0.4800000000000002, "o", " "] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", "d"] +[0.5700000000000003, "o", "u"] +[0.6000000000000003, "o", "-"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "-"] +[0.8700000000000006, "o", "h"] +[0.9000000000000006, "o", "i"] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "t"] +[0.9900000000000007, "o", "o"] +[1.0200000000000007, "o", "r"] +[1.0500000000000007, "o", "y"] +[1.0800000000000007, "o", "."] +[1.1100000000000008, "o", "c"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", "v"] +[1.2000000000000008, "o", "\r\n"] +[1.2300000000000009, "o", "\u001b[0m"] +[1.260000000000001, "o", "\r\n"] +[1.2627201175689706, "o", "date;temperaturemin;temperaturemax;precipitation;snowfall;snowdepth;avgwindspeed;fastest2minwinddir;fastest2minwindspeed;fastest5secwinddir;fastest5secwindspeed;fog;fogheavy;mist;rain;fogground;ice;glaze;drizzle;snow;freezingrain;smokehaze;thunder;highwind;hail;blowingsnow;dust;freezingfog\r\r\n2007-01-06;50.0;71.1;0.13;0.0;0.0;8.05;230;17.9;230;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-09;30.0;55.0;0.0;0.0;0.0;7.61;280;23.04;270;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;N"] +[1.262732515335084, "o", "o;No\r\r\n2007-01-14;50.0;73.9;0.0;0.0;0.0;8.5;230;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-15;57.0;73.9;0.0;0.0;0.0;13.2;230;23.94;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n"] +[1.292732515335084, "o", "\u001b[1m"] +[1.322732515335084, "o", "\u001b[36m"] +[1.352732515335084, "o", "\u001b[91m"] +[1.382732515335084, "o", "$"] +[1.412732515335084, "o", " "] +[1.442732515335084, "o", "\u001b[0m"] +[6.4727325153350845, "o", "\u001b[H"] +[6.502732515335085, "o", "\u001b[J"] +[6.532732515335085, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the repository"] +[6.562732515335085, "o", "\r\n"] +[6.5927325153350855, "o", "$"] +[6.622732515335086, "o", " "] +[6.652732515335086, "o", "s"] +[6.682732515335086, "o", "g"] +[6.7127325153350865, "o", "r"] +[6.742732515335087, "o", " "] +[6.772732515335087, "o", "i"] +[6.802732515335087, "o", "n"] +[6.8327325153350875, "o", "i"] +[6.862732515335088, "o", "t"] +[6.892732515335088, "o", " "] +[6.922732515335088, "o", "d"] +[6.9527325153350885, "o", "e"] +[6.982732515335089, "o", "m"] +[7.012732515335089, "o", "o"] +[7.042732515335089, "o", "/"] +[7.0727325153350895, "o", "w"] +[7.10273251533509, "o", "e"] +[7.13273251533509, "o", "a"] +[7.16273251533509, "o", "t"] +[7.1927325153350905, "o", "h"] +[7.222732515335091, "o", "e"] +[7.252732515335091, "o", "r"] +[7.282732515335091, "o", "\r\n"] +[7.3127325153350915, "o", "$"] +[7.342732515335092, "o", " "] +[7.372732515335092, "o", "s"] +[7.402732515335092, "o", "g"] +[7.4327325153350925, "o", "r"] +[7.462732515335093, "o", " "] +[7.492732515335093, "o", "c"] +[7.522732515335093, "o", "s"] +[7.5527325153350935, "o", "v"] +[7.582732515335094, "o", " "] +[7.612732515335094, "o", "i"] +[7.642732515335094, "o", "m"] +[7.6727325153350945, "o", "p"] +[7.702732515335095, "o", "o"] +[7.732732515335095, "o", "r"] +[7.762732515335095, "o", "t"] +[7.7927325153350955, "o", " "] +[7.822732515335096, "o", "-"] +[7.852732515335096, "o", "-"] +[7.882732515335096, "o", "h"] +[7.9127325153350965, "o", "e"] +[7.942732515335097, "o", "l"] +[7.972732515335097, "o", "p"] +[8.002732515335097, "o", "\r\n"] +[8.032732515335097, "o", "\u001b[0m"] +[8.062732515335096, "o", "\r\n"] +[8.468472776412977, "o", "Initialized empty repository demo/weather\r\n"] +[8.822694358825697, "o", "Usage: sgr csv import [OPTIONS] REPOSITORY TABLE\r\n\r\n Import a CSV file into a checked-out Splitgraph repository. This doesn't\r\n create a new image, use sgr commit after the import and any adjustments\r\n (e.g. adding primary keys or converting column types) to do so.\r\n\r\n If the target table doesn't exist, this will create a new table.\r\n\r\n If the target table does exist, this will try and patch the new values in\r\n by updating rows that exist in the current table (as per its primary key\r\n constraints) an"] +[8.822705802917493, "o", "d inserting new ones. Rows existing in the current table\r\n but missing in the CSV won't be deleted.\r\n\r\n If -r is passed, the table will instead be deleted and recreated from the\r\n CSV file if it exists.\r\n\r\nOptions:\r\n -f, --file FILENAME File name to import data from, default\r\n stdin.\r\n\r\n -r, --replace Replace the table if it already exists.\r\n -k, --primary-key TEXT Use the specified column(s) as primary\r\n "] +[8.822712717056287, "o", " key(s)\r\n\r\n -t, --override-type ...\r\n Explicitly set types of these columns to PG\r\n types\r\n\r\n --encoding TEXT Encoding to use for the CSV file\r\n --separator TEXT CSV separator to use\r\n --no-header Treats the first line of the CSV as data\r\n rather than a header.\r\n\r\n --skip-schema-check Skips checking that the dataframe is\r\n "] +[8.822722015380872, "o", " compatible with the target schema.\r\n\r\n --help Show this message and exit.\r\n"] +[8.852722015380872, "o", "\u001b[1m"] +[8.882722015380871, "o", "\u001b[36m"] +[8.91272201538087, "o", "\u001b[91m"] +[8.94272201538087, "o", "$"] +[8.972722015380869, "o", " "] +[9.002722015380868, "o", "\u001b[0m"] +[27.472732515335085, "o", "\u001b[H"] +[27.502732515335087, "o", "\u001b[J"] +[27.532732515335088, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the data into a new table (wrapper around COPY FROM STDIN)"] +[27.56273251533509, "o", "\r\n"] +[27.59273251533509, "o", "$"] +[27.62273251533509, "o", " "] +[27.652732515335092, "o", "s"] +[27.682732515335093, "o", "g"] +[27.712732515335095, "o", "r"] +[27.742732515335096, "o", " "] +[27.772732515335097, "o", "c"] +[27.802732515335098, "o", "s"] +[27.8327325153351, "o", "v"] +[27.8627325153351, "o", " "] +[27.8927325153351, "o", "i"] +[27.922732515335102, "o", "m"] +[27.952732515335104, "o", "p"] +[27.982732515335105, "o", "o"] +[28.012732515335106, "o", "r"] +[28.042732515335107, "o", "t"] +[28.072732515335108, "o", " "] +[28.10273251533511, "o", "-"] +[28.13273251533511, "o", "f"] +[28.16273251533511, "o", " "] +[28.192732515335113, "o", "r"] +[28.222732515335114, "o", "d"] +[28.252732515335115, "o", "u"] +[28.282732515335116, "o", "-"] +[28.312732515335117, "o", "w"] +[28.34273251533512, "o", "e"] +[28.37273251533512, "o", "a"] +[28.40273251533512, "o", "t"] +[28.432732515335122, "o", "h"] +[28.462732515335123, "o", "e"] +[28.492732515335124, "o", "r"] +[28.522732515335125, "o", "-"] +[28.552732515335126, "o", "h"] +[28.582732515335127, "o", "i"] +[28.61273251533513, "o", "s"] +[28.64273251533513, "o", "t"] +[28.67273251533513, "o", "o"] +[28.702732515335132, "o", "r"] +[28.732732515335133, "o", "y"] +[28.762732515335134, "o", "."] +[28.792732515335135, "o", "c"] +[28.822732515335137, "o", "s"] +[28.852732515335138, "o", "v"] +[28.88273251533514, "o", " "] +[28.91273251533514, "o", "\\"] +[28.94273251533514, "o", "\r\n "] +[28.972732515335142, "o", "-"] +[29.002732515335143, "o", "k"] +[29.032732515335145, "o", " "] +[29.062732515335146, "o", "d"] +[29.092732515335147, "o", "a"] +[29.122732515335148, "o", "t"] +[29.15273251533515, "o", "e"] +[29.18273251533515, "o", " "] +[29.21273251533515, "o", "\\"] +[29.242732515335152, "o", "\r\n "] +[29.272732515335154, "o", "-"] +[29.302732515335155, "o", "t"] +[29.332732515335156, "o", " "] +[29.362732515335157, "o", "d"] +[29.392732515335158, "o", "a"] +[29.42273251533516, "o", "t"] +[29.45273251533516, "o", "e"] +[29.48273251533516, "o", " "] +[29.512732515335163, "o", "t"] +[29.542732515335164, "o", "i"] +[29.572732515335165, "o", "m"] +[29.602732515335166, "o", "e"] +[29.632732515335167, "o", "s"] +[29.66273251533517, "o", "t"] +[29.69273251533517, "o", "a"] +[29.72273251533517, "o", "m"] +[29.752732515335172, "o", "p"] +[29.782732515335173, "o", " "] +[29.812732515335174, "o", "\\"] +[29.842732515335175, "o", "\r\n "] +[29.872732515335176, "o", "-"] +[29.902732515335178, "o", "-"] +[29.93273251533518, "o", "s"] +[29.96273251533518, "o", "e"] +[29.99273251533518, "o", "p"] +[30.022732515335182, "o", "a"] +[30.052732515335183, "o", "r"] +[30.082732515335184, "o", "a"] +[30.112732515335185, "o", "t"] +[30.142732515335187, "o", "o"] +[30.172732515335188, "o", "r"] +[30.20273251533519, "o", " "] +[30.23273251533519, "o", "\""] +[30.26273251533519, "o", ";"] +[30.292732515335192, "o", "\""] +[30.322732515335193, "o", " "] +[30.352732515335195, "o", "\\"] +[30.382732515335196, "o", "\r\n "] +[30.412732515335197, "o", "d"] +[30.442732515335198, "o", "e"] +[30.4727325153352, "o", "m"] +[30.5027325153352, "o", "o"] +[30.5327325153352, "o", "/"] +[30.562732515335203, "o", "w"] +[30.592732515335204, "o", "e"] +[30.622732515335205, "o", "a"] +[30.652732515335206, "o", "t"] +[30.682732515335207, "o", "h"] +[30.712732515335208, "o", "e"] +[30.74273251533521, "o", "r"] +[30.77273251533521, "o", " "] +[30.80273251533521, "o", "r"] +[30.832732515335213, "o", "d"] +[30.862732515335214, "o", "u"] +[30.892732515335215, "o", "\r\n"] +[30.922732515335216, "o", "\u001b[0m"] +[30.952732515335217, "o", "\r\n"] +[30.98273251533522, "o", "\u001b[1m"] +[31.01273251533522, "o", "\u001b[36m"] +[31.04273251533522, "o", "\u001b[91m"] +[31.072732515335222, "o", "$"] +[31.102732515335223, "o", " "] +[31.132732515335224, "o", "\u001b[0m"] +[36.16273251533522, "o", "\u001b[H"] +[36.19273251533522, "o", "\u001b[J"] +[36.222732515335224, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The data is now in a table but not committed as a Splitgraph image"] +[36.252732515335225, "o", "\r\n"] +[36.282732515335226, "o", "$"] +[36.31273251533523, "o", " "] +[36.34273251533523, "o", "s"] +[36.37273251533523, "o", "g"] +[36.40273251533523, "o", "r"] +[36.43273251533523, "o", " "] +[36.46273251533523, "o", "s"] +[36.492732515335234, "o", "t"] +[36.522732515335235, "o", "a"] +[36.55273251533524, "o", "t"] +[36.58273251533524, "o", "u"] +[36.61273251533524, "o", "s"] +[36.64273251533524, "o", " "] +[36.67273251533524, "o", "d"] +[36.70273251533524, "o", "e"] +[36.73273251533524, "o", "m"] +[36.762732515335244, "o", "o"] +[36.792732515335246, "o", "/"] +[36.82273251533525, "o", "w"] +[36.85273251533525, "o", "e"] +[36.88273251533525, "o", "a"] +[36.91273251533525, "o", "t"] +[36.94273251533525, "o", "h"] +[36.97273251533525, "o", "e"] +[37.00273251533525, "o", "r"] +[37.032732515335255, "o", "\r\n"] +[37.062732515335256, "o", "$"] +[37.09273251533526, "o", " "] +[37.12273251533526, "o", "s"] +[37.15273251533526, "o", "g"] +[37.18273251533526, "o", "r"] +[37.21273251533526, "o", " "] +[37.24273251533526, "o", "d"] +[37.272732515335264, "o", "i"] +[37.302732515335265, "o", "f"] +[37.332732515335266, "o", "f"] +[37.36273251533527, "o", " "] +[37.39273251533527, "o", "d"] +[37.42273251533527, "o", "e"] +[37.45273251533527, "o", "m"] +[37.48273251533527, "o", "o"] +[37.51273251533527, "o", "/"] +[37.542732515335274, "o", "w"] +[37.572732515335275, "o", "e"] +[37.602732515335276, "o", "a"] +[37.63273251533528, "o", "t"] +[37.66273251533528, "o", "h"] +[37.69273251533528, "o", "e"] +[37.72273251533528, "o", "r"] +[37.75273251533528, "o", "\r\n"] +[37.78273251533528, "o", "\u001b[0m"] +[37.812732515335284, "o", "\r\n"] +[38.20737915992757, "o", "demo/weather: on image 0000000000000000000000000000000000000000000000000000000000000000.\r\n"] +[38.60705238342305, "o", "Between 000000000000 and the current working copy: \r\n"] +[38.60706692695638, "o", "rdu: table added\r\n"] +[38.63706692695638, "o", "\u001b[1m"] +[38.66706692695638, "o", "\u001b[36m"] +[38.69706692695638, "o", "\u001b[91m"] +[38.72706692695638, "o", "$"] +[38.757066926956384, "o", " "] +[38.787066926956385, "o", "\u001b[0m"] +[43.817066926956386, "o", "\u001b[H"] +[43.84706692695639, "o", "\u001b[J"] +[43.87706692695639, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a new image and tag it"] +[43.90706692695639, "o", "\r\n"] +[43.93706692695639, "o", "$"] +[43.96706692695639, "o", " "] +[43.99706692695639, "o", "s"] +[44.027066926956394, "o", "g"] +[44.057066926956395, "o", "r"] +[44.087066926956396, "o", " "] +[44.1170669269564, "o", "c"] +[44.1470669269564, "o", "o"] +[44.1770669269564, "o", "m"] +[44.2070669269564, "o", "m"] +[44.2370669269564, "o", "i"] +[44.2670669269564, "o", "t"] +[44.297066926956404, "o", " "] +[44.327066926956405, "o", "d"] +[44.357066926956406, "o", "e"] +[44.38706692695641, "o", "m"] +[44.41706692695641, "o", "o"] +[44.44706692695641, "o", "/"] +[44.47706692695641, "o", "w"] +[44.50706692695641, "o", "e"] +[44.53706692695641, "o", "a"] +[44.567066926956414, "o", "t"] +[44.597066926956416, "o", "h"] +[44.62706692695642, "o", "e"] +[44.65706692695642, "o", "r"] +[44.68706692695642, "o", "\r\n"] +[44.71706692695642, "o", "$"] +[44.74706692695642, "o", " "] +[44.77706692695642, "o", "s"] +[44.80706692695642, "o", "g"] +[44.837066926956425, "o", "r"] +[44.867066926956426, "o", " "] +[44.89706692695643, "o", "t"] +[44.92706692695643, "o", "a"] +[44.95706692695643, "o", "g"] +[44.98706692695643, "o", " "] +[45.01706692695643, "o", "d"] +[45.04706692695643, "o", "e"] +[45.077066926956434, "o", "m"] +[45.107066926956435, "o", "o"] +[45.137066926956436, "o", "/"] +[45.16706692695644, "o", "w"] +[45.19706692695644, "o", "e"] +[45.22706692695644, "o", "a"] +[45.25706692695644, "o", "t"] +[45.28706692695644, "o", "h"] +[45.31706692695644, "o", "e"] +[45.347066926956444, "o", "r"] +[45.377066926956445, "o", " "] +[45.407066926956446, "o", "i"] +[45.43706692695645, "o", "n"] +[45.46706692695645, "o", "i"] +[45.49706692695645, "o", "t"] +[45.52706692695645, "o", "i"] +[45.55706692695645, "o", "a"] +[45.58706692695645, "o", "l"] +[45.617066926956454, "o", "_"] +[45.647066926956455, "o", "d"] +[45.677066926956456, "o", "a"] +[45.70706692695646, "o", "t"] +[45.73706692695646, "o", "a"] +[45.76706692695646, "o", "\r\n"] +[45.79706692695646, "o", "\u001b[0m"] +[45.82706692695646, "o", "\r\n"] +[46.217330007553386, "o", "Committing demo/weather...\r\n"] +[46.23925164222746, "o", "Processing table rdu\r\n"] +[46.465056209564494, "o", "Committed demo/weather as 82d3efae293c.\r\n"] +[46.858647613525676, "o", "Tagged demo/weather:82d3efae293c6c0b21541b0ed28e2616826ec2b7d26231e2702dc2f9d292059d with initial_data.\r\n"] +[46.88864761352568, "o", "\u001b[1m"] +[46.91864761352568, "o", "\u001b[36m"] +[46.94864761352568, "o", "\u001b[91m"] +[46.97864761352568, "o", "$"] +[47.00864761352568, "o", " "] +[47.03864761352568, "o", "\u001b[0m"] +[52.068647613525684, "o", "\u001b[H"] +[52.098647613525685, "o", "\u001b[J"] +[52.128647613525686, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image"] +[52.15864761352569, "o", "\r\n"] +[52.18864761352569, "o", "$"] +[52.21864761352569, "o", " "] +[52.24864761352569, "o", "s"] +[52.27864761352569, "o", "g"] +[52.30864761352569, "o", "r"] +[52.338647613525694, "o", " "] +[52.368647613525695, "o", "s"] +[52.398647613525696, "o", "h"] +[52.4286476135257, "o", "o"] +[52.4586476135257, "o", "w"] +[52.4886476135257, "o", " "] +[52.5186476135257, "o", "d"] +[52.5486476135257, "o", "e"] +[52.5786476135257, "o", "m"] +[52.608647613525704, "o", "o"] +[52.638647613525706, "o", "/"] +[52.66864761352571, "o", "w"] +[52.69864761352571, "o", "e"] +[52.72864761352571, "o", "a"] +[52.75864761352571, "o", "t"] +[52.78864761352571, "o", "h"] +[52.81864761352571, "o", "e"] +[52.84864761352571, "o", "r"] +[52.878647613525715, "o", ":"] +[52.908647613525716, "o", "i"] +[52.93864761352572, "o", "n"] +[52.96864761352572, "o", "i"] +[52.99864761352572, "o", "t"] +[53.02864761352572, "o", "i"] +[53.05864761352572, "o", "a"] +[53.08864761352572, "o", "l"] +[53.118647613525724, "o", "_"] +[53.148647613525725, "o", "d"] +[53.178647613525726, "o", "a"] +[53.20864761352573, "o", "t"] +[53.23864761352573, "o", "a"] +[53.26864761352573, "o", "\r\n"] +[53.29864761352573, "o", "\u001b[0m"] +[53.32864761352573, "o", "\r\n"] +[53.714497804642065, "o", "Image demo/weather:82d3efae293c6c0b21541b0ed28e2616826ec2b7d26231e2702dc2f9d292059d\r\n\r\n"] +[53.71452212333713, "o", "Created at 2021-10-14T21:31:08.947188\r\n"] +[53.715901851654394, "o", "Size: 113.04 KiB\r\n"] +[53.715917825699194, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[53.71672534942661, "o", " rdu\r\n"] +[53.74672534942661, "o", "\u001b[1m"] +[53.77672534942661, "o", "\u001b[36m"] +[53.806725349426614, "o", "\u001b[91m"] +[53.836725349426615, "o", "$"] +[53.866725349426616, "o", " "] +[53.89672534942662, "o", "\u001b[0m"] +[58.92672534942662, "o", "\u001b[H"] +[58.95672534942662, "o", "\u001b[J"] +[58.98672534942662, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the table"] +[59.01672534942662, "o", "\r\n"] +[59.04672534942662, "o", "$"] +[59.076725349426624, "o", " "] +[59.106725349426625, "o", "s"] +[59.13672534942663, "o", "g"] +[59.16672534942663, "o", "r"] +[59.19672534942663, "o", " "] +[59.22672534942663, "o", "t"] +[59.25672534942663, "o", "a"] +[59.28672534942663, "o", "b"] +[59.31672534942663, "o", "l"] +[59.346725349426634, "o", "e"] +[59.376725349426636, "o", " "] +[59.40672534942664, "o", "d"] +[59.43672534942664, "o", "e"] +[59.46672534942664, "o", "m"] +[59.49672534942664, "o", "o"] +[59.52672534942664, "o", "/"] +[59.55672534942664, "o", "w"] +[59.586725349426644, "o", "e"] +[59.616725349426645, "o", "a"] +[59.646725349426646, "o", "t"] +[59.67672534942665, "o", "h"] +[59.70672534942665, "o", "e"] +[59.73672534942665, "o", "r"] +[59.76672534942665, "o", ":"] +[59.79672534942665, "o", "i"] +[59.82672534942665, "o", "n"] +[59.856725349426654, "o", "i"] +[59.886725349426655, "o", "t"] +[59.916725349426656, "o", "i"] +[59.94672534942666, "o", "a"] +[59.97672534942666, "o", "l"] +[60.00672534942666, "o", "_"] +[60.03672534942666, "o", "d"] +[60.06672534942666, "o", "a"] +[60.09672534942666, "o", "t"] +[60.126725349426664, "o", "a"] +[60.156725349426665, "o", " "] +[60.186725349426666, "o", "r"] +[60.21672534942667, "o", "d"] +[60.24672534942667, "o", "u"] +[60.27672534942667, "o", "\r\n"] +[60.30672534942667, "o", "\u001b[0m"] +[60.33672534942667, "o", "\r\n"] +[60.728801126480505, "o", "Table demo/weather:82d3efae293c6c0b21541b0ed28e2616826ec2b7d26231e2702dc2f9d292059d/rdu\r\n\r\n"] +[60.73026811599772, "o", "Size: 113.04 KiB\r\n"] +[60.73120200157206, "o", "Rows: 4633\r\n"] +[60.73123251915018, "o", "Columns: \r\n date (timestamp without time zone, PK)\r\n temperaturemin (numeric)\r\n temperaturemax (numeric)\r\n precipitation (numeric)\r\n snowfall (numeric)\r\n snowdepth (numeric)\r\n"] +[60.731245393753454, "o", " avgwindspeed (numeric)\r\n fastest2minwinddir (integer)\r\n fastest2minwindspeed (numeric)\r\n fastest5secwinddir (integer)\r\n"] +[60.73125707626383, "o", " fastest5secwindspeed (numeric)\r\n fog (character varying)\r\n"] +[60.73127877235453, "o", " fogheavy (character varying)\r\n mist (character varying)\r\n rain (character varying)\r\n"] +[60.731298322678015, "o", " fogground (character varying)\r\n ice (character varying)\r\n"] +[60.73131572723429, "o", " glaze (character varying)\r\n drizzle (character varying)\r\n snow (character varying)\r\n"] +[60.731335039139196, "o", " freezingrain (character varying)\r\n smokehaze (character varying)\r\n"] +[60.731346244812414, "o", " thunder (character varying)\r\n highwind (character varying)\r\n"] +[60.7313703250889, "o", " hail (character varying)\r\n blowingsnow (character varying)\r\n dust (character varying)\r\n freezingfog (character varying)\r\n"] +[60.73137962341349, "o", "\r\nObjects: \r\n ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] +[60.76137962341349, "o", "\u001b[1m"] +[60.79137962341349, "o", "\u001b[36m"] +[60.82137962341349, "o", "\u001b[91m"] +[60.85137962341349, "o", "$"] +[60.881379623413494, "o", " "] +[60.911379623413495, "o", "\u001b[0m"] +[78.42672534942662, "o", "\u001b[H"] +[78.45672534942662, "o", "\u001b[J"] +[78.48672534942662, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect object metadata"] +[78.51672534942662, "o", "\r\n"] +[78.54672534942662, "o", "$"] +[78.57672534942662, "o", " "] +[78.60672534942663, "o", "s"] +[78.63672534942663, "o", "g"] +[78.66672534942663, "o", "r"] +[78.69672534942663, "o", " "] +[78.72672534942663, "o", "o"] +[78.75672534942663, "o", "b"] +[78.78672534942663, "o", "j"] +[78.81672534942663, "o", "e"] +[78.84672534942663, "o", "c"] +[78.87672534942664, "o", "t"] +[78.90672534942664, "o", " "] +[78.93672534942664, "o", "o"] +[78.96672534942664, "o", "b"] +[78.99672534942664, "o", "7"] +[79.02672534942664, "o", "9"] +[79.05672534942664, "o", "9"] +[79.08672534942664, "o", "c"] +[79.11672534942664, "o", "a"] +[79.14672534942665, "o", "7"] +[79.17672534942665, "o", "6"] +[79.20672534942665, "o", "1"] +[79.23672534942665, "o", "e"] +[79.26672534942665, "o", "a"] +[79.29672534942665, "o", "6"] +[79.32672534942665, "o", "3"] +[79.35672534942665, "o", "8"] +[79.38672534942665, "o", "c"] +[79.41672534942666, "o", "0"] +[79.44672534942666, "o", "d"] +[79.47672534942666, "o", "b"] +[79.50672534942666, "o", "b"] +[79.53672534942666, "o", "4"] +[79.56672534942666, "o", "d"] +[79.59672534942666, "o", "f"] +[79.62672534942666, "o", "3"] +[79.65672534942667, "o", "e"] +[79.68672534942667, "o", "5"] +[79.71672534942667, "o", "9"] +[79.74672534942667, "o", "a"] +[79.77672534942667, "o", "b"] +[79.80672534942667, "o", "6"] +[79.83672534942667, "o", "a"] +[79.86672534942667, "o", "9"] +[79.89672534942667, "o", "9"] +[79.92672534942668, "o", "5"] +[79.95672534942668, "o", "d"] +[79.98672534942668, "o", "8"] +[80.01672534942668, "o", "7"] +[80.04672534942668, "o", "9"] +[80.07672534942668, "o", "9"] +[80.10672534942668, "o", "9"] +[80.13672534942668, "o", "9"] +[80.16672534942668, "o", "0"] +[80.19672534942669, "o", "9"] +[80.22672534942669, "o", "d"] +[80.25672534942669, "o", "0"] +[80.28672534942669, "o", "0"] +[80.31672534942669, "o", "8"] +[80.34672534942669, "o", "a"] +[80.37672534942669, "o", "3"] +[80.4067253494267, "o", "4"] +[80.4367253494267, "o", "9"] +[80.4667253494267, "o", "5"] +[80.4967253494267, "o", "7"] +[80.5267253494267, "o", "1"] +[80.5567253494267, "o", "1"] +[80.5867253494267, "o", "c"] +[80.6167253494267, "o", "9"] +[80.6467253494267, "o", "0"] +[80.6767253494267, "o", "0"] +[80.7067253494267, "o", "9"] +[80.7367253494267, "o", "f"] +[80.76672534942671, "o", "8"] +[80.79672534942671, "o", "f"] +[80.82672534942671, "o", "\r\n"] +[80.85672534942671, "o", "\u001b[0m"] +[80.88672534942671, "o", "\r\n"] +[81.27481691360518, "o", "Object ID: ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n\r\n"] +[81.27483860969588, "o", "Namespace: demo\r\nFormat: FRAG\r\nSize: 113.04 KiB\r\nCreated: 2021-10-14 21:31:09.155159\r\nRows inserted: 4633\r\nInsertion hash: 4b49b5701a582aa5c418238e4bf75c84d0dcd2ec993fb4e7fe1d0dfcf6ef6877\r\nRows deleted: 0\r\nDeletion hash: 0000000000000000000000000000000000000000000000000000000000000000\r\nColumn index:\r\n fog: ['No', 'Yes']\r\n ice: ['No', 'Yes']\r\n date: ['2007-01-01 00:00:00', '2019-09-07 00:00:00']\r\n dust: ['No', 'Yes']\r\n hail: ['No', 'Yes']\r\n mist: ['No', 'Yes']\r\n"] +[81.27528731346175, "o", " rain: ['No', 'Yes']"] +[81.27534763336226, "o", "\r\n"] +[81.27558986663863, "o", " snow: ['No', 'Yes']"] +[81.27563302040144, "o", "\r\n"] +[81.27586500167891, "o", " glaze: ['No', 'Yes']"] +[81.27591006279036, "o", "\r\n"] +[81.27614967346236, "o", " drizzle: ['No', 'Yes']"] +[81.27619425773665, "o", "\r\n"] +[81.27640192031905, "o", " thunder: ['No', 'Yes']"] +[81.27644388198897, "o", "\r\n"] +[81.27655212402388, "o", " fogheavy: ['No', 'Yes']"] +[81.27660028457686, "o", "\r\n"] +[81.27670804977461, "o", " highwind: ['No', 'Yes']"] +[81.27675859451338, "o", "\r\n"] +[81.27686373710677, "o", " snowfall: ['0.0', '7.01']"] +[81.27691165924116, "o", "\r\n"] +[81.27701894760176, "o", " fogground: ['No', 'Yes']"] +[81.27706734657332, "o", "\r\n"] +[81.27716986656233, "o", " smokehaze: ['No', 'Yes']"] +[81.27721993446394, "o", "\r\n"] +[81.27733437538191, "o", " snowdepth: ['0.0', '5.91']"] +[81.27737586021468, "o", "\r\n"] +[81.27748314857527, "o", " blowingsnow: ['No', 'Yes']"] +[81.27752415657088, "o", "\r\n"] +[81.27762929916426, "o", " freezingfog: ['No', 'Yes']"] +[81.27767078399702, "o", "\r\n"] +[81.27777688026472, "o", " avgwindspeed: ['0.0', '20.36']"] +[81.27782551765486, "o", "\r\n"] +[81.2779356670384, "o", " freezingrain: ['No', 'Yes']"] +[81.2779778671269, "o", "\r\n"] +[81.27808706283614, "o", " precipitation: ['0.0', '6.45']"] +[81.2781285476689, "o", "\r\n"] +[81.27824012756392, "o", " temperaturemax: ['23.2', '105.1']"] +[81.27828995704695, "o", "\r\n"] +[81.2784411144261, "o", " temperaturemin: ['4.1', '80.1']"] +[81.27847926139876, "o", "\r\n"] +[81.27878491401717, "o", " fastest2minwinddir: [10, 360]\r\n"] +[81.27879898071333, "o", " fastest5secwinddir: [10, 360]\r\n fastest2minwindspeed: ['4.92', '59.95']\r\n fastest5secwindspeed: ['6.93', '86.12']\r\n\r\n"] +[81.30074040412947, "o", "Location: created locally\r\n"] +[81.33074040412947, "o", "\u001b[1m"] +[81.36074040412947, "o", "\u001b[36m"] +[81.39074040412947, "o", "\u001b[91m"] +[81.42074040412948, "o", "$"] +[81.45074040412948, "o", " "] +[81.48074040412948, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.17/import-from-mongo.cast b/content/casts/versioned/archive/v0.2.17/import-from-mongo.cast new file mode 100644 index 00000000..c875d5d3 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.17/import-from-mongo.cast @@ -0,0 +1,669 @@ +{"version": 2, "width": 100, "height": 35, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1634247072, "metadata": {"tss": [{"h": "Inspect the config file", "ts": 0.06}, {"h": "Do some preliminary cleanup", "ts": 6.0600000000000005}, {"h": "Mount the Mongo database", "ts": 12.412188072204597}, {"h": "Check the contents of the new table", "ts": 29.4121880722046}, {"h": "Import the data into a new Splitgraph repository", "ts": 36.478816432952954}, {"h": "Alternatively, data can be imported from other databases with Splitfiles", "ts": 44.94820143699664}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the config file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "c"] +[0.24, "o", "a"] +[0.27, "o", "t"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "."] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "g"] +[0.42000000000000015, "o", "c"] +[0.4500000000000002, "o", "o"] +[0.4800000000000002, "o", "n"] +[0.5100000000000002, "o", "f"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "g"] +[0.6000000000000003, "o", "\r\n"] +[0.6300000000000003, "o", "\u001b[0m"] +[0.6600000000000004, "o", "\r\n"] +[0.6618234252929691, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[data_sources]\r\nmongo_fdw=splitgraph.hooks.data_source.MongoDataSource\r\n"] +[0.6918234252929691, "o", "\u001b[1m"] +[0.7218234252929692, "o", "\u001b[36m"] +[0.7518234252929692, "o", "\u001b[91m"] +[0.7818234252929692, "o", "$"] +[0.8118234252929692, "o", " "] +[0.8418234252929693, "o", "\u001b[0m"] +[6.03, "o", "\u001b[H"] +[6.0600000000000005, "o", "\u001b[J"] +[6.090000000000001, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Do some preliminary cleanup"] +[6.120000000000001, "o", "\r\n"] +[6.150000000000001, "o", "$"] +[6.1800000000000015, "o", " "] +[6.210000000000002, "o", "s"] +[6.240000000000002, "o", "g"] +[6.270000000000002, "o", "r"] +[6.3000000000000025, "o", " "] +[6.330000000000003, "o", "r"] +[6.360000000000003, "o", "m"] +[6.390000000000003, "o", " "] +[6.4200000000000035, "o", "-"] +[6.450000000000004, "o", "y"] +[6.480000000000004, "o", " "] +[6.510000000000004, "o", "s"] +[6.5400000000000045, "o", "t"] +[6.570000000000005, "o", "a"] +[6.600000000000005, "o", "g"] +[6.630000000000005, "o", "i"] +[6.6600000000000055, "o", "n"] +[6.690000000000006, "o", "g"] +[6.720000000000006, "o", "\r\n"] +[6.750000000000006, "o", "\u001b[0m"] +[6.7800000000000065, "o", "\r\n"] +[7.172188072204596, "o", "Postgres schema staging will be deleted.\r\n"] +[7.202188072204597, "o", "\u001b[1m"] +[7.232188072204597, "o", "\u001b[36m"] +[7.262188072204597, "o", "\u001b[91m"] +[7.292188072204597, "o", "$"] +[7.3221880722045976, "o", " "] +[7.352188072204598, "o", "\u001b[0m"] +[12.382188072204597, "o", "\u001b[H"] +[12.412188072204597, "o", "\u001b[J"] +[12.442188072204596, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Mount the Mongo database"] +[12.472188072204595, "o", "\r\n"] +[12.502188072204595, "o", "$"] +[12.532188072204594, "o", " "] +[12.562188072204593, "o", "s"] +[12.592188072204593, "o", "g"] +[12.622188072204592, "o", "r"] +[12.652188072204591, "o", " "] +[12.68218807220459, "o", "m"] +[12.71218807220459, "o", "o"] +[12.74218807220459, "o", "u"] +[12.772188072204589, "o", "n"] +[12.802188072204588, "o", "t"] +[12.832188072204588, "o", " "] +[12.862188072204587, "o", "m"] +[12.892188072204586, "o", "o"] +[12.922188072204586, "o", "n"] +[12.952188072204585, "o", "g"] +[12.982188072204584, "o", "o"] +[13.012188072204584, "o", "_"] +[13.042188072204583, "o", "f"] +[13.072188072204582, "o", "d"] +[13.102188072204582, "o", "w"] +[13.132188072204581, "o", " "] +[13.16218807220458, "o", "-"] +[13.19218807220458, "o", "-"] +[13.22218807220458, "o", "h"] +[13.252188072204579, "o", "e"] +[13.282188072204578, "o", "l"] +[13.312188072204577, "o", "p"] +[13.342188072204577, "o", "\r\n"] +[13.372188072204576, "o", "$"] +[13.402188072204575, "o", " "] +[13.432188072204575, "o", "s"] +[13.462188072204574, "o", "g"] +[13.492188072204574, "o", "r"] +[13.522188072204573, "o", " "] +[13.552188072204572, "o", "m"] +[13.582188072204572, "o", "o"] +[13.612188072204571, "o", "u"] +[13.64218807220457, "o", "n"] +[13.67218807220457, "o", "t"] +[13.702188072204569, "o", " "] +[13.732188072204568, "o", "m"] +[13.762188072204568, "o", "o"] +[13.792188072204567, "o", "n"] +[13.822188072204566, "o", "g"] +[13.852188072204566, "o", "o"] +[13.882188072204565, "o", "_"] +[13.912188072204565, "o", "f"] +[13.942188072204564, "o", "d"] +[13.972188072204563, "o", "w"] +[14.002188072204563, "o", " "] +[14.032188072204562, "o", "s"] +[14.062188072204561, "o", "t"] +[14.09218807220456, "o", "a"] +[14.12218807220456, "o", "g"] +[14.15218807220456, "o", "i"] +[14.182188072204559, "o", "n"] +[14.212188072204558, "o", "g"] +[14.242188072204558, "o", " "] +[14.272188072204557, "o", "-"] +[14.302188072204556, "o", "c"] +[14.332188072204556, "o", " "] +[14.362188072204555, "o", "o"] +[14.392188072204554, "o", "r"] +[14.422188072204554, "o", "i"] +[14.452188072204553, "o", "g"] +[14.482188072204552, "o", "i"] +[14.512188072204552, "o", "n"] +[14.542188072204551, "o", "r"] +[14.57218807220455, "o", "o"] +[14.60218807220455, "o", ":"] +[14.63218807220455, "o", "o"] +[14.662188072204549, "o", "r"] +[14.692188072204548, "o", "i"] +[14.722188072204547, "o", "g"] +[14.752188072204547, "o", "i"] +[14.782188072204546, "o", "n"] +[14.812188072204545, "o", "p"] +[14.842188072204545, "o", "a"] +[14.872188072204544, "o", "s"] +[14.902188072204543, "o", "s"] +[14.932188072204543, "o", "@"] +[14.962188072204542, "o", "m"] +[14.992188072204542, "o", "o"] +[15.02218807220454, "o", "n"] +[15.05218807220454, "o", "g"] +[15.08218807220454, "o", "o"] +[15.112188072204539, "o", ":"] +[15.142188072204538, "o", "2"] +[15.172188072204538, "o", "7"] +[15.202188072204537, "o", "0"] +[15.232188072204536, "o", "1"] +[15.262188072204536, "o", "7"] +[15.292188072204535, "o", " "] +[15.322188072204534, "o", "-"] +[15.352188072204534, "o", "o"] +[15.382188072204533, "o", " "] +[15.412188072204533, "o", "'"] +[15.442188072204532, "o", "{"] +[15.472188072204531, "o", "\""] +[15.50218807220453, "o", "t"] +[15.53218807220453, "o", "a"] +[15.56218807220453, "o", "b"] +[15.592188072204529, "o", "l"] +[15.622188072204528, "o", "e"] +[15.652188072204527, "o", "s"] +[15.682188072204527, "o", "\""] +[15.712188072204526, "o", ":"] +[15.742188072204526, "o", " "] +[15.772188072204525, "o", "{"] +[15.802188072204524, "o", "\""] +[15.832188072204524, "o", "s"] +[15.862188072204523, "o", "t"] +[15.892188072204522, "o", "u"] +[15.922188072204522, "o", "f"] +[15.952188072204521, "o", "f"] +[15.98218807220452, "o", "\""] +[16.01218807220452, "o", ":"] +[16.04218807220452, "o", " "] +[16.072188072204522, "o", "{"] +[16.102188072204523, "o", "\r\n "] +[16.132188072204524, "o", "\""] +[16.162188072204525, "o", "o"] +[16.192188072204527, "o", "p"] +[16.222188072204528, "o", "t"] +[16.25218807220453, "o", "i"] +[16.28218807220453, "o", "o"] +[16.31218807220453, "o", "n"] +[16.342188072204532, "o", "s"] +[16.372188072204533, "o", "\""] +[16.402188072204535, "o", ":"] +[16.432188072204536, "o", "\r\n "] +[16.462188072204537, "o", "{"] +[16.492188072204538, "o", "\r\n "] +[16.52218807220454, "o", "\""] +[16.55218807220454, "o", "d"] +[16.58218807220454, "o", "a"] +[16.612188072204543, "o", "t"] +[16.642188072204544, "o", "a"] +[16.672188072204545, "o", "b"] +[16.702188072204546, "o", "a"] +[16.732188072204547, "o", "s"] +[16.762188072204548, "o", "e"] +[16.79218807220455, "o", "\""] +[16.82218807220455, "o", ":"] +[16.85218807220455, "o", " "] +[16.882188072204553, "o", "\""] +[16.912188072204554, "o", "o"] +[16.942188072204555, "o", "r"] +[16.972188072204556, "o", "i"] +[17.002188072204557, "o", "g"] +[17.03218807220456, "o", "i"] +[17.06218807220456, "o", "n"] +[17.09218807220456, "o", "d"] +[17.122188072204562, "o", "b"] +[17.152188072204563, "o", "\""] +[17.182188072204564, "o", ","] +[17.212188072204565, "o", "\r\n "] +[17.242188072204566, "o", "\""] +[17.272188072204568, "o", "c"] +[17.30218807220457, "o", "o"] +[17.33218807220457, "o", "l"] +[17.36218807220457, "o", "l"] +[17.392188072204572, "o", "e"] +[17.422188072204573, "o", "c"] +[17.452188072204574, "o", "t"] +[17.482188072204575, "o", "i"] +[17.512188072204577, "o", "o"] +[17.542188072204578, "o", "n"] +[17.57218807220458, "o", "\""] +[17.60218807220458, "o", ":"] +[17.63218807220458, "o", " "] +[17.662188072204582, "o", "\""] +[17.692188072204583, "o", "s"] +[17.722188072204585, "o", "t"] +[17.752188072204586, "o", "u"] +[17.782188072204587, "o", "f"] +[17.812188072204588, "o", "f"] +[17.84218807220459, "o", "\""] +[17.87218807220459, "o", "\r\n "] +[17.90218807220459, "o", "}"] +[17.932188072204593, "o", ","] +[17.962188072204594, "o", "\r\n "] +[17.992188072204595, "o", "\""] +[18.022188072204596, "o", "s"] +[18.052188072204597, "o", "c"] +[18.0821880722046, "o", "h"] +[18.1121880722046, "o", "e"] +[18.1421880722046, "o", "m"] +[18.1721880722046, "o", "a"] +[18.202188072204603, "o", "\""] +[18.232188072204604, "o", ":"] +[18.262188072204605, "o", " "] +[18.292188072204606, "o", "{"] +[18.322188072204607, "o", "\r\n "] +[18.35218807220461, "o", "\""] +[18.38218807220461, "o", "n"] +[18.41218807220461, "o", "a"] +[18.442188072204612, "o", "m"] +[18.472188072204613, "o", "e"] +[18.502188072204614, "o", "\""] +[18.532188072204615, "o", ":"] +[18.562188072204616, "o", " "] +[18.592188072204618, "o", "\""] +[18.62218807220462, "o", "t"] +[18.65218807220462, "o", "e"] +[18.68218807220462, "o", "x"] +[18.712188072204622, "o", "t"] +[18.742188072204623, "o", "\""] +[18.772188072204624, "o", ","] +[18.802188072204626, "o", "\r\n "] +[18.832188072204627, "o", "\""] +[18.862188072204628, "o", "d"] +[18.89218807220463, "o", "u"] +[18.92218807220463, "o", "r"] +[18.95218807220463, "o", "a"] +[18.982188072204632, "o", "t"] +[19.012188072204633, "o", "i"] +[19.042188072204635, "o", "o"] +[19.072188072204636, "o", "n"] +[19.102188072204637, "o", "\""] +[19.132188072204638, "o", ":"] +[19.16218807220464, "o", " "] +[19.19218807220464, "o", "\""] +[19.22218807220464, "o", "n"] +[19.252188072204643, "o", "u"] +[19.282188072204644, "o", "m"] +[19.312188072204645, "o", "e"] +[19.342188072204646, "o", "r"] +[19.372188072204647, "o", "i"] +[19.40218807220465, "o", "c"] +[19.43218807220465, "o", "\""] +[19.46218807220465, "o", ","] +[19.49218807220465, "o", "\r\n "] +[19.522188072204653, "o", "\""] +[19.552188072204654, "o", "h"] +[19.582188072204655, "o", "a"] +[19.612188072204656, "o", "p"] +[19.642188072204657, "o", "p"] +[19.67218807220466, "o", "y"] +[19.70218807220466, "o", "\""] +[19.73218807220466, "o", ":"] +[19.762188072204662, "o", " "] +[19.792188072204663, "o", "\""] +[19.822188072204664, "o", "b"] +[19.852188072204665, "o", "o"] +[19.882188072204666, "o", "o"] +[19.912188072204668, "o", "l"] +[19.94218807220467, "o", "e"] +[19.97218807220467, "o", "a"] +[20.00218807220467, "o", "n"] +[20.032188072204672, "o", "\""] +[20.062188072204673, "o", "}"] +[20.092188072204674, "o", "}"] +[20.122188072204676, "o", "}"] +[20.152188072204677, "o", "}"] +[20.182188072204678, "o", "'"] +[20.21218807220468, "o", "\r\n"] +[20.24218807220468, "o", "\u001b[0m"] +[20.27218807220468, "o", "\r\n"] +[20.62933695793161, "o", "Usage: sgr mount mongo_fdw [OPTIONS] SCHEMA\r\n\r\n Mount a Mongo database.\r\n\r\n Mounts one or more collections on a remote Mongo database as a set of\r\n foreign tables locally.\r\n\r\nOptions:\r\n -c, --connection TEXT Connection string in the form\r\n username:password@server:port\r\n\r\n -o, --handler-options JSON JSON-encoded dictionary or @filename.json with\r\n handler options:\r\n \r\n tables: A di"] +[20.62935793876657, "o", "ctionary of form { \"table_name\":\r\n { \"schema\": {\"col1\": \"type1\"...},\r\n \"options\": {\"database\": , \"collection\":\r\n } } }\r\n\r\n --help Show this message and exit.\r\n"] +[21.063483839035126, "o", "Mounting table stuff\r\n"] +[21.093483839035127, "o", "\u001b[1m"] +[21.123483839035128, "o", "\u001b[36m"] +[21.15348383903513, "o", "\u001b[91m"] +[21.18348383903513, "o", "$"] +[21.21348383903513, "o", " "] +[21.243483839035132, "o", "\u001b[0m"] +[29.3821880722046, "o", "\u001b[H"] +[29.4121880722046, "o", "\u001b[J"] +[29.4421880722046, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the contents of the new table"] +[29.472188072204602, "o", "\r\n"] +[29.502188072204603, "o", "$"] +[29.532188072204605, "o", " "] +[29.562188072204606, "o", "s"] +[29.592188072204607, "o", "g"] +[29.622188072204608, "o", "r"] +[29.65218807220461, "o", " "] +[29.68218807220461, "o", "s"] +[29.71218807220461, "o", "q"] +[29.742188072204613, "o", "l"] +[29.772188072204614, "o", " "] +[29.802188072204615, "o", "-"] +[29.832188072204616, "o", "s"] +[29.862188072204617, "o", " "] +[29.89218807220462, "o", "s"] +[29.92218807220462, "o", "t"] +[29.95218807220462, "o", "a"] +[29.98218807220462, "o", "g"] +[30.012188072204623, "o", "i"] +[30.042188072204624, "o", "n"] +[30.072188072204625, "o", "g"] +[30.102188072204626, "o", " "] +[30.132188072204627, "o", "\""] +[30.16218807220463, "o", "S"] +[30.19218807220463, "o", "E"] +[30.22218807220463, "o", "L"] +[30.252188072204632, "o", "E"] +[30.282188072204633, "o", "C"] +[30.312188072204634, "o", "T"] +[30.342188072204635, "o", " "] +[30.372188072204636, "o", "*"] +[30.402188072204638, "o", " "] +[30.43218807220464, "o", "F"] +[30.46218807220464, "o", "R"] +[30.49218807220464, "o", "O"] +[30.522188072204642, "o", "M"] +[30.552188072204643, "o", " "] +[30.582188072204644, "o", "s"] +[30.612188072204646, "o", "t"] +[30.642188072204647, "o", "u"] +[30.672188072204648, "o", "f"] +[30.70218807220465, "o", "f"] +[30.73218807220465, "o", "\""] +[30.76218807220465, "o", "\r\n"] +[30.792188072204652, "o", "\u001b[0m"] +[30.822188072204654, "o", "\r\n"] +[31.238816432952945, "o", "Alex 12 False 6168a1ac9f77b6d54a9b11da\r\nJames 2 True 6168a1ac9f77b6d54a9b11db\r\nAlice 98765 True 6168a1ac9f77b6d54a9b11dc\r\n"] +[31.268816432952946, "o", "\u001b[1m"] +[31.298816432952947, "o", "\u001b[36m"] +[31.328816432952948, "o", "\u001b[91m"] +[31.35881643295295, "o", "$"] +[31.38881643295295, "o", " "] +[31.41881643295295, "o", "\u001b[0m"] +[36.44881643295295, "o", "\u001b[H"] +[36.478816432952954, "o", "\u001b[J"] +[36.508816432952955, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Import the data into a new Splitgraph repository"] +[36.538816432952956, "o", "\r\n"] +[36.56881643295296, "o", "$"] +[36.59881643295296, "o", " "] +[36.62881643295296, "o", "s"] +[36.65881643295296, "o", "g"] +[36.68881643295296, "o", "r"] +[36.71881643295296, "o", " "] +[36.748816432952964, "o", "i"] +[36.778816432952965, "o", "m"] +[36.808816432952966, "o", "p"] +[36.83881643295297, "o", "o"] +[36.86881643295297, "o", "r"] +[36.89881643295297, "o", "t"] +[36.92881643295297, "o", " "] +[36.95881643295297, "o", "s"] +[36.98881643295297, "o", "t"] +[37.018816432952974, "o", "a"] +[37.048816432952975, "o", "g"] +[37.078816432952976, "o", "i"] +[37.10881643295298, "o", "n"] +[37.13881643295298, "o", "g"] +[37.16881643295298, "o", " "] +[37.19881643295298, "o", "\""] +[37.22881643295298, "o", "S"] +[37.25881643295298, "o", "E"] +[37.288816432952984, "o", "L"] +[37.318816432952985, "o", "E"] +[37.34881643295299, "o", "C"] +[37.37881643295299, "o", "T"] +[37.40881643295299, "o", " "] +[37.43881643295299, "o", "n"] +[37.46881643295299, "o", "a"] +[37.49881643295299, "o", "m"] +[37.52881643295299, "o", "e"] +[37.558816432952995, "o", ","] +[37.588816432952996, "o", " "] +[37.618816432953, "o", "d"] +[37.648816432953, "o", "u"] +[37.678816432953, "o", "r"] +[37.708816432953, "o", "a"] +[37.738816432953, "o", "t"] +[37.768816432953, "o", "i"] +[37.798816432953004, "o", "o"] +[37.828816432953005, "o", "n"] +[37.858816432953006, "o", ","] +[37.88881643295301, "o", " "] +[37.91881643295301, "o", "h"] +[37.94881643295301, "o", "a"] +[37.97881643295301, "o", "p"] +[38.00881643295301, "o", "p"] +[38.03881643295301, "o", "y"] +[38.068816432953014, "o", " "] +[38.098816432953015, "o", "F"] +[38.128816432953016, "o", "R"] +[38.15881643295302, "o", "O"] +[38.18881643295302, "o", "M"] +[38.21881643295302, "o", " "] +[38.24881643295302, "o", "s"] +[38.27881643295302, "o", "t"] +[38.30881643295302, "o", "u"] +[38.338816432953024, "o", "f"] +[38.368816432953025, "o", "f"] +[38.398816432953026, "o", "\""] +[38.42881643295303, "o", " "] +[38.45881643295303, "o", "m"] +[38.48881643295303, "o", "y"] +[38.51881643295303, "o", "/"] +[38.54881643295303, "o", "r"] +[38.57881643295303, "o", "e"] +[38.608816432953034, "o", "p"] +[38.638816432953035, "o", "o"] +[38.66881643295304, "o", "s"] +[38.69881643295304, "o", "i"] +[38.72881643295304, "o", "t"] +[38.75881643295304, "o", "o"] +[38.78881643295304, "o", "r"] +[38.81881643295304, "o", "y"] +[38.84881643295304, "o", " "] +[38.878816432953045, "o", "s"] +[38.908816432953046, "o", "t"] +[38.93881643295305, "o", "u"] +[38.96881643295305, "o", "f"] +[38.99881643295305, "o", "f"] +[39.02881643295305, "o", "\r\n"] +[39.05881643295305, "o", "\u001b[0m"] +[39.08881643295305, "o", "\r\n"] +[39.52412488937395, "o", "Processing table sg_tmp_faa04611d6ee60ab232fd06b9d1d8d46\r\n"] +[39.70820143699663, "o", "my/repository:stuff has been imported from staging:SELECT name, duration, happy FROM stuff\r\n"] +[39.73820143699663, "o", "\u001b[1m"] +[39.768201436996634, "o", "\u001b[36m"] +[39.798201436996635, "o", "\u001b[91m"] +[39.828201436996636, "o", "$"] +[39.85820143699664, "o", " "] +[39.88820143699664, "o", "\u001b[0m"] +[44.91820143699664, "o", "\u001b[H"] +[44.94820143699664, "o", "\u001b[J"] +[44.97820143699664, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Alternatively, data can be imported from other databases with Splitfiles"] +[45.00820143699664, "o", "\r\n"] +[45.038201436996644, "o", "$"] +[45.068201436996645, "o", " "] +[45.098201436996646, "o", "c"] +[45.12820143699665, "o", "a"] +[45.15820143699665, "o", "t"] +[45.18820143699665, "o", " "] +[45.21820143699665, "o", "m"] +[45.24820143699665, "o", "o"] +[45.27820143699665, "o", "n"] +[45.308201436996654, "o", "g"] +[45.338201436996656, "o", "o"] +[45.36820143699666, "o", "_"] +[45.39820143699666, "o", "i"] +[45.42820143699666, "o", "m"] +[45.45820143699666, "o", "p"] +[45.48820143699666, "o", "o"] +[45.51820143699666, "o", "r"] +[45.54820143699666, "o", "t"] +[45.578201436996665, "o", "."] +[45.608201436996666, "o", "s"] +[45.63820143699667, "o", "p"] +[45.66820143699667, "o", "l"] +[45.69820143699667, "o", "i"] +[45.72820143699667, "o", "t"] +[45.75820143699667, "o", "f"] +[45.78820143699667, "o", "i"] +[45.818201436996674, "o", "l"] +[45.848201436996675, "o", "e"] +[45.878201436996676, "o", "\r\n"] +[45.90820143699668, "o", "$"] +[45.93820143699668, "o", " "] +[45.96820143699668, "o", "s"] +[45.99820143699668, "o", "g"] +[46.02820143699668, "o", "r"] +[46.05820143699668, "o", " "] +[46.088201436996684, "o", "b"] +[46.118201436996685, "o", "u"] +[46.148201436996686, "o", "i"] +[46.17820143699669, "o", "l"] +[46.20820143699669, "o", "d"] +[46.23820143699669, "o", " "] +[46.26820143699669, "o", "m"] +[46.29820143699669, "o", "o"] +[46.32820143699669, "o", "n"] +[46.358201436996694, "o", "g"] +[46.388201436996695, "o", "o"] +[46.418201436996696, "o", "_"] +[46.4482014369967, "o", "i"] +[46.4782014369967, "o", "m"] +[46.5082014369967, "o", "p"] +[46.5382014369967, "o", "o"] +[46.5682014369967, "o", "r"] +[46.5982014369967, "o", "t"] +[46.628201436996704, "o", "."] +[46.658201436996706, "o", "s"] +[46.68820143699671, "o", "p"] +[46.71820143699671, "o", "l"] +[46.74820143699671, "o", "i"] +[46.77820143699671, "o", "t"] +[46.80820143699671, "o", "f"] +[46.83820143699671, "o", "i"] +[46.86820143699671, "o", "l"] +[46.898201436996715, "o", "e"] +[46.928201436996716, "o", "\r\n"] +[46.95820143699672, "o", "\u001b[0m"] +[46.98820143699672, "o", "\r\n"] +[46.98943763732936, "o", "FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"tables\": {\"stuff\": {\r\n \"options\": {\r\n \"database\": \"origindb\",\r\n \"collection\": \"stuff\"\r\n },\r\n \"schema\": {\r\n \"name\": \"text\",\r\n \"duration\": \"numeric\",\r\n \"happy\": \"boolean\"}}}}'\r\n IMPORT {SELECT * FROM stuff} AS stuff\r\n"] +[47.37878924369838, "o", "Executing Splitfile mongo_import.splitfile with arguments {}\r\n"] +[47.416266021728774, "o", "\u001b[1m\r\nStep 1/1 : FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"t...\u001b[0m\r\n"] +[47.48466592788722, "o", "Mounting table stuff\r\n"] +[47.54319697380092, "o", "Processing table sg_tmp_2d589aa23c008a9c3792f4268dd3d127\r\n"] +[47.74661117553737, "o", "Successfully built mongo_import:cfc76128fd38.\r\n"] +[47.77661117553737, "o", "\u001b[1m"] +[47.80661117553737, "o", "\u001b[36m"] +[47.83661117553737, "o", "\u001b[91m"] +[47.86661117553737, "o", "$"] +[47.89661117553737, "o", " "] +[47.926611175537374, "o", "\u001b[0m"] +[54.91820143699664, "o", "\u001b[H"] +[54.94820143699664, "o", "\u001b[J"] +[54.97820143699664, "o", "\u001b[1m"] +[55.00820143699664, "o", "\u001b[36m"] +[55.038201436996644, "o", "\u001b[91m"] +[55.068201436996645, "o", "$"] +[55.098201436996646, "o", " "] +[55.12820143699665, "o", "s"] +[55.15820143699665, "o", "g"] +[55.18820143699665, "o", "r"] +[55.21820143699665, "o", " "] +[55.24820143699665, "o", "s"] +[55.27820143699665, "o", "h"] +[55.308201436996654, "o", "o"] +[55.338201436996656, "o", "w"] +[55.36820143699666, "o", " "] +[55.39820143699666, "o", "m"] +[55.42820143699666, "o", "o"] +[55.45820143699666, "o", "n"] +[55.48820143699666, "o", "g"] +[55.51820143699666, "o", "o"] +[55.54820143699666, "o", "_"] +[55.578201436996665, "o", "i"] +[55.608201436996666, "o", "m"] +[55.63820143699667, "o", "p"] +[55.66820143699667, "o", "o"] +[55.69820143699667, "o", "r"] +[55.72820143699667, "o", "t"] +[55.75820143699667, "o", ":"] +[55.78820143699667, "o", "l"] +[55.818201436996674, "o", "a"] +[55.848201436996675, "o", "t"] +[55.878201436996676, "o", "e"] +[55.90820143699668, "o", "s"] +[55.93820143699668, "o", "t"] +[55.96820143699668, "o", "\r\n"] +[55.99820143699668, "o", "$"] +[56.02820143699668, "o", " "] +[56.05820143699668, "o", "s"] +[56.088201436996684, "o", "g"] +[56.118201436996685, "o", "r"] +[56.148201436996686, "o", " "] +[56.17820143699669, "o", "s"] +[56.20820143699669, "o", "q"] +[56.23820143699669, "o", "l"] +[56.26820143699669, "o", " "] +[56.29820143699669, "o", "-"] +[56.32820143699669, "o", "s"] +[56.358201436996694, "o", " "] +[56.388201436996695, "o", "m"] +[56.418201436996696, "o", "o"] +[56.4482014369967, "o", "n"] +[56.4782014369967, "o", "g"] +[56.5082014369967, "o", "o"] +[56.5382014369967, "o", "_"] +[56.5682014369967, "o", "i"] +[56.5982014369967, "o", "m"] +[56.628201436996704, "o", "p"] +[56.658201436996706, "o", "o"] +[56.68820143699671, "o", "r"] +[56.71820143699671, "o", "t"] +[56.74820143699671, "o", " "] +[56.77820143699671, "o", "\""] +[56.80820143699671, "o", "S"] +[56.83820143699671, "o", "E"] +[56.86820143699671, "o", "L"] +[56.898201436996715, "o", "E"] +[56.928201436996716, "o", "C"] +[56.95820143699672, "o", "T"] +[56.98820143699672, "o", " "] +[57.01820143699672, "o", "*"] +[57.04820143699672, "o", " "] +[57.07820143699672, "o", "F"] +[57.10820143699672, "o", "R"] +[57.138201436996724, "o", "O"] +[57.168201436996725, "o", "M"] +[57.198201436996726, "o", " "] +[57.22820143699673, "o", "s"] +[57.25820143699673, "o", "t"] +[57.28820143699673, "o", "u"] +[57.31820143699673, "o", "f"] +[57.34820143699673, "o", "f"] +[57.37820143699673, "o", "\""] +[57.408201436996734, "o", "\r\n"] +[57.438201436996735, "o", "\u001b[0m"] +[57.468201436996736, "o", "\r\n"] +[57.86248735427884, "o", "Image mongo_import:cfc76128fd38df1250e859b9e2ef366afc0f445d3276d5541017414965916999\r\nImporting 1 table from mongo_fdw_tmp_staging\r\n"] +[57.86250928878812, "o", "Created at 2021-10-14T21:31:32.336998\r\n"] +[57.86393693923978, "o", "Size: 589.00 B\r\n"] +[57.86394504547147, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[57.86471418380765, "o", " stuff\r\n"] +[58.25813583374051, "o", "Alex 12 False 6168a1ac9f77b6d54a9b11da\r\nJames 2 True 6168a1ac9f77b6d54a9b11db\r\nAlice 98765 True 6168a1ac9f77b6d54a9b11dc\r\n"] +[58.28813583374051, "o", "\u001b[1m"] +[58.31813583374051, "o", "\u001b[36m"] +[58.348135833740514, "o", "\u001b[91m"] +[58.378135833740515, "o", "$"] +[58.408135833740516, "o", " "] +[58.43813583374052, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.17/metadata.json b/content/casts/versioned/archive/v0.2.17/metadata.json new file mode 100644 index 00000000..2133226f --- /dev/null +++ b/content/casts/versioned/archive/v0.2.17/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.17", + "updated_at": "2022-01-20T00:00:37.266Z", + "release": { + "id": 51394754, + "tag_name": "v0.2.17", + "target_commitish": "69e2e396e41b3f9f3a7437bfb69189720d8c8b66", + "created_at": "2021-10-14T21:11:31Z", + "published_at": "2021-10-14T21:51:29Z", + "assets": [ + { + "id": 47011063, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/47011063", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-10-14T21:44:15Z", + "updated_at": "2021-10-14T21:44:15Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.17/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/casts/versioned/archive/v0.2.17/pg-replication.cast b/content/casts/versioned/archive/v0.2.17/pg-replication.cast new file mode 100644 index 00000000..c8ab2cc9 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.17/pg-replication.cast @@ -0,0 +1,1401 @@ +{"version": 2, "width": 100, "height": 21, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1634247140, "metadata": {"tss": [{"h": "The configuration file for sgr contains credentials for the", "ts": 0.06}, {"h": "The origin database has been set up with a couple of tables.", "ts": 10.059999999999999}, {"h": "Create a publication on the origin database", "ts": 19.76912693977348}, {"h": "Create a schema with the same name and same tables", "ts": 28.549126939773622}, {"h": "Set up replication from the origin database.", "ts": 38.54912693977362}, {"h": "Check the data on the engine", "ts": 49.48912693977385}, {"h": "Commit the data as an initial image", "ts": 58.10886653900186}, {"h": "Make a change on the origin database", "ts": 68.33224003791864}, {"h": "The change propagates to the subscriber and gets", "ts": 84.40224003791906}, {"h": "Committing creates a new image, snapshotting the state.", "ts": 91.24598673820597}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The configuration file for sgr contains credentials for the"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # origin database: this is just so that we can use sgr to query it\r\n"] +[0.18, "o", "$ # (replication can be set up through any PostgreSQL client)\r\n"] +[0.21, "o", "$"] +[0.24, "o", " "] +[0.27, "o", "c"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "t"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "."] +[0.42000000000000015, "o", "s"] +[0.4500000000000002, "o", "g"] +[0.4800000000000002, "o", "c"] +[0.5100000000000002, "o", "o"] +[0.5400000000000003, "o", "n"] +[0.5700000000000003, "o", "f"] +[0.6000000000000003, "o", "i"] +[0.6300000000000003, "o", "g"] +[0.6600000000000004, "o", "\r\n"] +[0.6900000000000004, "o", "\u001b[0m"] +[0.7200000000000004, "o", "\r\n"] +[0.7213747215271, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n; Add the origin database here so that we can\r\n; use sgr to talk to it (can use any pg client)\r\n[remote:origin]\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=originuser\r\nSG_ENGINE_PWD=originpass\r\nSG_ENGINE_DB=originuser\r\n"] +[0.7513747215271, "o", "\u001b[1m"] +[0.7813747215271001, "o", "\u001b[36m"] +[0.8113747215271001, "o", "\u001b[91m"] +[0.8413747215271001, "o", "$"] +[0.8713747215271002, "o", " "] +[0.9013747215271002, "o", "\u001b[0m"] +[10.03, "o", "\u001b[H"] +[10.059999999999999, "o", "\u001b[J"] +[10.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The origin database has been set up with a couple of tables."] +[10.119999999999997, "o", "\r\n"] +[10.149999999999997, "o", "$"] +[10.179999999999996, "o", " "] +[10.209999999999996, "o", "s"] +[10.239999999999995, "o", "g"] +[10.269999999999994, "o", "r"] +[10.299999999999994, "o", " "] +[10.329999999999993, "o", "s"] +[10.359999999999992, "o", "q"] +[10.389999999999992, "o", "l"] +[10.419999999999991, "o", " "] +[10.44999999999999, "o", "-"] +[10.47999999999999, "o", "r"] +[10.50999999999999, "o", " "] +[10.539999999999988, "o", "o"] +[10.569999999999988, "o", "r"] +[10.599999999999987, "o", "i"] +[10.629999999999987, "o", "g"] +[10.659999999999986, "o", "i"] +[10.689999999999985, "o", "n"] +[10.719999999999985, "o", " "] +[10.749999999999984, "o", "\""] +[10.779999999999983, "o", "S"] +[10.809999999999983, "o", "E"] +[10.839999999999982, "o", "L"] +[10.869999999999981, "o", "E"] +[10.89999999999998, "o", "C"] +[10.92999999999998, "o", "T"] +[10.95999999999998, "o", " "] +[10.989999999999979, "o", "*"] +[11.019999999999978, "o", " "] +[11.049999999999978, "o", "F"] +[11.079999999999977, "o", "R"] +[11.109999999999976, "o", "O"] +[11.139999999999976, "o", "M"] +[11.169999999999975, "o", " "] +[11.199999999999974, "o", "p"] +[11.229999999999974, "o", "r"] +[11.259999999999973, "o", "o"] +[11.289999999999973, "o", "d"] +[11.319999999999972, "o", "u"] +[11.349999999999971, "o", "c"] +[11.37999999999997, "o", "t"] +[11.40999999999997, "o", "i"] +[11.43999999999997, "o", "o"] +[11.469999999999969, "o", "n"] +[11.499999999999968, "o", "_"] +[11.529999999999967, "o", "d"] +[11.559999999999967, "o", "a"] +[11.589999999999966, "o", "t"] +[11.619999999999965, "o", "a"] +[11.649999999999965, "o", "."] +[11.679999999999964, "o", "c"] +[11.709999999999964, "o", "u"] +[11.739999999999963, "o", "s"] +[11.769999999999962, "o", "t"] +[11.799999999999962, "o", "o"] +[11.829999999999961, "o", "m"] +[11.85999999999996, "o", "e"] +[11.88999999999996, "o", "r"] +[11.919999999999959, "o", "s"] +[11.949999999999958, "o", "\""] +[11.979999999999958, "o", "\r\n"] +[12.009999999999957, "o", "$"] +[12.039999999999957, "o", " "] +[12.069999999999956, "o", "s"] +[12.099999999999955, "o", "g"] +[12.129999999999955, "o", "r"] +[12.159999999999954, "o", " "] +[12.189999999999953, "o", "s"] +[12.219999999999953, "o", "q"] +[12.249999999999952, "o", "l"] +[12.279999999999951, "o", " "] +[12.30999999999995, "o", "-"] +[12.33999999999995, "o", "r"] +[12.36999999999995, "o", " "] +[12.399999999999949, "o", "o"] +[12.429999999999948, "o", "r"] +[12.459999999999948, "o", "i"] +[12.489999999999947, "o", "g"] +[12.519999999999946, "o", "i"] +[12.549999999999946, "o", "n"] +[12.579999999999945, "o", " "] +[12.609999999999944, "o", "\""] +[12.639999999999944, "o", "S"] +[12.669999999999943, "o", "E"] +[12.699999999999942, "o", "L"] +[12.729999999999942, "o", "E"] +[12.759999999999941, "o", "C"] +[12.78999999999994, "o", "T"] +[12.81999999999994, "o", " "] +[12.84999999999994, "o", "*"] +[12.879999999999939, "o", " "] +[12.909999999999938, "o", "F"] +[12.939999999999937, "o", "R"] +[12.969999999999937, "o", "O"] +[12.999999999999936, "o", "M"] +[13.029999999999935, "o", " "] +[13.059999999999935, "o", "p"] +[13.089999999999934, "o", "r"] +[13.119999999999933, "o", "o"] +[13.149999999999933, "o", "d"] +[13.179999999999932, "o", "u"] +[13.209999999999932, "o", "c"] +[13.239999999999931, "o", "t"] +[13.26999999999993, "o", "i"] +[13.29999999999993, "o", "o"] +[13.329999999999929, "o", "n"] +[13.359999999999928, "o", "_"] +[13.389999999999928, "o", "d"] +[13.419999999999927, "o", "a"] +[13.449999999999926, "o", "t"] +[13.479999999999926, "o", "a"] +[13.509999999999925, "o", "."] +[13.539999999999925, "o", "o"] +[13.569999999999924, "o", "r"] +[13.599999999999923, "o", "d"] +[13.629999999999923, "o", "e"] +[13.659999999999922, "o", "r"] +[13.689999999999921, "o", "s"] +[13.71999999999992, "o", "\""] +[13.74999999999992, "o", "\r\n"] +[13.77999999999992, "o", "\u001b[0m"] +[13.809999999999919, "o", "\r\n"] +[14.169169244766154, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[14.529126939773478, "o", "1 1 15 Toilet Roll 2020-03-15 12:00:00\r\n2 1 20 Hand Sanitizer 2020-03-16 02:00:00\r\n3 2 5 Pasta 2020-03-21 17:32:11\r\n4 3 50 Surgical Mask 2020-04-01 12:00:01\r\n5 1 50 Surgical Mask 2020-04-02 11:29:42\r\n"] +[14.559126939773478, "o", "\u001b[1m"] +[14.589126939773477, "o", "\u001b[36m"] +[14.619126939773476, "o", "\u001b[91m"] +[14.649126939773476, "o", "$"] +[14.679126939773475, "o", " "] +[14.709126939773475, "o", "\u001b[0m"] +[19.739126939773477, "o", "\u001b[H"] +[19.76912693977348, "o", "\u001b[J"] +[19.79912693977348, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a publication on the origin database"] +[19.82912693977348, "o", "\r\n"] +[19.859126939773482, "o", "$"] +[19.889126939773483, "o", " "] +[19.919126939773484, "o", "s"] +[19.949126939773485, "o", "g"] +[19.979126939773487, "o", "r"] +[20.009126939773488, "o", " "] +[20.03912693977349, "o", "s"] +[20.06912693977349, "o", "q"] +[20.09912693977349, "o", "l"] +[20.129126939773492, "o", " "] +[20.159126939773493, "o", "-"] +[20.189126939773494, "o", "r"] +[20.219126939773496, "o", " "] +[20.249126939773497, "o", "o"] +[20.279126939773498, "o", "r"] +[20.3091269397735, "o", "i"] +[20.3391269397735, "o", "g"] +[20.3691269397735, "o", "i"] +[20.399126939773502, "o", "n"] +[20.429126939773504, "o", " "] +[20.459126939773505, "o", "\""] +[20.489126939773506, "o", "C"] +[20.519126939773507, "o", "R"] +[20.549126939773508, "o", "E"] +[20.57912693977351, "o", "A"] +[20.60912693977351, "o", "T"] +[20.63912693977351, "o", "E"] +[20.669126939773513, "o", " "] +[20.699126939773514, "o", "P"] +[20.729126939773515, "o", "U"] +[20.759126939773516, "o", "B"] +[20.789126939773517, "o", "L"] +[20.81912693977352, "o", "I"] +[20.84912693977352, "o", "C"] +[20.87912693977352, "o", "A"] +[20.90912693977352, "o", "T"] +[20.939126939773523, "o", "I"] +[20.969126939773524, "o", "O"] +[20.999126939773525, "o", "N"] +[21.029126939773526, "o", " "] +[21.059126939773527, "o", "p"] +[21.08912693977353, "o", "u"] +[21.11912693977353, "o", "b"] +[21.14912693977353, "o", "_"] +[21.179126939773532, "o", "o"] +[21.209126939773533, "o", "r"] +[21.239126939773534, "o", "d"] +[21.269126939773535, "o", "e"] +[21.299126939773537, "o", "r"] +[21.329126939773538, "o", "s"] +[21.35912693977354, "o", " "] +[21.38912693977354, "o", "\\"] +[21.41912693977354, "o", "\r\n "] +[21.449126939773542, "o", "F"] +[21.479126939773543, "o", "O"] +[21.509126939773545, "o", "R"] +[21.539126939773546, "o", " "] +[21.569126939773547, "o", "T"] +[21.599126939773548, "o", "A"] +[21.62912693977355, "o", "B"] +[21.65912693977355, "o", "L"] +[21.68912693977355, "o", "E"] +[21.719126939773552, "o", " "] +[21.749126939773554, "o", "p"] +[21.779126939773555, "o", "r"] +[21.809126939773556, "o", "o"] +[21.839126939773557, "o", "d"] +[21.869126939773558, "o", "u"] +[21.89912693977356, "o", "c"] +[21.92912693977356, "o", "t"] +[21.95912693977356, "o", "i"] +[21.989126939773563, "o", "o"] +[22.019126939773564, "o", "n"] +[22.049126939773565, "o", "_"] +[22.079126939773566, "o", "d"] +[22.109126939773567, "o", "a"] +[22.13912693977357, "o", "t"] +[22.16912693977357, "o", "a"] +[22.19912693977357, "o", "."] +[22.229126939773572, "o", "c"] +[22.259126939773573, "o", "u"] +[22.289126939773574, "o", "s"] +[22.319126939773575, "o", "t"] +[22.349126939773576, "o", "o"] +[22.379126939773577, "o", "m"] +[22.40912693977358, "o", "e"] +[22.43912693977358, "o", "r"] +[22.46912693977358, "o", "s"] +[22.499126939773582, "o", ","] +[22.529126939773583, "o", " "] +[22.559126939773584, "o", "p"] +[22.589126939773585, "o", "r"] +[22.619126939773587, "o", "o"] +[22.649126939773588, "o", "d"] +[22.67912693977359, "o", "u"] +[22.70912693977359, "o", "c"] +[22.73912693977359, "o", "t"] +[22.769126939773592, "o", "i"] +[22.799126939773593, "o", "o"] +[22.829126939773595, "o", "n"] +[22.859126939773596, "o", "_"] +[22.889126939773597, "o", "d"] +[22.919126939773598, "o", "a"] +[22.9491269397736, "o", "t"] +[22.9791269397736, "o", "a"] +[23.0091269397736, "o", "."] +[23.039126939773602, "o", "o"] +[23.069126939773604, "o", "r"] +[23.099126939773605, "o", "d"] +[23.129126939773606, "o", "e"] +[23.159126939773607, "o", "r"] +[23.189126939773608, "o", "s"] +[23.21912693977361, "o", "\""] +[23.24912693977361, "o", "\r\n"] +[23.27912693977361, "o", "\u001b[0m"] +[23.309126939773613, "o", "\r\n"] +[23.339126939773614, "o", "\u001b[1m"] +[23.369126939773615, "o", "\u001b[36m"] +[23.399126939773616, "o", "\u001b[91m"] +[23.429126939773617, "o", "$"] +[23.45912693977362, "o", " "] +[23.48912693977362, "o", "\u001b[0m"] +[28.51912693977362, "o", "\u001b[H"] +[28.549126939773622, "o", "\u001b[J"] +[28.579126939773623, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a schema with the same name and same tables"] +[28.609126939773624, "o", "\r\n"] +[28.639126939773625, "o", "$ # on the engine and initialize the repository.\r\n"] +[28.669126939773626, "o", "$"] +[28.699126939773627, "o", " "] +[28.72912693977363, "o", "s"] +[28.75912693977363, "o", "g"] +[28.78912693977363, "o", "r"] +[28.819126939773632, "o", " "] +[28.849126939773633, "o", "i"] +[28.879126939773634, "o", "n"] +[28.909126939773635, "o", "i"] +[28.939126939773637, "o", "t"] +[28.969126939773638, "o", " "] +[28.99912693977364, "o", "p"] +[29.02912693977364, "o", "r"] +[29.05912693977364, "o", "o"] +[29.089126939773642, "o", "d"] +[29.119126939773643, "o", "u"] +[29.149126939773645, "o", "c"] +[29.179126939773646, "o", "t"] +[29.209126939773647, "o", "i"] +[29.239126939773648, "o", "o"] +[29.26912693977365, "o", "n"] +[29.29912693977365, "o", "_"] +[29.32912693977365, "o", "d"] +[29.359126939773653, "o", "a"] +[29.389126939773654, "o", "t"] +[29.419126939773655, "o", "a"] +[29.449126939773656, "o", "\r\n"] +[29.479126939773657, "o", "$"] +[29.509126939773658, "o", " "] +[29.53912693977366, "o", "c"] +[29.56912693977366, "o", "a"] +[29.59912693977366, "o", "t"] +[29.629126939773663, "o", " "] +[29.659126939773664, "o", "e"] +[29.689126939773665, "o", "n"] +[29.719126939773666, "o", "g"] +[29.749126939773667, "o", "i"] +[29.77912693977367, "o", "n"] +[29.80912693977367, "o", "e"] +[29.83912693977367, "o", "/"] +[29.869126939773672, "o", "s"] +[29.899126939773673, "o", "c"] +[29.929126939773674, "o", "h"] +[29.959126939773675, "o", "e"] +[29.989126939773676, "o", "m"] +[30.019126939773678, "o", "a"] +[30.04912693977368, "o", "."] +[30.07912693977368, "o", "s"] +[30.10912693977368, "o", "q"] +[30.139126939773682, "o", "l"] +[30.169126939773683, "o", "\r\n"] +[30.199126939773684, "o", "$"] +[30.229126939773685, "o", " "] +[30.259126939773687, "o", "s"] +[30.289126939773688, "o", "g"] +[30.31912693977369, "o", "r"] +[30.34912693977369, "o", " "] +[30.37912693977369, "o", "s"] +[30.409126939773692, "o", "q"] +[30.439126939773693, "o", "l"] +[30.469126939773695, "o", " "] +[30.499126939773696, "o", "-"] +[30.529126939773697, "o", "s"] +[30.559126939773698, "o", " "] +[30.5891269397737, "o", "p"] +[30.6191269397737, "o", "r"] +[30.6491269397737, "o", "o"] +[30.679126939773703, "o", "d"] +[30.709126939773704, "o", "u"] +[30.739126939773705, "o", "c"] +[30.769126939773706, "o", "t"] +[30.799126939773707, "o", "i"] +[30.829126939773708, "o", "o"] +[30.85912693977371, "o", "n"] +[30.88912693977371, "o", "_"] +[30.91912693977371, "o", "d"] +[30.949126939773713, "o", "a"] +[30.979126939773714, "o", "t"] +[31.009126939773715, "o", "a"] +[31.039126939773716, "o", " "] +[31.069126939773717, "o", "\""] +[31.09912693977372, "o", "$"] +[31.12912693977372, "o", "("] +[31.15912693977372, "o", "c"] +[31.189126939773722, "o", "a"] +[31.219126939773723, "o", "t"] +[31.249126939773724, "o", " "] +[31.279126939773725, "o", "e"] +[31.309126939773726, "o", "n"] +[31.339126939773728, "o", "g"] +[31.36912693977373, "o", "i"] +[31.39912693977373, "o", "n"] +[31.42912693977373, "o", "e"] +[31.459126939773732, "o", "/"] +[31.489126939773733, "o", "s"] +[31.519126939773734, "o", "c"] +[31.549126939773736, "o", "h"] +[31.579126939773737, "o", "e"] +[31.609126939773738, "o", "m"] +[31.63912693977374, "o", "a"] +[31.66912693977374, "o", "."] +[31.69912693977374, "o", "s"] +[31.729126939773742, "o", "q"] +[31.759126939773743, "o", "l"] +[31.789126939773745, "o", ")"] +[31.819126939773746, "o", "\""] +[31.849126939773747, "o", "\r\n"] +[31.879126939773748, "o", "\u001b[0m"] +[31.90912693977375, "o", "\r\n"] +[32.317142667770575, "o", "Initialized empty repository production_data\r\n"] +[32.31905550003071, "o", "CREATE TABLE production_data.customers (\r\n id INTEGER PRIMARY KEY,\r\n name VARCHAR,\r\n registration_time TIMESTAMP\r\n);\r\n\r\nCREATE TABLE production_data.orders (\r\n id INTEGER PRIMARY KEY,\r\n customer_id INTEGER,\r\n quantity INTEGER,\r\n item_name VARCHAR,\r\n placed_time TIMESTAMP\r\n);\r\n"] +[32.34905550003071, "o", "\u001b[1m"] +[32.37905550003071, "o", "\u001b[36m"] +[32.40905550003071, "o", "\u001b[91m"] +[32.43905550003071, "o", "$"] +[32.46905550003071, "o", " "] +[32.499055500030714, "o", "\u001b[0m"] +[38.51912693977362, "o", "\u001b[H"] +[38.54912693977362, "o", "\u001b[J"] +[38.57912693977362, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Set up replication from the origin database."] +[38.609126939773624, "o", "\r\n"] +[38.639126939773625, "o", "$ # This will copy existing data into the tables too.\r\n"] +[38.669126939773626, "o", "$"] +[38.69912693977363, "o", " "] +[38.72912693977363, "o", "s"] +[38.75912693977363, "o", "g"] +[38.78912693977363, "o", "r"] +[38.81912693977363, "o", " "] +[38.84912693977363, "o", "s"] +[38.879126939773634, "o", "q"] +[38.909126939773635, "o", "l"] +[38.93912693977364, "o", " "] +[38.96912693977364, "o", "-"] +[38.99912693977364, "o", "-"] +[39.02912693977364, "o", "n"] +[39.05912693977364, "o", "o"] +[39.08912693977364, "o", "-"] +[39.11912693977364, "o", "t"] +[39.149126939773645, "o", "r"] +[39.179126939773646, "o", "a"] +[39.20912693977365, "o", "n"] +[39.23912693977365, "o", "s"] +[39.26912693977365, "o", "a"] +[39.29912693977365, "o", "c"] +[39.32912693977365, "o", "t"] +[39.35912693977365, "o", "i"] +[39.389126939773654, "o", "o"] +[39.419126939773655, "o", "n"] +[39.449126939773656, "o", " "] +[39.47912693977366, "o", "\""] +[39.50912693977366, "o", "C"] +[39.53912693977366, "o", "R"] +[39.56912693977366, "o", "E"] +[39.59912693977366, "o", "A"] +[39.62912693977366, "o", "T"] +[39.659126939773664, "o", "E"] +[39.689126939773665, "o", " "] +[39.719126939773666, "o", "S"] +[39.74912693977367, "o", "U"] +[39.77912693977367, "o", "B"] +[39.80912693977367, "o", "S"] +[39.83912693977367, "o", "C"] +[39.86912693977367, "o", "R"] +[39.89912693977367, "o", "I"] +[39.929126939773674, "o", "P"] +[39.959126939773675, "o", "T"] +[39.989126939773676, "o", "I"] +[40.01912693977368, "o", "O"] +[40.04912693977368, "o", "N"] +[40.07912693977368, "o", " "] +[40.10912693977368, "o", "s"] +[40.13912693977368, "o", "u"] +[40.16912693977368, "o", "b"] +[40.199126939773684, "o", "_"] +[40.229126939773685, "o", "o"] +[40.25912693977369, "o", "r"] +[40.28912693977369, "o", "d"] +[40.31912693977369, "o", "e"] +[40.34912693977369, "o", "r"] +[40.37912693977369, "o", "s"] +[40.40912693977369, "o", " "] +[40.43912693977369, "o", "\\"] +[40.469126939773695, "o", "\r\n "] +[40.499126939773696, "o", "C"] +[40.5291269397737, "o", "O"] +[40.5591269397737, "o", "N"] +[40.5891269397737, "o", "N"] +[40.6191269397737, "o", "E"] +[40.6491269397737, "o", "C"] +[40.6791269397737, "o", "T"] +[40.709126939773704, "o", "I"] +[40.739126939773705, "o", "O"] +[40.769126939773706, "o", "N"] +[40.79912693977371, "o", " "] +[40.82912693977371, "o", "'"] +[40.85912693977371, "o", "p"] +[40.88912693977371, "o", "o"] +[40.91912693977371, "o", "s"] +[40.94912693977371, "o", "t"] +[40.979126939773714, "o", "g"] +[41.009126939773715, "o", "r"] +[41.039126939773716, "o", "e"] +[41.06912693977372, "o", "s"] +[41.09912693977372, "o", "q"] +[41.12912693977372, "o", "l"] +[41.15912693977372, "o", ":"] +[41.18912693977372, "o", "/"] +[41.21912693977372, "o", "/"] +[41.249126939773724, "o", "o"] +[41.279126939773725, "o", "r"] +[41.309126939773726, "o", "i"] +[41.33912693977373, "o", "g"] +[41.36912693977373, "o", "i"] +[41.39912693977373, "o", "n"] +[41.42912693977373, "o", "u"] +[41.45912693977373, "o", "s"] +[41.48912693977373, "o", "e"] +[41.519126939773734, "o", "r"] +[41.549126939773736, "o", ":"] +[41.57912693977374, "o", "o"] +[41.60912693977374, "o", "r"] +[41.63912693977374, "o", "i"] +[41.66912693977374, "o", "g"] +[41.69912693977374, "o", "i"] +[41.72912693977374, "o", "n"] +[41.75912693977374, "o", "p"] +[41.789126939773745, "o", "a"] +[41.819126939773746, "o", "s"] +[41.84912693977375, "o", "s"] +[41.87912693977375, "o", "@"] +[41.90912693977375, "o", "o"] +[41.93912693977375, "o", "r"] +[41.96912693977375, "o", "i"] +[41.99912693977375, "o", "g"] +[42.029126939773754, "o", "i"] +[42.059126939773755, "o", "n"] +[42.089126939773756, "o", ":"] +[42.11912693977376, "o", "5"] +[42.14912693977376, "o", "4"] +[42.17912693977376, "o", "3"] +[42.20912693977376, "o", "2"] +[42.23912693977376, "o", "/"] +[42.26912693977376, "o", "o"] +[42.299126939773764, "o", "r"] +[42.329126939773765, "o", "i"] +[42.359126939773766, "o", "g"] +[42.38912693977377, "o", "i"] +[42.41912693977377, "o", "n"] +[42.44912693977377, "o", "u"] +[42.47912693977377, "o", "s"] +[42.50912693977377, "o", "e"] +[42.53912693977377, "o", "r"] +[42.569126939773774, "o", "'"] +[42.599126939773775, "o", " "] +[42.629126939773776, "o", "\\"] +[42.65912693977378, "o", "\r\n "] +[42.68912693977378, "o", "P"] +[42.71912693977378, "o", "U"] +[42.74912693977378, "o", "B"] +[42.77912693977378, "o", "L"] +[42.80912693977378, "o", "I"] +[42.839126939773784, "o", "C"] +[42.869126939773786, "o", "A"] +[42.89912693977379, "o", "T"] +[42.92912693977379, "o", "I"] +[42.95912693977379, "o", "O"] +[42.98912693977379, "o", "N"] +[43.01912693977379, "o", " "] +[43.04912693977379, "o", "p"] +[43.07912693977379, "o", "u"] +[43.109126939773795, "o", "b"] +[43.139126939773796, "o", "_"] +[43.1691269397738, "o", "o"] +[43.1991269397738, "o", "r"] +[43.2291269397738, "o", "d"] +[43.2591269397738, "o", "e"] +[43.2891269397738, "o", "r"] +[43.3191269397738, "o", "s"] +[43.349126939773804, "o", " "] +[43.379126939773805, "o", "\\"] +[43.409126939773806, "o", "\r\n "] +[43.43912693977381, "o", "W"] +[43.46912693977381, "o", "I"] +[43.49912693977381, "o", "T"] +[43.52912693977381, "o", "H"] +[43.55912693977381, "o", " "] +[43.58912693977381, "o", "("] +[43.619126939773814, "o", "c"] +[43.649126939773815, "o", "o"] +[43.679126939773816, "o", "p"] +[43.70912693977382, "o", "y"] +[43.73912693977382, "o", "_"] +[43.76912693977382, "o", "d"] +[43.79912693977382, "o", "a"] +[43.82912693977382, "o", "t"] +[43.85912693977382, "o", "a"] +[43.889126939773824, "o", " "] +[43.919126939773825, "o", "="] +[43.94912693977383, "o", " "] +[43.97912693977383, "o", "t"] +[44.00912693977383, "o", "r"] +[44.03912693977383, "o", "u"] +[44.06912693977383, "o", "e"] +[44.09912693977383, "o", ")"] +[44.12912693977383, "o", ";"] +[44.159126939773834, "o", "\""] +[44.189126939773836, "o", "\r\n"] +[44.21912693977384, "o", "\u001b[0m"] +[44.24912693977384, "o", "\r\n"] +[44.27912693977384, "o", "\u001b[1m"] +[44.30912693977384, "o", "\u001b[36m"] +[44.33912693977384, "o", "\u001b[91m"] +[44.36912693977384, "o", "$"] +[44.39912693977384, "o", " "] +[44.429126939773845, "o", "\u001b[0m"] +[49.459126939773846, "o", "\u001b[H"] +[49.48912693977385, "o", "\u001b[J"] +[49.51912693977385, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the data on the engine"] +[49.54912693977385, "o", "\r\n"] +[49.57912693977385, "o", "$"] +[49.60912693977385, "o", " "] +[49.63912693977385, "o", "s"] +[49.669126939773854, "o", "g"] +[49.699126939773855, "o", "r"] +[49.729126939773856, "o", " "] +[49.75912693977386, "o", "d"] +[49.78912693977386, "o", "i"] +[49.81912693977386, "o", "f"] +[49.84912693977386, "o", "f"] +[49.87912693977386, "o", " "] +[49.90912693977386, "o", "p"] +[49.939126939773864, "o", "r"] +[49.969126939773865, "o", "o"] +[49.999126939773866, "o", "d"] +[50.02912693977387, "o", "u"] +[50.05912693977387, "o", "c"] +[50.08912693977387, "o", "t"] +[50.11912693977387, "o", "i"] +[50.14912693977387, "o", "o"] +[50.17912693977387, "o", "n"] +[50.209126939773874, "o", "_"] +[50.239126939773875, "o", "d"] +[50.26912693977388, "o", "a"] +[50.29912693977388, "o", "t"] +[50.32912693977388, "o", "a"] +[50.35912693977388, "o", "\r\n"] +[50.38912693977388, "o", "$"] +[50.41912693977388, "o", " "] +[50.44912693977388, "o", "s"] +[50.479126939773884, "o", "g"] +[50.509126939773886, "o", "r"] +[50.53912693977389, "o", " "] +[50.56912693977389, "o", "s"] +[50.59912693977389, "o", "q"] +[50.62912693977389, "o", "l"] +[50.65912693977389, "o", " "] +[50.68912693977389, "o", "-"] +[50.71912693977389, "o", "s"] +[50.749126939773895, "o", " "] +[50.779126939773896, "o", "p"] +[50.8091269397739, "o", "r"] +[50.8391269397739, "o", "o"] +[50.8691269397739, "o", "d"] +[50.8991269397739, "o", "u"] +[50.9291269397739, "o", "c"] +[50.9591269397739, "o", "t"] +[50.989126939773904, "o", "i"] +[51.019126939773905, "o", "o"] +[51.049126939773906, "o", "n"] +[51.07912693977391, "o", "_"] +[51.10912693977391, "o", "d"] +[51.13912693977391, "o", "a"] +[51.16912693977391, "o", "t"] +[51.19912693977391, "o", "a"] +[51.22912693977391, "o", " "] +[51.259126939773914, "o", "\""] +[51.289126939773915, "o", "S"] +[51.319126939773916, "o", "E"] +[51.34912693977392, "o", "L"] +[51.37912693977392, "o", "E"] +[51.40912693977392, "o", "C"] +[51.43912693977392, "o", "T"] +[51.46912693977392, "o", " "] +[51.49912693977392, "o", "*"] +[51.529126939773924, "o", " "] +[51.559126939773925, "o", "F"] +[51.58912693977393, "o", "R"] +[51.61912693977393, "o", "O"] +[51.64912693977393, "o", "M"] +[51.67912693977393, "o", " "] +[51.70912693977393, "o", "c"] +[51.73912693977393, "o", "u"] +[51.76912693977393, "o", "s"] +[51.799126939773934, "o", "t"] +[51.829126939773936, "o", "o"] +[51.85912693977394, "o", "m"] +[51.88912693977394, "o", "e"] +[51.91912693977394, "o", "r"] +[51.94912693977394, "o", "s"] +[51.97912693977394, "o", "\""] +[52.00912693977394, "o", "\r\n"] +[52.03912693977394, "o", "\u001b[0m"] +[52.069126939773945, "o", "\r\n"] +[52.471555328369526, "o", "Between 000000000000 and the current working copy: \r\n"] +[52.471574401855854, "o", "customers: table added\r\norders: table added\r\n"] +[52.86886653900185, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[52.89886653900185, "o", "\u001b[1m"] +[52.92886653900185, "o", "\u001b[36m"] +[52.95886653900185, "o", "\u001b[91m"] +[52.988866539001855, "o", "$"] +[53.018866539001856, "o", " "] +[53.04886653900186, "o", "\u001b[0m"] +[58.07886653900186, "o", "\u001b[H"] +[58.10886653900186, "o", "\u001b[J"] +[58.13886653900186, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit the data as an initial image"] +[58.16886653900186, "o", "\r\n"] +[58.19886653900186, "o", "$"] +[58.228866539001864, "o", " "] +[58.258866539001865, "o", "s"] +[58.288866539001866, "o", "g"] +[58.31886653900187, "o", "r"] +[58.34886653900187, "o", " "] +[58.37886653900187, "o", "c"] +[58.40886653900187, "o", "o"] +[58.43886653900187, "o", "m"] +[58.46886653900187, "o", "m"] +[58.498866539001874, "o", "i"] +[58.528866539001875, "o", "t"] +[58.558866539001876, "o", " "] +[58.58886653900188, "o", "p"] +[58.61886653900188, "o", "r"] +[58.64886653900188, "o", "o"] +[58.67886653900188, "o", "d"] +[58.70886653900188, "o", "u"] +[58.73886653900188, "o", "c"] +[58.768866539001884, "o", "t"] +[58.798866539001885, "o", "i"] +[58.828866539001886, "o", "o"] +[58.85886653900189, "o", "n"] +[58.88886653900189, "o", "_"] +[58.91886653900189, "o", "d"] +[58.94886653900189, "o", "a"] +[58.97886653900189, "o", "t"] +[59.00886653900189, "o", "a"] +[59.038866539001894, "o", "\r\n"] +[59.068866539001895, "o", "$"] +[59.0988665390019, "o", " "] +[59.1288665390019, "o", "s"] +[59.1588665390019, "o", "g"] +[59.1888665390019, "o", "r"] +[59.2188665390019, "o", " "] +[59.2488665390019, "o", "t"] +[59.2788665390019, "o", "a"] +[59.308866539001905, "o", "g"] +[59.338866539001906, "o", " "] +[59.36886653900191, "o", "p"] +[59.39886653900191, "o", "r"] +[59.42886653900191, "o", "o"] +[59.45886653900191, "o", "d"] +[59.48886653900191, "o", "u"] +[59.51886653900191, "o", "c"] +[59.548866539001914, "o", "t"] +[59.578866539001915, "o", "i"] +[59.608866539001916, "o", "o"] +[59.63886653900192, "o", "n"] +[59.66886653900192, "o", "_"] +[59.69886653900192, "o", "d"] +[59.72886653900192, "o", "a"] +[59.75886653900192, "o", "t"] +[59.78886653900192, "o", "a"] +[59.818866539001924, "o", " "] +[59.848866539001925, "o", "i"] +[59.878866539001926, "o", "n"] +[59.90886653900193, "o", "i"] +[59.93886653900193, "o", "t"] +[59.96886653900193, "o", "i"] +[59.99886653900193, "o", "a"] +[60.02886653900193, "o", "l"] +[60.05886653900193, "o", "_"] +[60.088866539001934, "o", "s"] +[60.118866539001935, "o", "n"] +[60.148866539001936, "o", "a"] +[60.17886653900194, "o", "p"] +[60.20886653900194, "o", "s"] +[60.23886653900194, "o", "h"] +[60.26886653900194, "o", "o"] +[60.29886653900194, "o", "t"] +[60.32886653900194, "o", "\r\n"] +[60.358866539001944, "o", "$"] +[60.388866539001945, "o", " "] +[60.41886653900195, "o", "s"] +[60.44886653900195, "o", "g"] +[60.47886653900195, "o", "r"] +[60.50886653900195, "o", " "] +[60.53886653900195, "o", "s"] +[60.56886653900195, "o", "h"] +[60.59886653900195, "o", "o"] +[60.628866539001955, "o", "w"] +[60.658866539001956, "o", " "] +[60.68886653900196, "o", "p"] +[60.71886653900196, "o", "r"] +[60.74886653900196, "o", "o"] +[60.77886653900196, "o", "d"] +[60.80886653900196, "o", "u"] +[60.83886653900196, "o", "c"] +[60.868866539001964, "o", "t"] +[60.898866539001965, "o", "i"] +[60.928866539001966, "o", "o"] +[60.95886653900197, "o", "n"] +[60.98886653900197, "o", "_"] +[61.01886653900197, "o", "d"] +[61.04886653900197, "o", "a"] +[61.07886653900197, "o", "t"] +[61.10886653900197, "o", "a"] +[61.138866539001974, "o", ":"] +[61.168866539001975, "o", "i"] +[61.198866539001976, "o", "n"] +[61.22886653900198, "o", "i"] +[61.25886653900198, "o", "t"] +[61.28886653900198, "o", "i"] +[61.31886653900198, "o", "a"] +[61.34886653900198, "o", "l"] +[61.37886653900198, "o", "_"] +[61.408866539001984, "o", "s"] +[61.438866539001985, "o", "n"] +[61.468866539001986, "o", "a"] +[61.49886653900199, "o", "p"] +[61.52886653900199, "o", "s"] +[61.55886653900199, "o", "h"] +[61.58886653900199, "o", "o"] +[61.61886653900199, "o", "t"] +[61.64886653900199, "o", "\r\n"] +[61.678866539001994, "o", "\u001b[0m"] +[61.708866539001995, "o", "\r\n"] +[62.09707039833122, "o", "Committing production_data...\r\n"] +[62.120233240128094, "o", "Processing table customers\r\n"] +[62.207767667770916, "o", "Processing table orders\r\n"] +[62.3007797622686, "o", "Committed production_data as ee01e0ceaf3a.\r\n"] +[62.69644564628654, "o", "Tagged production_data:ee01e0ceaf3ad6a51e1c6f75a7abc8cd9f8cb2bd57aec1b24d65eb11c974448f with initial_snapshot.\r\n"] +[63.08929127693229, "o", "Image production_data:ee01e0ceaf3ad6a51e1c6f75a7abc8cd9f8cb2bd57aec1b24d65eb11c974448f\r\n\r\n"] +[63.0893163108831, "o", "Created at 2021-10-14T21:32:44.162380\r\n"] +[63.09127491951042, "o", "Size: 1.11 KiB\r\nParent: 0000000000000000000000000000000000000000000000000000000000000000\r\n"] +[63.091288747788006, "o", "\r\nTables:\r\n"] +[63.09222907066398, "o", " customers\r\n"] +[63.09224003791862, "o", " orders\r\n"] +[63.12224003791862, "o", "\u001b[1m"] +[63.152240037918624, "o", "\u001b[36m"] +[63.182240037918625, "o", "\u001b[91m"] +[63.212240037918626, "o", "$"] +[63.24224003791863, "o", " "] +[63.27224003791863, "o", "\u001b[0m"] +[68.30224003791864, "o", "\u001b[H"] +[68.33224003791864, "o", "\u001b[J"] +[68.36224003791864, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make a change on the origin database"] +[68.39224003791864, "o", "\r\n"] +[68.42224003791864, "o", "$"] +[68.45224003791864, "o", " "] +[68.48224003791864, "o", "s"] +[68.51224003791864, "o", "g"] +[68.54224003791865, "o", "r"] +[68.57224003791865, "o", " "] +[68.60224003791865, "o", "s"] +[68.63224003791865, "o", "q"] +[68.66224003791865, "o", "l"] +[68.69224003791865, "o", " "] +[68.72224003791865, "o", "-"] +[68.75224003791865, "o", "r"] +[68.78224003791865, "o", " "] +[68.81224003791866, "o", "o"] +[68.84224003791866, "o", "r"] +[68.87224003791866, "o", "i"] +[68.90224003791866, "o", "g"] +[68.93224003791866, "o", "i"] +[68.96224003791866, "o", "n"] +[68.99224003791866, "o", " "] +[69.02224003791866, "o", "-"] +[69.05224003791866, "o", "s"] +[69.08224003791867, "o", " "] +[69.11224003791867, "o", "p"] +[69.14224003791867, "o", "r"] +[69.17224003791867, "o", "o"] +[69.20224003791867, "o", "d"] +[69.23224003791867, "o", "u"] +[69.26224003791867, "o", "c"] +[69.29224003791867, "o", "t"] +[69.32224003791868, "o", "i"] +[69.35224003791868, "o", "o"] +[69.38224003791868, "o", "n"] +[69.41224003791868, "o", "_"] +[69.44224003791868, "o", "d"] +[69.47224003791868, "o", "a"] +[69.50224003791868, "o", "t"] +[69.53224003791868, "o", "a"] +[69.56224003791868, "o", " "] +[69.59224003791869, "o", "\""] +[69.62224003791869, "o", "U"] +[69.65224003791869, "o", "P"] +[69.68224003791869, "o", "D"] +[69.71224003791869, "o", "A"] +[69.74224003791869, "o", "T"] +[69.77224003791869, "o", "E"] +[69.8022400379187, "o", " "] +[69.8322400379187, "o", "o"] +[69.8622400379187, "o", "r"] +[69.8922400379187, "o", "d"] +[69.9222400379187, "o", "e"] +[69.9522400379187, "o", "r"] +[69.9822400379187, "o", "s"] +[70.0122400379187, "o", " "] +[70.0422400379187, "o", "\\"] +[70.0722400379187, "o", "\r\n "] +[70.1022400379187, "o", "S"] +[70.1322400379187, "o", "E"] +[70.1622400379187, "o", "T"] +[70.19224003791871, "o", " "] +[70.22224003791871, "o", "q"] +[70.25224003791871, "o", "u"] +[70.28224003791871, "o", "a"] +[70.31224003791871, "o", "n"] +[70.34224003791871, "o", "t"] +[70.37224003791871, "o", "i"] +[70.40224003791872, "o", "t"] +[70.43224003791872, "o", "y"] +[70.46224003791872, "o", " "] +[70.49224003791872, "o", "="] +[70.52224003791872, "o", " "] +[70.55224003791872, "o", "q"] +[70.58224003791872, "o", "u"] +[70.61224003791872, "o", "a"] +[70.64224003791873, "o", "n"] +[70.67224003791873, "o", "t"] +[70.70224003791873, "o", "i"] +[70.73224003791873, "o", "t"] +[70.76224003791873, "o", "y"] +[70.79224003791873, "o", " "] +[70.82224003791873, "o", "+"] +[70.85224003791873, "o", " "] +[70.88224003791873, "o", "5"] +[70.91224003791874, "o", " "] +[70.94224003791874, "o", "W"] +[70.97224003791874, "o", "H"] +[71.00224003791874, "o", "E"] +[71.03224003791874, "o", "R"] +[71.06224003791874, "o", "E"] +[71.09224003791874, "o", " "] +[71.12224003791874, "o", "i"] +[71.15224003791874, "o", "d"] +[71.18224003791875, "o", " "] +[71.21224003791875, "o", "="] +[71.24224003791875, "o", " "] +[71.27224003791875, "o", "2"] +[71.30224003791875, "o", ";"] +[71.33224003791875, "o", " "] +[71.36224003791875, "o", "\\"] +[71.39224003791875, "o", "\r\n "] +[71.42224003791875, "o", "D"] +[71.45224003791876, "o", "E"] +[71.48224003791876, "o", "L"] +[71.51224003791876, "o", "E"] +[71.54224003791876, "o", "T"] +[71.57224003791876, "o", "E"] +[71.60224003791876, "o", " "] +[71.63224003791876, "o", "F"] +[71.66224003791876, "o", "R"] +[71.69224003791876, "o", "O"] +[71.72224003791877, "o", "M"] +[71.75224003791877, "o", " "] +[71.78224003791877, "o", "o"] +[71.81224003791877, "o", "r"] +[71.84224003791877, "o", "d"] +[71.87224003791877, "o", "e"] +[71.90224003791877, "o", "r"] +[71.93224003791877, "o", "s"] +[71.96224003791878, "o", " "] +[71.99224003791878, "o", "W"] +[72.02224003791878, "o", "H"] +[72.05224003791878, "o", "E"] +[72.08224003791878, "o", "R"] +[72.11224003791878, "o", "E"] +[72.14224003791878, "o", " "] +[72.17224003791878, "o", "i"] +[72.20224003791878, "o", "d"] +[72.23224003791879, "o", " "] +[72.26224003791879, "o", "="] +[72.29224003791879, "o", " "] +[72.32224003791879, "o", "5"] +[72.35224003791879, "o", ";"] +[72.38224003791879, "o", " "] +[72.41224003791879, "o", "\\"] +[72.4422400379188, "o", "\r\n "] +[72.4722400379188, "o", "I"] +[72.5022400379188, "o", "N"] +[72.5322400379188, "o", "S"] +[72.5622400379188, "o", "E"] +[72.5922400379188, "o", "R"] +[72.6222400379188, "o", "T"] +[72.6522400379188, "o", " "] +[72.6822400379188, "o", "I"] +[72.7122400379188, "o", "N"] +[72.7422400379188, "o", "T"] +[72.7722400379188, "o", "O"] +[72.8022400379188, "o", " "] +[72.83224003791881, "o", "c"] +[72.86224003791881, "o", "u"] +[72.89224003791881, "o", "s"] +[72.92224003791881, "o", "t"] +[72.95224003791881, "o", "o"] +[72.98224003791881, "o", "m"] +[73.01224003791882, "o", "e"] +[73.04224003791882, "o", "r"] +[73.07224003791882, "o", "s"] +[73.10224003791882, "o", " "] +[73.13224003791882, "o", "("] +[73.16224003791882, "o", "n"] +[73.19224003791882, "o", "a"] +[73.22224003791882, "o", "m"] +[73.25224003791882, "o", "e"] +[73.28224003791883, "o", ","] +[73.31224003791883, "o", " "] +[73.34224003791883, "o", "r"] +[73.37224003791883, "o", "e"] +[73.40224003791883, "o", "g"] +[73.43224003791883, "o", "i"] +[73.46224003791883, "o", "s"] +[73.49224003791883, "o", "t"] +[73.52224003791883, "o", "r"] +[73.55224003791884, "o", "a"] +[73.58224003791884, "o", "t"] +[73.61224003791884, "o", "i"] +[73.64224003791884, "o", "o"] +[73.67224003791884, "o", "n"] +[73.70224003791884, "o", "_"] +[73.73224003791884, "o", "t"] +[73.76224003791884, "o", "i"] +[73.79224003791884, "o", "m"] +[73.82224003791885, "o", "e"] +[73.85224003791885, "o", ")"] +[73.88224003791885, "o", " "] +[73.91224003791885, "o", "V"] +[73.94224003791885, "o", "A"] +[73.97224003791885, "o", "L"] +[74.00224003791885, "o", "U"] +[74.03224003791885, "o", "E"] +[74.06224003791885, "o", "S"] +[74.09224003791886, "o", " "] +[74.12224003791886, "o", "\\"] +[74.15224003791886, "o", "\r\n "] +[74.18224003791886, "o", "("] +[74.21224003791886, "o", "'"] +[74.24224003791886, "o", "J"] +[74.27224003791886, "o", "a"] +[74.30224003791886, "o", "c"] +[74.33224003791887, "o", "k"] +[74.36224003791887, "o", " "] +[74.39224003791887, "o", "S"] +[74.42224003791887, "o", "a"] +[74.45224003791887, "o", "m"] +[74.48224003791887, "o", "p"] +[74.51224003791887, "o", "l"] +[74.54224003791887, "o", "e"] +[74.57224003791887, "o", "'"] +[74.60224003791888, "o", ","] +[74.63224003791888, "o", " "] +[74.66224003791888, "o", "'"] +[74.69224003791888, "o", "2"] +[74.72224003791888, "o", "0"] +[74.75224003791888, "o", "2"] +[74.78224003791888, "o", "0"] +[74.81224003791888, "o", "-"] +[74.84224003791888, "o", "0"] +[74.87224003791889, "o", "4"] +[74.90224003791889, "o", "-"] +[74.93224003791889, "o", "2"] +[74.96224003791889, "o", "0"] +[74.99224003791889, "o", " "] +[75.02224003791889, "o", "1"] +[75.05224003791889, "o", "4"] +[75.0822400379189, "o", ":"] +[75.1122400379189, "o", "0"] +[75.1422400379189, "o", "3"] +[75.1722400379189, "o", ":"] +[75.2022400379189, "o", "4"] +[75.2322400379189, "o", "8"] +[75.2622400379189, "o", "'"] +[75.2922400379189, "o", ")"] +[75.3222400379189, "o", ";"] +[75.3522400379189, "o", " "] +[75.3822400379189, "o", "\\"] +[75.4122400379189, "o", "\r\n "] +[75.4422400379189, "o", "I"] +[75.47224003791891, "o", "N"] +[75.50224003791891, "o", "S"] +[75.53224003791891, "o", "E"] +[75.56224003791891, "o", "R"] +[75.59224003791891, "o", "T"] +[75.62224003791891, "o", " "] +[75.65224003791892, "o", "I"] +[75.68224003791892, "o", "N"] +[75.71224003791892, "o", "T"] +[75.74224003791892, "o", "O"] +[75.77224003791892, "o", " "] +[75.80224003791892, "o", "o"] +[75.83224003791892, "o", "r"] +[75.86224003791892, "o", "d"] +[75.89224003791892, "o", "e"] +[75.92224003791893, "o", "r"] +[75.95224003791893, "o", "s"] +[75.98224003791893, "o", " "] +[76.01224003791893, "o", "("] +[76.04224003791893, "o", "c"] +[76.07224003791893, "o", "u"] +[76.10224003791893, "o", "s"] +[76.13224003791893, "o", "t"] +[76.16224003791893, "o", "o"] +[76.19224003791894, "o", "m"] +[76.22224003791894, "o", "e"] +[76.25224003791894, "o", "r"] +[76.28224003791894, "o", "_"] +[76.31224003791894, "o", "i"] +[76.34224003791894, "o", "d"] +[76.37224003791894, "o", ","] +[76.40224003791894, "o", " "] +[76.43224003791894, "o", "q"] +[76.46224003791895, "o", "u"] +[76.49224003791895, "o", "a"] +[76.52224003791895, "o", "n"] +[76.55224003791895, "o", "t"] +[76.58224003791895, "o", "i"] +[76.61224003791895, "o", "t"] +[76.64224003791895, "o", "y"] +[76.67224003791895, "o", ","] +[76.70224003791895, "o", " "] +[76.73224003791896, "o", "i"] +[76.76224003791896, "o", "t"] +[76.79224003791896, "o", "e"] +[76.82224003791896, "o", "m"] +[76.85224003791896, "o", "_"] +[76.88224003791896, "o", "n"] +[76.91224003791896, "o", "a"] +[76.94224003791896, "o", "m"] +[76.97224003791897, "o", "e"] +[77.00224003791897, "o", ","] +[77.03224003791897, "o", " "] +[77.06224003791897, "o", "p"] +[77.09224003791897, "o", "l"] +[77.12224003791897, "o", "a"] +[77.15224003791897, "o", "c"] +[77.18224003791897, "o", "e"] +[77.21224003791897, "o", "d"] +[77.24224003791898, "o", "_"] +[77.27224003791898, "o", "t"] +[77.30224003791898, "o", "i"] +[77.33224003791898, "o", "m"] +[77.36224003791898, "o", "e"] +[77.39224003791898, "o", ")"] +[77.42224003791898, "o", " "] +[77.45224003791898, "o", "V"] +[77.48224003791898, "o", "A"] +[77.51224003791899, "o", "L"] +[77.54224003791899, "o", "U"] +[77.57224003791899, "o", "E"] +[77.60224003791899, "o", "S"] +[77.63224003791899, "o", " "] +[77.66224003791899, "o", "\\"] +[77.69224003791899, "o", "\r\n "] +[77.722240037919, "o", "("] +[77.752240037919, "o", "4"] +[77.782240037919, "o", ","] +[77.812240037919, "o", " "] +[77.842240037919, "o", "5"] +[77.872240037919, "o", ","] +[77.902240037919, "o", " "] +[77.932240037919, "o", "'"] +[77.962240037919, "o", "T"] +[77.992240037919, "o", "o"] +[78.022240037919, "o", "i"] +[78.052240037919, "o", "l"] +[78.08224003791901, "o", "e"] +[78.11224003791901, "o", "t"] +[78.14224003791901, "o", " "] +[78.17224003791901, "o", "R"] +[78.20224003791901, "o", "o"] +[78.23224003791901, "o", "l"] +[78.26224003791901, "o", "l"] +[78.29224003791902, "o", "'"] +[78.32224003791902, "o", ","] +[78.35224003791902, "o", " "] +[78.38224003791902, "o", "'"] +[78.41224003791902, "o", "2"] +[78.44224003791902, "o", "0"] +[78.47224003791902, "o", "2"] +[78.50224003791902, "o", "0"] +[78.53224003791902, "o", "-"] +[78.56224003791903, "o", "0"] +[78.59224003791903, "o", "4"] +[78.62224003791903, "o", "-"] +[78.65224003791903, "o", "2"] +[78.68224003791903, "o", "0"] +[78.71224003791903, "o", " "] +[78.74224003791903, "o", "1"] +[78.77224003791903, "o", "4"] +[78.80224003791903, "o", ":"] +[78.83224003791904, "o", "0"] +[78.86224003791904, "o", "5"] +[78.89224003791904, "o", ":"] +[78.92224003791904, "o", "1"] +[78.95224003791904, "o", "7"] +[78.98224003791904, "o", "'"] +[79.01224003791904, "o", ")"] +[79.04224003791904, "o", ";"] +[79.07224003791904, "o", "\""] +[79.10224003791905, "o", "\r\n"] +[79.13224003791905, "o", "\u001b[0m"] +[79.16224003791905, "o", "\r\n"] +[79.19224003791905, "o", "\u001b[1m"] +[79.22224003791905, "o", "\u001b[36m"] +[79.25224003791905, "o", "\u001b[91m"] +[79.28224003791905, "o", "$"] +[79.31224003791905, "o", " "] +[79.34224003791905, "o", "\u001b[0m"] +[84.37224003791906, "o", "\u001b[H"] +[84.40224003791906, "o", "\u001b[J"] +[84.43224003791906, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The change propagates to the subscriber and gets"] +[84.46224003791906, "o", "\r\n"] +[84.49224003791906, "o", "$ # captured by Splitgraph's change tracking\r\n"] +[84.52224003791906, "o", "$"] +[84.55224003791906, "o", " "] +[84.58224003791906, "o", "s"] +[84.61224003791907, "o", "g"] +[84.64224003791907, "o", "r"] +[84.67224003791907, "o", " "] +[84.70224003791907, "o", "d"] +[84.73224003791907, "o", "i"] +[84.76224003791907, "o", "f"] +[84.79224003791907, "o", "f"] +[84.82224003791907, "o", " "] +[84.85224003791907, "o", "-"] +[84.88224003791908, "o", "v"] +[84.91224003791908, "o", " "] +[84.94224003791908, "o", "p"] +[84.97224003791908, "o", "r"] +[85.00224003791908, "o", "o"] +[85.03224003791908, "o", "d"] +[85.06224003791908, "o", "u"] +[85.09224003791908, "o", "c"] +[85.12224003791908, "o", "t"] +[85.15224003791909, "o", "i"] +[85.18224003791909, "o", "o"] +[85.21224003791909, "o", "n"] +[85.24224003791909, "o", "_"] +[85.27224003791909, "o", "d"] +[85.30224003791909, "o", "a"] +[85.33224003791909, "o", "t"] +[85.3622400379191, "o", "a"] +[85.3922400379191, "o", "\r\n"] +[85.4222400379191, "o", "\u001b[0m"] +[85.4522400379191, "o", "\r\n"] +[86.00569181442361, "o", "Between ee01e0ceaf3a and the current working copy: \r\n"] +[86.0057626247416, "o", "customers: added 1 row.\r\n+ (4, 'Jack Sample', datetime.datetime(2020, 4, 20, 14, 3, 48))"] +[86.00598673820596, "o", "\r\norders: added 2 rows, removed 2 rows.\r\n- (2, 1, 20, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n- (5, 1, 50, 'Surgical Mask', datetime.datetime(2020, 4, 2, 11, 29, 42))\r\n+ (2, 1, 25, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n+ (6, 4, 5, 'Toilet Roll', datetime.datetime(2020, 4, 20, 14, 5, 17))\r\n"] +[86.03598673820596, "o", "\u001b[1m"] +[86.06598673820596, "o", "\u001b[36m"] +[86.09598673820597, "o", "\u001b[91m"] +[86.12598673820597, "o", "$"] +[86.15598673820597, "o", " "] +[86.18598673820597, "o", "\u001b[0m"] +[91.21598673820597, "o", "\u001b[H"] +[91.24598673820597, "o", "\u001b[J"] +[91.27598673820597, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Committing creates a new image, snapshotting the state."] +[91.30598673820597, "o", "\r\n"] +[91.33598673820597, "o", "$"] +[91.36598673820598, "o", " "] +[91.39598673820598, "o", "s"] +[91.42598673820598, "o", "g"] +[91.45598673820598, "o", "r"] +[91.48598673820598, "o", " "] +[91.51598673820598, "o", "c"] +[91.54598673820598, "o", "o"] +[91.57598673820598, "o", "m"] +[91.60598673820598, "o", "m"] +[91.63598673820599, "o", "i"] +[91.66598673820599, "o", "t"] +[91.69598673820599, "o", " "] +[91.72598673820599, "o", "p"] +[91.75598673820599, "o", "r"] +[91.78598673820599, "o", "o"] +[91.81598673820599, "o", "d"] +[91.845986738206, "o", "u"] +[91.875986738206, "o", "c"] +[91.905986738206, "o", "t"] +[91.935986738206, "o", "i"] +[91.965986738206, "o", "o"] +[91.995986738206, "o", "n"] +[92.025986738206, "o", "_"] +[92.055986738206, "o", "d"] +[92.085986738206, "o", "a"] +[92.115986738206, "o", "t"] +[92.145986738206, "o", "a"] +[92.175986738206, "o", "\r\n"] +[92.20598673820601, "o", "$"] +[92.23598673820601, "o", " "] +[92.26598673820601, "o", "s"] +[92.29598673820601, "o", "g"] +[92.32598673820601, "o", "r"] +[92.35598673820601, "o", " "] +[92.38598673820601, "o", "t"] +[92.41598673820602, "o", "a"] +[92.44598673820602, "o", "g"] +[92.47598673820602, "o", " "] +[92.50598673820602, "o", "p"] +[92.53598673820602, "o", "r"] +[92.56598673820602, "o", "o"] +[92.59598673820602, "o", "d"] +[92.62598673820602, "o", "u"] +[92.65598673820602, "o", "c"] +[92.68598673820603, "o", "t"] +[92.71598673820603, "o", "i"] +[92.74598673820603, "o", "o"] +[92.77598673820603, "o", "n"] +[92.80598673820603, "o", "_"] +[92.83598673820603, "o", "d"] +[92.86598673820603, "o", "a"] +[92.89598673820603, "o", "t"] +[92.92598673820603, "o", "a"] +[92.95598673820604, "o", " "] +[92.98598673820604, "o", "c"] +[93.01598673820604, "o", "u"] +[93.04598673820604, "o", "r"] +[93.07598673820604, "o", "r"] +[93.10598673820604, "o", "e"] +[93.13598673820604, "o", "n"] +[93.16598673820604, "o", "t"] +[93.19598673820605, "o", "_"] +[93.22598673820605, "o", "s"] +[93.25598673820605, "o", "n"] +[93.28598673820605, "o", "a"] +[93.31598673820605, "o", "p"] +[93.34598673820605, "o", "s"] +[93.37598673820605, "o", "h"] +[93.40598673820605, "o", "o"] +[93.43598673820605, "o", "t"] +[93.46598673820606, "o", "\r\n"] +[93.49598673820606, "o", "$"] +[93.52598673820606, "o", " "] +[93.55598673820606, "o", "s"] +[93.58598673820606, "o", "g"] +[93.61598673820606, "o", "r"] +[93.64598673820606, "o", " "] +[93.67598673820606, "o", "s"] +[93.70598673820606, "o", "h"] +[93.73598673820607, "o", "o"] +[93.76598673820607, "o", "w"] +[93.79598673820607, "o", " "] +[93.82598673820607, "o", "p"] +[93.85598673820607, "o", "r"] +[93.88598673820607, "o", "o"] +[93.91598673820607, "o", "d"] +[93.94598673820607, "o", "u"] +[93.97598673820607, "o", "c"] +[94.00598673820608, "o", "t"] +[94.03598673820608, "o", "i"] +[94.06598673820608, "o", "o"] +[94.09598673820608, "o", "n"] +[94.12598673820608, "o", "_"] +[94.15598673820608, "o", "d"] +[94.18598673820608, "o", "a"] +[94.21598673820608, "o", "t"] +[94.24598673820608, "o", "a"] +[94.27598673820609, "o", ":"] +[94.30598673820609, "o", "c"] +[94.33598673820609, "o", "u"] +[94.36598673820609, "o", "r"] +[94.39598673820609, "o", "r"] +[94.42598673820609, "o", "e"] +[94.4559867382061, "o", "n"] +[94.4859867382061, "o", "t"] +[94.5159867382061, "o", "_"] +[94.5459867382061, "o", "s"] +[94.5759867382061, "o", "n"] +[94.6059867382061, "o", "a"] +[94.6359867382061, "o", "p"] +[94.6659867382061, "o", "s"] +[94.6959867382061, "o", "h"] +[94.7259867382061, "o", "o"] +[94.7559867382061, "o", "t"] +[94.7859867382061, "o", "\r\n"] +[94.8159867382061, "o", "\u001b[0m"] +[94.84598673820611, "o", "\r\n"] +[95.23052944183465, "o", "Committing production_data...\r\n"] +[95.26963104248162, "o", "Committed production_data as 7d2aa9c8565b.\r\n"] +[95.65804566383477, "o", "Tagged production_data:7d2aa9c8565bc41877b69cc9d93535874f23a4b85487cb9a2dd1eabff8e96c44 with current_snapshot.\r\n"] +[96.046263113023, "o", "Image production_data:7d2aa9c8565bc41877b69cc9d93535874f23a4b85487cb9a2dd1eabff8e96c44\r\n\r\n"] +[96.0462905311596, "o", "Created at 2021-10-14T21:32:46.775329\r\n"] +[96.04731692314263, "o", "Size: 1.11 KiB\r\n"] +[96.04732789039727, "o", "Parent: ee01e0ceaf3ad6a51e1c6f75a7abc8cd9f8cb2bd57aec1b24d65eb11c974448f\r\n\r\nTables:\r\n"] +[96.04800714492913, "o", " customers\r\n"] +[96.0480188274395, "o", " orders\r\n"] +[96.07801882743951, "o", "\u001b[1m"] +[96.10801882743951, "o", "\u001b[36m"] +[96.13801882743951, "o", "\u001b[91m"] +[96.16801882743951, "o", "$"] +[96.19801882743951, "o", " "] +[96.22801882743951, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.17/postgrest.cast b/content/casts/versioned/archive/v0.2.17/postgrest.cast new file mode 100644 index 00000000..9a365103 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.17/postgrest.cast @@ -0,0 +1,1631 @@ +{"version": 2, "width": 100, "height": 16, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1634247169, "metadata": {"tss": [{"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 0.06}, {"h": "Also create another image so we can switch between them.", "ts": 13.351374053955084}, {"h": "Check out the original version of the dataset and look at the API spec for it.", "ts": 26.282394247055166}, {"h": "Get all rows in the table", "ts": 38.26275381088287}, {"h": "Run a query selecting one row", "ts": 44.9874741363529}, {"h": "Run the query against the new version of the dataset.", "ts": 53.662137117386365}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "s"] +[0.24, "o", "g"] +[0.27, "o", "r"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "i"] +[0.3600000000000001, "o", "n"] +[0.3900000000000001, "o", "i"] +[0.42000000000000015, "o", "t"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "d"] +[0.5100000000000002, "o", "e"] +[0.5400000000000003, "o", "m"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "/"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "\r\n"] +[0.8700000000000006, "o", "$"] +[0.9000000000000006, "o", " "] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "g"] +[0.9900000000000007, "o", "r"] +[1.0200000000000007, "o", " "] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "s"] +[1.1100000000000008, "o", "v"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "i"] +[1.2000000000000008, "o", "m"] +[1.2300000000000009, "o", "p"] +[1.260000000000001, "o", "o"] +[1.290000000000001, "o", "r"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", " "] +[1.380000000000001, "o", "-"] +[1.410000000000001, "o", "f"] +[1.440000000000001, "o", " "] +[1.470000000000001, "o", "."] +[1.500000000000001, "o", "."] +[1.5300000000000011, "o", "/"] +[1.5600000000000012, "o", "i"] +[1.5900000000000012, "o", "m"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "o"] +[1.6800000000000013, "o", "r"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "-"] +[1.7700000000000014, "o", "f"] +[1.8000000000000014, "o", "r"] +[1.8300000000000014, "o", "o"] +[1.8600000000000014, "o", "m"] +[1.8900000000000015, "o", "-"] +[1.9200000000000015, "o", "c"] +[1.9500000000000015, "o", "s"] +[1.9800000000000015, "o", "v"] +[2.0100000000000016, "o", "/"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "d"] +[2.100000000000001, "o", "u"] +[2.130000000000001, "o", "-"] +[2.1600000000000006, "o", "w"] +[2.1900000000000004, "o", "e"] +[2.22, "o", "a"] +[2.25, "o", "t"] +[2.28, "o", "h"] +[2.3099999999999996, "o", "e"] +[2.3399999999999994, "o", "r"] +[2.369999999999999, "o", "-"] +[2.399999999999999, "o", "h"] +[2.429999999999999, "o", "i"] +[2.4599999999999986, "o", "s"] +[2.4899999999999984, "o", "t"] +[2.5199999999999982, "o", "o"] +[2.549999999999998, "o", "r"] +[2.579999999999998, "o", "y"] +[2.6099999999999977, "o", "."] +[2.6399999999999975, "o", "c"] +[2.6699999999999973, "o", "s"] +[2.699999999999997, "o", "v"] +[2.729999999999997, "o", " "] +[2.7599999999999967, "o", "\\"] +[2.7899999999999965, "o", "\r\n "] +[2.8199999999999963, "o", "-"] +[2.849999999999996, "o", "k"] +[2.879999999999996, "o", " "] +[2.9099999999999957, "o", "d"] +[2.9399999999999955, "o", "a"] +[2.9699999999999953, "o", "t"] +[2.999999999999995, "o", "e"] +[3.029999999999995, "o", " "] +[3.0599999999999947, "o", "\\"] +[3.0899999999999945, "o", "\r\n "] +[3.1199999999999943, "o", "-"] +[3.149999999999994, "o", "t"] +[3.179999999999994, "o", " "] +[3.2099999999999937, "o", "d"] +[3.2399999999999936, "o", "a"] +[3.2699999999999934, "o", "t"] +[3.299999999999993, "o", "e"] +[3.329999999999993, "o", " "] +[3.3599999999999928, "o", "t"] +[3.3899999999999926, "o", "i"] +[3.4199999999999924, "o", "m"] +[3.449999999999992, "o", "e"] +[3.479999999999992, "o", "s"] +[3.509999999999992, "o", "t"] +[3.5399999999999916, "o", "a"] +[3.5699999999999914, "o", "m"] +[3.599999999999991, "o", "p"] +[3.629999999999991, "o", " "] +[3.659999999999991, "o", "\\"] +[3.6899999999999906, "o", "\r\n "] +[3.7199999999999904, "o", "-"] +[3.7499999999999902, "o", "-"] +[3.77999999999999, "o", "s"] +[3.80999999999999, "o", "e"] +[3.8399999999999896, "o", "p"] +[3.8699999999999894, "o", "a"] +[3.8999999999999893, "o", "r"] +[3.929999999999989, "o", "a"] +[3.959999999999989, "o", "t"] +[3.9899999999999887, "o", "o"] +[4.019999999999989, "o", "r"] +[4.049999999999989, "o", " "] +[4.079999999999989, "o", "\""] +[4.10999999999999, "o", ";"] +[4.13999999999999, "o", "\""] +[4.16999999999999, "o", " "] +[4.19999999999999, "o", "\\"] +[4.229999999999991, "o", "\r\n "] +[4.259999999999991, "o", "d"] +[4.289999999999991, "o", "e"] +[4.319999999999991, "o", "m"] +[4.349999999999992, "o", "o"] +[4.379999999999992, "o", "/"] +[4.409999999999992, "o", "w"] +[4.439999999999992, "o", "e"] +[4.469999999999993, "o", "a"] +[4.499999999999993, "o", "t"] +[4.529999999999993, "o", "h"] +[4.559999999999993, "o", "e"] +[4.589999999999994, "o", "r"] +[4.619999999999994, "o", " "] +[4.649999999999994, "o", "r"] +[4.679999999999994, "o", "d"] +[4.709999999999995, "o", "u"] +[4.739999999999995, "o", "\r\n"] +[4.769999999999995, "o", "$"] +[4.799999999999995, "o", " "] +[4.829999999999996, "o", "s"] +[4.859999999999996, "o", "g"] +[4.889999999999996, "o", "r"] +[4.919999999999996, "o", " "] +[4.949999999999997, "o", "c"] +[4.979999999999997, "o", "o"] +[5.009999999999997, "o", "m"] +[5.039999999999997, "o", "m"] +[5.069999999999998, "o", "i"] +[5.099999999999998, "o", "t"] +[5.129999999999998, "o", " "] +[5.159999999999998, "o", "d"] +[5.189999999999999, "o", "e"] +[5.219999999999999, "o", "m"] +[5.249999999999999, "o", "o"] +[5.279999999999999, "o", "/"] +[5.31, "o", "w"] +[5.34, "o", "e"] +[5.37, "o", "a"] +[5.4, "o", "t"] +[5.430000000000001, "o", "h"] +[5.460000000000001, "o", "e"] +[5.490000000000001, "o", "r"] +[5.520000000000001, "o", "\r\n"] +[5.550000000000002, "o", "$"] +[5.580000000000002, "o", " "] +[5.610000000000002, "o", "s"] +[5.640000000000002, "o", "g"] +[5.670000000000003, "o", "r"] +[5.700000000000003, "o", " "] +[5.730000000000003, "o", "t"] +[5.760000000000003, "o", "a"] +[5.790000000000004, "o", "g"] +[5.820000000000004, "o", " "] +[5.850000000000004, "o", "d"] +[5.880000000000004, "o", "e"] +[5.910000000000005, "o", "m"] +[5.940000000000005, "o", "o"] +[5.970000000000005, "o", "/"] +[6.000000000000005, "o", "w"] +[6.030000000000006, "o", "e"] +[6.060000000000006, "o", "a"] +[6.090000000000006, "o", "t"] +[6.120000000000006, "o", "h"] +[6.150000000000007, "o", "e"] +[6.180000000000007, "o", "r"] +[6.210000000000007, "o", " "] +[6.240000000000007, "o", "i"] +[6.270000000000008, "o", "n"] +[6.300000000000008, "o", "i"] +[6.330000000000008, "o", "t"] +[6.360000000000008, "o", "i"] +[6.390000000000009, "o", "a"] +[6.420000000000009, "o", "l"] +[6.450000000000009, "o", "_"] +[6.480000000000009, "o", "d"] +[6.51000000000001, "o", "a"] +[6.54000000000001, "o", "t"] +[6.57000000000001, "o", "a"] +[6.60000000000001, "o", "\r\n"] +[6.6300000000000106, "o", "\u001b[0m"] +[6.660000000000011, "o", "\r\n"] +[7.071172628402721, "o", "Initialized empty repository demo/weather\r\n"] +[7.464992437362682, "o", "Committing demo/weather...\r\n"] +[7.486560258865367, "o", "Processing table rdu\r\n"] +[7.714201841354381, "o", "Committed demo/weather as d1a90f86dfa6.\r\n"] +[8.111374053955089, "o", "Tagged demo/weather:d1a90f86dfa6676faa080f896de291031f7c6fcccc3e5188a847c748ebbbabe6 with initial_data.\r\n"] +[8.141374053955088, "o", "\u001b[1m"] +[8.171374053955088, "o", "\u001b[36m"] +[8.201374053955087, "o", "\u001b[91m"] +[8.231374053955086, "o", "$"] +[8.261374053955086, "o", " "] +[8.291374053955085, "o", "\u001b[0m"] +[13.321374053955084, "o", "\u001b[H"] +[13.351374053955084, "o", "\u001b[J"] +[13.381374053955083, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Also create another image so we can switch between them."] +[13.411374053955083, "o", "\r\n"] +[13.441374053955082, "o", "$"] +[13.471374053955081, "o", " "] +[13.50137405395508, "o", "s"] +[13.53137405395508, "o", "g"] +[13.56137405395508, "o", "r"] +[13.591374053955079, "o", " "] +[13.621374053955078, "o", "s"] +[13.651374053955077, "o", "q"] +[13.681374053955077, "o", "l"] +[13.711374053955076, "o", " "] +[13.741374053955075, "o", "-"] +[13.771374053955075, "o", "s"] +[13.801374053955074, "o", " "] +[13.831374053955074, "o", "d"] +[13.861374053955073, "o", "e"] +[13.891374053955072, "o", "m"] +[13.921374053955072, "o", "o"] +[13.951374053955071, "o", "/"] +[13.98137405395507, "o", "w"] +[14.01137405395507, "o", "e"] +[14.041374053955069, "o", "a"] +[14.071374053955068, "o", "t"] +[14.101374053955068, "o", "h"] +[14.131374053955067, "o", "e"] +[14.161374053955067, "o", "r"] +[14.191374053955066, "o", " "] +[14.221374053955065, "o", "\""] +[14.251374053955065, "o", "U"] +[14.281374053955064, "o", "P"] +[14.311374053955063, "o", "D"] +[14.341374053955063, "o", "A"] +[14.371374053955062, "o", "T"] +[14.401374053955061, "o", "E"] +[14.43137405395506, "o", " "] +[14.46137405395506, "o", "r"] +[14.49137405395506, "o", "d"] +[14.521374053955059, "o", "u"] +[14.551374053955058, "o", " "] +[14.581374053955058, "o", "S"] +[14.611374053955057, "o", "E"] +[14.641374053955056, "o", "T"] +[14.671374053955056, "o", " "] +[14.701374053955055, "o", "p"] +[14.731374053955054, "o", "r"] +[14.761374053955054, "o", "e"] +[14.791374053955053, "o", "c"] +[14.821374053955052, "o", "i"] +[14.851374053955052, "o", "p"] +[14.881374053955051, "o", "i"] +[14.91137405395505, "o", "t"] +[14.94137405395505, "o", "a"] +[14.97137405395505, "o", "t"] +[15.001374053955049, "o", "i"] +[15.031374053955048, "o", "o"] +[15.061374053955047, "o", "n"] +[15.091374053955047, "o", " "] +[15.121374053955046, "o", "="] +[15.151374053955045, "o", " "] +[15.181374053955045, "o", "p"] +[15.211374053955044, "o", "r"] +[15.241374053955044, "o", "e"] +[15.271374053955043, "o", "c"] +[15.301374053955042, "o", "i"] +[15.331374053955042, "o", "p"] +[15.361374053955041, "o", "i"] +[15.39137405395504, "o", "t"] +[15.42137405395504, "o", "a"] +[15.451374053955039, "o", "t"] +[15.481374053955038, "o", "i"] +[15.511374053955038, "o", "o"] +[15.541374053955037, "o", "n"] +[15.571374053955036, "o", " "] +[15.601374053955036, "o", "*"] +[15.631374053955035, "o", " "] +[15.661374053955035, "o", "1"] +[15.691374053955034, "o", "."] +[15.721374053955033, "o", "2"] +[15.751374053955033, "o", " "] +[15.781374053955032, "o", "W"] +[15.811374053955031, "o", "H"] +[15.84137405395503, "o", "E"] +[15.87137405395503, "o", "R"] +[15.90137405395503, "o", "E"] +[15.931374053955029, "o", " "] +[15.961374053955028, "o", "E"] +[15.991374053955028, "o", "X"] +[16.02137405395503, "o", "T"] +[16.05137405395503, "o", "R"] +[16.08137405395503, "o", "A"] +[16.111374053955032, "o", "C"] +[16.141374053955033, "o", "T"] +[16.171374053955034, "o", " "] +[16.201374053955035, "o", "("] +[16.231374053955037, "o", "y"] +[16.261374053955038, "o", "e"] +[16.29137405395504, "o", "a"] +[16.32137405395504, "o", "r"] +[16.35137405395504, "o", " "] +[16.381374053955042, "o", "F"] +[16.411374053955043, "o", "R"] +[16.441374053955045, "o", "O"] +[16.471374053955046, "o", "M"] +[16.501374053955047, "o", " "] +[16.531374053955048, "o", "d"] +[16.56137405395505, "o", "a"] +[16.59137405395505, "o", "t"] +[16.62137405395505, "o", "e"] +[16.651374053955053, "o", ")"] +[16.681374053955054, "o", " "] +[16.711374053955055, "o", "="] +[16.741374053955056, "o", " "] +[16.771374053955057, "o", "2"] +[16.80137405395506, "o", "0"] +[16.83137405395506, "o", "1"] +[16.86137405395506, "o", "2"] +[16.89137405395506, "o", "\""] +[16.921374053955063, "o", "\r\n"] +[16.951374053955064, "o", "$"] +[16.981374053955065, "o", " "] +[17.011374053955066, "o", "s"] +[17.041374053955067, "o", "g"] +[17.07137405395507, "o", "r"] +[17.10137405395507, "o", " "] +[17.13137405395507, "o", "c"] +[17.161374053955072, "o", "o"] +[17.191374053955073, "o", "m"] +[17.221374053955074, "o", "m"] +[17.251374053955075, "o", "i"] +[17.281374053955076, "o", "t"] +[17.311374053955078, "o", " "] +[17.34137405395508, "o", "-"] +[17.37137405395508, "o", "m"] +[17.40137405395508, "o", " "] +[17.431374053955082, "o", "\""] +[17.461374053955083, "o", "R"] +[17.491374053955084, "o", "e"] +[17.521374053955086, "o", "v"] +[17.551374053955087, "o", "i"] +[17.581374053955088, "o", "s"] +[17.61137405395509, "o", "i"] +[17.64137405395509, "o", "o"] +[17.67137405395509, "o", "n"] +[17.701374053955092, "o", " "] +[17.731374053955093, "o", "t"] +[17.761374053955095, "o", "o"] +[17.791374053955096, "o", " "] +[17.821374053955097, "o", "t"] +[17.851374053955098, "o", "h"] +[17.8813740539551, "o", "e"] +[17.9113740539551, "o", " "] +[17.9413740539551, "o", "2"] +[17.971374053955103, "o", "0"] +[18.001374053955104, "o", "1"] +[18.031374053955105, "o", "2"] +[18.061374053955106, "o", " "] +[18.091374053955107, "o", "r"] +[18.12137405395511, "o", "a"] +[18.15137405395511, "o", "i"] +[18.18137405395511, "o", "n"] +[18.21137405395511, "o", "f"] +[18.241374053955113, "o", "a"] +[18.271374053955114, "o", "l"] +[18.301374053955115, "o", "l"] +[18.331374053955116, "o", " "] +[18.361374053955117, "o", "d"] +[18.39137405395512, "o", "a"] +[18.42137405395512, "o", "t"] +[18.45137405395512, "o", "a"] +[18.481374053955122, "o", "\""] +[18.511374053955123, "o", " "] +[18.541374053955124, "o", "d"] +[18.571374053955125, "o", "e"] +[18.601374053955126, "o", "m"] +[18.631374053955128, "o", "o"] +[18.66137405395513, "o", "/"] +[18.69137405395513, "o", "w"] +[18.72137405395513, "o", "e"] +[18.751374053955132, "o", "a"] +[18.781374053955133, "o", "t"] +[18.811374053955134, "o", "h"] +[18.841374053955136, "o", "e"] +[18.871374053955137, "o", "r"] +[18.901374053955138, "o", "\r\n"] +[18.93137405395514, "o", "$"] +[18.96137405395514, "o", " "] +[18.99137405395514, "o", "s"] +[19.021374053955142, "o", "g"] +[19.051374053955143, "o", "r"] +[19.081374053955145, "o", " "] +[19.111374053955146, "o", "t"] +[19.141374053955147, "o", "a"] +[19.171374053955148, "o", "g"] +[19.20137405395515, "o", " "] +[19.23137405395515, "o", "d"] +[19.26137405395515, "o", "e"] +[19.291374053955153, "o", "m"] +[19.321374053955154, "o", "o"] +[19.351374053955155, "o", "/"] +[19.381374053955156, "o", "w"] +[19.411374053955157, "o", "e"] +[19.44137405395516, "o", "a"] +[19.47137405395516, "o", "t"] +[19.50137405395516, "o", "h"] +[19.53137405395516, "o", "e"] +[19.561374053955163, "o", "r"] +[19.591374053955164, "o", " "] +[19.621374053955165, "o", "r"] +[19.651374053955166, "o", "e"] +[19.681374053955167, "o", "v"] +[19.71137405395517, "o", "i"] +[19.74137405395517, "o", "s"] +[19.77137405395517, "o", "e"] +[19.801374053955172, "o", "d"] +[19.831374053955173, "o", "_"] +[19.861374053955174, "o", "d"] +[19.891374053955175, "o", "a"] +[19.921374053955176, "o", "t"] +[19.951374053955178, "o", "a"] +[19.98137405395518, "o", "\r\n"] +[20.01137405395518, "o", "\u001b[0m"] +[20.04137405395518, "o", "\r\n"] +[20.438905086517437, "o", "Committing demo/weather...\r\n"] +[20.473847475051983, "o", "Storing and indexing table rdu\r\n"] +[20.649066295623882, "o", "Committed demo/weather as 741a820f9d66.\r\n"] +[21.042394247055157, "o", "Tagged demo/weather:741a820f9d668443e5bf770b21babd8195434369d2b9dd7a15a44e48ae8317b2 with revised_data.\r\n"] +[21.072394247055158, "o", "\u001b[1m"] +[21.10239424705516, "o", "\u001b[36m"] +[21.13239424705516, "o", "\u001b[91m"] +[21.16239424705516, "o", "$"] +[21.192394247055162, "o", " "] +[21.222394247055163, "o", "\u001b[0m"] +[26.252394247055165, "o", "\u001b[H"] +[26.282394247055166, "o", "\u001b[J"] +[26.312394247055167, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the original version of the dataset and look at the API spec for it."] +[26.342394247055168, "o", "\r\n"] +[26.37239424705517, "o", "$ # For this, we need to restart PostgREST so that it picks up the new schema.\r\n"] +[26.40239424705517, "o", "$"] +[26.43239424705517, "o", " "] +[26.462394247055173, "o", "d"] +[26.492394247055174, "o", "o"] +[26.522394247055175, "o", "c"] +[26.552394247055176, "o", "k"] +[26.582394247055177, "o", "e"] +[26.612394247055178, "o", "r"] +[26.64239424705518, "o", "-"] +[26.67239424705518, "o", "c"] +[26.70239424705518, "o", "o"] +[26.732394247055183, "o", "m"] +[26.762394247055184, "o", "p"] +[26.792394247055185, "o", "o"] +[26.822394247055186, "o", "s"] +[26.852394247055187, "o", "e"] +[26.88239424705519, "o", " "] +[26.91239424705519, "o", "-"] +[26.94239424705519, "o", "-"] +[26.972394247055192, "o", "p"] +[27.002394247055193, "o", "r"] +[27.032394247055194, "o", "o"] +[27.062394247055195, "o", "j"] +[27.092394247055196, "o", "e"] +[27.122394247055198, "o", "c"] +[27.1523942470552, "o", "t"] +[27.1823942470552, "o", "-"] +[27.2123942470552, "o", "n"] +[27.242394247055202, "o", "a"] +[27.272394247055203, "o", "m"] +[27.302394247055204, "o", "e"] +[27.332394247055205, "o", " "] +[27.362394247055207, "o", "s"] +[27.392394247055208, "o", "p"] +[27.42239424705521, "o", "l"] +[27.45239424705521, "o", "i"] +[27.48239424705521, "o", "t"] +[27.512394247055212, "o", "g"] +[27.542394247055213, "o", "r"] +[27.572394247055215, "o", "a"] +[27.602394247055216, "o", "p"] +[27.632394247055217, "o", "h"] +[27.662394247055218, "o", "_"] +[27.69239424705522, "o", "e"] +[27.72239424705522, "o", "x"] +[27.75239424705522, "o", "a"] +[27.782394247055223, "o", "m"] +[27.812394247055224, "o", "p"] +[27.842394247055225, "o", "l"] +[27.872394247055226, "o", "e"] +[27.902394247055227, "o", " "] +[27.932394247055228, "o", "r"] +[27.96239424705523, "o", "e"] +[27.99239424705523, "o", "s"] +[28.02239424705523, "o", "t"] +[28.052394247055233, "o", "a"] +[28.082394247055234, "o", "r"] +[28.112394247055235, "o", "t"] +[28.142394247055236, "o", " "] +[28.172394247055237, "o", "p"] +[28.20239424705524, "o", "o"] +[28.23239424705524, "o", "s"] +[28.26239424705524, "o", "t"] +[28.292394247055242, "o", "g"] +[28.322394247055243, "o", "r"] +[28.352394247055244, "o", "e"] +[28.382394247055245, "o", "s"] +[28.412394247055246, "o", "t"] +[28.442394247055248, "o", "\r\n"] +[28.47239424705525, "o", "$"] +[28.50239424705525, "o", " "] +[28.53239424705525, "o", "s"] +[28.562394247055252, "o", "g"] +[28.592394247055253, "o", "r"] +[28.622394247055254, "o", " "] +[28.652394247055256, "o", "c"] +[28.682394247055257, "o", "h"] +[28.712394247055258, "o", "e"] +[28.74239424705526, "o", "c"] +[28.77239424705526, "o", "k"] +[28.80239424705526, "o", "o"] +[28.832394247055262, "o", "u"] +[28.862394247055263, "o", "t"] +[28.892394247055265, "o", " "] +[28.922394247055266, "o", "d"] +[28.952394247055267, "o", "e"] +[28.982394247055268, "o", "m"] +[29.01239424705527, "o", "o"] +[29.04239424705527, "o", "/"] +[29.07239424705527, "o", "w"] +[29.102394247055273, "o", "e"] +[29.132394247055274, "o", "a"] +[29.162394247055275, "o", "t"] +[29.192394247055276, "o", "h"] +[29.222394247055277, "o", "e"] +[29.25239424705528, "o", "r"] +[29.28239424705528, "o", ":"] +[29.31239424705528, "o", "i"] +[29.34239424705528, "o", "n"] +[29.372394247055283, "o", "i"] +[29.402394247055284, "o", "t"] +[29.432394247055285, "o", "i"] +[29.462394247055286, "o", "a"] +[29.492394247055287, "o", "l"] +[29.52239424705529, "o", "_"] +[29.55239424705529, "o", "d"] +[29.58239424705529, "o", "a"] +[29.612394247055292, "o", "t"] +[29.642394247055293, "o", "a"] +[29.672394247055294, "o", "\r\n"] +[29.702394247055295, "o", "$"] +[29.732394247055296, "o", " "] +[29.762394247055298, "o", "c"] +[29.7923942470553, "o", "u"] +[29.8223942470553, "o", "r"] +[29.8523942470553, "o", "l"] +[29.882394247055302, "o", " "] +[29.912394247055303, "o", "h"] +[29.942394247055304, "o", "t"] +[29.972394247055306, "o", "t"] +[30.002394247055307, "o", "p"] +[30.032394247055308, "o", ":"] +[30.06239424705531, "o", "/"] +[30.09239424705531, "o", "/"] +[30.12239424705531, "o", "l"] +[30.152394247055312, "o", "o"] +[30.182394247055313, "o", "c"] +[30.212394247055315, "o", "a"] +[30.242394247055316, "o", "l"] +[30.272394247055317, "o", "h"] +[30.302394247055318, "o", "o"] +[30.33239424705532, "o", "s"] +[30.36239424705532, "o", "t"] +[30.39239424705532, "o", ":"] +[30.422394247055323, "o", "8"] +[30.452394247055324, "o", "0"] +[30.482394247055325, "o", "8"] +[30.512394247055326, "o", "0"] +[30.542394247055327, "o", "/"] +[30.57239424705533, "o", " "] +[30.60239424705533, "o", "|"] +[30.63239424705533, "o", " "] +[30.66239424705533, "o", "c"] +[30.692394247055333, "o", "u"] +[30.722394247055334, "o", "t"] +[30.752394247055335, "o", " "] +[30.782394247055336, "o", "-"] +[30.812394247055337, "o", "c"] +[30.84239424705534, "o", " "] +[30.87239424705534, "o", "-"] +[30.90239424705534, "o", "7"] +[30.932394247055342, "o", "9"] +[30.962394247055343, "o", "3"] +[30.992394247055344, "o", "\r\n"] +[31.022394247055345, "o", "\u001b[0m"] +[31.052394247055346, "o", "\r\n"] +[31.689349746704394, "o", "Restarting splitgraph_example_postgrest_1 ... \r\r\n"] +[32.38059864044219, "o", "\u001b[1A\u001b[2K\rRestarting splitgraph_example_postgrest_1 ... \u001b[32mdone\u001b[0m\r\u001b[1B"] +[32.9504934310916, "o", "Checked out demo/weather:d1a90f86dfa6."] +[32.95054755210906, "o", "\r\n"] +[32.96932373046904, "o", " "] +[32.96938619613677, "o", " "] +[32.969418621063525, "o", "%"] +[32.969445562362964, "o", " "] +[32.96947226524382, "o", "T"] +[32.969498491287524, "o", "o"] +[32.96952424049407, "o", "t"] +[32.96955046653777, "o", "a"] +[32.96957669258147, "o", "l"] +[32.96960244178801, "o", " "] +[32.969628429413135, "o", " "] +[32.96965417861968, "o", " "] +[32.96968064308196, "o", " "] +[32.96970663070708, "o", "%"] +[32.96973237991362, "o", " "] +[32.96975932121306, "o", "R"] +[32.96978530883818, "o", "e"] +[32.969811058044726, "o", "c"] +[32.96983728408843, "o", "e"] +[32.96986279487639, "o", "i"] +[32.96988878250151, "o", "v"] +[32.96993122100859, "o", "e"] +[32.96995935440093, "o", "d"] +[32.96998724937468, "o", " "] +[32.97001514434844, "o", "%"] +[32.97004280090361, "o", " "] +[32.97007045745879, "o", "X"] +[32.970098114013965, "o", "f"] +[32.9701262474063, "o", "e"] +[32.97015414238005, "o", "r"] +[32.97018203735381, "o", "d"] +[32.97020993232756, "o", " "] +[32.97023782730132, "o", " "] +[32.970265483856494, "o", "A"] +[32.97029337883025, "o", "v"] +[32.970321273804004, "o", "e"] +[32.97034893035918, "o", "r"] +[32.970376825332934, "o", "a"] +[32.97040448188811, "o", "g"] +[32.970432138443286, "o", "e"] +[32.97046003341704, "o", " "] +[32.970487928390796, "o", "S"] +[32.97051653862029, "o", "p"] +[32.97054467201262, "o", "e"] +[32.9705723285678, "o", "e"] +[32.97059998512297, "o", "d"] +[32.97062764167815, "o", " "] +[32.970655536651904, "o", " "] +[32.97068319320708, "o", " "] +[32.970710849762256, "o", "T"] +[32.97073850631743, "o", "i"] +[32.970766401291186, "o", "m"] +[32.97079429626494, "o", "e"] +[32.97082195282012, "o", " "] +[32.97309050560027, "o", " "] +[32.97314057350188, "o", " "] +[32.97317061424285, "o", " "] +[32.97319898605376, "o", "T"] +[32.973226881027514, "o", "i"] +[32.97325453758269, "o", "m"] +[32.97328171730071, "o", "e"] +[32.973309135437304, "o", " "] +[32.97333679199248, "o", " "] +[32.973364448547656, "o", " "] +[32.97339210510283, "o", " "] +[32.97341976165801, "o", " "] +[32.97344741821318, "o", "T"] +[32.97347483634978, "o", "i"] +[32.97350344657927, "o", "m"] +[32.97353134155303, "o", "e"] +[32.97355923652678, "o", " "] +[32.97358689308196, "o", " "] +[32.973614549637134, "o", "C"] +[32.97364244461089, "o", "u"] +[32.973670101166064, "o", "r"] +[32.97369775772124, "o", "r"] +[32.973725414276416, "o", "e"] +[32.97375307083159, "o", "n"] +[32.97378072738677, "o", "t"] +[32.97381172180205, "o", "\r\n"] +[32.97416410446196, "o", " "] +[32.97419390678435, "o", " "] +[32.974221801758105, "o", " "] +[32.97424993515044, "o", " "] +[32.974290704727466, "o", " "] +[32.97431645393401, "o", " "] +[32.97434244155913, "o", " "] +[32.97439012527495, "o", " "] +[32.97441778183013, "o", " "] +[32.97444591522246, "o", " "] +[32.974473810196216, "o", " "] +[32.97450146675139, "o", " "] +[32.97452912330657, "o", " "] +[32.97455677986174, "o", " "] +[32.97458419799834, "o", " "] +[32.974611854553515, "o", " "] +[32.97463951110869, "o", " "] +[32.97467694282561, "o", " "] +[32.97470269203215, "o", " "] +[32.97472820282012, "o", " "] +[32.97475371360808, "o", " "] +[32.974779224396045, "o", " "] +[32.97480521202117, "o", " "] +[32.97483072280913, "o", " "] +[32.97485671043425, "o", " "] +[32.974882698059375, "o", " "] +[32.97492561340361, "o", " "] +[32.97495350837737, "o", " "] +[32.974981164932544, "o", " "] +[32.97500882148772, "o", " "] +[32.97503862381011, "o", " "] +[32.97506628036528, "o", " "] +[32.97509393692046, "o", " "] +[32.975121831894214, "o", "D"] +[32.97514972686797, "o", "l"] +[32.975177383423144, "o", "o"] +[32.97520503997832, "o", "a"] +[32.975232696533496, "o", "d"] +[32.97526035308867, "o", " "] +[32.97528824806243, "o", " "] +[32.9753159046176, "o", "U"] +[32.97534379959136, "o", "p"] +[32.97537240982085, "o", "l"] +[32.975400066376025, "o", "o"] +[32.97542796134978, "o", "a"] +[32.975456094742114, "o", "d"] +[32.97548446655303, "o", " "] +[32.9755121231082, "o", " "] +[32.97554001808196, "o", " "] +[32.97556815147429, "o", "T"] +[32.97559580802947, "o", "o"] +[32.97562370300322, "o", "t"] +[32.97565112113982, "o", "a"] +[32.975678777694995, "o", "l"] +[32.97570667266875, "o", " "] +[32.97573409080535, "o", " "] +[32.9757619857791, "o", " "] +[32.97578964233428, "o", "S"] +[32.975817060470874, "o", "p"] +[32.97584447860747, "o", "e"] +[32.975872135162646, "o", "n"] +[32.97589955329924, "o", "t"] +[32.97592935562163, "o", " "] +[32.97595677375823, "o", " "] +[32.9759844303134, "o", " "] +[32.97601184845, "o", " "] +[32.976039505005176, "o", "L"] +[32.97606716156035, "o", "e"] +[32.97609481811553, "o", "f"] +[32.9761224746707, "o", "t"] +[32.979892826080615, "o", " "] +[32.97993693351775, "o", " "] +[32.97996649742156, "o", "S"] +[32.97999463081389, "o", "p"] +[32.98002228736907, "o", "e"] +[32.98005018234282, "o", "e"] +[32.98007807731658, "o", "d"] +[32.98030195236235, "o", "\r\n"] +[32.9804166316989, "o", "\r"] +[32.980514144897754, "o", " "] +[32.98061809539824, "o", " "] +[32.98064265251189, "o", "0"] +[32.9806664943698, "o", " "] +[32.98069057464629, "o", " "] +[32.98071417808562, "o", " "] +[32.98073730468779, "o", " "] +[32.980760669708545, "o", " "] +[32.980784749985034, "o", "0"] +[32.98080883026152, "o", " "] +[32.98083267211943, "o", " "] +[32.98086009025603, "o", " "] +[32.98088345527678, "o", " "] +[32.98090729713469, "o", "0"] +[32.98093137741118, "o", " "] +[32.98095521926909, "o", " "] +[32.98097858428984, "o", " "] +[32.981001710892016, "o", " "] +[32.98102507591277, "o", " "] +[32.98104844093352, "o", "0"] +[32.98107228279143, "o", " "] +[32.98109612464934, "o", " "] +[32.98112020492583, "o", " "] +[32.98114404678374, "o", " "] +[32.98116765022307, "o", "0"] +[32.9811912536624, "o", " "] +[32.981214618683154, "o", " "] +[32.981238222122485, "o", " "] +[32.981261825561816, "o", " "] +[32.98128519058257, "o", " "] +[32.98131141662627, "o", "0"] +[32.98133597373992, "o", " "] +[32.98135957717925, "o", " "] +[32.98138341903716, "o", " "] +[32.98140678405791, "o", " "] +[32.98143038749724, "o", " "] +[32.98145422935515, "o", " "] +[32.9814775943759, "o", "0"] +[32.981501197815234, "o", " "] +[32.981524562835986, "o", " "] +[32.98154816627532, "o", " "] +[32.98157176971465, "o", " "] +[32.98159489631682, "o", " "] +[32.98161849975615, "o", " "] +[32.98164210319548, "o", "0"] +[32.98166594505339, "o", " "] +[32.98182854652434, "o", "-"] +[32.981854057312304, "o", "-"] +[32.981877899170215, "o", ":"] +[32.981901502609546, "o", "-"] +[32.98192510604888, "o", "-"] +[32.98194823265105, "o", ":"] +[32.9819715976718, "o", "-"] +[32.98199496269255, "o", "-"] +[32.982018566131885, "o", " "] +[32.982042169571216, "o", "-"] +[32.982066011429126, "o", "-"] +[32.98208961486846, "o", ":"] +[32.98211274147063, "o", "-"] +[32.98213610649138, "o", "-"] +[32.98215970993071, "o", ":"] +[32.982183313370044, "o", "-"] +[32.98220906257659, "o", "-"] +[32.9822329044345, "o", " "] +[32.982256984710986, "o", "-"] +[32.9823058605197, "o", "-"] +[32.98233041763335, "o", ":"] +[32.98235425949126, "o", "-"] +[32.98237786293059, "o", "-"] +[32.98240098953276, "o", ":"] +[32.982424831390674, "o", "-"] +[32.98244891166716, "o", "-"] +[32.98247275352507, "o", " "] +[32.98249683380156, "o", " "] +[32.98252043724089, "o", " "] +[32.982543563843066, "o", " "] +[32.9825671672824, "o", " "] +[32.98259077072173, "o", "0"] +[33.01703820228606, "o", "\r"] +[33.01740131378203, "o", "1"] +[33.01743636131316, "o", "0"] +[33.01747093200713, "o", "0"] +[33.017493343353564, "o", " "] +[33.017516708374316, "o", "1"] +[33.01753888130217, "o", "2"] +[33.017561769485766, "o", "0"] +[33.017583465576465, "o", "0"] +[33.01760540008574, "o", "0"] +[33.01762733459502, "o", " "] +[33.017649507522876, "o", " "] +[33.01767191886931, "o", " "] +[33.01769361496001, "o", " "] +[33.01771554946929, "o", "0"] +[33.01774058342009, "o", " "] +[33.017766809463794, "o", "1"] +[33.01778898239165, "o", "2"] +[33.01781115531951, "o", "0"] +[33.01783332824736, "o", "0"] +[33.01785550117522, "o", "0"] +[33.0178774356845, "o", " "] +[33.017899131775195, "o", " "] +[33.01792130470305, "o", " "] +[33.01794347763091, "o", " "] +[33.017981624603564, "o", "0"] +[33.018004989624316, "o", " "] +[33.018028831482226, "o", " "] +[33.01805243492156, "o", " "] +[33.01807556152373, "o", " "] +[33.01809892654448, "o", " "] +[33.01812252998381, "o", "0"] +[33.018148517608935, "o", " "] +[33.018172597885425, "o", " "] +[33.018196678161914, "o", " "] +[33.018220043182666, "o", "2"] +[33.018243646622, "o", "3"] +[33.01826725006133, "o", "4"] +[33.01829085350066, "o", "k"] +[33.01831469535857, "o", " "] +[33.0183382987979, "o", " "] +[33.01836214065581, "o", " "] +[33.01838598251372, "o", " "] +[33.01841006279021, "o", " "] +[33.01843342781096, "o", " "] +[33.01845726966887, "o", "0"] +[33.0184808731082, "o", " "] +[33.018504476547534, "o", "-"] +[33.018530702591235, "o", "-"] +[33.018554306030566, "o", ":"] +[33.018578147888476, "o", "-"] +[33.01860198974639, "o", "-"] +[33.01862559318572, "o", ":"] +[33.01864943504363, "o", "-"] +[33.01867303848296, "o", "-"] +[33.018697834015185, "o", " "] +[33.018721914291675, "o", "-"] +[33.018745517731006, "o", "-"] +[33.01876912117034, "o", ":"] +[33.01879272460967, "o", "-"] +[33.018816328049, "o", "-"] +[33.01883969306975, "o", ":"] +[33.01886353492766, "o", "-"] +[33.01888713836699, "o", "-"] +[33.018912887573535, "o", " "] +[33.018936967850024, "o", "-"] +[33.018960332870776, "o", "-"] +[33.01898393631011, "o", ":"] +[33.0190080165866, "o", "-"] +[33.01903162002593, "o", "-"] +[33.01905546188384, "o", ":"] +[33.01907906532317, "o", "-"] +[33.01910243034392, "o", "-"] +[33.01912627220183, "o", " "] +[33.01915011405974, "o", " "] +[33.01917371749907, "o", "2"] +[33.01919755935698, "o", "3"] +[33.019220924377734, "o", "4"] +[33.019244527817065, "o", "k"] +[33.0194951057437, "o", "\r\n"] +[33.02085480690032, "o", "{\"swagger\":\"2.0\",\"info\":{\"version\":\"8.0.0\",\"title\":\"PostgREST API\",\"description\":\"This is a dynamic API generated by PostgREST\"},\"host\":\"localhost:8080\",\"basePath\":\"/\",\"schemes\":[\"http\"],\"consumes\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"produces\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"paths\":{\"/\":{\"get\":{\"tags\":[\"Introspection\"],\"summary\":\"OpenAPI description (this document)\",\"produces\":[\"application/openapi+json\",\"application/json\"],\"responses\":{\""] +[33.02275381088286, "o", "200\":{\"description\":\"OK\"}}}},\"/rdu\":{\"get\":{\"tags\":[\"rdu\"],\"parameters\":[{\"$ref\":\"#/parameters/rowFilter.rdu.date\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemin\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemax\"},{\"$ref\":\"#/parameters/rowFilter.rdu.precipitation\"},{\"$ref\"\r\n"] +[33.05275381088286, "o", "\u001b[1m"] +[33.08275381088286, "o", "\u001b[36m"] +[33.112753810882865, "o", "\u001b[91m"] +[33.142753810882866, "o", "$"] +[33.17275381088287, "o", " "] +[33.20275381088287, "o", "\u001b[0m"] +[38.23275381088287, "o", "\u001b[H"] +[38.26275381088287, "o", "\u001b[J"] +[38.29275381088287, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get all rows in the table"] +[38.32275381088287, "o", "\r\n"] +[38.352753810882874, "o", "$"] +[38.382753810882875, "o", " "] +[38.412753810882876, "o", "c"] +[38.44275381088288, "o", "u"] +[38.47275381088288, "o", "r"] +[38.50275381088288, "o", "l"] +[38.53275381088288, "o", " "] +[38.56275381088288, "o", "h"] +[38.59275381088288, "o", "t"] +[38.622753810882884, "o", "t"] +[38.652753810882885, "o", "p"] +[38.682753810882886, "o", ":"] +[38.71275381088289, "o", "/"] +[38.74275381088289, "o", "/"] +[38.77275381088289, "o", "l"] +[38.80275381088289, "o", "o"] +[38.83275381088289, "o", "c"] +[38.86275381088289, "o", "a"] +[38.892753810882894, "o", "l"] +[38.922753810882895, "o", "h"] +[38.952753810882896, "o", "o"] +[38.9827538108829, "o", "s"] +[39.0127538108829, "o", "t"] +[39.0427538108829, "o", ":"] +[39.0727538108829, "o", "8"] +[39.1027538108829, "o", "0"] +[39.1327538108829, "o", "8"] +[39.162753810882904, "o", "0"] +[39.192753810882905, "o", "/"] +[39.22275381088291, "o", "r"] +[39.25275381088291, "o", "d"] +[39.28275381088291, "o", "u"] +[39.31275381088291, "o", " "] +[39.34275381088291, "o", "|"] +[39.37275381088291, "o", " "] +[39.40275381088291, "o", "w"] +[39.432753810882915, "o", "c"] +[39.462753810882916, "o", " "] +[39.49275381088292, "o", "-"] +[39.52275381088292, "o", "l"] +[39.55275381088292, "o", "\r\n"] +[39.58275381088292, "o", "\u001b[0m"] +[39.61275381088292, "o", "\r\n"] +[39.6289266967777, "o", " "] +[39.62896031379735, "o", " "] +[39.62898963928258, "o", "%"] +[39.629014434814806, "o", " "] +[39.629038515091295, "o", "T"] +[39.62907523155248, "o", "o"] +[39.62910598754918, "o", "t"] +[39.62913078308141, "o", "a"] +[39.62915462493932, "o", "l"] +[39.62917822837865, "o", " "] +[39.62920207023656, "o", " "] +[39.62922638893163, "o", " "] +[39.62924999237096, "o", " "] +[39.62927359581029, "o", "%"] +[39.62929672241246, "o", " "] +[39.629320087433214, "o", "R"] +[39.629343690872545, "o", "e"] +[39.6293670558933, "o", "c"] +[39.62939042091405, "o", "e"] +[39.62941402435338, "o", "i"] +[39.62943738937413, "o", "v"] +[39.629460515976305, "o", "e"] +[39.62948364257848, "o", "d"] +[39.62950676918065, "o", " "] +[39.629529657364245, "o", "%"] +[39.62955278396642, "o", " "] +[39.62957614898717, "o", "X"] +[39.62959951400792, "o", "f"] +[39.62962287902867, "o", "e"] +[39.629646244049425, "o", "r"] +[39.62966913223302, "o", "d"] +[39.62969249725377, "o", " "] +[39.629715623855944, "o", " "] +[39.62973851203954, "o", "A"] +[39.62976163864171, "o", "v"] +[39.62978476524388, "o", "e"] +[39.629808130264635, "o", "r"] +[39.629831733703966, "o", "a"] +[39.62985509872472, "o", "g"] +[39.62987822532689, "o", "e"] +[39.629901351929064, "o", " "] +[39.62992447853124, "o", "S"] +[39.62994784355199, "o", "p"] +[39.62997120857274, "o", "e"] +[39.62999457359349, "o", "e"] +[39.630017461777086, "o", "d"] +[39.63004058837926, "o", " "] +[39.63006609916722, "o", " "] +[39.630089464187975, "o", " "] +[39.63011259079015, "o", "T"] +[39.63013667106664, "o", "i"] +[39.63015979766881, "o", "m"] +[39.63018316268956, "o", "e"] +[39.630206050873156, "o", " "] +[39.63022893905675, "o", " "] +[39.6302523040775, "o", " "] +[39.630275430679674, "o", " "] +[39.63029831886327, "o", "T"] +[39.63032120704686, "o", "i"] +[39.630344333649035, "o", "m"] +[39.63036746025121, "o", "e"] +[39.63039058685338, "o", " "] +[39.63041371345555, "o", " "] +[39.630437316894884, "o", " "] +[39.630460681915636, "o", " "] +[39.63048357009923, "o", " "] +[39.63050693511998, "o", "T"] +[39.630530300140734, "o", "i"] +[39.63055342674291, "o", "m"] +[39.63057679176366, "o", "e"] +[39.63059991836583, "o", " "] +[39.63062328338658, "o", " "] +[39.630646648407335, "o", "C"] +[39.63067025184667, "o", "u"] +[39.630693855286, "o", "r"] +[39.63071745872533, "o", "r"] +[39.63074034690892, "o", "e"] +[39.630763711929674, "o", "n"] +[39.630787076950426, "o", "t"] +[39.63266438484227, "o", "\r\n"] +[39.632708492279406, "o", " "] +[39.63273400306737, "o", " "] +[39.63276237487828, "o", " "] +[39.63278621673619, "o", " "] +[39.6328100585941, "o", " "] +[39.632833662033434, "o", " "] +[39.63285678863561, "o", " "] +[39.63287991523778, "o", " "] +[39.63290328025853, "o", " "] +[39.632926168442125, "o", " "] +[39.6329492950443, "o", " "] +[39.63297242164647, "o", " "] +[39.632995548248644, "o", " "] +[39.63301867485082, "o", " "] +[39.63304180145299, "o", " "] +[39.63306516647374, "o", " "] +[39.633088293075915, "o", " "] +[39.63311261177098, "o", " "] +[39.633135738373156, "o", " "] +[39.63315910339391, "o", " "] +[39.6331819915775, "o", " "] +[39.63320535659825, "o", " "] +[39.633228483200426, "o", " "] +[39.63325184822118, "o", " "] +[39.63327497482335, "o", " "] +[39.633297863006945, "o", " "] +[39.6333212280277, "o", " "] +[39.63334459304845, "o", " "] +[39.6333679580692, "o", " "] +[39.633390846252794, "o", " "] +[39.63341635704076, "o", " "] +[39.63343948364293, "o", " "] +[39.633462610245104, "o", " "] +[39.633485975265856, "o", "D"] +[39.63350886344945, "o", "l"] +[39.63353199005162, "o", "o"] +[39.633555593490954, "o", "a"] +[39.633578958511706, "o", "d"] +[39.63360232353246, "o", " "] +[39.63362568855321, "o", " "] +[39.63364905357396, "o", "U"] +[39.633672180176134, "o", "p"] +[39.633695545196886, "o", "l"] +[39.63371891021764, "o", "o"] +[39.63374227523839, "o", "a"] +[39.63376564025914, "o", "d"] +[39.633788766861315, "o", " "] +[39.63381189346349, "o", " "] +[39.63383502006566, "o", " "] +[39.63385814666783, "o", "T"] +[39.633881511688585, "o", "o"] +[39.63390439987218, "o", "t"] +[39.63392752647435, "o", "a"] +[39.633950653076525, "o", "l"] +[39.6339737796787, "o", " "] +[39.63399690628087, "o", " "] +[39.6340205097202, "o", " "] +[39.634043636322374, "o", "S"] +[39.63406652450597, "o", "p"] +[39.63408988952672, "o", "e"] +[39.63411325454747, "o", "n"] +[39.634136619568224, "o", "t"] +[39.63416165351903, "o", " "] +[39.6341847801212, "o", " "] +[39.63420742988622, "o", " "] +[39.63423055648839, "o", " "] +[39.634253444671984, "o", "L"] +[39.634276809692736, "o", "e"] +[39.63432806968724, "o", "f"] +[39.63435238838231, "o", "t"] +[39.63437575340306, "o", " "] +[39.634399118423815, "o", " "] +[39.63442248344457, "o", "S"] +[39.63444561004674, "o", "p"] +[39.63446849823033, "o", "e"] +[39.634491863251085, "o", "e"] +[39.63451522827184, "o", "d"] +[39.64029902458226, "o", "\r\n"] +[39.64034790039098, "o", "\r"] +[39.64052194595372, "o", " "] +[39.6405496025089, "o", " "] +[39.64057368278539, "o", "0"] +[39.64059728622472, "o", " "] +[39.64062136650121, "o", " "] +[39.64064473152196, "o", " "] +[39.64066833496129, "o", " "] +[39.64069146156346, "o", " "] +[39.64071434974706, "o", "0"] +[39.64073771476781, "o", " "] +[39.6407606029514, "o", " "] +[39.640784206390734, "o", " "] +[39.640807571411486, "o", " "] +[39.64083069801366, "o", "0"] +[39.64085477829015, "o", " "] +[39.64087838172948, "o", " "] +[39.64090150833165, "o", " "] +[39.640924873352404, "o", " "] +[39.64094799995458, "o", " "] +[39.64097112655675, "o", "0"] +[39.64099425315892, "o", " "] +[39.641017618179674, "o", " "] +[39.641041221619005, "o", " "] +[39.64106434822118, "o", " "] +[39.64108747482335, "o", "0"] +[39.641110601425524, "o", " "] +[39.641133966446276, "o", " "] +[39.64115661621129, "o", " "] +[39.64118069648778, "o", " "] +[39.64120382308995, "o", " "] +[39.641229810715075, "o", "0"] +[39.641253652572985, "o", " "] +[39.641277256012316, "o", " "] +[39.64130085945165, "o", " "] +[39.64132398605382, "o", " "] +[39.64134687423741, "o", " "] +[39.641370239258165, "o", " "] +[39.64139360427892, "o", "0"] +[39.64141649246251, "o", " "] +[39.64143985748326, "o", " "] +[39.641463222504015, "o", " "] +[39.64148634910619, "o", " "] +[39.64150947570836, "o", " "] +[39.641532602310534, "o", " "] +[39.641555967331286, "o", "0"] +[39.64157909393346, "o", " "] +[39.64160508155858, "o", "-"] +[39.64162868499791, "o", "-"] +[39.64165205001866, "o", ":"] +[39.64167493820226, "o", "-"] +[39.64169782638585, "o", "-"] +[39.641720952988024, "o", ":"] +[39.6417440795902, "o", "-"] +[39.64176720619237, "o", "-"] +[39.64179057121312, "o", " "] +[39.64181417465245, "o", "-"] +[39.641837301254625, "o", "-"] +[39.6418604278568, "o", ":"] +[39.64188355445897, "o", "-"] +[39.64190691947972, "o", "-"] +[39.641930284500475, "o", ":"] +[39.64195341110265, "o", "-"] +[39.64197916030919, "o", "-"] +[39.64200276374852, "o", " "] +[39.64202660560643, "o", "-"] +[39.642049970627184, "o", "-"] +[39.642073335647936, "o", ":"] +[39.642097177505846, "o", "-"] +[39.6421205425266, "o", "-"] +[39.64214366912877, "o", ":"] +[39.642166795730944, "o", "-"] +[39.64218968391454, "o", "-"] +[39.64221304893529, "o", " "] +[39.64223641395604, "o", " "] +[39.642259302139635, "o", " "] +[39.64228242874181, "o", " "] +[39.64230579376256, "o", " "] +[39.642328681946154, "o", "0"] +[39.73984331131017, "o", "\r"] +[39.74024099350011, "o", "1"] +[39.74027508735692, "o", "0"] +[39.74029964447057, "o", "0"] +[39.7403232479099, "o", " "] +[39.74034756660497, "o", "2"] +[39.74037164688146, "o", "2"] +[39.74039453506505, "o", "9"] +[39.74041813850438, "o", "2"] +[39.74044150352513, "o", "k"] +[39.740464868545885, "o", " "] +[39.74048942565953, "o", " "] +[39.74051326751744, "o", " "] +[39.74053758621251, "o", " "] +[39.74056118965184, "o", "0"] +[39.74058479309117, "o", " "] +[39.74061268806493, "o", "2"] +[39.74063629150426, "o", "2"] +[39.74065965652501, "o", "9"] +[39.740682783127184, "o", "2"] +[39.740706148147936, "o", "k"] +[39.74072951316869, "o", " "] +[39.74075263977086, "o", " "] +[39.74077624321019, "o", " "] +[39.740799369812365, "o", " "] +[39.740822973251696, "o", "0"] +[39.740846815109606, "o", " "] +[39.74087041854894, "o", " "] +[39.74089378356969, "o", " "] +[39.74091691017186, "o", " "] +[39.740940275192614, "o", " "] +[39.740963640213366, "o", "0"] +[39.74098986625707, "o", " "] +[39.7410134696964, "o", " "] +[39.74103731155431, "o", "2"] +[39.74106043815648, "o", "0"] +[39.74108380317723, "o", "."] +[39.741107168197985, "o", "1"] +[39.741130771637316, "o", "M"] +[39.74115413665807, "o", " "] +[39.74117702484166, "o", " "] +[39.74120062828099, "o", " "] +[39.74122590065038, "o", " "] +[39.74124926567113, "o", " "] +[39.7412723922733, "o", " "] +[39.741295757294054, "o", "0"] +[39.741319122314806, "o", " "] +[39.74134534835851, "o", "-"] +[39.74137157440221, "o", "-"] +[39.74139493942296, "o", ":"] +[39.74141830444371, "o", "-"] +[39.74144262313878, "o", "-"] +[39.741465749740954, "o", ":"] +[39.741489114761706, "o", "-"] +[39.74151224136388, "o", "-"] +[39.74153560638463, "o", " "] +[39.74155944824254, "o", "-"] +[39.74158257484471, "o", "-"] +[39.741605701446886, "o", ":"] +[39.74162882804906, "o", "-"] +[39.74165219306981, "o", "-"] +[39.74167555809056, "o", ":"] +[39.741698923111315, "o", "-"] +[39.74172204971349, "o", "-"] +[39.74174756050145, "o", " "] +[39.74177116394078, "o", "-"] +[39.741794528961535, "o", "-"] +[39.74181765556371, "o", ":"] +[39.74184102058446, "o", "-"] +[39.74186414718663, "o", "-"] +[39.741887512207384, "o", ":"] +[39.741910877228136, "o", "-"] +[39.74193400383031, "o", "-"] +[39.74195736885106, "o", " "] +[39.74198097229039, "o", "2"] +[39.742003860473986, "o", "0"] +[39.74202698707616, "o", "."] +[39.74205059051549, "o", "1"] +[39.74207395553624, "o", "M"] +[39.743785085678454, "o", "\r\n"] +[39.74498456954991, "o", "4632"] +[39.74747413635289, "o", "\r\n"] +[39.77747413635289, "o", "\u001b[1m"] +[39.807474136352894, "o", "\u001b[36m"] +[39.837474136352895, "o", "\u001b[91m"] +[39.8674741363529, "o", "$"] +[39.8974741363529, "o", " "] +[39.9274741363529, "o", "\u001b[0m"] +[44.9574741363529, "o", "\u001b[H"] +[44.9874741363529, "o", "\u001b[J"] +[45.0174741363529, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a query selecting one row"] +[45.0474741363529, "o", "\r\n"] +[45.077474136352905, "o", "$"] +[45.107474136352906, "o", " "] +[45.13747413635291, "o", "c"] +[45.16747413635291, "o", "u"] +[45.19747413635291, "o", "r"] +[45.22747413635291, "o", "l"] +[45.25747413635291, "o", " "] +[45.28747413635291, "o", "\""] +[45.317474136352914, "o", "h"] +[45.347474136352915, "o", "t"] +[45.377474136352916, "o", "t"] +[45.40747413635292, "o", "p"] +[45.43747413635292, "o", ":"] +[45.46747413635292, "o", "/"] +[45.49747413635292, "o", "/"] +[45.52747413635292, "o", "l"] +[45.55747413635292, "o", "o"] +[45.587474136352924, "o", "c"] +[45.617474136352925, "o", "a"] +[45.647474136352926, "o", "l"] +[45.67747413635293, "o", "h"] +[45.70747413635293, "o", "o"] +[45.73747413635293, "o", "s"] +[45.76747413635293, "o", "t"] +[45.79747413635293, "o", ":"] +[45.82747413635293, "o", "8"] +[45.857474136352934, "o", "0"] +[45.887474136352935, "o", "8"] +[45.917474136352936, "o", "0"] +[45.94747413635294, "o", "/"] +[45.97747413635294, "o", "r"] +[46.00747413635294, "o", "d"] +[46.03747413635294, "o", "u"] +[46.06747413635294, "o", "?"] +[46.09747413635294, "o", "d"] +[46.127474136352944, "o", "a"] +[46.157474136352945, "o", "t"] +[46.18747413635295, "o", "e"] +[46.21747413635295, "o", "="] +[46.24747413635295, "o", "e"] +[46.27747413635295, "o", "q"] +[46.30747413635295, "o", "."] +[46.33747413635295, "o", "2"] +[46.36747413635295, "o", "0"] +[46.397474136352955, "o", "1"] +[46.427474136352956, "o", "2"] +[46.45747413635296, "o", "-"] +[46.48747413635296, "o", "1"] +[46.51747413635296, "o", "2"] +[46.54747413635296, "o", "-"] +[46.57747413635296, "o", "2"] +[46.60747413635296, "o", "6"] +[46.637474136352964, "o", "&"] +[46.667474136352965, "o", "s"] +[46.697474136352966, "o", "e"] +[46.72747413635297, "o", "l"] +[46.75747413635297, "o", "e"] +[46.78747413635297, "o", "c"] +[46.81747413635297, "o", "t"] +[46.84747413635297, "o", "="] +[46.87747413635297, "o", "d"] +[46.907474136352974, "o", "a"] +[46.937474136352975, "o", "t"] +[46.967474136352976, "o", "e"] +[46.99747413635298, "o", ","] +[47.02747413635298, "o", "t"] +[47.05747413635298, "o", "e"] +[47.08747413635298, "o", "m"] +[47.11747413635298, "o", "p"] +[47.14747413635298, "o", "e"] +[47.177474136352984, "o", "r"] +[47.207474136352985, "o", "a"] +[47.237474136352986, "o", "t"] +[47.26747413635299, "o", "u"] +[47.29747413635299, "o", "r"] +[47.32747413635299, "o", "e"] +[47.35747413635299, "o", "m"] +[47.38747413635299, "o", "i"] +[47.41747413635299, "o", "n"] +[47.447474136352994, "o", ","] +[47.477474136352996, "o", "t"] +[47.507474136353, "o", "e"] +[47.537474136353, "o", "m"] +[47.567474136353, "o", "p"] +[47.597474136353, "o", "e"] +[47.627474136353, "o", "r"] +[47.657474136353, "o", "a"] +[47.687474136353, "o", "t"] +[47.717474136353005, "o", "u"] +[47.747474136353006, "o", "r"] +[47.77747413635301, "o", "e"] +[47.80747413635301, "o", "m"] +[47.83747413635301, "o", "a"] +[47.86747413635301, "o", "x"] +[47.89747413635301, "o", ","] +[47.92747413635301, "o", "p"] +[47.957474136353014, "o", "r"] +[47.987474136353015, "o", "e"] +[48.017474136353016, "o", "c"] +[48.04747413635302, "o", "i"] +[48.07747413635302, "o", "p"] +[48.10747413635302, "o", "i"] +[48.13747413635302, "o", "t"] +[48.16747413635302, "o", "a"] +[48.19747413635302, "o", "t"] +[48.227474136353024, "o", "i"] +[48.257474136353025, "o", "o"] +[48.287474136353026, "o", "n"] +[48.31747413635303, "o", "\""] +[48.34747413635303, "o", "\r\n"] +[48.37747413635303, "o", "\u001b[0m"] +[48.40747413635303, "o", "\r\n"] +[48.422137117386356, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.41}]"] +[48.45213711738636, "o", "\u001b[1m"] +[48.48213711738636, "o", "\u001b[36m"] +[48.51213711738636, "o", "\u001b[91m"] +[48.54213711738636, "o", "$"] +[48.57213711738636, "o", " "] +[48.60213711738636, "o", "\u001b[0m"] +[53.632137117386364, "o", "\u001b[H"] +[53.662137117386365, "o", "\u001b[J"] +[53.692137117386366, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run the query against the new version of the dataset."] +[53.72213711738637, "o", "\r\n"] +[53.75213711738637, "o", "$ # This time, use layered querying that queries fragments directly without checkout,\r\n"] +[53.78213711738637, "o", "$ # downloading them if they're not local. This is seamless to PostgREST or any other application.\r\n"] +[53.81213711738637, "o", "$"] +[53.84213711738637, "o", " "] +[53.87213711738637, "o", "s"] +[53.902137117386374, "o", "g"] +[53.932137117386375, "o", "r"] +[53.962137117386376, "o", " "] +[53.99213711738638, "o", "c"] +[54.02213711738638, "o", "h"] +[54.05213711738638, "o", "e"] +[54.08213711738638, "o", "c"] +[54.11213711738638, "o", "k"] +[54.14213711738638, "o", "o"] +[54.172137117386384, "o", "u"] +[54.202137117386386, "o", "t"] +[54.23213711738639, "o", " "] +[54.26213711738639, "o", "-"] +[54.29213711738639, "o", "-"] +[54.32213711738639, "o", "l"] +[54.35213711738639, "o", "a"] +[54.38213711738639, "o", "y"] +[54.41213711738639, "o", "e"] +[54.442137117386395, "o", "r"] +[54.472137117386396, "o", "e"] +[54.5021371173864, "o", "d"] +[54.5321371173864, "o", " "] +[54.5621371173864, "o", "d"] +[54.5921371173864, "o", "e"] +[54.6221371173864, "o", "m"] +[54.6521371173864, "o", "o"] +[54.682137117386404, "o", "/"] +[54.712137117386405, "o", "w"] +[54.742137117386406, "o", "e"] +[54.77213711738641, "o", "a"] +[54.80213711738641, "o", "t"] +[54.83213711738641, "o", "h"] +[54.86213711738641, "o", "e"] +[54.89213711738641, "o", "r"] +[54.92213711738641, "o", ":"] +[54.952137117386414, "o", "r"] +[54.982137117386415, "o", "e"] +[55.012137117386416, "o", "v"] +[55.04213711738642, "o", "i"] +[55.07213711738642, "o", "s"] +[55.10213711738642, "o", "e"] +[55.13213711738642, "o", "d"] +[55.16213711738642, "o", "_"] +[55.19213711738642, "o", "d"] +[55.222137117386424, "o", "a"] +[55.252137117386425, "o", "t"] +[55.282137117386426, "o", "a"] +[55.31213711738643, "o", "\r\n"] +[55.34213711738643, "o", "$"] +[55.37213711738643, "o", " "] +[55.40213711738643, "o", "c"] +[55.43213711738643, "o", "u"] +[55.46213711738643, "o", "r"] +[55.492137117386434, "o", "l"] +[55.522137117386436, "o", " "] +[55.55213711738644, "o", "\""] +[55.58213711738644, "o", "h"] +[55.61213711738644, "o", "t"] +[55.64213711738644, "o", "t"] +[55.67213711738644, "o", "p"] +[55.70213711738644, "o", ":"] +[55.73213711738644, "o", "/"] +[55.762137117386445, "o", "/"] +[55.792137117386446, "o", "l"] +[55.82213711738645, "o", "o"] +[55.85213711738645, "o", "c"] +[55.88213711738645, "o", "a"] +[55.91213711738645, "o", "l"] +[55.94213711738645, "o", "h"] +[55.97213711738645, "o", "o"] +[56.002137117386454, "o", "s"] +[56.032137117386455, "o", "t"] +[56.062137117386456, "o", ":"] +[56.09213711738646, "o", "8"] +[56.12213711738646, "o", "0"] +[56.15213711738646, "o", "8"] +[56.18213711738646, "o", "0"] +[56.21213711738646, "o", "/"] +[56.24213711738646, "o", "r"] +[56.272137117386464, "o", "d"] +[56.302137117386465, "o", "u"] +[56.332137117386466, "o", "?"] +[56.36213711738647, "o", "d"] +[56.39213711738647, "o", "a"] +[56.42213711738647, "o", "t"] +[56.45213711738647, "o", "e"] +[56.48213711738647, "o", "="] +[56.51213711738647, "o", "e"] +[56.542137117386474, "o", "q"] +[56.572137117386475, "o", "."] +[56.60213711738648, "o", "2"] +[56.63213711738648, "o", "0"] +[56.66213711738648, "o", "1"] +[56.69213711738648, "o", "2"] +[56.72213711738648, "o", "-"] +[56.75213711738648, "o", "1"] +[56.78213711738648, "o", "2"] +[56.812137117386484, "o", "-"] +[56.842137117386486, "o", "2"] +[56.87213711738649, "o", "6"] +[56.90213711738649, "o", "&"] +[56.93213711738649, "o", "s"] +[56.96213711738649, "o", "e"] +[56.99213711738649, "o", "l"] +[57.02213711738649, "o", "e"] +[57.05213711738649, "o", "c"] +[57.082137117386495, "o", "t"] +[57.112137117386496, "o", "="] +[57.1421371173865, "o", "d"] +[57.1721371173865, "o", "a"] +[57.2021371173865, "o", "t"] +[57.2321371173865, "o", "e"] +[57.2621371173865, "o", ","] +[57.2921371173865, "o", "t"] +[57.322137117386504, "o", "e"] +[57.352137117386505, "o", "m"] +[57.382137117386506, "o", "p"] +[57.41213711738651, "o", "e"] +[57.44213711738651, "o", "r"] +[57.47213711738651, "o", "a"] +[57.50213711738651, "o", "t"] +[57.53213711738651, "o", "u"] +[57.56213711738651, "o", "r"] +[57.592137117386514, "o", "e"] +[57.622137117386515, "o", "m"] +[57.652137117386516, "o", "i"] +[57.68213711738652, "o", "n"] +[57.71213711738652, "o", ","] +[57.74213711738652, "o", "t"] +[57.77213711738652, "o", "e"] +[57.80213711738652, "o", "m"] +[57.83213711738652, "o", "p"] +[57.862137117386524, "o", "e"] +[57.892137117386525, "o", "r"] +[57.92213711738653, "o", "a"] +[57.95213711738653, "o", "t"] +[57.98213711738653, "o", "u"] +[58.01213711738653, "o", "r"] +[58.04213711738653, "o", "e"] +[58.07213711738653, "o", "m"] +[58.10213711738653, "o", "a"] +[58.132137117386534, "o", "x"] +[58.162137117386536, "o", ","] +[58.19213711738654, "o", "p"] +[58.22213711738654, "o", "r"] +[58.25213711738654, "o", "e"] +[58.28213711738654, "o", "c"] +[58.31213711738654, "o", "i"] +[58.34213711738654, "o", "p"] +[58.37213711738654, "o", "i"] +[58.402137117386545, "o", "t"] +[58.432137117386546, "o", "a"] +[58.46213711738655, "o", "t"] +[58.49213711738655, "o", "i"] +[58.52213711738655, "o", "o"] +[58.55213711738655, "o", "n"] +[58.58213711738655, "o", "\""] +[58.61213711738655, "o", "\r\n"] +[58.642137117386554, "o", "\u001b[0m"] +[58.672137117386555, "o", "\r\n"] +[59.45724115371773, "o", "Checked out demo/weather:741a820f9d66.\r\n"] +[59.93034563064644, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.692}]"] +[59.960345630646444, "o", "\u001b[1m"] +[59.990345630646445, "o", "\u001b[36m"] +[60.020345630646446, "o", "\u001b[91m"] +[60.05034563064645, "o", "$"] +[60.08034563064645, "o", " "] +[60.11034563064645, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.17/push-to-other-engine.cast b/content/casts/versioned/archive/v0.2.17/push-to-other-engine.cast new file mode 100644 index 00000000..514df99e --- /dev/null +++ b/content/casts/versioned/archive/v0.2.17/push-to-other-engine.cast @@ -0,0 +1,923 @@ +{"version": 2, "width": 100, "height": 28, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1634247189, "metadata": {"tss": [{"h": "The .sgconfig file is written from the point of view of the first engine.", "ts": 0.06}, {"h": "Initialize the two engines", "ts": 9.559999999999999}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 23.060000000000002}, {"h": "Push the dataset out to the other engine", "ts": 36.337998056412005}, {"h": "Check that the dataset exists on the remote engine", "ts": 44.636100120544796}, {"h": "Update the dataset on the local engine", "ts": 51.86205809593244}, {"h": "Inspect our changes", "ts": 63.51634988784855}, {"h": "Push the changes out to the remote engine", "ts": 71.25634988784861}, {"h": "Inspect the dataset on the remote engine", "ts": 78.49397494316179}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The .sgconfig file is written from the point of view of the first engine."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Here, the first engine is local and default and the second one is remote.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "c"] +[0.27, "o", "a"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "."] +[0.3900000000000001, "o", "s"] +[0.42000000000000015, "o", "g"] +[0.4500000000000002, "o", "c"] +[0.4800000000000002, "o", "o"] +[0.5100000000000002, "o", "n"] +[0.5400000000000003, "o", "f"] +[0.5700000000000003, "o", "i"] +[0.6000000000000003, "o", "g"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "\u001b[0m"] +[0.6900000000000004, "o", "\r\n"] +[0.6918539428710941, "o", "[defaults]"] +[0.6927425289154057, "o", "\r\n"] +[0.6927699470520023, "o", "SG_LOGLEVEL=INFO"] +[0.6927823448181156, "o", "\r\n"] +[0.6927935504913334, "o", "SG_ENGINE_HOST=localhost"] +[0.6928035640716557, "o", "\r\n"] +[0.6928140544891361, "o", "SG_ENGINE_PORT=5432"] +[0.6928240680694584, "o", "\r\n"] +[0.6928393268585209, "o", "SG_ENGINE_USER=sgr"] +[0.6928495788574223, "o", "\r\n"] +[0.6928614997863773, "o", "SG_ENGINE_PWD=supersecure"] +[0.6928715133666996, "o", "\r\n"] +[0.6928815269470219, "o", "\r\n"] +[0.6928932094573979, "o", "[remote: engine_2]"] +[0.6929032230377201, "o", "\r\n"] +[0.6929132366180424, "o", "SG_ENGINE_ADMIN_USER=sgr"] +[0.6929232501983646, "o", "\r\n"] +[0.6929351711273197, "o", "SG_ENGINE_ADMIN_PWD=supersecure"] +[0.6929449462890629, "o", "\r\n"] +[0.6929549598693852, "o", "SG_ENGINE_POSTGRES_DB_NAME=splitgraph"] +[0.6929649734497074, "o", "\r\n"] +[0.6929792785644535, "o", "SG_ENGINE_HOST=localhost"] +[0.6929895305633549, "o", "\r\n"] +[0.6930012130737309, "o", "SG_ENGINE_PORT=5431"] +[0.6930112266540531, "o", "\r\n"] +[0.6930231475830082, "o", "SG_ENGINE_USER=sgr"] +[0.6930331611633305, "o", "\r\n"] +[0.6930448436737064, "o", "SG_ENGINE_PWD=supersecure"] +[0.6930548572540287, "o", "\r\n"] +[0.6930663013458256, "o", "SG_ENGINE_DB_NAME=splitgraph"] +[0.7230663013458256, "o", "\u001b[1m"] +[0.7530663013458256, "o", "\u001b[36m"] +[0.7830663013458257, "o", "\u001b[91m"] +[0.8130663013458257, "o", "$"] +[0.8430663013458257, "o", " "] +[0.8730663013458257, "o", "\u001b[0m"] +[9.53, "o", "\u001b[H"] +[9.559999999999999, "o", "\u001b[J"] +[9.589999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the two engines"] +[9.619999999999997, "o", "\r\n"] +[9.649999999999997, "o", "$"] +[9.679999999999996, "o", " "] +[9.709999999999996, "o", "s"] +[9.739999999999995, "o", "g"] +[9.769999999999994, "o", "r"] +[9.799999999999994, "o", " "] +[9.829999999999993, "o", "i"] +[9.859999999999992, "o", "n"] +[9.889999999999992, "o", "i"] +[9.919999999999991, "o", "t"] +[9.94999999999999, "o", "\r\n"] +[9.97999999999999, "o", "$"] +[10.00999999999999, "o", " "] +[10.039999999999988, "o", "S"] +[10.069999999999988, "o", "G"] +[10.099999999999987, "o", "_"] +[10.129999999999987, "o", "E"] +[10.159999999999986, "o", "N"] +[10.189999999999985, "o", "G"] +[10.219999999999985, "o", "I"] +[10.249999999999984, "o", "N"] +[10.279999999999983, "o", "E"] +[10.309999999999983, "o", "="] +[10.339999999999982, "o", "e"] +[10.369999999999981, "o", "n"] +[10.39999999999998, "o", "g"] +[10.42999999999998, "o", "i"] +[10.45999999999998, "o", "n"] +[10.489999999999979, "o", "e"] +[10.519999999999978, "o", "_"] +[10.549999999999978, "o", "2"] +[10.579999999999977, "o", " "] +[10.609999999999976, "o", "s"] +[10.639999999999976, "o", "g"] +[10.669999999999975, "o", "r"] +[10.699999999999974, "o", " "] +[10.729999999999974, "o", "i"] +[10.759999999999973, "o", "n"] +[10.789999999999973, "o", "i"] +[10.819999999999972, "o", "t"] +[10.849999999999971, "o", "\r\n"] +[10.87999999999997, "o", "\u001b[0m"] +[10.90999999999997, "o", "\r\n"] +[11.66230097770688, "o", "Initializing engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph)..."] +[11.662359628677338, "o", "\r\n"] +[11.67130986213681, "o", "Waiting for connection...."] +[11.671377811431855, "o", "\r\n"] +[12.671377811431855, "o", "Database splitgraph already exists, skipping"] +[12.671482238769501, "o", "\r\n"] +[12.671942863464325, "o", "Ensuring the metadata schema at splitgraph_meta exists..."] +[12.671960506439179, "o", "\r\n"] +[12.684744987487763, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.708693895339936, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.710496816635102, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.727571640014618, "o", "Running splitgraph_meta--0.0.3--0.0.4.sql\r\n"] +[12.734357986450165, "o", "Installing Splitgraph API functions...\r\n"] +[12.77486530303952, "o", "Installing CStore management functions...\r\n"] +[12.778585586547822, "o", "Installing the audit trigger...\r\n"] +[12.791587505340546, "o", "Engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph) initialized."] +[12.791616830825776, "o", "\r\n"] +[13.14478388786313, "o", "Initializing engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph)...\r\n"] +[13.155965242385834, "o", "Database splitgraph already exists, skipping\r\n"] +[13.156052742004364, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[13.163376007080048, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[13.190271053314179, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[13.19152608871457, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[13.206136856079072, "o", "Running splitgraph_meta--0.0.3--0.0.4.sql\r\n"] +[13.211674842834443, "o", "Installing Splitgraph API functions...\r\n"] +[13.249356899261445, "o", "Installing CStore management functions...\r\n"] +[13.252530488967865, "o", "Installing the audit trigger...\r\n"] +[13.265355978012055, "o", "Engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph) initialized.\r\n"] +[13.295355978012054, "o", "\u001b[1m"] +[13.325355978012054, "o", "\u001b[36m"] +[13.355355978012053, "o", "\u001b[91m"] +[13.385355978012052, "o", "$"] +[13.415355978012052, "o", " "] +[13.445355978012051, "o", "\u001b[0m"] +[23.03, "o", "\u001b[H"] +[23.060000000000002, "o", "\u001b[J"] +[23.090000000000003, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[23.120000000000005, "o", "\r\n"] +[23.150000000000006, "o", "$"] +[23.180000000000007, "o", " "] +[23.210000000000008, "o", "s"] +[23.24000000000001, "o", "g"] +[23.27000000000001, "o", "r"] +[23.30000000000001, "o", " "] +[23.330000000000013, "o", "i"] +[23.360000000000014, "o", "n"] +[23.390000000000015, "o", "i"] +[23.420000000000016, "o", "t"] +[23.450000000000017, "o", " "] +[23.480000000000018, "o", "d"] +[23.51000000000002, "o", "e"] +[23.54000000000002, "o", "m"] +[23.57000000000002, "o", "o"] +[23.600000000000023, "o", "/"] +[23.630000000000024, "o", "w"] +[23.660000000000025, "o", "e"] +[23.690000000000026, "o", "a"] +[23.720000000000027, "o", "t"] +[23.75000000000003, "o", "h"] +[23.78000000000003, "o", "e"] +[23.81000000000003, "o", "r"] +[23.840000000000032, "o", "\r\n"] +[23.870000000000033, "o", "$"] +[23.900000000000034, "o", " "] +[23.930000000000035, "o", "s"] +[23.960000000000036, "o", "g"] +[23.990000000000038, "o", "r"] +[24.02000000000004, "o", " "] +[24.05000000000004, "o", "c"] +[24.08000000000004, "o", "s"] +[24.110000000000042, "o", "v"] +[24.140000000000043, "o", " "] +[24.170000000000044, "o", "i"] +[24.200000000000045, "o", "m"] +[24.230000000000047, "o", "p"] +[24.260000000000048, "o", "o"] +[24.29000000000005, "o", "r"] +[24.32000000000005, "o", "t"] +[24.35000000000005, "o", " "] +[24.380000000000052, "o", "-"] +[24.410000000000053, "o", "f"] +[24.440000000000055, "o", " "] +[24.470000000000056, "o", "."] +[24.500000000000057, "o", "."] +[24.530000000000058, "o", "/"] +[24.56000000000006, "o", "i"] +[24.59000000000006, "o", "m"] +[24.62000000000006, "o", "p"] +[24.650000000000063, "o", "o"] +[24.680000000000064, "o", "r"] +[24.710000000000065, "o", "t"] +[24.740000000000066, "o", "-"] +[24.770000000000067, "o", "f"] +[24.800000000000068, "o", "r"] +[24.83000000000007, "o", "o"] +[24.86000000000007, "o", "m"] +[24.89000000000007, "o", "-"] +[24.920000000000073, "o", "c"] +[24.950000000000074, "o", "s"] +[24.980000000000075, "o", "v"] +[25.010000000000076, "o", "/"] +[25.040000000000077, "o", "r"] +[25.07000000000008, "o", "d"] +[25.10000000000008, "o", "u"] +[25.13000000000008, "o", "-"] +[25.160000000000082, "o", "w"] +[25.190000000000083, "o", "e"] +[25.220000000000084, "o", "a"] +[25.250000000000085, "o", "t"] +[25.280000000000086, "o", "h"] +[25.310000000000088, "o", "e"] +[25.34000000000009, "o", "r"] +[25.37000000000009, "o", "-"] +[25.40000000000009, "o", "h"] +[25.430000000000092, "o", "i"] +[25.460000000000093, "o", "s"] +[25.490000000000094, "o", "t"] +[25.520000000000095, "o", "o"] +[25.550000000000097, "o", "r"] +[25.580000000000098, "o", "y"] +[25.6100000000001, "o", "."] +[25.6400000000001, "o", "c"] +[25.6700000000001, "o", "s"] +[25.700000000000102, "o", "v"] +[25.730000000000103, "o", " "] +[25.760000000000105, "o", "\\"] +[25.790000000000106, "o", "\r\n "] +[25.820000000000107, "o", "-"] +[25.850000000000108, "o", "k"] +[25.88000000000011, "o", " "] +[25.91000000000011, "o", "d"] +[25.94000000000011, "o", "a"] +[25.970000000000113, "o", "t"] +[26.000000000000114, "o", "e"] +[26.030000000000115, "o", " "] +[26.060000000000116, "o", "\\"] +[26.090000000000117, "o", "\r\n "] +[26.12000000000012, "o", "-"] +[26.15000000000012, "o", "t"] +[26.18000000000012, "o", " "] +[26.21000000000012, "o", "d"] +[26.240000000000123, "o", "a"] +[26.270000000000124, "o", "t"] +[26.300000000000125, "o", "e"] +[26.330000000000126, "o", " "] +[26.360000000000127, "o", "t"] +[26.39000000000013, "o", "i"] +[26.42000000000013, "o", "m"] +[26.45000000000013, "o", "e"] +[26.480000000000132, "o", "s"] +[26.510000000000133, "o", "t"] +[26.540000000000134, "o", "a"] +[26.570000000000135, "o", "m"] +[26.600000000000136, "o", "p"] +[26.630000000000138, "o", " "] +[26.66000000000014, "o", "\\"] +[26.69000000000014, "o", "\r\n "] +[26.72000000000014, "o", "-"] +[26.750000000000142, "o", "-"] +[26.780000000000143, "o", "s"] +[26.810000000000144, "o", "e"] +[26.840000000000146, "o", "p"] +[26.870000000000147, "o", "a"] +[26.900000000000148, "o", "r"] +[26.93000000000015, "o", "a"] +[26.96000000000015, "o", "t"] +[26.99000000000015, "o", "o"] +[27.020000000000152, "o", "r"] +[27.050000000000153, "o", " "] +[27.080000000000155, "o", "\""] +[27.110000000000156, "o", ";"] +[27.140000000000157, "o", "\""] +[27.170000000000158, "o", " "] +[27.20000000000016, "o", "\\"] +[27.23000000000016, "o", "\r\n "] +[27.26000000000016, "o", "d"] +[27.290000000000163, "o", "e"] +[27.320000000000164, "o", "m"] +[27.350000000000165, "o", "o"] +[27.380000000000166, "o", "/"] +[27.410000000000167, "o", "w"] +[27.44000000000017, "o", "e"] +[27.47000000000017, "o", "a"] +[27.50000000000017, "o", "t"] +[27.53000000000017, "o", "h"] +[27.560000000000173, "o", "e"] +[27.590000000000174, "o", "r"] +[27.620000000000175, "o", " "] +[27.650000000000176, "o", "r"] +[27.680000000000177, "o", "d"] +[27.71000000000018, "o", "u"] +[27.74000000000018, "o", "\r\n"] +[27.77000000000018, "o", "$"] +[27.800000000000182, "o", " "] +[27.830000000000183, "o", "s"] +[27.860000000000184, "o", "g"] +[27.890000000000185, "o", "r"] +[27.920000000000186, "o", " "] +[27.950000000000188, "o", "c"] +[27.98000000000019, "o", "o"] +[28.01000000000019, "o", "m"] +[28.04000000000019, "o", "m"] +[28.070000000000192, "o", "i"] +[28.100000000000193, "o", "t"] +[28.130000000000194, "o", " "] +[28.160000000000196, "o", "d"] +[28.190000000000197, "o", "e"] +[28.220000000000198, "o", "m"] +[28.2500000000002, "o", "o"] +[28.2800000000002, "o", "/"] +[28.3100000000002, "o", "w"] +[28.340000000000202, "o", "e"] +[28.370000000000203, "o", "a"] +[28.400000000000205, "o", "t"] +[28.430000000000206, "o", "h"] +[28.460000000000207, "o", "e"] +[28.490000000000208, "o", "r"] +[28.52000000000021, "o", "\r\n"] +[28.55000000000021, "o", "$"] +[28.58000000000021, "o", " "] +[28.610000000000213, "o", "s"] +[28.640000000000214, "o", "g"] +[28.670000000000215, "o", "r"] +[28.700000000000216, "o", " "] +[28.730000000000217, "o", "t"] +[28.76000000000022, "o", "a"] +[28.79000000000022, "o", "g"] +[28.82000000000022, "o", " "] +[28.85000000000022, "o", "d"] +[28.880000000000223, "o", "e"] +[28.910000000000224, "o", "m"] +[28.940000000000225, "o", "o"] +[28.970000000000226, "o", "/"] +[29.000000000000227, "o", "w"] +[29.03000000000023, "o", "e"] +[29.06000000000023, "o", "a"] +[29.09000000000023, "o", "t"] +[29.120000000000232, "o", "h"] +[29.150000000000233, "o", "e"] +[29.180000000000234, "o", "r"] +[29.210000000000235, "o", " "] +[29.240000000000236, "o", "i"] +[29.270000000000238, "o", "n"] +[29.30000000000024, "o", "i"] +[29.33000000000024, "o", "t"] +[29.36000000000024, "o", "i"] +[29.390000000000242, "o", "a"] +[29.420000000000243, "o", "l"] +[29.450000000000244, "o", "_"] +[29.480000000000246, "o", "d"] +[29.510000000000247, "o", "a"] +[29.540000000000248, "o", "t"] +[29.57000000000025, "o", "a"] +[29.60000000000025, "o", "\r\n"] +[29.63000000000025, "o", "\u001b[0m"] +[29.660000000000252, "o", "\r\n"] +[30.06956234931971, "o", "Initialized empty repository demo/weather\r\n"] +[30.458988819122567, "o", "Committing demo/weather...\r\n"] +[30.48075858116175, "o", "Processing table rdu\r\n"] +[30.70232406616236, "o", "Committed demo/weather as cda8ce74f7f7.\r\n"] +[31.097998056411996, "o", "Tagged demo/weather:cda8ce74f7f702dbdd1af4efd18f02e327b446f41ce81028d040ebc990ad7134 with initial_data.\r\n"] +[31.127998056411997, "o", "\u001b[1m"] +[31.157998056411998, "o", "\u001b[36m"] +[31.187998056412, "o", "\u001b[91m"] +[31.217998056412, "o", "$"] +[31.247998056412, "o", " "] +[31.277998056412002, "o", "\u001b[0m"] +[36.307998056412, "o", "\u001b[H"] +[36.337998056412005, "o", "\u001b[J"] +[36.367998056412006, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset out to the other engine"] +[36.39799805641201, "o", "\r\n"] +[36.42799805641201, "o", "$ # Since by default Splitgraph is configured to use S3 for uploading, we need\r\n"] +[36.45799805641201, "o", "$ # to override the upload handler and upload data to the actual database.\r\n"] +[36.48799805641201, "o", "$"] +[36.51799805641201, "o", " "] +[36.54799805641201, "o", "s"] +[36.577998056412014, "o", "g"] +[36.607998056412015, "o", "r"] +[36.637998056412016, "o", " "] +[36.66799805641202, "o", "p"] +[36.69799805641202, "o", "u"] +[36.72799805641202, "o", "s"] +[36.75799805641202, "o", "h"] +[36.78799805641202, "o", " "] +[36.81799805641202, "o", "d"] +[36.847998056412024, "o", "e"] +[36.877998056412025, "o", "m"] +[36.907998056412026, "o", "o"] +[36.93799805641203, "o", "/"] +[36.96799805641203, "o", "w"] +[36.99799805641203, "o", "e"] +[37.02799805641203, "o", "a"] +[37.05799805641203, "o", "t"] +[37.08799805641203, "o", "h"] +[37.117998056412034, "o", "e"] +[37.147998056412035, "o", "r"] +[37.17799805641204, "o", " "] +[37.20799805641204, "o", "-"] +[37.23799805641204, "o", "-"] +[37.26799805641204, "o", "r"] +[37.29799805641204, "o", "e"] +[37.32799805641204, "o", "m"] +[37.35799805641204, "o", "o"] +[37.387998056412044, "o", "t"] +[37.417998056412046, "o", "e"] +[37.44799805641205, "o", " "] +[37.47799805641205, "o", "e"] +[37.50799805641205, "o", "n"] +[37.53799805641205, "o", "g"] +[37.56799805641205, "o", "i"] +[37.59799805641205, "o", "n"] +[37.62799805641205, "o", "e"] +[37.657998056412055, "o", "_"] +[37.687998056412056, "o", "2"] +[37.71799805641206, "o", " "] +[37.74799805641206, "o", "d"] +[37.77799805641206, "o", "e"] +[37.80799805641206, "o", "m"] +[37.83799805641206, "o", "o"] +[37.86799805641206, "o", "/"] +[37.897998056412064, "o", "w"] +[37.927998056412065, "o", "e"] +[37.957998056412066, "o", "a"] +[37.98799805641207, "o", "t"] +[38.01799805641207, "o", "h"] +[38.04799805641207, "o", "e"] +[38.07799805641207, "o", "r"] +[38.10799805641207, "o", " "] +[38.13799805641207, "o", "-"] +[38.167998056412074, "o", "-"] +[38.197998056412075, "o", "u"] +[38.227998056412076, "o", "p"] +[38.25799805641208, "o", "l"] +[38.28799805641208, "o", "o"] +[38.31799805641208, "o", "a"] +[38.34799805641208, "o", "d"] +[38.37799805641208, "o", "-"] +[38.40799805641208, "o", "h"] +[38.437998056412084, "o", "a"] +[38.467998056412085, "o", "n"] +[38.49799805641209, "o", "d"] +[38.52799805641209, "o", "l"] +[38.55799805641209, "o", "e"] +[38.58799805641209, "o", "r"] +[38.61799805641209, "o", " "] +[38.64799805641209, "o", "D"] +[38.67799805641209, "o", "B"] +[38.707998056412094, "o", "\r\n"] +[38.737998056412096, "o", "\u001b[0m"] +[38.7679980564121, "o", "\r\n"] +[39.1203716564182, "o", "Pushing demo/weather to demo/weather on remote engine_2\r\n"] +[39.12039025306737, "o", "Gathering remote metadata...\r\n"] +[39.187304811478015, "o", "Uploading 1 object, total size 113.04 KiB\r\n"] +[39.19247205734288, "o", "\r 0%| | 0/1 [00:00 21678ec1cca5\r\n"] +[25.012411079406863, "o", "\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[25.018484315872318, "o", "Executing SQL...\r\n"] +[25.22513028144849, "o", "Committing demo/summary...\r\n"] +[25.247493944168216, "o", "Processing table monthly_summary\r\n"] +[25.351469717025882, "o", " ---> 42020a284e8f\r\n"] +[25.35486145973218, "o", "Successfully built demo/summary:42020a284e8f."] +[25.354902467727786, "o", "\r\n"] +[25.75227733612073, "o", "Tagged demo/summary:42020a284e8f3562d4312174201803b79a7f0055e042a34489f96272d3bbcc08 with based_on_initial.\r\n"] +[25.782277336120732, "o", "\u001b[1m"] +[25.812277336120733, "o", "\u001b[36m"] +[25.842277336120734, "o", "\u001b[91m"] +[25.872277336120735, "o", "$"] +[25.902277336120736, "o", " "] +[25.932277336120737, "o", "\u001b[0m"] +[30.96227733612074, "o", "\u001b[H"] +[30.99227733612074, "o", "\u001b[J"] +[31.02227733612074, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Much like with Docker, the build result is cached, so running build again checks out the existing image."] +[31.052277336120742, "o", "\r\n"] +[31.082277336120743, "o", "$"] +[31.112277336120744, "o", " "] +[31.142277336120745, "o", "s"] +[31.172277336120747, "o", "g"] +[31.202277336120748, "o", "r"] +[31.23227733612075, "o", " "] +[31.26227733612075, "o", "b"] +[31.29227733612075, "o", "u"] +[31.322277336120752, "o", "i"] +[31.352277336120753, "o", "l"] +[31.382277336120755, "o", "d"] +[31.412277336120756, "o", " "] +[31.442277336120757, "o", "r"] +[31.472277336120758, "o", "d"] +[31.50227733612076, "o", "u"] +[31.53227733612076, "o", "-"] +[31.56227733612076, "o", "w"] +[31.592277336120762, "o", "e"] +[31.622277336120764, "o", "a"] +[31.652277336120765, "o", "t"] +[31.682277336120766, "o", "h"] +[31.712277336120767, "o", "e"] +[31.742277336120768, "o", "r"] +[31.77227733612077, "o", "-"] +[31.80227733612077, "o", "s"] +[31.83227733612077, "o", "u"] +[31.862277336120773, "o", "m"] +[31.892277336120774, "o", "m"] +[31.922277336120775, "o", "a"] +[31.952277336120776, "o", "r"] +[31.982277336120777, "o", "y"] +[32.012277336120775, "o", "."] +[32.042277336120776, "o", "s"] +[32.07227733612078, "o", "p"] +[32.10227733612078, "o", "l"] +[32.13227733612078, "o", "i"] +[32.16227733612078, "o", "t"] +[32.19227733612078, "o", "f"] +[32.22227733612078, "o", "i"] +[32.252277336120784, "o", "l"] +[32.282277336120785, "o", "e"] +[32.312277336120786, "o", " "] +[32.34227733612079, "o", "-"] +[32.37227733612079, "o", "o"] +[32.40227733612079, "o", " "] +[32.43227733612079, "o", "d"] +[32.46227733612079, "o", "e"] +[32.49227733612079, "o", "m"] +[32.522277336120794, "o", "o"] +[32.552277336120795, "o", "/"] +[32.5822773361208, "o", "s"] +[32.6122773361208, "o", "u"] +[32.6422773361208, "o", "m"] +[32.6722773361208, "o", "m"] +[32.7022773361208, "o", "a"] +[32.7322773361208, "o", "r"] +[32.7622773361208, "o", "y"] +[32.792277336120804, "o", "\r\n"] +[32.822277336120806, "o", "\u001b[0m"] +[32.85227733612081, "o", "\r\n"] +[33.249717292785846, "o", "Executing Splitfile rdu-weather-summary.splitfile with arguments {}\r\n"] +[33.33856969833394, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather IMPORT rdu AS source_data\u001b[0m\r\n"] +[33.339696941375934, "o", "Resolving repository demo/weather\r\n"] +[33.47829752922078, "o", " ---> Using cache\r\n"] +[33.47833233833333, "o", " ---> 21678ec1cca5\r\n\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[33.70671897888204, "o", " ---> Using cache\r\n"] +[33.70682459831258, "o", " ---> 42020a284e8f\r\n"] +[33.70999341964742, "o", "Successfully built demo/summary:42020a284e8f.\r\n"] +[33.73999341964742, "o", "\u001b[1m"] +[33.76999341964742, "o", "\u001b[36m"] +[33.79999341964742, "o", "\u001b[91m"] +[33.82999341964742, "o", "$"] +[33.859993419647424, "o", " "] +[33.889993419647425, "o", "\u001b[0m"] +[38.919993419647426, "o", "\u001b[H"] +[38.94999341964743, "o", "\u001b[J"] +[38.97999341964743, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the new dataset"] +[39.00999341964743, "o", "\r\n"] +[39.03999341964743, "o", "$"] +[39.06999341964743, "o", " "] +[39.09999341964743, "o", "s"] +[39.129993419647434, "o", "g"] +[39.159993419647435, "o", "r"] +[39.189993419647436, "o", " "] +[39.21999341964744, "o", "s"] +[39.24999341964744, "o", "h"] +[39.27999341964744, "o", "o"] +[39.30999341964744, "o", "w"] +[39.33999341964744, "o", " "] +[39.36999341964744, "o", "d"] +[39.399993419647444, "o", "e"] +[39.429993419647445, "o", "m"] +[39.459993419647446, "o", "o"] +[39.48999341964745, "o", "/"] +[39.51999341964745, "o", "s"] +[39.54999341964745, "o", "u"] +[39.57999341964745, "o", "m"] +[39.60999341964745, "o", "m"] +[39.63999341964745, "o", "a"] +[39.669993419647454, "o", "r"] +[39.699993419647456, "o", "y"] +[39.72999341964746, "o", ":"] +[39.75999341964746, "o", "b"] +[39.78999341964746, "o", "a"] +[39.81999341964746, "o", "s"] +[39.84999341964746, "o", "e"] +[39.87999341964746, "o", "d"] +[39.90999341964746, "o", "_"] +[39.939993419647465, "o", "o"] +[39.969993419647466, "o", "n"] +[39.99999341964747, "o", "_"] +[40.02999341964747, "o", "i"] +[40.05999341964747, "o", "n"] +[40.08999341964747, "o", "i"] +[40.11999341964747, "o", "t"] +[40.14999341964747, "o", "i"] +[40.179993419647474, "o", "a"] +[40.209993419647475, "o", "l"] +[40.239993419647476, "o", "\r\n"] +[40.26999341964748, "o", "$"] +[40.29999341964748, "o", " "] +[40.32999341964748, "o", "s"] +[40.35999341964748, "o", "g"] +[40.38999341964748, "o", "r"] +[40.41999341964748, "o", " "] +[40.449993419647484, "o", "t"] +[40.479993419647485, "o", "a"] +[40.509993419647486, "o", "b"] +[40.53999341964749, "o", "l"] +[40.56999341964749, "o", "e"] +[40.59999341964749, "o", " "] +[40.62999341964749, "o", "d"] +[40.65999341964749, "o", "e"] +[40.68999341964749, "o", "m"] +[40.719993419647494, "o", "o"] +[40.749993419647495, "o", "/"] +[40.7799934196475, "o", "s"] +[40.8099934196475, "o", "u"] +[40.8399934196475, "o", "m"] +[40.8699934196475, "o", "m"] +[40.8999934196475, "o", "a"] +[40.9299934196475, "o", "r"] +[40.9599934196475, "o", "y"] +[40.989993419647504, "o", ":"] +[41.019993419647506, "o", "b"] +[41.04999341964751, "o", "a"] +[41.07999341964751, "o", "s"] +[41.10999341964751, "o", "e"] +[41.13999341964751, "o", "d"] +[41.16999341964751, "o", "_"] +[41.19999341964751, "o", "o"] +[41.22999341964751, "o", "n"] +[41.259993419647515, "o", "_"] +[41.289993419647516, "o", "i"] +[41.31999341964752, "o", "n"] +[41.34999341964752, "o", "i"] +[41.37999341964752, "o", "t"] +[41.40999341964752, "o", "i"] +[41.43999341964752, "o", "a"] +[41.46999341964752, "o", "l"] +[41.499993419647524, "o", " "] +[41.529993419647525, "o", "m"] +[41.559993419647526, "o", "o"] +[41.58999341964753, "o", "n"] +[41.61999341964753, "o", "t"] +[41.64999341964753, "o", "h"] +[41.67999341964753, "o", "l"] +[41.70999341964753, "o", "y"] +[41.73999341964753, "o", "_"] +[41.769993419647534, "o", "s"] +[41.799993419647535, "o", "u"] +[41.829993419647536, "o", "m"] +[41.85999341964754, "o", "m"] +[41.88999341964754, "o", "a"] +[41.91999341964754, "o", "r"] +[41.94999341964754, "o", "y"] +[41.97999341964754, "o", "\r\n"] +[42.00999341964754, "o", "$"] +[42.039993419647544, "o", " "] +[42.069993419647545, "o", "s"] +[42.09999341964755, "o", "g"] +[42.12999341964755, "o", "r"] +[42.15999341964755, "o", " "] +[42.18999341964755, "o", "s"] +[42.21999341964755, "o", "q"] +[42.24999341964755, "o", "l"] +[42.27999341964755, "o", " "] +[42.309993419647554, "o", "-"] +[42.339993419647556, "o", "s"] +[42.36999341964756, "o", " "] +[42.39999341964756, "o", "d"] +[42.42999341964756, "o", "e"] +[42.45999341964756, "o", "m"] +[42.48999341964756, "o", "o"] +[42.51999341964756, "o", "/"] +[42.54999341964756, "o", "s"] +[42.579993419647565, "o", "u"] +[42.609993419647566, "o", "m"] +[42.63999341964757, "o", "m"] +[42.66999341964757, "o", "a"] +[42.69999341964757, "o", "r"] +[42.72999341964757, "o", "y"] +[42.75999341964757, "o", " "] +[42.78999341964757, "o", "\""] +[42.819993419647574, "o", "S"] +[42.849993419647575, "o", "E"] +[42.879993419647576, "o", "L"] +[42.90999341964758, "o", "E"] +[42.93999341964758, "o", "C"] +[42.96999341964758, "o", "T"] +[42.99999341964758, "o", " "] +[43.02999341964758, "o", "*"] +[43.05999341964758, "o", " "] +[43.089993419647584, "o", "F"] +[43.119993419647585, "o", "R"] +[43.149993419647586, "o", "O"] +[43.17999341964759, "o", "M"] +[43.20999341964759, "o", " "] +[43.23999341964759, "o", "m"] +[43.26999341964759, "o", "o"] +[43.29999341964759, "o", "n"] +[43.32999341964759, "o", "t"] +[43.359993419647594, "o", "h"] +[43.389993419647595, "o", "l"] +[43.4199934196476, "o", "y"] +[43.4499934196476, "o", "_"] +[43.4799934196476, "o", "s"] +[43.5099934196476, "o", "u"] +[43.5399934196476, "o", "m"] +[43.5699934196476, "o", "m"] +[43.5999934196476, "o", "a"] +[43.629993419647604, "o", "r"] +[43.659993419647606, "o", "y"] +[43.68999341964761, "o", " "] +[43.71999341964761, "o", "O"] +[43.74999341964761, "o", "R"] +[43.77999341964761, "o", "D"] +[43.80999341964761, "o", "E"] +[43.83999341964761, "o", "R"] +[43.869993419647614, "o", " "] +[43.899993419647615, "o", "B"] +[43.929993419647616, "o", "Y"] +[43.95999341964762, "o", " "] +[43.98999341964762, "o", "m"] +[44.01999341964762, "o", "o"] +[44.04999341964762, "o", "n"] +[44.07999341964762, "o", "t"] +[44.10999341964762, "o", "h"] +[44.139993419647624, "o", " "] +[44.169993419647625, "o", "D"] +[44.199993419647626, "o", "E"] +[44.22999341964763, "o", "S"] +[44.25999341964763, "o", "C"] +[44.28999341964763, "o", " "] +[44.31999341964763, "o", "L"] +[44.34999341964763, "o", "I"] +[44.37999341964763, "o", "M"] +[44.409993419647634, "o", "I"] +[44.439993419647635, "o", "T"] +[44.469993419647636, "o", " "] +[44.49999341964764, "o", "5"] +[44.52999341964764, "o", "\""] +[44.55999341964764, "o", "\r\n"] +[44.58999341964764, "o", "\u001b[0m"] +[44.61999341964764, "o", "\r\n"] +[45.01940176010174, "o", "Image demo/summary:42020a284e8f3562d4312174201803b79a7f0055e042a34489f96272d3bbcc08\r\nCREATE TABLE monthly_summary AS ( SELECT to_char(date, 'YYYYMM') AS month, AVG(precipitation) AS average_precipitation, AVG(snowfall) AS average_snowfall FROM source_data GROUP BY month ORDER BY month ASC)\r\nCreated at 2021-10-14T21:34:18.232052\r\n"] +[45.021622867584654, "o", "Size: 115.21 KiB\r\nParent: 21678ec1cca5607168243390870b3f580a8135eb9352b96f1363c5665f4cca4a\r\n\r\n"] +[45.02207777023358, "o", "Tables:"] +[45.022208662033506, "o", "\r\n"] +[45.02304026603741, "o", " monthly_summary"] +[45.02307745933575, "o", "\r\n"] +[45.02332994461102, "o", " source_data"] +[45.02335712432904, "o", "\r\n"] +[45.441005916595884, "o", "Table demo/summary:42020a284e8f3562d4312174201803b79a7f0055e042a34489f96272d3bbcc08/monthly_summary\r\n"] +[45.44101855278058, "o", "\r\n"] +[45.44270250320477, "o", "Size: 2.17 KiB\r\n"] +[45.44387290000958, "o", "Rows: 153\r\n"] +[45.44404861450238, "o", "Columns: \r\n month (text)\r\n average_precipitation (numeric)\r\n average_snowfall (numeric)\r\n\r\n"] +[45.444463224411436, "o", "Objects: \r\n"] +[45.44457408905072, "o", " o5e29c3cf82603335df66690a448ca1f604f0002d5a3496b18c982a5ea835f3\r\n"] +[45.83859869957013, "o", "201909 0.171667 0\r\n201908 0.139032 0\r\n201907 0.117097 0\r\n201906 0.12 0\r\n201905 0.103548 0\r\n"] +[45.86859869957013, "o", "\u001b[1m"] +[45.89859869957013, "o", "\u001b[36m"] +[45.92859869957013, "o", "\u001b[91m"] +[45.95859869957013, "o", "$"] +[45.98859869957013, "o", " "] +[46.018598699570134, "o", "\u001b[0m"] +[53.919993419647426, "o", "\u001b[H"] +[53.94999341964743, "o", "\u001b[J"] +[53.97999341964743, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image's provenance (generated from its metadata)"] +[54.00999341964743, "o", "\r\n"] +[54.03999341964743, "o", "$"] +[54.06999341964743, "o", " "] +[54.09999341964743, "o", "s"] +[54.129993419647434, "o", "g"] +[54.159993419647435, "o", "r"] +[54.189993419647436, "o", " "] +[54.21999341964744, "o", "p"] +[54.24999341964744, "o", "r"] +[54.27999341964744, "o", "o"] +[54.30999341964744, "o", "v"] +[54.33999341964744, "o", "e"] +[54.36999341964744, "o", "n"] +[54.399993419647444, "o", "a"] +[54.429993419647445, "o", "n"] +[54.459993419647446, "o", "c"] +[54.48999341964745, "o", "e"] +[54.51999341964745, "o", " "] +[54.54999341964745, "o", "d"] +[54.57999341964745, "o", "e"] +[54.60999341964745, "o", "m"] +[54.63999341964745, "o", "o"] +[54.669993419647454, "o", "/"] +[54.699993419647456, "o", "s"] +[54.72999341964746, "o", "u"] +[54.75999341964746, "o", "m"] +[54.78999341964746, "o", "m"] +[54.81999341964746, "o", "a"] +[54.84999341964746, "o", "r"] +[54.87999341964746, "o", "y"] +[54.90999341964746, "o", "\r\n"] +[54.939993419647465, "o", "$"] +[54.969993419647466, "o", " "] +[54.99999341964747, "o", "s"] +[55.02999341964747, "o", "g"] +[55.05999341964747, "o", "r"] +[55.08999341964747, "o", " "] +[55.11999341964747, "o", "p"] +[55.14999341964747, "o", "r"] +[55.179993419647474, "o", "o"] +[55.209993419647475, "o", "v"] +[55.239993419647476, "o", "e"] +[55.26999341964748, "o", "n"] +[55.29999341964748, "o", "a"] +[55.32999341964748, "o", "n"] +[55.35999341964748, "o", "c"] +[55.38999341964748, "o", "e"] +[55.41999341964748, "o", " "] +[55.449993419647484, "o", "-"] +[55.479993419647485, "o", "-"] +[55.509993419647486, "o", "f"] +[55.53999341964749, "o", "u"] +[55.56999341964749, "o", "l"] +[55.59999341964749, "o", "l"] +[55.62999341964749, "o", " "] +[55.65999341964749, "o", "d"] +[55.68999341964749, "o", "e"] +[55.719993419647494, "o", "m"] +[55.749993419647495, "o", "o"] +[55.7799934196475, "o", "/"] +[55.8099934196475, "o", "s"] +[55.8399934196475, "o", "u"] +[55.8699934196475, "o", "m"] +[55.8999934196475, "o", "m"] +[55.9299934196475, "o", "a"] +[55.9599934196475, "o", "r"] +[55.989993419647504, "o", "y"] +[56.019993419647506, "o", "\r\n"] +[56.04999341964751, "o", "\u001b[0m"] +[56.07999341964751, "o", "\r\n"] +[56.474315814972215, "o", "demo/summary:42020a284e8f3562d4312174201803b79a7f0055e042a34489f96272d3bbcc08 depends on:\r\n"] +[56.474339418411546, "o", "demo/weather:a6e65d93ae091d48aa70b338c344f1f73de615f13a46db7be26a99639671a105\r\n"] +[56.8695146369937, "o", "# Splitfile commands used to recreate demo/summary:42020a284e8f3562d4312174201803b79a7f0055e042a34489f96272d3bbcc08\r\n"] +[56.86953490257292, "o", "FROM demo/weather:a6e65d93ae091d48aa70b338c344f1f73de615f13a46db7be26a99639671a105 IMPORT rdu AS source_data\r\nSQL {CREATE TABLE monthly_summary\r\n AS SELECT to_char(date, 'YYYYMM') AS month\r\n , avg(precipitation) AS average_precipitation\r\n , avg(snowfall) AS average_snowfall\r\n FROM source_data\r\n GROUP BY month\r\n ORDER BY month ASC}\r\n"] +[56.899534902572924, "o", "\u001b[1m"] +[56.929534902572925, "o", "\u001b[36m"] +[56.959534902572926, "o", "\u001b[91m"] +[56.98953490257293, "o", "$"] +[57.01953490257293, "o", " "] +[57.04953490257293, "o", "\u001b[0m"] +[62.07953490257293, "o", "\u001b[H"] +[62.10953490257293, "o", "\u001b[J"] +[62.13953490257293, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We can also see that a new image has been derived from demo/weather"] +[62.169534902572934, "o", "\r\n"] +[62.199534902572935, "o", "$"] +[62.22953490257294, "o", " "] +[62.25953490257294, "o", "s"] +[62.28953490257294, "o", "g"] +[62.31953490257294, "o", "r"] +[62.34953490257294, "o", " "] +[62.37953490257294, "o", "d"] +[62.40953490257294, "o", "e"] +[62.439534902572944, "o", "p"] +[62.469534902572946, "o", "e"] +[62.49953490257295, "o", "n"] +[62.52953490257295, "o", "d"] +[62.55953490257295, "o", "e"] +[62.58953490257295, "o", "n"] +[62.61953490257295, "o", "t"] +[62.64953490257295, "o", "s"] +[62.679534902572954, "o", " "] +[62.709534902572955, "o", "d"] +[62.739534902572956, "o", "e"] +[62.76953490257296, "o", "m"] +[62.79953490257296, "o", "o"] +[62.82953490257296, "o", "/"] +[62.85953490257296, "o", "w"] +[62.88953490257296, "o", "e"] +[62.91953490257296, "o", "a"] +[62.949534902572964, "o", "t"] +[62.979534902572965, "o", "h"] +[63.009534902572966, "o", "e"] +[63.03953490257297, "o", "r"] +[63.06953490257297, "o", "\r\n"] +[63.09953490257297, "o", "\u001b[0m"] +[63.12953490257297, "o", "\r\n"] +[63.52843088150058, "o", "demo/weather:a6e65d93ae091d48aa70b338c344f1f73de615f13a46db7be26a99639671a105 is depended on by:\r\n"] +[63.528446617126804, "o", "demo/summary:42020a284e8f3562d4312174201803b79a7f0055e042a34489f96272d3bbcc08\r\n"] +[63.558446617126805, "o", "\u001b[1m"] +[63.588446617126806, "o", "\u001b[36m"] +[63.61844661712681, "o", "\u001b[91m"] +[63.64844661712681, "o", "$"] +[63.67844661712681, "o", " "] +[63.70844661712681, "o", "\u001b[0m"] +[68.73844661712681, "o", "\u001b[H"] +[68.76844661712681, "o", "\u001b[J"] +[68.79844661712681, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now pretend there's been a revision to the source historical weather data"] +[68.82844661712681, "o", "\r\n"] +[68.85844661712682, "o", "$"] +[68.88844661712682, "o", " "] +[68.91844661712682, "o", "s"] +[68.94844661712682, "o", "g"] +[68.97844661712682, "o", "r"] +[69.00844661712682, "o", " "] +[69.03844661712682, "o", "s"] +[69.06844661712682, "o", "q"] +[69.09844661712683, "o", "l"] +[69.12844661712683, "o", " "] +[69.15844661712683, "o", "-"] +[69.18844661712683, "o", "s"] +[69.21844661712683, "o", " "] +[69.24844661712683, "o", "d"] +[69.27844661712683, "o", "e"] +[69.30844661712683, "o", "m"] +[69.33844661712683, "o", "o"] +[69.36844661712684, "o", "/"] +[69.39844661712684, "o", "w"] +[69.42844661712684, "o", "e"] +[69.45844661712684, "o", "a"] +[69.48844661712684, "o", "t"] +[69.51844661712684, "o", "h"] +[69.54844661712684, "o", "e"] +[69.57844661712684, "o", "r"] +[69.60844661712684, "o", " "] +[69.63844661712685, "o", "\""] +[69.66844661712685, "o", "U"] +[69.69844661712685, "o", "P"] +[69.72844661712685, "o", "D"] +[69.75844661712685, "o", "A"] +[69.78844661712685, "o", "T"] +[69.81844661712685, "o", "E"] +[69.84844661712685, "o", " "] +[69.87844661712685, "o", "r"] +[69.90844661712686, "o", "d"] +[69.93844661712686, "o", "u"] +[69.96844661712686, "o", " "] +[69.99844661712686, "o", "S"] +[70.02844661712686, "o", "E"] +[70.05844661712686, "o", "T"] +[70.08844661712686, "o", " "] +[70.11844661712686, "o", "p"] +[70.14844661712687, "o", "r"] +[70.17844661712687, "o", "e"] +[70.20844661712687, "o", "c"] +[70.23844661712687, "o", "i"] +[70.26844661712687, "o", "p"] +[70.29844661712687, "o", "i"] +[70.32844661712687, "o", "t"] +[70.35844661712687, "o", "a"] +[70.38844661712687, "o", "t"] +[70.41844661712688, "o", "i"] +[70.44844661712688, "o", "o"] +[70.47844661712688, "o", "n"] +[70.50844661712688, "o", " "] +[70.53844661712688, "o", "="] +[70.56844661712688, "o", " "] +[70.59844661712688, "o", "p"] +[70.62844661712688, "o", "r"] +[70.65844661712688, "o", "e"] +[70.68844661712689, "o", "c"] +[70.71844661712689, "o", "i"] +[70.74844661712689, "o", "p"] +[70.77844661712689, "o", "i"] +[70.80844661712689, "o", "t"] +[70.83844661712689, "o", "a"] +[70.86844661712689, "o", "t"] +[70.8984466171269, "o", "i"] +[70.9284466171269, "o", "o"] +[70.9584466171269, "o", "n"] +[70.9884466171269, "o", " "] +[71.0184466171269, "o", "*"] +[71.0484466171269, "o", " "] +[71.0784466171269, "o", "1"] +[71.1084466171269, "o", "."] +[71.1384466171269, "o", "2"] +[71.1684466171269, "o", " "] +[71.1984466171269, "o", "W"] +[71.2284466171269, "o", "H"] +[71.2584466171269, "o", "E"] +[71.28844661712691, "o", "R"] +[71.31844661712691, "o", "E"] +[71.34844661712691, "o", " "] +[71.37844661712691, "o", "E"] +[71.40844661712691, "o", "X"] +[71.43844661712691, "o", "T"] +[71.46844661712692, "o", "R"] +[71.49844661712692, "o", "A"] +[71.52844661712692, "o", "C"] +[71.55844661712692, "o", "T"] +[71.58844661712692, "o", " "] +[71.61844661712692, "o", "("] +[71.64844661712692, "o", "y"] +[71.67844661712692, "o", "e"] +[71.70844661712692, "o", "a"] +[71.73844661712693, "o", "r"] +[71.76844661712693, "o", " "] +[71.79844661712693, "o", "F"] +[71.82844661712693, "o", "R"] +[71.85844661712693, "o", "O"] +[71.88844661712693, "o", "M"] +[71.91844661712693, "o", " "] +[71.94844661712693, "o", "d"] +[71.97844661712693, "o", "a"] +[72.00844661712694, "o", "t"] +[72.03844661712694, "o", "e"] +[72.06844661712694, "o", ")"] +[72.09844661712694, "o", " "] +[72.12844661712694, "o", "="] +[72.15844661712694, "o", " "] +[72.18844661712694, "o", "2"] +[72.21844661712694, "o", "0"] +[72.24844661712694, "o", "1"] +[72.27844661712695, "o", "2"] +[72.30844661712695, "o", "\""] +[72.33844661712695, "o", "\r\n"] +[72.36844661712695, "o", "$"] +[72.39844661712695, "o", " "] +[72.42844661712695, "o", "s"] +[72.45844661712695, "o", "g"] +[72.48844661712695, "o", "r"] +[72.51844661712695, "o", " "] +[72.54844661712696, "o", "c"] +[72.57844661712696, "o", "o"] +[72.60844661712696, "o", "m"] +[72.63844661712696, "o", "m"] +[72.66844661712696, "o", "i"] +[72.69844661712696, "o", "t"] +[72.72844661712696, "o", " "] +[72.75844661712696, "o", "-"] +[72.78844661712697, "o", "m"] +[72.81844661712697, "o", " "] +[72.84844661712697, "o", "\""] +[72.87844661712697, "o", "R"] +[72.90844661712697, "o", "e"] +[72.93844661712697, "o", "v"] +[72.96844661712697, "o", "i"] +[72.99844661712697, "o", "s"] +[73.02844661712697, "o", "i"] +[73.05844661712698, "o", "o"] +[73.08844661712698, "o", "n"] +[73.11844661712698, "o", " "] +[73.14844661712698, "o", "t"] +[73.17844661712698, "o", "o"] +[73.20844661712698, "o", " "] +[73.23844661712698, "o", "t"] +[73.26844661712698, "o", "h"] +[73.29844661712698, "o", "e"] +[73.32844661712699, "o", " "] +[73.35844661712699, "o", "2"] +[73.38844661712699, "o", "0"] +[73.41844661712699, "o", "1"] +[73.44844661712699, "o", "2"] +[73.47844661712699, "o", " "] +[73.50844661712699, "o", "r"] +[73.538446617127, "o", "a"] +[73.568446617127, "o", "i"] +[73.598446617127, "o", "n"] +[73.628446617127, "o", "f"] +[73.658446617127, "o", "a"] +[73.688446617127, "o", "l"] +[73.718446617127, "o", "l"] +[73.748446617127, "o", " "] +[73.778446617127, "o", "d"] +[73.808446617127, "o", "a"] +[73.838446617127, "o", "t"] +[73.868446617127, "o", "a"] +[73.89844661712701, "o", "\""] +[73.92844661712701, "o", " "] +[73.95844661712701, "o", "d"] +[73.98844661712701, "o", "e"] +[74.01844661712701, "o", "m"] +[74.04844661712701, "o", "o"] +[74.07844661712701, "o", "/"] +[74.10844661712702, "o", "w"] +[74.13844661712702, "o", "e"] +[74.16844661712702, "o", "a"] +[74.19844661712702, "o", "t"] +[74.22844661712702, "o", "h"] +[74.25844661712702, "o", "e"] +[74.28844661712702, "o", "r"] +[74.31844661712702, "o", "\r\n"] +[74.34844661712702, "o", "$"] +[74.37844661712703, "o", " "] +[74.40844661712703, "o", "s"] +[74.43844661712703, "o", "g"] +[74.46844661712703, "o", "r"] +[74.49844661712703, "o", " "] +[74.52844661712703, "o", "t"] +[74.55844661712703, "o", "a"] +[74.58844661712703, "o", "g"] +[74.61844661712703, "o", " "] +[74.64844661712704, "o", "d"] +[74.67844661712704, "o", "e"] +[74.70844661712704, "o", "m"] +[74.73844661712704, "o", "o"] +[74.76844661712704, "o", "/"] +[74.79844661712704, "o", "w"] +[74.82844661712704, "o", "e"] +[74.85844661712704, "o", "a"] +[74.88844661712704, "o", "t"] +[74.91844661712705, "o", "h"] +[74.94844661712705, "o", "e"] +[74.97844661712705, "o", "r"] +[75.00844661712705, "o", " "] +[75.03844661712705, "o", "r"] +[75.06844661712705, "o", "e"] +[75.09844661712705, "o", "v"] +[75.12844661712705, "o", "i"] +[75.15844661712705, "o", "s"] +[75.18844661712706, "o", "e"] +[75.21844661712706, "o", "d"] +[75.24844661712706, "o", "_"] +[75.27844661712706, "o", "d"] +[75.30844661712706, "o", "a"] +[75.33844661712706, "o", "t"] +[75.36844661712706, "o", "a"] +[75.39844661712706, "o", "\r\n"] +[75.42844661712707, "o", "\u001b[0m"] +[75.45844661712707, "o", "\r\n"] +[75.84944116592467, "o", "Committing demo/weather...\r\n"] +[75.88425004005492, "o", "Storing and indexing table rdu\r\n"] +[76.05504071235717, "o", "Committed demo/weather as b700359cfeb0.\r\n"] +[76.44944011688293, "o", "Tagged demo/weather:b700359cfeb037aed67689e8fc06672b9b3a3bc4111707ab443f4ec833e4ebe8 with revised_data.\r\n"] +[76.47944011688293, "o", "\u001b[1m"] +[76.50944011688293, "o", "\u001b[36m"] +[76.53944011688293, "o", "\u001b[91m"] +[76.56944011688293, "o", "$"] +[76.59944011688293, "o", " "] +[76.62944011688293, "o", "\u001b[0m"] +[81.65944011688293, "o", "\u001b[H"] +[81.68944011688293, "o", "\u001b[J"] +[81.71944011688294, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Use the derivative image's provenance to rebuild it against the revised version"] +[81.74944011688294, "o", "\r\n"] +[81.77944011688294, "o", "$"] +[81.80944011688294, "o", " "] +[81.83944011688294, "o", "s"] +[81.86944011688294, "o", "g"] +[81.89944011688294, "o", "r"] +[81.92944011688294, "o", " "] +[81.95944011688294, "o", "r"] +[81.98944011688295, "o", "e"] +[82.01944011688295, "o", "b"] +[82.04944011688295, "o", "u"] +[82.07944011688295, "o", "i"] +[82.10944011688295, "o", "l"] +[82.13944011688295, "o", "d"] +[82.16944011688295, "o", " "] +[82.19944011688295, "o", "d"] +[82.22944011688296, "o", "e"] +[82.25944011688296, "o", "m"] +[82.28944011688296, "o", "o"] +[82.31944011688296, "o", "/"] +[82.34944011688296, "o", "s"] +[82.37944011688296, "o", "u"] +[82.40944011688296, "o", "m"] +[82.43944011688296, "o", "m"] +[82.46944011688296, "o", "a"] +[82.49944011688297, "o", "r"] +[82.52944011688297, "o", "y"] +[82.55944011688297, "o", " "] +[82.58944011688297, "o", "-"] +[82.61944011688297, "o", "-"] +[82.64944011688297, "o", "a"] +[82.67944011688297, "o", "g"] +[82.70944011688297, "o", "a"] +[82.73944011688297, "o", "i"] +[82.76944011688298, "o", "n"] +[82.79944011688298, "o", "s"] +[82.82944011688298, "o", "t"] +[82.85944011688298, "o", " "] +[82.88944011688298, "o", "d"] +[82.91944011688298, "o", "e"] +[82.94944011688298, "o", "m"] +[82.97944011688298, "o", "o"] +[83.00944011688298, "o", "/"] +[83.03944011688299, "o", "w"] +[83.06944011688299, "o", "e"] +[83.09944011688299, "o", "a"] +[83.12944011688299, "o", "t"] +[83.15944011688299, "o", "h"] +[83.18944011688299, "o", "e"] +[83.21944011688299, "o", "r"] +[83.249440116883, "o", ":"] +[83.279440116883, "o", "r"] +[83.309440116883, "o", "e"] +[83.339440116883, "o", "v"] +[83.369440116883, "o", "i"] +[83.399440116883, "o", "s"] +[83.429440116883, "o", "e"] +[83.459440116883, "o", "d"] +[83.489440116883, "o", "_"] +[83.519440116883, "o", "d"] +[83.549440116883, "o", "a"] +[83.579440116883, "o", "t"] +[83.60944011688301, "o", "a"] +[83.63944011688301, "o", "\r\n"] +[83.66944011688301, "o", "$"] +[83.69944011688301, "o", " "] +[83.72944011688301, "o", "s"] +[83.75944011688301, "o", "g"] +[83.78944011688301, "o", "r"] +[83.81944011688302, "o", " "] +[83.84944011688302, "o", "t"] +[83.87944011688302, "o", "a"] +[83.90944011688302, "o", "g"] +[83.93944011688302, "o", " "] +[83.96944011688302, "o", "d"] +[83.99944011688302, "o", "e"] +[84.02944011688302, "o", "m"] +[84.05944011688302, "o", "o"] +[84.08944011688303, "o", "/"] +[84.11944011688303, "o", "s"] +[84.14944011688303, "o", "u"] +[84.17944011688303, "o", "m"] +[84.20944011688303, "o", "m"] +[84.23944011688303, "o", "a"] +[84.26944011688303, "o", "r"] +[84.29944011688303, "o", "y"] +[84.32944011688303, "o", " "] +[84.35944011688304, "o", "b"] +[84.38944011688304, "o", "a"] +[84.41944011688304, "o", "s"] +[84.44944011688304, "o", "e"] +[84.47944011688304, "o", "d"] +[84.50944011688304, "o", "_"] +[84.53944011688304, "o", "o"] +[84.56944011688304, "o", "n"] +[84.59944011688304, "o", "_"] +[84.62944011688305, "o", "r"] +[84.65944011688305, "o", "e"] +[84.68944011688305, "o", "v"] +[84.71944011688305, "o", "i"] +[84.74944011688305, "o", "s"] +[84.77944011688305, "o", "e"] +[84.80944011688305, "o", "d"] +[84.83944011688305, "o", "\r\n"] +[84.86944011688306, "o", "\u001b[0m"] +[84.89944011688306, "o", "\r\n"] +[85.29304701805188, "o", "Rerunning demo/summary:42020a284e8f3562d4312174201803b79a7f0055e042a34489f96272d3bbcc08 against:\r\n"] +[85.29306776046826, "o", "demo/weather:revised_data\r\n"] +[85.39043099403455, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather:revised_data IMPORT rdu AS source_data\u001b[0m\r\n"] +[85.39157850265576, "o", "Resolving repository demo/weather\r\n"] +[85.39633829116895, "o", "Importing 1 table from demo/weather:b700359cfeb0 into demo/summary\r\n"] +[85.54453761100842, "o", " ---> be46f906251c\r\n"] +[85.54455096244885, "o", "\u001b[1m\r\nStep 2/2 : SQL {CREATE TABLE monthly_summary AS SELECT to_char(dat...\u001b[0m\r\n"] +[85.54995257377698, "o", "Executing SQL...\r\n"] +[85.75523931503369, "o", "Committing demo/summary...\r\n"] +[85.78273732185437, "o", "Processing table monthly_summary\r\n"] +[85.88401348114087, "o", " ---> 2f4c89deaf8f\r\n"] +[85.88779718399121, "o", "Successfully built demo/summary:2f4c89deaf8f.\r\n"] +[86.28089434623791, "o", "Tagged demo/summary:2f4c89deaf8fbeed4cb0494622a351c70b67e48164a347539a161d490a7fb047 with based_on_revised.\r\n"] +[86.31089434623792, "o", "\u001b[1m"] +[86.34089434623792, "o", "\u001b[36m"] +[86.37089434623792, "o", "\u001b[91m"] +[86.40089434623792, "o", "$"] +[86.43089434623792, "o", " "] +[86.46089434623792, "o", "\u001b[0m"] +[91.49089434623792, "o", "\u001b[H"] +[91.52089434623792, "o", "\u001b[J"] +[91.55089434623792, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Compare the two resultant datasets"] +[91.58089434623793, "o", "\r\n"] +[91.61089434623793, "o", "$"] +[91.64089434623793, "o", " "] +[91.67089434623793, "o", "s"] +[91.70089434623793, "o", "g"] +[91.73089434623793, "o", "r"] +[91.76089434623793, "o", " "] +[91.79089434623793, "o", "d"] +[91.82089434623794, "o", "i"] +[91.85089434623794, "o", "f"] +[91.88089434623794, "o", "f"] +[91.91089434623794, "o", " "] +[91.94089434623794, "o", "d"] +[91.97089434623794, "o", "e"] +[92.00089434623794, "o", "m"] +[92.03089434623794, "o", "o"] +[92.06089434623794, "o", "/"] +[92.09089434623795, "o", "s"] +[92.12089434623795, "o", "u"] +[92.15089434623795, "o", "m"] +[92.18089434623795, "o", "m"] +[92.21089434623795, "o", "a"] +[92.24089434623795, "o", "r"] +[92.27089434623795, "o", "y"] +[92.30089434623795, "o", " "] +[92.33089434623795, "o", "b"] +[92.36089434623796, "o", "a"] +[92.39089434623796, "o", "s"] +[92.42089434623796, "o", "e"] +[92.45089434623796, "o", "d"] +[92.48089434623796, "o", "_"] +[92.51089434623796, "o", "o"] +[92.54089434623796, "o", "n"] +[92.57089434623796, "o", "_"] +[92.60089434623796, "o", "i"] +[92.63089434623797, "o", "n"] +[92.66089434623797, "o", "i"] +[92.69089434623797, "o", "t"] +[92.72089434623797, "o", "i"] +[92.75089434623797, "o", "a"] +[92.78089434623797, "o", "l"] +[92.81089434623797, "o", " "] +[92.84089434623797, "o", "b"] +[92.87089434623798, "o", "a"] +[92.90089434623798, "o", "s"] +[92.93089434623798, "o", "e"] +[92.96089434623798, "o", "d"] +[92.99089434623798, "o", "_"] +[93.02089434623798, "o", "o"] +[93.05089434623798, "o", "n"] +[93.08089434623798, "o", "_"] +[93.11089434623798, "o", "r"] +[93.14089434623799, "o", "e"] +[93.17089434623799, "o", "v"] +[93.20089434623799, "o", "i"] +[93.23089434623799, "o", "s"] +[93.26089434623799, "o", "e"] +[93.29089434623799, "o", "d"] +[93.32089434623799, "o", " "] +[93.350894346238, "o", "-"] +[93.380894346238, "o", "-"] +[93.410894346238, "o", "v"] +[93.440894346238, "o", "e"] +[93.470894346238, "o", "r"] +[93.500894346238, "o", "b"] +[93.530894346238, "o", "o"] +[93.560894346238, "o", "s"] +[93.590894346238, "o", "e"] +[93.620894346238, "o", " "] +[93.650894346238, "o", "-"] +[93.680894346238, "o", "-"] +[93.710894346238, "o", "t"] +[93.74089434623801, "o", "a"] +[93.77089434623801, "o", "b"] +[93.80089434623801, "o", "l"] +[93.83089434623801, "o", "e"] +[93.86089434623801, "o", "-"] +[93.89089434623801, "o", "n"] +[93.92089434623801, "o", "a"] +[93.95089434623802, "o", "m"] +[93.98089434623802, "o", "e"] +[94.01089434623802, "o", " "] +[94.04089434623802, "o", "m"] +[94.07089434623802, "o", "o"] +[94.10089434623802, "o", "n"] +[94.13089434623802, "o", "t"] +[94.16089434623802, "o", "h"] +[94.19089434623803, "o", "l"] +[94.22089434623803, "o", "y"] +[94.25089434623803, "o", "_"] +[94.28089434623803, "o", "s"] +[94.31089434623803, "o", "u"] +[94.34089434623803, "o", "m"] +[94.37089434623803, "o", "m"] +[94.40089434623803, "o", "a"] +[94.43089434623803, "o", "r"] +[94.46089434623804, "o", "y"] +[94.49089434623804, "o", "\r\n"] +[94.52089434623804, "o", "\u001b[0m"] +[94.55089434623804, "o", "\r\n"] +[95.10281905174341, "o", "Between 42020a284e8f and 2f4c89deaf8f: \r\n"] +[95.10310729980554, "o", "monthly_summary: added 12 rows, removed 12 rows.\r\n- ('201201', Decimal('0.06322580645161290323'), Decimal('0E-20'))\r\n- ('201202', Decimal('0.06689655172413793103'), Decimal('0.03137931034482758621'))\r\n- ('201203', Decimal('0.17290322580645161290'), Decimal('0E-20'))\r\n- ('201204', Decimal('0.08766666666666666667'), Decimal('0E-20'))\r\n- ('201205', Decimal('0.12806451612903225806'), Decimal('0E-20'))\r\n- ('201206', Decimal('0.10333333333333333333'), Decimal('0E-20'))\r\n- ('201207', Decimal('0.1496774193548387096"] +[95.10311707496729, "o", "8'), Decimal('0E-20'))\r\n- ('201208', Decimal('0.13000000000000000000'), Decimal('0E-20'))\r\n- ('201209', Decimal('0.26100000000000000000'), Decimal('0E-20'))\r\n- ('201210', Decimal('0.05903225806451612903'), Decimal('0E-20'))\r\n- ('201211', Decimal('0.01866666666666666667'), Decimal('0E-20'))\r\n- ('201212', Decimal('0.09483870967741935484'), Decimal('0E-20'))\r\n+ ('201201', Decimal('0.07587096774193548387'), Decimal('0E-20'))\r\n+ ('201202', Decimal('0.08027586206896551724'), Decimal('0.03137931034482758621'))\r\n+ "] +[95.10312637329187, "o", "('201203', Decimal('0.20748387096774193548'), Decimal('0E-20'))\r\n+ ('201204', Decimal('0.10520000000000000000'), Decimal('0E-20'))\r\n+ ('201205', Decimal('0.15367741935483870968'), Decimal('0E-20'))\r\n+ ('201206', Decimal('0.12400000000000000000'), Decimal('0E-20'))\r\n+ ('201207', Decimal('0.17961290322580645161'), Decimal('0E-20'))\r\n+ ('201208', Decimal('0.15600000000000000000'), Decimal('0E-20'))\r\n"] +[95.10326608657923, "o", "+ ('201209', Decimal('0.31320000000000000000'), Decimal('0E-20'))\r\n+ ('201210', Decimal('0.07083870967741935484'), Decimal('0E-20'))\r\n+ ('201211', Decimal('0.02240000000000000000'), Decimal('0E-20'))\r\n+ ('201212', Decimal('0.11380645161290322581'), Decimal('0E-20'))\r\n"] +[95.13326608657923, "o", "\u001b[1m"] +[95.16326608657923, "o", "\u001b[36m"] +[95.19326608657923, "o", "\u001b[91m"] +[95.22326608657923, "o", "$"] +[95.25326608657923, "o", " "] +[95.28326608657923, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.17/splitgraph-cloud.cast b/content/casts/versioned/archive/v0.2.17/splitgraph-cloud.cast new file mode 100644 index 00000000..58ea1973 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.17/splitgraph-cloud.cast @@ -0,0 +1,1339 @@ +{"version": 2, "width": 100, "height": 22, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1634247210, "metadata": {"tss": [{"h": "Make sure you are registered and logged into Splitgraph Cloud.", "ts": 0.06}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport", "ts": 8.849999999999994}, {"h": "Push the dataset to Splitgraph", "ts": 21.541963663101072}, {"h": "Upload some dataset metadata as well.", "ts": 29.858118076324374}, {"h": "Perform a request against an automatically-generated", "ts": 40.358118076324374}, {"h": "sgr also has a shorthand to access the query API", "ts": 49.42866067886358}, {"h": "You can also run a query against the Splitgraph Data Delivery Network.", "ts": 58.42866067886369}, {"h": "The query API also supports running one-off Splitfile commands against a repository,", "ts": 69.61866067886389}, {"h": "Run another command against the new layer to join the two datasets", "ts": 79.12999415397694}, {"h": "Pull the dataset and check out the new image", "ts": 88.67463836669985}, {"h": "Inspect the generated data", "ts": 101.82067354202341}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make sure you are registered and logged into Splitgraph Cloud."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Test the connection.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "s"] +[0.27, "o", "g"] +[0.30000000000000004, "o", "r"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "q"] +[0.42000000000000015, "o", "l"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "-"] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", " "] +[0.5700000000000003, "o", "d"] +[0.6000000000000003, "o", "a"] +[0.6300000000000003, "o", "t"] +[0.6600000000000004, "o", "a"] +[0.6900000000000004, "o", "."] +[0.7200000000000004, "o", "s"] +[0.7500000000000004, "o", "p"] +[0.7800000000000005, "o", "l"] +[0.8100000000000005, "o", "i"] +[0.8400000000000005, "o", "t"] +[0.8700000000000006, "o", "g"] +[0.9000000000000006, "o", "r"] +[0.9300000000000006, "o", "a"] +[0.9600000000000006, "o", "p"] +[0.9900000000000007, "o", "h"] +[1.0200000000000007, "o", "."] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "o"] +[1.1100000000000008, "o", "m"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "\""] +[1.2000000000000008, "o", "S"] +[1.2300000000000009, "o", "E"] +[1.260000000000001, "o", "L"] +[1.290000000000001, "o", "E"] +[1.320000000000001, "o", "C"] +[1.350000000000001, "o", "T"] +[1.380000000000001, "o", " "] +[1.410000000000001, "o", "s"] +[1.440000000000001, "o", "p"] +[1.470000000000001, "o", "l"] +[1.500000000000001, "o", "i"] +[1.5300000000000011, "o", "t"] +[1.5600000000000012, "o", "g"] +[1.5900000000000012, "o", "r"] +[1.6200000000000012, "o", "a"] +[1.6500000000000012, "o", "p"] +[1.6800000000000013, "o", "h"] +[1.7100000000000013, "o", "_"] +[1.7400000000000013, "o", "a"] +[1.7700000000000014, "o", "p"] +[1.8000000000000014, "o", "i"] +[1.8300000000000014, "o", "."] +[1.8600000000000014, "o", "g"] +[1.8900000000000015, "o", "e"] +[1.9200000000000015, "o", "t"] +[1.9500000000000015, "o", "_"] +[1.9800000000000015, "o", "c"] +[2.0100000000000016, "o", "u"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "r"] +[2.100000000000001, "o", "e"] +[2.130000000000001, "o", "n"] +[2.1600000000000006, "o", "t"] +[2.1900000000000004, "o", "_"] +[2.22, "o", "u"] +[2.25, "o", "s"] +[2.28, "o", "e"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "n"] +[2.369999999999999, "o", "a"] +[2.399999999999999, "o", "m"] +[2.429999999999999, "o", "e"] +[2.4599999999999986, "o", "("] +[2.4899999999999984, "o", ")"] +[2.5199999999999982, "o", "\""] +[2.549999999999998, "o", "\r\n"] +[2.579999999999998, "o", "\u001b[0m"] +[2.6099999999999977, "o", "\r\n"] +[3.6099999999999977, "o", "splitgraph-demo\r\n"] +[3.6399999999999975, "o", "\u001b[1m"] +[3.6699999999999973, "o", "\u001b[36m"] +[3.699999999999997, "o", "\u001b[91m"] +[3.729999999999997, "o", "$"] +[3.7599999999999967, "o", " "] +[3.7899999999999965, "o", "\u001b[0m"] +[8.819999999999995, "o", "\u001b[H"] +[8.849999999999994, "o", "\u001b[J"] +[8.879999999999994, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport"] +[8.909999999999993, "o", "\r\n"] +[8.939999999999992, "o", "$"] +[8.969999999999992, "o", " "] +[8.999999999999991, "o", "s"] +[9.02999999999999, "o", "g"] +[9.05999999999999, "o", "r"] +[9.08999999999999, "o", " "] +[9.119999999999989, "o", "i"] +[9.149999999999988, "o", "n"] +[9.179999999999987, "o", "i"] +[9.209999999999987, "o", "t"] +[9.239999999999986, "o", " "] +[9.269999999999985, "o", "w"] +[9.299999999999985, "o", "e"] +[9.329999999999984, "o", "a"] +[9.359999999999983, "o", "t"] +[9.389999999999983, "o", "h"] +[9.419999999999982, "o", "e"] +[9.449999999999982, "o", "r"] +[9.47999999999998, "o", "\r\n"] +[9.50999999999998, "o", "$"] +[9.53999999999998, "o", " "] +[9.569999999999979, "o", "s"] +[9.599999999999978, "o", "g"] +[9.629999999999978, "o", "r"] +[9.659999999999977, "o", " "] +[9.689999999999976, "o", "c"] +[9.719999999999976, "o", "s"] +[9.749999999999975, "o", "v"] +[9.779999999999974, "o", " "] +[9.809999999999974, "o", "i"] +[9.839999999999973, "o", "m"] +[9.869999999999973, "o", "p"] +[9.899999999999972, "o", "o"] +[9.929999999999971, "o", "r"] +[9.95999999999997, "o", "t"] +[9.98999999999997, "o", " "] +[10.01999999999997, "o", "-"] +[10.049999999999969, "o", "f"] +[10.079999999999968, "o", " "] +[10.109999999999967, "o", "."] +[10.139999999999967, "o", "."] +[10.169999999999966, "o", "/"] +[10.199999999999966, "o", "i"] +[10.229999999999965, "o", "m"] +[10.259999999999964, "o", "p"] +[10.289999999999964, "o", "o"] +[10.319999999999963, "o", "r"] +[10.349999999999962, "o", "t"] +[10.379999999999962, "o", "-"] +[10.409999999999961, "o", "f"] +[10.43999999999996, "o", "r"] +[10.46999999999996, "o", "o"] +[10.49999999999996, "o", "m"] +[10.529999999999959, "o", "-"] +[10.559999999999958, "o", "c"] +[10.589999999999957, "o", "s"] +[10.619999999999957, "o", "v"] +[10.649999999999956, "o", "/"] +[10.679999999999955, "o", "r"] +[10.709999999999955, "o", "d"] +[10.739999999999954, "o", "u"] +[10.769999999999953, "o", "-"] +[10.799999999999953, "o", "w"] +[10.829999999999952, "o", "e"] +[10.859999999999951, "o", "a"] +[10.88999999999995, "o", "t"] +[10.91999999999995, "o", "h"] +[10.94999999999995, "o", "e"] +[10.979999999999949, "o", "r"] +[11.009999999999948, "o", "-"] +[11.039999999999948, "o", "h"] +[11.069999999999947, "o", "i"] +[11.099999999999946, "o", "s"] +[11.129999999999946, "o", "t"] +[11.159999999999945, "o", "o"] +[11.189999999999944, "o", "r"] +[11.219999999999944, "o", "y"] +[11.249999999999943, "o", "."] +[11.279999999999943, "o", "c"] +[11.309999999999942, "o", "s"] +[11.339999999999941, "o", "v"] +[11.36999999999994, "o", " "] +[11.39999999999994, "o", "\\"] +[11.42999999999994, "o", "\r\n "] +[11.459999999999939, "o", "-"] +[11.489999999999938, "o", "k"] +[11.519999999999937, "o", " "] +[11.549999999999937, "o", "d"] +[11.579999999999936, "o", "a"] +[11.609999999999935, "o", "t"] +[11.639999999999935, "o", "e"] +[11.669999999999934, "o", " "] +[11.699999999999934, "o", "\\"] +[11.729999999999933, "o", "\r\n "] +[11.759999999999932, "o", "-"] +[11.789999999999932, "o", "t"] +[11.819999999999931, "o", " "] +[11.84999999999993, "o", "d"] +[11.87999999999993, "o", "a"] +[11.909999999999929, "o", "t"] +[11.939999999999928, "o", "e"] +[11.969999999999928, "o", " "] +[11.999999999999927, "o", "t"] +[12.029999999999927, "o", "i"] +[12.059999999999926, "o", "m"] +[12.089999999999925, "o", "e"] +[12.119999999999925, "o", "s"] +[12.149999999999924, "o", "t"] +[12.179999999999923, "o", "a"] +[12.209999999999923, "o", "m"] +[12.239999999999922, "o", "p"] +[12.269999999999921, "o", " "] +[12.29999999999992, "o", "\\"] +[12.32999999999992, "o", "\r\n "] +[12.35999999999992, "o", "-"] +[12.389999999999919, "o", "-"] +[12.419999999999918, "o", "s"] +[12.449999999999918, "o", "e"] +[12.479999999999917, "o", "p"] +[12.509999999999916, "o", "a"] +[12.539999999999916, "o", "r"] +[12.569999999999915, "o", "a"] +[12.599999999999914, "o", "t"] +[12.629999999999914, "o", "o"] +[12.659999999999913, "o", "r"] +[12.689999999999912, "o", " "] +[12.719999999999912, "o", "\""] +[12.749999999999911, "o", ";"] +[12.77999999999991, "o", "\""] +[12.80999999999991, "o", " "] +[12.83999999999991, "o", "\\"] +[12.869999999999909, "o", "\r\n "] +[12.899999999999908, "o", "w"] +[12.929999999999907, "o", "e"] +[12.959999999999907, "o", "a"] +[12.989999999999906, "o", "t"] +[13.019999999999905, "o", "h"] +[13.049999999999905, "o", "e"] +[13.079999999999904, "o", "r"] +[13.109999999999904, "o", " "] +[13.139999999999903, "o", "r"] +[13.169999999999902, "o", "d"] +[13.199999999999902, "o", "u"] +[13.229999999999901, "o", "\r\n"] +[13.2599999999999, "o", "$"] +[13.2899999999999, "o", " "] +[13.319999999999899, "o", "s"] +[13.349999999999898, "o", "g"] +[13.379999999999898, "o", "r"] +[13.409999999999897, "o", " "] +[13.439999999999896, "o", "c"] +[13.469999999999896, "o", "o"] +[13.499999999999895, "o", "m"] +[13.529999999999895, "o", "m"] +[13.559999999999894, "o", "i"] +[13.589999999999893, "o", "t"] +[13.619999999999893, "o", " "] +[13.649999999999892, "o", "w"] +[13.679999999999891, "o", "e"] +[13.70999999999989, "o", "a"] +[13.73999999999989, "o", "t"] +[13.76999999999989, "o", "h"] +[13.799999999999889, "o", "e"] +[13.829999999999888, "o", "r"] +[13.859999999999888, "o", "\r\n"] +[13.889999999999887, "o", "$"] +[13.919999999999886, "o", " "] +[13.949999999999886, "o", "s"] +[13.979999999999885, "o", "g"] +[14.009999999999884, "o", "r"] +[14.039999999999884, "o", " "] +[14.069999999999883, "o", "t"] +[14.099999999999882, "o", "a"] +[14.129999999999882, "o", "g"] +[14.159999999999881, "o", " "] +[14.18999999999988, "o", "w"] +[14.21999999999988, "o", "e"] +[14.24999999999988, "o", "a"] +[14.279999999999879, "o", "t"] +[14.309999999999878, "o", "h"] +[14.339999999999877, "o", "e"] +[14.369999999999877, "o", "r"] +[14.399999999999876, "o", " "] +[14.429999999999875, "o", "i"] +[14.459999999999875, "o", "n"] +[14.489999999999874, "o", "i"] +[14.519999999999873, "o", "t"] +[14.549999999999873, "o", "i"] +[14.579999999999872, "o", "a"] +[14.609999999999872, "o", "l"] +[14.639999999999871, "o", "_"] +[14.66999999999987, "o", "d"] +[14.69999999999987, "o", "a"] +[14.729999999999869, "o", "t"] +[14.759999999999868, "o", "a"] +[14.789999999999868, "o", "\r\n"] +[14.819999999999867, "o", "\u001b[0m"] +[14.849999999999866, "o", "\r\n"] +[15.263188219070301, "o", "Initialized empty repository weather\r\n"] +[15.65814433097826, "o", "Committing weather...\r\n"] +[15.681254959106312, "o", "Processing table rdu\r\n"] +[15.906330919265613, "o", "Committed weather as 08094db2626b.\r\n"] +[16.301963663101063, "o", "Tagged weather:08094db2626b842d51b79c0311a6fb84a208c90e0dcf12deb367536d8915cad3 with initial_data.\r\n"] +[16.331963663101064, "o", "\u001b[1m"] +[16.361963663101065, "o", "\u001b[36m"] +[16.391963663101066, "o", "\u001b[91m"] +[16.421963663101067, "o", "$"] +[16.45196366310107, "o", " "] +[16.48196366310107, "o", "\u001b[0m"] +[21.51196366310107, "o", "\u001b[H"] +[21.541963663101072, "o", "\u001b[J"] +[21.571963663101073, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset to Splitgraph"] +[21.601963663101074, "o", "\r\n"] +[21.631963663101075, "o", "$"] +[21.661963663101076, "o", " "] +[21.691963663101077, "o", "s"] +[21.72196366310108, "o", "g"] +[21.75196366310108, "o", "r"] +[21.78196366310108, "o", " "] +[21.811963663101082, "o", "p"] +[21.841963663101083, "o", "u"] +[21.871963663101084, "o", "s"] +[21.901963663101085, "o", "h"] +[21.931963663101087, "o", " "] +[21.961963663101088, "o", "w"] +[21.99196366310109, "o", "e"] +[22.02196366310109, "o", "a"] +[22.05196366310109, "o", "t"] +[22.081963663101092, "o", "h"] +[22.111963663101093, "o", "e"] +[22.141963663101095, "o", "r"] +[22.171963663101096, "o", "\r\n"] +[22.201963663101097, "o", "\u001b[0m"] +[22.231963663101098, "o", "\r\n"] +[22.618605403900048, "o", "Pushing weather to splitgraph-demo/weather on remote data.splitgraph.com\r\n"] +[22.618624238967797, "o", "Gathering remote metadata...\r\n"] +[23.618624238967797, "o", "No objects to upload.\r\n"] +[24.612359552383325, "o", "Uploaded metadata for 2 images, 1 table, 0 objects and 1 tag.\r\n"] +[24.618118076324365, "o", "Setting upstream for weather to splitgraph-demo/weather.\r\n"] +[24.648118076324366, "o", "\u001b[1m"] +[24.678118076324367, "o", "\u001b[36m"] +[24.708118076324368, "o", "\u001b[91m"] +[24.73811807632437, "o", "$"] +[24.76811807632437, "o", " "] +[24.79811807632437, "o", "\u001b[0m"] +[29.828118076324373, "o", "\u001b[H"] +[29.858118076324374, "o", "\u001b[J"] +[29.888118076324375, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Upload some dataset metadata as well."] +[29.918118076324376, "o", "\r\n"] +[29.948118076324377, "o", "$"] +[29.978118076324378, "o", " "] +[30.00811807632438, "o", "c"] +[30.03811807632438, "o", "a"] +[30.06811807632438, "o", "t"] +[30.098118076324383, "o", " "] +[30.128118076324384, "o", "d"] +[30.158118076324385, "o", "a"] +[30.188118076324386, "o", "t"] +[30.218118076324387, "o", "a"] +[30.24811807632439, "o", "s"] +[30.27811807632439, "o", "e"] +[30.30811807632439, "o", "t"] +[30.338118076324392, "o", "-"] +[30.368118076324393, "o", "m"] +[30.398118076324394, "o", "e"] +[30.428118076324395, "o", "t"] +[30.458118076324396, "o", "a"] +[30.488118076324398, "o", "d"] +[30.5181180763244, "o", "a"] +[30.5481180763244, "o", "t"] +[30.5781180763244, "o", "a"] +[30.608118076324402, "o", "."] +[30.638118076324403, "o", "y"] +[30.668118076324404, "o", "m"] +[30.698118076324405, "o", "l"] +[30.728118076324407, "o", "\r\n"] +[30.758118076324408, "o", "$"] +[30.78811807632441, "o", " "] +[30.81811807632441, "o", "c"] +[30.84811807632441, "o", "a"] +[30.878118076324412, "o", "t"] +[30.908118076324413, "o", " "] +[30.938118076324415, "o", "d"] +[30.968118076324416, "o", "a"] +[30.998118076324417, "o", "t"] +[31.028118076324418, "o", "a"] +[31.05811807632442, "o", "s"] +[31.08811807632442, "o", "e"] +[31.11811807632442, "o", "t"] +[31.148118076324423, "o", "-"] +[31.178118076324424, "o", "r"] +[31.208118076324425, "o", "e"] +[31.238118076324426, "o", "a"] +[31.268118076324427, "o", "d"] +[31.298118076324428, "o", "m"] +[31.32811807632443, "o", "e"] +[31.35811807632443, "o", "."] +[31.38811807632443, "o", "m"] +[31.418118076324433, "o", "d"] +[31.448118076324434, "o", "\r\n"] +[31.478118076324435, "o", "$"] +[31.508118076324436, "o", " "] +[31.538118076324437, "o", "s"] +[31.56811807632444, "o", "g"] +[31.59811807632444, "o", "r"] +[31.62811807632444, "o", " "] +[31.658118076324442, "o", "c"] +[31.688118076324443, "o", "l"] +[31.718118076324444, "o", "o"] +[31.748118076324445, "o", "u"] +[31.778118076324446, "o", "d"] +[31.808118076324448, "o", " "] +[31.83811807632445, "o", "m"] +[31.86811807632445, "o", "e"] +[31.89811807632445, "o", "t"] +[31.928118076324452, "o", "a"] +[31.958118076324453, "o", "d"] +[31.988118076324454, "o", "a"] +[32.018118076324456, "o", "t"] +[32.04811807632446, "o", "a"] +[32.07811807632446, "o", " "] +[32.10811807632446, "o", "s"] +[32.13811807632446, "o", "p"] +[32.16811807632446, "o", "l"] +[32.19811807632446, "o", "i"] +[32.22811807632446, "o", "t"] +[32.258118076324465, "o", "g"] +[32.288118076324466, "o", "r"] +[32.31811807632447, "o", "a"] +[32.34811807632447, "o", "p"] +[32.37811807632447, "o", "h"] +[32.40811807632447, "o", "-"] +[32.43811807632447, "o", "d"] +[32.46811807632447, "o", "e"] +[32.498118076324474, "o", "m"] +[32.528118076324475, "o", "o"] +[32.558118076324476, "o", "/"] +[32.58811807632448, "o", "w"] +[32.61811807632448, "o", "e"] +[32.64811807632448, "o", "a"] +[32.67811807632448, "o", "t"] +[32.70811807632448, "o", "h"] +[32.73811807632448, "o", "e"] +[32.768118076324484, "o", "r"] +[32.798118076324485, "o", " "] +[32.828118076324486, "o", "d"] +[32.85811807632449, "o", "a"] +[32.88811807632449, "o", "t"] +[32.91811807632449, "o", "a"] +[32.94811807632449, "o", "s"] +[32.97811807632449, "o", "e"] +[33.00811807632449, "o", "t"] +[33.038118076324494, "o", "-"] +[33.068118076324495, "o", "m"] +[33.098118076324496, "o", "e"] +[33.1281180763245, "o", "t"] +[33.1581180763245, "o", "a"] +[33.1881180763245, "o", "d"] +[33.2181180763245, "o", "a"] +[33.2481180763245, "o", "t"] +[33.2781180763245, "o", "a"] +[33.308118076324504, "o", "."] +[33.338118076324506, "o", "y"] +[33.36811807632451, "o", "m"] +[33.39811807632451, "o", "l"] +[33.42811807632451, "o", "\r\n"] +[33.45811807632451, "o", "\u001b[0m"] +[33.48811807632451, "o", "\r\n"] +[33.48982181549077, "o", "# This is a sample dataset metadata file that's used\r\n# to update the dataset's README and description.\r\n\r\nreadme: dataset-readme.md\r\ndescription: Weather history in Raleigh-Durham International airport joined with US domestic flights data (uploaded from Splitgraph release CI)\r\n"] +[33.49118866920476, "o", "# Sample dataset README\r\n\r\nDataset of weather history in Raleigh-Durham International airport, joined with\r\n[US domestic flights data](/splitgraph/domestic_us_flights).\r\n\r\nThis dataset was uploaded from a CI job.\r\n\r\n## Source\r\n\r\n[data.gov](https://catalog.data.gov/dataset/local-weather-archive)\r\n"] +[34.181643390655566, "o", "Metadata updated for repository splitgraph-demo/weather.\r\n"] +[34.21164339065557, "o", "\u001b[1m"] +[34.24164339065557, "o", "\u001b[36m"] +[34.27164339065557, "o", "\u001b[91m"] +[34.30164339065557, "o", "$"] +[34.33164339065557, "o", " "] +[34.36164339065557, "o", "\u001b[0m"] +[40.32811807632437, "o", "\u001b[H"] +[40.358118076324374, "o", "\u001b[J"] +[40.388118076324375, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Perform a request against an automatically-generated"] +[40.418118076324376, "o", "\r\n"] +[40.44811807632438, "o", "$ # Postgrest (https://postgrest.org) endpoint.\r\n"] +[40.47811807632438, "o", "$"] +[40.50811807632438, "o", " "] +[40.53811807632438, "o", "c"] +[40.56811807632438, "o", "u"] +[40.59811807632438, "o", "r"] +[40.628118076324384, "o", "l"] +[40.658118076324385, "o", " "] +[40.688118076324386, "o", "\""] +[40.71811807632439, "o", "h"] +[40.74811807632439, "o", "t"] +[40.77811807632439, "o", "t"] +[40.80811807632439, "o", "p"] +[40.83811807632439, "o", "s"] +[40.86811807632439, "o", ":"] +[40.898118076324394, "o", "/"] +[40.928118076324395, "o", "/"] +[40.958118076324396, "o", "d"] +[40.9881180763244, "o", "a"] +[41.0181180763244, "o", "t"] +[41.0481180763244, "o", "a"] +[41.0781180763244, "o", "."] +[41.1081180763244, "o", "s"] +[41.1381180763244, "o", "p"] +[41.168118076324404, "o", "l"] +[41.198118076324405, "o", "i"] +[41.22811807632441, "o", "t"] +[41.25811807632441, "o", "g"] +[41.28811807632441, "o", "r"] +[41.31811807632441, "o", "a"] +[41.34811807632441, "o", "p"] +[41.37811807632441, "o", "h"] +[41.40811807632441, "o", "."] +[41.438118076324415, "o", "c"] +[41.468118076324416, "o", "o"] +[41.49811807632442, "o", "m"] +[41.52811807632442, "o", "/"] +[41.55811807632442, "o", "s"] +[41.58811807632442, "o", "p"] +[41.61811807632442, "o", "l"] +[41.64811807632442, "o", "i"] +[41.678118076324424, "o", "t"] +[41.708118076324425, "o", "g"] +[41.738118076324426, "o", "r"] +[41.76811807632443, "o", "a"] +[41.79811807632443, "o", "p"] +[41.82811807632443, "o", "h"] +[41.85811807632443, "o", "-"] +[41.88811807632443, "o", "d"] +[41.91811807632443, "o", "e"] +[41.948118076324434, "o", "m"] +[41.978118076324435, "o", "o"] +[42.008118076324436, "o", "/"] +[42.03811807632444, "o", "w"] +[42.06811807632444, "o", "e"] +[42.09811807632444, "o", "a"] +[42.12811807632444, "o", "t"] +[42.15811807632444, "o", "h"] +[42.18811807632444, "o", "e"] +[42.218118076324444, "o", "r"] +[42.248118076324445, "o", "/"] +[42.278118076324446, "o", "i"] +[42.30811807632445, "o", "n"] +[42.33811807632445, "o", "i"] +[42.36811807632445, "o", "t"] +[42.39811807632445, "o", "i"] +[42.42811807632445, "o", "a"] +[42.45811807632445, "o", "l"] +[42.488118076324454, "o", "_"] +[42.518118076324456, "o", "d"] +[42.54811807632446, "o", "a"] +[42.57811807632446, "o", "t"] +[42.60811807632446, "o", "a"] +[42.63811807632446, "o", "/"] +[42.66811807632446, "o", "-"] +[42.69811807632446, "o", "/"] +[42.72811807632446, "o", "r"] +[42.758118076324465, "o", "e"] +[42.788118076324466, "o", "s"] +[42.81811807632447, "o", "t"] +[42.84811807632447, "o", "/"] +[42.87811807632447, "o", "r"] +[42.90811807632447, "o", "d"] +[42.93811807632447, "o", "u"] +[42.96811807632447, "o", "?"] +[42.998118076324474, "o", "d"] +[43.028118076324475, "o", "a"] +[43.058118076324476, "o", "t"] +[43.08811807632448, "o", "e"] +[43.11811807632448, "o", "="] +[43.14811807632448, "o", "e"] +[43.17811807632448, "o", "q"] +[43.20811807632448, "o", "."] +[43.23811807632448, "o", "2"] +[43.268118076324484, "o", "0"] +[43.298118076324485, "o", "0"] +[43.328118076324486, "o", "9"] +[43.35811807632449, "o", "-"] +[43.38811807632449, "o", "0"] +[43.41811807632449, "o", "8"] +[43.44811807632449, "o", "-"] +[43.47811807632449, "o", "2"] +[43.50811807632449, "o", "5"] +[43.538118076324494, "o", "T"] +[43.568118076324495, "o", "0"] +[43.598118076324496, "o", "0"] +[43.6281180763245, "o", ":"] +[43.6581180763245, "o", "0"] +[43.6881180763245, "o", "0"] +[43.7181180763245, "o", ":"] +[43.7481180763245, "o", "0"] +[43.7781180763245, "o", "0"] +[43.808118076324504, "o", "\""] +[43.838118076324506, "o", "\r\n"] +[43.86811807632451, "o", "\u001b[0m"] +[43.89811807632451, "o", "\r\n"] +[44.18866067886357, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[44.21866067886357, "o", "\u001b[1m"] +[44.24866067886357, "o", "\u001b[36m"] +[44.278660678863574, "o", "\u001b[91m"] +[44.308660678863575, "o", "$"] +[44.338660678863576, "o", " "] +[44.36866067886358, "o", "\u001b[0m"] +[49.39866067886358, "o", "\u001b[H"] +[49.42866067886358, "o", "\u001b[J"] +[49.45866067886358, "o", "\u001b[1m\u001b[36m\u001b[91m$ # sgr also has a shorthand to access the query API"] +[49.48866067886358, "o", "\r\n"] +[49.51866067886358, "o", "$"] +[49.548660678863584, "o", " "] +[49.578660678863585, "o", "s"] +[49.608660678863586, "o", "g"] +[49.63866067886359, "o", "r"] +[49.66866067886359, "o", " "] +[49.69866067886359, "o", "c"] +[49.72866067886359, "o", "l"] +[49.75866067886359, "o", "o"] +[49.78866067886359, "o", "u"] +[49.818660678863594, "o", "d"] +[49.848660678863595, "o", " "] +[49.878660678863596, "o", "c"] +[49.9086606788636, "o", "u"] +[49.9386606788636, "o", "r"] +[49.9686606788636, "o", "l"] +[49.9986606788636, "o", " "] +[50.0286606788636, "o", "s"] +[50.0586606788636, "o", "p"] +[50.088660678863604, "o", "l"] +[50.118660678863606, "o", "i"] +[50.14866067886361, "o", "t"] +[50.17866067886361, "o", "g"] +[50.20866067886361, "o", "r"] +[50.23866067886361, "o", "a"] +[50.26866067886361, "o", "p"] +[50.29866067886361, "o", "h"] +[50.32866067886361, "o", "-"] +[50.358660678863615, "o", "d"] +[50.388660678863616, "o", "e"] +[50.41866067886362, "o", "m"] +[50.44866067886362, "o", "o"] +[50.47866067886362, "o", "/"] +[50.50866067886362, "o", "w"] +[50.53866067886362, "o", "e"] +[50.56866067886362, "o", "a"] +[50.598660678863624, "o", "t"] +[50.628660678863625, "o", "h"] +[50.658660678863626, "o", "e"] +[50.68866067886363, "o", "r"] +[50.71866067886363, "o", ":"] +[50.74866067886363, "o", "i"] +[50.77866067886363, "o", "n"] +[50.80866067886363, "o", "i"] +[50.83866067886363, "o", "t"] +[50.868660678863634, "o", "i"] +[50.898660678863635, "o", "a"] +[50.928660678863636, "o", "l"] +[50.95866067886364, "o", "_"] +[50.98866067886364, "o", "d"] +[51.01866067886364, "o", "a"] +[51.04866067886364, "o", "t"] +[51.07866067886364, "o", "a"] +[51.10866067886364, "o", " "] +[51.138660678863644, "o", "\""] +[51.168660678863645, "o", "r"] +[51.19866067886365, "o", "d"] +[51.22866067886365, "o", "u"] +[51.25866067886365, "o", "?"] +[51.28866067886365, "o", "d"] +[51.31866067886365, "o", "a"] +[51.34866067886365, "o", "t"] +[51.37866067886365, "o", "e"] +[51.408660678863654, "o", "="] +[51.438660678863656, "o", "e"] +[51.46866067886366, "o", "q"] +[51.49866067886366, "o", "."] +[51.52866067886366, "o", "2"] +[51.55866067886366, "o", "0"] +[51.58866067886366, "o", "0"] +[51.61866067886366, "o", "9"] +[51.64866067886366, "o", "-"] +[51.678660678863665, "o", "0"] +[51.708660678863666, "o", "8"] +[51.73866067886367, "o", "-"] +[51.76866067886367, "o", "2"] +[51.79866067886367, "o", "5"] +[51.82866067886367, "o", "T"] +[51.85866067886367, "o", "0"] +[51.88866067886367, "o", "0"] +[51.918660678863674, "o", ":"] +[51.948660678863675, "o", "0"] +[51.978660678863676, "o", "0"] +[52.00866067886368, "o", ":"] +[52.03866067886368, "o", "0"] +[52.06866067886368, "o", "0"] +[52.09866067886368, "o", "\""] +[52.12866067886368, "o", "\r\n"] +[52.15866067886368, "o", "\u001b[0m"] +[52.188660678863684, "o", "\r\n"] +[53.188660678863684, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[53.218660678863685, "o", "\u001b[1m"] +[53.248660678863686, "o", "\u001b[36m"] +[53.27866067886369, "o", "\u001b[91m"] +[53.30866067886369, "o", "$"] +[53.33866067886369, "o", " "] +[53.36866067886369, "o", "\u001b[0m"] +[58.39866067886369, "o", "\u001b[H"] +[58.42866067886369, "o", "\u001b[J"] +[58.458660678863694, "o", "\u001b[1m\u001b[36m\u001b[91m$ # You can also run a query against the Splitgraph Data Delivery Network."] +[58.488660678863695, "o", "\r\n"] +[58.5186606788637, "o", "$ # It supports most PostgresSQL clients and lets you query Splitgraph images and other\r\n"] +[58.5486606788637, "o", "$ # datasets proxied by Splitgraph.\r\n"] +[58.5786606788637, "o", "$"] +[58.6086606788637, "o", " "] +[58.6386606788637, "o", "s"] +[58.6686606788637, "o", "g"] +[58.6986606788637, "o", "r"] +[58.728660678863704, "o", " "] +[58.758660678863706, "o", "c"] +[58.78866067886371, "o", "l"] +[58.81866067886371, "o", "o"] +[58.84866067886371, "o", "u"] +[58.87866067886371, "o", "d"] +[58.90866067886371, "o", " "] +[58.93866067886371, "o", "s"] +[58.96866067886371, "o", "q"] +[58.998660678863715, "o", "l"] +[59.028660678863716, "o", " "] +[59.05866067886372, "o", "\""] +[59.08866067886372, "o", "S"] +[59.11866067886372, "o", "E"] +[59.14866067886372, "o", "L"] +[59.17866067886372, "o", "E"] +[59.20866067886372, "o", "C"] +[59.238660678863724, "o", "T"] +[59.268660678863725, "o", " "] +[59.298660678863726, "o", "d"] +[59.32866067886373, "o", "a"] +[59.35866067886373, "o", "t"] +[59.38866067886373, "o", "e"] +[59.41866067886373, "o", ","] +[59.44866067886373, "o", " "] +[59.47866067886373, "o", "t"] +[59.508660678863734, "o", "e"] +[59.538660678863735, "o", "m"] +[59.568660678863736, "o", "p"] +[59.59866067886374, "o", "e"] +[59.62866067886374, "o", "r"] +[59.65866067886374, "o", "a"] +[59.68866067886374, "o", "t"] +[59.71866067886374, "o", "u"] +[59.74866067886374, "o", "r"] +[59.778660678863744, "o", "e"] +[59.808660678863745, "o", "m"] +[59.83866067886375, "o", "i"] +[59.86866067886375, "o", "n"] +[59.89866067886375, "o", ","] +[59.92866067886375, "o", " "] +[59.95866067886375, "o", "t"] +[59.98866067886375, "o", "e"] +[60.01866067886375, "o", "m"] +[60.048660678863754, "o", "p"] +[60.078660678863756, "o", "e"] +[60.10866067886376, "o", "r"] +[60.13866067886376, "o", "a"] +[60.16866067886376, "o", "t"] +[60.19866067886376, "o", "u"] +[60.22866067886376, "o", "r"] +[60.25866067886376, "o", "e"] +[60.288660678863764, "o", "m"] +[60.318660678863765, "o", "a"] +[60.348660678863766, "o", "x"] +[60.37866067886377, "o", "\r\n "] +[60.40866067886377, "o", "F"] +[60.43866067886377, "o", "R"] +[60.46866067886377, "o", "O"] +[60.49866067886377, "o", "M"] +[60.52866067886377, "o", " "] +[60.558660678863774, "o", "\\"] +[60.588660678863775, "o", "\""] +[60.618660678863776, "o", "s"] +[60.64866067886378, "o", "p"] +[60.67866067886378, "o", "l"] +[60.70866067886378, "o", "i"] +[60.73866067886378, "o", "t"] +[60.76866067886378, "o", "g"] +[60.79866067886378, "o", "r"] +[60.828660678863784, "o", "a"] +[60.858660678863785, "o", "p"] +[60.888660678863786, "o", "h"] +[60.91866067886379, "o", "-"] +[60.94866067886379, "o", "d"] +[60.97866067886379, "o", "e"] +[61.00866067886379, "o", "m"] +[61.03866067886379, "o", "o"] +[61.06866067886379, "o", "/"] +[61.098660678863794, "o", "w"] +[61.128660678863795, "o", "e"] +[61.1586606788638, "o", "a"] +[61.1886606788638, "o", "t"] +[61.2186606788638, "o", "h"] +[61.2486606788638, "o", "e"] +[61.2786606788638, "o", "r"] +[61.3086606788638, "o", ":"] +[61.3386606788638, "o", "i"] +[61.368660678863804, "o", "n"] +[61.398660678863806, "o", "i"] +[61.42866067886381, "o", "t"] +[61.45866067886381, "o", "i"] +[61.48866067886381, "o", "a"] +[61.51866067886381, "o", "l"] +[61.54866067886381, "o", "_"] +[61.57866067886381, "o", "d"] +[61.608660678863814, "o", "a"] +[61.638660678863815, "o", "t"] +[61.668660678863816, "o", "a"] +[61.69866067886382, "o", "\\"] +[61.72866067886382, "o", "\""] +[61.75866067886382, "o", "."] +[61.78866067886382, "o", "r"] +[61.81866067886382, "o", "d"] +[61.84866067886382, "o", "u"] +[61.878660678863824, "o", "\r\n "] +[61.908660678863825, "o", "W"] +[61.938660678863826, "o", "H"] +[61.96866067886383, "o", "E"] +[61.99866067886383, "o", "R"] +[62.02866067886383, "o", "E"] +[62.05866067886383, "o", " "] +[62.08866067886383, "o", "d"] +[62.11866067886383, "o", "a"] +[62.148660678863834, "o", "t"] +[62.178660678863835, "o", "e"] +[62.208660678863836, "o", "_"] +[62.23866067886384, "o", "t"] +[62.26866067886384, "o", "r"] +[62.29866067886384, "o", "u"] +[62.32866067886384, "o", "n"] +[62.35866067886384, "o", "c"] +[62.38866067886384, "o", "("] +[62.418660678863844, "o", "'"] +[62.448660678863845, "o", "m"] +[62.47866067886385, "o", "o"] +[62.50866067886385, "o", "n"] +[62.53866067886385, "o", "t"] +[62.56866067886385, "o", "h"] +[62.59866067886385, "o", "'"] +[62.62866067886385, "o", ","] +[62.65866067886385, "o", " "] +[62.688660678863855, "o", "d"] +[62.718660678863856, "o", "a"] +[62.74866067886386, "o", "t"] +[62.77866067886386, "o", "e"] +[62.80866067886386, "o", ")"] +[62.83866067886386, "o", " "] +[62.86866067886386, "o", "="] +[62.89866067886386, "o", " "] +[62.928660678863864, "o", "'"] +[62.958660678863865, "o", "2"] +[62.988660678863866, "o", "0"] +[63.01866067886387, "o", "0"] +[63.04866067886387, "o", "9"] +[63.07866067886387, "o", "-"] +[63.10866067886387, "o", "0"] +[63.13866067886387, "o", "8"] +[63.16866067886387, "o", "-"] +[63.198660678863874, "o", "0"] +[63.228660678863875, "o", "1"] +[63.258660678863876, "o", "'"] +[63.28866067886388, "o", "\""] +[63.31866067886388, "o", "\r\n"] +[63.34866067886388, "o", "\u001b[0m"] +[63.37866067886388, "o", "\r\n"] +[64.37866067886388, "o", "2009-08-01 00:00:00 73 91.9\r\n2009-08-02 00:00:00 73.9 82.9\r\n2009-08-03 00:00:00 70 95\r\n2009-08-04 00:00:00 66.9 95\r\n2009-08-05 00:00:00 72 96.1\r\n2009-08-06 00:00:00 70 84.9\r\n2009-08-07 00:00:00 68 88\r\n2009-08-08 00:00:00 69.1 91\r\n2009-08-09 00:00:00 70 99\r\n2009-08-10 00:00:00 72 99\r\n"] +[64.40866067886388, "o", "\u001b[1m"] +[64.43866067886388, "o", "\u001b[36m"] +[64.46866067886388, "o", "\u001b[91m"] +[64.49866067886389, "o", "$"] +[64.52866067886389, "o", " "] +[64.55866067886389, "o", "\u001b[0m"] +[69.58866067886389, "o", "\u001b[H"] +[69.61866067886389, "o", "\u001b[J"] +[69.64866067886389, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The query API also supports running one-off Splitfile commands against a repository,"] +[69.67866067886389, "o", "\r\n"] +[69.7086606788639, "o", "$ # creating new images that can be pulled. sgr handles authentication for this automatically.\r\n"] +[69.7386606788639, "o", "$"] +[69.7686606788639, "o", " "] +[69.7986606788639, "o", "c"] +[69.8286606788639, "o", "a"] +[69.8586606788639, "o", "t"] +[69.8886606788639, "o", " "] +[69.9186606788639, "o", "r"] +[69.9486606788639, "o", "e"] +[69.9786606788639, "o", "q"] +[70.0086606788639, "o", "u"] +[70.0386606788639, "o", "e"] +[70.0686606788639, "o", "s"] +[70.09866067886391, "o", "t"] +[70.12866067886391, "o", "_"] +[70.15866067886391, "o", "1"] +[70.18866067886391, "o", "."] +[70.21866067886391, "o", "j"] +[70.24866067886391, "o", "s"] +[70.27866067886391, "o", "o"] +[70.30866067886392, "o", "n"] +[70.33866067886392, "o", "\r\n"] +[70.36866067886392, "o", "$"] +[70.39866067886392, "o", " "] +[70.42866067886392, "o", "s"] +[70.45866067886392, "o", "g"] +[70.48866067886392, "o", "r"] +[70.51866067886392, "o", " "] +[70.54866067886392, "o", "c"] +[70.57866067886393, "o", "l"] +[70.60866067886393, "o", "o"] +[70.63866067886393, "o", "u"] +[70.66866067886393, "o", "d"] +[70.69866067886393, "o", " "] +[70.72866067886393, "o", "c"] +[70.75866067886393, "o", "u"] +[70.78866067886393, "o", "r"] +[70.81866067886394, "o", "l"] +[70.84866067886394, "o", " "] +[70.87866067886394, "o", "-"] +[70.90866067886394, "o", "t"] +[70.93866067886394, "o", " "] +[70.96866067886394, "o", "s"] +[70.99866067886394, "o", "p"] +[71.02866067886394, "o", "l"] +[71.05866067886394, "o", "i"] +[71.08866067886395, "o", "t"] +[71.11866067886395, "o", "f"] +[71.14866067886395, "o", "i"] +[71.17866067886395, "o", "l"] +[71.20866067886395, "o", "e"] +[71.23866067886395, "o", " "] +[71.26866067886395, "o", "s"] +[71.29866067886395, "o", "p"] +[71.32866067886395, "o", "l"] +[71.35866067886396, "o", "i"] +[71.38866067886396, "o", "t"] +[71.41866067886396, "o", "g"] +[71.44866067886396, "o", "r"] +[71.47866067886396, "o", "a"] +[71.50866067886396, "o", "p"] +[71.53866067886396, "o", "h"] +[71.56866067886396, "o", "-"] +[71.59866067886396, "o", "d"] +[71.62866067886397, "o", "e"] +[71.65866067886397, "o", "m"] +[71.68866067886397, "o", "o"] +[71.71866067886397, "o", "/"] +[71.74866067886397, "o", "w"] +[71.77866067886397, "o", "e"] +[71.80866067886397, "o", "a"] +[71.83866067886397, "o", "t"] +[71.86866067886398, "o", "h"] +[71.89866067886398, "o", "e"] +[71.92866067886398, "o", "r"] +[71.95866067886398, "o", ":"] +[71.98866067886398, "o", "i"] +[72.01866067886398, "o", "n"] +[72.04866067886398, "o", "i"] +[72.07866067886398, "o", "t"] +[72.10866067886398, "o", "i"] +[72.13866067886399, "o", "a"] +[72.16866067886399, "o", "l"] +[72.19866067886399, "o", "_"] +[72.22866067886399, "o", "d"] +[72.25866067886399, "o", "a"] +[72.28866067886399, "o", "t"] +[72.31866067886399, "o", "a"] +[72.348660678864, "o", " "] +[72.378660678864, "o", "@"] +[72.408660678864, "o", "r"] +[72.438660678864, "o", "e"] +[72.468660678864, "o", "q"] +[72.498660678864, "o", "u"] +[72.528660678864, "o", "e"] +[72.558660678864, "o", "s"] +[72.588660678864, "o", "t"] +[72.618660678864, "o", "_"] +[72.648660678864, "o", "1"] +[72.678660678864, "o", "."] +[72.708660678864, "o", "j"] +[72.73866067886401, "o", "s"] +[72.76866067886401, "o", "o"] +[72.79866067886401, "o", "n"] +[72.82866067886401, "o", "\r\n"] +[72.85866067886401, "o", "\u001b[0m"] +[72.88866067886401, "o", "\r\n"] +[72.88999415397693, "o", "{\"command\": \"FROM splitgraph/domestic_us_flights:latest IMPORT {SELECT fly_month, SUM(passengers) AS total_passengers FROM flights WHERE origin_airport = 'RDU' OR destination_airport = 'RDU' GROUP BY fly_month ORDER BY fly_month} AS flights\",\r\n \"tag\": \"with_flight_data\"}\r\n\r\n"] +[73.88999415397693, "o", "{\"image_hash\":\"3426d1225f506b1195a7fe0c19b18c503c4a36d350ec342061831738098087f4\"}"] +[73.91999415397693, "o", "\u001b[1m"] +[73.94999415397693, "o", "\u001b[36m"] +[73.97999415397693, "o", "\u001b[91m"] +[74.00999415397693, "o", "$"] +[74.03999415397693, "o", " "] +[74.06999415397694, "o", "\u001b[0m"] +[79.09999415397694, "o", "\u001b[H"] +[79.12999415397694, "o", "\u001b[J"] +[79.15999415397694, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run another command against the new layer to join the two datasets"] +[79.18999415397694, "o", "\r\n"] +[79.21999415397694, "o", "$"] +[79.24999415397694, "o", " "] +[79.27999415397694, "o", "c"] +[79.30999415397694, "o", "a"] +[79.33999415397695, "o", "t"] +[79.36999415397695, "o", " "] +[79.39999415397695, "o", "r"] +[79.42999415397695, "o", "e"] +[79.45999415397695, "o", "q"] +[79.48999415397695, "o", "u"] +[79.51999415397695, "o", "e"] +[79.54999415397695, "o", "s"] +[79.57999415397695, "o", "t"] +[79.60999415397696, "o", "_"] +[79.63999415397696, "o", "2"] +[79.66999415397696, "o", "."] +[79.69999415397696, "o", "j"] +[79.72999415397696, "o", "s"] +[79.75999415397696, "o", "o"] +[79.78999415397696, "o", "n"] +[79.81999415397696, "o", "\r\n"] +[79.84999415397697, "o", "$"] +[79.87999415397697, "o", " "] +[79.90999415397697, "o", "s"] +[79.93999415397697, "o", "g"] +[79.96999415397697, "o", "r"] +[79.99999415397697, "o", " "] +[80.02999415397697, "o", "c"] +[80.05999415397697, "o", "l"] +[80.08999415397697, "o", "o"] +[80.11999415397698, "o", "u"] +[80.14999415397698, "o", "d"] +[80.17999415397698, "o", " "] +[80.20999415397698, "o", "c"] +[80.23999415397698, "o", "u"] +[80.26999415397698, "o", "r"] +[80.29999415397698, "o", "l"] +[80.32999415397698, "o", " "] +[80.35999415397698, "o", "-"] +[80.38999415397699, "o", "t"] +[80.41999415397699, "o", " "] +[80.44999415397699, "o", "s"] +[80.47999415397699, "o", "p"] +[80.50999415397699, "o", "l"] +[80.53999415397699, "o", "i"] +[80.56999415397699, "o", "t"] +[80.599994153977, "o", "f"] +[80.629994153977, "o", "i"] +[80.659994153977, "o", "l"] +[80.689994153977, "o", "e"] +[80.719994153977, "o", " "] +[80.749994153977, "o", "s"] +[80.779994153977, "o", "p"] +[80.809994153977, "o", "l"] +[80.839994153977, "o", "i"] +[80.869994153977, "o", "t"] +[80.899994153977, "o", "g"] +[80.929994153977, "o", "r"] +[80.95999415397701, "o", "a"] +[80.98999415397701, "o", "p"] +[81.01999415397701, "o", "h"] +[81.04999415397701, "o", "-"] +[81.07999415397701, "o", "d"] +[81.10999415397701, "o", "e"] +[81.13999415397701, "o", "m"] +[81.16999415397702, "o", "o"] +[81.19999415397702, "o", "/"] +[81.22999415397702, "o", "w"] +[81.25999415397702, "o", "e"] +[81.28999415397702, "o", "a"] +[81.31999415397702, "o", "t"] +[81.34999415397702, "o", "h"] +[81.37999415397702, "o", "e"] +[81.40999415397702, "o", "r"] +[81.43999415397703, "o", ":"] +[81.46999415397703, "o", "w"] +[81.49999415397703, "o", "i"] +[81.52999415397703, "o", "t"] +[81.55999415397703, "o", "h"] +[81.58999415397703, "o", "_"] +[81.61999415397703, "o", "f"] +[81.64999415397703, "o", "l"] +[81.67999415397703, "o", "i"] +[81.70999415397704, "o", "g"] +[81.73999415397704, "o", "h"] +[81.76999415397704, "o", "t"] +[81.79999415397704, "o", "_"] +[81.82999415397704, "o", "d"] +[81.85999415397704, "o", "a"] +[81.88999415397704, "o", "t"] +[81.91999415397704, "o", "a"] +[81.94999415397704, "o", " "] +[81.97999415397705, "o", "@"] +[82.00999415397705, "o", "r"] +[82.03999415397705, "o", "e"] +[82.06999415397705, "o", "q"] +[82.09999415397705, "o", "u"] +[82.12999415397705, "o", "e"] +[82.15999415397705, "o", "s"] +[82.18999415397705, "o", "t"] +[82.21999415397705, "o", "_"] +[82.24999415397706, "o", "2"] +[82.27999415397706, "o", "."] +[82.30999415397706, "o", "j"] +[82.33999415397706, "o", "s"] +[82.36999415397706, "o", "o"] +[82.39999415397706, "o", "n"] +[82.42999415397706, "o", "\r\n"] +[82.45999415397706, "o", "\u001b[0m"] +[82.48999415397707, "o", "\r\n"] +[82.49130855560365, "o", "{\"command\": \"SQL CREATE TABLE rdu_flights_weather AS ( WITH monthly_summary AS (SELECT date_trunc ('month', date) AS month, AVG(temperaturemin) AS tmin_avg, AVG(temperaturemax) AS tmax_avg FROM rdu GROUP BY month) SELECT w.month, w.tmin_avg, w.tmax_avg, f.total_passengers FROM monthly_summary w JOIN flights f ON w.month = f.fly_month)\",\r\n \"tag\": \"joined_data\"}\r\n\r\n"] +[83.43463836669984, "o", "{\"image_hash\":\"f67604fb088ba2d2f7f8bff5468aee1bab1e6d0784aebe0659bd51d961dc943d\"}"] +[83.46463836669984, "o", "\u001b[1m"] +[83.49463836669985, "o", "\u001b[36m"] +[83.52463836669985, "o", "\u001b[91m"] +[83.55463836669985, "o", "$"] +[83.58463836669985, "o", " "] +[83.61463836669985, "o", "\u001b[0m"] +[88.64463836669985, "o", "\u001b[H"] +[88.67463836669985, "o", "\u001b[J"] +[88.70463836669985, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Pull the dataset and check out the new image"] +[88.73463836669985, "o", "\r\n"] +[88.76463836669986, "o", "$"] +[88.79463836669986, "o", " "] +[88.82463836669986, "o", "s"] +[88.85463836669986, "o", "g"] +[88.88463836669986, "o", "r"] +[88.91463836669986, "o", " "] +[88.94463836669986, "o", "p"] +[88.97463836669986, "o", "u"] +[89.00463836669987, "o", "l"] +[89.03463836669987, "o", "l"] +[89.06463836669987, "o", " "] +[89.09463836669987, "o", "w"] +[89.12463836669987, "o", "e"] +[89.15463836669987, "o", "a"] +[89.18463836669987, "o", "t"] +[89.21463836669987, "o", "h"] +[89.24463836669987, "o", "e"] +[89.27463836669988, "o", "r"] +[89.30463836669988, "o", "\r\n"] +[89.33463836669988, "o", "$"] +[89.36463836669988, "o", " "] +[89.39463836669988, "o", "s"] +[89.42463836669988, "o", "g"] +[89.45463836669988, "o", "r"] +[89.48463836669988, "o", " "] +[89.51463836669988, "o", "c"] +[89.54463836669989, "o", "h"] +[89.57463836669989, "o", "e"] +[89.60463836669989, "o", "c"] +[89.63463836669989, "o", "k"] +[89.66463836669989, "o", "o"] +[89.69463836669989, "o", "u"] +[89.72463836669989, "o", "t"] +[89.7546383666999, "o", " "] +[89.7846383666999, "o", "w"] +[89.8146383666999, "o", "e"] +[89.8446383666999, "o", "a"] +[89.8746383666999, "o", "t"] +[89.9046383666999, "o", "h"] +[89.9346383666999, "o", "e"] +[89.9646383666999, "o", "r"] +[89.9946383666999, "o", ":"] +[90.0246383666999, "o", "j"] +[90.0546383666999, "o", "o"] +[90.0846383666999, "o", "i"] +[90.11463836669991, "o", "n"] +[90.14463836669991, "o", "e"] +[90.17463836669991, "o", "d"] +[90.20463836669991, "o", "_"] +[90.23463836669991, "o", "d"] +[90.26463836669991, "o", "a"] +[90.29463836669991, "o", "t"] +[90.32463836669992, "o", "a"] +[90.35463836669992, "o", "\r\n"] +[90.38463836669992, "o", "\u001b[0m"] +[90.41463836669992, "o", "\r\n"] +[90.80514415741037, "o", "Gathering remote metadata...\r\n"] +[91.80514415741037, "o", "Fetched metadata for 2 images, 5 tables, 2 objects and 2 tags.\r\n"] +[92.23926028251718, "o", "Need to download 1 object (3.02 KiB), cache occupancy: 0.00 B/10.00 GiB\r\n"] +[92.29649361610483, "o", "Fetching 1 object, total size 3.02 KiB\r\nGetting download URLs from registry PostgresEngine data.splitgraph.com (85b17bb993c0441f83f3619be8faba12@data.splitgraph.com:5432/sgregistry)...\r\n"] +[93.29649361610483, "o", "\r 0%| | 0/1 [00:00 Foreign Scan on precinct_results (cost=20.00..489234.00 rows=489234 width=1)\r\nFilter: ((state)::text = 'New York'::text)\r\nMulticorn: Original Multicorn quals: [state = New York]\r\nMulticorn: CNF quals: [[('state', '=', 'New York')]]\r\nMulticorn: Objects removed by filter: 15\r\nMulticorn: Scan through 5 object(s) (6.63 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining false, Optimization false, Expressions true, Deforming true\r\n"] +[13.557968511581333, "o", "\u001b[1m"] +[13.587968511581332, "o", "\u001b[36m"] +[13.617968511581331, "o", "\u001b[91m"] +[13.64796851158133, "o", "$"] +[13.67796851158133, "o", " "] +[13.70796851158133, "o", "\u001b[0m"] +[18.73796851158133, "o", "\u001b[H"] +[18.76796851158133, "o", "\u001b[J"] +[18.79796851158133, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Currently we have no fragments in cache. Let's run this query and check the cache again"] +[18.827968511581332, "o", "\r\n"] +[18.857968511581333, "o", "$"] +[18.887968511581334, "o", " "] +[18.917968511581336, "o", "s"] +[18.947968511581337, "o", "g"] +[18.977968511581338, "o", "r"] +[19.00796851158134, "o", " "] +[19.03796851158134, "o", "o"] +[19.06796851158134, "o", "b"] +[19.097968511581342, "o", "j"] +[19.127968511581344, "o", "e"] +[19.157968511581345, "o", "c"] +[19.187968511581346, "o", "t"] +[19.217968511581347, "o", "s"] +[19.247968511581348, "o", " "] +[19.27796851158135, "o", "-"] +[19.30796851158135, "o", "-"] +[19.33796851158135, "o", "l"] +[19.367968511581353, "o", "o"] +[19.397968511581354, "o", "c"] +[19.427968511581355, "o", "a"] +[19.457968511581356, "o", "l"] +[19.487968511581357, "o", "\r\n"] +[19.51796851158136, "o", "$"] +[19.54796851158136, "o", " "] +[19.57796851158136, "o", "s"] +[19.607968511581362, "o", "g"] +[19.637968511581363, "o", "r"] +[19.667968511581364, "o", " "] +[19.697968511581365, "o", "s"] +[19.727968511581366, "o", "q"] +[19.757968511581367, "o", "l"] +[19.78796851158137, "o", " "] +[19.81796851158137, "o", "-"] +[19.84796851158137, "o", "-"] +[19.877968511581372, "o", "i"] +[19.907968511581373, "o", "m"] +[19.937968511581374, "o", "a"] +[19.967968511581375, "o", "g"] +[19.997968511581377, "o", "e"] +[20.027968511581378, "o", " "] +[20.05796851158138, "o", "s"] +[20.08796851158138, "o", "p"] +[20.11796851158138, "o", "l"] +[20.147968511581382, "o", "i"] +[20.177968511581383, "o", "t"] +[20.207968511581385, "o", "g"] +[20.237968511581386, "o", "r"] +[20.267968511581387, "o", "a"] +[20.297968511581388, "o", "p"] +[20.32796851158139, "o", "h"] +[20.35796851158139, "o", "/"] +[20.38796851158139, "o", "2"] +[20.417968511581392, "o", "0"] +[20.447968511581394, "o", "1"] +[20.477968511581395, "o", "6"] +[20.507968511581396, "o", "_"] +[20.537968511581397, "o", "e"] +[20.567968511581398, "o", "l"] +[20.5979685115814, "o", "e"] +[20.6279685115814, "o", "c"] +[20.6579685115814, "o", "t"] +[20.687968511581403, "o", "i"] +[20.717968511581404, "o", "o"] +[20.747968511581405, "o", "n"] +[20.777968511581406, "o", ":"] +[20.807968511581407, "o", "l"] +[20.83796851158141, "o", "a"] +[20.86796851158141, "o", "t"] +[20.89796851158141, "o", "e"] +[20.927968511581412, "o", "s"] +[20.957968511581413, "o", "t"] +[20.987968511581414, "o", " "] +[21.017968511581415, "o", "\\"] +[21.047968511581416, "o", "\r\n "] +[21.077968511581417, "o", "\""] +[21.10796851158142, "o", "S"] +[21.13796851158142, "o", "E"] +[21.16796851158142, "o", "L"] +[21.197968511581422, "o", "E"] +[21.227968511581423, "o", "C"] +[21.257968511581424, "o", "T"] +[21.287968511581425, "o", " "] +[21.317968511581427, "o", "S"] +[21.347968511581428, "o", "U"] +[21.37796851158143, "o", "M"] +[21.40796851158143, "o", "("] +[21.43796851158143, "o", "v"] +[21.467968511581432, "o", "o"] +[21.497968511581433, "o", "t"] +[21.527968511581435, "o", "e"] +[21.557968511581436, "o", "s"] +[21.587968511581437, "o", ")"] +[21.617968511581438, "o", " "] +[21.64796851158144, "o", "F"] +[21.67796851158144, "o", "R"] +[21.70796851158144, "o", "O"] +[21.737968511581442, "o", "M"] +[21.767968511581444, "o", " "] +[21.797968511581445, "o", "p"] +[21.827968511581446, "o", "r"] +[21.857968511581447, "o", "e"] +[21.887968511581448, "o", "c"] +[21.91796851158145, "o", "i"] +[21.94796851158145, "o", "n"] +[21.97796851158145, "o", "c"] +[22.007968511581453, "o", "t"] +[22.037968511581454, "o", "_"] +[22.067968511581455, "o", "r"] +[22.097968511581456, "o", "e"] +[22.127968511581457, "o", "s"] +[22.15796851158146, "o", "u"] +[22.18796851158146, "o", "l"] +[22.21796851158146, "o", "t"] +[22.247968511581462, "o", "s"] +[22.277968511581463, "o", " "] +[22.307968511581464, "o", "W"] +[22.337968511581465, "o", "H"] +[22.367968511581466, "o", "E"] +[22.397968511581468, "o", "R"] +[22.42796851158147, "o", "E"] +[22.45796851158147, "o", " "] +[22.48796851158147, "o", "s"] +[22.517968511581472, "o", "t"] +[22.547968511581473, "o", "a"] +[22.577968511581474, "o", "t"] +[22.607968511581475, "o", "e"] +[22.637968511581477, "o", " "] +[22.667968511581478, "o", "="] +[22.69796851158148, "o", " "] +[22.72796851158148, "o", "'"] +[22.75796851158148, "o", "N"] +[22.787968511581482, "o", "e"] +[22.817968511581483, "o", "w"] +[22.847968511581485, "o", " "] +[22.877968511581486, "o", "Y"] +[22.907968511581487, "o", "o"] +[22.937968511581488, "o", "r"] +[22.96796851158149, "o", "k"] +[22.99796851158149, "o", "'"] +[23.02796851158149, "o", "\""] +[23.057968511581493, "o", "\r\n"] +[23.087968511581494, "o", "$"] +[23.117968511581495, "o", " "] +[23.147968511581496, "o", "s"] +[23.177968511581497, "o", "g"] +[23.207968511581498, "o", "r"] +[23.2379685115815, "o", " "] +[23.2679685115815, "o", "o"] +[23.2979685115815, "o", "b"] +[23.327968511581503, "o", "j"] +[23.357968511581504, "o", "e"] +[23.387968511581505, "o", "c"] +[23.417968511581506, "o", "t"] +[23.447968511581507, "o", "s"] +[23.47796851158151, "o", " "] +[23.50796851158151, "o", "-"] +[23.53796851158151, "o", "-"] +[23.567968511581512, "o", "l"] +[23.597968511581513, "o", "o"] +[23.627968511581514, "o", "c"] +[23.657968511581515, "o", "a"] +[23.687968511581516, "o", "l"] +[23.717968511581518, "o", "\r\n"] +[23.74796851158152, "o", "\u001b[0m"] +[23.77796851158152, "o", "\r\n"] +[24.149169788360695, "o", "\r\n"] +[25.149169788360695, "o", "7.91188e+06\r\n"] +[25.507640466690162, "o", "o65dbd9dc992982689ec65866ab733be69c897c659d93488457a2fccb63e97c\r\no974b20261ee5f1ac124a8445a65c00e6377cfabb93b5db92bd60fc7ca3fcee\r\no9c33b53f1a4872c598ad9d08aaafd78fabce1f16ef4c5e19ad9756b9b85fda\r\no9d4cf85101cc4d431c895998cf1cad642f1fe6cd923c8209f2df38441afeeb\r\noc438159794e378ca23c306143ccdc7ce1683045f80a511aeeabb19302be63d\r\n"] +[25.537640466690164, "o", "\u001b[1m"] +[25.567640466690165, "o", "\u001b[36m"] +[25.597640466690166, "o", "\u001b[91m"] +[25.627640466690167, "o", "$"] +[25.657640466690168, "o", " "] +[25.68764046669017, "o", "\u001b[0m"] +[30.71764046669017, "o", "\u001b[H"] +[30.74764046669017, "o", "\u001b[J"] +[30.777640466690173, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Since default indexing in Splitgraph is done by min-max values for every column"] +[30.807640466690174, "o", "\r\n"] +[30.837640466690175, "o", "$ # in every fragment, it's going to do worse if multiple fragments span the same value\r\n"] +[30.867640466690176, "o", "$"] +[30.897640466690177, "o", " "] +[30.92764046669018, "o", "s"] +[30.95764046669018, "o", "g"] +[30.98764046669018, "o", "r"] +[31.01764046669018, "o", " "] +[31.047640466690183, "o", "s"] +[31.077640466690184, "o", "q"] +[31.107640466690185, "o", "l"] +[31.137640466690186, "o", " "] +[31.167640466690187, "o", "-"] +[31.19764046669019, "o", "-"] +[31.22764046669019, "o", "i"] +[31.25764046669019, "o", "m"] +[31.287640466690192, "o", "a"] +[31.317640466690193, "o", "g"] +[31.347640466690194, "o", "e"] +[31.377640466690195, "o", " "] +[31.407640466690196, "o", "s"] +[31.437640466690198, "o", "p"] +[31.4676404666902, "o", "l"] +[31.4976404666902, "o", "i"] +[31.5276404666902, "o", "t"] +[31.557640466690202, "o", "g"] +[31.587640466690203, "o", "r"] +[31.617640466690204, "o", "a"] +[31.647640466690206, "o", "p"] +[31.677640466690207, "o", "h"] +[31.707640466690208, "o", "/"] +[31.73764046669021, "o", "2"] +[31.76764046669021, "o", "0"] +[31.79764046669021, "o", "1"] +[31.827640466690212, "o", "6"] +[31.857640466690214, "o", "_"] +[31.887640466690215, "o", "e"] +[31.917640466690216, "o", "l"] +[31.947640466690217, "o", "e"] +[31.977640466690218, "o", "c"] +[32.00764046669022, "o", "t"] +[32.03764046669022, "o", "i"] +[32.06764046669022, "o", "o"] +[32.09764046669022, "o", "n"] +[32.127640466690224, "o", ":"] +[32.157640466690225, "o", "l"] +[32.187640466690226, "o", "a"] +[32.21764046669023, "o", "t"] +[32.24764046669023, "o", "e"] +[32.27764046669023, "o", "s"] +[32.30764046669023, "o", "t"] +[32.33764046669023, "o", " "] +[32.36764046669023, "o", "\\"] +[32.397640466690234, "o", "\r\n "] +[32.427640466690235, "o", "\""] +[32.457640466690236, "o", "E"] +[32.48764046669024, "o", "X"] +[32.51764046669024, "o", "P"] +[32.54764046669024, "o", "L"] +[32.57764046669024, "o", "A"] +[32.60764046669024, "o", "I"] +[32.63764046669024, "o", "N"] +[32.667640466690244, "o", " "] +[32.697640466690245, "o", "S"] +[32.72764046669025, "o", "E"] +[32.75764046669025, "o", "L"] +[32.78764046669025, "o", "E"] +[32.81764046669025, "o", "C"] +[32.84764046669025, "o", "T"] +[32.87764046669025, "o", " "] +[32.90764046669025, "o", "S"] +[32.937640466690254, "o", "U"] +[32.967640466690256, "o", "M"] +[32.99764046669026, "o", "("] +[33.02764046669026, "o", "v"] +[33.05764046669026, "o", "o"] +[33.08764046669026, "o", "t"] +[33.11764046669026, "o", "e"] +[33.14764046669026, "o", "s"] +[33.177640466690264, "o", ")"] +[33.207640466690265, "o", " "] +[33.237640466690266, "o", "F"] +[33.26764046669027, "o", "R"] +[33.29764046669027, "o", "O"] +[33.32764046669027, "o", "M"] +[33.35764046669027, "o", " "] +[33.38764046669027, "o", "p"] +[33.41764046669027, "o", "r"] +[33.447640466690274, "o", "e"] +[33.477640466690275, "o", "c"] +[33.507640466690276, "o", "i"] +[33.53764046669028, "o", "n"] +[33.56764046669028, "o", "c"] +[33.59764046669028, "o", "t"] +[33.62764046669028, "o", "_"] +[33.65764046669028, "o", "r"] +[33.68764046669028, "o", "e"] +[33.717640466690284, "o", "s"] +[33.747640466690285, "o", "u"] +[33.777640466690286, "o", "l"] +[33.80764046669029, "o", "t"] +[33.83764046669029, "o", "s"] +[33.86764046669029, "o", " "] +[33.89764046669029, "o", "W"] +[33.92764046669029, "o", "H"] +[33.95764046669029, "o", "E"] +[33.987640466690294, "o", "R"] +[34.017640466690295, "o", "E"] +[34.0476404666903, "o", " "] +[34.0776404666903, "o", "c"] +[34.1076404666903, "o", "o"] +[34.1376404666903, "o", "u"] +[34.1676404666903, "o", "n"] +[34.1976404666903, "o", "t"] +[34.2276404666903, "o", "y"] +[34.257640466690304, "o", "_"] +[34.287640466690306, "o", "n"] +[34.31764046669031, "o", "a"] +[34.34764046669031, "o", "m"] +[34.37764046669031, "o", "e"] +[34.40764046669031, "o", " "] +[34.43764046669031, "o", "="] +[34.46764046669031, "o", " "] +[34.497640466690314, "o", "'"] +[34.527640466690315, "o", "N"] +[34.557640466690316, "o", "e"] +[34.58764046669032, "o", "w"] +[34.61764046669032, "o", " "] +[34.64764046669032, "o", "Y"] +[34.67764046669032, "o", "o"] +[34.70764046669032, "o", "r"] +[34.73764046669032, "o", "k"] +[34.767640466690324, "o", " "] +[34.797640466690325, "o", "C"] +[34.827640466690326, "o", "o"] +[34.85764046669033, "o", "u"] +[34.88764046669033, "o", "n"] +[34.91764046669033, "o", "t"] +[34.94764046669033, "o", "y"] +[34.97764046669033, "o", "'"] +[35.00764046669033, "o", "\""] +[35.037640466690334, "o", "\r\n"] +[35.067640466690335, "o", "\u001b[0m"] +[35.097640466690336, "o", "\r\n"] +[36.031648349762236, "o", "Aggregate (cost=1893957.09..1893957.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..1889234.00 rows=1889234 width=1)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 1\r\nMulticorn: Scan through 19 object(s) (25.51 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Def"] +[36.031661701202665, "o", "orming true\r\n"] +[36.06166170120267, "o", "\u001b[1m"] +[36.09166170120267, "o", "\u001b[36m"] +[36.12166170120267, "o", "\u001b[91m"] +[36.15166170120267, "o", "$"] +[36.18166170120267, "o", " "] +[36.21166170120267, "o", "\u001b[0m"] +[41.24166170120267, "o", "\u001b[H"] +[41.271661701202675, "o", "\u001b[J"] +[41.301661701202676, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Let's download the whole dataset and add a bloom filter index on county_name"] +[41.33166170120268, "o", "\r\n"] +[41.36166170120268, "o", "$"] +[41.39166170120268, "o", " "] +[41.42166170120268, "o", "s"] +[41.45166170120268, "o", "g"] +[41.48166170120268, "o", "r"] +[41.511661701202684, "o", " "] +[41.541661701202685, "o", "r"] +[41.571661701202686, "o", "e"] +[41.60166170120269, "o", "i"] +[41.63166170120269, "o", "n"] +[41.66166170120269, "o", "d"] +[41.69166170120269, "o", "e"] +[41.72166170120269, "o", "x"] +[41.75166170120269, "o", " "] +[41.781661701202694, "o", "-"] +[41.811661701202695, "o", "i"] +[41.841661701202696, "o", " "] +[41.8716617012027, "o", "'"] +[41.9016617012027, "o", "{"] +[41.9316617012027, "o", "\""] +[41.9616617012027, "o", "b"] +[41.9916617012027, "o", "l"] +[42.0216617012027, "o", "o"] +[42.051661701202704, "o", "o"] +[42.081661701202705, "o", "m"] +[42.111661701202706, "o", "\""] +[42.14166170120271, "o", ":"] +[42.17166170120271, "o", " "] +[42.20166170120271, "o", "{"] +[42.23166170120271, "o", "\""] +[42.26166170120271, "o", "c"] +[42.29166170120271, "o", "o"] +[42.321661701202714, "o", "u"] +[42.351661701202715, "o", "n"] +[42.38166170120272, "o", "t"] +[42.41166170120272, "o", "y"] +[42.44166170120272, "o", "_"] +[42.47166170120272, "o", "n"] +[42.50166170120272, "o", "a"] +[42.53166170120272, "o", "m"] +[42.56166170120272, "o", "e"] +[42.591661701202725, "o", "\""] +[42.621661701202726, "o", ":"] +[42.65166170120273, "o", " "] +[42.68166170120273, "o", "{"] +[42.71166170120273, "o", "\""] +[42.74166170120273, "o", "p"] +[42.77166170120273, "o", "r"] +[42.80166170120273, "o", "o"] +[42.831661701202734, "o", "b"] +[42.861661701202735, "o", "a"] +[42.891661701202736, "o", "b"] +[42.92166170120274, "o", "i"] +[42.95166170120274, "o", "l"] +[42.98166170120274, "o", "i"] +[43.01166170120274, "o", "t"] +[43.04166170120274, "o", "y"] +[43.07166170120274, "o", "\""] +[43.101661701202744, "o", ":"] +[43.131661701202745, "o", " "] +[43.161661701202746, "o", "0"] +[43.19166170120275, "o", "."] +[43.22166170120275, "o", "0"] +[43.25166170120275, "o", "1"] +[43.28166170120275, "o", "}"] +[43.31166170120275, "o", "}"] +[43.34166170120275, "o", "}"] +[43.371661701202754, "o", "'"] +[43.401661701202755, "o", " "] +[43.431661701202756, "o", "\\"] +[43.46166170120276, "o", "\r\n "] +[43.49166170120276, "o", "s"] +[43.52166170120276, "o", "p"] +[43.55166170120276, "o", "l"] +[43.58166170120276, "o", "i"] +[43.61166170120276, "o", "t"] +[43.641661701202764, "o", "g"] +[43.671661701202765, "o", "r"] +[43.70166170120277, "o", "a"] +[43.73166170120277, "o", "p"] +[43.76166170120277, "o", "h"] +[43.79166170120277, "o", "/"] +[43.82166170120277, "o", "2"] +[43.85166170120277, "o", "0"] +[43.88166170120277, "o", "1"] +[43.911661701202775, "o", "6"] +[43.941661701202776, "o", "_"] +[43.97166170120278, "o", "e"] +[44.00166170120278, "o", "l"] +[44.03166170120278, "o", "e"] +[44.06166170120278, "o", "c"] +[44.09166170120278, "o", "t"] +[44.12166170120278, "o", "i"] +[44.151661701202784, "o", "o"] +[44.181661701202785, "o", "n"] +[44.211661701202786, "o", ":"] +[44.24166170120279, "o", "l"] +[44.27166170120279, "o", "a"] +[44.30166170120279, "o", "t"] +[44.33166170120279, "o", "e"] +[44.36166170120279, "o", "s"] +[44.39166170120279, "o", "t"] +[44.421661701202794, "o", " "] +[44.451661701202795, "o", "p"] +[44.481661701202796, "o", "r"] +[44.5116617012028, "o", "e"] +[44.5416617012028, "o", "c"] +[44.5716617012028, "o", "i"] +[44.6016617012028, "o", "n"] +[44.6316617012028, "o", "c"] +[44.6616617012028, "o", "t"] +[44.691661701202804, "o", "_"] +[44.721661701202805, "o", "r"] +[44.751661701202806, "o", "e"] +[44.78166170120281, "o", "s"] +[44.81166170120281, "o", "u"] +[44.84166170120281, "o", "l"] +[44.87166170120281, "o", "t"] +[44.90166170120281, "o", "s"] +[44.93166170120281, "o", "\r\n"] +[44.961661701202814, "o", "\u001b[0m"] +[44.991661701202815, "o", "\r\n"] +[45.36147991180462, "o", "Reindexing table splitgraph/2016_election:3835145ada3f07cad99087d1b1071122d58c48783cbfe4694c101d35651fba90/precinct_results\r\n"] +[45.39437118530316, "o", "Need to download 20 objects (20.19 MiB), cache occupancy: 6.63 MiB/10.00 GiB\r\n"] +[45.44607463836712, "o", "Fetching 15 objects, total size 20.19 MiB\r\n"] +[45.44737235069317, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (85b17bb993c0441f83f3619be8faba12@data.splitgraph.com:5432/sgregistry)...\r\n"] +[46.44737235069317, "o", "\r 0%| | 0/15 [00:00 Foreign Scan on precinct_results (cost=20.00..200000.00 rows=200000 width=1)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 18\r\nMulticorn: Scan through 2 object(s) (2.64 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining false, Optimization false, Expressions true, Deform"] +[103.6253194808966, "o", "ing true\r\n"] +[103.6553194808966, "o", "\u001b[1m"] +[103.6853194808966, "o", "\u001b[36m"] +[103.7153194808966, "o", "\u001b[91m"] +[103.7453194808966, "o", "$"] +[103.7753194808966, "o", " "] +[103.8053194808966, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.18/dbt.cast b/content/casts/versioned/archive/v0.2.18/dbt.cast new file mode 100644 index 00000000..f2222534 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.18/dbt.cast @@ -0,0 +1,2403 @@ +{"version": 2, "width": 100, "height": 48, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1637163095, "metadata": {"tss": [{"h": "dbt must be installed for this to work (pip install dbt)", "ts": 0.06}, {"h": "Ingest the initial data (in CSV) from this branch of the project.", "ts": 12.059999999999999}, {"h": "Snapshot the initial data with Splitgraph.", "ts": 26.939058341980104}, {"h": "Inspect the original data", "ts": 36.633727102279906}, {"h": "The status column in the raw_orders table in the initial dataset can", "ts": 49.633727102279906}, {"h": "Commit this dataset and check out the original data", "ts": 60.6456969070439}, {"h": "Check out the 'serious' version of the dbt project that uses data from", "ts": 71.03028303146421}, {"h": "Check that dbt is set up to connect to the Splitgraph engine.", "ts": 78.01680926323003}, {"h": "Now run the dbt models.", "ts": 101.51680926323003}, {"h": "Take a look at the built dataset and commit it.", "ts": 122.01680926323003}, {"h": "Check out the new version of the raw dataset and run dbt against it as well.", "ts": 136.51680926323002}, {"h": "Create an image from the new data.", "ts": 158.01680926323002}, {"h": "We now have two versions of the source and the target dataset.", "ts": 168.01680926323002}, {"h": "Inspect the difference between the two datasets that dbt built.", "ts": 175.76798199653697}, {"h": "Run a sample query: how much in bank transfer refunds did we process?", "ts": 185.26798199653697}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # dbt must be installed for this to work (pip install dbt)"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Clone the Jaffle Shop dbt example project\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "d"] +[0.27, "o", "b"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "-"] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "v"] +[0.4500000000000002, "o", "e"] +[0.4800000000000002, "o", "r"] +[0.5100000000000002, "o", "s"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "n"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "$"] +[0.6900000000000004, "o", " "] +[0.7200000000000004, "o", "g"] +[0.7500000000000004, "o", "i"] +[0.7800000000000005, "o", "t"] +[0.8100000000000005, "o", " "] +[0.8400000000000005, "o", "c"] +[0.8700000000000006, "o", "l"] +[0.9000000000000006, "o", "o"] +[0.9300000000000006, "o", "n"] +[0.9600000000000006, "o", "e"] +[0.9900000000000007, "o", " "] +[1.0200000000000007, "o", "h"] +[1.0500000000000007, "o", "t"] +[1.0800000000000007, "o", "t"] +[1.1100000000000008, "o", "p"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", ":"] +[1.2000000000000008, "o", "/"] +[1.2300000000000009, "o", "/"] +[1.260000000000001, "o", "g"] +[1.290000000000001, "o", "i"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", "h"] +[1.380000000000001, "o", "u"] +[1.410000000000001, "o", "b"] +[1.440000000000001, "o", "."] +[1.470000000000001, "o", "c"] +[1.500000000000001, "o", "o"] +[1.5300000000000011, "o", "m"] +[1.5600000000000012, "o", "/"] +[1.5900000000000012, "o", "s"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "l"] +[1.6800000000000013, "o", "i"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "g"] +[1.7700000000000014, "o", "r"] +[1.8000000000000014, "o", "a"] +[1.8300000000000014, "o", "p"] +[1.8600000000000014, "o", "h"] +[1.8900000000000015, "o", "/"] +[1.9200000000000015, "o", "j"] +[1.9500000000000015, "o", "a"] +[1.9800000000000015, "o", "f"] +[2.0100000000000016, "o", "f"] +[2.0400000000000014, "o", "l"] +[2.070000000000001, "o", "e"] +[2.100000000000001, "o", "_"] +[2.130000000000001, "o", "s"] +[2.1600000000000006, "o", "h"] +[2.1900000000000004, "o", "o"] +[2.22, "o", "p"] +[2.25, "o", "_"] +[2.28, "o", "a"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "c"] +[2.369999999999999, "o", "h"] +[2.399999999999999, "o", "i"] +[2.429999999999999, "o", "v"] +[2.4599999999999986, "o", "e"] +[2.4899999999999984, "o", "."] +[2.5199999999999982, "o", "g"] +[2.549999999999998, "o", "i"] +[2.579999999999998, "o", "t"] +[2.6099999999999977, "o", "\r\n"] +[2.6399999999999975, "o", "$"] +[2.6699999999999973, "o", " "] +[2.699999999999997, "o", "m"] +[2.729999999999997, "o", "v"] +[2.7599999999999967, "o", " "] +[2.7899999999999965, "o", "j"] +[2.8199999999999963, "o", "a"] +[2.849999999999996, "o", "f"] +[2.879999999999996, "o", "f"] +[2.9099999999999957, "o", "l"] +[2.9399999999999955, "o", "e"] +[2.9699999999999953, "o", "_"] +[2.999999999999995, "o", "s"] +[3.029999999999995, "o", "h"] +[3.0599999999999947, "o", "o"] +[3.0899999999999945, "o", "p"] +[3.1199999999999943, "o", "_"] +[3.149999999999994, "o", "a"] +[3.179999999999994, "o", "r"] +[3.2099999999999937, "o", "c"] +[3.2399999999999936, "o", "h"] +[3.2699999999999934, "o", "i"] +[3.299999999999993, "o", "v"] +[3.329999999999993, "o", "e"] +[3.3599999999999928, "o", " "] +[3.3899999999999926, "o", "j"] +[3.4199999999999924, "o", "a"] +[3.449999999999992, "o", "f"] +[3.479999999999992, "o", "f"] +[3.509999999999992, "o", "l"] +[3.5399999999999916, "o", "e"] +[3.5699999999999914, "o", "_"] +[3.599999999999991, "o", "s"] +[3.629999999999991, "o", "h"] +[3.659999999999991, "o", "o"] +[3.6899999999999906, "o", "p"] +[3.7199999999999904, "o", "\r\n"] +[3.7499999999999902, "o", "\u001b[0m"] +[3.77999999999999, "o", "\r\n"] +[4.7799999999999905, "o", "installed version: 0.18.0\r\n latest version: 0.21.0\r\n\r\nYour version of dbt is out of date! You can find instructions for upgrading here:\r\nhttps://docs.getdbt.com/docs/installation\r\n\r\nPlugins:\r\n - redshift: 0.18.0\r\n - bigquery: 0.18.0\r\n - postgres: 0.18.0\r\n - snowflake: 0.18.0\r\n"] +[4.781139163970938, "o", "\u001b[0m"] +[4.783197193145742, "o", "Cloning into 'jaffle_shop_archive'...\r\n"] +[5.49231746673583, "o", "remote: Enumerating objects: 405, done. "] +[5.492348937988272, "o", "\r\n"] +[5.492369680404654, "o", "remote: Counting objects: 0% (1/405) \r"] +[5.492419986724844, "o", "remote: Counting objects: 1% (5/405) \r"] +[5.492510824203482, "o", "remote: Counting objects: 2% (9/405) \r"] +[5.492623834609976, "o", "remote: Counting objects: 3% (13/405) \r"] +[5.492850332260122, "o", "remote: Counting objects: 4% (17/405) \r"] +[5.492869167327871, "o", "remote: Counting objects: 5% (21/405) \r"] +[5.492884426116934, "o", "remote: Counting objects: 6% (25/405) \r"] +[5.492897539138784, "o", "remote: Counting objects: 7% (29/405) \r"] +[5.492912559509268, "o", "remote: Counting objects: 8% (33/405) \r"] +[5.492928056716909, "o", "remote: Counting objects: 9% (37/405) \r"] +[5.49294116973876, "o", "remote: Counting objects: 10% (41/405) \r"] +[5.492952375411978, "o", "remote: Counting objects: 11% (45/405) \r"] +[5.492965965270987, "o", "remote: Counting objects: 12% (49/405) \r"] +[5.4929774093627834, "o", "remote: Counting objects: 13% (53/405) \r"] +[5.492992191314688, "o", "remote: Counting objects: 14% (57/405) \r"] +[5.493003635406485, "o", "remote: Counting objects: 15% (61/405) \r"] +[5.49302080154418, "o", "remote: Counting objects: 16% (65/405) \r"] +[5.493035345077505, "o", "remote: Counting objects: 17% (69/405) \r"] +[5.493047504425039, "o", "remote: Counting objects: 18% (73/405) \r"] +[5.493058471679678, "o", "remote: Counting objects: 19% (77/405) \r"] +[5.493071823120108, "o", "remote: Counting objects: 20% (81/405) \r"] +[5.493082790374746, "o", "remote: Counting objects: 21% (86/405) \r"] +[5.493093519210806, "o", "remote: Counting objects: 22% (90/405) \r"] +[5.4931042480468655, "o", "remote: Counting objects: 23% (94/405) \r"] +[5.493117361068716, "o", "remote: Counting objects: 24% (98/405) \r"] +[5.493128328323355, "o", "remote: Counting objects: 25% (102/405) \r"] +[5.493139057159414, "o", "remote: Counting objects: 26% (106/405) \r"] +[5.493150024414053, "o", "remote: Counting objects: 27% (110/405) \r"] +[5.493163137435904, "o", "remote: Counting objects: 28% (114/405) \r"] +[5.493174343109121, "o", "remote: Counting objects: 29% (118/405) \r"] +[5.493187456130972, "o", "remote: Counting objects: 30% (122/405) \r"] +[5.493198423385611, "o", "remote: Counting objects: 31% (126/405) \r"] +[5.493211536407461, "o", "remote: Counting objects: 32% (130/405) \r"] +[5.493224649429312, "o", "remote: Counting objects: 33% (134/405) \r"] +[5.4932384777069, "o", "remote: Counting objects: 34% (138/405) \r"] +[5.49325159072875, "o", "remote: Counting objects: 35% (142/405) \r"] +[5.4932663726806545, "o", "remote: Counting objects: 36% (146/405) \r"] +[5.493277578353872, "o", "remote: Counting objects: 37% (150/405) \r"] +[5.493290929794302, "o", "remote: Counting objects: 38% (154/405) \r"] +[5.493301658630362, "o", "remote: Counting objects: 39% (158/405) \r"] +[5.493316440582266, "o", "remote: Counting objects: 40% (162/405) \r"] +[5.493329315185537, "o", "remote: Counting objects: 41% (167/405) \r"] +[5.493343381881704, "o", "remote: Counting objects: 42% (171/405) \r"] +[5.493357210159292, "o", "remote: Counting objects: 43% (175/405) \r"] +[5.493370323181143, "o", "remote: Counting objects: 44% (179/405) \r"] +[5.493381528854361, "o", "remote: Counting objects: 45% (183/405) \r"] +[5.493394641876211, "o", "remote: Counting objects: 46% (187/405) \r"] +[5.493405370712271, "o", "remote: Counting objects: 47% (191/405) \r"] +[5.493418006896963, "o", "remote: Counting objects: 48% (195/405) \r"] +[5.4934306430816555, "o", "remote: Counting objects: 49% (199/405) \r"] +[5.493442087173452, "o", "remote: Counting objects: 50% (203/405) \r"] +[5.493454961776724, "o", "remote: Counting objects: 51% (207/405) \r"] +[5.493468790054312, "o", "remote: Counting objects: 52% (211/405) \r"] +[5.493480234146109, "o", "remote: Counting objects: 53% (215/405) \r"] +[5.493493347167959, "o", "remote: Counting objects: 54% (219/405) \r"] +[5.493504314422598, "o", "remote: Counting objects: 55% (223/405) \r"] +[5.493515281677237, "o", "remote: Counting objects: 56% (227/405) \r"] +[5.493526248931875, "o", "remote: Counting objects: 57% (231/405) \r"] +[5.493538885116568, "o", "remote: Counting objects: 58% (235/405) \r"] +[5.493549852371206, "o", "remote: Counting objects: 59% (239/405) \r"] +[5.493561058044424, "o", "remote: Counting objects: 60% (243/405) \r"] +[5.493571786880484, "o", "remote: Counting objects: 61% (248/405) \r"] +[5.493584661483755, "o", "remote: Counting objects: 62% (252/405) \r"] +[5.493595628738394, "o", "remote: Counting objects: 63% (256/405) \r"] +[5.4936065959930325, "o", "remote: Counting objects: 64% (260/405) \r"] +[5.493617324829092, "o", "remote: Counting objects: 65% (264/405) \r"] +[5.4936301994323635, "o", "remote: Counting objects: 66% (268/405) \r"] +[5.493641166687002, "o", "remote: Counting objects: 67% (272/405) \r"] +[5.493654279708853, "o", "remote: Counting objects: 68% (276/405) \r"] +[5.493665008544912, "o", "remote: Counting objects: 69% (280/405) \r"] +[5.493677644729605, "o", "remote: Counting objects: 70% (284/405) \r"] +[5.4936888504028225, "o", "remote: Counting objects: 71% (288/405) \r"] +[5.493701725006094, "o", "remote: Counting objects: 72% (292/405) \r"] +[5.493715076446524, "o", "remote: Counting objects: 73% (296/405) \r"] +[5.493726043701162, "o", "remote: Counting objects: 74% (300/405) \r"] +[5.493739156723013, "o", "remote: Counting objects: 75% (304/405) \r"] +[5.493750362396231, "o", "remote: Counting objects: 76% (308/405) \r"] +[5.493764190673819, "o", "remote: Counting objects: 77% (312/405) \r"] +[5.493777542114248, "o", "remote: Counting objects: 78% (316/405) \r"] +[5.493788509368887, "o", "remote: Counting objects: 79% (320/405) \r"] +[5.493802337646475, "o", "remote: Counting objects: 80% (324/405) \r"] +[5.493817119598379, "o", "remote: Counting objects: 81% (329/405) \r"] +[5.493831186294546, "o", "remote: Counting objects: 82% (333/405) \r"] +[5.493844299316397, "o", "remote: Counting objects: 83% (337/405) \r"] +[5.4938555049896145, "o", "remote: Counting objects: 84% (341/405) \r"] +[5.493868856430044, "o", "remote: Counting objects: 85% (345/405) \r"] +[5.493880062103262, "o", "remote: Counting objects: 86% (349/405) \r"] +[5.49389126777648, "o", "remote: Counting objects: 87% (353/405) \r"] +[5.493904619216909, "o", "remote: Counting objects: 88% (357/405) \r"] +[5.493915824890127, "o", "remote: Counting objects: 89% (361/405) \r"] +[5.493928937911978, "o", "remote: Counting objects: 90% (365/405) \r"] +[5.4939422893524075, "o", "remote: Counting objects: 91% (369/405) \r"] +[5.493953733444204, "o", "remote: Counting objects: 92% (373/405) \r"] +[5.493966846466055, "o", "remote: Counting objects: 93% (377/405) \r"] +[5.4939775753021145, "o", "remote: Counting objects: 94% (381/405) \r"] +[5.493990449905386, "o", "remote: Counting objects: 95% (385/405) \r"] +[5.494001655578604, "o", "remote: Counting objects: 96% (389/405) \r"] +[5.494014530181875, "o", "remote: Counting objects: 97% (393/405) \r"] +[5.494027881622305, "o", "remote: Counting objects: 98% (397/405) \r"] +[5.494038848876944, "o", "remote: Counting objects: 99% (401/405) \r"] +[5.494051723480215, "o", "remote: Counting objects: 100% (405/405) \r"] +[5.494065074920645, "o", "remote: Counting objects: 100% (405/405), done. "] +[5.494074850082388, "o", "\r\n"] +[5.494088678359976, "o", "remote: Compressing objects: 0% (1/174) \r"] +[5.4940996456146145, "o", "remote: Compressing objects: 1% (2/174) \r"] +[5.494112997055044, "o", "remote: Compressing objects: 2% (4/174) \r"] +[5.494128017425528, "o", "remote: Compressing objects: 3% (6/174) \r"] +[5.4941394615173245, "o", "remote: Compressing objects: 4% (7/174) \r"] +[5.494153051376333, "o", "remote: Compressing objects: 5% (9/174) \r"] +[5.494164733886709, "o", "remote: Compressing objects: 6% (11/174) \r"] +[5.494177370071402, "o", "remote: Compressing objects: 7% (13/174) \r"] +[5.494190721511831, "o", "remote: Compressing objects: 8% (14/174) \r"] +[5.49420431137084, "o", "remote: Compressing objects: 9% (16/174) \r"] +[5.494215517044058, "o", "remote: Compressing objects: 10% (18/174) \r"] +[5.494229106903067, "o", "remote: Compressing objects: 11% (20/174) \r"] +[5.494240074157705, "o", "remote: Compressing objects: 12% (21/174) \r"] +[5.494252948760977, "o", "remote: Compressing objects: 13% (23/174) \r"] +[5.49426796913146, "o", "remote: Compressing objects: 14% (25/174) \r"] +[5.494279890060415, "o", "remote: Compressing objects: 15% (27/174) \r"] +[5.494291334152212, "o", "remote: Compressing objects: 16% (28/174) \r"] +[5.494304924011221, "o", "remote: Compressing objects: 17% (30/174) \r"] +[5.494319467544546, "o", "remote: Compressing objects: 18% (32/174) \r"] +[5.494333295822134, "o", "remote: Compressing objects: 19% (34/174) \r"] +[5.494344263076773, "o", "remote: Compressing objects: 20% (35/174) \r"] +[5.4943578529357815, "o", "remote: Compressing objects: 21% (37/174) \r"] +[5.49436882019042, "o", "remote: Compressing objects: 22% (39/174) \r"] +[5.494382648468008, "o", "remote: Compressing objects: 23% (41/174) \r"] +[5.494393854141226, "o", "remote: Compressing objects: 24% (42/174) \r"] +[5.4944072055816555, "o", "remote: Compressing objects: 25% (44/174) \r"] +[5.494418411254873, "o", "remote: Compressing objects: 26% (46/174) \r"] +[5.494432239532461, "o", "remote: Compressing objects: 27% (47/174) \r"] +[5.494468479156485, "o", "remote: Compressing objects: 28% (49/174) \r"] +[5.494491367340078, "o", "remote: Compressing objects: 29% (51/174) \r"] +[5.494507579803457, "o", "remote: Compressing objects: 30% (53/174) \r"] +[5.494524984359732, "o", "remote: Compressing objects: 31% (54/174) \r"] +[5.494539527893057, "o", "remote: Compressing objects: 32% (56/174) \r"] +[5.494556455612173, "o", "remote: Compressing objects: 33% (58/174) \r"] +[5.494570760726919, "o", "remote: Compressing objects: 34% (60/174) \r"] +[5.494587688446035, "o", "remote: Compressing objects: 35% (61/174) \r"] +[5.494602231979361, "o", "remote: Compressing objects: 36% (63/174) \r"] +[5.494619398117056, "o", "remote: Compressing objects: 37% (65/174) \r"] +[5.494633464813223, "o", "remote: Compressing objects: 38% (67/174) \r"] +[5.49465802192687, "o", "remote: Compressing objects: 39% (68/174) \r"] +[5.494673757553091, "o", "remote: Compressing objects: 40% (70/174) \r"] +[5.4946911621093655, "o", "remote: Compressing objects: 41% (72/174) \r"] +[5.494709043502798, "o", "remote: Compressing objects: 42% (74/174) \r"] +[5.4947240638732815, "o", "remote: Compressing objects: 43% (75/174) \r"] +[5.494741468429556, "o", "remote: Compressing objects: 44% (77/174) \r"] +[5.49475625038146, "o", "remote: Compressing objects: 45% (79/174) \r"] +[5.494773654937735, "o", "remote: Compressing objects: 46% (81/174) \r"] +[5.49478819847106, "o", "remote: Compressing objects: 47% (82/174) \r"] +[5.4948087024688625, "o", "remote: Compressing objects: 48% (84/174) \r"] +[5.494823246002188, "o", "remote: Compressing objects: 49% (86/174) \r"] +[5.494840412139883, "o", "remote: Compressing objects: 50% (87/174) \r"] +[5.494856147766104, "o", "remote: Compressing objects: 51% (89/174) \r"] +[5.494873790740957, "o", "remote: Compressing objects: 52% (91/174) \r"] +[5.4948883342742825, "o", "remote: Compressing objects: 53% (93/174) \r"] +[5.494905738830557, "o", "remote: Compressing objects: 54% (94/174) \r"] +[5.49492075920104, "o", "remote: Compressing objects: 55% (96/174) \r"] +[5.494938163757315, "o", "remote: Compressing objects: 56% (98/174) \r"] +[5.49495270729064, "o", "remote: Compressing objects: 57% (100/174) \r"] +[5.494970111846914, "o", "remote: Compressing objects: 58% (101/174) \r"] +[5.4949846553802395, "o", "remote: Compressing objects: 59% (103/174) \r"] +[5.495002775192251, "o", "remote: Compressing objects: 60% (105/174) \r"] +[5.495017795562735, "o", "remote: Compressing objects: 61% (107/174) \r"] +[5.495035200119009, "o", "remote: Compressing objects: 62% (108/174) \r"] +[5.495049505233755, "o", "remote: Compressing objects: 63% (110/174) \r"] +[5.495066432952871, "o", "remote: Compressing objects: 64% (112/174) \r"] +[5.495080738067617, "o", "remote: Compressing objects: 65% (114/174) \r"] +[5.495098142623892, "o", "remote: Compressing objects: 66% (115/174) \r"] +[5.495112924575796, "o", "remote: Compressing objects: 67% (117/174) \r"] +[5.495129375457754, "o", "remote: Compressing objects: 68% (119/174) \r"] +[5.495145826339712, "o", "remote: Compressing objects: 69% (121/174) \r"] +[5.495162754058828, "o", "remote: Compressing objects: 70% (122/174) \r"] +[5.495176820754995, "o", "remote: Compressing objects: 71% (124/174) \r"] +[5.4951935100555325, "o", "remote: Compressing objects: 72% (126/174) \r"] +[5.4952075767516995, "o", "remote: Compressing objects: 73% (128/174) \r"] +[5.495224504470816, "o", "remote: Compressing objects: 74% (129/174) \r"] +[5.495239048004141, "o", "remote: Compressing objects: 75% (131/174) \r"] +[5.495270519256582, "o", "remote: Compressing objects: 76% (133/174) \r"] +[5.495287923812857, "o", "remote: Compressing objects: 77% (134/174) \r"] +[5.495301752090445, "o", "remote: Compressing objects: 78% (136/174) \r"] +[5.495331077575674, "o", "remote: Compressing objects: 79% (138/174) \r"] +[5.495359687805166, "o", "remote: Compressing objects: 80% (140/174) \r"] +[5.495391159057608, "o", "remote: Compressing objects: 81% (141/174) \r"] +[5.495403318405142, "o", "remote: Compressing objects: 82% (143/174) \r"] +[5.495415716171255, "o", "remote: Compressing objects: 83% (145/174) \r"] +[5.495430498123159, "o", "remote: Compressing objects: 84% (147/174) \r"] +[5.495443372726431, "o", "remote: Compressing objects: 85% (148/174) \r"] +[5.495458154678335, "o", "remote: Compressing objects: 86% (150/174) \r"] +[5.495471744537344, "o", "remote: Compressing objects: 87% (152/174) \r"] +[5.4954870033264065, "o", "remote: Compressing objects: 88% (154/174) \r"] +[5.49549940109252, "o", "remote: Compressing objects: 89% (155/174) \r"] +[5.495514183044424, "o", "remote: Compressing objects: 90% (157/174) \r"] +[5.4955268192291165, "o", "remote: Compressing objects: 91% (159/174) \r"] +[5.495538978576651, "o", "remote: Compressing objects: 92% (161/174) \r"] +[5.495575218200674, "o", "remote: Compressing objects: 93% (162/174) \r"] +[5.495588569641104, "o", "remote: Compressing objects: 94% (164/174) \r"] +[5.495603351593008, "o", "remote: Compressing objects: 95% (166/174) \r"] +[5.4956159877777, "o", "remote: Compressing objects: 96% (168/174) \r"] +[5.495630531311026, "o", "remote: Compressing objects: 97% (169/174) \r"] +[5.495642929077139, "o", "remote: Compressing objects: 98% (171/174) \r"] +[5.495657472610464, "o", "remote: Compressing objects: 99% (173/174) \r"] +[5.495669870376577, "o", "remote: Compressing objects: 100% (174/174) \r"] +[5.495684652328482, "o", "remote: Compressing objects: 100% (174/174), done. "] +[5.4956958580016995, "o", "\r\n"] +[5.500485210418692, "o", "Receiving objects: 0% (1/405)\r"] +[5.500616102218618, "o", "Receiving objects: 1% (5/405)\r"] +[5.5008251953124905, "o", "Receiving objects: 2% (9/405)\r"] +[5.500893859863272, "o", "Receiving objects: 3% (13/405)\r"] +[5.5010059165954495, "o", "Receiving objects: 4% (17/405)\r"] +[5.501076965332022, "o", "Receiving objects: 5% (21/405)\r"] +[5.501162080764761, "o", "Receiving objects: 6% (25/405)\r"] +[5.501236944198599, "o", "Receiving objects: 7% (29/405)\r"] +[5.50136139869689, "o", "Receiving objects: 8% (33/405)\r"] +[5.5014355468749905, "o", "Receiving objects: 9% (37/405)\r"] +[5.501501588821402, "o", "Receiving objects: 10% (41/405)\r"] +[5.501586465835562, "o", "Receiving objects: 11% (45/405)\r"] +[5.501708536148062, "o", "Receiving objects: 12% (49/405)\r"] +[5.501812248229971, "o", "Receiving objects: 13% (53/405)\r"] +[5.501889972686758, "o", "Receiving objects: 14% (57/405)\r"] +[5.502006559371939, "o", "Receiving objects: 15% (61/405)\r"] +[5.502074270248404, "o", "Receiving objects: 16% (65/405)\r"] +[5.502167015075674, "o", "Receiving objects: 17% (69/405)\r"] +[5.502296714782705, "o", "Receiving objects: 18% (73/405)\r"] +[5.502392559051504, "o", "Receiving objects: 19% (77/405)\r"] +[5.5024991321563625, "o", "Receiving objects: 20% (81/405)\r"] +[5.5087364006042385, "o", "Receiving objects: 21% (86/405)\r"] +[5.509450225830069, "o", "Receiving objects: 22% (90/405)\r"] +[5.509501485824575, "o", "Receiving objects: 23% (94/405)\r"] +[5.509650735855093, "o", "Receiving objects: 24% (98/405)\r"] +[5.509696035385122, "o", "Receiving objects: 25% (102/405)\r"] +[5.517781524658194, "o", "Receiving objects: 26% (106/405)\r"] +[5.517789630889883, "o", "Receiving objects: 27% (110/405)\r"] +[5.518175868988028, "o", "Receiving objects: 28% (114/405)\r"] +[5.518183021545401, "o", "Receiving objects: 29% (118/405)\r"] +[5.518519668579092, "o", "Receiving objects: 30% (122/405)\r"] +[5.518784551620474, "o", "Receiving objects: 31% (126/405)\r"] +[5.51879098892211, "o", "Receiving objects: 32% (130/405)\r"] +[5.519123821258535, "o", "Receiving objects: 33% (134/405)\r"] +[5.519295244216909, "o", "Receiving objects: 34% (138/405)\r"] +[5.526792316436758, "o", "Receiving objects: 35% (142/405)\r"] +[5.527618675231924, "o", "Receiving objects: 36% (146/405)\r"] +[5.527629642486563, "o", "Receiving objects: 37% (150/405)\rReceiving objects: 38% (154/405)\rReceiving objects: 39% (158/405)\r"] +[5.530397920608511, "o", "remote: Total 405 (delta 191), reused 405 (delta 191), pack-reused 0 \r\n"] +[5.530628471374502, "o", "Receiving objects: 40% (162/405)\r"] +[5.530636816024771, "o", "Receiving objects: 41% (167/405)\rReceiving objects: 42% (171/405)\r"] +[5.5308075237274075, "o", "Receiving objects: 43% (175/405)\r"] +[5.530900983810415, "o", "Receiving objects: 44% (179/405)\r"] +[5.5311222362518215, "o", "Receiving objects: 45% (183/405)\r"] +[5.5311291503906155, "o", "Receiving objects: 46% (187/405)\r"] +[5.531225709915152, "o", "Receiving objects: 47% (191/405)\r"] +[5.5314603137969875, "o", "Receiving objects: 48% (195/405)\r"] +[5.531466512680044, "o", "Receiving objects: 49% (199/405)\r"] +[5.531697540283194, "o", "Receiving objects: 50% (203/405)\r"] +[5.5317042160034084, "o", "Receiving objects: 51% (207/405)\r"] +[5.531715421676626, "o", "Receiving objects: 52% (211/405)\r"] +[5.531726865768423, "o", "Receiving objects: 53% (215/405)\rReceiving objects: 54% (219/405)\r"] +[5.531731634140005, "o", "Receiving objects: 55% (223/405)\r"] +[5.5317535686492825, "o", "Receiving objects: 56% (227/405)\r"] +[5.5317957687377834, "o", "Receiving objects: 57% (231/405)\r"] +[5.531804828643789, "o", "Receiving objects: 58% (235/405)\r"] +[5.53180983543395, "o", "Receiving objects: 59% (239/405)\r"] +[5.531814842224112, "o", "Receiving objects: 60% (243/405)\r"] +[5.531859903335562, "o", "Receiving objects: 61% (248/405)\r"] +[5.531875162124624, "o", "Receiving objects: 62% (252/405)\r"] +[5.5318968582153225, "o", "Receiving objects: 63% (256/405)\r"] +[5.531911163330069, "o", "Receiving objects: 64% (260/405)\r"] +[5.531923322677603, "o", "Receiving objects: 65% (264/405)\r"] +[5.5319812583923245, "o", "Receiving objects: 66% (268/405)\r"] +[5.532009868621817, "o", "Receiving objects: 67% (272/405)\r"] +[5.532015829086294, "o", "Receiving objects: 68% (276/405)\r"] +[5.532020835876455, "o", "Receiving objects: 69% (280/405)\r"] +[5.532033948898306, "o", "Receiving objects: 70% (284/405)\r"] +[5.532088308334341, "o", "Receiving objects: 71% (288/405)\r"] +[5.532094507217398, "o", "Receiving objects: 72% (292/405)\rReceiving objects: 73% (296/405)\rReceiving objects: 74% (300/405)\r"] +[5.532099752426138, "o", "Receiving objects: 75% (304/405)\r"] +[5.532124071121206, "o", "Receiving objects: 76% (308/405)\r"] +[5.532130031585684, "o", "Receiving objects: 77% (312/405)\r"] +[5.532142906188955, "o", "Receiving objects: 78% (316/405)\r"] +[5.532209901809683, "o", "Receiving objects: 79% (320/405)\r"] +[5.532221107482901, "o", "Receiving objects: 80% (324/405)\r"] +[5.532226352691641, "o", "Receiving objects: 81% (329/405)\r"] +[5.532230882644644, "o", "Receiving objects: 82% (333/405)\r"] +[5.532260208129873, "o", "Receiving objects: 83% (337/405)\r"] +[5.532540349960318, "o", "Receiving objects: 84% (341/405)\r"] +[5.532568721771231, "o", "Receiving objects: 85% (345/405)\rReceiving objects: 86% (349/405)\rReceiving objects: 87% (353/405)\rReceiving objects: 88% (357/405)\rReceiving objects: 89% (361/405)\rReceiving objects: 90% (365/405)\rReceiving objects: 91% (369/405)\r"] +[5.532574920654287, "o", "Receiving objects: 92% (373/405)\r"] +[5.532587318420401, "o", "Receiving objects: 93% (377/405)\rReceiving objects: 94% (381/405)\r"] +[5.532648830413809, "o", "Receiving objects: 95% (385/405)\r"] +[5.532720355987539, "o", "Receiving objects: 96% (389/405)\r"] +[5.532735137939444, "o", "Receiving objects: 97% (393/405)\r"] +[5.532740859985342, "o", "Receiving objects: 98% (397/405)\rReceiving objects: 99% (401/405)\r"] +[5.532815008163443, "o", "Receiving objects: 100% (405/405)\r"] +[5.532840995788565, "o", "Receiving objects: 100% (405/405), 270.20 KiB | 7.95 MiB/s, done.\r\n"] +[5.537282257080069, "o", "Resolving deltas: 0% (0/191)\r"] +[5.537462501525869, "o", "Resolving deltas: 1% (2/191)\r"] +[5.537832527160635, "o", "Resolving deltas: 2% (4/191)\r"] +[5.5381412792205715, "o", "Resolving deltas: 3% (6/191)\r"] +[5.538208751678457, "o", "Resolving deltas: 4% (8/191)\r"] +[5.53869369506835, "o", "Resolving deltas: 5% (10/191)\r"] +[5.539042263030996, "o", "Resolving deltas: 6% (12/191)\r"] +[5.539315252304068, "o", "Resolving deltas: 7% (14/191)\r"] +[5.540752439498892, "o", "Resolving deltas: 8% (16/191)\r"] +[5.541034488677969, "o", "Resolving deltas: 9% (18/191)\r"] +[5.5413456249236965, "o", "Resolving deltas: 10% (20/191)\r"] +[5.541416673660269, "o", "Resolving deltas: 11% (22/191)\r"] +[5.541444807052603, "o", "Resolving deltas: 12% (23/191)\r"] +[5.541471509933462, "o", "Resolving deltas: 13% (25/191)\r"] +[5.54149320602416, "o", "Resolving deltas: 14% (27/191)\r"] +[5.541555910110464, "o", "Resolving deltas: 15% (29/191)\r"] +[5.541581182479849, "o", "Resolving deltas: 16% (31/191)\r"] +[5.541586427688589, "o", "Resolving deltas: 17% (33/191)\r"] +[5.541614561080923, "o", "Resolving deltas: 18% (35/191)\r"] +[5.5416202831268215, "o", "Resolving deltas: 19% (37/191)\r"] +[5.5416741657256985, "o", "Resolving deltas: 20% (39/191)\r"] +[5.541699676513662, "o", "Resolving deltas: 21% (41/191)\r"] +[5.5417187499999905, "o", "Resolving deltas: 22% (43/191)\r"] +[5.541850833892813, "o", "Resolving deltas: 23% (44/191)\rResolving deltas: 24% (46/191)\rResolving deltas: 25% (48/191)\rResolving deltas: 26% (50/191)\r"] +[5.541857032775869, "o", "Resolving deltas: 27% (52/191)\r"] +[5.541881351470938, "o", "Resolving deltas: 28% (54/191)\r"] +[5.541902332305899, "o", "Resolving deltas: 29% (56/191)\r"] +[5.541933088302603, "o", "Resolving deltas: 30% (58/191)\r"] +[5.54194167137145, "o", "Resolving deltas: 31% (60/191)\r"] +[5.5419559764861965, "o", "Resolving deltas: 32% (62/191)\r"] +[5.541996984481802, "o", "Resolving deltas: 33% (64/191)\rResolving deltas: 34% (65/191)\r"] +[5.543253211975088, "o", "Resolving deltas: 35% (67/191)\rResolving deltas: 36% (69/191)\rResolving deltas: 37% (71/191)\rResolving deltas: 38% (73/191)\rResolving deltas: 39% (75/191)\rResolving deltas: 40% (77/191)\rResolving deltas: 41% (79/191)\rResolving deltas: 42% (81/191)\rResolving deltas: 43% (83/191)\rResolving deltas: 44% (85/191)\rResolving deltas: 45% (86/191)\rResolving deltas: 46% (88/191)\rResolving deltas: 47% (90/191)\rResolving deltas: 48% (92/191)\rResolving deltas: 49% (94/191)\rResolving deltas: 50% (96/191)\r"] +[5.5432868289947415, "o", "Resolving deltas: 51% (98/191)\rResolving deltas: 52% (100/191)\rResolving deltas: 53% (102/191)\rResolving deltas: 54% (104/191)\rResolving deltas: 55% (106/191)\rResolving deltas: 56% (107/191)\rResolving deltas: 57% (109/191)\rResolving deltas: 58% (111/191)\rResolving deltas: 59% (113/191)\rResolving deltas: 60% (115/191)\rResolving deltas: 61% (117/191)\rResolving deltas: 62% (119/191)\rResolving deltas: 63% (121/191)\rResolving deltas: 64% (123/191)\rResolving deltas: 65% (125/191)\rResolving deltas: "] +[5.543292312622061, "o", " 66% (127/191)\rResolving deltas: 67% (128/191)\rResolving deltas: 68% (130/191)\rResolving deltas: 69% (132/191)\rResolving deltas: 70% (134/191)\r"] +[5.545758275985708, "o", "Resolving deltas: 71% (136/191)\r"] +[5.546080856323233, "o", "Resolving deltas: 72% (138/191)\r"] +[5.546411304473867, "o", "Resolving deltas: 73% (140/191)\r"] +[5.5466273117065334, "o", "Resolving deltas: 74% (142/191)\r"] +[5.546776084899893, "o", "Resolving deltas: 75% (144/191)\r"] +[5.547070531845083, "o", "Resolving deltas: 76% (146/191)\r"] +[5.547125606536856, "o", "Resolving deltas: 77% (148/191)\r"] +[5.547131567001333, "o", "Resolving deltas: 78% (149/191)\r"] +[5.547137527465811, "o", "Resolving deltas: 79% (151/191)\r"] +[5.54722788810729, "o", "Resolving deltas: 80% (153/191)\r"] +[5.547251491546621, "o", "Resolving deltas: 81% (155/191)\r"] +[5.54725721359252, "o", "Resolving deltas: 82% (157/191)\r"] +[5.547285585403433, "o", "Resolving deltas: 83% (159/191)\r"] +[5.547311573028555, "o", "Resolving deltas: 84% (161/191)\r"] +[5.547335176467886, "o", "Resolving deltas: 85% (163/191)\r"] +[5.5473411369323635, "o", "Resolving deltas: 86% (165/191)\r"] +[5.547368316650381, "o", "Resolving deltas: 87% (167/191)\r"] +[5.547374753952017, "o", "Resolving deltas: 88% (169/191)\rResolving deltas: 89% (170/191)\r"] +[5.547396450042715, "o", "Resolving deltas: 90% (172/191)\r"] +[5.5474608230590725, "o", "Resolving deltas: 91% (174/191)\r"] +[5.547467021942129, "o", "Resolving deltas: 92% (176/191)\r"] +[5.547479896545401, "o", "Resolving deltas: 93% (178/191)\r"] +[5.547504930496206, "o", "Resolving deltas: 94% (180/191)\r"] +[5.547520427703848, "o", "Resolving deltas: 95% (182/191)\r"] +[5.547532348632803, "o", "Resolving deltas: 96% (184/191)\r"] +[5.549966840744009, "o", "Resolving deltas: 97% (186/191)\r"] +[5.551878242492666, "o", "Resolving deltas: 98% (188/191)\r"] +[5.554052143096914, "o", "Resolving deltas: 99% (190/191)\r"] +[5.555161743164053, "o", "Resolving deltas: 100% (191/191)\rResolving deltas: 100% (191/191), done.\r\n"] +[5.585161743164053, "o", "\u001b[1m"] +[5.6151617431640535, "o", "\u001b[36m"] +[5.645161743164054, "o", "\u001b[91m"] +[5.675161743164054, "o", "$"] +[5.705161743164054, "o", " "] +[5.7351617431640545, "o", "\u001b[0m"] +[12.03, "o", "\u001b[H"] +[12.059999999999999, "o", "\u001b[J"] +[12.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the initial data (in CSV) from this branch of the project."] +[12.119999999999997, "o", "\r\n"] +[12.149999999999997, "o", "$"] +[12.179999999999996, "o", " "] +[12.209999999999996, "o", "s"] +[12.239999999999995, "o", "g"] +[12.269999999999994, "o", "r"] +[12.299999999999994, "o", " "] +[12.329999999999993, "o", "i"] +[12.359999999999992, "o", "n"] +[12.389999999999992, "o", "i"] +[12.419999999999991, "o", "t"] +[12.44999999999999, "o", " "] +[12.47999999999999, "o", "r"] +[12.50999999999999, "o", "a"] +[12.539999999999988, "o", "w"] +[12.569999999999988, "o", "_"] +[12.599999999999987, "o", "j"] +[12.629999999999987, "o", "a"] +[12.659999999999986, "o", "f"] +[12.689999999999985, "o", "f"] +[12.719999999999985, "o", "l"] +[12.749999999999984, "o", "e"] +[12.779999999999983, "o", "_"] +[12.809999999999983, "o", "s"] +[12.839999999999982, "o", "h"] +[12.869999999999981, "o", "o"] +[12.89999999999998, "o", "p"] +[12.92999999999998, "o", "\r\n"] +[12.95999999999998, "o", "$"] +[12.989999999999979, "o", " "] +[13.019999999999978, "o", "s"] +[13.049999999999978, "o", "g"] +[13.079999999999977, "o", "r"] +[13.109999999999976, "o", " "] +[13.139999999999976, "o", "c"] +[13.169999999999975, "o", "s"] +[13.199999999999974, "o", "v"] +[13.229999999999974, "o", " "] +[13.259999999999973, "o", "i"] +[13.289999999999973, "o", "m"] +[13.319999999999972, "o", "p"] +[13.349999999999971, "o", "o"] +[13.37999999999997, "o", "r"] +[13.40999999999997, "o", "t"] +[13.43999999999997, "o", " "] +[13.469999999999969, "o", "-"] +[13.499999999999968, "o", "f"] +[13.529999999999967, "o", " "] +[13.559999999999967, "o", "j"] +[13.589999999999966, "o", "a"] +[13.619999999999965, "o", "f"] +[13.649999999999965, "o", "f"] +[13.679999999999964, "o", "l"] +[13.709999999999964, "o", "e"] +[13.739999999999963, "o", "_"] +[13.769999999999962, "o", "s"] +[13.799999999999962, "o", "h"] +[13.829999999999961, "o", "o"] +[13.85999999999996, "o", "p"] +[13.88999999999996, "o", "/"] +[13.919999999999959, "o", "d"] +[13.949999999999958, "o", "a"] +[13.979999999999958, "o", "t"] +[14.009999999999957, "o", "a"] +[14.039999999999957, "o", "/"] +[14.069999999999956, "o", "r"] +[14.099999999999955, "o", "a"] +[14.129999999999955, "o", "w"] +[14.159999999999954, "o", "_"] +[14.189999999999953, "o", "c"] +[14.219999999999953, "o", "u"] +[14.249999999999952, "o", "s"] +[14.279999999999951, "o", "t"] +[14.30999999999995, "o", "o"] +[14.33999999999995, "o", "m"] +[14.36999999999995, "o", "e"] +[14.399999999999949, "o", "r"] +[14.429999999999948, "o", "s"] +[14.459999999999948, "o", "."] +[14.489999999999947, "o", "c"] +[14.519999999999946, "o", "s"] +[14.549999999999946, "o", "v"] +[14.579999999999945, "o", " "] +[14.609999999999944, "o", "-"] +[14.639999999999944, "o", "k"] +[14.669999999999943, "o", " "] +[14.699999999999942, "o", "i"] +[14.729999999999942, "o", "d"] +[14.759999999999941, "o", " "] +[14.78999999999994, "o", "r"] +[14.81999999999994, "o", "a"] +[14.84999999999994, "o", "w"] +[14.879999999999939, "o", "_"] +[14.909999999999938, "o", "j"] +[14.939999999999937, "o", "a"] +[14.969999999999937, "o", "f"] +[14.999999999999936, "o", "f"] +[15.029999999999935, "o", "l"] +[15.059999999999935, "o", "e"] +[15.089999999999934, "o", "_"] +[15.119999999999933, "o", "s"] +[15.149999999999933, "o", "h"] +[15.179999999999932, "o", "o"] +[15.209999999999932, "o", "p"] +[15.239999999999931, "o", " "] +[15.26999999999993, "o", "c"] +[15.29999999999993, "o", "u"] +[15.329999999999929, "o", "s"] +[15.359999999999928, "o", "t"] +[15.389999999999928, "o", "o"] +[15.419999999999927, "o", "m"] +[15.449999999999926, "o", "e"] +[15.479999999999926, "o", "r"] +[15.509999999999925, "o", "s"] +[15.539999999999925, "o", "\r\n"] +[15.569999999999924, "o", "$"] +[15.599999999999923, "o", " "] +[15.629999999999923, "o", "s"] +[15.659999999999922, "o", "g"] +[15.689999999999921, "o", "r"] +[15.71999999999992, "o", " "] +[15.74999999999992, "o", "c"] +[15.77999999999992, "o", "s"] +[15.809999999999919, "o", "v"] +[15.839999999999918, "o", " "] +[15.869999999999918, "o", "i"] +[15.899999999999917, "o", "m"] +[15.929999999999916, "o", "p"] +[15.959999999999916, "o", "o"] +[15.989999999999915, "o", "r"] +[16.019999999999914, "o", "t"] +[16.049999999999915, "o", " "] +[16.079999999999917, "o", "-"] +[16.109999999999918, "o", "f"] +[16.13999999999992, "o", " "] +[16.16999999999992, "o", "j"] +[16.19999999999992, "o", "a"] +[16.229999999999922, "o", "f"] +[16.259999999999923, "o", "f"] +[16.289999999999925, "o", "l"] +[16.319999999999926, "o", "e"] +[16.349999999999927, "o", "_"] +[16.379999999999928, "o", "s"] +[16.40999999999993, "o", "h"] +[16.43999999999993, "o", "o"] +[16.46999999999993, "o", "p"] +[16.499999999999932, "o", "/"] +[16.529999999999934, "o", "d"] +[16.559999999999935, "o", "a"] +[16.589999999999936, "o", "t"] +[16.619999999999937, "o", "a"] +[16.649999999999938, "o", "/"] +[16.67999999999994, "o", "r"] +[16.70999999999994, "o", "a"] +[16.73999999999994, "o", "w"] +[16.769999999999943, "o", "_"] +[16.799999999999944, "o", "o"] +[16.829999999999945, "o", "r"] +[16.859999999999946, "o", "d"] +[16.889999999999947, "o", "e"] +[16.91999999999995, "o", "r"] +[16.94999999999995, "o", "s"] +[16.97999999999995, "o", "."] +[17.009999999999952, "o", "c"] +[17.039999999999953, "o", "s"] +[17.069999999999954, "o", "v"] +[17.099999999999955, "o", " "] +[17.129999999999956, "o", "-"] +[17.159999999999958, "o", "k"] +[17.18999999999996, "o", " "] +[17.21999999999996, "o", "i"] +[17.24999999999996, "o", "d"] +[17.279999999999962, "o", " "] +[17.309999999999963, "o", "-"] +[17.339999999999964, "o", "t"] +[17.369999999999965, "o", " "] +[17.399999999999967, "o", "o"] +[17.429999999999968, "o", "r"] +[17.45999999999997, "o", "d"] +[17.48999999999997, "o", "e"] +[17.51999999999997, "o", "r"] +[17.549999999999972, "o", "_"] +[17.579999999999973, "o", "d"] +[17.609999999999975, "o", "a"] +[17.639999999999976, "o", "t"] +[17.669999999999977, "o", "e"] +[17.699999999999978, "o", " "] +[17.72999999999998, "o", "t"] +[17.75999999999998, "o", "i"] +[17.78999999999998, "o", "m"] +[17.819999999999983, "o", "e"] +[17.849999999999984, "o", "s"] +[17.879999999999985, "o", "t"] +[17.909999999999986, "o", "a"] +[17.939999999999987, "o", "m"] +[17.969999999999988, "o", "p"] +[17.99999999999999, "o", " "] +[18.02999999999999, "o", "r"] +[18.05999999999999, "o", "a"] +[18.089999999999993, "o", "w"] +[18.119999999999994, "o", "_"] +[18.149999999999995, "o", "j"] +[18.179999999999996, "o", "a"] +[18.209999999999997, "o", "f"] +[18.24, "o", "f"] +[18.27, "o", "l"] +[18.3, "o", "e"] +[18.330000000000002, "o", "_"] +[18.360000000000003, "o", "s"] +[18.390000000000004, "o", "h"] +[18.420000000000005, "o", "o"] +[18.450000000000006, "o", "p"] +[18.480000000000008, "o", " "] +[18.51000000000001, "o", "o"] +[18.54000000000001, "o", "r"] +[18.57000000000001, "o", "d"] +[18.600000000000012, "o", "e"] +[18.630000000000013, "o", "r"] +[18.660000000000014, "o", "s"] +[18.690000000000015, "o", "\r\n"] +[18.720000000000017, "o", "$"] +[18.750000000000018, "o", " "] +[18.78000000000002, "o", "s"] +[18.81000000000002, "o", "g"] +[18.84000000000002, "o", "r"] +[18.870000000000022, "o", " "] +[18.900000000000023, "o", "c"] +[18.930000000000025, "o", "s"] +[18.960000000000026, "o", "v"] +[18.990000000000027, "o", " "] +[19.020000000000028, "o", "i"] +[19.05000000000003, "o", "m"] +[19.08000000000003, "o", "p"] +[19.11000000000003, "o", "o"] +[19.140000000000033, "o", "r"] +[19.170000000000034, "o", "t"] +[19.200000000000035, "o", " "] +[19.230000000000036, "o", "-"] +[19.260000000000037, "o", "f"] +[19.29000000000004, "o", " "] +[19.32000000000004, "o", "j"] +[19.35000000000004, "o", "a"] +[19.38000000000004, "o", "f"] +[19.410000000000043, "o", "f"] +[19.440000000000044, "o", "l"] +[19.470000000000045, "o", "e"] +[19.500000000000046, "o", "_"] +[19.530000000000047, "o", "s"] +[19.56000000000005, "o", "h"] +[19.59000000000005, "o", "o"] +[19.62000000000005, "o", "p"] +[19.650000000000052, "o", "/"] +[19.680000000000053, "o", "d"] +[19.710000000000054, "o", "a"] +[19.740000000000055, "o", "t"] +[19.770000000000056, "o", "a"] +[19.800000000000058, "o", "/"] +[19.83000000000006, "o", "r"] +[19.86000000000006, "o", "a"] +[19.89000000000006, "o", "w"] +[19.920000000000062, "o", "_"] +[19.950000000000063, "o", "p"] +[19.980000000000064, "o", "a"] +[20.010000000000066, "o", "y"] +[20.040000000000067, "o", "m"] +[20.070000000000068, "o", "e"] +[20.10000000000007, "o", "n"] +[20.13000000000007, "o", "t"] +[20.16000000000007, "o", "s"] +[20.190000000000072, "o", "."] +[20.220000000000073, "o", "c"] +[20.250000000000075, "o", "s"] +[20.280000000000076, "o", "v"] +[20.310000000000077, "o", " "] +[20.340000000000078, "o", "-"] +[20.37000000000008, "o", "k"] +[20.40000000000008, "o", " "] +[20.43000000000008, "o", "i"] +[20.460000000000083, "o", "d"] +[20.490000000000084, "o", " "] +[20.520000000000085, "o", "r"] +[20.550000000000086, "o", "a"] +[20.580000000000087, "o", "w"] +[20.61000000000009, "o", "_"] +[20.64000000000009, "o", "j"] +[20.67000000000009, "o", "a"] +[20.70000000000009, "o", "f"] +[20.730000000000093, "o", "f"] +[20.760000000000094, "o", "l"] +[20.790000000000095, "o", "e"] +[20.820000000000096, "o", "_"] +[20.850000000000097, "o", "s"] +[20.8800000000001, "o", "h"] +[20.9100000000001, "o", "o"] +[20.9400000000001, "o", "p"] +[20.970000000000102, "o", " "] +[21.000000000000103, "o", "p"] +[21.030000000000104, "o", "a"] +[21.060000000000105, "o", "y"] +[21.090000000000106, "o", "m"] +[21.120000000000108, "o", "e"] +[21.15000000000011, "o", "n"] +[21.18000000000011, "o", "t"] +[21.21000000000011, "o", "s"] +[21.240000000000112, "o", "\r\n"] +[21.270000000000113, "o", "\u001b[0m"] +[21.300000000000114, "o", "\r\n"] +[21.699058341980095, "o", "Initialized empty repository raw_jaffle_shop\r\n"] +[21.729058341980096, "o", "\u001b[1m"] +[21.759058341980097, "o", "\u001b[36m"] +[21.7890583419801, "o", "\u001b[91m"] +[21.8190583419801, "o", "$"] +[21.8490583419801, "o", " "] +[21.8790583419801, "o", "\u001b[0m"] +[26.909058341980103, "o", "\u001b[H"] +[26.939058341980104, "o", "\u001b[J"] +[26.969058341980105, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Snapshot the initial data with Splitgraph."] +[26.999058341980106, "o", "\r\n"] +[27.029058341980107, "o", "$"] +[27.05905834198011, "o", " "] +[27.08905834198011, "o", "s"] +[27.11905834198011, "o", "g"] +[27.149058341980112, "o", "r"] +[27.179058341980113, "o", " "] +[27.209058341980114, "o", "d"] +[27.239058341980115, "o", "i"] +[27.269058341980116, "o", "f"] +[27.299058341980118, "o", "f"] +[27.32905834198012, "o", " "] +[27.35905834198012, "o", "r"] +[27.38905834198012, "o", "a"] +[27.419058341980122, "o", "w"] +[27.449058341980123, "o", "_"] +[27.479058341980124, "o", "j"] +[27.509058341980126, "o", "a"] +[27.539058341980127, "o", "f"] +[27.569058341980128, "o", "f"] +[27.59905834198013, "o", "l"] +[27.62905834198013, "o", "e"] +[27.65905834198013, "o", "_"] +[27.689058341980132, "o", "s"] +[27.719058341980134, "o", "h"] +[27.749058341980135, "o", "o"] +[27.779058341980136, "o", "p"] +[27.809058341980137, "o", "\r\n"] +[27.839058341980138, "o", "$"] +[27.86905834198014, "o", " "] +[27.89905834198014, "o", "s"] +[27.92905834198014, "o", "g"] +[27.959058341980143, "o", "r"] +[27.989058341980144, "o", " "] +[28.019058341980145, "o", "c"] +[28.049058341980146, "o", "o"] +[28.079058341980147, "o", "m"] +[28.10905834198015, "o", "m"] +[28.13905834198015, "o", "i"] +[28.16905834198015, "o", "t"] +[28.19905834198015, "o", " "] +[28.229058341980153, "o", "r"] +[28.259058341980154, "o", "a"] +[28.289058341980155, "o", "w"] +[28.319058341980156, "o", "_"] +[28.349058341980157, "o", "j"] +[28.37905834198016, "o", "a"] +[28.40905834198016, "o", "f"] +[28.43905834198016, "o", "f"] +[28.469058341980162, "o", "l"] +[28.499058341980163, "o", "e"] +[28.529058341980164, "o", "_"] +[28.559058341980165, "o", "s"] +[28.589058341980166, "o", "h"] +[28.619058341980168, "o", "o"] +[28.64905834198017, "o", "p"] +[28.67905834198017, "o", "\r\n"] +[28.70905834198017, "o", "$"] +[28.739058341980172, "o", " "] +[28.769058341980173, "o", "s"] +[28.799058341980174, "o", "g"] +[28.829058341980176, "o", "r"] +[28.859058341980177, "o", " "] +[28.889058341980178, "o", "t"] +[28.91905834198018, "o", "a"] +[28.94905834198018, "o", "g"] +[28.97905834198018, "o", " "] +[29.009058341980182, "o", "r"] +[29.039058341980184, "o", "a"] +[29.069058341980185, "o", "w"] +[29.099058341980186, "o", "_"] +[29.129058341980187, "o", "j"] +[29.159058341980188, "o", "a"] +[29.18905834198019, "o", "f"] +[29.21905834198019, "o", "f"] +[29.24905834198019, "o", "l"] +[29.279058341980193, "o", "e"] +[29.309058341980194, "o", "_"] +[29.339058341980195, "o", "s"] +[29.369058341980196, "o", "h"] +[29.399058341980197, "o", "o"] +[29.4290583419802, "o", "p"] +[29.4590583419802, "o", " "] +[29.4890583419802, "o", "a"] +[29.5190583419802, "o", "s"] +[29.549058341980203, "o", "o"] +[29.579058341980204, "o", "f"] +[29.609058341980205, "o", "_"] +[29.639058341980206, "o", "2"] +[29.669058341980207, "o", "0"] +[29.69905834198021, "o", "1"] +[29.72905834198021, "o", "8"] +[29.75905834198021, "o", "0"] +[29.789058341980212, "o", "4"] +[29.819058341980213, "o", "0"] +[29.849058341980214, "o", "9"] +[29.879058341980215, "o", "\r\n"] +[29.909058341980217, "o", "\u001b[0m"] +[29.939058341980218, "o", "\r\n"] +[30.337579288482903, "o", "Between 000000000000 and the current working copy: \r\n"] +[30.337590255737542, "o", "customers: table added\r\norders: table added\r\npayments: table added\r\n"] +[30.70038656234765, "o", "Committing raw_jaffle_shop...\r\n"] +[30.720799245834588, "o", "Processing table orders\r\n"] +[30.8018138790133, "o", "Processing table payments\r\n"] +[30.87779168128991, "o", "Processing table customers\r\n"] +[30.98632053375268, "o", "Committed raw_jaffle_shop as 564aa276859d.\r\n"] +[31.3937271022799, "o", "Tagged raw_jaffle_shop:564aa276859de6ef770d63b0bb8da2830d270121a271bc9de495595c47a7c937 with asof_20180409.\r\n"] +[31.4237271022799, "o", "\u001b[1m"] +[31.453727102279903, "o", "\u001b[36m"] +[31.483727102279904, "o", "\u001b[91m"] +[31.513727102279905, "o", "$"] +[31.543727102279906, "o", " "] +[31.573727102279907, "o", "\u001b[0m"] +[36.603727102279905, "o", "\u001b[H"] +[36.633727102279906, "o", "\u001b[J"] +[36.66372710227991, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the original data"] +[36.69372710227991, "o", "\r\n"] +[36.72372710227991, "o", "$"] +[36.75372710227991, "o", " "] +[36.78372710227991, "o", "s"] +[36.81372710227991, "o", "g"] +[36.843727102279914, "o", "r"] +[36.873727102279915, "o", " "] +[36.903727102279916, "o", "s"] +[36.93372710227992, "o", "h"] +[36.96372710227992, "o", "o"] +[36.99372710227992, "o", "w"] +[37.02372710227992, "o", " "] +[37.05372710227992, "o", "r"] +[37.08372710227992, "o", "a"] +[37.113727102279924, "o", "w"] +[37.143727102279925, "o", "_"] +[37.173727102279926, "o", "j"] +[37.20372710227993, "o", "a"] +[37.23372710227993, "o", "f"] +[37.26372710227993, "o", "f"] +[37.29372710227993, "o", "l"] +[37.32372710227993, "o", "e"] +[37.35372710227993, "o", "_"] +[37.383727102279934, "o", "s"] +[37.413727102279935, "o", "h"] +[37.44372710227994, "o", "o"] +[37.47372710227994, "o", "p"] +[37.50372710227994, "o", ":"] +[37.53372710227994, "o", "a"] +[37.56372710227994, "o", "s"] +[37.59372710227994, "o", "o"] +[37.62372710227994, "o", "f"] +[37.653727102279944, "o", "_"] +[37.683727102279946, "o", "2"] +[37.71372710227995, "o", "0"] +[37.74372710227995, "o", "1"] +[37.77372710227995, "o", "8"] +[37.80372710227995, "o", "0"] +[37.83372710227995, "o", "4"] +[37.86372710227995, "o", "0"] +[37.893727102279954, "o", "9"] +[37.923727102279955, "o", "\r\n"] +[37.953727102279956, "o", "$"] +[37.98372710227996, "o", " "] +[38.01372710227996, "o", "s"] +[38.04372710227996, "o", "g"] +[38.07372710227996, "o", "r"] +[38.10372710227996, "o", " "] +[38.13372710227996, "o", "t"] +[38.163727102279964, "o", "a"] +[38.193727102279965, "o", "b"] +[38.223727102279966, "o", "l"] +[38.25372710227997, "o", "e"] +[38.28372710227997, "o", " "] +[38.31372710227997, "o", "r"] +[38.34372710227997, "o", "a"] +[38.37372710227997, "o", "w"] +[38.40372710227997, "o", "_"] +[38.433727102279974, "o", "j"] +[38.463727102279975, "o", "a"] +[38.493727102279976, "o", "f"] +[38.52372710227998, "o", "f"] +[38.55372710227998, "o", "l"] +[38.58372710227998, "o", "e"] +[38.61372710227998, "o", "_"] +[38.64372710227998, "o", "s"] +[38.67372710227998, "o", "h"] +[38.703727102279984, "o", "o"] +[38.733727102279985, "o", "p"] +[38.76372710227999, "o", ":"] +[38.79372710227999, "o", "a"] +[38.82372710227999, "o", "s"] +[38.85372710227999, "o", "o"] +[38.88372710227999, "o", "f"] +[38.91372710227999, "o", "_"] +[38.94372710227999, "o", "2"] +[38.973727102279994, "o", "0"] +[39.003727102279996, "o", "1"] +[39.03372710228, "o", "8"] +[39.06372710228, "o", "0"] +[39.09372710228, "o", "4"] +[39.12372710228, "o", "0"] +[39.15372710228, "o", "9"] +[39.18372710228, "o", " "] +[39.213727102280004, "o", "o"] +[39.243727102280005, "o", "r"] +[39.273727102280006, "o", "d"] +[39.30372710228001, "o", "e"] +[39.33372710228001, "o", "r"] +[39.36372710228001, "o", "s"] +[39.39372710228001, "o", "\r\n"] +[39.42372710228001, "o", "\u001b[0m"] +[39.45372710228001, "o", "\r\n"] +[39.89765057563817, "o", "Image raw_jaffle_shop:564aa276859de6ef770d63b0bb8da2830d270121a271bc9de495595c47a7c937\r\n"] +[39.89766893386876, "o", "\r\nCreated at 2021-11-17T15:31:50.397228\r\n"] +[39.900681591034285, "o", "Size: 7.58 KiB\r\n"] +[39.9006927967075, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[39.90189538002049, "o", " customers\r\n"] +[39.9019089698795, "o", " orders\r\n payments\r\n"] +[40.33574185371434, "o", "Table raw_jaffle_shop:564aa276859de6ef770d63b0bb8da2830d270121a271bc9de495595c47a7c937/orders\r\n"] +[40.33583793640172, "o", "\r\n"] +[40.33725104332005, "o", "Size: 1.73 KiB\r\n"] +[40.33863387107884, "o", "Rows: 99\r\n"] +[40.33864793777501, "o", "Columns: \r\n id (integer, PK)\r\n user_id (integer)\r\n order_date (timestamp without time zone)\r\n status (character varying)\r\n\r\nObjects: \r\n o7e3ffa6e2141edde30498e4c4a6a2b510d8b7e479081aafe154d31ca4436bd\r\n"] +[40.36864793777501, "o", "\u001b[1m"] +[40.39864793777501, "o", "\u001b[36m"] +[40.42864793777501, "o", "\u001b[91m"] +[40.45864793777501, "o", "$"] +[40.48864793777501, "o", " "] +[40.518647937775015, "o", "\u001b[0m"] +[49.603727102279905, "o", "\u001b[H"] +[49.633727102279906, "o", "\u001b[J"] +[49.66372710227991, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The status column in the raw_orders table in the initial dataset can"] +[49.69372710227991, "o", "\r\n"] +[49.72372710227991, "o", "$ # change through time. Pretend that some jaffles were actually returned.\r\n"] +[49.75372710227991, "o", "$"] +[49.78372710227991, "o", " "] +[49.81372710227991, "o", "s"] +[49.843727102279914, "o", "g"] +[49.873727102279915, "o", "r"] +[49.903727102279916, "o", " "] +[49.93372710227992, "o", "s"] +[49.96372710227992, "o", "q"] +[49.99372710227992, "o", "l"] +[50.02372710227992, "o", " "] +[50.05372710227992, "o", "-"] +[50.08372710227992, "o", "s"] +[50.113727102279924, "o", " "] +[50.143727102279925, "o", "r"] +[50.173727102279926, "o", "a"] +[50.20372710227993, "o", "w"] +[50.23372710227993, "o", "_"] +[50.26372710227993, "o", "j"] +[50.29372710227993, "o", "a"] +[50.32372710227993, "o", "f"] +[50.35372710227993, "o", "f"] +[50.383727102279934, "o", "l"] +[50.413727102279935, "o", "e"] +[50.44372710227994, "o", "_"] +[50.47372710227994, "o", "s"] +[50.50372710227994, "o", "h"] +[50.53372710227994, "o", "o"] +[50.56372710227994, "o", "p"] +[50.59372710227994, "o", " "] +[50.62372710227994, "o", "\""] +[50.653727102279944, "o", "U"] +[50.683727102279946, "o", "P"] +[50.71372710227995, "o", "D"] +[50.74372710227995, "o", "A"] +[50.77372710227995, "o", "T"] +[50.80372710227995, "o", "E"] +[50.83372710227995, "o", " "] +[50.86372710227995, "o", "o"] +[50.893727102279954, "o", "r"] +[50.923727102279955, "o", "d"] +[50.953727102279956, "o", "e"] +[50.98372710227996, "o", "r"] +[51.01372710227996, "o", "s"] +[51.04372710227996, "o", " "] +[51.07372710227996, "o", "S"] +[51.10372710227996, "o", "E"] +[51.13372710227996, "o", "T"] +[51.163727102279964, "o", " "] +[51.193727102279965, "o", "s"] +[51.223727102279966, "o", "t"] +[51.25372710227997, "o", "a"] +[51.28372710227997, "o", "t"] +[51.31372710227997, "o", "u"] +[51.34372710227997, "o", "s"] +[51.37372710227997, "o", " "] +[51.40372710227997, "o", "="] +[51.433727102279974, "o", " "] +[51.463727102279975, "o", "'"] +[51.493727102279976, "o", "r"] +[51.52372710227998, "o", "e"] +[51.55372710227998, "o", "t"] +[51.58372710227998, "o", "u"] +[51.61372710227998, "o", "r"] +[51.64372710227998, "o", "n"] +[51.67372710227998, "o", "e"] +[51.703727102279984, "o", "d"] +[51.733727102279985, "o", "'"] +[51.76372710227999, "o", " "] +[51.79372710227999, "o", "\\"] +[51.82372710227999, "o", "\r\n "] +[51.85372710227999, "o", "W"] +[51.88372710227999, "o", "H"] +[51.91372710227999, "o", "E"] +[51.94372710227999, "o", "R"] +[51.973727102279994, "o", "E"] +[52.003727102279996, "o", " "] +[52.03372710228, "o", "s"] +[52.06372710228, "o", "t"] +[52.09372710228, "o", "a"] +[52.12372710228, "o", "t"] +[52.15372710228, "o", "u"] +[52.18372710228, "o", "s"] +[52.213727102280004, "o", " "] +[52.243727102280005, "o", "="] +[52.273727102280006, "o", " "] +[52.30372710228001, "o", "'"] +[52.33372710228001, "o", "r"] +[52.36372710228001, "o", "e"] +[52.39372710228001, "o", "t"] +[52.42372710228001, "o", "u"] +[52.45372710228001, "o", "r"] +[52.483727102280014, "o", "n"] +[52.513727102280015, "o", "_"] +[52.543727102280016, "o", "p"] +[52.57372710228002, "o", "e"] +[52.60372710228002, "o", "n"] +[52.63372710228002, "o", "d"] +[52.66372710228002, "o", "i"] +[52.69372710228002, "o", "n"] +[52.72372710228002, "o", "g"] +[52.753727102280024, "o", "'"] +[52.783727102280025, "o", " "] +[52.813727102280026, "o", "O"] +[52.84372710228003, "o", "R"] +[52.87372710228003, "o", " "] +[52.90372710228003, "o", "o"] +[52.93372710228003, "o", "r"] +[52.96372710228003, "o", "d"] +[52.99372710228003, "o", "e"] +[53.023727102280034, "o", "r"] +[53.053727102280035, "o", "_"] +[53.08372710228004, "o", "d"] +[53.11372710228004, "o", "a"] +[53.14372710228004, "o", "t"] +[53.17372710228004, "o", "e"] +[53.20372710228004, "o", " "] +[53.23372710228004, "o", "="] +[53.26372710228004, "o", " "] +[53.293727102280045, "o", "'"] +[53.323727102280046, "o", "2"] +[53.35372710228005, "o", "0"] +[53.38372710228005, "o", "1"] +[53.41372710228005, "o", "8"] +[53.44372710228005, "o", "-"] +[53.47372710228005, "o", "0"] +[53.50372710228005, "o", "3"] +[53.533727102280054, "o", "-"] +[53.563727102280055, "o", "2"] +[53.593727102280056, "o", "6"] +[53.62372710228006, "o", "'"] +[53.65372710228006, "o", "\""] +[53.68372710228006, "o", "\r\n"] +[53.71372710228006, "o", "$"] +[53.74372710228006, "o", " "] +[53.77372710228006, "o", "s"] +[53.803727102280064, "o", "g"] +[53.833727102280065, "o", "r"] +[53.863727102280066, "o", " "] +[53.89372710228007, "o", "d"] +[53.92372710228007, "o", "i"] +[53.95372710228007, "o", "f"] +[53.98372710228007, "o", "f"] +[54.01372710228007, "o", " "] +[54.04372710228007, "o", "-"] +[54.073727102280074, "o", "v"] +[54.103727102280075, "o", " "] +[54.133727102280076, "o", "r"] +[54.16372710228008, "o", "a"] +[54.19372710228008, "o", "w"] +[54.22372710228008, "o", "_"] +[54.25372710228008, "o", "j"] +[54.28372710228008, "o", "a"] +[54.31372710228008, "o", "f"] +[54.343727102280084, "o", "f"] +[54.373727102280085, "o", "l"] +[54.40372710228009, "o", "e"] +[54.43372710228009, "o", "_"] +[54.46372710228009, "o", "s"] +[54.49372710228009, "o", "h"] +[54.52372710228009, "o", "o"] +[54.55372710228009, "o", "p"] +[54.58372710228009, "o", "\r\n"] +[54.613727102280095, "o", "\u001b[0m"] +[54.643727102280096, "o", "\r\n"] +[55.40489868164106, "o", "Between 564aa276859d and the current working copy: \r\n"] +[55.404963293075994, "o", "customers: no changes.\r\n"] +[55.4049940490727, "o", "orders: added 5 rows, removed 5 rows.\r\n"] +[55.40500620842023, "o", "- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending')\r\n"] +[55.40503553390546, "o", "- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending')\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n"] +[55.405430355072454, "o", "- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped')\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n"] +[55.40544179916425, "o", "+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned')\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned')\r\n+ (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n"] +[55.40569690704389, "o", "payments: no changes.\r\n"] +[55.43569690704389, "o", "\u001b[1m"] +[55.46569690704389, "o", "\u001b[36m"] +[55.49569690704389, "o", "\u001b[91m"] +[55.525696907043894, "o", "$"] +[55.555696907043895, "o", " "] +[55.585696907043896, "o", "\u001b[0m"] +[60.6156969070439, "o", "\u001b[H"] +[60.6456969070439, "o", "\u001b[J"] +[60.6756969070439, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit this dataset and check out the original data"] +[60.7056969070439, "o", "\r\n"] +[60.7356969070439, "o", "$"] +[60.7656969070439, "o", " "] +[60.795696907043904, "o", "s"] +[60.825696907043906, "o", "g"] +[60.85569690704391, "o", "r"] +[60.88569690704391, "o", " "] +[60.91569690704391, "o", "c"] +[60.94569690704391, "o", "o"] +[60.97569690704391, "o", "m"] +[61.00569690704391, "o", "m"] +[61.03569690704391, "o", "i"] +[61.065696907043915, "o", "t"] +[61.095696907043916, "o", " "] +[61.12569690704392, "o", "r"] +[61.15569690704392, "o", "a"] +[61.18569690704392, "o", "w"] +[61.21569690704392, "o", "_"] +[61.24569690704392, "o", "j"] +[61.27569690704392, "o", "a"] +[61.305696907043924, "o", "f"] +[61.335696907043925, "o", "f"] +[61.365696907043926, "o", "l"] +[61.39569690704393, "o", "e"] +[61.42569690704393, "o", "_"] +[61.45569690704393, "o", "s"] +[61.48569690704393, "o", "h"] +[61.51569690704393, "o", "o"] +[61.54569690704393, "o", "p"] +[61.575696907043934, "o", "\r\n"] +[61.605696907043935, "o", "$"] +[61.635696907043936, "o", " "] +[61.66569690704394, "o", "s"] +[61.69569690704394, "o", "g"] +[61.72569690704394, "o", "r"] +[61.75569690704394, "o", " "] +[61.78569690704394, "o", "t"] +[61.81569690704394, "o", "a"] +[61.845696907043944, "o", "g"] +[61.875696907043945, "o", " "] +[61.90569690704395, "o", "r"] +[61.93569690704395, "o", "a"] +[61.96569690704395, "o", "w"] +[61.99569690704395, "o", "_"] +[62.02569690704395, "o", "j"] +[62.05569690704395, "o", "a"] +[62.08569690704395, "o", "f"] +[62.115696907043954, "o", "f"] +[62.145696907043956, "o", "l"] +[62.17569690704396, "o", "e"] +[62.20569690704396, "o", "_"] +[62.23569690704396, "o", "s"] +[62.26569690704396, "o", "h"] +[62.29569690704396, "o", "o"] +[62.32569690704396, "o", "p"] +[62.35569690704396, "o", " "] +[62.385696907043965, "o", "a"] +[62.415696907043966, "o", "s"] +[62.44569690704397, "o", "o"] +[62.47569690704397, "o", "f"] +[62.50569690704397, "o", "_"] +[62.53569690704397, "o", "2"] +[62.56569690704397, "o", "0"] +[62.59569690704397, "o", "1"] +[62.625696907043974, "o", "8"] +[62.655696907043975, "o", "0"] +[62.685696907043976, "o", "4"] +[62.71569690704398, "o", "1"] +[62.74569690704398, "o", "0"] +[62.77569690704398, "o", "\r\n"] +[62.80569690704398, "o", "$"] +[62.83569690704398, "o", " "] +[62.86569690704398, "o", "s"] +[62.895696907043984, "o", "g"] +[62.925696907043985, "o", "r"] +[62.955696907043986, "o", " "] +[62.98569690704399, "o", "c"] +[63.01569690704399, "o", "h"] +[63.04569690704399, "o", "e"] +[63.07569690704399, "o", "c"] +[63.10569690704399, "o", "k"] +[63.13569690704399, "o", "o"] +[63.165696907043994, "o", "u"] +[63.195696907043995, "o", "t"] +[63.225696907044, "o", " "] +[63.255696907044, "o", "r"] +[63.285696907044, "o", "a"] +[63.315696907044, "o", "w"] +[63.345696907044, "o", "_"] +[63.375696907044, "o", "j"] +[63.405696907044, "o", "a"] +[63.435696907044004, "o", "f"] +[63.465696907044006, "o", "f"] +[63.49569690704401, "o", "l"] +[63.52569690704401, "o", "e"] +[63.55569690704401, "o", "_"] +[63.58569690704401, "o", "s"] +[63.61569690704401, "o", "h"] +[63.64569690704401, "o", "o"] +[63.67569690704401, "o", "p"] +[63.705696907044015, "o", ":"] +[63.735696907044016, "o", "a"] +[63.76569690704402, "o", "s"] +[63.79569690704402, "o", "o"] +[63.82569690704402, "o", "f"] +[63.85569690704402, "o", "_"] +[63.88569690704402, "o", "2"] +[63.91569690704402, "o", "0"] +[63.945696907044024, "o", "1"] +[63.975696907044025, "o", "8"] +[64.00569690704403, "o", "0"] +[64.03569690704403, "o", "4"] +[64.06569690704403, "o", "0"] +[64.09569690704403, "o", "9"] +[64.12569690704403, "o", "\r\n"] +[64.15569690704403, "o", "\u001b[0m"] +[64.18569690704403, "o", "\r\n"] +[64.59234220504818, "o", "Committing raw_jaffle_shop...\r\n"] +[64.61354357719479, "o", "Storing and indexing table orders\r\n"] +[64.71065694809018, "o", "Committed raw_jaffle_shop as 255cdc83d76b.\r\n"] +[65.10852295875607, "o", "Tagged raw_jaffle_shop:255cdc83d76bcba4786d025bba1363eccc24aaec3710aa413b3f94d5a741baa2 with asof_20180410.\r\n"] +[65.7902830314642, "o", "Checked out raw_jaffle_shop:564aa276859d.\r\n"] +[65.8202830314642, "o", "\u001b[1m"] +[65.8502830314642, "o", "\u001b[36m"] +[65.8802830314642, "o", "\u001b[91m"] +[65.9102830314642, "o", "$"] +[65.9402830314642, "o", " "] +[65.9702830314642, "o", "\u001b[0m"] +[71.0002830314642, "o", "\u001b[H"] +[71.03028303146421, "o", "\u001b[J"] +[71.06028303146421, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the 'serious' version of the dbt project that uses data from"] +[71.09028303146421, "o", "\r\n"] +[71.12028303146421, "o", "$ # the actual warehouse rather than seed data.\r\n"] +[71.15028303146421, "o", "$"] +[71.18028303146421, "o", " "] +[71.21028303146421, "o", "c"] +[71.24028303146422, "o", "d"] +[71.27028303146422, "o", " "] +[71.30028303146422, "o", "j"] +[71.33028303146422, "o", "a"] +[71.36028303146422, "o", "f"] +[71.39028303146422, "o", "f"] +[71.42028303146422, "o", "l"] +[71.45028303146422, "o", "e"] +[71.48028303146423, "o", "_"] +[71.51028303146423, "o", "s"] +[71.54028303146423, "o", "h"] +[71.57028303146423, "o", "o"] +[71.60028303146423, "o", "p"] +[71.63028303146423, "o", " "] +[71.66028303146423, "o", "&"] +[71.69028303146423, "o", "&"] +[71.72028303146423, "o", " "] +[71.75028303146424, "o", "g"] +[71.78028303146424, "o", "i"] +[71.81028303146424, "o", "t"] +[71.84028303146424, "o", " "] +[71.87028303146424, "o", "c"] +[71.90028303146424, "o", "h"] +[71.93028303146424, "o", "e"] +[71.96028303146424, "o", "c"] +[71.99028303146424, "o", "k"] +[72.02028303146425, "o", "o"] +[72.05028303146425, "o", "u"] +[72.08028303146425, "o", "t"] +[72.11028303146425, "o", " "] +[72.14028303146425, "o", "d"] +[72.17028303146425, "o", "e"] +[72.20028303146425, "o", "m"] +[72.23028303146425, "o", "o"] +[72.26028303146425, "o", "/"] +[72.29028303146426, "o", "m"] +[72.32028303146426, "o", "a"] +[72.35028303146426, "o", "s"] +[72.38028303146426, "o", "t"] +[72.41028303146426, "o", "e"] +[72.44028303146426, "o", "r"] +[72.47028303146426, "o", " "] +[72.50028303146426, "o", "-"] +[72.53028303146426, "o", "-"] +[72.56028303146427, "o", "f"] +[72.59028303146427, "o", "o"] +[72.62028303146427, "o", "r"] +[72.65028303146427, "o", "c"] +[72.68028303146427, "o", "e"] +[72.71028303146427, "o", "\r\n"] +[72.74028303146427, "o", "\u001b[0m"] +[72.77028303146427, "o", "\r\n"] +[72.77607111930912, "o", "Branch 'demo/master' set up to track remote branch 'demo/master' from 'origin'.\r\n"] +[72.77680926323002, "o", "Switched to a new branch 'demo/master'\r\n"] +[72.80680926323002, "o", "\u001b[1m"] +[72.83680926323002, "o", "\u001b[36m"] +[72.86680926323002, "o", "\u001b[91m"] +[72.89680926323003, "o", "$"] +[72.92680926323003, "o", " "] +[72.95680926323003, "o", "\u001b[0m"] +[77.98680926323003, "o", "\u001b[H"] +[78.01680926323003, "o", "\u001b[J"] +[78.04680926323003, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check that dbt is set up to connect to the Splitgraph engine."] +[78.07680926323003, "o", "\r\n"] +[78.10680926323003, "o", "$ # We will be outputting data into the dbt_jaffle repository, so set that up.\r\n"] +[78.13680926323003, "o", "$"] +[78.16680926323004, "o", " "] +[78.19680926323004, "o", "c"] +[78.22680926323004, "o", "a"] +[78.25680926323004, "o", "t"] +[78.28680926323004, "o", " "] +[78.31680926323004, "o", "."] +[78.34680926323004, "o", "d"] +[78.37680926323004, "o", "b"] +[78.40680926323004, "o", "t"] +[78.43680926323005, "o", "/"] +[78.46680926323005, "o", "p"] +[78.49680926323005, "o", "r"] +[78.52680926323005, "o", "o"] +[78.55680926323005, "o", "f"] +[78.58680926323005, "o", "i"] +[78.61680926323005, "o", "l"] +[78.64680926323005, "o", "e"] +[78.67680926323006, "o", "s"] +[78.70680926323006, "o", "."] +[78.73680926323006, "o", "y"] +[78.76680926323006, "o", "m"] +[78.79680926323006, "o", "l"] +[78.82680926323006, "o", "\r\n"] +[78.85680926323006, "o", "$"] +[78.88680926323006, "o", " "] +[78.91680926323006, "o", "d"] +[78.94680926323007, "o", "b"] +[78.97680926323007, "o", "t"] +[79.00680926323007, "o", " "] +[79.03680926323007, "o", "d"] +[79.06680926323007, "o", "e"] +[79.09680926323007, "o", "b"] +[79.12680926323007, "o", "u"] +[79.15680926323007, "o", "g"] +[79.18680926323007, "o", " "] +[79.21680926323008, "o", "-"] +[79.24680926323008, "o", "-"] +[79.27680926323008, "o", "p"] +[79.30680926323008, "o", "r"] +[79.33680926323008, "o", "o"] +[79.36680926323008, "o", "f"] +[79.39680926323008, "o", "i"] +[79.42680926323008, "o", "l"] +[79.45680926323008, "o", "e"] +[79.48680926323009, "o", "s"] +[79.51680926323009, "o", "-"] +[79.54680926323009, "o", "d"] +[79.57680926323009, "o", "i"] +[79.60680926323009, "o", "r"] +[79.63680926323009, "o", " "] +[79.66680926323009, "o", "."] +[79.6968092632301, "o", "d"] +[79.7268092632301, "o", "b"] +[79.7568092632301, "o", "t"] +[79.7868092632301, "o", " "] +[79.8168092632301, "o", "-"] +[79.8468092632301, "o", "-"] +[79.8768092632301, "o", "p"] +[79.9068092632301, "o", "r"] +[79.9368092632301, "o", "o"] +[79.9668092632301, "o", "j"] +[79.9968092632301, "o", "e"] +[80.0268092632301, "o", "c"] +[80.05680926323011, "o", "t"] +[80.08680926323011, "o", "-"] +[80.11680926323011, "o", "d"] +[80.14680926323011, "o", "i"] +[80.17680926323011, "o", "r"] +[80.20680926323011, "o", " "] +[80.23680926323011, "o", "j"] +[80.26680926323012, "o", "a"] +[80.29680926323012, "o", "f"] +[80.32680926323012, "o", "f"] +[80.35680926323012, "o", "l"] +[80.38680926323012, "o", "e"] +[80.41680926323012, "o", "_"] +[80.44680926323012, "o", "s"] +[80.47680926323012, "o", "h"] +[80.50680926323012, "o", "o"] +[80.53680926323013, "o", "p"] +[80.56680926323013, "o", "\r\n"] +[80.59680926323013, "o", "$"] +[80.62680926323013, "o", " "] +[80.65680926323013, "o", "s"] +[80.68680926323013, "o", "g"] +[80.71680926323013, "o", "r"] +[80.74680926323013, "o", " "] +[80.77680926323013, "o", "i"] +[80.80680926323014, "o", "n"] +[80.83680926323014, "o", "i"] +[80.86680926323014, "o", "t"] +[80.89680926323014, "o", " "] +[80.92680926323014, "o", "d"] +[80.95680926323014, "o", "b"] +[80.98680926323014, "o", "t"] +[81.01680926323014, "o", "_"] +[81.04680926323014, "o", "j"] +[81.07680926323015, "o", "a"] +[81.10680926323015, "o", "f"] +[81.13680926323015, "o", "f"] +[81.16680926323015, "o", "l"] +[81.19680926323015, "o", "e"] +[81.22680926323015, "o", "\r\n"] +[81.25680926323015, "o", "\u001b[0m"] +[81.28680926323015, "o", "\r\n"] +[81.28865819931109, "o", "jaffle_shop:\r\n target: splitgraph\r\n outputs:\r\n splitgraph:\r\n type: postgres\r\n host: localhost\r\n user: sgr\r\n pass: supersecure\r\n port: 5432\r\n dbname: splitgraph\r\n # The final schema that dbt writes to is a combination of this profile schema\r\n # and the schema specified in the model.\r\n schema: \"dbt_jaffle\"\r\n threads: 4\r\n"] +[82.0824025249489, "o", "Running with dbt=0.18.0\r\n"] +[82.08510452270586, "o", "dbt version: 0.18.0\r\npython version: 3.8.12\r\npython path: /opt/hostedtoolcache/Python/3.8.12/x64/bin/python\r\nos info: Linux-5.4.0-1062-azure-x86_64-with-glibc2.2.5\r\nUsing profiles.yml file at .dbt/profiles.yml\r\nUsing dbt_project.yml file at /home/runner/work/splitgraph/splitgraph/examples/dbt/jaffle_shop/dbt_project.yml\r\n\r\n"] +[82.1516564464577, "o", "Configuration:\r\n profiles.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n dbt_project.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n\r\nRequired dependencies:\r\n"] +[82.15661173820574, "o", " - git [\u001b[32mOK found\u001b[0m]\r\n\r\n"] +[82.1566236591347, "o", "Connection:\r\n"] +[82.15686851501543, "o", " host: localhost\r\n port: 5432\r\n user: sgr\r\n"] +[82.15687590599138, "o", " database: splitgraph\r\n schema: dbt_jaffle\r\n search_path: None\r\n keepalives_idle: 0\r\n sslmode: None\r\n"] +[82.1673007583626, "o", " Connection test: \u001b[32mOK connection ok\u001b[0m"] +[82.16735511779864, "o", "\r\n"] +[82.16769104957659, "o", "\r\n"] +[82.54825311660845, "o", "\u001b[0m"] +[82.98571330070574, "o", "Initialized empty repository dbt_jaffle\r\n"] +[83.01571330070574, "o", "\u001b[1m"] +[83.04571330070574, "o", "\u001b[36m"] +[83.07571330070574, "o", "\u001b[91m"] +[83.10571330070574, "o", "$"] +[83.13571330070575, "o", " "] +[83.16571330070575, "o", "\u001b[0m"] +[101.48680926323003, "o", "\u001b[H"] +[101.51680926323003, "o", "\u001b[J"] +[101.54680926323003, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now run the dbt models."] +[101.57680926323003, "o", "\r\n"] +[101.60680926323003, "o", "$"] +[101.63680926323003, "o", " "] +[101.66680926323004, "o", "c"] +[101.69680926323004, "o", "d"] +[101.72680926323004, "o", " "] +[101.75680926323004, "o", "j"] +[101.78680926323004, "o", "a"] +[101.81680926323004, "o", "f"] +[101.84680926323004, "o", "f"] +[101.87680926323004, "o", "l"] +[101.90680926323004, "o", "e"] +[101.93680926323005, "o", "_"] +[101.96680926323005, "o", "s"] +[101.99680926323005, "o", "h"] +[102.02680926323005, "o", "o"] +[102.05680926323005, "o", "p"] +[102.08680926323005, "o", " "] +[102.11680926323005, "o", "&"] +[102.14680926323005, "o", "&"] +[102.17680926323006, "o", " "] +[102.20680926323006, "o", "d"] +[102.23680926323006, "o", "b"] +[102.26680926323006, "o", "t"] +[102.29680926323006, "o", " "] +[102.32680926323006, "o", "r"] +[102.35680926323006, "o", "u"] +[102.38680926323006, "o", "n"] +[102.41680926323006, "o", " "] +[102.44680926323007, "o", "-"] +[102.47680926323007, "o", "-"] +[102.50680926323007, "o", "p"] +[102.53680926323007, "o", "r"] +[102.56680926323007, "o", "o"] +[102.59680926323007, "o", "f"] +[102.62680926323007, "o", "i"] +[102.65680926323007, "o", "l"] +[102.68680926323007, "o", "e"] +[102.71680926323008, "o", "s"] +[102.74680926323008, "o", "-"] +[102.77680926323008, "o", "d"] +[102.80680926323008, "o", "i"] +[102.83680926323008, "o", "r"] +[102.86680926323008, "o", " "] +[102.89680926323008, "o", "."] +[102.92680926323008, "o", "."] +[102.95680926323008, "o", "/"] +[102.98680926323009, "o", "."] +[103.01680926323009, "o", "d"] +[103.04680926323009, "o", "b"] +[103.07680926323009, "o", "t"] +[103.10680926323009, "o", "\r\n"] +[103.13680926323009, "o", "\u001b[0m"] +[103.16680926323009, "o", "\r\n"] +[103.939294042588, "o", "Running with dbt=0.18.0\r\n"] +[104.34251135826183, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[105.21690005302501, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[105.21957558631969, "o", "\r\n"] +[105.52148980140758, "o", "15:31:59 | Concurrency: 4 threads (target='splitgraph')\r\n"] +[105.52155417442394, "o", "15:31:59 | \r\n"] +[105.53216380119396, "o", "15:31:59 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]"] +[105.5322021865852, "o", "\r\n"] +[105.53260988235546, "o", "15:31:59 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]"] +[105.53263896942211, "o", "\r\n"] +[105.55391425132824, "o", "15:31:59 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]"] +[105.55394810676647, "o", "\r\n"] +[105.55955261230541, "o", "15:31:59 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]\r\n"] +[105.78442520141674, "o", "15:31:59 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.24s]\r\n"] +[105.79090804100109, "o", "15:31:59 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.22s]"] +[105.79094046592785, "o", "\r\n"] +[105.79454368591381, "o", "15:31:59 | 5 of 9 START table model dbt_jaffle.order_payments................... [RUN]\r\n"] +[105.81126183509899, "o", "15:31:59 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.27s]"] +[105.8113028430946, "o", "\r\n"] +[105.81290620803905, "o", "15:31:59 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.25s]"] +[105.81307214737011, "o", "\r\n"] +[105.82042235374523, "o", "15:31:59 | 6 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]"] +[105.82045406341625, "o", "\r\n"] +[105.83875555038524, "o", "15:31:59 | 7 of 9 START table model dbt_jaffle.customer_payments................ [RUN]\r\n"] +[105.95038455963207, "o", "15:32:00 | 6 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.12s]"] +[105.95044440269542, "o", "\r\n"] +[105.95497292518688, "o", "15:32:00 | 5 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.16s]"] +[105.95503348350597, "o", "\r\n"] +[105.95671981811596, "o", "15:32:00 | 7 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.12s]"] +[105.9567603492744, "o", "\r\n"] +[105.95850891113353, "o", "15:32:00 | 8 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]\r\n"] +[105.97560543060375, "o", "15:32:00 | 9 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]"] +[105.97564381599499, "o", "\r\n"] +[106.08544153213573, "o", "15:32:00 | 8 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.09s]"] +[106.08549922943187, "o", "\r\n"] +[106.09113711357189, "o", "15:32:00 | 9 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.07s]\r\n"] +[106.10059589386059, "o", "15:32:00 | \r\n"] +[106.10094470024181, "o", "15:32:00 | Finished running 4 view models, 5 table models in 0.88s.\r\n"] +[106.12851494789196, "o", "\r\n"] +[106.12866658210827, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[106.1288532638557, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[106.50921625137401, "o", "\u001b[0m"] +[106.53921625137401, "o", "\u001b[1m"] +[106.56921625137402, "o", "\u001b[36m"] +[106.59921625137402, "o", "\u001b[91m"] +[106.62921625137402, "o", "$"] +[106.65921625137402, "o", " "] +[106.68921625137402, "o", "\u001b[0m"] +[121.98680926323003, "o", "\u001b[H"] +[122.01680926323003, "o", "\u001b[J"] +[122.04680926323003, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Take a look at the built dataset and commit it."] +[122.07680926323003, "o", "\r\n"] +[122.10680926323003, "o", "$ # Note Splitgraph doesn't currently support storing views\r\n"] +[122.13680926323003, "o", "$ # that dbt uses as a staging point for the initial data.\r\n"] +[122.16680926323004, "o", "$"] +[122.19680926323004, "o", " "] +[122.22680926323004, "o", "s"] +[122.25680926323004, "o", "g"] +[122.28680926323004, "o", "r"] +[122.31680926323004, "o", " "] +[122.34680926323004, "o", "d"] +[122.37680926323004, "o", "i"] +[122.40680926323004, "o", "f"] +[122.43680926323005, "o", "f"] +[122.46680926323005, "o", " "] +[122.49680926323005, "o", "d"] +[122.52680926323005, "o", "b"] +[122.55680926323005, "o", "t"] +[122.58680926323005, "o", "_"] +[122.61680926323005, "o", "j"] +[122.64680926323005, "o", "a"] +[122.67680926323006, "o", "f"] +[122.70680926323006, "o", "f"] +[122.73680926323006, "o", "l"] +[122.76680926323006, "o", "e"] +[122.79680926323006, "o", "\r\n"] +[122.82680926323006, "o", "$"] +[122.85680926323006, "o", " "] +[122.88680926323006, "o", "s"] +[122.91680926323006, "o", "g"] +[122.94680926323007, "o", "r"] +[122.97680926323007, "o", " "] +[123.00680926323007, "o", "c"] +[123.03680926323007, "o", "o"] +[123.06680926323007, "o", "m"] +[123.09680926323007, "o", "m"] +[123.12680926323007, "o", "i"] +[123.15680926323007, "o", "t"] +[123.18680926323007, "o", " "] +[123.21680926323008, "o", "d"] +[123.24680926323008, "o", "b"] +[123.27680926323008, "o", "t"] +[123.30680926323008, "o", "_"] +[123.33680926323008, "o", "j"] +[123.36680926323008, "o", "a"] +[123.39680926323008, "o", "f"] +[123.42680926323008, "o", "f"] +[123.45680926323008, "o", "l"] +[123.48680926323009, "o", "e"] +[123.51680926323009, "o", "\r\n"] +[123.54680926323009, "o", "$"] +[123.57680926323009, "o", " "] +[123.60680926323009, "o", "s"] +[123.63680926323009, "o", "g"] +[123.66680926323009, "o", "r"] +[123.6968092632301, "o", " "] +[123.7268092632301, "o", "t"] +[123.7568092632301, "o", "a"] +[123.7868092632301, "o", "g"] +[123.8168092632301, "o", " "] +[123.8468092632301, "o", "d"] +[123.8768092632301, "o", "b"] +[123.9068092632301, "o", "t"] +[123.9368092632301, "o", "_"] +[123.9668092632301, "o", "j"] +[123.9968092632301, "o", "a"] +[124.0268092632301, "o", "f"] +[124.05680926323011, "o", "f"] +[124.08680926323011, "o", "l"] +[124.11680926323011, "o", "e"] +[124.14680926323011, "o", " "] +[124.17680926323011, "o", "a"] +[124.20680926323011, "o", "s"] +[124.23680926323011, "o", "o"] +[124.26680926323012, "o", "f"] +[124.29680926323012, "o", "_"] +[124.32680926323012, "o", "2"] +[124.35680926323012, "o", "0"] +[124.38680926323012, "o", "1"] +[124.41680926323012, "o", "8"] +[124.44680926323012, "o", "0"] +[124.47680926323012, "o", "4"] +[124.50680926323012, "o", "0"] +[124.53680926323013, "o", "9"] +[124.56680926323013, "o", "\r\n"] +[124.59680926323013, "o", "\u001b[0m"] +[124.62680926323013, "o", "\r\n"] +[125.04475607872085, "o", "Between 000000000000 and the current working copy: \r\n"] +[125.04477658271865, "o", "customer_orders: table added\r\ncustomer_payments: table added\r\ndim_customers: table added\r\nfct_orders: table added\r\norder_payments: table added\r\nstg_jaffle_shop__customers: untracked\r\nstg_jaffle_shop__orders: untracked\r\nstg_jaffle_shop__payments: untracked\r\nstg_stripe__payments: untracked\r\n"] +[125.46858730316238, "o", "Committing dbt_jaffle...\r\n"] +[125.48554363250808, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.48666062355117, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.48766818046646, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.48860349655227, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[125.4941808223732, "o", "Processing table order_payments\r\n"] +[125.59789338111953, "o", "Processing table customer_orders\r\n"] +[125.67682733535842, "o", "Processing table customer_payments\r\n"] +[125.75987782478408, "o", "Processing table fct_orders\r\n"] +[125.845435285569, "o", "Processing table dim_customers\r\n"] +[125.95765390396194, "o", "Committed dbt_jaffle as 5ee1b153135f.\r\n"] +[126.33841576576309, "o", "Tagged dbt_jaffle:5ee1b153135f700a2c66542404bc3e349ad943b2dacb96a0d039849c6c2ce977 with asof_20180409.\r\n"] +[126.36841576576309, "o", "\u001b[1m"] +[126.39841576576309, "o", "\u001b[36m"] +[126.42841576576309, "o", "\u001b[91m"] +[126.45841576576309, "o", "$"] +[126.4884157657631, "o", " "] +[126.5184157657631, "o", "\u001b[0m"] +[136.48680926323001, "o", "\u001b[H"] +[136.51680926323002, "o", "\u001b[J"] +[136.54680926323002, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the new version of the raw dataset and run dbt against it as well."] +[136.57680926323002, "o", "\r\n"] +[136.60680926323002, "o", "$"] +[136.63680926323002, "o", " "] +[136.66680926323002, "o", "s"] +[136.69680926323002, "o", "g"] +[136.72680926323002, "o", "r"] +[136.75680926323002, "o", " "] +[136.78680926323003, "o", "c"] +[136.81680926323003, "o", "h"] +[136.84680926323003, "o", "e"] +[136.87680926323003, "o", "c"] +[136.90680926323003, "o", "k"] +[136.93680926323003, "o", "o"] +[136.96680926323003, "o", "u"] +[136.99680926323003, "o", "t"] +[137.02680926323004, "o", " "] +[137.05680926323004, "o", "r"] +[137.08680926323004, "o", "a"] +[137.11680926323004, "o", "w"] +[137.14680926323004, "o", "_"] +[137.17680926323004, "o", "j"] +[137.20680926323004, "o", "a"] +[137.23680926323004, "o", "f"] +[137.26680926323004, "o", "f"] +[137.29680926323005, "o", "l"] +[137.32680926323005, "o", "e"] +[137.35680926323005, "o", "_"] +[137.38680926323005, "o", "s"] +[137.41680926323005, "o", "h"] +[137.44680926323005, "o", "o"] +[137.47680926323005, "o", "p"] +[137.50680926323005, "o", ":"] +[137.53680926323005, "o", "a"] +[137.56680926323006, "o", "s"] +[137.59680926323006, "o", "o"] +[137.62680926323006, "o", "f"] +[137.65680926323006, "o", "_"] +[137.68680926323006, "o", "2"] +[137.71680926323006, "o", "0"] +[137.74680926323006, "o", "1"] +[137.77680926323006, "o", "8"] +[137.80680926323006, "o", "0"] +[137.83680926323007, "o", "4"] +[137.86680926323007, "o", "1"] +[137.89680926323007, "o", "0"] +[137.92680926323007, "o", "\r\n"] +[137.95680926323007, "o", "$"] +[137.98680926323007, "o", " "] +[138.01680926323007, "o", "c"] +[138.04680926323007, "o", "d"] +[138.07680926323007, "o", " "] +[138.10680926323008, "o", "j"] +[138.13680926323008, "o", "a"] +[138.16680926323008, "o", "f"] +[138.19680926323008, "o", "f"] +[138.22680926323008, "o", "l"] +[138.25680926323008, "o", "e"] +[138.28680926323008, "o", "_"] +[138.31680926323008, "o", "s"] +[138.34680926323009, "o", "h"] +[138.3768092632301, "o", "o"] +[138.4068092632301, "o", "p"] +[138.4368092632301, "o", " "] +[138.4668092632301, "o", "&"] +[138.4968092632301, "o", "&"] +[138.5268092632301, "o", " "] +[138.5568092632301, "o", "d"] +[138.5868092632301, "o", "b"] +[138.6168092632301, "o", "t"] +[138.6468092632301, "o", " "] +[138.6768092632301, "o", "r"] +[138.7068092632301, "o", "u"] +[138.7368092632301, "o", "n"] +[138.7668092632301, "o", " "] +[138.7968092632301, "o", "-"] +[138.8268092632301, "o", "-"] +[138.8568092632301, "o", "p"] +[138.8868092632301, "o", "r"] +[138.9168092632301, "o", "o"] +[138.9468092632301, "o", "f"] +[138.9768092632301, "o", "i"] +[139.0068092632301, "o", "l"] +[139.0368092632301, "o", "e"] +[139.0668092632301, "o", "s"] +[139.0968092632301, "o", "-"] +[139.12680926323011, "o", "d"] +[139.15680926323012, "o", "i"] +[139.18680926323012, "o", "r"] +[139.21680926323012, "o", " "] +[139.24680926323012, "o", "."] +[139.27680926323012, "o", "."] +[139.30680926323012, "o", "/"] +[139.33680926323012, "o", "."] +[139.36680926323012, "o", "d"] +[139.39680926323012, "o", "b"] +[139.42680926323013, "o", "t"] +[139.45680926323013, "o", "\r\n"] +[139.48680926323013, "o", "\u001b[0m"] +[139.51680926323013, "o", "\r\n"] +[140.2233684444435, "o", "Checked out raw_jaffle_shop:255cdc83d76b.\r\n"] +[141.06909994125442, "o", "Running with dbt=0.18.0\r\n"] +[141.46999434471206, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] +[142.29344109535293, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] +[142.2961976909645, "o", "\r\n"] +[142.69781402587967, "o", "15:32:05 | Concurrency: 4 threads (target='splitgraph')\r\n"] +[142.69791201591568, "o", "15:32:05 | \r\n"] +[142.7072062873848, "o", "15:32:05 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]\r\n"] +[142.71023420333938, "o", "15:32:05 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]\r\n"] +[142.71639279365615, "o", "15:32:05 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]\r\n"] +[142.7167060756691, "o", "15:32:05 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]"] +[142.71674612999038, "o", "\r\n"] +[142.9840491199501, "o", "15:32:06 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.27s]"] +[142.98412469863968, "o", "\r\n"] +[142.98467043876724, "o", "15:32:06 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.26s]"] +[142.98469213485794, "o", "\r\n"] +[142.98939088821487, "o", "15:32:06 | 5 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]"] +[142.9894292736061, "o", "\r\n"] +[142.9910402679451, "o", "15:32:06 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.27s]\r\n"] +[142.99278739929275, "o", "15:32:06 | 6 of 9 START table model dbt_jaffle.customer_payments................ [RUN]\r\n"] +[143.00173286438064, "o", "15:32:06 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.27s]\r\n"] +[143.01463893890457, "o", "15:32:06 | 7 of 9 START table model dbt_jaffle.order_payments................... [RUN]\r\n"] +[143.1524422550209, "o", "15:32:06 | 7 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.13s]"] +[143.1524763488777, "o", "\r\n"] +[143.15396598815994, "o", "15:32:06 | 5 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.16s]"] +[143.15420226097183, "o", "\r\n"] +[143.15715340614395, "o", "15:32:06 | 6 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.16s]\r\n"] +[143.15755061149673, "o", "15:32:06 | 8 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]"] +[143.15755943298416, "o", "\r\n"] +[143.17610601425247, "o", "15:32:06 | 9 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]"] +[143.17616561889724, "o", "\r\n"] +[143.2601926708229, "o", "15:32:06 | 8 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.10s]"] +[143.2602167510994, "o", "\r\n"] +[143.2706451797493, "o", "15:32:06 | 9 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.09s]\r\n"] +[143.27852133750991, "o", "15:32:06 | \r\n"] +[143.27878335952835, "o", "15:32:06 | Finished running 4 view models, 5 table models in 0.98s.\r\n"] +[143.30701116561966, "o", "\r\n"] +[143.30721096038894, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] +[143.30740741729812, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[143.68772248268203, "o", "\u001b[0m"] +[143.71772248268203, "o", "\u001b[1m"] +[143.74772248268204, "o", "\u001b[36m"] +[143.77772248268204, "o", "\u001b[91m"] +[143.80772248268204, "o", "$"] +[143.83772248268204, "o", " "] +[143.86772248268204, "o", "\u001b[0m"] +[157.98680926323001, "o", "\u001b[H"] +[158.01680926323002, "o", "\u001b[J"] +[158.04680926323002, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create an image from the new data."] +[158.07680926323002, "o", "\r\n"] +[158.10680926323002, "o", "$"] +[158.13680926323002, "o", " "] +[158.16680926323002, "o", "s"] +[158.19680926323002, "o", "g"] +[158.22680926323002, "o", "r"] +[158.25680926323002, "o", " "] +[158.28680926323003, "o", "c"] +[158.31680926323003, "o", "o"] +[158.34680926323003, "o", "m"] +[158.37680926323003, "o", "m"] +[158.40680926323003, "o", "i"] +[158.43680926323003, "o", "t"] +[158.46680926323003, "o", " "] +[158.49680926323003, "o", "d"] +[158.52680926323004, "o", "b"] +[158.55680926323004, "o", "t"] +[158.58680926323004, "o", "_"] +[158.61680926323004, "o", "j"] +[158.64680926323004, "o", "a"] +[158.67680926323004, "o", "f"] +[158.70680926323004, "o", "f"] +[158.73680926323004, "o", "l"] +[158.76680926323004, "o", "e"] +[158.79680926323005, "o", "\r\n"] +[158.82680926323005, "o", "$"] +[158.85680926323005, "o", " "] +[158.88680926323005, "o", "s"] +[158.91680926323005, "o", "g"] +[158.94680926323005, "o", "r"] +[158.97680926323005, "o", " "] +[159.00680926323005, "o", "t"] +[159.03680926323005, "o", "a"] +[159.06680926323006, "o", "g"] +[159.09680926323006, "o", " "] +[159.12680926323006, "o", "d"] +[159.15680926323006, "o", "b"] +[159.18680926323006, "o", "t"] +[159.21680926323006, "o", "_"] +[159.24680926323006, "o", "j"] +[159.27680926323006, "o", "a"] +[159.30680926323006, "o", "f"] +[159.33680926323007, "o", "f"] +[159.36680926323007, "o", "l"] +[159.39680926323007, "o", "e"] +[159.42680926323007, "o", " "] +[159.45680926323007, "o", "a"] +[159.48680926323007, "o", "s"] +[159.51680926323007, "o", "o"] +[159.54680926323007, "o", "f"] +[159.57680926323007, "o", "_"] +[159.60680926323008, "o", "2"] +[159.63680926323008, "o", "0"] +[159.66680926323008, "o", "1"] +[159.69680926323008, "o", "8"] +[159.72680926323008, "o", "0"] +[159.75680926323008, "o", "4"] +[159.78680926323008, "o", "1"] +[159.81680926323008, "o", "0"] +[159.84680926323009, "o", "\r\n"] +[159.8768092632301, "o", "\u001b[0m"] +[159.9068092632301, "o", "\r\n"] +[160.2955312061317, "o", "Committing dbt_jaffle...\r\n"] +[160.3149916458137, "o", "Processing table customer_orders\r\n"] +[160.37167423248363, "o", "Object o0fafb9e76c06e221af3aa558b0a751b176857a09b2d75ca00826becbd12ef5 already exists, skipping\r\n"] +[160.39369433403087, "o", "Processing table customer_payments\r\n"] +[160.4634978103645, "o", "Object o47a7af4dc6d74898da55e6c760eac4d702db25633cfab4e28e6df77cf00098 already exists, skipping\r\n"] +[160.4851507472999, "o", "Processing table order_payments\r\n"] +[160.54591982841563, "o", "Object o87940f703edacc7113c37ae83a6abe6293f48cbb940171ef03875a066b0c5c already exists, skipping\r\n"] +[160.56294672966075, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.5636636543281, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.5646564292915, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.56540983200145, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[160.56982272148204, "o", "Processing table fct_orders\r\n"] +[160.67498677253795, "o", "Processing table dim_customers\r\n"] +[160.7443928051002, "o", "Object o9656926ef986d89e326952a43869eaf3dc59905ff22aba22cd3dd67a834dc5 already exists, skipping\r\n"] +[160.78224008560252, "o", "Committed dbt_jaffle as 0495578d6d23.\r\n"] +[161.18974941253734, "o", "Tagged dbt_jaffle:0495578d6d23d03bde321cbb7c2bea5093524f1b7666508f9289726940085052 with asof_20180410.\r\n"] +[161.21974941253734, "o", "\u001b[1m"] +[161.24974941253734, "o", "\u001b[36m"] +[161.27974941253734, "o", "\u001b[91m"] +[161.30974941253734, "o", "$"] +[161.33974941253734, "o", " "] +[161.36974941253735, "o", "\u001b[0m"] +[167.98680926323001, "o", "\u001b[H"] +[168.01680926323002, "o", "\u001b[J"] +[168.04680926323002, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We now have two versions of the source and the target dataset."] +[168.07680926323002, "o", "\r\n"] +[168.10680926323002, "o", "$"] +[168.13680926323002, "o", " "] +[168.16680926323002, "o", "s"] +[168.19680926323002, "o", "g"] +[168.22680926323002, "o", "r"] +[168.25680926323002, "o", " "] +[168.28680926323003, "o", "l"] +[168.31680926323003, "o", "o"] +[168.34680926323003, "o", "g"] +[168.37680926323003, "o", " "] +[168.40680926323003, "o", "-"] +[168.43680926323003, "o", "t"] +[168.46680926323003, "o", " "] +[168.49680926323003, "o", "r"] +[168.52680926323004, "o", "a"] +[168.55680926323004, "o", "w"] +[168.58680926323004, "o", "_"] +[168.61680926323004, "o", "j"] +[168.64680926323004, "o", "a"] +[168.67680926323004, "o", "f"] +[168.70680926323004, "o", "f"] +[168.73680926323004, "o", "l"] +[168.76680926323004, "o", "e"] +[168.79680926323005, "o", "_"] +[168.82680926323005, "o", "s"] +[168.85680926323005, "o", "h"] +[168.88680926323005, "o", "o"] +[168.91680926323005, "o", "p"] +[168.94680926323005, "o", "\r\n"] +[168.97680926323005, "o", "$"] +[169.00680926323005, "o", " "] +[169.03680926323005, "o", "s"] +[169.06680926323006, "o", "g"] +[169.09680926323006, "o", "r"] +[169.12680926323006, "o", " "] +[169.15680926323006, "o", "l"] +[169.18680926323006, "o", "o"] +[169.21680926323006, "o", "g"] +[169.24680926323006, "o", " "] +[169.27680926323006, "o", "-"] +[169.30680926323006, "o", "t"] +[169.33680926323007, "o", " "] +[169.36680926323007, "o", "d"] +[169.39680926323007, "o", "b"] +[169.42680926323007, "o", "t"] +[169.45680926323007, "o", "_"] +[169.48680926323007, "o", "j"] +[169.51680926323007, "o", "a"] +[169.54680926323007, "o", "f"] +[169.57680926323007, "o", "f"] +[169.60680926323008, "o", "l"] +[169.63680926323008, "o", "e"] +[169.66680926323008, "o", "\r\n"] +[169.69680926323008, "o", "\u001b[0m"] +[169.72680926323008, "o", "\r\n"] +[170.14138913154673, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-11-17 15:31:48\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m564aa27685\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-11-17 15:31:50\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m255cdc83d7\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-11-17 15:31:53\u001b[0m\r\n"] +[170.52798199653697, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-11-17 15:31:57\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m5ee1b15313\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-11-17 15:32:01\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m0495578d6d\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-11-17 15:32:07\u001b[0m\r\n"] +[170.55798199653697, "o", "\u001b[1m"] +[170.58798199653697, "o", "\u001b[36m"] +[170.61798199653697, "o", "\u001b[91m"] +[170.64798199653697, "o", "$"] +[170.67798199653697, "o", " "] +[170.70798199653697, "o", "\u001b[0m"] +[175.73798199653697, "o", "\u001b[H"] +[175.76798199653697, "o", "\u001b[J"] +[175.79798199653698, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the difference between the two datasets that dbt built."] +[175.82798199653698, "o", "\r\n"] +[175.85798199653698, "o", "$"] +[175.88798199653698, "o", " "] +[175.91798199653698, "o", "s"] +[175.94798199653698, "o", "g"] +[175.97798199653698, "o", "r"] +[176.00798199653698, "o", " "] +[176.03798199653698, "o", "d"] +[176.067981996537, "o", "i"] +[176.097981996537, "o", "f"] +[176.127981996537, "o", "f"] +[176.157981996537, "o", " "] +[176.187981996537, "o", "d"] +[176.217981996537, "o", "b"] +[176.247981996537, "o", "t"] +[176.277981996537, "o", "_"] +[176.307981996537, "o", "j"] +[176.337981996537, "o", "a"] +[176.367981996537, "o", "f"] +[176.397981996537, "o", "f"] +[176.427981996537, "o", "l"] +[176.457981996537, "o", "e"] +[176.487981996537, "o", " "] +[176.517981996537, "o", "a"] +[176.547981996537, "o", "s"] +[176.577981996537, "o", "o"] +[176.607981996537, "o", "f"] +[176.637981996537, "o", "_"] +[176.667981996537, "o", "2"] +[176.697981996537, "o", "0"] +[176.727981996537, "o", "1"] +[176.757981996537, "o", "8"] +[176.787981996537, "o", "0"] +[176.81798199653701, "o", "4"] +[176.84798199653702, "o", "0"] +[176.87798199653702, "o", "9"] +[176.90798199653702, "o", " "] +[176.93798199653702, "o", "a"] +[176.96798199653702, "o", "s"] +[176.99798199653702, "o", "o"] +[177.02798199653702, "o", "f"] +[177.05798199653702, "o", "_"] +[177.08798199653702, "o", "2"] +[177.11798199653703, "o", "0"] +[177.14798199653703, "o", "1"] +[177.17798199653703, "o", "8"] +[177.20798199653703, "o", "0"] +[177.23798199653703, "o", "4"] +[177.26798199653703, "o", "1"] +[177.29798199653703, "o", "0"] +[177.32798199653703, "o", " "] +[177.35798199653703, "o", "-"] +[177.38798199653704, "o", "-"] +[177.41798199653704, "o", "v"] +[177.44798199653704, "o", "e"] +[177.47798199653704, "o", "r"] +[177.50798199653704, "o", "b"] +[177.53798199653704, "o", "o"] +[177.56798199653704, "o", "s"] +[177.59798199653704, "o", "e"] +[177.62798199653705, "o", "\r\n"] +[177.65798199653705, "o", "\u001b[0m"] +[177.68798199653705, "o", "\r\n"] +[178.33483139038165, "o", "Between 5ee1b153135f and 0495578d6d23: \r\n"] +[178.3352438545235, "o", "customer_orders: no changes.\r\n"] +[178.33546606063922, "o", "customer_payments: no changes.\r\n"] +[178.3356658554085, "o", "dim_customers: no changes.\r\n"] +[178.33586803436359, "o", "fct_orders: added 5 rows, removed 5 rows.\r\n"] +[178.33604517936786, "o", "- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending', 0, 0, 0, 23, 23)\r\n"] +[178.3362011051186, "o", "- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending', 0, 0, 15, 0, 15)\r\n"] +[178.336267147065, "o", "- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 0, 25, 0, 25)\r\n"] +[178.33640233039935, "o", "- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped', 0, 0, 17, 0, 17)\r\n"] +[178.3365570640572, "o", "- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 23, 0, 0, 23)"] +[178.33667627334674, "o", "\r\n"] +[178.3368548488625, "o", "+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned', 0, 0, 0, 23, 23)\r\n"] +[178.33710018158038, "o", "+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned', 0, 0, 15, 0, 15)\r\n"] +[178.33730355262836, "o", "+ (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 25, 0, 25)\r\n"] +[178.33745542526324, "o", "+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 17, 0, 17)\r\n"] +[178.33758679390033, "o", "+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 23, 0, 0, 23)\r\n"] +[178.33776298523028, "o", "order_payments: no changes.\r\n"] +[178.36776298523029, "o", "\u001b[1m"] +[178.3977629852303, "o", "\u001b[36m"] +[178.4277629852303, "o", "\u001b[91m"] +[178.4577629852303, "o", "$"] +[178.4877629852303, "o", " "] +[178.5177629852303, "o", "\u001b[0m"] +[185.23798199653697, "o", "\u001b[H"] +[185.26798199653697, "o", "\u001b[J"] +[185.29798199653698, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a sample query: how much in bank transfer refunds did we process?"] +[185.32798199653698, "o", "\r\n"] +[185.35798199653698, "o", "$"] +[185.38798199653698, "o", " "] +[185.41798199653698, "o", "s"] +[185.44798199653698, "o", "g"] +[185.47798199653698, "o", "r"] +[185.50798199653698, "o", " "] +[185.53798199653698, "o", "s"] +[185.567981996537, "o", "q"] +[185.597981996537, "o", "l"] +[185.627981996537, "o", " "] +[185.657981996537, "o", "-"] +[185.687981996537, "o", "i"] +[185.717981996537, "o", " "] +[185.747981996537, "o", "d"] +[185.777981996537, "o", "b"] +[185.807981996537, "o", "t"] +[185.837981996537, "o", "_"] +[185.867981996537, "o", "j"] +[185.897981996537, "o", "a"] +[185.927981996537, "o", "f"] +[185.957981996537, "o", "f"] +[185.987981996537, "o", "l"] +[186.017981996537, "o", "e"] +[186.047981996537, "o", ":"] +[186.077981996537, "o", "a"] +[186.107981996537, "o", "s"] +[186.137981996537, "o", "o"] +[186.167981996537, "o", "f"] +[186.197981996537, "o", "_"] +[186.227981996537, "o", "2"] +[186.257981996537, "o", "0"] +[186.287981996537, "o", "1"] +[186.31798199653701, "o", "8"] +[186.34798199653702, "o", "0"] +[186.37798199653702, "o", "4"] +[186.40798199653702, "o", "0"] +[186.43798199653702, "o", "9"] +[186.46798199653702, "o", " "] +[186.49798199653702, "o", "\""] +[186.52798199653702, "o", "S"] +[186.55798199653702, "o", "E"] +[186.58798199653702, "o", "L"] +[186.61798199653703, "o", "E"] +[186.64798199653703, "o", "C"] +[186.67798199653703, "o", "T"] +[186.70798199653703, "o", " "] +[186.73798199653703, "o", "s"] +[186.76798199653703, "o", "u"] +[186.79798199653703, "o", "m"] +[186.82798199653703, "o", "("] +[186.85798199653703, "o", "b"] +[186.88798199653704, "o", "a"] +[186.91798199653704, "o", "n"] +[186.94798199653704, "o", "k"] +[186.97798199653704, "o", "_"] +[187.00798199653704, "o", "t"] +[187.03798199653704, "o", "r"] +[187.06798199653704, "o", "a"] +[187.09798199653704, "o", "n"] +[187.12798199653705, "o", "s"] +[187.15798199653705, "o", "f"] +[187.18798199653705, "o", "e"] +[187.21798199653705, "o", "r"] +[187.24798199653705, "o", "_"] +[187.27798199653705, "o", "a"] +[187.30798199653705, "o", "m"] +[187.33798199653705, "o", "o"] +[187.36798199653705, "o", "u"] +[187.39798199653706, "o", "n"] +[187.42798199653706, "o", "t"] +[187.45798199653706, "o", ")"] +[187.48798199653706, "o", " "] +[187.51798199653706, "o", "F"] +[187.54798199653706, "o", "R"] +[187.57798199653706, "o", "O"] +[187.60798199653706, "o", "M"] +[187.63798199653706, "o", " "] +[187.66798199653707, "o", "f"] +[187.69798199653707, "o", "c"] +[187.72798199653707, "o", "t"] +[187.75798199653707, "o", "_"] +[187.78798199653707, "o", "o"] +[187.81798199653707, "o", "r"] +[187.84798199653707, "o", "d"] +[187.87798199653707, "o", "e"] +[187.90798199653707, "o", "r"] +[187.93798199653708, "o", "s"] +[187.96798199653708, "o", " "] +[187.99798199653708, "o", "W"] +[188.02798199653708, "o", "H"] +[188.05798199653708, "o", "E"] +[188.08798199653708, "o", "R"] +[188.11798199653708, "o", "E"] +[188.14798199653708, "o", " "] +[188.17798199653708, "o", "s"] +[188.2079819965371, "o", "t"] +[188.2379819965371, "o", "a"] +[188.2679819965371, "o", "t"] +[188.2979819965371, "o", "u"] +[188.3279819965371, "o", "s"] +[188.3579819965371, "o", " "] +[188.3879819965371, "o", "="] +[188.4179819965371, "o", " "] +[188.4479819965371, "o", "'"] +[188.4779819965371, "o", "r"] +[188.5079819965371, "o", "e"] +[188.5379819965371, "o", "t"] +[188.5679819965371, "o", "u"] +[188.5979819965371, "o", "r"] +[188.6279819965371, "o", "n"] +[188.6579819965371, "o", "e"] +[188.6879819965371, "o", "d"] +[188.7179819965371, "o", "'"] +[188.7479819965371, "o", "\""] +[188.7779819965371, "o", "\r\n"] +[188.8079819965371, "o", "$"] +[188.8379819965371, "o", " "] +[188.8679819965371, "o", "s"] +[188.8979819965371, "o", "g"] +[188.9279819965371, "o", "r"] +[188.95798199653711, "o", " "] +[188.98798199653712, "o", "s"] +[189.01798199653712, "o", "q"] +[189.04798199653712, "o", "l"] +[189.07798199653712, "o", " "] +[189.10798199653712, "o", "-"] +[189.13798199653712, "o", "i"] +[189.16798199653712, "o", " "] +[189.19798199653712, "o", "d"] +[189.22798199653712, "o", "b"] +[189.25798199653713, "o", "t"] +[189.28798199653713, "o", "_"] +[189.31798199653713, "o", "j"] +[189.34798199653713, "o", "a"] +[189.37798199653713, "o", "f"] +[189.40798199653713, "o", "f"] +[189.43798199653713, "o", "l"] +[189.46798199653713, "o", "e"] +[189.49798199653713, "o", ":"] +[189.52798199653714, "o", "a"] +[189.55798199653714, "o", "s"] +[189.58798199653714, "o", "o"] +[189.61798199653714, "o", "f"] +[189.64798199653714, "o", "_"] +[189.67798199653714, "o", "2"] +[189.70798199653714, "o", "0"] +[189.73798199653714, "o", "1"] +[189.76798199653715, "o", "8"] +[189.79798199653715, "o", "0"] +[189.82798199653715, "o", "4"] +[189.85798199653715, "o", "1"] +[189.88798199653715, "o", "0"] +[189.91798199653715, "o", " "] +[189.94798199653715, "o", "\""] +[189.97798199653715, "o", "S"] +[190.00798199653715, "o", "E"] +[190.03798199653716, "o", "L"] +[190.06798199653716, "o", "E"] +[190.09798199653716, "o", "C"] +[190.12798199653716, "o", "T"] +[190.15798199653716, "o", " "] +[190.18798199653716, "o", "s"] +[190.21798199653716, "o", "u"] +[190.24798199653716, "o", "m"] +[190.27798199653716, "o", "("] +[190.30798199653717, "o", "b"] +[190.33798199653717, "o", "a"] +[190.36798199653717, "o", "n"] +[190.39798199653717, "o", "k"] +[190.42798199653717, "o", "_"] +[190.45798199653717, "o", "t"] +[190.48798199653717, "o", "r"] +[190.51798199653717, "o", "a"] +[190.54798199653717, "o", "n"] +[190.57798199653718, "o", "s"] +[190.60798199653718, "o", "f"] +[190.63798199653718, "o", "e"] +[190.66798199653718, "o", "r"] +[190.69798199653718, "o", "_"] +[190.72798199653718, "o", "a"] +[190.75798199653718, "o", "m"] +[190.78798199653718, "o", "o"] +[190.81798199653718, "o", "u"] +[190.8479819965372, "o", "n"] +[190.8779819965372, "o", "t"] +[190.9079819965372, "o", ")"] +[190.9379819965372, "o", " "] +[190.9679819965372, "o", "F"] +[190.9979819965372, "o", "R"] +[191.0279819965372, "o", "O"] +[191.0579819965372, "o", "M"] +[191.0879819965372, "o", " "] +[191.1179819965372, "o", "f"] +[191.1479819965372, "o", "c"] +[191.1779819965372, "o", "t"] +[191.2079819965372, "o", "_"] +[191.2379819965372, "o", "o"] +[191.2679819965372, "o", "r"] +[191.2979819965372, "o", "d"] +[191.3279819965372, "o", "e"] +[191.3579819965372, "o", "r"] +[191.3879819965372, "o", "s"] +[191.4179819965372, "o", " "] +[191.4479819965372, "o", "W"] +[191.4779819965372, "o", "H"] +[191.5079819965372, "o", "E"] +[191.5379819965372, "o", "R"] +[191.5679819965372, "o", "E"] +[191.59798199653721, "o", " "] +[191.62798199653722, "o", "s"] +[191.65798199653722, "o", "t"] +[191.68798199653722, "o", "a"] +[191.71798199653722, "o", "t"] +[191.74798199653722, "o", "u"] +[191.77798199653722, "o", "s"] +[191.80798199653722, "o", " "] +[191.83798199653722, "o", "="] +[191.86798199653722, "o", " "] +[191.89798199653723, "o", "'"] +[191.92798199653723, "o", "r"] +[191.95798199653723, "o", "e"] +[191.98798199653723, "o", "t"] +[192.01798199653723, "o", "u"] +[192.04798199653723, "o", "r"] +[192.07798199653723, "o", "n"] +[192.10798199653723, "o", "e"] +[192.13798199653723, "o", "d"] +[192.16798199653724, "o", "'"] +[192.19798199653724, "o", "\""] +[192.22798199653724, "o", "\r\n"] +[192.25798199653724, "o", "\u001b[0m"] +[192.28798199653724, "o", "\r\n"] +[193.20701719284156, "o", "3\r\n"] +[194.20701719284156, "o", "60\r\n"] +[194.23701719284156, "o", "\u001b[1m"] +[194.26701719284156, "o", "\u001b[36m"] +[194.29701719284157, "o", "\u001b[91m"] +[194.32701719284157, "o", "$"] +[194.35701719284157, "o", " "] +[194.38701719284157, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.18/import-from-csv.cast b/content/casts/versioned/archive/v0.2.18/import-from-csv.cast new file mode 100644 index 00000000..b324b759 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.18/import-from-csv.cast @@ -0,0 +1,607 @@ +{"version": 2, "width": 100, "height": 45, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1637163047, "metadata": {"tss": [{"h": "Inspect the data file", "ts": 0.06}, {"h": "Initialize the repository", "ts": 6.501327753067018}, {"h": "Ingest the data into a new table (wrapper around COPY FROM STDIN)", "ts": 27.50132775306702}, {"h": "The data is now in a table but not committed as a Splitgraph image", "ts": 36.191327753067156}, {"h": "Create a new image and tag it", "ts": 43.771705198288174}, {"h": "Inspect the image", "ts": 51.88370229721099}, {"h": "Inspect the table", "ts": 58.719909896850936}, {"h": "Inspect object metadata", "ts": 78.21990989685094}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the data file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # (originally from https://data.townofcary.org/api/v2/catalog/datasets/rdu-weather-history/exports/csv)\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "h"] +[0.27, "o", "e"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "d"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "n"] +[0.4500000000000002, "o", "5"] +[0.4800000000000002, "o", " "] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", "d"] +[0.5700000000000003, "o", "u"] +[0.6000000000000003, "o", "-"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "-"] +[0.8700000000000006, "o", "h"] +[0.9000000000000006, "o", "i"] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "t"] +[0.9900000000000007, "o", "o"] +[1.0200000000000007, "o", "r"] +[1.0500000000000007, "o", "y"] +[1.0800000000000007, "o", "."] +[1.1100000000000008, "o", "c"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", "v"] +[1.2000000000000008, "o", "\r\n"] +[1.2300000000000009, "o", "\u001b[0m"] +[1.260000000000001, "o", "\r\n"] +[1.2613189315795907, "o", "date;temperaturemin;temperaturemax;precipitation;snowfall;snowdepth;avgwindspeed;fastest2minwinddir;fastest2minwindspeed;fastest5secwinddir;fastest5secwindspeed;fog;fogheavy;mist;rain;fogground;ice;glaze;drizzle;snow;freezingrain;smokehaze;thunder;highwind;hail;blowingsnow;dust;freezingfog\r\r\n2007-01-06;50.0;71.1;0.13;0.0;0.0;8.05;230;17.9;230;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-09;30.0;55.0;0.0;0.0;0.0;7.61;280;23.04;270;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;N"] +[1.2613277530670175, "o", "o;No\r\r\n2007-01-14;50.0;73.9;0.0;0.0;0.0;8.5;230;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-15;57.0;73.9;0.0;0.0;0.0;13.2;230;23.94;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n"] +[1.2913277530670175, "o", "\u001b[1m"] +[1.3213277530670176, "o", "\u001b[36m"] +[1.3513277530670176, "o", "\u001b[91m"] +[1.3813277530670176, "o", "$"] +[1.4113277530670176, "o", " "] +[1.4413277530670177, "o", "\u001b[0m"] +[6.471327753067018, "o", "\u001b[H"] +[6.501327753067018, "o", "\u001b[J"] +[6.531327753067019, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the repository"] +[6.561327753067019, "o", "\r\n"] +[6.591327753067019, "o", "$"] +[6.621327753067019, "o", " "] +[6.65132775306702, "o", "s"] +[6.68132775306702, "o", "g"] +[6.71132775306702, "o", "r"] +[6.74132775306702, "o", " "] +[6.771327753067021, "o", "i"] +[6.801327753067021, "o", "n"] +[6.831327753067021, "o", "i"] +[6.861327753067021, "o", "t"] +[6.891327753067022, "o", " "] +[6.921327753067022, "o", "d"] +[6.951327753067022, "o", "e"] +[6.981327753067022, "o", "m"] +[7.011327753067023, "o", "o"] +[7.041327753067023, "o", "/"] +[7.071327753067023, "o", "w"] +[7.101327753067023, "o", "e"] +[7.131327753067024, "o", "a"] +[7.161327753067024, "o", "t"] +[7.191327753067024, "o", "h"] +[7.221327753067024, "o", "e"] +[7.251327753067025, "o", "r"] +[7.281327753067025, "o", "\r\n"] +[7.311327753067025, "o", "$"] +[7.341327753067025, "o", " "] +[7.371327753067026, "o", "s"] +[7.401327753067026, "o", "g"] +[7.431327753067026, "o", "r"] +[7.461327753067026, "o", " "] +[7.491327753067027, "o", "c"] +[7.521327753067027, "o", "s"] +[7.551327753067027, "o", "v"] +[7.581327753067027, "o", " "] +[7.611327753067028, "o", "i"] +[7.641327753067028, "o", "m"] +[7.671327753067028, "o", "p"] +[7.701327753067028, "o", "o"] +[7.731327753067029, "o", "r"] +[7.761327753067029, "o", "t"] +[7.791327753067029, "o", " "] +[7.821327753067029, "o", "-"] +[7.85132775306703, "o", "-"] +[7.88132775306703, "o", "h"] +[7.91132775306703, "o", "e"] +[7.94132775306703, "o", "l"] +[7.971327753067031, "o", "p"] +[8.00132775306703, "o", "\r\n"] +[8.03132775306703, "o", "\u001b[0m"] +[8.06132775306703, "o", "\r\n"] +[8.423808155059827, "o", "Initialized empty repository demo/weather\r\n"] +[8.75131922721864, "o", "Usage: sgr csv import [OPTIONS] REPOSITORY TABLE\r\n\r\n Import a CSV file into a checked-out Splitgraph repository. This doesn't\r\n create a new image, use sgr commit after the import and any adjustments\r\n (e.g. adding primary keys or converting column types) to do so.\r\n\r\n If the target table doesn't exist, this will create a new table.\r\n\r\n If the target table does exist, this will try and patch the new values in\r\n by updating rows that exist in the current table (as per its primary key\r\n constraints) an"] +[8.751330671310438, "o", "d inserting new ones. Rows existing in the current table\r\n but missing in the CSV won't be deleted.\r\n\r\n If -r is passed, the table will instead be deleted and recreated from the\r\n CSV file if it exists.\r\n\r\nOptions:\r\n -f, --file FILENAME File name to import data from, default\r\n stdin.\r\n\r\n -r, --replace Replace the table if it already exists.\r\n -k, --primary-key TEXT Use the specified column(s) as primary\r\n "] +[8.751336154937757, "o", " key(s)\r\n\r\n -t, --override-type ...\r\n Explicitly set types of these columns to PG\r\n types\r\n\r\n --encoding TEXT Encoding to use for the CSV file\r\n --separator TEXT CSV separator to use\r\n --no-header Treats the first line of the CSV as data\r\n rather than a header.\r\n\r\n --skip-schema-check Skips checking that the dataframe is\r\n "] +[8.751342592239393, "o", " compatible with the target schema.\r\n\r\n --help Show this message and exit.\r\n"] +[8.781342592239392, "o", "\u001b[1m"] +[8.811342592239392, "o", "\u001b[36m"] +[8.841342592239391, "o", "\u001b[91m"] +[8.87134259223939, "o", "$"] +[8.90134259223939, "o", " "] +[8.931342592239389, "o", "\u001b[0m"] +[27.47132775306702, "o", "\u001b[H"] +[27.50132775306702, "o", "\u001b[J"] +[27.53132775306702, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the data into a new table (wrapper around COPY FROM STDIN)"] +[27.561327753067022, "o", "\r\n"] +[27.591327753067024, "o", "$"] +[27.621327753067025, "o", " "] +[27.651327753067026, "o", "s"] +[27.681327753067027, "o", "g"] +[27.711327753067028, "o", "r"] +[27.74132775306703, "o", " "] +[27.77132775306703, "o", "c"] +[27.80132775306703, "o", "s"] +[27.831327753067033, "o", "v"] +[27.861327753067034, "o", " "] +[27.891327753067035, "o", "i"] +[27.921327753067036, "o", "m"] +[27.951327753067037, "o", "p"] +[27.98132775306704, "o", "o"] +[28.01132775306704, "o", "r"] +[28.04132775306704, "o", "t"] +[28.07132775306704, "o", " "] +[28.101327753067043, "o", "-"] +[28.131327753067044, "o", "f"] +[28.161327753067045, "o", " "] +[28.191327753067046, "o", "r"] +[28.221327753067047, "o", "d"] +[28.25132775306705, "o", "u"] +[28.28132775306705, "o", "-"] +[28.31132775306705, "o", "w"] +[28.341327753067052, "o", "e"] +[28.371327753067053, "o", "a"] +[28.401327753067054, "o", "t"] +[28.431327753067055, "o", "h"] +[28.461327753067057, "o", "e"] +[28.491327753067058, "o", "r"] +[28.52132775306706, "o", "-"] +[28.55132775306706, "o", "h"] +[28.58132775306706, "o", "i"] +[28.611327753067062, "o", "s"] +[28.641327753067063, "o", "t"] +[28.671327753067064, "o", "o"] +[28.701327753067066, "o", "r"] +[28.731327753067067, "o", "y"] +[28.761327753067068, "o", "."] +[28.79132775306707, "o", "c"] +[28.82132775306707, "o", "s"] +[28.85132775306707, "o", "v"] +[28.881327753067072, "o", " "] +[28.911327753067074, "o", "\\"] +[28.941327753067075, "o", "\r\n "] +[28.971327753067076, "o", "-"] +[29.001327753067077, "o", "k"] +[29.031327753067078, "o", " "] +[29.06132775306708, "o", "d"] +[29.09132775306708, "o", "a"] +[29.12132775306708, "o", "t"] +[29.151327753067083, "o", "e"] +[29.181327753067084, "o", " "] +[29.211327753067085, "o", "\\"] +[29.241327753067086, "o", "\r\n "] +[29.271327753067087, "o", "-"] +[29.30132775306709, "o", "t"] +[29.33132775306709, "o", " "] +[29.36132775306709, "o", "d"] +[29.391327753067092, "o", "a"] +[29.421327753067093, "o", "t"] +[29.451327753067094, "o", "e"] +[29.481327753067095, "o", " "] +[29.511327753067096, "o", "t"] +[29.541327753067097, "o", "i"] +[29.5713277530671, "o", "m"] +[29.6013277530671, "o", "e"] +[29.6313277530671, "o", "s"] +[29.661327753067102, "o", "t"] +[29.691327753067103, "o", "a"] +[29.721327753067104, "o", "m"] +[29.751327753067105, "o", "p"] +[29.781327753067107, "o", " "] +[29.811327753067108, "o", "\\"] +[29.84132775306711, "o", "\r\n "] +[29.87132775306711, "o", "-"] +[29.90132775306711, "o", "-"] +[29.931327753067112, "o", "s"] +[29.961327753067113, "o", "e"] +[29.991327753067115, "o", "p"] +[30.021327753067116, "o", "a"] +[30.051327753067117, "o", "r"] +[30.081327753067118, "o", "a"] +[30.11132775306712, "o", "t"] +[30.14132775306712, "o", "o"] +[30.17132775306712, "o", "r"] +[30.201327753067122, "o", " "] +[30.231327753067124, "o", "\""] +[30.261327753067125, "o", ";"] +[30.291327753067126, "o", "\""] +[30.321327753067127, "o", " "] +[30.351327753067128, "o", "\\"] +[30.38132775306713, "o", "\r\n "] +[30.41132775306713, "o", "d"] +[30.44132775306713, "o", "e"] +[30.471327753067133, "o", "m"] +[30.501327753067134, "o", "o"] +[30.531327753067135, "o", "/"] +[30.561327753067136, "o", "w"] +[30.591327753067137, "o", "e"] +[30.62132775306714, "o", "a"] +[30.65132775306714, "o", "t"] +[30.68132775306714, "o", "h"] +[30.711327753067142, "o", "e"] +[30.741327753067143, "o", "r"] +[30.771327753067144, "o", " "] +[30.801327753067145, "o", "r"] +[30.831327753067146, "o", "d"] +[30.861327753067147, "o", "u"] +[30.89132775306715, "o", "\r\n"] +[30.92132775306715, "o", "\u001b[0m"] +[30.95132775306715, "o", "\r\n"] +[30.981327753067152, "o", "\u001b[1m"] +[31.011327753067153, "o", "\u001b[36m"] +[31.041327753067154, "o", "\u001b[91m"] +[31.071327753067155, "o", "$"] +[31.101327753067157, "o", " "] +[31.131327753067158, "o", "\u001b[0m"] +[36.161327753067155, "o", "\u001b[H"] +[36.191327753067156, "o", "\u001b[J"] +[36.22132775306716, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The data is now in a table but not committed as a Splitgraph image"] +[36.25132775306716, "o", "\r\n"] +[36.28132775306716, "o", "$"] +[36.31132775306716, "o", " "] +[36.34132775306716, "o", "s"] +[36.37132775306716, "o", "g"] +[36.401327753067164, "o", "r"] +[36.431327753067166, "o", " "] +[36.46132775306717, "o", "s"] +[36.49132775306717, "o", "t"] +[36.52132775306717, "o", "a"] +[36.55132775306717, "o", "t"] +[36.58132775306717, "o", "u"] +[36.61132775306717, "o", "s"] +[36.64132775306717, "o", " "] +[36.671327753067175, "o", "d"] +[36.701327753067176, "o", "e"] +[36.73132775306718, "o", "m"] +[36.76132775306718, "o", "o"] +[36.79132775306718, "o", "/"] +[36.82132775306718, "o", "w"] +[36.85132775306718, "o", "e"] +[36.88132775306718, "o", "a"] +[36.911327753067184, "o", "t"] +[36.941327753067185, "o", "h"] +[36.971327753067186, "o", "e"] +[37.00132775306719, "o", "r"] +[37.03132775306719, "o", "\r\n"] +[37.06132775306719, "o", "$"] +[37.09132775306719, "o", " "] +[37.12132775306719, "o", "s"] +[37.15132775306719, "o", "g"] +[37.181327753067194, "o", "r"] +[37.211327753067195, "o", " "] +[37.241327753067196, "o", "d"] +[37.2713277530672, "o", "i"] +[37.3013277530672, "o", "f"] +[37.3313277530672, "o", "f"] +[37.3613277530672, "o", " "] +[37.3913277530672, "o", "d"] +[37.4213277530672, "o", "e"] +[37.451327753067204, "o", "m"] +[37.481327753067205, "o", "o"] +[37.51132775306721, "o", "/"] +[37.54132775306721, "o", "w"] +[37.57132775306721, "o", "e"] +[37.60132775306721, "o", "a"] +[37.63132775306721, "o", "t"] +[37.66132775306721, "o", "h"] +[37.69132775306721, "o", "e"] +[37.721327753067214, "o", "r"] +[37.751327753067216, "o", "\r\n"] +[37.78132775306722, "o", "\u001b[0m"] +[37.81132775306722, "o", "\r\n"] +[38.16683512687703, "o", "demo/weather: on image 0000000000000000000000000000000000000000000000000000000000000000.\r\n"] +[38.53169041633626, "o", "Between 000000000000 and the current working copy: \r\n"] +[38.531705198288165, "o", "rdu: table added\r\n"] +[38.561705198288166, "o", "\u001b[1m"] +[38.59170519828817, "o", "\u001b[36m"] +[38.62170519828817, "o", "\u001b[91m"] +[38.65170519828817, "o", "$"] +[38.68170519828817, "o", " "] +[38.71170519828817, "o", "\u001b[0m"] +[43.74170519828817, "o", "\u001b[H"] +[43.771705198288174, "o", "\u001b[J"] +[43.801705198288175, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a new image and tag it"] +[43.83170519828818, "o", "\r\n"] +[43.86170519828818, "o", "$"] +[43.89170519828818, "o", " "] +[43.92170519828818, "o", "s"] +[43.95170519828818, "o", "g"] +[43.98170519828818, "o", "r"] +[44.01170519828818, "o", " "] +[44.041705198288184, "o", "c"] +[44.071705198288186, "o", "o"] +[44.10170519828819, "o", "m"] +[44.13170519828819, "o", "m"] +[44.16170519828819, "o", "i"] +[44.19170519828819, "o", "t"] +[44.22170519828819, "o", " "] +[44.25170519828819, "o", "d"] +[44.28170519828819, "o", "e"] +[44.311705198288195, "o", "m"] +[44.341705198288196, "o", "o"] +[44.3717051982882, "o", "/"] +[44.4017051982882, "o", "w"] +[44.4317051982882, "o", "e"] +[44.4617051982882, "o", "a"] +[44.4917051982882, "o", "t"] +[44.5217051982882, "o", "h"] +[44.551705198288204, "o", "e"] +[44.581705198288205, "o", "r"] +[44.611705198288206, "o", "\r\n"] +[44.64170519828821, "o", "$"] +[44.67170519828821, "o", " "] +[44.70170519828821, "o", "s"] +[44.73170519828821, "o", "g"] +[44.76170519828821, "o", "r"] +[44.79170519828821, "o", " "] +[44.821705198288214, "o", "t"] +[44.851705198288215, "o", "a"] +[44.881705198288216, "o", "g"] +[44.91170519828822, "o", " "] +[44.94170519828822, "o", "d"] +[44.97170519828822, "o", "e"] +[45.00170519828822, "o", "m"] +[45.03170519828822, "o", "o"] +[45.06170519828822, "o", "/"] +[45.091705198288224, "o", "w"] +[45.121705198288225, "o", "e"] +[45.15170519828823, "o", "a"] +[45.18170519828823, "o", "t"] +[45.21170519828823, "o", "h"] +[45.24170519828823, "o", "e"] +[45.27170519828823, "o", "r"] +[45.30170519828823, "o", " "] +[45.33170519828823, "o", "i"] +[45.361705198288234, "o", "n"] +[45.391705198288236, "o", "i"] +[45.42170519828824, "o", "t"] +[45.45170519828824, "o", "i"] +[45.48170519828824, "o", "a"] +[45.51170519828824, "o", "l"] +[45.54170519828824, "o", "_"] +[45.57170519828824, "o", "d"] +[45.60170519828824, "o", "a"] +[45.631705198288245, "o", "t"] +[45.661705198288246, "o", "a"] +[45.69170519828825, "o", "\r\n"] +[45.72170519828825, "o", "\u001b[0m"] +[45.75170519828825, "o", "\r\n"] +[46.09916284561186, "o", "Committing demo/weather...\r\n"] +[46.117686538696574, "o", "Processing table rdu\r\n"] +[46.30277374267607, "o", "Committed demo/weather as 46a15564ebe9.\r\n"] +[46.64370229721098, "o", "Tagged demo/weather:46a15564ebe98ee994d5e597cf983ac6dc7beb0c32861a25c9ed90ba402cdc1d with initial_data.\r\n"] +[46.67370229721098, "o", "\u001b[1m"] +[46.70370229721098, "o", "\u001b[36m"] +[46.73370229721098, "o", "\u001b[91m"] +[46.76370229721098, "o", "$"] +[46.793702297210984, "o", " "] +[46.823702297210986, "o", "\u001b[0m"] +[51.85370229721099, "o", "\u001b[H"] +[51.88370229721099, "o", "\u001b[J"] +[51.91370229721099, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image"] +[51.94370229721099, "o", "\r\n"] +[51.97370229721099, "o", "$"] +[52.00370229721099, "o", " "] +[52.03370229721099, "o", "s"] +[52.063702297210995, "o", "g"] +[52.093702297210996, "o", "r"] +[52.123702297211, "o", " "] +[52.153702297211, "o", "s"] +[52.183702297211, "o", "h"] +[52.213702297211, "o", "o"] +[52.243702297211, "o", "w"] +[52.273702297211, "o", " "] +[52.303702297211004, "o", "d"] +[52.333702297211005, "o", "e"] +[52.363702297211006, "o", "m"] +[52.39370229721101, "o", "o"] +[52.42370229721101, "o", "/"] +[52.45370229721101, "o", "w"] +[52.48370229721101, "o", "e"] +[52.51370229721101, "o", "a"] +[52.54370229721101, "o", "t"] +[52.573702297211014, "o", "h"] +[52.603702297211015, "o", "e"] +[52.633702297211016, "o", "r"] +[52.66370229721102, "o", ":"] +[52.69370229721102, "o", "i"] +[52.72370229721102, "o", "n"] +[52.75370229721102, "o", "i"] +[52.78370229721102, "o", "t"] +[52.81370229721102, "o", "i"] +[52.843702297211024, "o", "a"] +[52.873702297211025, "o", "l"] +[52.90370229721103, "o", "_"] +[52.93370229721103, "o", "d"] +[52.96370229721103, "o", "a"] +[52.99370229721103, "o", "t"] +[53.02370229721103, "o", "a"] +[53.05370229721103, "o", "\r\n"] +[53.08370229721103, "o", "\u001b[0m"] +[53.113702297211034, "o", "\r\n"] +[53.47759842872654, "o", "Image demo/weather:46a15564ebe98ee994d5e597cf983ac6dc7beb0c32861a25c9ed90ba402cdc1d\r\n"] +[53.47770690918003, "o", "\r\nCreated at 2021-11-17T15:30:58.119702\r\n"] +[53.47925353050266, "o", "Size: 113.04 KiB\r\n"] +[53.479262828827245, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[53.47990989685093, "o", " rdu\r\n"] +[53.50990989685093, "o", "\u001b[1m"] +[53.53990989685093, "o", "\u001b[36m"] +[53.56990989685093, "o", "\u001b[91m"] +[53.59990989685093, "o", "$"] +[53.62990989685093, "o", " "] +[53.659909896850934, "o", "\u001b[0m"] +[58.689909896850935, "o", "\u001b[H"] +[58.719909896850936, "o", "\u001b[J"] +[58.74990989685094, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the table"] +[58.77990989685094, "o", "\r\n"] +[58.80990989685094, "o", "$"] +[58.83990989685094, "o", " "] +[58.86990989685094, "o", "s"] +[58.89990989685094, "o", "g"] +[58.929909896850944, "o", "r"] +[58.959909896850945, "o", " "] +[58.989909896850946, "o", "t"] +[59.01990989685095, "o", "a"] +[59.04990989685095, "o", "b"] +[59.07990989685095, "o", "l"] +[59.10990989685095, "o", "e"] +[59.13990989685095, "o", " "] +[59.16990989685095, "o", "d"] +[59.199909896850954, "o", "e"] +[59.229909896850955, "o", "m"] +[59.25990989685096, "o", "o"] +[59.28990989685096, "o", "/"] +[59.31990989685096, "o", "w"] +[59.34990989685096, "o", "e"] +[59.37990989685096, "o", "a"] +[59.40990989685096, "o", "t"] +[59.43990989685096, "o", "h"] +[59.469909896850965, "o", "e"] +[59.499909896850966, "o", "r"] +[59.52990989685097, "o", ":"] +[59.55990989685097, "o", "i"] +[59.58990989685097, "o", "n"] +[59.61990989685097, "o", "i"] +[59.64990989685097, "o", "t"] +[59.67990989685097, "o", "i"] +[59.709909896850974, "o", "a"] +[59.739909896850975, "o", "l"] +[59.769909896850976, "o", "_"] +[59.79990989685098, "o", "d"] +[59.82990989685098, "o", "a"] +[59.85990989685098, "o", "t"] +[59.88990989685098, "o", "a"] +[59.91990989685098, "o", " "] +[59.94990989685098, "o", "r"] +[59.979909896850984, "o", "d"] +[60.009909896850985, "o", "u"] +[60.039909896850986, "o", "\r\n"] +[60.06990989685099, "o", "\u001b[0m"] +[60.09990989685099, "o", "\r\n"] +[60.45320188522379, "o", "Table demo/weather:46a15564ebe98ee994d5e597cf983ac6dc7beb0c32861a25c9ed90ba402cdc1d/rdu\r\n"] +[60.45348321914713, "o", "\r\n"] +[60.45439111709635, "o", "Size: 113.04 KiB\r\n"] +[60.455312843323156, "o", "Rows: 4633\r\nColumns: \r\n"] +[60.45533668518107, "o", " date (timestamp without time zone, PK)\r\n temperaturemin (numeric)\r\n temperaturemax (numeric)\r\n precipitation (numeric)\r\n snowfall (numeric)\r\n snowdepth (numeric)\r\n avgwindspeed (numeric)\r\n fastest2minwinddir (integer)\r\n fastest2minwindspeed (numeric)\r\n fastest5secwinddir (integer)\r\n fastest5secwindspeed (numeric)\r\n fog (character varying)\r\n"] +[60.45535361290018, "o", " fogheavy (character varying)\r\n mist (character varying)\r\n rain (character varying)\r\n fogground (character varying)\r\n"] +[60.45537220954935, "o", " ice (character varying)\r\n glaze (character varying)\r\n drizzle (character varying)\r\n snow (character varying)\r\n"] +[60.45538269996683, "o", " freezingrain (character varying)\r\n smokehaze (character varying)\r\n thunder (character varying)\r\n"] +[60.45539628982584, "o", " highwind (character varying)\r\n hail (character varying)\r\n"] +[60.45541059494059, "o", " blowingsnow (character varying)\r\n dust (character varying)\r\n freezingfog (character varying)\r\n"] +[60.455422277450964, "o", "\r\nObjects: \r\n"] +[60.45542919158976, "o", " ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] +[60.48542919158976, "o", "\u001b[1m"] +[60.51542919158976, "o", "\u001b[36m"] +[60.54542919158976, "o", "\u001b[91m"] +[60.57542919158976, "o", "$"] +[60.605429191589764, "o", " "] +[60.635429191589765, "o", "\u001b[0m"] +[78.18990989685093, "o", "\u001b[H"] +[78.21990989685094, "o", "\u001b[J"] +[78.24990989685094, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect object metadata"] +[78.27990989685094, "o", "\r\n"] +[78.30990989685094, "o", "$"] +[78.33990989685094, "o", " "] +[78.36990989685094, "o", "s"] +[78.39990989685094, "o", "g"] +[78.42990989685094, "o", "r"] +[78.45990989685095, "o", " "] +[78.48990989685095, "o", "o"] +[78.51990989685095, "o", "b"] +[78.54990989685095, "o", "j"] +[78.57990989685095, "o", "e"] +[78.60990989685095, "o", "c"] +[78.63990989685095, "o", "t"] +[78.66990989685095, "o", " "] +[78.69990989685095, "o", "o"] +[78.72990989685096, "o", "b"] +[78.75990989685096, "o", "7"] +[78.78990989685096, "o", "9"] +[78.81990989685096, "o", "9"] +[78.84990989685096, "o", "c"] +[78.87990989685096, "o", "a"] +[78.90990989685096, "o", "7"] +[78.93990989685096, "o", "6"] +[78.96990989685096, "o", "1"] +[78.99990989685097, "o", "e"] +[79.02990989685097, "o", "a"] +[79.05990989685097, "o", "6"] +[79.08990989685097, "o", "3"] +[79.11990989685097, "o", "8"] +[79.14990989685097, "o", "c"] +[79.17990989685097, "o", "0"] +[79.20990989685097, "o", "d"] +[79.23990989685097, "o", "b"] +[79.26990989685098, "o", "b"] +[79.29990989685098, "o", "4"] +[79.32990989685098, "o", "d"] +[79.35990989685098, "o", "f"] +[79.38990989685098, "o", "3"] +[79.41990989685098, "o", "e"] +[79.44990989685098, "o", "5"] +[79.47990989685098, "o", "9"] +[79.50990989685098, "o", "a"] +[79.53990989685099, "o", "b"] +[79.56990989685099, "o", "6"] +[79.59990989685099, "o", "a"] +[79.62990989685099, "o", "9"] +[79.65990989685099, "o", "9"] +[79.68990989685099, "o", "5"] +[79.719909896851, "o", "d"] +[79.749909896851, "o", "8"] +[79.779909896851, "o", "7"] +[79.809909896851, "o", "9"] +[79.839909896851, "o", "9"] +[79.869909896851, "o", "9"] +[79.899909896851, "o", "9"] +[79.929909896851, "o", "0"] +[79.959909896851, "o", "9"] +[79.989909896851, "o", "d"] +[80.019909896851, "o", "0"] +[80.049909896851, "o", "0"] +[80.079909896851, "o", "8"] +[80.10990989685101, "o", "a"] +[80.13990989685101, "o", "3"] +[80.16990989685101, "o", "4"] +[80.19990989685101, "o", "9"] +[80.22990989685101, "o", "5"] +[80.25990989685101, "o", "7"] +[80.28990989685101, "o", "1"] +[80.31990989685102, "o", "1"] +[80.34990989685102, "o", "c"] +[80.37990989685102, "o", "9"] +[80.40990989685102, "o", "0"] +[80.43990989685102, "o", "0"] +[80.46990989685102, "o", "9"] +[80.49990989685102, "o", "f"] +[80.52990989685102, "o", "8"] +[80.55990989685102, "o", "f"] +[80.58990989685103, "o", "\r\n"] +[80.61990989685103, "o", "\u001b[0m"] +[80.64990989685103, "o", "\r\n"] +[81.0186926555638, "o", "Object ID: ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] +[81.01870553016707, "o", "\r\nNamespace: demo\r\nFormat: FRAG\r\nSize: 113.04 KiB\r\nCreated: 2021-11-17 15:30:58.289050\r\nRows inserted: 4633\r\nInsertion hash: 4b49b5701a582aa5c418238e4bf75c84d0dcd2ec993fb4e7fe1d0dfcf6ef6877\r\nRows deleted: 0\r\nDeletion hash: 0000000000000000000000000000000000000000000000000000000000000000\r\n"] +[81.01981369972273, "o", "Column index:\r\n"] +[81.0198232364659, "o", " fog: ['No', 'Yes']\r\n ice: ['No', 'Yes']\r\n date: ['2007-01-01 00:00:00', '2019-09-07 00:00:00']\r\n dust: ['No', 'Yes']\r\n"] +[81.02023236274763, "o", " hail: ['No', 'Yes']\r\n"] +[81.0202430915837, "o", " mist: ['No', 'Yes']\r\n rain: ['No', 'Yes']\r\n snow: ['No', 'Yes']\r\n glaze: ['No', 'Yes']\r\n drizzle: ['No', 'Yes']\r\n"] +[81.0207313728337, "o", " thunder: ['No', 'Yes']\r\n"] +[81.02074210166975, "o", " fogheavy: ['No', 'Yes']\r\n highwind: ['No', 'Yes']\r\n snowfall: ['0.0', '7.01']\r\n fogground: ['No', 'Yes']\r\n smokehaze: ['No', 'Yes']"] +[81.02122203826949, "o", "\r\n"] +[81.02123085975691, "o", " snowdepth: ['0.0', '5.91']\r\n blowingsnow: ['No', 'Yes']\r\n freezingfog: ['No', 'Yes']\r\n"] +[81.02161280632063, "o", " avgwindspeed: ['0.0', '20.36']\r\n"] +[81.02162401199385, "o", " freezingrain: ['No', 'Yes']\r\n precipitation: ['0.0', '6.45']\r\n temperaturemax: ['23.2', '105.1']\r\n temperaturemin: ['4.1', '80.1']\r\n"] +[81.02210704803511, "o", " fastest2minwinddir: [10, 360]\r\n fastest5secwinddir: [10, 360]"] +[81.02211372375533, "o", "\r\n fastest2minwindspeed: ['4.92', '59.95']\r\n fastest5secwindspeed: ['6.93', '86.12']\r\n"] +[81.02212111473128, "o", "\r\n"] +[81.04021851539656, "o", "Location: created locally\r\n"] +[81.07021851539656, "o", "\u001b[1m"] +[81.10021851539656, "o", "\u001b[36m"] +[81.13021851539656, "o", "\u001b[91m"] +[81.16021851539656, "o", "$"] +[81.19021851539657, "o", " "] +[81.22021851539657, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.18/import-from-mongo.cast b/content/casts/versioned/archive/v0.2.18/import-from-mongo.cast new file mode 100644 index 00000000..33a83d24 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.18/import-from-mongo.cast @@ -0,0 +1,688 @@ +{"version": 2, "width": 100, "height": 35, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1637163061, "metadata": {"tss": [{"h": "Inspect the config file", "ts": 0.06}, {"h": "Do some preliminary cleanup", "ts": 6.0600000000000005}, {"h": "Mount the Mongo database", "ts": 12.397032995224006}, {"h": "Check the contents of the new table", "ts": 29.39703299522401}, {"h": "Import the data into a new Splitgraph repository", "ts": 36.44435469627388}, {"h": "Alternatively, data can be imported from other databases with Splitfiles", "ts": 44.9136138153078}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the config file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "c"] +[0.24, "o", "a"] +[0.27, "o", "t"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "."] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "g"] +[0.42000000000000015, "o", "c"] +[0.4500000000000002, "o", "o"] +[0.4800000000000002, "o", "n"] +[0.5100000000000002, "o", "f"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "g"] +[0.6000000000000003, "o", "\r\n"] +[0.6300000000000003, "o", "\u001b[0m"] +[0.6600000000000004, "o", "\r\n"] +[0.6611403560638431, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[data_sources]\r\nmongo_fdw=splitgraph.hooks.data_source.MongoDataSource\r\n"] +[0.6911403560638432, "o", "\u001b[1m"] +[0.7211403560638432, "o", "\u001b[36m"] +[0.7511403560638432, "o", "\u001b[91m"] +[0.7811403560638432, "o", "$"] +[0.8111403560638433, "o", " "] +[0.8411403560638433, "o", "\u001b[0m"] +[6.03, "o", "\u001b[H"] +[6.0600000000000005, "o", "\u001b[J"] +[6.090000000000001, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Do some preliminary cleanup"] +[6.120000000000001, "o", "\r\n"] +[6.150000000000001, "o", "$"] +[6.1800000000000015, "o", " "] +[6.210000000000002, "o", "s"] +[6.240000000000002, "o", "g"] +[6.270000000000002, "o", "r"] +[6.3000000000000025, "o", " "] +[6.330000000000003, "o", "r"] +[6.360000000000003, "o", "m"] +[6.390000000000003, "o", " "] +[6.4200000000000035, "o", "-"] +[6.450000000000004, "o", "y"] +[6.480000000000004, "o", " "] +[6.510000000000004, "o", "s"] +[6.5400000000000045, "o", "t"] +[6.570000000000005, "o", "a"] +[6.600000000000005, "o", "g"] +[6.630000000000005, "o", "i"] +[6.6600000000000055, "o", "n"] +[6.690000000000006, "o", "g"] +[6.720000000000006, "o", "\r\n"] +[6.750000000000006, "o", "\u001b[0m"] +[6.7800000000000065, "o", "\r\n"] +[7.1570329952240055, "o", "Postgres schema staging will be deleted.\r\n"] +[7.187032995224006, "o", "\u001b[1m"] +[7.217032995224006, "o", "\u001b[36m"] +[7.247032995224006, "o", "\u001b[91m"] +[7.2770329952240065, "o", "$"] +[7.307032995224007, "o", " "] +[7.337032995224007, "o", "\u001b[0m"] +[12.367032995224006, "o", "\u001b[H"] +[12.397032995224006, "o", "\u001b[J"] +[12.427032995224005, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Mount the Mongo database"] +[12.457032995224004, "o", "\r\n"] +[12.487032995224004, "o", "$"] +[12.517032995224003, "o", " "] +[12.547032995224003, "o", "s"] +[12.577032995224002, "o", "g"] +[12.607032995224001, "o", "r"] +[12.637032995224, "o", " "] +[12.667032995224, "o", "m"] +[12.697032995224, "o", "o"] +[12.727032995223999, "o", "u"] +[12.757032995223998, "o", "n"] +[12.787032995223997, "o", "t"] +[12.817032995223997, "o", " "] +[12.847032995223996, "o", "m"] +[12.877032995223995, "o", "o"] +[12.907032995223995, "o", "n"] +[12.937032995223994, "o", "g"] +[12.967032995223994, "o", "o"] +[12.997032995223993, "o", "_"] +[13.027032995223992, "o", "f"] +[13.057032995223992, "o", "d"] +[13.087032995223991, "o", "w"] +[13.11703299522399, "o", " "] +[13.14703299522399, "o", "-"] +[13.177032995223989, "o", "-"] +[13.207032995223988, "o", "h"] +[13.237032995223988, "o", "e"] +[13.267032995223987, "o", "l"] +[13.297032995223987, "o", "p"] +[13.327032995223986, "o", "\r\n"] +[13.357032995223985, "o", "$"] +[13.387032995223985, "o", " "] +[13.417032995223984, "o", "s"] +[13.447032995223983, "o", "g"] +[13.477032995223983, "o", "r"] +[13.507032995223982, "o", " "] +[13.537032995223981, "o", "m"] +[13.56703299522398, "o", "o"] +[13.59703299522398, "o", "u"] +[13.62703299522398, "o", "n"] +[13.657032995223979, "o", "t"] +[13.687032995223978, "o", " "] +[13.717032995223978, "o", "m"] +[13.747032995223977, "o", "o"] +[13.777032995223976, "o", "n"] +[13.807032995223976, "o", "g"] +[13.837032995223975, "o", "o"] +[13.867032995223974, "o", "_"] +[13.897032995223974, "o", "f"] +[13.927032995223973, "o", "d"] +[13.957032995223972, "o", "w"] +[13.987032995223972, "o", " "] +[14.017032995223971, "o", "s"] +[14.04703299522397, "o", "t"] +[14.07703299522397, "o", "a"] +[14.10703299522397, "o", "g"] +[14.137032995223969, "o", "i"] +[14.167032995223968, "o", "n"] +[14.197032995223967, "o", "g"] +[14.227032995223967, "o", " "] +[14.257032995223966, "o", "-"] +[14.287032995223965, "o", "c"] +[14.317032995223965, "o", " "] +[14.347032995223964, "o", "o"] +[14.377032995223963, "o", "r"] +[14.407032995223963, "o", "i"] +[14.437032995223962, "o", "g"] +[14.467032995223962, "o", "i"] +[14.497032995223961, "o", "n"] +[14.52703299522396, "o", "r"] +[14.55703299522396, "o", "o"] +[14.587032995223959, "o", ":"] +[14.617032995223958, "o", "o"] +[14.647032995223958, "o", "r"] +[14.677032995223957, "o", "i"] +[14.707032995223956, "o", "g"] +[14.737032995223956, "o", "i"] +[14.767032995223955, "o", "n"] +[14.797032995223955, "o", "p"] +[14.827032995223954, "o", "a"] +[14.857032995223953, "o", "s"] +[14.887032995223953, "o", "s"] +[14.917032995223952, "o", "@"] +[14.947032995223951, "o", "m"] +[14.97703299522395, "o", "o"] +[15.00703299522395, "o", "n"] +[15.03703299522395, "o", "g"] +[15.067032995223949, "o", "o"] +[15.097032995223948, "o", ":"] +[15.127032995223948, "o", "2"] +[15.157032995223947, "o", "7"] +[15.187032995223946, "o", "0"] +[15.217032995223946, "o", "1"] +[15.247032995223945, "o", "7"] +[15.277032995223944, "o", " "] +[15.307032995223944, "o", "-"] +[15.337032995223943, "o", "o"] +[15.367032995223942, "o", " "] +[15.397032995223942, "o", "'"] +[15.427032995223941, "o", "{"] +[15.45703299522394, "o", "\""] +[15.48703299522394, "o", "t"] +[15.51703299522394, "o", "a"] +[15.547032995223939, "o", "b"] +[15.577032995223938, "o", "l"] +[15.607032995223937, "o", "e"] +[15.637032995223937, "o", "s"] +[15.667032995223936, "o", "\""] +[15.697032995223935, "o", ":"] +[15.727032995223935, "o", " "] +[15.757032995223934, "o", "{"] +[15.787032995223933, "o", "\""] +[15.817032995223933, "o", "s"] +[15.847032995223932, "o", "t"] +[15.877032995223932, "o", "u"] +[15.90703299522393, "o", "f"] +[15.93703299522393, "o", "f"] +[15.96703299522393, "o", "\""] +[15.997032995223929, "o", ":"] +[16.02703299522393, "o", " "] +[16.05703299522393, "o", "{"] +[16.087032995223932, "o", "\r\n "] +[16.117032995223934, "o", "\""] +[16.147032995223935, "o", "o"] +[16.177032995223936, "o", "p"] +[16.207032995223937, "o", "t"] +[16.237032995223938, "o", "i"] +[16.26703299522394, "o", "o"] +[16.29703299522394, "o", "n"] +[16.32703299522394, "o", "s"] +[16.357032995223943, "o", "\""] +[16.387032995223944, "o", ":"] +[16.417032995223945, "o", "\r\n "] +[16.447032995223946, "o", "{"] +[16.477032995223947, "o", "\r\n "] +[16.50703299522395, "o", "\""] +[16.53703299522395, "o", "d"] +[16.56703299522395, "o", "a"] +[16.59703299522395, "o", "t"] +[16.627032995223953, "o", "a"] +[16.657032995223954, "o", "b"] +[16.687032995223955, "o", "a"] +[16.717032995223956, "o", "s"] +[16.747032995223957, "o", "e"] +[16.77703299522396, "o", "\""] +[16.80703299522396, "o", ":"] +[16.83703299522396, "o", " "] +[16.867032995223962, "o", "\""] +[16.897032995223963, "o", "o"] +[16.927032995223964, "o", "r"] +[16.957032995223965, "o", "i"] +[16.987032995223966, "o", "g"] +[17.017032995223968, "o", "i"] +[17.04703299522397, "o", "n"] +[17.07703299522397, "o", "d"] +[17.10703299522397, "o", "b"] +[17.137032995223972, "o", "\""] +[17.167032995223973, "o", ","] +[17.197032995223974, "o", "\r\n "] +[17.227032995223976, "o", "\""] +[17.257032995223977, "o", "c"] +[17.287032995223978, "o", "o"] +[17.31703299522398, "o", "l"] +[17.34703299522398, "o", "l"] +[17.37703299522398, "o", "e"] +[17.407032995223982, "o", "c"] +[17.437032995223984, "o", "t"] +[17.467032995223985, "o", "i"] +[17.497032995223986, "o", "o"] +[17.527032995223987, "o", "n"] +[17.557032995223988, "o", "\""] +[17.58703299522399, "o", ":"] +[17.61703299522399, "o", " "] +[17.64703299522399, "o", "\""] +[17.677032995223993, "o", "s"] +[17.707032995223994, "o", "t"] +[17.737032995223995, "o", "u"] +[17.767032995223996, "o", "f"] +[17.797032995223997, "o", "f"] +[17.827032995224, "o", "\""] +[17.857032995224, "o", "\r\n "] +[17.887032995224, "o", "}"] +[17.917032995224, "o", ","] +[17.947032995224003, "o", "\r\n "] +[17.977032995224004, "o", "\""] +[18.007032995224005, "o", "s"] +[18.037032995224006, "o", "c"] +[18.067032995224007, "o", "h"] +[18.09703299522401, "o", "e"] +[18.12703299522401, "o", "m"] +[18.15703299522401, "o", "a"] +[18.187032995224012, "o", "\""] +[18.217032995224013, "o", ":"] +[18.247032995224014, "o", " "] +[18.277032995224015, "o", "{"] +[18.307032995224017, "o", "\r\n "] +[18.337032995224018, "o", "\""] +[18.36703299522402, "o", "n"] +[18.39703299522402, "o", "a"] +[18.42703299522402, "o", "m"] +[18.457032995224022, "o", "e"] +[18.487032995224023, "o", "\""] +[18.517032995224024, "o", ":"] +[18.547032995224026, "o", " "] +[18.577032995224027, "o", "\""] +[18.607032995224028, "o", "t"] +[18.63703299522403, "o", "e"] +[18.66703299522403, "o", "x"] +[18.69703299522403, "o", "t"] +[18.727032995224032, "o", "\""] +[18.757032995224034, "o", ","] +[18.787032995224035, "o", "\r\n "] +[18.817032995224036, "o", "\""] +[18.847032995224037, "o", "d"] +[18.877032995224038, "o", "u"] +[18.90703299522404, "o", "r"] +[18.93703299522404, "o", "a"] +[18.96703299522404, "o", "t"] +[18.997032995224043, "o", "i"] +[19.027032995224044, "o", "o"] +[19.057032995224045, "o", "n"] +[19.087032995224046, "o", "\""] +[19.117032995224047, "o", ":"] +[19.14703299522405, "o", " "] +[19.17703299522405, "o", "\""] +[19.20703299522405, "o", "n"] +[19.23703299522405, "o", "u"] +[19.267032995224053, "o", "m"] +[19.297032995224054, "o", "e"] +[19.327032995224055, "o", "r"] +[19.357032995224056, "o", "i"] +[19.387032995224057, "o", "c"] +[19.41703299522406, "o", "\""] +[19.44703299522406, "o", ","] +[19.47703299522406, "o", "\r\n "] +[19.507032995224062, "o", "\""] +[19.537032995224063, "o", "h"] +[19.567032995224064, "o", "a"] +[19.597032995224065, "o", "p"] +[19.627032995224067, "o", "p"] +[19.657032995224068, "o", "y"] +[19.68703299522407, "o", "\""] +[19.71703299522407, "o", ":"] +[19.74703299522407, "o", " "] +[19.777032995224072, "o", "\""] +[19.807032995224073, "o", "b"] +[19.837032995224074, "o", "o"] +[19.867032995224076, "o", "o"] +[19.897032995224077, "o", "l"] +[19.927032995224078, "o", "e"] +[19.95703299522408, "o", "a"] +[19.98703299522408, "o", "n"] +[20.01703299522408, "o", "\""] +[20.047032995224082, "o", "}"] +[20.077032995224084, "o", "}"] +[20.107032995224085, "o", "}"] +[20.137032995224086, "o", "}"] +[20.167032995224087, "o", "'"] +[20.197032995224088, "o", "\r\n"] +[20.22703299522409, "o", "\u001b[0m"] +[20.25703299522409, "o", "\r\n"] +[20.588964109420868, "o", "Usage: sgr mount mongo_fdw [OPTIONS] SCHEMA\r\n\r\n Mount a Mongo database.\r\n\r\n Mounts one or more collections on a remote Mongo database as a set of\r\n foreign tables locally.\r\n\r\nOptions:\r\n -c, --connection TEXT Connection string in the form\r\n username:password@server:port\r\n\r\n -o, --handler-options JSON JSON-encoded dictionary or @filename.json with\r\n handler options:\r\n \r\n tables: A di"] +[20.58897674560556, "o", "ctionary of form { \"table_name\":\r\n { \"schema\": {\"col1\": \"type1\"...},\r\n \"options\": {\"database\": , \"collection\":\r\n } } }\r\n\r\n --help Show this message and exit.\r\n"] +[21.013174419403168, "o", "Mounting table stuff\r\n"] +[21.04317441940317, "o", "\u001b[1m"] +[21.07317441940317, "o", "\u001b[36m"] +[21.10317441940317, "o", "\u001b[91m"] +[21.133174419403172, "o", "$"] +[21.163174419403173, "o", " "] +[21.193174419403174, "o", "\u001b[0m"] +[29.367032995224008, "o", "\u001b[H"] +[29.39703299522401, "o", "\u001b[J"] +[29.42703299522401, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the contents of the new table"] +[29.45703299522401, "o", "\r\n"] +[29.487032995224013, "o", "$"] +[29.517032995224014, "o", " "] +[29.547032995224015, "o", "s"] +[29.577032995224016, "o", "g"] +[29.607032995224017, "o", "r"] +[29.63703299522402, "o", " "] +[29.66703299522402, "o", "s"] +[29.69703299522402, "o", "q"] +[29.72703299522402, "o", "l"] +[29.757032995224023, "o", " "] +[29.787032995224024, "o", "-"] +[29.817032995224025, "o", "s"] +[29.847032995224026, "o", " "] +[29.877032995224027, "o", "s"] +[29.90703299522403, "o", "t"] +[29.93703299522403, "o", "a"] +[29.96703299522403, "o", "g"] +[29.997032995224032, "o", "i"] +[30.027032995224033, "o", "n"] +[30.057032995224034, "o", "g"] +[30.087032995224035, "o", " "] +[30.117032995224037, "o", "\""] +[30.147032995224038, "o", "S"] +[30.17703299522404, "o", "E"] +[30.20703299522404, "o", "L"] +[30.23703299522404, "o", "E"] +[30.267032995224042, "o", "C"] +[30.297032995224043, "o", "T"] +[30.327032995224044, "o", " "] +[30.357032995224046, "o", "*"] +[30.387032995224047, "o", " "] +[30.417032995224048, "o", "F"] +[30.44703299522405, "o", "R"] +[30.47703299522405, "o", "O"] +[30.50703299522405, "o", "M"] +[30.537032995224052, "o", " "] +[30.567032995224054, "o", "s"] +[30.597032995224055, "o", "t"] +[30.627032995224056, "o", "u"] +[30.657032995224057, "o", "f"] +[30.687032995224058, "o", "f"] +[30.71703299522406, "o", "\""] +[30.74703299522406, "o", "\r\n"] +[30.77703299522406, "o", "\u001b[0m"] +[30.807032995224063, "o", "\r\n"] +[31.204354696273867, "o", "Alex 12 False 619520410899f4d256752855\r\nJames 2 True 619520410899f4d256752856\r\nAlice 98765 True 619520410899f4d256752857\r\n"] +[31.23435469627387, "o", "\u001b[1m"] +[31.26435469627387, "o", "\u001b[36m"] +[31.29435469627387, "o", "\u001b[91m"] +[31.324354696273872, "o", "$"] +[31.354354696273873, "o", " "] +[31.384354696273874, "o", "\u001b[0m"] +[36.414354696273875, "o", "\u001b[H"] +[36.44435469627388, "o", "\u001b[J"] +[36.47435469627388, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Import the data into a new Splitgraph repository"] +[36.50435469627388, "o", "\r\n"] +[36.53435469627388, "o", "$"] +[36.56435469627388, "o", " "] +[36.59435469627388, "o", "s"] +[36.62435469627388, "o", "g"] +[36.654354696273884, "o", "r"] +[36.684354696273886, "o", " "] +[36.71435469627389, "o", "i"] +[36.74435469627389, "o", "m"] +[36.77435469627389, "o", "p"] +[36.80435469627389, "o", "o"] +[36.83435469627389, "o", "r"] +[36.86435469627389, "o", "t"] +[36.89435469627389, "o", " "] +[36.924354696273895, "o", "s"] +[36.954354696273896, "o", "t"] +[36.9843546962739, "o", "a"] +[37.0143546962739, "o", "g"] +[37.0443546962739, "o", "i"] +[37.0743546962739, "o", "n"] +[37.1043546962739, "o", "g"] +[37.1343546962739, "o", " "] +[37.164354696273904, "o", "\""] +[37.194354696273905, "o", "S"] +[37.224354696273906, "o", "E"] +[37.25435469627391, "o", "L"] +[37.28435469627391, "o", "E"] +[37.31435469627391, "o", "C"] +[37.34435469627391, "o", "T"] +[37.37435469627391, "o", " "] +[37.40435469627391, "o", "n"] +[37.434354696273914, "o", "a"] +[37.464354696273915, "o", "m"] +[37.494354696273916, "o", "e"] +[37.52435469627392, "o", ","] +[37.55435469627392, "o", " "] +[37.58435469627392, "o", "d"] +[37.61435469627392, "o", "u"] +[37.64435469627392, "o", "r"] +[37.67435469627392, "o", "a"] +[37.704354696273924, "o", "t"] +[37.734354696273925, "o", "i"] +[37.76435469627393, "o", "o"] +[37.79435469627393, "o", "n"] +[37.82435469627393, "o", ","] +[37.85435469627393, "o", " "] +[37.88435469627393, "o", "h"] +[37.91435469627393, "o", "a"] +[37.94435469627393, "o", "p"] +[37.974354696273934, "o", "p"] +[38.004354696273936, "o", "y"] +[38.03435469627394, "o", " "] +[38.06435469627394, "o", "F"] +[38.09435469627394, "o", "R"] +[38.12435469627394, "o", "O"] +[38.15435469627394, "o", "M"] +[38.18435469627394, "o", " "] +[38.21435469627394, "o", "s"] +[38.244354696273945, "o", "t"] +[38.274354696273946, "o", "u"] +[38.30435469627395, "o", "f"] +[38.33435469627395, "o", "f"] +[38.36435469627395, "o", "\""] +[38.39435469627395, "o", " "] +[38.42435469627395, "o", "m"] +[38.45435469627395, "o", "y"] +[38.484354696273954, "o", "/"] +[38.514354696273955, "o", "r"] +[38.544354696273956, "o", "e"] +[38.57435469627396, "o", "p"] +[38.60435469627396, "o", "o"] +[38.63435469627396, "o", "s"] +[38.66435469627396, "o", "i"] +[38.69435469627396, "o", "t"] +[38.72435469627396, "o", "o"] +[38.754354696273964, "o", "r"] +[38.784354696273965, "o", "y"] +[38.814354696273966, "o", " "] +[38.84435469627397, "o", "s"] +[38.87435469627397, "o", "t"] +[38.90435469627397, "o", "u"] +[38.93435469627397, "o", "f"] +[38.96435469627397, "o", "f"] +[38.99435469627397, "o", "\r\n"] +[39.024354696273974, "o", "\u001b[0m"] +[39.054354696273975, "o", "\r\n"] +[39.48955872535723, "o", "Processing table sg_tmp_b9b56569902e58bd2c80f1e1951e52f0\r\n"] +[39.67361381530779, "o", "my/repository:stuff has been imported from staging:SELECT name, duration, happy FROM stuff\r\n"] +[39.70361381530779, "o", "\u001b[1m"] +[39.73361381530779, "o", "\u001b[36m"] +[39.76361381530779, "o", "\u001b[91m"] +[39.79361381530779, "o", "$"] +[39.823613815307795, "o", " "] +[39.853613815307796, "o", "\u001b[0m"] +[44.8836138153078, "o", "\u001b[H"] +[44.9136138153078, "o", "\u001b[J"] +[44.9436138153078, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Alternatively, data can be imported from other databases with Splitfiles"] +[44.9736138153078, "o", "\r\n"] +[45.0036138153078, "o", "$"] +[45.0336138153078, "o", " "] +[45.063613815307804, "o", "c"] +[45.093613815307805, "o", "a"] +[45.123613815307806, "o", "t"] +[45.15361381530781, "o", " "] +[45.18361381530781, "o", "m"] +[45.21361381530781, "o", "o"] +[45.24361381530781, "o", "n"] +[45.27361381530781, "o", "g"] +[45.30361381530781, "o", "o"] +[45.333613815307814, "o", "_"] +[45.363613815307815, "o", "i"] +[45.393613815307816, "o", "m"] +[45.42361381530782, "o", "p"] +[45.45361381530782, "o", "o"] +[45.48361381530782, "o", "r"] +[45.51361381530782, "o", "t"] +[45.54361381530782, "o", "."] +[45.57361381530782, "o", "s"] +[45.603613815307824, "o", "p"] +[45.633613815307825, "o", "l"] +[45.663613815307826, "o", "i"] +[45.69361381530783, "o", "t"] +[45.72361381530783, "o", "f"] +[45.75361381530783, "o", "i"] +[45.78361381530783, "o", "l"] +[45.81361381530783, "o", "e"] +[45.84361381530783, "o", "\r\n"] +[45.873613815307834, "o", "$"] +[45.903613815307835, "o", " "] +[45.93361381530784, "o", "s"] +[45.96361381530784, "o", "g"] +[45.99361381530784, "o", "r"] +[46.02361381530784, "o", " "] +[46.05361381530784, "o", "b"] +[46.08361381530784, "o", "u"] +[46.11361381530784, "o", "i"] +[46.143613815307845, "o", "l"] +[46.173613815307846, "o", "d"] +[46.20361381530785, "o", " "] +[46.23361381530785, "o", "m"] +[46.26361381530785, "o", "o"] +[46.29361381530785, "o", "n"] +[46.32361381530785, "o", "g"] +[46.35361381530785, "o", "o"] +[46.383613815307854, "o", "_"] +[46.413613815307855, "o", "i"] +[46.443613815307856, "o", "m"] +[46.47361381530786, "o", "p"] +[46.50361381530786, "o", "o"] +[46.53361381530786, "o", "r"] +[46.56361381530786, "o", "t"] +[46.59361381530786, "o", "."] +[46.62361381530786, "o", "s"] +[46.653613815307864, "o", "p"] +[46.683613815307865, "o", "l"] +[46.713613815307866, "o", "i"] +[46.74361381530787, "o", "t"] +[46.77361381530787, "o", "f"] +[46.80361381530787, "o", "i"] +[46.83361381530787, "o", "l"] +[46.86361381530787, "o", "e"] +[46.89361381530787, "o", "\r\n"] +[46.923613815307874, "o", "\u001b[0m"] +[46.953613815307875, "o", "\r\n"] +[46.95506506919887, "o", "FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"tables\": {\"stuff\": {"] +[46.95510416984584, "o", "\r\n"] +[46.95521098136928, "o", " \"options\": {"] +[46.95522290229823, "o", "\r\n"] +[46.95523458480861, "o", " \"database\": \"origindb\","] +[46.95524388313319, "o", "\r\n"] +[46.95525270462062, "o", " \"collection\": \"stuff\""] +[46.95526247978236, "o", "\r\n"] +[46.955272731781264, "o", " },"] +[46.95528131485011, "o", "\r\n"] +[46.955291328430434, "o", " \"schema\": {"] +[46.9553008651736, "o", "\r\n"] +[46.95531087875392, "o", " \"name\": \"text\","] +[46.95531946182277, "o", "\r\n"] +[46.95532947540309, "o", " \"duration\": \"numeric\","] +[46.95533805847194, "o", "\r\n"] +[46.955346879959365, "o", " \"happy\": \"boolean\"}}}}'"] +[46.95535522460963, "o", "\r\n"] +[46.955365238189955, "o", " IMPORT {SELECT * FROM stuff} AS stuff"] +[46.9553750133517, "o", "\r\n"] +[47.329227027893324, "o", "Executing Splitfile mongo_import.splitfile with arguments {}\r\n"] +[47.32970148086574, "o", "\u001b[1m\r\nStep 1/1 : FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"t...\u001b[0m\r\n"] +[47.46176987648036, "o", "Mounting table stuff\r\n"] +[47.524207887649794, "o", "Processing table sg_tmp_1e7a51d2b83bef6e1e883605a6fc5a5f\r\n"] +[47.74858814239528, "o", "Successfully built mongo_import:050f1290f76a.\r\n"] +[47.77858814239528, "o", "\u001b[1m"] +[47.80858814239528, "o", "\u001b[36m"] +[47.83858814239528, "o", "\u001b[91m"] +[47.86858814239528, "o", "$"] +[47.89858814239528, "o", " "] +[47.928588142395284, "o", "\u001b[0m"] +[54.8836138153078, "o", "\u001b[H"] +[54.9136138153078, "o", "\u001b[J"] +[54.9436138153078, "o", "\u001b[1m"] +[54.9736138153078, "o", "\u001b[36m"] +[55.0036138153078, "o", "\u001b[91m"] +[55.0336138153078, "o", "$"] +[55.063613815307804, "o", " "] +[55.093613815307805, "o", "s"] +[55.123613815307806, "o", "g"] +[55.15361381530781, "o", "r"] +[55.18361381530781, "o", " "] +[55.21361381530781, "o", "s"] +[55.24361381530781, "o", "h"] +[55.27361381530781, "o", "o"] +[55.30361381530781, "o", "w"] +[55.333613815307814, "o", " "] +[55.363613815307815, "o", "m"] +[55.393613815307816, "o", "o"] +[55.42361381530782, "o", "n"] +[55.45361381530782, "o", "g"] +[55.48361381530782, "o", "o"] +[55.51361381530782, "o", "_"] +[55.54361381530782, "o", "i"] +[55.57361381530782, "o", "m"] +[55.603613815307824, "o", "p"] +[55.633613815307825, "o", "o"] +[55.663613815307826, "o", "r"] +[55.69361381530783, "o", "t"] +[55.72361381530783, "o", ":"] +[55.75361381530783, "o", "l"] +[55.78361381530783, "o", "a"] +[55.81361381530783, "o", "t"] +[55.84361381530783, "o", "e"] +[55.873613815307834, "o", "s"] +[55.903613815307835, "o", "t"] +[55.93361381530784, "o", "\r\n"] +[55.96361381530784, "o", "$"] +[55.99361381530784, "o", " "] +[56.02361381530784, "o", "s"] +[56.05361381530784, "o", "g"] +[56.08361381530784, "o", "r"] +[56.11361381530784, "o", " "] +[56.143613815307845, "o", "s"] +[56.173613815307846, "o", "q"] +[56.20361381530785, "o", "l"] +[56.23361381530785, "o", " "] +[56.26361381530785, "o", "-"] +[56.29361381530785, "o", "s"] +[56.32361381530785, "o", " "] +[56.35361381530785, "o", "m"] +[56.383613815307854, "o", "o"] +[56.413613815307855, "o", "n"] +[56.443613815307856, "o", "g"] +[56.47361381530786, "o", "o"] +[56.50361381530786, "o", "_"] +[56.53361381530786, "o", "i"] +[56.56361381530786, "o", "m"] +[56.59361381530786, "o", "p"] +[56.62361381530786, "o", "o"] +[56.653613815307864, "o", "r"] +[56.683613815307865, "o", "t"] +[56.713613815307866, "o", " "] +[56.74361381530787, "o", "\""] +[56.77361381530787, "o", "S"] +[56.80361381530787, "o", "E"] +[56.83361381530787, "o", "L"] +[56.86361381530787, "o", "E"] +[56.89361381530787, "o", "C"] +[56.923613815307874, "o", "T"] +[56.953613815307875, "o", " "] +[56.983613815307876, "o", "*"] +[57.01361381530788, "o", " "] +[57.04361381530788, "o", "F"] +[57.07361381530788, "o", "R"] +[57.10361381530788, "o", "O"] +[57.13361381530788, "o", "M"] +[57.16361381530788, "o", " "] +[57.193613815307884, "o", "s"] +[57.223613815307885, "o", "t"] +[57.25361381530789, "o", "u"] +[57.28361381530789, "o", "f"] +[57.31361381530789, "o", "f"] +[57.34361381530789, "o", "\""] +[57.37361381530789, "o", "\r\n"] +[57.40361381530789, "o", "\u001b[0m"] +[57.43361381530789, "o", "\r\n"] +[57.83094552993802, "o", "Image mongo_import:050f1290f76a2171c0f629ac41cbc1520589c8291d44a8bf864e30c83a8e0381\r\nImporting 1 table from mongo_fdw_tmp_staging\r\n"] +[57.83096913337735, "o", "Created at 2021-11-17T15:31:23.045013\r\n"] +[57.833035507202425, "o", "Size: 589.00 B\r\n"] +[57.83304385185269, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[57.83425168037442, "o", " stuff\r\n"] +[58.24856761932401, "o", "Alex 12 False 619520410899f4d256752855\r\nJames 2 True 619520410899f4d256752856\r\nAlice 98765 True 619520410899f4d256752857\r\n"] +[58.27856761932401, "o", "\u001b[1m"] +[58.30856761932401, "o", "\u001b[36m"] +[58.33856761932401, "o", "\u001b[91m"] +[58.36856761932401, "o", "$"] +[58.39856761932401, "o", " "] +[58.42856761932401, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.18/metadata.json b/content/casts/versioned/archive/v0.2.18/metadata.json new file mode 100644 index 00000000..dd8ec150 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.18/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.18", + "updated_at": "2022-01-20T00:00:35.582Z", + "release": { + "id": 53567785, + "tag_name": "v0.2.18", + "target_commitish": "cc98bd8a87b1252d69f31a8f066818e2a4b7bb70", + "created_at": "2021-11-17T15:11:01Z", + "published_at": "2021-11-17T15:51:54Z", + "assets": [ + { + "id": 49679059, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/49679059", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-11-17T15:39:42Z", + "updated_at": "2021-11-17T15:39:43Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.18/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/casts/versioned/archive/v0.2.18/pg-replication.cast b/content/casts/versioned/archive/v0.2.18/pg-replication.cast new file mode 100644 index 00000000..946af4f7 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.18/pg-replication.cast @@ -0,0 +1,1399 @@ +{"version": 2, "width": 100, "height": 21, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1637163133, "metadata": {"tss": [{"h": "The configuration file for sgr contains credentials for the", "ts": 0.06}, {"h": "The origin database has been set up with a couple of tables.", "ts": 10.059999999999999}, {"h": "Create a publication on the origin database", "ts": 19.711411762237468}, {"h": "Create a schema with the same name and same tables", "ts": 28.49141176223761}, {"h": "Set up replication from the origin database.", "ts": 38.49141176223761}, {"h": "Check the data on the engine", "ts": 49.431411762237836}, {"h": "Commit the data as an initial image", "ts": 58.001116600037015}, {"h": "Make a change on the origin database", "ts": 68.13017123222406}, {"h": "The change propagates to the subscriber and gets", "ts": 84.20017123222448}, {"h": "Committing creates a new image, snapshotting the state.", "ts": 91.00143007278544}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The configuration file for sgr contains credentials for the"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # origin database: this is just so that we can use sgr to query it\r\n"] +[0.18, "o", "$ # (replication can be set up through any PostgreSQL client)\r\n"] +[0.21, "o", "$"] +[0.24, "o", " "] +[0.27, "o", "c"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "t"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "."] +[0.42000000000000015, "o", "s"] +[0.4500000000000002, "o", "g"] +[0.4800000000000002, "o", "c"] +[0.5100000000000002, "o", "o"] +[0.5400000000000003, "o", "n"] +[0.5700000000000003, "o", "f"] +[0.6000000000000003, "o", "i"] +[0.6300000000000003, "o", "g"] +[0.6600000000000004, "o", "\r\n"] +[0.6900000000000004, "o", "\u001b[0m"] +[0.7200000000000004, "o", "\r\n"] +[0.7211694431304936, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n; Add the origin database here so that we can\r\n; use sgr to talk to it (can use any pg client)\r\n[remote:origin]\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=originuser\r\nSG_ENGINE_PWD=originpass\r\nSG_ENGINE_DB=originuser\r\n"] +[0.7511694431304936, "o", "\u001b[1m"] +[0.7811694431304936, "o", "\u001b[36m"] +[0.8111694431304937, "o", "\u001b[91m"] +[0.8411694431304937, "o", "$"] +[0.8711694431304937, "o", " "] +[0.9011694431304937, "o", "\u001b[0m"] +[10.03, "o", "\u001b[H"] +[10.059999999999999, "o", "\u001b[J"] +[10.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The origin database has been set up with a couple of tables."] +[10.119999999999997, "o", "\r\n"] +[10.149999999999997, "o", "$"] +[10.179999999999996, "o", " "] +[10.209999999999996, "o", "s"] +[10.239999999999995, "o", "g"] +[10.269999999999994, "o", "r"] +[10.299999999999994, "o", " "] +[10.329999999999993, "o", "s"] +[10.359999999999992, "o", "q"] +[10.389999999999992, "o", "l"] +[10.419999999999991, "o", " "] +[10.44999999999999, "o", "-"] +[10.47999999999999, "o", "r"] +[10.50999999999999, "o", " "] +[10.539999999999988, "o", "o"] +[10.569999999999988, "o", "r"] +[10.599999999999987, "o", "i"] +[10.629999999999987, "o", "g"] +[10.659999999999986, "o", "i"] +[10.689999999999985, "o", "n"] +[10.719999999999985, "o", " "] +[10.749999999999984, "o", "\""] +[10.779999999999983, "o", "S"] +[10.809999999999983, "o", "E"] +[10.839999999999982, "o", "L"] +[10.869999999999981, "o", "E"] +[10.89999999999998, "o", "C"] +[10.92999999999998, "o", "T"] +[10.95999999999998, "o", " "] +[10.989999999999979, "o", "*"] +[11.019999999999978, "o", " "] +[11.049999999999978, "o", "F"] +[11.079999999999977, "o", "R"] +[11.109999999999976, "o", "O"] +[11.139999999999976, "o", "M"] +[11.169999999999975, "o", " "] +[11.199999999999974, "o", "p"] +[11.229999999999974, "o", "r"] +[11.259999999999973, "o", "o"] +[11.289999999999973, "o", "d"] +[11.319999999999972, "o", "u"] +[11.349999999999971, "o", "c"] +[11.37999999999997, "o", "t"] +[11.40999999999997, "o", "i"] +[11.43999999999997, "o", "o"] +[11.469999999999969, "o", "n"] +[11.499999999999968, "o", "_"] +[11.529999999999967, "o", "d"] +[11.559999999999967, "o", "a"] +[11.589999999999966, "o", "t"] +[11.619999999999965, "o", "a"] +[11.649999999999965, "o", "."] +[11.679999999999964, "o", "c"] +[11.709999999999964, "o", "u"] +[11.739999999999963, "o", "s"] +[11.769999999999962, "o", "t"] +[11.799999999999962, "o", "o"] +[11.829999999999961, "o", "m"] +[11.85999999999996, "o", "e"] +[11.88999999999996, "o", "r"] +[11.919999999999959, "o", "s"] +[11.949999999999958, "o", "\""] +[11.979999999999958, "o", "\r\n"] +[12.009999999999957, "o", "$"] +[12.039999999999957, "o", " "] +[12.069999999999956, "o", "s"] +[12.099999999999955, "o", "g"] +[12.129999999999955, "o", "r"] +[12.159999999999954, "o", " "] +[12.189999999999953, "o", "s"] +[12.219999999999953, "o", "q"] +[12.249999999999952, "o", "l"] +[12.279999999999951, "o", " "] +[12.30999999999995, "o", "-"] +[12.33999999999995, "o", "r"] +[12.36999999999995, "o", " "] +[12.399999999999949, "o", "o"] +[12.429999999999948, "o", "r"] +[12.459999999999948, "o", "i"] +[12.489999999999947, "o", "g"] +[12.519999999999946, "o", "i"] +[12.549999999999946, "o", "n"] +[12.579999999999945, "o", " "] +[12.609999999999944, "o", "\""] +[12.639999999999944, "o", "S"] +[12.669999999999943, "o", "E"] +[12.699999999999942, "o", "L"] +[12.729999999999942, "o", "E"] +[12.759999999999941, "o", "C"] +[12.78999999999994, "o", "T"] +[12.81999999999994, "o", " "] +[12.84999999999994, "o", "*"] +[12.879999999999939, "o", " "] +[12.909999999999938, "o", "F"] +[12.939999999999937, "o", "R"] +[12.969999999999937, "o", "O"] +[12.999999999999936, "o", "M"] +[13.029999999999935, "o", " "] +[13.059999999999935, "o", "p"] +[13.089999999999934, "o", "r"] +[13.119999999999933, "o", "o"] +[13.149999999999933, "o", "d"] +[13.179999999999932, "o", "u"] +[13.209999999999932, "o", "c"] +[13.239999999999931, "o", "t"] +[13.26999999999993, "o", "i"] +[13.29999999999993, "o", "o"] +[13.329999999999929, "o", "n"] +[13.359999999999928, "o", "_"] +[13.389999999999928, "o", "d"] +[13.419999999999927, "o", "a"] +[13.449999999999926, "o", "t"] +[13.479999999999926, "o", "a"] +[13.509999999999925, "o", "."] +[13.539999999999925, "o", "o"] +[13.569999999999924, "o", "r"] +[13.599999999999923, "o", "d"] +[13.629999999999923, "o", "e"] +[13.659999999999922, "o", "r"] +[13.689999999999921, "o", "s"] +[13.71999999999992, "o", "\""] +[13.74999999999992, "o", "\r\n"] +[13.77999999999992, "o", "\u001b[0m"] +[13.809999999999919, "o", "\r\n"] +[14.133069810867228, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[14.471411762237468, "o", "1 1 15 Toilet Roll 2020-03-15 12:00:00\r\n2 1 20 Hand Sanitizer 2020-03-16 02:00:00\r\n3 2 5 Pasta 2020-03-21 17:32:11\r\n4 3 50 Surgical Mask 2020-04-01 12:00:01\r\n5 1 50 Surgical Mask 2020-04-02 11:29:42\r\n"] +[14.501411762237467, "o", "\u001b[1m"] +[14.531411762237466, "o", "\u001b[36m"] +[14.561411762237466, "o", "\u001b[91m"] +[14.591411762237465, "o", "$"] +[14.621411762237464, "o", " "] +[14.651411762237464, "o", "\u001b[0m"] +[19.681411762237467, "o", "\u001b[H"] +[19.711411762237468, "o", "\u001b[J"] +[19.74141176223747, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a publication on the origin database"] +[19.77141176223747, "o", "\r\n"] +[19.80141176223747, "o", "$"] +[19.831411762237472, "o", " "] +[19.861411762237474, "o", "s"] +[19.891411762237475, "o", "g"] +[19.921411762237476, "o", "r"] +[19.951411762237477, "o", " "] +[19.981411762237478, "o", "s"] +[20.01141176223748, "o", "q"] +[20.04141176223748, "o", "l"] +[20.07141176223748, "o", " "] +[20.101411762237483, "o", "-"] +[20.131411762237484, "o", "r"] +[20.161411762237485, "o", " "] +[20.191411762237486, "o", "o"] +[20.221411762237487, "o", "r"] +[20.25141176223749, "o", "i"] +[20.28141176223749, "o", "g"] +[20.31141176223749, "o", "i"] +[20.34141176223749, "o", "n"] +[20.371411762237493, "o", " "] +[20.401411762237494, "o", "\""] +[20.431411762237495, "o", "C"] +[20.461411762237496, "o", "R"] +[20.491411762237497, "o", "E"] +[20.5214117622375, "o", "A"] +[20.5514117622375, "o", "T"] +[20.5814117622375, "o", "E"] +[20.611411762237502, "o", " "] +[20.641411762237503, "o", "P"] +[20.671411762237504, "o", "U"] +[20.701411762237505, "o", "B"] +[20.731411762237506, "o", "L"] +[20.761411762237508, "o", "I"] +[20.79141176223751, "o", "C"] +[20.82141176223751, "o", "A"] +[20.85141176223751, "o", "T"] +[20.881411762237512, "o", "I"] +[20.911411762237513, "o", "O"] +[20.941411762237514, "o", "N"] +[20.971411762237516, "o", " "] +[21.001411762237517, "o", "p"] +[21.031411762237518, "o", "u"] +[21.06141176223752, "o", "b"] +[21.09141176223752, "o", "_"] +[21.12141176223752, "o", "o"] +[21.151411762237522, "o", "r"] +[21.181411762237524, "o", "d"] +[21.211411762237525, "o", "e"] +[21.241411762237526, "o", "r"] +[21.271411762237527, "o", "s"] +[21.301411762237528, "o", " "] +[21.33141176223753, "o", "\\"] +[21.36141176223753, "o", "\r\n "] +[21.39141176223753, "o", "F"] +[21.421411762237533, "o", "O"] +[21.451411762237534, "o", "R"] +[21.481411762237535, "o", " "] +[21.511411762237536, "o", "T"] +[21.541411762237537, "o", "A"] +[21.57141176223754, "o", "B"] +[21.60141176223754, "o", "L"] +[21.63141176223754, "o", "E"] +[21.66141176223754, "o", " "] +[21.691411762237543, "o", "p"] +[21.721411762237544, "o", "r"] +[21.751411762237545, "o", "o"] +[21.781411762237546, "o", "d"] +[21.811411762237547, "o", "u"] +[21.84141176223755, "o", "c"] +[21.87141176223755, "o", "t"] +[21.90141176223755, "o", "i"] +[21.931411762237552, "o", "o"] +[21.961411762237553, "o", "n"] +[21.991411762237554, "o", "_"] +[22.021411762237555, "o", "d"] +[22.051411762237557, "o", "a"] +[22.081411762237558, "o", "t"] +[22.11141176223756, "o", "a"] +[22.14141176223756, "o", "."] +[22.17141176223756, "o", "c"] +[22.201411762237562, "o", "u"] +[22.231411762237563, "o", "s"] +[22.261411762237564, "o", "t"] +[22.291411762237566, "o", "o"] +[22.321411762237567, "o", "m"] +[22.351411762237568, "o", "e"] +[22.38141176223757, "o", "r"] +[22.41141176223757, "o", "s"] +[22.44141176223757, "o", ","] +[22.471411762237572, "o", " "] +[22.501411762237574, "o", "p"] +[22.531411762237575, "o", "r"] +[22.561411762237576, "o", "o"] +[22.591411762237577, "o", "d"] +[22.621411762237578, "o", "u"] +[22.65141176223758, "o", "c"] +[22.68141176223758, "o", "t"] +[22.71141176223758, "o", "i"] +[22.741411762237583, "o", "o"] +[22.771411762237584, "o", "n"] +[22.801411762237585, "o", "_"] +[22.831411762237586, "o", "d"] +[22.861411762237587, "o", "a"] +[22.89141176223759, "o", "t"] +[22.92141176223759, "o", "a"] +[22.95141176223759, "o", "."] +[22.98141176223759, "o", "o"] +[23.011411762237593, "o", "r"] +[23.041411762237594, "o", "d"] +[23.071411762237595, "o", "e"] +[23.101411762237596, "o", "r"] +[23.131411762237597, "o", "s"] +[23.1614117622376, "o", "\""] +[23.1914117622376, "o", "\r\n"] +[23.2214117622376, "o", "\u001b[0m"] +[23.251411762237602, "o", "\r\n"] +[23.281411762237603, "o", "\u001b[1m"] +[23.311411762237604, "o", "\u001b[36m"] +[23.341411762237605, "o", "\u001b[91m"] +[23.371411762237607, "o", "$"] +[23.401411762237608, "o", " "] +[23.43141176223761, "o", "\u001b[0m"] +[28.46141176223761, "o", "\u001b[H"] +[28.49141176223761, "o", "\u001b[J"] +[28.521411762237612, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a schema with the same name and same tables"] +[28.551411762237613, "o", "\r\n"] +[28.581411762237614, "o", "$ # on the engine and initialize the repository.\r\n"] +[28.611411762237616, "o", "$"] +[28.641411762237617, "o", " "] +[28.671411762237618, "o", "s"] +[28.70141176223762, "o", "g"] +[28.73141176223762, "o", "r"] +[28.76141176223762, "o", " "] +[28.791411762237622, "o", "i"] +[28.821411762237624, "o", "n"] +[28.851411762237625, "o", "i"] +[28.881411762237626, "o", "t"] +[28.911411762237627, "o", " "] +[28.941411762237628, "o", "p"] +[28.97141176223763, "o", "r"] +[29.00141176223763, "o", "o"] +[29.03141176223763, "o", "d"] +[29.061411762237633, "o", "u"] +[29.091411762237634, "o", "c"] +[29.121411762237635, "o", "t"] +[29.151411762237636, "o", "i"] +[29.181411762237637, "o", "o"] +[29.21141176223764, "o", "n"] +[29.24141176223764, "o", "_"] +[29.27141176223764, "o", "d"] +[29.30141176223764, "o", "a"] +[29.331411762237643, "o", "t"] +[29.361411762237644, "o", "a"] +[29.391411762237645, "o", "\r\n"] +[29.421411762237646, "o", "$"] +[29.451411762237647, "o", " "] +[29.48141176223765, "o", "c"] +[29.51141176223765, "o", "a"] +[29.54141176223765, "o", "t"] +[29.571411762237652, "o", " "] +[29.601411762237653, "o", "e"] +[29.631411762237654, "o", "n"] +[29.661411762237655, "o", "g"] +[29.691411762237657, "o", "i"] +[29.721411762237658, "o", "n"] +[29.75141176223766, "o", "e"] +[29.78141176223766, "o", "/"] +[29.81141176223766, "o", "s"] +[29.841411762237662, "o", "c"] +[29.871411762237663, "o", "h"] +[29.901411762237665, "o", "e"] +[29.931411762237666, "o", "m"] +[29.961411762237667, "o", "a"] +[29.991411762237668, "o", "."] +[30.02141176223767, "o", "s"] +[30.05141176223767, "o", "q"] +[30.08141176223767, "o", "l"] +[30.111411762237672, "o", "\r\n"] +[30.141411762237674, "o", "$"] +[30.171411762237675, "o", " "] +[30.201411762237676, "o", "s"] +[30.231411762237677, "o", "g"] +[30.261411762237678, "o", "r"] +[30.29141176223768, "o", " "] +[30.32141176223768, "o", "s"] +[30.35141176223768, "o", "q"] +[30.381411762237683, "o", "l"] +[30.411411762237684, "o", " "] +[30.441411762237685, "o", "-"] +[30.471411762237686, "o", "s"] +[30.501411762237687, "o", " "] +[30.53141176223769, "o", "p"] +[30.56141176223769, "o", "r"] +[30.59141176223769, "o", "o"] +[30.621411762237692, "o", "d"] +[30.651411762237693, "o", "u"] +[30.681411762237694, "o", "c"] +[30.711411762237695, "o", "t"] +[30.741411762237696, "o", "i"] +[30.771411762237697, "o", "o"] +[30.8014117622377, "o", "n"] +[30.8314117622377, "o", "_"] +[30.8614117622377, "o", "d"] +[30.891411762237702, "o", "a"] +[30.921411762237703, "o", "t"] +[30.951411762237704, "o", "a"] +[30.981411762237705, "o", " "] +[31.011411762237707, "o", "\""] +[31.041411762237708, "o", "$"] +[31.07141176223771, "o", "("] +[31.10141176223771, "o", "c"] +[31.13141176223771, "o", "a"] +[31.161411762237712, "o", "t"] +[31.191411762237713, "o", " "] +[31.221411762237715, "o", "e"] +[31.251411762237716, "o", "n"] +[31.281411762237717, "o", "g"] +[31.311411762237718, "o", "i"] +[31.34141176223772, "o", "n"] +[31.37141176223772, "o", "e"] +[31.40141176223772, "o", "/"] +[31.431411762237722, "o", "s"] +[31.461411762237724, "o", "c"] +[31.491411762237725, "o", "h"] +[31.521411762237726, "o", "e"] +[31.551411762237727, "o", "m"] +[31.581411762237728, "o", "a"] +[31.61141176223773, "o", "."] +[31.64141176223773, "o", "s"] +[31.67141176223773, "o", "q"] +[31.701411762237733, "o", "l"] +[31.731411762237734, "o", ")"] +[31.761411762237735, "o", "\""] +[31.791411762237736, "o", "\r\n"] +[31.821411762237737, "o", "\u001b[0m"] +[31.85141176223774, "o", "\r\n"] +[32.27287286758442, "o", "Initialized empty repository production_data\r\n"] +[32.274447622299384, "o", "CREATE TABLE production_data.customers (\r\n id INTEGER PRIMARY KEY,\r\n name VARCHAR,\r\n registration_time TIMESTAMP\r\n);\r\n\r\nCREATE TABLE production_data.orders (\r\n id INTEGER PRIMARY KEY,\r\n customer_id INTEGER,\r\n quantity INTEGER,\r\n item_name VARCHAR,\r\n placed_time TIMESTAMP\r\n);\r\n"] +[32.304447622299385, "o", "\u001b[1m"] +[32.334447622299386, "o", "\u001b[36m"] +[32.36444762229939, "o", "\u001b[91m"] +[32.39444762229939, "o", "$"] +[32.42444762229939, "o", " "] +[32.45444762229939, "o", "\u001b[0m"] +[38.46141176223761, "o", "\u001b[H"] +[38.49141176223761, "o", "\u001b[J"] +[38.52141176223761, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Set up replication from the origin database."] +[38.55141176223761, "o", "\r\n"] +[38.581411762237614, "o", "$ # This will copy existing data into the tables too.\r\n"] +[38.611411762237616, "o", "$"] +[38.64141176223762, "o", " "] +[38.67141176223762, "o", "s"] +[38.70141176223762, "o", "g"] +[38.73141176223762, "o", "r"] +[38.76141176223762, "o", " "] +[38.79141176223762, "o", "s"] +[38.821411762237624, "o", "q"] +[38.851411762237625, "o", "l"] +[38.881411762237626, "o", " "] +[38.91141176223763, "o", "-"] +[38.94141176223763, "o", "-"] +[38.97141176223763, "o", "n"] +[39.00141176223763, "o", "o"] +[39.03141176223763, "o", "-"] +[39.06141176223763, "o", "t"] +[39.091411762237634, "o", "r"] +[39.121411762237635, "o", "a"] +[39.151411762237636, "o", "n"] +[39.18141176223764, "o", "s"] +[39.21141176223764, "o", "a"] +[39.24141176223764, "o", "c"] +[39.27141176223764, "o", "t"] +[39.30141176223764, "o", "i"] +[39.33141176223764, "o", "o"] +[39.361411762237644, "o", "n"] +[39.391411762237645, "o", " "] +[39.421411762237646, "o", "\""] +[39.45141176223765, "o", "C"] +[39.48141176223765, "o", "R"] +[39.51141176223765, "o", "E"] +[39.54141176223765, "o", "A"] +[39.57141176223765, "o", "T"] +[39.60141176223765, "o", "E"] +[39.631411762237654, "o", " "] +[39.661411762237655, "o", "S"] +[39.69141176223766, "o", "U"] +[39.72141176223766, "o", "B"] +[39.75141176223766, "o", "S"] +[39.78141176223766, "o", "C"] +[39.81141176223766, "o", "R"] +[39.84141176223766, "o", "I"] +[39.87141176223766, "o", "P"] +[39.901411762237665, "o", "T"] +[39.931411762237666, "o", "I"] +[39.96141176223767, "o", "O"] +[39.99141176223767, "o", "N"] +[40.02141176223767, "o", " "] +[40.05141176223767, "o", "s"] +[40.08141176223767, "o", "u"] +[40.11141176223767, "o", "b"] +[40.141411762237674, "o", "_"] +[40.171411762237675, "o", "o"] +[40.201411762237676, "o", "r"] +[40.23141176223768, "o", "d"] +[40.26141176223768, "o", "e"] +[40.29141176223768, "o", "r"] +[40.32141176223768, "o", "s"] +[40.35141176223768, "o", " "] +[40.38141176223768, "o", "\\"] +[40.411411762237684, "o", "\r\n "] +[40.441411762237685, "o", "C"] +[40.471411762237686, "o", "O"] +[40.50141176223769, "o", "N"] +[40.53141176223769, "o", "N"] +[40.56141176223769, "o", "E"] +[40.59141176223769, "o", "C"] +[40.62141176223769, "o", "T"] +[40.65141176223769, "o", "I"] +[40.681411762237694, "o", "O"] +[40.711411762237695, "o", "N"] +[40.741411762237696, "o", " "] +[40.7714117622377, "o", "'"] +[40.8014117622377, "o", "p"] +[40.8314117622377, "o", "o"] +[40.8614117622377, "o", "s"] +[40.8914117622377, "o", "t"] +[40.9214117622377, "o", "g"] +[40.951411762237704, "o", "r"] +[40.981411762237705, "o", "e"] +[41.01141176223771, "o", "s"] +[41.04141176223771, "o", "q"] +[41.07141176223771, "o", "l"] +[41.10141176223771, "o", ":"] +[41.13141176223771, "o", "/"] +[41.16141176223771, "o", "/"] +[41.19141176223771, "o", "o"] +[41.221411762237715, "o", "r"] +[41.251411762237716, "o", "i"] +[41.28141176223772, "o", "g"] +[41.31141176223772, "o", "i"] +[41.34141176223772, "o", "n"] +[41.37141176223772, "o", "u"] +[41.40141176223772, "o", "s"] +[41.43141176223772, "o", "e"] +[41.461411762237724, "o", "r"] +[41.491411762237725, "o", ":"] +[41.521411762237726, "o", "o"] +[41.55141176223773, "o", "r"] +[41.58141176223773, "o", "i"] +[41.61141176223773, "o", "g"] +[41.64141176223773, "o", "i"] +[41.67141176223773, "o", "n"] +[41.70141176223773, "o", "p"] +[41.731411762237734, "o", "a"] +[41.761411762237735, "o", "s"] +[41.791411762237736, "o", "s"] +[41.82141176223774, "o", "@"] +[41.85141176223774, "o", "o"] +[41.88141176223774, "o", "r"] +[41.91141176223774, "o", "i"] +[41.94141176223774, "o", "g"] +[41.97141176223774, "o", "i"] +[42.001411762237744, "o", "n"] +[42.031411762237745, "o", ":"] +[42.061411762237746, "o", "5"] +[42.09141176223775, "o", "4"] +[42.12141176223775, "o", "3"] +[42.15141176223775, "o", "2"] +[42.18141176223775, "o", "/"] +[42.21141176223775, "o", "o"] +[42.24141176223775, "o", "r"] +[42.271411762237754, "o", "i"] +[42.301411762237755, "o", "g"] +[42.33141176223776, "o", "i"] +[42.36141176223776, "o", "n"] +[42.39141176223776, "o", "u"] +[42.42141176223776, "o", "s"] +[42.45141176223776, "o", "e"] +[42.48141176223776, "o", "r"] +[42.51141176223776, "o", "'"] +[42.541411762237765, "o", " "] +[42.571411762237766, "o", "\\"] +[42.60141176223777, "o", "\r\n "] +[42.63141176223777, "o", "P"] +[42.66141176223777, "o", "U"] +[42.69141176223777, "o", "B"] +[42.72141176223777, "o", "L"] +[42.75141176223777, "o", "I"] +[42.781411762237774, "o", "C"] +[42.811411762237775, "o", "A"] +[42.841411762237776, "o", "T"] +[42.87141176223778, "o", "I"] +[42.90141176223778, "o", "O"] +[42.93141176223778, "o", "N"] +[42.96141176223778, "o", " "] +[42.99141176223778, "o", "p"] +[43.02141176223778, "o", "u"] +[43.051411762237784, "o", "b"] +[43.081411762237785, "o", "_"] +[43.111411762237786, "o", "o"] +[43.14141176223779, "o", "r"] +[43.17141176223779, "o", "d"] +[43.20141176223779, "o", "e"] +[43.23141176223779, "o", "r"] +[43.26141176223779, "o", "s"] +[43.29141176223779, "o", " "] +[43.321411762237794, "o", "\\"] +[43.351411762237795, "o", "\r\n "] +[43.381411762237796, "o", "W"] +[43.4114117622378, "o", "I"] +[43.4414117622378, "o", "T"] +[43.4714117622378, "o", "H"] +[43.5014117622378, "o", " "] +[43.5314117622378, "o", "("] +[43.5614117622378, "o", "c"] +[43.591411762237804, "o", "o"] +[43.621411762237805, "o", "p"] +[43.65141176223781, "o", "y"] +[43.68141176223781, "o", "_"] +[43.71141176223781, "o", "d"] +[43.74141176223781, "o", "a"] +[43.77141176223781, "o", "t"] +[43.80141176223781, "o", "a"] +[43.83141176223781, "o", " "] +[43.861411762237815, "o", "="] +[43.891411762237816, "o", " "] +[43.92141176223782, "o", "t"] +[43.95141176223782, "o", "r"] +[43.98141176223782, "o", "u"] +[44.01141176223782, "o", "e"] +[44.04141176223782, "o", ")"] +[44.07141176223782, "o", ";"] +[44.101411762237824, "o", "\""] +[44.131411762237825, "o", "\r\n"] +[44.161411762237826, "o", "\u001b[0m"] +[44.19141176223783, "o", "\r\n"] +[44.22141176223783, "o", "\u001b[1m"] +[44.25141176223783, "o", "\u001b[36m"] +[44.28141176223783, "o", "\u001b[91m"] +[44.31141176223783, "o", "$"] +[44.34141176223783, "o", " "] +[44.371411762237834, "o", "\u001b[0m"] +[49.401411762237835, "o", "\u001b[H"] +[49.431411762237836, "o", "\u001b[J"] +[49.46141176223784, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the data on the engine"] +[49.49141176223784, "o", "\r\n"] +[49.52141176223784, "o", "$"] +[49.55141176223784, "o", " "] +[49.58141176223784, "o", "s"] +[49.61141176223784, "o", "g"] +[49.641411762237844, "o", "r"] +[49.671411762237845, "o", " "] +[49.701411762237846, "o", "d"] +[49.73141176223785, "o", "i"] +[49.76141176223785, "o", "f"] +[49.79141176223785, "o", "f"] +[49.82141176223785, "o", " "] +[49.85141176223785, "o", "p"] +[49.88141176223785, "o", "r"] +[49.911411762237854, "o", "o"] +[49.941411762237855, "o", "d"] +[49.97141176223786, "o", "u"] +[50.00141176223786, "o", "c"] +[50.03141176223786, "o", "t"] +[50.06141176223786, "o", "i"] +[50.09141176223786, "o", "o"] +[50.12141176223786, "o", "n"] +[50.15141176223786, "o", "_"] +[50.181411762237865, "o", "d"] +[50.211411762237866, "o", "a"] +[50.24141176223787, "o", "t"] +[50.27141176223787, "o", "a"] +[50.30141176223787, "o", "\r\n"] +[50.33141176223787, "o", "$"] +[50.36141176223787, "o", " "] +[50.39141176223787, "o", "s"] +[50.421411762237874, "o", "g"] +[50.451411762237875, "o", "r"] +[50.481411762237876, "o", " "] +[50.51141176223788, "o", "s"] +[50.54141176223788, "o", "q"] +[50.57141176223788, "o", "l"] +[50.60141176223788, "o", " "] +[50.63141176223788, "o", "-"] +[50.66141176223788, "o", "s"] +[50.691411762237884, "o", " "] +[50.721411762237885, "o", "p"] +[50.751411762237886, "o", "r"] +[50.78141176223789, "o", "o"] +[50.81141176223789, "o", "d"] +[50.84141176223789, "o", "u"] +[50.87141176223789, "o", "c"] +[50.90141176223789, "o", "t"] +[50.93141176223789, "o", "i"] +[50.961411762237894, "o", "o"] +[50.991411762237895, "o", "n"] +[51.021411762237896, "o", "_"] +[51.0514117622379, "o", "d"] +[51.0814117622379, "o", "a"] +[51.1114117622379, "o", "t"] +[51.1414117622379, "o", "a"] +[51.1714117622379, "o", " "] +[51.2014117622379, "o", "\""] +[51.231411762237904, "o", "S"] +[51.261411762237906, "o", "E"] +[51.29141176223791, "o", "L"] +[51.32141176223791, "o", "E"] +[51.35141176223791, "o", "C"] +[51.38141176223791, "o", "T"] +[51.41141176223791, "o", " "] +[51.44141176223791, "o", "*"] +[51.47141176223791, "o", " "] +[51.501411762237915, "o", "F"] +[51.531411762237916, "o", "R"] +[51.56141176223792, "o", "O"] +[51.59141176223792, "o", "M"] +[51.62141176223792, "o", " "] +[51.65141176223792, "o", "c"] +[51.68141176223792, "o", "u"] +[51.71141176223792, "o", "s"] +[51.741411762237924, "o", "t"] +[51.771411762237925, "o", "o"] +[51.801411762237926, "o", "m"] +[51.83141176223793, "o", "e"] +[51.86141176223793, "o", "r"] +[51.89141176223793, "o", "s"] +[51.92141176223793, "o", "\""] +[51.95141176223793, "o", "\r\n"] +[51.98141176223793, "o", "\u001b[0m"] +[52.011411762237934, "o", "\r\n"] +[52.370794630051044, "o", "Between 000000000000 and the current working copy: \r\n"] +[52.37081179618874, "o", "customers: table added\r\norders: table added\r\n"] +[52.761116600037006, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[52.79111660003701, "o", "\u001b[1m"] +[52.82111660003701, "o", "\u001b[36m"] +[52.85111660003701, "o", "\u001b[91m"] +[52.88111660003701, "o", "$"] +[52.91111660003701, "o", " "] +[52.94111660003701, "o", "\u001b[0m"] +[57.971116600037014, "o", "\u001b[H"] +[58.001116600037015, "o", "\u001b[J"] +[58.031116600037016, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit the data as an initial image"] +[58.06111660003702, "o", "\r\n"] +[58.09111660003702, "o", "$"] +[58.12111660003702, "o", " "] +[58.15111660003702, "o", "s"] +[58.18111660003702, "o", "g"] +[58.21111660003702, "o", "r"] +[58.241116600037024, "o", " "] +[58.271116600037026, "o", "c"] +[58.30111660003703, "o", "o"] +[58.33111660003703, "o", "m"] +[58.36111660003703, "o", "m"] +[58.39111660003703, "o", "i"] +[58.42111660003703, "o", "t"] +[58.45111660003703, "o", " "] +[58.48111660003703, "o", "p"] +[58.511116600037035, "o", "r"] +[58.541116600037036, "o", "o"] +[58.57111660003704, "o", "d"] +[58.60111660003704, "o", "u"] +[58.63111660003704, "o", "c"] +[58.66111660003704, "o", "t"] +[58.69111660003704, "o", "i"] +[58.72111660003704, "o", "o"] +[58.751116600037044, "o", "n"] +[58.781116600037045, "o", "_"] +[58.811116600037046, "o", "d"] +[58.84111660003705, "o", "a"] +[58.87111660003705, "o", "t"] +[58.90111660003705, "o", "a"] +[58.93111660003705, "o", "\r\n"] +[58.96111660003705, "o", "$"] +[58.99111660003705, "o", " "] +[59.021116600037054, "o", "s"] +[59.051116600037055, "o", "g"] +[59.081116600037056, "o", "r"] +[59.11111660003706, "o", " "] +[59.14111660003706, "o", "t"] +[59.17111660003706, "o", "a"] +[59.20111660003706, "o", "g"] +[59.23111660003706, "o", " "] +[59.26111660003706, "o", "p"] +[59.291116600037064, "o", "r"] +[59.321116600037065, "o", "o"] +[59.35111660003707, "o", "d"] +[59.38111660003707, "o", "u"] +[59.41111660003707, "o", "c"] +[59.44111660003707, "o", "t"] +[59.47111660003707, "o", "i"] +[59.50111660003707, "o", "o"] +[59.53111660003707, "o", "n"] +[59.561116600037074, "o", "_"] +[59.591116600037076, "o", "d"] +[59.62111660003708, "o", "a"] +[59.65111660003708, "o", "t"] +[59.68111660003708, "o", "a"] +[59.71111660003708, "o", " "] +[59.74111660003708, "o", "i"] +[59.77111660003708, "o", "n"] +[59.80111660003708, "o", "i"] +[59.831116600037085, "o", "t"] +[59.861116600037086, "o", "i"] +[59.89111660003709, "o", "a"] +[59.92111660003709, "o", "l"] +[59.95111660003709, "o", "_"] +[59.98111660003709, "o", "s"] +[60.01111660003709, "o", "n"] +[60.04111660003709, "o", "a"] +[60.071116600037094, "o", "p"] +[60.101116600037095, "o", "s"] +[60.131116600037096, "o", "h"] +[60.1611166000371, "o", "o"] +[60.1911166000371, "o", "t"] +[60.2211166000371, "o", "\r\n"] +[60.2511166000371, "o", "$"] +[60.2811166000371, "o", " "] +[60.3111166000371, "o", "s"] +[60.341116600037104, "o", "g"] +[60.371116600037105, "o", "r"] +[60.401116600037106, "o", " "] +[60.43111660003711, "o", "s"] +[60.46111660003711, "o", "h"] +[60.49111660003711, "o", "o"] +[60.52111660003711, "o", "w"] +[60.55111660003711, "o", " "] +[60.58111660003711, "o", "p"] +[60.611116600037114, "o", "r"] +[60.641116600037115, "o", "o"] +[60.67111660003712, "o", "d"] +[60.70111660003712, "o", "u"] +[60.73111660003712, "o", "c"] +[60.76111660003712, "o", "t"] +[60.79111660003712, "o", "i"] +[60.82111660003712, "o", "o"] +[60.85111660003712, "o", "n"] +[60.881116600037124, "o", "_"] +[60.911116600037126, "o", "d"] +[60.94111660003713, "o", "a"] +[60.97111660003713, "o", "t"] +[61.00111660003713, "o", "a"] +[61.03111660003713, "o", ":"] +[61.06111660003713, "o", "i"] +[61.09111660003713, "o", "n"] +[61.12111660003713, "o", "i"] +[61.151116600037135, "o", "t"] +[61.181116600037136, "o", "i"] +[61.21111660003714, "o", "a"] +[61.24111660003714, "o", "l"] +[61.27111660003714, "o", "_"] +[61.30111660003714, "o", "s"] +[61.33111660003714, "o", "n"] +[61.36111660003714, "o", "a"] +[61.391116600037144, "o", "p"] +[61.421116600037145, "o", "s"] +[61.451116600037146, "o", "h"] +[61.48111660003715, "o", "o"] +[61.51111660003715, "o", "t"] +[61.54111660003715, "o", "\r\n"] +[61.57111660003715, "o", "\u001b[0m"] +[61.60111660003715, "o", "\r\n"] +[61.98942846298271, "o", "Committing production_data...\r\n"] +[62.01041358947807, "o", "Processing table customers\r\n"] +[62.088176431656414, "o", "Processing table orders\r\n"] +[62.1683904552465, "o", "Committed production_data as d626b576ec0d.\r\n"] +[62.53067511558586, "o", "Tagged production_data:d626b576ec0d09a7cef3f29f448dd09cfa236432a688582007a938994c462c50 with initial_snapshot.\r\n"] +[62.888185443878704, "o", "Image production_data:d626b576ec0d09a7cef3f29f448dd09cfa236432a688582007a938994c462c50\r\n\r\nCreated at 2021-11-17T15:32:37.474024\r\n"] +[62.889514865875775, "o", "Size: 1.11 KiB\r\n"] +[62.88952678680473, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[62.89015287399345, "o", " customers\r\n"] +[62.89017123222404, "o", " orders\r\n"] +[62.92017123222404, "o", "\u001b[1m"] +[62.950171232224044, "o", "\u001b[36m"] +[62.980171232224045, "o", "\u001b[91m"] +[63.010171232224046, "o", "$"] +[63.04017123222405, "o", " "] +[63.07017123222405, "o", "\u001b[0m"] +[68.10017123222406, "o", "\u001b[H"] +[68.13017123222406, "o", "\u001b[J"] +[68.16017123222406, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make a change on the origin database"] +[68.19017123222406, "o", "\r\n"] +[68.22017123222406, "o", "$"] +[68.25017123222406, "o", " "] +[68.28017123222406, "o", "s"] +[68.31017123222406, "o", "g"] +[68.34017123222407, "o", "r"] +[68.37017123222407, "o", " "] +[68.40017123222407, "o", "s"] +[68.43017123222407, "o", "q"] +[68.46017123222407, "o", "l"] +[68.49017123222407, "o", " "] +[68.52017123222407, "o", "-"] +[68.55017123222407, "o", "r"] +[68.58017123222407, "o", " "] +[68.61017123222408, "o", "o"] +[68.64017123222408, "o", "r"] +[68.67017123222408, "o", "i"] +[68.70017123222408, "o", "g"] +[68.73017123222408, "o", "i"] +[68.76017123222408, "o", "n"] +[68.79017123222408, "o", " "] +[68.82017123222408, "o", "-"] +[68.85017123222408, "o", "s"] +[68.88017123222409, "o", " "] +[68.91017123222409, "o", "p"] +[68.94017123222409, "o", "r"] +[68.97017123222409, "o", "o"] +[69.00017123222409, "o", "d"] +[69.03017123222409, "o", "u"] +[69.06017123222409, "o", "c"] +[69.0901712322241, "o", "t"] +[69.1201712322241, "o", "i"] +[69.1501712322241, "o", "o"] +[69.1801712322241, "o", "n"] +[69.2101712322241, "o", "_"] +[69.2401712322241, "o", "d"] +[69.2701712322241, "o", "a"] +[69.3001712322241, "o", "t"] +[69.3301712322241, "o", "a"] +[69.3601712322241, "o", " "] +[69.3901712322241, "o", "\""] +[69.4201712322241, "o", "U"] +[69.45017123222411, "o", "P"] +[69.48017123222411, "o", "D"] +[69.51017123222411, "o", "A"] +[69.54017123222411, "o", "T"] +[69.57017123222411, "o", "E"] +[69.60017123222411, "o", " "] +[69.63017123222411, "o", "o"] +[69.66017123222412, "o", "r"] +[69.69017123222412, "o", "d"] +[69.72017123222412, "o", "e"] +[69.75017123222412, "o", "r"] +[69.78017123222412, "o", "s"] +[69.81017123222412, "o", " "] +[69.84017123222412, "o", "\\"] +[69.87017123222412, "o", "\r\n "] +[69.90017123222412, "o", "S"] +[69.93017123222413, "o", "E"] +[69.96017123222413, "o", "T"] +[69.99017123222413, "o", " "] +[70.02017123222413, "o", "q"] +[70.05017123222413, "o", "u"] +[70.08017123222413, "o", "a"] +[70.11017123222413, "o", "n"] +[70.14017123222413, "o", "t"] +[70.17017123222413, "o", "i"] +[70.20017123222414, "o", "t"] +[70.23017123222414, "o", "y"] +[70.26017123222414, "o", " "] +[70.29017123222414, "o", "="] +[70.32017123222414, "o", " "] +[70.35017123222414, "o", "q"] +[70.38017123222414, "o", "u"] +[70.41017123222414, "o", "a"] +[70.44017123222415, "o", "n"] +[70.47017123222415, "o", "t"] +[70.50017123222415, "o", "i"] +[70.53017123222415, "o", "t"] +[70.56017123222415, "o", "y"] +[70.59017123222415, "o", " "] +[70.62017123222415, "o", "+"] +[70.65017123222415, "o", " "] +[70.68017123222415, "o", "5"] +[70.71017123222416, "o", " "] +[70.74017123222416, "o", "W"] +[70.77017123222416, "o", "H"] +[70.80017123222416, "o", "E"] +[70.83017123222416, "o", "R"] +[70.86017123222416, "o", "E"] +[70.89017123222416, "o", " "] +[70.92017123222416, "o", "i"] +[70.95017123222416, "o", "d"] +[70.98017123222417, "o", " "] +[71.01017123222417, "o", "="] +[71.04017123222417, "o", " "] +[71.07017123222417, "o", "2"] +[71.10017123222417, "o", ";"] +[71.13017123222417, "o", " "] +[71.16017123222417, "o", "\\"] +[71.19017123222417, "o", "\r\n "] +[71.22017123222417, "o", "D"] +[71.25017123222418, "o", "E"] +[71.28017123222418, "o", "L"] +[71.31017123222418, "o", "E"] +[71.34017123222418, "o", "T"] +[71.37017123222418, "o", "E"] +[71.40017123222418, "o", " "] +[71.43017123222418, "o", "F"] +[71.46017123222418, "o", "R"] +[71.49017123222418, "o", "O"] +[71.52017123222419, "o", "M"] +[71.55017123222419, "o", " "] +[71.58017123222419, "o", "o"] +[71.61017123222419, "o", "r"] +[71.64017123222419, "o", "d"] +[71.67017123222419, "o", "e"] +[71.70017123222419, "o", "r"] +[71.7301712322242, "o", "s"] +[71.7601712322242, "o", " "] +[71.7901712322242, "o", "W"] +[71.8201712322242, "o", "H"] +[71.8501712322242, "o", "E"] +[71.8801712322242, "o", "R"] +[71.9101712322242, "o", "E"] +[71.9401712322242, "o", " "] +[71.9701712322242, "o", "i"] +[72.0001712322242, "o", "d"] +[72.0301712322242, "o", " "] +[72.0601712322242, "o", "="] +[72.09017123222421, "o", " "] +[72.12017123222421, "o", "5"] +[72.15017123222421, "o", ";"] +[72.18017123222421, "o", " "] +[72.21017123222421, "o", "\\"] +[72.24017123222421, "o", "\r\n "] +[72.27017123222421, "o", "I"] +[72.30017123222422, "o", "N"] +[72.33017123222422, "o", "S"] +[72.36017123222422, "o", "E"] +[72.39017123222422, "o", "R"] +[72.42017123222422, "o", "T"] +[72.45017123222422, "o", " "] +[72.48017123222422, "o", "I"] +[72.51017123222422, "o", "N"] +[72.54017123222422, "o", "T"] +[72.57017123222423, "o", "O"] +[72.60017123222423, "o", " "] +[72.63017123222423, "o", "c"] +[72.66017123222423, "o", "u"] +[72.69017123222423, "o", "s"] +[72.72017123222423, "o", "t"] +[72.75017123222423, "o", "o"] +[72.78017123222423, "o", "m"] +[72.81017123222423, "o", "e"] +[72.84017123222424, "o", "r"] +[72.87017123222424, "o", "s"] +[72.90017123222424, "o", " "] +[72.93017123222424, "o", "("] +[72.96017123222424, "o", "n"] +[72.99017123222424, "o", "a"] +[73.02017123222424, "o", "m"] +[73.05017123222424, "o", "e"] +[73.08017123222425, "o", ","] +[73.11017123222425, "o", " "] +[73.14017123222425, "o", "r"] +[73.17017123222425, "o", "e"] +[73.20017123222425, "o", "g"] +[73.23017123222425, "o", "i"] +[73.26017123222425, "o", "s"] +[73.29017123222425, "o", "t"] +[73.32017123222425, "o", "r"] +[73.35017123222426, "o", "a"] +[73.38017123222426, "o", "t"] +[73.41017123222426, "o", "i"] +[73.44017123222426, "o", "o"] +[73.47017123222426, "o", "n"] +[73.50017123222426, "o", "_"] +[73.53017123222426, "o", "t"] +[73.56017123222426, "o", "i"] +[73.59017123222426, "o", "m"] +[73.62017123222427, "o", "e"] +[73.65017123222427, "o", ")"] +[73.68017123222427, "o", " "] +[73.71017123222427, "o", "V"] +[73.74017123222427, "o", "A"] +[73.77017123222427, "o", "L"] +[73.80017123222427, "o", "U"] +[73.83017123222427, "o", "E"] +[73.86017123222427, "o", "S"] +[73.89017123222428, "o", " "] +[73.92017123222428, "o", "\\"] +[73.95017123222428, "o", "\r\n "] +[73.98017123222428, "o", "("] +[74.01017123222428, "o", "'"] +[74.04017123222428, "o", "J"] +[74.07017123222428, "o", "a"] +[74.10017123222428, "o", "c"] +[74.13017123222428, "o", "k"] +[74.16017123222429, "o", " "] +[74.19017123222429, "o", "S"] +[74.22017123222429, "o", "a"] +[74.25017123222429, "o", "m"] +[74.28017123222429, "o", "p"] +[74.31017123222429, "o", "l"] +[74.3401712322243, "o", "e"] +[74.3701712322243, "o", "'"] +[74.4001712322243, "o", ","] +[74.4301712322243, "o", " "] +[74.4601712322243, "o", "'"] +[74.4901712322243, "o", "2"] +[74.5201712322243, "o", "0"] +[74.5501712322243, "o", "2"] +[74.5801712322243, "o", "0"] +[74.6101712322243, "o", "-"] +[74.6401712322243, "o", "0"] +[74.6701712322243, "o", "4"] +[74.7001712322243, "o", "-"] +[74.73017123222431, "o", "2"] +[74.76017123222431, "o", "0"] +[74.79017123222431, "o", " "] +[74.82017123222431, "o", "1"] +[74.85017123222431, "o", "4"] +[74.88017123222431, "o", ":"] +[74.91017123222431, "o", "0"] +[74.94017123222432, "o", "3"] +[74.97017123222432, "o", ":"] +[75.00017123222432, "o", "4"] +[75.03017123222432, "o", "8"] +[75.06017123222432, "o", "'"] +[75.09017123222432, "o", ")"] +[75.12017123222432, "o", ";"] +[75.15017123222432, "o", " "] +[75.18017123222432, "o", "\\"] +[75.21017123222433, "o", "\r\n "] +[75.24017123222433, "o", "I"] +[75.27017123222433, "o", "N"] +[75.30017123222433, "o", "S"] +[75.33017123222433, "o", "E"] +[75.36017123222433, "o", "R"] +[75.39017123222433, "o", "T"] +[75.42017123222433, "o", " "] +[75.45017123222433, "o", "I"] +[75.48017123222434, "o", "N"] +[75.51017123222434, "o", "T"] +[75.54017123222434, "o", "O"] +[75.57017123222434, "o", " "] +[75.60017123222434, "o", "o"] +[75.63017123222434, "o", "r"] +[75.66017123222434, "o", "d"] +[75.69017123222434, "o", "e"] +[75.72017123222435, "o", "r"] +[75.75017123222435, "o", "s"] +[75.78017123222435, "o", " "] +[75.81017123222435, "o", "("] +[75.84017123222435, "o", "c"] +[75.87017123222435, "o", "u"] +[75.90017123222435, "o", "s"] +[75.93017123222435, "o", "t"] +[75.96017123222435, "o", "o"] +[75.99017123222436, "o", "m"] +[76.02017123222436, "o", "e"] +[76.05017123222436, "o", "r"] +[76.08017123222436, "o", "_"] +[76.11017123222436, "o", "i"] +[76.14017123222436, "o", "d"] +[76.17017123222436, "o", ","] +[76.20017123222436, "o", " "] +[76.23017123222436, "o", "q"] +[76.26017123222437, "o", "u"] +[76.29017123222437, "o", "a"] +[76.32017123222437, "o", "n"] +[76.35017123222437, "o", "t"] +[76.38017123222437, "o", "i"] +[76.41017123222437, "o", "t"] +[76.44017123222437, "o", "y"] +[76.47017123222437, "o", ","] +[76.50017123222437, "o", " "] +[76.53017123222438, "o", "i"] +[76.56017123222438, "o", "t"] +[76.59017123222438, "o", "e"] +[76.62017123222438, "o", "m"] +[76.65017123222438, "o", "_"] +[76.68017123222438, "o", "n"] +[76.71017123222438, "o", "a"] +[76.74017123222438, "o", "m"] +[76.77017123222438, "o", "e"] +[76.80017123222439, "o", ","] +[76.83017123222439, "o", " "] +[76.86017123222439, "o", "p"] +[76.89017123222439, "o", "l"] +[76.92017123222439, "o", "a"] +[76.95017123222439, "o", "c"] +[76.9801712322244, "o", "e"] +[77.0101712322244, "o", "d"] +[77.0401712322244, "o", "_"] +[77.0701712322244, "o", "t"] +[77.1001712322244, "o", "i"] +[77.1301712322244, "o", "m"] +[77.1601712322244, "o", "e"] +[77.1901712322244, "o", ")"] +[77.2201712322244, "o", " "] +[77.2501712322244, "o", "V"] +[77.2801712322244, "o", "A"] +[77.3101712322244, "o", "L"] +[77.3401712322244, "o", "U"] +[77.37017123222441, "o", "E"] +[77.40017123222441, "o", "S"] +[77.43017123222441, "o", " "] +[77.46017123222441, "o", "\\"] +[77.49017123222441, "o", "\r\n "] +[77.52017123222441, "o", "("] +[77.55017123222441, "o", "4"] +[77.58017123222442, "o", ","] +[77.61017123222442, "o", " "] +[77.64017123222442, "o", "5"] +[77.67017123222442, "o", ","] +[77.70017123222442, "o", " "] +[77.73017123222442, "o", "'"] +[77.76017123222442, "o", "T"] +[77.79017123222442, "o", "o"] +[77.82017123222442, "o", "i"] +[77.85017123222443, "o", "l"] +[77.88017123222443, "o", "e"] +[77.91017123222443, "o", "t"] +[77.94017123222443, "o", " "] +[77.97017123222443, "o", "R"] +[78.00017123222443, "o", "o"] +[78.03017123222443, "o", "l"] +[78.06017123222443, "o", "l"] +[78.09017123222444, "o", "'"] +[78.12017123222444, "o", ","] +[78.15017123222444, "o", " "] +[78.18017123222444, "o", "'"] +[78.21017123222444, "o", "2"] +[78.24017123222444, "o", "0"] +[78.27017123222444, "o", "2"] +[78.30017123222444, "o", "0"] +[78.33017123222444, "o", "-"] +[78.36017123222445, "o", "0"] +[78.39017123222445, "o", "4"] +[78.42017123222445, "o", "-"] +[78.45017123222445, "o", "2"] +[78.48017123222445, "o", "0"] +[78.51017123222445, "o", " "] +[78.54017123222445, "o", "1"] +[78.57017123222445, "o", "4"] +[78.60017123222445, "o", ":"] +[78.63017123222446, "o", "0"] +[78.66017123222446, "o", "5"] +[78.69017123222446, "o", ":"] +[78.72017123222446, "o", "1"] +[78.75017123222446, "o", "7"] +[78.78017123222446, "o", "'"] +[78.81017123222446, "o", ")"] +[78.84017123222446, "o", ";"] +[78.87017123222446, "o", "\""] +[78.90017123222447, "o", "\r\n"] +[78.93017123222447, "o", "\u001b[0m"] +[78.96017123222447, "o", "\r\n"] +[78.99017123222447, "o", "\u001b[1m"] +[79.02017123222447, "o", "\u001b[36m"] +[79.05017123222447, "o", "\u001b[91m"] +[79.08017123222447, "o", "$"] +[79.11017123222447, "o", " "] +[79.14017123222447, "o", "\u001b[0m"] +[84.17017123222448, "o", "\u001b[H"] +[84.20017123222448, "o", "\u001b[J"] +[84.23017123222448, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The change propagates to the subscriber and gets"] +[84.26017123222448, "o", "\r\n"] +[84.29017123222448, "o", "$ # captured by Splitgraph's change tracking\r\n"] +[84.32017123222448, "o", "$"] +[84.35017123222448, "o", " "] +[84.38017123222448, "o", "s"] +[84.41017123222449, "o", "g"] +[84.44017123222449, "o", "r"] +[84.47017123222449, "o", " "] +[84.50017123222449, "o", "d"] +[84.53017123222449, "o", "i"] +[84.56017123222449, "o", "f"] +[84.59017123222449, "o", "f"] +[84.6201712322245, "o", " "] +[84.6501712322245, "o", "-"] +[84.6801712322245, "o", "v"] +[84.7101712322245, "o", " "] +[84.7401712322245, "o", "p"] +[84.7701712322245, "o", "r"] +[84.8001712322245, "o", "o"] +[84.8301712322245, "o", "d"] +[84.8601712322245, "o", "u"] +[84.8901712322245, "o", "c"] +[84.9201712322245, "o", "t"] +[84.9501712322245, "o", "i"] +[84.9801712322245, "o", "o"] +[85.01017123222451, "o", "n"] +[85.04017123222451, "o", "_"] +[85.07017123222451, "o", "d"] +[85.10017123222451, "o", "a"] +[85.13017123222451, "o", "t"] +[85.16017123222451, "o", "a"] +[85.19017123222451, "o", "\r\n"] +[85.22017123222452, "o", "\u001b[0m"] +[85.25017123222452, "o", "\r\n"] +[85.76090602874856, "o", "Between d626b576ec0d and the current working copy: \r\n"] +[85.76143007278543, "o", "customers: added 1 row.\r\n+ (4, 'Jack Sample', datetime.datetime(2020, 4, 20, 14, 3, 48))\r\norders: added 2 rows, removed 2 rows.\r\n- (2, 1, 20, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n- (5, 1, 50, 'Surgical Mask', datetime.datetime(2020, 4, 2, 11, 29, 42))\r\n+ (2, 1, 25, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n+ (6, 4, 5, 'Toilet Roll', datetime.datetime(2020, 4, 20, 14, 5, 17))\r\n"] +[85.79143007278543, "o", "\u001b[1m"] +[85.82143007278543, "o", "\u001b[36m"] +[85.85143007278543, "o", "\u001b[91m"] +[85.88143007278543, "o", "$"] +[85.91143007278544, "o", " "] +[85.94143007278544, "o", "\u001b[0m"] +[90.97143007278544, "o", "\u001b[H"] +[91.00143007278544, "o", "\u001b[J"] +[91.03143007278544, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Committing creates a new image, snapshotting the state."] +[91.06143007278544, "o", "\r\n"] +[91.09143007278544, "o", "$"] +[91.12143007278544, "o", " "] +[91.15143007278544, "o", "s"] +[91.18143007278545, "o", "g"] +[91.21143007278545, "o", "r"] +[91.24143007278545, "o", " "] +[91.27143007278545, "o", "c"] +[91.30143007278545, "o", "o"] +[91.33143007278545, "o", "m"] +[91.36143007278545, "o", "m"] +[91.39143007278545, "o", "i"] +[91.42143007278545, "o", "t"] +[91.45143007278546, "o", " "] +[91.48143007278546, "o", "p"] +[91.51143007278546, "o", "r"] +[91.54143007278546, "o", "o"] +[91.57143007278546, "o", "d"] +[91.60143007278546, "o", "u"] +[91.63143007278546, "o", "c"] +[91.66143007278546, "o", "t"] +[91.69143007278547, "o", "i"] +[91.72143007278547, "o", "o"] +[91.75143007278547, "o", "n"] +[91.78143007278547, "o", "_"] +[91.81143007278547, "o", "d"] +[91.84143007278547, "o", "a"] +[91.87143007278547, "o", "t"] +[91.90143007278547, "o", "a"] +[91.93143007278547, "o", "\r\n"] +[91.96143007278548, "o", "$"] +[91.99143007278548, "o", " "] +[92.02143007278548, "o", "s"] +[92.05143007278548, "o", "g"] +[92.08143007278548, "o", "r"] +[92.11143007278548, "o", " "] +[92.14143007278548, "o", "t"] +[92.17143007278548, "o", "a"] +[92.20143007278548, "o", "g"] +[92.23143007278549, "o", " "] +[92.26143007278549, "o", "p"] +[92.29143007278549, "o", "r"] +[92.32143007278549, "o", "o"] +[92.35143007278549, "o", "d"] +[92.38143007278549, "o", "u"] +[92.41143007278549, "o", "c"] +[92.4414300727855, "o", "t"] +[92.4714300727855, "o", "i"] +[92.5014300727855, "o", "o"] +[92.5314300727855, "o", "n"] +[92.5614300727855, "o", "_"] +[92.5914300727855, "o", "d"] +[92.6214300727855, "o", "a"] +[92.6514300727855, "o", "t"] +[92.6814300727855, "o", "a"] +[92.7114300727855, "o", " "] +[92.7414300727855, "o", "c"] +[92.7714300727855, "o", "u"] +[92.80143007278551, "o", "r"] +[92.83143007278551, "o", "r"] +[92.86143007278551, "o", "e"] +[92.89143007278551, "o", "n"] +[92.92143007278551, "o", "t"] +[92.95143007278551, "o", "_"] +[92.98143007278551, "o", "s"] +[93.01143007278552, "o", "n"] +[93.04143007278552, "o", "a"] +[93.07143007278552, "o", "p"] +[93.10143007278552, "o", "s"] +[93.13143007278552, "o", "h"] +[93.16143007278552, "o", "o"] +[93.19143007278552, "o", "t"] +[93.22143007278552, "o", "\r\n"] +[93.25143007278552, "o", "$"] +[93.28143007278553, "o", " "] +[93.31143007278553, "o", "s"] +[93.34143007278553, "o", "g"] +[93.37143007278553, "o", "r"] +[93.40143007278553, "o", " "] +[93.43143007278553, "o", "s"] +[93.46143007278553, "o", "h"] +[93.49143007278553, "o", "o"] +[93.52143007278553, "o", "w"] +[93.55143007278554, "o", " "] +[93.58143007278554, "o", "p"] +[93.61143007278554, "o", "r"] +[93.64143007278554, "o", "o"] +[93.67143007278554, "o", "d"] +[93.70143007278554, "o", "u"] +[93.73143007278554, "o", "c"] +[93.76143007278554, "o", "t"] +[93.79143007278554, "o", "i"] +[93.82143007278555, "o", "o"] +[93.85143007278555, "o", "n"] +[93.88143007278555, "o", "_"] +[93.91143007278555, "o", "d"] +[93.94143007278555, "o", "a"] +[93.97143007278555, "o", "t"] +[94.00143007278555, "o", "a"] +[94.03143007278555, "o", ":"] +[94.06143007278556, "o", "c"] +[94.09143007278556, "o", "u"] +[94.12143007278556, "o", "r"] +[94.15143007278556, "o", "r"] +[94.18143007278556, "o", "e"] +[94.21143007278556, "o", "n"] +[94.24143007278556, "o", "t"] +[94.27143007278556, "o", "_"] +[94.30143007278556, "o", "s"] +[94.33143007278557, "o", "n"] +[94.36143007278557, "o", "a"] +[94.39143007278557, "o", "p"] +[94.42143007278557, "o", "s"] +[94.45143007278557, "o", "h"] +[94.48143007278557, "o", "o"] +[94.51143007278557, "o", "t"] +[94.54143007278557, "o", "\r\n"] +[94.57143007278557, "o", "\u001b[0m"] +[94.60143007278558, "o", "\r\n"] +[94.94983591079827, "o", "Committing production_data...\r\n"] +[94.9896453762066, "o", "Committed production_data as 01eba19a7e3d.\r\n"] +[95.36760891914483, "o", "Tagged production_data:01eba19a7e3da29c9a061a8776f716bb2b3f397fcf95fe83bb6b3d3d9a100df5 with current_snapshot.\r\n"] +[95.75329269409295, "o", "Image production_data:01eba19a7e3da29c9a061a8776f716bb2b3f397fcf95fe83bb6b3d3d9a100df5\r\n"] +[95.75331200599786, "o", "\r\nCreated at 2021-11-17T15:32:39.815941\r\n"] +[95.75481690406914, "o", "Size: 1.11 KiB\r\n"] +[95.75482501030083, "o", "Parent: d626b576ec0d09a7cef3f29f448dd09cfa236432a688582007a938994c462c50\r\n\r\nTables:\r\n"] +[95.75587023735162, "o", " customers\r\n"] +[95.75600303650018, "o", " orders\r\n"] +[95.78600303650018, "o", "\u001b[1m"] +[95.81600303650018, "o", "\u001b[36m"] +[95.84600303650018, "o", "\u001b[91m"] +[95.87600303650018, "o", "$"] +[95.90600303650018, "o", " "] +[95.93600303650018, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.18/postgrest.cast b/content/casts/versioned/archive/v0.2.18/postgrest.cast new file mode 100644 index 00000000..551602be --- /dev/null +++ b/content/casts/versioned/archive/v0.2.18/postgrest.cast @@ -0,0 +1,1421 @@ +{"version": 2, "width": 100, "height": 16, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1637163162, "metadata": {"tss": [{"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 0.06}, {"h": "Also create another image so we can switch between them.", "ts": 13.2652834892273}, {"h": "Check out the original version of the dataset and look at the API spec for it.", "ts": 26.140539722442732}, {"h": "Get all rows in the table", "ts": 38.01376017570525}, {"h": "Run a query selecting one row", "ts": 44.7214874553684}, {"h": "Run the query against the new version of the dataset.", "ts": 53.39976581573536}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "s"] +[0.24, "o", "g"] +[0.27, "o", "r"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "i"] +[0.3600000000000001, "o", "n"] +[0.3900000000000001, "o", "i"] +[0.42000000000000015, "o", "t"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "d"] +[0.5100000000000002, "o", "e"] +[0.5400000000000003, "o", "m"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "/"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "\r\n"] +[0.8700000000000006, "o", "$"] +[0.9000000000000006, "o", " "] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "g"] +[0.9900000000000007, "o", "r"] +[1.0200000000000007, "o", " "] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "s"] +[1.1100000000000008, "o", "v"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "i"] +[1.2000000000000008, "o", "m"] +[1.2300000000000009, "o", "p"] +[1.260000000000001, "o", "o"] +[1.290000000000001, "o", "r"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", " "] +[1.380000000000001, "o", "-"] +[1.410000000000001, "o", "f"] +[1.440000000000001, "o", " "] +[1.470000000000001, "o", "."] +[1.500000000000001, "o", "."] +[1.5300000000000011, "o", "/"] +[1.5600000000000012, "o", "i"] +[1.5900000000000012, "o", "m"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "o"] +[1.6800000000000013, "o", "r"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "-"] +[1.7700000000000014, "o", "f"] +[1.8000000000000014, "o", "r"] +[1.8300000000000014, "o", "o"] +[1.8600000000000014, "o", "m"] +[1.8900000000000015, "o", "-"] +[1.9200000000000015, "o", "c"] +[1.9500000000000015, "o", "s"] +[1.9800000000000015, "o", "v"] +[2.0100000000000016, "o", "/"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "d"] +[2.100000000000001, "o", "u"] +[2.130000000000001, "o", "-"] +[2.1600000000000006, "o", "w"] +[2.1900000000000004, "o", "e"] +[2.22, "o", "a"] +[2.25, "o", "t"] +[2.28, "o", "h"] +[2.3099999999999996, "o", "e"] +[2.3399999999999994, "o", "r"] +[2.369999999999999, "o", "-"] +[2.399999999999999, "o", "h"] +[2.429999999999999, "o", "i"] +[2.4599999999999986, "o", "s"] +[2.4899999999999984, "o", "t"] +[2.5199999999999982, "o", "o"] +[2.549999999999998, "o", "r"] +[2.579999999999998, "o", "y"] +[2.6099999999999977, "o", "."] +[2.6399999999999975, "o", "c"] +[2.6699999999999973, "o", "s"] +[2.699999999999997, "o", "v"] +[2.729999999999997, "o", " "] +[2.7599999999999967, "o", "\\"] +[2.7899999999999965, "o", "\r\n "] +[2.8199999999999963, "o", "-"] +[2.849999999999996, "o", "k"] +[2.879999999999996, "o", " "] +[2.9099999999999957, "o", "d"] +[2.9399999999999955, "o", "a"] +[2.9699999999999953, "o", "t"] +[2.999999999999995, "o", "e"] +[3.029999999999995, "o", " "] +[3.0599999999999947, "o", "\\"] +[3.0899999999999945, "o", "\r\n "] +[3.1199999999999943, "o", "-"] +[3.149999999999994, "o", "t"] +[3.179999999999994, "o", " "] +[3.2099999999999937, "o", "d"] +[3.2399999999999936, "o", "a"] +[3.2699999999999934, "o", "t"] +[3.299999999999993, "o", "e"] +[3.329999999999993, "o", " "] +[3.3599999999999928, "o", "t"] +[3.3899999999999926, "o", "i"] +[3.4199999999999924, "o", "m"] +[3.449999999999992, "o", "e"] +[3.479999999999992, "o", "s"] +[3.509999999999992, "o", "t"] +[3.5399999999999916, "o", "a"] +[3.5699999999999914, "o", "m"] +[3.599999999999991, "o", "p"] +[3.629999999999991, "o", " "] +[3.659999999999991, "o", "\\"] +[3.6899999999999906, "o", "\r\n "] +[3.7199999999999904, "o", "-"] +[3.7499999999999902, "o", "-"] +[3.77999999999999, "o", "s"] +[3.80999999999999, "o", "e"] +[3.8399999999999896, "o", "p"] +[3.8699999999999894, "o", "a"] +[3.8999999999999893, "o", "r"] +[3.929999999999989, "o", "a"] +[3.959999999999989, "o", "t"] +[3.9899999999999887, "o", "o"] +[4.019999999999989, "o", "r"] +[4.049999999999989, "o", " "] +[4.079999999999989, "o", "\""] +[4.10999999999999, "o", ";"] +[4.13999999999999, "o", "\""] +[4.16999999999999, "o", " "] +[4.19999999999999, "o", "\\"] +[4.229999999999991, "o", "\r\n "] +[4.259999999999991, "o", "d"] +[4.289999999999991, "o", "e"] +[4.319999999999991, "o", "m"] +[4.349999999999992, "o", "o"] +[4.379999999999992, "o", "/"] +[4.409999999999992, "o", "w"] +[4.439999999999992, "o", "e"] +[4.469999999999993, "o", "a"] +[4.499999999999993, "o", "t"] +[4.529999999999993, "o", "h"] +[4.559999999999993, "o", "e"] +[4.589999999999994, "o", "r"] +[4.619999999999994, "o", " "] +[4.649999999999994, "o", "r"] +[4.679999999999994, "o", "d"] +[4.709999999999995, "o", "u"] +[4.739999999999995, "o", "\r\n"] +[4.769999999999995, "o", "$"] +[4.799999999999995, "o", " "] +[4.829999999999996, "o", "s"] +[4.859999999999996, "o", "g"] +[4.889999999999996, "o", "r"] +[4.919999999999996, "o", " "] +[4.949999999999997, "o", "c"] +[4.979999999999997, "o", "o"] +[5.009999999999997, "o", "m"] +[5.039999999999997, "o", "m"] +[5.069999999999998, "o", "i"] +[5.099999999999998, "o", "t"] +[5.129999999999998, "o", " "] +[5.159999999999998, "o", "d"] +[5.189999999999999, "o", "e"] +[5.219999999999999, "o", "m"] +[5.249999999999999, "o", "o"] +[5.279999999999999, "o", "/"] +[5.31, "o", "w"] +[5.34, "o", "e"] +[5.37, "o", "a"] +[5.4, "o", "t"] +[5.430000000000001, "o", "h"] +[5.460000000000001, "o", "e"] +[5.490000000000001, "o", "r"] +[5.520000000000001, "o", "\r\n"] +[5.550000000000002, "o", "$"] +[5.580000000000002, "o", " "] +[5.610000000000002, "o", "s"] +[5.640000000000002, "o", "g"] +[5.670000000000003, "o", "r"] +[5.700000000000003, "o", " "] +[5.730000000000003, "o", "t"] +[5.760000000000003, "o", "a"] +[5.790000000000004, "o", "g"] +[5.820000000000004, "o", " "] +[5.850000000000004, "o", "d"] +[5.880000000000004, "o", "e"] +[5.910000000000005, "o", "m"] +[5.940000000000005, "o", "o"] +[5.970000000000005, "o", "/"] +[6.000000000000005, "o", "w"] +[6.030000000000006, "o", "e"] +[6.060000000000006, "o", "a"] +[6.090000000000006, "o", "t"] +[6.120000000000006, "o", "h"] +[6.150000000000007, "o", "e"] +[6.180000000000007, "o", "r"] +[6.210000000000007, "o", " "] +[6.240000000000007, "o", "i"] +[6.270000000000008, "o", "n"] +[6.300000000000008, "o", "i"] +[6.330000000000008, "o", "t"] +[6.360000000000008, "o", "i"] +[6.390000000000009, "o", "a"] +[6.420000000000009, "o", "l"] +[6.450000000000009, "o", "_"] +[6.480000000000009, "o", "d"] +[6.51000000000001, "o", "a"] +[6.54000000000001, "o", "t"] +[6.57000000000001, "o", "a"] +[6.60000000000001, "o", "\r\n"] +[6.6300000000000106, "o", "\u001b[0m"] +[6.660000000000011, "o", "\r\n"] +[7.032880458831798, "o", "Initialized empty repository demo/weather\r\n"] +[7.395016107559215, "o", "Committing demo/weather...\r\n"] +[7.414552125930797, "o", "Processing table rdu\r\n"] +[7.614459428787242, "o", "Committed demo/weather as ad4b8eb94bfe.\r\n"] +[8.025283489227306, "o", "Tagged demo/weather:ad4b8eb94bfe1353deabfb25e05d2687e601e55d388186e46e77dc359f6601e7 with initial_data.\r\n"] +[8.055283489227305, "o", "\u001b[1m"] +[8.085283489227304, "o", "\u001b[36m"] +[8.115283489227304, "o", "\u001b[91m"] +[8.145283489227303, "o", "$"] +[8.175283489227303, "o", " "] +[8.205283489227302, "o", "\u001b[0m"] +[13.235283489227301, "o", "\u001b[H"] +[13.2652834892273, "o", "\u001b[J"] +[13.2952834892273, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Also create another image so we can switch between them."] +[13.3252834892273, "o", "\r\n"] +[13.355283489227299, "o", "$"] +[13.385283489227298, "o", " "] +[13.415283489227297, "o", "s"] +[13.445283489227297, "o", "g"] +[13.475283489227296, "o", "r"] +[13.505283489227295, "o", " "] +[13.535283489227295, "o", "s"] +[13.565283489227294, "o", "q"] +[13.595283489227294, "o", "l"] +[13.625283489227293, "o", " "] +[13.655283489227292, "o", "-"] +[13.685283489227292, "o", "s"] +[13.715283489227291, "o", " "] +[13.74528348922729, "o", "d"] +[13.77528348922729, "o", "e"] +[13.805283489227289, "o", "m"] +[13.835283489227288, "o", "o"] +[13.865283489227288, "o", "/"] +[13.895283489227287, "o", "w"] +[13.925283489227287, "o", "e"] +[13.955283489227286, "o", "a"] +[13.985283489227285, "o", "t"] +[14.015283489227285, "o", "h"] +[14.045283489227284, "o", "e"] +[14.075283489227283, "o", "r"] +[14.105283489227283, "o", " "] +[14.135283489227282, "o", "\""] +[14.165283489227281, "o", "U"] +[14.19528348922728, "o", "P"] +[14.22528348922728, "o", "D"] +[14.25528348922728, "o", "A"] +[14.285283489227279, "o", "T"] +[14.315283489227278, "o", "E"] +[14.345283489227278, "o", " "] +[14.375283489227277, "o", "r"] +[14.405283489227276, "o", "d"] +[14.435283489227276, "o", "u"] +[14.465283489227275, "o", " "] +[14.495283489227274, "o", "S"] +[14.525283489227274, "o", "E"] +[14.555283489227273, "o", "T"] +[14.585283489227272, "o", " "] +[14.615283489227272, "o", "p"] +[14.645283489227271, "o", "r"] +[14.67528348922727, "o", "e"] +[14.70528348922727, "o", "c"] +[14.73528348922727, "o", "i"] +[14.765283489227269, "o", "p"] +[14.795283489227268, "o", "i"] +[14.825283489227267, "o", "t"] +[14.855283489227267, "o", "a"] +[14.885283489227266, "o", "t"] +[14.915283489227265, "o", "i"] +[14.945283489227265, "o", "o"] +[14.975283489227264, "o", "n"] +[15.005283489227264, "o", " "] +[15.035283489227263, "o", "="] +[15.065283489227262, "o", " "] +[15.095283489227262, "o", "p"] +[15.125283489227261, "o", "r"] +[15.15528348922726, "o", "e"] +[15.18528348922726, "o", "c"] +[15.215283489227259, "o", "i"] +[15.245283489227258, "o", "p"] +[15.275283489227258, "o", "i"] +[15.305283489227257, "o", "t"] +[15.335283489227256, "o", "a"] +[15.365283489227256, "o", "t"] +[15.395283489227255, "o", "i"] +[15.425283489227255, "o", "o"] +[15.455283489227254, "o", "n"] +[15.485283489227253, "o", " "] +[15.515283489227253, "o", "*"] +[15.545283489227252, "o", " "] +[15.575283489227251, "o", "1"] +[15.60528348922725, "o", "."] +[15.63528348922725, "o", "2"] +[15.66528348922725, "o", " "] +[15.695283489227249, "o", "W"] +[15.725283489227248, "o", "H"] +[15.755283489227248, "o", "E"] +[15.785283489227247, "o", "R"] +[15.815283489227246, "o", "E"] +[15.845283489227246, "o", " "] +[15.875283489227245, "o", "E"] +[15.905283489227244, "o", "X"] +[15.935283489227244, "o", "T"] +[15.965283489227243, "o", "R"] +[15.995283489227242, "o", "A"] +[16.02528348922724, "o", "C"] +[16.055283489227243, "o", "T"] +[16.085283489227244, "o", " "] +[16.115283489227245, "o", "("] +[16.145283489227246, "o", "y"] +[16.175283489227247, "o", "e"] +[16.20528348922725, "o", "a"] +[16.23528348922725, "o", "r"] +[16.26528348922725, "o", " "] +[16.295283489227252, "o", "F"] +[16.325283489227253, "o", "R"] +[16.355283489227254, "o", "O"] +[16.385283489227255, "o", "M"] +[16.415283489227257, "o", " "] +[16.445283489227258, "o", "d"] +[16.47528348922726, "o", "a"] +[16.50528348922726, "o", "t"] +[16.53528348922726, "o", "e"] +[16.565283489227262, "o", ")"] +[16.595283489227263, "o", " "] +[16.625283489227265, "o", "="] +[16.655283489227266, "o", " "] +[16.685283489227267, "o", "2"] +[16.715283489227268, "o", "0"] +[16.74528348922727, "o", "1"] +[16.77528348922727, "o", "2"] +[16.80528348922727, "o", "\""] +[16.835283489227272, "o", "\r\n"] +[16.865283489227274, "o", "$"] +[16.895283489227275, "o", " "] +[16.925283489227276, "o", "s"] +[16.955283489227277, "o", "g"] +[16.985283489227278, "o", "r"] +[17.01528348922728, "o", " "] +[17.04528348922728, "o", "c"] +[17.07528348922728, "o", "o"] +[17.105283489227283, "o", "m"] +[17.135283489227284, "o", "m"] +[17.165283489227285, "o", "i"] +[17.195283489227286, "o", "t"] +[17.225283489227287, "o", " "] +[17.25528348922729, "o", "-"] +[17.28528348922729, "o", "m"] +[17.31528348922729, "o", " "] +[17.345283489227292, "o", "\""] +[17.375283489227293, "o", "R"] +[17.405283489227294, "o", "e"] +[17.435283489227295, "o", "v"] +[17.465283489227296, "o", "i"] +[17.495283489227297, "o", "s"] +[17.5252834892273, "o", "i"] +[17.5552834892273, "o", "o"] +[17.5852834892273, "o", "n"] +[17.615283489227302, "o", " "] +[17.645283489227303, "o", "t"] +[17.675283489227304, "o", "o"] +[17.705283489227305, "o", " "] +[17.735283489227307, "o", "t"] +[17.765283489227308, "o", "h"] +[17.79528348922731, "o", "e"] +[17.82528348922731, "o", " "] +[17.85528348922731, "o", "2"] +[17.885283489227312, "o", "0"] +[17.915283489227313, "o", "1"] +[17.945283489227315, "o", "2"] +[17.975283489227316, "o", " "] +[18.005283489227317, "o", "r"] +[18.035283489227318, "o", "a"] +[18.06528348922732, "o", "i"] +[18.09528348922732, "o", "n"] +[18.12528348922732, "o", "f"] +[18.155283489227322, "o", "a"] +[18.185283489227324, "o", "l"] +[18.215283489227325, "o", "l"] +[18.245283489227326, "o", " "] +[18.275283489227327, "o", "d"] +[18.305283489227328, "o", "a"] +[18.33528348922733, "o", "t"] +[18.36528348922733, "o", "a"] +[18.39528348922733, "o", "\""] +[18.425283489227333, "o", " "] +[18.455283489227334, "o", "d"] +[18.485283489227335, "o", "e"] +[18.515283489227336, "o", "m"] +[18.545283489227337, "o", "o"] +[18.57528348922734, "o", "/"] +[18.60528348922734, "o", "w"] +[18.63528348922734, "o", "e"] +[18.665283489227342, "o", "a"] +[18.695283489227343, "o", "t"] +[18.725283489227344, "o", "h"] +[18.755283489227345, "o", "e"] +[18.785283489227346, "o", "r"] +[18.815283489227348, "o", "\r\n"] +[18.84528348922735, "o", "$"] +[18.87528348922735, "o", " "] +[18.90528348922735, "o", "s"] +[18.935283489227352, "o", "g"] +[18.965283489227353, "o", "r"] +[18.995283489227354, "o", " "] +[19.025283489227355, "o", "t"] +[19.055283489227357, "o", "a"] +[19.085283489227358, "o", "g"] +[19.11528348922736, "o", " "] +[19.14528348922736, "o", "d"] +[19.17528348922736, "o", "e"] +[19.205283489227362, "o", "m"] +[19.235283489227363, "o", "o"] +[19.265283489227365, "o", "/"] +[19.295283489227366, "o", "w"] +[19.325283489227367, "o", "e"] +[19.355283489227368, "o", "a"] +[19.38528348922737, "o", "t"] +[19.41528348922737, "o", "h"] +[19.44528348922737, "o", "e"] +[19.475283489227373, "o", "r"] +[19.505283489227374, "o", " "] +[19.535283489227375, "o", "r"] +[19.565283489227376, "o", "e"] +[19.595283489227377, "o", "v"] +[19.625283489227378, "o", "i"] +[19.65528348922738, "o", "s"] +[19.68528348922738, "o", "e"] +[19.71528348922738, "o", "d"] +[19.745283489227383, "o", "_"] +[19.775283489227384, "o", "d"] +[19.805283489227385, "o", "a"] +[19.835283489227386, "o", "t"] +[19.865283489227387, "o", "a"] +[19.89528348922739, "o", "\r\n"] +[19.92528348922739, "o", "\u001b[0m"] +[19.95528348922739, "o", "\r\n"] +[20.36513980865488, "o", "Committing demo/weather...\r\n"] +[20.395207967758274, "o", "Storing and indexing table rdu\r\n"] +[20.541593637466526, "o", "Committed demo/weather as 0b14c5515835.\r\n"] +[20.900539722442723, "o", "Tagged demo/weather:0b14c551583571fb036b472e832849306080352c0b32f85bcfb92458bee032c8 with revised_data.\r\n"] +[20.930539722442724, "o", "\u001b[1m"] +[20.960539722442725, "o", "\u001b[36m"] +[20.990539722442726, "o", "\u001b[91m"] +[21.020539722442727, "o", "$"] +[21.05053972244273, "o", " "] +[21.08053972244273, "o", "\u001b[0m"] +[26.11053972244273, "o", "\u001b[H"] +[26.140539722442732, "o", "\u001b[J"] +[26.170539722442733, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the original version of the dataset and look at the API spec for it."] +[26.200539722442734, "o", "\r\n"] +[26.230539722442735, "o", "$ # For this, we need to restart PostgREST so that it picks up the new schema.\r\n"] +[26.260539722442736, "o", "$"] +[26.290539722442738, "o", " "] +[26.32053972244274, "o", "d"] +[26.35053972244274, "o", "o"] +[26.38053972244274, "o", "c"] +[26.410539722442742, "o", "k"] +[26.440539722442743, "o", "e"] +[26.470539722442744, "o", "r"] +[26.500539722442745, "o", "-"] +[26.530539722442747, "o", "c"] +[26.560539722442748, "o", "o"] +[26.59053972244275, "o", "m"] +[26.62053972244275, "o", "p"] +[26.65053972244275, "o", "o"] +[26.680539722442752, "o", "s"] +[26.710539722442753, "o", "e"] +[26.740539722442755, "o", " "] +[26.770539722442756, "o", "-"] +[26.800539722442757, "o", "-"] +[26.830539722442758, "o", "p"] +[26.86053972244276, "o", "r"] +[26.89053972244276, "o", "o"] +[26.92053972244276, "o", "j"] +[26.950539722442763, "o", "e"] +[26.980539722442764, "o", "c"] +[27.010539722442765, "o", "t"] +[27.040539722442766, "o", "-"] +[27.070539722442767, "o", "n"] +[27.100539722442768, "o", "a"] +[27.13053972244277, "o", "m"] +[27.16053972244277, "o", "e"] +[27.19053972244277, "o", " "] +[27.220539722442773, "o", "s"] +[27.250539722442774, "o", "p"] +[27.280539722442775, "o", "l"] +[27.310539722442776, "o", "i"] +[27.340539722442777, "o", "t"] +[27.37053972244278, "o", "g"] +[27.40053972244278, "o", "r"] +[27.43053972244278, "o", "a"] +[27.460539722442782, "o", "p"] +[27.490539722442783, "o", "h"] +[27.520539722442784, "o", "_"] +[27.550539722442785, "o", "e"] +[27.580539722442786, "o", "x"] +[27.610539722442788, "o", "a"] +[27.64053972244279, "o", "m"] +[27.67053972244279, "o", "p"] +[27.70053972244279, "o", "l"] +[27.730539722442792, "o", "e"] +[27.760539722442793, "o", " "] +[27.790539722442794, "o", "r"] +[27.820539722442795, "o", "e"] +[27.850539722442797, "o", "s"] +[27.880539722442798, "o", "t"] +[27.9105397224428, "o", "a"] +[27.9405397224428, "o", "r"] +[27.9705397224428, "o", "t"] +[28.000539722442802, "o", " "] +[28.030539722442803, "o", "p"] +[28.060539722442805, "o", "o"] +[28.090539722442806, "o", "s"] +[28.120539722442807, "o", "t"] +[28.150539722442808, "o", "g"] +[28.18053972244281, "o", "r"] +[28.21053972244281, "o", "e"] +[28.24053972244281, "o", "s"] +[28.270539722442813, "o", "t"] +[28.300539722442814, "o", "\r\n"] +[28.330539722442815, "o", "$"] +[28.360539722442816, "o", " "] +[28.390539722442817, "o", "s"] +[28.42053972244282, "o", "g"] +[28.45053972244282, "o", "r"] +[28.48053972244282, "o", " "] +[28.51053972244282, "o", "c"] +[28.540539722442823, "o", "h"] +[28.570539722442824, "o", "e"] +[28.600539722442825, "o", "c"] +[28.630539722442826, "o", "k"] +[28.660539722442827, "o", "o"] +[28.69053972244283, "o", "u"] +[28.72053972244283, "o", "t"] +[28.75053972244283, "o", " "] +[28.780539722442832, "o", "d"] +[28.810539722442833, "o", "e"] +[28.840539722442834, "o", "m"] +[28.870539722442835, "o", "o"] +[28.900539722442836, "o", "/"] +[28.930539722442838, "o", "w"] +[28.96053972244284, "o", "e"] +[28.99053972244284, "o", "a"] +[29.02053972244284, "o", "t"] +[29.050539722442842, "o", "h"] +[29.080539722442843, "o", "e"] +[29.110539722442844, "o", "r"] +[29.140539722442846, "o", ":"] +[29.170539722442847, "o", "i"] +[29.200539722442848, "o", "n"] +[29.23053972244285, "o", "i"] +[29.26053972244285, "o", "t"] +[29.29053972244285, "o", "i"] +[29.320539722442852, "o", "a"] +[29.350539722442853, "o", "l"] +[29.380539722442855, "o", "_"] +[29.410539722442856, "o", "d"] +[29.440539722442857, "o", "a"] +[29.470539722442858, "o", "t"] +[29.50053972244286, "o", "a"] +[29.53053972244286, "o", "\r\n"] +[29.56053972244286, "o", "$"] +[29.590539722442863, "o", " "] +[29.620539722442864, "o", "c"] +[29.650539722442865, "o", "u"] +[29.680539722442866, "o", "r"] +[29.710539722442867, "o", "l"] +[29.74053972244287, "o", " "] +[29.77053972244287, "o", "h"] +[29.80053972244287, "o", "t"] +[29.83053972244287, "o", "t"] +[29.860539722442873, "o", "p"] +[29.890539722442874, "o", ":"] +[29.920539722442875, "o", "/"] +[29.950539722442876, "o", "/"] +[29.980539722442877, "o", "l"] +[30.01053972244288, "o", "o"] +[30.04053972244288, "o", "c"] +[30.07053972244288, "o", "a"] +[30.100539722442882, "o", "l"] +[30.130539722442883, "o", "h"] +[30.160539722442884, "o", "o"] +[30.190539722442885, "o", "s"] +[30.220539722442886, "o", "t"] +[30.250539722442888, "o", ":"] +[30.28053972244289, "o", "8"] +[30.31053972244289, "o", "0"] +[30.34053972244289, "o", "8"] +[30.370539722442892, "o", "0"] +[30.400539722442893, "o", "/"] +[30.430539722442894, "o", " "] +[30.460539722442896, "o", "|"] +[30.490539722442897, "o", " "] +[30.520539722442898, "o", "c"] +[30.5505397224429, "o", "u"] +[30.5805397224429, "o", "t"] +[30.6105397224429, "o", " "] +[30.640539722442902, "o", "-"] +[30.670539722442903, "o", "c"] +[30.700539722442905, "o", " "] +[30.730539722442906, "o", "-"] +[30.760539722442907, "o", "7"] +[30.790539722442908, "o", "9"] +[30.82053972244291, "o", "3"] +[30.85053972244291, "o", "\r\n"] +[30.88053972244291, "o", "\u001b[0m"] +[30.910539722442913, "o", "\r\n"] +[31.476822948456096, "o", "Restarting splitgraph_example_postgrest_1 ... \r\r\n"] +[32.1548002719882, "o", "\u001b[1A\u001b[2K\r"] +[32.15630254745512, "o", "Restarting splitgraph_example_postgrest_1 ... \u001b[32mdone\u001b[0m\r"] +[32.15631017684965, "o", "\u001b[1B"] +[32.70622429847746, "o", "Checked out demo/weather:ad4b8eb94bfe."] +[32.70625338554411, "o", "\r\n"] +[32.724323844909954, "o", " "] +[32.724331712723064, "o", " % Total % Received % Xferd "] +[32.724336719513225, "o", "Avera"] +[32.72434029579191, "o", "ge "] +[32.72434339523344, "o", "Sp"] +[32.72434625625639, "o", "ee"] +[32.72434887886076, "o", "d "] +[32.72435173988371, "o", " "] +[32.72435460090666, "o", "Ti"] +[32.724357700348186, "o", "me"] +[32.724360561371135, "o", " "] +[32.724363422394084, "o", " "] +[32.724366044998455, "o", "Ti"] +[32.724368906021404, "o", "me"] +[32.72437176704435, "o", " "] +[32.72437486648588, "o", " "] +[32.72437772750883, "o", " T"] +[32.72438082695036, "o", "im"] +[32.72438368797331, "o", "e "] +[32.72438654899626, "o", " C"] +[32.72438941001921, "o", "ur"] +[32.724392509460735, "o", "re"] +[32.72439560890226, "o", "nt"] +[32.724400615692424, "o", "\r\n"] +[32.72440395355253, "o", " "] +[32.72440705299406, "o", " "] +[32.72440967559843, "o", " "] +[32.72441253662138, "o", " "] +[32.72441563606291, "o", " "] +[32.724418735504436, "o", " "] +[32.72442207336454, "o", " "] +[32.72442564964323, "o", " "] +[32.72442874908476, "o", " "] +[32.72443184852629, "o", " "] +[32.724434709549236, "o", " "] +[32.72443804740934, "o", " "] +[32.72444114685087, "o", " "] +[32.7244442462924, "o", " "] +[32.7244487762454, "o", " Dload Upload Total Spen"] +[32.72445306777983, "o", "t "] +[32.724456405639934, "o", " L"] +[32.72445926666288, "o", "ef"] +[32.72446331977873, "o", "t "] +[32.724466419220256, "o", " S"] +[32.724469280243206, "o", "pe"] +[32.724472141266155, "o", "ed"] +[32.72447667121916, "o", "\r\n"] +[32.724480009079265, "o", "\r "] +[32.72448310852079, "o", "0 "] +[32.72448668479948, "o", " "] +[32.72448978424101, "o", " "] +[32.72449264526396, "o", "0 "] +[32.724495744705486, "o", " "] +[32.72449908256559, "o", " 0"] +[32.7245024204257, "o", " "] +[32.72450599670439, "o", " "] +[32.724508857727336, "o", " 0"] +[32.724511718750286, "o", " "] +[32.724514818191814, "o", " "] +[32.72451767921476, "o", "0 "] +[32.72452077865629, "o", " "] +[32.72452363967924, "o", " "] +[32.724528169632244, "o", "0 "] +[32.72453126907377, "o", " "] +[32.72453413009672, "o", " "] +[32.72453722953825, "o", "0 "] +[32.72454032897978, "o", " "] +[32.72454295158415, "o", " "] +[32.7245458126071, "o", " 0"] +[32.72455010414152, "o", " -"] +[32.72455296516447, "o", "-:"] +[32.72455582618742, "o", "--"] +[32.72455868721037, "o", ":-"] +[32.72456154823332, "o", "- "] +[32.724564886093425, "o", "--"] +[32.724567508697795, "o", ":-"] +[32.724570369720745, "o", "-:"] +[32.72457513809233, "o", "--"] +[32.724578475952434, "o", " --"] +[32.72458133697538, "o", ":-"] +[32.72458395957975, "o", "-:"] +[32.7245868206027, "o", "--"] +[32.72458968162565, "o", " "] +[32.7245925426486, "o", " "] +[32.72459540367155, "o", " 0"] +[32.77186641693144, "o", "\r"] +[32.771878099441814, "o", "100 12000 0 12000 0 0 24"] +[32.77188262939482, "o", "9k "] +[32.7718862056735, "o", " "] +[32.77188978195219, "o", "0 -"] +[32.77189550399809, "o", "-:"] +[32.77189955711393, "o", "--:"] +[32.77190265655546, "o", "--"] +[32.77190575599699, "o", " -"] +[32.77190885543852, "o", "-:"] +[32.771912670135784, "o", "--"] +[32.77191576957731, "o", ":--"] +[32.771920537948894, "o", " -"] +[32.771923875809, "o", "-:-"] +[32.77192697525053, "o", "-:"] +[32.77193007469206, "o", "--"] +[32.771933412552166, "o", " "] +[32.771936511993694, "o", "24"] +[32.77193961143522, "o", "9k"] +[32.77194724082975, "o", "\r\n"] +[32.7737492084506, "o", "{\"swagger\":\"2.0\",\"info\":{\"version\":\"8.0.0\",\"title\":\"PostgREST API\",\"description\":\"This is a dynamic API generated by PostgREST\"},\"host\":\"localhost:8080\",\"basePath\":\"/\",\"schemes\":[\"http\"],\"consumes\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"produces\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"paths\":{\"/\":{\"get\":{\"tags\":[\"Introspection\"],\"summary\":\"OpenAPI description (this document)\",\"produces\":[\"application/openapi+json\",\"application/json\"],\"responses\":{\""] +[32.77376017570524, "o", "200\":{\"description\":\"OK\"}}}},\"/rdu\":{\"get\":{\"tags\":[\"rdu\"],\"parameters\":[{\"$ref\":\"#/parameters/rowFilter.rdu.date\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemin\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemax\"},{\"$ref\":\"#/parameters/rowFilter.rdu.precipitation\"},{\"$ref\"\r\n"] +[32.80376017570524, "o", "\u001b[1m"] +[32.833760175705244, "o", "\u001b[36m"] +[32.863760175705245, "o", "\u001b[91m"] +[32.893760175705246, "o", "$"] +[32.92376017570525, "o", " "] +[32.95376017570525, "o", "\u001b[0m"] +[37.98376017570525, "o", "\u001b[H"] +[38.01376017570525, "o", "\u001b[J"] +[38.04376017570525, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get all rows in the table"] +[38.07376017570525, "o", "\r\n"] +[38.103760175705254, "o", "$"] +[38.133760175705255, "o", " "] +[38.16376017570526, "o", "c"] +[38.19376017570526, "o", "u"] +[38.22376017570526, "o", "r"] +[38.25376017570526, "o", "l"] +[38.28376017570526, "o", " "] +[38.31376017570526, "o", "h"] +[38.34376017570526, "o", "t"] +[38.373760175705264, "o", "t"] +[38.403760175705266, "o", "p"] +[38.43376017570527, "o", ":"] +[38.46376017570527, "o", "/"] +[38.49376017570527, "o", "/"] +[38.52376017570527, "o", "l"] +[38.55376017570527, "o", "o"] +[38.58376017570527, "o", "c"] +[38.61376017570527, "o", "a"] +[38.643760175705275, "o", "l"] +[38.673760175705276, "o", "h"] +[38.70376017570528, "o", "o"] +[38.73376017570528, "o", "s"] +[38.76376017570528, "o", "t"] +[38.79376017570528, "o", ":"] +[38.82376017570528, "o", "8"] +[38.85376017570528, "o", "0"] +[38.883760175705284, "o", "8"] +[38.913760175705285, "o", "0"] +[38.943760175705286, "o", "/"] +[38.97376017570529, "o", "r"] +[39.00376017570529, "o", "d"] +[39.03376017570529, "o", "u"] +[39.06376017570529, "o", " "] +[39.09376017570529, "o", "|"] +[39.12376017570529, "o", " "] +[39.153760175705294, "o", "w"] +[39.183760175705295, "o", "c"] +[39.213760175705296, "o", " "] +[39.2437601757053, "o", "-"] +[39.2737601757053, "o", "l"] +[39.3037601757053, "o", "\r\n"] +[39.3337601757053, "o", "\u001b[0m"] +[39.3637601757053, "o", "\r\n"] +[39.37813657760655, "o", " "] +[39.378163757324565, "o", " "] +[39.37817830085789, "o", "%"] +[39.37818879127537, "o", " "] +[39.37819856643711, "o", "T"] +[39.378208818436015, "o", "o"] +[39.37821859359776, "o", "t"] +[39.378246011734355, "o", "a"] +[39.378256502151835, "o", "l"] +[39.37826651573216, "o", " "] +[39.37827605247532, "o", " "] +[39.378285827637065, "o", " "] +[39.37829560279881, "o", " "] +[39.37830537796055, "o", "%"] +[39.378315153122294, "o", " "] +[39.37834257125889, "o", "R"] +[39.37835353851353, "o", "e"] +[39.37836450576817, "o", "c"] +[39.37837475776707, "o", "e"] +[39.37838500976597, "o", "i"] +[39.37839573860203, "o", "v"] +[39.37840575218235, "o", "e"] +[39.37841648101841, "o", "d"] +[39.37842697143589, "o", " "] +[39.37843770027195, "o", "%"] +[39.378447713852275, "o", " "] +[39.378458204269755, "o", "X"] +[39.378468694687236, "o", "f"] +[39.378479423523295, "o", "e"] +[39.378489913940776, "o", "r"] +[39.378500881195414, "o", "d"] +[39.378511610031474, "o", " "] +[39.378522100448954, "o", " "] +[39.378532590866435, "o", "A"] +[39.37855977058445, "o", "v"] +[39.37857026100193, "o", "e"] +[39.378580513000834, "o", "r"] +[39.378590526581156, "o", "a"] +[39.37860054016148, "o", "g"] +[39.3786105537418, "o", "e"] +[39.378638448715556, "o", " "] +[39.37866467475926, "o", "S"] +[39.378674449921, "o", "p"] +[39.3786847019199, "o", "e"] +[39.378694238663066, "o", "e"] +[39.37870377540623, "o", "d"] +[39.378713073730815, "o", " "] +[39.37872261047398, "o", " "] +[39.3787326240543, "o", " "] +[39.378742399216044, "o", "T"] +[39.37875217437779, "o", "i"] +[39.37876147270237, "o", "m"] +[39.378771486282695, "o", "e"] +[39.37878078460728, "o", " "] +[39.37879032135044, "o", " "] +[39.37879985809361, "o", " "] +[39.37880939483677, "o", " "] +[39.378819169998515, "o", "T"] +[39.37882870674168, "o", "i"] +[39.37883824348484, "o", "m"] +[39.37884778022801, "o", "e"] +[39.37885684013401, "o", " "] +[39.37886637687718, "o", " "] +[39.37897080421482, "o", " "] +[39.37898558616673, "o", " "] +[39.37899583816563, "o", " "] +[39.37900561332737, "o", "T"] +[39.379015150070536, "o", "i"] +[39.37902492523228, "o", "m"] +[39.37903446197544, "o", "e"] +[39.379044475555766, "o", " "] +[39.37905425071751, "o", " "] +[39.37906402587925, "o", "C"] +[39.37907427787815, "o", "u"] +[39.379084529877055, "o", "r"] +[39.37909406662022, "o", "r"] +[39.37910360336338, "o", "e"] +[39.37913054466282, "o", "n"] +[39.379140558243144, "o", "t"] +[39.379153194427836, "o", "\r\n"] +[39.37916630744969, "o", " "] +[39.379177036285746, "o", " "] +[39.37918728828465, "o", " "] +[39.37921589851414, "o", " "] +[39.37922638893162, "o", " "] +[39.37923664093052, "o", " "] +[39.37924689292942, "o", " "] +[39.3792573833469, "o", " "] +[39.37927597999607, "o", " "] +[39.37928718566929, "o", " "] +[39.37929791450535, "o", " "] +[39.37930959701573, "o", " "] +[39.37932008743321, "o", " "] +[39.37933057785069, "o", " "] +[39.37934106826817, "o", " "] +[39.37935155868565, "o", " "] +[39.37936181068455, "o", " "] +[39.37937230110203, "o", " "] +[39.37938302993809, "o", " "] +[39.37939709663426, "o", " "] +[39.379410686493266, "o", " "] +[39.37945980072056, "o", " "] +[39.37947243690525, "o", " "] +[39.379484834671366, "o", " "] +[39.3794969940189, "o", " "] +[39.379509391785014, "o", " "] +[39.37951916694676, "o", " "] +[39.3795289421085, "o", " "] +[39.37953871727024, "o", " "] +[39.37954825401341, "o", " "] +[39.37955993652378, "o", " "] +[39.379570426941264, "o", " "] +[39.37958020210301, "o", " "] +[39.37958973884617, "o", "D"] +[39.379599275589335, "o", "l"] +[39.3796088123325, "o", "o"] +[39.37961834907566, "o", "a"] +[39.379628124237406, "o", "d"] +[39.37963789939915, "o", " "] +[39.37964767456089, "o", " "] +[39.37965721130406, "o", "U"] +[39.37966770172154, "o", "p"] +[39.37967747688328, "o", "l"] +[39.379687013626445, "o", "o"] +[39.37969655036961, "o", "a"] +[39.37970632553135, "o", "d"] +[39.379715862274516, "o", " "] +[39.37972563743626, "o", " "] +[39.379735412598, "o", " "] +[39.37974471092259, "o", "T"] +[39.37975424766575, "o", "o"] +[39.379763545990336, "o", "t"] +[39.37977332115208, "o", "a"] +[39.37978285789524, "o", "l"] +[39.37979620933567, "o", " "] +[39.379806222915995, "o", " "] +[39.37981599807774, "o", " "] +[39.37982577323948, "o", "S"] +[39.379835548401225, "o", "p"] +[39.37984532356297, "o", "e"] +[39.37985486030613, "o", "n"] +[39.379864397049296, "o", "t"] +[39.37987846374546, "o", " "] +[39.37988895416294, "o", " "] +[39.379899682999, "o", " "] +[39.379909696579325, "o", " "] +[39.37991971015965, "o", "L"] +[39.37992972373997, "o", "e"] +[39.37993973732029, "o", "f"] +[39.379949750900614, "o", "t"] +[39.37995976448094, "o", " "] +[39.37996977806126, "o", " "] +[39.37997931480442, "o", "S"] +[39.379989328384745, "o", "p"] +[39.37999934196507, "o", "e"] +[39.38000935554539, "o", "e"] +[39.38001936912571, "o", "d"] +[39.38003081321751, "o", "\r\n"] +[39.38004607200657, "o", "\r"] +[39.38005751609837, "o", " "] +[39.38006776809727, "o", " "] +[39.38007778167759, "o", "0"] +[39.38008803367649, "o", " "] +[39.38009923934971, "o", " "] +[39.38010949134861, "o", " "] +[39.38011998176609, "o", " "] +[39.380129995346415, "o", " "] +[39.3801552677158, "o", "0"] +[39.38016504287754, "o", " "] +[39.38017434120213, "o", " "] +[39.38018435478245, "o", " "] +[39.38019436836277, "o", " "] +[39.380204143524516, "o", "0"] +[39.38021391868626, "o", " "] +[39.38022393226658, "o", " "] +[39.380233469009745, "o", " "] +[39.38024300575291, "o", " "] +[39.38025254249607, "o", " "] +[39.38026231765782, "o", "0"] +[39.3802716159824, "o", " "] +[39.380281152725566, "o", " "] +[39.38029116630589, "o", " "] +[39.38030094146763, "o", " "] +[39.380310716629374, "o", "0"] +[39.38031977653538, "o", " "] +[39.3803297901157, "o", " "] +[39.38033908844029, "o", " "] +[39.38034886360203, "o", " "] +[39.380358400345195, "o", " "] +[39.380369129181254, "o", "0"] +[39.380379381180155, "o", " "] +[39.3803891563419, "o", " "] +[39.38039916992222, "o", " "] +[39.380408468246806, "o", " "] +[39.38041800498997, "o", " "] +[39.380427064895976, "o", " "] +[39.380437793732035, "o", "0"] +[39.38044756889378, "o", " "] +[39.38045686721836, "o", " "] +[39.380466880798686, "o", " "] +[39.38047665596043, "o", " "] +[39.380485954285014, "o", " "] +[39.38049501419102, "o", " "] +[39.380504550934184, "o", "0"] +[39.38051384925877, "o", " "] +[39.380525770187724, "o", "-"] +[39.380536260605204, "o", "-"] +[39.38054555892979, "o", ":"] +[39.380554857254374, "o", "-"] +[39.38056439399754, "o", "-"] +[39.3805739307407, "o", ":"] +[39.380583467483866, "o", "-"] +[39.38059300422703, "o", "-"] +[39.380602540970195, "o", " "] +[39.38061255455052, "o", "-"] +[39.380623044968, "o", "-"] +[39.38063282012974, "o", ":"] +[39.380642356872904, "o", "-"] +[39.38065189361607, "o", "-"] +[39.38066143035923, "o", ":"] +[39.3806709671024, "o", "-"] +[39.380682172775614, "o", "-"] +[39.380692663193095, "o", " "] +[39.38070267677342, "o", "-"] +[39.38071245193516, "o", "-"] +[39.380721988678324, "o", ":"] +[39.38073104858433, "o", "-"] +[39.380740346908915, "o", "-"] +[39.38074940681492, "o", ":"] +[39.38075942039524, "o", "-"] +[39.380769433975566, "o", "-"] +[39.38077920913731, "o", " "] +[39.38078922271763, "o", " "] +[39.380798759460795, "o", " "] +[39.38080853462254, "o", " "] +[39.3808180713657, "o", " "] +[39.38082736969029, "o", "0"] +[39.47788280487095, "o", "\r"] +[39.47794145584141, "o", "1"] +[39.47803730011021, "o", "0"] +[39.47807425498997, "o", "0"] +[39.47811883926426, "o", " "] +[39.47814530372654, "o", "2"] +[39.47817152977024, "o", "2"] +[39.478197278976786, "o", "9"] +[39.478224220276225, "o", "2"] +[39.47824996948277, "o", "k"] +[39.47827595710789, "o", " "] +[39.478319349289286, "o", " "] +[39.47834724426304, "o", " "] +[39.478375377655375, "o", " "] +[39.47842258453404, "o", "0"] +[39.478449525833476, "o", " "] +[39.47847765922581, "o", "2"] +[39.47852510452305, "o", "2"] +[39.478553237915385, "o", "9"] +[39.47859663009678, "o", "2"] +[39.478621902466166, "o", "k"] +[39.47865051269566, "o", " "] +[39.4786774539951, "o", " "] +[39.47870391845738, "o", " "] +[39.47874540329014, "o", " "] +[39.47876972198521, "o", "0"] +[39.47879404068028, "o", " "] +[39.47881955146824, "o", " "] +[39.47884434700047, "o", " "] +[39.478868665695536, "o", " "] +[39.478892984390605, "o", " "] +[39.47891754150425, "o", "0"] +[39.47894519805943, "o", " "] +[39.47897094726597, "o", " "] +[39.478996458053935, "o", "2"] +[39.47902125358616, "o", "1"] +[39.47904581069981, "o", "."] +[39.47907132148777, "o", "1"] +[39.47909564018284, "o", "M"] +[39.47911995887791, "o", " "] +[39.47914451599156, "o", " "] +[39.47916954994236, "o", " "] +[39.47919410705601, "o", " "] +[39.47921890258824, "o", " "] +[39.47924369812046, "o", " "] +[39.47926801681553, "o", "0"] +[39.47929185867344, "o", " "] +[39.47931689262425, "o", "-"] +[39.47934454917942, "o", "-"] +[39.479370298385966, "o", ":"] +[39.479394617081034, "o", "-"] +[39.4794189357761, "o", "-"] +[39.47944301605259, "o", ":"] +[39.47946757316624, "o", "-"] +[39.479509057999, "o", "-"] +[39.47953433036839, "o", " "] +[39.47956007957493, "o", "-"] +[39.47958964347874, "o", "-"] +[39.47961563110386, "o", ":"] +[39.479641141891825, "o", "-"] +[39.47966665267979, "o", "-"] +[39.47969216346775, "o", ":"] +[39.47971719741856, "o", "-"] +[39.479742231369364, "o", "-"] +[39.4797703647617, "o", " "] +[39.47979706764256, "o", "-"] +[39.47982210159336, "o", "-"] +[39.47984642028843, "o", ":"] +[39.47987026214634, "o", "-"] +[39.47989434242283, "o", "-"] +[39.47991842269932, "o", ":"] +[39.47994321823155, "o", "-"] +[39.479967298508036, "o", "-"] +[39.479991617203105, "o", " "] +[39.48001688957249, "o", "2"] +[39.480041923523295, "o", "1"] +[39.48006624221836, "o", "."] +[39.48009032249485, "o", "3"] +[39.4801148796085, "o", "M"] +[39.48014182090794, "o", "\r\n"] +[39.48148745536839, "o", "4632\r\n"] +[39.51148745536839, "o", "\u001b[1m"] +[39.54148745536839, "o", "\u001b[36m"] +[39.57148745536839, "o", "\u001b[91m"] +[39.60148745536839, "o", "$"] +[39.631487455368394, "o", " "] +[39.661487455368395, "o", "\u001b[0m"] +[44.691487455368396, "o", "\u001b[H"] +[44.7214874553684, "o", "\u001b[J"] +[44.7514874553684, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a query selecting one row"] +[44.7814874553684, "o", "\r\n"] +[44.8114874553684, "o", "$"] +[44.8414874553684, "o", " "] +[44.8714874553684, "o", "c"] +[44.901487455368404, "o", "u"] +[44.931487455368405, "o", "r"] +[44.961487455368406, "o", "l"] +[44.99148745536841, "o", " "] +[45.02148745536841, "o", "\""] +[45.05148745536841, "o", "h"] +[45.08148745536841, "o", "t"] +[45.11148745536841, "o", "t"] +[45.14148745536841, "o", "p"] +[45.171487455368414, "o", ":"] +[45.201487455368415, "o", "/"] +[45.231487455368416, "o", "/"] +[45.26148745536842, "o", "l"] +[45.29148745536842, "o", "o"] +[45.32148745536842, "o", "c"] +[45.35148745536842, "o", "a"] +[45.38148745536842, "o", "l"] +[45.41148745536842, "o", "h"] +[45.441487455368424, "o", "o"] +[45.471487455368425, "o", "s"] +[45.50148745536843, "o", "t"] +[45.53148745536843, "o", ":"] +[45.56148745536843, "o", "8"] +[45.59148745536843, "o", "0"] +[45.62148745536843, "o", "8"] +[45.65148745536843, "o", "0"] +[45.68148745536843, "o", "/"] +[45.711487455368434, "o", "r"] +[45.741487455368436, "o", "d"] +[45.77148745536844, "o", "u"] +[45.80148745536844, "o", "?"] +[45.83148745536844, "o", "d"] +[45.86148745536844, "o", "a"] +[45.89148745536844, "o", "t"] +[45.92148745536844, "o", "e"] +[45.951487455368444, "o", "="] +[45.981487455368445, "o", "e"] +[46.011487455368446, "o", "q"] +[46.04148745536845, "o", "."] +[46.07148745536845, "o", "2"] +[46.10148745536845, "o", "0"] +[46.13148745536845, "o", "1"] +[46.16148745536845, "o", "2"] +[46.19148745536845, "o", "-"] +[46.221487455368454, "o", "1"] +[46.251487455368455, "o", "2"] +[46.281487455368456, "o", "-"] +[46.31148745536846, "o", "2"] +[46.34148745536846, "o", "6"] +[46.37148745536846, "o", "&"] +[46.40148745536846, "o", "s"] +[46.43148745536846, "o", "e"] +[46.46148745536846, "o", "l"] +[46.491487455368464, "o", "e"] +[46.521487455368465, "o", "c"] +[46.551487455368466, "o", "t"] +[46.58148745536847, "o", "="] +[46.61148745536847, "o", "d"] +[46.64148745536847, "o", "a"] +[46.67148745536847, "o", "t"] +[46.70148745536847, "o", "e"] +[46.73148745536847, "o", ","] +[46.761487455368474, "o", "t"] +[46.791487455368475, "o", "e"] +[46.82148745536848, "o", "m"] +[46.85148745536848, "o", "p"] +[46.88148745536848, "o", "e"] +[46.91148745536848, "o", "r"] +[46.94148745536848, "o", "a"] +[46.97148745536848, "o", "t"] +[47.00148745536848, "o", "u"] +[47.031487455368485, "o", "r"] +[47.061487455368486, "o", "e"] +[47.09148745536849, "o", "m"] +[47.12148745536849, "o", "i"] +[47.15148745536849, "o", "n"] +[47.18148745536849, "o", ","] +[47.21148745536849, "o", "t"] +[47.24148745536849, "o", "e"] +[47.271487455368494, "o", "m"] +[47.301487455368495, "o", "p"] +[47.331487455368496, "o", "e"] +[47.3614874553685, "o", "r"] +[47.3914874553685, "o", "a"] +[47.4214874553685, "o", "t"] +[47.4514874553685, "o", "u"] +[47.4814874553685, "o", "r"] +[47.5114874553685, "o", "e"] +[47.541487455368504, "o", "m"] +[47.571487455368505, "o", "a"] +[47.601487455368506, "o", "x"] +[47.63148745536851, "o", ","] +[47.66148745536851, "o", "p"] +[47.69148745536851, "o", "r"] +[47.72148745536851, "o", "e"] +[47.75148745536851, "o", "c"] +[47.78148745536851, "o", "i"] +[47.811487455368514, "o", "p"] +[47.841487455368515, "o", "i"] +[47.871487455368516, "o", "t"] +[47.90148745536852, "o", "a"] +[47.93148745536852, "o", "t"] +[47.96148745536852, "o", "i"] +[47.99148745536852, "o", "o"] +[48.02148745536852, "o", "n"] +[48.05148745536852, "o", "\""] +[48.081487455368524, "o", "\r\n"] +[48.111487455368525, "o", "\u001b[0m"] +[48.14148745536853, "o", "\r\n"] +[48.15976581573535, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.41}]"] +[48.18976581573535, "o", "\u001b[1m"] +[48.21976581573535, "o", "\u001b[36m"] +[48.24976581573535, "o", "\u001b[91m"] +[48.27976581573535, "o", "$"] +[48.309765815735354, "o", " "] +[48.339765815735355, "o", "\u001b[0m"] +[53.369765815735356, "o", "\u001b[H"] +[53.39976581573536, "o", "\u001b[J"] +[53.42976581573536, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run the query against the new version of the dataset."] +[53.45976581573536, "o", "\r\n"] +[53.48976581573536, "o", "$ # This time, use layered querying that queries fragments directly without checkout,\r\n"] +[53.51976581573536, "o", "$ # downloading them if they're not local. This is seamless to PostgREST or any other application.\r\n"] +[53.54976581573536, "o", "$"] +[53.579765815735364, "o", " "] +[53.609765815735365, "o", "s"] +[53.639765815735366, "o", "g"] +[53.66976581573537, "o", "r"] +[53.69976581573537, "o", " "] +[53.72976581573537, "o", "c"] +[53.75976581573537, "o", "h"] +[53.78976581573537, "o", "e"] +[53.81976581573537, "o", "c"] +[53.849765815735374, "o", "k"] +[53.879765815735375, "o", "o"] +[53.909765815735376, "o", "u"] +[53.93976581573538, "o", "t"] +[53.96976581573538, "o", " "] +[53.99976581573538, "o", "-"] +[54.02976581573538, "o", "-"] +[54.05976581573538, "o", "l"] +[54.08976581573538, "o", "a"] +[54.119765815735384, "o", "y"] +[54.149765815735385, "o", "e"] +[54.17976581573539, "o", "r"] +[54.20976581573539, "o", "e"] +[54.23976581573539, "o", "d"] +[54.26976581573539, "o", " "] +[54.29976581573539, "o", "d"] +[54.32976581573539, "o", "e"] +[54.35976581573539, "o", "m"] +[54.389765815735394, "o", "o"] +[54.419765815735396, "o", "/"] +[54.4497658157354, "o", "w"] +[54.4797658157354, "o", "e"] +[54.5097658157354, "o", "a"] +[54.5397658157354, "o", "t"] +[54.5697658157354, "o", "h"] +[54.5997658157354, "o", "e"] +[54.629765815735404, "o", "r"] +[54.659765815735405, "o", ":"] +[54.689765815735406, "o", "r"] +[54.71976581573541, "o", "e"] +[54.74976581573541, "o", "v"] +[54.77976581573541, "o", "i"] +[54.80976581573541, "o", "s"] +[54.83976581573541, "o", "e"] +[54.86976581573541, "o", "d"] +[54.899765815735414, "o", "_"] +[54.929765815735415, "o", "d"] +[54.959765815735416, "o", "a"] +[54.98976581573542, "o", "t"] +[55.01976581573542, "o", "a"] +[55.04976581573542, "o", "\r\n"] +[55.07976581573542, "o", "$"] +[55.10976581573542, "o", " "] +[55.13976581573542, "o", "c"] +[55.169765815735424, "o", "u"] +[55.199765815735425, "o", "r"] +[55.229765815735426, "o", "l"] +[55.25976581573543, "o", " "] +[55.28976581573543, "o", "\""] +[55.31976581573543, "o", "h"] +[55.34976581573543, "o", "t"] +[55.37976581573543, "o", "t"] +[55.40976581573543, "o", "p"] +[55.439765815735434, "o", ":"] +[55.469765815735435, "o", "/"] +[55.49976581573544, "o", "/"] +[55.52976581573544, "o", "l"] +[55.55976581573544, "o", "o"] +[55.58976581573544, "o", "c"] +[55.61976581573544, "o", "a"] +[55.64976581573544, "o", "l"] +[55.67976581573544, "o", "h"] +[55.709765815735445, "o", "o"] +[55.739765815735446, "o", "s"] +[55.76976581573545, "o", "t"] +[55.79976581573545, "o", ":"] +[55.82976581573545, "o", "8"] +[55.85976581573545, "o", "0"] +[55.88976581573545, "o", "8"] +[55.91976581573545, "o", "0"] +[55.949765815735454, "o", "/"] +[55.979765815735455, "o", "r"] +[56.009765815735456, "o", "d"] +[56.03976581573546, "o", "u"] +[56.06976581573546, "o", "?"] +[56.09976581573546, "o", "d"] +[56.12976581573546, "o", "a"] +[56.15976581573546, "o", "t"] +[56.18976581573546, "o", "e"] +[56.219765815735464, "o", "="] +[56.249765815735465, "o", "e"] +[56.279765815735466, "o", "q"] +[56.30976581573547, "o", "."] +[56.33976581573547, "o", "2"] +[56.36976581573547, "o", "0"] +[56.39976581573547, "o", "1"] +[56.42976581573547, "o", "2"] +[56.45976581573547, "o", "-"] +[56.489765815735474, "o", "1"] +[56.519765815735475, "o", "2"] +[56.549765815735476, "o", "-"] +[56.57976581573548, "o", "2"] +[56.60976581573548, "o", "6"] +[56.63976581573548, "o", "&"] +[56.66976581573548, "o", "s"] +[56.69976581573548, "o", "e"] +[56.72976581573548, "o", "l"] +[56.759765815735484, "o", "e"] +[56.789765815735485, "o", "c"] +[56.81976581573549, "o", "t"] +[56.84976581573549, "o", "="] +[56.87976581573549, "o", "d"] +[56.90976581573549, "o", "a"] +[56.93976581573549, "o", "t"] +[56.96976581573549, "o", "e"] +[56.99976581573549, "o", ","] +[57.029765815735495, "o", "t"] +[57.059765815735496, "o", "e"] +[57.0897658157355, "o", "m"] +[57.1197658157355, "o", "p"] +[57.1497658157355, "o", "e"] +[57.1797658157355, "o", "r"] +[57.2097658157355, "o", "a"] +[57.2397658157355, "o", "t"] +[57.269765815735504, "o", "u"] +[57.299765815735505, "o", "r"] +[57.329765815735506, "o", "e"] +[57.35976581573551, "o", "m"] +[57.38976581573551, "o", "i"] +[57.41976581573551, "o", "n"] +[57.44976581573551, "o", ","] +[57.47976581573551, "o", "t"] +[57.50976581573551, "o", "e"] +[57.539765815735514, "o", "m"] +[57.569765815735515, "o", "p"] +[57.599765815735516, "o", "e"] +[57.62976581573552, "o", "r"] +[57.65976581573552, "o", "a"] +[57.68976581573552, "o", "t"] +[57.71976581573552, "o", "u"] +[57.74976581573552, "o", "r"] +[57.77976581573552, "o", "e"] +[57.809765815735524, "o", "m"] +[57.839765815735525, "o", "a"] +[57.869765815735526, "o", "x"] +[57.89976581573553, "o", ","] +[57.92976581573553, "o", "p"] +[57.95976581573553, "o", "r"] +[57.98976581573553, "o", "e"] +[58.01976581573553, "o", "c"] +[58.04976581573553, "o", "i"] +[58.079765815735534, "o", "p"] +[58.109765815735535, "o", "i"] +[58.13976581573554, "o", "t"] +[58.16976581573554, "o", "a"] +[58.19976581573554, "o", "t"] +[58.22976581573554, "o", "i"] +[58.25976581573554, "o", "o"] +[58.28976581573554, "o", "n"] +[58.31976581573554, "o", "\""] +[58.349765815735545, "o", "\r\n"] +[58.379765815735546, "o", "\u001b[0m"] +[58.40976581573555, "o", "\r\n"] +[59.179982042313306, "o", "Checked out demo/weather:0b14c5515835."] +[59.1800414085395, "o", "\r\n"] +[59.557168817520825, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.692}]"] +[59.587168817520826, "o", "\u001b[1m"] +[59.61716881752083, "o", "\u001b[36m"] +[59.64716881752083, "o", "\u001b[91m"] +[59.67716881752083, "o", "$"] +[59.70716881752083, "o", " "] +[59.73716881752083, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.18/push-to-other-engine.cast b/content/casts/versioned/archive/v0.2.18/push-to-other-engine.cast new file mode 100644 index 00000000..ab5618bc --- /dev/null +++ b/content/casts/versioned/archive/v0.2.18/push-to-other-engine.cast @@ -0,0 +1,920 @@ +{"version": 2, "width": 100, "height": 28, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1637163182, "metadata": {"tss": [{"h": "The .sgconfig file is written from the point of view of the first engine.", "ts": 0.06}, {"h": "Initialize the two engines", "ts": 9.559999999999999}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 23.060000000000002}, {"h": "Push the dataset out to the other engine", "ts": 36.19587960243251}, {"h": "Check that the dataset exists on the remote engine", "ts": 44.451381511688595}, {"h": "Update the dataset on the local engine", "ts": 51.68011801719709}, {"h": "Inspect our changes", "ts": 63.25763258934086}, {"h": "Push the changes out to the remote engine", "ts": 70.99764379501414}, {"h": "Inspect the dataset on the remote engine", "ts": 78.18680669784624}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The .sgconfig file is written from the point of view of the first engine."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Here, the first engine is local and default and the second one is remote.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "c"] +[0.27, "o", "a"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "."] +[0.3900000000000001, "o", "s"] +[0.42000000000000015, "o", "g"] +[0.4500000000000002, "o", "c"] +[0.4800000000000002, "o", "o"] +[0.5100000000000002, "o", "n"] +[0.5400000000000003, "o", "f"] +[0.5700000000000003, "o", "i"] +[0.6000000000000003, "o", "g"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "\u001b[0m"] +[0.6900000000000004, "o", "\r\n"] +[0.6917638206481938, "o", "[defaults]"] +[0.6942135715484623, "o", "\r\n"] +[0.6942307376861576, "o", "SG_LOGLEVEL=INFO"] +[0.6942421817779545, "o", "\r\n"] +[0.6942517185211186, "o", "SG_ENGINE_HOST=localhost"] +[0.6942610168457035, "o", "\r\n"] +[0.6942705535888676, "o", "SG_ENGINE_PORT=5432"] +[0.6942793750762943, "o", "\r\n"] +[0.6942905807495121, "o", "SG_ENGINE_USER=sgr"] +[0.6943034553527836, "o", "\r\n"] +[0.6943144226074223, "o", "SG_ENGINE_PWD=supersecure"] +[0.6943241977691654, "o", "\r\n"] +[0.6943334960937504, "o", "\r\n"] +[0.6943439865112309, "o", "[remote: engine_2]"] +[0.6943532848358158, "o", "\r\n"] +[0.6943623447418217, "o", "SG_ENGINE_ADMIN_USER=sgr"] +[0.6943711662292484, "o", "\r\n"] +[0.6943816566467289, "o", "SG_ENGINE_ADMIN_PWD=supersecure"] +[0.694391193389893, "o", "\r\n"] +[0.6944002532958988, "o", "SG_ENGINE_POSTGRES_DB_NAME=splitgraph"] +[0.6944095516204838, "o", "\r\n"] +[0.6944186115264896, "o", "SG_ENGINE_HOST=localhost"] +[0.6944319629669193, "o", "\r\n"] +[0.6944436454772953, "o", "SG_ENGINE_PORT=5431"] +[0.6944536590576176, "o", "\r\n"] +[0.6944643878936771, "o", "SG_ENGINE_USER=sgr"] +[0.6944736862182621, "o", "\r\n"] +[0.6944844150543217, "o", "SG_ENGINE_PWD=supersecure"] +[0.6944939517974857, "o", "\r\n"] +[0.6945051574707035, "o", "SG_ENGINE_DB_NAME=splitgraph"] +[0.7245051574707035, "o", "\u001b[1m"] +[0.7545051574707036, "o", "\u001b[36m"] +[0.7845051574707036, "o", "\u001b[91m"] +[0.8145051574707036, "o", "$"] +[0.8445051574707036, "o", " "] +[0.8745051574707037, "o", "\u001b[0m"] +[9.53, "o", "\u001b[H"] +[9.559999999999999, "o", "\u001b[J"] +[9.589999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the two engines"] +[9.619999999999997, "o", "\r\n"] +[9.649999999999997, "o", "$"] +[9.679999999999996, "o", " "] +[9.709999999999996, "o", "s"] +[9.739999999999995, "o", "g"] +[9.769999999999994, "o", "r"] +[9.799999999999994, "o", " "] +[9.829999999999993, "o", "i"] +[9.859999999999992, "o", "n"] +[9.889999999999992, "o", "i"] +[9.919999999999991, "o", "t"] +[9.94999999999999, "o", "\r\n"] +[9.97999999999999, "o", "$"] +[10.00999999999999, "o", " "] +[10.039999999999988, "o", "S"] +[10.069999999999988, "o", "G"] +[10.099999999999987, "o", "_"] +[10.129999999999987, "o", "E"] +[10.159999999999986, "o", "N"] +[10.189999999999985, "o", "G"] +[10.219999999999985, "o", "I"] +[10.249999999999984, "o", "N"] +[10.279999999999983, "o", "E"] +[10.309999999999983, "o", "="] +[10.339999999999982, "o", "e"] +[10.369999999999981, "o", "n"] +[10.39999999999998, "o", "g"] +[10.42999999999998, "o", "i"] +[10.45999999999998, "o", "n"] +[10.489999999999979, "o", "e"] +[10.519999999999978, "o", "_"] +[10.549999999999978, "o", "2"] +[10.579999999999977, "o", " "] +[10.609999999999976, "o", "s"] +[10.639999999999976, "o", "g"] +[10.669999999999975, "o", "r"] +[10.699999999999974, "o", " "] +[10.729999999999974, "o", "i"] +[10.759999999999973, "o", "n"] +[10.789999999999973, "o", "i"] +[10.819999999999972, "o", "t"] +[10.849999999999971, "o", "\r\n"] +[10.87999999999997, "o", "\u001b[0m"] +[10.90999999999997, "o", "\r\n"] +[11.595052633285492, "o", "Initializing engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph)..."] +[11.595078382492035, "o", "\r\n"] +[11.598514232635468, "o", "Waiting for connection....\r\n"] +[12.598514232635468, "o", "Database splitgraph already exists, skipping\r\n"] +[12.59855071067807, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[12.610107097625702, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.644757423400849, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.646095428466767, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.661147508621186, "o", "Running splitgraph_meta--0.0.3--0.0.4.sql\r\n"] +[12.66615382194516, "o", "Installing Splitgraph API functions...\r\n"] +[12.698918733596772, "o", "Installing CStore management functions...\r\n"] +[12.701880130767792, "o", "Installing the audit trigger...\r\n"] +[12.715471897125214, "o", "Engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph) initialized.\r\n"] +[13.041967782974213, "o", "Initializing engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph)...\r\n"] +[13.05033317565915, "o", "Database splitgraph already exists, skipping\r\n"] +[13.050493392944306, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[13.056875858306855, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[13.084922466278046, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[13.086446199417084, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[13.102154169082612, "o", "Running splitgraph_meta--0.0.3--0.0.4.sql\r\n"] +[13.109116945266694, "o", "Installing Splitgraph API functions...\r\n"] +[13.146485958099335, "o", "Installing CStore management functions...\r\n"] +[13.1498016452789, "o", "Installing the audit trigger...\r\n"] +[13.163146171569794, "o", "Engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph) initialized.\r\n"] +[13.193146171569794, "o", "\u001b[1m"] +[13.223146171569793, "o", "\u001b[36m"] +[13.253146171569792, "o", "\u001b[91m"] +[13.283146171569792, "o", "$"] +[13.313146171569791, "o", " "] +[13.34314617156979, "o", "\u001b[0m"] +[23.03, "o", "\u001b[H"] +[23.060000000000002, "o", "\u001b[J"] +[23.090000000000003, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[23.120000000000005, "o", "\r\n"] +[23.150000000000006, "o", "$"] +[23.180000000000007, "o", " "] +[23.210000000000008, "o", "s"] +[23.24000000000001, "o", "g"] +[23.27000000000001, "o", "r"] +[23.30000000000001, "o", " "] +[23.330000000000013, "o", "i"] +[23.360000000000014, "o", "n"] +[23.390000000000015, "o", "i"] +[23.420000000000016, "o", "t"] +[23.450000000000017, "o", " "] +[23.480000000000018, "o", "d"] +[23.51000000000002, "o", "e"] +[23.54000000000002, "o", "m"] +[23.57000000000002, "o", "o"] +[23.600000000000023, "o", "/"] +[23.630000000000024, "o", "w"] +[23.660000000000025, "o", "e"] +[23.690000000000026, "o", "a"] +[23.720000000000027, "o", "t"] +[23.75000000000003, "o", "h"] +[23.78000000000003, "o", "e"] +[23.81000000000003, "o", "r"] +[23.840000000000032, "o", "\r\n"] +[23.870000000000033, "o", "$"] +[23.900000000000034, "o", " "] +[23.930000000000035, "o", "s"] +[23.960000000000036, "o", "g"] +[23.990000000000038, "o", "r"] +[24.02000000000004, "o", " "] +[24.05000000000004, "o", "c"] +[24.08000000000004, "o", "s"] +[24.110000000000042, "o", "v"] +[24.140000000000043, "o", " "] +[24.170000000000044, "o", "i"] +[24.200000000000045, "o", "m"] +[24.230000000000047, "o", "p"] +[24.260000000000048, "o", "o"] +[24.29000000000005, "o", "r"] +[24.32000000000005, "o", "t"] +[24.35000000000005, "o", " "] +[24.380000000000052, "o", "-"] +[24.410000000000053, "o", "f"] +[24.440000000000055, "o", " "] +[24.470000000000056, "o", "."] +[24.500000000000057, "o", "."] +[24.530000000000058, "o", "/"] +[24.56000000000006, "o", "i"] +[24.59000000000006, "o", "m"] +[24.62000000000006, "o", "p"] +[24.650000000000063, "o", "o"] +[24.680000000000064, "o", "r"] +[24.710000000000065, "o", "t"] +[24.740000000000066, "o", "-"] +[24.770000000000067, "o", "f"] +[24.800000000000068, "o", "r"] +[24.83000000000007, "o", "o"] +[24.86000000000007, "o", "m"] +[24.89000000000007, "o", "-"] +[24.920000000000073, "o", "c"] +[24.950000000000074, "o", "s"] +[24.980000000000075, "o", "v"] +[25.010000000000076, "o", "/"] +[25.040000000000077, "o", "r"] +[25.07000000000008, "o", "d"] +[25.10000000000008, "o", "u"] +[25.13000000000008, "o", "-"] +[25.160000000000082, "o", "w"] +[25.190000000000083, "o", "e"] +[25.220000000000084, "o", "a"] +[25.250000000000085, "o", "t"] +[25.280000000000086, "o", "h"] +[25.310000000000088, "o", "e"] +[25.34000000000009, "o", "r"] +[25.37000000000009, "o", "-"] +[25.40000000000009, "o", "h"] +[25.430000000000092, "o", "i"] +[25.460000000000093, "o", "s"] +[25.490000000000094, "o", "t"] +[25.520000000000095, "o", "o"] +[25.550000000000097, "o", "r"] +[25.580000000000098, "o", "y"] +[25.6100000000001, "o", "."] +[25.6400000000001, "o", "c"] +[25.6700000000001, "o", "s"] +[25.700000000000102, "o", "v"] +[25.730000000000103, "o", " "] +[25.760000000000105, "o", "\\"] +[25.790000000000106, "o", "\r\n "] +[25.820000000000107, "o", "-"] +[25.850000000000108, "o", "k"] +[25.88000000000011, "o", " "] +[25.91000000000011, "o", "d"] +[25.94000000000011, "o", "a"] +[25.970000000000113, "o", "t"] +[26.000000000000114, "o", "e"] +[26.030000000000115, "o", " "] +[26.060000000000116, "o", "\\"] +[26.090000000000117, "o", "\r\n "] +[26.12000000000012, "o", "-"] +[26.15000000000012, "o", "t"] +[26.18000000000012, "o", " "] +[26.21000000000012, "o", "d"] +[26.240000000000123, "o", "a"] +[26.270000000000124, "o", "t"] +[26.300000000000125, "o", "e"] +[26.330000000000126, "o", " "] +[26.360000000000127, "o", "t"] +[26.39000000000013, "o", "i"] +[26.42000000000013, "o", "m"] +[26.45000000000013, "o", "e"] +[26.480000000000132, "o", "s"] +[26.510000000000133, "o", "t"] +[26.540000000000134, "o", "a"] +[26.570000000000135, "o", "m"] +[26.600000000000136, "o", "p"] +[26.630000000000138, "o", " "] +[26.66000000000014, "o", "\\"] +[26.69000000000014, "o", "\r\n "] +[26.72000000000014, "o", "-"] +[26.750000000000142, "o", "-"] +[26.780000000000143, "o", "s"] +[26.810000000000144, "o", "e"] +[26.840000000000146, "o", "p"] +[26.870000000000147, "o", "a"] +[26.900000000000148, "o", "r"] +[26.93000000000015, "o", "a"] +[26.96000000000015, "o", "t"] +[26.99000000000015, "o", "o"] +[27.020000000000152, "o", "r"] +[27.050000000000153, "o", " "] +[27.080000000000155, "o", "\""] +[27.110000000000156, "o", ";"] +[27.140000000000157, "o", "\""] +[27.170000000000158, "o", " "] +[27.20000000000016, "o", "\\"] +[27.23000000000016, "o", "\r\n "] +[27.26000000000016, "o", "d"] +[27.290000000000163, "o", "e"] +[27.320000000000164, "o", "m"] +[27.350000000000165, "o", "o"] +[27.380000000000166, "o", "/"] +[27.410000000000167, "o", "w"] +[27.44000000000017, "o", "e"] +[27.47000000000017, "o", "a"] +[27.50000000000017, "o", "t"] +[27.53000000000017, "o", "h"] +[27.560000000000173, "o", "e"] +[27.590000000000174, "o", "r"] +[27.620000000000175, "o", " "] +[27.650000000000176, "o", "r"] +[27.680000000000177, "o", "d"] +[27.71000000000018, "o", "u"] +[27.74000000000018, "o", "\r\n"] +[27.77000000000018, "o", "$"] +[27.800000000000182, "o", " "] +[27.830000000000183, "o", "s"] +[27.860000000000184, "o", "g"] +[27.890000000000185, "o", "r"] +[27.920000000000186, "o", " "] +[27.950000000000188, "o", "c"] +[27.98000000000019, "o", "o"] +[28.01000000000019, "o", "m"] +[28.04000000000019, "o", "m"] +[28.070000000000192, "o", "i"] +[28.100000000000193, "o", "t"] +[28.130000000000194, "o", " "] +[28.160000000000196, "o", "d"] +[28.190000000000197, "o", "e"] +[28.220000000000198, "o", "m"] +[28.2500000000002, "o", "o"] +[28.2800000000002, "o", "/"] +[28.3100000000002, "o", "w"] +[28.340000000000202, "o", "e"] +[28.370000000000203, "o", "a"] +[28.400000000000205, "o", "t"] +[28.430000000000206, "o", "h"] +[28.460000000000207, "o", "e"] +[28.490000000000208, "o", "r"] +[28.52000000000021, "o", "\r\n"] +[28.55000000000021, "o", "$"] +[28.58000000000021, "o", " "] +[28.610000000000213, "o", "s"] +[28.640000000000214, "o", "g"] +[28.670000000000215, "o", "r"] +[28.700000000000216, "o", " "] +[28.730000000000217, "o", "t"] +[28.76000000000022, "o", "a"] +[28.79000000000022, "o", "g"] +[28.82000000000022, "o", " "] +[28.85000000000022, "o", "d"] +[28.880000000000223, "o", "e"] +[28.910000000000224, "o", "m"] +[28.940000000000225, "o", "o"] +[28.970000000000226, "o", "/"] +[29.000000000000227, "o", "w"] +[29.03000000000023, "o", "e"] +[29.06000000000023, "o", "a"] +[29.09000000000023, "o", "t"] +[29.120000000000232, "o", "h"] +[29.150000000000233, "o", "e"] +[29.180000000000234, "o", "r"] +[29.210000000000235, "o", " "] +[29.240000000000236, "o", "i"] +[29.270000000000238, "o", "n"] +[29.30000000000024, "o", "i"] +[29.33000000000024, "o", "t"] +[29.36000000000024, "o", "i"] +[29.390000000000242, "o", "a"] +[29.420000000000243, "o", "l"] +[29.450000000000244, "o", "_"] +[29.480000000000246, "o", "d"] +[29.510000000000247, "o", "a"] +[29.540000000000248, "o", "t"] +[29.57000000000025, "o", "a"] +[29.60000000000025, "o", "\r\n"] +[29.63000000000025, "o", "\u001b[0m"] +[29.660000000000252, "o", "\r\n"] +[30.03764644622828, "o", "Initialized empty repository demo/weather\r\n"] +[30.392615470886483, "o", "Committing demo/weather...\r\n"] +[30.41417447090174, "o", "Processing table rdu\r\n"] +[30.607110652923836, "o", "Committed demo/weather as 89f5a798d453.\r\n"] +[30.955879602432503, "o", "Tagged demo/weather:89f5a798d453ff01d0301c9cd5f1d8663f5d64f982fe5a7ca0a18fc4a12f94b5 with initial_data.\r\n"] +[30.985879602432504, "o", "\u001b[1m"] +[31.015879602432506, "o", "\u001b[36m"] +[31.045879602432507, "o", "\u001b[91m"] +[31.075879602432508, "o", "$"] +[31.10587960243251, "o", " "] +[31.13587960243251, "o", "\u001b[0m"] +[36.16587960243251, "o", "\u001b[H"] +[36.19587960243251, "o", "\u001b[J"] +[36.225879602432514, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset out to the other engine"] +[36.255879602432515, "o", "\r\n"] +[36.285879602432516, "o", "$ # Since by default Splitgraph is configured to use S3 for uploading, we need\r\n"] +[36.31587960243252, "o", "$ # to override the upload handler and upload data to the actual database.\r\n"] +[36.34587960243252, "o", "$"] +[36.37587960243252, "o", " "] +[36.40587960243252, "o", "s"] +[36.43587960243252, "o", "g"] +[36.46587960243252, "o", "r"] +[36.495879602432524, "o", " "] +[36.525879602432525, "o", "p"] +[36.555879602432526, "o", "u"] +[36.58587960243253, "o", "s"] +[36.61587960243253, "o", "h"] +[36.64587960243253, "o", " "] +[36.67587960243253, "o", "d"] +[36.70587960243253, "o", "e"] +[36.73587960243253, "o", "m"] +[36.765879602432534, "o", "o"] +[36.795879602432535, "o", "/"] +[36.825879602432536, "o", "w"] +[36.85587960243254, "o", "e"] +[36.88587960243254, "o", "a"] +[36.91587960243254, "o", "t"] +[36.94587960243254, "o", "h"] +[36.97587960243254, "o", "e"] +[37.00587960243254, "o", "r"] +[37.035879602432544, "o", " "] +[37.065879602432545, "o", "-"] +[37.09587960243255, "o", "-"] +[37.12587960243255, "o", "r"] +[37.15587960243255, "o", "e"] +[37.18587960243255, "o", "m"] +[37.21587960243255, "o", "o"] +[37.24587960243255, "o", "t"] +[37.27587960243255, "o", "e"] +[37.305879602432555, "o", " "] +[37.335879602432556, "o", "e"] +[37.36587960243256, "o", "n"] +[37.39587960243256, "o", "g"] +[37.42587960243256, "o", "i"] +[37.45587960243256, "o", "n"] +[37.48587960243256, "o", "e"] +[37.51587960243256, "o", "_"] +[37.545879602432564, "o", "2"] +[37.575879602432565, "o", " "] +[37.605879602432566, "o", "d"] +[37.63587960243257, "o", "e"] +[37.66587960243257, "o", "m"] +[37.69587960243257, "o", "o"] +[37.72587960243257, "o", "/"] +[37.75587960243257, "o", "w"] +[37.78587960243257, "o", "e"] +[37.815879602432574, "o", "a"] +[37.845879602432575, "o", "t"] +[37.875879602432576, "o", "h"] +[37.90587960243258, "o", "e"] +[37.93587960243258, "o", "r"] +[37.96587960243258, "o", " "] +[37.99587960243258, "o", "-"] +[38.02587960243258, "o", "-"] +[38.05587960243258, "o", "u"] +[38.085879602432584, "o", "p"] +[38.115879602432585, "o", "l"] +[38.145879602432586, "o", "o"] +[38.17587960243259, "o", "a"] +[38.20587960243259, "o", "d"] +[38.23587960243259, "o", "-"] +[38.26587960243259, "o", "h"] +[38.29587960243259, "o", "a"] +[38.32587960243259, "o", "n"] +[38.355879602432594, "o", "d"] +[38.385879602432595, "o", "l"] +[38.4158796024326, "o", "e"] +[38.4458796024326, "o", "r"] +[38.4758796024326, "o", " "] +[38.5058796024326, "o", "D"] +[38.5358796024326, "o", "B"] +[38.5658796024326, "o", "\r\n"] +[38.5958796024326, "o", "\u001b[0m"] +[38.625879602432605, "o", "\r\n"] +[38.95587475776708, "o", "Pushing demo/weather to demo/weather on remote engine_2\r\n"] +[38.95588787078893, "o", "Gathering remote metadata...\r\n"] +[39.01928647041356, "o", "Uploading 1 object, total size 113.04 KiB\r\n"] +[39.02411849975621, "o", "\r 0%| | 0/1 [00:00 862c4635fbcd\r\n\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[24.92953654289258, "o", "Executing SQL...\r\n"] +[25.111672840118533, "o", "Committing demo/summary...\r\n"] +[25.134069404602176, "o", "Processing table monthly_summary\r\n"] +[25.287520370483524, "o", " ---> 7123a6a6df3a\r\n"] +[25.291291675567752, "o", "Successfully built demo/summary:7123a6a6df3a.\r\n"] +[25.67093606948865, "o", "Tagged demo/summary:7123a6a6df3a9f6844824131a94a5179b8c272ab9d5d7a5d1c0fc08edfead785 with based_on_initial.\r\n"] +[25.70093606948865, "o", "\u001b[1m"] +[25.730936069488653, "o", "\u001b[36m"] +[25.760936069488654, "o", "\u001b[91m"] +[25.790936069488655, "o", "$"] +[25.820936069488656, "o", " "] +[25.850936069488657, "o", "\u001b[0m"] +[30.88093606948866, "o", "\u001b[H"] +[30.91093606948866, "o", "\u001b[J"] +[30.94093606948866, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Much like with Docker, the build result is cached, so running build again checks out the existing image."] +[30.970936069488662, "o", "\r\n"] +[31.000936069488663, "o", "$"] +[31.030936069488664, "o", " "] +[31.060936069488665, "o", "s"] +[31.090936069488667, "o", "g"] +[31.120936069488668, "o", "r"] +[31.15093606948867, "o", " "] +[31.18093606948867, "o", "b"] +[31.21093606948867, "o", "u"] +[31.240936069488672, "o", "i"] +[31.270936069488673, "o", "l"] +[31.300936069488674, "o", "d"] +[31.330936069488676, "o", " "] +[31.360936069488677, "o", "r"] +[31.390936069488678, "o", "d"] +[31.42093606948868, "o", "u"] +[31.45093606948868, "o", "-"] +[31.48093606948868, "o", "w"] +[31.510936069488682, "o", "e"] +[31.540936069488684, "o", "a"] +[31.570936069488685, "o", "t"] +[31.600936069488686, "o", "h"] +[31.630936069488687, "o", "e"] +[31.660936069488688, "o", "r"] +[31.69093606948869, "o", "-"] +[31.72093606948869, "o", "s"] +[31.75093606948869, "o", "u"] +[31.780936069488693, "o", "m"] +[31.810936069488694, "o", "m"] +[31.840936069488695, "o", "a"] +[31.870936069488696, "o", "r"] +[31.900936069488697, "o", "y"] +[31.9309360694887, "o", "."] +[31.9609360694887, "o", "s"] +[31.9909360694887, "o", "p"] +[32.0209360694887, "o", "l"] +[32.0509360694887, "o", "i"] +[32.0809360694887, "o", "t"] +[32.1109360694887, "o", "f"] +[32.1409360694887, "o", "i"] +[32.170936069488704, "o", "l"] +[32.200936069488705, "o", "e"] +[32.230936069488706, "o", " "] +[32.26093606948871, "o", "-"] +[32.29093606948871, "o", "o"] +[32.32093606948871, "o", " "] +[32.35093606948871, "o", "d"] +[32.38093606948871, "o", "e"] +[32.41093606948871, "o", "m"] +[32.440936069488714, "o", "o"] +[32.470936069488715, "o", "/"] +[32.500936069488716, "o", "s"] +[32.53093606948872, "o", "u"] +[32.56093606948872, "o", "m"] +[32.59093606948872, "o", "m"] +[32.62093606948872, "o", "a"] +[32.65093606948872, "o", "r"] +[32.68093606948872, "o", "y"] +[32.710936069488724, "o", "\r\n"] +[32.740936069488725, "o", "\u001b[0m"] +[32.77093606948873, "o", "\r\n"] +[33.162591276169024, "o", "Executing Splitfile rdu-weather-summary.splitfile with arguments {}\r\n"] +[33.162986812591754, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather IMPORT rdu AS source_data\u001b[0m\r\n"] +[33.25641661644002, "o", "Resolving repository demo/weather\r\n"] +[33.38929468154927, "o", " ---> Using cache\r\n"] +[33.38931447029134, "o", " ---> 862c4635fbcd\r\n\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[33.656084356308185, "o", " ---> Using cache\r\n"] +[33.656100091934405, "o", " ---> 7123a6a6df3a\r\n"] +[33.65969162940999, "o", "Successfully built demo/summary:7123a6a6df3a.\r\n"] +[33.68969162940999, "o", "\u001b[1m"] +[33.71969162940999, "o", "\u001b[36m"] +[33.749691629409995, "o", "\u001b[91m"] +[33.779691629409996, "o", "$"] +[33.80969162941, "o", " "] +[33.83969162941, "o", "\u001b[0m"] +[38.86969162941, "o", "\u001b[H"] +[38.89969162941, "o", "\u001b[J"] +[38.92969162941, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the new dataset"] +[38.95969162941, "o", "\r\n"] +[38.989691629410004, "o", "$"] +[39.019691629410005, "o", " "] +[39.049691629410006, "o", "s"] +[39.07969162941001, "o", "g"] +[39.10969162941001, "o", "r"] +[39.13969162941001, "o", " "] +[39.16969162941001, "o", "s"] +[39.19969162941001, "o", "h"] +[39.22969162941001, "o", "o"] +[39.259691629410014, "o", "w"] +[39.289691629410015, "o", " "] +[39.319691629410016, "o", "d"] +[39.34969162941002, "o", "e"] +[39.37969162941002, "o", "m"] +[39.40969162941002, "o", "o"] +[39.43969162941002, "o", "/"] +[39.46969162941002, "o", "s"] +[39.49969162941002, "o", "u"] +[39.529691629410024, "o", "m"] +[39.559691629410025, "o", "m"] +[39.58969162941003, "o", "a"] +[39.61969162941003, "o", "r"] +[39.64969162941003, "o", "y"] +[39.67969162941003, "o", ":"] +[39.70969162941003, "o", "b"] +[39.73969162941003, "o", "a"] +[39.76969162941003, "o", "s"] +[39.799691629410034, "o", "e"] +[39.829691629410036, "o", "d"] +[39.85969162941004, "o", "_"] +[39.88969162941004, "o", "o"] +[39.91969162941004, "o", "n"] +[39.94969162941004, "o", "_"] +[39.97969162941004, "o", "i"] +[40.00969162941004, "o", "n"] +[40.039691629410044, "o", "i"] +[40.069691629410045, "o", "t"] +[40.099691629410046, "o", "i"] +[40.12969162941005, "o", "a"] +[40.15969162941005, "o", "l"] +[40.18969162941005, "o", "\r\n"] +[40.21969162941005, "o", "$"] +[40.24969162941005, "o", " "] +[40.27969162941005, "o", "s"] +[40.309691629410054, "o", "g"] +[40.339691629410055, "o", "r"] +[40.369691629410056, "o", " "] +[40.39969162941006, "o", "t"] +[40.42969162941006, "o", "a"] +[40.45969162941006, "o", "b"] +[40.48969162941006, "o", "l"] +[40.51969162941006, "o", "e"] +[40.54969162941006, "o", " "] +[40.579691629410064, "o", "d"] +[40.609691629410065, "o", "e"] +[40.639691629410066, "o", "m"] +[40.66969162941007, "o", "o"] +[40.69969162941007, "o", "/"] +[40.72969162941007, "o", "s"] +[40.75969162941007, "o", "u"] +[40.78969162941007, "o", "m"] +[40.81969162941007, "o", "m"] +[40.849691629410074, "o", "a"] +[40.879691629410075, "o", "r"] +[40.90969162941008, "o", "y"] +[40.93969162941008, "o", ":"] +[40.96969162941008, "o", "b"] +[40.99969162941008, "o", "a"] +[41.02969162941008, "o", "s"] +[41.05969162941008, "o", "e"] +[41.08969162941008, "o", "d"] +[41.119691629410084, "o", "_"] +[41.149691629410086, "o", "o"] +[41.17969162941009, "o", "n"] +[41.20969162941009, "o", "_"] +[41.23969162941009, "o", "i"] +[41.26969162941009, "o", "n"] +[41.29969162941009, "o", "i"] +[41.32969162941009, "o", "t"] +[41.359691629410094, "o", "i"] +[41.389691629410095, "o", "a"] +[41.419691629410096, "o", "l"] +[41.4496916294101, "o", " "] +[41.4796916294101, "o", "m"] +[41.5096916294101, "o", "o"] +[41.5396916294101, "o", "n"] +[41.5696916294101, "o", "t"] +[41.5996916294101, "o", "h"] +[41.629691629410104, "o", "l"] +[41.659691629410105, "o", "y"] +[41.689691629410106, "o", "_"] +[41.71969162941011, "o", "s"] +[41.74969162941011, "o", "u"] +[41.77969162941011, "o", "m"] +[41.80969162941011, "o", "m"] +[41.83969162941011, "o", "a"] +[41.86969162941011, "o", "r"] +[41.899691629410114, "o", "y"] +[41.929691629410115, "o", "\r\n"] +[41.959691629410116, "o", "$"] +[41.98969162941012, "o", " "] +[42.01969162941012, "o", "s"] +[42.04969162941012, "o", "g"] +[42.07969162941012, "o", "r"] +[42.10969162941012, "o", " "] +[42.13969162941012, "o", "s"] +[42.169691629410124, "o", "q"] +[42.199691629410125, "o", "l"] +[42.22969162941013, "o", " "] +[42.25969162941013, "o", "-"] +[42.28969162941013, "o", "s"] +[42.31969162941013, "o", " "] +[42.34969162941013, "o", "d"] +[42.37969162941013, "o", "e"] +[42.40969162941013, "o", "m"] +[42.439691629410135, "o", "o"] +[42.469691629410136, "o", "/"] +[42.49969162941014, "o", "s"] +[42.52969162941014, "o", "u"] +[42.55969162941014, "o", "m"] +[42.58969162941014, "o", "m"] +[42.61969162941014, "o", "a"] +[42.64969162941014, "o", "r"] +[42.679691629410144, "o", "y"] +[42.709691629410145, "o", " "] +[42.739691629410146, "o", "\""] +[42.76969162941015, "o", "S"] +[42.79969162941015, "o", "E"] +[42.82969162941015, "o", "L"] +[42.85969162941015, "o", "E"] +[42.88969162941015, "o", "C"] +[42.91969162941015, "o", "T"] +[42.949691629410154, "o", " "] +[42.979691629410155, "o", "*"] +[43.009691629410156, "o", " "] +[43.03969162941016, "o", "F"] +[43.06969162941016, "o", "R"] +[43.09969162941016, "o", "O"] +[43.12969162941016, "o", "M"] +[43.15969162941016, "o", " "] +[43.18969162941016, "o", "m"] +[43.219691629410164, "o", "o"] +[43.249691629410165, "o", "n"] +[43.279691629410166, "o", "t"] +[43.30969162941017, "o", "h"] +[43.33969162941017, "o", "l"] +[43.36969162941017, "o", "y"] +[43.39969162941017, "o", "_"] +[43.42969162941017, "o", "s"] +[43.45969162941017, "o", "u"] +[43.489691629410174, "o", "m"] +[43.519691629410175, "o", "m"] +[43.54969162941018, "o", "a"] +[43.57969162941018, "o", "r"] +[43.60969162941018, "o", "y"] +[43.63969162941018, "o", " "] +[43.66969162941018, "o", "O"] +[43.69969162941018, "o", "R"] +[43.72969162941018, "o", "D"] +[43.759691629410185, "o", "E"] +[43.789691629410186, "o", "R"] +[43.81969162941019, "o", " "] +[43.84969162941019, "o", "B"] +[43.87969162941019, "o", "Y"] +[43.90969162941019, "o", " "] +[43.93969162941019, "o", "m"] +[43.96969162941019, "o", "o"] +[43.999691629410194, "o", "n"] +[44.029691629410195, "o", "t"] +[44.059691629410196, "o", "h"] +[44.0896916294102, "o", " "] +[44.1196916294102, "o", "D"] +[44.1496916294102, "o", "E"] +[44.1796916294102, "o", "S"] +[44.2096916294102, "o", "C"] +[44.2396916294102, "o", " "] +[44.269691629410204, "o", "L"] +[44.299691629410205, "o", "I"] +[44.329691629410206, "o", "M"] +[44.35969162941021, "o", "I"] +[44.38969162941021, "o", "T"] +[44.41969162941021, "o", " "] +[44.44969162941021, "o", "5"] +[44.47969162941021, "o", "\""] +[44.50969162941021, "o", "\r\n"] +[44.539691629410214, "o", "\u001b[0m"] +[44.569691629410215, "o", "\r\n"] +[44.97579428672833, "o", "Image demo/summary:7123a6a6df3a9f6844824131a94a5179b8c272ab9d5d7a5d1c0fc08edfead785\r\nCREATE TABLE monthly_summary AS ( SELECT to_char(date, 'YYYYMM') AS month, AVG(precipitation) AS average_precipitation, AVG(snowfall) AS average_snowfall FROM source_data GROUP BY month ORDER BY month ASC)\r\n"] +[44.975816698074766, "o", "Created at 2021-11-17T15:34:20.678652\r\n"] +[44.9773473453526, "o", "Size: 115.21 KiB\r\n"] +[44.97736093521161, "o", "Parent: 862c4635fbcd112fc92bd7ec4bff001b29b19329b1d2c0bf62e8b97873b3b245\r\n\r\nTables:\r\n"] +[44.978454561233946, "o", " monthly_summary\r\n"] +[44.97873136520428, "o", " source_data\r\n"] +[45.41290661811871, "o", "Table demo/summary:7123a6a6df3a9f6844824131a94a5179b8c272ab9d5d7a5d1c0fc08edfead785/monthly_summary\r\n\r\n"] +[45.41438958168072, "o", "Size: 2.17 KiB\r\n"] +[45.41532203674359, "o", "Rows: 153\r\n"] +[45.41549202919049, "o", "Columns: \r\n month (text)\r\n average_precipitation (numeric)\r\n average_snowfall (numeric)\r\n\r\nObjects: \r\n o5e29c3cf82603335df66690a448ca1f604f0002d5a3496b18c982a5ea835f3\r\n"] +[45.81518241882367, "o", "201909 0.171667 0\r\n201908 0.139032 0\r\n201907 0.117097 0\r\n201906 0.12 0\r\n201905 0.103548 0\r\n"] +[45.84518241882367, "o", "\u001b[1m"] +[45.87518241882367, "o", "\u001b[36m"] +[45.90518241882367, "o", "\u001b[91m"] +[45.93518241882367, "o", "$"] +[45.96518241882367, "o", " "] +[45.995182418823674, "o", "\u001b[0m"] +[53.86969162941, "o", "\u001b[H"] +[53.89969162941, "o", "\u001b[J"] +[53.92969162941, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image's provenance (generated from its metadata)"] +[53.95969162941, "o", "\r\n"] +[53.989691629410004, "o", "$"] +[54.019691629410005, "o", " "] +[54.049691629410006, "o", "s"] +[54.07969162941001, "o", "g"] +[54.10969162941001, "o", "r"] +[54.13969162941001, "o", " "] +[54.16969162941001, "o", "p"] +[54.19969162941001, "o", "r"] +[54.22969162941001, "o", "o"] +[54.259691629410014, "o", "v"] +[54.289691629410015, "o", "e"] +[54.319691629410016, "o", "n"] +[54.34969162941002, "o", "a"] +[54.37969162941002, "o", "n"] +[54.40969162941002, "o", "c"] +[54.43969162941002, "o", "e"] +[54.46969162941002, "o", " "] +[54.49969162941002, "o", "d"] +[54.529691629410024, "o", "e"] +[54.559691629410025, "o", "m"] +[54.58969162941003, "o", "o"] +[54.61969162941003, "o", "/"] +[54.64969162941003, "o", "s"] +[54.67969162941003, "o", "u"] +[54.70969162941003, "o", "m"] +[54.73969162941003, "o", "m"] +[54.76969162941003, "o", "a"] +[54.799691629410034, "o", "r"] +[54.829691629410036, "o", "y"] +[54.85969162941004, "o", "\r\n"] +[54.88969162941004, "o", "$"] +[54.91969162941004, "o", " "] +[54.94969162941004, "o", "s"] +[54.97969162941004, "o", "g"] +[55.00969162941004, "o", "r"] +[55.039691629410044, "o", " "] +[55.069691629410045, "o", "p"] +[55.099691629410046, "o", "r"] +[55.12969162941005, "o", "o"] +[55.15969162941005, "o", "v"] +[55.18969162941005, "o", "e"] +[55.21969162941005, "o", "n"] +[55.24969162941005, "o", "a"] +[55.27969162941005, "o", "n"] +[55.309691629410054, "o", "c"] +[55.339691629410055, "o", "e"] +[55.369691629410056, "o", " "] +[55.39969162941006, "o", "-"] +[55.42969162941006, "o", "-"] +[55.45969162941006, "o", "f"] +[55.48969162941006, "o", "u"] +[55.51969162941006, "o", "l"] +[55.54969162941006, "o", "l"] +[55.579691629410064, "o", " "] +[55.609691629410065, "o", "d"] +[55.639691629410066, "o", "e"] +[55.66969162941007, "o", "m"] +[55.69969162941007, "o", "o"] +[55.72969162941007, "o", "/"] +[55.75969162941007, "o", "s"] +[55.78969162941007, "o", "u"] +[55.81969162941007, "o", "m"] +[55.849691629410074, "o", "m"] +[55.879691629410075, "o", "a"] +[55.90969162941008, "o", "r"] +[55.93969162941008, "o", "y"] +[55.96969162941008, "o", "\r\n"] +[55.99969162941008, "o", "\u001b[0m"] +[56.02969162941008, "o", "\r\n"] +[56.390456371307664, "o", "demo/summary:7123a6a6df3a9f6844824131a94a5179b8c272ab9d5d7a5d1c0fc08edfead785 depends on:\r\n"] +[56.3904742527011, "o", "demo/weather:94dd2b55f8d991238349e51e027f262c07e1babb5b8238d9ae59dce5b6d09ffb\r\n"] +[56.751397066116624, "o", "# Splitfile commands used to recreate demo/summary:7123a6a6df3a9f6844824131a94a5179b8c272ab9d5d7a5d1c0fc08edfead785\r\n"] +[56.75143282890349, "o", "FROM demo/weather:94dd2b55f8d991238349e51e027f262c07e1babb5b8238d9ae59dce5b6d09ffb IMPORT rdu AS source_data\r\nSQL {CREATE TABLE monthly_summary\r\n AS SELECT to_char(date, 'YYYYMM') AS month\r\n , avg(precipitation) AS average_precipitation\r\n , avg(snowfall) AS average_snowfall\r\n FROM source_data\r\n GROUP BY month\r\n ORDER BY month ASC}\r\n"] +[56.78143282890349, "o", "\u001b[1m"] +[56.81143282890349, "o", "\u001b[36m"] +[56.84143282890349, "o", "\u001b[91m"] +[56.871432828903494, "o", "$"] +[56.901432828903495, "o", " "] +[56.931432828903496, "o", "\u001b[0m"] +[61.9614328289035, "o", "\u001b[H"] +[61.9914328289035, "o", "\u001b[J"] +[62.0214328289035, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We can also see that a new image has been derived from demo/weather"] +[62.0514328289035, "o", "\r\n"] +[62.0814328289035, "o", "$"] +[62.1114328289035, "o", " "] +[62.141432828903504, "o", "s"] +[62.171432828903505, "o", "g"] +[62.201432828903506, "o", "r"] +[62.23143282890351, "o", " "] +[62.26143282890351, "o", "d"] +[62.29143282890351, "o", "e"] +[62.32143282890351, "o", "p"] +[62.35143282890351, "o", "e"] +[62.38143282890351, "o", "n"] +[62.411432828903514, "o", "d"] +[62.441432828903515, "o", "e"] +[62.47143282890352, "o", "n"] +[62.50143282890352, "o", "t"] +[62.53143282890352, "o", "s"] +[62.56143282890352, "o", " "] +[62.59143282890352, "o", "d"] +[62.62143282890352, "o", "e"] +[62.65143282890352, "o", "m"] +[62.681432828903525, "o", "o"] +[62.711432828903526, "o", "/"] +[62.74143282890353, "o", "w"] +[62.77143282890353, "o", "e"] +[62.80143282890353, "o", "a"] +[62.83143282890353, "o", "t"] +[62.86143282890353, "o", "h"] +[62.89143282890353, "o", "e"] +[62.921432828903534, "o", "r"] +[62.951432828903535, "o", "\r\n"] +[62.981432828903536, "o", "\u001b[0m"] +[63.01143282890354, "o", "\r\n"] +[63.385061445236545, "o", "demo/weather:94dd2b55f8d991238349e51e027f262c07e1babb5b8238d9ae59dce5b6d09ffb is depended on by:\r\n"] +[63.38507813453708, "o", "demo/summary:7123a6a6df3a9f6844824131a94a5179b8c272ab9d5d7a5d1c0fc08edfead785\r\n"] +[63.41507813453708, "o", "\u001b[1m"] +[63.445078134537084, "o", "\u001b[36m"] +[63.475078134537085, "o", "\u001b[91m"] +[63.50507813453709, "o", "$"] +[63.53507813453709, "o", " "] +[63.56507813453709, "o", "\u001b[0m"] +[68.59507813453709, "o", "\u001b[H"] +[68.62507813453709, "o", "\u001b[J"] +[68.65507813453709, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now pretend there's been a revision to the source historical weather data"] +[68.6850781345371, "o", "\r\n"] +[68.7150781345371, "o", "$"] +[68.7450781345371, "o", " "] +[68.7750781345371, "o", "s"] +[68.8050781345371, "o", "g"] +[68.8350781345371, "o", "r"] +[68.8650781345371, "o", " "] +[68.8950781345371, "o", "s"] +[68.9250781345371, "o", "q"] +[68.9550781345371, "o", "l"] +[68.9850781345371, "o", " "] +[69.0150781345371, "o", "-"] +[69.0450781345371, "o", "s"] +[69.07507813453711, "o", " "] +[69.10507813453711, "o", "d"] +[69.13507813453711, "o", "e"] +[69.16507813453711, "o", "m"] +[69.19507813453711, "o", "o"] +[69.22507813453711, "o", "/"] +[69.25507813453711, "o", "w"] +[69.28507813453712, "o", "e"] +[69.31507813453712, "o", "a"] +[69.34507813453712, "o", "t"] +[69.37507813453712, "o", "h"] +[69.40507813453712, "o", "e"] +[69.43507813453712, "o", "r"] +[69.46507813453712, "o", " "] +[69.49507813453712, "o", "\""] +[69.52507813453713, "o", "U"] +[69.55507813453713, "o", "P"] +[69.58507813453713, "o", "D"] +[69.61507813453713, "o", "A"] +[69.64507813453713, "o", "T"] +[69.67507813453713, "o", "E"] +[69.70507813453713, "o", " "] +[69.73507813453713, "o", "r"] +[69.76507813453713, "o", "d"] +[69.79507813453714, "o", "u"] +[69.82507813453714, "o", " "] +[69.85507813453714, "o", "S"] +[69.88507813453714, "o", "E"] +[69.91507813453714, "o", "T"] +[69.94507813453714, "o", " "] +[69.97507813453714, "o", "p"] +[70.00507813453714, "o", "r"] +[70.03507813453714, "o", "e"] +[70.06507813453715, "o", "c"] +[70.09507813453715, "o", "i"] +[70.12507813453715, "o", "p"] +[70.15507813453715, "o", "i"] +[70.18507813453715, "o", "t"] +[70.21507813453715, "o", "a"] +[70.24507813453715, "o", "t"] +[70.27507813453715, "o", "i"] +[70.30507813453715, "o", "o"] +[70.33507813453716, "o", "n"] +[70.36507813453716, "o", " "] +[70.39507813453716, "o", "="] +[70.42507813453716, "o", " "] +[70.45507813453716, "o", "p"] +[70.48507813453716, "o", "r"] +[70.51507813453716, "o", "e"] +[70.54507813453716, "o", "c"] +[70.57507813453716, "o", "i"] +[70.60507813453717, "o", "p"] +[70.63507813453717, "o", "i"] +[70.66507813453717, "o", "t"] +[70.69507813453717, "o", "a"] +[70.72507813453717, "o", "t"] +[70.75507813453717, "o", "i"] +[70.78507813453717, "o", "o"] +[70.81507813453717, "o", "n"] +[70.84507813453718, "o", " "] +[70.87507813453718, "o", "*"] +[70.90507813453718, "o", " "] +[70.93507813453718, "o", "1"] +[70.96507813453718, "o", "."] +[70.99507813453718, "o", "2"] +[71.02507813453718, "o", " "] +[71.05507813453718, "o", "W"] +[71.08507813453718, "o", "H"] +[71.11507813453719, "o", "E"] +[71.14507813453719, "o", "R"] +[71.17507813453719, "o", "E"] +[71.20507813453719, "o", " "] +[71.23507813453719, "o", "E"] +[71.26507813453719, "o", "X"] +[71.29507813453719, "o", "T"] +[71.3250781345372, "o", "R"] +[71.3550781345372, "o", "A"] +[71.3850781345372, "o", "C"] +[71.4150781345372, "o", "T"] +[71.4450781345372, "o", " "] +[71.4750781345372, "o", "("] +[71.5050781345372, "o", "y"] +[71.5350781345372, "o", "e"] +[71.5650781345372, "o", "a"] +[71.5950781345372, "o", "r"] +[71.6250781345372, "o", " "] +[71.6550781345372, "o", "F"] +[71.6850781345372, "o", "R"] +[71.71507813453721, "o", "O"] +[71.74507813453721, "o", "M"] +[71.77507813453721, "o", " "] +[71.80507813453721, "o", "d"] +[71.83507813453721, "o", "a"] +[71.86507813453721, "o", "t"] +[71.89507813453721, "o", "e"] +[71.92507813453722, "o", ")"] +[71.95507813453722, "o", " "] +[71.98507813453722, "o", "="] +[72.01507813453722, "o", " "] +[72.04507813453722, "o", "2"] +[72.07507813453722, "o", "0"] +[72.10507813453722, "o", "1"] +[72.13507813453722, "o", "2"] +[72.16507813453723, "o", "\""] +[72.19507813453723, "o", "\r\n"] +[72.22507813453723, "o", "$"] +[72.25507813453723, "o", " "] +[72.28507813453723, "o", "s"] +[72.31507813453723, "o", "g"] +[72.34507813453723, "o", "r"] +[72.37507813453723, "o", " "] +[72.40507813453723, "o", "c"] +[72.43507813453724, "o", "o"] +[72.46507813453724, "o", "m"] +[72.49507813453724, "o", "m"] +[72.52507813453724, "o", "i"] +[72.55507813453724, "o", "t"] +[72.58507813453724, "o", " "] +[72.61507813453724, "o", "-"] +[72.64507813453724, "o", "m"] +[72.67507813453724, "o", " "] +[72.70507813453725, "o", "\""] +[72.73507813453725, "o", "R"] +[72.76507813453725, "o", "e"] +[72.79507813453725, "o", "v"] +[72.82507813453725, "o", "i"] +[72.85507813453725, "o", "s"] +[72.88507813453725, "o", "i"] +[72.91507813453725, "o", "o"] +[72.94507813453725, "o", "n"] +[72.97507813453726, "o", " "] +[73.00507813453726, "o", "t"] +[73.03507813453726, "o", "o"] +[73.06507813453726, "o", " "] +[73.09507813453726, "o", "t"] +[73.12507813453726, "o", "h"] +[73.15507813453726, "o", "e"] +[73.18507813453726, "o", " "] +[73.21507813453726, "o", "2"] +[73.24507813453727, "o", "0"] +[73.27507813453727, "o", "1"] +[73.30507813453727, "o", "2"] +[73.33507813453727, "o", " "] +[73.36507813453727, "o", "r"] +[73.39507813453727, "o", "a"] +[73.42507813453727, "o", "i"] +[73.45507813453727, "o", "n"] +[73.48507813453728, "o", "f"] +[73.51507813453728, "o", "a"] +[73.54507813453728, "o", "l"] +[73.57507813453728, "o", "l"] +[73.60507813453728, "o", " "] +[73.63507813453728, "o", "d"] +[73.66507813453728, "o", "a"] +[73.69507813453728, "o", "t"] +[73.72507813453728, "o", "a"] +[73.75507813453729, "o", "\""] +[73.78507813453729, "o", " "] +[73.81507813453729, "o", "d"] +[73.84507813453729, "o", "e"] +[73.87507813453729, "o", "m"] +[73.90507813453729, "o", "o"] +[73.93507813453729, "o", "/"] +[73.9650781345373, "o", "w"] +[73.9950781345373, "o", "e"] +[74.0250781345373, "o", "a"] +[74.0550781345373, "o", "t"] +[74.0850781345373, "o", "h"] +[74.1150781345373, "o", "e"] +[74.1450781345373, "o", "r"] +[74.1750781345373, "o", "\r\n"] +[74.2050781345373, "o", "$"] +[74.2350781345373, "o", " "] +[74.2650781345373, "o", "s"] +[74.2950781345373, "o", "g"] +[74.3250781345373, "o", "r"] +[74.35507813453731, "o", " "] +[74.38507813453731, "o", "t"] +[74.41507813453731, "o", "a"] +[74.44507813453731, "o", "g"] +[74.47507813453731, "o", " "] +[74.50507813453731, "o", "d"] +[74.53507813453732, "o", "e"] +[74.56507813453732, "o", "m"] +[74.59507813453732, "o", "o"] +[74.62507813453732, "o", "/"] +[74.65507813453732, "o", "w"] +[74.68507813453732, "o", "e"] +[74.71507813453732, "o", "a"] +[74.74507813453732, "o", "t"] +[74.77507813453732, "o", "h"] +[74.80507813453733, "o", "e"] +[74.83507813453733, "o", "r"] +[74.86507813453733, "o", " "] +[74.89507813453733, "o", "r"] +[74.92507813453733, "o", "e"] +[74.95507813453733, "o", "v"] +[74.98507813453733, "o", "i"] +[75.01507813453733, "o", "s"] +[75.04507813453733, "o", "e"] +[75.07507813453734, "o", "d"] +[75.10507813453734, "o", "_"] +[75.13507813453734, "o", "d"] +[75.16507813453734, "o", "a"] +[75.19507813453734, "o", "t"] +[75.22507813453734, "o", "a"] +[75.25507813453734, "o", "\r\n"] +[75.28507813453734, "o", "\u001b[0m"] +[75.31507813453734, "o", "\r\n"] +[75.73473774910033, "o", "Committing demo/weather...\r\n"] +[75.77396022796691, "o", "Storing and indexing table rdu\r\n"] +[75.95586955070556, "o", "Committed demo/weather as 10890d53be96."] +[75.955976362229, "o", "\r\n"] +[76.36790167808593, "o", "Tagged demo/weather:10890d53be96eaf0c7bb8788b82e62df47eb166f0b21c043cb0e577bc0775a55 with revised_data.\r\n"] +[76.39790167808593, "o", "\u001b[1m"] +[76.42790167808593, "o", "\u001b[36m"] +[76.45790167808593, "o", "\u001b[91m"] +[76.48790167808593, "o", "$"] +[76.51790167808593, "o", " "] +[76.54790167808594, "o", "\u001b[0m"] +[81.57790167808594, "o", "\u001b[H"] +[81.60790167808594, "o", "\u001b[J"] +[81.63790167808594, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Use the derivative image's provenance to rebuild it against the revised version"] +[81.66790167808594, "o", "\r\n"] +[81.69790167808594, "o", "$"] +[81.72790167808594, "o", " "] +[81.75790167808594, "o", "s"] +[81.78790167808594, "o", "g"] +[81.81790167808595, "o", "r"] +[81.84790167808595, "o", " "] +[81.87790167808595, "o", "r"] +[81.90790167808595, "o", "e"] +[81.93790167808595, "o", "b"] +[81.96790167808595, "o", "u"] +[81.99790167808595, "o", "i"] +[82.02790167808595, "o", "l"] +[82.05790167808595, "o", "d"] +[82.08790167808596, "o", " "] +[82.11790167808596, "o", "d"] +[82.14790167808596, "o", "e"] +[82.17790167808596, "o", "m"] +[82.20790167808596, "o", "o"] +[82.23790167808596, "o", "/"] +[82.26790167808596, "o", "s"] +[82.29790167808596, "o", "u"] +[82.32790167808596, "o", "m"] +[82.35790167808597, "o", "m"] +[82.38790167808597, "o", "a"] +[82.41790167808597, "o", "r"] +[82.44790167808597, "o", "y"] +[82.47790167808597, "o", " "] +[82.50790167808597, "o", "-"] +[82.53790167808597, "o", "-"] +[82.56790167808597, "o", "a"] +[82.59790167808598, "o", "g"] +[82.62790167808598, "o", "a"] +[82.65790167808598, "o", "i"] +[82.68790167808598, "o", "n"] +[82.71790167808598, "o", "s"] +[82.74790167808598, "o", "t"] +[82.77790167808598, "o", " "] +[82.80790167808598, "o", "d"] +[82.83790167808598, "o", "e"] +[82.86790167808599, "o", "m"] +[82.89790167808599, "o", "o"] +[82.92790167808599, "o", "/"] +[82.95790167808599, "o", "w"] +[82.98790167808599, "o", "e"] +[83.01790167808599, "o", "a"] +[83.04790167808599, "o", "t"] +[83.077901678086, "o", "h"] +[83.107901678086, "o", "e"] +[83.137901678086, "o", "r"] +[83.167901678086, "o", ":"] +[83.197901678086, "o", "r"] +[83.227901678086, "o", "e"] +[83.257901678086, "o", "v"] +[83.287901678086, "o", "i"] +[83.317901678086, "o", "s"] +[83.347901678086, "o", "e"] +[83.377901678086, "o", "d"] +[83.407901678086, "o", "_"] +[83.437901678086, "o", "d"] +[83.46790167808601, "o", "a"] +[83.49790167808601, "o", "t"] +[83.52790167808601, "o", "a"] +[83.55790167808601, "o", "\r\n"] +[83.58790167808601, "o", "$"] +[83.61790167808601, "o", " "] +[83.64790167808601, "o", "s"] +[83.67790167808602, "o", "g"] +[83.70790167808602, "o", "r"] +[83.73790167808602, "o", " "] +[83.76790167808602, "o", "t"] +[83.79790167808602, "o", "a"] +[83.82790167808602, "o", "g"] +[83.85790167808602, "o", " "] +[83.88790167808602, "o", "d"] +[83.91790167808603, "o", "e"] +[83.94790167808603, "o", "m"] +[83.97790167808603, "o", "o"] +[84.00790167808603, "o", "/"] +[84.03790167808603, "o", "s"] +[84.06790167808603, "o", "u"] +[84.09790167808603, "o", "m"] +[84.12790167808603, "o", "m"] +[84.15790167808603, "o", "a"] +[84.18790167808604, "o", "r"] +[84.21790167808604, "o", "y"] +[84.24790167808604, "o", " "] +[84.27790167808604, "o", "b"] +[84.30790167808604, "o", "a"] +[84.33790167808604, "o", "s"] +[84.36790167808604, "o", "e"] +[84.39790167808604, "o", "d"] +[84.42790167808604, "o", "_"] +[84.45790167808605, "o", "o"] +[84.48790167808605, "o", "n"] +[84.51790167808605, "o", "_"] +[84.54790167808605, "o", "r"] +[84.57790167808605, "o", "e"] +[84.60790167808605, "o", "v"] +[84.63790167808605, "o", "i"] +[84.66790167808605, "o", "s"] +[84.69790167808605, "o", "e"] +[84.72790167808606, "o", "d"] +[84.75790167808606, "o", "\r\n"] +[84.78790167808606, "o", "\u001b[0m"] +[84.81790167808606, "o", "\r\n"] +[85.20617587089612, "o", "Rerunning demo/summary:7123a6a6df3a9f6844824131a94a5179b8c272ab9d5d7a5d1c0fc08edfead785 against:\r\n"] +[85.20618922233655, "o", "demo/weather:revised_data\r\n"] +[85.24817687988354, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather:revised_data IMPORT rdu AS source_data\u001b[0m\r\n"] +[85.3111098480232, "o", "Resolving repository demo/weather\r\n"] +[85.31603462219311, "o", "Importing 1 table from demo/weather:10890d53be96 into demo/summary\r\n"] +[85.45949084281995, "o", " ---> ec30697ce565\r\n"] +[85.45989949226453, "o", "\u001b[1m\r\nStep 2/2 : SQL {CREATE TABLE monthly_summary AS SELECT to_char(dat...\u001b[0m\r\n"] +[85.4659040641792, "o", "Executing SQL...\r\n"] +[85.65961653709485, "o", "Committing demo/summary...\r\n"] +[85.68472606659009, "o", "Processing table monthly_summary\r\n"] +[85.77957922935559, "o", " ---> 1b7269c8fea5\r\n"] +[85.78462154388501, "o", "Successfully built demo/summary:1b7269c8fea5.\r\n"] +[86.1678596210487, "o", "Tagged demo/summary:1b7269c8fea52ac3e0d22c814a48af695d963144d2994e375709ad430ec47811 with based_on_revised.\r\n"] +[86.1978596210487, "o", "\u001b[1m"] +[86.22785962104871, "o", "\u001b[36m"] +[86.25785962104871, "o", "\u001b[91m"] +[86.28785962104871, "o", "$"] +[86.31785962104871, "o", " "] +[86.34785962104871, "o", "\u001b[0m"] +[91.37785962104871, "o", "\u001b[H"] +[91.40785962104871, "o", "\u001b[J"] +[91.43785962104872, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Compare the two resultant datasets"] +[91.46785962104872, "o", "\r\n"] +[91.49785962104872, "o", "$"] +[91.52785962104872, "o", " "] +[91.55785962104872, "o", "s"] +[91.58785962104872, "o", "g"] +[91.61785962104872, "o", "r"] +[91.64785962104872, "o", " "] +[91.67785962104873, "o", "d"] +[91.70785962104873, "o", "i"] +[91.73785962104873, "o", "f"] +[91.76785962104873, "o", "f"] +[91.79785962104873, "o", " "] +[91.82785962104873, "o", "d"] +[91.85785962104873, "o", "e"] +[91.88785962104873, "o", "m"] +[91.91785962104873, "o", "o"] +[91.94785962104874, "o", "/"] +[91.97785962104874, "o", "s"] +[92.00785962104874, "o", "u"] +[92.03785962104874, "o", "m"] +[92.06785962104874, "o", "m"] +[92.09785962104874, "o", "a"] +[92.12785962104874, "o", "r"] +[92.15785962104874, "o", "y"] +[92.18785962104874, "o", " "] +[92.21785962104875, "o", "b"] +[92.24785962104875, "o", "a"] +[92.27785962104875, "o", "s"] +[92.30785962104875, "o", "e"] +[92.33785962104875, "o", "d"] +[92.36785962104875, "o", "_"] +[92.39785962104875, "o", "o"] +[92.42785962104875, "o", "n"] +[92.45785962104875, "o", "_"] +[92.48785962104876, "o", "i"] +[92.51785962104876, "o", "n"] +[92.54785962104876, "o", "i"] +[92.57785962104876, "o", "t"] +[92.60785962104876, "o", "i"] +[92.63785962104876, "o", "a"] +[92.66785962104876, "o", "l"] +[92.69785962104876, "o", " "] +[92.72785962104876, "o", "b"] +[92.75785962104877, "o", "a"] +[92.78785962104877, "o", "s"] +[92.81785962104877, "o", "e"] +[92.84785962104877, "o", "d"] +[92.87785962104877, "o", "_"] +[92.90785962104877, "o", "o"] +[92.93785962104877, "o", "n"] +[92.96785962104877, "o", "_"] +[92.99785962104878, "o", "r"] +[93.02785962104878, "o", "e"] +[93.05785962104878, "o", "v"] +[93.08785962104878, "o", "i"] +[93.11785962104878, "o", "s"] +[93.14785962104878, "o", "e"] +[93.17785962104878, "o", "d"] +[93.20785962104878, "o", " "] +[93.23785962104878, "o", "-"] +[93.26785962104879, "o", "-"] +[93.29785962104879, "o", "v"] +[93.32785962104879, "o", "e"] +[93.35785962104879, "o", "r"] +[93.38785962104879, "o", "b"] +[93.41785962104879, "o", "o"] +[93.44785962104879, "o", "s"] +[93.4778596210488, "o", "e"] +[93.5078596210488, "o", " "] +[93.5378596210488, "o", "-"] +[93.5678596210488, "o", "-"] +[93.5978596210488, "o", "t"] +[93.6278596210488, "o", "a"] +[93.6578596210488, "o", "b"] +[93.6878596210488, "o", "l"] +[93.7178596210488, "o", "e"] +[93.7478596210488, "o", "-"] +[93.7778596210488, "o", "n"] +[93.8078596210488, "o", "a"] +[93.8378596210488, "o", "m"] +[93.86785962104881, "o", "e"] +[93.89785962104881, "o", " "] +[93.92785962104881, "o", "m"] +[93.95785962104881, "o", "o"] +[93.98785962104881, "o", "n"] +[94.01785962104881, "o", "t"] +[94.04785962104881, "o", "h"] +[94.07785962104882, "o", "l"] +[94.10785962104882, "o", "y"] +[94.13785962104882, "o", "_"] +[94.16785962104882, "o", "s"] +[94.19785962104882, "o", "u"] +[94.22785962104882, "o", "m"] +[94.25785962104882, "o", "m"] +[94.28785962104882, "o", "a"] +[94.31785962104883, "o", "r"] +[94.34785962104883, "o", "y"] +[94.37785962104883, "o", "\r\n"] +[94.40785962104883, "o", "\u001b[0m"] +[94.43785962104883, "o", "\r\n"] +[94.92300423622217, "o", "Between 7123a6a6df3a and 1b7269c8fea5: \r\n"] +[94.92323287963953, "o", "monthly_summary: added 12 rows, removed 12 rows.\r\n- ('201201', Decimal('0.06322580645161290323'), Decimal('0E-20'))\r\n- ('201202', Decimal('0.06689655172413793103'), Decimal('0.03137931034482758621'))\r\n- ('201203', Decimal('0.17290322580645161290'), Decimal('0E-20'))\r\n- ('201204', Decimal('0.08766666666666666667'), Decimal('0E-20'))\r\n- ('201205', Decimal('0.12806451612903225806'), Decimal('0E-20'))\r\n- ('201206', Decimal('0.10333333333333333333'), Decimal('0E-20'))\r\n- ('201207', Decimal('0.1496774193548387096"] +[94.92323931694116, "o", "8'), Decimal('0E-20'))\r\n- ('201208', Decimal('0.13000000000000000000'), Decimal('0E-20'))\r\n- ('201209', Decimal('0.26100000000000000000'), Decimal('0E-20'))\r\n- ('201210', Decimal('0.05903225806451612903'), Decimal('0E-20'))\r\n- ('201211', Decimal('0.01866666666666666667'), Decimal('0E-20'))\r\n- ('201212', Decimal('0.09483870967741935484'), Decimal('0E-20'))\r\n+ ('201201', Decimal('0.07587096774193548387'), Decimal('0E-20'))\r\n+ ('201202', Decimal('0.08027586206896551724'), Decimal('0.03137931034482758621'))\r\n+ "] +[94.92324384689417, "o", "('201203', Decimal('0.20748387096774193548'), Decimal('0E-20'))\r\n+ ('201204', Decimal('0.10520000000000000000'), Decimal('0E-20'))\r\n+ ('201205', Decimal('0.15367741935483870968'), Decimal('0E-20'))\r\n+ ('201206', Decimal('0.12400000000000000000'), Decimal('0E-20'))\r\n+ ('201207', Decimal('0.17961290322580645161'), Decimal('0E-20'))\r\n+ ('201208', Decimal('0.15600000000000000000'), Decimal('0E-20'))\r\n+ ('201209', Decimal('0.31320000000000000000'), Decimal('0E-20'))\r\n+ ('201210', Decimal('0.07083870967741935484'"] +[94.92325076103296, "o", "), Decimal('0E-20'))\r\n+ ('201211', Decimal('0.02240000000000000000'), Decimal('0E-20'))\r\n"] +[94.92337759971704, "o", "+ ('201212', Decimal('0.11380645161290322581'), Decimal('0E-20'))\r\n"] +[94.95337759971704, "o", "\u001b[1m"] +[94.98337759971704, "o", "\u001b[36m"] +[95.01337759971705, "o", "\u001b[91m"] +[95.04337759971705, "o", "$"] +[95.07337759971705, "o", " "] +[95.10337759971705, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.2.18/splitgraph-cloud.cast b/content/casts/versioned/archive/v0.2.18/splitgraph-cloud.cast new file mode 100644 index 00000000..442c2370 --- /dev/null +++ b/content/casts/versioned/archive/v0.2.18/splitgraph-cloud.cast @@ -0,0 +1,1341 @@ +{"version": 2, "width": 100, "height": 22, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1637163201, "metadata": {"tss": [{"h": "Make sure you are registered and logged into Splitgraph Cloud.", "ts": 0.06}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport", "ts": 8.850055074691767}, {"h": "Push the dataset to Splitgraph", "ts": 21.379298295974607}, {"h": "Upload some dataset metadata as well.", "ts": 29.679635066985995}, {"h": "Perform a request against an automatically-generated", "ts": 40.179635066985995}, {"h": "sgr also has a shorthand to access the query API", "ts": 49.95963506698614}, {"h": "You can also run a query against the Splitgraph Data Delivery Network.", "ts": 58.95963506698625}, {"h": "The query API also supports running one-off Splitfile commands against a repository,", "ts": 70.14963506698645}, {"h": "Run another command against the new layer to join the two datasets", "ts": 79.66179490089466}, {"h": "Pull the dataset and check out the new image", "ts": 89.26385316848818}, {"h": "Inspect the generated data", "ts": 102.3259363937385}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make sure you are registered and logged into Splitgraph Cloud."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Test the connection.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "s"] +[0.27, "o", "g"] +[0.30000000000000004, "o", "r"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "q"] +[0.42000000000000015, "o", "l"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "-"] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", " "] +[0.5700000000000003, "o", "d"] +[0.6000000000000003, "o", "a"] +[0.6300000000000003, "o", "t"] +[0.6600000000000004, "o", "a"] +[0.6900000000000004, "o", "."] +[0.7200000000000004, "o", "s"] +[0.7500000000000004, "o", "p"] +[0.7800000000000005, "o", "l"] +[0.8100000000000005, "o", "i"] +[0.8400000000000005, "o", "t"] +[0.8700000000000006, "o", "g"] +[0.9000000000000006, "o", "r"] +[0.9300000000000006, "o", "a"] +[0.9600000000000006, "o", "p"] +[0.9900000000000007, "o", "h"] +[1.0200000000000007, "o", "."] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "o"] +[1.1100000000000008, "o", "m"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "\""] +[1.2000000000000008, "o", "S"] +[1.2300000000000009, "o", "E"] +[1.260000000000001, "o", "L"] +[1.290000000000001, "o", "E"] +[1.320000000000001, "o", "C"] +[1.350000000000001, "o", "T"] +[1.380000000000001, "o", " "] +[1.410000000000001, "o", "s"] +[1.440000000000001, "o", "p"] +[1.470000000000001, "o", "l"] +[1.500000000000001, "o", "i"] +[1.5300000000000011, "o", "t"] +[1.5600000000000012, "o", "g"] +[1.5900000000000012, "o", "r"] +[1.6200000000000012, "o", "a"] +[1.6500000000000012, "o", "p"] +[1.6800000000000013, "o", "h"] +[1.7100000000000013, "o", "_"] +[1.7400000000000013, "o", "a"] +[1.7700000000000014, "o", "p"] +[1.8000000000000014, "o", "i"] +[1.8300000000000014, "o", "."] +[1.8600000000000014, "o", "g"] +[1.8900000000000015, "o", "e"] +[1.9200000000000015, "o", "t"] +[1.9500000000000015, "o", "_"] +[1.9800000000000015, "o", "c"] +[2.0100000000000016, "o", "u"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "r"] +[2.100000000000001, "o", "e"] +[2.130000000000001, "o", "n"] +[2.1600000000000006, "o", "t"] +[2.1900000000000004, "o", "_"] +[2.22, "o", "u"] +[2.25, "o", "s"] +[2.28, "o", "e"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "n"] +[2.369999999999999, "o", "a"] +[2.399999999999999, "o", "m"] +[2.429999999999999, "o", "e"] +[2.4599999999999986, "o", "("] +[2.4899999999999984, "o", ")"] +[2.5199999999999982, "o", "\""] +[2.549999999999998, "o", "\r\n"] +[2.579999999999998, "o", "\u001b[0m"] +[2.6099999999999977, "o", "\r\n"] +[3.6099999999999977, "o", "splitgraph-demo"] +[3.61005507469177, "o", "\r\n"] +[3.64005507469177, "o", "\u001b[1m"] +[3.6700550746917697, "o", "\u001b[36m"] +[3.7000550746917695, "o", "\u001b[91m"] +[3.7300550746917693, "o", "$"] +[3.760055074691769, "o", " "] +[3.790055074691769, "o", "\u001b[0m"] +[8.820055074691767, "o", "\u001b[H"] +[8.850055074691767, "o", "\u001b[J"] +[8.880055074691766, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport"] +[8.910055074691765, "o", "\r\n"] +[8.940055074691765, "o", "$"] +[8.970055074691764, "o", " "] +[9.000055074691764, "o", "s"] +[9.030055074691763, "o", "g"] +[9.060055074691762, "o", "r"] +[9.090055074691762, "o", " "] +[9.120055074691761, "o", "i"] +[9.15005507469176, "o", "n"] +[9.18005507469176, "o", "i"] +[9.210055074691759, "o", "t"] +[9.240055074691758, "o", " "] +[9.270055074691758, "o", "w"] +[9.300055074691757, "o", "e"] +[9.330055074691757, "o", "a"] +[9.360055074691756, "o", "t"] +[9.390055074691755, "o", "h"] +[9.420055074691755, "o", "e"] +[9.450055074691754, "o", "r"] +[9.480055074691753, "o", "\r\n"] +[9.510055074691753, "o", "$"] +[9.540055074691752, "o", " "] +[9.570055074691751, "o", "s"] +[9.60005507469175, "o", "g"] +[9.63005507469175, "o", "r"] +[9.66005507469175, "o", " "] +[9.690055074691749, "o", "c"] +[9.720055074691748, "o", "s"] +[9.750055074691748, "o", "v"] +[9.780055074691747, "o", " "] +[9.810055074691746, "o", "i"] +[9.840055074691746, "o", "m"] +[9.870055074691745, "o", "p"] +[9.900055074691744, "o", "o"] +[9.930055074691744, "o", "r"] +[9.960055074691743, "o", "t"] +[9.990055074691742, "o", " "] +[10.020055074691742, "o", "-"] +[10.050055074691741, "o", "f"] +[10.08005507469174, "o", " "] +[10.11005507469174, "o", "."] +[10.14005507469174, "o", "."] +[10.170055074691739, "o", "/"] +[10.200055074691738, "o", "i"] +[10.230055074691737, "o", "m"] +[10.260055074691737, "o", "p"] +[10.290055074691736, "o", "o"] +[10.320055074691735, "o", "r"] +[10.350055074691735, "o", "t"] +[10.380055074691734, "o", "-"] +[10.410055074691734, "o", "f"] +[10.440055074691733, "o", "r"] +[10.470055074691732, "o", "o"] +[10.500055074691732, "o", "m"] +[10.530055074691731, "o", "-"] +[10.56005507469173, "o", "c"] +[10.59005507469173, "o", "s"] +[10.620055074691729, "o", "v"] +[10.650055074691728, "o", "/"] +[10.680055074691728, "o", "r"] +[10.710055074691727, "o", "d"] +[10.740055074691726, "o", "u"] +[10.770055074691726, "o", "-"] +[10.800055074691725, "o", "w"] +[10.830055074691725, "o", "e"] +[10.860055074691724, "o", "a"] +[10.890055074691723, "o", "t"] +[10.920055074691723, "o", "h"] +[10.950055074691722, "o", "e"] +[10.980055074691721, "o", "r"] +[11.01005507469172, "o", "-"] +[11.04005507469172, "o", "h"] +[11.07005507469172, "o", "i"] +[11.100055074691719, "o", "s"] +[11.130055074691718, "o", "t"] +[11.160055074691718, "o", "o"] +[11.190055074691717, "o", "r"] +[11.220055074691716, "o", "y"] +[11.250055074691716, "o", "."] +[11.280055074691715, "o", "c"] +[11.310055074691714, "o", "s"] +[11.340055074691714, "o", "v"] +[11.370055074691713, "o", " "] +[11.400055074691712, "o", "\\"] +[11.430055074691712, "o", "\r\n "] +[11.460055074691711, "o", "-"] +[11.49005507469171, "o", "k"] +[11.52005507469171, "o", " "] +[11.55005507469171, "o", "d"] +[11.580055074691709, "o", "a"] +[11.610055074691708, "o", "t"] +[11.640055074691707, "o", "e"] +[11.670055074691707, "o", " "] +[11.700055074691706, "o", "\\"] +[11.730055074691705, "o", "\r\n "] +[11.760055074691705, "o", "-"] +[11.790055074691704, "o", "t"] +[11.820055074691703, "o", " "] +[11.850055074691703, "o", "d"] +[11.880055074691702, "o", "a"] +[11.910055074691702, "o", "t"] +[11.940055074691701, "o", "e"] +[11.9700550746917, "o", " "] +[12.0000550746917, "o", "t"] +[12.030055074691699, "o", "i"] +[12.060055074691698, "o", "m"] +[12.090055074691698, "o", "e"] +[12.120055074691697, "o", "s"] +[12.150055074691696, "o", "t"] +[12.180055074691696, "o", "a"] +[12.210055074691695, "o", "m"] +[12.240055074691695, "o", "p"] +[12.270055074691694, "o", " "] +[12.300055074691693, "o", "\\"] +[12.330055074691693, "o", "\r\n "] +[12.360055074691692, "o", "-"] +[12.390055074691691, "o", "-"] +[12.42005507469169, "o", "s"] +[12.45005507469169, "o", "e"] +[12.48005507469169, "o", "p"] +[12.510055074691689, "o", "a"] +[12.540055074691688, "o", "r"] +[12.570055074691687, "o", "a"] +[12.600055074691687, "o", "t"] +[12.630055074691686, "o", "o"] +[12.660055074691686, "o", "r"] +[12.690055074691685, "o", " "] +[12.720055074691684, "o", "\""] +[12.750055074691684, "o", ";"] +[12.780055074691683, "o", "\""] +[12.810055074691682, "o", " "] +[12.840055074691682, "o", "\\"] +[12.870055074691681, "o", "\r\n "] +[12.90005507469168, "o", "w"] +[12.93005507469168, "o", "e"] +[12.96005507469168, "o", "a"] +[12.990055074691679, "o", "t"] +[13.020055074691678, "o", "h"] +[13.050055074691677, "o", "e"] +[13.080055074691677, "o", "r"] +[13.110055074691676, "o", " "] +[13.140055074691675, "o", "r"] +[13.170055074691675, "o", "d"] +[13.200055074691674, "o", "u"] +[13.230055074691673, "o", "\r\n"] +[13.260055074691673, "o", "$"] +[13.290055074691672, "o", " "] +[13.320055074691671, "o", "s"] +[13.35005507469167, "o", "g"] +[13.38005507469167, "o", "r"] +[13.41005507469167, "o", " "] +[13.440055074691669, "o", "c"] +[13.470055074691668, "o", "o"] +[13.500055074691668, "o", "m"] +[13.530055074691667, "o", "m"] +[13.560055074691666, "o", "i"] +[13.590055074691666, "o", "t"] +[13.620055074691665, "o", " "] +[13.650055074691664, "o", "w"] +[13.680055074691664, "o", "e"] +[13.710055074691663, "o", "a"] +[13.740055074691663, "o", "t"] +[13.770055074691662, "o", "h"] +[13.800055074691661, "o", "e"] +[13.83005507469166, "o", "r"] +[13.86005507469166, "o", "\r\n"] +[13.89005507469166, "o", "$"] +[13.920055074691659, "o", " "] +[13.950055074691658, "o", "s"] +[13.980055074691657, "o", "g"] +[14.010055074691657, "o", "r"] +[14.040055074691656, "o", " "] +[14.070055074691656, "o", "t"] +[14.100055074691655, "o", "a"] +[14.130055074691654, "o", "g"] +[14.160055074691654, "o", " "] +[14.190055074691653, "o", "w"] +[14.220055074691652, "o", "e"] +[14.250055074691652, "o", "a"] +[14.280055074691651, "o", "t"] +[14.31005507469165, "o", "h"] +[14.34005507469165, "o", "e"] +[14.370055074691649, "o", "r"] +[14.400055074691648, "o", " "] +[14.430055074691648, "o", "i"] +[14.460055074691647, "o", "n"] +[14.490055074691647, "o", "i"] +[14.520055074691646, "o", "t"] +[14.550055074691645, "o", "i"] +[14.580055074691645, "o", "a"] +[14.610055074691644, "o", "l"] +[14.640055074691643, "o", "_"] +[14.670055074691643, "o", "d"] +[14.700055074691642, "o", "a"] +[14.730055074691641, "o", "t"] +[14.76005507469164, "o", "a"] +[14.79005507469164, "o", "\r\n"] +[14.82005507469164, "o", "\u001b[0m"] +[14.850055074691639, "o", "\r\n"] +[15.215476369857655, "o", "Initialized empty repository weather\r\n"] +[15.571286773681507, "o", "Committing weather...\r\n"] +[15.591208314895496, "o", "Processing table rdu\r\n"] +[15.781074142455921, "o", "Committed weather as b2aad0152492.\r\n"] +[16.139298295974598, "o", "Tagged weather:b2aad015249265bdb4f7c0b1f0323cd6fb2e400e7457619038932773d6d21e1e with initial_data.\r\n"] +[16.1692982959746, "o", "\u001b[1m"] +[16.1992982959746, "o", "\u001b[36m"] +[16.2292982959746, "o", "\u001b[91m"] +[16.259298295974602, "o", "$"] +[16.289298295974604, "o", " "] +[16.319298295974605, "o", "\u001b[0m"] +[21.349298295974606, "o", "\u001b[H"] +[21.379298295974607, "o", "\u001b[J"] +[21.409298295974608, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset to Splitgraph"] +[21.43929829597461, "o", "\r\n"] +[21.46929829597461, "o", "$"] +[21.49929829597461, "o", " "] +[21.529298295974613, "o", "s"] +[21.559298295974614, "o", "g"] +[21.589298295974615, "o", "r"] +[21.619298295974616, "o", " "] +[21.649298295974617, "o", "p"] +[21.67929829597462, "o", "u"] +[21.70929829597462, "o", "s"] +[21.73929829597462, "o", "h"] +[21.76929829597462, "o", " "] +[21.799298295974623, "o", "w"] +[21.829298295974624, "o", "e"] +[21.859298295974625, "o", "a"] +[21.889298295974626, "o", "t"] +[21.919298295974627, "o", "h"] +[21.94929829597463, "o", "e"] +[21.97929829597463, "o", "r"] +[22.00929829597463, "o", "\r\n"] +[22.039298295974632, "o", "\u001b[0m"] +[22.069298295974633, "o", "\r\n"] +[22.433865814208886, "o", "Pushing weather to splitgraph-demo/weather on remote data.splitgraph.com\r\n"] +[22.433956890106103, "o", "Gathering remote metadata...\r\n"] +[23.433956890106103, "o", "No objects to upload.\r\n"] +[24.433956890106103, "o", "Uploaded metadata for 2 images, 1 table, 0 objects and 1 tag.\r\n"] +[24.439635066985986, "o", "Setting upstream for weather to splitgraph-demo/weather.\r\n"] +[24.469635066985987, "o", "\u001b[1m"] +[24.499635066985988, "o", "\u001b[36m"] +[24.52963506698599, "o", "\u001b[91m"] +[24.55963506698599, "o", "$"] +[24.58963506698599, "o", " "] +[24.619635066985992, "o", "\u001b[0m"] +[29.649635066985994, "o", "\u001b[H"] +[29.679635066985995, "o", "\u001b[J"] +[29.709635066985996, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Upload some dataset metadata as well."] +[29.739635066985997, "o", "\r\n"] +[29.769635066985998, "o", "$"] +[29.799635066986, "o", " "] +[29.829635066986, "o", "c"] +[29.859635066986, "o", "a"] +[29.889635066986003, "o", "t"] +[29.919635066986004, "o", " "] +[29.949635066986005, "o", "d"] +[29.979635066986006, "o", "a"] +[30.009635066986007, "o", "t"] +[30.03963506698601, "o", "a"] +[30.06963506698601, "o", "s"] +[30.09963506698601, "o", "e"] +[30.129635066986012, "o", "t"] +[30.159635066986013, "o", "-"] +[30.189635066986014, "o", "m"] +[30.219635066986015, "o", "e"] +[30.249635066986016, "o", "t"] +[30.279635066986017, "o", "a"] +[30.30963506698602, "o", "d"] +[30.33963506698602, "o", "a"] +[30.36963506698602, "o", "t"] +[30.399635066986022, "o", "a"] +[30.429635066986023, "o", "."] +[30.459635066986024, "o", "y"] +[30.489635066986025, "o", "m"] +[30.519635066986027, "o", "l"] +[30.549635066986028, "o", "\r\n"] +[30.57963506698603, "o", "$"] +[30.60963506698603, "o", " "] +[30.63963506698603, "o", "c"] +[30.669635066986032, "o", "a"] +[30.699635066986033, "o", "t"] +[30.729635066986035, "o", " "] +[30.759635066986036, "o", "d"] +[30.789635066986037, "o", "a"] +[30.819635066986038, "o", "t"] +[30.84963506698604, "o", "a"] +[30.87963506698604, "o", "s"] +[30.90963506698604, "o", "e"] +[30.939635066986042, "o", "t"] +[30.969635066986044, "o", "-"] +[30.999635066986045, "o", "r"] +[31.029635066986046, "o", "e"] +[31.059635066986047, "o", "a"] +[31.089635066986048, "o", "d"] +[31.11963506698605, "o", "m"] +[31.14963506698605, "o", "e"] +[31.17963506698605, "o", "."] +[31.209635066986053, "o", "m"] +[31.239635066986054, "o", "d"] +[31.269635066986055, "o", "\r\n"] +[31.299635066986056, "o", "$"] +[31.329635066986057, "o", " "] +[31.35963506698606, "o", "s"] +[31.38963506698606, "o", "g"] +[31.41963506698606, "o", "r"] +[31.449635066986062, "o", " "] +[31.479635066986063, "o", "c"] +[31.509635066986064, "o", "l"] +[31.539635066986065, "o", "o"] +[31.569635066986066, "o", "u"] +[31.599635066986067, "o", "d"] +[31.62963506698607, "o", " "] +[31.65963506698607, "o", "m"] +[31.68963506698607, "o", "e"] +[31.719635066986072, "o", "t"] +[31.749635066986073, "o", "a"] +[31.779635066986074, "o", "d"] +[31.809635066986075, "o", "a"] +[31.839635066986077, "o", "t"] +[31.869635066986078, "o", "a"] +[31.89963506698608, "o", " "] +[31.92963506698608, "o", "s"] +[31.95963506698608, "o", "p"] +[31.989635066986082, "o", "l"] +[32.01963506698608, "o", "i"] +[32.049635066986085, "o", "t"] +[32.079635066986086, "o", "g"] +[32.10963506698609, "o", "r"] +[32.13963506698609, "o", "a"] +[32.16963506698609, "o", "p"] +[32.19963506698609, "o", "h"] +[32.22963506698609, "o", "-"] +[32.25963506698609, "o", "d"] +[32.289635066986094, "o", "e"] +[32.319635066986095, "o", "m"] +[32.349635066986096, "o", "o"] +[32.3796350669861, "o", "/"] +[32.4096350669861, "o", "w"] +[32.4396350669861, "o", "e"] +[32.4696350669861, "o", "a"] +[32.4996350669861, "o", "t"] +[32.5296350669861, "o", "h"] +[32.559635066986104, "o", "e"] +[32.589635066986105, "o", "r"] +[32.619635066986106, "o", " "] +[32.64963506698611, "o", "d"] +[32.67963506698611, "o", "a"] +[32.70963506698611, "o", "t"] +[32.73963506698611, "o", "a"] +[32.76963506698611, "o", "s"] +[32.79963506698611, "o", "e"] +[32.829635066986114, "o", "t"] +[32.859635066986115, "o", "-"] +[32.889635066986116, "o", "m"] +[32.91963506698612, "o", "e"] +[32.94963506698612, "o", "t"] +[32.97963506698612, "o", "a"] +[33.00963506698612, "o", "d"] +[33.03963506698612, "o", "a"] +[33.06963506698612, "o", "t"] +[33.099635066986124, "o", "a"] +[33.129635066986125, "o", "."] +[33.15963506698613, "o", "y"] +[33.18963506698613, "o", "m"] +[33.21963506698613, "o", "l"] +[33.24963506698613, "o", "\r\n"] +[33.27963506698613, "o", "\u001b[0m"] +[33.30963506698613, "o", "\r\n"] +[33.31131854057317, "o", "# This is a sample dataset metadata file that's used"] +[33.31136670112615, "o", "\r\n# to update the dataset's README and description.\r\n\r\nreadme: dataset-readme.md\r\ndescription: Weather history in Raleigh-Durham International airport joined with US domestic flights data (uploaded from Splitgraph release CI)\r\n"] +[33.31293072700505, "o", "# Sample dataset README\r\n\r\nDataset of weather history in Raleigh-Durham International airport, joined with\r\n[US domestic flights data](/splitgraph/domestic_us_flights).\r\n\r\nThis dataset was uploaded from a CI job.\r\n\r\n## Source\r\n\r\n[data.gov](https://catalog.data.gov/dataset/local-weather-archive)\r\n"] +[34.18105497360234, "o", "Metadata updated for repository splitgraph-demo/weather.\r\n"] +[34.211054973602344, "o", "\u001b[1m"] +[34.241054973602346, "o", "\u001b[36m"] +[34.27105497360235, "o", "\u001b[91m"] +[34.30105497360235, "o", "$"] +[34.33105497360235, "o", " "] +[34.36105497360235, "o", "\u001b[0m"] +[40.149635066985994, "o", "\u001b[H"] +[40.179635066985995, "o", "\u001b[J"] +[40.209635066985996, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Perform a request against an automatically-generated"] +[40.239635066986, "o", "\r\n"] +[40.269635066986, "o", "$ # Postgrest (https://postgrest.org) endpoint.\r\n"] +[40.299635066986, "o", "$"] +[40.329635066986, "o", " "] +[40.359635066986, "o", "c"] +[40.389635066986, "o", "u"] +[40.419635066986004, "o", "r"] +[40.449635066986005, "o", "l"] +[40.479635066986006, "o", " "] +[40.50963506698601, "o", "\""] +[40.53963506698601, "o", "h"] +[40.56963506698601, "o", "t"] +[40.59963506698601, "o", "t"] +[40.62963506698601, "o", "p"] +[40.65963506698601, "o", "s"] +[40.689635066986014, "o", ":"] +[40.719635066986015, "o", "/"] +[40.749635066986016, "o", "/"] +[40.77963506698602, "o", "d"] +[40.80963506698602, "o", "a"] +[40.83963506698602, "o", "t"] +[40.86963506698602, "o", "a"] +[40.89963506698602, "o", "."] +[40.92963506698602, "o", "s"] +[40.959635066986024, "o", "p"] +[40.989635066986025, "o", "l"] +[41.01963506698603, "o", "i"] +[41.04963506698603, "o", "t"] +[41.07963506698603, "o", "g"] +[41.10963506698603, "o", "r"] +[41.13963506698603, "o", "a"] +[41.16963506698603, "o", "p"] +[41.19963506698603, "o", "h"] +[41.229635066986035, "o", "."] +[41.259635066986036, "o", "c"] +[41.28963506698604, "o", "o"] +[41.31963506698604, "o", "m"] +[41.34963506698604, "o", "/"] +[41.37963506698604, "o", "s"] +[41.40963506698604, "o", "p"] +[41.43963506698604, "o", "l"] +[41.469635066986044, "o", "i"] +[41.499635066986045, "o", "t"] +[41.529635066986046, "o", "g"] +[41.55963506698605, "o", "r"] +[41.58963506698605, "o", "a"] +[41.61963506698605, "o", "p"] +[41.64963506698605, "o", "h"] +[41.67963506698605, "o", "-"] +[41.70963506698605, "o", "d"] +[41.739635066986054, "o", "e"] +[41.769635066986055, "o", "m"] +[41.799635066986056, "o", "o"] +[41.82963506698606, "o", "/"] +[41.85963506698606, "o", "w"] +[41.88963506698606, "o", "e"] +[41.91963506698606, "o", "a"] +[41.94963506698606, "o", "t"] +[41.97963506698606, "o", "h"] +[42.009635066986064, "o", "e"] +[42.039635066986065, "o", "r"] +[42.069635066986066, "o", "/"] +[42.09963506698607, "o", "i"] +[42.12963506698607, "o", "n"] +[42.15963506698607, "o", "i"] +[42.18963506698607, "o", "t"] +[42.21963506698607, "o", "i"] +[42.24963506698607, "o", "a"] +[42.279635066986074, "o", "l"] +[42.309635066986075, "o", "_"] +[42.33963506698608, "o", "d"] +[42.36963506698608, "o", "a"] +[42.39963506698608, "o", "t"] +[42.42963506698608, "o", "a"] +[42.45963506698608, "o", "/"] +[42.48963506698608, "o", "-"] +[42.51963506698608, "o", "/"] +[42.549635066986085, "o", "r"] +[42.579635066986086, "o", "e"] +[42.60963506698609, "o", "s"] +[42.63963506698609, "o", "t"] +[42.66963506698609, "o", "/"] +[42.69963506698609, "o", "r"] +[42.72963506698609, "o", "d"] +[42.75963506698609, "o", "u"] +[42.789635066986094, "o", "?"] +[42.819635066986095, "o", "d"] +[42.849635066986096, "o", "a"] +[42.8796350669861, "o", "t"] +[42.9096350669861, "o", "e"] +[42.9396350669861, "o", "="] +[42.9696350669861, "o", "e"] +[42.9996350669861, "o", "q"] +[43.0296350669861, "o", "."] +[43.059635066986104, "o", "2"] +[43.089635066986105, "o", "0"] +[43.119635066986106, "o", "0"] +[43.14963506698611, "o", "9"] +[43.17963506698611, "o", "-"] +[43.20963506698611, "o", "0"] +[43.23963506698611, "o", "8"] +[43.26963506698611, "o", "-"] +[43.29963506698611, "o", "2"] +[43.329635066986114, "o", "5"] +[43.359635066986115, "o", "T"] +[43.389635066986116, "o", "0"] +[43.41963506698612, "o", "0"] +[43.44963506698612, "o", ":"] +[43.47963506698612, "o", "0"] +[43.50963506698612, "o", "0"] +[43.53963506698612, "o", ":"] +[43.56963506698612, "o", "0"] +[43.599635066986124, "o", "0"] +[43.629635066986125, "o", "\""] +[43.65963506698613, "o", "\r\n"] +[43.68963506698613, "o", "\u001b[0m"] +[43.71963506698613, "o", "\r\n"] +[44.71963506698613, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[44.74963506698613, "o", "\u001b[1m"] +[44.77963506698613, "o", "\u001b[36m"] +[44.80963506698613, "o", "\u001b[91m"] +[44.83963506698613, "o", "$"] +[44.869635066986135, "o", " "] +[44.899635066986136, "o", "\u001b[0m"] +[49.92963506698614, "o", "\u001b[H"] +[49.95963506698614, "o", "\u001b[J"] +[49.98963506698614, "o", "\u001b[1m\u001b[36m\u001b[91m$ # sgr also has a shorthand to access the query API"] +[50.01963506698614, "o", "\r\n"] +[50.04963506698614, "o", "$"] +[50.07963506698614, "o", " "] +[50.109635066986144, "o", "s"] +[50.139635066986145, "o", "g"] +[50.169635066986146, "o", "r"] +[50.19963506698615, "o", " "] +[50.22963506698615, "o", "c"] +[50.25963506698615, "o", "l"] +[50.28963506698615, "o", "o"] +[50.31963506698615, "o", "u"] +[50.34963506698615, "o", "d"] +[50.379635066986154, "o", " "] +[50.409635066986155, "o", "c"] +[50.439635066986156, "o", "u"] +[50.46963506698616, "o", "r"] +[50.49963506698616, "o", "l"] +[50.52963506698616, "o", " "] +[50.55963506698616, "o", "s"] +[50.58963506698616, "o", "p"] +[50.61963506698616, "o", "l"] +[50.649635066986164, "o", "i"] +[50.679635066986165, "o", "t"] +[50.709635066986166, "o", "g"] +[50.73963506698617, "o", "r"] +[50.76963506698617, "o", "a"] +[50.79963506698617, "o", "p"] +[50.82963506698617, "o", "h"] +[50.85963506698617, "o", "-"] +[50.88963506698617, "o", "d"] +[50.919635066986174, "o", "e"] +[50.949635066986176, "o", "m"] +[50.97963506698618, "o", "o"] +[51.00963506698618, "o", "/"] +[51.03963506698618, "o", "w"] +[51.06963506698618, "o", "e"] +[51.09963506698618, "o", "a"] +[51.12963506698618, "o", "t"] +[51.15963506698618, "o", "h"] +[51.189635066986185, "o", "e"] +[51.219635066986186, "o", "r"] +[51.24963506698619, "o", ":"] +[51.27963506698619, "o", "i"] +[51.30963506698619, "o", "n"] +[51.33963506698619, "o", "i"] +[51.36963506698619, "o", "t"] +[51.39963506698619, "o", "i"] +[51.429635066986194, "o", "a"] +[51.459635066986195, "o", "l"] +[51.489635066986196, "o", "_"] +[51.5196350669862, "o", "d"] +[51.5496350669862, "o", "a"] +[51.5796350669862, "o", "t"] +[51.6096350669862, "o", "a"] +[51.6396350669862, "o", " "] +[51.6696350669862, "o", "\""] +[51.699635066986204, "o", "r"] +[51.729635066986205, "o", "d"] +[51.759635066986206, "o", "u"] +[51.78963506698621, "o", "?"] +[51.81963506698621, "o", "d"] +[51.84963506698621, "o", "a"] +[51.87963506698621, "o", "t"] +[51.90963506698621, "o", "e"] +[51.93963506698621, "o", "="] +[51.969635066986214, "o", "e"] +[51.999635066986215, "o", "q"] +[52.029635066986216, "o", "."] +[52.05963506698622, "o", "2"] +[52.08963506698622, "o", "0"] +[52.11963506698622, "o", "0"] +[52.14963506698622, "o", "9"] +[52.17963506698622, "o", "-"] +[52.20963506698622, "o", "0"] +[52.239635066986224, "o", "8"] +[52.269635066986226, "o", "-"] +[52.29963506698623, "o", "2"] +[52.32963506698623, "o", "5"] +[52.35963506698623, "o", "T"] +[52.38963506698623, "o", "0"] +[52.41963506698623, "o", "0"] +[52.44963506698623, "o", ":"] +[52.47963506698623, "o", "0"] +[52.509635066986235, "o", "0"] +[52.539635066986236, "o", ":"] +[52.56963506698624, "o", "0"] +[52.59963506698624, "o", "0"] +[52.62963506698624, "o", "\""] +[52.65963506698624, "o", "\r\n"] +[52.68963506698624, "o", "\u001b[0m"] +[52.71963506698624, "o", "\r\n"] +[53.71963506698624, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[53.749635066986244, "o", "\u001b[1m"] +[53.779635066986245, "o", "\u001b[36m"] +[53.809635066986246, "o", "\u001b[91m"] +[53.83963506698625, "o", "$"] +[53.86963506698625, "o", " "] +[53.89963506698625, "o", "\u001b[0m"] +[58.92963506698625, "o", "\u001b[H"] +[58.95963506698625, "o", "\u001b[J"] +[58.98963506698625, "o", "\u001b[1m\u001b[36m\u001b[91m$ # You can also run a query against the Splitgraph Data Delivery Network."] +[59.019635066986254, "o", "\r\n"] +[59.049635066986255, "o", "$ # It supports most PostgresSQL clients and lets you query Splitgraph images and other\r\n"] +[59.079635066986256, "o", "$ # datasets proxied by Splitgraph.\r\n"] +[59.10963506698626, "o", "$"] +[59.13963506698626, "o", " "] +[59.16963506698626, "o", "s"] +[59.19963506698626, "o", "g"] +[59.22963506698626, "o", "r"] +[59.25963506698626, "o", " "] +[59.289635066986264, "o", "c"] +[59.319635066986265, "o", "l"] +[59.34963506698627, "o", "o"] +[59.37963506698627, "o", "u"] +[59.40963506698627, "o", "d"] +[59.43963506698627, "o", " "] +[59.46963506698627, "o", "s"] +[59.49963506698627, "o", "q"] +[59.52963506698627, "o", "l"] +[59.559635066986274, "o", " "] +[59.589635066986276, "o", "\""] +[59.61963506698628, "o", "S"] +[59.64963506698628, "o", "E"] +[59.67963506698628, "o", "L"] +[59.70963506698628, "o", "E"] +[59.73963506698628, "o", "C"] +[59.76963506698628, "o", "T"] +[59.79963506698628, "o", " "] +[59.829635066986285, "o", "d"] +[59.859635066986286, "o", "a"] +[59.88963506698629, "o", "t"] +[59.91963506698629, "o", "e"] +[59.94963506698629, "o", ","] +[59.97963506698629, "o", " "] +[60.00963506698629, "o", "t"] +[60.03963506698629, "o", "e"] +[60.069635066986294, "o", "m"] +[60.099635066986295, "o", "p"] +[60.129635066986296, "o", "e"] +[60.1596350669863, "o", "r"] +[60.1896350669863, "o", "a"] +[60.2196350669863, "o", "t"] +[60.2496350669863, "o", "u"] +[60.2796350669863, "o", "r"] +[60.3096350669863, "o", "e"] +[60.339635066986304, "o", "m"] +[60.369635066986305, "o", "i"] +[60.399635066986306, "o", "n"] +[60.42963506698631, "o", ","] +[60.45963506698631, "o", " "] +[60.48963506698631, "o", "t"] +[60.51963506698631, "o", "e"] +[60.54963506698631, "o", "m"] +[60.57963506698631, "o", "p"] +[60.609635066986314, "o", "e"] +[60.639635066986315, "o", "r"] +[60.66963506698632, "o", "a"] +[60.69963506698632, "o", "t"] +[60.72963506698632, "o", "u"] +[60.75963506698632, "o", "r"] +[60.78963506698632, "o", "e"] +[60.81963506698632, "o", "m"] +[60.84963506698632, "o", "a"] +[60.879635066986324, "o", "x"] +[60.909635066986326, "o", "\r\n "] +[60.93963506698633, "o", "F"] +[60.96963506698633, "o", "R"] +[60.99963506698633, "o", "O"] +[61.02963506698633, "o", "M"] +[61.05963506698633, "o", " "] +[61.08963506698633, "o", "\\"] +[61.11963506698633, "o", "\""] +[61.149635066986335, "o", "s"] +[61.179635066986336, "o", "p"] +[61.20963506698634, "o", "l"] +[61.23963506698634, "o", "i"] +[61.26963506698634, "o", "t"] +[61.29963506698634, "o", "g"] +[61.32963506698634, "o", "r"] +[61.35963506698634, "o", "a"] +[61.389635066986344, "o", "p"] +[61.419635066986345, "o", "h"] +[61.449635066986346, "o", "-"] +[61.47963506698635, "o", "d"] +[61.50963506698635, "o", "e"] +[61.53963506698635, "o", "m"] +[61.56963506698635, "o", "o"] +[61.59963506698635, "o", "/"] +[61.62963506698635, "o", "w"] +[61.659635066986354, "o", "e"] +[61.689635066986355, "o", "a"] +[61.719635066986356, "o", "t"] +[61.74963506698636, "o", "h"] +[61.77963506698636, "o", "e"] +[61.80963506698636, "o", "r"] +[61.83963506698636, "o", ":"] +[61.86963506698636, "o", "i"] +[61.89963506698636, "o", "n"] +[61.929635066986364, "o", "i"] +[61.959635066986365, "o", "t"] +[61.98963506698637, "o", "i"] +[62.01963506698637, "o", "a"] +[62.04963506698637, "o", "l"] +[62.07963506698637, "o", "_"] +[62.10963506698637, "o", "d"] +[62.13963506698637, "o", "a"] +[62.16963506698637, "o", "t"] +[62.199635066986374, "o", "a"] +[62.229635066986376, "o", "\\"] +[62.25963506698638, "o", "\""] +[62.28963506698638, "o", "."] +[62.31963506698638, "o", "r"] +[62.34963506698638, "o", "d"] +[62.37963506698638, "o", "u"] +[62.40963506698638, "o", "\r\n "] +[62.43963506698638, "o", "W"] +[62.469635066986385, "o", "H"] +[62.499635066986386, "o", "E"] +[62.52963506698639, "o", "R"] +[62.55963506698639, "o", "E"] +[62.58963506698639, "o", " "] +[62.61963506698639, "o", "d"] +[62.64963506698639, "o", "a"] +[62.67963506698639, "o", "t"] +[62.709635066986394, "o", "e"] +[62.739635066986395, "o", "_"] +[62.769635066986396, "o", "t"] +[62.7996350669864, "o", "r"] +[62.8296350669864, "o", "u"] +[62.8596350669864, "o", "n"] +[62.8896350669864, "o", "c"] +[62.9196350669864, "o", "("] +[62.9496350669864, "o", "'"] +[62.979635066986404, "o", "m"] +[63.009635066986405, "o", "o"] +[63.039635066986406, "o", "n"] +[63.06963506698641, "o", "t"] +[63.09963506698641, "o", "h"] +[63.12963506698641, "o", "'"] +[63.15963506698641, "o", ","] +[63.18963506698641, "o", " "] +[63.21963506698641, "o", "d"] +[63.249635066986414, "o", "a"] +[63.279635066986415, "o", "t"] +[63.30963506698642, "o", "e"] +[63.33963506698642, "o", ")"] +[63.36963506698642, "o", " "] +[63.39963506698642, "o", "="] +[63.42963506698642, "o", " "] +[63.45963506698642, "o", "'"] +[63.48963506698642, "o", "2"] +[63.519635066986424, "o", "0"] +[63.549635066986426, "o", "0"] +[63.57963506698643, "o", "9"] +[63.60963506698643, "o", "-"] +[63.63963506698643, "o", "0"] +[63.66963506698643, "o", "8"] +[63.69963506698643, "o", "-"] +[63.72963506698643, "o", "0"] +[63.759635066986434, "o", "1"] +[63.789635066986435, "o", "'"] +[63.819635066986436, "o", "\""] +[63.84963506698644, "o", "\r\n"] +[63.87963506698644, "o", "\u001b[0m"] +[63.90963506698644, "o", "\r\n"] +[64.90963506698644, "o", "2009-08-01 00:00:00 73 91.9\r\n2009-08-02 00:00:00 73.9 82.9\r\n2009-08-03 00:00:00 70 95\r\n2009-08-04 00:00:00 66.9 95\r\n2009-08-05 00:00:00 72 96.1\r\n2009-08-06 00:00:00 70 84.9\r\n2009-08-07 00:00:00 68 88\r\n2009-08-08 00:00:00 69.1 91\r\n2009-08-09 00:00:00 70 99\r\n2009-08-10 00:00:00 72 99\r\n"] +[64.93963506698644, "o", "\u001b[1m"] +[64.96963506698644, "o", "\u001b[36m"] +[64.99963506698644, "o", "\u001b[91m"] +[65.02963506698644, "o", "$"] +[65.05963506698644, "o", " "] +[65.08963506698645, "o", "\u001b[0m"] +[70.11963506698645, "o", "\u001b[H"] +[70.14963506698645, "o", "\u001b[J"] +[70.17963506698645, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The query API also supports running one-off Splitfile commands against a repository,"] +[70.20963506698645, "o", "\r\n"] +[70.23963506698645, "o", "$ # creating new images that can be pulled. sgr handles authentication for this automatically.\r\n"] +[70.26963506698645, "o", "$"] +[70.29963506698645, "o", " "] +[70.32963506698646, "o", "c"] +[70.35963506698646, "o", "a"] +[70.38963506698646, "o", "t"] +[70.41963506698646, "o", " "] +[70.44963506698646, "o", "r"] +[70.47963506698646, "o", "e"] +[70.50963506698646, "o", "q"] +[70.53963506698646, "o", "u"] +[70.56963506698646, "o", "e"] +[70.59963506698647, "o", "s"] +[70.62963506698647, "o", "t"] +[70.65963506698647, "o", "_"] +[70.68963506698647, "o", "1"] +[70.71963506698647, "o", "."] +[70.74963506698647, "o", "j"] +[70.77963506698647, "o", "s"] +[70.80963506698647, "o", "o"] +[70.83963506698647, "o", "n"] +[70.86963506698648, "o", "\r\n"] +[70.89963506698648, "o", "$"] +[70.92963506698648, "o", " "] +[70.95963506698648, "o", "s"] +[70.98963506698648, "o", "g"] +[71.01963506698648, "o", "r"] +[71.04963506698648, "o", " "] +[71.07963506698648, "o", "c"] +[71.10963506698648, "o", "l"] +[71.13963506698649, "o", "o"] +[71.16963506698649, "o", "u"] +[71.19963506698649, "o", "d"] +[71.22963506698649, "o", " "] +[71.25963506698649, "o", "c"] +[71.28963506698649, "o", "u"] +[71.31963506698649, "o", "r"] +[71.3496350669865, "o", "l"] +[71.3796350669865, "o", " "] +[71.4096350669865, "o", "-"] +[71.4396350669865, "o", "t"] +[71.4696350669865, "o", " "] +[71.4996350669865, "o", "s"] +[71.5296350669865, "o", "p"] +[71.5596350669865, "o", "l"] +[71.5896350669865, "o", "i"] +[71.6196350669865, "o", "t"] +[71.6496350669865, "o", "f"] +[71.6796350669865, "o", "i"] +[71.70963506698651, "o", "l"] +[71.73963506698651, "o", "e"] +[71.76963506698651, "o", " "] +[71.79963506698651, "o", "s"] +[71.82963506698651, "o", "p"] +[71.85963506698651, "o", "l"] +[71.88963506698651, "o", "i"] +[71.91963506698652, "o", "t"] +[71.94963506698652, "o", "g"] +[71.97963506698652, "o", "r"] +[72.00963506698652, "o", "a"] +[72.03963506698652, "o", "p"] +[72.06963506698652, "o", "h"] +[72.09963506698652, "o", "-"] +[72.12963506698652, "o", "d"] +[72.15963506698652, "o", "e"] +[72.18963506698653, "o", "m"] +[72.21963506698653, "o", "o"] +[72.24963506698653, "o", "/"] +[72.27963506698653, "o", "w"] +[72.30963506698653, "o", "e"] +[72.33963506698653, "o", "a"] +[72.36963506698653, "o", "t"] +[72.39963506698653, "o", "h"] +[72.42963506698653, "o", "e"] +[72.45963506698654, "o", "r"] +[72.48963506698654, "o", ":"] +[72.51963506698654, "o", "i"] +[72.54963506698654, "o", "n"] +[72.57963506698654, "o", "i"] +[72.60963506698654, "o", "t"] +[72.63963506698654, "o", "i"] +[72.66963506698654, "o", "a"] +[72.69963506698654, "o", "l"] +[72.72963506698655, "o", "_"] +[72.75963506698655, "o", "d"] +[72.78963506698655, "o", "a"] +[72.81963506698655, "o", "t"] +[72.84963506698655, "o", "a"] +[72.87963506698655, "o", " "] +[72.90963506698655, "o", "@"] +[72.93963506698655, "o", "r"] +[72.96963506698656, "o", "e"] +[72.99963506698656, "o", "q"] +[73.02963506698656, "o", "u"] +[73.05963506698656, "o", "e"] +[73.08963506698656, "o", "s"] +[73.11963506698656, "o", "t"] +[73.14963506698656, "o", "_"] +[73.17963506698656, "o", "1"] +[73.20963506698656, "o", "."] +[73.23963506698657, "o", "j"] +[73.26963506698657, "o", "s"] +[73.29963506698657, "o", "o"] +[73.32963506698657, "o", "n"] +[73.35963506698657, "o", "\r\n"] +[73.38963506698657, "o", "\u001b[0m"] +[73.41963506698657, "o", "\r\n"] +[73.42172647476245, "o", "{\"command\": \"FROM splitgraph/domestic_us_flights:latest IMPORT {SELECT fly_month, SUM(passengers) AS total_passengers FROM flights WHERE origin_airport = 'RDU' OR destination_airport = 'RDU' GROUP BY fly_month ORDER BY fly_month} AS flights\","] +[73.42179490089465, "o", "\r\n \"tag\": \"with_flight_data\"}\r\n\r\n"] +[74.42179490089465, "o", "{\"image_hash\":\"7b20783aa588d760b314c93184e094a9efc08e5ee0b4c3878b1534c23128a212\"}"] +[74.45179490089465, "o", "\u001b[1m"] +[74.48179490089466, "o", "\u001b[36m"] +[74.51179490089466, "o", "\u001b[91m"] +[74.54179490089466, "o", "$"] +[74.57179490089466, "o", " "] +[74.60179490089466, "o", "\u001b[0m"] +[79.63179490089466, "o", "\u001b[H"] +[79.66179490089466, "o", "\u001b[J"] +[79.69179490089466, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run another command against the new layer to join the two datasets"] +[79.72179490089466, "o", "\r\n"] +[79.75179490089467, "o", "$"] +[79.78179490089467, "o", " "] +[79.81179490089467, "o", "c"] +[79.84179490089467, "o", "a"] +[79.87179490089467, "o", "t"] +[79.90179490089467, "o", " "] +[79.93179490089467, "o", "r"] +[79.96179490089467, "o", "e"] +[79.99179490089467, "o", "q"] +[80.02179490089468, "o", "u"] +[80.05179490089468, "o", "e"] +[80.08179490089468, "o", "s"] +[80.11179490089468, "o", "t"] +[80.14179490089468, "o", "_"] +[80.17179490089468, "o", "2"] +[80.20179490089468, "o", "."] +[80.23179490089468, "o", "j"] +[80.26179490089469, "o", "s"] +[80.29179490089469, "o", "o"] +[80.32179490089469, "o", "n"] +[80.35179490089469, "o", "\r\n"] +[80.38179490089469, "o", "$"] +[80.41179490089469, "o", " "] +[80.44179490089469, "o", "s"] +[80.4717949008947, "o", "g"] +[80.5017949008947, "o", "r"] +[80.5317949008947, "o", " "] +[80.5617949008947, "o", "c"] +[80.5917949008947, "o", "l"] +[80.6217949008947, "o", "o"] +[80.6517949008947, "o", "u"] +[80.6817949008947, "o", "d"] +[80.7117949008947, "o", " "] +[80.7417949008947, "o", "c"] +[80.7717949008947, "o", "u"] +[80.8017949008947, "o", "r"] +[80.8317949008947, "o", "l"] +[80.86179490089471, "o", " "] +[80.89179490089471, "o", "-"] +[80.92179490089471, "o", "t"] +[80.95179490089471, "o", " "] +[80.98179490089471, "o", "s"] +[81.01179490089471, "o", "p"] +[81.04179490089471, "o", "l"] +[81.07179490089472, "o", "i"] +[81.10179490089472, "o", "t"] +[81.13179490089472, "o", "f"] +[81.16179490089472, "o", "i"] +[81.19179490089472, "o", "l"] +[81.22179490089472, "o", "e"] +[81.25179490089472, "o", " "] +[81.28179490089472, "o", "s"] +[81.31179490089472, "o", "p"] +[81.34179490089473, "o", "l"] +[81.37179490089473, "o", "i"] +[81.40179490089473, "o", "t"] +[81.43179490089473, "o", "g"] +[81.46179490089473, "o", "r"] +[81.49179490089473, "o", "a"] +[81.52179490089473, "o", "p"] +[81.55179490089473, "o", "h"] +[81.58179490089474, "o", "-"] +[81.61179490089474, "o", "d"] +[81.64179490089474, "o", "e"] +[81.67179490089474, "o", "m"] +[81.70179490089474, "o", "o"] +[81.73179490089474, "o", "/"] +[81.76179490089474, "o", "w"] +[81.79179490089474, "o", "e"] +[81.82179490089474, "o", "a"] +[81.85179490089475, "o", "t"] +[81.88179490089475, "o", "h"] +[81.91179490089475, "o", "e"] +[81.94179490089475, "o", "r"] +[81.97179490089475, "o", ":"] +[82.00179490089475, "o", "w"] +[82.03179490089475, "o", "i"] +[82.06179490089475, "o", "t"] +[82.09179490089475, "o", "h"] +[82.12179490089476, "o", "_"] +[82.15179490089476, "o", "f"] +[82.18179490089476, "o", "l"] +[82.21179490089476, "o", "i"] +[82.24179490089476, "o", "g"] +[82.27179490089476, "o", "h"] +[82.30179490089476, "o", "t"] +[82.33179490089476, "o", "_"] +[82.36179490089476, "o", "d"] +[82.39179490089477, "o", "a"] +[82.42179490089477, "o", "t"] +[82.45179490089477, "o", "a"] +[82.48179490089477, "o", " "] +[82.51179490089477, "o", "@"] +[82.54179490089477, "o", "r"] +[82.57179490089477, "o", "e"] +[82.60179490089477, "o", "q"] +[82.63179490089477, "o", "u"] +[82.66179490089478, "o", "e"] +[82.69179490089478, "o", "s"] +[82.72179490089478, "o", "t"] +[82.75179490089478, "o", "_"] +[82.78179490089478, "o", "2"] +[82.81179490089478, "o", "."] +[82.84179490089478, "o", "j"] +[82.87179490089478, "o", "s"] +[82.90179490089479, "o", "o"] +[82.93179490089479, "o", "n"] +[82.96179490089479, "o", "\r\n"] +[82.99179490089479, "o", "\u001b[0m"] +[83.02179490089479, "o", "\r\n"] +[83.02385316848817, "o", "{\"command\": \"SQL CREATE TABLE rdu_flights_weather AS ( WITH monthly_summary AS (SELECT date_trunc ('month', date) AS month, AVG(temperaturemin) AS tmin_avg, AVG(temperaturemax) AS tmax_avg FROM rdu GROUP BY month) SELECT w.month, w.tmin_avg, w.tmax_avg, f.total_passengers FROM monthly_summary w JOIN flights f ON w.month = f.fly_month)\",\r\n \"tag\": \"joined_data\"}\r\n\r\n"] +[84.02385316848817, "o", "{\"image_hash\":\"3840f0bbd7d6444d4791f5a8f88323a10d6e9f9e0095f36404a689b081455e55\"}"] +[84.05385316848817, "o", "\u001b[1m"] +[84.08385316848818, "o", "\u001b[36m"] +[84.11385316848818, "o", "\u001b[91m"] +[84.14385316848818, "o", "$"] +[84.17385316848818, "o", " "] +[84.20385316848818, "o", "\u001b[0m"] +[89.23385316848818, "o", "\u001b[H"] +[89.26385316848818, "o", "\u001b[J"] +[89.29385316848818, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Pull the dataset and check out the new image"] +[89.32385316848818, "o", "\r\n"] +[89.35385316848819, "o", "$"] +[89.38385316848819, "o", " "] +[89.41385316848819, "o", "s"] +[89.44385316848819, "o", "g"] +[89.47385316848819, "o", "r"] +[89.50385316848819, "o", " "] +[89.53385316848819, "o", "p"] +[89.5638531684882, "o", "u"] +[89.5938531684882, "o", "l"] +[89.6238531684882, "o", "l"] +[89.6538531684882, "o", " "] +[89.6838531684882, "o", "w"] +[89.7138531684882, "o", "e"] +[89.7438531684882, "o", "a"] +[89.7738531684882, "o", "t"] +[89.8038531684882, "o", "h"] +[89.8338531684882, "o", "e"] +[89.8638531684882, "o", "r"] +[89.8938531684882, "o", "\r\n"] +[89.92385316848821, "o", "$"] +[89.95385316848821, "o", " "] +[89.98385316848821, "o", "s"] +[90.01385316848821, "o", "g"] +[90.04385316848821, "o", "r"] +[90.07385316848821, "o", " "] +[90.10385316848821, "o", "c"] +[90.13385316848822, "o", "h"] +[90.16385316848822, "o", "e"] +[90.19385316848822, "o", "c"] +[90.22385316848822, "o", "k"] +[90.25385316848822, "o", "o"] +[90.28385316848822, "o", "u"] +[90.31385316848822, "o", "t"] +[90.34385316848822, "o", " "] +[90.37385316848822, "o", "w"] +[90.40385316848823, "o", "e"] +[90.43385316848823, "o", "a"] +[90.46385316848823, "o", "t"] +[90.49385316848823, "o", "h"] +[90.52385316848823, "o", "e"] +[90.55385316848823, "o", "r"] +[90.58385316848823, "o", ":"] +[90.61385316848823, "o", "j"] +[90.64385316848823, "o", "o"] +[90.67385316848824, "o", "i"] +[90.70385316848824, "o", "n"] +[90.73385316848824, "o", "e"] +[90.76385316848824, "o", "d"] +[90.79385316848824, "o", "_"] +[90.82385316848824, "o", "d"] +[90.85385316848824, "o", "a"] +[90.88385316848824, "o", "t"] +[90.91385316848825, "o", "a"] +[90.94385316848825, "o", "\r\n"] +[90.97385316848825, "o", "\u001b[0m"] +[91.00385316848825, "o", "\r\n"] +[91.36294993400644, "o", "Gathering remote metadata...\r\n"] +[92.36294993400644, "o", "Fetched metadata for 2 images, 5 tables, 2 objects and 2 tags.\r\n"] +[92.76043328285287, "o", "Need to download 1 object (3.02 KiB), cache occupancy: 0.00 B/10.00 GiB\r\n"] +[92.80870303154062, "o", "Fetching 1 object, total size 3.02 KiB\r\n"] +[92.80932125091623, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (85b17bb993c0441f83f3619be8faba12@data.splitgraph.com:5432/sgregistry)...\r\n"] +[93.80932125091623, "o", "\r 0%| | 0/1 [00:00 Foreign Scan on precinct_results (cost=20.00..489234.00 rows=489234 width=1)\r\nFilter: ((state)::text = 'New York'::text)\r\nMulticorn: Original Multicorn quals: [state = New York]\r\nMulticorn: CNF quals: [[('state', '=', 'New York')]]\r\nMulticorn: Objects removed by filter: 15\r\nMulticorn: Scan through 5 object(s) (6.63 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining false, Optimization false, Expressions true, Deforming true\r\n"] +[13.639999999999912, "o", "\u001b[1m"] +[13.669999999999911, "o", "\u001b[36m"] +[13.69999999999991, "o", "\u001b[91m"] +[13.72999999999991, "o", "$"] +[13.75999999999991, "o", " "] +[13.789999999999909, "o", "\u001b[0m"] +[18.819999999999908, "o", "\u001b[H"] +[18.84999999999991, "o", "\u001b[J"] +[18.87999999999991, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Currently we have no fragments in cache. Let's run this query and check the cache again"] +[18.90999999999991, "o", "\r\n"] +[18.939999999999912, "o", "$"] +[18.969999999999914, "o", " "] +[18.999999999999915, "o", "s"] +[19.029999999999916, "o", "g"] +[19.059999999999917, "o", "r"] +[19.089999999999918, "o", " "] +[19.11999999999992, "o", "o"] +[19.14999999999992, "o", "b"] +[19.17999999999992, "o", "j"] +[19.209999999999923, "o", "e"] +[19.239999999999924, "o", "c"] +[19.269999999999925, "o", "t"] +[19.299999999999926, "o", "s"] +[19.329999999999927, "o", " "] +[19.35999999999993, "o", "-"] +[19.38999999999993, "o", "-"] +[19.41999999999993, "o", "l"] +[19.449999999999932, "o", "o"] +[19.479999999999933, "o", "c"] +[19.509999999999934, "o", "a"] +[19.539999999999935, "o", "l"] +[19.569999999999936, "o", "\r\n"] +[19.599999999999937, "o", "$"] +[19.62999999999994, "o", " "] +[19.65999999999994, "o", "s"] +[19.68999999999994, "o", "g"] +[19.719999999999942, "o", "r"] +[19.749999999999943, "o", " "] +[19.779999999999944, "o", "s"] +[19.809999999999945, "o", "q"] +[19.839999999999947, "o", "l"] +[19.869999999999948, "o", " "] +[19.89999999999995, "o", "-"] +[19.92999999999995, "o", "-"] +[19.95999999999995, "o", "i"] +[19.989999999999952, "o", "m"] +[20.019999999999953, "o", "a"] +[20.049999999999955, "o", "g"] +[20.079999999999956, "o", "e"] +[20.109999999999957, "o", " "] +[20.139999999999958, "o", "s"] +[20.16999999999996, "o", "p"] +[20.19999999999996, "o", "l"] +[20.22999999999996, "o", "i"] +[20.259999999999962, "o", "t"] +[20.289999999999964, "o", "g"] +[20.319999999999965, "o", "r"] +[20.349999999999966, "o", "a"] +[20.379999999999967, "o", "p"] +[20.409999999999968, "o", "h"] +[20.43999999999997, "o", "/"] +[20.46999999999997, "o", "2"] +[20.49999999999997, "o", "0"] +[20.529999999999973, "o", "1"] +[20.559999999999974, "o", "6"] +[20.589999999999975, "o", "_"] +[20.619999999999976, "o", "e"] +[20.649999999999977, "o", "l"] +[20.67999999999998, "o", "e"] +[20.70999999999998, "o", "c"] +[20.73999999999998, "o", "t"] +[20.769999999999982, "o", "i"] +[20.799999999999983, "o", "o"] +[20.829999999999984, "o", "n"] +[20.859999999999985, "o", ":"] +[20.889999999999986, "o", "l"] +[20.919999999999987, "o", "a"] +[20.94999999999999, "o", "t"] +[20.97999999999999, "o", "e"] +[21.00999999999999, "o", "s"] +[21.039999999999992, "o", "t"] +[21.069999999999993, "o", " "] +[21.099999999999994, "o", "\\"] +[21.129999999999995, "o", "\r\n "] +[21.159999999999997, "o", "\""] +[21.189999999999998, "o", "S"] +[21.22, "o", "E"] +[21.25, "o", "L"] +[21.28, "o", "E"] +[21.310000000000002, "o", "C"] +[21.340000000000003, "o", "T"] +[21.370000000000005, "o", " "] +[21.400000000000006, "o", "S"] +[21.430000000000007, "o", "U"] +[21.460000000000008, "o", "M"] +[21.49000000000001, "o", "("] +[21.52000000000001, "o", "v"] +[21.55000000000001, "o", "o"] +[21.580000000000013, "o", "t"] +[21.610000000000014, "o", "e"] +[21.640000000000015, "o", "s"] +[21.670000000000016, "o", ")"] +[21.700000000000017, "o", " "] +[21.730000000000018, "o", "F"] +[21.76000000000002, "o", "R"] +[21.79000000000002, "o", "O"] +[21.82000000000002, "o", "M"] +[21.850000000000023, "o", " "] +[21.880000000000024, "o", "p"] +[21.910000000000025, "o", "r"] +[21.940000000000026, "o", "e"] +[21.970000000000027, "o", "c"] +[22.00000000000003, "o", "i"] +[22.03000000000003, "o", "n"] +[22.06000000000003, "o", "c"] +[22.090000000000032, "o", "t"] +[22.120000000000033, "o", "_"] +[22.150000000000034, "o", "r"] +[22.180000000000035, "o", "e"] +[22.210000000000036, "o", "s"] +[22.240000000000038, "o", "u"] +[22.27000000000004, "o", "l"] +[22.30000000000004, "o", "t"] +[22.33000000000004, "o", "s"] +[22.360000000000042, "o", " "] +[22.390000000000043, "o", "W"] +[22.420000000000044, "o", "H"] +[22.450000000000045, "o", "E"] +[22.480000000000047, "o", "R"] +[22.510000000000048, "o", "E"] +[22.54000000000005, "o", " "] +[22.57000000000005, "o", "s"] +[22.60000000000005, "o", "t"] +[22.630000000000052, "o", "a"] +[22.660000000000053, "o", "t"] +[22.690000000000055, "o", "e"] +[22.720000000000056, "o", " "] +[22.750000000000057, "o", "="] +[22.780000000000058, "o", " "] +[22.81000000000006, "o", "'"] +[22.84000000000006, "o", "N"] +[22.87000000000006, "o", "e"] +[22.900000000000063, "o", "w"] +[22.930000000000064, "o", " "] +[22.960000000000065, "o", "Y"] +[22.990000000000066, "o", "o"] +[23.020000000000067, "o", "r"] +[23.050000000000068, "o", "k"] +[23.08000000000007, "o", "'"] +[23.11000000000007, "o", "\""] +[23.14000000000007, "o", "\r\n"] +[23.170000000000073, "o", "$"] +[23.200000000000074, "o", " "] +[23.230000000000075, "o", "s"] +[23.260000000000076, "o", "g"] +[23.290000000000077, "o", "r"] +[23.32000000000008, "o", " "] +[23.35000000000008, "o", "o"] +[23.38000000000008, "o", "b"] +[23.410000000000082, "o", "j"] +[23.440000000000083, "o", "e"] +[23.470000000000084, "o", "c"] +[23.500000000000085, "o", "t"] +[23.530000000000086, "o", "s"] +[23.560000000000088, "o", " "] +[23.59000000000009, "o", "-"] +[23.62000000000009, "o", "-"] +[23.65000000000009, "o", "l"] +[23.680000000000092, "o", "o"] +[23.710000000000093, "o", "c"] +[23.740000000000094, "o", "a"] +[23.770000000000095, "o", "l"] +[23.800000000000097, "o", "\r\n"] +[23.830000000000098, "o", "\u001b[0m"] +[23.8600000000001, "o", "\r\n"] +[24.296584711074928, "o", "\r\n"] +[25.296584711074928, "o", "7.91188e+06\r\n"] +[25.752590522766212, "o", "o65dbd9dc992982689ec65866ab733be69c897c659d93488457a2fccb63e97c\r\no974b20261ee5f1ac124a8445a65c00e6377cfabb93b5db92bd60fc7ca3fcee\r\no9c33b53f1a4872c598ad9d08aaafd78fabce1f16ef4c5e19ad9756b9b85fda\r\no9d4cf85101cc4d431c895998cf1cad642f1fe6cd923c8209f2df38441afeeb\r\noc438159794e378ca23c306143ccdc7ce1683045f80a511aeeabb19302be63d\r\n"] +[25.782590522766213, "o", "\u001b[1m"] +[25.812590522766214, "o", "\u001b[36m"] +[25.842590522766216, "o", "\u001b[91m"] +[25.872590522766217, "o", "$"] +[25.902590522766218, "o", " "] +[25.93259052276622, "o", "\u001b[0m"] +[30.96259052276622, "o", "\u001b[H"] +[30.99259052276622, "o", "\u001b[J"] +[31.022590522766222, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Since default indexing in Splitgraph is done by min-max values for every column"] +[31.052590522766224, "o", "\r\n"] +[31.082590522766225, "o", "$ # in every fragment, it's going to do worse if multiple fragments span the same value\r\n"] +[31.112590522766226, "o", "$"] +[31.142590522766227, "o", " "] +[31.172590522766228, "o", "s"] +[31.20259052276623, "o", "g"] +[31.23259052276623, "o", "r"] +[31.26259052276623, "o", " "] +[31.292590522766233, "o", "s"] +[31.322590522766234, "o", "q"] +[31.352590522766235, "o", "l"] +[31.382590522766236, "o", " "] +[31.412590522766237, "o", "-"] +[31.44259052276624, "o", "-"] +[31.47259052276624, "o", "i"] +[31.50259052276624, "o", "m"] +[31.53259052276624, "o", "a"] +[31.562590522766243, "o", "g"] +[31.592590522766244, "o", "e"] +[31.622590522766245, "o", " "] +[31.652590522766246, "o", "s"] +[31.682590522766247, "o", "p"] +[31.71259052276625, "o", "l"] +[31.74259052276625, "o", "i"] +[31.77259052276625, "o", "t"] +[31.802590522766252, "o", "g"] +[31.832590522766253, "o", "r"] +[31.862590522766254, "o", "a"] +[31.892590522766255, "o", "p"] +[31.922590522766257, "o", "h"] +[31.952590522766258, "o", "/"] +[31.98259052276626, "o", "2"] +[32.01259052276626, "o", "0"] +[32.04259052276626, "o", "1"] +[32.07259052276626, "o", "6"] +[32.10259052276626, "o", "_"] +[32.132590522766264, "o", "e"] +[32.162590522766266, "o", "l"] +[32.19259052276627, "o", "e"] +[32.22259052276627, "o", "c"] +[32.25259052276627, "o", "t"] +[32.28259052276627, "o", "i"] +[32.31259052276627, "o", "o"] +[32.34259052276627, "o", "n"] +[32.372590522766274, "o", ":"] +[32.402590522766275, "o", "l"] +[32.432590522766276, "o", "a"] +[32.46259052276628, "o", "t"] +[32.49259052276628, "o", "e"] +[32.52259052276628, "o", "s"] +[32.55259052276628, "o", "t"] +[32.58259052276628, "o", " "] +[32.61259052276628, "o", "\\"] +[32.642590522766284, "o", "\r\n "] +[32.672590522766285, "o", "\""] +[32.702590522766286, "o", "E"] +[32.73259052276629, "o", "X"] +[32.76259052276629, "o", "P"] +[32.79259052276629, "o", "L"] +[32.82259052276629, "o", "A"] +[32.85259052276629, "o", "I"] +[32.88259052276629, "o", "N"] +[32.912590522766294, "o", " "] +[32.942590522766295, "o", "S"] +[32.972590522766296, "o", "E"] +[33.0025905227663, "o", "L"] +[33.0325905227663, "o", "E"] +[33.0625905227663, "o", "C"] +[33.0925905227663, "o", "T"] +[33.1225905227663, "o", " "] +[33.1525905227663, "o", "S"] +[33.182590522766304, "o", "U"] +[33.212590522766305, "o", "M"] +[33.24259052276631, "o", "("] +[33.27259052276631, "o", "v"] +[33.30259052276631, "o", "o"] +[33.33259052276631, "o", "t"] +[33.36259052276631, "o", "e"] +[33.39259052276631, "o", "s"] +[33.42259052276631, "o", ")"] +[33.452590522766315, "o", " "] +[33.482590522766316, "o", "F"] +[33.51259052276632, "o", "R"] +[33.54259052276632, "o", "O"] +[33.57259052276632, "o", "M"] +[33.60259052276632, "o", " "] +[33.63259052276632, "o", "p"] +[33.66259052276632, "o", "r"] +[33.692590522766324, "o", "e"] +[33.722590522766325, "o", "c"] +[33.752590522766326, "o", "i"] +[33.78259052276633, "o", "n"] +[33.81259052276633, "o", "c"] +[33.84259052276633, "o", "t"] +[33.87259052276633, "o", "_"] +[33.90259052276633, "o", "r"] +[33.93259052276633, "o", "e"] +[33.962590522766334, "o", "s"] +[33.992590522766335, "o", "u"] +[34.022590522766336, "o", "l"] +[34.05259052276634, "o", "t"] +[34.08259052276634, "o", "s"] +[34.11259052276634, "o", " "] +[34.14259052276634, "o", "W"] +[34.17259052276634, "o", "H"] +[34.20259052276634, "o", "E"] +[34.232590522766344, "o", "R"] +[34.262590522766345, "o", "E"] +[34.292590522766346, "o", " "] +[34.32259052276635, "o", "c"] +[34.35259052276635, "o", "o"] +[34.38259052276635, "o", "u"] +[34.41259052276635, "o", "n"] +[34.44259052276635, "o", "t"] +[34.47259052276635, "o", "y"] +[34.502590522766354, "o", "_"] +[34.532590522766355, "o", "n"] +[34.56259052276636, "o", "a"] +[34.59259052276636, "o", "m"] +[34.62259052276636, "o", "e"] +[34.65259052276636, "o", " "] +[34.68259052276636, "o", "="] +[34.71259052276636, "o", " "] +[34.74259052276636, "o", "'"] +[34.772590522766365, "o", "N"] +[34.802590522766366, "o", "e"] +[34.83259052276637, "o", "w"] +[34.86259052276637, "o", " "] +[34.89259052276637, "o", "Y"] +[34.92259052276637, "o", "o"] +[34.95259052276637, "o", "r"] +[34.98259052276637, "o", "k"] +[35.012590522766374, "o", " "] +[35.042590522766375, "o", "C"] +[35.072590522766376, "o", "o"] +[35.10259052276638, "o", "u"] +[35.13259052276638, "o", "n"] +[35.16259052276638, "o", "t"] +[35.19259052276638, "o", "y"] +[35.22259052276638, "o", "'"] +[35.25259052276638, "o", "\""] +[35.282590522766384, "o", "\r\n"] +[35.312590522766385, "o", "\u001b[0m"] +[35.342590522766386, "o", "\r\n"] +[36.342590522766386, "o", "Aggregate (cost=1893957.09..1893957.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..1889234.00 rows=1889234 width=1)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 1\r\nMulticorn: Scan through 19 object(s) (25.51 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Def"] +[36.3426029205325, "o", "orming true\r\n"] +[36.3726029205325, "o", "\u001b[1m"] +[36.4026029205325, "o", "\u001b[36m"] +[36.4326029205325, "o", "\u001b[91m"] +[36.462602920532504, "o", "$"] +[36.492602920532505, "o", " "] +[36.522602920532506, "o", "\u001b[0m"] +[41.55260292053251, "o", "\u001b[H"] +[41.58260292053251, "o", "\u001b[J"] +[41.61260292053251, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Let's download the whole dataset and add a bloom filter index on county_name"] +[41.64260292053251, "o", "\r\n"] +[41.67260292053251, "o", "$"] +[41.70260292053251, "o", " "] +[41.732602920532514, "o", "s"] +[41.762602920532515, "o", "g"] +[41.79260292053252, "o", "r"] +[41.82260292053252, "o", " "] +[41.85260292053252, "o", "r"] +[41.88260292053252, "o", "e"] +[41.91260292053252, "o", "i"] +[41.94260292053252, "o", "n"] +[41.97260292053252, "o", "d"] +[42.002602920532524, "o", "e"] +[42.032602920532526, "o", "x"] +[42.06260292053253, "o", " "] +[42.09260292053253, "o", "-"] +[42.12260292053253, "o", "i"] +[42.15260292053253, "o", " "] +[42.18260292053253, "o", "'"] +[42.21260292053253, "o", "{"] +[42.24260292053253, "o", "\""] +[42.272602920532535, "o", "b"] +[42.302602920532536, "o", "l"] +[42.33260292053254, "o", "o"] +[42.36260292053254, "o", "o"] +[42.39260292053254, "o", "m"] +[42.42260292053254, "o", "\""] +[42.45260292053254, "o", ":"] +[42.48260292053254, "o", " "] +[42.512602920532544, "o", "{"] +[42.542602920532545, "o", "\""] +[42.572602920532546, "o", "c"] +[42.60260292053255, "o", "o"] +[42.63260292053255, "o", "u"] +[42.66260292053255, "o", "n"] +[42.69260292053255, "o", "t"] +[42.72260292053255, "o", "y"] +[42.75260292053255, "o", "_"] +[42.782602920532554, "o", "n"] +[42.812602920532555, "o", "a"] +[42.842602920532556, "o", "m"] +[42.87260292053256, "o", "e"] +[42.90260292053256, "o", "\""] +[42.93260292053256, "o", ":"] +[42.96260292053256, "o", " "] +[42.99260292053256, "o", "{"] +[43.02260292053256, "o", "\""] +[43.052602920532564, "o", "p"] +[43.082602920532565, "o", "r"] +[43.11260292053257, "o", "o"] +[43.14260292053257, "o", "b"] +[43.17260292053257, "o", "a"] +[43.20260292053257, "o", "b"] +[43.23260292053257, "o", "i"] +[43.26260292053257, "o", "l"] +[43.29260292053257, "o", "i"] +[43.322602920532574, "o", "t"] +[43.352602920532576, "o", "y"] +[43.38260292053258, "o", "\""] +[43.41260292053258, "o", ":"] +[43.44260292053258, "o", " "] +[43.47260292053258, "o", "0"] +[43.50260292053258, "o", "."] +[43.53260292053258, "o", "0"] +[43.56260292053258, "o", "1"] +[43.592602920532585, "o", "}"] +[43.622602920532586, "o", "}"] +[43.65260292053259, "o", "}"] +[43.68260292053259, "o", "'"] +[43.71260292053259, "o", " "] +[43.74260292053259, "o", "\\"] +[43.77260292053259, "o", "\r\n "] +[43.80260292053259, "o", "s"] +[43.832602920532594, "o", "p"] +[43.862602920532595, "o", "l"] +[43.892602920532596, "o", "i"] +[43.9226029205326, "o", "t"] +[43.9526029205326, "o", "g"] +[43.9826029205326, "o", "r"] +[44.0126029205326, "o", "a"] +[44.0426029205326, "o", "p"] +[44.0726029205326, "o", "h"] +[44.102602920532604, "o", "/"] +[44.132602920532605, "o", "2"] +[44.162602920532606, "o", "0"] +[44.19260292053261, "o", "1"] +[44.22260292053261, "o", "6"] +[44.25260292053261, "o", "_"] +[44.28260292053261, "o", "e"] +[44.31260292053261, "o", "l"] +[44.34260292053261, "o", "e"] +[44.372602920532614, "o", "c"] +[44.402602920532615, "o", "t"] +[44.43260292053262, "o", "i"] +[44.46260292053262, "o", "o"] +[44.49260292053262, "o", "n"] +[44.52260292053262, "o", ":"] +[44.55260292053262, "o", "l"] +[44.58260292053262, "o", "a"] +[44.61260292053262, "o", "t"] +[44.642602920532624, "o", "e"] +[44.672602920532626, "o", "s"] +[44.70260292053263, "o", "t"] +[44.73260292053263, "o", " "] +[44.76260292053263, "o", "p"] +[44.79260292053263, "o", "r"] +[44.82260292053263, "o", "e"] +[44.85260292053263, "o", "c"] +[44.882602920532634, "o", "i"] +[44.912602920532635, "o", "n"] +[44.942602920532636, "o", "c"] +[44.97260292053264, "o", "t"] +[45.00260292053264, "o", "_"] +[45.03260292053264, "o", "r"] +[45.06260292053264, "o", "e"] +[45.09260292053264, "o", "s"] +[45.12260292053264, "o", "u"] +[45.152602920532644, "o", "l"] +[45.182602920532645, "o", "t"] +[45.212602920532646, "o", "s"] +[45.24260292053265, "o", "\r\n"] +[45.27260292053265, "o", "\u001b[0m"] +[45.30260292053265, "o", "\r\n"] +[45.729098949432796, "o", "Reindexing table splitgraph/2016_election:3835145ada3f07cad99087d1b1071122d58c48783cbfe4694c101d35651fba90/precinct_results\r\n"] +[45.76638451576275, "o", "Need to download 20 objects (20.19 MiB), cache occupancy: 6.63 MiB/10.00 GiB\r\n"] +[45.82573715210003, "o", "Fetching 15 objects, total size 20.19 MiB\r\n"] +[45.82691279411358, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (85b17bb993c0441f83f3619be8faba12@data.splitgraph.com:5432/sgregistry)...\r\n"] +[46.82691279411358, "o", "\r 0%| | 0/15 [00:00 Foreign Scan on precinct_results (cost=20.00..200000.00 rows=200000 width=1)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 18\r\nMulticorn: Scan through 2 object(s) (2.64 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining false, Optimization false, Expressions true, Deform"] +[106.29742622375548, "o", "ing true\r\n"] +[106.32742622375548, "o", "\u001b[1m"] +[106.35742622375548, "o", "\u001b[36m"] +[106.38742622375548, "o", "\u001b[91m"] +[106.41742622375548, "o", "$"] +[106.44742622375549, "o", " "] +[106.47742622375549, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.3.0/dbt.cast b/content/casts/versioned/archive/v0.3.0/dbt.cast new file mode 100644 index 00000000..a87a53aa --- /dev/null +++ b/content/casts/versioned/archive/v0.3.0/dbt.cast @@ -0,0 +1,2281 @@ +{"version": 2, "width": 100, "height": 55, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1639770048, "metadata": {"tss": [{"h": "dbt must be installed for this to work (pip install dbt)", "ts": 0.06}, {"h": "Ingest the initial data (in CSV) from this branch of the project.", "ts": 10.54704405784606}, {"h": "Snapshot the initial data with Splitgraph.", "ts": 25.471877813339262}, {"h": "Inspect the original data", "ts": 35.32119869232193}, {"h": "The status column in the raw_orders table in the initial dataset can", "ts": 48.32119869232193}, {"h": "Commit this dataset and check out the original data", "ts": 59.28486322402989}, {"h": "Check out the 'serious' version of the dbt project that uses data from", "ts": 69.75478031158497}, {"h": "Check that dbt is set up to connect to the Splitgraph engine.", "ts": 80.75478031158497}, {"h": "Now run the dbt models.", "ts": 107.75478031158497}, {"h": "Take a look at the built dataset and commit it.", "ts": 127.25478031158497}, {"h": "Check out the new version of the raw dataset and run dbt against it as well.", "ts": 141.75478031158497}, {"h": "Create an image from the new data.", "ts": 161.75478031158497}, {"h": "We now have two versions of the source and the target dataset.", "ts": 171.75478031158497}, {"h": "Inspect the difference between the two datasets that dbt built.", "ts": 179.56347510337886}, {"h": "Run a sample query: how much in bank transfer refunds did we process?", "ts": 189.06347510337886}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # dbt must be installed for this to work (pip install dbt)"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Clone the Jaffle Shop dbt example project\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "d"] +[0.27, "o", "b"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "-"] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "v"] +[0.4500000000000002, "o", "e"] +[0.4800000000000002, "o", "r"] +[0.5100000000000002, "o", "s"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "n"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "$"] +[0.6900000000000004, "o", " "] +[0.7200000000000004, "o", "g"] +[0.7500000000000004, "o", "i"] +[0.7800000000000005, "o", "t"] +[0.8100000000000005, "o", " "] +[0.8400000000000005, "o", "c"] +[0.8700000000000006, "o", "l"] +[0.9000000000000006, "o", "o"] +[0.9300000000000006, "o", "n"] +[0.9600000000000006, "o", "e"] +[0.9900000000000007, "o", " "] +[1.0200000000000007, "o", "h"] +[1.0500000000000007, "o", "t"] +[1.0800000000000007, "o", "t"] +[1.1100000000000008, "o", "p"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", ":"] +[1.2000000000000008, "o", "/"] +[1.2300000000000009, "o", "/"] +[1.260000000000001, "o", "g"] +[1.290000000000001, "o", "i"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", "h"] +[1.380000000000001, "o", "u"] +[1.410000000000001, "o", "b"] +[1.440000000000001, "o", "."] +[1.470000000000001, "o", "c"] +[1.500000000000001, "o", "o"] +[1.5300000000000011, "o", "m"] +[1.5600000000000012, "o", "/"] +[1.5900000000000012, "o", "s"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "l"] +[1.6800000000000013, "o", "i"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "g"] +[1.7700000000000014, "o", "r"] +[1.8000000000000014, "o", "a"] +[1.8300000000000014, "o", "p"] +[1.8600000000000014, "o", "h"] +[1.8900000000000015, "o", "/"] +[1.9200000000000015, "o", "j"] +[1.9500000000000015, "o", "a"] +[1.9800000000000015, "o", "f"] +[2.0100000000000016, "o", "f"] +[2.0400000000000014, "o", "l"] +[2.070000000000001, "o", "e"] +[2.100000000000001, "o", "_"] +[2.130000000000001, "o", "s"] +[2.1600000000000006, "o", "h"] +[2.1900000000000004, "o", "o"] +[2.22, "o", "p"] +[2.25, "o", "_"] +[2.28, "o", "a"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "c"] +[2.369999999999999, "o", "h"] +[2.399999999999999, "o", "i"] +[2.429999999999999, "o", "v"] +[2.4599999999999986, "o", "e"] +[2.4899999999999984, "o", "."] +[2.5199999999999982, "o", "g"] +[2.549999999999998, "o", "i"] +[2.579999999999998, "o", "t"] +[2.6099999999999977, "o", "\r\n"] +[2.6399999999999975, "o", "$"] +[2.6699999999999973, "o", " "] +[2.699999999999997, "o", "m"] +[2.729999999999997, "o", "v"] +[2.7599999999999967, "o", " "] +[2.7899999999999965, "o", "j"] +[2.8199999999999963, "o", "a"] +[2.849999999999996, "o", "f"] +[2.879999999999996, "o", "f"] +[2.9099999999999957, "o", "l"] +[2.9399999999999955, "o", "e"] +[2.9699999999999953, "o", "_"] +[2.999999999999995, "o", "s"] +[3.029999999999995, "o", "h"] +[3.0599999999999947, "o", "o"] +[3.0899999999999945, "o", "p"] +[3.1199999999999943, "o", "_"] +[3.149999999999994, "o", "a"] +[3.179999999999994, "o", "r"] +[3.2099999999999937, "o", "c"] +[3.2399999999999936, "o", "h"] +[3.2699999999999934, "o", "i"] +[3.299999999999993, "o", "v"] +[3.329999999999993, "o", "e"] +[3.3599999999999928, "o", " "] +[3.3899999999999926, "o", "j"] +[3.4199999999999924, "o", "a"] +[3.449999999999992, "o", "f"] +[3.479999999999992, "o", "f"] +[3.509999999999992, "o", "l"] +[3.5399999999999916, "o", "e"] +[3.5699999999999914, "o", "_"] +[3.599999999999991, "o", "s"] +[3.629999999999991, "o", "h"] +[3.659999999999991, "o", "o"] +[3.6899999999999906, "o", "p"] +[3.7199999999999904, "o", "\r\n"] +[3.7499999999999902, "o", "\u001b[0m"] +[3.77999999999999, "o", "\r\n"] +[4.7799999999999905, "o", "installed version: 1.0.0\r\n latest version: 1.0.0\r\n\r\nUp to date!\r\n\r\nPlugins:\r\n - postgres: 1.0.0\r\n"] +[4.780081300735464, "o", "\u001b[0m"] +[4.782917766571035, "o", "Cloning into 'jaffle_shop_archive'...\r\n"] +[5.253615884780874, "o", "remote: Enumerating objects: 417, done. \r\nremote: Counting objects: 0% (1/417) \rremote: Counting objects: 1% (5/417) \r"] +[5.253711490631094, "o", "remote: Counting objects: 2% (9/417) \rremote: Counting objects: 3% (13/417) \rremote: Counting objects: 4% (17/417) \rremote: Counting objects: 5% (21/417) \rremote: Counting objects: 6% (26/417) \rremote: Counting objects: 7% (30/417) \rremote: Counting objects: 8% (34/417) \rremote: Counting objects: 9% (38/417) \rremote: Counting objects: 10% (42/417) \rremote: Counting objects: 11% (46/417) \rremote: Counting objects: 12% (5"] +[5.253856925964346, "o", "1/417) \rremote: Counting objects: 13% (55/417) \rremote: Counting objects: 14% (59/417) \rremote: Counting objects: 15% (63/417) \rremote: Counting objects: 16% (67/417) \rremote: Counting objects: 17% (71/417) \rremote: Counting objects: 18% (76/417) \rremote: Counting objects: 19% (80/417) \rremote: Counting objects: 20% (84/417) \rremote: Counting objects: 21% (88/417) \rremote: Counting objects: 22% (92/417) \rremote: Counting "] +[5.2539646911621, "o", "objects: 23% (96/417) \rremote: Counting objects: 24% (101/417) \rremote: Counting objects: 25% (105/417) \rremote: Counting objects: 26% (109/417) \rremote: Counting objects: 27% (113/417) \rremote: Counting objects: 28% (117/417) \rremote: Counting objects: 29% (121/417) \rremote: Counting objects: 30% (126/417) \rremote: Counting objects: 31% (130/417) \rremote: Counting objects: 32% (134/417) \rremote: Counting objects: 33% (138/417)"] +[5.254029779434195, "o", " \rremote: Counting objects: 34% (142/417) \rremote: Counting objects: 35% (146/417) \rremote: Counting objects: 36% (151/417) \rremote: Counting objects: 37% (155/417) \rremote: Counting objects: 38% (159/417) \rremote: Counting objects: 39% (163/417) \rremote: Counting objects: 40% (167/417) \rremote: Counting objects: 41% (171/417) \rremote: Counting objects: 42% (176/417) \rremote: Counting objects: 43% (180/417) \rremote: Count"] +[5.254107265472403, "o", "ing objects: 44% (184/417) \rremote: Counting objects: 45% (188/417) \rremote: Counting objects: 46% (192/417) \rremote: Counting objects: 47% (196/417) \rremote: Counting objects: 48% (201/417) \rremote: Counting objects: 49% (205/417) \rremote: Counting objects: 50% (209/417) \rremote: Counting objects: 51% (213/417) \rremote: Counting objects: 52% (217/417) \rremote: Counting objects: 53% (222/417) \rremote: Counting objects: 54% (226"] +[5.254194049835196, "o", "/417) \rremote: Counting objects: 55% (230/417) \rremote: Counting objects: 56% (234/417) \rremote: Counting objects: 57% (238/417) \rremote: Counting objects: 58% (242/417) \rremote: Counting objects: 59% (247/417) \rremote: Counting objects: 60% (251/417) \rremote: Counting objects: 61% (255/417) \rremote: Counting objects: 62% (259/417) \rremote: Counting objects: 63% (263/417) \rremote: Counting objects: 64% (267/417) \rremote: "] +[5.254278688430777, "o", "Counting objects: 65% (272/417) \rremote: Counting objects: 66% (276/417) \rremote: Counting objects: 67% (280/417) \rremote: Counting objects: 68% (284/417) \rremote: Counting objects: 69% (288/417) \rremote: Counting objects: 70% (292/417) \rremote: Counting objects: 71% (297/417) \rremote: Counting objects: 72% (301/417) \rremote: Counting objects: 73% (305/417) \rremote: Counting objects: 74% (309/417) \rremote: Counting objects: 75%"] +[5.2543113517761135, "o", " (313/417) \rremote: Counting objects: 76% (317/417) \rremote: Counting objects: 77% (322/417) \rremote: Counting objects: 78% (326/417) \rremote: Counting objects: 79% (330/417) \rremote: Counting objects: 80% (334/417) \rremote: Counting objects: 81% (338/417) \rremote: Counting objects: 82% (342/417) \rremote: Counting objects: 83% (347/417) \rremote: Counting objects: 84% (351/417) \rremote: Counting objects: 85% (355/417) \rrem"] +[5.254369287490835, "o", "ote: Counting objects: 86% (359/417) \rremote: Counting objects: 87% (363/417) \rremote: Counting objects: 88% (367/417) \rremote: Counting objects: 89% (372/417) \rremote: Counting objects: 90% (376/417) \rremote: Counting objects: 91% (380/417) \rremote: Counting objects: 92% (384/417) \rremote: Counting objects: 93% (388/417) \rremote: Counting objects: 94% (392/417) \rremote: Counting objects: 95% (397/417) \rremote: Counting objects:"] +[5.254422454833975, "o", " 96% (401/417) \rremote: Counting objects: 97% (405/417) \rremote: Counting objects: 98% (409/417) \rremote: Counting objects: 99% (413/417) \rremote: Counting objects: 100% (417/417) \rremote: Counting objects: 100% (417/417), done. \r\nremote: Compressing objects: 0% (1/179) \rremote: Compressing objects: 1% (2/179) \rremote: Compressing objects: 2% (4/179) \rremote: Compressing objects: 3% (6/179) \rremote: Compressing objects: 4% ("] +[5.254457263946524, "o", "8/179) \rremote: Compressing objects: 5% (9/179) \rremote: Compressing objects: 6% (11/179) \rremote: Compressing objects: 7% (13/179) \rremote: Compressing objects: 8% (15/179) \rremote: Compressing objects: 9% (17/179) \rremote: Compressing objects: 10% (18/179) \rremote: Compressing objects: 11% (20/179) \rremote: Compressing objects: 12% (22/179) \rremote: Compressing objects: 13% (24/179) \rremote: Compressing objects: 14% (26/1"] +[5.25449278831481, "o", "79) \rremote: Compressing objects: 15% (27/179) \rremote: Compressing objects: 16% (29/179) \rremote: Compressing objects: 17% (31/179) \rremote: Compressing objects: 18% (33/179) \rremote: Compressing objects: 19% (35/179) \rremote: Compressing objects: 20% (36/179) \rremote: Compressing objects: 21% (38/179) \rremote: Compressing objects: 22% (40/179) \rremote: Compressing objects: 23% (42/179) \rremote: Compressing objects: 24% (43/179"] +[5.254502801895132, "o", ") \rremote: Compressing objects: 25% (45/179) \rremote: Compressing objects: 26% (47/179) \rremote: Compressing objects: 27% (49/179) \rremote: Compressing objects: 28% (51/179) \rremote: Compressing objects: 29% (52/179) \rremote: Compressing objects: 30% (54/179) \rremote: Compressing objects: 31% (56/179) \rremote: Compressing objects: 32% (58/179) \rremote: Compressing objects: 33% (60/179) \rremote: Compressing objects: 34% (61/179) "] +[5.254507093429556, "o", " \rremote: Compressing objects: 35% (63/179) \rremote: Compressing objects: 36% (65/179) \rremote: Compressing objects: 37% (67/179) \rremote: Compressing objects: 38% (69/179) \rremote: Compressing objects: 39% (70/179) \rremote: Compressing objects: 40% (72/179) \rremote: Compressing objects: 41% (74/179) \rremote: Compressing objects: 42% (76/179) \rremote: Compressing objects: 43% (77/179) \rremote: Compressing objects: 44% (79/179) "] +[5.254511623382559, "o", " \rremote: Compressing objects: 45% (81/179) \rremote: Compressing objects: 46% (83/179) \rremote: Compressing objects: 47% (85/179) \rremote: Compressing objects: 48% (86/179) \rremote: Compressing objects: 49% (88/179) \rremote: Compressing objects: 50% (90/179) \rremote: Compressing objects: 51% (92/179) \rremote: Compressing objects: 52% (94/179) \rremote: Compressing objects: 53% (95/179) \rremote: Compressing objects: 54% (97/179) "] +[5.254518060684195, "o", " \rremote: Compressing objects: 55% (99/179) \rremote: Compressing objects: 56% (101/179) \rremote: Compressing objects: 57% (103/179) \rremote: Compressing objects: 58% (104/179) \rremote: Compressing objects: 59% (106/179) \rremote: Compressing objects: 60% (108/179) \rremote: Compressing objects: 61% (110/179) \rremote: Compressing objects: 62% (111/179) \rremote: Compressing objects: 63% (113/179) \rremote: Compressing objects: 64% (115/17"] +[5.2545225906371975, "o", "9) \rremote: Compressing objects: 65% (117/179) \rremote: Compressing objects: 66% (119/179) \rremote: Compressing objects: 67% (120/179) \rremote: Compressing objects: 68% (122/179) \rremote: Compressing objects: 69% (124/179) \rremote: Compressing objects: 70% (126/179) \rremote: Compressing objects: 71% (128/179) \rremote: Compressing objects: 72% (129/179) \rremote: Compressing objects: 73% (131/179) \rremote: Compressing objects: 74%"] +[5.2545271205902, "o", " (133/179) \rremote: Compressing objects: 75% (135/179) \rremote: Compressing objects: 76% (137/179) \rremote: Compressing objects: 77% (138/179) \rremote: Compressing objects: 78% (140/179) \rremote: Compressing objects: 79% (142/179) \rremote: Compressing objects: 80% (144/179) \rremote: Compressing objects: 81% (145/179) \rremote: Compressing objects: 82% (147/179) \rremote: Compressing objects: 83% (149/179) \rremote: Compressing objec"] +[5.254533319473257, "o", "ts: 84% (151/179) \rremote: Compressing objects: 85% (153/179) \rremote: Compressing objects: 86% (154/179) \rremote: Compressing objects: 87% (156/179) \rremote: Compressing objects: 88% (158/179) \rremote: Compressing objects: 89% (160/179) \rremote: Compressing objects: 90% (162/179) \rremote: Compressing objects: 91% (163/179) \rremote: Compressing objects: 92% (165/179) \rremote: Compressing objects: 93% (167/179) \rremote: Compressi"] +[5.254539995193472, "o", "ng objects: 94% (169/179) \rremote: Compressing objects: 95% (171/179) \rremote: Compressing objects: 96% (172/179) \rremote: Compressing objects: 97% (174/179) \rremote: Compressing objects: 98% (176/179) \rremote: Compressing objects: 99% (178/179) \rremote: Compressing objects: 100% (179/179) \rremote: Compressing objects: 100% (179/179), done. \r\n"] +[5.260333328247061, "o", "Receiving objects: 0% (1/417)\r"] +[5.260493545532217, "o", "Receiving objects: 1% (5/417)\r"] +[5.26083519935607, "o", "Receiving objects: 2% (9/417)\r"] +[5.261083393096914, "o", "Receiving objects: 3% (13/417)\r"] +[5.261368780136099, "o", "Receiving objects: 4% (17/417)\r"] +[5.261542110443106, "o", "Receiving objects: 5% (21/417)\r"] +[5.261748580932608, "o", "Receiving objects: 6% (26/417)\r"] +[5.2619452762603665, "o", "Receiving objects: 7% (30/417)\r"] +[5.26218584060668, "o", "Receiving objects: 8% (34/417)\r"] +[5.26239278793334, "o", "Receiving objects: 9% (38/417)\r"] +[5.262573032379141, "o", "Receiving objects: 10% (42/417)\r"] +[5.262768774032583, "o", "Receiving objects: 11% (46/417)\r"] +[5.263021020889273, "o", "Receiving objects: 12% (51/417)\r"] +[5.263221292495718, "o", "Receiving objects: 13% (55/417)\r"] +[5.263414173126211, "o", "Receiving objects: 14% (59/417)\r"] +[5.263646869659414, "o", "Receiving objects: 15% (63/417)\r"] +[5.263823776245108, "o", "Receiving objects: 16% (67/417)\r"] +[5.264009265899649, "o", "Receiving objects: 17% (71/417)\r"] +[5.264246253967276, "o", "Receiving objects: 18% (76/417)\r"] +[5.264446525573721, "o", "Receiving objects: 19% (80/417)\r"] +[5.264721422195425, "o", "Receiving objects: 20% (84/417)\r"] +[5.2649219322204495, "o", "Receiving objects: 21% (88/417)\r"] +[5.265343456268301, "o", "Receiving objects: 22% (92/417)\r"] +[5.265511779785147, "o", "Receiving objects: 23% (96/417)\r"] +[5.26864483833312, "o", "Receiving objects: 24% (101/417)\r"] +[5.268900661468496, "o", "Receiving objects: 25% (105/417)\r"] +[5.269094018936148, "o", "Receiving objects: 26% (109/417)\r"] +[5.269261865615835, "o", "Receiving objects: 27% (113/417)\r"] +[5.26945426940917, "o", "Receiving objects: 28% (117/417)\r"] +[5.269639759063711, "o", "Receiving objects: 29% (121/417)\r"] +[5.269824295043936, "o", "Receiving objects: 30% (126/417)\r"] +[5.26999047279357, "o", "Receiving objects: 31% (130/417)\r"] +[5.270122556686392, "o", "Receiving objects: 32% (134/417)\r"] +[5.2702720451354885, "o", "Receiving objects: 33% (138/417)\r"] +[5.270418434143057, "o", "Receiving objects: 34% (142/417)\r"] +[5.270572690963736, "o", "Receiving objects: 35% (146/417)\r"] +[5.270792989730825, "o", "Receiving objects: 36% (151/417)\r"] +[5.270999937057486, "o", "Receiving objects: 37% (155/417)\r"] +[5.27118709564208, "o", "Receiving objects: 38% (159/417)\r"] +[5.271374492645254, "o", "Receiving objects: 39% (163/417)\r"] +[5.271520643234243, "o", "Receiving objects: 40% (167/417)\r"] +[5.271733551025381, "o", "Receiving objects: 41% (171/417)\r"] +[5.271927862167349, "o", "Receiving objects: 42% (176/417)\r"] +[5.272084503173819, "o", "Receiving objects: 43% (180/417)\r"] +[5.277749090194693, "o", "Receiving objects: 44% (184/417)\r"] +[5.27840784072875, "o", "Receiving objects: 45% (188/417)\r"] +[5.278458862304678, "o", "Receiving objects: 46% (192/417)\r"] +[5.278616695404043, "o", "Receiving objects: 47% (196/417)\r"] +[5.2791431236266995, "o", "Receiving objects: 48% (201/417)\r"] +[5.282168416976919, "o", "Receiving objects: 49% (205/417)\rReceiving objects: 50% (209/417)\rReceiving objects: 51% (213/417)\r"] +[5.2824955272674465, "o", "Receiving objects: 52% (217/417)\r"] +[5.282689838409414, "o", "Receiving objects: 53% (222/417)\r"] +[5.2830846595764065, "o", "Receiving objects: 54% (226/417)\r"] +[5.283528118133535, "o", "Receiving objects: 55% (230/417)\r"] +[5.283665208816519, "o", "Receiving objects: 56% (234/417)\r"] +[5.283927230834951, "o", "remote: Total 417 (delta 201), reused 414 (delta 198), pack-reused 0 \r\n"] +[5.284101753234854, "o", "Receiving objects: 57% (238/417)\r"] +[5.284409790039053, "o", "Receiving objects: 58% (242/417)\r"] +[5.284489183425894, "o", "Receiving objects: 59% (247/417)\r"] +[5.2845282840728665, "o", "Receiving objects: 60% (251/417)\r"] +[5.284581212997427, "o", "Receiving objects: 61% (255/417)\r"] +[5.284623889923086, "o", "Receiving objects: 62% (259/417)\r"] +[5.2846293735504055, "o", "Receiving objects: 63% (263/417)\r"] +[5.284667043685904, "o", "Receiving objects: 64% (267/417)\r"] +[5.28473952293395, "o", "Receiving objects: 65% (272/417)\r"] +[5.284768371582022, "o", "Receiving objects: 66% (276/417)\r"] +[5.284825353622427, "o", "Receiving objects: 67% (280/417)\r"] +[5.284863023757925, "o", "Receiving objects: 68% (284/417)\r"] +[5.2849088001251125, "o", "Receiving objects: 69% (288/417)\r"] +[5.284946470260611, "o", "Receiving objects: 70% (292/417)\r"] +[5.284987478256216, "o", "Receiving objects: 71% (297/417)\r"] +[5.28505805015563, "o", "Receiving objects: 72% (301/417)\r"] +[5.285083322525015, "o", "Receiving objects: 73% (305/417)\r"] +[5.285117416381826, "o", "Receiving objects: 74% (309/417)\r"] +[5.285146265029898, "o", "Receiving objects: 75% (313/417)\r"] +[5.2851996707916165, "o", "Receiving objects: 76% (317/417)\r"] +[5.285271434783926, "o", "Receiving objects: 77% (322/417)\r"] +[5.285311489105215, "o", "Receiving objects: 78% (326/417)\r"] +[5.285350351333609, "o", "Receiving objects: 79% (330/417)\r"] +[5.285389213562002, "o", "Receiving objects: 80% (334/417)\r"] +[5.285414009094229, "o", "Receiving objects: 81% (338/417)\r"] +[5.285474090576162, "o", "Receiving objects: 82% (342/417)\r"] +[5.285523920059195, "o", "Receiving objects: 83% (347/417)\r"] +[5.285572080612173, "o", "Receiving objects: 84% (351/417)\r"] +[5.285613088607779, "o", "Receiving objects: 85% (355/417)\r"] +[5.285651712417593, "o", "Receiving objects: 86% (359/417)\r"] +[5.285682945251455, "o", "Receiving objects: 87% (363/417)\r"] +[5.2857163238525295, "o", "Receiving objects: 88% (367/417)\r"] +[5.285786180496206, "o", "Receiving objects: 89% (372/417)\r"] +[5.2858710575103665, "o", "Receiving objects: 90% (376/417)\r"] +[5.28594449043273, "o", "Receiving objects: 91% (380/417)\r"] +[5.285979299545279, "o", "Receiving objects: 92% (384/417)\r"] +[5.2860284137725735, "o", "Receiving objects: 93% (388/417)\r"] +[5.286060600280752, "o", "Receiving objects: 94% (392/417)\r"] +[5.286139755249014, "o", "Receiving objects: 95% (397/417)\r"] +[5.286194114685049, "o", "Receiving objects: 96% (401/417)\r"] +[5.286222009658804, "o", "Receiving objects: 97% (405/417)\r"] +[5.286266355514517, "o", "Receiving objects: 98% (409/417)\r"] +[5.286299734115591, "o", "Receiving objects: 99% (413/417)\r"] +[5.286376743316641, "o", "Receiving objects: 100% (417/417)\r"] +[5.286414413452139, "o", "Receiving objects: 100% (417/417), 270.94 KiB | 10.03 MiB/s, done.\r\n"] +[5.286625890731802, "o", "Resolving deltas: 0% (0/201)\r"] +[5.286726264953604, "o", "Resolving deltas: 1% (3/201)\r"] +[5.286815910339346, "o", "Resolving deltas: 2% (5/201)\r"] +[5.286885766983023, "o", "Resolving deltas: 3% (7/201)\r"] +[5.286940126419058, "o", "Resolving deltas: 4% (9/201)\r"] +[5.286992101669302, "o", "Resolving deltas: 5% (11/201)\r"] +[5.287026433944693, "o", "Resolving deltas: 6% (13/201)\r"] +[5.287064819335928, "o", "Resolving deltas: 7% (15/201)\r"] +[5.287189512252798, "o", "Resolving deltas: 8% (17/201)\r"] +[5.287283687591543, "o", "Resolving deltas: 9% (19/201)\r"] +[5.287363796234121, "o", "Resolving deltas: 10% (21/201)\r"] +[5.287442235946646, "o", "Resolving deltas: 11% (23/201)\r"] +[5.287492780685415, "o", "Resolving deltas: 12% (25/201)\r"] +[5.287538080215445, "o", "Resolving deltas: 13% (27/201)\r"] +[5.28758695602416, "o", "Resolving deltas: 14% (29/201)\r"] +[5.287627725601187, "o", "Resolving deltas: 15% (31/201)\r"] +[5.287687330245962, "o", "Resolving deltas: 16% (33/201)\r"] +[5.287734537124624, "o", "Resolving deltas: 17% (35/201)\r"] +[5.287776498794546, "o", "Resolving deltas: 18% (37/201)\r"] +[5.287821321487417, "o", "Resolving deltas: 19% (39/201)\r"] +[5.287866382598867, "o", "Resolving deltas: 20% (41/201)\r"] +[5.287924795150747, "o", "Resolving deltas: 21% (43/201)\r"] +[5.287978916168203, "o", "Resolving deltas: 22% (45/201)\r"] +[5.288016586303701, "o", "Resolving deltas: 23% (47/201)\r"] +[5.288077621459951, "o", "Resolving deltas: 24% (49/201)\r"] +[5.288152484893789, "o", "Resolving deltas: 25% (51/201)\r"] +[5.288207559585562, "o", "Resolving deltas: 26% (53/201)\r"] +[5.288270740509024, "o", "Resolving deltas: 27% (55/201)\r"] +[5.288334875106802, "o", "Resolving deltas: 28% (57/201)\r"] +[5.288412599563589, "o", "Resolving deltas: 29% (59/201)\r"] +[5.288466482162466, "o", "Resolving deltas: 30% (61/201)\r"] +[5.288511781692495, "o", "Resolving deltas: 31% (63/201)\r"] +[5.288553266525259, "o", "Resolving deltas: 32% (65/201)\r"] +[5.28859546661376, "o", "Resolving deltas: 33% (67/201)\r"] +[5.288630990982046, "o", "Resolving deltas: 34% (69/201)\r"] +[5.288666038513174, "o", "Resolving deltas: 35% (71/201)\r"] +[5.288701324462881, "o", "Resolving deltas: 36% (73/201)\r"] +[5.288736848831167, "o", "Resolving deltas: 37% (75/201)\r"] +[5.28878930091857, "o", "Resolving deltas: 38% (77/201)\r"] +[5.288835315704336, "o", "Resolving deltas: 39% (79/201)\r"] +[5.288876562118521, "o", "Resolving deltas: 40% (81/201)\r"] +[5.288912086486807, "o", "Resolving deltas: 41% (83/201)\r"] +[5.288953571319571, "o", "Resolving deltas: 42% (85/201)\r"] +[5.288994102478018, "o", "Resolving deltas: 43% (87/201)\r"] +[5.289031295776358, "o", "Resolving deltas: 44% (89/201)\r"] +[5.289066581726065, "o", "Resolving deltas: 45% (91/201)\r"] +[5.289147644042959, "o", "Resolving deltas: 46% (93/201)\r"] +[5.289201526641836, "o", "Resolving deltas: 47% (95/201)\r"] +[5.28923776626586, "o", "Resolving deltas: 48% (97/201)\r"] +[5.289280443191519, "o", "Resolving deltas: 49% (99/201)\r"] +[5.2893243122100735, "o", "Resolving deltas: 50% (101/201)\r"] +[5.289364604949942, "o", "Resolving deltas: 51% (103/201)\r"] +[5.2894041824340725, "o", "Resolving deltas: 52% (105/201)\r"] +[5.289440898895254, "o", "Resolving deltas: 53% (107/201)\r"] +[5.2894769001006985, "o", "Resolving deltas: 54% (109/201)\r"] +[5.289512424468985, "o", "Resolving deltas: 55% (111/201)\r"] +[5.289546995162954, "o", "Resolving deltas: 56% (113/201)\r"] +[5.28958275794982, "o", "Resolving deltas: 57% (115/201)\r"] +[5.289627580642691, "o", "Resolving deltas: 58% (117/201)\r"] +[5.289671211242666, "o", "Resolving deltas: 59% (119/201)\r"] +[5.289708404541006, "o", "Resolving deltas: 60% (121/201)\r"] +[5.289745121002188, "o", "Resolving deltas: 61% (123/201)\r"] +[5.289787321090689, "o", "Resolving deltas: 62% (125/201)\r"] +[5.289835004806509, "o", "Resolving deltas: 63% (127/201)\r"] +[5.289878873825064, "o", "Resolving deltas: 64% (129/201)\r"] +[5.290305404663076, "o", "Resolving deltas: 65% (131/201)\r"] +[5.290469675064077, "o", "Resolving deltas: 66% (133/201)\r"] +[5.2906341838836575, "o", "Resolving deltas: 67% (135/201)\r"] +[5.290792970657339, "o", "Resolving deltas: 68% (137/201)\r"] +[5.290950326919546, "o", "Resolving deltas: 69% (139/201)\r"] +[5.291116027832022, "o", "Resolving deltas: 70% (141/201)\r"] +[5.291271476745596, "o", "Resolving deltas: 71% (143/201)\r"] +[5.291425733566275, "o", "Resolving deltas: 72% (145/201)\r"] +[5.291665582656851, "o", "Resolving deltas: 73% (147/201)\r"] +[5.291858701705923, "o", "Resolving deltas: 74% (149/201)\r"] +[5.292571096420279, "o", "Resolving deltas: 75% (151/201)\rResolving deltas: 76% (153/201)\rResolving deltas: 77% (155/201)\rResolving deltas: 78% (157/201)\rResolving deltas: 79% (159/201)\r"] +[5.2946765708923245, "o", "Resolving deltas: 80% (161/201)\r"] +[5.2961108970641995, "o", "Resolving deltas: 81% (163/201)\r"] +[5.296721963882437, "o", "Resolving deltas: 82% (165/201)\r"] +[5.297151832580557, "o", "Resolving deltas: 83% (167/201)\r"] +[5.2975688266754055, "o", "Resolving deltas: 84% (169/201)\r"] +[5.297979860305777, "o", "Resolving deltas: 85% (171/201)\r"] +[5.3012943553924465, "o", "Resolving deltas: 86% (173/201)\r"] +[5.3040244865417385, "o", "Resolving deltas: 87% (175/201)\r"] +[5.305427341461172, "o", "Resolving deltas: 88% (177/201)\r"] +[5.305614500045767, "o", "Resolving deltas: 89% (179/201)\r"] +[5.305704145431509, "o", "Resolving deltas: 90% (181/201)\r"] +[5.305753498077383, "o", "Resolving deltas: 91% (183/201)\r"] +[5.305788307189932, "o", "Resolving deltas: 92% (185/201)\r"] +[5.305829792022696, "o", "Resolving deltas: 93% (187/201)\r"] +[5.30593731880187, "o", "Resolving deltas: 94% (189/201)\r"] +[5.305990009307852, "o", "Resolving deltas: 95% (191/201)\r"] +[5.3060245800018215, "o", "Resolving deltas: 96% (193/201)\r"] +[5.306085376739492, "o", "Resolving deltas: 97% (195/201)\r"] +[5.30613639831542, "o", "Resolving deltas: 98% (197/201)\r"] +[5.306180744171133, "o", "Resolving deltas: 99% (199/201)\r"] +[5.306638984680166, "o", "Resolving deltas: 100% (201/201)\r"] +[5.30704405784606, "o", "Resolving deltas: 100% (201/201), done.\r\n"] +[5.33704405784606, "o", "\u001b[1m"] +[5.36704405784606, "o", "\u001b[36m"] +[5.397044057846061, "o", "\u001b[91m"] +[5.427044057846061, "o", "$"] +[5.457044057846061, "o", " "] +[5.487044057846061, "o", "\u001b[0m"] +[10.51704405784606, "o", "\u001b[H"] +[10.54704405784606, "o", "\u001b[J"] +[10.57704405784606, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the initial data (in CSV) from this branch of the project."] +[10.607044057846059, "o", "\r\n"] +[10.637044057846058, "o", "$"] +[10.667044057846057, "o", " "] +[10.697044057846057, "o", "s"] +[10.727044057846056, "o", "g"] +[10.757044057846056, "o", "r"] +[10.787044057846055, "o", " "] +[10.817044057846054, "o", "i"] +[10.847044057846054, "o", "n"] +[10.877044057846053, "o", "i"] +[10.907044057846052, "o", "t"] +[10.937044057846052, "o", " "] +[10.967044057846051, "o", "r"] +[10.99704405784605, "o", "a"] +[11.02704405784605, "o", "w"] +[11.05704405784605, "o", "_"] +[11.087044057846049, "o", "j"] +[11.117044057846048, "o", "a"] +[11.147044057846047, "o", "f"] +[11.177044057846047, "o", "f"] +[11.207044057846046, "o", "l"] +[11.237044057846045, "o", "e"] +[11.267044057846045, "o", "_"] +[11.297044057846044, "o", "s"] +[11.327044057846043, "o", "h"] +[11.357044057846043, "o", "o"] +[11.387044057846042, "o", "p"] +[11.417044057846041, "o", "\r\n"] +[11.44704405784604, "o", "$"] +[11.47704405784604, "o", " "] +[11.50704405784604, "o", "s"] +[11.537044057846039, "o", "g"] +[11.567044057846038, "o", "r"] +[11.597044057846038, "o", " "] +[11.627044057846037, "o", "c"] +[11.657044057846036, "o", "s"] +[11.687044057846036, "o", "v"] +[11.717044057846035, "o", " "] +[11.747044057846034, "o", "i"] +[11.777044057846034, "o", "m"] +[11.807044057846033, "o", "p"] +[11.837044057846033, "o", "o"] +[11.867044057846032, "o", "r"] +[11.897044057846031, "o", "t"] +[11.92704405784603, "o", " "] +[11.95704405784603, "o", "-"] +[11.98704405784603, "o", "f"] +[12.017044057846029, "o", " "] +[12.047044057846028, "o", "j"] +[12.077044057846027, "o", "a"] +[12.107044057846027, "o", "f"] +[12.137044057846026, "o", "f"] +[12.167044057846025, "o", "l"] +[12.197044057846025, "o", "e"] +[12.227044057846024, "o", "_"] +[12.257044057846024, "o", "s"] +[12.287044057846023, "o", "h"] +[12.317044057846022, "o", "o"] +[12.347044057846022, "o", "p"] +[12.377044057846021, "o", "/"] +[12.40704405784602, "o", "d"] +[12.43704405784602, "o", "a"] +[12.467044057846019, "o", "t"] +[12.497044057846018, "o", "a"] +[12.527044057846018, "o", "/"] +[12.557044057846017, "o", "r"] +[12.587044057846017, "o", "a"] +[12.617044057846016, "o", "w"] +[12.647044057846015, "o", "_"] +[12.677044057846015, "o", "c"] +[12.707044057846014, "o", "u"] +[12.737044057846013, "o", "s"] +[12.767044057846013, "o", "t"] +[12.797044057846012, "o", "o"] +[12.827044057846011, "o", "m"] +[12.85704405784601, "o", "e"] +[12.88704405784601, "o", "r"] +[12.91704405784601, "o", "s"] +[12.947044057846009, "o", "."] +[12.977044057846008, "o", "c"] +[13.007044057846008, "o", "s"] +[13.037044057846007, "o", "v"] +[13.067044057846006, "o", " "] +[13.097044057846006, "o", "-"] +[13.127044057846005, "o", "k"] +[13.157044057846004, "o", " "] +[13.187044057846004, "o", "i"] +[13.217044057846003, "o", "d"] +[13.247044057846002, "o", " "] +[13.277044057846002, "o", "r"] +[13.307044057846001, "o", "a"] +[13.337044057846, "o", "w"] +[13.367044057846, "o", "_"] +[13.397044057846, "o", "j"] +[13.427044057845999, "o", "a"] +[13.457044057845998, "o", "f"] +[13.487044057845997, "o", "f"] +[13.517044057845997, "o", "l"] +[13.547044057845996, "o", "e"] +[13.577044057845995, "o", "_"] +[13.607044057845995, "o", "s"] +[13.637044057845994, "o", "h"] +[13.667044057845994, "o", "o"] +[13.697044057845993, "o", "p"] +[13.727044057845992, "o", " "] +[13.757044057845992, "o", "c"] +[13.787044057845991, "o", "u"] +[13.81704405784599, "o", "s"] +[13.84704405784599, "o", "t"] +[13.877044057845989, "o", "o"] +[13.907044057845988, "o", "m"] +[13.937044057845988, "o", "e"] +[13.967044057845987, "o", "r"] +[13.997044057845986, "o", "s"] +[14.027044057845986, "o", "\r\n"] +[14.057044057845985, "o", "$"] +[14.087044057845985, "o", " "] +[14.117044057845984, "o", "s"] +[14.147044057845983, "o", "g"] +[14.177044057845983, "o", "r"] +[14.207044057845982, "o", " "] +[14.237044057845981, "o", "c"] +[14.26704405784598, "o", "s"] +[14.29704405784598, "o", "v"] +[14.32704405784598, "o", " "] +[14.357044057845979, "o", "i"] +[14.387044057845978, "o", "m"] +[14.417044057845978, "o", "p"] +[14.447044057845977, "o", "o"] +[14.477044057845976, "o", "r"] +[14.507044057845976, "o", "t"] +[14.537044057845975, "o", " "] +[14.567044057845974, "o", "-"] +[14.597044057845974, "o", "f"] +[14.627044057845973, "o", " "] +[14.657044057845972, "o", "j"] +[14.687044057845972, "o", "a"] +[14.717044057845971, "o", "f"] +[14.74704405784597, "o", "f"] +[14.77704405784597, "o", "l"] +[14.80704405784597, "o", "e"] +[14.837044057845969, "o", "_"] +[14.867044057845968, "o", "s"] +[14.897044057845967, "o", "h"] +[14.927044057845967, "o", "o"] +[14.957044057845966, "o", "p"] +[14.987044057845965, "o", "/"] +[15.017044057845965, "o", "d"] +[15.047044057845964, "o", "a"] +[15.077044057845963, "o", "t"] +[15.107044057845963, "o", "a"] +[15.137044057845962, "o", "/"] +[15.167044057845962, "o", "r"] +[15.197044057845961, "o", "a"] +[15.22704405784596, "o", "w"] +[15.25704405784596, "o", "_"] +[15.287044057845959, "o", "o"] +[15.317044057845958, "o", "r"] +[15.347044057845958, "o", "d"] +[15.377044057845957, "o", "e"] +[15.407044057845956, "o", "r"] +[15.437044057845956, "o", "s"] +[15.467044057845955, "o", "."] +[15.497044057845955, "o", "c"] +[15.527044057845954, "o", "s"] +[15.557044057845953, "o", "v"] +[15.587044057845953, "o", " "] +[15.617044057845952, "o", "-"] +[15.647044057845951, "o", "k"] +[15.67704405784595, "o", " "] +[15.70704405784595, "o", "i"] +[15.73704405784595, "o", "d"] +[15.767044057845949, "o", " "] +[15.797044057845948, "o", "-"] +[15.827044057845947, "o", "t"] +[15.857044057845947, "o", " "] +[15.887044057845946, "o", "o"] +[15.917044057845946, "o", "r"] +[15.947044057845945, "o", "d"] +[15.977044057845944, "o", "e"] +[16.007044057845945, "o", "r"] +[16.037044057845947, "o", "_"] +[16.067044057845948, "o", "d"] +[16.09704405784595, "o", "a"] +[16.12704405784595, "o", "t"] +[16.15704405784595, "o", "e"] +[16.187044057845952, "o", " "] +[16.217044057845953, "o", "t"] +[16.247044057845955, "o", "i"] +[16.277044057845956, "o", "m"] +[16.307044057845957, "o", "e"] +[16.337044057845958, "o", "s"] +[16.36704405784596, "o", "t"] +[16.39704405784596, "o", "a"] +[16.42704405784596, "o", "m"] +[16.457044057845962, "o", "p"] +[16.487044057845964, "o", " "] +[16.517044057845965, "o", "r"] +[16.547044057845966, "o", "a"] +[16.577044057845967, "o", "w"] +[16.607044057845968, "o", "_"] +[16.63704405784597, "o", "j"] +[16.66704405784597, "o", "a"] +[16.69704405784597, "o", "f"] +[16.727044057845973, "o", "f"] +[16.757044057845974, "o", "l"] +[16.787044057845975, "o", "e"] +[16.817044057845976, "o", "_"] +[16.847044057845977, "o", "s"] +[16.87704405784598, "o", "h"] +[16.90704405784598, "o", "o"] +[16.93704405784598, "o", "p"] +[16.967044057845982, "o", " "] +[16.997044057845983, "o", "o"] +[17.027044057845984, "o", "r"] +[17.057044057845985, "o", "d"] +[17.087044057845986, "o", "e"] +[17.117044057845987, "o", "r"] +[17.14704405784599, "o", "s"] +[17.17704405784599, "o", "\r\n"] +[17.20704405784599, "o", "$"] +[17.237044057845992, "o", " "] +[17.267044057845993, "o", "s"] +[17.297044057845994, "o", "g"] +[17.327044057845995, "o", "r"] +[17.357044057845997, "o", " "] +[17.387044057845998, "o", "c"] +[17.417044057846, "o", "s"] +[17.447044057846, "o", "v"] +[17.477044057846, "o", " "] +[17.507044057846002, "o", "i"] +[17.537044057846003, "o", "m"] +[17.567044057846005, "o", "p"] +[17.597044057846006, "o", "o"] +[17.627044057846007, "o", "r"] +[17.657044057846008, "o", "t"] +[17.68704405784601, "o", " "] +[17.71704405784601, "o", "-"] +[17.74704405784601, "o", "f"] +[17.777044057846012, "o", " "] +[17.807044057846014, "o", "j"] +[17.837044057846015, "o", "a"] +[17.867044057846016, "o", "f"] +[17.897044057846017, "o", "f"] +[17.927044057846018, "o", "l"] +[17.95704405784602, "o", "e"] +[17.98704405784602, "o", "_"] +[18.01704405784602, "o", "s"] +[18.047044057846023, "o", "h"] +[18.077044057846024, "o", "o"] +[18.107044057846025, "o", "p"] +[18.137044057846026, "o", "/"] +[18.167044057846027, "o", "d"] +[18.19704405784603, "o", "a"] +[18.22704405784603, "o", "t"] +[18.25704405784603, "o", "a"] +[18.287044057846032, "o", "/"] +[18.317044057846033, "o", "r"] +[18.347044057846034, "o", "a"] +[18.377044057846035, "o", "w"] +[18.407044057846036, "o", "_"] +[18.437044057846038, "o", "p"] +[18.46704405784604, "o", "a"] +[18.49704405784604, "o", "y"] +[18.52704405784604, "o", "m"] +[18.557044057846042, "o", "e"] +[18.587044057846043, "o", "n"] +[18.617044057846044, "o", "t"] +[18.647044057846045, "o", "s"] +[18.677044057846047, "o", "."] +[18.707044057846048, "o", "c"] +[18.73704405784605, "o", "s"] +[18.76704405784605, "o", "v"] +[18.79704405784605, "o", " "] +[18.827044057846052, "o", "-"] +[18.857044057846053, "o", "k"] +[18.887044057846055, "o", " "] +[18.917044057846056, "o", "i"] +[18.947044057846057, "o", "d"] +[18.977044057846058, "o", " "] +[19.00704405784606, "o", "r"] +[19.03704405784606, "o", "a"] +[19.06704405784606, "o", "w"] +[19.097044057846063, "o", "_"] +[19.127044057846064, "o", "j"] +[19.157044057846065, "o", "a"] +[19.187044057846066, "o", "f"] +[19.217044057846067, "o", "f"] +[19.247044057846068, "o", "l"] +[19.27704405784607, "o", "e"] +[19.30704405784607, "o", "_"] +[19.33704405784607, "o", "s"] +[19.367044057846073, "o", "h"] +[19.397044057846074, "o", "o"] +[19.427044057846075, "o", "p"] +[19.457044057846076, "o", " "] +[19.487044057846077, "o", "p"] +[19.51704405784608, "o", "a"] +[19.54704405784608, "o", "y"] +[19.57704405784608, "o", "m"] +[19.607044057846082, "o", "e"] +[19.637044057846083, "o", "n"] +[19.667044057846084, "o", "t"] +[19.697044057846085, "o", "s"] +[19.727044057846086, "o", "\r\n"] +[19.757044057846088, "o", "\u001b[0m"] +[19.78704405784609, "o", "\r\n"] +[20.231877813339253, "o", "Initialized empty repository raw_jaffle_shop\r\n"] +[20.261877813339254, "o", "\u001b[1m"] +[20.291877813339255, "o", "\u001b[36m"] +[20.321877813339256, "o", "\u001b[91m"] +[20.351877813339257, "o", "$"] +[20.38187781333926, "o", " "] +[20.41187781333926, "o", "\u001b[0m"] +[25.44187781333926, "o", "\u001b[H"] +[25.471877813339262, "o", "\u001b[J"] +[25.501877813339263, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Snapshot the initial data with Splitgraph."] +[25.531877813339264, "o", "\r\n"] +[25.561877813339265, "o", "$"] +[25.591877813339266, "o", " "] +[25.621877813339268, "o", "s"] +[25.65187781333927, "o", "g"] +[25.68187781333927, "o", "r"] +[25.71187781333927, "o", " "] +[25.741877813339272, "o", "d"] +[25.771877813339273, "o", "i"] +[25.801877813339274, "o", "f"] +[25.831877813339275, "o", "f"] +[25.861877813339277, "o", " "] +[25.891877813339278, "o", "r"] +[25.92187781333928, "o", "a"] +[25.95187781333928, "o", "w"] +[25.98187781333928, "o", "_"] +[26.011877813339282, "o", "j"] +[26.041877813339283, "o", "a"] +[26.071877813339285, "o", "f"] +[26.101877813339286, "o", "f"] +[26.131877813339287, "o", "l"] +[26.161877813339288, "o", "e"] +[26.19187781333929, "o", "_"] +[26.22187781333929, "o", "s"] +[26.25187781333929, "o", "h"] +[26.281877813339293, "o", "o"] +[26.311877813339294, "o", "p"] +[26.341877813339295, "o", "\r\n"] +[26.371877813339296, "o", "$"] +[26.401877813339297, "o", " "] +[26.431877813339298, "o", "s"] +[26.4618778133393, "o", "g"] +[26.4918778133393, "o", "r"] +[26.5218778133393, "o", " "] +[26.551877813339303, "o", "c"] +[26.581877813339304, "o", "o"] +[26.611877813339305, "o", "m"] +[26.641877813339306, "o", "m"] +[26.671877813339307, "o", "i"] +[26.70187781333931, "o", "t"] +[26.73187781333931, "o", " "] +[26.76187781333931, "o", "r"] +[26.791877813339312, "o", "a"] +[26.821877813339313, "o", "w"] +[26.851877813339314, "o", "_"] +[26.881877813339315, "o", "j"] +[26.911877813339316, "o", "a"] +[26.941877813339318, "o", "f"] +[26.97187781333932, "o", "f"] +[27.00187781333932, "o", "l"] +[27.03187781333932, "o", "e"] +[27.061877813339322, "o", "_"] +[27.091877813339323, "o", "s"] +[27.121877813339324, "o", "h"] +[27.151877813339325, "o", "o"] +[27.181877813339327, "o", "p"] +[27.211877813339328, "o", "\r\n"] +[27.24187781333933, "o", "$"] +[27.27187781333933, "o", " "] +[27.30187781333933, "o", "s"] +[27.331877813339332, "o", "g"] +[27.361877813339333, "o", "r"] +[27.391877813339335, "o", " "] +[27.421877813339336, "o", "t"] +[27.451877813339337, "o", "a"] +[27.481877813339338, "o", "g"] +[27.51187781333934, "o", " "] +[27.54187781333934, "o", "r"] +[27.57187781333934, "o", "a"] +[27.601877813339343, "o", "w"] +[27.631877813339344, "o", "_"] +[27.661877813339345, "o", "j"] +[27.691877813339346, "o", "a"] +[27.721877813339347, "o", "f"] +[27.751877813339348, "o", "f"] +[27.78187781333935, "o", "l"] +[27.81187781333935, "o", "e"] +[27.84187781333935, "o", "_"] +[27.871877813339353, "o", "s"] +[27.901877813339354, "o", "h"] +[27.931877813339355, "o", "o"] +[27.961877813339356, "o", "p"] +[27.991877813339357, "o", " "] +[28.02187781333936, "o", "a"] +[28.05187781333936, "o", "s"] +[28.08187781333936, "o", "o"] +[28.111877813339362, "o", "f"] +[28.141877813339363, "o", "_"] +[28.171877813339364, "o", "2"] +[28.201877813339365, "o", "0"] +[28.231877813339366, "o", "1"] +[28.261877813339368, "o", "8"] +[28.29187781333937, "o", "0"] +[28.32187781333937, "o", "4"] +[28.35187781333937, "o", "0"] +[28.381877813339372, "o", "9"] +[28.411877813339373, "o", "\r\n"] +[28.441877813339374, "o", "\u001b[0m"] +[28.471877813339376, "o", "\r\n"] +[28.937631368637227, "o", "Between 000000000000 and the current working copy: \r\n"] +[28.93783259391799, "o", "customers: table added\r\n"] +[28.93796801567092, "o", "orders: table added\r\n"] +[28.938107013702535, "o", "payments: table added\r\n"] +[29.36225461959853, "o", "Committing raw_jaffle_shop...\r\n"] +[29.385152339935445, "o", "Processing table orders\r\n"] +[29.474947929382466, "o", "Processing table payments\r\n"] +[29.557260274887227, "o", "Processing table customers\r\n"] +[29.65237069129958, "o", "Committed raw_jaffle_shop as b7368aa32f16.\r\n"] +[30.08119869232192, "o", "Tagged raw_jaffle_shop:b7368aa32f16d10d5d039a25f20babe959c500915807bca652c0a0c6720fd99d with asof_20180409.\r\n"] +[30.11119869232192, "o", "\u001b[1m"] +[30.14119869232192, "o", "\u001b[36m"] +[30.171198692321923, "o", "\u001b[91m"] +[30.201198692321924, "o", "$"] +[30.231198692321925, "o", " "] +[30.261198692321926, "o", "\u001b[0m"] +[35.29119869232193, "o", "\u001b[H"] +[35.32119869232193, "o", "\u001b[J"] +[35.35119869232193, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the original data"] +[35.38119869232193, "o", "\r\n"] +[35.41119869232193, "o", "$"] +[35.44119869232193, "o", " "] +[35.471198692321934, "o", "s"] +[35.501198692321935, "o", "g"] +[35.53119869232194, "o", "r"] +[35.56119869232194, "o", " "] +[35.59119869232194, "o", "s"] +[35.62119869232194, "o", "h"] +[35.65119869232194, "o", "o"] +[35.68119869232194, "o", "w"] +[35.71119869232194, "o", " "] +[35.741198692321944, "o", "r"] +[35.771198692321946, "o", "a"] +[35.80119869232195, "o", "w"] +[35.83119869232195, "o", "_"] +[35.86119869232195, "o", "j"] +[35.89119869232195, "o", "a"] +[35.92119869232195, "o", "f"] +[35.95119869232195, "o", "f"] +[35.981198692321954, "o", "l"] +[36.011198692321955, "o", "e"] +[36.041198692321956, "o", "_"] +[36.07119869232196, "o", "s"] +[36.10119869232196, "o", "h"] +[36.13119869232196, "o", "o"] +[36.16119869232196, "o", "p"] +[36.19119869232196, "o", ":"] +[36.22119869232196, "o", "a"] +[36.251198692321964, "o", "s"] +[36.281198692321965, "o", "o"] +[36.311198692321966, "o", "f"] +[36.34119869232197, "o", "_"] +[36.37119869232197, "o", "2"] +[36.40119869232197, "o", "0"] +[36.43119869232197, "o", "1"] +[36.46119869232197, "o", "8"] +[36.49119869232197, "o", "0"] +[36.521198692321974, "o", "4"] +[36.551198692321975, "o", "0"] +[36.581198692321976, "o", "9"] +[36.61119869232198, "o", "\r\n"] +[36.64119869232198, "o", "$"] +[36.67119869232198, "o", " "] +[36.70119869232198, "o", "s"] +[36.73119869232198, "o", "g"] +[36.76119869232198, "o", "r"] +[36.791198692321984, "o", " "] +[36.821198692321985, "o", "t"] +[36.85119869232199, "o", "a"] +[36.88119869232199, "o", "b"] +[36.91119869232199, "o", "l"] +[36.94119869232199, "o", "e"] +[36.97119869232199, "o", " "] +[37.00119869232199, "o", "r"] +[37.03119869232199, "o", "a"] +[37.061198692321994, "o", "w"] +[37.091198692321996, "o", "_"] +[37.121198692322, "o", "j"] +[37.151198692322, "o", "a"] +[37.181198692322, "o", "f"] +[37.211198692322, "o", "f"] +[37.241198692322, "o", "l"] +[37.271198692322, "o", "e"] +[37.301198692322004, "o", "_"] +[37.331198692322005, "o", "s"] +[37.361198692322006, "o", "h"] +[37.39119869232201, "o", "o"] +[37.42119869232201, "o", "p"] +[37.45119869232201, "o", ":"] +[37.48119869232201, "o", "a"] +[37.51119869232201, "o", "s"] +[37.54119869232201, "o", "o"] +[37.571198692322014, "o", "f"] +[37.601198692322015, "o", "_"] +[37.631198692322016, "o", "2"] +[37.66119869232202, "o", "0"] +[37.69119869232202, "o", "1"] +[37.72119869232202, "o", "8"] +[37.75119869232202, "o", "0"] +[37.78119869232202, "o", "4"] +[37.81119869232202, "o", "0"] +[37.841198692322024, "o", "9"] +[37.871198692322025, "o", " "] +[37.901198692322026, "o", "o"] +[37.93119869232203, "o", "r"] +[37.96119869232203, "o", "d"] +[37.99119869232203, "o", "e"] +[38.02119869232203, "o", "r"] +[38.05119869232203, "o", "s"] +[38.08119869232203, "o", "\r\n"] +[38.111198692322034, "o", "\u001b[0m"] +[38.141198692322035, "o", "\r\n"] +[38.566390810013075, "o", "Image raw_jaffle_shop:b7368aa32f16d10d5d039a25f20babe959c500915807bca652c0a0c6720fd99d\r\n"] +[38.566417751312514, "o", "\r\nCreated at 2021-12-17T19:41:03.255131\r\n"] +[38.56755667686488, "o", "Size: 7.58 KiB\r\n"] +[38.567566452026625, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[38.56826072692897, "o", " customers\r\n"] +[38.56827121734645, "o", " orders\r\n payments\r\n"] +[38.998806533813735, "o", "Table raw_jaffle_shop:b7368aa32f16d10d5d039a25f20babe959c500915807bca652c0a0c6720fd99d/orders\r\n\r\n"] +[38.999382314682265, "o", "Size: 1.73 KiB\r\n"] +[39.0003870105746, "o", "Rows: 99\r\n"] +[39.00040036201503, "o", "Columns: \r\n id (integer, PK)\r\n user_id (integer)\r\n order_date (timestamp without time zone)\r\n status (character varying)\r\n\r\nObjects: \r\n o7e3ffa6e2141edde30498e4c4a6a2b510d8b7e479081aafe154d31ca4436bd\r\n"] +[39.03040036201503, "o", "\u001b[1m"] +[39.06040036201503, "o", "\u001b[36m"] +[39.09040036201503, "o", "\u001b[91m"] +[39.12040036201503, "o", "$"] +[39.150400362015034, "o", " "] +[39.180400362015035, "o", "\u001b[0m"] +[48.29119869232193, "o", "\u001b[H"] +[48.32119869232193, "o", "\u001b[J"] +[48.35119869232193, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The status column in the raw_orders table in the initial dataset can"] +[48.38119869232193, "o", "\r\n"] +[48.41119869232193, "o", "$ # change through time. Pretend that some jaffles were actually returned.\r\n"] +[48.44119869232193, "o", "$"] +[48.471198692321934, "o", " "] +[48.501198692321935, "o", "s"] +[48.53119869232194, "o", "g"] +[48.56119869232194, "o", "r"] +[48.59119869232194, "o", " "] +[48.62119869232194, "o", "s"] +[48.65119869232194, "o", "q"] +[48.68119869232194, "o", "l"] +[48.71119869232194, "o", " "] +[48.741198692321944, "o", "-"] +[48.771198692321946, "o", "s"] +[48.80119869232195, "o", " "] +[48.83119869232195, "o", "r"] +[48.86119869232195, "o", "a"] +[48.89119869232195, "o", "w"] +[48.92119869232195, "o", "_"] +[48.95119869232195, "o", "j"] +[48.981198692321954, "o", "a"] +[49.011198692321955, "o", "f"] +[49.041198692321956, "o", "f"] +[49.07119869232196, "o", "l"] +[49.10119869232196, "o", "e"] +[49.13119869232196, "o", "_"] +[49.16119869232196, "o", "s"] +[49.19119869232196, "o", "h"] +[49.22119869232196, "o", "o"] +[49.251198692321964, "o", "p"] +[49.281198692321965, "o", " "] +[49.311198692321966, "o", "\""] +[49.34119869232197, "o", "U"] +[49.37119869232197, "o", "P"] +[49.40119869232197, "o", "D"] +[49.43119869232197, "o", "A"] +[49.46119869232197, "o", "T"] +[49.49119869232197, "o", "E"] +[49.521198692321974, "o", " "] +[49.551198692321975, "o", "o"] +[49.581198692321976, "o", "r"] +[49.61119869232198, "o", "d"] +[49.64119869232198, "o", "e"] +[49.67119869232198, "o", "r"] +[49.70119869232198, "o", "s"] +[49.73119869232198, "o", " "] +[49.76119869232198, "o", "S"] +[49.791198692321984, "o", "E"] +[49.821198692321985, "o", "T"] +[49.85119869232199, "o", " "] +[49.88119869232199, "o", "s"] +[49.91119869232199, "o", "t"] +[49.94119869232199, "o", "a"] +[49.97119869232199, "o", "t"] +[50.00119869232199, "o", "u"] +[50.03119869232199, "o", "s"] +[50.061198692321994, "o", " "] +[50.091198692321996, "o", "="] +[50.121198692322, "o", " "] +[50.151198692322, "o", "'"] +[50.181198692322, "o", "r"] +[50.211198692322, "o", "e"] +[50.241198692322, "o", "t"] +[50.271198692322, "o", "u"] +[50.301198692322004, "o", "r"] +[50.331198692322005, "o", "n"] +[50.361198692322006, "o", "e"] +[50.39119869232201, "o", "d"] +[50.42119869232201, "o", "'"] +[50.45119869232201, "o", " "] +[50.48119869232201, "o", "\\"] +[50.51119869232201, "o", "\r\n "] +[50.54119869232201, "o", "W"] +[50.571198692322014, "o", "H"] +[50.601198692322015, "o", "E"] +[50.631198692322016, "o", "R"] +[50.66119869232202, "o", "E"] +[50.69119869232202, "o", " "] +[50.72119869232202, "o", "s"] +[50.75119869232202, "o", "t"] +[50.78119869232202, "o", "a"] +[50.81119869232202, "o", "t"] +[50.841198692322024, "o", "u"] +[50.871198692322025, "o", "s"] +[50.901198692322026, "o", " "] +[50.93119869232203, "o", "="] +[50.96119869232203, "o", " "] +[50.99119869232203, "o", "'"] +[51.02119869232203, "o", "r"] +[51.05119869232203, "o", "e"] +[51.08119869232203, "o", "t"] +[51.111198692322034, "o", "u"] +[51.141198692322035, "o", "r"] +[51.17119869232204, "o", "n"] +[51.20119869232204, "o", "_"] +[51.23119869232204, "o", "p"] +[51.26119869232204, "o", "e"] +[51.29119869232204, "o", "n"] +[51.32119869232204, "o", "d"] +[51.35119869232204, "o", "i"] +[51.381198692322045, "o", "n"] +[51.411198692322046, "o", "g"] +[51.44119869232205, "o", "'"] +[51.47119869232205, "o", " "] +[51.50119869232205, "o", "O"] +[51.53119869232205, "o", "R"] +[51.56119869232205, "o", " "] +[51.59119869232205, "o", "o"] +[51.621198692322054, "o", "r"] +[51.651198692322055, "o", "d"] +[51.681198692322056, "o", "e"] +[51.71119869232206, "o", "r"] +[51.74119869232206, "o", "_"] +[51.77119869232206, "o", "d"] +[51.80119869232206, "o", "a"] +[51.83119869232206, "o", "t"] +[51.86119869232206, "o", "e"] +[51.891198692322064, "o", " "] +[51.921198692322065, "o", "="] +[51.951198692322066, "o", " "] +[51.98119869232207, "o", "'"] +[52.01119869232207, "o", "2"] +[52.04119869232207, "o", "0"] +[52.07119869232207, "o", "1"] +[52.10119869232207, "o", "8"] +[52.13119869232207, "o", "-"] +[52.161198692322074, "o", "0"] +[52.191198692322075, "o", "3"] +[52.221198692322076, "o", "-"] +[52.25119869232208, "o", "2"] +[52.28119869232208, "o", "6"] +[52.31119869232208, "o", "'"] +[52.34119869232208, "o", "\""] +[52.37119869232208, "o", "\r\n"] +[52.40119869232208, "o", "$"] +[52.431198692322084, "o", " "] +[52.461198692322085, "o", "s"] +[52.49119869232209, "o", "g"] +[52.52119869232209, "o", "r"] +[52.55119869232209, "o", " "] +[52.58119869232209, "o", "d"] +[52.61119869232209, "o", "i"] +[52.64119869232209, "o", "f"] +[52.67119869232209, "o", "f"] +[52.701198692322095, "o", " "] +[52.731198692322096, "o", "-"] +[52.7611986923221, "o", "v"] +[52.7911986923221, "o", " "] +[52.8211986923221, "o", "r"] +[52.8511986923221, "o", "a"] +[52.8811986923221, "o", "w"] +[52.9111986923221, "o", "_"] +[52.941198692322104, "o", "j"] +[52.971198692322105, "o", "a"] +[53.001198692322106, "o", "f"] +[53.03119869232211, "o", "f"] +[53.06119869232211, "o", "l"] +[53.09119869232211, "o", "e"] +[53.12119869232211, "o", "_"] +[53.15119869232211, "o", "s"] +[53.18119869232211, "o", "h"] +[53.211198692322114, "o", "o"] +[53.241198692322115, "o", "p"] +[53.271198692322116, "o", "\r\n"] +[53.30119869232212, "o", "\u001b[0m"] +[53.33119869232212, "o", "\r\n"] +[54.04262685775791, "o", "Between b7368aa32f16 and the current working copy: \r\n"] +[54.04309678077732, "o", "customers: no changes.\r\n"] +[54.043368339538915, "o", "orders: added 5 rows, removed 5 rows.\r\n"] +[54.04340076446567, "o", "- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending')\r\n"] +[54.044570684433324, "o", "- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending')\r\n"] +[54.044857025146825, "o", "- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped')\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned')\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned')\r\n+ (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\npayments: no changes."] +[54.04486322402988, "o", "\r\n"] +[54.07486322402988, "o", "\u001b[1m"] +[54.104863224029884, "o", "\u001b[36m"] +[54.134863224029885, "o", "\u001b[91m"] +[54.16486322402989, "o", "$"] +[54.19486322402989, "o", " "] +[54.22486322402989, "o", "\u001b[0m"] +[59.25486322402989, "o", "\u001b[H"] +[59.28486322402989, "o", "\u001b[J"] +[59.31486322402989, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit this dataset and check out the original data"] +[59.34486322402989, "o", "\r\n"] +[59.374863224029895, "o", "$"] +[59.404863224029896, "o", " "] +[59.4348632240299, "o", "s"] +[59.4648632240299, "o", "g"] +[59.4948632240299, "o", "r"] +[59.5248632240299, "o", " "] +[59.5548632240299, "o", "c"] +[59.5848632240299, "o", "o"] +[59.614863224029904, "o", "m"] +[59.644863224029905, "o", "m"] +[59.674863224029906, "o", "i"] +[59.70486322402991, "o", "t"] +[59.73486322402991, "o", " "] +[59.76486322402991, "o", "r"] +[59.79486322402991, "o", "a"] +[59.82486322402991, "o", "w"] +[59.85486322402991, "o", "_"] +[59.884863224029914, "o", "j"] +[59.914863224029915, "o", "a"] +[59.944863224029916, "o", "f"] +[59.97486322402992, "o", "f"] +[60.00486322402992, "o", "l"] +[60.03486322402992, "o", "e"] +[60.06486322402992, "o", "_"] +[60.09486322402992, "o", "s"] +[60.12486322402992, "o", "h"] +[60.154863224029924, "o", "o"] +[60.184863224029925, "o", "p"] +[60.214863224029926, "o", "\r\n"] +[60.24486322402993, "o", "$"] +[60.27486322402993, "o", " "] +[60.30486322402993, "o", "s"] +[60.33486322402993, "o", "g"] +[60.36486322402993, "o", "r"] +[60.39486322402993, "o", " "] +[60.424863224029934, "o", "t"] +[60.454863224029936, "o", "a"] +[60.48486322402994, "o", "g"] +[60.51486322402994, "o", " "] +[60.54486322402994, "o", "r"] +[60.57486322402994, "o", "a"] +[60.60486322402994, "o", "w"] +[60.63486322402994, "o", "_"] +[60.66486322402994, "o", "j"] +[60.694863224029945, "o", "a"] +[60.724863224029946, "o", "f"] +[60.75486322402995, "o", "f"] +[60.78486322402995, "o", "l"] +[60.81486322402995, "o", "e"] +[60.84486322402995, "o", "_"] +[60.87486322402995, "o", "s"] +[60.90486322402995, "o", "h"] +[60.934863224029954, "o", "o"] +[60.964863224029955, "o", "p"] +[60.994863224029956, "o", " "] +[61.02486322402996, "o", "a"] +[61.05486322402996, "o", "s"] +[61.08486322402996, "o", "o"] +[61.11486322402996, "o", "f"] +[61.14486322402996, "o", "_"] +[61.17486322402996, "o", "2"] +[61.204863224029964, "o", "0"] +[61.234863224029965, "o", "1"] +[61.264863224029966, "o", "8"] +[61.29486322402997, "o", "0"] +[61.32486322402997, "o", "4"] +[61.35486322402997, "o", "1"] +[61.38486322402997, "o", "0"] +[61.41486322402997, "o", "\r\n"] +[61.44486322402997, "o", "$"] +[61.474863224029974, "o", " "] +[61.504863224029975, "o", "s"] +[61.534863224029976, "o", "g"] +[61.56486322402998, "o", "r"] +[61.59486322402998, "o", " "] +[61.62486322402998, "o", "c"] +[61.65486322402998, "o", "h"] +[61.68486322402998, "o", "e"] +[61.71486322402998, "o", "c"] +[61.744863224029984, "o", "k"] +[61.774863224029986, "o", "o"] +[61.80486322402999, "o", "u"] +[61.83486322402999, "o", "t"] +[61.86486322402999, "o", " "] +[61.89486322402999, "o", "r"] +[61.92486322402999, "o", "a"] +[61.95486322402999, "o", "w"] +[61.98486322402999, "o", "_"] +[62.014863224029995, "o", "j"] +[62.044863224029996, "o", "a"] +[62.07486322403, "o", "f"] +[62.10486322403, "o", "f"] +[62.13486322403, "o", "l"] +[62.16486322403, "o", "e"] +[62.19486322403, "o", "_"] +[62.22486322403, "o", "s"] +[62.254863224030004, "o", "h"] +[62.284863224030005, "o", "o"] +[62.314863224030006, "o", "p"] +[62.34486322403001, "o", ":"] +[62.37486322403001, "o", "a"] +[62.40486322403001, "o", "s"] +[62.43486322403001, "o", "o"] +[62.46486322403001, "o", "f"] +[62.49486322403001, "o", "_"] +[62.524863224030014, "o", "2"] +[62.554863224030015, "o", "0"] +[62.584863224030016, "o", "1"] +[62.61486322403002, "o", "8"] +[62.64486322403002, "o", "0"] +[62.67486322403002, "o", "4"] +[62.70486322403002, "o", "0"] +[62.73486322403002, "o", "9"] +[62.76486322403002, "o", "\r\n"] +[62.794863224030024, "o", "\u001b[0m"] +[62.824863224030025, "o", "\r\n"] +[63.250562219620235, "o", "Committing raw_jaffle_shop...\r\n"] +[63.27198889732409, "o", "Storing and indexing table orders\r\n"] +[63.36919954299975, "o", "Committed raw_jaffle_shop as d66a9009ecb8.\r\n"] +[63.789855508804806, "o", "Tagged raw_jaffle_shop:d66a9009ecb8f757f8c638faad21193f4d66766bc248a0fc8a935f1a6cb2681b with asof_20180410.\r\n"] +[64.51478031158496, "o", "Checked out raw_jaffle_shop:b7368aa32f16.\r\n"] +[64.54478031158496, "o", "\u001b[1m"] +[64.57478031158496, "o", "\u001b[36m"] +[64.60478031158496, "o", "\u001b[91m"] +[64.63478031158496, "o", "$"] +[64.66478031158496, "o", " "] +[64.69478031158496, "o", "\u001b[0m"] +[69.72478031158496, "o", "\u001b[H"] +[69.75478031158497, "o", "\u001b[J"] +[69.78478031158497, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the 'serious' version of the dbt project that uses data from"] +[69.81478031158497, "o", "\r\n"] +[69.84478031158497, "o", "$ # the actual warehouse rather than seed data.\r\n"] +[69.87478031158497, "o", "$"] +[69.90478031158497, "o", " "] +[69.93478031158497, "o", "c"] +[69.96478031158497, "o", "d"] +[69.99478031158498, "o", " "] +[70.02478031158498, "o", "j"] +[70.05478031158498, "o", "a"] +[70.08478031158498, "o", "f"] +[70.11478031158498, "o", "f"] +[70.14478031158498, "o", "l"] +[70.17478031158498, "o", "e"] +[70.20478031158498, "o", "_"] +[70.23478031158498, "o", "s"] +[70.26478031158499, "o", "h"] +[70.29478031158499, "o", "o"] +[70.32478031158499, "o", "p"] +[70.35478031158499, "o", " "] +[70.38478031158499, "o", "&"] +[70.41478031158499, "o", "&"] +[70.44478031158499, "o", " "] +[70.474780311585, "o", "g"] +[70.504780311585, "o", "i"] +[70.534780311585, "o", "t"] +[70.564780311585, "o", " "] +[70.594780311585, "o", "c"] +[70.624780311585, "o", "h"] +[70.654780311585, "o", "e"] +[70.684780311585, "o", "c"] +[70.714780311585, "o", "k"] +[70.744780311585, "o", "o"] +[70.774780311585, "o", "u"] +[70.804780311585, "o", "t"] +[70.834780311585, "o", " "] +[70.86478031158501, "o", "3"] +[70.89478031158501, "o", "5"] +[70.92478031158501, "o", "b"] +[70.95478031158501, "o", "2"] +[70.98478031158501, "o", "3"] +[71.01478031158501, "o", "e"] +[71.04478031158501, "o", "e"] +[71.07478031158502, "o", "6"] +[71.10478031158502, "o", "b"] +[71.13478031158502, "o", "7"] +[71.16478031158502, "o", "4"] +[71.19478031158502, "o", "5"] +[71.22478031158502, "o", "9"] +[71.25478031158502, "o", "2"] +[71.28478031158502, "o", "9"] +[71.31478031158503, "o", "d"] +[71.34478031158503, "o", "8"] +[71.37478031158503, "o", "a"] +[71.40478031158503, "o", "2"] +[71.43478031158503, "o", "0"] +[71.46478031158503, "o", "9"] +[71.49478031158503, "o", "b"] +[71.52478031158503, "o", "e"] +[71.55478031158503, "o", "8"] +[71.58478031158504, "o", "2"] +[71.61478031158504, "o", "4"] +[71.64478031158504, "o", "8"] +[71.67478031158504, "o", "8"] +[71.70478031158504, "o", "7"] +[71.73478031158504, "o", "8"] +[71.76478031158504, "o", "a"] +[71.79478031158504, "o", "8"] +[71.82478031158504, "o", "8"] +[71.85478031158505, "o", "9"] +[71.88478031158505, "o", "3"] +[71.91478031158505, "o", "3"] +[71.94478031158505, "o", "f"] +[71.97478031158505, "o", "0"] +[72.00478031158505, "o", "2"] +[72.03478031158505, "o", "9"] +[72.06478031158505, "o", " "] +[72.09478031158505, "o", "-"] +[72.12478031158506, "o", "-"] +[72.15478031158506, "o", "f"] +[72.18478031158506, "o", "o"] +[72.21478031158506, "o", "r"] +[72.24478031158506, "o", "c"] +[72.27478031158506, "o", "e"] +[72.30478031158506, "o", "\r\n"] +[72.33478031158506, "o", "\u001b[0m"] +[72.36478031158506, "o", "\r\n"] +[72.37027371406614, "o", "Note: switching to '35b23ee6b745929d8a209be8248878a88933f029'.\r\n\r\nYou are in 'detached HEAD' state. You can look around, make experimental\r\nchanges and commit them, and you can discard any commits you make in this\r\nstate without impacting any branches by switching back to a branch.\r\n\r\nIf you want to create a new branch to retain commits you create, you may\r\ndo so (now or later) by using -c with the switch command. Example:\r\n\r\n git switch -c \r\n\r\nOr undo this operation with:\r\n\r\n git switch "] +[72.37028420448362, "o", "-\r\n\r\nTurn off this advice by setting config variable advice.detachedHead to false\r\n\r\nHEAD is now at 35b23ee Update dbt_project.yml to config-version 2\r\n"] +[72.40028420448363, "o", "\u001b[1m"] +[72.43028420448363, "o", "\u001b[36m"] +[72.46028420448363, "o", "\u001b[91m"] +[72.49028420448363, "o", "$"] +[72.52028420448363, "o", " "] +[72.55028420448363, "o", "\u001b[0m"] +[80.72478031158496, "o", "\u001b[H"] +[80.75478031158497, "o", "\u001b[J"] +[80.78478031158497, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check that dbt is set up to connect to the Splitgraph engine."] +[80.81478031158497, "o", "\r\n"] +[80.84478031158497, "o", "$ # We will be outputting data into the dbt_jaffle repository, so set that up.\r\n"] +[80.87478031158497, "o", "$"] +[80.90478031158497, "o", " "] +[80.93478031158497, "o", "c"] +[80.96478031158497, "o", "a"] +[80.99478031158498, "o", "t"] +[81.02478031158498, "o", " "] +[81.05478031158498, "o", "."] +[81.08478031158498, "o", "d"] +[81.11478031158498, "o", "b"] +[81.14478031158498, "o", "t"] +[81.17478031158498, "o", "/"] +[81.20478031158498, "o", "p"] +[81.23478031158498, "o", "r"] +[81.26478031158499, "o", "o"] +[81.29478031158499, "o", "f"] +[81.32478031158499, "o", "i"] +[81.35478031158499, "o", "l"] +[81.38478031158499, "o", "e"] +[81.41478031158499, "o", "s"] +[81.44478031158499, "o", "."] +[81.474780311585, "o", "y"] +[81.504780311585, "o", "m"] +[81.534780311585, "o", "l"] +[81.564780311585, "o", "\r\n"] +[81.594780311585, "o", "$"] +[81.624780311585, "o", " "] +[81.654780311585, "o", "d"] +[81.684780311585, "o", "b"] +[81.714780311585, "o", "t"] +[81.744780311585, "o", " "] +[81.774780311585, "o", "d"] +[81.804780311585, "o", "e"] +[81.834780311585, "o", "b"] +[81.86478031158501, "o", "u"] +[81.89478031158501, "o", "g"] +[81.92478031158501, "o", " "] +[81.95478031158501, "o", "-"] +[81.98478031158501, "o", "-"] +[82.01478031158501, "o", "p"] +[82.04478031158501, "o", "r"] +[82.07478031158502, "o", "o"] +[82.10478031158502, "o", "f"] +[82.13478031158502, "o", "i"] +[82.16478031158502, "o", "l"] +[82.19478031158502, "o", "e"] +[82.22478031158502, "o", "s"] +[82.25478031158502, "o", "-"] +[82.28478031158502, "o", "d"] +[82.31478031158503, "o", "i"] +[82.34478031158503, "o", "r"] +[82.37478031158503, "o", " "] +[82.40478031158503, "o", "."] +[82.43478031158503, "o", "d"] +[82.46478031158503, "o", "b"] +[82.49478031158503, "o", "t"] +[82.52478031158503, "o", " "] +[82.55478031158503, "o", "-"] +[82.58478031158504, "o", "-"] +[82.61478031158504, "o", "p"] +[82.64478031158504, "o", "r"] +[82.67478031158504, "o", "o"] +[82.70478031158504, "o", "j"] +[82.73478031158504, "o", "e"] +[82.76478031158504, "o", "c"] +[82.79478031158504, "o", "t"] +[82.82478031158504, "o", "-"] +[82.85478031158505, "o", "d"] +[82.88478031158505, "o", "i"] +[82.91478031158505, "o", "r"] +[82.94478031158505, "o", " "] +[82.97478031158505, "o", "j"] +[83.00478031158505, "o", "a"] +[83.03478031158505, "o", "f"] +[83.06478031158505, "o", "f"] +[83.09478031158505, "o", "l"] +[83.12478031158506, "o", "e"] +[83.15478031158506, "o", "_"] +[83.18478031158506, "o", "s"] +[83.21478031158506, "o", "h"] +[83.24478031158506, "o", "o"] +[83.27478031158506, "o", "p"] +[83.30478031158506, "o", "\r\n"] +[83.33478031158506, "o", "$"] +[83.36478031158506, "o", " "] +[83.39478031158507, "o", "s"] +[83.42478031158507, "o", "g"] +[83.45478031158507, "o", "r"] +[83.48478031158507, "o", " "] +[83.51478031158507, "o", "i"] +[83.54478031158507, "o", "n"] +[83.57478031158507, "o", "i"] +[83.60478031158507, "o", "t"] +[83.63478031158508, "o", " "] +[83.66478031158508, "o", "d"] +[83.69478031158508, "o", "b"] +[83.72478031158508, "o", "t"] +[83.75478031158508, "o", "_"] +[83.78478031158508, "o", "j"] +[83.81478031158508, "o", "a"] +[83.84478031158508, "o", "f"] +[83.87478031158508, "o", "f"] +[83.90478031158509, "o", "l"] +[83.93478031158509, "o", "e"] +[83.96478031158509, "o", "\r\n"] +[83.99478031158509, "o", "\u001b[0m"] +[84.02478031158509, "o", "\r\n"] +[84.02609876632752, "o", "jaffle_shop:\r\n target: splitgraph\r\n outputs:\r\n splitgraph:\r\n type: postgres\r\n host: localhost\r\n user: sgr\r\n pass: supersecure\r\n port: 5432\r\n dbname: splitgraph\r\n # The final schema that dbt writes to is a combination of this profile schema\r\n # and the schema specified in the model.\r\n schema: \"dbt_jaffle\"\r\n threads: 4\r\n"] +[85.02609876632752, "o", "19:41:10 Running with dbt=1.0.0\r\n"] +[85.02964142799439, "o", "dbt version: 1.0.0\r\npython version: 3.8.12\r\npython path: /home/runner/work/splitgraph/splitgraph/dbt_venv/bin/python\r\n"] +[85.02965406417908, "o", "os info: Linux-5.4.0-1064-azure-x86_64-with-glibc2.2.5\r\nUsing profiles.yml file at /home/runner/work/splitgraph/splitgraph/examples/dbt/.dbt/profiles.yml\r\nUsing dbt_project.yml file at /home/runner/work/splitgraph/splitgraph/examples/dbt/jaffle_shop/dbt_project.yml\r\n\r\n"] +[85.0903354072577, "o", "19:41:10 [\u001b[33mWARNING\u001b[0m]: Deprecated functionality\r\nThe `source-paths` config has been renamed to `model-paths`. Please update your\r\n`dbt_project.yml` configuration to reflect this change.\r\n"] +[85.09125737190308, "o", "19:41:10 [\u001b[33mWARNING\u001b[0m]: Deprecated functionality\r\nThe `data-paths` config has been renamed to `seed-paths`. Please update your\r\n`dbt_project.yml` configuration to reflect this change.\r\n"] +[85.10819581985535, "o", "Configuration:\r\n profiles.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n dbt_project.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n\r\n"] +[85.10821823120179, "o", "Required dependencies:\r\n"] +[85.11506823539796, "o", " - git [\u001b[32mOK found\u001b[0m]\r\n\r\nConnection:\r\n"] +[85.11509946823182, "o", " host: localhost\r\n port: 5432\r\n user: sgr\r\n database: splitgraph\r\n schema: dbt_jaffle\r\n search_path: None\r\n keepalives_idle: 0\r\n sslmode: None\r\n"] +[85.13261631965699, "o", " Connection test: [\u001b[32mOK connection ok\u001b[0m]\r\n\r\n"] +[85.13262633323731, "o", "\u001b[32mAll checks passed!\u001b[0m\r\n"] +[85.54231552124085, "o", "\u001b[0m"] +[86.01972536087098, "o", "Initialized empty repository dbt_jaffle\r\n"] +[86.04972536087098, "o", "\u001b[1m"] +[86.07972536087098, "o", "\u001b[36m"] +[86.10972536087098, "o", "\u001b[91m"] +[86.13972536087098, "o", "$"] +[86.16972536087098, "o", " "] +[86.19972536087099, "o", "\u001b[0m"] +[107.72478031158496, "o", "\u001b[H"] +[107.75478031158497, "o", "\u001b[J"] +[107.78478031158497, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now run the dbt models."] +[107.81478031158497, "o", "\r\n"] +[107.84478031158497, "o", "$"] +[107.87478031158497, "o", " "] +[107.90478031158497, "o", "c"] +[107.93478031158497, "o", "d"] +[107.96478031158497, "o", " "] +[107.99478031158498, "o", "j"] +[108.02478031158498, "o", "a"] +[108.05478031158498, "o", "f"] +[108.08478031158498, "o", "f"] +[108.11478031158498, "o", "l"] +[108.14478031158498, "o", "e"] +[108.17478031158498, "o", "_"] +[108.20478031158498, "o", "s"] +[108.23478031158498, "o", "h"] +[108.26478031158499, "o", "o"] +[108.29478031158499, "o", "p"] +[108.32478031158499, "o", " "] +[108.35478031158499, "o", "&"] +[108.38478031158499, "o", "&"] +[108.41478031158499, "o", " "] +[108.44478031158499, "o", "d"] +[108.474780311585, "o", "b"] +[108.504780311585, "o", "t"] +[108.534780311585, "o", " "] +[108.564780311585, "o", "r"] +[108.594780311585, "o", "u"] +[108.624780311585, "o", "n"] +[108.654780311585, "o", " "] +[108.684780311585, "o", "-"] +[108.714780311585, "o", "-"] +[108.744780311585, "o", "p"] +[108.774780311585, "o", "r"] +[108.804780311585, "o", "o"] +[108.834780311585, "o", "f"] +[108.86478031158501, "o", "i"] +[108.89478031158501, "o", "l"] +[108.92478031158501, "o", "e"] +[108.95478031158501, "o", "s"] +[108.98478031158501, "o", "-"] +[109.01478031158501, "o", "d"] +[109.04478031158501, "o", "i"] +[109.07478031158502, "o", "r"] +[109.10478031158502, "o", " "] +[109.13478031158502, "o", "."] +[109.16478031158502, "o", "."] +[109.19478031158502, "o", "/"] +[109.22478031158502, "o", "."] +[109.25478031158502, "o", "d"] +[109.28478031158502, "o", "b"] +[109.31478031158503, "o", "t"] +[109.34478031158503, "o", "\r\n"] +[109.37478031158503, "o", "\u001b[0m"] +[109.40478031158503, "o", "\r\n"] +[110.40478031158503, "o", "19:41:14 [\u001b[33mWARNING\u001b[0m]: Deprecated functionality\r\nThe `source-paths` config has been renamed to `model-paths`. Please update your\r\n`dbt_project.yml` configuration to reflect this change.\r\n"] +[110.40599553108271, "o", "19:41:14 [\u001b[33mWARNING\u001b[0m]: Deprecated functionality\r\nThe `data-paths` config has been renamed to `seed-paths`. Please update your\r\n`dbt_project.yml` configuration to reflect this change.\r\n"] +[110.44000617981013, "o", "19:41:14 Running with dbt=1.0.0\r\n"] +[110.45813076019343, "o", "19:41:14 Partial parse save file not found. Starting full parse."] +[110.4581538867956, "o", "\r\n"] +[111.34218685150202, "o", "19:41:15 Found 9 models, 28 tests, 0 snapshots, 0 analyses, 165 macros, 0 operations, 0 seed files, 3 sources, 0 exposures, 0 metrics\r\n"] +[111.34511200904902, "o", "19:41:15 \r\n"] +[111.56672017097529, "o", "19:41:15 Concurrency: 4 threads (target='splitgraph')\r\n"] +[111.56721250534113, "o", "19:41:15 \r\n"] +[111.57747380256708, "o", "19:41:15 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers................... [RUN]\r\n"] +[111.57837693214472, "o", "19:41:15 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders...................... [RUN]\r\n"] +[111.57917539596613, "o", "19:41:15 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments.................... [RUN]"] +[111.57921497345026, "o", "\r\n"] +[111.58071271896418, "o", "19:41:15 4 of 9 START view model dbt_jaffle.stg_stripe__payments......................... [RUN]\r\n"] +[111.7338959407812, "o", "19:41:15 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders................. [\u001b[32mCREATE VIEW\u001b[0m in 0.15s]"] +[111.7364012432104, "o", "\r\n"] +[111.74046818733271, "o", "19:41:15 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments.................... [\u001b[32mCREATE VIEW\u001b[0m in 0.16s]"] +[111.7405196857458, "o", "\r\n"] +[111.74196259498652, "o", "19:41:15 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers.............. [\u001b[32mCREATE VIEW\u001b[0m in 0.16s]\r\n"] +[111.74468914985712, "o", "19:41:15 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments............... [\u001b[32mCREATE VIEW\u001b[0m in 0.16s]"] +[111.74472658157404, "o", "\r\n"] +[111.74615184783991, "o", "19:41:15 5 of 9 START table model dbt_jaffle.customer_orders............................. [RUN]\r\n"] +[111.75302736282404, "o", "19:41:15 7 of 9 START table model dbt_jaffle.order_payments.............................. [RUN]\r\n"] +[111.75412027359064, "o", "19:41:15 6 of 9 START table model dbt_jaffle.customer_payments........................... [RUN]\r\n"] +[111.87571947097834, "o", "19:41:15 6 of 9 OK created table model dbt_jaffle.customer_payments...................... [\u001b[32mSELECT 62\u001b[0m in 0.11s]"] +[111.87578050613459, "o", "\r\n"] +[111.88033334732111, "o", "19:41:15 7 of 9 OK created table model dbt_jaffle.order_payments......................... [\u001b[32mSELECT 99\u001b[0m in 0.12s]\r\n"] +[111.88176791191157, "o", "19:41:15 5 of 9 OK created table model dbt_jaffle.customer_orders........................ [\u001b[32mSELECT 62\u001b[0m in 0.13s]"] +[111.88193933486994, "o", "\r\n"] +[111.88394038200434, "o", "19:41:15 8 of 9 START table model dbt_jaffle.fct_orders.................................. [RUN]\r\n"] +[111.891138477326, "o", "19:41:15 9 of 9 START table model dbt_jaffle.dim_customers............................... [RUN]"] +[111.89117567062434, "o", "\r\n"] +[111.94050471305903, "o", "19:41:15 8 of 9 OK created table model dbt_jaffle.fct_orders............................. [\u001b[32mSELECT 99\u001b[0m in 0.05s]"] +[111.9405712318426, "o", "\r\n"] +[111.94660441398676, "o", "19:41:15 9 of 9 OK created table model dbt_jaffle.dim_customers.......................... [\u001b[32mSELECT 100\u001b[0m in 0.05s]\r\n"] +[111.9578253459936, "o", "19:41:15 \r\n"] +[111.95858876228388, "o", "19:41:15 Finished running 4 view models, 5 table models in 0.61s.\r\n"] +[111.9692451190954, "o", "19:41:15 \r\n"] +[111.97001664161738, "o", "19:41:15 \u001b[32mCompleted successfully\u001b[0m\r\n"] +[111.9708799552923, "o", "19:41:15 \r\n"] +[111.9716226291662, "o", "19:41:15 Done. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[112.3426000308996, "o", "\u001b[0m"] +[112.3726000308996, "o", "\u001b[1m"] +[112.4026000308996, "o", "\u001b[36m"] +[112.43260003089961, "o", "\u001b[91m"] +[112.46260003089961, "o", "$"] +[112.49260003089961, "o", " "] +[112.52260003089961, "o", "\u001b[0m"] +[127.22478031158496, "o", "\u001b[H"] +[127.25478031158497, "o", "\u001b[J"] +[127.28478031158497, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Take a look at the built dataset and commit it."] +[127.31478031158497, "o", "\r\n"] +[127.34478031158497, "o", "$ # Note Splitgraph doesn't currently support storing views\r\n"] +[127.37478031158497, "o", "$ # that dbt uses as a staging point for the initial data.\r\n"] +[127.40478031158497, "o", "$"] +[127.43478031158497, "o", " "] +[127.46478031158497, "o", "s"] +[127.49478031158498, "o", "g"] +[127.52478031158498, "o", "r"] +[127.55478031158498, "o", " "] +[127.58478031158498, "o", "d"] +[127.61478031158498, "o", "i"] +[127.64478031158498, "o", "f"] +[127.67478031158498, "o", "f"] +[127.70478031158498, "o", " "] +[127.73478031158498, "o", "d"] +[127.76478031158499, "o", "b"] +[127.79478031158499, "o", "t"] +[127.82478031158499, "o", "_"] +[127.85478031158499, "o", "j"] +[127.88478031158499, "o", "a"] +[127.91478031158499, "o", "f"] +[127.94478031158499, "o", "f"] +[127.974780311585, "o", "l"] +[128.004780311585, "o", "e"] +[128.034780311585, "o", "\r\n"] +[128.064780311585, "o", "$"] +[128.094780311585, "o", " "] +[128.124780311585, "o", "s"] +[128.154780311585, "o", "g"] +[128.184780311585, "o", "r"] +[128.214780311585, "o", " "] +[128.244780311585, "o", "c"] +[128.274780311585, "o", "o"] +[128.304780311585, "o", "m"] +[128.334780311585, "o", "m"] +[128.364780311585, "o", "i"] +[128.394780311585, "o", "t"] +[128.424780311585, "o", " "] +[128.454780311585, "o", "d"] +[128.484780311585, "o", "b"] +[128.514780311585, "o", "t"] +[128.54478031158501, "o", "_"] +[128.57478031158502, "o", "j"] +[128.60478031158502, "o", "a"] +[128.63478031158502, "o", "f"] +[128.66478031158502, "o", "f"] +[128.69478031158502, "o", "l"] +[128.72478031158502, "o", "e"] +[128.75478031158502, "o", "\r\n"] +[128.78478031158502, "o", "$"] +[128.81478031158503, "o", " "] +[128.84478031158503, "o", "s"] +[128.87478031158503, "o", "g"] +[128.90478031158503, "o", "r"] +[128.93478031158503, "o", " "] +[128.96478031158503, "o", "t"] +[128.99478031158503, "o", "a"] +[129.02478031158503, "o", "g"] +[129.05478031158503, "o", " "] +[129.08478031158504, "o", "d"] +[129.11478031158504, "o", "b"] +[129.14478031158504, "o", "t"] +[129.17478031158504, "o", "_"] +[129.20478031158504, "o", "j"] +[129.23478031158504, "o", "a"] +[129.26478031158504, "o", "f"] +[129.29478031158504, "o", "f"] +[129.32478031158504, "o", "l"] +[129.35478031158505, "o", "e"] +[129.38478031158505, "o", " "] +[129.41478031158505, "o", "a"] +[129.44478031158505, "o", "s"] +[129.47478031158505, "o", "o"] +[129.50478031158505, "o", "f"] +[129.53478031158505, "o", "_"] +[129.56478031158505, "o", "2"] +[129.59478031158505, "o", "0"] +[129.62478031158506, "o", "1"] +[129.65478031158506, "o", "8"] +[129.68478031158506, "o", "0"] +[129.71478031158506, "o", "4"] +[129.74478031158506, "o", "0"] +[129.77478031158506, "o", "9"] +[129.80478031158506, "o", "\r\n"] +[129.83478031158506, "o", "\u001b[0m"] +[129.86478031158506, "o", "\r\n"] +[130.3055690574652, "o", "Between 000000000000 and the current working copy: \r\n"] +[130.30558407783568, "o", "customer_orders: table added\r\ncustomer_payments: table added\r\ndim_customers: table added\r\nfct_orders: table added\r\norder_payments: table added\r\nstg_jaffle_shop__customers: untracked\r\nstg_jaffle_shop__orders: untracked\r\nstg_jaffle_shop__payments: untracked\r\nstg_stripe__payments: untracked\r\n"] +[130.7284170436865, "o", "Committing dbt_jaffle...\r\n"] +[130.74655855178892, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[130.74744809150755, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[130.74833190918028, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[130.74924934387266, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[130.75514233589232, "o", "Processing table customer_payments\r\n"] +[130.84330070495665, "o", "Processing table order_payments\r\n"] +[130.93274844169676, "o", "Processing table customer_orders\r\n"] +[131.0191110420233, "o", "Processing table fct_orders\r\n"] +[131.10851753234923, "o", "Processing table dim_customers\r\n"] +[131.20967042923033, "o", "Committed dbt_jaffle as b097e8fcca05.\r\n"] +[131.6267417716986, "o", "Tagged dbt_jaffle:b097e8fcca05280b18b0df2a07f8d01834f2f260e4e444c565d4e07ab828add7 with asof_20180409.\r\n"] +[131.6567417716986, "o", "\u001b[1m"] +[131.6867417716986, "o", "\u001b[36m"] +[131.7167417716986, "o", "\u001b[91m"] +[131.7467417716986, "o", "$"] +[131.7767417716986, "o", " "] +[131.8067417716986, "o", "\u001b[0m"] +[141.72478031158496, "o", "\u001b[H"] +[141.75478031158497, "o", "\u001b[J"] +[141.78478031158497, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the new version of the raw dataset and run dbt against it as well."] +[141.81478031158497, "o", "\r\n"] +[141.84478031158497, "o", "$"] +[141.87478031158497, "o", " "] +[141.90478031158497, "o", "s"] +[141.93478031158497, "o", "g"] +[141.96478031158497, "o", "r"] +[141.99478031158498, "o", " "] +[142.02478031158498, "o", "c"] +[142.05478031158498, "o", "h"] +[142.08478031158498, "o", "e"] +[142.11478031158498, "o", "c"] +[142.14478031158498, "o", "k"] +[142.17478031158498, "o", "o"] +[142.20478031158498, "o", "u"] +[142.23478031158498, "o", "t"] +[142.26478031158499, "o", " "] +[142.294780311585, "o", "r"] +[142.324780311585, "o", "a"] +[142.354780311585, "o", "w"] +[142.384780311585, "o", "_"] +[142.414780311585, "o", "j"] +[142.444780311585, "o", "a"] +[142.474780311585, "o", "f"] +[142.504780311585, "o", "f"] +[142.534780311585, "o", "l"] +[142.564780311585, "o", "e"] +[142.594780311585, "o", "_"] +[142.624780311585, "o", "s"] +[142.654780311585, "o", "h"] +[142.684780311585, "o", "o"] +[142.714780311585, "o", "p"] +[142.744780311585, "o", ":"] +[142.774780311585, "o", "a"] +[142.804780311585, "o", "s"] +[142.834780311585, "o", "o"] +[142.864780311585, "o", "f"] +[142.894780311585, "o", "_"] +[142.924780311585, "o", "2"] +[142.954780311585, "o", "0"] +[142.984780311585, "o", "1"] +[143.014780311585, "o", "8"] +[143.04478031158501, "o", "0"] +[143.07478031158502, "o", "4"] +[143.10478031158502, "o", "1"] +[143.13478031158502, "o", "0"] +[143.16478031158502, "o", "\r\n"] +[143.19478031158502, "o", "$"] +[143.22478031158502, "o", " "] +[143.25478031158502, "o", "c"] +[143.28478031158502, "o", "d"] +[143.31478031158503, "o", " "] +[143.34478031158503, "o", "j"] +[143.37478031158503, "o", "a"] +[143.40478031158503, "o", "f"] +[143.43478031158503, "o", "f"] +[143.46478031158503, "o", "l"] +[143.49478031158503, "o", "e"] +[143.52478031158503, "o", "_"] +[143.55478031158503, "o", "s"] +[143.58478031158504, "o", "h"] +[143.61478031158504, "o", "o"] +[143.64478031158504, "o", "p"] +[143.67478031158504, "o", " "] +[143.70478031158504, "o", "&"] +[143.73478031158504, "o", "&"] +[143.76478031158504, "o", " "] +[143.79478031158504, "o", "d"] +[143.82478031158504, "o", "b"] +[143.85478031158505, "o", "t"] +[143.88478031158505, "o", " "] +[143.91478031158505, "o", "r"] +[143.94478031158505, "o", "u"] +[143.97478031158505, "o", "n"] +[144.00478031158505, "o", " "] +[144.03478031158505, "o", "-"] +[144.06478031158505, "o", "-"] +[144.09478031158505, "o", "p"] +[144.12478031158506, "o", "r"] +[144.15478031158506, "o", "o"] +[144.18478031158506, "o", "f"] +[144.21478031158506, "o", "i"] +[144.24478031158506, "o", "l"] +[144.27478031158506, "o", "e"] +[144.30478031158506, "o", "s"] +[144.33478031158506, "o", "-"] +[144.36478031158506, "o", "d"] +[144.39478031158507, "o", "i"] +[144.42478031158507, "o", "r"] +[144.45478031158507, "o", " "] +[144.48478031158507, "o", "."] +[144.51478031158507, "o", "."] +[144.54478031158507, "o", "/"] +[144.57478031158507, "o", "."] +[144.60478031158507, "o", "d"] +[144.63478031158508, "o", "b"] +[144.66478031158508, "o", "t"] +[144.69478031158508, "o", "\r\n"] +[144.72478031158508, "o", "\u001b[0m"] +[144.75478031158508, "o", "\r\n"] +[145.48534395217956, "o", "Checked out raw_jaffle_shop:d66a9009ecb8.\r\n"] +[146.48534395217956, "o", "19:41:21 [\u001b[33mWARNING\u001b[0m]: Deprecated functionality\r\nThe `source-paths` config has been renamed to `model-paths`. Please update your\r\n`dbt_project.yml` configuration to reflect this change.\r\n"] +[146.48616172790588, "o", "19:41:21 [\u001b[33mWARNING\u001b[0m]: Deprecated functionality\r\nThe `data-paths` config has been renamed to `seed-paths`. Please update your\r\n`dbt_project.yml` configuration to reflect this change.\r\n"] +[146.520273942948, "o", "19:41:21 Running with dbt=1.0.0\r\n"] +[146.58568002700866, "o", "19:41:21 Found 9 models, 28 tests, 0 snapshots, 0 analyses, 165 macros, 0 operations, 0 seed files, 3 sources, 0 exposures, 0 metrics\r\n"] +[146.58889820098938, "o", "19:41:21 \r\n"] +[146.91846754074157, "o", "19:41:21 Concurrency: 4 threads (target='splitgraph')\r\n"] +[146.91890098571838, "o", "19:41:21 \r\n"] +[146.92800714492859, "o", "19:41:21 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers................... [RUN]"] +[146.92806913375915, "o", "\r\n"] +[146.92929675102295, "o", "19:41:21 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders...................... [RUN]"] +[146.92933418273986, "o", "\r\n"] +[146.93046977043213, "o", "19:41:21 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments.................... [RUN]\r\n"] +[146.93134262085022, "o", "19:41:21 4 of 9 START view model dbt_jaffle.stg_stripe__payments......................... [RUN]\r\n"] +[147.1393678379065, "o", "19:41:21 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments............... [\u001b[32mCREATE VIEW\u001b[0m in 0.20s]"] +[147.13939263343872, "o", "\r\n"] +[147.1537776184088, "o", "19:41:21 5 of 9 START table model dbt_jaffle.order_payments.............................. [RUN]\r\n"] +[147.160317201615, "o", "19:41:21 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers.............. [\u001b[32mCREATE VIEW\u001b[0m in 0.22s]"] +[147.16037156105102, "o", "\r\n"] +[147.16307141304077, "o", "19:41:21 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments.................... [\u001b[32mCREATE VIEW\u001b[0m in 0.22s]\r\n"] +[147.16430594444336, "o", "19:41:21 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders................. [\u001b[32mCREATE VIEW\u001b[0m in 0.23s]\r\n"] +[147.19554593086303, "o", "19:41:22 6 of 9 START table model dbt_jaffle.customer_orders............................. [RUN]\r\n"] +[147.1977117252356, "o", "19:41:22 7 of 9 START table model dbt_jaffle.customer_payments........................... [RUN]\r\n"] +[147.28023316383423, "o", "19:41:22 5 of 9 OK created table model dbt_jaffle.order_payments......................... [\u001b[32mSELECT 99\u001b[0m in 0.13s]"] +[147.28365804672302, "o", "\r\n"] +[147.29145338058532, "o", "19:41:22 8 of 9 START table model dbt_jaffle.fct_orders.................................. [RUN]\r\n"] +[147.29540969848694, "o", "19:41:22 7 of 9 OK created table model dbt_jaffle.customer_payments...................... [\u001b[32mSELECT 62\u001b[0m in 0.09s]\r\n"] +[147.2960696411139, "o", "19:41:22 6 of 9 OK created table model dbt_jaffle.customer_orders........................ [\u001b[32mSELECT 62\u001b[0m in 0.10s]\r\n"] +[147.30320693969787, "o", "19:41:22 9 of 9 START table model dbt_jaffle.dim_customers............................... [RUN]\r\n"] +[147.36316158294738, "o", "19:41:22 8 of 9 OK created table model dbt_jaffle.fct_orders............................. [\u001b[32mSELECT 99\u001b[0m in 0.07s]\r\n"] +[147.3690355014807, "o", "19:41:22 9 of 9 OK created table model dbt_jaffle.dim_customers.......................... [\u001b[32mSELECT 100\u001b[0m in 0.06s]\r\n"] +[147.3802466583258, "o", "19:41:22 \r\n"] +[147.38110043525757, "o", "19:41:22 Finished running 4 view models, 5 table models in 0.79s.\r\n"] +[147.3913951110846, "o", "19:41:22 \r\n"] +[147.3922233772284, "o", "19:41:22 \u001b[32mCompleted successfully\u001b[0m\r\n"] +[147.3930516433722, "o", "19:41:22 \r\n"] +[147.3937919330603, "o", "19:41:22 Done. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[147.75681807518066, "o", "\u001b[0m"] +[147.78681807518066, "o", "\u001b[1m"] +[147.81681807518066, "o", "\u001b[36m"] +[147.84681807518066, "o", "\u001b[91m"] +[147.87681807518067, "o", "$"] +[147.90681807518067, "o", " "] +[147.93681807518067, "o", "\u001b[0m"] +[161.72478031158496, "o", "\u001b[H"] +[161.75478031158497, "o", "\u001b[J"] +[161.78478031158497, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create an image from the new data."] +[161.81478031158497, "o", "\r\n"] +[161.84478031158497, "o", "$"] +[161.87478031158497, "o", " "] +[161.90478031158497, "o", "s"] +[161.93478031158497, "o", "g"] +[161.96478031158497, "o", "r"] +[161.99478031158498, "o", " "] +[162.02478031158498, "o", "c"] +[162.05478031158498, "o", "o"] +[162.08478031158498, "o", "m"] +[162.11478031158498, "o", "m"] +[162.14478031158498, "o", "i"] +[162.17478031158498, "o", "t"] +[162.20478031158498, "o", " "] +[162.23478031158498, "o", "d"] +[162.26478031158499, "o", "b"] +[162.294780311585, "o", "t"] +[162.324780311585, "o", "_"] +[162.354780311585, "o", "j"] +[162.384780311585, "o", "a"] +[162.414780311585, "o", "f"] +[162.444780311585, "o", "f"] +[162.474780311585, "o", "l"] +[162.504780311585, "o", "e"] +[162.534780311585, "o", "\r\n"] +[162.564780311585, "o", "$"] +[162.594780311585, "o", " "] +[162.624780311585, "o", "s"] +[162.654780311585, "o", "g"] +[162.684780311585, "o", "r"] +[162.714780311585, "o", " "] +[162.744780311585, "o", "t"] +[162.774780311585, "o", "a"] +[162.804780311585, "o", "g"] +[162.834780311585, "o", " "] +[162.864780311585, "o", "d"] +[162.894780311585, "o", "b"] +[162.924780311585, "o", "t"] +[162.954780311585, "o", "_"] +[162.984780311585, "o", "j"] +[163.014780311585, "o", "a"] +[163.04478031158501, "o", "f"] +[163.07478031158502, "o", "f"] +[163.10478031158502, "o", "l"] +[163.13478031158502, "o", "e"] +[163.16478031158502, "o", " "] +[163.19478031158502, "o", "a"] +[163.22478031158502, "o", "s"] +[163.25478031158502, "o", "o"] +[163.28478031158502, "o", "f"] +[163.31478031158503, "o", "_"] +[163.34478031158503, "o", "2"] +[163.37478031158503, "o", "0"] +[163.40478031158503, "o", "1"] +[163.43478031158503, "o", "8"] +[163.46478031158503, "o", "0"] +[163.49478031158503, "o", "4"] +[163.52478031158503, "o", "1"] +[163.55478031158503, "o", "0"] +[163.58478031158504, "o", "\r\n"] +[163.61478031158504, "o", "\u001b[0m"] +[163.64478031158504, "o", "\r\n"] +[164.0621277427679, "o", "Committing dbt_jaffle...\r\n"] +[164.1005491352087, "o", "Processing table fct_orders\r\n"] +[164.1919707393652, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[164.19275609016475, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[164.19353881835994, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[164.19798675537166, "o", "Processing table customer_payments\r\n"] +[164.26027384758052, "o", "Object o47a7af4dc6d74898da55e6c760eac4d702db25633cfab4e28e6df77cf00098 already exists, skipping\r\n"] +[164.2771381473547, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[164.28153506279048, "o", "Processing table order_payments\r\n"] +[164.34511724472102, "o", "Object o87940f703edacc7113c37ae83a6abe6293f48cbb940171ef03875a066b0c5c already exists, skipping\r\n"] +[164.36686960220393, "o", "Processing table customer_orders\r\n"] +[164.42952934265193, "o", "Object o0fafb9e76c06e221af3aa558b0a751b176857a09b2d75ca00826becbd12ef5 already exists, skipping\r\n"] +[164.45065728187618, "o", "Processing table dim_customers\r\n"] +[164.51345864296016, "o", "Object o9656926ef986d89e326952a43869eaf3dc59905ff22aba22cd3dd67a834dc5 already exists, skipping\r\n"] +[164.55393401145992, "o", "Committed dbt_jaffle as bb1348f19a4b.\r\n"] +[164.97939649581966, "o", "Tagged dbt_jaffle:bb1348f19a4b1acb3ddc4ea4f6d0708290389646c9df0f057dbf1ac574855a2e with asof_20180410.\r\n"] +[165.00939649581966, "o", "\u001b[1m"] +[165.03939649581966, "o", "\u001b[36m"] +[165.06939649581966, "o", "\u001b[91m"] +[165.09939649581966, "o", "$"] +[165.12939649581966, "o", " "] +[165.15939649581966, "o", "\u001b[0m"] +[171.72478031158496, "o", "\u001b[H"] +[171.75478031158497, "o", "\u001b[J"] +[171.78478031158497, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We now have two versions of the source and the target dataset."] +[171.81478031158497, "o", "\r\n"] +[171.84478031158497, "o", "$"] +[171.87478031158497, "o", " "] +[171.90478031158497, "o", "s"] +[171.93478031158497, "o", "g"] +[171.96478031158497, "o", "r"] +[171.99478031158498, "o", " "] +[172.02478031158498, "o", "l"] +[172.05478031158498, "o", "o"] +[172.08478031158498, "o", "g"] +[172.11478031158498, "o", " "] +[172.14478031158498, "o", "-"] +[172.17478031158498, "o", "t"] +[172.20478031158498, "o", " "] +[172.23478031158498, "o", "r"] +[172.26478031158499, "o", "a"] +[172.294780311585, "o", "w"] +[172.324780311585, "o", "_"] +[172.354780311585, "o", "j"] +[172.384780311585, "o", "a"] +[172.414780311585, "o", "f"] +[172.444780311585, "o", "f"] +[172.474780311585, "o", "l"] +[172.504780311585, "o", "e"] +[172.534780311585, "o", "_"] +[172.564780311585, "o", "s"] +[172.594780311585, "o", "h"] +[172.624780311585, "o", "o"] +[172.654780311585, "o", "p"] +[172.684780311585, "o", "\r\n"] +[172.714780311585, "o", "$"] +[172.744780311585, "o", " "] +[172.774780311585, "o", "s"] +[172.804780311585, "o", "g"] +[172.834780311585, "o", "r"] +[172.864780311585, "o", " "] +[172.894780311585, "o", "l"] +[172.924780311585, "o", "o"] +[172.954780311585, "o", "g"] +[172.984780311585, "o", " "] +[173.014780311585, "o", "-"] +[173.04478031158501, "o", "t"] +[173.07478031158502, "o", " "] +[173.10478031158502, "o", "d"] +[173.13478031158502, "o", "b"] +[173.16478031158502, "o", "t"] +[173.19478031158502, "o", "_"] +[173.22478031158502, "o", "j"] +[173.25478031158502, "o", "a"] +[173.28478031158502, "o", "f"] +[173.31478031158503, "o", "f"] +[173.34478031158503, "o", "l"] +[173.37478031158503, "o", "e"] +[173.40478031158503, "o", "\r\n"] +[173.43478031158503, "o", "\u001b[0m"] +[173.46478031158503, "o", "\r\n"] +[173.89486477851923, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-12-17 19:41:00\u001b[0m\r\n \u2514 \u001b[1m\u001b[91mb7368aa32f\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-12-17 19:41:03\u001b[0m\r\n \u2514 \u001b[1m\u001b[91md66a9009ec\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-12-17 19:41:06\u001b[0m\r\n"] +[174.32347510337885, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-12-17 19:41:11\u001b[0m\r\n \u2514 \u001b[1m\u001b[91mb097e8fcca\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-12-17 19:41:17\u001b[0m\r\n \u2514 \u001b[1m\u001b[91mbb1348f19a\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-12-17 19:41:23\u001b[0m\r\n"] +[174.35347510337886, "o", "\u001b[1m"] +[174.38347510337886, "o", "\u001b[36m"] +[174.41347510337886, "o", "\u001b[91m"] +[174.44347510337886, "o", "$"] +[174.47347510337886, "o", " "] +[174.50347510337886, "o", "\u001b[0m"] +[179.53347510337886, "o", "\u001b[H"] +[179.56347510337886, "o", "\u001b[J"] +[179.59347510337886, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the difference between the two datasets that dbt built."] +[179.62347510337887, "o", "\r\n"] +[179.65347510337887, "o", "$"] +[179.68347510337887, "o", " "] +[179.71347510337887, "o", "s"] +[179.74347510337887, "o", "g"] +[179.77347510337887, "o", "r"] +[179.80347510337887, "o", " "] +[179.83347510337887, "o", "d"] +[179.86347510337887, "o", "i"] +[179.89347510337888, "o", "f"] +[179.92347510337888, "o", "f"] +[179.95347510337888, "o", " "] +[179.98347510337888, "o", "d"] +[180.01347510337888, "o", "b"] +[180.04347510337888, "o", "t"] +[180.07347510337888, "o", "_"] +[180.10347510337888, "o", "j"] +[180.13347510337888, "o", "a"] +[180.1634751033789, "o", "f"] +[180.1934751033789, "o", "f"] +[180.2234751033789, "o", "l"] +[180.2534751033789, "o", "e"] +[180.2834751033789, "o", " "] +[180.3134751033789, "o", "a"] +[180.3434751033789, "o", "s"] +[180.3734751033789, "o", "o"] +[180.4034751033789, "o", "f"] +[180.4334751033789, "o", "_"] +[180.4634751033789, "o", "2"] +[180.4934751033789, "o", "0"] +[180.5234751033789, "o", "1"] +[180.5534751033789, "o", "8"] +[180.5834751033789, "o", "0"] +[180.6134751033789, "o", "4"] +[180.6434751033789, "o", "0"] +[180.6734751033789, "o", "9"] +[180.7034751033789, "o", " "] +[180.7334751033789, "o", "a"] +[180.7634751033789, "o", "s"] +[180.7934751033789, "o", "o"] +[180.8234751033789, "o", "f"] +[180.8534751033789, "o", "_"] +[180.8834751033789, "o", "2"] +[180.91347510337891, "o", "0"] +[180.94347510337892, "o", "1"] +[180.97347510337892, "o", "8"] +[181.00347510337892, "o", "0"] +[181.03347510337892, "o", "4"] +[181.06347510337892, "o", "1"] +[181.09347510337892, "o", "0"] +[181.12347510337892, "o", " "] +[181.15347510337892, "o", "-"] +[181.18347510337892, "o", "-"] +[181.21347510337893, "o", "v"] +[181.24347510337893, "o", "e"] +[181.27347510337893, "o", "r"] +[181.30347510337893, "o", "b"] +[181.33347510337893, "o", "o"] +[181.36347510337893, "o", "s"] +[181.39347510337893, "o", "e"] +[181.42347510337893, "o", "\r\n"] +[181.45347510337893, "o", "\u001b[0m"] +[181.48347510337894, "o", "\r\n"] +[182.1300717735297, "o", "Between b097e8fcca05 and bb1348f19a4b: \r\n"] +[182.13036073684756, "o", "customer_orders: no changes.\r\ncustomer_payments: no changes.\r\ndim_customers: no changes.\r\n"] +[182.13038386344974, "o", "fct_orders: added 5 rows, removed 5 rows.\r\n- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending', 0, 0, 0, 23, 23)\r\n- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending', 0, 0, 15, 0, 15)\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 0, 25, 0, 25)\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped', 0, 0, 17, 0, 17)\r\n"] +[182.1305087947852, "o", "- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 23, 0, 0, 23)\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned', 0, 0, 0, 23, 23)\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned', 0, 0, 15, 0, 15)\r\n"] +[182.13052166938846, "o", "+ (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 25, 0, 25)\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 17, 0, 17)\r\n"] +[182.13053001403873, "o", "+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 23, 0, 0, 23)\r\n"] +[182.1305543327338, "o", "order_payments: no changes.\r\n"] +[182.1605543327338, "o", "\u001b[1m"] +[182.1905543327338, "o", "\u001b[36m"] +[182.2205543327338, "o", "\u001b[91m"] +[182.2505543327338, "o", "$"] +[182.2805543327338, "o", " "] +[182.3105543327338, "o", "\u001b[0m"] +[189.03347510337886, "o", "\u001b[H"] +[189.06347510337886, "o", "\u001b[J"] +[189.09347510337886, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a sample query: how much in bank transfer refunds did we process?"] +[189.12347510337887, "o", "\r\n"] +[189.15347510337887, "o", "$"] +[189.18347510337887, "o", " "] +[189.21347510337887, "o", "s"] +[189.24347510337887, "o", "g"] +[189.27347510337887, "o", "r"] +[189.30347510337887, "o", " "] +[189.33347510337887, "o", "s"] +[189.36347510337887, "o", "q"] +[189.39347510337888, "o", "l"] +[189.42347510337888, "o", " "] +[189.45347510337888, "o", "-"] +[189.48347510337888, "o", "i"] +[189.51347510337888, "o", " "] +[189.54347510337888, "o", "d"] +[189.57347510337888, "o", "b"] +[189.60347510337888, "o", "t"] +[189.63347510337888, "o", "_"] +[189.6634751033789, "o", "j"] +[189.6934751033789, "o", "a"] +[189.7234751033789, "o", "f"] +[189.7534751033789, "o", "f"] +[189.7834751033789, "o", "l"] +[189.8134751033789, "o", "e"] +[189.8434751033789, "o", ":"] +[189.8734751033789, "o", "a"] +[189.9034751033789, "o", "s"] +[189.9334751033789, "o", "o"] +[189.9634751033789, "o", "f"] +[189.9934751033789, "o", "_"] +[190.0234751033789, "o", "2"] +[190.0534751033789, "o", "0"] +[190.0834751033789, "o", "1"] +[190.1134751033789, "o", "8"] +[190.1434751033789, "o", "0"] +[190.1734751033789, "o", "4"] +[190.2034751033789, "o", "0"] +[190.2334751033789, "o", "9"] +[190.2634751033789, "o", " "] +[190.2934751033789, "o", "\""] +[190.3234751033789, "o", "S"] +[190.3534751033789, "o", "E"] +[190.3834751033789, "o", "L"] +[190.41347510337891, "o", "E"] +[190.44347510337892, "o", "C"] +[190.47347510337892, "o", "T"] +[190.50347510337892, "o", " "] +[190.53347510337892, "o", "s"] +[190.56347510337892, "o", "u"] +[190.59347510337892, "o", "m"] +[190.62347510337892, "o", "("] +[190.65347510337892, "o", "b"] +[190.68347510337892, "o", "a"] +[190.71347510337893, "o", "n"] +[190.74347510337893, "o", "k"] +[190.77347510337893, "o", "_"] +[190.80347510337893, "o", "t"] +[190.83347510337893, "o", "r"] +[190.86347510337893, "o", "a"] +[190.89347510337893, "o", "n"] +[190.92347510337893, "o", "s"] +[190.95347510337893, "o", "f"] +[190.98347510337894, "o", "e"] +[191.01347510337894, "o", "r"] +[191.04347510337894, "o", "_"] +[191.07347510337894, "o", "a"] +[191.10347510337894, "o", "m"] +[191.13347510337894, "o", "o"] +[191.16347510337894, "o", "u"] +[191.19347510337894, "o", "n"] +[191.22347510337895, "o", "t"] +[191.25347510337895, "o", ")"] +[191.28347510337895, "o", " "] +[191.31347510337895, "o", "F"] +[191.34347510337895, "o", "R"] +[191.37347510337895, "o", "O"] +[191.40347510337895, "o", "M"] +[191.43347510337895, "o", " "] +[191.46347510337895, "o", "f"] +[191.49347510337896, "o", "c"] +[191.52347510337896, "o", "t"] +[191.55347510337896, "o", "_"] +[191.58347510337896, "o", "o"] +[191.61347510337896, "o", "r"] +[191.64347510337896, "o", "d"] +[191.67347510337896, "o", "e"] +[191.70347510337896, "o", "r"] +[191.73347510337896, "o", "s"] +[191.76347510337897, "o", " "] +[191.79347510337897, "o", "W"] +[191.82347510337897, "o", "H"] +[191.85347510337897, "o", "E"] +[191.88347510337897, "o", "R"] +[191.91347510337897, "o", "E"] +[191.94347510337897, "o", " "] +[191.97347510337897, "o", "s"] +[192.00347510337897, "o", "t"] +[192.03347510337898, "o", "a"] +[192.06347510337898, "o", "t"] +[192.09347510337898, "o", "u"] +[192.12347510337898, "o", "s"] +[192.15347510337898, "o", " "] +[192.18347510337898, "o", "="] +[192.21347510337898, "o", " "] +[192.24347510337898, "o", "'"] +[192.27347510337898, "o", "r"] +[192.303475103379, "o", "e"] +[192.333475103379, "o", "t"] +[192.363475103379, "o", "u"] +[192.393475103379, "o", "r"] +[192.423475103379, "o", "n"] +[192.453475103379, "o", "e"] +[192.483475103379, "o", "d"] +[192.513475103379, "o", "'"] +[192.543475103379, "o", "\""] +[192.573475103379, "o", "\r\n"] +[192.603475103379, "o", "$"] +[192.633475103379, "o", " "] +[192.663475103379, "o", "s"] +[192.693475103379, "o", "g"] +[192.723475103379, "o", "r"] +[192.753475103379, "o", " "] +[192.783475103379, "o", "s"] +[192.813475103379, "o", "q"] +[192.843475103379, "o", "l"] +[192.873475103379, "o", " "] +[192.903475103379, "o", "-"] +[192.933475103379, "o", "i"] +[192.963475103379, "o", " "] +[192.993475103379, "o", "d"] +[193.023475103379, "o", "b"] +[193.05347510337901, "o", "t"] +[193.08347510337902, "o", "_"] +[193.11347510337902, "o", "j"] +[193.14347510337902, "o", "a"] +[193.17347510337902, "o", "f"] +[193.20347510337902, "o", "f"] +[193.23347510337902, "o", "l"] +[193.26347510337902, "o", "e"] +[193.29347510337902, "o", ":"] +[193.32347510337902, "o", "a"] +[193.35347510337903, "o", "s"] +[193.38347510337903, "o", "o"] +[193.41347510337903, "o", "f"] +[193.44347510337903, "o", "_"] +[193.47347510337903, "o", "2"] +[193.50347510337903, "o", "0"] +[193.53347510337903, "o", "1"] +[193.56347510337903, "o", "8"] +[193.59347510337903, "o", "0"] +[193.62347510337904, "o", "4"] +[193.65347510337904, "o", "1"] +[193.68347510337904, "o", "0"] +[193.71347510337904, "o", " "] +[193.74347510337904, "o", "\""] +[193.77347510337904, "o", "S"] +[193.80347510337904, "o", "E"] +[193.83347510337904, "o", "L"] +[193.86347510337905, "o", "E"] +[193.89347510337905, "o", "C"] +[193.92347510337905, "o", "T"] +[193.95347510337905, "o", " "] +[193.98347510337905, "o", "s"] +[194.01347510337905, "o", "u"] +[194.04347510337905, "o", "m"] +[194.07347510337905, "o", "("] +[194.10347510337905, "o", "b"] +[194.13347510337906, "o", "a"] +[194.16347510337906, "o", "n"] +[194.19347510337906, "o", "k"] +[194.22347510337906, "o", "_"] +[194.25347510337906, "o", "t"] +[194.28347510337906, "o", "r"] +[194.31347510337906, "o", "a"] +[194.34347510337906, "o", "n"] +[194.37347510337906, "o", "s"] +[194.40347510337907, "o", "f"] +[194.43347510337907, "o", "e"] +[194.46347510337907, "o", "r"] +[194.49347510337907, "o", "_"] +[194.52347510337907, "o", "a"] +[194.55347510337907, "o", "m"] +[194.58347510337907, "o", "o"] +[194.61347510337907, "o", "u"] +[194.64347510337907, "o", "n"] +[194.67347510337908, "o", "t"] +[194.70347510337908, "o", ")"] +[194.73347510337908, "o", " "] +[194.76347510337908, "o", "F"] +[194.79347510337908, "o", "R"] +[194.82347510337908, "o", "O"] +[194.85347510337908, "o", "M"] +[194.88347510337908, "o", " "] +[194.91347510337908, "o", "f"] +[194.9434751033791, "o", "c"] +[194.9734751033791, "o", "t"] +[195.0034751033791, "o", "_"] +[195.0334751033791, "o", "o"] +[195.0634751033791, "o", "r"] +[195.0934751033791, "o", "d"] +[195.1234751033791, "o", "e"] +[195.1534751033791, "o", "r"] +[195.1834751033791, "o", "s"] +[195.2134751033791, "o", " "] +[195.2434751033791, "o", "W"] +[195.2734751033791, "o", "H"] +[195.3034751033791, "o", "E"] +[195.3334751033791, "o", "R"] +[195.3634751033791, "o", "E"] +[195.3934751033791, "o", " "] +[195.4234751033791, "o", "s"] +[195.4534751033791, "o", "t"] +[195.4834751033791, "o", "a"] +[195.5134751033791, "o", "t"] +[195.5434751033791, "o", "u"] +[195.5734751033791, "o", "s"] +[195.6034751033791, "o", " "] +[195.6334751033791, "o", "="] +[195.6634751033791, "o", " "] +[195.69347510337911, "o", "'"] +[195.72347510337912, "o", "r"] +[195.75347510337912, "o", "e"] +[195.78347510337912, "o", "t"] +[195.81347510337912, "o", "u"] +[195.84347510337912, "o", "r"] +[195.87347510337912, "o", "n"] +[195.90347510337912, "o", "e"] +[195.93347510337912, "o", "d"] +[195.96347510337912, "o", "'"] +[195.99347510337913, "o", "\""] +[196.02347510337913, "o", "\r\n"] +[196.05347510337913, "o", "\u001b[0m"] +[196.08347510337913, "o", "\r\n"] +[197.08347510337913, "o", "3\r\n"] +[198.08347510337913, "o", "60\r\n"] +[198.11347510337913, "o", "\u001b[1m"] +[198.14347510337913, "o", "\u001b[36m"] +[198.17347510337913, "o", "\u001b[91m"] +[198.20347510337913, "o", "$"] +[198.23347510337913, "o", " "] +[198.26347510337914, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.3.0/import-from-csv.cast b/content/casts/versioned/archive/v0.3.0/import-from-csv.cast new file mode 100644 index 00000000..75d7a86c --- /dev/null +++ b/content/casts/versioned/archive/v0.3.0/import-from-csv.cast @@ -0,0 +1,594 @@ +{"version": 2, "width": 100, "height": 45, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1639769992, "metadata": {"tss": [{"h": "Inspect the data file", "ts": 0.06}, {"h": "Initialize the repository", "ts": 6.503155946731569}, {"h": "Ingest the data into a new table (wrapper around COPY FROM STDIN)", "ts": 27.50315594673157}, {"h": "The data is now in a table but not committed as a Splitgraph image", "ts": 36.19315594673171}, {"h": "Create a new image and tag it", "ts": 43.91122798919699}, {"h": "Inspect the image", "ts": 52.26576544761687}, {"h": "Inspect the table", "ts": 59.192593326568954}, {"h": "Inspect object metadata", "ts": 78.69259332656895}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the data file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # (originally from https://data.townofcary.org/api/v2/catalog/datasets/rdu-weather-history/exports/csv)\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "h"] +[0.27, "o", "e"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "d"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "-"] +[0.42000000000000015, "o", "n"] +[0.4500000000000002, "o", "5"] +[0.4800000000000002, "o", " "] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", "d"] +[0.5700000000000003, "o", "u"] +[0.6000000000000003, "o", "-"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "-"] +[0.8700000000000006, "o", "h"] +[0.9000000000000006, "o", "i"] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "t"] +[0.9900000000000007, "o", "o"] +[1.0200000000000007, "o", "r"] +[1.0500000000000007, "o", "y"] +[1.0800000000000007, "o", "."] +[1.1100000000000008, "o", "c"] +[1.1400000000000008, "o", "s"] +[1.1700000000000008, "o", "v"] +[1.2000000000000008, "o", "\r\n"] +[1.2300000000000009, "o", "\u001b[0m"] +[1.260000000000001, "o", "\r\n"] +[1.263143787384034, "o", "date;temperaturemin;temperaturemax;precipitation;snowfall;snowdepth;avgwindspeed;fastest2minwinddir;fastest2minwindspeed;fastest5secwinddir;fastest5secwindspeed;fog;fogheavy;mist;rain;fogground;ice;glaze;drizzle;snow;freezingrain;smokehaze;thunder;highwind;hail;blowingsnow;dust;freezingfog\r\r\n2007-01-06;50.0;71.1;0.13;0.0;0.0;8.05;230;17.9;230;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-09;30.0;55.0;0.0;0.0;0.0;7.61;280;23.04;270;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;N"] +[1.2631559467315683, "o", "o;No\r\r\n2007-01-14;50.0;73.9;0.0;0.0;0.0;8.5;230;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-15;57.0;73.9;0.0;0.0;0.0;13.2;230;23.94;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n"] +[1.2931559467315683, "o", "\u001b[1m"] +[1.3231559467315683, "o", "\u001b[36m"] +[1.3531559467315684, "o", "\u001b[91m"] +[1.3831559467315684, "o", "$"] +[1.4131559467315684, "o", " "] +[1.4431559467315684, "o", "\u001b[0m"] +[6.473155946731569, "o", "\u001b[H"] +[6.503155946731569, "o", "\u001b[J"] +[6.533155946731569, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the repository"] +[6.56315594673157, "o", "\r\n"] +[6.59315594673157, "o", "$"] +[6.62315594673157, "o", " "] +[6.65315594673157, "o", "s"] +[6.683155946731571, "o", "g"] +[6.713155946731571, "o", "r"] +[6.743155946731571, "o", " "] +[6.773155946731571, "o", "i"] +[6.803155946731572, "o", "n"] +[6.833155946731572, "o", "i"] +[6.863155946731572, "o", "t"] +[6.893155946731572, "o", " "] +[6.923155946731573, "o", "d"] +[6.953155946731573, "o", "e"] +[6.983155946731573, "o", "m"] +[7.013155946731573, "o", "o"] +[7.043155946731574, "o", "/"] +[7.073155946731574, "o", "w"] +[7.103155946731574, "o", "e"] +[7.133155946731574, "o", "a"] +[7.163155946731575, "o", "t"] +[7.193155946731575, "o", "h"] +[7.223155946731575, "o", "e"] +[7.253155946731575, "o", "r"] +[7.283155946731576, "o", "\r\n"] +[7.313155946731576, "o", "$"] +[7.343155946731576, "o", " "] +[7.373155946731576, "o", "s"] +[7.403155946731577, "o", "g"] +[7.433155946731577, "o", "r"] +[7.463155946731577, "o", " "] +[7.493155946731577, "o", "c"] +[7.523155946731578, "o", "s"] +[7.553155946731578, "o", "v"] +[7.583155946731578, "o", " "] +[7.613155946731578, "o", "i"] +[7.643155946731579, "o", "m"] +[7.673155946731579, "o", "p"] +[7.703155946731579, "o", "o"] +[7.733155946731579, "o", "r"] +[7.76315594673158, "o", "t"] +[7.79315594673158, "o", " "] +[7.82315594673158, "o", "-"] +[7.85315594673158, "o", "-"] +[7.883155946731581, "o", "h"] +[7.913155946731581, "o", "e"] +[7.943155946731581, "o", "l"] +[7.973155946731581, "o", "p"] +[8.003155946731582, "o", "\r\n"] +[8.033155946731581, "o", "\u001b[0m"] +[8.06315594673158, "o", "\r\n"] +[8.49641829490663, "o", "Initialized empty repository demo/weather\r\n"] +[8.888166961669935, "o", "Usage: sgr csv import [OPTIONS] REPOSITORY TABLE\r\n\r\n Import a CSV file into a checked-out Splitgraph repository. This doesn't\r\n create a new image, use sgr commit after the import and any adjustments\r\n (e.g. adding primary keys or converting column types) to do so.\r\n\r\n If the target table doesn't exist, this will create a new table.\r\n\r\n If the target table does exist, this will try and patch the new values in\r\n by updating rows that exist in the current table (as per its primary key\r\n constraints) an"] +[8.888187942504896, "o", "d inserting new ones. Rows existing in the current table\r\n but missing in the CSV won't be deleted.\r\n\r\n If -r is passed, the table will instead be deleted and recreated from the\r\n CSV file if it exists.\r\n\r\nOptions:\r\n -f, --file FILENAME File name to import data from, default\r\n stdin.\r\n\r\n -r, --replace Replace the table if it already exists.\r\n -k, --primary-key TEXT Use the specified column(s) as primary\r\n "] +[8.888196763992323, "o", " key(s)\r\n\r\n -t, --override-type ...\r\n Explicitly set types of these columns to PG\r\n types\r\n\r\n --encoding TEXT Encoding to use for the CSV file\r\n --separator TEXT CSV separator to use\r\n --no-header Treats the first line of the CSV as data\r\n rather than a header.\r\n\r\n --skip-schema-check Skips checking that the dataframe is\r\n "] +[8.888211307525648, "o", " compatible with the target schema.\r\n\r\n --help Show this message and exit.\r\n"] +[8.918211307525647, "o", "\u001b[1m"] +[8.948211307525646, "o", "\u001b[36m"] +[8.978211307525646, "o", "\u001b[91m"] +[9.008211307525645, "o", "$"] +[9.038211307525645, "o", " "] +[9.068211307525644, "o", "\u001b[0m"] +[27.47315594673157, "o", "\u001b[H"] +[27.50315594673157, "o", "\u001b[J"] +[27.533155946731572, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the data into a new table (wrapper around COPY FROM STDIN)"] +[27.563155946731573, "o", "\r\n"] +[27.593155946731574, "o", "$"] +[27.623155946731575, "o", " "] +[27.653155946731577, "o", "s"] +[27.683155946731578, "o", "g"] +[27.71315594673158, "o", "r"] +[27.74315594673158, "o", " "] +[27.77315594673158, "o", "c"] +[27.803155946731582, "o", "s"] +[27.833155946731583, "o", "v"] +[27.863155946731585, "o", " "] +[27.893155946731586, "o", "i"] +[27.923155946731587, "o", "m"] +[27.953155946731588, "o", "p"] +[27.98315594673159, "o", "o"] +[28.01315594673159, "o", "r"] +[28.04315594673159, "o", "t"] +[28.073155946731593, "o", " "] +[28.103155946731594, "o", "-"] +[28.133155946731595, "o", "f"] +[28.163155946731596, "o", " "] +[28.193155946731597, "o", "r"] +[28.223155946731598, "o", "d"] +[28.2531559467316, "o", "u"] +[28.2831559467316, "o", "-"] +[28.3131559467316, "o", "w"] +[28.343155946731603, "o", "e"] +[28.373155946731604, "o", "a"] +[28.403155946731605, "o", "t"] +[28.433155946731606, "o", "h"] +[28.463155946731607, "o", "e"] +[28.49315594673161, "o", "r"] +[28.52315594673161, "o", "-"] +[28.55315594673161, "o", "h"] +[28.583155946731612, "o", "i"] +[28.613155946731613, "o", "s"] +[28.643155946731614, "o", "t"] +[28.673155946731615, "o", "o"] +[28.703155946731616, "o", "r"] +[28.733155946731618, "o", "y"] +[28.76315594673162, "o", "."] +[28.79315594673162, "o", "c"] +[28.82315594673162, "o", "s"] +[28.853155946731622, "o", "v"] +[28.883155946731623, "o", " "] +[28.913155946731624, "o", "\\"] +[28.943155946731626, "o", "\r\n "] +[28.973155946731627, "o", "-"] +[29.003155946731628, "o", "k"] +[29.03315594673163, "o", " "] +[29.06315594673163, "o", "d"] +[29.09315594673163, "o", "a"] +[29.123155946731632, "o", "t"] +[29.153155946731633, "o", "e"] +[29.183155946731635, "o", " "] +[29.213155946731636, "o", "\\"] +[29.243155946731637, "o", "\r\n "] +[29.273155946731638, "o", "-"] +[29.30315594673164, "o", "t"] +[29.33315594673164, "o", " "] +[29.36315594673164, "o", "d"] +[29.393155946731643, "o", "a"] +[29.423155946731644, "o", "t"] +[29.453155946731645, "o", "e"] +[29.483155946731646, "o", " "] +[29.513155946731647, "o", "t"] +[29.54315594673165, "o", "i"] +[29.57315594673165, "o", "m"] +[29.60315594673165, "o", "e"] +[29.63315594673165, "o", "s"] +[29.663155946731653, "o", "t"] +[29.693155946731654, "o", "a"] +[29.723155946731655, "o", "m"] +[29.753155946731656, "o", "p"] +[29.783155946731657, "o", " "] +[29.81315594673166, "o", "\\"] +[29.84315594673166, "o", "\r\n "] +[29.87315594673166, "o", "-"] +[29.903155946731662, "o", "-"] +[29.933155946731663, "o", "s"] +[29.963155946731664, "o", "e"] +[29.993155946731665, "o", "p"] +[30.023155946731666, "o", "a"] +[30.053155946731668, "o", "r"] +[30.08315594673167, "o", "a"] +[30.11315594673167, "o", "t"] +[30.14315594673167, "o", "o"] +[30.173155946731672, "o", "r"] +[30.203155946731673, "o", " "] +[30.233155946731674, "o", "\""] +[30.263155946731676, "o", ";"] +[30.293155946731677, "o", "\""] +[30.323155946731678, "o", " "] +[30.35315594673168, "o", "\\"] +[30.38315594673168, "o", "\r\n "] +[30.41315594673168, "o", "d"] +[30.443155946731682, "o", "e"] +[30.473155946731683, "o", "m"] +[30.503155946731685, "o", "o"] +[30.533155946731686, "o", "/"] +[30.563155946731687, "o", "w"] +[30.593155946731688, "o", "e"] +[30.62315594673169, "o", "a"] +[30.65315594673169, "o", "t"] +[30.68315594673169, "o", "h"] +[30.713155946731693, "o", "e"] +[30.743155946731694, "o", "r"] +[30.773155946731695, "o", " "] +[30.803155946731696, "o", "r"] +[30.833155946731697, "o", "d"] +[30.8631559467317, "o", "u"] +[30.8931559467317, "o", "\r\n"] +[30.9231559467317, "o", "\u001b[0m"] +[30.9531559467317, "o", "\r\n"] +[30.983155946731703, "o", "\u001b[1m"] +[31.013155946731704, "o", "\u001b[36m"] +[31.043155946731705, "o", "\u001b[91m"] +[31.073155946731706, "o", "$"] +[31.103155946731707, "o", " "] +[31.13315594673171, "o", "\u001b[0m"] +[36.163155946731706, "o", "\u001b[H"] +[36.19315594673171, "o", "\u001b[J"] +[36.22315594673171, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The data is now in a table but not committed as a Splitgraph image"] +[36.25315594673171, "o", "\r\n"] +[36.28315594673171, "o", "$"] +[36.31315594673171, "o", " "] +[36.34315594673171, "o", "s"] +[36.373155946731714, "o", "g"] +[36.403155946731715, "o", "r"] +[36.433155946731716, "o", " "] +[36.46315594673172, "o", "s"] +[36.49315594673172, "o", "t"] +[36.52315594673172, "o", "a"] +[36.55315594673172, "o", "t"] +[36.58315594673172, "o", "u"] +[36.61315594673172, "o", "s"] +[36.643155946731724, "o", " "] +[36.673155946731725, "o", "d"] +[36.70315594673173, "o", "e"] +[36.73315594673173, "o", "m"] +[36.76315594673173, "o", "o"] +[36.79315594673173, "o", "/"] +[36.82315594673173, "o", "w"] +[36.85315594673173, "o", "e"] +[36.88315594673173, "o", "a"] +[36.913155946731735, "o", "t"] +[36.943155946731736, "o", "h"] +[36.97315594673174, "o", "e"] +[37.00315594673174, "o", "r"] +[37.03315594673174, "o", "\r\n"] +[37.06315594673174, "o", "$"] +[37.09315594673174, "o", " "] +[37.12315594673174, "o", "s"] +[37.153155946731744, "o", "g"] +[37.183155946731745, "o", "r"] +[37.213155946731746, "o", " "] +[37.24315594673175, "o", "d"] +[37.27315594673175, "o", "i"] +[37.30315594673175, "o", "f"] +[37.33315594673175, "o", "f"] +[37.36315594673175, "o", " "] +[37.39315594673175, "o", "d"] +[37.423155946731754, "o", "e"] +[37.453155946731755, "o", "m"] +[37.483155946731756, "o", "o"] +[37.51315594673176, "o", "/"] +[37.54315594673176, "o", "w"] +[37.57315594673176, "o", "e"] +[37.60315594673176, "o", "a"] +[37.63315594673176, "o", "t"] +[37.66315594673176, "o", "h"] +[37.693155946731764, "o", "e"] +[37.723155946731765, "o", "r"] +[37.753155946731766, "o", "\r\n"] +[37.78315594673177, "o", "\u001b[0m"] +[37.81315594673177, "o", "\r\n"] +[38.23989230155965, "o", "demo/weather: on image 0000000000000000000000000000000000000000000000000000000000000000.\r\n"] +[38.671194610595904, "o", "Between 000000000000 and the current working copy: \r\n"] +[38.67122798919698, "o", "rdu: table added\r\n"] +[38.70122798919698, "o", "\u001b[1m"] +[38.73122798919698, "o", "\u001b[36m"] +[38.76122798919698, "o", "\u001b[91m"] +[38.79122798919698, "o", "$"] +[38.821227989196984, "o", " "] +[38.851227989196985, "o", "\u001b[0m"] +[43.88122798919699, "o", "\u001b[H"] +[43.91122798919699, "o", "\u001b[J"] +[43.94122798919699, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a new image and tag it"] +[43.97122798919699, "o", "\r\n"] +[44.00122798919699, "o", "$"] +[44.03122798919699, "o", " "] +[44.06122798919699, "o", "s"] +[44.091227989196994, "o", "g"] +[44.121227989196996, "o", "r"] +[44.151227989197, "o", " "] +[44.181227989197, "o", "c"] +[44.211227989197, "o", "o"] +[44.241227989197, "o", "m"] +[44.271227989197, "o", "m"] +[44.301227989197, "o", "i"] +[44.331227989197004, "o", "t"] +[44.361227989197005, "o", " "] +[44.391227989197006, "o", "d"] +[44.42122798919701, "o", "e"] +[44.45122798919701, "o", "m"] +[44.48122798919701, "o", "o"] +[44.51122798919701, "o", "/"] +[44.54122798919701, "o", "w"] +[44.57122798919701, "o", "e"] +[44.601227989197014, "o", "a"] +[44.631227989197015, "o", "t"] +[44.661227989197016, "o", "h"] +[44.69122798919702, "o", "e"] +[44.72122798919702, "o", "r"] +[44.75122798919702, "o", "\r\n"] +[44.78122798919702, "o", "$"] +[44.81122798919702, "o", " "] +[44.84122798919702, "o", "s"] +[44.871227989197024, "o", "g"] +[44.901227989197025, "o", "r"] +[44.931227989197026, "o", " "] +[44.96122798919703, "o", "t"] +[44.99122798919703, "o", "a"] +[45.02122798919703, "o", "g"] +[45.05122798919703, "o", " "] +[45.08122798919703, "o", "d"] +[45.11122798919703, "o", "e"] +[45.141227989197034, "o", "m"] +[45.171227989197035, "o", "o"] +[45.20122798919704, "o", "/"] +[45.23122798919704, "o", "w"] +[45.26122798919704, "o", "e"] +[45.29122798919704, "o", "a"] +[45.32122798919704, "o", "t"] +[45.35122798919704, "o", "h"] +[45.38122798919704, "o", "e"] +[45.411227989197045, "o", "r"] +[45.441227989197046, "o", " "] +[45.47122798919705, "o", "i"] +[45.50122798919705, "o", "n"] +[45.53122798919705, "o", "i"] +[45.56122798919705, "o", "t"] +[45.59122798919705, "o", "i"] +[45.62122798919705, "o", "a"] +[45.651227989197054, "o", "l"] +[45.681227989197055, "o", "_"] +[45.711227989197056, "o", "d"] +[45.74122798919706, "o", "a"] +[45.77122798919706, "o", "t"] +[45.80122798919706, "o", "a"] +[45.83122798919706, "o", "\r\n"] +[45.86122798919706, "o", "\u001b[0m"] +[45.89122798919706, "o", "\r\n"] +[46.346106319427776, "o", "Committing demo/weather...\r\n"] +[46.368726758957195, "o", "Processing table rdu\r\n"] +[46.60128858566313, "o", "Committed demo/weather as d1908b3b629e.\r\n"] +[47.02576544761686, "o", "Tagged demo/weather:d1908b3b629ec5e4abceb16b3ed75d0e040c6dd126947d6346637e9268f02e7d with initial_data.\r\n"] +[47.055765447616864, "o", "\u001b[1m"] +[47.085765447616865, "o", "\u001b[36m"] +[47.115765447616866, "o", "\u001b[91m"] +[47.14576544761687, "o", "$"] +[47.17576544761687, "o", " "] +[47.20576544761687, "o", "\u001b[0m"] +[52.23576544761687, "o", "\u001b[H"] +[52.26576544761687, "o", "\u001b[J"] +[52.29576544761687, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image"] +[52.325765447616874, "o", "\r\n"] +[52.355765447616875, "o", "$"] +[52.385765447616876, "o", " "] +[52.41576544761688, "o", "s"] +[52.44576544761688, "o", "g"] +[52.47576544761688, "o", "r"] +[52.50576544761688, "o", " "] +[52.53576544761688, "o", "s"] +[52.56576544761688, "o", "h"] +[52.595765447616884, "o", "o"] +[52.625765447616885, "o", "w"] +[52.655765447616886, "o", " "] +[52.68576544761689, "o", "d"] +[52.71576544761689, "o", "e"] +[52.74576544761689, "o", "m"] +[52.77576544761689, "o", "o"] +[52.80576544761689, "o", "/"] +[52.83576544761689, "o", "w"] +[52.865765447616894, "o", "e"] +[52.895765447616895, "o", "a"] +[52.9257654476169, "o", "t"] +[52.9557654476169, "o", "h"] +[52.9857654476169, "o", "e"] +[53.0157654476169, "o", "r"] +[53.0457654476169, "o", ":"] +[53.0757654476169, "o", "i"] +[53.1057654476169, "o", "n"] +[53.135765447616905, "o", "i"] +[53.165765447616906, "o", "t"] +[53.19576544761691, "o", "i"] +[53.22576544761691, "o", "a"] +[53.25576544761691, "o", "l"] +[53.28576544761691, "o", "_"] +[53.31576544761691, "o", "d"] +[53.34576544761691, "o", "a"] +[53.375765447616914, "o", "t"] +[53.405765447616915, "o", "a"] +[53.435765447616916, "o", "\r\n"] +[53.46576544761692, "o", "\u001b[0m"] +[53.49576544761692, "o", "\r\n"] +[53.95041847229038, "o", "Image demo/weather:d1908b3b629ec5e4abceb16b3ed75d0e040c6dd126947d6346637e9268f02e7d\r\n\r\n"] +[53.950438261032446, "o", "Created at 2021-12-17T19:40:03.730174\r\n"] +[53.95191812515293, "o", "Size: 113.04 KiB\r\n"] +[53.95192766189609, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[53.952593326568945, "o", " rdu\r\n"] +[53.982593326568946, "o", "\u001b[1m"] +[54.01259332656895, "o", "\u001b[36m"] +[54.04259332656895, "o", "\u001b[91m"] +[54.07259332656895, "o", "$"] +[54.10259332656895, "o", " "] +[54.13259332656895, "o", "\u001b[0m"] +[59.16259332656895, "o", "\u001b[H"] +[59.192593326568954, "o", "\u001b[J"] +[59.222593326568955, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the table"] +[59.252593326568956, "o", "\r\n"] +[59.28259332656896, "o", "$"] +[59.31259332656896, "o", " "] +[59.34259332656896, "o", "s"] +[59.37259332656896, "o", "g"] +[59.40259332656896, "o", "r"] +[59.43259332656896, "o", " "] +[59.462593326568964, "o", "t"] +[59.492593326568965, "o", "a"] +[59.522593326568966, "o", "b"] +[59.55259332656897, "o", "l"] +[59.58259332656897, "o", "e"] +[59.61259332656897, "o", " "] +[59.64259332656897, "o", "d"] +[59.67259332656897, "o", "e"] +[59.70259332656897, "o", "m"] +[59.732593326568974, "o", "o"] +[59.762593326568975, "o", "/"] +[59.792593326568976, "o", "w"] +[59.82259332656898, "o", "e"] +[59.85259332656898, "o", "a"] +[59.88259332656898, "o", "t"] +[59.91259332656898, "o", "h"] +[59.94259332656898, "o", "e"] +[59.97259332656898, "o", "r"] +[60.002593326568984, "o", ":"] +[60.032593326568986, "o", "i"] +[60.06259332656899, "o", "n"] +[60.09259332656899, "o", "i"] +[60.12259332656899, "o", "t"] +[60.15259332656899, "o", "i"] +[60.18259332656899, "o", "a"] +[60.21259332656899, "o", "l"] +[60.24259332656899, "o", "_"] +[60.272593326568995, "o", "d"] +[60.302593326568996, "o", "a"] +[60.332593326569, "o", "t"] +[60.362593326569, "o", "a"] +[60.392593326569, "o", " "] +[60.422593326569, "o", "r"] +[60.452593326569, "o", "d"] +[60.482593326569, "o", "u"] +[60.512593326569004, "o", "\r\n"] +[60.542593326569005, "o", "\u001b[0m"] +[60.572593326569006, "o", "\r\n"] +[60.99644624710123, "o", "Table demo/weather:d1908b3b629ec5e4abceb16b3ed75d0e040c6dd126947d6346637e9268f02e7d/rdu\r\n\r\n"] +[60.99712574005167, "o", "Size: 113.04 KiB\r\n"] +[60.998167629242346, "o", "Rows: 4633\r\nColumns: \r\n"] +[60.998178119659826, "o", " date (timestamp without time zone, PK)\r\n temperaturemin (numeric)\r\n temperaturemax (numeric)\r\n precipitation (numeric)\r\n snowfall (numeric)\r\n snowdepth (numeric)\r\n avgwindspeed (numeric)\r\n fastest2minwinddir (integer)\r\n fastest2minwindspeed (numeric)\r\n fastest5secwinddir (integer)\r\n fastest5secwindspeed (numeric)\r\n fog (character varying)\r\n fogheavy (character varying)\r\n mist (character varying)\r\n rain (character varying)\r\n"] +[60.998210544586584, "o", " fogground (character varying)\r\n ice (character varying)\r\n"] +[60.99824153900187, "o", " glaze (character varying)\r\n drizzle (character varying)\r\n snow (character varying)\r\n freezingrain (character varying)\r\n smokehaze (character varying)\r\n"] +[60.998255605698034, "o", " thunder (character varying)\r\n highwind (character varying)\r\n hail (character varying)\r\n blowingsnow (character varying)\r\n dust (character varying)\r\n"] +[60.99827444076578, "o", " freezingfog (character varying)\r\n\r\nObjects: \r\n"] +[60.99828540802042, "o", " ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] +[61.02828540802042, "o", "\u001b[1m"] +[61.058285408020424, "o", "\u001b[36m"] +[61.088285408020425, "o", "\u001b[91m"] +[61.11828540802043, "o", "$"] +[61.14828540802043, "o", " "] +[61.17828540802043, "o", "\u001b[0m"] +[78.66259332656895, "o", "\u001b[H"] +[78.69259332656895, "o", "\u001b[J"] +[78.72259332656895, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect object metadata"] +[78.75259332656896, "o", "\r\n"] +[78.78259332656896, "o", "$"] +[78.81259332656896, "o", " "] +[78.84259332656896, "o", "s"] +[78.87259332656896, "o", "g"] +[78.90259332656896, "o", "r"] +[78.93259332656896, "o", " "] +[78.96259332656896, "o", "o"] +[78.99259332656897, "o", "b"] +[79.02259332656897, "o", "j"] +[79.05259332656897, "o", "e"] +[79.08259332656897, "o", "c"] +[79.11259332656897, "o", "t"] +[79.14259332656897, "o", " "] +[79.17259332656897, "o", "o"] +[79.20259332656897, "o", "b"] +[79.23259332656897, "o", "7"] +[79.26259332656898, "o", "9"] +[79.29259332656898, "o", "9"] +[79.32259332656898, "o", "c"] +[79.35259332656898, "o", "a"] +[79.38259332656898, "o", "7"] +[79.41259332656898, "o", "6"] +[79.44259332656898, "o", "1"] +[79.47259332656898, "o", "e"] +[79.50259332656898, "o", "a"] +[79.53259332656899, "o", "6"] +[79.56259332656899, "o", "3"] +[79.59259332656899, "o", "8"] +[79.62259332656899, "o", "c"] +[79.65259332656899, "o", "0"] +[79.68259332656899, "o", "d"] +[79.71259332656899, "o", "b"] +[79.742593326569, "o", "b"] +[79.772593326569, "o", "4"] +[79.802593326569, "o", "d"] +[79.832593326569, "o", "f"] +[79.862593326569, "o", "3"] +[79.892593326569, "o", "e"] +[79.922593326569, "o", "5"] +[79.952593326569, "o", "9"] +[79.982593326569, "o", "a"] +[80.012593326569, "o", "b"] +[80.042593326569, "o", "6"] +[80.072593326569, "o", "a"] +[80.102593326569, "o", "9"] +[80.13259332656901, "o", "9"] +[80.16259332656901, "o", "5"] +[80.19259332656901, "o", "d"] +[80.22259332656901, "o", "8"] +[80.25259332656901, "o", "7"] +[80.28259332656901, "o", "9"] +[80.31259332656902, "o", "9"] +[80.34259332656902, "o", "9"] +[80.37259332656902, "o", "9"] +[80.40259332656902, "o", "0"] +[80.43259332656902, "o", "9"] +[80.46259332656902, "o", "d"] +[80.49259332656902, "o", "0"] +[80.52259332656902, "o", "0"] +[80.55259332656902, "o", "8"] +[80.58259332656903, "o", "a"] +[80.61259332656903, "o", "3"] +[80.64259332656903, "o", "4"] +[80.67259332656903, "o", "9"] +[80.70259332656903, "o", "5"] +[80.73259332656903, "o", "7"] +[80.76259332656903, "o", "1"] +[80.79259332656903, "o", "1"] +[80.82259332656903, "o", "c"] +[80.85259332656904, "o", "9"] +[80.88259332656904, "o", "0"] +[80.91259332656904, "o", "0"] +[80.94259332656904, "o", "9"] +[80.97259332656904, "o", "f"] +[81.00259332656904, "o", "8"] +[81.03259332656904, "o", "f"] +[81.06259332656904, "o", "\r\n"] +[81.09259332656904, "o", "\u001b[0m"] +[81.12259332656905, "o", "\r\n"] +[81.53976432800337, "o", "Object ID: ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n\r\n"] +[81.53977982521101, "o", "Namespace: demo\r\nFormat: FRAG\r\nSize: 113.04 KiB\r\nCreated: 2021-12-17 19:40:03.942441"] +[81.54035870552107, "o", "\r\nRows inserted: 4633\r\nInsertion hash: 4b49b5701a582aa5c418238e4bf75c84d0dcd2ec993fb4e7fe1d0dfcf6ef6877\r\nRows deleted: 0\r\nDeletion hash: 0000000000000000000000000000000000000000000000000000000000000000\r\nColumn index:\r\n"] +[81.54065172195479, "o", " fog: ['No', 'Yes']\r\n ice: ['No', 'Yes']\r\n date: ['2007-01-01 00:00:00', '2019-09-07 00:00:00']\r\n dust: ['No', 'Yes']\r\n hail: ['No', 'Yes']\r\n mist: ['No', 'Yes']\r\n rain: ['No', 'Yes']\r\n snow: ['No', 'Yes']\r\n glaze: ['No', 'Yes']\r\n drizzle: ['No', 'Yes']\r\n thunder: ['No', 'Yes']\r\n fogheavy: ['No', 'Yes']\r\n highwind: ['No', 'Yes']\r\n snowfall: ['0.0', '7.01']\r\n fogground: ['No', 'Yes']\r\n smokehaze: ['No', 'Yes']\r\n snowdepth: ['0.0', '5.91']\r\n blowingsnow: ['No', 'Yes']\r\n freezingfog: ['No', "] +[81.54066221237227, "o", "'Yes']\r\n avgwindspeed: ['0.0', '20.36']\r\n freezingrain: ['No', 'Yes']\r\n precipitation: ['0.0', '6.45']\r\n temperaturemax: ['23.2', '105.1']\r\n temperaturemin: ['4.1', '80.1']\r\n fastest2minwinddir: [10, 360]\r\n fastest5secwinddir: [10, 360]\r\n fastest2minwindspeed: ['4.92', '59.95']\r\n fastest5secwindspeed: ['6.93', '86.12']\r\n\r\n"] +[81.56389371871992, "o", "Location: created locally\r\n"] +[81.59389371871993, "o", "\u001b[1m"] +[81.62389371871993, "o", "\u001b[36m"] +[81.65389371871993, "o", "\u001b[91m"] +[81.68389371871993, "o", "$"] +[81.71389371871993, "o", " "] +[81.74389371871993, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.3.0/import-from-mongo.cast b/content/casts/versioned/archive/v0.3.0/import-from-mongo.cast new file mode 100644 index 00000000..18c2b599 --- /dev/null +++ b/content/casts/versioned/archive/v0.3.0/import-from-mongo.cast @@ -0,0 +1,669 @@ +{"version": 2, "width": 100, "height": 35, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1639770007, "metadata": {"tss": [{"h": "Inspect the config file", "ts": 0.06}, {"h": "Do some preliminary cleanup", "ts": 6.0600000000000005}, {"h": "Mount the Mongo database", "ts": 12.447155971527106}, {"h": "Check the contents of the new table", "ts": 29.44715597152711}, {"h": "Import the data into a new Splitgraph repository", "ts": 36.550614757537915}, {"h": "Alternatively, data can be imported from other databases with Splitfiles", "ts": 45.08043362617511}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the config file"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "c"] +[0.24, "o", "a"] +[0.27, "o", "t"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "."] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "g"] +[0.42000000000000015, "o", "c"] +[0.4500000000000002, "o", "o"] +[0.4800000000000002, "o", "n"] +[0.5100000000000002, "o", "f"] +[0.5400000000000003, "o", "i"] +[0.5700000000000003, "o", "g"] +[0.6000000000000003, "o", "\r\n"] +[0.6300000000000003, "o", "\u001b[0m"] +[0.6600000000000004, "o", "\r\n"] +[0.6621536350250248, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[data_sources]\r\nmongo_fdw=splitgraph.hooks.data_source.MongoDataSource\r\n"] +[0.6921536350250248, "o", "\u001b[1m"] +[0.7221536350250248, "o", "\u001b[36m"] +[0.7521536350250249, "o", "\u001b[91m"] +[0.7821536350250249, "o", "$"] +[0.8121536350250249, "o", " "] +[0.8421536350250249, "o", "\u001b[0m"] +[6.03, "o", "\u001b[H"] +[6.0600000000000005, "o", "\u001b[J"] +[6.090000000000001, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Do some preliminary cleanup"] +[6.120000000000001, "o", "\r\n"] +[6.150000000000001, "o", "$"] +[6.1800000000000015, "o", " "] +[6.210000000000002, "o", "s"] +[6.240000000000002, "o", "g"] +[6.270000000000002, "o", "r"] +[6.3000000000000025, "o", " "] +[6.330000000000003, "o", "r"] +[6.360000000000003, "o", "m"] +[6.390000000000003, "o", " "] +[6.4200000000000035, "o", "-"] +[6.450000000000004, "o", "y"] +[6.480000000000004, "o", " "] +[6.510000000000004, "o", "s"] +[6.5400000000000045, "o", "t"] +[6.570000000000005, "o", "a"] +[6.600000000000005, "o", "g"] +[6.630000000000005, "o", "i"] +[6.6600000000000055, "o", "n"] +[6.690000000000006, "o", "g"] +[6.720000000000006, "o", "\r\n"] +[6.750000000000006, "o", "\u001b[0m"] +[6.7800000000000065, "o", "\r\n"] +[7.207155971527106, "o", "Postgres schema staging will be deleted.\r\n"] +[7.237155971527106, "o", "\u001b[1m"] +[7.267155971527107, "o", "\u001b[36m"] +[7.297155971527107, "o", "\u001b[91m"] +[7.327155971527107, "o", "$"] +[7.357155971527107, "o", " "] +[7.387155971527108, "o", "\u001b[0m"] +[12.417155971527107, "o", "\u001b[H"] +[12.447155971527106, "o", "\u001b[J"] +[12.477155971527106, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Mount the Mongo database"] +[12.507155971527105, "o", "\r\n"] +[12.537155971527104, "o", "$"] +[12.567155971527104, "o", " "] +[12.597155971527103, "o", "s"] +[12.627155971527102, "o", "g"] +[12.657155971527102, "o", "r"] +[12.687155971527101, "o", " "] +[12.7171559715271, "o", "m"] +[12.7471559715271, "o", "o"] +[12.7771559715271, "o", "u"] +[12.807155971527099, "o", "n"] +[12.837155971527098, "o", "t"] +[12.867155971527097, "o", " "] +[12.897155971527097, "o", "m"] +[12.927155971527096, "o", "o"] +[12.957155971527095, "o", "n"] +[12.987155971527095, "o", "g"] +[13.017155971527094, "o", "o"] +[13.047155971527093, "o", "_"] +[13.077155971527093, "o", "f"] +[13.107155971527092, "o", "d"] +[13.137155971527092, "o", "w"] +[13.167155971527091, "o", " "] +[13.19715597152709, "o", "-"] +[13.22715597152709, "o", "-"] +[13.257155971527089, "o", "h"] +[13.287155971527088, "o", "e"] +[13.317155971527088, "o", "l"] +[13.347155971527087, "o", "p"] +[13.377155971527086, "o", "\r\n"] +[13.407155971527086, "o", "$"] +[13.437155971527085, "o", " "] +[13.467155971527085, "o", "s"] +[13.497155971527084, "o", "g"] +[13.527155971527083, "o", "r"] +[13.557155971527083, "o", " "] +[13.587155971527082, "o", "m"] +[13.617155971527081, "o", "o"] +[13.64715597152708, "o", "u"] +[13.67715597152708, "o", "n"] +[13.70715597152708, "o", "t"] +[13.737155971527079, "o", " "] +[13.767155971527078, "o", "m"] +[13.797155971527078, "o", "o"] +[13.827155971527077, "o", "n"] +[13.857155971527076, "o", "g"] +[13.887155971527076, "o", "o"] +[13.917155971527075, "o", "_"] +[13.947155971527074, "o", "f"] +[13.977155971527074, "o", "d"] +[14.007155971527073, "o", "w"] +[14.037155971527072, "o", " "] +[14.067155971527072, "o", "s"] +[14.097155971527071, "o", "t"] +[14.12715597152707, "o", "a"] +[14.15715597152707, "o", "g"] +[14.18715597152707, "o", "i"] +[14.217155971527069, "o", "n"] +[14.247155971527068, "o", "g"] +[14.277155971527067, "o", " "] +[14.307155971527067, "o", "-"] +[14.337155971527066, "o", "c"] +[14.367155971527065, "o", " "] +[14.397155971527065, "o", "o"] +[14.427155971527064, "o", "r"] +[14.457155971527063, "o", "i"] +[14.487155971527063, "o", "g"] +[14.517155971527062, "o", "i"] +[14.547155971527062, "o", "n"] +[14.57715597152706, "o", "r"] +[14.60715597152706, "o", "o"] +[14.63715597152706, "o", ":"] +[14.667155971527059, "o", "o"] +[14.697155971527058, "o", "r"] +[14.727155971527058, "o", "i"] +[14.757155971527057, "o", "g"] +[14.787155971527056, "o", "i"] +[14.817155971527056, "o", "n"] +[14.847155971527055, "o", "p"] +[14.877155971527054, "o", "a"] +[14.907155971527054, "o", "s"] +[14.937155971527053, "o", "s"] +[14.967155971527053, "o", "@"] +[14.997155971527052, "o", "m"] +[15.027155971527051, "o", "o"] +[15.05715597152705, "o", "n"] +[15.08715597152705, "o", "g"] +[15.11715597152705, "o", "o"] +[15.147155971527049, "o", ":"] +[15.177155971527048, "o", "2"] +[15.207155971527047, "o", "7"] +[15.237155971527047, "o", "0"] +[15.267155971527046, "o", "1"] +[15.297155971527046, "o", "7"] +[15.327155971527045, "o", " "] +[15.357155971527044, "o", "-"] +[15.387155971527044, "o", "o"] +[15.417155971527043, "o", " "] +[15.447155971527042, "o", "'"] +[15.477155971527042, "o", "{"] +[15.507155971527041, "o", "\""] +[15.53715597152704, "o", "t"] +[15.56715597152704, "o", "a"] +[15.59715597152704, "o", "b"] +[15.627155971527039, "o", "l"] +[15.657155971527038, "o", "e"] +[15.687155971527037, "o", "s"] +[15.717155971527037, "o", "\""] +[15.747155971527036, "o", ":"] +[15.777155971527035, "o", " "] +[15.807155971527035, "o", "{"] +[15.837155971527034, "o", "\""] +[15.867155971527033, "o", "s"] +[15.897155971527033, "o", "t"] +[15.927155971527032, "o", "u"] +[15.957155971527031, "o", "f"] +[15.98715597152703, "o", "f"] +[16.017155971527032, "o", "\""] +[16.047155971527033, "o", ":"] +[16.077155971527034, "o", " "] +[16.107155971527035, "o", "{"] +[16.137155971527037, "o", "\r\n "] +[16.167155971527038, "o", "\""] +[16.19715597152704, "o", "o"] +[16.22715597152704, "o", "p"] +[16.25715597152704, "o", "t"] +[16.287155971527042, "o", "i"] +[16.317155971527043, "o", "o"] +[16.347155971527044, "o", "n"] +[16.377155971527046, "o", "s"] +[16.407155971527047, "o", "\""] +[16.437155971527048, "o", ":"] +[16.46715597152705, "o", "\r\n "] +[16.49715597152705, "o", "{"] +[16.52715597152705, "o", "\r\n "] +[16.557155971527052, "o", "\""] +[16.587155971527054, "o", "d"] +[16.617155971527055, "o", "a"] +[16.647155971527056, "o", "t"] +[16.677155971527057, "o", "a"] +[16.707155971527058, "o", "b"] +[16.73715597152706, "o", "a"] +[16.76715597152706, "o", "s"] +[16.79715597152706, "o", "e"] +[16.827155971527063, "o", "\""] +[16.857155971527064, "o", ":"] +[16.887155971527065, "o", " "] +[16.917155971527066, "o", "\""] +[16.947155971527067, "o", "o"] +[16.97715597152707, "o", "r"] +[17.00715597152707, "o", "i"] +[17.03715597152707, "o", "g"] +[17.06715597152707, "o", "i"] +[17.097155971527073, "o", "n"] +[17.127155971527074, "o", "d"] +[17.157155971527075, "o", "b"] +[17.187155971527076, "o", "\""] +[17.217155971527077, "o", ","] +[17.24715597152708, "o", "\r\n "] +[17.27715597152708, "o", "\""] +[17.30715597152708, "o", "c"] +[17.337155971527082, "o", "o"] +[17.367155971527083, "o", "l"] +[17.397155971527084, "o", "l"] +[17.427155971527085, "o", "e"] +[17.457155971527087, "o", "c"] +[17.487155971527088, "o", "t"] +[17.51715597152709, "o", "i"] +[17.54715597152709, "o", "o"] +[17.57715597152709, "o", "n"] +[17.607155971527092, "o", "\""] +[17.637155971527093, "o", ":"] +[17.667155971527094, "o", " "] +[17.697155971527096, "o", "\""] +[17.727155971527097, "o", "s"] +[17.757155971527098, "o", "t"] +[17.7871559715271, "o", "u"] +[17.8171559715271, "o", "f"] +[17.8471559715271, "o", "f"] +[17.877155971527102, "o", "\""] +[17.907155971527104, "o", "\r\n "] +[17.937155971527105, "o", "}"] +[17.967155971527106, "o", ","] +[17.997155971527107, "o", "\r\n "] +[18.027155971527108, "o", "\""] +[18.05715597152711, "o", "s"] +[18.08715597152711, "o", "c"] +[18.11715597152711, "o", "h"] +[18.147155971527113, "o", "e"] +[18.177155971527114, "o", "m"] +[18.207155971527115, "o", "a"] +[18.237155971527116, "o", "\""] +[18.267155971527117, "o", ":"] +[18.29715597152712, "o", " "] +[18.32715597152712, "o", "{"] +[18.35715597152712, "o", "\r\n "] +[18.387155971527122, "o", "\""] +[18.417155971527123, "o", "n"] +[18.447155971527124, "o", "a"] +[18.477155971527125, "o", "m"] +[18.507155971527126, "o", "e"] +[18.537155971527127, "o", "\""] +[18.56715597152713, "o", ":"] +[18.59715597152713, "o", " "] +[18.62715597152713, "o", "\""] +[18.657155971527132, "o", "t"] +[18.687155971527133, "o", "e"] +[18.717155971527134, "o", "x"] +[18.747155971527135, "o", "t"] +[18.777155971527137, "o", "\""] +[18.807155971527138, "o", ","] +[18.83715597152714, "o", "\r\n "] +[18.86715597152714, "o", "\""] +[18.89715597152714, "o", "d"] +[18.927155971527142, "o", "u"] +[18.957155971527143, "o", "r"] +[18.987155971527145, "o", "a"] +[19.017155971527146, "o", "t"] +[19.047155971527147, "o", "i"] +[19.077155971527148, "o", "o"] +[19.10715597152715, "o", "n"] +[19.13715597152715, "o", "\""] +[19.16715597152715, "o", ":"] +[19.197155971527152, "o", " "] +[19.227155971527154, "o", "\""] +[19.257155971527155, "o", "n"] +[19.287155971527156, "o", "u"] +[19.317155971527157, "o", "m"] +[19.347155971527158, "o", "e"] +[19.37715597152716, "o", "r"] +[19.40715597152716, "o", "i"] +[19.43715597152716, "o", "c"] +[19.467155971527163, "o", "\""] +[19.497155971527164, "o", ","] +[19.527155971527165, "o", "\r\n "] +[19.557155971527166, "o", "\""] +[19.587155971527167, "o", "h"] +[19.61715597152717, "o", "a"] +[19.64715597152717, "o", "p"] +[19.67715597152717, "o", "p"] +[19.707155971527172, "o", "y"] +[19.737155971527173, "o", "\""] +[19.767155971527174, "o", ":"] +[19.797155971527175, "o", " "] +[19.827155971527176, "o", "\""] +[19.857155971527177, "o", "b"] +[19.88715597152718, "o", "o"] +[19.91715597152718, "o", "o"] +[19.94715597152718, "o", "l"] +[19.977155971527182, "o", "e"] +[20.007155971527183, "o", "a"] +[20.037155971527184, "o", "n"] +[20.067155971527185, "o", "\""] +[20.097155971527187, "o", "}"] +[20.127155971527188, "o", "}"] +[20.15715597152719, "o", "}"] +[20.18715597152719, "o", "}"] +[20.21715597152719, "o", "'"] +[20.247155971527192, "o", "\r\n"] +[20.277155971527193, "o", "\u001b[0m"] +[20.307155971527195, "o", "\r\n"] +[20.695108060836887, "o", "Usage: sgr mount mongo_fdw [OPTIONS] SCHEMA\r\n\r\n Mount a Mongo database.\r\n\r\n Mounts one or more collections on a remote Mongo database as a set of\r\n foreign tables locally.\r\n\r\nOptions:\r\n -c, --connection TEXT Connection string in the form\r\n username:password@server:port\r\n\r\n -o, --handler-options JSON JSON-encoded dictionary or @filename.json with\r\n handler options:\r\n \r\n tables: A di"] +[20.695129280090427, "o", "ctionary of form { \"table_name\":\r\n { \"schema\": {\"col1\": \"type1\"...},\r\n \"options\": {\"database\": , \"collection\":\r\n } } }\r\n\r\n --help Show this message and exit.\r\n"] +[21.191879634857273, "o", "Mounting table stuff\r\n"] +[21.221879634857274, "o", "\u001b[1m"] +[21.251879634857275, "o", "\u001b[36m"] +[21.281879634857276, "o", "\u001b[91m"] +[21.311879634857277, "o", "$"] +[21.34187963485728, "o", " "] +[21.37187963485728, "o", "\u001b[0m"] +[29.41715597152711, "o", "\u001b[H"] +[29.44715597152711, "o", "\u001b[J"] +[29.47715597152711, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the contents of the new table"] +[29.507155971527112, "o", "\r\n"] +[29.537155971527113, "o", "$"] +[29.567155971527114, "o", " "] +[29.597155971527116, "o", "s"] +[29.627155971527117, "o", "g"] +[29.657155971527118, "o", "r"] +[29.68715597152712, "o", " "] +[29.71715597152712, "o", "s"] +[29.74715597152712, "o", "q"] +[29.777155971527122, "o", "l"] +[29.807155971527123, "o", " "] +[29.837155971527125, "o", "-"] +[29.867155971527126, "o", "s"] +[29.897155971527127, "o", " "] +[29.927155971527128, "o", "s"] +[29.95715597152713, "o", "t"] +[29.98715597152713, "o", "a"] +[30.01715597152713, "o", "g"] +[30.047155971527133, "o", "i"] +[30.077155971527134, "o", "n"] +[30.107155971527135, "o", "g"] +[30.137155971527136, "o", " "] +[30.167155971527137, "o", "\""] +[30.19715597152714, "o", "S"] +[30.22715597152714, "o", "E"] +[30.25715597152714, "o", "L"] +[30.28715597152714, "o", "E"] +[30.317155971527143, "o", "C"] +[30.347155971527144, "o", "T"] +[30.377155971527145, "o", " "] +[30.407155971527146, "o", "*"] +[30.437155971527147, "o", " "] +[30.46715597152715, "o", "F"] +[30.49715597152715, "o", "R"] +[30.52715597152715, "o", "O"] +[30.557155971527152, "o", "M"] +[30.587155971527153, "o", " "] +[30.617155971527154, "o", "s"] +[30.647155971527155, "o", "t"] +[30.677155971527156, "o", "u"] +[30.707155971527158, "o", "f"] +[30.73715597152716, "o", "f"] +[30.76715597152716, "o", "\""] +[30.79715597152716, "o", "\r\n"] +[30.827155971527162, "o", "\u001b[0m"] +[30.857155971527163, "o", "\r\n"] +[31.310614757537905, "o", "Alex 12 False 61bce7ab0b4af3adbd817aca\r\nJames 2 True 61bce7ab0b4af3adbd817acb\r\nAlice 98765 True 61bce7ab0b4af3adbd817acc\r\n"] +[31.340614757537907, "o", "\u001b[1m"] +[31.370614757537908, "o", "\u001b[36m"] +[31.40061475753791, "o", "\u001b[91m"] +[31.43061475753791, "o", "$"] +[31.46061475753791, "o", " "] +[31.490614757537912, "o", "\u001b[0m"] +[36.52061475753791, "o", "\u001b[H"] +[36.550614757537915, "o", "\u001b[J"] +[36.580614757537916, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Import the data into a new Splitgraph repository"] +[36.61061475753792, "o", "\r\n"] +[36.64061475753792, "o", "$"] +[36.67061475753792, "o", " "] +[36.70061475753792, "o", "s"] +[36.73061475753792, "o", "g"] +[36.76061475753792, "o", "r"] +[36.790614757537924, "o", " "] +[36.820614757537925, "o", "i"] +[36.850614757537926, "o", "m"] +[36.88061475753793, "o", "p"] +[36.91061475753793, "o", "o"] +[36.94061475753793, "o", "r"] +[36.97061475753793, "o", "t"] +[37.00061475753793, "o", " "] +[37.03061475753793, "o", "s"] +[37.060614757537934, "o", "t"] +[37.090614757537935, "o", "a"] +[37.120614757537936, "o", "g"] +[37.15061475753794, "o", "i"] +[37.18061475753794, "o", "n"] +[37.21061475753794, "o", "g"] +[37.24061475753794, "o", " "] +[37.27061475753794, "o", "\""] +[37.30061475753794, "o", "S"] +[37.330614757537944, "o", "E"] +[37.360614757537945, "o", "L"] +[37.390614757537946, "o", "E"] +[37.42061475753795, "o", "C"] +[37.45061475753795, "o", "T"] +[37.48061475753795, "o", " "] +[37.51061475753795, "o", "n"] +[37.54061475753795, "o", "a"] +[37.57061475753795, "o", "m"] +[37.600614757537954, "o", "e"] +[37.630614757537955, "o", ","] +[37.66061475753796, "o", " "] +[37.69061475753796, "o", "d"] +[37.72061475753796, "o", "u"] +[37.75061475753796, "o", "r"] +[37.78061475753796, "o", "a"] +[37.81061475753796, "o", "t"] +[37.84061475753796, "o", "i"] +[37.870614757537965, "o", "o"] +[37.900614757537966, "o", "n"] +[37.93061475753797, "o", ","] +[37.96061475753797, "o", " "] +[37.99061475753797, "o", "h"] +[38.02061475753797, "o", "a"] +[38.05061475753797, "o", "p"] +[38.08061475753797, "o", "p"] +[38.110614757537974, "o", "y"] +[38.140614757537975, "o", " "] +[38.170614757537976, "o", "F"] +[38.20061475753798, "o", "R"] +[38.23061475753798, "o", "O"] +[38.26061475753798, "o", "M"] +[38.29061475753798, "o", " "] +[38.32061475753798, "o", "s"] +[38.35061475753798, "o", "t"] +[38.380614757537984, "o", "u"] +[38.410614757537985, "o", "f"] +[38.440614757537986, "o", "f"] +[38.47061475753799, "o", "\""] +[38.50061475753799, "o", " "] +[38.53061475753799, "o", "m"] +[38.56061475753799, "o", "y"] +[38.59061475753799, "o", "/"] +[38.62061475753799, "o", "r"] +[38.650614757537994, "o", "e"] +[38.680614757537995, "o", "p"] +[38.710614757537996, "o", "o"] +[38.740614757538, "o", "s"] +[38.770614757538, "o", "i"] +[38.800614757538, "o", "t"] +[38.830614757538, "o", "o"] +[38.860614757538, "o", "r"] +[38.890614757538, "o", "y"] +[38.920614757538004, "o", " "] +[38.950614757538006, "o", "s"] +[38.98061475753801, "o", "t"] +[39.01061475753801, "o", "u"] +[39.04061475753801, "o", "f"] +[39.07061475753801, "o", "f"] +[39.10061475753801, "o", "\r\n"] +[39.13061475753801, "o", "\u001b[0m"] +[39.16061475753801, "o", "\r\n"] +[39.64151957511919, "o", "Processing table sg_tmp_7a40311a48aaf929bba2ed41eb1f4c6f\r\n"] +[39.8404336261751, "o", "my/repository:stuff has been imported from staging:SELECT name, duration, happy FROM stuff\r\n"] +[39.8704336261751, "o", "\u001b[1m"] +[39.9004336261751, "o", "\u001b[36m"] +[39.9304336261751, "o", "\u001b[91m"] +[39.9604336261751, "o", "$"] +[39.990433626175104, "o", " "] +[40.020433626175105, "o", "\u001b[0m"] +[45.050433626175106, "o", "\u001b[H"] +[45.08043362617511, "o", "\u001b[J"] +[45.11043362617511, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Alternatively, data can be imported from other databases with Splitfiles"] +[45.14043362617511, "o", "\r\n"] +[45.17043362617511, "o", "$"] +[45.20043362617511, "o", " "] +[45.23043362617511, "o", "c"] +[45.260433626175114, "o", "a"] +[45.290433626175115, "o", "t"] +[45.32043362617512, "o", " "] +[45.35043362617512, "o", "m"] +[45.38043362617512, "o", "o"] +[45.41043362617512, "o", "n"] +[45.44043362617512, "o", "g"] +[45.47043362617512, "o", "o"] +[45.50043362617512, "o", "_"] +[45.530433626175125, "o", "i"] +[45.560433626175126, "o", "m"] +[45.59043362617513, "o", "p"] +[45.62043362617513, "o", "o"] +[45.65043362617513, "o", "r"] +[45.68043362617513, "o", "t"] +[45.71043362617513, "o", "."] +[45.74043362617513, "o", "s"] +[45.770433626175134, "o", "p"] +[45.800433626175135, "o", "l"] +[45.830433626175136, "o", "i"] +[45.86043362617514, "o", "t"] +[45.89043362617514, "o", "f"] +[45.92043362617514, "o", "i"] +[45.95043362617514, "o", "l"] +[45.98043362617514, "o", "e"] +[46.01043362617514, "o", "\r\n"] +[46.040433626175144, "o", "$"] +[46.070433626175145, "o", " "] +[46.100433626175146, "o", "s"] +[46.13043362617515, "o", "g"] +[46.16043362617515, "o", "r"] +[46.19043362617515, "o", " "] +[46.22043362617515, "o", "b"] +[46.25043362617515, "o", "u"] +[46.28043362617515, "o", "i"] +[46.310433626175154, "o", "l"] +[46.340433626175155, "o", "d"] +[46.370433626175156, "o", " "] +[46.40043362617516, "o", "m"] +[46.43043362617516, "o", "o"] +[46.46043362617516, "o", "n"] +[46.49043362617516, "o", "g"] +[46.52043362617516, "o", "o"] +[46.55043362617516, "o", "_"] +[46.580433626175164, "o", "i"] +[46.610433626175166, "o", "m"] +[46.64043362617517, "o", "p"] +[46.67043362617517, "o", "o"] +[46.70043362617517, "o", "r"] +[46.73043362617517, "o", "t"] +[46.76043362617517, "o", "."] +[46.79043362617517, "o", "s"] +[46.82043362617517, "o", "p"] +[46.850433626175175, "o", "l"] +[46.880433626175176, "o", "i"] +[46.91043362617518, "o", "t"] +[46.94043362617518, "o", "f"] +[46.97043362617518, "o", "i"] +[47.00043362617518, "o", "l"] +[47.03043362617518, "o", "e"] +[47.06043362617518, "o", "\r\n"] +[47.090433626175184, "o", "\u001b[0m"] +[47.120433626175185, "o", "\r\n"] +[47.12180906295802, "o", "FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"tables\": {\"stuff\": {\r\n \"options\": {\r\n \"database\": \"origindb\",\r\n \"collection\": \"stuff\"\r\n },\r\n \"schema\": {\r\n \"name\": \"text\",\r\n \"duration\": \"numeric\",\r\n \"happy\": \"boolean\"}}}}'\r\n IMPORT {SELECT * FROM stuff} AS stuff\r\n"] +[47.55003958702113, "o", "Executing Splitfile mongo_import.splitfile with arguments {}\r\n"] +[47.55046730995204, "o", "\u001b[1m\r\nStep 1/1 : FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"t...\u001b[0m\r\n"] +[47.70152979850795, "o", "Mounting table stuff\r\n"] +[47.76601439476039, "o", "Processing table sg_tmp_9c1a35d3c8c219c36c29d66d2ff09560\r\n"] +[47.98326736450221, "o", "Successfully built mongo_import:db12924d2a13.\r\n"] +[48.01326736450221, "o", "\u001b[1m"] +[48.04326736450221, "o", "\u001b[36m"] +[48.073267364502215, "o", "\u001b[91m"] +[48.103267364502216, "o", "$"] +[48.13326736450222, "o", " "] +[48.16326736450222, "o", "\u001b[0m"] +[55.050433626175106, "o", "\u001b[H"] +[55.08043362617511, "o", "\u001b[J"] +[55.11043362617511, "o", "\u001b[1m"] +[55.14043362617511, "o", "\u001b[36m"] +[55.17043362617511, "o", "\u001b[91m"] +[55.20043362617511, "o", "$"] +[55.23043362617511, "o", " "] +[55.260433626175114, "o", "s"] +[55.290433626175115, "o", "g"] +[55.32043362617512, "o", "r"] +[55.35043362617512, "o", " "] +[55.38043362617512, "o", "s"] +[55.41043362617512, "o", "h"] +[55.44043362617512, "o", "o"] +[55.47043362617512, "o", "w"] +[55.50043362617512, "o", " "] +[55.530433626175125, "o", "m"] +[55.560433626175126, "o", "o"] +[55.59043362617513, "o", "n"] +[55.62043362617513, "o", "g"] +[55.65043362617513, "o", "o"] +[55.68043362617513, "o", "_"] +[55.71043362617513, "o", "i"] +[55.74043362617513, "o", "m"] +[55.770433626175134, "o", "p"] +[55.800433626175135, "o", "o"] +[55.830433626175136, "o", "r"] +[55.86043362617514, "o", "t"] +[55.89043362617514, "o", ":"] +[55.92043362617514, "o", "l"] +[55.95043362617514, "o", "a"] +[55.98043362617514, "o", "t"] +[56.01043362617514, "o", "e"] +[56.040433626175144, "o", "s"] +[56.070433626175145, "o", "t"] +[56.100433626175146, "o", "\r\n"] +[56.13043362617515, "o", "$"] +[56.16043362617515, "o", " "] +[56.19043362617515, "o", "s"] +[56.22043362617515, "o", "g"] +[56.25043362617515, "o", "r"] +[56.28043362617515, "o", " "] +[56.310433626175154, "o", "s"] +[56.340433626175155, "o", "q"] +[56.370433626175156, "o", "l"] +[56.40043362617516, "o", " "] +[56.43043362617516, "o", "-"] +[56.46043362617516, "o", "s"] +[56.49043362617516, "o", " "] +[56.52043362617516, "o", "m"] +[56.55043362617516, "o", "o"] +[56.580433626175164, "o", "n"] +[56.610433626175166, "o", "g"] +[56.64043362617517, "o", "o"] +[56.67043362617517, "o", "_"] +[56.70043362617517, "o", "i"] +[56.73043362617517, "o", "m"] +[56.76043362617517, "o", "p"] +[56.79043362617517, "o", "o"] +[56.82043362617517, "o", "r"] +[56.850433626175175, "o", "t"] +[56.880433626175176, "o", " "] +[56.91043362617518, "o", "\""] +[56.94043362617518, "o", "S"] +[56.97043362617518, "o", "E"] +[57.00043362617518, "o", "L"] +[57.03043362617518, "o", "E"] +[57.06043362617518, "o", "C"] +[57.090433626175184, "o", "T"] +[57.120433626175185, "o", " "] +[57.150433626175186, "o", "*"] +[57.18043362617519, "o", " "] +[57.21043362617519, "o", "F"] +[57.24043362617519, "o", "R"] +[57.27043362617519, "o", "O"] +[57.30043362617519, "o", "M"] +[57.33043362617519, "o", " "] +[57.360433626175194, "o", "s"] +[57.390433626175195, "o", "t"] +[57.420433626175196, "o", "u"] +[57.4504336261752, "o", "f"] +[57.4804336261752, "o", "f"] +[57.5104336261752, "o", "\""] +[57.5404336261752, "o", "\r\n"] +[57.5704336261752, "o", "\u001b[0m"] +[57.6004336261752, "o", "\r\n"] +[58.03204301834134, "o", "Image mongo_import:db12924d2a13cc245790d5d722086fc92aa56b4d8b9b5d39b29d9f001bfaa04b\r\n"] +[58.032071151733675, "o", "Importing 1 table from mongo_fdw_tmp_staging\r\nCreated at 2021-12-17T19:40:35.885999\r\n"] +[58.033501186371126, "o", "Size: 589.00 B\r\n"] +[58.03351024627713, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[58.03419784545926, "o", " stuff\r\n"] +[58.47085622787503, "o", "Alex 12 False 61bce7ab0b4af3adbd817aca\r\nJames 2 True 61bce7ab0b4af3adbd817acb\r\nAlice 98765 True 61bce7ab0b4af3adbd817acc\r\n"] +[58.50085622787503, "o", "\u001b[1m"] +[58.530856227875034, "o", "\u001b[36m"] +[58.560856227875036, "o", "\u001b[91m"] +[58.59085622787504, "o", "$"] +[58.62085622787504, "o", " "] +[58.65085622787504, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.3.0/metadata.json b/content/casts/versioned/archive/v0.3.0/metadata.json new file mode 100644 index 00000000..cac821a1 --- /dev/null +++ b/content/casts/versioned/archive/v0.3.0/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.3.0", + "updated_at": "2022-01-20T00:00:33.495Z", + "release": { + "id": 55571256, + "tag_name": "v0.3.0", + "target_commitish": "fb8bbc616bda9717cd77db3597381a9cbe26d488", + "created_at": "2021-12-17T19:30:50Z", + "published_at": "2021-12-17T19:49:27Z", + "assets": [ + { + "id": 52039025, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/52039025", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-12-17T19:49:15Z", + "updated_at": "2021-12-17T19:49:16Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.3.0/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/casts/versioned/archive/v0.3.0/pg-replication.cast b/content/casts/versioned/archive/v0.3.0/pg-replication.cast new file mode 100644 index 00000000..ace83244 --- /dev/null +++ b/content/casts/versioned/archive/v0.3.0/pg-replication.cast @@ -0,0 +1,1399 @@ +{"version": 2, "width": 100, "height": 21, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1639770089, "metadata": {"tss": [{"h": "The configuration file for sgr contains credentials for the", "ts": 0.06}, {"h": "The origin database has been set up with a couple of tables.", "ts": 10.059999999999999}, {"h": "Create a publication on the origin database", "ts": 19.86708312034599}, {"h": "Create a schema with the same name and same tables", "ts": 28.64708312034613}, {"h": "Set up replication from the origin database.", "ts": 38.64708312034613}, {"h": "Check the data on the engine", "ts": 49.58708312034636}, {"h": "Commit the data as an initial image", "ts": 58.281167354584134}, {"h": "Make a change on the origin database", "ts": 68.63117568969781}, {"h": "The change propagates to the subscriber and gets", "ts": 84.70117568969823}, {"h": "Committing creates a new image, snapshotting the state.", "ts": 91.60877326965434}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The configuration file for sgr contains credentials for the"] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # origin database: this is just so that we can use sgr to query it\r\n"] +[0.18, "o", "$ # (replication can be set up through any PostgreSQL client)\r\n"] +[0.21, "o", "$"] +[0.24, "o", " "] +[0.27, "o", "c"] +[0.30000000000000004, "o", "a"] +[0.33000000000000007, "o", "t"] +[0.3600000000000001, "o", " "] +[0.3900000000000001, "o", "."] +[0.42000000000000015, "o", "s"] +[0.4500000000000002, "o", "g"] +[0.4800000000000002, "o", "c"] +[0.5100000000000002, "o", "o"] +[0.5400000000000003, "o", "n"] +[0.5700000000000003, "o", "f"] +[0.6000000000000003, "o", "i"] +[0.6300000000000003, "o", "g"] +[0.6600000000000004, "o", "\r\n"] +[0.6900000000000004, "o", "\u001b[0m"] +[0.7200000000000004, "o", "\r\n"] +[0.72151538848877, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n; Add the origin database here so that we can\r\n; use sgr to talk to it (can use any pg client)\r\n[remote:origin]\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=originuser\r\nSG_ENGINE_PWD=originpass\r\nSG_ENGINE_DB=originuser\r\n"] +[0.75151538848877, "o", "\u001b[1m"] +[0.78151538848877, "o", "\u001b[36m"] +[0.81151538848877, "o", "\u001b[91m"] +[0.84151538848877, "o", "$"] +[0.8715153884887701, "o", " "] +[0.9015153884887701, "o", "\u001b[0m"] +[10.03, "o", "\u001b[H"] +[10.059999999999999, "o", "\u001b[J"] +[10.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The origin database has been set up with a couple of tables."] +[10.119999999999997, "o", "\r\n"] +[10.149999999999997, "o", "$"] +[10.179999999999996, "o", " "] +[10.209999999999996, "o", "s"] +[10.239999999999995, "o", "g"] +[10.269999999999994, "o", "r"] +[10.299999999999994, "o", " "] +[10.329999999999993, "o", "s"] +[10.359999999999992, "o", "q"] +[10.389999999999992, "o", "l"] +[10.419999999999991, "o", " "] +[10.44999999999999, "o", "-"] +[10.47999999999999, "o", "r"] +[10.50999999999999, "o", " "] +[10.539999999999988, "o", "o"] +[10.569999999999988, "o", "r"] +[10.599999999999987, "o", "i"] +[10.629999999999987, "o", "g"] +[10.659999999999986, "o", "i"] +[10.689999999999985, "o", "n"] +[10.719999999999985, "o", " "] +[10.749999999999984, "o", "\""] +[10.779999999999983, "o", "S"] +[10.809999999999983, "o", "E"] +[10.839999999999982, "o", "L"] +[10.869999999999981, "o", "E"] +[10.89999999999998, "o", "C"] +[10.92999999999998, "o", "T"] +[10.95999999999998, "o", " "] +[10.989999999999979, "o", "*"] +[11.019999999999978, "o", " "] +[11.049999999999978, "o", "F"] +[11.079999999999977, "o", "R"] +[11.109999999999976, "o", "O"] +[11.139999999999976, "o", "M"] +[11.169999999999975, "o", " "] +[11.199999999999974, "o", "p"] +[11.229999999999974, "o", "r"] +[11.259999999999973, "o", "o"] +[11.289999999999973, "o", "d"] +[11.319999999999972, "o", "u"] +[11.349999999999971, "o", "c"] +[11.37999999999997, "o", "t"] +[11.40999999999997, "o", "i"] +[11.43999999999997, "o", "o"] +[11.469999999999969, "o", "n"] +[11.499999999999968, "o", "_"] +[11.529999999999967, "o", "d"] +[11.559999999999967, "o", "a"] +[11.589999999999966, "o", "t"] +[11.619999999999965, "o", "a"] +[11.649999999999965, "o", "."] +[11.679999999999964, "o", "c"] +[11.709999999999964, "o", "u"] +[11.739999999999963, "o", "s"] +[11.769999999999962, "o", "t"] +[11.799999999999962, "o", "o"] +[11.829999999999961, "o", "m"] +[11.85999999999996, "o", "e"] +[11.88999999999996, "o", "r"] +[11.919999999999959, "o", "s"] +[11.949999999999958, "o", "\""] +[11.979999999999958, "o", "\r\n"] +[12.009999999999957, "o", "$"] +[12.039999999999957, "o", " "] +[12.069999999999956, "o", "s"] +[12.099999999999955, "o", "g"] +[12.129999999999955, "o", "r"] +[12.159999999999954, "o", " "] +[12.189999999999953, "o", "s"] +[12.219999999999953, "o", "q"] +[12.249999999999952, "o", "l"] +[12.279999999999951, "o", " "] +[12.30999999999995, "o", "-"] +[12.33999999999995, "o", "r"] +[12.36999999999995, "o", " "] +[12.399999999999949, "o", "o"] +[12.429999999999948, "o", "r"] +[12.459999999999948, "o", "i"] +[12.489999999999947, "o", "g"] +[12.519999999999946, "o", "i"] +[12.549999999999946, "o", "n"] +[12.579999999999945, "o", " "] +[12.609999999999944, "o", "\""] +[12.639999999999944, "o", "S"] +[12.669999999999943, "o", "E"] +[12.699999999999942, "o", "L"] +[12.729999999999942, "o", "E"] +[12.759999999999941, "o", "C"] +[12.78999999999994, "o", "T"] +[12.81999999999994, "o", " "] +[12.84999999999994, "o", "*"] +[12.879999999999939, "o", " "] +[12.909999999999938, "o", "F"] +[12.939999999999937, "o", "R"] +[12.969999999999937, "o", "O"] +[12.999999999999936, "o", "M"] +[13.029999999999935, "o", " "] +[13.059999999999935, "o", "p"] +[13.089999999999934, "o", "r"] +[13.119999999999933, "o", "o"] +[13.149999999999933, "o", "d"] +[13.179999999999932, "o", "u"] +[13.209999999999932, "o", "c"] +[13.239999999999931, "o", "t"] +[13.26999999999993, "o", "i"] +[13.29999999999993, "o", "o"] +[13.329999999999929, "o", "n"] +[13.359999999999928, "o", "_"] +[13.389999999999928, "o", "d"] +[13.419999999999927, "o", "a"] +[13.449999999999926, "o", "t"] +[13.479999999999926, "o", "a"] +[13.509999999999925, "o", "."] +[13.539999999999925, "o", "o"] +[13.569999999999924, "o", "r"] +[13.599999999999923, "o", "d"] +[13.629999999999923, "o", "e"] +[13.659999999999922, "o", "r"] +[13.689999999999921, "o", "s"] +[13.71999999999992, "o", "\""] +[13.74999999999992, "o", "\r\n"] +[13.77999999999992, "o", "\u001b[0m"] +[13.809999999999919, "o", "\r\n"] +[14.225307521819987, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[14.627083120345988, "o", "1 1 15 Toilet Roll 2020-03-15 12:00:00\r\n2 1 20 Hand Sanitizer 2020-03-16 02:00:00\r\n3 2 5 Pasta 2020-03-21 17:32:11\r\n4 3 50 Surgical Mask 2020-04-01 12:00:01\r\n5 1 50 Surgical Mask 2020-04-02 11:29:42\r\n"] +[14.657083120345987, "o", "\u001b[1m"] +[14.687083120345987, "o", "\u001b[36m"] +[14.717083120345986, "o", "\u001b[91m"] +[14.747083120345986, "o", "$"] +[14.777083120345985, "o", " "] +[14.807083120345984, "o", "\u001b[0m"] +[19.837083120345987, "o", "\u001b[H"] +[19.86708312034599, "o", "\u001b[J"] +[19.89708312034599, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a publication on the origin database"] +[19.92708312034599, "o", "\r\n"] +[19.95708312034599, "o", "$"] +[19.987083120345993, "o", " "] +[20.017083120345994, "o", "s"] +[20.047083120345995, "o", "g"] +[20.077083120345996, "o", "r"] +[20.107083120345997, "o", " "] +[20.137083120346, "o", "s"] +[20.167083120346, "o", "q"] +[20.197083120346, "o", "l"] +[20.227083120346002, "o", " "] +[20.257083120346003, "o", "-"] +[20.287083120346004, "o", "r"] +[20.317083120346005, "o", " "] +[20.347083120346007, "o", "o"] +[20.377083120346008, "o", "r"] +[20.40708312034601, "o", "i"] +[20.43708312034601, "o", "g"] +[20.46708312034601, "o", "i"] +[20.497083120346012, "o", "n"] +[20.527083120346013, "o", " "] +[20.557083120346014, "o", "\""] +[20.587083120346016, "o", "C"] +[20.617083120346017, "o", "R"] +[20.647083120346018, "o", "E"] +[20.67708312034602, "o", "A"] +[20.70708312034602, "o", "T"] +[20.73708312034602, "o", "E"] +[20.767083120346022, "o", " "] +[20.797083120346024, "o", "P"] +[20.827083120346025, "o", "U"] +[20.857083120346026, "o", "B"] +[20.887083120346027, "o", "L"] +[20.917083120346028, "o", "I"] +[20.94708312034603, "o", "C"] +[20.97708312034603, "o", "A"] +[21.00708312034603, "o", "T"] +[21.037083120346033, "o", "I"] +[21.067083120346034, "o", "O"] +[21.097083120346035, "o", "N"] +[21.127083120346036, "o", " "] +[21.157083120346037, "o", "p"] +[21.18708312034604, "o", "u"] +[21.21708312034604, "o", "b"] +[21.24708312034604, "o", "_"] +[21.27708312034604, "o", "o"] +[21.307083120346043, "o", "r"] +[21.337083120346044, "o", "d"] +[21.367083120346045, "o", "e"] +[21.397083120346046, "o", "r"] +[21.427083120346047, "o", "s"] +[21.45708312034605, "o", " "] +[21.48708312034605, "o", "\\"] +[21.51708312034605, "o", "\r\n "] +[21.547083120346052, "o", "F"] +[21.577083120346053, "o", "O"] +[21.607083120346054, "o", "R"] +[21.637083120346055, "o", " "] +[21.667083120346057, "o", "T"] +[21.697083120346058, "o", "A"] +[21.72708312034606, "o", "B"] +[21.75708312034606, "o", "L"] +[21.78708312034606, "o", "E"] +[21.817083120346062, "o", " "] +[21.847083120346063, "o", "p"] +[21.877083120346065, "o", "r"] +[21.907083120346066, "o", "o"] +[21.937083120346067, "o", "d"] +[21.967083120346068, "o", "u"] +[21.99708312034607, "o", "c"] +[22.02708312034607, "o", "t"] +[22.05708312034607, "o", "i"] +[22.087083120346072, "o", "o"] +[22.117083120346074, "o", "n"] +[22.147083120346075, "o", "_"] +[22.177083120346076, "o", "d"] +[22.207083120346077, "o", "a"] +[22.237083120346078, "o", "t"] +[22.26708312034608, "o", "a"] +[22.29708312034608, "o", "."] +[22.32708312034608, "o", "c"] +[22.357083120346083, "o", "u"] +[22.387083120346084, "o", "s"] +[22.417083120346085, "o", "t"] +[22.447083120346086, "o", "o"] +[22.477083120346087, "o", "m"] +[22.50708312034609, "o", "e"] +[22.53708312034609, "o", "r"] +[22.56708312034609, "o", "s"] +[22.597083120346092, "o", ","] +[22.627083120346093, "o", " "] +[22.657083120346094, "o", "p"] +[22.687083120346095, "o", "r"] +[22.717083120346096, "o", "o"] +[22.747083120346097, "o", "d"] +[22.7770831203461, "o", "u"] +[22.8070831203461, "o", "c"] +[22.8370831203461, "o", "t"] +[22.867083120346102, "o", "i"] +[22.897083120346103, "o", "o"] +[22.927083120346104, "o", "n"] +[22.957083120346105, "o", "_"] +[22.987083120346107, "o", "d"] +[23.017083120346108, "o", "a"] +[23.04708312034611, "o", "t"] +[23.07708312034611, "o", "a"] +[23.10708312034611, "o", "."] +[23.137083120346112, "o", "o"] +[23.167083120346113, "o", "r"] +[23.197083120346115, "o", "d"] +[23.227083120346116, "o", "e"] +[23.257083120346117, "o", "r"] +[23.287083120346118, "o", "s"] +[23.31708312034612, "o", "\""] +[23.34708312034612, "o", "\r\n"] +[23.37708312034612, "o", "\u001b[0m"] +[23.407083120346122, "o", "\r\n"] +[23.437083120346124, "o", "\u001b[1m"] +[23.467083120346125, "o", "\u001b[36m"] +[23.497083120346126, "o", "\u001b[91m"] +[23.527083120346127, "o", "$"] +[23.557083120346128, "o", " "] +[23.58708312034613, "o", "\u001b[0m"] +[28.61708312034613, "o", "\u001b[H"] +[28.64708312034613, "o", "\u001b[J"] +[28.677083120346133, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a schema with the same name and same tables"] +[28.707083120346134, "o", "\r\n"] +[28.737083120346135, "o", "$ # on the engine and initialize the repository.\r\n"] +[28.767083120346136, "o", "$"] +[28.797083120346137, "o", " "] +[28.82708312034614, "o", "s"] +[28.85708312034614, "o", "g"] +[28.88708312034614, "o", "r"] +[28.917083120346142, "o", " "] +[28.947083120346143, "o", "i"] +[28.977083120346144, "o", "n"] +[29.007083120346145, "o", "i"] +[29.037083120346146, "o", "t"] +[29.067083120346147, "o", " "] +[29.09708312034615, "o", "p"] +[29.12708312034615, "o", "r"] +[29.15708312034615, "o", "o"] +[29.187083120346152, "o", "d"] +[29.217083120346153, "o", "u"] +[29.247083120346154, "o", "c"] +[29.277083120346155, "o", "t"] +[29.307083120346157, "o", "i"] +[29.337083120346158, "o", "o"] +[29.36708312034616, "o", "n"] +[29.39708312034616, "o", "_"] +[29.42708312034616, "o", "d"] +[29.457083120346162, "o", "a"] +[29.487083120346163, "o", "t"] +[29.517083120346165, "o", "a"] +[29.547083120346166, "o", "\r\n"] +[29.577083120346167, "o", "$"] +[29.607083120346168, "o", " "] +[29.63708312034617, "o", "c"] +[29.66708312034617, "o", "a"] +[29.69708312034617, "o", "t"] +[29.727083120346173, "o", " "] +[29.757083120346174, "o", "e"] +[29.787083120346175, "o", "n"] +[29.817083120346176, "o", "g"] +[29.847083120346177, "o", "i"] +[29.877083120346178, "o", "n"] +[29.90708312034618, "o", "e"] +[29.93708312034618, "o", "/"] +[29.96708312034618, "o", "s"] +[29.997083120346183, "o", "c"] +[30.027083120346184, "o", "h"] +[30.057083120346185, "o", "e"] +[30.087083120346186, "o", "m"] +[30.117083120346187, "o", "a"] +[30.14708312034619, "o", "."] +[30.17708312034619, "o", "s"] +[30.20708312034619, "o", "q"] +[30.237083120346192, "o", "l"] +[30.267083120346193, "o", "\r\n"] +[30.297083120346194, "o", "$"] +[30.327083120346195, "o", " "] +[30.357083120346196, "o", "s"] +[30.387083120346198, "o", "g"] +[30.4170831203462, "o", "r"] +[30.4470831203462, "o", " "] +[30.4770831203462, "o", "s"] +[30.507083120346202, "o", "q"] +[30.537083120346203, "o", "l"] +[30.567083120346204, "o", " "] +[30.597083120346205, "o", "-"] +[30.627083120346207, "o", "s"] +[30.657083120346208, "o", " "] +[30.68708312034621, "o", "p"] +[30.71708312034621, "o", "r"] +[30.74708312034621, "o", "o"] +[30.777083120346212, "o", "d"] +[30.807083120346213, "o", "u"] +[30.837083120346215, "o", "c"] +[30.867083120346216, "o", "t"] +[30.897083120346217, "o", "i"] +[30.927083120346218, "o", "o"] +[30.95708312034622, "o", "n"] +[30.98708312034622, "o", "_"] +[31.01708312034622, "o", "d"] +[31.047083120346223, "o", "a"] +[31.077083120346224, "o", "t"] +[31.107083120346225, "o", "a"] +[31.137083120346226, "o", " "] +[31.167083120346227, "o", "\""] +[31.197083120346228, "o", "$"] +[31.22708312034623, "o", "("] +[31.25708312034623, "o", "c"] +[31.28708312034623, "o", "a"] +[31.317083120346233, "o", "t"] +[31.347083120346234, "o", " "] +[31.377083120346235, "o", "e"] +[31.407083120346236, "o", "n"] +[31.437083120346237, "o", "g"] +[31.46708312034624, "o", "i"] +[31.49708312034624, "o", "n"] +[31.52708312034624, "o", "e"] +[31.557083120346242, "o", "/"] +[31.587083120346243, "o", "s"] +[31.617083120346244, "o", "c"] +[31.647083120346245, "o", "h"] +[31.677083120346246, "o", "e"] +[31.707083120346248, "o", "m"] +[31.73708312034625, "o", "a"] +[31.76708312034625, "o", "."] +[31.79708312034625, "o", "s"] +[31.827083120346252, "o", "q"] +[31.857083120346253, "o", "l"] +[31.887083120346254, "o", ")"] +[31.917083120346255, "o", "\""] +[31.947083120346257, "o", "\r\n"] +[31.977083120346258, "o", "\u001b[0m"] +[32.00708312034626, "o", "\r\n"] +[32.45430511474628, "o", "Initialized empty repository production_data\r\n"] +[32.45618838310261, "o", "CREATE TABLE production_data.customers (\r\n id INTEGER PRIMARY KEY,\r\n name VARCHAR,\r\n registration_time TIMESTAMP\r\n);\r\n\r\nCREATE TABLE production_data.orders (\r\n id INTEGER PRIMARY KEY,\r\n customer_id INTEGER,\r\n quantity INTEGER,\r\n item_name VARCHAR,\r\n placed_time TIMESTAMP\r\n);\r\n"] +[32.48618838310261, "o", "\u001b[1m"] +[32.51618838310261, "o", "\u001b[36m"] +[32.54618838310261, "o", "\u001b[91m"] +[32.57618838310261, "o", "$"] +[32.60618838310261, "o", " "] +[32.63618838310261, "o", "\u001b[0m"] +[38.61708312034613, "o", "\u001b[H"] +[38.64708312034613, "o", "\u001b[J"] +[38.67708312034613, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Set up replication from the origin database."] +[38.707083120346134, "o", "\r\n"] +[38.737083120346135, "o", "$ # This will copy existing data into the tables too.\r\n"] +[38.767083120346136, "o", "$"] +[38.79708312034614, "o", " "] +[38.82708312034614, "o", "s"] +[38.85708312034614, "o", "g"] +[38.88708312034614, "o", "r"] +[38.91708312034614, "o", " "] +[38.94708312034614, "o", "s"] +[38.977083120346144, "o", "q"] +[39.007083120346145, "o", "l"] +[39.037083120346146, "o", " "] +[39.06708312034615, "o", "-"] +[39.09708312034615, "o", "-"] +[39.12708312034615, "o", "n"] +[39.15708312034615, "o", "o"] +[39.18708312034615, "o", "-"] +[39.21708312034615, "o", "t"] +[39.247083120346154, "o", "r"] +[39.277083120346155, "o", "a"] +[39.30708312034616, "o", "n"] +[39.33708312034616, "o", "s"] +[39.36708312034616, "o", "a"] +[39.39708312034616, "o", "c"] +[39.42708312034616, "o", "t"] +[39.45708312034616, "o", "i"] +[39.48708312034616, "o", "o"] +[39.517083120346165, "o", "n"] +[39.547083120346166, "o", " "] +[39.57708312034617, "o", "\""] +[39.60708312034617, "o", "C"] +[39.63708312034617, "o", "R"] +[39.66708312034617, "o", "E"] +[39.69708312034617, "o", "A"] +[39.72708312034617, "o", "T"] +[39.757083120346174, "o", "E"] +[39.787083120346175, "o", " "] +[39.817083120346176, "o", "S"] +[39.84708312034618, "o", "U"] +[39.87708312034618, "o", "B"] +[39.90708312034618, "o", "S"] +[39.93708312034618, "o", "C"] +[39.96708312034618, "o", "R"] +[39.99708312034618, "o", "I"] +[40.027083120346184, "o", "P"] +[40.057083120346185, "o", "T"] +[40.087083120346186, "o", "I"] +[40.11708312034619, "o", "O"] +[40.14708312034619, "o", "N"] +[40.17708312034619, "o", " "] +[40.20708312034619, "o", "s"] +[40.23708312034619, "o", "u"] +[40.26708312034619, "o", "b"] +[40.297083120346194, "o", "_"] +[40.327083120346195, "o", "o"] +[40.357083120346196, "o", "r"] +[40.3870831203462, "o", "d"] +[40.4170831203462, "o", "e"] +[40.4470831203462, "o", "r"] +[40.4770831203462, "o", "s"] +[40.5070831203462, "o", " "] +[40.5370831203462, "o", "\\"] +[40.567083120346204, "o", "\r\n "] +[40.597083120346205, "o", "C"] +[40.62708312034621, "o", "O"] +[40.65708312034621, "o", "N"] +[40.68708312034621, "o", "N"] +[40.71708312034621, "o", "E"] +[40.74708312034621, "o", "C"] +[40.77708312034621, "o", "T"] +[40.80708312034621, "o", "I"] +[40.837083120346215, "o", "O"] +[40.867083120346216, "o", "N"] +[40.89708312034622, "o", " "] +[40.92708312034622, "o", "'"] +[40.95708312034622, "o", "p"] +[40.98708312034622, "o", "o"] +[41.01708312034622, "o", "s"] +[41.04708312034622, "o", "t"] +[41.077083120346224, "o", "g"] +[41.107083120346225, "o", "r"] +[41.137083120346226, "o", "e"] +[41.16708312034623, "o", "s"] +[41.19708312034623, "o", "q"] +[41.22708312034623, "o", "l"] +[41.25708312034623, "o", ":"] +[41.28708312034623, "o", "/"] +[41.31708312034623, "o", "/"] +[41.347083120346234, "o", "o"] +[41.377083120346235, "o", "r"] +[41.407083120346236, "o", "i"] +[41.43708312034624, "o", "g"] +[41.46708312034624, "o", "i"] +[41.49708312034624, "o", "n"] +[41.52708312034624, "o", "u"] +[41.55708312034624, "o", "s"] +[41.58708312034624, "o", "e"] +[41.617083120346244, "o", "r"] +[41.647083120346245, "o", ":"] +[41.677083120346246, "o", "o"] +[41.70708312034625, "o", "r"] +[41.73708312034625, "o", "i"] +[41.76708312034625, "o", "g"] +[41.79708312034625, "o", "i"] +[41.82708312034625, "o", "n"] +[41.85708312034625, "o", "p"] +[41.887083120346254, "o", "a"] +[41.917083120346255, "o", "s"] +[41.94708312034626, "o", "s"] +[41.97708312034626, "o", "@"] +[42.00708312034626, "o", "o"] +[42.03708312034626, "o", "r"] +[42.06708312034626, "o", "i"] +[42.09708312034626, "o", "g"] +[42.12708312034626, "o", "i"] +[42.157083120346265, "o", "n"] +[42.187083120346266, "o", ":"] +[42.21708312034627, "o", "5"] +[42.24708312034627, "o", "4"] +[42.27708312034627, "o", "3"] +[42.30708312034627, "o", "2"] +[42.33708312034627, "o", "/"] +[42.36708312034627, "o", "o"] +[42.397083120346274, "o", "r"] +[42.427083120346275, "o", "i"] +[42.457083120346276, "o", "g"] +[42.48708312034628, "o", "i"] +[42.51708312034628, "o", "n"] +[42.54708312034628, "o", "u"] +[42.57708312034628, "o", "s"] +[42.60708312034628, "o", "e"] +[42.63708312034628, "o", "r"] +[42.667083120346284, "o", "'"] +[42.697083120346285, "o", " "] +[42.727083120346286, "o", "\\"] +[42.75708312034629, "o", "\r\n "] +[42.78708312034629, "o", "P"] +[42.81708312034629, "o", "U"] +[42.84708312034629, "o", "B"] +[42.87708312034629, "o", "L"] +[42.90708312034629, "o", "I"] +[42.937083120346294, "o", "C"] +[42.967083120346295, "o", "A"] +[42.997083120346296, "o", "T"] +[43.0270831203463, "o", "I"] +[43.0570831203463, "o", "O"] +[43.0870831203463, "o", "N"] +[43.1170831203463, "o", " "] +[43.1470831203463, "o", "p"] +[43.1770831203463, "o", "u"] +[43.207083120346304, "o", "b"] +[43.237083120346306, "o", "_"] +[43.26708312034631, "o", "o"] +[43.29708312034631, "o", "r"] +[43.32708312034631, "o", "d"] +[43.35708312034631, "o", "e"] +[43.38708312034631, "o", "r"] +[43.41708312034631, "o", "s"] +[43.44708312034631, "o", " "] +[43.477083120346315, "o", "\\"] +[43.507083120346316, "o", "\r\n "] +[43.53708312034632, "o", "W"] +[43.56708312034632, "o", "I"] +[43.59708312034632, "o", "T"] +[43.62708312034632, "o", "H"] +[43.65708312034632, "o", " "] +[43.68708312034632, "o", "("] +[43.717083120346324, "o", "c"] +[43.747083120346325, "o", "o"] +[43.777083120346326, "o", "p"] +[43.80708312034633, "o", "y"] +[43.83708312034633, "o", "_"] +[43.86708312034633, "o", "d"] +[43.89708312034633, "o", "a"] +[43.92708312034633, "o", "t"] +[43.95708312034633, "o", "a"] +[43.987083120346334, "o", " "] +[44.017083120346335, "o", "="] +[44.047083120346336, "o", " "] +[44.07708312034634, "o", "t"] +[44.10708312034634, "o", "r"] +[44.13708312034634, "o", "u"] +[44.16708312034634, "o", "e"] +[44.19708312034634, "o", ")"] +[44.22708312034634, "o", ";"] +[44.257083120346344, "o", "\""] +[44.287083120346345, "o", "\r\n"] +[44.31708312034635, "o", "\u001b[0m"] +[44.34708312034635, "o", "\r\n"] +[44.37708312034635, "o", "\u001b[1m"] +[44.40708312034635, "o", "\u001b[36m"] +[44.43708312034635, "o", "\u001b[91m"] +[44.46708312034635, "o", "$"] +[44.49708312034635, "o", " "] +[44.527083120346354, "o", "\u001b[0m"] +[49.557083120346356, "o", "\u001b[H"] +[49.58708312034636, "o", "\u001b[J"] +[49.61708312034636, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the data on the engine"] +[49.64708312034636, "o", "\r\n"] +[49.67708312034636, "o", "$"] +[49.70708312034636, "o", " "] +[49.73708312034636, "o", "s"] +[49.76708312034636, "o", "g"] +[49.797083120346365, "o", "r"] +[49.827083120346366, "o", " "] +[49.85708312034637, "o", "d"] +[49.88708312034637, "o", "i"] +[49.91708312034637, "o", "f"] +[49.94708312034637, "o", "f"] +[49.97708312034637, "o", " "] +[50.00708312034637, "o", "p"] +[50.037083120346374, "o", "r"] +[50.067083120346375, "o", "o"] +[50.097083120346376, "o", "d"] +[50.12708312034638, "o", "u"] +[50.15708312034638, "o", "c"] +[50.18708312034638, "o", "t"] +[50.21708312034638, "o", "i"] +[50.24708312034638, "o", "o"] +[50.27708312034638, "o", "n"] +[50.307083120346384, "o", "_"] +[50.337083120346385, "o", "d"] +[50.367083120346386, "o", "a"] +[50.39708312034639, "o", "t"] +[50.42708312034639, "o", "a"] +[50.45708312034639, "o", "\r\n"] +[50.48708312034639, "o", "$"] +[50.51708312034639, "o", " "] +[50.54708312034639, "o", "s"] +[50.577083120346394, "o", "g"] +[50.607083120346395, "o", "r"] +[50.6370831203464, "o", " "] +[50.6670831203464, "o", "s"] +[50.6970831203464, "o", "q"] +[50.7270831203464, "o", "l"] +[50.7570831203464, "o", " "] +[50.7870831203464, "o", "-"] +[50.8170831203464, "o", "s"] +[50.847083120346404, "o", " "] +[50.877083120346406, "o", "p"] +[50.90708312034641, "o", "r"] +[50.93708312034641, "o", "o"] +[50.96708312034641, "o", "d"] +[50.99708312034641, "o", "u"] +[51.02708312034641, "o", "c"] +[51.05708312034641, "o", "t"] +[51.08708312034641, "o", "i"] +[51.117083120346415, "o", "o"] +[51.147083120346416, "o", "n"] +[51.17708312034642, "o", "_"] +[51.20708312034642, "o", "d"] +[51.23708312034642, "o", "a"] +[51.26708312034642, "o", "t"] +[51.29708312034642, "o", "a"] +[51.32708312034642, "o", " "] +[51.357083120346424, "o", "\""] +[51.387083120346425, "o", "S"] +[51.417083120346426, "o", "E"] +[51.44708312034643, "o", "L"] +[51.47708312034643, "o", "E"] +[51.50708312034643, "o", "C"] +[51.53708312034643, "o", "T"] +[51.56708312034643, "o", " "] +[51.59708312034643, "o", "*"] +[51.627083120346434, "o", " "] +[51.657083120346435, "o", "F"] +[51.687083120346436, "o", "R"] +[51.71708312034644, "o", "O"] +[51.74708312034644, "o", "M"] +[51.77708312034644, "o", " "] +[51.80708312034644, "o", "c"] +[51.83708312034644, "o", "u"] +[51.86708312034644, "o", "s"] +[51.897083120346444, "o", "t"] +[51.927083120346445, "o", "o"] +[51.95708312034645, "o", "m"] +[51.98708312034645, "o", "e"] +[52.01708312034645, "o", "r"] +[52.04708312034645, "o", "s"] +[52.07708312034645, "o", "\""] +[52.10708312034645, "o", "\r\n"] +[52.13708312034645, "o", "\u001b[0m"] +[52.167083120346454, "o", "\r\n"] +[52.60528454780617, "o", "Between 000000000000 and the current working copy: \r\n"] +[52.605301952362446, "o", "customers: table added\r\norders: table added\r\n"] +[53.041167354584125, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[53.07116735458413, "o", "\u001b[1m"] +[53.10116735458413, "o", "\u001b[36m"] +[53.13116735458413, "o", "\u001b[91m"] +[53.16116735458413, "o", "$"] +[53.19116735458413, "o", " "] +[53.22116735458413, "o", "\u001b[0m"] +[58.25116735458413, "o", "\u001b[H"] +[58.281167354584134, "o", "\u001b[J"] +[58.311167354584136, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit the data as an initial image"] +[58.34116735458414, "o", "\r\n"] +[58.37116735458414, "o", "$"] +[58.40116735458414, "o", " "] +[58.43116735458414, "o", "s"] +[58.46116735458414, "o", "g"] +[58.49116735458414, "o", "r"] +[58.52116735458414, "o", " "] +[58.551167354584145, "o", "c"] +[58.581167354584146, "o", "o"] +[58.61116735458415, "o", "m"] +[58.64116735458415, "o", "m"] +[58.67116735458415, "o", "i"] +[58.70116735458415, "o", "t"] +[58.73116735458415, "o", " "] +[58.76116735458415, "o", "p"] +[58.791167354584154, "o", "r"] +[58.821167354584155, "o", "o"] +[58.851167354584156, "o", "d"] +[58.88116735458416, "o", "u"] +[58.91116735458416, "o", "c"] +[58.94116735458416, "o", "t"] +[58.97116735458416, "o", "i"] +[59.00116735458416, "o", "o"] +[59.03116735458416, "o", "n"] +[59.061167354584164, "o", "_"] +[59.091167354584165, "o", "d"] +[59.121167354584166, "o", "a"] +[59.15116735458417, "o", "t"] +[59.18116735458417, "o", "a"] +[59.21116735458417, "o", "\r\n"] +[59.24116735458417, "o", "$"] +[59.27116735458417, "o", " "] +[59.30116735458417, "o", "s"] +[59.331167354584174, "o", "g"] +[59.361167354584175, "o", "r"] +[59.39116735458418, "o", " "] +[59.42116735458418, "o", "t"] +[59.45116735458418, "o", "a"] +[59.48116735458418, "o", "g"] +[59.51116735458418, "o", " "] +[59.54116735458418, "o", "p"] +[59.57116735458418, "o", "r"] +[59.601167354584184, "o", "o"] +[59.631167354584186, "o", "d"] +[59.66116735458419, "o", "u"] +[59.69116735458419, "o", "c"] +[59.72116735458419, "o", "t"] +[59.75116735458419, "o", "i"] +[59.78116735458419, "o", "o"] +[59.81116735458419, "o", "n"] +[59.841167354584194, "o", "_"] +[59.871167354584195, "o", "d"] +[59.901167354584196, "o", "a"] +[59.9311673545842, "o", "t"] +[59.9611673545842, "o", "a"] +[59.9911673545842, "o", " "] +[60.0211673545842, "o", "i"] +[60.0511673545842, "o", "n"] +[60.0811673545842, "o", "i"] +[60.111167354584204, "o", "t"] +[60.141167354584205, "o", "i"] +[60.171167354584206, "o", "a"] +[60.20116735458421, "o", "l"] +[60.23116735458421, "o", "_"] +[60.26116735458421, "o", "s"] +[60.29116735458421, "o", "n"] +[60.32116735458421, "o", "a"] +[60.35116735458421, "o", "p"] +[60.381167354584214, "o", "s"] +[60.411167354584215, "o", "h"] +[60.441167354584216, "o", "o"] +[60.47116735458422, "o", "t"] +[60.50116735458422, "o", "\r\n"] +[60.53116735458422, "o", "$"] +[60.56116735458422, "o", " "] +[60.59116735458422, "o", "s"] +[60.62116735458422, "o", "g"] +[60.651167354584224, "o", "r"] +[60.681167354584225, "o", " "] +[60.71116735458423, "o", "s"] +[60.74116735458423, "o", "h"] +[60.77116735458423, "o", "o"] +[60.80116735458423, "o", "w"] +[60.83116735458423, "o", " "] +[60.86116735458423, "o", "p"] +[60.89116735458423, "o", "r"] +[60.921167354584234, "o", "o"] +[60.951167354584236, "o", "d"] +[60.98116735458424, "o", "u"] +[61.01116735458424, "o", "c"] +[61.04116735458424, "o", "t"] +[61.07116735458424, "o", "i"] +[61.10116735458424, "o", "o"] +[61.13116735458424, "o", "n"] +[61.161167354584244, "o", "_"] +[61.191167354584245, "o", "d"] +[61.221167354584246, "o", "a"] +[61.25116735458425, "o", "t"] +[61.28116735458425, "o", "a"] +[61.31116735458425, "o", ":"] +[61.34116735458425, "o", "i"] +[61.37116735458425, "o", "n"] +[61.40116735458425, "o", "i"] +[61.431167354584254, "o", "t"] +[61.461167354584255, "o", "i"] +[61.491167354584256, "o", "a"] +[61.52116735458426, "o", "l"] +[61.55116735458426, "o", "_"] +[61.58116735458426, "o", "s"] +[61.61116735458426, "o", "n"] +[61.64116735458426, "o", "a"] +[61.67116735458426, "o", "p"] +[61.701167354584264, "o", "s"] +[61.731167354584265, "o", "h"] +[61.761167354584266, "o", "o"] +[61.79116735458427, "o", "t"] +[61.82116735458427, "o", "\r\n"] +[61.85116735458427, "o", "\u001b[0m"] +[61.88116735458427, "o", "\r\n"] +[62.306389989853436, "o", "Committing production_data...\r\n"] +[62.33032340049797, "o", "Processing table customers\r\n"] +[62.4250621223455, "o", "Processing table orders\r\n"] +[62.52111119270378, "o", "Committed production_data as 9d1e5c3f50cf.\r\n"] +[62.9561638259893, "o", "Tagged production_data:9d1e5c3f50cff7ea96054b452ead3f3f37ec7c10ef20ffd0df418b9d8ae5f1d8 with initial_snapshot.\r\n"] +[63.38794964790397, "o", "Image production_data:9d1e5c3f50cff7ea96054b452ead3f3f37ec7c10ef20ffd0df418b9d8ae5f1d8\r\n\r\n"] +[63.38797873497062, "o", "Created at 2021-12-17T19:41:54.663812\r\n"] +[63.389994802475506, "o", "Size: 1.11 KiB\r\n"] +[63.390011253357464, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[63.391175689697796, "o", " customers\r\n orders\r\n"] +[63.4211756896978, "o", "\u001b[1m"] +[63.4511756896978, "o", "\u001b[36m"] +[63.4811756896978, "o", "\u001b[91m"] +[63.5111756896978, "o", "$"] +[63.5411756896978, "o", " "] +[63.5711756896978, "o", "\u001b[0m"] +[68.60117568969781, "o", "\u001b[H"] +[68.63117568969781, "o", "\u001b[J"] +[68.66117568969781, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make a change on the origin database"] +[68.69117568969781, "o", "\r\n"] +[68.72117568969782, "o", "$"] +[68.75117568969782, "o", " "] +[68.78117568969782, "o", "s"] +[68.81117568969782, "o", "g"] +[68.84117568969782, "o", "r"] +[68.87117568969782, "o", " "] +[68.90117568969782, "o", "s"] +[68.93117568969782, "o", "q"] +[68.96117568969782, "o", "l"] +[68.99117568969783, "o", " "] +[69.02117568969783, "o", "-"] +[69.05117568969783, "o", "r"] +[69.08117568969783, "o", " "] +[69.11117568969783, "o", "o"] +[69.14117568969783, "o", "r"] +[69.17117568969783, "o", "i"] +[69.20117568969783, "o", "g"] +[69.23117568969784, "o", "i"] +[69.26117568969784, "o", "n"] +[69.29117568969784, "o", " "] +[69.32117568969784, "o", "-"] +[69.35117568969784, "o", "s"] +[69.38117568969784, "o", " "] +[69.41117568969784, "o", "p"] +[69.44117568969784, "o", "r"] +[69.47117568969784, "o", "o"] +[69.50117568969785, "o", "d"] +[69.53117568969785, "o", "u"] +[69.56117568969785, "o", "c"] +[69.59117568969785, "o", "t"] +[69.62117568969785, "o", "i"] +[69.65117568969785, "o", "o"] +[69.68117568969785, "o", "n"] +[69.71117568969785, "o", "_"] +[69.74117568969785, "o", "d"] +[69.77117568969786, "o", "a"] +[69.80117568969786, "o", "t"] +[69.83117568969786, "o", "a"] +[69.86117568969786, "o", " "] +[69.89117568969786, "o", "\""] +[69.92117568969786, "o", "U"] +[69.95117568969786, "o", "P"] +[69.98117568969786, "o", "D"] +[70.01117568969786, "o", "A"] +[70.04117568969787, "o", "T"] +[70.07117568969787, "o", "E"] +[70.10117568969787, "o", " "] +[70.13117568969787, "o", "o"] +[70.16117568969787, "o", "r"] +[70.19117568969787, "o", "d"] +[70.22117568969787, "o", "e"] +[70.25117568969787, "o", "r"] +[70.28117568969787, "o", "s"] +[70.31117568969788, "o", " "] +[70.34117568969788, "o", "\\"] +[70.37117568969788, "o", "\r\n "] +[70.40117568969788, "o", "S"] +[70.43117568969788, "o", "E"] +[70.46117568969788, "o", "T"] +[70.49117568969788, "o", " "] +[70.52117568969788, "o", "q"] +[70.55117568969789, "o", "u"] +[70.58117568969789, "o", "a"] +[70.61117568969789, "o", "n"] +[70.64117568969789, "o", "t"] +[70.67117568969789, "o", "i"] +[70.70117568969789, "o", "t"] +[70.73117568969789, "o", "y"] +[70.7611756896979, "o", " "] +[70.7911756896979, "o", "="] +[70.8211756896979, "o", " "] +[70.8511756896979, "o", "q"] +[70.8811756896979, "o", "u"] +[70.9111756896979, "o", "a"] +[70.9411756896979, "o", "n"] +[70.9711756896979, "o", "t"] +[71.0011756896979, "o", "i"] +[71.0311756896979, "o", "t"] +[71.0611756896979, "o", "y"] +[71.0911756896979, "o", " "] +[71.1211756896979, "o", "+"] +[71.15117568969791, "o", " "] +[71.18117568969791, "o", "5"] +[71.21117568969791, "o", " "] +[71.24117568969791, "o", "W"] +[71.27117568969791, "o", "H"] +[71.30117568969791, "o", "E"] +[71.33117568969791, "o", "R"] +[71.36117568969792, "o", "E"] +[71.39117568969792, "o", " "] +[71.42117568969792, "o", "i"] +[71.45117568969792, "o", "d"] +[71.48117568969792, "o", " "] +[71.51117568969792, "o", "="] +[71.54117568969792, "o", " "] +[71.57117568969792, "o", "2"] +[71.60117568969793, "o", ";"] +[71.63117568969793, "o", " "] +[71.66117568969793, "o", "\\"] +[71.69117568969793, "o", "\r\n "] +[71.72117568969793, "o", "D"] +[71.75117568969793, "o", "E"] +[71.78117568969793, "o", "L"] +[71.81117568969793, "o", "E"] +[71.84117568969793, "o", "T"] +[71.87117568969794, "o", "E"] +[71.90117568969794, "o", " "] +[71.93117568969794, "o", "F"] +[71.96117568969794, "o", "R"] +[71.99117568969794, "o", "O"] +[72.02117568969794, "o", "M"] +[72.05117568969794, "o", " "] +[72.08117568969794, "o", "o"] +[72.11117568969794, "o", "r"] +[72.14117568969795, "o", "d"] +[72.17117568969795, "o", "e"] +[72.20117568969795, "o", "r"] +[72.23117568969795, "o", "s"] +[72.26117568969795, "o", " "] +[72.29117568969795, "o", "W"] +[72.32117568969795, "o", "H"] +[72.35117568969795, "o", "E"] +[72.38117568969795, "o", "R"] +[72.41117568969796, "o", "E"] +[72.44117568969796, "o", " "] +[72.47117568969796, "o", "i"] +[72.50117568969796, "o", "d"] +[72.53117568969796, "o", " "] +[72.56117568969796, "o", "="] +[72.59117568969796, "o", " "] +[72.62117568969796, "o", "5"] +[72.65117568969796, "o", ";"] +[72.68117568969797, "o", " "] +[72.71117568969797, "o", "\\"] +[72.74117568969797, "o", "\r\n "] +[72.77117568969797, "o", "I"] +[72.80117568969797, "o", "N"] +[72.83117568969797, "o", "S"] +[72.86117568969797, "o", "E"] +[72.89117568969797, "o", "R"] +[72.92117568969798, "o", "T"] +[72.95117568969798, "o", " "] +[72.98117568969798, "o", "I"] +[73.01117568969798, "o", "N"] +[73.04117568969798, "o", "T"] +[73.07117568969798, "o", "O"] +[73.10117568969798, "o", " "] +[73.13117568969798, "o", "c"] +[73.16117568969798, "o", "u"] +[73.19117568969799, "o", "s"] +[73.22117568969799, "o", "t"] +[73.25117568969799, "o", "o"] +[73.28117568969799, "o", "m"] +[73.31117568969799, "o", "e"] +[73.34117568969799, "o", "r"] +[73.37117568969799, "o", "s"] +[73.401175689698, "o", " "] +[73.431175689698, "o", "("] +[73.461175689698, "o", "n"] +[73.491175689698, "o", "a"] +[73.521175689698, "o", "m"] +[73.551175689698, "o", "e"] +[73.581175689698, "o", ","] +[73.611175689698, "o", " "] +[73.641175689698, "o", "r"] +[73.671175689698, "o", "e"] +[73.701175689698, "o", "g"] +[73.731175689698, "o", "i"] +[73.761175689698, "o", "s"] +[73.79117568969801, "o", "t"] +[73.82117568969801, "o", "r"] +[73.85117568969801, "o", "a"] +[73.88117568969801, "o", "t"] +[73.91117568969801, "o", "i"] +[73.94117568969801, "o", "o"] +[73.97117568969801, "o", "n"] +[74.00117568969802, "o", "_"] +[74.03117568969802, "o", "t"] +[74.06117568969802, "o", "i"] +[74.09117568969802, "o", "m"] +[74.12117568969802, "o", "e"] +[74.15117568969802, "o", ")"] +[74.18117568969802, "o", " "] +[74.21117568969802, "o", "V"] +[74.24117568969803, "o", "A"] +[74.27117568969803, "o", "L"] +[74.30117568969803, "o", "U"] +[74.33117568969803, "o", "E"] +[74.36117568969803, "o", "S"] +[74.39117568969803, "o", " "] +[74.42117568969803, "o", "\\"] +[74.45117568969803, "o", "\r\n "] +[74.48117568969803, "o", "("] +[74.51117568969804, "o", "'"] +[74.54117568969804, "o", "J"] +[74.57117568969804, "o", "a"] +[74.60117568969804, "o", "c"] +[74.63117568969804, "o", "k"] +[74.66117568969804, "o", " "] +[74.69117568969804, "o", "S"] +[74.72117568969804, "o", "a"] +[74.75117568969804, "o", "m"] +[74.78117568969805, "o", "p"] +[74.81117568969805, "o", "l"] +[74.84117568969805, "o", "e"] +[74.87117568969805, "o", "'"] +[74.90117568969805, "o", ","] +[74.93117568969805, "o", " "] +[74.96117568969805, "o", "'"] +[74.99117568969805, "o", "2"] +[75.02117568969805, "o", "0"] +[75.05117568969806, "o", "2"] +[75.08117568969806, "o", "0"] +[75.11117568969806, "o", "-"] +[75.14117568969806, "o", "0"] +[75.17117568969806, "o", "4"] +[75.20117568969806, "o", "-"] +[75.23117568969806, "o", "2"] +[75.26117568969806, "o", "0"] +[75.29117568969806, "o", " "] +[75.32117568969807, "o", "1"] +[75.35117568969807, "o", "4"] +[75.38117568969807, "o", ":"] +[75.41117568969807, "o", "0"] +[75.44117568969807, "o", "3"] +[75.47117568969807, "o", ":"] +[75.50117568969807, "o", "4"] +[75.53117568969807, "o", "8"] +[75.56117568969808, "o", "'"] +[75.59117568969808, "o", ")"] +[75.62117568969808, "o", ";"] +[75.65117568969808, "o", " "] +[75.68117568969808, "o", "\\"] +[75.71117568969808, "o", "\r\n "] +[75.74117568969808, "o", "I"] +[75.77117568969808, "o", "N"] +[75.80117568969808, "o", "S"] +[75.83117568969809, "o", "E"] +[75.86117568969809, "o", "R"] +[75.89117568969809, "o", "T"] +[75.92117568969809, "o", " "] +[75.95117568969809, "o", "I"] +[75.98117568969809, "o", "N"] +[76.01117568969809, "o", "T"] +[76.0411756896981, "o", "O"] +[76.0711756896981, "o", " "] +[76.1011756896981, "o", "o"] +[76.1311756896981, "o", "r"] +[76.1611756896981, "o", "d"] +[76.1911756896981, "o", "e"] +[76.2211756896981, "o", "r"] +[76.2511756896981, "o", "s"] +[76.2811756896981, "o", " "] +[76.3111756896981, "o", "("] +[76.3411756896981, "o", "c"] +[76.3711756896981, "o", "u"] +[76.4011756896981, "o", "s"] +[76.43117568969811, "o", "t"] +[76.46117568969811, "o", "o"] +[76.49117568969811, "o", "m"] +[76.52117568969811, "o", "e"] +[76.55117568969811, "o", "r"] +[76.58117568969811, "o", "_"] +[76.61117568969811, "o", "i"] +[76.64117568969812, "o", "d"] +[76.67117568969812, "o", ","] +[76.70117568969812, "o", " "] +[76.73117568969812, "o", "q"] +[76.76117568969812, "o", "u"] +[76.79117568969812, "o", "a"] +[76.82117568969812, "o", "n"] +[76.85117568969812, "o", "t"] +[76.88117568969813, "o", "i"] +[76.91117568969813, "o", "t"] +[76.94117568969813, "o", "y"] +[76.97117568969813, "o", ","] +[77.00117568969813, "o", " "] +[77.03117568969813, "o", "i"] +[77.06117568969813, "o", "t"] +[77.09117568969813, "o", "e"] +[77.12117568969813, "o", "m"] +[77.15117568969814, "o", "_"] +[77.18117568969814, "o", "n"] +[77.21117568969814, "o", "a"] +[77.24117568969814, "o", "m"] +[77.27117568969814, "o", "e"] +[77.30117568969814, "o", ","] +[77.33117568969814, "o", " "] +[77.36117568969814, "o", "p"] +[77.39117568969814, "o", "l"] +[77.42117568969815, "o", "a"] +[77.45117568969815, "o", "c"] +[77.48117568969815, "o", "e"] +[77.51117568969815, "o", "d"] +[77.54117568969815, "o", "_"] +[77.57117568969815, "o", "t"] +[77.60117568969815, "o", "i"] +[77.63117568969815, "o", "m"] +[77.66117568969815, "o", "e"] +[77.69117568969816, "o", ")"] +[77.72117568969816, "o", " "] +[77.75117568969816, "o", "V"] +[77.78117568969816, "o", "A"] +[77.81117568969816, "o", "L"] +[77.84117568969816, "o", "U"] +[77.87117568969816, "o", "E"] +[77.90117568969816, "o", "S"] +[77.93117568969816, "o", " "] +[77.96117568969817, "o", "\\"] +[77.99117568969817, "o", "\r\n "] +[78.02117568969817, "o", "("] +[78.05117568969817, "o", "4"] +[78.08117568969817, "o", ","] +[78.11117568969817, "o", " "] +[78.14117568969817, "o", "5"] +[78.17117568969817, "o", ","] +[78.20117568969818, "o", " "] +[78.23117568969818, "o", "'"] +[78.26117568969818, "o", "T"] +[78.29117568969818, "o", "o"] +[78.32117568969818, "o", "i"] +[78.35117568969818, "o", "l"] +[78.38117568969818, "o", "e"] +[78.41117568969818, "o", "t"] +[78.44117568969818, "o", " "] +[78.47117568969819, "o", "R"] +[78.50117568969819, "o", "o"] +[78.53117568969819, "o", "l"] +[78.56117568969819, "o", "l"] +[78.59117568969819, "o", "'"] +[78.62117568969819, "o", ","] +[78.65117568969819, "o", " "] +[78.6811756896982, "o", "'"] +[78.7111756896982, "o", "2"] +[78.7411756896982, "o", "0"] +[78.7711756896982, "o", "2"] +[78.8011756896982, "o", "0"] +[78.8311756896982, "o", "-"] +[78.8611756896982, "o", "0"] +[78.8911756896982, "o", "4"] +[78.9211756896982, "o", "-"] +[78.9511756896982, "o", "2"] +[78.9811756896982, "o", "0"] +[79.0111756896982, "o", " "] +[79.0411756896982, "o", "1"] +[79.07117568969821, "o", "4"] +[79.10117568969821, "o", ":"] +[79.13117568969821, "o", "0"] +[79.16117568969821, "o", "5"] +[79.19117568969821, "o", ":"] +[79.22117568969821, "o", "1"] +[79.25117568969821, "o", "7"] +[79.28117568969822, "o", "'"] +[79.31117568969822, "o", ")"] +[79.34117568969822, "o", ";"] +[79.37117568969822, "o", "\""] +[79.40117568969822, "o", "\r\n"] +[79.43117568969822, "o", "\u001b[0m"] +[79.46117568969822, "o", "\r\n"] +[79.49117568969822, "o", "\u001b[1m"] +[79.52117568969823, "o", "\u001b[36m"] +[79.55117568969823, "o", "\u001b[91m"] +[79.58117568969823, "o", "$"] +[79.61117568969823, "o", " "] +[79.64117568969823, "o", "\u001b[0m"] +[84.67117568969823, "o", "\u001b[H"] +[84.70117568969823, "o", "\u001b[J"] +[84.73117568969823, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The change propagates to the subscriber and gets"] +[84.76117568969823, "o", "\r\n"] +[84.79117568969824, "o", "$ # captured by Splitgraph's change tracking\r\n"] +[84.82117568969824, "o", "$"] +[84.85117568969824, "o", " "] +[84.88117568969824, "o", "s"] +[84.91117568969824, "o", "g"] +[84.94117568969824, "o", "r"] +[84.97117568969824, "o", " "] +[85.00117568969824, "o", "d"] +[85.03117568969824, "o", "i"] +[85.06117568969825, "o", "f"] +[85.09117568969825, "o", "f"] +[85.12117568969825, "o", " "] +[85.15117568969825, "o", "-"] +[85.18117568969825, "o", "v"] +[85.21117568969825, "o", " "] +[85.24117568969825, "o", "p"] +[85.27117568969825, "o", "r"] +[85.30117568969825, "o", "o"] +[85.33117568969826, "o", "d"] +[85.36117568969826, "o", "u"] +[85.39117568969826, "o", "c"] +[85.42117568969826, "o", "t"] +[85.45117568969826, "o", "i"] +[85.48117568969826, "o", "o"] +[85.51117568969826, "o", "n"] +[85.54117568969826, "o", "_"] +[85.57117568969826, "o", "d"] +[85.60117568969827, "o", "a"] +[85.63117568969827, "o", "t"] +[85.66117568969827, "o", "a"] +[85.69117568969827, "o", "\r\n"] +[85.72117568969827, "o", "\u001b[0m"] +[85.75117568969827, "o", "\r\n"] +[86.36816506385904, "o", "Between 9d1e5c3f50cf and the current working copy: \r\n"] +[86.36844997406106, "o", "customers: added 1 row.\r\n+ (4, 'Jack Sample', datetime.datetime(2020, 4, 20, 14, 3, 48))\r\n"] +[86.36877326965433, "o", "orders: added 2 rows, removed 2 rows.\r\n- (2, 1, 20, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n- (5, 1, 50, 'Surgical Mask', datetime.datetime(2020, 4, 2, 11, 29, 42))\r\n+ (2, 1, 25, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n+ (6, 4, 5, 'Toilet Roll', datetime.datetime(2020, 4, 20, 14, 5, 17))\r\n"] +[86.39877326965433, "o", "\u001b[1m"] +[86.42877326965433, "o", "\u001b[36m"] +[86.45877326965433, "o", "\u001b[91m"] +[86.48877326965433, "o", "$"] +[86.51877326965433, "o", " "] +[86.54877326965433, "o", "\u001b[0m"] +[91.57877326965433, "o", "\u001b[H"] +[91.60877326965434, "o", "\u001b[J"] +[91.63877326965434, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Committing creates a new image, snapshotting the state."] +[91.66877326965434, "o", "\r\n"] +[91.69877326965434, "o", "$"] +[91.72877326965434, "o", " "] +[91.75877326965434, "o", "s"] +[91.78877326965434, "o", "g"] +[91.81877326965434, "o", "r"] +[91.84877326965434, "o", " "] +[91.87877326965435, "o", "c"] +[91.90877326965435, "o", "o"] +[91.93877326965435, "o", "m"] +[91.96877326965435, "o", "m"] +[91.99877326965435, "o", "i"] +[92.02877326965435, "o", "t"] +[92.05877326965435, "o", " "] +[92.08877326965435, "o", "p"] +[92.11877326965435, "o", "r"] +[92.14877326965436, "o", "o"] +[92.17877326965436, "o", "d"] +[92.20877326965436, "o", "u"] +[92.23877326965436, "o", "c"] +[92.26877326965436, "o", "t"] +[92.29877326965436, "o", "i"] +[92.32877326965436, "o", "o"] +[92.35877326965436, "o", "n"] +[92.38877326965437, "o", "_"] +[92.41877326965437, "o", "d"] +[92.44877326965437, "o", "a"] +[92.47877326965437, "o", "t"] +[92.50877326965437, "o", "a"] +[92.53877326965437, "o", "\r\n"] +[92.56877326965437, "o", "$"] +[92.59877326965437, "o", " "] +[92.62877326965437, "o", "s"] +[92.65877326965438, "o", "g"] +[92.68877326965438, "o", "r"] +[92.71877326965438, "o", " "] +[92.74877326965438, "o", "t"] +[92.77877326965438, "o", "a"] +[92.80877326965438, "o", "g"] +[92.83877326965438, "o", " "] +[92.86877326965438, "o", "p"] +[92.89877326965438, "o", "r"] +[92.92877326965439, "o", "o"] +[92.95877326965439, "o", "d"] +[92.98877326965439, "o", "u"] +[93.01877326965439, "o", "c"] +[93.04877326965439, "o", "t"] +[93.07877326965439, "o", "i"] +[93.10877326965439, "o", "o"] +[93.1387732696544, "o", "n"] +[93.1687732696544, "o", "_"] +[93.1987732696544, "o", "d"] +[93.2287732696544, "o", "a"] +[93.2587732696544, "o", "t"] +[93.2887732696544, "o", "a"] +[93.3187732696544, "o", " "] +[93.3487732696544, "o", "c"] +[93.3787732696544, "o", "u"] +[93.4087732696544, "o", "r"] +[93.4387732696544, "o", "r"] +[93.4687732696544, "o", "e"] +[93.49877326965441, "o", "n"] +[93.52877326965441, "o", "t"] +[93.55877326965441, "o", "_"] +[93.58877326965441, "o", "s"] +[93.61877326965441, "o", "n"] +[93.64877326965441, "o", "a"] +[93.67877326965441, "o", "p"] +[93.70877326965442, "o", "s"] +[93.73877326965442, "o", "h"] +[93.76877326965442, "o", "o"] +[93.79877326965442, "o", "t"] +[93.82877326965442, "o", "\r\n"] +[93.85877326965442, "o", "$"] +[93.88877326965442, "o", " "] +[93.91877326965442, "o", "s"] +[93.94877326965442, "o", "g"] +[93.97877326965443, "o", "r"] +[94.00877326965443, "o", " "] +[94.03877326965443, "o", "s"] +[94.06877326965443, "o", "h"] +[94.09877326965443, "o", "o"] +[94.12877326965443, "o", "w"] +[94.15877326965443, "o", " "] +[94.18877326965443, "o", "p"] +[94.21877326965443, "o", "r"] +[94.24877326965444, "o", "o"] +[94.27877326965444, "o", "d"] +[94.30877326965444, "o", "u"] +[94.33877326965444, "o", "c"] +[94.36877326965444, "o", "t"] +[94.39877326965444, "o", "i"] +[94.42877326965444, "o", "o"] +[94.45877326965444, "o", "n"] +[94.48877326965444, "o", "_"] +[94.51877326965445, "o", "d"] +[94.54877326965445, "o", "a"] +[94.57877326965445, "o", "t"] +[94.60877326965445, "o", "a"] +[94.63877326965445, "o", ":"] +[94.66877326965445, "o", "c"] +[94.69877326965445, "o", "u"] +[94.72877326965445, "o", "r"] +[94.75877326965445, "o", "r"] +[94.78877326965446, "o", "e"] +[94.81877326965446, "o", "n"] +[94.84877326965446, "o", "t"] +[94.87877326965446, "o", "_"] +[94.90877326965446, "o", "s"] +[94.93877326965446, "o", "n"] +[94.96877326965446, "o", "a"] +[94.99877326965446, "o", "p"] +[95.02877326965447, "o", "s"] +[95.05877326965447, "o", "h"] +[95.08877326965447, "o", "o"] +[95.11877326965447, "o", "t"] +[95.14877326965447, "o", "\r\n"] +[95.17877326965447, "o", "\u001b[0m"] +[95.20877326965447, "o", "\r\n"] +[95.64292181968804, "o", "Committing production_data...\r\n"] +[95.69318474769707, "o", "Committed production_data as 370d012c8aa7.\r\n"] +[96.1381820583355, "o", "Tagged production_data:370d012c8aa711617bf3480098121e3f26bd5d3d5bbf383184aee9fb9c4f14a6 with current_snapshot.\r\n"] +[96.56138862609978, "o", "Image production_data:370d012c8aa711617bf3480098121e3f26bd5d3d5bbf383184aee9fb9c4f14a6\r\n\r\n"] +[96.56141270637627, "o", "Created at 2021-12-17T19:41:57.593779\r\n"] +[96.56281937599297, "o", "Size: 1.11 KiB\r\n"] +[96.56283201217767, "o", "Parent: 9d1e5c3f50cff7ea96054b452ead3f3f37ec7c10ef20ffd0df418b9d8ae5f1d8\r\n\r\nTables:\r\n"] +[96.56353701591607, "o", " customers\r\n orders\r\n"] +[96.59353701591607, "o", "\u001b[1m"] +[96.62353701591607, "o", "\u001b[36m"] +[96.65353701591607, "o", "\u001b[91m"] +[96.68353701591607, "o", "$"] +[96.71353701591607, "o", " "] +[96.74353701591608, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.3.0/postgrest.cast b/content/casts/versioned/archive/v0.3.0/postgrest.cast new file mode 100644 index 00000000..cd194b62 --- /dev/null +++ b/content/casts/versioned/archive/v0.3.0/postgrest.cast @@ -0,0 +1,1239 @@ +{"version": 2, "width": 100, "height": 16, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1639770120, "metadata": {"tss": [{"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 0.06}, {"h": "Also create another image so we can switch between them.", "ts": 13.452977085113531}, {"h": "Check out the original version of the dataset and look at the API spec for it.", "ts": 26.45180781364453}, {"h": "Get all rows in the table", "ts": 38.26041230201752}, {"h": "Run a query selecting one row", "ts": 44.94514172554053}, {"h": "Run the query against the new version of the dataset.", "ts": 53.62186750412038}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[0.12, "o", "\r\n"] +[0.15, "o", "$"] +[0.18, "o", " "] +[0.21, "o", "s"] +[0.24, "o", "g"] +[0.27, "o", "r"] +[0.30000000000000004, "o", " "] +[0.33000000000000007, "o", "i"] +[0.3600000000000001, "o", "n"] +[0.3900000000000001, "o", "i"] +[0.42000000000000015, "o", "t"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "d"] +[0.5100000000000002, "o", "e"] +[0.5400000000000003, "o", "m"] +[0.5700000000000003, "o", "o"] +[0.6000000000000003, "o", "/"] +[0.6300000000000003, "o", "w"] +[0.6600000000000004, "o", "e"] +[0.6900000000000004, "o", "a"] +[0.7200000000000004, "o", "t"] +[0.7500000000000004, "o", "h"] +[0.7800000000000005, "o", "e"] +[0.8100000000000005, "o", "r"] +[0.8400000000000005, "o", "\r\n"] +[0.8700000000000006, "o", "$"] +[0.9000000000000006, "o", " "] +[0.9300000000000006, "o", "s"] +[0.9600000000000006, "o", "g"] +[0.9900000000000007, "o", "r"] +[1.0200000000000007, "o", " "] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "s"] +[1.1100000000000008, "o", "v"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "i"] +[1.2000000000000008, "o", "m"] +[1.2300000000000009, "o", "p"] +[1.260000000000001, "o", "o"] +[1.290000000000001, "o", "r"] +[1.320000000000001, "o", "t"] +[1.350000000000001, "o", " "] +[1.380000000000001, "o", "-"] +[1.410000000000001, "o", "f"] +[1.440000000000001, "o", " "] +[1.470000000000001, "o", "."] +[1.500000000000001, "o", "."] +[1.5300000000000011, "o", "/"] +[1.5600000000000012, "o", "i"] +[1.5900000000000012, "o", "m"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "o"] +[1.6800000000000013, "o", "r"] +[1.7100000000000013, "o", "t"] +[1.7400000000000013, "o", "-"] +[1.7700000000000014, "o", "f"] +[1.8000000000000014, "o", "r"] +[1.8300000000000014, "o", "o"] +[1.8600000000000014, "o", "m"] +[1.8900000000000015, "o", "-"] +[1.9200000000000015, "o", "c"] +[1.9500000000000015, "o", "s"] +[1.9800000000000015, "o", "v"] +[2.0100000000000016, "o", "/"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "d"] +[2.100000000000001, "o", "u"] +[2.130000000000001, "o", "-"] +[2.1600000000000006, "o", "w"] +[2.1900000000000004, "o", "e"] +[2.22, "o", "a"] +[2.25, "o", "t"] +[2.28, "o", "h"] +[2.3099999999999996, "o", "e"] +[2.3399999999999994, "o", "r"] +[2.369999999999999, "o", "-"] +[2.399999999999999, "o", "h"] +[2.429999999999999, "o", "i"] +[2.4599999999999986, "o", "s"] +[2.4899999999999984, "o", "t"] +[2.5199999999999982, "o", "o"] +[2.549999999999998, "o", "r"] +[2.579999999999998, "o", "y"] +[2.6099999999999977, "o", "."] +[2.6399999999999975, "o", "c"] +[2.6699999999999973, "o", "s"] +[2.699999999999997, "o", "v"] +[2.729999999999997, "o", " "] +[2.7599999999999967, "o", "\\"] +[2.7899999999999965, "o", "\r\n "] +[2.8199999999999963, "o", "-"] +[2.849999999999996, "o", "k"] +[2.879999999999996, "o", " "] +[2.9099999999999957, "o", "d"] +[2.9399999999999955, "o", "a"] +[2.9699999999999953, "o", "t"] +[2.999999999999995, "o", "e"] +[3.029999999999995, "o", " "] +[3.0599999999999947, "o", "\\"] +[3.0899999999999945, "o", "\r\n "] +[3.1199999999999943, "o", "-"] +[3.149999999999994, "o", "t"] +[3.179999999999994, "o", " "] +[3.2099999999999937, "o", "d"] +[3.2399999999999936, "o", "a"] +[3.2699999999999934, "o", "t"] +[3.299999999999993, "o", "e"] +[3.329999999999993, "o", " "] +[3.3599999999999928, "o", "t"] +[3.3899999999999926, "o", "i"] +[3.4199999999999924, "o", "m"] +[3.449999999999992, "o", "e"] +[3.479999999999992, "o", "s"] +[3.509999999999992, "o", "t"] +[3.5399999999999916, "o", "a"] +[3.5699999999999914, "o", "m"] +[3.599999999999991, "o", "p"] +[3.629999999999991, "o", " "] +[3.659999999999991, "o", "\\"] +[3.6899999999999906, "o", "\r\n "] +[3.7199999999999904, "o", "-"] +[3.7499999999999902, "o", "-"] +[3.77999999999999, "o", "s"] +[3.80999999999999, "o", "e"] +[3.8399999999999896, "o", "p"] +[3.8699999999999894, "o", "a"] +[3.8999999999999893, "o", "r"] +[3.929999999999989, "o", "a"] +[3.959999999999989, "o", "t"] +[3.9899999999999887, "o", "o"] +[4.019999999999989, "o", "r"] +[4.049999999999989, "o", " "] +[4.079999999999989, "o", "\""] +[4.10999999999999, "o", ";"] +[4.13999999999999, "o", "\""] +[4.16999999999999, "o", " "] +[4.19999999999999, "o", "\\"] +[4.229999999999991, "o", "\r\n "] +[4.259999999999991, "o", "d"] +[4.289999999999991, "o", "e"] +[4.319999999999991, "o", "m"] +[4.349999999999992, "o", "o"] +[4.379999999999992, "o", "/"] +[4.409999999999992, "o", "w"] +[4.439999999999992, "o", "e"] +[4.469999999999993, "o", "a"] +[4.499999999999993, "o", "t"] +[4.529999999999993, "o", "h"] +[4.559999999999993, "o", "e"] +[4.589999999999994, "o", "r"] +[4.619999999999994, "o", " "] +[4.649999999999994, "o", "r"] +[4.679999999999994, "o", "d"] +[4.709999999999995, "o", "u"] +[4.739999999999995, "o", "\r\n"] +[4.769999999999995, "o", "$"] +[4.799999999999995, "o", " "] +[4.829999999999996, "o", "s"] +[4.859999999999996, "o", "g"] +[4.889999999999996, "o", "r"] +[4.919999999999996, "o", " "] +[4.949999999999997, "o", "c"] +[4.979999999999997, "o", "o"] +[5.009999999999997, "o", "m"] +[5.039999999999997, "o", "m"] +[5.069999999999998, "o", "i"] +[5.099999999999998, "o", "t"] +[5.129999999999998, "o", " "] +[5.159999999999998, "o", "d"] +[5.189999999999999, "o", "e"] +[5.219999999999999, "o", "m"] +[5.249999999999999, "o", "o"] +[5.279999999999999, "o", "/"] +[5.31, "o", "w"] +[5.34, "o", "e"] +[5.37, "o", "a"] +[5.4, "o", "t"] +[5.430000000000001, "o", "h"] +[5.460000000000001, "o", "e"] +[5.490000000000001, "o", "r"] +[5.520000000000001, "o", "\r\n"] +[5.550000000000002, "o", "$"] +[5.580000000000002, "o", " "] +[5.610000000000002, "o", "s"] +[5.640000000000002, "o", "g"] +[5.670000000000003, "o", "r"] +[5.700000000000003, "o", " "] +[5.730000000000003, "o", "t"] +[5.760000000000003, "o", "a"] +[5.790000000000004, "o", "g"] +[5.820000000000004, "o", " "] +[5.850000000000004, "o", "d"] +[5.880000000000004, "o", "e"] +[5.910000000000005, "o", "m"] +[5.940000000000005, "o", "o"] +[5.970000000000005, "o", "/"] +[6.000000000000005, "o", "w"] +[6.030000000000006, "o", "e"] +[6.060000000000006, "o", "a"] +[6.090000000000006, "o", "t"] +[6.120000000000006, "o", "h"] +[6.150000000000007, "o", "e"] +[6.180000000000007, "o", "r"] +[6.210000000000007, "o", " "] +[6.240000000000007, "o", "i"] +[6.270000000000008, "o", "n"] +[6.300000000000008, "o", "i"] +[6.330000000000008, "o", "t"] +[6.360000000000008, "o", "i"] +[6.390000000000009, "o", "a"] +[6.420000000000009, "o", "l"] +[6.450000000000009, "o", "_"] +[6.480000000000009, "o", "d"] +[6.51000000000001, "o", "a"] +[6.54000000000001, "o", "t"] +[6.57000000000001, "o", "a"] +[6.60000000000001, "o", "\r\n"] +[6.6300000000000106, "o", "\u001b[0m"] +[6.660000000000011, "o", "\r\n"] +[7.10494390487672, "o", "Initialized empty repository demo/weather\r\n"] +[7.532645378112804, "o", "Committing demo/weather...\r\n"] +[7.555421504974376, "o", "Processing table rdu\r\n"] +[7.789980325698863, "o", "Committed demo/weather as 1f08d546e6db.\r\n"] +[8.212977085113536, "o", "Tagged demo/weather:1f08d546e6db7856e6b9bd702bf8f002326219b09b6cc5a50b75395e2724fb23 with initial_data.\r\n"] +[8.242977085113536, "o", "\u001b[1m"] +[8.272977085113535, "o", "\u001b[36m"] +[8.302977085113534, "o", "\u001b[91m"] +[8.332977085113534, "o", "$"] +[8.362977085113533, "o", " "] +[8.392977085113532, "o", "\u001b[0m"] +[13.422977085113532, "o", "\u001b[H"] +[13.452977085113531, "o", "\u001b[J"] +[13.48297708511353, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Also create another image so we can switch between them."] +[13.51297708511353, "o", "\r\n"] +[13.54297708511353, "o", "$"] +[13.572977085113529, "o", " "] +[13.602977085113528, "o", "s"] +[13.632977085113527, "o", "g"] +[13.662977085113527, "o", "r"] +[13.692977085113526, "o", " "] +[13.722977085113525, "o", "s"] +[13.752977085113525, "o", "q"] +[13.782977085113524, "o", "l"] +[13.812977085113523, "o", " "] +[13.842977085113523, "o", "-"] +[13.872977085113522, "o", "s"] +[13.902977085113521, "o", " "] +[13.93297708511352, "o", "d"] +[13.96297708511352, "o", "e"] +[13.99297708511352, "o", "m"] +[14.022977085113519, "o", "o"] +[14.052977085113518, "o", "/"] +[14.082977085113518, "o", "w"] +[14.112977085113517, "o", "e"] +[14.142977085113516, "o", "a"] +[14.172977085113516, "o", "t"] +[14.202977085113515, "o", "h"] +[14.232977085113514, "o", "e"] +[14.262977085113514, "o", "r"] +[14.292977085113513, "o", " "] +[14.322977085113513, "o", "\""] +[14.352977085113512, "o", "U"] +[14.382977085113511, "o", "P"] +[14.41297708511351, "o", "D"] +[14.44297708511351, "o", "A"] +[14.47297708511351, "o", "T"] +[14.502977085113509, "o", "E"] +[14.532977085113508, "o", " "] +[14.562977085113507, "o", "r"] +[14.592977085113507, "o", "d"] +[14.622977085113506, "o", "u"] +[14.652977085113505, "o", " "] +[14.682977085113505, "o", "S"] +[14.712977085113504, "o", "E"] +[14.742977085113504, "o", "T"] +[14.772977085113503, "o", " "] +[14.802977085113502, "o", "p"] +[14.832977085113502, "o", "r"] +[14.862977085113501, "o", "e"] +[14.8929770851135, "o", "c"] +[14.9229770851135, "o", "i"] +[14.952977085113499, "o", "p"] +[14.982977085113498, "o", "i"] +[15.012977085113498, "o", "t"] +[15.042977085113497, "o", "a"] +[15.072977085113497, "o", "t"] +[15.102977085113496, "o", "i"] +[15.132977085113495, "o", "o"] +[15.162977085113495, "o", "n"] +[15.192977085113494, "o", " "] +[15.222977085113493, "o", "="] +[15.252977085113493, "o", " "] +[15.282977085113492, "o", "p"] +[15.312977085113491, "o", "r"] +[15.34297708511349, "o", "e"] +[15.37297708511349, "o", "c"] +[15.40297708511349, "o", "i"] +[15.432977085113489, "o", "p"] +[15.462977085113488, "o", "i"] +[15.492977085113488, "o", "t"] +[15.522977085113487, "o", "a"] +[15.552977085113486, "o", "t"] +[15.582977085113486, "o", "i"] +[15.612977085113485, "o", "o"] +[15.642977085113484, "o", "n"] +[15.672977085113484, "o", " "] +[15.702977085113483, "o", "*"] +[15.732977085113482, "o", " "] +[15.762977085113482, "o", "1"] +[15.792977085113481, "o", "."] +[15.82297708511348, "o", "2"] +[15.85297708511348, "o", " "] +[15.88297708511348, "o", "W"] +[15.912977085113479, "o", "H"] +[15.942977085113478, "o", "E"] +[15.972977085113477, "o", "R"] +[16.00297708511348, "o", "E"] +[16.03297708511348, "o", " "] +[16.06297708511348, "o", "E"] +[16.092977085113482, "o", "X"] +[16.122977085113483, "o", "T"] +[16.152977085113484, "o", "R"] +[16.182977085113485, "o", "A"] +[16.212977085113486, "o", "C"] +[16.242977085113488, "o", "T"] +[16.27297708511349, "o", " "] +[16.30297708511349, "o", "("] +[16.33297708511349, "o", "y"] +[16.362977085113492, "o", "e"] +[16.392977085113493, "o", "a"] +[16.422977085113494, "o", "r"] +[16.452977085113496, "o", " "] +[16.482977085113497, "o", "F"] +[16.512977085113498, "o", "R"] +[16.5429770851135, "o", "O"] +[16.5729770851135, "o", "M"] +[16.6029770851135, "o", " "] +[16.632977085113502, "o", "d"] +[16.662977085113504, "o", "a"] +[16.692977085113505, "o", "t"] +[16.722977085113506, "o", "e"] +[16.752977085113507, "o", ")"] +[16.782977085113508, "o", " "] +[16.81297708511351, "o", "="] +[16.84297708511351, "o", " "] +[16.87297708511351, "o", "2"] +[16.902977085113513, "o", "0"] +[16.932977085113514, "o", "1"] +[16.962977085113515, "o", "2"] +[16.992977085113516, "o", "\""] +[17.022977085113517, "o", "\r\n"] +[17.05297708511352, "o", "$"] +[17.08297708511352, "o", " "] +[17.11297708511352, "o", "s"] +[17.14297708511352, "o", "g"] +[17.172977085113523, "o", "r"] +[17.202977085113524, "o", " "] +[17.232977085113525, "o", "c"] +[17.262977085113526, "o", "o"] +[17.292977085113527, "o", "m"] +[17.32297708511353, "o", "m"] +[17.35297708511353, "o", "i"] +[17.38297708511353, "o", "t"] +[17.412977085113532, "o", " "] +[17.442977085113533, "o", "-"] +[17.472977085113534, "o", "m"] +[17.502977085113535, "o", " "] +[17.532977085113536, "o", "\""] +[17.562977085113538, "o", "R"] +[17.59297708511354, "o", "e"] +[17.62297708511354, "o", "v"] +[17.65297708511354, "o", "i"] +[17.682977085113542, "o", "s"] +[17.712977085113543, "o", "i"] +[17.742977085113544, "o", "o"] +[17.772977085113546, "o", "n"] +[17.802977085113547, "o", " "] +[17.832977085113548, "o", "t"] +[17.86297708511355, "o", "o"] +[17.89297708511355, "o", " "] +[17.92297708511355, "o", "t"] +[17.952977085113552, "o", "h"] +[17.982977085113554, "o", "e"] +[18.012977085113555, "o", " "] +[18.042977085113556, "o", "2"] +[18.072977085113557, "o", "0"] +[18.102977085113558, "o", "1"] +[18.13297708511356, "o", "2"] +[18.16297708511356, "o", " "] +[18.19297708511356, "o", "r"] +[18.222977085113563, "o", "a"] +[18.252977085113564, "o", "i"] +[18.282977085113565, "o", "n"] +[18.312977085113566, "o", "f"] +[18.342977085113567, "o", "a"] +[18.37297708511357, "o", "l"] +[18.40297708511357, "o", "l"] +[18.43297708511357, "o", " "] +[18.46297708511357, "o", "d"] +[18.492977085113573, "o", "a"] +[18.522977085113574, "o", "t"] +[18.552977085113575, "o", "a"] +[18.582977085113576, "o", "\""] +[18.612977085113577, "o", " "] +[18.64297708511358, "o", "d"] +[18.67297708511358, "o", "e"] +[18.70297708511358, "o", "m"] +[18.732977085113582, "o", "o"] +[18.762977085113583, "o", "/"] +[18.792977085113584, "o", "w"] +[18.822977085113585, "o", "e"] +[18.852977085113586, "o", "a"] +[18.882977085113588, "o", "t"] +[18.91297708511359, "o", "h"] +[18.94297708511359, "o", "e"] +[18.97297708511359, "o", "r"] +[19.002977085113592, "o", "\r\n"] +[19.032977085113593, "o", "$"] +[19.062977085113594, "o", " "] +[19.092977085113596, "o", "s"] +[19.122977085113597, "o", "g"] +[19.152977085113598, "o", "r"] +[19.1829770851136, "o", " "] +[19.2129770851136, "o", "t"] +[19.2429770851136, "o", "a"] +[19.272977085113602, "o", "g"] +[19.302977085113604, "o", " "] +[19.332977085113605, "o", "d"] +[19.362977085113606, "o", "e"] +[19.392977085113607, "o", "m"] +[19.422977085113608, "o", "o"] +[19.45297708511361, "o", "/"] +[19.48297708511361, "o", "w"] +[19.51297708511361, "o", "e"] +[19.542977085113613, "o", "a"] +[19.572977085113614, "o", "t"] +[19.602977085113615, "o", "h"] +[19.632977085113616, "o", "e"] +[19.662977085113617, "o", "r"] +[19.69297708511362, "o", " "] +[19.72297708511362, "o", "r"] +[19.75297708511362, "o", "e"] +[19.78297708511362, "o", "v"] +[19.812977085113623, "o", "i"] +[19.842977085113624, "o", "s"] +[19.872977085113625, "o", "e"] +[19.902977085113626, "o", "d"] +[19.932977085113627, "o", "_"] +[19.96297708511363, "o", "d"] +[19.99297708511363, "o", "a"] +[20.02297708511363, "o", "t"] +[20.052977085113632, "o", "a"] +[20.082977085113633, "o", "\r\n"] +[20.112977085113634, "o", "\u001b[0m"] +[20.142977085113635, "o", "\r\n"] +[20.56101330757152, "o", "Committing demo/weather...\r\n"] +[20.59636911392223, "o", "Storing and indexing table rdu\r\n"] +[20.79279812812816, "o", "Committed demo/weather as 383bdfc80ba0.\r\n"] +[21.21180781364452, "o", "Tagged demo/weather:383bdfc80ba08f4cdf7b903e07558d91f85f1f8e919a793ca8839cbbdae34c61 with revised_data.\r\n"] +[21.24180781364452, "o", "\u001b[1m"] +[21.27180781364452, "o", "\u001b[36m"] +[21.301807813644523, "o", "\u001b[91m"] +[21.331807813644524, "o", "$"] +[21.361807813644525, "o", " "] +[21.391807813644526, "o", "\u001b[0m"] +[26.421807813644527, "o", "\u001b[H"] +[26.45180781364453, "o", "\u001b[J"] +[26.48180781364453, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the original version of the dataset and look at the API spec for it."] +[26.51180781364453, "o", "\r\n"] +[26.54180781364453, "o", "$ # For this, we need to restart PostgREST so that it picks up the new schema.\r\n"] +[26.571807813644533, "o", "$"] +[26.601807813644534, "o", " "] +[26.631807813644535, "o", "d"] +[26.661807813644536, "o", "o"] +[26.691807813644537, "o", "c"] +[26.72180781364454, "o", "k"] +[26.75180781364454, "o", "e"] +[26.78180781364454, "o", "r"] +[26.811807813644542, "o", "-"] +[26.841807813644543, "o", "c"] +[26.871807813644544, "o", "o"] +[26.901807813644545, "o", "m"] +[26.931807813644546, "o", "p"] +[26.961807813644548, "o", "o"] +[26.99180781364455, "o", "s"] +[27.02180781364455, "o", "e"] +[27.05180781364455, "o", " "] +[27.081807813644552, "o", "-"] +[27.111807813644553, "o", "-"] +[27.141807813644554, "o", "p"] +[27.171807813644556, "o", "r"] +[27.201807813644557, "o", "o"] +[27.231807813644558, "o", "j"] +[27.26180781364456, "o", "e"] +[27.29180781364456, "o", "c"] +[27.32180781364456, "o", "t"] +[27.351807813644562, "o", "-"] +[27.381807813644564, "o", "n"] +[27.411807813644565, "o", "a"] +[27.441807813644566, "o", "m"] +[27.471807813644567, "o", "e"] +[27.501807813644568, "o", " "] +[27.53180781364457, "o", "s"] +[27.56180781364457, "o", "p"] +[27.59180781364457, "o", "l"] +[27.621807813644573, "o", "i"] +[27.651807813644574, "o", "t"] +[27.681807813644575, "o", "g"] +[27.711807813644576, "o", "r"] +[27.741807813644577, "o", "a"] +[27.77180781364458, "o", "p"] +[27.80180781364458, "o", "h"] +[27.83180781364458, "o", "_"] +[27.86180781364458, "o", "e"] +[27.891807813644583, "o", "x"] +[27.921807813644584, "o", "a"] +[27.951807813644585, "o", "m"] +[27.981807813644586, "o", "p"] +[28.011807813644587, "o", "l"] +[28.04180781364459, "o", "e"] +[28.07180781364459, "o", " "] +[28.10180781364459, "o", "r"] +[28.131807813644592, "o", "e"] +[28.161807813644593, "o", "s"] +[28.191807813644594, "o", "t"] +[28.221807813644595, "o", "a"] +[28.251807813644596, "o", "r"] +[28.281807813644598, "o", "t"] +[28.3118078136446, "o", " "] +[28.3418078136446, "o", "p"] +[28.3718078136446, "o", "o"] +[28.401807813644602, "o", "s"] +[28.431807813644603, "o", "t"] +[28.461807813644604, "o", "g"] +[28.491807813644606, "o", "r"] +[28.521807813644607, "o", "e"] +[28.551807813644608, "o", "s"] +[28.58180781364461, "o", "t"] +[28.61180781364461, "o", "\r\n"] +[28.64180781364461, "o", "$"] +[28.671807813644612, "o", " "] +[28.701807813644614, "o", "s"] +[28.731807813644615, "o", "g"] +[28.761807813644616, "o", "r"] +[28.791807813644617, "o", " "] +[28.821807813644618, "o", "c"] +[28.85180781364462, "o", "h"] +[28.88180781364462, "o", "e"] +[28.91180781364462, "o", "c"] +[28.941807813644623, "o", "k"] +[28.971807813644624, "o", "o"] +[29.001807813644625, "o", "u"] +[29.031807813644626, "o", "t"] +[29.061807813644627, "o", " "] +[29.09180781364463, "o", "d"] +[29.12180781364463, "o", "e"] +[29.15180781364463, "o", "m"] +[29.18180781364463, "o", "o"] +[29.211807813644633, "o", "/"] +[29.241807813644634, "o", "w"] +[29.271807813644635, "o", "e"] +[29.301807813644636, "o", "a"] +[29.331807813644637, "o", "t"] +[29.36180781364464, "o", "h"] +[29.39180781364464, "o", "e"] +[29.42180781364464, "o", "r"] +[29.451807813644642, "o", ":"] +[29.481807813644643, "o", "i"] +[29.511807813644644, "o", "n"] +[29.541807813644645, "o", "i"] +[29.571807813644647, "o", "t"] +[29.601807813644648, "o", "i"] +[29.63180781364465, "o", "a"] +[29.66180781364465, "o", "l"] +[29.69180781364465, "o", "_"] +[29.721807813644652, "o", "d"] +[29.751807813644653, "o", "a"] +[29.781807813644654, "o", "t"] +[29.811807813644656, "o", "a"] +[29.841807813644657, "o", "\r\n"] +[29.871807813644658, "o", "$"] +[29.90180781364466, "o", " "] +[29.93180781364466, "o", "c"] +[29.96180781364466, "o", "u"] +[29.991807813644662, "o", "r"] +[30.021807813644664, "o", "l"] +[30.051807813644665, "o", " "] +[30.081807813644666, "o", "h"] +[30.111807813644667, "o", "t"] +[30.141807813644668, "o", "t"] +[30.17180781364467, "o", "p"] +[30.20180781364467, "o", ":"] +[30.23180781364467, "o", "/"] +[30.261807813644673, "o", "/"] +[30.291807813644674, "o", "l"] +[30.321807813644675, "o", "o"] +[30.351807813644676, "o", "c"] +[30.381807813644677, "o", "a"] +[30.41180781364468, "o", "l"] +[30.44180781364468, "o", "h"] +[30.47180781364468, "o", "o"] +[30.50180781364468, "o", "s"] +[30.531807813644683, "o", "t"] +[30.561807813644684, "o", ":"] +[30.591807813644685, "o", "8"] +[30.621807813644686, "o", "0"] +[30.651807813644687, "o", "8"] +[30.68180781364469, "o", "0"] +[30.71180781364469, "o", "/"] +[30.74180781364469, "o", " "] +[30.771807813644692, "o", "|"] +[30.801807813644693, "o", " "] +[30.831807813644694, "o", "c"] +[30.861807813644695, "o", "u"] +[30.891807813644697, "o", "t"] +[30.921807813644698, "o", " "] +[30.9518078136447, "o", "-"] +[30.9818078136447, "o", "c"] +[31.0118078136447, "o", " "] +[31.041807813644702, "o", "-"] +[31.071807813644703, "o", "7"] +[31.101807813644704, "o", "9"] +[31.131807813644706, "o", "3"] +[31.161807813644707, "o", "\r\n"] +[31.191807813644708, "o", "\u001b[0m"] +[31.22180781364471, "o", "\r\n"] +[31.86382827758819, "o", "Restarting splitgraph_example_postgrest_1 ... \r\r\n"] +[32.42532978057891, "o", "\u001b[1A\u001b[2K\rRestarting splitgraph_example_postgrest_1 ... \u001b[32mdone\u001b[0m\r\u001b[1B"] +[32.983764028549494, "o", "Checked out demo/weather:1f08d546e6db.\r\n"] +[32.99298152923614, "o", " "] +[32.99304542541534, "o", " "] +[32.99309358596832, "o", "%"] +[32.99312291145355, "o", " "] +[32.993152713775935, "o", "T"] +[32.99318108558685, "o", "o"] +[32.99320921897918, "o", "t"] +[32.993237590790095, "o", "a"] +[32.993301248550715, "o", "l"] +[32.99330983161956, "o", " % Received % Xfe"] +[32.9933150768283, "o", "rd "] +[32.99331936836273, "o", "Av"] +[32.99332342147857, "o", "er"] +[32.99332723617584, "o", "ag"] +[32.9933310508731, "o", "e"] +[32.993335342407526, "o", " Sp"] +[32.99333939552337, "o", "ee"] +[32.993343448639216, "o", "d "] +[32.99334726333648, "o", " "] +[32.993351793289484, "o", "T"] +[32.99335560798675, "o", "im"] +[32.993359422684016, "o", "e "] +[32.99336347579986, "o", " "] +[32.993367767334284, "o", " T"] +[32.99337158203155, "o", "im"] +[32.993375158310236, "o", "e "] +[32.99337992668182, "o", " "] +[32.99338445663482, "o", " "] +[32.9933892250064, "o", " T"] +[32.99339280128509, "o", "im"] +[32.993396854400935, "o", "e "] +[32.9934006690982, "o", " C"] +[32.993404483795466, "o", "ur"] +[32.99340901374847, "o", "r"] +[32.993412828445734, "o", "en"] +[32.99341974258453, "o", "t\r\n"] +[32.993423557281794, "o", " "] +[32.993428325653376, "o", " "] +[32.99343214035064, "o", " "] +[32.993436431885065, "o", " "] +[32.99344263076812, "o", " Dload"] +[32.99344668388397, "o", " "] +[32.99345026016265, "o", "Up"] +[32.99345383644134, "o", "lo"] +[32.993458127975764, "o", "ad"] +[32.99346218109161, "o", " "] +[32.99346623420745, "o", " "] +[32.99347004890472, "o", "To"] +[32.99347410202056, "o", "tal "] +[32.993478870392146, "o", " "] +[32.99348244667083, "o", " S"] +[32.99348649978668, "o", "pe"] +[32.99349031448394, "o", "nt"] +[32.99349579811126, "o", " "] +[32.99349961280853, "o", " "] +[32.99350342750579, "o", "Le"] +[32.99350771904022, "o", "f"] +[32.9935112953189, "o", "t "] +[32.99351558685333, "o", "Sp"] +[32.99352011680633, "o", "e"] +[32.993524408340754, "o", "ed"] +[32.99353013038665, "o", "\r\n"] +[32.9935341835025, "o", "\r "] +[32.993537759781184, "o", " 0"] +[32.99354157447845, "o", " "] +[32.993545627594294, "o", " "] +[32.99354944229156, "o", " "] +[32.993553256988825, "o", "0 "] +[32.99355731010467, "o", " "] +[32.993561124801936, "o", " "] +[32.99356517791778, "o", "0 "] +[32.99357256889373, "o", " "] +[32.993576383591, "o", " 0"] +[32.993580198288264, "o", " "] +[32.99358401298553, "o", " "] +[32.993588066101374, "o", " 0"] +[32.9935923576358, "o", " "] +[32.993595933914484, "o", " "] +[32.99360213279754, "o", " 0"] +[32.99360594749481, "o", " "] +[32.99361000061065, "o", " "] +[32.99363718032867, "o", " "] +[32.99403295516998, "o", " "] +[32.994152879715266, "o", "0 "] +[32.99428758621246, "o", " 0 --:--:-- --:--:-- --:--:-- 0"] +[33.01794514656097, "o", "\r"] +[33.01799187660247, "o", "100 12"] +[33.01804504394561, "o", "000 0 12000 0 "] +[33.018060302734675, "o", " "] +[33.01807246208221, "o", " "] +[33.018084383011164, "o", " "] +[33.01809630394012, "o", "0"] +[33.018110847473444, "o", " "] +[33.0181227684024, "o", " "] +[33.01813516616851, "o", " "] +[33.01814732551605, "o", "4"] +[33.018159246445, "o", "6"] +[33.01817092895538, "o", "8"] +[33.01818284988433, "o", "k"] +[33.01819477081329, "o", " "] +[33.01820669174224, "o", " "] +[33.01821837425262, "o", " "] +[33.018230295181574, "o", " "] +[33.01824221611053, "o", " "] +[33.018254137039484, "o", " "] +[33.01826939582855, "o", "0"] +[33.01828727722198, "o", " "] +[33.018301582336726, "o", "-"] +[33.018320417404475, "o", "-"] +[33.01833472251922, "o", ":"] +[33.01859245300323, "o", "--:-- --:--:-- --:--:-- 468k"] +[33.018620347976984, "o", "\r\n"] +[33.01947937011749, "o", "{\"swagger\":\"2.0\",\"info\":{\"version\":\"9.0.0\",\"title\":\"PostgREST API\",\"description\":\"This is a dynamic API generated by PostgREST\"},\"host\":\"localhost:8080\",\"basePath\":\"/\",\"schemes\":[\"http\"],\"consumes\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"produces\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"paths\":{\"/\":{\"get\":{\"tags\":[\"Introspection\"],\"summary\":\"OpenAPI description (this document)\",\"produces\":[\"application/openapi+json\",\"application/json\"],\"responses\":{\""] +[33.02041230201751, "o", "200\":{\"description\":\"OK\"}}}},\"/rdu\":{\"get\":{\"tags\":[\"rdu\"],\"parameters\":[{\"$ref\":\"#/parameters/rowFilter.rdu.date\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemin\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemax\"},{\"$ref\":\"#/parameters/rowFilter.rdu.precipitation\"},{\"$ref\"\r\n"] +[33.05041230201751, "o", "\u001b[1m"] +[33.080412302017514, "o", "\u001b[36m"] +[33.110412302017515, "o", "\u001b[91m"] +[33.140412302017516, "o", "$"] +[33.17041230201752, "o", " "] +[33.20041230201752, "o", "\u001b[0m"] +[38.23041230201752, "o", "\u001b[H"] +[38.26041230201752, "o", "\u001b[J"] +[38.29041230201752, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get all rows in the table"] +[38.32041230201752, "o", "\r\n"] +[38.350412302017524, "o", "$"] +[38.380412302017525, "o", " "] +[38.41041230201753, "o", "c"] +[38.44041230201753, "o", "u"] +[38.47041230201753, "o", "r"] +[38.50041230201753, "o", "l"] +[38.53041230201753, "o", " "] +[38.56041230201753, "o", "h"] +[38.59041230201753, "o", "t"] +[38.620412302017535, "o", "t"] +[38.650412302017536, "o", "p"] +[38.68041230201754, "o", ":"] +[38.71041230201754, "o", "/"] +[38.74041230201754, "o", "/"] +[38.77041230201754, "o", "l"] +[38.80041230201754, "o", "o"] +[38.83041230201754, "o", "c"] +[38.860412302017544, "o", "a"] +[38.890412302017545, "o", "l"] +[38.920412302017546, "o", "h"] +[38.95041230201755, "o", "o"] +[38.98041230201755, "o", "s"] +[39.01041230201755, "o", "t"] +[39.04041230201755, "o", ":"] +[39.07041230201755, "o", "8"] +[39.10041230201755, "o", "0"] +[39.130412302017554, "o", "8"] +[39.160412302017555, "o", "0"] +[39.190412302017556, "o", "/"] +[39.22041230201756, "o", "r"] +[39.25041230201756, "o", "d"] +[39.28041230201756, "o", "u"] +[39.31041230201756, "o", " "] +[39.34041230201756, "o", "|"] +[39.37041230201756, "o", " "] +[39.400412302017564, "o", "w"] +[39.430412302017565, "o", "c"] +[39.460412302017566, "o", " "] +[39.49041230201757, "o", "-"] +[39.52041230201757, "o", "l"] +[39.55041230201757, "o", "\r\n"] +[39.58041230201757, "o", "\u001b[0m"] +[39.61041230201757, "o", "\r\n"] +[39.61937135696447, "o", " "] +[39.61940163612402, "o", " "] +[39.619423332214716, "o", "%"] +[39.61944312095678, "o", " "] +[39.61946124076879, "o", "T"] +[39.619481744766595, "o", "o"] +[39.61949938774145, "o", "t"] +[39.61951679229772, "o", "a"] +[39.61953443527258, "o", "l"] +[39.61955183982885, "o", " "] +[39.619569244385126, "o", " "] +[39.61958712577856, "o", " "] +[39.61960453033483, "o", " "] +[39.61962193489111, "o", "%"] +[39.61963933944738, "o", " "] +[39.619656744003656, "o", "R"] +[39.61967462539709, "o", "e"] +[39.61969250679052, "o", "c"] +[39.61971229553259, "o", "e"] +[39.61972970008886, "o", "i"] +[39.619757595062616, "o", "v"] +[39.619778337479, "o", "e"] +[39.61979598045385, "o", "d"] +[39.619813861847284, "o", " "] +[39.61983150482214, "o", "%"] +[39.61984938621557, "o", " "] +[39.619866790771844, "o", "X"] +[39.61988562583959, "o", "f"] +[39.61990303039587, "o", "e"] +[39.61992043495214, "o", "r"] +[39.619938077926996, "o", "d"] +[39.61996072769201, "o", " "] +[39.61997765541113, "o", " "] +[39.6199950599674, "o", "A"] +[39.6200110340122, "o", "v"] +[39.62002891540563, "o", "e"] +[39.6200475120548, "o", "r"] +[39.62006730079687, "o", "a"] +[39.620124044418695, "o", "ge"] +[39.620132389068964, "o", " Speed Time Ti"] +[39.620137395859125, "o", "me "] +[39.62014144897497, "o", " "] +[39.620145502090814, "o", " "] +[39.62014955520666, "o", "Ti"] +[39.62015384674108, "o", "me"] +[39.62015789985693, "o", " "] +[39.62016171455419, "o", "Cu"] +[39.62016576767004, "o", "rre"] +[39.6201695823673, "o", "nt"] +[39.62017554283178, "o", "\r\n"] +[39.620182218551996, "o", " "] +[39.62018651008642, "o", " "] +[39.620190086365106, "o", " "] +[39.62019413948095, "o", " "] +[39.62019795417822, "o", " "] +[39.62020200729406, "o", " "] +[39.620206060409906, "o", " "] +[39.62021035194433, "o", " "] +[39.62021655082739, "o", " "] +[39.62022084236181, "o", " "] +[39.620225133896234, "o", " "] +[39.62022871017492, "o", " "] +[39.62023228645361, "o", " "] +[39.62023633956945, "o", " "] +[39.6202403926853, "o", " "] +[39.620245876312616, "o", " "] +[39.62024969100988, "o", " D"] +[39.620253744125726, "o", "lo"] +[39.62025779724157, "o", "ad"] +[39.62026137352026, "o", " "] +[39.62026518821752, "o", "Up"] +[39.62026900291479, "o", "l"] +[39.620272817612054, "o", "oa"] +[39.62027710914648, "o", "d "] +[39.62028283119238, "o", " "] +[39.62028664588964, "o", "To"] +[39.620290937424066, "o", "tal "] +[39.62029499053991, "o", " S"] +[39.62029880523718, "o", "pe"] +[39.62030261993444, "o", "nt"] +[39.62030786514318, "o", " "] +[39.62031191825903, "o", " "] +[39.62031597137487, "o", "Le"] +[39.620320739746454, "o", "ft"] +[39.62032503128088, "o", " "] +[39.620328607559564, "o", "Sp"] +[39.62033289909399, "o", "e"] +[39.620336713791254, "o", "ed"] +[39.62034243583715, "o", "\r\n"] +[39.620346488953, "o", "\r "] +[39.62035054206884, "o", " 0"] +[39.62035435676611, "o", " "] +[39.62035817146337, "o", " "] +[39.62036222457922, "o", " 0"] +[39.62036627769506, "o", " "] +[39.62037009239233, "o", " "] +[39.62037414550817, "o", " 0"] +[39.620378675461176, "o", " "] +[39.62038558959997, "o", " "] +[39.620389642715814, "o", " 0 "] +[39.62039369583166, "o", " "] +[39.620397748947504, "o", " 0"] +[39.62040180206335, "o", " "] +[39.62040585517919, "o", " "] +[39.62041229248083, "o", " 0"] +[39.620416107178094, "o", " "] +[39.62041992187536, "o", " "] +[39.620423974991205, "o", " "] +[39.62042778968847, "o", "0 "] +[39.620431604385736, "o", " "] +[39.62043565750158, "o", " "] +[39.620439472198846, "o", " "] +[39.62044376373327, "o", "0 "] +[39.62044948577917, "o", "--"] +[39.620453300476434, "o", ":-"] +[39.62045759201086, "o", "-:"] +[39.6204616451267, "o", "--"] +[39.62046545982397, "o", " -"] +[39.62046998977697, "o", "-:"] +[39.62047356605566, "o", "-"] +[39.62047785759008, "o", "-:"] +[39.6204833412174, "o", "--"] +[39.62048715591467, "o", " -"] +[39.62049168586767, "o", "-:"] +[39.620495738983514, "o", "--"] +[39.62049955368078, "o", ":-"] +[39.62050408363378, "o", "-"] +[39.62050789833105, "o", " "] +[39.62051195144689, "o", " "] +[39.62051576614416, "o", " 0"] +[39.703930797577264, "o", "\r100 22"] +[39.70442742347753, "o", "92k 0 2292k 0 0 26.3M 0 --:--:-- --:--:-- --:--:-- 26.3M\r\n"] +[39.70514172554052, "o", "4632\r\n"] +[39.73514172554052, "o", "\u001b[1m"] +[39.76514172554052, "o", "\u001b[36m"] +[39.795141725540525, "o", "\u001b[91m"] +[39.825141725540526, "o", "$"] +[39.85514172554053, "o", " "] +[39.88514172554053, "o", "\u001b[0m"] +[44.91514172554053, "o", "\u001b[H"] +[44.94514172554053, "o", "\u001b[J"] +[44.97514172554053, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a query selecting one row"] +[45.00514172554053, "o", "\r\n"] +[45.035141725540534, "o", "$"] +[45.065141725540535, "o", " "] +[45.095141725540536, "o", "c"] +[45.12514172554054, "o", "u"] +[45.15514172554054, "o", "r"] +[45.18514172554054, "o", "l"] +[45.21514172554054, "o", " "] +[45.24514172554054, "o", "\""] +[45.27514172554054, "o", "h"] +[45.305141725540544, "o", "t"] +[45.335141725540545, "o", "t"] +[45.365141725540546, "o", "p"] +[45.39514172554055, "o", ":"] +[45.42514172554055, "o", "/"] +[45.45514172554055, "o", "/"] +[45.48514172554055, "o", "l"] +[45.51514172554055, "o", "o"] +[45.54514172554055, "o", "c"] +[45.575141725540554, "o", "a"] +[45.605141725540555, "o", "l"] +[45.63514172554056, "o", "h"] +[45.66514172554056, "o", "o"] +[45.69514172554056, "o", "s"] +[45.72514172554056, "o", "t"] +[45.75514172554056, "o", ":"] +[45.78514172554056, "o", "8"] +[45.81514172554056, "o", "0"] +[45.845141725540564, "o", "8"] +[45.875141725540566, "o", "0"] +[45.90514172554057, "o", "/"] +[45.93514172554057, "o", "r"] +[45.96514172554057, "o", "d"] +[45.99514172554057, "o", "u"] +[46.02514172554057, "o", "?"] +[46.05514172554057, "o", "d"] +[46.08514172554057, "o", "a"] +[46.115141725540575, "o", "t"] +[46.145141725540576, "o", "e"] +[46.17514172554058, "o", "="] +[46.20514172554058, "o", "e"] +[46.23514172554058, "o", "q"] +[46.26514172554058, "o", "."] +[46.29514172554058, "o", "2"] +[46.32514172554058, "o", "0"] +[46.355141725540584, "o", "1"] +[46.385141725540585, "o", "2"] +[46.415141725540586, "o", "-"] +[46.44514172554059, "o", "1"] +[46.47514172554059, "o", "2"] +[46.50514172554059, "o", "-"] +[46.53514172554059, "o", "2"] +[46.56514172554059, "o", "6"] +[46.59514172554059, "o", "&"] +[46.625141725540594, "o", "s"] +[46.655141725540595, "o", "e"] +[46.685141725540596, "o", "l"] +[46.7151417255406, "o", "e"] +[46.7451417255406, "o", "c"] +[46.7751417255406, "o", "t"] +[46.8051417255406, "o", "="] +[46.8351417255406, "o", "d"] +[46.8651417255406, "o", "a"] +[46.895141725540604, "o", "t"] +[46.925141725540605, "o", "e"] +[46.95514172554061, "o", ","] +[46.98514172554061, "o", "t"] +[47.01514172554061, "o", "e"] +[47.04514172554061, "o", "m"] +[47.07514172554061, "o", "p"] +[47.10514172554061, "o", "e"] +[47.13514172554061, "o", "r"] +[47.165141725540614, "o", "a"] +[47.195141725540616, "o", "t"] +[47.22514172554062, "o", "u"] +[47.25514172554062, "o", "r"] +[47.28514172554062, "o", "e"] +[47.31514172554062, "o", "m"] +[47.34514172554062, "o", "i"] +[47.37514172554062, "o", "n"] +[47.405141725540624, "o", ","] +[47.435141725540625, "o", "t"] +[47.465141725540626, "o", "e"] +[47.49514172554063, "o", "m"] +[47.52514172554063, "o", "p"] +[47.55514172554063, "o", "e"] +[47.58514172554063, "o", "r"] +[47.61514172554063, "o", "a"] +[47.64514172554063, "o", "t"] +[47.675141725540634, "o", "u"] +[47.705141725540635, "o", "r"] +[47.735141725540636, "o", "e"] +[47.76514172554064, "o", "m"] +[47.79514172554064, "o", "a"] +[47.82514172554064, "o", "x"] +[47.85514172554064, "o", ","] +[47.88514172554064, "o", "p"] +[47.91514172554064, "o", "r"] +[47.945141725540644, "o", "e"] +[47.975141725540645, "o", "c"] +[48.005141725540646, "o", "i"] +[48.03514172554065, "o", "p"] +[48.06514172554065, "o", "i"] +[48.09514172554065, "o", "t"] +[48.12514172554065, "o", "a"] +[48.15514172554065, "o", "t"] +[48.18514172554065, "o", "i"] +[48.215141725540654, "o", "o"] +[48.245141725540655, "o", "n"] +[48.27514172554066, "o", "\""] +[48.30514172554066, "o", "\r\n"] +[48.33514172554066, "o", "\u001b[0m"] +[48.36514172554066, "o", "\r\n"] +[48.38186750412037, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.41}]"] +[48.41186750412037, "o", "\u001b[1m"] +[48.441867504120374, "o", "\u001b[36m"] +[48.471867504120375, "o", "\u001b[91m"] +[48.501867504120376, "o", "$"] +[48.53186750412038, "o", " "] +[48.56186750412038, "o", "\u001b[0m"] +[53.59186750412038, "o", "\u001b[H"] +[53.62186750412038, "o", "\u001b[J"] +[53.65186750412038, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run the query against the new version of the dataset."] +[53.68186750412038, "o", "\r\n"] +[53.711867504120384, "o", "$ # This time, use layered querying that queries fragments directly without checkout,\r\n"] +[53.741867504120385, "o", "$ # downloading them if they're not local. This is seamless to PostgREST or any other application.\r\n"] +[53.77186750412039, "o", "$"] +[53.80186750412039, "o", " "] +[53.83186750412039, "o", "s"] +[53.86186750412039, "o", "g"] +[53.89186750412039, "o", "r"] +[53.92186750412039, "o", " "] +[53.95186750412039, "o", "c"] +[53.981867504120395, "o", "h"] +[54.011867504120396, "o", "e"] +[54.0418675041204, "o", "c"] +[54.0718675041204, "o", "k"] +[54.1018675041204, "o", "o"] +[54.1318675041204, "o", "u"] +[54.1618675041204, "o", "t"] +[54.1918675041204, "o", " "] +[54.221867504120404, "o", "-"] +[54.251867504120405, "o", "-"] +[54.281867504120406, "o", "l"] +[54.31186750412041, "o", "a"] +[54.34186750412041, "o", "y"] +[54.37186750412041, "o", "e"] +[54.40186750412041, "o", "r"] +[54.43186750412041, "o", "e"] +[54.46186750412041, "o", "d"] +[54.491867504120414, "o", " "] +[54.521867504120415, "o", "d"] +[54.551867504120416, "o", "e"] +[54.58186750412042, "o", "m"] +[54.61186750412042, "o", "o"] +[54.64186750412042, "o", "/"] +[54.67186750412042, "o", "w"] +[54.70186750412042, "o", "e"] +[54.73186750412042, "o", "a"] +[54.761867504120424, "o", "t"] +[54.791867504120425, "o", "h"] +[54.821867504120426, "o", "e"] +[54.85186750412043, "o", "r"] +[54.88186750412043, "o", ":"] +[54.91186750412043, "o", "r"] +[54.94186750412043, "o", "e"] +[54.97186750412043, "o", "v"] +[55.00186750412043, "o", "i"] +[55.031867504120434, "o", "s"] +[55.061867504120436, "o", "e"] +[55.09186750412044, "o", "d"] +[55.12186750412044, "o", "_"] +[55.15186750412044, "o", "d"] +[55.18186750412044, "o", "a"] +[55.21186750412044, "o", "t"] +[55.24186750412044, "o", "a"] +[55.27186750412044, "o", "\r\n"] +[55.301867504120445, "o", "$"] +[55.331867504120446, "o", " "] +[55.36186750412045, "o", "c"] +[55.39186750412045, "o", "u"] +[55.42186750412045, "o", "r"] +[55.45186750412045, "o", "l"] +[55.48186750412045, "o", " "] +[55.51186750412045, "o", "\""] +[55.541867504120454, "o", "h"] +[55.571867504120455, "o", "t"] +[55.601867504120456, "o", "t"] +[55.63186750412046, "o", "p"] +[55.66186750412046, "o", ":"] +[55.69186750412046, "o", "/"] +[55.72186750412046, "o", "/"] +[55.75186750412046, "o", "l"] +[55.78186750412046, "o", "o"] +[55.811867504120464, "o", "c"] +[55.841867504120465, "o", "a"] +[55.871867504120466, "o", "l"] +[55.90186750412047, "o", "h"] +[55.93186750412047, "o", "o"] +[55.96186750412047, "o", "s"] +[55.99186750412047, "o", "t"] +[56.02186750412047, "o", ":"] +[56.05186750412047, "o", "8"] +[56.081867504120474, "o", "0"] +[56.111867504120475, "o", "8"] +[56.141867504120476, "o", "0"] +[56.17186750412048, "o", "/"] +[56.20186750412048, "o", "r"] +[56.23186750412048, "o", "d"] +[56.26186750412048, "o", "u"] +[56.29186750412048, "o", "?"] +[56.32186750412048, "o", "d"] +[56.351867504120484, "o", "a"] +[56.381867504120486, "o", "t"] +[56.41186750412049, "o", "e"] +[56.44186750412049, "o", "="] +[56.47186750412049, "o", "e"] +[56.50186750412049, "o", "q"] +[56.53186750412049, "o", "."] +[56.56186750412049, "o", "2"] +[56.59186750412049, "o", "0"] +[56.621867504120495, "o", "1"] +[56.651867504120496, "o", "2"] +[56.6818675041205, "o", "-"] +[56.7118675041205, "o", "1"] +[56.7418675041205, "o", "2"] +[56.7718675041205, "o", "-"] +[56.8018675041205, "o", "2"] +[56.8318675041205, "o", "6"] +[56.861867504120504, "o", "&"] +[56.891867504120505, "o", "s"] +[56.921867504120506, "o", "e"] +[56.95186750412051, "o", "l"] +[56.98186750412051, "o", "e"] +[57.01186750412051, "o", "c"] +[57.04186750412051, "o", "t"] +[57.07186750412051, "o", "="] +[57.10186750412051, "o", "d"] +[57.131867504120514, "o", "a"] +[57.161867504120515, "o", "t"] +[57.191867504120516, "o", "e"] +[57.22186750412052, "o", ","] +[57.25186750412052, "o", "t"] +[57.28186750412052, "o", "e"] +[57.31186750412052, "o", "m"] +[57.34186750412052, "o", "p"] +[57.37186750412052, "o", "e"] +[57.401867504120524, "o", "r"] +[57.431867504120525, "o", "a"] +[57.46186750412053, "o", "t"] +[57.49186750412053, "o", "u"] +[57.52186750412053, "o", "r"] +[57.55186750412053, "o", "e"] +[57.58186750412053, "o", "m"] +[57.61186750412053, "o", "i"] +[57.64186750412053, "o", "n"] +[57.671867504120534, "o", ","] +[57.701867504120536, "o", "t"] +[57.73186750412054, "o", "e"] +[57.76186750412054, "o", "m"] +[57.79186750412054, "o", "p"] +[57.82186750412054, "o", "e"] +[57.85186750412054, "o", "r"] +[57.88186750412054, "o", "a"] +[57.91186750412054, "o", "t"] +[57.941867504120545, "o", "u"] +[57.971867504120546, "o", "r"] +[58.00186750412055, "o", "e"] +[58.03186750412055, "o", "m"] +[58.06186750412055, "o", "a"] +[58.09186750412055, "o", "x"] +[58.12186750412055, "o", ","] +[58.15186750412055, "o", "p"] +[58.181867504120554, "o", "r"] +[58.211867504120555, "o", "e"] +[58.241867504120556, "o", "c"] +[58.27186750412056, "o", "i"] +[58.30186750412056, "o", "p"] +[58.33186750412056, "o", "i"] +[58.36186750412056, "o", "t"] +[58.39186750412056, "o", "a"] +[58.42186750412056, "o", "t"] +[58.451867504120564, "o", "i"] +[58.481867504120565, "o", "o"] +[58.511867504120566, "o", "n"] +[58.54186750412057, "o", "\""] +[58.57186750412057, "o", "\r\n"] +[58.60186750412057, "o", "\u001b[0m"] +[58.63186750412057, "o", "\r\n"] +[59.3622799873359, "o", "Checked out demo/weather:383bdfc80ba0.\r\n"] +[59.746280527115566, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.692}]"] +[59.77628052711557, "o", "\u001b[1m"] +[59.80628052711557, "o", "\u001b[36m"] +[59.83628052711557, "o", "\u001b[91m"] +[59.86628052711557, "o", "$"] +[59.89628052711557, "o", " "] +[59.92628052711557, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.3.0/push-to-other-engine.cast b/content/casts/versioned/archive/v0.3.0/push-to-other-engine.cast new file mode 100644 index 00000000..30668b39 --- /dev/null +++ b/content/casts/versioned/archive/v0.3.0/push-to-other-engine.cast @@ -0,0 +1,888 @@ +{"version": 2, "width": 100, "height": 28, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1639770140, "metadata": {"tss": [{"h": "The .sgconfig file is written from the point of view of the first engine.", "ts": 0.06}, {"h": "Initialize the two engines", "ts": 9.559999999999999}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 23.060000000000002}, {"h": "Push the dataset out to the other engine", "ts": 36.48798360824611}, {"h": "Check that the dataset exists on the remote engine", "ts": 44.843569583893185}, {"h": "Update the dataset on the local engine", "ts": 52.10538166046186}, {"h": "Inspect our changes", "ts": 63.88464627265995}, {"h": "Push the changes out to the remote engine", "ts": 71.62466033935618}, {"h": "Inspect the dataset on the remote engine", "ts": 78.9054601383217}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The .sgconfig file is written from the point of view of the first engine."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Here, the first engine is local and default and the second one is remote.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "c"] +[0.27, "o", "a"] +[0.30000000000000004, "o", "t"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "."] +[0.3900000000000001, "o", "s"] +[0.42000000000000015, "o", "g"] +[0.4500000000000002, "o", "c"] +[0.4800000000000002, "o", "o"] +[0.5100000000000002, "o", "n"] +[0.5400000000000003, "o", "f"] +[0.5700000000000003, "o", "i"] +[0.6000000000000003, "o", "g"] +[0.6300000000000003, "o", "\r\n"] +[0.6600000000000004, "o", "\u001b[0m"] +[0.6900000000000004, "o", "\r\n"] +[0.691543760299683, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[remote: engine_2]\r\nSG_ENGINE_ADMIN_USER=sgr\r\nSG_ENGINE_ADMIN_PWD=supersecure\r\nSG_ENGINE_POSTGRES_DB_NAME=splitgraph\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\nSG_ENGINE_DB_NAME=splitgraph"] +[0.721543760299683, "o", "\u001b[1m"] +[0.7515437602996831, "o", "\u001b[36m"] +[0.7815437602996831, "o", "\u001b[91m"] +[0.8115437602996831, "o", "$"] +[0.8415437602996831, "o", " "] +[0.8715437602996832, "o", "\u001b[0m"] +[9.53, "o", "\u001b[H"] +[9.559999999999999, "o", "\u001b[J"] +[9.589999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the two engines"] +[9.619999999999997, "o", "\r\n"] +[9.649999999999997, "o", "$"] +[9.679999999999996, "o", " "] +[9.709999999999996, "o", "s"] +[9.739999999999995, "o", "g"] +[9.769999999999994, "o", "r"] +[9.799999999999994, "o", " "] +[9.829999999999993, "o", "i"] +[9.859999999999992, "o", "n"] +[9.889999999999992, "o", "i"] +[9.919999999999991, "o", "t"] +[9.94999999999999, "o", "\r\n"] +[9.97999999999999, "o", "$"] +[10.00999999999999, "o", " "] +[10.039999999999988, "o", "S"] +[10.069999999999988, "o", "G"] +[10.099999999999987, "o", "_"] +[10.129999999999987, "o", "E"] +[10.159999999999986, "o", "N"] +[10.189999999999985, "o", "G"] +[10.219999999999985, "o", "I"] +[10.249999999999984, "o", "N"] +[10.279999999999983, "o", "E"] +[10.309999999999983, "o", "="] +[10.339999999999982, "o", "e"] +[10.369999999999981, "o", "n"] +[10.39999999999998, "o", "g"] +[10.42999999999998, "o", "i"] +[10.45999999999998, "o", "n"] +[10.489999999999979, "o", "e"] +[10.519999999999978, "o", "_"] +[10.549999999999978, "o", "2"] +[10.579999999999977, "o", " "] +[10.609999999999976, "o", "s"] +[10.639999999999976, "o", "g"] +[10.669999999999975, "o", "r"] +[10.699999999999974, "o", " "] +[10.729999999999974, "o", "i"] +[10.759999999999973, "o", "n"] +[10.789999999999973, "o", "i"] +[10.819999999999972, "o", "t"] +[10.849999999999971, "o", "\r\n"] +[10.87999999999997, "o", "\u001b[0m"] +[10.90999999999997, "o", "\r\n"] +[11.341160688400238, "o", "Initializing engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph)...\r\n"] +[11.345141801834076, "o", "Waiting for connection....\r\n"] +[12.345141801834076, "o", "Database splitgraph already exists, skipping\r\n"] +[12.345732126235932, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[12.365353736877411, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.396308336257905, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.398234043121308, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.415296230316132, "o", "Running splitgraph_meta--0.0.3--0.0.4.sql\r\n"] +[12.422282848358124, "o", "Installing Splitgraph API functions...\r\n"] +[12.462196025848359, "o", "Installing CStore management functions...\r\n"] +[12.465784463882416, "o", "Installing the audit trigger...\r\n"] +[12.482388648986786, "o", "Engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph) initialized.\r\n"] +[12.874892387390107, "o", "Initializing engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph)...\r\n"] +[12.886770877838105, "o", "Database splitgraph already exists, skipping\r\n"] +[12.886792097091645, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] +[12.894717607498139, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] +[12.924245748519867, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] +[12.92586127281186, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] +[12.941794786453217, "o", "Running splitgraph_meta--0.0.3--0.0.4.sql\r\n"] +[12.95142427444455, "o", "Installing Splitgraph API functions...\r\n"] +[12.990487966537446, "o", "Installing CStore management functions...\r\n"] +[12.994099054336518, "o", "Installing the audit trigger...\r\n"] +[13.00869360923764, "o", "Engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph) initialized.\r\n"] +[13.03869360923764, "o", "\u001b[1m"] +[13.06869360923764, "o", "\u001b[36m"] +[13.098693609237639, "o", "\u001b[91m"] +[13.128693609237638, "o", "$"] +[13.158693609237638, "o", " "] +[13.188693609237637, "o", "\u001b[0m"] +[23.03, "o", "\u001b[H"] +[23.060000000000002, "o", "\u001b[J"] +[23.090000000000003, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] +[23.120000000000005, "o", "\r\n"] +[23.150000000000006, "o", "$"] +[23.180000000000007, "o", " "] +[23.210000000000008, "o", "s"] +[23.24000000000001, "o", "g"] +[23.27000000000001, "o", "r"] +[23.30000000000001, "o", " "] +[23.330000000000013, "o", "i"] +[23.360000000000014, "o", "n"] +[23.390000000000015, "o", "i"] +[23.420000000000016, "o", "t"] +[23.450000000000017, "o", " "] +[23.480000000000018, "o", "d"] +[23.51000000000002, "o", "e"] +[23.54000000000002, "o", "m"] +[23.57000000000002, "o", "o"] +[23.600000000000023, "o", "/"] +[23.630000000000024, "o", "w"] +[23.660000000000025, "o", "e"] +[23.690000000000026, "o", "a"] +[23.720000000000027, "o", "t"] +[23.75000000000003, "o", "h"] +[23.78000000000003, "o", "e"] +[23.81000000000003, "o", "r"] +[23.840000000000032, "o", "\r\n"] +[23.870000000000033, "o", "$"] +[23.900000000000034, "o", " "] +[23.930000000000035, "o", "s"] +[23.960000000000036, "o", "g"] +[23.990000000000038, "o", "r"] +[24.02000000000004, "o", " "] +[24.05000000000004, "o", "c"] +[24.08000000000004, "o", "s"] +[24.110000000000042, "o", "v"] +[24.140000000000043, "o", " "] +[24.170000000000044, "o", "i"] +[24.200000000000045, "o", "m"] +[24.230000000000047, "o", "p"] +[24.260000000000048, "o", "o"] +[24.29000000000005, "o", "r"] +[24.32000000000005, "o", "t"] +[24.35000000000005, "o", " "] +[24.380000000000052, "o", "-"] +[24.410000000000053, "o", "f"] +[24.440000000000055, "o", " "] +[24.470000000000056, "o", "."] +[24.500000000000057, "o", "."] +[24.530000000000058, "o", "/"] +[24.56000000000006, "o", "i"] +[24.59000000000006, "o", "m"] +[24.62000000000006, "o", "p"] +[24.650000000000063, "o", "o"] +[24.680000000000064, "o", "r"] +[24.710000000000065, "o", "t"] +[24.740000000000066, "o", "-"] +[24.770000000000067, "o", "f"] +[24.800000000000068, "o", "r"] +[24.83000000000007, "o", "o"] +[24.86000000000007, "o", "m"] +[24.89000000000007, "o", "-"] +[24.920000000000073, "o", "c"] +[24.950000000000074, "o", "s"] +[24.980000000000075, "o", "v"] +[25.010000000000076, "o", "/"] +[25.040000000000077, "o", "r"] +[25.07000000000008, "o", "d"] +[25.10000000000008, "o", "u"] +[25.13000000000008, "o", "-"] +[25.160000000000082, "o", "w"] +[25.190000000000083, "o", "e"] +[25.220000000000084, "o", "a"] +[25.250000000000085, "o", "t"] +[25.280000000000086, "o", "h"] +[25.310000000000088, "o", "e"] +[25.34000000000009, "o", "r"] +[25.37000000000009, "o", "-"] +[25.40000000000009, "o", "h"] +[25.430000000000092, "o", "i"] +[25.460000000000093, "o", "s"] +[25.490000000000094, "o", "t"] +[25.520000000000095, "o", "o"] +[25.550000000000097, "o", "r"] +[25.580000000000098, "o", "y"] +[25.6100000000001, "o", "."] +[25.6400000000001, "o", "c"] +[25.6700000000001, "o", "s"] +[25.700000000000102, "o", "v"] +[25.730000000000103, "o", " "] +[25.760000000000105, "o", "\\"] +[25.790000000000106, "o", "\r\n "] +[25.820000000000107, "o", "-"] +[25.850000000000108, "o", "k"] +[25.88000000000011, "o", " "] +[25.91000000000011, "o", "d"] +[25.94000000000011, "o", "a"] +[25.970000000000113, "o", "t"] +[26.000000000000114, "o", "e"] +[26.030000000000115, "o", " "] +[26.060000000000116, "o", "\\"] +[26.090000000000117, "o", "\r\n "] +[26.12000000000012, "o", "-"] +[26.15000000000012, "o", "t"] +[26.18000000000012, "o", " "] +[26.21000000000012, "o", "d"] +[26.240000000000123, "o", "a"] +[26.270000000000124, "o", "t"] +[26.300000000000125, "o", "e"] +[26.330000000000126, "o", " "] +[26.360000000000127, "o", "t"] +[26.39000000000013, "o", "i"] +[26.42000000000013, "o", "m"] +[26.45000000000013, "o", "e"] +[26.480000000000132, "o", "s"] +[26.510000000000133, "o", "t"] +[26.540000000000134, "o", "a"] +[26.570000000000135, "o", "m"] +[26.600000000000136, "o", "p"] +[26.630000000000138, "o", " "] +[26.66000000000014, "o", "\\"] +[26.69000000000014, "o", "\r\n "] +[26.72000000000014, "o", "-"] +[26.750000000000142, "o", "-"] +[26.780000000000143, "o", "s"] +[26.810000000000144, "o", "e"] +[26.840000000000146, "o", "p"] +[26.870000000000147, "o", "a"] +[26.900000000000148, "o", "r"] +[26.93000000000015, "o", "a"] +[26.96000000000015, "o", "t"] +[26.99000000000015, "o", "o"] +[27.020000000000152, "o", "r"] +[27.050000000000153, "o", " "] +[27.080000000000155, "o", "\""] +[27.110000000000156, "o", ";"] +[27.140000000000157, "o", "\""] +[27.170000000000158, "o", " "] +[27.20000000000016, "o", "\\"] +[27.23000000000016, "o", "\r\n "] +[27.26000000000016, "o", "d"] +[27.290000000000163, "o", "e"] +[27.320000000000164, "o", "m"] +[27.350000000000165, "o", "o"] +[27.380000000000166, "o", "/"] +[27.410000000000167, "o", "w"] +[27.44000000000017, "o", "e"] +[27.47000000000017, "o", "a"] +[27.50000000000017, "o", "t"] +[27.53000000000017, "o", "h"] +[27.560000000000173, "o", "e"] +[27.590000000000174, "o", "r"] +[27.620000000000175, "o", " "] +[27.650000000000176, "o", "r"] +[27.680000000000177, "o", "d"] +[27.71000000000018, "o", "u"] +[27.74000000000018, "o", "\r\n"] +[27.77000000000018, "o", "$"] +[27.800000000000182, "o", " "] +[27.830000000000183, "o", "s"] +[27.860000000000184, "o", "g"] +[27.890000000000185, "o", "r"] +[27.920000000000186, "o", " "] +[27.950000000000188, "o", "c"] +[27.98000000000019, "o", "o"] +[28.01000000000019, "o", "m"] +[28.04000000000019, "o", "m"] +[28.070000000000192, "o", "i"] +[28.100000000000193, "o", "t"] +[28.130000000000194, "o", " "] +[28.160000000000196, "o", "d"] +[28.190000000000197, "o", "e"] +[28.220000000000198, "o", "m"] +[28.2500000000002, "o", "o"] +[28.2800000000002, "o", "/"] +[28.3100000000002, "o", "w"] +[28.340000000000202, "o", "e"] +[28.370000000000203, "o", "a"] +[28.400000000000205, "o", "t"] +[28.430000000000206, "o", "h"] +[28.460000000000207, "o", "e"] +[28.490000000000208, "o", "r"] +[28.52000000000021, "o", "\r\n"] +[28.55000000000021, "o", "$"] +[28.58000000000021, "o", " "] +[28.610000000000213, "o", "s"] +[28.640000000000214, "o", "g"] +[28.670000000000215, "o", "r"] +[28.700000000000216, "o", " "] +[28.730000000000217, "o", "t"] +[28.76000000000022, "o", "a"] +[28.79000000000022, "o", "g"] +[28.82000000000022, "o", " "] +[28.85000000000022, "o", "d"] +[28.880000000000223, "o", "e"] +[28.910000000000224, "o", "m"] +[28.940000000000225, "o", "o"] +[28.970000000000226, "o", "/"] +[29.000000000000227, "o", "w"] +[29.03000000000023, "o", "e"] +[29.06000000000023, "o", "a"] +[29.09000000000023, "o", "t"] +[29.120000000000232, "o", "h"] +[29.150000000000233, "o", "e"] +[29.180000000000234, "o", "r"] +[29.210000000000235, "o", " "] +[29.240000000000236, "o", "i"] +[29.270000000000238, "o", "n"] +[29.30000000000024, "o", "i"] +[29.33000000000024, "o", "t"] +[29.36000000000024, "o", "i"] +[29.390000000000242, "o", "a"] +[29.420000000000243, "o", "l"] +[29.450000000000244, "o", "_"] +[29.480000000000246, "o", "d"] +[29.510000000000247, "o", "a"] +[29.540000000000248, "o", "t"] +[29.57000000000025, "o", "a"] +[29.60000000000025, "o", "\r\n"] +[29.63000000000025, "o", "\u001b[0m"] +[29.660000000000252, "o", "\r\n"] +[30.109999094009652, "o", "Initialized empty repository demo/weather\r\n"] +[30.53906646728541, "o", "Committing demo/weather...\r\n"] +[30.562148485183968, "o", "Processing table rdu\r\n"] +[30.802996311187997, "o", "Committed demo/weather as 32d78a719e18.\r\n"] +[31.247983608246102, "o", "Tagged demo/weather:32d78a719e18331c0b4db581fb0ddd2762cc422267dd53b8aa100ace74d22c74 with initial_data.\r\n"] +[31.277983608246103, "o", "\u001b[1m"] +[31.307983608246104, "o", "\u001b[36m"] +[31.337983608246105, "o", "\u001b[91m"] +[31.367983608246107, "o", "$"] +[31.397983608246108, "o", " "] +[31.42798360824611, "o", "\u001b[0m"] +[36.45798360824611, "o", "\u001b[H"] +[36.48798360824611, "o", "\u001b[J"] +[36.51798360824611, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset out to the other engine"] +[36.54798360824611, "o", "\r\n"] +[36.577983608246114, "o", "$ # Since by default Splitgraph is configured to use S3 for uploading, we need\r\n"] +[36.607983608246116, "o", "$ # to override the upload handler and upload data to the actual database.\r\n"] +[36.63798360824612, "o", "$"] +[36.66798360824612, "o", " "] +[36.69798360824612, "o", "s"] +[36.72798360824612, "o", "g"] +[36.75798360824612, "o", "r"] +[36.78798360824612, "o", " "] +[36.817983608246124, "o", "p"] +[36.847983608246125, "o", "u"] +[36.877983608246126, "o", "s"] +[36.90798360824613, "o", "h"] +[36.93798360824613, "o", " "] +[36.96798360824613, "o", "d"] +[36.99798360824613, "o", "e"] +[37.02798360824613, "o", "m"] +[37.05798360824613, "o", "o"] +[37.087983608246134, "o", "/"] +[37.117983608246135, "o", "w"] +[37.147983608246136, "o", "e"] +[37.17798360824614, "o", "a"] +[37.20798360824614, "o", "t"] +[37.23798360824614, "o", "h"] +[37.26798360824614, "o", "e"] +[37.29798360824614, "o", "r"] +[37.32798360824614, "o", " "] +[37.357983608246144, "o", "-"] +[37.387983608246145, "o", "-"] +[37.417983608246146, "o", "r"] +[37.44798360824615, "o", "e"] +[37.47798360824615, "o", "m"] +[37.50798360824615, "o", "o"] +[37.53798360824615, "o", "t"] +[37.56798360824615, "o", "e"] +[37.59798360824615, "o", " "] +[37.627983608246154, "o", "e"] +[37.657983608246155, "o", "n"] +[37.68798360824616, "o", "g"] +[37.71798360824616, "o", "i"] +[37.74798360824616, "o", "n"] +[37.77798360824616, "o", "e"] +[37.80798360824616, "o", "_"] +[37.83798360824616, "o", "2"] +[37.86798360824616, "o", " "] +[37.897983608246165, "o", "d"] +[37.927983608246166, "o", "e"] +[37.95798360824617, "o", "m"] +[37.98798360824617, "o", "o"] +[38.01798360824617, "o", "/"] +[38.04798360824617, "o", "w"] +[38.07798360824617, "o", "e"] +[38.10798360824617, "o", "a"] +[38.137983608246174, "o", "t"] +[38.167983608246175, "o", "h"] +[38.197983608246176, "o", "e"] +[38.22798360824618, "o", "r"] +[38.25798360824618, "o", " "] +[38.28798360824618, "o", "-"] +[38.31798360824618, "o", "-"] +[38.34798360824618, "o", "u"] +[38.37798360824618, "o", "p"] +[38.407983608246184, "o", "l"] +[38.437983608246185, "o", "o"] +[38.467983608246186, "o", "a"] +[38.49798360824619, "o", "d"] +[38.52798360824619, "o", "-"] +[38.55798360824619, "o", "h"] +[38.58798360824619, "o", "a"] +[38.61798360824619, "o", "n"] +[38.64798360824619, "o", "d"] +[38.677983608246194, "o", "l"] +[38.707983608246195, "o", "e"] +[38.737983608246196, "o", "r"] +[38.7679836082462, "o", " "] +[38.7979836082462, "o", "D"] +[38.8279836082462, "o", "B"] +[38.8579836082462, "o", "\r\n"] +[38.8879836082462, "o", "\u001b[0m"] +[38.9179836082462, "o", "\r\n"] +[39.319483118057605, "o", "Pushing demo/weather to demo/weather on remote engine_2\r\n"] +[39.319504098892565, "o", "Gathering remote metadata...\r\n"] +[39.38954980850255, "o", "Uploading 1 object, total size 113.04 KiB\r\n"] +[39.394582586288806, "o", "\r 0%| | 0/1 [00:00 43b80268ce7e\r\n"] +[25.222664318084842, "o", "\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[25.229226312637454, "o", "Executing SQL...\r\n"] +[25.460465154647952, "o", "Committing demo/summary...\r\n"] +[25.484931907653934, "o", "Processing table monthly_summary\r\n"] +[25.598450860977298, "o", " ---> dd4bf60c05b6\r\n"] +[25.60200353622449, "o", "Successfully built demo/summary:dd4bf60c05b6.\r\n"] +[26.035999736786014, "o", "Tagged demo/summary:dd4bf60c05b60539e3f9fac2da09d3d28ac28145646762f5acfaef932afdfaae with based_on_initial.\r\n"] +[26.065999736786015, "o", "\u001b[1m"] +[26.095999736786016, "o", "\u001b[36m"] +[26.125999736786017, "o", "\u001b[91m"] +[26.15599973678602, "o", "$"] +[26.18599973678602, "o", " "] +[26.21599973678602, "o", "\u001b[0m"] +[31.245999736786022, "o", "\u001b[H"] +[31.275999736786023, "o", "\u001b[J"] +[31.305999736786024, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Much like with Docker, the build result is cached, so running build again checks out the existing image."] +[31.335999736786025, "o", "\r\n"] +[31.365999736786026, "o", "$"] +[31.395999736786028, "o", " "] +[31.42599973678603, "o", "s"] +[31.45599973678603, "o", "g"] +[31.48599973678603, "o", "r"] +[31.515999736786032, "o", " "] +[31.545999736786033, "o", "b"] +[31.575999736786034, "o", "u"] +[31.605999736786035, "o", "i"] +[31.635999736786037, "o", "l"] +[31.665999736786038, "o", "d"] +[31.69599973678604, "o", " "] +[31.72599973678604, "o", "r"] +[31.75599973678604, "o", "d"] +[31.785999736786042, "o", "u"] +[31.815999736786043, "o", "-"] +[31.845999736786045, "o", "w"] +[31.875999736786046, "o", "e"] +[31.905999736786047, "o", "a"] +[31.935999736786048, "o", "t"] +[31.96599973678605, "o", "h"] +[31.99599973678605, "o", "e"] +[32.02599973678605, "o", "r"] +[32.05599973678605, "o", "-"] +[32.08599973678605, "o", "s"] +[32.11599973678605, "o", "u"] +[32.14599973678605, "o", "m"] +[32.17599973678605, "o", "m"] +[32.205999736786055, "o", "a"] +[32.235999736786056, "o", "r"] +[32.26599973678606, "o", "y"] +[32.29599973678606, "o", "."] +[32.32599973678606, "o", "s"] +[32.35599973678606, "o", "p"] +[32.38599973678606, "o", "l"] +[32.41599973678606, "o", "i"] +[32.445999736786064, "o", "t"] +[32.475999736786065, "o", "f"] +[32.505999736786066, "o", "i"] +[32.53599973678607, "o", "l"] +[32.56599973678607, "o", "e"] +[32.59599973678607, "o", " "] +[32.62599973678607, "o", "-"] +[32.65599973678607, "o", "o"] +[32.68599973678607, "o", " "] +[32.715999736786074, "o", "d"] +[32.745999736786075, "o", "e"] +[32.775999736786076, "o", "m"] +[32.80599973678608, "o", "o"] +[32.83599973678608, "o", "/"] +[32.86599973678608, "o", "s"] +[32.89599973678608, "o", "u"] +[32.92599973678608, "o", "m"] +[32.95599973678608, "o", "m"] +[32.985999736786084, "o", "a"] +[33.015999736786085, "o", "r"] +[33.04599973678609, "o", "y"] +[33.07599973678609, "o", "\r\n"] +[33.10599973678609, "o", "\u001b[0m"] +[33.13599973678609, "o", "\r\n"] +[33.57064729690572, "o", "Executing Splitfile rdu-weather-summary.splitfile with arguments {}\r\n"] +[33.57116704940816, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather IMPORT rdu AS source_data\u001b[0m\r\n"] +[33.673784313202106, "o", "Resolving repository demo/weather\r\n"] +[33.82400136947652, "o", " ---> Using cache\r\n"] +[33.82408052444478, "o", " ---> 43b80268ce7e\r\n\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[34.070637521743976, "o", " ---> Using cache\r\n"] +[34.0710764503481, "o", " ---> dd4bf60c05b6\r\n"] +[34.07404857635518, "o", "Successfully built demo/summary:dd4bf60c05b6.\r\n"] +[34.10404857635518, "o", "\u001b[1m"] +[34.134048576355184, "o", "\u001b[36m"] +[34.164048576355185, "o", "\u001b[91m"] +[34.194048576355186, "o", "$"] +[34.22404857635519, "o", " "] +[34.25404857635519, "o", "\u001b[0m"] +[39.28404857635519, "o", "\u001b[H"] +[39.31404857635519, "o", "\u001b[J"] +[39.34404857635519, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the new dataset"] +[39.37404857635519, "o", "\r\n"] +[39.404048576355194, "o", "$"] +[39.434048576355195, "o", " "] +[39.4640485763552, "o", "s"] +[39.4940485763552, "o", "g"] +[39.5240485763552, "o", "r"] +[39.5540485763552, "o", " "] +[39.5840485763552, "o", "s"] +[39.6140485763552, "o", "h"] +[39.6440485763552, "o", "o"] +[39.674048576355204, "o", "w"] +[39.704048576355206, "o", " "] +[39.73404857635521, "o", "d"] +[39.76404857635521, "o", "e"] +[39.79404857635521, "o", "m"] +[39.82404857635521, "o", "o"] +[39.85404857635521, "o", "/"] +[39.88404857635521, "o", "s"] +[39.91404857635521, "o", "u"] +[39.944048576355215, "o", "m"] +[39.974048576355216, "o", "m"] +[40.00404857635522, "o", "a"] +[40.03404857635522, "o", "r"] +[40.06404857635522, "o", "y"] +[40.09404857635522, "o", ":"] +[40.12404857635522, "o", "b"] +[40.15404857635522, "o", "a"] +[40.184048576355224, "o", "s"] +[40.214048576355225, "o", "e"] +[40.244048576355226, "o", "d"] +[40.27404857635523, "o", "_"] +[40.30404857635523, "o", "o"] +[40.33404857635523, "o", "n"] +[40.36404857635523, "o", "_"] +[40.39404857635523, "o", "i"] +[40.42404857635523, "o", "n"] +[40.454048576355234, "o", "i"] +[40.484048576355235, "o", "t"] +[40.514048576355236, "o", "i"] +[40.54404857635524, "o", "a"] +[40.57404857635524, "o", "l"] +[40.60404857635524, "o", "\r\n"] +[40.63404857635524, "o", "$"] +[40.66404857635524, "o", " "] +[40.69404857635524, "o", "s"] +[40.724048576355244, "o", "g"] +[40.754048576355245, "o", "r"] +[40.78404857635525, "o", " "] +[40.81404857635525, "o", "t"] +[40.84404857635525, "o", "a"] +[40.87404857635525, "o", "b"] +[40.90404857635525, "o", "l"] +[40.93404857635525, "o", "e"] +[40.96404857635525, "o", " "] +[40.994048576355254, "o", "d"] +[41.024048576355256, "o", "e"] +[41.05404857635526, "o", "m"] +[41.08404857635526, "o", "o"] +[41.11404857635526, "o", "/"] +[41.14404857635526, "o", "s"] +[41.17404857635526, "o", "u"] +[41.20404857635526, "o", "m"] +[41.23404857635526, "o", "m"] +[41.264048576355265, "o", "a"] +[41.294048576355266, "o", "r"] +[41.32404857635527, "o", "y"] +[41.35404857635527, "o", ":"] +[41.38404857635527, "o", "b"] +[41.41404857635527, "o", "a"] +[41.44404857635527, "o", "s"] +[41.47404857635527, "o", "e"] +[41.504048576355274, "o", "d"] +[41.534048576355275, "o", "_"] +[41.564048576355276, "o", "o"] +[41.59404857635528, "o", "n"] +[41.62404857635528, "o", "_"] +[41.65404857635528, "o", "i"] +[41.68404857635528, "o", "n"] +[41.71404857635528, "o", "i"] +[41.74404857635528, "o", "t"] +[41.774048576355284, "o", "i"] +[41.804048576355285, "o", "a"] +[41.834048576355286, "o", "l"] +[41.86404857635529, "o", " "] +[41.89404857635529, "o", "m"] +[41.92404857635529, "o", "o"] +[41.95404857635529, "o", "n"] +[41.98404857635529, "o", "t"] +[42.01404857635529, "o", "h"] +[42.044048576355294, "o", "l"] +[42.074048576355295, "o", "y"] +[42.1040485763553, "o", "_"] +[42.1340485763553, "o", "s"] +[42.1640485763553, "o", "u"] +[42.1940485763553, "o", "m"] +[42.2240485763553, "o", "m"] +[42.2540485763553, "o", "a"] +[42.2840485763553, "o", "r"] +[42.314048576355304, "o", "y"] +[42.344048576355306, "o", "\r\n"] +[42.37404857635531, "o", "$"] +[42.40404857635531, "o", " "] +[42.43404857635531, "o", "s"] +[42.46404857635531, "o", "g"] +[42.49404857635531, "o", "r"] +[42.52404857635531, "o", " "] +[42.554048576355314, "o", "s"] +[42.584048576355315, "o", "q"] +[42.614048576355316, "o", "l"] +[42.64404857635532, "o", " "] +[42.67404857635532, "o", "-"] +[42.70404857635532, "o", "s"] +[42.73404857635532, "o", " "] +[42.76404857635532, "o", "d"] +[42.79404857635532, "o", "e"] +[42.824048576355324, "o", "m"] +[42.854048576355325, "o", "o"] +[42.884048576355326, "o", "/"] +[42.91404857635533, "o", "s"] +[42.94404857635533, "o", "u"] +[42.97404857635533, "o", "m"] +[43.00404857635533, "o", "m"] +[43.03404857635533, "o", "a"] +[43.06404857635533, "o", "r"] +[43.094048576355334, "o", "y"] +[43.124048576355335, "o", " "] +[43.154048576355336, "o", "\""] +[43.18404857635534, "o", "S"] +[43.21404857635534, "o", "E"] +[43.24404857635534, "o", "L"] +[43.27404857635534, "o", "E"] +[43.30404857635534, "o", "C"] +[43.33404857635534, "o", "T"] +[43.364048576355344, "o", " "] +[43.394048576355345, "o", "*"] +[43.42404857635535, "o", " "] +[43.45404857635535, "o", "F"] +[43.48404857635535, "o", "R"] +[43.51404857635535, "o", "O"] +[43.54404857635535, "o", "M"] +[43.57404857635535, "o", " "] +[43.60404857635535, "o", "m"] +[43.634048576355354, "o", "o"] +[43.664048576355356, "o", "n"] +[43.69404857635536, "o", "t"] +[43.72404857635536, "o", "h"] +[43.75404857635536, "o", "l"] +[43.78404857635536, "o", "y"] +[43.81404857635536, "o", "_"] +[43.84404857635536, "o", "s"] +[43.874048576355364, "o", "u"] +[43.904048576355365, "o", "m"] +[43.934048576355366, "o", "m"] +[43.96404857635537, "o", "a"] +[43.99404857635537, "o", "r"] +[44.02404857635537, "o", "y"] +[44.05404857635537, "o", " "] +[44.08404857635537, "o", "O"] +[44.11404857635537, "o", "R"] +[44.144048576355374, "o", "D"] +[44.174048576355375, "o", "E"] +[44.204048576355376, "o", "R"] +[44.23404857635538, "o", " "] +[44.26404857635538, "o", "B"] +[44.29404857635538, "o", "Y"] +[44.32404857635538, "o", " "] +[44.35404857635538, "o", "m"] +[44.38404857635538, "o", "o"] +[44.414048576355384, "o", "n"] +[44.444048576355385, "o", "t"] +[44.474048576355386, "o", "h"] +[44.50404857635539, "o", " "] +[44.53404857635539, "o", "D"] +[44.56404857635539, "o", "E"] +[44.59404857635539, "o", "S"] +[44.62404857635539, "o", "C"] +[44.65404857635539, "o", " "] +[44.684048576355394, "o", "L"] +[44.714048576355395, "o", "I"] +[44.7440485763554, "o", "M"] +[44.7740485763554, "o", "I"] +[44.8040485763554, "o", "T"] +[44.8340485763554, "o", " "] +[44.8640485763554, "o", "5"] +[44.8940485763554, "o", "\""] +[44.9240485763554, "o", "\r\n"] +[44.954048576355405, "o", "\u001b[0m"] +[44.984048576355406, "o", "\r\n"] +[45.4101915073399, "o", "Image demo/summary:dd4bf60c05b60539e3f9fac2da09d3d28ac28145646762f5acfaef932afdfaae\r\n"] +[45.41021105766339, "o", "CREATE TABLE monthly_summary AS ( SELECT to_char(date, 'YYYYMM') AS month, AVG(precipitation) AS average_precipitation, AVG(snowfall) AS average_snowfall FROM source_data GROUP BY month ORDER BY month ASC)\r\nCreated at 2021-12-17T19:43:36.430576\r\n"] +[45.41187808036847, "o", "Size: 115.21 KiB\r\n"] +[45.411894292831846, "o", "Parent: 43b80268ce7e4bf95af7651b2fd35d41816b7330313ec84398eee2df74f06b4f\r\n\r\nTables:\r\n"] +[45.41257259368939, "o", " monthly_summary\r\n"] +[45.412586898804136, "o", " source_data\r\n"] +[45.83941766738934, "o", "Table demo/summary:dd4bf60c05b60539e3f9fac2da09d3d28ac28145646762f5acfaef932afdfaae/monthly_summary\r\n\r\n"] +[45.84059831619305, "o", "Size: 2.17 KiB\r\n"] +[45.841598243713804, "o", "Rows: 153\r\n"] +[45.84161350250287, "o", "Columns: \r\n month (text)\r\n average_precipitation (numeric)\r\n average_snowfall (numeric)\r\n\r\nObjects: \r\n o5e29c3cf82603335df66690a448ca1f604f0002d5a3496b18c982a5ea835f3\r\n"] +[46.282746524811216, "o", "201909 0.171667 0\r\n201908 0.139032 0\r\n201907 0.117097 0\r\n201906 0.12 0\r\n201905 0.103548 0\r\n"] +[46.31274652481122, "o", "\u001b[1m"] +[46.34274652481122, "o", "\u001b[36m"] +[46.37274652481122, "o", "\u001b[91m"] +[46.40274652481122, "o", "$"] +[46.43274652481122, "o", " "] +[46.46274652481122, "o", "\u001b[0m"] +[54.28404857635519, "o", "\u001b[H"] +[54.31404857635519, "o", "\u001b[J"] +[54.34404857635519, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image's provenance (generated from its metadata)"] +[54.37404857635519, "o", "\r\n"] +[54.404048576355194, "o", "$"] +[54.434048576355195, "o", " "] +[54.4640485763552, "o", "s"] +[54.4940485763552, "o", "g"] +[54.5240485763552, "o", "r"] +[54.5540485763552, "o", " "] +[54.5840485763552, "o", "p"] +[54.6140485763552, "o", "r"] +[54.6440485763552, "o", "o"] +[54.674048576355204, "o", "v"] +[54.704048576355206, "o", "e"] +[54.73404857635521, "o", "n"] +[54.76404857635521, "o", "a"] +[54.79404857635521, "o", "n"] +[54.82404857635521, "o", "c"] +[54.85404857635521, "o", "e"] +[54.88404857635521, "o", " "] +[54.91404857635521, "o", "d"] +[54.944048576355215, "o", "e"] +[54.974048576355216, "o", "m"] +[55.00404857635522, "o", "o"] +[55.03404857635522, "o", "/"] +[55.06404857635522, "o", "s"] +[55.09404857635522, "o", "u"] +[55.12404857635522, "o", "m"] +[55.15404857635522, "o", "m"] +[55.184048576355224, "o", "a"] +[55.214048576355225, "o", "r"] +[55.244048576355226, "o", "y"] +[55.27404857635523, "o", "\r\n"] +[55.30404857635523, "o", "$"] +[55.33404857635523, "o", " "] +[55.36404857635523, "o", "s"] +[55.39404857635523, "o", "g"] +[55.42404857635523, "o", "r"] +[55.454048576355234, "o", " "] +[55.484048576355235, "o", "p"] +[55.514048576355236, "o", "r"] +[55.54404857635524, "o", "o"] +[55.57404857635524, "o", "v"] +[55.60404857635524, "o", "e"] +[55.63404857635524, "o", "n"] +[55.66404857635524, "o", "a"] +[55.69404857635524, "o", "n"] +[55.724048576355244, "o", "c"] +[55.754048576355245, "o", "e"] +[55.78404857635525, "o", " "] +[55.81404857635525, "o", "-"] +[55.84404857635525, "o", "-"] +[55.87404857635525, "o", "f"] +[55.90404857635525, "o", "u"] +[55.93404857635525, "o", "l"] +[55.96404857635525, "o", "l"] +[55.994048576355254, "o", " "] +[56.024048576355256, "o", "d"] +[56.05404857635526, "o", "e"] +[56.08404857635526, "o", "m"] +[56.11404857635526, "o", "o"] +[56.14404857635526, "o", "/"] +[56.17404857635526, "o", "s"] +[56.20404857635526, "o", "u"] +[56.23404857635526, "o", "m"] +[56.264048576355265, "o", "m"] +[56.294048576355266, "o", "a"] +[56.32404857635527, "o", "r"] +[56.35404857635527, "o", "y"] +[56.38404857635527, "o", "\r\n"] +[56.41404857635527, "o", "\u001b[0m"] +[56.44404857635527, "o", "\r\n"] +[56.872111015320115, "o", "demo/summary:dd4bf60c05b60539e3f9fac2da09d3d28ac28145646762f5acfaef932afdfaae depends on:\r\n"] +[56.872169427871995, "o", "demo/weather:e5acbcae5ab76d5f0076bf929d60e93b6e9856bd7b6bf9f385ee07d616252d54\r\n"] +[57.31212537765532, "o", "# Splitfile commands used to recreate demo/summary:dd4bf60c05b60539e3f9fac2da09d3d28ac28145646762f5acfaef932afdfaae\r\n"] +[57.31215470314055, "o", "FROM demo/weather:e5acbcae5ab76d5f0076bf929d60e93b6e9856bd7b6bf9f385ee07d616252d54 IMPORT rdu AS source_data\r\nSQL {CREATE TABLE monthly_summary\r\n AS SELECT to_char(date, 'YYYYMM') AS month\r\n , avg(precipitation) AS average_precipitation\r\n , avg(snowfall) AS average_snowfall\r\n FROM source_data\r\n GROUP BY month\r\n ORDER BY month ASC}\r\n"] +[57.34215470314055, "o", "\u001b[1m"] +[57.37215470314055, "o", "\u001b[36m"] +[57.40215470314055, "o", "\u001b[91m"] +[57.432154703140554, "o", "$"] +[57.462154703140556, "o", " "] +[57.49215470314056, "o", "\u001b[0m"] +[62.52215470314056, "o", "\u001b[H"] +[62.55215470314056, "o", "\u001b[J"] +[62.58215470314056, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We can also see that a new image has been derived from demo/weather"] +[62.61215470314056, "o", "\r\n"] +[62.64215470314056, "o", "$"] +[62.67215470314056, "o", " "] +[62.702154703140565, "o", "s"] +[62.732154703140566, "o", "g"] +[62.76215470314057, "o", "r"] +[62.79215470314057, "o", " "] +[62.82215470314057, "o", "d"] +[62.85215470314057, "o", "e"] +[62.88215470314057, "o", "p"] +[62.91215470314057, "o", "e"] +[62.942154703140574, "o", "n"] +[62.972154703140575, "o", "d"] +[63.002154703140576, "o", "e"] +[63.03215470314058, "o", "n"] +[63.06215470314058, "o", "t"] +[63.09215470314058, "o", "s"] +[63.12215470314058, "o", " "] +[63.15215470314058, "o", "d"] +[63.18215470314058, "o", "e"] +[63.212154703140584, "o", "m"] +[63.242154703140585, "o", "o"] +[63.272154703140586, "o", "/"] +[63.30215470314059, "o", "w"] +[63.33215470314059, "o", "e"] +[63.36215470314059, "o", "a"] +[63.39215470314059, "o", "t"] +[63.42215470314059, "o", "h"] +[63.45215470314059, "o", "e"] +[63.482154703140594, "o", "r"] +[63.512154703140595, "o", "\r\n"] +[63.542154703140596, "o", "\u001b[0m"] +[63.5721547031406, "o", "\r\n"] +[64.00380009651218, "o", "demo/weather:e5acbcae5ab76d5f0076bf929d60e93b6e9856bd7b6bf9f385ee07d616252d54 is depended on by:\r\n"] +[64.00382918357883, "o", "demo/summary:dd4bf60c05b60539e3f9fac2da09d3d28ac28145646762f5acfaef932afdfaae\r\n"] +[64.03382918357883, "o", "\u001b[1m"] +[64.06382918357883, "o", "\u001b[36m"] +[64.09382918357883, "o", "\u001b[91m"] +[64.12382918357883, "o", "$"] +[64.15382918357884, "o", " "] +[64.18382918357884, "o", "\u001b[0m"] +[69.21382918357884, "o", "\u001b[H"] +[69.24382918357884, "o", "\u001b[J"] +[69.27382918357884, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now pretend there's been a revision to the source historical weather data"] +[69.30382918357884, "o", "\r\n"] +[69.33382918357884, "o", "$"] +[69.36382918357884, "o", " "] +[69.39382918357884, "o", "s"] +[69.42382918357885, "o", "g"] +[69.45382918357885, "o", "r"] +[69.48382918357885, "o", " "] +[69.51382918357885, "o", "s"] +[69.54382918357885, "o", "q"] +[69.57382918357885, "o", "l"] +[69.60382918357885, "o", " "] +[69.63382918357885, "o", "-"] +[69.66382918357886, "o", "s"] +[69.69382918357886, "o", " "] +[69.72382918357886, "o", "d"] +[69.75382918357886, "o", "e"] +[69.78382918357886, "o", "m"] +[69.81382918357886, "o", "o"] +[69.84382918357886, "o", "/"] +[69.87382918357886, "o", "w"] +[69.90382918357886, "o", "e"] +[69.93382918357887, "o", "a"] +[69.96382918357887, "o", "t"] +[69.99382918357887, "o", "h"] +[70.02382918357887, "o", "e"] +[70.05382918357887, "o", "r"] +[70.08382918357887, "o", " "] +[70.11382918357887, "o", "\""] +[70.14382918357887, "o", "U"] +[70.17382918357887, "o", "P"] +[70.20382918357888, "o", "D"] +[70.23382918357888, "o", "A"] +[70.26382918357888, "o", "T"] +[70.29382918357888, "o", "E"] +[70.32382918357888, "o", " "] +[70.35382918357888, "o", "r"] +[70.38382918357888, "o", "d"] +[70.41382918357888, "o", "u"] +[70.44382918357888, "o", " "] +[70.47382918357889, "o", "S"] +[70.50382918357889, "o", "E"] +[70.53382918357889, "o", "T"] +[70.56382918357889, "o", " "] +[70.59382918357889, "o", "p"] +[70.62382918357889, "o", "r"] +[70.65382918357889, "o", "e"] +[70.6838291835789, "o", "c"] +[70.7138291835789, "o", "i"] +[70.7438291835789, "o", "p"] +[70.7738291835789, "o", "i"] +[70.8038291835789, "o", "t"] +[70.8338291835789, "o", "a"] +[70.8638291835789, "o", "t"] +[70.8938291835789, "o", "i"] +[70.9238291835789, "o", "o"] +[70.9538291835789, "o", "n"] +[70.9838291835789, "o", " "] +[71.0138291835789, "o", "="] +[71.04382918357891, "o", " "] +[71.07382918357891, "o", "p"] +[71.10382918357891, "o", "r"] +[71.13382918357891, "o", "e"] +[71.16382918357891, "o", "c"] +[71.19382918357891, "o", "i"] +[71.22382918357891, "o", "p"] +[71.25382918357892, "o", "i"] +[71.28382918357892, "o", "t"] +[71.31382918357892, "o", "a"] +[71.34382918357892, "o", "t"] +[71.37382918357892, "o", "i"] +[71.40382918357892, "o", "o"] +[71.43382918357892, "o", "n"] +[71.46382918357892, "o", " "] +[71.49382918357892, "o", "*"] +[71.52382918357893, "o", " "] +[71.55382918357893, "o", "1"] +[71.58382918357893, "o", "."] +[71.61382918357893, "o", "2"] +[71.64382918357893, "o", " "] +[71.67382918357893, "o", "W"] +[71.70382918357893, "o", "H"] +[71.73382918357893, "o", "E"] +[71.76382918357893, "o", "R"] +[71.79382918357894, "o", "E"] +[71.82382918357894, "o", " "] +[71.85382918357894, "o", "E"] +[71.88382918357894, "o", "X"] +[71.91382918357894, "o", "T"] +[71.94382918357894, "o", "R"] +[71.97382918357894, "o", "A"] +[72.00382918357894, "o", "C"] +[72.03382918357894, "o", "T"] +[72.06382918357895, "o", " "] +[72.09382918357895, "o", "("] +[72.12382918357895, "o", "y"] +[72.15382918357895, "o", "e"] +[72.18382918357895, "o", "a"] +[72.21382918357895, "o", "r"] +[72.24382918357895, "o", " "] +[72.27382918357895, "o", "F"] +[72.30382918357896, "o", "R"] +[72.33382918357896, "o", "O"] +[72.36382918357896, "o", "M"] +[72.39382918357896, "o", " "] +[72.42382918357896, "o", "d"] +[72.45382918357896, "o", "a"] +[72.48382918357896, "o", "t"] +[72.51382918357896, "o", "e"] +[72.54382918357896, "o", ")"] +[72.57382918357897, "o", " "] +[72.60382918357897, "o", "="] +[72.63382918357897, "o", " "] +[72.66382918357897, "o", "2"] +[72.69382918357897, "o", "0"] +[72.72382918357897, "o", "1"] +[72.75382918357897, "o", "2"] +[72.78382918357897, "o", "\""] +[72.81382918357897, "o", "\r\n"] +[72.84382918357898, "o", "$"] +[72.87382918357898, "o", " "] +[72.90382918357898, "o", "s"] +[72.93382918357898, "o", "g"] +[72.96382918357898, "o", "r"] +[72.99382918357898, "o", " "] +[73.02382918357898, "o", "c"] +[73.05382918357898, "o", "o"] +[73.08382918357898, "o", "m"] +[73.11382918357899, "o", "m"] +[73.14382918357899, "o", "i"] +[73.17382918357899, "o", "t"] +[73.20382918357899, "o", " "] +[73.23382918357899, "o", "-"] +[73.26382918357899, "o", "m"] +[73.29382918357899, "o", " "] +[73.323829183579, "o", "\""] +[73.353829183579, "o", "R"] +[73.383829183579, "o", "e"] +[73.413829183579, "o", "v"] +[73.443829183579, "o", "i"] +[73.473829183579, "o", "s"] +[73.503829183579, "o", "i"] +[73.533829183579, "o", "o"] +[73.563829183579, "o", "n"] +[73.593829183579, "o", " "] +[73.623829183579, "o", "t"] +[73.653829183579, "o", "o"] +[73.68382918357901, "o", " "] +[73.71382918357901, "o", "t"] +[73.74382918357901, "o", "h"] +[73.77382918357901, "o", "e"] +[73.80382918357901, "o", " "] +[73.83382918357901, "o", "2"] +[73.86382918357901, "o", "0"] +[73.89382918357902, "o", "1"] +[73.92382918357902, "o", "2"] +[73.95382918357902, "o", " "] +[73.98382918357902, "o", "r"] +[74.01382918357902, "o", "a"] +[74.04382918357902, "o", "i"] +[74.07382918357902, "o", "n"] +[74.10382918357902, "o", "f"] +[74.13382918357902, "o", "a"] +[74.16382918357903, "o", "l"] +[74.19382918357903, "o", "l"] +[74.22382918357903, "o", " "] +[74.25382918357903, "o", "d"] +[74.28382918357903, "o", "a"] +[74.31382918357903, "o", "t"] +[74.34382918357903, "o", "a"] +[74.37382918357903, "o", "\""] +[74.40382918357903, "o", " "] +[74.43382918357904, "o", "d"] +[74.46382918357904, "o", "e"] +[74.49382918357904, "o", "m"] +[74.52382918357904, "o", "o"] +[74.55382918357904, "o", "/"] +[74.58382918357904, "o", "w"] +[74.61382918357904, "o", "e"] +[74.64382918357904, "o", "a"] +[74.67382918357904, "o", "t"] +[74.70382918357905, "o", "h"] +[74.73382918357905, "o", "e"] +[74.76382918357905, "o", "r"] +[74.79382918357905, "o", "\r\n"] +[74.82382918357905, "o", "$"] +[74.85382918357905, "o", " "] +[74.88382918357905, "o", "s"] +[74.91382918357905, "o", "g"] +[74.94382918357906, "o", "r"] +[74.97382918357906, "o", " "] +[75.00382918357906, "o", "t"] +[75.03382918357906, "o", "a"] +[75.06382918357906, "o", "g"] +[75.09382918357906, "o", " "] +[75.12382918357906, "o", "d"] +[75.15382918357906, "o", "e"] +[75.18382918357906, "o", "m"] +[75.21382918357907, "o", "o"] +[75.24382918357907, "o", "/"] +[75.27382918357907, "o", "w"] +[75.30382918357907, "o", "e"] +[75.33382918357907, "o", "a"] +[75.36382918357907, "o", "t"] +[75.39382918357907, "o", "h"] +[75.42382918357907, "o", "e"] +[75.45382918357907, "o", "r"] +[75.48382918357908, "o", " "] +[75.51382918357908, "o", "r"] +[75.54382918357908, "o", "e"] +[75.57382918357908, "o", "v"] +[75.60382918357908, "o", "i"] +[75.63382918357908, "o", "s"] +[75.66382918357908, "o", "e"] +[75.69382918357908, "o", "d"] +[75.72382918357908, "o", "_"] +[75.75382918357909, "o", "d"] +[75.78382918357909, "o", "a"] +[75.81382918357909, "o", "t"] +[75.84382918357909, "o", "a"] +[75.87382918357909, "o", "\r\n"] +[75.90382918357909, "o", "\u001b[0m"] +[75.93382918357909, "o", "\r\n"] +[76.36489283561767, "o", "Committing demo/weather...\r\n"] +[76.40305411338866, "o", "Storing and indexing table rdu\r\n"] +[76.61117231369079, "o", "Committed demo/weather as 8850a73540ae.\r\n"] +[77.06337368011535, "o", "Tagged demo/weather:8850a73540aec61630a94017ce8cf5fce4af3e830775d415c6f707aac51eabce with revised_data.\r\n"] +[77.09337368011535, "o", "\u001b[1m"] +[77.12337368011535, "o", "\u001b[36m"] +[77.15337368011535, "o", "\u001b[91m"] +[77.18337368011535, "o", "$"] +[77.21337368011535, "o", " "] +[77.24337368011535, "o", "\u001b[0m"] +[82.27337368011536, "o", "\u001b[H"] +[82.30337368011536, "o", "\u001b[J"] +[82.33337368011536, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Use the derivative image's provenance to rebuild it against the revised version"] +[82.36337368011536, "o", "\r\n"] +[82.39337368011536, "o", "$"] +[82.42337368011536, "o", " "] +[82.45337368011536, "o", "s"] +[82.48337368011536, "o", "g"] +[82.51337368011536, "o", "r"] +[82.54337368011537, "o", " "] +[82.57337368011537, "o", "r"] +[82.60337368011537, "o", "e"] +[82.63337368011537, "o", "b"] +[82.66337368011537, "o", "u"] +[82.69337368011537, "o", "i"] +[82.72337368011537, "o", "l"] +[82.75337368011537, "o", "d"] +[82.78337368011537, "o", " "] +[82.81337368011538, "o", "d"] +[82.84337368011538, "o", "e"] +[82.87337368011538, "o", "m"] +[82.90337368011538, "o", "o"] +[82.93337368011538, "o", "/"] +[82.96337368011538, "o", "s"] +[82.99337368011538, "o", "u"] +[83.02337368011538, "o", "m"] +[83.05337368011539, "o", "m"] +[83.08337368011539, "o", "a"] +[83.11337368011539, "o", "r"] +[83.14337368011539, "o", "y"] +[83.17337368011539, "o", " "] +[83.20337368011539, "o", "-"] +[83.23337368011539, "o", "-"] +[83.2633736801154, "o", "a"] +[83.2933736801154, "o", "g"] +[83.3233736801154, "o", "a"] +[83.3533736801154, "o", "i"] +[83.3833736801154, "o", "n"] +[83.4133736801154, "o", "s"] +[83.4433736801154, "o", "t"] +[83.4733736801154, "o", " "] +[83.5033736801154, "o", "d"] +[83.5333736801154, "o", "e"] +[83.5633736801154, "o", "m"] +[83.5933736801154, "o", "o"] +[83.6233736801154, "o", "/"] +[83.65337368011541, "o", "w"] +[83.68337368011541, "o", "e"] +[83.71337368011541, "o", "a"] +[83.74337368011541, "o", "t"] +[83.77337368011541, "o", "h"] +[83.80337368011541, "o", "e"] +[83.83337368011541, "o", "r"] +[83.86337368011542, "o", ":"] +[83.89337368011542, "o", "r"] +[83.92337368011542, "o", "e"] +[83.95337368011542, "o", "v"] +[83.98337368011542, "o", "i"] +[84.01337368011542, "o", "s"] +[84.04337368011542, "o", "e"] +[84.07337368011542, "o", "d"] +[84.10337368011542, "o", "_"] +[84.13337368011543, "o", "d"] +[84.16337368011543, "o", "a"] +[84.19337368011543, "o", "t"] +[84.22337368011543, "o", "a"] +[84.25337368011543, "o", "\r\n"] +[84.28337368011543, "o", "$"] +[84.31337368011543, "o", " "] +[84.34337368011543, "o", "s"] +[84.37337368011544, "o", "g"] +[84.40337368011544, "o", "r"] +[84.43337368011544, "o", " "] +[84.46337368011544, "o", "t"] +[84.49337368011544, "o", "a"] +[84.52337368011544, "o", "g"] +[84.55337368011544, "o", " "] +[84.58337368011544, "o", "d"] +[84.61337368011544, "o", "e"] +[84.64337368011545, "o", "m"] +[84.67337368011545, "o", "o"] +[84.70337368011545, "o", "/"] +[84.73337368011545, "o", "s"] +[84.76337368011545, "o", "u"] +[84.79337368011545, "o", "m"] +[84.82337368011545, "o", "m"] +[84.85337368011545, "o", "a"] +[84.88337368011545, "o", "r"] +[84.91337368011546, "o", "y"] +[84.94337368011546, "o", " "] +[84.97337368011546, "o", "b"] +[85.00337368011546, "o", "a"] +[85.03337368011546, "o", "s"] +[85.06337368011546, "o", "e"] +[85.09337368011546, "o", "d"] +[85.12337368011546, "o", "_"] +[85.15337368011546, "o", "o"] +[85.18337368011547, "o", "n"] +[85.21337368011547, "o", "_"] +[85.24337368011547, "o", "r"] +[85.27337368011547, "o", "e"] +[85.30337368011547, "o", "v"] +[85.33337368011547, "o", "i"] +[85.36337368011547, "o", "s"] +[85.39337368011547, "o", "e"] +[85.42337368011547, "o", "d"] +[85.45337368011548, "o", "\r\n"] +[85.48337368011548, "o", "\u001b[0m"] +[85.51337368011548, "o", "\r\n"] +[85.97140461921765, "o", "Rerunning demo/summary:dd4bf60c05b60539e3f9fac2da09d3d28ac28145646762f5acfaef932afdfaae against:\r\n"] +[85.9714177322395, "o", "demo/weather:revised_data\r\n"] +[86.02168590545728, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather:revised_data IMPORT rdu AS source_data\u001b[0m\r\n"] +[86.08437377929761, "o", "Resolving repository demo/weather\r\n"] +[86.0894666385658, "o", "Importing 1 table from demo/weather:8850a73540ae into demo/summary\r\n"] +[86.25130683898999, "o", " ---> e210f3a178fb\r\n"] +[86.25176555633618, "o", "\u001b[1m\r\nStep 2/2 : SQL {CREATE TABLE monthly_summary AS SELECT to_char(dat...\u001b[0m\r\n"] +[86.25762993812634, "o", "Executing SQL...\r\n"] +[86.49246580123975, "o", "Committing demo/summary...\r\n"] +[86.52042347908093, "o", "Processing table monthly_summary\r\n"] +[86.64573938369824, "o", " ---> baace25c6eab\r\n"] +[86.64939720153882, "o", "Successfully built demo/summary:baace25c6eab."] +[86.64944345474316, "o", "\r\n"] +[87.10666973114087, "o", "Tagged demo/summary:baace25c6eab3fab4ffd5794a18fbc79b198ee85cec623e8c4fa9055242f5f44 with based_on_revised.\r\n"] +[87.13666973114087, "o", "\u001b[1m"] +[87.16666973114087, "o", "\u001b[36m"] +[87.19666973114087, "o", "\u001b[91m"] +[87.22666973114087, "o", "$"] +[87.25666973114087, "o", " "] +[87.28666973114088, "o", "\u001b[0m"] +[92.31666973114088, "o", "\u001b[H"] +[92.34666973114088, "o", "\u001b[J"] +[92.37666973114088, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Compare the two resultant datasets"] +[92.40666973114088, "o", "\r\n"] +[92.43666973114088, "o", "$"] +[92.46666973114088, "o", " "] +[92.49666973114088, "o", "s"] +[92.52666973114088, "o", "g"] +[92.55666973114089, "o", "r"] +[92.58666973114089, "o", " "] +[92.61666973114089, "o", "d"] +[92.64666973114089, "o", "i"] +[92.67666973114089, "o", "f"] +[92.70666973114089, "o", "f"] +[92.73666973114089, "o", " "] +[92.7666697311409, "o", "d"] +[92.7966697311409, "o", "e"] +[92.8266697311409, "o", "m"] +[92.8566697311409, "o", "o"] +[92.8866697311409, "o", "/"] +[92.9166697311409, "o", "s"] +[92.9466697311409, "o", "u"] +[92.9766697311409, "o", "m"] +[93.0066697311409, "o", "m"] +[93.0366697311409, "o", "a"] +[93.0666697311409, "o", "r"] +[93.0966697311409, "o", "y"] +[93.12666973114091, "o", " "] +[93.15666973114091, "o", "b"] +[93.18666973114091, "o", "a"] +[93.21666973114091, "o", "s"] +[93.24666973114091, "o", "e"] +[93.27666973114091, "o", "d"] +[93.30666973114091, "o", "_"] +[93.33666973114092, "o", "o"] +[93.36666973114092, "o", "n"] +[93.39666973114092, "o", "_"] +[93.42666973114092, "o", "i"] +[93.45666973114092, "o", "n"] +[93.48666973114092, "o", "i"] +[93.51666973114092, "o", "t"] +[93.54666973114092, "o", "i"] +[93.57666973114092, "o", "a"] +[93.60666973114093, "o", "l"] +[93.63666973114093, "o", " "] +[93.66666973114093, "o", "b"] +[93.69666973114093, "o", "a"] +[93.72666973114093, "o", "s"] +[93.75666973114093, "o", "e"] +[93.78666973114093, "o", "d"] +[93.81666973114093, "o", "_"] +[93.84666973114093, "o", "o"] +[93.87666973114094, "o", "n"] +[93.90666973114094, "o", "_"] +[93.93666973114094, "o", "r"] +[93.96666973114094, "o", "e"] +[93.99666973114094, "o", "v"] +[94.02666973114094, "o", "i"] +[94.05666973114094, "o", "s"] +[94.08666973114094, "o", "e"] +[94.11666973114095, "o", "d"] +[94.14666973114095, "o", " "] +[94.17666973114095, "o", "-"] +[94.20666973114095, "o", "-"] +[94.23666973114095, "o", "v"] +[94.26666973114095, "o", "e"] +[94.29666973114095, "o", "r"] +[94.32666973114095, "o", "b"] +[94.35666973114095, "o", "o"] +[94.38666973114096, "o", "s"] +[94.41666973114096, "o", "e"] +[94.44666973114096, "o", " "] +[94.47666973114096, "o", "-"] +[94.50666973114096, "o", "-"] +[94.53666973114096, "o", "t"] +[94.56666973114096, "o", "a"] +[94.59666973114096, "o", "b"] +[94.62666973114096, "o", "l"] +[94.65666973114097, "o", "e"] +[94.68666973114097, "o", "-"] +[94.71666973114097, "o", "n"] +[94.74666973114097, "o", "a"] +[94.77666973114097, "o", "m"] +[94.80666973114097, "o", "e"] +[94.83666973114097, "o", " "] +[94.86666973114097, "o", "m"] +[94.89666973114097, "o", "o"] +[94.92666973114098, "o", "n"] +[94.95666973114098, "o", "t"] +[94.98666973114098, "o", "h"] +[95.01666973114098, "o", "l"] +[95.04666973114098, "o", "y"] +[95.07666973114098, "o", "_"] +[95.10666973114098, "o", "s"] +[95.13666973114098, "o", "u"] +[95.16666973114098, "o", "m"] +[95.19666973114099, "o", "m"] +[95.22666973114099, "o", "a"] +[95.25666973114099, "o", "r"] +[95.28666973114099, "o", "y"] +[95.31666973114099, "o", "\r\n"] +[95.34666973114099, "o", "\u001b[0m"] +[95.37666973114099, "o", "\r\n"] +[95.98079642295923, "o", "Between dd4bf60c05b6 and baace25c6eab: \r\n"] +[95.98110088348474, "o", "monthly_summary: added 12 rows, removed 12 rows.\r\n- ('201201', Decimal('0.06322580645161290323'), Decimal('0E-20'))\r\n- ('201202', Decimal('0.06689655172413793103'), Decimal('0.03137931034482758621'))\r\n- ('201203', Decimal('0.17290322580645161290'), Decimal('0E-20'))\r\n- ('201204', Decimal('0.08766666666666666667'), Decimal('0E-20'))\r\n- ('201205', Decimal('0.12806451612903225806'), Decimal('0E-20'))\r\n- ('201206', Decimal('0.10333333333333333333'), Decimal('0E-20'))\r\n- ('201207', Decimal('0.1496774193548387096"] +[95.98110803604212, "o", "8'), Decimal('0E-20'))\r\n- ('201208', Decimal('0.13000000000000000000'), Decimal('0E-20'))\r\n- ('201209', Decimal('0.26100000000000000000'), Decimal('0E-20'))\r\n- ('201210', Decimal('0.05903225806451612903'), Decimal('0E-20'))\r\n- ('201211', Decimal('0.01866666666666666667'), Decimal('0E-20'))\r\n- ('201212', Decimal('0.09483870967741935484'), Decimal('0E-20'))\r\n+ ('201201', Decimal('0.07587096774193548387'), Decimal('0E-20'))\r\n+ ('201202', Decimal('0.08027586206896551724'), Decimal('0.03137931034482758621'))\r\n+ "] +[95.9811128044137, "o", "('201203', Decimal('0.20748387096774193548'), Decimal('0E-20'))\r\n+ ('201204', Decimal('0.10520000000000000000'), Decimal('0E-20'))\r\n+ ('201205', Decimal('0.15367741935483870968'), Decimal('0E-20'))\r\n+ ('201206', Decimal('0.12400000000000000000'), Decimal('0E-20'))\r\n+ ('201207', Decimal('0.17961290322580645161'), Decimal('0E-20'))\r\n+ ('201208', Decimal('0.15600000000000000000'), Decimal('0E-20'))\r\n+ ('201209', Decimal('0.31320000000000000000'), Decimal('0E-20'))\r\n+ ('201210', Decimal('0.07083870967741935484'"] +[95.98112210273828, "o", "), Decimal('0E-20'))\r\n+ ('201211', Decimal('0.02240000000000000000'), Decimal('0E-20'))\r\n+ ('201212', Decimal('0.11380645161290322581'), Decimal('0E-20'))\r\n"] +[96.01112210273828, "o", "\u001b[1m"] +[96.04112210273829, "o", "\u001b[36m"] +[96.07112210273829, "o", "\u001b[91m"] +[96.10112210273829, "o", "$"] +[96.13112210273829, "o", " "] +[96.16112210273829, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/archive/v0.3.0/splitgraph-cloud.cast b/content/casts/versioned/archive/v0.3.0/splitgraph-cloud.cast new file mode 100644 index 00000000..1678efbe --- /dev/null +++ b/content/casts/versioned/archive/v0.3.0/splitgraph-cloud.cast @@ -0,0 +1,1339 @@ +{"version": 2, "width": 100, "height": 22, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1639770161, "metadata": {"tss": [{"h": "Make sure you are registered and logged into Splitgraph Cloud.", "ts": 0.06}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport", "ts": 8.849999999999994}, {"h": "Push the dataset to Splitgraph", "ts": 21.648066606521482}, {"h": "Upload some dataset metadata as well.", "ts": 29.99945761680594}, {"h": "Perform a request against an automatically-generated", "ts": 40.49945761680594}, {"h": "sgr also has a shorthand to access the query API", "ts": 49.75046377182012}, {"h": "You can also run a query against the Splitgraph Data Delivery Network.", "ts": 58.750463771820236}, {"h": "The query API also supports running one-off Splitfile commands against a repository,", "ts": 69.94046377182043}, {"h": "Run another command against the new layer to join the two datasets", "ts": 79.45231676101734}, {"h": "Pull the dataset and check out the new image", "ts": 89.05366978645388}, {"h": "Inspect the generated data", "ts": 102.35350401878428}]}} +[0.03, "o", "\u001b[H"] +[0.06, "o", "\u001b[J"] +[0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make sure you are registered and logged into Splitgraph Cloud."] +[0.12, "o", "\r\n"] +[0.15, "o", "$ # Test the connection.\r\n"] +[0.18, "o", "$"] +[0.21, "o", " "] +[0.24, "o", "s"] +[0.27, "o", "g"] +[0.30000000000000004, "o", "r"] +[0.33000000000000007, "o", " "] +[0.3600000000000001, "o", "s"] +[0.3900000000000001, "o", "q"] +[0.42000000000000015, "o", "l"] +[0.4500000000000002, "o", " "] +[0.4800000000000002, "o", "-"] +[0.5100000000000002, "o", "r"] +[0.5400000000000003, "o", " "] +[0.5700000000000003, "o", "d"] +[0.6000000000000003, "o", "a"] +[0.6300000000000003, "o", "t"] +[0.6600000000000004, "o", "a"] +[0.6900000000000004, "o", "."] +[0.7200000000000004, "o", "s"] +[0.7500000000000004, "o", "p"] +[0.7800000000000005, "o", "l"] +[0.8100000000000005, "o", "i"] +[0.8400000000000005, "o", "t"] +[0.8700000000000006, "o", "g"] +[0.9000000000000006, "o", "r"] +[0.9300000000000006, "o", "a"] +[0.9600000000000006, "o", "p"] +[0.9900000000000007, "o", "h"] +[1.0200000000000007, "o", "."] +[1.0500000000000007, "o", "c"] +[1.0800000000000007, "o", "o"] +[1.1100000000000008, "o", "m"] +[1.1400000000000008, "o", " "] +[1.1700000000000008, "o", "\""] +[1.2000000000000008, "o", "S"] +[1.2300000000000009, "o", "E"] +[1.260000000000001, "o", "L"] +[1.290000000000001, "o", "E"] +[1.320000000000001, "o", "C"] +[1.350000000000001, "o", "T"] +[1.380000000000001, "o", " "] +[1.410000000000001, "o", "s"] +[1.440000000000001, "o", "p"] +[1.470000000000001, "o", "l"] +[1.500000000000001, "o", "i"] +[1.5300000000000011, "o", "t"] +[1.5600000000000012, "o", "g"] +[1.5900000000000012, "o", "r"] +[1.6200000000000012, "o", "a"] +[1.6500000000000012, "o", "p"] +[1.6800000000000013, "o", "h"] +[1.7100000000000013, "o", "_"] +[1.7400000000000013, "o", "a"] +[1.7700000000000014, "o", "p"] +[1.8000000000000014, "o", "i"] +[1.8300000000000014, "o", "."] +[1.8600000000000014, "o", "g"] +[1.8900000000000015, "o", "e"] +[1.9200000000000015, "o", "t"] +[1.9500000000000015, "o", "_"] +[1.9800000000000015, "o", "c"] +[2.0100000000000016, "o", "u"] +[2.0400000000000014, "o", "r"] +[2.070000000000001, "o", "r"] +[2.100000000000001, "o", "e"] +[2.130000000000001, "o", "n"] +[2.1600000000000006, "o", "t"] +[2.1900000000000004, "o", "_"] +[2.22, "o", "u"] +[2.25, "o", "s"] +[2.28, "o", "e"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "n"] +[2.369999999999999, "o", "a"] +[2.399999999999999, "o", "m"] +[2.429999999999999, "o", "e"] +[2.4599999999999986, "o", "("] +[2.4899999999999984, "o", ")"] +[2.5199999999999982, "o", "\""] +[2.549999999999998, "o", "\r\n"] +[2.579999999999998, "o", "\u001b[0m"] +[2.6099999999999977, "o", "\r\n"] +[3.6099999999999977, "o", "splitgraph-demo\r\n"] +[3.6399999999999975, "o", "\u001b[1m"] +[3.6699999999999973, "o", "\u001b[36m"] +[3.699999999999997, "o", "\u001b[91m"] +[3.729999999999997, "o", "$"] +[3.7599999999999967, "o", " "] +[3.7899999999999965, "o", "\u001b[0m"] +[8.819999999999995, "o", "\u001b[H"] +[8.849999999999994, "o", "\u001b[J"] +[8.879999999999994, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport"] +[8.909999999999993, "o", "\r\n"] +[8.939999999999992, "o", "$"] +[8.969999999999992, "o", " "] +[8.999999999999991, "o", "s"] +[9.02999999999999, "o", "g"] +[9.05999999999999, "o", "r"] +[9.08999999999999, "o", " "] +[9.119999999999989, "o", "i"] +[9.149999999999988, "o", "n"] +[9.179999999999987, "o", "i"] +[9.209999999999987, "o", "t"] +[9.239999999999986, "o", " "] +[9.269999999999985, "o", "w"] +[9.299999999999985, "o", "e"] +[9.329999999999984, "o", "a"] +[9.359999999999983, "o", "t"] +[9.389999999999983, "o", "h"] +[9.419999999999982, "o", "e"] +[9.449999999999982, "o", "r"] +[9.47999999999998, "o", "\r\n"] +[9.50999999999998, "o", "$"] +[9.53999999999998, "o", " "] +[9.569999999999979, "o", "s"] +[9.599999999999978, "o", "g"] +[9.629999999999978, "o", "r"] +[9.659999999999977, "o", " "] +[9.689999999999976, "o", "c"] +[9.719999999999976, "o", "s"] +[9.749999999999975, "o", "v"] +[9.779999999999974, "o", " "] +[9.809999999999974, "o", "i"] +[9.839999999999973, "o", "m"] +[9.869999999999973, "o", "p"] +[9.899999999999972, "o", "o"] +[9.929999999999971, "o", "r"] +[9.95999999999997, "o", "t"] +[9.98999999999997, "o", " "] +[10.01999999999997, "o", "-"] +[10.049999999999969, "o", "f"] +[10.079999999999968, "o", " "] +[10.109999999999967, "o", "."] +[10.139999999999967, "o", "."] +[10.169999999999966, "o", "/"] +[10.199999999999966, "o", "i"] +[10.229999999999965, "o", "m"] +[10.259999999999964, "o", "p"] +[10.289999999999964, "o", "o"] +[10.319999999999963, "o", "r"] +[10.349999999999962, "o", "t"] +[10.379999999999962, "o", "-"] +[10.409999999999961, "o", "f"] +[10.43999999999996, "o", "r"] +[10.46999999999996, "o", "o"] +[10.49999999999996, "o", "m"] +[10.529999999999959, "o", "-"] +[10.559999999999958, "o", "c"] +[10.589999999999957, "o", "s"] +[10.619999999999957, "o", "v"] +[10.649999999999956, "o", "/"] +[10.679999999999955, "o", "r"] +[10.709999999999955, "o", "d"] +[10.739999999999954, "o", "u"] +[10.769999999999953, "o", "-"] +[10.799999999999953, "o", "w"] +[10.829999999999952, "o", "e"] +[10.859999999999951, "o", "a"] +[10.88999999999995, "o", "t"] +[10.91999999999995, "o", "h"] +[10.94999999999995, "o", "e"] +[10.979999999999949, "o", "r"] +[11.009999999999948, "o", "-"] +[11.039999999999948, "o", "h"] +[11.069999999999947, "o", "i"] +[11.099999999999946, "o", "s"] +[11.129999999999946, "o", "t"] +[11.159999999999945, "o", "o"] +[11.189999999999944, "o", "r"] +[11.219999999999944, "o", "y"] +[11.249999999999943, "o", "."] +[11.279999999999943, "o", "c"] +[11.309999999999942, "o", "s"] +[11.339999999999941, "o", "v"] +[11.36999999999994, "o", " "] +[11.39999999999994, "o", "\\"] +[11.42999999999994, "o", "\r\n "] +[11.459999999999939, "o", "-"] +[11.489999999999938, "o", "k"] +[11.519999999999937, "o", " "] +[11.549999999999937, "o", "d"] +[11.579999999999936, "o", "a"] +[11.609999999999935, "o", "t"] +[11.639999999999935, "o", "e"] +[11.669999999999934, "o", " "] +[11.699999999999934, "o", "\\"] +[11.729999999999933, "o", "\r\n "] +[11.759999999999932, "o", "-"] +[11.789999999999932, "o", "t"] +[11.819999999999931, "o", " "] +[11.84999999999993, "o", "d"] +[11.87999999999993, "o", "a"] +[11.909999999999929, "o", "t"] +[11.939999999999928, "o", "e"] +[11.969999999999928, "o", " "] +[11.999999999999927, "o", "t"] +[12.029999999999927, "o", "i"] +[12.059999999999926, "o", "m"] +[12.089999999999925, "o", "e"] +[12.119999999999925, "o", "s"] +[12.149999999999924, "o", "t"] +[12.179999999999923, "o", "a"] +[12.209999999999923, "o", "m"] +[12.239999999999922, "o", "p"] +[12.269999999999921, "o", " "] +[12.29999999999992, "o", "\\"] +[12.32999999999992, "o", "\r\n "] +[12.35999999999992, "o", "-"] +[12.389999999999919, "o", "-"] +[12.419999999999918, "o", "s"] +[12.449999999999918, "o", "e"] +[12.479999999999917, "o", "p"] +[12.509999999999916, "o", "a"] +[12.539999999999916, "o", "r"] +[12.569999999999915, "o", "a"] +[12.599999999999914, "o", "t"] +[12.629999999999914, "o", "o"] +[12.659999999999913, "o", "r"] +[12.689999999999912, "o", " "] +[12.719999999999912, "o", "\""] +[12.749999999999911, "o", ";"] +[12.77999999999991, "o", "\""] +[12.80999999999991, "o", " "] +[12.83999999999991, "o", "\\"] +[12.869999999999909, "o", "\r\n "] +[12.899999999999908, "o", "w"] +[12.929999999999907, "o", "e"] +[12.959999999999907, "o", "a"] +[12.989999999999906, "o", "t"] +[13.019999999999905, "o", "h"] +[13.049999999999905, "o", "e"] +[13.079999999999904, "o", "r"] +[13.109999999999904, "o", " "] +[13.139999999999903, "o", "r"] +[13.169999999999902, "o", "d"] +[13.199999999999902, "o", "u"] +[13.229999999999901, "o", "\r\n"] +[13.2599999999999, "o", "$"] +[13.2899999999999, "o", " "] +[13.319999999999899, "o", "s"] +[13.349999999999898, "o", "g"] +[13.379999999999898, "o", "r"] +[13.409999999999897, "o", " "] +[13.439999999999896, "o", "c"] +[13.469999999999896, "o", "o"] +[13.499999999999895, "o", "m"] +[13.529999999999895, "o", "m"] +[13.559999999999894, "o", "i"] +[13.589999999999893, "o", "t"] +[13.619999999999893, "o", " "] +[13.649999999999892, "o", "w"] +[13.679999999999891, "o", "e"] +[13.70999999999989, "o", "a"] +[13.73999999999989, "o", "t"] +[13.76999999999989, "o", "h"] +[13.799999999999889, "o", "e"] +[13.829999999999888, "o", "r"] +[13.859999999999888, "o", "\r\n"] +[13.889999999999887, "o", "$"] +[13.919999999999886, "o", " "] +[13.949999999999886, "o", "s"] +[13.979999999999885, "o", "g"] +[14.009999999999884, "o", "r"] +[14.039999999999884, "o", " "] +[14.069999999999883, "o", "t"] +[14.099999999999882, "o", "a"] +[14.129999999999882, "o", "g"] +[14.159999999999881, "o", " "] +[14.18999999999988, "o", "w"] +[14.21999999999988, "o", "e"] +[14.24999999999988, "o", "a"] +[14.279999999999879, "o", "t"] +[14.309999999999878, "o", "h"] +[14.339999999999877, "o", "e"] +[14.369999999999877, "o", "r"] +[14.399999999999876, "o", " "] +[14.429999999999875, "o", "i"] +[14.459999999999875, "o", "n"] +[14.489999999999874, "o", "i"] +[14.519999999999873, "o", "t"] +[14.549999999999873, "o", "i"] +[14.579999999999872, "o", "a"] +[14.609999999999872, "o", "l"] +[14.639999999999871, "o", "_"] +[14.66999999999987, "o", "d"] +[14.69999999999987, "o", "a"] +[14.729999999999869, "o", "t"] +[14.759999999999868, "o", "a"] +[14.789999999999868, "o", "\r\n"] +[14.819999999999867, "o", "\u001b[0m"] +[14.849999999999866, "o", "\r\n"] +[15.297299957275257, "o", "Initialized empty repository weather\r\n"] +[15.721189355850086, "o", "Committing weather...\r\n"] +[15.74615440368639, "o", "Processing table rdu\r\n"] +[15.977778768539295, "o", "Committed weather as 430f85f49748.\r\n"] +[16.408066606521473, "o", "Tagged weather:430f85f497486c71141b37a43f37518dc6afdae749feb4397e2dcb98e588cc12 with initial_data.\r\n"] +[16.438066606521474, "o", "\u001b[1m"] +[16.468066606521475, "o", "\u001b[36m"] +[16.498066606521476, "o", "\u001b[91m"] +[16.528066606521477, "o", "$"] +[16.55806660652148, "o", " "] +[16.58806660652148, "o", "\u001b[0m"] +[21.61806660652148, "o", "\u001b[H"] +[21.648066606521482, "o", "\u001b[J"] +[21.678066606521483, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset to Splitgraph"] +[21.708066606521484, "o", "\r\n"] +[21.738066606521485, "o", "$"] +[21.768066606521487, "o", " "] +[21.798066606521488, "o", "s"] +[21.82806660652149, "o", "g"] +[21.85806660652149, "o", "r"] +[21.88806660652149, "o", " "] +[21.918066606521492, "o", "p"] +[21.948066606521493, "o", "u"] +[21.978066606521494, "o", "s"] +[22.008066606521496, "o", "h"] +[22.038066606521497, "o", " "] +[22.068066606521498, "o", "w"] +[22.0980666065215, "o", "e"] +[22.1280666065215, "o", "a"] +[22.1580666065215, "o", "t"] +[22.188066606521502, "o", "h"] +[22.218066606521504, "o", "e"] +[22.248066606521505, "o", "r"] +[22.278066606521506, "o", "\r\n"] +[22.308066606521507, "o", "\u001b[0m"] +[22.338066606521508, "o", "\r\n"] +[22.75352981567373, "o", "Pushing weather to splitgraph-demo/weather on remote data.splitgraph.com\r\n"] +[22.753559617996117, "o", "Gathering remote metadata...\r\n"] +[23.753559617996117, "o", "No objects to upload.\r\n"] +[24.753559617996117, "o", "Uploaded metadata for 2 images, 1 table, 0 objects and 1 tag.\r\n"] +[24.759457616805932, "o", "Setting upstream for weather to splitgraph-demo/weather.\r\n"] +[24.789457616805933, "o", "\u001b[1m"] +[24.819457616805934, "o", "\u001b[36m"] +[24.849457616805935, "o", "\u001b[91m"] +[24.879457616805936, "o", "$"] +[24.909457616805938, "o", " "] +[24.93945761680594, "o", "\u001b[0m"] +[29.96945761680594, "o", "\u001b[H"] +[29.99945761680594, "o", "\u001b[J"] +[30.029457616805942, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Upload some dataset metadata as well."] +[30.059457616805943, "o", "\r\n"] +[30.089457616805944, "o", "$"] +[30.119457616805946, "o", " "] +[30.149457616805947, "o", "c"] +[30.179457616805948, "o", "a"] +[30.20945761680595, "o", "t"] +[30.23945761680595, "o", " "] +[30.26945761680595, "o", "d"] +[30.299457616805952, "o", "a"] +[30.329457616805954, "o", "t"] +[30.359457616805955, "o", "a"] +[30.389457616805956, "o", "s"] +[30.419457616805957, "o", "e"] +[30.449457616805958, "o", "t"] +[30.47945761680596, "o", "-"] +[30.50945761680596, "o", "m"] +[30.53945761680596, "o", "e"] +[30.569457616805963, "o", "t"] +[30.599457616805964, "o", "a"] +[30.629457616805965, "o", "d"] +[30.659457616805966, "o", "a"] +[30.689457616805967, "o", "t"] +[30.71945761680597, "o", "a"] +[30.74945761680597, "o", "."] +[30.77945761680597, "o", "y"] +[30.80945761680597, "o", "m"] +[30.839457616805973, "o", "l"] +[30.869457616805974, "o", "\r\n"] +[30.899457616805975, "o", "$"] +[30.929457616805976, "o", " "] +[30.959457616805977, "o", "c"] +[30.98945761680598, "o", "a"] +[31.01945761680598, "o", "t"] +[31.04945761680598, "o", " "] +[31.079457616805982, "o", "d"] +[31.109457616805983, "o", "a"] +[31.139457616805984, "o", "t"] +[31.169457616805985, "o", "a"] +[31.199457616805987, "o", "s"] +[31.229457616805988, "o", "e"] +[31.25945761680599, "o", "t"] +[31.28945761680599, "o", "-"] +[31.31945761680599, "o", "r"] +[31.349457616805992, "o", "e"] +[31.379457616805993, "o", "a"] +[31.409457616805994, "o", "d"] +[31.439457616805996, "o", "m"] +[31.469457616805997, "o", "e"] +[31.499457616805998, "o", "."] +[31.529457616806, "o", "m"] +[31.559457616806, "o", "d"] +[31.589457616806, "o", "\r\n"] +[31.619457616806002, "o", "$"] +[31.649457616806004, "o", " "] +[31.679457616806005, "o", "s"] +[31.709457616806006, "o", "g"] +[31.739457616806007, "o", "r"] +[31.769457616806008, "o", " "] +[31.79945761680601, "o", "c"] +[31.82945761680601, "o", "l"] +[31.85945761680601, "o", "o"] +[31.889457616806013, "o", "u"] +[31.919457616806014, "o", "d"] +[31.949457616806015, "o", " "] +[31.979457616806016, "o", "m"] +[32.00945761680602, "o", "e"] +[32.03945761680602, "o", "t"] +[32.06945761680602, "o", "a"] +[32.09945761680602, "o", "d"] +[32.12945761680602, "o", "a"] +[32.15945761680602, "o", "t"] +[32.189457616806024, "o", "a"] +[32.219457616806025, "o", " "] +[32.249457616806026, "o", "s"] +[32.27945761680603, "o", "p"] +[32.30945761680603, "o", "l"] +[32.33945761680603, "o", "i"] +[32.36945761680603, "o", "t"] +[32.39945761680603, "o", "g"] +[32.42945761680603, "o", "r"] +[32.459457616806034, "o", "a"] +[32.489457616806035, "o", "p"] +[32.51945761680604, "o", "h"] +[32.54945761680604, "o", "-"] +[32.57945761680604, "o", "d"] +[32.60945761680604, "o", "e"] +[32.63945761680604, "o", "m"] +[32.66945761680604, "o", "o"] +[32.69945761680604, "o", "/"] +[32.729457616806044, "o", "w"] +[32.759457616806046, "o", "e"] +[32.78945761680605, "o", "a"] +[32.81945761680605, "o", "t"] +[32.84945761680605, "o", "h"] +[32.87945761680605, "o", "e"] +[32.90945761680605, "o", "r"] +[32.93945761680605, "o", " "] +[32.969457616806054, "o", "d"] +[32.999457616806055, "o", "a"] +[33.029457616806056, "o", "t"] +[33.05945761680606, "o", "a"] +[33.08945761680606, "o", "s"] +[33.11945761680606, "o", "e"] +[33.14945761680606, "o", "t"] +[33.17945761680606, "o", "-"] +[33.20945761680606, "o", "m"] +[33.239457616806064, "o", "e"] +[33.269457616806065, "o", "t"] +[33.299457616806066, "o", "a"] +[33.32945761680607, "o", "d"] +[33.35945761680607, "o", "a"] +[33.38945761680607, "o", "t"] +[33.41945761680607, "o", "a"] +[33.44945761680607, "o", "."] +[33.47945761680607, "o", "y"] +[33.509457616806074, "o", "m"] +[33.539457616806075, "o", "l"] +[33.569457616806076, "o", "\r\n"] +[33.59945761680608, "o", "\u001b[0m"] +[33.62945761680608, "o", "\r\n"] +[33.630759143829394, "o", "# This is a sample dataset metadata file that's used\r\n# to update the dataset's README and description.\r\n\r\nreadme: dataset-readme.md\r\ndescription: Weather history in Raleigh-Durham International airport joined with US domestic flights data (uploaded from Splitgraph release CI)\r\n"] +[33.63207998275762, "o", "# Sample dataset README\r\n\r\nDataset of weather history in Raleigh-Durham International airport, joined with\r\n[US domestic flights data](/splitgraph/domestic_us_flights).\r\n\r\nThis dataset was uploaded from a CI job.\r\n\r\n## Source\r\n\r\n[data.gov](https://catalog.data.gov/dataset/local-weather-archive)\r\n"] +[34.56439414024358, "o", "Metadata updated for repository splitgraph-demo/weather.\r\n"] +[34.59439414024358, "o", "\u001b[1m"] +[34.62439414024358, "o", "\u001b[36m"] +[34.65439414024358, "o", "\u001b[91m"] +[34.68439414024358, "o", "$"] +[34.714394140243584, "o", " "] +[34.744394140243585, "o", "\u001b[0m"] +[40.46945761680594, "o", "\u001b[H"] +[40.49945761680594, "o", "\u001b[J"] +[40.52945761680594, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Perform a request against an automatically-generated"] +[40.55945761680594, "o", "\r\n"] +[40.589457616805944, "o", "$ # Postgrest (https://postgrest.org) endpoint.\r\n"] +[40.619457616805946, "o", "$"] +[40.64945761680595, "o", " "] +[40.67945761680595, "o", "c"] +[40.70945761680595, "o", "u"] +[40.73945761680595, "o", "r"] +[40.76945761680595, "o", "l"] +[40.79945761680595, "o", " "] +[40.82945761680595, "o", "\""] +[40.859457616805955, "o", "h"] +[40.889457616805956, "o", "t"] +[40.91945761680596, "o", "t"] +[40.94945761680596, "o", "p"] +[40.97945761680596, "o", "s"] +[41.00945761680596, "o", ":"] +[41.03945761680596, "o", "/"] +[41.06945761680596, "o", "/"] +[41.099457616805964, "o", "d"] +[41.129457616805965, "o", "a"] +[41.159457616805966, "o", "t"] +[41.18945761680597, "o", "a"] +[41.21945761680597, "o", "."] +[41.24945761680597, "o", "s"] +[41.27945761680597, "o", "p"] +[41.30945761680597, "o", "l"] +[41.33945761680597, "o", "i"] +[41.369457616805974, "o", "t"] +[41.399457616805975, "o", "g"] +[41.429457616805976, "o", "r"] +[41.45945761680598, "o", "a"] +[41.48945761680598, "o", "p"] +[41.51945761680598, "o", "h"] +[41.54945761680598, "o", "."] +[41.57945761680598, "o", "c"] +[41.60945761680598, "o", "o"] +[41.639457616805984, "o", "m"] +[41.669457616805985, "o", "/"] +[41.69945761680599, "o", "s"] +[41.72945761680599, "o", "p"] +[41.75945761680599, "o", "l"] +[41.78945761680599, "o", "i"] +[41.81945761680599, "o", "t"] +[41.84945761680599, "o", "g"] +[41.87945761680599, "o", "r"] +[41.909457616805994, "o", "a"] +[41.939457616805996, "o", "p"] +[41.969457616806, "o", "h"] +[41.999457616806, "o", "-"] +[42.029457616806, "o", "d"] +[42.059457616806, "o", "e"] +[42.089457616806, "o", "m"] +[42.119457616806, "o", "o"] +[42.149457616806004, "o", "/"] +[42.179457616806005, "o", "w"] +[42.209457616806006, "o", "e"] +[42.23945761680601, "o", "a"] +[42.26945761680601, "o", "t"] +[42.29945761680601, "o", "h"] +[42.32945761680601, "o", "e"] +[42.35945761680601, "o", "r"] +[42.38945761680601, "o", "/"] +[42.419457616806014, "o", "i"] +[42.449457616806015, "o", "n"] +[42.479457616806016, "o", "i"] +[42.50945761680602, "o", "t"] +[42.53945761680602, "o", "i"] +[42.56945761680602, "o", "a"] +[42.59945761680602, "o", "l"] +[42.62945761680602, "o", "_"] +[42.65945761680602, "o", "d"] +[42.689457616806024, "o", "a"] +[42.719457616806025, "o", "t"] +[42.749457616806026, "o", "a"] +[42.77945761680603, "o", "/"] +[42.80945761680603, "o", "-"] +[42.83945761680603, "o", "/"] +[42.86945761680603, "o", "r"] +[42.89945761680603, "o", "e"] +[42.92945761680603, "o", "s"] +[42.959457616806034, "o", "t"] +[42.989457616806035, "o", "/"] +[43.01945761680604, "o", "r"] +[43.04945761680604, "o", "d"] +[43.07945761680604, "o", "u"] +[43.10945761680604, "o", "?"] +[43.13945761680604, "o", "d"] +[43.16945761680604, "o", "a"] +[43.19945761680604, "o", "t"] +[43.229457616806044, "o", "e"] +[43.259457616806046, "o", "="] +[43.28945761680605, "o", "e"] +[43.31945761680605, "o", "q"] +[43.34945761680605, "o", "."] +[43.37945761680605, "o", "2"] +[43.40945761680605, "o", "0"] +[43.43945761680605, "o", "0"] +[43.469457616806054, "o", "9"] +[43.499457616806055, "o", "-"] +[43.529457616806056, "o", "0"] +[43.55945761680606, "o", "8"] +[43.58945761680606, "o", "-"] +[43.61945761680606, "o", "2"] +[43.64945761680606, "o", "5"] +[43.67945761680606, "o", "T"] +[43.70945761680606, "o", "0"] +[43.739457616806064, "o", "0"] +[43.769457616806065, "o", ":"] +[43.799457616806066, "o", "0"] +[43.82945761680607, "o", "0"] +[43.85945761680607, "o", ":"] +[43.88945761680607, "o", "0"] +[43.91945761680607, "o", "0"] +[43.94945761680607, "o", "\""] +[43.97945761680607, "o", "\r\n"] +[44.009457616806074, "o", "\u001b[0m"] +[44.039457616806075, "o", "\r\n"] +[44.51046377182011, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[44.540463771820114, "o", "\u001b[1m"] +[44.570463771820116, "o", "\u001b[36m"] +[44.60046377182012, "o", "\u001b[91m"] +[44.63046377182012, "o", "$"] +[44.66046377182012, "o", " "] +[44.69046377182012, "o", "\u001b[0m"] +[49.72046377182012, "o", "\u001b[H"] +[49.75046377182012, "o", "\u001b[J"] +[49.78046377182012, "o", "\u001b[1m\u001b[36m\u001b[91m$ # sgr also has a shorthand to access the query API"] +[49.810463771820125, "o", "\r\n"] +[49.840463771820126, "o", "$"] +[49.87046377182013, "o", " "] +[49.90046377182013, "o", "s"] +[49.93046377182013, "o", "g"] +[49.96046377182013, "o", "r"] +[49.99046377182013, "o", " "] +[50.02046377182013, "o", "c"] +[50.050463771820134, "o", "l"] +[50.080463771820135, "o", "o"] +[50.110463771820136, "o", "u"] +[50.14046377182014, "o", "d"] +[50.17046377182014, "o", " "] +[50.20046377182014, "o", "c"] +[50.23046377182014, "o", "u"] +[50.26046377182014, "o", "r"] +[50.29046377182014, "o", "l"] +[50.320463771820144, "o", " "] +[50.350463771820145, "o", "s"] +[50.380463771820146, "o", "p"] +[50.41046377182015, "o", "l"] +[50.44046377182015, "o", "i"] +[50.47046377182015, "o", "t"] +[50.50046377182015, "o", "g"] +[50.53046377182015, "o", "r"] +[50.56046377182015, "o", "a"] +[50.590463771820154, "o", "p"] +[50.620463771820155, "o", "h"] +[50.65046377182016, "o", "-"] +[50.68046377182016, "o", "d"] +[50.71046377182016, "o", "e"] +[50.74046377182016, "o", "m"] +[50.77046377182016, "o", "o"] +[50.80046377182016, "o", "/"] +[50.83046377182016, "o", "w"] +[50.860463771820164, "o", "e"] +[50.890463771820166, "o", "a"] +[50.92046377182017, "o", "t"] +[50.95046377182017, "o", "h"] +[50.98046377182017, "o", "e"] +[51.01046377182017, "o", "r"] +[51.04046377182017, "o", ":"] +[51.07046377182017, "o", "i"] +[51.10046377182017, "o", "n"] +[51.130463771820175, "o", "i"] +[51.160463771820176, "o", "t"] +[51.19046377182018, "o", "i"] +[51.22046377182018, "o", "a"] +[51.25046377182018, "o", "l"] +[51.28046377182018, "o", "_"] +[51.31046377182018, "o", "d"] +[51.34046377182018, "o", "a"] +[51.370463771820184, "o", "t"] +[51.400463771820185, "o", "a"] +[51.430463771820186, "o", " "] +[51.46046377182019, "o", "\""] +[51.49046377182019, "o", "r"] +[51.52046377182019, "o", "d"] +[51.55046377182019, "o", "u"] +[51.58046377182019, "o", "?"] +[51.61046377182019, "o", "d"] +[51.640463771820194, "o", "a"] +[51.670463771820195, "o", "t"] +[51.700463771820196, "o", "e"] +[51.7304637718202, "o", "="] +[51.7604637718202, "o", "e"] +[51.7904637718202, "o", "q"] +[51.8204637718202, "o", "."] +[51.8504637718202, "o", "2"] +[51.8804637718202, "o", "0"] +[51.910463771820204, "o", "0"] +[51.940463771820205, "o", "9"] +[51.97046377182021, "o", "-"] +[52.00046377182021, "o", "0"] +[52.03046377182021, "o", "8"] +[52.06046377182021, "o", "-"] +[52.09046377182021, "o", "2"] +[52.12046377182021, "o", "5"] +[52.15046377182021, "o", "T"] +[52.180463771820214, "o", "0"] +[52.210463771820216, "o", "0"] +[52.24046377182022, "o", ":"] +[52.27046377182022, "o", "0"] +[52.30046377182022, "o", "0"] +[52.33046377182022, "o", ":"] +[52.36046377182022, "o", "0"] +[52.39046377182022, "o", "0"] +[52.42046377182022, "o", "\""] +[52.450463771820225, "o", "\r\n"] +[52.480463771820226, "o", "\u001b[0m"] +[52.51046377182023, "o", "\r\n"] +[53.51046377182023, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] +[53.54046377182023, "o", "\u001b[1m"] +[53.57046377182023, "o", "\u001b[36m"] +[53.60046377182023, "o", "\u001b[91m"] +[53.63046377182023, "o", "$"] +[53.66046377182023, "o", " "] +[53.690463771820234, "o", "\u001b[0m"] +[58.720463771820235, "o", "\u001b[H"] +[58.750463771820236, "o", "\u001b[J"] +[58.78046377182024, "o", "\u001b[1m\u001b[36m\u001b[91m$ # You can also run a query against the Splitgraph Data Delivery Network."] +[58.81046377182024, "o", "\r\n"] +[58.84046377182024, "o", "$ # It supports most PostgresSQL clients and lets you query Splitgraph images and other\r\n"] +[58.87046377182024, "o", "$ # datasets proxied by Splitgraph.\r\n"] +[58.90046377182024, "o", "$"] +[58.93046377182024, "o", " "] +[58.960463771820244, "o", "s"] +[58.990463771820245, "o", "g"] +[59.020463771820246, "o", "r"] +[59.05046377182025, "o", " "] +[59.08046377182025, "o", "c"] +[59.11046377182025, "o", "l"] +[59.14046377182025, "o", "o"] +[59.17046377182025, "o", "u"] +[59.20046377182025, "o", "d"] +[59.230463771820254, "o", " "] +[59.260463771820255, "o", "s"] +[59.29046377182026, "o", "q"] +[59.32046377182026, "o", "l"] +[59.35046377182026, "o", " "] +[59.38046377182026, "o", "\""] +[59.41046377182026, "o", "S"] +[59.44046377182026, "o", "E"] +[59.47046377182026, "o", "L"] +[59.500463771820264, "o", "E"] +[59.530463771820266, "o", "C"] +[59.56046377182027, "o", "T"] +[59.59046377182027, "o", " "] +[59.62046377182027, "o", "d"] +[59.65046377182027, "o", "a"] +[59.68046377182027, "o", "t"] +[59.71046377182027, "o", "e"] +[59.740463771820274, "o", ","] +[59.770463771820275, "o", " "] +[59.800463771820276, "o", "t"] +[59.83046377182028, "o", "e"] +[59.86046377182028, "o", "m"] +[59.89046377182028, "o", "p"] +[59.92046377182028, "o", "e"] +[59.95046377182028, "o", "r"] +[59.98046377182028, "o", "a"] +[60.010463771820284, "o", "t"] +[60.040463771820285, "o", "u"] +[60.070463771820286, "o", "r"] +[60.10046377182029, "o", "e"] +[60.13046377182029, "o", "m"] +[60.16046377182029, "o", "i"] +[60.19046377182029, "o", "n"] +[60.22046377182029, "o", ","] +[60.25046377182029, "o", " "] +[60.280463771820294, "o", "t"] +[60.310463771820295, "o", "e"] +[60.340463771820296, "o", "m"] +[60.3704637718203, "o", "p"] +[60.4004637718203, "o", "e"] +[60.4304637718203, "o", "r"] +[60.4604637718203, "o", "a"] +[60.4904637718203, "o", "t"] +[60.5204637718203, "o", "u"] +[60.550463771820304, "o", "r"] +[60.580463771820305, "o", "e"] +[60.61046377182031, "o", "m"] +[60.64046377182031, "o", "a"] +[60.67046377182031, "o", "x"] +[60.70046377182031, "o", "\r\n "] +[60.73046377182031, "o", "F"] +[60.76046377182031, "o", "R"] +[60.79046377182031, "o", "O"] +[60.820463771820314, "o", "M"] +[60.850463771820316, "o", " "] +[60.88046377182032, "o", "\\"] +[60.91046377182032, "o", "\""] +[60.94046377182032, "o", "s"] +[60.97046377182032, "o", "p"] +[61.00046377182032, "o", "l"] +[61.03046377182032, "o", "i"] +[61.060463771820324, "o", "t"] +[61.090463771820325, "o", "g"] +[61.120463771820326, "o", "r"] +[61.15046377182033, "o", "a"] +[61.18046377182033, "o", "p"] +[61.21046377182033, "o", "h"] +[61.24046377182033, "o", "-"] +[61.27046377182033, "o", "d"] +[61.30046377182033, "o", "e"] +[61.330463771820334, "o", "m"] +[61.360463771820335, "o", "o"] +[61.390463771820336, "o", "/"] +[61.42046377182034, "o", "w"] +[61.45046377182034, "o", "e"] +[61.48046377182034, "o", "a"] +[61.51046377182034, "o", "t"] +[61.54046377182034, "o", "h"] +[61.57046377182034, "o", "e"] +[61.600463771820344, "o", "r"] +[61.630463771820345, "o", ":"] +[61.660463771820346, "o", "i"] +[61.69046377182035, "o", "n"] +[61.72046377182035, "o", "i"] +[61.75046377182035, "o", "t"] +[61.78046377182035, "o", "i"] +[61.81046377182035, "o", "a"] +[61.84046377182035, "o", "l"] +[61.870463771820354, "o", "_"] +[61.900463771820355, "o", "d"] +[61.93046377182036, "o", "a"] +[61.96046377182036, "o", "t"] +[61.99046377182036, "o", "a"] +[62.02046377182036, "o", "\\"] +[62.05046377182036, "o", "\""] +[62.08046377182036, "o", "."] +[62.11046377182036, "o", "r"] +[62.140463771820365, "o", "d"] +[62.170463771820366, "o", "u"] +[62.20046377182037, "o", "\r\n "] +[62.23046377182037, "o", "W"] +[62.26046377182037, "o", "H"] +[62.29046377182037, "o", "E"] +[62.32046377182037, "o", "R"] +[62.35046377182037, "o", "E"] +[62.380463771820374, "o", " "] +[62.410463771820375, "o", "d"] +[62.440463771820376, "o", "a"] +[62.47046377182038, "o", "t"] +[62.50046377182038, "o", "e"] +[62.53046377182038, "o", "_"] +[62.56046377182038, "o", "t"] +[62.59046377182038, "o", "r"] +[62.62046377182038, "o", "u"] +[62.650463771820384, "o", "n"] +[62.680463771820385, "o", "c"] +[62.710463771820386, "o", "("] +[62.74046377182039, "o", "'"] +[62.77046377182039, "o", "m"] +[62.80046377182039, "o", "o"] +[62.83046377182039, "o", "n"] +[62.86046377182039, "o", "t"] +[62.89046377182039, "o", "h"] +[62.920463771820394, "o", "'"] +[62.950463771820395, "o", ","] +[62.980463771820396, "o", " "] +[63.0104637718204, "o", "d"] +[63.0404637718204, "o", "a"] +[63.0704637718204, "o", "t"] +[63.1004637718204, "o", "e"] +[63.1304637718204, "o", ")"] +[63.1604637718204, "o", " "] +[63.190463771820404, "o", "="] +[63.220463771820405, "o", " "] +[63.25046377182041, "o", "'"] +[63.28046377182041, "o", "2"] +[63.31046377182041, "o", "0"] +[63.34046377182041, "o", "0"] +[63.37046377182041, "o", "9"] +[63.40046377182041, "o", "-"] +[63.43046377182041, "o", "0"] +[63.460463771820415, "o", "8"] +[63.490463771820416, "o", "-"] +[63.52046377182042, "o", "0"] +[63.55046377182042, "o", "1"] +[63.58046377182042, "o", "'"] +[63.61046377182042, "o", "\""] +[63.64046377182042, "o", "\r\n"] +[63.67046377182042, "o", "\u001b[0m"] +[63.700463771820424, "o", "\r\n"] +[64.70046377182042, "o", "2009-08-01 00:00:00 73 91.9\r\n2009-08-02 00:00:00 73.9 82.9\r\n2009-08-03 00:00:00 70 95\r\n2009-08-04 00:00:00 66.9 95\r\n2009-08-05 00:00:00 72 96.1\r\n2009-08-06 00:00:00 70 84.9\r\n2009-08-07 00:00:00 68 88\r\n2009-08-08 00:00:00 69.1 91\r\n2009-08-09 00:00:00 70 99\r\n2009-08-10 00:00:00 72 99\r\n"] +[64.73046377182042, "o", "\u001b[1m"] +[64.76046377182043, "o", "\u001b[36m"] +[64.79046377182043, "o", "\u001b[91m"] +[64.82046377182043, "o", "$"] +[64.85046377182043, "o", " "] +[64.88046377182043, "o", "\u001b[0m"] +[69.91046377182043, "o", "\u001b[H"] +[69.94046377182043, "o", "\u001b[J"] +[69.97046377182043, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The query API also supports running one-off Splitfile commands against a repository,"] +[70.00046377182043, "o", "\r\n"] +[70.03046377182044, "o", "$ # creating new images that can be pulled. sgr handles authentication for this automatically.\r\n"] +[70.06046377182044, "o", "$"] +[70.09046377182044, "o", " "] +[70.12046377182044, "o", "c"] +[70.15046377182044, "o", "a"] +[70.18046377182044, "o", "t"] +[70.21046377182044, "o", " "] +[70.24046377182044, "o", "r"] +[70.27046377182045, "o", "e"] +[70.30046377182045, "o", "q"] +[70.33046377182045, "o", "u"] +[70.36046377182045, "o", "e"] +[70.39046377182045, "o", "s"] +[70.42046377182045, "o", "t"] +[70.45046377182045, "o", "_"] +[70.48046377182045, "o", "1"] +[70.51046377182045, "o", "."] +[70.54046377182046, "o", "j"] +[70.57046377182046, "o", "s"] +[70.60046377182046, "o", "o"] +[70.63046377182046, "o", "n"] +[70.66046377182046, "o", "\r\n"] +[70.69046377182046, "o", "$"] +[70.72046377182046, "o", " "] +[70.75046377182046, "o", "s"] +[70.78046377182046, "o", "g"] +[70.81046377182047, "o", "r"] +[70.84046377182047, "o", " "] +[70.87046377182047, "o", "c"] +[70.90046377182047, "o", "l"] +[70.93046377182047, "o", "o"] +[70.96046377182047, "o", "u"] +[70.99046377182047, "o", "d"] +[71.02046377182047, "o", " "] +[71.05046377182047, "o", "c"] +[71.08046377182048, "o", "u"] +[71.11046377182048, "o", "r"] +[71.14046377182048, "o", "l"] +[71.17046377182048, "o", " "] +[71.20046377182048, "o", "-"] +[71.23046377182048, "o", "t"] +[71.26046377182048, "o", " "] +[71.29046377182048, "o", "s"] +[71.32046377182049, "o", "p"] +[71.35046377182049, "o", "l"] +[71.38046377182049, "o", "i"] +[71.41046377182049, "o", "t"] +[71.44046377182049, "o", "f"] +[71.47046377182049, "o", "i"] +[71.50046377182049, "o", "l"] +[71.5304637718205, "o", "e"] +[71.5604637718205, "o", " "] +[71.5904637718205, "o", "s"] +[71.6204637718205, "o", "p"] +[71.6504637718205, "o", "l"] +[71.6804637718205, "o", "i"] +[71.7104637718205, "o", "t"] +[71.7404637718205, "o", "g"] +[71.7704637718205, "o", "r"] +[71.8004637718205, "o", "a"] +[71.8304637718205, "o", "p"] +[71.8604637718205, "o", "h"] +[71.8904637718205, "o", "-"] +[71.92046377182051, "o", "d"] +[71.95046377182051, "o", "e"] +[71.98046377182051, "o", "m"] +[72.01046377182051, "o", "o"] +[72.04046377182051, "o", "/"] +[72.07046377182051, "o", "w"] +[72.10046377182051, "o", "e"] +[72.13046377182052, "o", "a"] +[72.16046377182052, "o", "t"] +[72.19046377182052, "o", "h"] +[72.22046377182052, "o", "e"] +[72.25046377182052, "o", "r"] +[72.28046377182052, "o", ":"] +[72.31046377182052, "o", "i"] +[72.34046377182052, "o", "n"] +[72.37046377182052, "o", "i"] +[72.40046377182053, "o", "t"] +[72.43046377182053, "o", "i"] +[72.46046377182053, "o", "a"] +[72.49046377182053, "o", "l"] +[72.52046377182053, "o", "_"] +[72.55046377182053, "o", "d"] +[72.58046377182053, "o", "a"] +[72.61046377182053, "o", "t"] +[72.64046377182054, "o", "a"] +[72.67046377182054, "o", " "] +[72.70046377182054, "o", "@"] +[72.73046377182054, "o", "r"] +[72.76046377182054, "o", "e"] +[72.79046377182054, "o", "q"] +[72.82046377182054, "o", "u"] +[72.85046377182054, "o", "e"] +[72.88046377182054, "o", "s"] +[72.91046377182055, "o", "t"] +[72.94046377182055, "o", "_"] +[72.97046377182055, "o", "1"] +[73.00046377182055, "o", "."] +[73.03046377182055, "o", "j"] +[73.06046377182055, "o", "s"] +[73.09046377182055, "o", "o"] +[73.12046377182055, "o", "n"] +[73.15046377182055, "o", "\r\n"] +[73.18046377182056, "o", "\u001b[0m"] +[73.21046377182056, "o", "\r\n"] +[73.21231676101733, "o", "{\"command\": \"FROM splitgraph/domestic_us_flights:latest IMPORT {SELECT fly_month, SUM(passengers) AS total_passengers FROM flights WHERE origin_airport = 'RDU' OR destination_airport = 'RDU' GROUP BY fly_month ORDER BY fly_month} AS flights\",\r\n \"tag\": \"with_flight_data\"}\r\n\r\n"] +[74.21231676101733, "o", "{\"image_hash\":\"75055f3545f0a354608c007de889604a4926325619b859e4c92b7333ee711d34\"}"] +[74.24231676101734, "o", "\u001b[1m"] +[74.27231676101734, "o", "\u001b[36m"] +[74.30231676101734, "o", "\u001b[91m"] +[74.33231676101734, "o", "$"] +[74.36231676101734, "o", " "] +[74.39231676101734, "o", "\u001b[0m"] +[79.42231676101734, "o", "\u001b[H"] +[79.45231676101734, "o", "\u001b[J"] +[79.48231676101734, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run another command against the new layer to join the two datasets"] +[79.51231676101735, "o", "\r\n"] +[79.54231676101735, "o", "$"] +[79.57231676101735, "o", " "] +[79.60231676101735, "o", "c"] +[79.63231676101735, "o", "a"] +[79.66231676101735, "o", "t"] +[79.69231676101735, "o", " "] +[79.72231676101735, "o", "r"] +[79.75231676101735, "o", "e"] +[79.78231676101736, "o", "q"] +[79.81231676101736, "o", "u"] +[79.84231676101736, "o", "e"] +[79.87231676101736, "o", "s"] +[79.90231676101736, "o", "t"] +[79.93231676101736, "o", "_"] +[79.96231676101736, "o", "2"] +[79.99231676101736, "o", "."] +[80.02231676101736, "o", "j"] +[80.05231676101737, "o", "s"] +[80.08231676101737, "o", "o"] +[80.11231676101737, "o", "n"] +[80.14231676101737, "o", "\r\n"] +[80.17231676101737, "o", "$"] +[80.20231676101737, "o", " "] +[80.23231676101737, "o", "s"] +[80.26231676101737, "o", "g"] +[80.29231676101737, "o", "r"] +[80.32231676101738, "o", " "] +[80.35231676101738, "o", "c"] +[80.38231676101738, "o", "l"] +[80.41231676101738, "o", "o"] +[80.44231676101738, "o", "u"] +[80.47231676101738, "o", "d"] +[80.50231676101738, "o", " "] +[80.53231676101738, "o", "c"] +[80.56231676101739, "o", "u"] +[80.59231676101739, "o", "r"] +[80.62231676101739, "o", "l"] +[80.65231676101739, "o", " "] +[80.68231676101739, "o", "-"] +[80.71231676101739, "o", "t"] +[80.74231676101739, "o", " "] +[80.7723167610174, "o", "s"] +[80.8023167610174, "o", "p"] +[80.8323167610174, "o", "l"] +[80.8623167610174, "o", "i"] +[80.8923167610174, "o", "t"] +[80.9223167610174, "o", "f"] +[80.9523167610174, "o", "i"] +[80.9823167610174, "o", "l"] +[81.0123167610174, "o", "e"] +[81.0423167610174, "o", " "] +[81.0723167610174, "o", "s"] +[81.1023167610174, "o", "p"] +[81.1323167610174, "o", "l"] +[81.16231676101741, "o", "i"] +[81.19231676101741, "o", "t"] +[81.22231676101741, "o", "g"] +[81.25231676101741, "o", "r"] +[81.28231676101741, "o", "a"] +[81.31231676101741, "o", "p"] +[81.34231676101741, "o", "h"] +[81.37231676101742, "o", "-"] +[81.40231676101742, "o", "d"] +[81.43231676101742, "o", "e"] +[81.46231676101742, "o", "m"] +[81.49231676101742, "o", "o"] +[81.52231676101742, "o", "/"] +[81.55231676101742, "o", "w"] +[81.58231676101742, "o", "e"] +[81.61231676101742, "o", "a"] +[81.64231676101743, "o", "t"] +[81.67231676101743, "o", "h"] +[81.70231676101743, "o", "e"] +[81.73231676101743, "o", "r"] +[81.76231676101743, "o", ":"] +[81.79231676101743, "o", "w"] +[81.82231676101743, "o", "i"] +[81.85231676101743, "o", "t"] +[81.88231676101744, "o", "h"] +[81.91231676101744, "o", "_"] +[81.94231676101744, "o", "f"] +[81.97231676101744, "o", "l"] +[82.00231676101744, "o", "i"] +[82.03231676101744, "o", "g"] +[82.06231676101744, "o", "h"] +[82.09231676101744, "o", "t"] +[82.12231676101744, "o", "_"] +[82.15231676101745, "o", "d"] +[82.18231676101745, "o", "a"] +[82.21231676101745, "o", "t"] +[82.24231676101745, "o", "a"] +[82.27231676101745, "o", " "] +[82.30231676101745, "o", "@"] +[82.33231676101745, "o", "r"] +[82.36231676101745, "o", "e"] +[82.39231676101745, "o", "q"] +[82.42231676101746, "o", "u"] +[82.45231676101746, "o", "e"] +[82.48231676101746, "o", "s"] +[82.51231676101746, "o", "t"] +[82.54231676101746, "o", "_"] +[82.57231676101746, "o", "2"] +[82.60231676101746, "o", "."] +[82.63231676101746, "o", "j"] +[82.66231676101746, "o", "s"] +[82.69231676101747, "o", "o"] +[82.72231676101747, "o", "n"] +[82.75231676101747, "o", "\r\n"] +[82.78231676101747, "o", "\u001b[0m"] +[82.81231676101747, "o", "\r\n"] +[82.81366978645387, "o", "{\"command\": \"SQL CREATE TABLE rdu_flights_weather AS ( WITH monthly_summary AS (SELECT date_trunc ('month', date) AS month, AVG(temperaturemin) AS tmin_avg, AVG(temperaturemax) AS tmax_avg FROM rdu GROUP BY month) SELECT w.month, w.tmin_avg, w.tmax_avg, f.total_passengers FROM monthly_summary w JOIN flights f ON w.month = f.fly_month)\",\r\n \"tag\": \"joined_data\"}\r\n\r\n"] +[83.81366978645387, "o", "{\"image_hash\":\"16fbe33aeec90bb40783b81a3e55ff10efa457cbd86cb2139608de77af90a5ff\"}"] +[83.84366978645387, "o", "\u001b[1m"] +[83.87366978645387, "o", "\u001b[36m"] +[83.90366978645388, "o", "\u001b[91m"] +[83.93366978645388, "o", "$"] +[83.96366978645388, "o", " "] +[83.99366978645388, "o", "\u001b[0m"] +[89.02366978645388, "o", "\u001b[H"] +[89.05366978645388, "o", "\u001b[J"] +[89.08366978645388, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Pull the dataset and check out the new image"] +[89.11366978645388, "o", "\r\n"] +[89.14366978645388, "o", "$"] +[89.17366978645389, "o", " "] +[89.20366978645389, "o", "s"] +[89.23366978645389, "o", "g"] +[89.26366978645389, "o", "r"] +[89.29366978645389, "o", " "] +[89.32366978645389, "o", "p"] +[89.35366978645389, "o", "u"] +[89.3836697864539, "o", "l"] +[89.4136697864539, "o", "l"] +[89.4436697864539, "o", " "] +[89.4736697864539, "o", "w"] +[89.5036697864539, "o", "e"] +[89.5336697864539, "o", "a"] +[89.5636697864539, "o", "t"] +[89.5936697864539, "o", "h"] +[89.6236697864539, "o", "e"] +[89.6536697864539, "o", "r"] +[89.6836697864539, "o", "\r\n"] +[89.7136697864539, "o", "$"] +[89.7436697864539, "o", " "] +[89.77366978645391, "o", "s"] +[89.80366978645391, "o", "g"] +[89.83366978645391, "o", "r"] +[89.86366978645391, "o", " "] +[89.89366978645391, "o", "c"] +[89.92366978645391, "o", "h"] +[89.95366978645391, "o", "e"] +[89.98366978645392, "o", "c"] +[90.01366978645392, "o", "k"] +[90.04366978645392, "o", "o"] +[90.07366978645392, "o", "u"] +[90.10366978645392, "o", "t"] +[90.13366978645392, "o", " "] +[90.16366978645392, "o", "w"] +[90.19366978645392, "o", "e"] +[90.22366978645393, "o", "a"] +[90.25366978645393, "o", "t"] +[90.28366978645393, "o", "h"] +[90.31366978645393, "o", "e"] +[90.34366978645393, "o", "r"] +[90.37366978645393, "o", ":"] +[90.40366978645393, "o", "j"] +[90.43366978645393, "o", "o"] +[90.46366978645393, "o", "i"] +[90.49366978645394, "o", "n"] +[90.52366978645394, "o", "e"] +[90.55366978645394, "o", "d"] +[90.58366978645394, "o", "_"] +[90.61366978645394, "o", "d"] +[90.64366978645394, "o", "a"] +[90.67366978645394, "o", "t"] +[90.70366978645394, "o", "a"] +[90.73366978645394, "o", "\r\n"] +[90.76366978645395, "o", "\u001b[0m"] +[90.79366978645395, "o", "\r\n"] +[91.2568472290046, "o", "Gathering remote metadata...\r\n"] +[92.2568472290046, "o", "Fetched metadata for 2 images, 5 tables, 2 objects and 2 tags.\r\n"] +[92.73215302467416, "o", "Need to download 1 object (3.02 KiB), cache occupancy: 0.00 B/10.00 GiB\r\n"] +[92.78987630844186, "o", "Fetching 1 object, total size 3.02 KiB\r\n"] +[92.79057010650705, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (85b17bb993c0441f83f3619be8faba12@data.splitgraph.com:5432/sgregistry)...\r\n"] +[93.79057010650705, "o", "\r 0%| | 0/1 [00:00 Foreign Scan on precinct_results (cost=20.00..9784680.00 rows=489234 width=20)\r\nFilter: ((state)::text = 'New York'::text)\r\nMulticorn: Original Multicorn quals: [state = New York]\r\nMulticorn: CNF quals: [[('state', '=', 'New York')]]\r\nMulticorn: Objects removed by filter: 15\r\nMulticorn: Scan through 5 object(s) (6.63 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Deforming true\r\n"] -[13.179512872695835, "o", "\u001b[1m"] -[13.209512872695834, "o", "\u001b[36m"] -[13.239512872695833, "o", "\u001b[91m"] -[13.269512872695833, "o", "$"] -[13.299512872695832, "o", " "] -[13.329512872695831, "o", "\u001b[0m"] -[18.35951287269583, "o", "\u001b[H"] -[18.389512872695832, "o", "\u001b[J"] -[18.419512872695833, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Currently we have no fragments in cache. Let's run this query and check the cache again"] -[18.449512872695834, "o", "\r\n"] -[18.479512872695835, "o", "$"] -[18.509512872695836, "o", " "] -[18.539512872695838, "o", "s"] -[18.56951287269584, "o", "g"] -[18.59951287269584, "o", "r"] -[18.62951287269584, "o", " "] -[18.659512872695842, "o", "o"] -[18.689512872695843, "o", "b"] -[18.719512872695844, "o", "j"] -[18.749512872695846, "o", "e"] -[18.779512872695847, "o", "c"] -[18.809512872695848, "o", "t"] -[18.83951287269585, "o", "s"] -[18.86951287269585, "o", " "] -[18.89951287269585, "o", "-"] -[18.929512872695852, "o", "-"] -[18.959512872695854, "o", "l"] -[18.989512872695855, "o", "o"] -[19.019512872695856, "o", "c"] -[19.049512872695857, "o", "a"] -[19.079512872695858, "o", "l"] -[19.10951287269586, "o", "\r\n"] -[19.13951287269586, "o", "$"] -[19.16951287269586, "o", " "] -[19.199512872695863, "o", "s"] -[19.229512872695864, "o", "g"] -[19.259512872695865, "o", "r"] -[19.289512872695866, "o", " "] -[19.319512872695867, "o", "s"] -[19.34951287269587, "o", "q"] -[19.37951287269587, "o", "l"] -[19.40951287269587, "o", " "] -[19.43951287269587, "o", "-"] -[19.469512872695873, "o", "-"] -[19.499512872695874, "o", "i"] -[19.529512872695875, "o", "m"] -[19.559512872695876, "o", "a"] -[19.589512872695877, "o", "g"] -[19.61951287269588, "o", "e"] -[19.64951287269588, "o", " "] -[19.67951287269588, "o", "s"] -[19.709512872695882, "o", "p"] -[19.739512872695883, "o", "l"] -[19.769512872695884, "o", "i"] -[19.799512872695885, "o", "t"] -[19.829512872695886, "o", "g"] -[19.859512872695888, "o", "r"] -[19.88951287269589, "o", "a"] -[19.91951287269589, "o", "p"] -[19.94951287269589, "o", "h"] -[19.979512872695892, "o", "/"] -[20.009512872695893, "o", "2"] -[20.039512872695894, "o", "0"] -[20.069512872695896, "o", "1"] -[20.099512872695897, "o", "6"] -[20.129512872695898, "o", "_"] -[20.1595128726959, "o", "e"] -[20.1895128726959, "o", "l"] -[20.2195128726959, "o", "e"] -[20.249512872695902, "o", "c"] -[20.279512872695904, "o", "t"] -[20.309512872695905, "o", "i"] -[20.339512872695906, "o", "o"] -[20.369512872695907, "o", "n"] -[20.399512872695908, "o", ":"] -[20.42951287269591, "o", "l"] -[20.45951287269591, "o", "a"] -[20.48951287269591, "o", "t"] -[20.519512872695913, "o", "e"] -[20.549512872695914, "o", "s"] -[20.579512872695915, "o", "t"] -[20.609512872695916, "o", " "] -[20.639512872695917, "o", "\\"] -[20.66951287269592, "o", "\r\n "] -[20.69951287269592, "o", "\""] -[20.72951287269592, "o", "S"] -[20.75951287269592, "o", "E"] -[20.789512872695923, "o", "L"] -[20.819512872695924, "o", "E"] -[20.849512872695925, "o", "C"] -[20.879512872695926, "o", "T"] -[20.909512872695927, "o", " "] -[20.93951287269593, "o", "S"] -[20.96951287269593, "o", "U"] -[20.99951287269593, "o", "M"] -[21.029512872695932, "o", "("] -[21.059512872695933, "o", "v"] -[21.089512872695934, "o", "o"] -[21.119512872695935, "o", "t"] -[21.149512872695936, "o", "e"] -[21.179512872695938, "o", "s"] -[21.20951287269594, "o", ")"] -[21.23951287269594, "o", " "] -[21.26951287269594, "o", "F"] -[21.299512872695942, "o", "R"] -[21.329512872695943, "o", "O"] -[21.359512872695944, "o", "M"] -[21.389512872695946, "o", " "] -[21.419512872695947, "o", "p"] -[21.449512872695948, "o", "r"] -[21.47951287269595, "o", "e"] -[21.50951287269595, "o", "c"] -[21.53951287269595, "o", "i"] -[21.569512872695952, "o", "n"] -[21.599512872695954, "o", "c"] -[21.629512872695955, "o", "t"] -[21.659512872695956, "o", "_"] -[21.689512872695957, "o", "r"] -[21.719512872695958, "o", "e"] -[21.74951287269596, "o", "s"] -[21.77951287269596, "o", "u"] -[21.80951287269596, "o", "l"] -[21.839512872695963, "o", "t"] -[21.869512872695964, "o", "s"] -[21.899512872695965, "o", " "] -[21.929512872695966, "o", "W"] -[21.959512872695967, "o", "H"] -[21.98951287269597, "o", "E"] -[22.01951287269597, "o", "R"] -[22.04951287269597, "o", "E"] -[22.07951287269597, "o", " "] -[22.109512872695973, "o", "s"] -[22.139512872695974, "o", "t"] -[22.169512872695975, "o", "a"] -[22.199512872695976, "o", "t"] -[22.229512872695977, "o", "e"] -[22.25951287269598, "o", " "] -[22.28951287269598, "o", "="] -[22.31951287269598, "o", " "] -[22.349512872695982, "o", "'"] -[22.379512872695983, "o", "N"] -[22.409512872695984, "o", "e"] -[22.439512872695985, "o", "w"] -[22.469512872695987, "o", " "] -[22.499512872695988, "o", "Y"] -[22.52951287269599, "o", "o"] -[22.55951287269599, "o", "r"] -[22.58951287269599, "o", "k"] -[22.619512872695992, "o", "'"] -[22.649512872695993, "o", "\""] -[22.679512872695994, "o", "\r\n"] -[22.709512872695996, "o", "$"] -[22.739512872695997, "o", " "] -[22.769512872695998, "o", "s"] -[22.799512872696, "o", "g"] -[22.829512872696, "o", "r"] -[22.859512872696, "o", " "] -[22.889512872696002, "o", "o"] -[22.919512872696004, "o", "b"] -[22.949512872696005, "o", "j"] -[22.979512872696006, "o", "e"] -[23.009512872696007, "o", "c"] -[23.039512872696008, "o", "t"] -[23.06951287269601, "o", "s"] -[23.09951287269601, "o", " "] -[23.12951287269601, "o", "-"] -[23.159512872696013, "o", "-"] -[23.189512872696014, "o", "l"] -[23.219512872696015, "o", "o"] -[23.249512872696016, "o", "c"] -[23.279512872696017, "o", "a"] -[23.30951287269602, "o", "l"] -[23.33951287269602, "o", "\r\n"] -[23.36951287269602, "o", "\u001b[0m"] -[23.39951287269602, "o", "\r\n"] -[23.622346506118873, "o", "\r\n"] -[24.622346506118873, "o", "7.91188e+06\r\n"] -[24.85089527130137, "o", "o65dbd9dc992982689ec65866ab733be69c897c659d93488457a2fccb63e97c\r\no974b20261ee5f1ac124a8445a65c00e6377cfabb93b5db92bd60fc7ca3fcee\r\no9c33b53f1a4872c598ad9d08aaafd78fabce1f16ef4c5e19ad9756b9b85fda\r\no9d4cf85101cc4d431c895998cf1cad642f1fe6cd923c8209f2df38441afeeb\r\noc438159794e378ca23c306143ccdc7ce1683045f80a511aeeabb19302be63d\r\n"] -[24.88089527130137, "o", "\u001b[1m"] -[24.91089527130137, "o", "\u001b[36m"] -[24.940895271301372, "o", "\u001b[91m"] -[24.970895271301373, "o", "$"] -[25.000895271301374, "o", " "] -[25.030895271301375, "o", "\u001b[0m"] -[30.060895271301376, "o", "\u001b[H"] -[30.090895271301378, "o", "\u001b[J"] -[30.12089527130138, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Since default indexing in Splitgraph is done by min-max values for every column"] -[30.15089527130138, "o", "\r\n"] -[30.18089527130138, "o", "$ # in every fragment, it's going to do worse if multiple fragments span the same value\r\n"] -[30.210895271301382, "o", "$"] -[30.240895271301383, "o", " "] -[30.270895271301384, "o", "s"] -[30.300895271301385, "o", "g"] -[30.330895271301387, "o", "r"] -[30.360895271301388, "o", " "] -[30.39089527130139, "o", "s"] -[30.42089527130139, "o", "q"] -[30.45089527130139, "o", "l"] -[30.480895271301392, "o", " "] -[30.510895271301393, "o", "-"] -[30.540895271301395, "o", "-"] -[30.570895271301396, "o", "i"] -[30.600895271301397, "o", "m"] -[30.630895271301398, "o", "a"] -[30.6608952713014, "o", "g"] -[30.6908952713014, "o", "e"] -[30.7208952713014, "o", " "] -[30.750895271301403, "o", "s"] -[30.780895271301404, "o", "p"] -[30.810895271301405, "o", "l"] -[30.840895271301406, "o", "i"] -[30.870895271301407, "o", "t"] -[30.90089527130141, "o", "g"] -[30.93089527130141, "o", "r"] -[30.96089527130141, "o", "a"] -[30.99089527130141, "o", "p"] -[31.020895271301413, "o", "h"] -[31.050895271301414, "o", "/"] -[31.080895271301415, "o", "2"] -[31.110895271301416, "o", "0"] -[31.140895271301417, "o", "1"] -[31.17089527130142, "o", "6"] -[31.20089527130142, "o", "_"] -[31.23089527130142, "o", "e"] -[31.260895271301422, "o", "l"] -[31.290895271301423, "o", "e"] -[31.320895271301424, "o", "c"] -[31.350895271301425, "o", "t"] -[31.380895271301426, "o", "i"] -[31.410895271301428, "o", "o"] -[31.44089527130143, "o", "n"] -[31.47089527130143, "o", ":"] -[31.50089527130143, "o", "l"] -[31.530895271301432, "o", "a"] -[31.560895271301433, "o", "t"] -[31.590895271301434, "o", "e"] -[31.620895271301436, "o", "s"] -[31.650895271301437, "o", "t"] -[31.680895271301438, "o", " "] -[31.71089527130144, "o", "\\"] -[31.74089527130144, "o", "\r\n "] -[31.77089527130144, "o", "\""] -[31.800895271301442, "o", "E"] -[31.830895271301443, "o", "X"] -[31.860895271301445, "o", "P"] -[31.890895271301446, "o", "L"] -[31.920895271301447, "o", "A"] -[31.950895271301448, "o", "I"] -[31.98089527130145, "o", "N"] -[32.01089527130145, "o", " "] -[32.04089527130145, "o", "S"] -[32.07089527130145, "o", "E"] -[32.100895271301454, "o", "L"] -[32.130895271301455, "o", "E"] -[32.160895271301456, "o", "C"] -[32.19089527130146, "o", "T"] -[32.22089527130146, "o", " "] -[32.25089527130146, "o", "S"] -[32.28089527130146, "o", "U"] -[32.31089527130146, "o", "M"] -[32.34089527130146, "o", "("] -[32.370895271301464, "o", "v"] -[32.400895271301465, "o", "o"] -[32.430895271301466, "o", "t"] -[32.46089527130147, "o", "e"] -[32.49089527130147, "o", "s"] -[32.52089527130147, "o", ")"] -[32.55089527130147, "o", " "] -[32.58089527130147, "o", "F"] -[32.61089527130147, "o", "R"] -[32.640895271301474, "o", "O"] -[32.670895271301475, "o", "M"] -[32.700895271301476, "o", " "] -[32.73089527130148, "o", "p"] -[32.76089527130148, "o", "r"] -[32.79089527130148, "o", "e"] -[32.82089527130148, "o", "c"] -[32.85089527130148, "o", "i"] -[32.88089527130148, "o", "n"] -[32.910895271301484, "o", "c"] -[32.940895271301486, "o", "t"] -[32.97089527130149, "o", "_"] -[33.00089527130149, "o", "r"] -[33.03089527130149, "o", "e"] -[33.06089527130149, "o", "s"] -[33.09089527130149, "o", "u"] -[33.12089527130149, "o", "l"] -[33.15089527130149, "o", "t"] -[33.180895271301495, "o", "s"] -[33.210895271301496, "o", " "] -[33.2408952713015, "o", "W"] -[33.2708952713015, "o", "H"] -[33.3008952713015, "o", "E"] -[33.3308952713015, "o", "R"] -[33.3608952713015, "o", "E"] -[33.3908952713015, "o", " "] -[33.420895271301504, "o", "c"] -[33.450895271301505, "o", "o"] -[33.480895271301506, "o", "u"] -[33.51089527130151, "o", "n"] -[33.54089527130151, "o", "t"] -[33.57089527130151, "o", "y"] -[33.60089527130151, "o", "_"] -[33.63089527130151, "o", "n"] -[33.66089527130151, "o", "a"] -[33.690895271301514, "o", "m"] -[33.720895271301515, "o", "e"] -[33.750895271301516, "o", " "] -[33.78089527130152, "o", "="] -[33.81089527130152, "o", " "] -[33.84089527130152, "o", "'"] -[33.87089527130152, "o", "N"] -[33.90089527130152, "o", "e"] -[33.93089527130152, "o", "w"] -[33.960895271301524, "o", " "] -[33.990895271301525, "o", "Y"] -[34.02089527130153, "o", "o"] -[34.05089527130153, "o", "r"] -[34.08089527130153, "o", "k"] -[34.11089527130153, "o", " "] -[34.14089527130153, "o", "C"] -[34.17089527130153, "o", "o"] -[34.20089527130153, "o", "u"] -[34.230895271301534, "o", "n"] -[34.260895271301536, "o", "t"] -[34.29089527130154, "o", "y"] -[34.32089527130154, "o", "'"] -[34.35089527130154, "o", "\""] -[34.38089527130154, "o", "\r\n"] -[34.41089527130154, "o", "\u001b[0m"] -[34.44089527130154, "o", "\r\n"] -[35.1026343822482, "o", "Aggregate (cost=37789403.09..37789403.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..37784680.00 rows=1889234 width=20)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 1\r\nMulticorn: Scan through 19 object(s) (25.51 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true,"] -[35.10264630317715, "o", " Deforming true\r\n"] -[35.132646303177154, "o", "\u001b[1m"] -[35.162646303177155, "o", "\u001b[36m"] -[35.192646303177156, "o", "\u001b[91m"] -[35.22264630317716, "o", "$"] -[35.25264630317716, "o", " "] -[35.28264630317716, "o", "\u001b[0m"] -[40.31264630317716, "o", "\u001b[H"] -[40.34264630317716, "o", "\u001b[J"] -[40.37264630317716, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Let's download the whole dataset and add a bloom filter index on county_name"] -[40.402646303177164, "o", "\r\n"] -[40.432646303177165, "o", "$"] -[40.462646303177166, "o", " "] -[40.49264630317717, "o", "s"] -[40.52264630317717, "o", "g"] -[40.55264630317717, "o", "r"] -[40.58264630317717, "o", " "] -[40.61264630317717, "o", "r"] -[40.64264630317717, "o", "e"] -[40.672646303177174, "o", "i"] -[40.702646303177175, "o", "n"] -[40.73264630317718, "o", "d"] -[40.76264630317718, "o", "e"] -[40.79264630317718, "o", "x"] -[40.82264630317718, "o", " "] -[40.85264630317718, "o", "-"] -[40.88264630317718, "o", "i"] -[40.91264630317718, "o", " "] -[40.942646303177185, "o", "'"] -[40.972646303177186, "o", "{"] -[41.00264630317719, "o", "\""] -[41.03264630317719, "o", "b"] -[41.06264630317719, "o", "l"] -[41.09264630317719, "o", "o"] -[41.12264630317719, "o", "o"] -[41.15264630317719, "o", "m"] -[41.182646303177194, "o", "\""] -[41.212646303177195, "o", ":"] -[41.242646303177196, "o", " "] -[41.2726463031772, "o", "{"] -[41.3026463031772, "o", "\""] -[41.3326463031772, "o", "c"] -[41.3626463031772, "o", "o"] -[41.3926463031772, "o", "u"] -[41.4226463031772, "o", "n"] -[41.452646303177204, "o", "t"] -[41.482646303177205, "o", "y"] -[41.512646303177206, "o", "_"] -[41.54264630317721, "o", "n"] -[41.57264630317721, "o", "a"] -[41.60264630317721, "o", "m"] -[41.63264630317721, "o", "e"] -[41.66264630317721, "o", "\""] -[41.69264630317721, "o", ":"] -[41.722646303177214, "o", " "] -[41.752646303177215, "o", "{"] -[41.782646303177216, "o", "\""] -[41.81264630317722, "o", "p"] -[41.84264630317722, "o", "r"] -[41.87264630317722, "o", "o"] -[41.90264630317722, "o", "b"] -[41.93264630317722, "o", "a"] -[41.96264630317722, "o", "b"] -[41.992646303177224, "o", "i"] -[42.022646303177225, "o", "l"] -[42.05264630317723, "o", "i"] -[42.08264630317723, "o", "t"] -[42.11264630317723, "o", "y"] -[42.14264630317723, "o", "\""] -[42.17264630317723, "o", ":"] -[42.20264630317723, "o", " "] -[42.23264630317723, "o", "0"] -[42.262646303177235, "o", "."] -[42.292646303177236, "o", "0"] -[42.32264630317724, "o", "1"] -[42.35264630317724, "o", "}"] -[42.38264630317724, "o", "}"] -[42.41264630317724, "o", "}"] -[42.44264630317724, "o", "'"] -[42.47264630317724, "o", " "] -[42.502646303177244, "o", "\\"] -[42.532646303177245, "o", "\r\n "] -[42.562646303177246, "o", "s"] -[42.59264630317725, "o", "p"] -[42.62264630317725, "o", "l"] -[42.65264630317725, "o", "i"] -[42.68264630317725, "o", "t"] -[42.71264630317725, "o", "g"] -[42.74264630317725, "o", "r"] -[42.772646303177254, "o", "a"] -[42.802646303177255, "o", "p"] -[42.832646303177256, "o", "h"] -[42.86264630317726, "o", "/"] -[42.89264630317726, "o", "2"] -[42.92264630317726, "o", "0"] -[42.95264630317726, "o", "1"] -[42.98264630317726, "o", "6"] -[43.01264630317726, "o", "_"] -[43.042646303177264, "o", "e"] -[43.072646303177265, "o", "l"] -[43.102646303177266, "o", "e"] -[43.13264630317727, "o", "c"] -[43.16264630317727, "o", "t"] -[43.19264630317727, "o", "i"] -[43.22264630317727, "o", "o"] -[43.25264630317727, "o", "n"] -[43.28264630317727, "o", ":"] -[43.312646303177274, "o", "l"] -[43.342646303177276, "o", "a"] -[43.37264630317728, "o", "t"] -[43.40264630317728, "o", "e"] -[43.43264630317728, "o", "s"] -[43.46264630317728, "o", "t"] -[43.49264630317728, "o", " "] -[43.52264630317728, "o", "p"] -[43.55264630317728, "o", "r"] -[43.582646303177285, "o", "e"] -[43.612646303177286, "o", "c"] -[43.64264630317729, "o", "i"] -[43.67264630317729, "o", "n"] -[43.70264630317729, "o", "c"] -[43.73264630317729, "o", "t"] -[43.76264630317729, "o", "_"] -[43.79264630317729, "o", "r"] -[43.822646303177294, "o", "e"] -[43.852646303177295, "o", "s"] -[43.882646303177296, "o", "u"] -[43.9126463031773, "o", "l"] -[43.9426463031773, "o", "t"] -[43.9726463031773, "o", "s"] -[44.0026463031773, "o", "\r\n"] -[44.0326463031773, "o", "\u001b[0m"] -[44.0626463031773, "o", "\r\n"] -[44.27237502098126, "o", "Reindexing table splitgraph/2016_election:3835145ada3f07cad99087d1b1071122d58c48783cbfe4694c101d35651fba90/precinct_results\r\n"] -[44.30476633071942, "o", "Need to download 20 objects (20.19 MiB), cache occupancy: 6.63 MiB/10.00 GiB\r\n"] -[44.35852614402813, "o", "Fetching 15 objects, total size 20.19 MiB\r\n"] -[44.36090937614483, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (ca446922b2844ed19f8e6c8b35edbe31@data.splitgraph.com:5432/sgregistry)...\r\n"] -[45.36090937614483, "o", "\r 0%| | 0/15 [00:00 Foreign Scan on precinct_results (cost=20.00..4000000.00 rows=200000 width=20)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 18\r\nMulticorn: Scan through 2 object(s) (2.64 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Defo"] -[101.87704515457213, "o", "rming true\r\n"] -[101.90704515457213, "o", "\u001b[1m"] -[101.93704515457213, "o", "\u001b[36m"] -[101.96704515457213, "o", "\u001b[91m"] -[101.99704515457213, "o", "$"] -[102.02704515457214, "o", " "] -[102.05704515457214, "o", "\u001b[0m"] \ No newline at end of file +[2.380000000000001, "o", "Gathering remote metadata...\r\n"] +[3.380000000000001, "o", "Fetched metadata for 1 image, 1 table, 20 objects and 1 tag.\r\n"] +[3.4100000000000006, "o", "\u001b[1m"] +[3.4400000000000004, "o", "\u001b[36m"] +[3.47, "o", "\u001b[91m"] +[3.5, "o", "$"] +[3.53, "o", " "] +[3.5599999999999996, "o", "\u001b[0m"] +[8.589999999999998, "o", "\u001b[H"] +[8.619999999999997, "o", "\u001b[J"] +[8.649999999999997, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The table is sorted by voting precinct and so queries that filter by that"] +[8.679999999999996, "o", "\r\n"] +[8.709999999999996, "o", "$ # (or by state, since precinct FIPS codes have the state as the prefix)\r\n"] +[8.739999999999995, "o", "$ # will use and download fewer fragments (6MiB/27MiB)\r\n"] +[8.769999999999994, "o", "$"] +[8.799999999999994, "o", " "] +[8.829999999999993, "o", "s"] +[8.859999999999992, "o", "g"] +[8.889999999999992, "o", "r"] +[8.919999999999991, "o", " "] +[8.94999999999999, "o", "s"] +[8.97999999999999, "o", "q"] +[9.00999999999999, "o", "l"] +[9.039999999999988, "o", " "] +[9.069999999999988, "o", "-"] +[9.099999999999987, "o", "-"] +[9.129999999999987, "o", "i"] +[9.159999999999986, "o", "m"] +[9.189999999999985, "o", "a"] +[9.219999999999985, "o", "g"] +[9.249999999999984, "o", "e"] +[9.279999999999983, "o", " "] +[9.309999999999983, "o", "s"] +[9.339999999999982, "o", "p"] +[9.369999999999981, "o", "l"] +[9.39999999999998, "o", "i"] +[9.42999999999998, "o", "t"] +[9.45999999999998, "o", "g"] +[9.489999999999979, "o", "r"] +[9.519999999999978, "o", "a"] +[9.549999999999978, "o", "p"] +[9.579999999999977, "o", "h"] +[9.609999999999976, "o", "/"] +[9.639999999999976, "o", "2"] +[9.669999999999975, "o", "0"] +[9.699999999999974, "o", "1"] +[9.729999999999974, "o", "6"] +[9.759999999999973, "o", "_"] +[9.789999999999973, "o", "e"] +[9.819999999999972, "o", "l"] +[9.849999999999971, "o", "e"] +[9.87999999999997, "o", "c"] +[9.90999999999997, "o", "t"] +[9.93999999999997, "o", "i"] +[9.969999999999969, "o", "o"] +[9.999999999999968, "o", "n"] +[10.029999999999967, "o", ":"] +[10.059999999999967, "o", "l"] +[10.089999999999966, "o", "a"] +[10.119999999999965, "o", "t"] +[10.149999999999965, "o", "e"] +[10.179999999999964, "o", "s"] +[10.209999999999964, "o", "t"] +[10.239999999999963, "o", " "] +[10.269999999999962, "o", "\\"] +[10.299999999999962, "o", "\r\n "] +[10.329999999999961, "o", "\""] +[10.35999999999996, "o", "E"] +[10.38999999999996, "o", "X"] +[10.419999999999959, "o", "P"] +[10.449999999999958, "o", "L"] +[10.479999999999958, "o", "A"] +[10.509999999999957, "o", "I"] +[10.539999999999957, "o", "N"] +[10.569999999999956, "o", " "] +[10.599999999999955, "o", "S"] +[10.629999999999955, "o", "E"] +[10.659999999999954, "o", "L"] +[10.689999999999953, "o", "E"] +[10.719999999999953, "o", "C"] +[10.749999999999952, "o", "T"] +[10.779999999999951, "o", " "] +[10.80999999999995, "o", "S"] +[10.83999999999995, "o", "U"] +[10.86999999999995, "o", "M"] +[10.899999999999949, "o", "("] +[10.929999999999948, "o", "v"] +[10.959999999999948, "o", "o"] +[10.989999999999947, "o", "t"] +[11.019999999999946, "o", "e"] +[11.049999999999946, "o", "s"] +[11.079999999999945, "o", ")"] +[11.109999999999944, "o", " "] +[11.139999999999944, "o", "F"] +[11.169999999999943, "o", "R"] +[11.199999999999942, "o", "O"] +[11.229999999999942, "o", "M"] +[11.259999999999941, "o", " "] +[11.28999999999994, "o", "p"] +[11.31999999999994, "o", "r"] +[11.34999999999994, "o", "e"] +[11.379999999999939, "o", "c"] +[11.409999999999938, "o", "i"] +[11.439999999999937, "o", "n"] +[11.469999999999937, "o", "c"] +[11.499999999999936, "o", "t"] +[11.529999999999935, "o", "_"] +[11.559999999999935, "o", "r"] +[11.589999999999934, "o", "e"] +[11.619999999999933, "o", "s"] +[11.649999999999933, "o", "u"] +[11.679999999999932, "o", "l"] +[11.709999999999932, "o", "t"] +[11.739999999999931, "o", "s"] +[11.76999999999993, "o", " "] +[11.79999999999993, "o", "W"] +[11.829999999999929, "o", "H"] +[11.859999999999928, "o", "E"] +[11.889999999999928, "o", "R"] +[11.919999999999927, "o", "E"] +[11.949999999999926, "o", " "] +[11.979999999999926, "o", "s"] +[12.009999999999925, "o", "t"] +[12.039999999999925, "o", "a"] +[12.069999999999924, "o", "t"] +[12.099999999999923, "o", "e"] +[12.129999999999923, "o", " "] +[12.159999999999922, "o", "="] +[12.189999999999921, "o", " "] +[12.21999999999992, "o", "'"] +[12.24999999999992, "o", "N"] +[12.27999999999992, "o", "e"] +[12.309999999999919, "o", "w"] +[12.339999999999918, "o", " "] +[12.369999999999918, "o", "Y"] +[12.399999999999917, "o", "o"] +[12.429999999999916, "o", "r"] +[12.459999999999916, "o", "k"] +[12.489999999999915, "o", "'"] +[12.519999999999914, "o", "\""] +[12.549999999999914, "o", "\r\n"] +[12.579999999999913, "o", "\u001b[0m"] +[12.609999999999912, "o", "\r\n"] +[13.609999999999912, "o", "Aggregate (cost=490457.09..490457.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..489234.00 rows=489234 width=1)\r\nFilter: ((state)::text = 'New York'::text)\r\nMulticorn: Original Multicorn quals: [state = New York]\r\nMulticorn: CNF quals: [[('state', '=', 'New York')]]\r\nMulticorn: Objects removed by filter: 15\r\nMulticorn: Scan through 5 object(s) (6.63 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining false, Optimization false, Expressions true, Deforming true\r\n"] +[13.639999999999912, "o", "\u001b[1m"] +[13.669999999999911, "o", "\u001b[36m"] +[13.69999999999991, "o", "\u001b[91m"] +[13.72999999999991, "o", "$"] +[13.75999999999991, "o", " "] +[13.789999999999909, "o", "\u001b[0m"] +[18.819999999999908, "o", "\u001b[H"] +[18.84999999999991, "o", "\u001b[J"] +[18.87999999999991, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Currently we have no fragments in cache. Let's run this query and check the cache again"] +[18.90999999999991, "o", "\r\n"] +[18.939999999999912, "o", "$"] +[18.969999999999914, "o", " "] +[18.999999999999915, "o", "s"] +[19.029999999999916, "o", "g"] +[19.059999999999917, "o", "r"] +[19.089999999999918, "o", " "] +[19.11999999999992, "o", "o"] +[19.14999999999992, "o", "b"] +[19.17999999999992, "o", "j"] +[19.209999999999923, "o", "e"] +[19.239999999999924, "o", "c"] +[19.269999999999925, "o", "t"] +[19.299999999999926, "o", "s"] +[19.329999999999927, "o", " "] +[19.35999999999993, "o", "-"] +[19.38999999999993, "o", "-"] +[19.41999999999993, "o", "l"] +[19.449999999999932, "o", "o"] +[19.479999999999933, "o", "c"] +[19.509999999999934, "o", "a"] +[19.539999999999935, "o", "l"] +[19.569999999999936, "o", "\r\n"] +[19.599999999999937, "o", "$"] +[19.62999999999994, "o", " "] +[19.65999999999994, "o", "s"] +[19.68999999999994, "o", "g"] +[19.719999999999942, "o", "r"] +[19.749999999999943, "o", " "] +[19.779999999999944, "o", "s"] +[19.809999999999945, "o", "q"] +[19.839999999999947, "o", "l"] +[19.869999999999948, "o", " "] +[19.89999999999995, "o", "-"] +[19.92999999999995, "o", "-"] +[19.95999999999995, "o", "i"] +[19.989999999999952, "o", "m"] +[20.019999999999953, "o", "a"] +[20.049999999999955, "o", "g"] +[20.079999999999956, "o", "e"] +[20.109999999999957, "o", " "] +[20.139999999999958, "o", "s"] +[20.16999999999996, "o", "p"] +[20.19999999999996, "o", "l"] +[20.22999999999996, "o", "i"] +[20.259999999999962, "o", "t"] +[20.289999999999964, "o", "g"] +[20.319999999999965, "o", "r"] +[20.349999999999966, "o", "a"] +[20.379999999999967, "o", "p"] +[20.409999999999968, "o", "h"] +[20.43999999999997, "o", "/"] +[20.46999999999997, "o", "2"] +[20.49999999999997, "o", "0"] +[20.529999999999973, "o", "1"] +[20.559999999999974, "o", "6"] +[20.589999999999975, "o", "_"] +[20.619999999999976, "o", "e"] +[20.649999999999977, "o", "l"] +[20.67999999999998, "o", "e"] +[20.70999999999998, "o", "c"] +[20.73999999999998, "o", "t"] +[20.769999999999982, "o", "i"] +[20.799999999999983, "o", "o"] +[20.829999999999984, "o", "n"] +[20.859999999999985, "o", ":"] +[20.889999999999986, "o", "l"] +[20.919999999999987, "o", "a"] +[20.94999999999999, "o", "t"] +[20.97999999999999, "o", "e"] +[21.00999999999999, "o", "s"] +[21.039999999999992, "o", "t"] +[21.069999999999993, "o", " "] +[21.099999999999994, "o", "\\"] +[21.129999999999995, "o", "\r\n "] +[21.159999999999997, "o", "\""] +[21.189999999999998, "o", "S"] +[21.22, "o", "E"] +[21.25, "o", "L"] +[21.28, "o", "E"] +[21.310000000000002, "o", "C"] +[21.340000000000003, "o", "T"] +[21.370000000000005, "o", " "] +[21.400000000000006, "o", "S"] +[21.430000000000007, "o", "U"] +[21.460000000000008, "o", "M"] +[21.49000000000001, "o", "("] +[21.52000000000001, "o", "v"] +[21.55000000000001, "o", "o"] +[21.580000000000013, "o", "t"] +[21.610000000000014, "o", "e"] +[21.640000000000015, "o", "s"] +[21.670000000000016, "o", ")"] +[21.700000000000017, "o", " "] +[21.730000000000018, "o", "F"] +[21.76000000000002, "o", "R"] +[21.79000000000002, "o", "O"] +[21.82000000000002, "o", "M"] +[21.850000000000023, "o", " "] +[21.880000000000024, "o", "p"] +[21.910000000000025, "o", "r"] +[21.940000000000026, "o", "e"] +[21.970000000000027, "o", "c"] +[22.00000000000003, "o", "i"] +[22.03000000000003, "o", "n"] +[22.06000000000003, "o", "c"] +[22.090000000000032, "o", "t"] +[22.120000000000033, "o", "_"] +[22.150000000000034, "o", "r"] +[22.180000000000035, "o", "e"] +[22.210000000000036, "o", "s"] +[22.240000000000038, "o", "u"] +[22.27000000000004, "o", "l"] +[22.30000000000004, "o", "t"] +[22.33000000000004, "o", "s"] +[22.360000000000042, "o", " "] +[22.390000000000043, "o", "W"] +[22.420000000000044, "o", "H"] +[22.450000000000045, "o", "E"] +[22.480000000000047, "o", "R"] +[22.510000000000048, "o", "E"] +[22.54000000000005, "o", " "] +[22.57000000000005, "o", "s"] +[22.60000000000005, "o", "t"] +[22.630000000000052, "o", "a"] +[22.660000000000053, "o", "t"] +[22.690000000000055, "o", "e"] +[22.720000000000056, "o", " "] +[22.750000000000057, "o", "="] +[22.780000000000058, "o", " "] +[22.81000000000006, "o", "'"] +[22.84000000000006, "o", "N"] +[22.87000000000006, "o", "e"] +[22.900000000000063, "o", "w"] +[22.930000000000064, "o", " "] +[22.960000000000065, "o", "Y"] +[22.990000000000066, "o", "o"] +[23.020000000000067, "o", "r"] +[23.050000000000068, "o", "k"] +[23.08000000000007, "o", "'"] +[23.11000000000007, "o", "\""] +[23.14000000000007, "o", "\r\n"] +[23.170000000000073, "o", "$"] +[23.200000000000074, "o", " "] +[23.230000000000075, "o", "s"] +[23.260000000000076, "o", "g"] +[23.290000000000077, "o", "r"] +[23.32000000000008, "o", " "] +[23.35000000000008, "o", "o"] +[23.38000000000008, "o", "b"] +[23.410000000000082, "o", "j"] +[23.440000000000083, "o", "e"] +[23.470000000000084, "o", "c"] +[23.500000000000085, "o", "t"] +[23.530000000000086, "o", "s"] +[23.560000000000088, "o", " "] +[23.59000000000009, "o", "-"] +[23.62000000000009, "o", "-"] +[23.65000000000009, "o", "l"] +[23.680000000000092, "o", "o"] +[23.710000000000093, "o", "c"] +[23.740000000000094, "o", "a"] +[23.770000000000095, "o", "l"] +[23.800000000000097, "o", "\r\n"] +[23.830000000000098, "o", "\u001b[0m"] +[23.8600000000001, "o", "\r\n"] +[24.296584711074928, "o", "\r\n"] +[25.296584711074928, "o", "7.91188e+06\r\n"] +[25.752590522766212, "o", "o65dbd9dc992982689ec65866ab733be69c897c659d93488457a2fccb63e97c\r\no974b20261ee5f1ac124a8445a65c00e6377cfabb93b5db92bd60fc7ca3fcee\r\no9c33b53f1a4872c598ad9d08aaafd78fabce1f16ef4c5e19ad9756b9b85fda\r\no9d4cf85101cc4d431c895998cf1cad642f1fe6cd923c8209f2df38441afeeb\r\noc438159794e378ca23c306143ccdc7ce1683045f80a511aeeabb19302be63d\r\n"] +[25.782590522766213, "o", "\u001b[1m"] +[25.812590522766214, "o", "\u001b[36m"] +[25.842590522766216, "o", "\u001b[91m"] +[25.872590522766217, "o", "$"] +[25.902590522766218, "o", " "] +[25.93259052276622, "o", "\u001b[0m"] +[30.96259052276622, "o", "\u001b[H"] +[30.99259052276622, "o", "\u001b[J"] +[31.022590522766222, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Since default indexing in Splitgraph is done by min-max values for every column"] +[31.052590522766224, "o", "\r\n"] +[31.082590522766225, "o", "$ # in every fragment, it's going to do worse if multiple fragments span the same value\r\n"] +[31.112590522766226, "o", "$"] +[31.142590522766227, "o", " "] +[31.172590522766228, "o", "s"] +[31.20259052276623, "o", "g"] +[31.23259052276623, "o", "r"] +[31.26259052276623, "o", " "] +[31.292590522766233, "o", "s"] +[31.322590522766234, "o", "q"] +[31.352590522766235, "o", "l"] +[31.382590522766236, "o", " "] +[31.412590522766237, "o", "-"] +[31.44259052276624, "o", "-"] +[31.47259052276624, "o", "i"] +[31.50259052276624, "o", "m"] +[31.53259052276624, "o", "a"] +[31.562590522766243, "o", "g"] +[31.592590522766244, "o", "e"] +[31.622590522766245, "o", " "] +[31.652590522766246, "o", "s"] +[31.682590522766247, "o", "p"] +[31.71259052276625, "o", "l"] +[31.74259052276625, "o", "i"] +[31.77259052276625, "o", "t"] +[31.802590522766252, "o", "g"] +[31.832590522766253, "o", "r"] +[31.862590522766254, "o", "a"] +[31.892590522766255, "o", "p"] +[31.922590522766257, "o", "h"] +[31.952590522766258, "o", "/"] +[31.98259052276626, "o", "2"] +[32.01259052276626, "o", "0"] +[32.04259052276626, "o", "1"] +[32.07259052276626, "o", "6"] +[32.10259052276626, "o", "_"] +[32.132590522766264, "o", "e"] +[32.162590522766266, "o", "l"] +[32.19259052276627, "o", "e"] +[32.22259052276627, "o", "c"] +[32.25259052276627, "o", "t"] +[32.28259052276627, "o", "i"] +[32.31259052276627, "o", "o"] +[32.34259052276627, "o", "n"] +[32.372590522766274, "o", ":"] +[32.402590522766275, "o", "l"] +[32.432590522766276, "o", "a"] +[32.46259052276628, "o", "t"] +[32.49259052276628, "o", "e"] +[32.52259052276628, "o", "s"] +[32.55259052276628, "o", "t"] +[32.58259052276628, "o", " "] +[32.61259052276628, "o", "\\"] +[32.642590522766284, "o", "\r\n "] +[32.672590522766285, "o", "\""] +[32.702590522766286, "o", "E"] +[32.73259052276629, "o", "X"] +[32.76259052276629, "o", "P"] +[32.79259052276629, "o", "L"] +[32.82259052276629, "o", "A"] +[32.85259052276629, "o", "I"] +[32.88259052276629, "o", "N"] +[32.912590522766294, "o", " "] +[32.942590522766295, "o", "S"] +[32.972590522766296, "o", "E"] +[33.0025905227663, "o", "L"] +[33.0325905227663, "o", "E"] +[33.0625905227663, "o", "C"] +[33.0925905227663, "o", "T"] +[33.1225905227663, "o", " "] +[33.1525905227663, "o", "S"] +[33.182590522766304, "o", "U"] +[33.212590522766305, "o", "M"] +[33.24259052276631, "o", "("] +[33.27259052276631, "o", "v"] +[33.30259052276631, "o", "o"] +[33.33259052276631, "o", "t"] +[33.36259052276631, "o", "e"] +[33.39259052276631, "o", "s"] +[33.42259052276631, "o", ")"] +[33.452590522766315, "o", " "] +[33.482590522766316, "o", "F"] +[33.51259052276632, "o", "R"] +[33.54259052276632, "o", "O"] +[33.57259052276632, "o", "M"] +[33.60259052276632, "o", " "] +[33.63259052276632, "o", "p"] +[33.66259052276632, "o", "r"] +[33.692590522766324, "o", "e"] +[33.722590522766325, "o", "c"] +[33.752590522766326, "o", "i"] +[33.78259052276633, "o", "n"] +[33.81259052276633, "o", "c"] +[33.84259052276633, "o", "t"] +[33.87259052276633, "o", "_"] +[33.90259052276633, "o", "r"] +[33.93259052276633, "o", "e"] +[33.962590522766334, "o", "s"] +[33.992590522766335, "o", "u"] +[34.022590522766336, "o", "l"] +[34.05259052276634, "o", "t"] +[34.08259052276634, "o", "s"] +[34.11259052276634, "o", " "] +[34.14259052276634, "o", "W"] +[34.17259052276634, "o", "H"] +[34.20259052276634, "o", "E"] +[34.232590522766344, "o", "R"] +[34.262590522766345, "o", "E"] +[34.292590522766346, "o", " "] +[34.32259052276635, "o", "c"] +[34.35259052276635, "o", "o"] +[34.38259052276635, "o", "u"] +[34.41259052276635, "o", "n"] +[34.44259052276635, "o", "t"] +[34.47259052276635, "o", "y"] +[34.502590522766354, "o", "_"] +[34.532590522766355, "o", "n"] +[34.56259052276636, "o", "a"] +[34.59259052276636, "o", "m"] +[34.62259052276636, "o", "e"] +[34.65259052276636, "o", " "] +[34.68259052276636, "o", "="] +[34.71259052276636, "o", " "] +[34.74259052276636, "o", "'"] +[34.772590522766365, "o", "N"] +[34.802590522766366, "o", "e"] +[34.83259052276637, "o", "w"] +[34.86259052276637, "o", " "] +[34.89259052276637, "o", "Y"] +[34.92259052276637, "o", "o"] +[34.95259052276637, "o", "r"] +[34.98259052276637, "o", "k"] +[35.012590522766374, "o", " "] +[35.042590522766375, "o", "C"] +[35.072590522766376, "o", "o"] +[35.10259052276638, "o", "u"] +[35.13259052276638, "o", "n"] +[35.16259052276638, "o", "t"] +[35.19259052276638, "o", "y"] +[35.22259052276638, "o", "'"] +[35.25259052276638, "o", "\""] +[35.282590522766384, "o", "\r\n"] +[35.312590522766385, "o", "\u001b[0m"] +[35.342590522766386, "o", "\r\n"] +[36.342590522766386, "o", "Aggregate (cost=1893957.09..1893957.10 rows=1 width=32)\r\n-> Foreign Scan on precinct_results (cost=20.00..1889234.00 rows=1889234 width=1)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 1\r\nMulticorn: Scan through 19 object(s) (25.51 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining true, Optimization true, Expressions true, Def"] +[36.3426029205325, "o", "orming true\r\n"] +[36.3726029205325, "o", "\u001b[1m"] +[36.4026029205325, "o", "\u001b[36m"] +[36.4326029205325, "o", "\u001b[91m"] +[36.462602920532504, "o", "$"] +[36.492602920532505, "o", " "] +[36.522602920532506, "o", "\u001b[0m"] +[41.55260292053251, "o", "\u001b[H"] +[41.58260292053251, "o", "\u001b[J"] +[41.61260292053251, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Let's download the whole dataset and add a bloom filter index on county_name"] +[41.64260292053251, "o", "\r\n"] +[41.67260292053251, "o", "$"] +[41.70260292053251, "o", " "] +[41.732602920532514, "o", "s"] +[41.762602920532515, "o", "g"] +[41.79260292053252, "o", "r"] +[41.82260292053252, "o", " "] +[41.85260292053252, "o", "r"] +[41.88260292053252, "o", "e"] +[41.91260292053252, "o", "i"] +[41.94260292053252, "o", "n"] +[41.97260292053252, "o", "d"] +[42.002602920532524, "o", "e"] +[42.032602920532526, "o", "x"] +[42.06260292053253, "o", " "] +[42.09260292053253, "o", "-"] +[42.12260292053253, "o", "i"] +[42.15260292053253, "o", " "] +[42.18260292053253, "o", "'"] +[42.21260292053253, "o", "{"] +[42.24260292053253, "o", "\""] +[42.272602920532535, "o", "b"] +[42.302602920532536, "o", "l"] +[42.33260292053254, "o", "o"] +[42.36260292053254, "o", "o"] +[42.39260292053254, "o", "m"] +[42.42260292053254, "o", "\""] +[42.45260292053254, "o", ":"] +[42.48260292053254, "o", " "] +[42.512602920532544, "o", "{"] +[42.542602920532545, "o", "\""] +[42.572602920532546, "o", "c"] +[42.60260292053255, "o", "o"] +[42.63260292053255, "o", "u"] +[42.66260292053255, "o", "n"] +[42.69260292053255, "o", "t"] +[42.72260292053255, "o", "y"] +[42.75260292053255, "o", "_"] +[42.782602920532554, "o", "n"] +[42.812602920532555, "o", "a"] +[42.842602920532556, "o", "m"] +[42.87260292053256, "o", "e"] +[42.90260292053256, "o", "\""] +[42.93260292053256, "o", ":"] +[42.96260292053256, "o", " "] +[42.99260292053256, "o", "{"] +[43.02260292053256, "o", "\""] +[43.052602920532564, "o", "p"] +[43.082602920532565, "o", "r"] +[43.11260292053257, "o", "o"] +[43.14260292053257, "o", "b"] +[43.17260292053257, "o", "a"] +[43.20260292053257, "o", "b"] +[43.23260292053257, "o", "i"] +[43.26260292053257, "o", "l"] +[43.29260292053257, "o", "i"] +[43.322602920532574, "o", "t"] +[43.352602920532576, "o", "y"] +[43.38260292053258, "o", "\""] +[43.41260292053258, "o", ":"] +[43.44260292053258, "o", " "] +[43.47260292053258, "o", "0"] +[43.50260292053258, "o", "."] +[43.53260292053258, "o", "0"] +[43.56260292053258, "o", "1"] +[43.592602920532585, "o", "}"] +[43.622602920532586, "o", "}"] +[43.65260292053259, "o", "}"] +[43.68260292053259, "o", "'"] +[43.71260292053259, "o", " "] +[43.74260292053259, "o", "\\"] +[43.77260292053259, "o", "\r\n "] +[43.80260292053259, "o", "s"] +[43.832602920532594, "o", "p"] +[43.862602920532595, "o", "l"] +[43.892602920532596, "o", "i"] +[43.9226029205326, "o", "t"] +[43.9526029205326, "o", "g"] +[43.9826029205326, "o", "r"] +[44.0126029205326, "o", "a"] +[44.0426029205326, "o", "p"] +[44.0726029205326, "o", "h"] +[44.102602920532604, "o", "/"] +[44.132602920532605, "o", "2"] +[44.162602920532606, "o", "0"] +[44.19260292053261, "o", "1"] +[44.22260292053261, "o", "6"] +[44.25260292053261, "o", "_"] +[44.28260292053261, "o", "e"] +[44.31260292053261, "o", "l"] +[44.34260292053261, "o", "e"] +[44.372602920532614, "o", "c"] +[44.402602920532615, "o", "t"] +[44.43260292053262, "o", "i"] +[44.46260292053262, "o", "o"] +[44.49260292053262, "o", "n"] +[44.52260292053262, "o", ":"] +[44.55260292053262, "o", "l"] +[44.58260292053262, "o", "a"] +[44.61260292053262, "o", "t"] +[44.642602920532624, "o", "e"] +[44.672602920532626, "o", "s"] +[44.70260292053263, "o", "t"] +[44.73260292053263, "o", " "] +[44.76260292053263, "o", "p"] +[44.79260292053263, "o", "r"] +[44.82260292053263, "o", "e"] +[44.85260292053263, "o", "c"] +[44.882602920532634, "o", "i"] +[44.912602920532635, "o", "n"] +[44.942602920532636, "o", "c"] +[44.97260292053264, "o", "t"] +[45.00260292053264, "o", "_"] +[45.03260292053264, "o", "r"] +[45.06260292053264, "o", "e"] +[45.09260292053264, "o", "s"] +[45.12260292053264, "o", "u"] +[45.152602920532644, "o", "l"] +[45.182602920532645, "o", "t"] +[45.212602920532646, "o", "s"] +[45.24260292053265, "o", "\r\n"] +[45.27260292053265, "o", "\u001b[0m"] +[45.30260292053265, "o", "\r\n"] +[45.729098949432796, "o", "Reindexing table splitgraph/2016_election:3835145ada3f07cad99087d1b1071122d58c48783cbfe4694c101d35651fba90/precinct_results\r\n"] +[45.76638451576275, "o", "Need to download 20 objects (20.19 MiB), cache occupancy: 6.63 MiB/10.00 GiB\r\n"] +[45.82573715210003, "o", "Fetching 15 objects, total size 20.19 MiB\r\n"] +[45.82691279411358, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (85b17bb993c0441f83f3619be8faba12@data.splitgraph.com:5432/sgregistry)...\r\n"] +[46.82691279411358, "o", "\r 0%| | 0/15 [00:00 Foreign Scan on precinct_results (cost=20.00..200000.00 rows=200000 width=1)\r\nFilter: ((county_name)::text = 'New York County'::text)\r\nMulticorn: Original Multicorn quals: [county_name = New York County]\r\nMulticorn: CNF quals: [[('county_name', '=', 'New York County')]]\r\nMulticorn: Objects removed by filter: 18\r\nMulticorn: Scan through 2 object(s) (2.64 MiB)\r\nJIT:\r\nFunctions: 3\r\nOptions: Inlining false, Optimization false, Expressions true, Deform"] +[106.29742622375548, "o", "ing true\r\n"] +[106.32742622375548, "o", "\u001b[1m"] +[106.35742622375548, "o", "\u001b[36m"] +[106.38742622375548, "o", "\u001b[91m"] +[106.41742622375548, "o", "$"] +[106.44742622375549, "o", " "] +[106.47742622375549, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/latest/dbt.cast b/content/casts/versioned/latest/dbt.cast index 35dd5f6a..a87a53aa 100644 --- a/content/casts/versioned/latest/dbt.cast +++ b/content/casts/versioned/latest/dbt.cast @@ -1,4 +1,4 @@ -{"version": 2, "width": 100, "height": 48, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1615571720, "metadata": {"tss": [{"h": "dbt must be installed for this to work (pip install dbt)", "ts": 0.06}, {"h": "Ingest the initial data (in CSV) from this branch of the project.", "ts": 11.559999999999999}, {"h": "Snapshot the initial data with Splitgraph.", "ts": 26.267485179901218}, {"h": "Inspect the original data", "ts": 35.30131628990195}, {"h": "The status column in the raw_orders table in the initial dataset can", "ts": 48.30131628990195}, {"h": "Commit this dataset and check out the original data", "ts": 59.001652507782396}, {"h": "Check out the 'serious' version of the dbt project that uses data from", "ts": 68.7658293819433}, {"h": "Check that dbt is set up to connect to the Splitgraph engine.", "ts": 75.8202588939673}, {"h": "Now run the dbt models.", "ts": 99.3202588939673}, {"h": "Take a look at the built dataset and commit it.", "ts": 119.8202588939673}, {"h": "Check out the new version of the raw dataset and run dbt against it as well.", "ts": 134.32025889396732}, {"h": "Create an image from the new data.", "ts": 155.82025889396732}, {"h": "We now have two versions of the source and the target dataset.", "ts": 165.82025889396732}, {"h": "Inspect the difference between the two datasets that dbt built.", "ts": 173.2068974876411}, {"h": "Run a sample query: how much in bank transfer refunds did we process?", "ts": 182.7068974876411}]}} +{"version": 2, "width": 100, "height": 55, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1639770048, "metadata": {"tss": [{"h": "dbt must be installed for this to work (pip install dbt)", "ts": 0.06}, {"h": "Ingest the initial data (in CSV) from this branch of the project.", "ts": 10.54704405784606}, {"h": "Snapshot the initial data with Splitgraph.", "ts": 25.471877813339262}, {"h": "Inspect the original data", "ts": 35.32119869232193}, {"h": "The status column in the raw_orders table in the initial dataset can", "ts": 48.32119869232193}, {"h": "Commit this dataset and check out the original data", "ts": 59.28486322402989}, {"h": "Check out the 'serious' version of the dbt project that uses data from", "ts": 69.75478031158497}, {"h": "Check that dbt is set up to connect to the Splitgraph engine.", "ts": 80.75478031158497}, {"h": "Now run the dbt models.", "ts": 107.75478031158497}, {"h": "Take a look at the built dataset and commit it.", "ts": 127.25478031158497}, {"h": "Check out the new version of the raw dataset and run dbt against it as well.", "ts": 141.75478031158497}, {"h": "Create an image from the new data.", "ts": 161.75478031158497}, {"h": "We now have two versions of the source and the target dataset.", "ts": 171.75478031158497}, {"h": "Inspect the difference between the two datasets that dbt built.", "ts": 179.56347510337886}, {"h": "Run a sample query: how much in bank transfer refunds did we process?", "ts": 189.06347510337886}]}} [0.03, "o", "\u001b[H"] [0.06, "o", "\u001b[J"] [0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # dbt must be installed for this to work (pip install dbt)"] @@ -51,2125 +51,2231 @@ [1.500000000000001, "o", "o"] [1.5300000000000011, "o", "m"] [1.5600000000000012, "o", "/"] -[1.5900000000000012, "o", "f"] -[1.6200000000000012, "o", "i"] -[1.6500000000000012, "o", "s"] -[1.6800000000000013, "o", "h"] +[1.5900000000000012, "o", "s"] +[1.6200000000000012, "o", "p"] +[1.6500000000000012, "o", "l"] +[1.6800000000000013, "o", "i"] [1.7100000000000013, "o", "t"] -[1.7400000000000013, "o", "o"] -[1.7700000000000014, "o", "w"] -[1.8000000000000014, "o", "n"] -[1.8300000000000014, "o", "-"] -[1.8600000000000014, "o", "a"] -[1.8900000000000015, "o", "n"] -[1.9200000000000015, "o", "a"] -[1.9500000000000015, "o", "l"] -[1.9800000000000015, "o", "y"] -[2.0100000000000016, "o", "t"] -[2.0400000000000014, "o", "i"] -[2.070000000000001, "o", "c"] -[2.100000000000001, "o", "s"] -[2.130000000000001, "o", "/"] -[2.1600000000000006, "o", "j"] -[2.1900000000000004, "o", "a"] -[2.22, "o", "f"] -[2.25, "o", "f"] -[2.28, "o", "l"] -[2.3099999999999996, "o", "e"] -[2.3399999999999994, "o", "_"] -[2.369999999999999, "o", "s"] -[2.399999999999999, "o", "h"] -[2.429999999999999, "o", "o"] -[2.4599999999999986, "o", "p"] +[1.7400000000000013, "o", "g"] +[1.7700000000000014, "o", "r"] +[1.8000000000000014, "o", "a"] +[1.8300000000000014, "o", "p"] +[1.8600000000000014, "o", "h"] +[1.8900000000000015, "o", "/"] +[1.9200000000000015, "o", "j"] +[1.9500000000000015, "o", "a"] +[1.9800000000000015, "o", "f"] +[2.0100000000000016, "o", "f"] +[2.0400000000000014, "o", "l"] +[2.070000000000001, "o", "e"] +[2.100000000000001, "o", "_"] +[2.130000000000001, "o", "s"] +[2.1600000000000006, "o", "h"] +[2.1900000000000004, "o", "o"] +[2.22, "o", "p"] +[2.25, "o", "_"] +[2.28, "o", "a"] +[2.3099999999999996, "o", "r"] +[2.3399999999999994, "o", "c"] +[2.369999999999999, "o", "h"] +[2.399999999999999, "o", "i"] +[2.429999999999999, "o", "v"] +[2.4599999999999986, "o", "e"] [2.4899999999999984, "o", "."] [2.5199999999999982, "o", "g"] [2.549999999999998, "o", "i"] [2.579999999999998, "o", "t"] [2.6099999999999977, "o", "\r\n"] -[2.6399999999999975, "o", "\u001b[0m"] -[2.6699999999999973, "o", "\r\n"] -[3.6699999999999973, "o", "installed version: 0.18.0\r\n latest version: 0.19.0\r\n\r\nYour version of dbt is out of date! You can find instructions for upgrading here:\r\nhttps://docs.getdbt.com/docs/installation\r\n\r\nPlugins:\r\n - redshift: 0.18.0\r\n - bigquery: 0.18.0\r\n - snowflake: 0.18.0\r\n - postgres: 0.18.0\r\n"] -[3.6712304782867404, "o", "\u001b[0m"] -[3.673084421157834, "o", "Cloning into 'jaffle_shop'...\r\n"] -[3.902097148895261, "o", "remote: Enumerating objects: 8, done. "] -[3.9021100234985324, "o", "\r\nremote: Counting objects: 12% (1/8) \rremote: Counting objects: 25% (2/8) \rremote: Counting objects: 37% (3/8) \rremote: Counting objects: 50% (4/8) \rremote: Counting objects: 62% (5/8) \rremote: Counting objects: 75% (6/8) \rremote: Counting objects: 87% (7/8) \rremote: Counting objects: 100% (8/8) \rremote: Counting objects: 100% (8/8), done. \r\nremote: Compressing objects: 14% (1/7) \rremote: Compressing objects: 28% (2/7) \rr"] -[3.902115745544431, "o", "emote: Compressing objects: 42% (3/7) \rremote: Compressing objects: 57% (4/7) \rremote: Compressing objects: 71% (5/7) \rremote: Compressing objects: 85% (6/7) \rremote: Compressing objects: 100% (7/7) \rremote: Compressing objects: 100% (7/7), done. \r\n"] -[3.902398271560666, "o", "Receiving objects: 0% (1/362)\rReceiving objects: 1% (4/362)\r"] -[3.9024061393737766, "o", "Receiving objects: 2% (8/362)\r"] -[3.9027227592468234, "o", "Receiving objects: 3% (11/362)\rReceiving objects: 4% (15/362)\rReceiving objects: 5% (19/362)\rReceiving objects: 6% (22/362)\rReceiving objects: 7% (26/362)\r"] -[3.9028045368194553, "o", "Receiving objects: 8% (29/362)\rReceiving objects: 9% (33/362)\r"] -[3.903160495758054, "o", "Receiving objects: 10% (37/362)\r"] -[3.903207464218137, "o", "Receiving objects: 11% (40/362)\r"] -[3.9032627773284885, "o", "Receiving objects: 12% (44/362)\r"] -[3.903400583267209, "o", "Receiving objects: 13% (48/362)\rReceiving objects: 14% (51/362)\r"] -[3.9034508895873996, "o", "Receiving objects: 15% (55/362)\r"] -[3.9035002422332736, "o", "Receiving objects: 16% (58/362)\r"] -[3.903548164367673, "o", "Receiving objects: 17% (62/362)\r"] -[3.903616352081296, "o", "Receiving objects: 18% (66/362)\r"] -[3.9039158058166477, "o", "Receiving objects: 19% (69/362)\r"] -[3.9039618206024143, "o", "Receiving objects: 20% (73/362)\r"] -[3.9039694499969455, "o", "Receiving objects: 21% (77/362)\r"] -[3.9041849803924533, "o", "Receiving objects: 22% (80/362)\r"] -[3.904207630157468, "o", "Receiving objects: 23% (84/362)\r"] -[3.904336614608762, "o", "Receiving objects: 24% (87/362)\r"] -[3.904388351440427, "o", "Receiving objects: 25% (91/362)\r"] -[3.906348867416379, "o", "Receiving objects: 26% (95/362)\r"] -[3.9067186546325656, "o", "Receiving objects: 27% (98/362)\r"] -[3.9067489337921115, "o", "Receiving objects: 28% (102/362)\r"] -[3.9067539405822727, "o", "Receiving objects: 29% (105/362)\r"] -[3.9068454933166477, "o", "Receiving objects: 30% (109/362)\r"] -[3.9068781566619846, "o", "Receiving objects: 31% (113/362)\r"] -[3.906921548843381, "o", "Receiving objects: 32% (116/362)\r"] -[3.9069785308837863, "o", "Receiving objects: 33% (120/362)\r"] -[3.9070135784149143, "o", "Receiving objects: 34% (124/362)\r"] -[3.9101134967803928, "o", "Receiving objects: 35% (127/362)\r"] -[3.9101459217071506, "o", "Receiving objects: 36% (131/362)\r"] -[3.9102071952819797, "o", "Receiving objects: 37% (134/362)\r"] -[3.9102541637420627, "o", "Receiving objects: 38% (138/362)\r"] -[3.910867376327512, "o", "Receiving objects: 39% (142/362)\r"] -[3.9109033775329562, "o", "Receiving objects: 40% (145/362)\r"] -[3.910928649902341, "o", "Receiving objects: 41% (149/362)\r"] -[3.911205930709836, "o", "Receiving objects: 42% (153/362)\r"] -[3.9112118911743137, "o", "Receiving objects: 43% (156/362)\r"] -[3.911294622421262, "o", "Receiving objects: 44% (160/362)\rReceiving objects: 45% (163/362)\r"] -[3.9113082122802707, "o", "Receiving objects: 46% (167/362)\r"] -[3.9113358688354465, "o", "Receiving objects: 47% (171/362)\r"] -[3.911346120834348, "o", "Receiving objects: 48% (174/362)\r"] -[3.9114033412933322, "o", "Receiving objects: 49% (178/362)\rReceiving objects: 50% (181/362)\rReceiving objects: 51% (185/362)\r"] -[3.9114503097534152, "o", "Receiving objects: 52% (189/362)\r"] -[3.911477489471433, "o", "Receiving objects: 53% (192/362)\rReceiving objects: 54% (196/362)\r"] -[3.9115232658386203, "o", "Receiving objects: 55% (200/362)\r"] -[3.9115280342102023, "o", "Receiving objects: 56% (203/362)\rReceiving objects: 57% (207/362)\r"] -[3.911539478301999, "o", "Receiving objects: 58% (210/362)\r"] -[3.911562366485593, "o", "Receiving objects: 59% (214/362)\r"] -[3.911569757461545, "o", "Receiving objects: 60% (218/362)\rReceiving objects: 61% (221/362)\rReceiving objects: 62% (225/362)\r"] -[3.9115795326232883, "o", "Receiving objects: 63% (229/362)\r"] -[3.911602420806882, "o", "Receiving objects: 64% (232/362)\r"] -[3.911611957550046, "o", "Receiving objects: 65% (236/362)\r"] -[3.9116386604309055, "o", "Receiving objects: 66% (239/362)\r"] -[3.911649389266965, "o", "Receiving objects: 67% (243/362)\r"] -[3.911662979125974, "o", "Receiving objects: 68% (247/362)\r"] -[3.9116882514953586, "o", "Receiving objects: 69% (250/362)\r"] -[3.911724014282224, "o", "Receiving objects: 70% (254/362)\r"] -[3.911740465164182, "o", "Receiving objects: 71% (258/362)\rReceiving objects: 72% (261/362)\r"] -[3.9117700290679904, "o", "Receiving objects: 73% (265/362)\r"] -[3.9117917251586887, "o", "Receiving objects: 74% (268/362)\r"] -[3.91179673194885, "o", "Receiving objects: 75% (272/362)\r"] -[3.911813182830808, "o", "Receiving objects: 76% (276/362)\r"] -[3.9118494224548312, "o", "Receiving objects: 77% (279/362)\r"] -[3.9121627044677707, "o", "Receiving objects: 78% (283/362)\rReceiving objects: 79% (286/362)\rReceiving objects: 80% (290/362)\rReceiving objects: 81% (294/362)\rReceiving objects: 82% (297/362)\rReceiving objects: 83% (301/362)\rReceiving objects: 84% (305/362)\rReceiving objects: 85% (308/362)\rremote: Total 362 (delta 2), reused 4 (delta 0), pack-reused 354 \r\nReceiving objects: 86% (312/362)\rReceiving objects: 87% (315/362)\r"] -[3.9121972751617404, "o", "Receiving objects: 88% (319/362)\r"] -[3.9122184944152805, "o", "Receiving objects: 89% (323/362)\r"] -[3.9122232627868625, "o", "Receiving objects: 90% (326/362)\r"] -[3.9122394752502414, "o", "Receiving objects: 91% (330/362)\r"] -[3.912276191711423, "o", "Receiving objects: 92% (334/362)\r"] -[3.912303848266599, "o", "Receiving objects: 93% (337/362)\rReceiving objects: 94% (341/362)\rReceiving objects: 95% (344/362)\r"] -[3.9123288822174045, "o", "Receiving objects: 96% (348/362)\r"] -[3.912335081100461, "o", "Receiving objects: 97% (352/362)\r"] -[3.91240708351135, "o", "Receiving objects: 98% (355/362)\r"] -[3.91243092536926, "o", "Receiving objects: 99% (359/362)\r"] -[3.914565010070798, "o", "Receiving objects: 100% (362/362)\r"] -[3.914569301605222, "o", "Receiving objects: 100% (362/362), 235.49 KiB | 18.11 MiB/s, done.\r\n"] -[3.914707584381101, "o", "Resolving deltas: 0% (0/162)\r"] -[3.9147793483734104, "o", "Resolving deltas: 1% (2/162)\r"] -[3.9148544502258273, "o", "Resolving deltas: 2% (4/162)\r"] -[3.9148875904083225, "o", "Resolving deltas: 3% (5/162)\r"] -[3.914987010955808, "o", "Resolving deltas: 4% (7/162)\r"] -[3.9150187206268283, "o", "Resolving deltas: 5% (9/162)\r"] -[3.9150397014617893, "o", "Resolving deltas: 6% (10/162)\r"] -[3.915062828063962, "o", "Resolving deltas: 7% (12/162)\r"] -[3.915088100433347, "o", "Resolving deltas: 8% (13/162)\r"] -[3.9151195716857883, "o", "Resolving deltas: 9% (15/162)\r"] -[3.915151758193967, "o", "Resolving deltas: 10% (17/162)\r"] -[3.9151760768890354, "o", "Resolving deltas: 11% (18/162)\r"] -[3.9152051639556857, "o", "Resolving deltas: 12% (20/162)\r"] -[3.915233774185178, "o", "Resolving deltas: 13% (22/162)\r"] -[3.915252609252927, "o", "Resolving deltas: 14% (23/162)\r"] -[3.915287418365476, "o", "Resolving deltas: 15% (25/162)\r"] -[3.9153060150146457, "o", "Resolving deltas: 16% (26/162)\r"] -[3.9153291416168186, "o", "Resolving deltas: 17% (28/162)\r"] -[3.915355844497678, "o", "Resolving deltas: 18% (30/162)\r"] -[3.915376825332639, "o", "Resolving deltas: 19% (31/162)\r"] -[3.9154133033752414, "o", "Resolving deltas: 20% (33/162)\r"] -[3.915440959930417, "o", "Resolving deltas: 21% (35/162)\r"] -[3.915463609695432, "o", "Resolving deltas: 22% (36/162)\r"] -[3.915490312576291, "o", "Resolving deltas: 23% (38/162)\r"] -[3.915508909225461, "o", "Resolving deltas: 24% (39/162)\r"] -[3.9156147670745822, "o", "Resolving deltas: 25% (41/162)\r"] -[3.9156817626953098, "o", "Resolving deltas: 26% (43/162)\r"] -[3.9157158565521213, "o", "Resolving deltas: 27% (44/162)\r"] -[3.915745658874509, "o", "Resolving deltas: 28% (46/162)\r"] -[3.915768785476682, "o", "Resolving deltas: 29% (47/162)\r"] -[3.9158779811859104, "o", "Resolving deltas: 30% (49/162)\r"] -[3.9159654808044406, "o", "Resolving deltas: 31% (51/162)\r"] -[3.9160002899169895, "o", "Resolving deltas: 32% (52/162)\r"] -[3.9160289001464816, "o", "Resolving deltas: 33% (54/162)\r"] -[3.9160567951202365, "o", "Resolving deltas: 34% (56/162)\r"] -[3.9160801601409885, "o", "Resolving deltas: 35% (57/162)\r"] -[3.9164952468872043, "o", "Resolving deltas: 36% (59/162)\r"] -[3.9166833591461154, "o", "Resolving deltas: 37% (60/162)\r"] -[3.9168826770782443, "o", "Resolving deltas: 38% (62/162)\r"] -[3.917067689895627, "o", "Resolving deltas: 39% (64/162)\r"] -[3.9170872402191135, "o", "Resolving deltas: 40% (65/162)\r"] -[3.917111558914182, "o", "Resolving deltas: 41% (67/162)\r"] -[3.9171413612365695, "o", "Resolving deltas: 42% (69/162)\r"] -[3.9171594810485812, "o", "Resolving deltas: 43% (70/162)\r"] -[3.917199296951291, "o", "Resolving deltas: 44% (72/162)\r"] -[3.9172188472747775, "o", "Resolving deltas: 45% (73/162)\r"] -[3.9172493648529025, "o", "Resolving deltas: 46% (75/162)\r"] -[3.917302532196042, "o", "Resolving deltas: 47% (77/162)\r"] -[3.917327566146848, "o", "Resolving deltas: 48% (78/162)\r"] -[3.9173738193511936, "o", "Resolving deltas: 49% (80/162)\r"] -[3.917400522232053, "o", "Resolving deltas: 50% (81/162)\r"] -[3.9174412918090793, "o", "Resolving deltas: 51% (83/162)\r"] -[3.91747824668884, "o", "Resolving deltas: 52% (85/162)\r"] -[3.917520923614499, "o", "Resolving deltas: 53% (86/162)\r"] -[3.9175585937499973, "o", "Resolving deltas: 54% (88/162)\r"] -[3.9176034164428684, "o", "Resolving deltas: 55% (90/162)\r"] -[3.9176389408111545, "o", "Resolving deltas: 56% (91/162)\r"] -[3.9176904392242404, "o", "Resolving deltas: 57% (93/162)\r"] -[3.9177142810821506, "o", "Resolving deltas: 58% (94/162)\r"] -[3.9177424144744846, "o", "Resolving deltas: 59% (96/162)\r"] -[3.9177657794952365, "o", "Resolving deltas: 60% (98/162)\r"] -[3.9177917671203586, "o", "Resolving deltas: 61% (99/162)\r"] -[3.9178218078613254, "o", "Resolving deltas: 62% (101/162)\r"] -[3.9178499412536594, "o", "Resolving deltas: 63% (103/162)\r"] -[3.9178687763214084, "o", "Resolving deltas: 64% (104/162)\r"] -[3.917900485992429, "o", "Resolving deltas: 65% (106/162)\r"] -[3.9179183673858615, "o", "Resolving deltas: 66% (107/162)\r"] -[3.917945547103879, "o", "Resolving deltas: 67% (109/162)\r"] -[3.917973680496213, "o", "Resolving deltas: 68% (111/162)\r"] -[3.920088691711423, "o", "Resolving deltas: 69% (112/162)\r"] -[3.9228645992279025, "o", "Resolving deltas: 70% (114/162)\r"] -[3.9241937828063937, "o", "Resolving deltas: 71% (116/162)\r"] -[3.924224777221677, "o", "Resolving deltas: 72% (117/162)\r"] -[3.9242588710784885, "o", "Resolving deltas: 73% (119/162)\r"] -[3.9242843818664523, "o", "Resolving deltas: 74% (120/162)\r"] -[3.9243129920959445, "o", "Resolving deltas: 75% (122/162)\r"] -[3.924361391067502, "o", "Resolving deltas: 76% (124/162)\r"] -[3.9243880939483615, "o", "Resolving deltas: 77% (125/162)\r"] -[3.9244322013854953, "o", "Resolving deltas: 78% (127/162)\r"] -[3.924459381103513, "o", "Resolving deltas: 79% (128/162)\r"] -[3.924509449005124, "o", "Resolving deltas: 80% (130/162)\r"] -[3.924536628723142, "o", "Resolving deltas: 81% (132/162)\r"] -[3.924568099975583, "o", "Resolving deltas: 82% (133/162)\r"] -[3.924642724990842, "o", "Resolving deltas: 83% (135/162)\r"] -[3.924675865173337, "o", "Resolving deltas: 84% (137/162)\r"] -[3.9247113895416232, "o", "Resolving deltas: 85% (138/162)\r"] -[3.9247419071197482, "o", "Resolving deltas: 86% (140/162)\r"] -[3.924764318466184, "o", "Resolving deltas: 87% (141/162)\r"] -[3.9247965049743625, "o", "Resolving deltas: 88% (143/162)\r"] -[3.9248267841339084, "o", "Resolving deltas: 89% (145/162)\r"] -[3.924854202270505, "o", "Resolving deltas: 90% (146/162)\r"] -[3.924955291748044, "o", "Resolving deltas: 91% (148/162)\r"] -[3.9250120353698703, "o", "Resolving deltas: 92% (150/162)\r"] -[3.9250358772277805, "o", "Resolving deltas: 93% (151/162)\r"] -[3.9250776004791232, "o", "Resolving deltas: 94% (153/162)\r"] -[3.9251012039184543, "o", "Resolving deltas: 95% (154/162)\r"] -[3.925130529403684, "o", "Resolving deltas: 96% (156/162)\r"] -[3.92516605377197, "o", "Resolving deltas: 97% (158/162)\r"] -[3.925192279815671, "o", "Resolving deltas: 98% (159/162)\r"] -[3.9252406787872287, "o", "Resolving deltas: 99% (161/162)\r"] -[3.925957841873166, "o", "Resolving deltas: 100% (162/162)\r"] -[3.926029844284055, "o", "Resolving deltas: 100% (162/162), done.\r\n"] -[3.9560298442840547, "o", "\u001b[1m"] -[3.9860298442840545, "o", "\u001b[36m"] -[4.016029844284055, "o", "\u001b[91m"] -[4.046029844284055, "o", "$"] -[4.076029844284055, "o", " "] -[4.1060298442840555, "o", "\u001b[0m"] -[11.53, "o", "\u001b[H"] -[11.559999999999999, "o", "\u001b[J"] -[11.589999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the initial data (in CSV) from this branch of the project."] -[11.619999999999997, "o", "\r\n"] -[11.649999999999997, "o", "$"] -[11.679999999999996, "o", " "] -[11.709999999999996, "o", "s"] -[11.739999999999995, "o", "g"] -[11.769999999999994, "o", "r"] -[11.799999999999994, "o", " "] -[11.829999999999993, "o", "i"] -[11.859999999999992, "o", "n"] -[11.889999999999992, "o", "i"] -[11.919999999999991, "o", "t"] -[11.94999999999999, "o", " "] -[11.97999999999999, "o", "r"] -[12.00999999999999, "o", "a"] -[12.039999999999988, "o", "w"] -[12.069999999999988, "o", "_"] -[12.099999999999987, "o", "j"] -[12.129999999999987, "o", "a"] -[12.159999999999986, "o", "f"] -[12.189999999999985, "o", "f"] -[12.219999999999985, "o", "l"] -[12.249999999999984, "o", "e"] -[12.279999999999983, "o", "_"] -[12.309999999999983, "o", "s"] -[12.339999999999982, "o", "h"] -[12.369999999999981, "o", "o"] -[12.39999999999998, "o", "p"] -[12.42999999999998, "o", "\r\n"] -[12.45999999999998, "o", "$"] -[12.489999999999979, "o", " "] -[12.519999999999978, "o", "s"] -[12.549999999999978, "o", "g"] -[12.579999999999977, "o", "r"] -[12.609999999999976, "o", " "] -[12.639999999999976, "o", "c"] -[12.669999999999975, "o", "s"] -[12.699999999999974, "o", "v"] -[12.729999999999974, "o", " "] -[12.759999999999973, "o", "i"] -[12.789999999999973, "o", "m"] -[12.819999999999972, "o", "p"] -[12.849999999999971, "o", "o"] -[12.87999999999997, "o", "r"] -[12.90999999999997, "o", "t"] -[12.93999999999997, "o", " "] -[12.969999999999969, "o", "-"] -[12.999999999999968, "o", "f"] -[13.029999999999967, "o", " "] -[13.059999999999967, "o", "j"] -[13.089999999999966, "o", "a"] -[13.119999999999965, "o", "f"] -[13.149999999999965, "o", "f"] -[13.179999999999964, "o", "l"] -[13.209999999999964, "o", "e"] -[13.239999999999963, "o", "_"] -[13.269999999999962, "o", "s"] -[13.299999999999962, "o", "h"] -[13.329999999999961, "o", "o"] -[13.35999999999996, "o", "p"] -[13.38999999999996, "o", "/"] -[13.419999999999959, "o", "d"] -[13.449999999999958, "o", "a"] -[13.479999999999958, "o", "t"] -[13.509999999999957, "o", "a"] -[13.539999999999957, "o", "/"] -[13.569999999999956, "o", "r"] -[13.599999999999955, "o", "a"] -[13.629999999999955, "o", "w"] -[13.659999999999954, "o", "_"] -[13.689999999999953, "o", "c"] -[13.719999999999953, "o", "u"] -[13.749999999999952, "o", "s"] -[13.779999999999951, "o", "t"] -[13.80999999999995, "o", "o"] -[13.83999999999995, "o", "m"] -[13.86999999999995, "o", "e"] -[13.899999999999949, "o", "r"] -[13.929999999999948, "o", "s"] -[13.959999999999948, "o", "."] -[13.989999999999947, "o", "c"] -[14.019999999999946, "o", "s"] -[14.049999999999946, "o", "v"] -[14.079999999999945, "o", " "] -[14.109999999999944, "o", "-"] -[14.139999999999944, "o", "k"] -[14.169999999999943, "o", " "] -[14.199999999999942, "o", "i"] -[14.229999999999942, "o", "d"] -[14.259999999999941, "o", " "] -[14.28999999999994, "o", "r"] -[14.31999999999994, "o", "a"] -[14.34999999999994, "o", "w"] -[14.379999999999939, "o", "_"] -[14.409999999999938, "o", "j"] -[14.439999999999937, "o", "a"] -[14.469999999999937, "o", "f"] -[14.499999999999936, "o", "f"] -[14.529999999999935, "o", "l"] -[14.559999999999935, "o", "e"] -[14.589999999999934, "o", "_"] -[14.619999999999933, "o", "s"] -[14.649999999999933, "o", "h"] -[14.679999999999932, "o", "o"] -[14.709999999999932, "o", "p"] -[14.739999999999931, "o", " "] -[14.76999999999993, "o", "c"] -[14.79999999999993, "o", "u"] -[14.829999999999929, "o", "s"] -[14.859999999999928, "o", "t"] -[14.889999999999928, "o", "o"] -[14.919999999999927, "o", "m"] -[14.949999999999926, "o", "e"] -[14.979999999999926, "o", "r"] -[15.009999999999925, "o", "s"] -[15.039999999999925, "o", "\r\n"] -[15.069999999999924, "o", "$"] -[15.099999999999923, "o", " "] -[15.129999999999923, "o", "s"] -[15.159999999999922, "o", "g"] -[15.189999999999921, "o", "r"] -[15.21999999999992, "o", " "] -[15.24999999999992, "o", "c"] -[15.27999999999992, "o", "s"] -[15.309999999999919, "o", "v"] -[15.339999999999918, "o", " "] -[15.369999999999918, "o", "i"] -[15.399999999999917, "o", "m"] -[15.429999999999916, "o", "p"] -[15.459999999999916, "o", "o"] -[15.489999999999915, "o", "r"] -[15.519999999999914, "o", "t"] -[15.549999999999914, "o", " "] -[15.579999999999913, "o", "-"] -[15.609999999999912, "o", "f"] -[15.639999999999912, "o", " "] -[15.669999999999911, "o", "j"] -[15.69999999999991, "o", "a"] -[15.72999999999991, "o", "f"] -[15.75999999999991, "o", "f"] -[15.789999999999909, "o", "l"] -[15.819999999999908, "o", "e"] -[15.849999999999907, "o", "_"] -[15.879999999999907, "o", "s"] -[15.909999999999906, "o", "h"] -[15.939999999999905, "o", "o"] -[15.969999999999905, "o", "p"] -[15.999999999999904, "o", "/"] -[16.029999999999905, "o", "d"] -[16.059999999999906, "o", "a"] -[16.089999999999907, "o", "t"] -[16.11999999999991, "o", "a"] -[16.14999999999991, "o", "/"] -[16.17999999999991, "o", "r"] -[16.209999999999912, "o", "a"] -[16.239999999999913, "o", "w"] -[16.269999999999914, "o", "_"] -[16.299999999999915, "o", "o"] -[16.329999999999917, "o", "r"] -[16.359999999999918, "o", "d"] -[16.38999999999992, "o", "e"] -[16.41999999999992, "o", "r"] -[16.44999999999992, "o", "s"] -[16.479999999999922, "o", "."] -[16.509999999999923, "o", "c"] -[16.539999999999925, "o", "s"] -[16.569999999999926, "o", "v"] -[16.599999999999927, "o", " "] -[16.629999999999928, "o", "-"] -[16.65999999999993, "o", "k"] -[16.68999999999993, "o", " "] -[16.71999999999993, "o", "i"] -[16.749999999999932, "o", "d"] -[16.779999999999934, "o", " "] -[16.809999999999935, "o", "-"] -[16.839999999999936, "o", "t"] -[16.869999999999937, "o", " "] -[16.899999999999938, "o", "o"] -[16.92999999999994, "o", "r"] -[16.95999999999994, "o", "d"] -[16.98999999999994, "o", "e"] -[17.019999999999943, "o", "r"] -[17.049999999999944, "o", "_"] -[17.079999999999945, "o", "d"] -[17.109999999999946, "o", "a"] -[17.139999999999947, "o", "t"] -[17.16999999999995, "o", "e"] -[17.19999999999995, "o", " "] -[17.22999999999995, "o", "t"] -[17.259999999999952, "o", "i"] -[17.289999999999953, "o", "m"] -[17.319999999999954, "o", "e"] -[17.349999999999955, "o", "s"] -[17.379999999999956, "o", "t"] -[17.409999999999958, "o", "a"] -[17.43999999999996, "o", "m"] -[17.46999999999996, "o", "p"] -[17.49999999999996, "o", " "] -[17.529999999999962, "o", "r"] -[17.559999999999963, "o", "a"] -[17.589999999999964, "o", "w"] -[17.619999999999965, "o", "_"] -[17.649999999999967, "o", "j"] -[17.679999999999968, "o", "a"] -[17.70999999999997, "o", "f"] -[17.73999999999997, "o", "f"] -[17.76999999999997, "o", "l"] -[17.799999999999972, "o", "e"] -[17.829999999999973, "o", "_"] -[17.859999999999975, "o", "s"] -[17.889999999999976, "o", "h"] -[17.919999999999977, "o", "o"] -[17.949999999999978, "o", "p"] -[17.97999999999998, "o", " "] -[18.00999999999998, "o", "o"] -[18.03999999999998, "o", "r"] -[18.069999999999983, "o", "d"] -[18.099999999999984, "o", "e"] -[18.129999999999985, "o", "r"] -[18.159999999999986, "o", "s"] -[18.189999999999987, "o", "\r\n"] -[18.219999999999988, "o", "$"] -[18.24999999999999, "o", " "] -[18.27999999999999, "o", "s"] -[18.30999999999999, "o", "g"] -[18.339999999999993, "o", "r"] -[18.369999999999994, "o", " "] -[18.399999999999995, "o", "c"] -[18.429999999999996, "o", "s"] -[18.459999999999997, "o", "v"] -[18.49, "o", " "] -[18.52, "o", "i"] -[18.55, "o", "m"] -[18.580000000000002, "o", "p"] -[18.610000000000003, "o", "o"] -[18.640000000000004, "o", "r"] -[18.670000000000005, "o", "t"] -[18.700000000000006, "o", " "] -[18.730000000000008, "o", "-"] -[18.76000000000001, "o", "f"] -[18.79000000000001, "o", " "] -[18.82000000000001, "o", "j"] -[18.850000000000012, "o", "a"] -[18.880000000000013, "o", "f"] -[18.910000000000014, "o", "f"] -[18.940000000000015, "o", "l"] -[18.970000000000017, "o", "e"] -[19.000000000000018, "o", "_"] -[19.03000000000002, "o", "s"] -[19.06000000000002, "o", "h"] -[19.09000000000002, "o", "o"] -[19.120000000000022, "o", "p"] -[19.150000000000023, "o", "/"] -[19.180000000000025, "o", "d"] -[19.210000000000026, "o", "a"] -[19.240000000000027, "o", "t"] -[19.270000000000028, "o", "a"] -[19.30000000000003, "o", "/"] -[19.33000000000003, "o", "r"] -[19.36000000000003, "o", "a"] -[19.390000000000033, "o", "w"] -[19.420000000000034, "o", "_"] -[19.450000000000035, "o", "p"] -[19.480000000000036, "o", "a"] -[19.510000000000037, "o", "y"] -[19.54000000000004, "o", "m"] -[19.57000000000004, "o", "e"] -[19.60000000000004, "o", "n"] -[19.63000000000004, "o", "t"] -[19.660000000000043, "o", "s"] -[19.690000000000044, "o", "."] -[19.720000000000045, "o", "c"] -[19.750000000000046, "o", "s"] -[19.780000000000047, "o", "v"] -[19.81000000000005, "o", " "] -[19.84000000000005, "o", "-"] -[19.87000000000005, "o", "k"] -[19.900000000000052, "o", " "] -[19.930000000000053, "o", "i"] -[19.960000000000054, "o", "d"] -[19.990000000000055, "o", " "] -[20.020000000000056, "o", "r"] -[20.050000000000058, "o", "a"] -[20.08000000000006, "o", "w"] -[20.11000000000006, "o", "_"] -[20.14000000000006, "o", "j"] -[20.170000000000062, "o", "a"] -[20.200000000000063, "o", "f"] -[20.230000000000064, "o", "f"] -[20.260000000000066, "o", "l"] -[20.290000000000067, "o", "e"] -[20.320000000000068, "o", "_"] -[20.35000000000007, "o", "s"] -[20.38000000000007, "o", "h"] -[20.41000000000007, "o", "o"] -[20.440000000000072, "o", "p"] -[20.470000000000073, "o", " "] -[20.500000000000075, "o", "p"] -[20.530000000000076, "o", "a"] -[20.560000000000077, "o", "y"] -[20.590000000000078, "o", "m"] -[20.62000000000008, "o", "e"] -[20.65000000000008, "o", "n"] -[20.68000000000008, "o", "t"] -[20.710000000000083, "o", "s"] -[20.740000000000084, "o", "\r\n"] -[20.770000000000085, "o", "\u001b[0m"] -[20.800000000000086, "o", "\r\n"] -[21.02748517990121, "o", "Initialized empty repository raw_jaffle_shop\r\n"] -[21.05748517990121, "o", "\u001b[1m"] -[21.08748517990121, "o", "\u001b[36m"] -[21.117485179901212, "o", "\u001b[91m"] -[21.147485179901214, "o", "$"] -[21.177485179901215, "o", " "] -[21.207485179901216, "o", "\u001b[0m"] -[26.237485179901217, "o", "\u001b[H"] -[26.267485179901218, "o", "\u001b[J"] -[26.29748517990122, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Snapshot the initial data with Splitgraph."] -[26.32748517990122, "o", "\r\n"] -[26.35748517990122, "o", "$"] -[26.387485179901223, "o", " "] -[26.417485179901224, "o", "s"] -[26.447485179901225, "o", "g"] -[26.477485179901226, "o", "r"] -[26.507485179901227, "o", " "] -[26.53748517990123, "o", "d"] -[26.56748517990123, "o", "i"] -[26.59748517990123, "o", "f"] -[26.62748517990123, "o", "f"] -[26.657485179901233, "o", " "] -[26.687485179901234, "o", "r"] -[26.717485179901235, "o", "a"] -[26.747485179901236, "o", "w"] -[26.777485179901237, "o", "_"] -[26.80748517990124, "o", "j"] -[26.83748517990124, "o", "a"] -[26.86748517990124, "o", "f"] -[26.897485179901242, "o", "f"] -[26.927485179901243, "o", "l"] -[26.957485179901244, "o", "e"] -[26.987485179901245, "o", "_"] -[27.017485179901247, "o", "s"] -[27.047485179901248, "o", "h"] -[27.07748517990125, "o", "o"] -[27.10748517990125, "o", "p"] -[27.13748517990125, "o", "\r\n"] -[27.167485179901252, "o", "$"] -[27.197485179901253, "o", " "] -[27.227485179901254, "o", "s"] -[27.257485179901256, "o", "g"] -[27.287485179901257, "o", "r"] -[27.317485179901258, "o", " "] -[27.34748517990126, "o", "c"] -[27.37748517990126, "o", "o"] -[27.40748517990126, "o", "m"] -[27.437485179901262, "o", "m"] -[27.467485179901264, "o", "i"] -[27.497485179901265, "o", "t"] -[27.527485179901266, "o", " "] -[27.557485179901267, "o", "r"] -[27.587485179901268, "o", "a"] -[27.61748517990127, "o", "w"] -[27.64748517990127, "o", "_"] -[27.67748517990127, "o", "j"] -[27.707485179901273, "o", "a"] -[27.737485179901274, "o", "f"] -[27.767485179901275, "o", "f"] -[27.797485179901276, "o", "l"] -[27.827485179901277, "o", "e"] -[27.85748517990128, "o", "_"] -[27.88748517990128, "o", "s"] -[27.91748517990128, "o", "h"] -[27.947485179901282, "o", "o"] -[27.977485179901283, "o", "p"] -[28.007485179901284, "o", "\r\n"] -[28.037485179901285, "o", "$"] -[28.067485179901286, "o", " "] -[28.097485179901287, "o", "s"] -[28.12748517990129, "o", "g"] -[28.15748517990129, "o", "r"] -[28.18748517990129, "o", " "] -[28.217485179901292, "o", "t"] -[28.247485179901293, "o", "a"] -[28.277485179901294, "o", "g"] -[28.307485179901295, "o", " "] -[28.337485179901297, "o", "r"] -[28.367485179901298, "o", "a"] -[28.3974851799013, "o", "w"] -[28.4274851799013, "o", "_"] -[28.4574851799013, "o", "j"] -[28.487485179901302, "o", "a"] -[28.517485179901303, "o", "f"] -[28.547485179901305, "o", "f"] -[28.577485179901306, "o", "l"] -[28.607485179901307, "o", "e"] -[28.637485179901308, "o", "_"] -[28.66748517990131, "o", "s"] -[28.69748517990131, "o", "h"] -[28.72748517990131, "o", "o"] -[28.757485179901312, "o", "p"] -[28.787485179901314, "o", " "] -[28.817485179901315, "o", "a"] -[28.847485179901316, "o", "s"] -[28.877485179901317, "o", "o"] -[28.907485179901318, "o", "f"] -[28.93748517990132, "o", "_"] -[28.96748517990132, "o", "2"] -[28.99748517990132, "o", "0"] -[29.027485179901323, "o", "1"] -[29.057485179901324, "o", "8"] -[29.087485179901325, "o", "0"] -[29.117485179901326, "o", "4"] -[29.147485179901327, "o", "0"] -[29.17748517990133, "o", "9"] -[29.20748517990133, "o", "\r\n"] -[29.23748517990133, "o", "\u001b[0m"] -[29.267485179901332, "o", "\r\n"] -[29.489123382568568, "o", "Between 000000000000 and the current working copy: \r\n"] -[29.489145317077845, "o", "customers: table added\r\norders: table added\r\npayments: table added\r\n"] -[29.70043210029623, "o", "Committing raw_jaffle_shop...\r\n"] -[29.721928873062343, "o", "Processing table orders\r\n"] -[29.797554054260463, "o", "Processing table payments\r\n"] -[29.818154611587733, "o", "Processing table customers\r\n"] -[29.84702781677267, "o", "Committed raw_jaffle_shop as 97615ea01b25.\r\n"] -[30.061316289901942, "o", "Tagged raw_jaffle_shop:97615ea01b25d62b56f2025c0c4ef5832d652f9b543449dab93791f9df29f91e with asof_20180409.\r\n"] -[30.091316289901943, "o", "\u001b[1m"] -[30.121316289901944, "o", "\u001b[36m"] -[30.151316289901946, "o", "\u001b[91m"] -[30.181316289901947, "o", "$"] -[30.211316289901948, "o", " "] -[30.24131628990195, "o", "\u001b[0m"] -[35.27131628990195, "o", "\u001b[H"] -[35.30131628990195, "o", "\u001b[J"] -[35.33131628990195, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the original data"] -[35.36131628990195, "o", "\r\n"] -[35.39131628990195, "o", "$"] -[35.42131628990195, "o", " "] -[35.45131628990195, "o", "s"] -[35.481316289901955, "o", "g"] -[35.511316289901956, "o", "r"] -[35.54131628990196, "o", " "] -[35.57131628990196, "o", "s"] -[35.60131628990196, "o", "h"] -[35.63131628990196, "o", "o"] -[35.66131628990196, "o", "w"] -[35.69131628990196, "o", " "] -[35.721316289901964, "o", "r"] -[35.751316289901965, "o", "a"] -[35.781316289901966, "o", "w"] -[35.81131628990197, "o", "_"] -[35.84131628990197, "o", "j"] -[35.87131628990197, "o", "a"] -[35.90131628990197, "o", "f"] -[35.93131628990197, "o", "f"] -[35.96131628990197, "o", "l"] -[35.991316289901974, "o", "e"] -[36.021316289901975, "o", "_"] -[36.051316289901976, "o", "s"] -[36.08131628990198, "o", "h"] -[36.11131628990198, "o", "o"] -[36.14131628990198, "o", "p"] -[36.17131628990198, "o", ":"] -[36.20131628990198, "o", "a"] -[36.23131628990198, "o", "s"] -[36.261316289901984, "o", "o"] -[36.291316289901985, "o", "f"] -[36.321316289901986, "o", "_"] -[36.35131628990199, "o", "2"] -[36.38131628990199, "o", "0"] -[36.41131628990199, "o", "1"] -[36.44131628990199, "o", "8"] -[36.47131628990199, "o", "0"] -[36.50131628990199, "o", "4"] -[36.531316289901994, "o", "0"] -[36.561316289901995, "o", "9"] -[36.591316289902, "o", "\r\n"] -[36.621316289902, "o", "$"] -[36.651316289902, "o", " "] -[36.681316289902, "o", "s"] -[36.711316289902, "o", "g"] -[36.741316289902, "o", "r"] -[36.771316289902, "o", " "] -[36.801316289902005, "o", "t"] -[36.831316289902006, "o", "a"] -[36.86131628990201, "o", "b"] -[36.89131628990201, "o", "l"] -[36.92131628990201, "o", "e"] -[36.95131628990201, "o", " "] -[36.98131628990201, "o", "r"] -[37.01131628990201, "o", "a"] -[37.041316289902014, "o", "w"] -[37.071316289902015, "o", "_"] -[37.101316289902016, "o", "j"] -[37.13131628990202, "o", "a"] -[37.16131628990202, "o", "f"] -[37.19131628990202, "o", "f"] -[37.22131628990202, "o", "l"] -[37.25131628990202, "o", "e"] -[37.28131628990202, "o", "_"] -[37.311316289902024, "o", "s"] -[37.341316289902025, "o", "h"] -[37.371316289902026, "o", "o"] -[37.40131628990203, "o", "p"] -[37.43131628990203, "o", ":"] -[37.46131628990203, "o", "a"] -[37.49131628990203, "o", "s"] -[37.52131628990203, "o", "o"] -[37.55131628990203, "o", "f"] -[37.581316289902034, "o", "_"] -[37.611316289902035, "o", "2"] -[37.641316289902036, "o", "0"] -[37.67131628990204, "o", "1"] -[37.70131628990204, "o", "8"] -[37.73131628990204, "o", "0"] -[37.76131628990204, "o", "4"] -[37.79131628990204, "o", "0"] -[37.82131628990204, "o", "9"] -[37.851316289902044, "o", " "] -[37.881316289902045, "o", "o"] -[37.91131628990205, "o", "r"] -[37.94131628990205, "o", "d"] -[37.97131628990205, "o", "e"] -[38.00131628990205, "o", "r"] -[38.03131628990205, "o", "s"] -[38.06131628990205, "o", "\r\n"] -[38.09131628990205, "o", "\u001b[0m"] -[38.121316289902055, "o", "\r\n"] -[38.32916340827974, "o", "Image raw_jaffle_shop:97615ea01b25d62b56f2025c0c4ef5832d652f9b543449dab93791f9df29f91e\r\n\r\n"] -[38.32918653488191, "o", "Created at 2021-03-12T17:55:34.690511\r\n"] -[38.33074769973787, "o", "Size: 7.58 KiB\r\n"] -[38.33076272010835, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] -[38.3316737174991, "o", " customers\r\n"] -[38.33168230056795, "o", " orders\r\n payments\r\n"] -[38.538257694244706, "o", "Table raw_jaffle_shop:97615ea01b25d62b56f2025c0c4ef5832d652f9b543449dab93791f9df29f91e/orders\r\n"] -[38.53827462196382, "o", "\r\n"] -[38.540728664398515, "o", "Size: 1.73 KiB\r\n"] -[38.54170403480562, "o", "Rows: 99\r\n"] -[38.54171428680452, "o", "Columns: \r\n id (integer, PK)\r\n user_id (integer)\r\n"] -[38.54207239151033, "o", " order_date (timestamp without time zone)\r\n"] -[38.54208025932344, "o", " status (character varying)\r\n\r\nObjects: \r\n o7e3ffa6e2141edde30498e4c4a6a2b510d8b7e479081aafe154d31ca4436bd"] -[38.54234132766756, "o", "\r\n"] -[38.57234132766756, "o", "\u001b[1m"] -[38.60234132766756, "o", "\u001b[36m"] -[38.63234132766756, "o", "\u001b[91m"] -[38.66234132766756, "o", "$"] -[38.69234132766756, "o", " "] -[38.722341327667564, "o", "\u001b[0m"] -[48.27131628990195, "o", "\u001b[H"] -[48.30131628990195, "o", "\u001b[J"] -[48.33131628990195, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The status column in the raw_orders table in the initial dataset can"] -[48.36131628990195, "o", "\r\n"] -[48.39131628990195, "o", "$ # change through time. Pretend that some jaffles were actually returned.\r\n"] -[48.42131628990195, "o", "$"] -[48.45131628990195, "o", " "] -[48.481316289901955, "o", "s"] -[48.511316289901956, "o", "g"] -[48.54131628990196, "o", "r"] -[48.57131628990196, "o", " "] -[48.60131628990196, "o", "s"] -[48.63131628990196, "o", "q"] -[48.66131628990196, "o", "l"] -[48.69131628990196, "o", " "] -[48.721316289901964, "o", "-"] -[48.751316289901965, "o", "s"] -[48.781316289901966, "o", " "] -[48.81131628990197, "o", "r"] -[48.84131628990197, "o", "a"] -[48.87131628990197, "o", "w"] -[48.90131628990197, "o", "_"] -[48.93131628990197, "o", "j"] -[48.96131628990197, "o", "a"] -[48.991316289901974, "o", "f"] -[49.021316289901975, "o", "f"] -[49.051316289901976, "o", "l"] -[49.08131628990198, "o", "e"] -[49.11131628990198, "o", "_"] -[49.14131628990198, "o", "s"] -[49.17131628990198, "o", "h"] -[49.20131628990198, "o", "o"] -[49.23131628990198, "o", "p"] -[49.261316289901984, "o", " "] -[49.291316289901985, "o", "\""] -[49.321316289901986, "o", "U"] -[49.35131628990199, "o", "P"] -[49.38131628990199, "o", "D"] -[49.41131628990199, "o", "A"] -[49.44131628990199, "o", "T"] -[49.47131628990199, "o", "E"] -[49.50131628990199, "o", " "] -[49.531316289901994, "o", "o"] -[49.561316289901995, "o", "r"] -[49.591316289902, "o", "d"] -[49.621316289902, "o", "e"] -[49.651316289902, "o", "r"] -[49.681316289902, "o", "s"] -[49.711316289902, "o", " "] -[49.741316289902, "o", "S"] -[49.771316289902, "o", "E"] -[49.801316289902005, "o", "T"] -[49.831316289902006, "o", " "] -[49.86131628990201, "o", "s"] -[49.89131628990201, "o", "t"] -[49.92131628990201, "o", "a"] -[49.95131628990201, "o", "t"] -[49.98131628990201, "o", "u"] -[50.01131628990201, "o", "s"] -[50.041316289902014, "o", " "] -[50.071316289902015, "o", "="] -[50.101316289902016, "o", " "] -[50.13131628990202, "o", "'"] -[50.16131628990202, "o", "r"] -[50.19131628990202, "o", "e"] -[50.22131628990202, "o", "t"] -[50.25131628990202, "o", "u"] -[50.28131628990202, "o", "r"] -[50.311316289902024, "o", "n"] -[50.341316289902025, "o", "e"] -[50.371316289902026, "o", "d"] -[50.40131628990203, "o", "'"] -[50.43131628990203, "o", " "] -[50.46131628990203, "o", "\\"] -[50.49131628990203, "o", "\r\n "] -[50.52131628990203, "o", "W"] -[50.55131628990203, "o", "H"] -[50.581316289902034, "o", "E"] -[50.611316289902035, "o", "R"] -[50.641316289902036, "o", "E"] -[50.67131628990204, "o", " "] -[50.70131628990204, "o", "s"] -[50.73131628990204, "o", "t"] -[50.76131628990204, "o", "a"] -[50.79131628990204, "o", "t"] -[50.82131628990204, "o", "u"] -[50.851316289902044, "o", "s"] -[50.881316289902045, "o", " "] -[50.91131628990205, "o", "="] -[50.94131628990205, "o", " "] -[50.97131628990205, "o", "'"] -[51.00131628990205, "o", "r"] -[51.03131628990205, "o", "e"] -[51.06131628990205, "o", "t"] -[51.09131628990205, "o", "u"] -[51.121316289902055, "o", "r"] -[51.151316289902056, "o", "n"] -[51.18131628990206, "o", "_"] -[51.21131628990206, "o", "p"] -[51.24131628990206, "o", "e"] -[51.27131628990206, "o", "n"] -[51.30131628990206, "o", "d"] -[51.33131628990206, "o", "i"] -[51.361316289902064, "o", "n"] -[51.391316289902065, "o", "g"] -[51.421316289902066, "o", "'"] -[51.45131628990207, "o", " "] -[51.48131628990207, "o", "O"] -[51.51131628990207, "o", "R"] -[51.54131628990207, "o", " "] -[51.57131628990207, "o", "o"] -[51.60131628990207, "o", "r"] -[51.631316289902074, "o", "d"] -[51.661316289902075, "o", "e"] -[51.691316289902076, "o", "r"] -[51.72131628990208, "o", "_"] -[51.75131628990208, "o", "d"] -[51.78131628990208, "o", "a"] -[51.81131628990208, "o", "t"] -[51.84131628990208, "o", "e"] -[51.87131628990208, "o", " "] -[51.901316289902084, "o", "="] -[51.931316289902085, "o", " "] -[51.961316289902086, "o", "'"] -[51.99131628990209, "o", "2"] -[52.02131628990209, "o", "0"] -[52.05131628990209, "o", "1"] -[52.08131628990209, "o", "8"] -[52.11131628990209, "o", "-"] -[52.14131628990209, "o", "0"] -[52.171316289902094, "o", "3"] -[52.201316289902095, "o", "-"] -[52.2313162899021, "o", "2"] -[52.2613162899021, "o", "6"] -[52.2913162899021, "o", "'"] -[52.3213162899021, "o", "\""] -[52.3513162899021, "o", "\r\n"] -[52.3813162899021, "o", "$"] -[52.4113162899021, "o", " "] -[52.441316289902105, "o", "s"] -[52.471316289902106, "o", "g"] -[52.50131628990211, "o", "r"] -[52.53131628990211, "o", " "] -[52.56131628990211, "o", "d"] -[52.59131628990211, "o", "i"] -[52.62131628990211, "o", "f"] -[52.65131628990211, "o", "f"] -[52.681316289902114, "o", " "] -[52.711316289902115, "o", "-"] -[52.741316289902116, "o", "v"] -[52.77131628990212, "o", " "] -[52.80131628990212, "o", "r"] -[52.83131628990212, "o", "a"] -[52.86131628990212, "o", "w"] -[52.89131628990212, "o", "_"] -[52.92131628990212, "o", "j"] -[52.951316289902124, "o", "a"] -[52.981316289902125, "o", "f"] -[53.011316289902126, "o", "f"] -[53.04131628990213, "o", "l"] -[53.07131628990213, "o", "e"] -[53.10131628990213, "o", "_"] -[53.13131628990213, "o", "s"] -[53.16131628990213, "o", "h"] -[53.19131628990213, "o", "o"] -[53.221316289902134, "o", "p"] -[53.251316289902135, "o", "\r\n"] -[53.281316289902136, "o", "\u001b[0m"] -[53.31131628990214, "o", "\r\n"] -[53.76139501571696, "o", "Between 97615ea01b25 and the current working copy: \r\n"] -[53.76164416313212, "o", "customers: no changes.\r\norders: added 5 rows, removed 5 rows.\r\n- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending')\r\n- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending')\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped')\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned')\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned')\r\n+ (84, 7"] -[53.76165250778239, "o", "0, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\npayments: no changes.\r\n"] -[53.79165250778239, "o", "\u001b[1m"] -[53.82165250778239, "o", "\u001b[36m"] -[53.85165250778239, "o", "\u001b[91m"] -[53.88165250778239, "o", "$"] -[53.91165250778239, "o", " "] -[53.94165250778239, "o", "\u001b[0m"] -[58.971652507782395, "o", "\u001b[H"] -[59.001652507782396, "o", "\u001b[J"] -[59.0316525077824, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit this dataset and check out the original data"] -[59.0616525077824, "o", "\r\n"] -[59.0916525077824, "o", "$"] -[59.1216525077824, "o", " "] -[59.1516525077824, "o", "s"] -[59.1816525077824, "o", "g"] -[59.211652507782404, "o", "r"] -[59.241652507782405, "o", " "] -[59.271652507782406, "o", "c"] -[59.30165250778241, "o", "o"] -[59.33165250778241, "o", "m"] -[59.36165250778241, "o", "m"] -[59.39165250778241, "o", "i"] -[59.42165250778241, "o", "t"] -[59.45165250778241, "o", " "] -[59.481652507782414, "o", "r"] -[59.511652507782415, "o", "a"] -[59.541652507782416, "o", "w"] -[59.57165250778242, "o", "_"] -[59.60165250778242, "o", "j"] -[59.63165250778242, "o", "a"] -[59.66165250778242, "o", "f"] -[59.69165250778242, "o", "f"] -[59.72165250778242, "o", "l"] -[59.751652507782424, "o", "e"] -[59.781652507782425, "o", "_"] -[59.811652507782426, "o", "s"] -[59.84165250778243, "o", "h"] -[59.87165250778243, "o", "o"] -[59.90165250778243, "o", "p"] -[59.93165250778243, "o", "\r\n"] -[59.96165250778243, "o", "$"] -[59.99165250778243, "o", " "] -[60.021652507782434, "o", "s"] -[60.051652507782435, "o", "g"] -[60.08165250778244, "o", "r"] -[60.11165250778244, "o", " "] -[60.14165250778244, "o", "t"] -[60.17165250778244, "o", "a"] -[60.20165250778244, "o", "g"] -[60.23165250778244, "o", " "] -[60.26165250778244, "o", "r"] -[60.291652507782445, "o", "a"] -[60.321652507782446, "o", "w"] -[60.35165250778245, "o", "_"] -[60.38165250778245, "o", "j"] -[60.41165250778245, "o", "a"] -[60.44165250778245, "o", "f"] -[60.47165250778245, "o", "f"] -[60.50165250778245, "o", "l"] -[60.531652507782454, "o", "e"] -[60.561652507782455, "o", "_"] -[60.591652507782456, "o", "s"] -[60.62165250778246, "o", "h"] -[60.65165250778246, "o", "o"] -[60.68165250778246, "o", "p"] -[60.71165250778246, "o", " "] -[60.74165250778246, "o", "a"] -[60.77165250778246, "o", "s"] -[60.801652507782464, "o", "o"] -[60.831652507782465, "o", "f"] -[60.861652507782466, "o", "_"] -[60.89165250778247, "o", "2"] -[60.92165250778247, "o", "0"] -[60.95165250778247, "o", "1"] -[60.98165250778247, "o", "8"] -[61.01165250778247, "o", "0"] -[61.04165250778247, "o", "4"] -[61.071652507782474, "o", "1"] -[61.101652507782475, "o", "0"] -[61.131652507782476, "o", "\r\n"] -[61.16165250778248, "o", "$"] -[61.19165250778248, "o", " "] -[61.22165250778248, "o", "s"] -[61.25165250778248, "o", "g"] -[61.28165250778248, "o", "r"] -[61.31165250778248, "o", " "] -[61.341652507782484, "o", "c"] -[61.371652507782485, "o", "h"] -[61.40165250778249, "o", "e"] -[61.43165250778249, "o", "c"] -[61.46165250778249, "o", "k"] -[61.49165250778249, "o", "o"] -[61.52165250778249, "o", "u"] -[61.55165250778249, "o", "t"] -[61.58165250778249, "o", " "] -[61.611652507782495, "o", "r"] -[61.641652507782496, "o", "a"] -[61.6716525077825, "o", "w"] -[61.7016525077825, "o", "_"] -[61.7316525077825, "o", "j"] -[61.7616525077825, "o", "a"] -[61.7916525077825, "o", "f"] -[61.8216525077825, "o", "f"] -[61.851652507782504, "o", "l"] -[61.881652507782505, "o", "e"] -[61.911652507782506, "o", "_"] -[61.94165250778251, "o", "s"] -[61.97165250778251, "o", "h"] -[62.00165250778251, "o", "o"] -[62.03165250778251, "o", "p"] -[62.06165250778251, "o", ":"] -[62.09165250778251, "o", "a"] -[62.121652507782514, "o", "s"] -[62.151652507782515, "o", "o"] -[62.181652507782516, "o", "f"] -[62.21165250778252, "o", "_"] -[62.24165250778252, "o", "2"] -[62.27165250778252, "o", "0"] -[62.30165250778252, "o", "1"] -[62.33165250778252, "o", "8"] -[62.36165250778252, "o", "0"] -[62.391652507782524, "o", "4"] -[62.421652507782525, "o", "0"] -[62.451652507782526, "o", "9"] -[62.48165250778253, "o", "\r\n"] -[62.51165250778253, "o", "\u001b[0m"] -[62.54165250778253, "o", "\r\n"] -[62.75069481849725, "o", "Committing raw_jaffle_shop...\r\n"] -[62.769341773987364, "o", "Storing and indexing table orders\r\n"] -[62.85972792625482, "o", "Committed raw_jaffle_shop as 9041a7f8f7ff.\r\n"] -[63.072635955811094, "o", "Tagged raw_jaffle_shop:9041a7f8f7ffd2afee60b7a96f3a2bea4d919af44802eea5d6cf5e649f7fc5a1 with asof_20180410.\r\n"] -[63.525829381943296, "o", "Checked out raw_jaffle_shop:97615ea01b25.\r\n"] -[63.5558293819433, "o", "\u001b[1m"] -[63.5858293819433, "o", "\u001b[36m"] -[63.6158293819433, "o", "\u001b[91m"] -[63.6458293819433, "o", "$"] -[63.6758293819433, "o", " "] -[63.7058293819433, "o", "\u001b[0m"] -[68.7358293819433, "o", "\u001b[H"] -[68.7658293819433, "o", "\u001b[J"] -[68.7958293819433, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the 'serious' version of the dbt project that uses data from"] -[68.82582938194331, "o", "\r\n"] -[68.85582938194331, "o", "$ # the actual warehouse rather than seed data.\r\n"] -[68.88582938194331, "o", "$"] -[68.91582938194331, "o", " "] -[68.94582938194331, "o", "c"] -[68.97582938194331, "o", "d"] -[69.00582938194331, "o", " "] -[69.03582938194332, "o", "j"] -[69.06582938194332, "o", "a"] -[69.09582938194332, "o", "f"] -[69.12582938194332, "o", "f"] -[69.15582938194332, "o", "l"] -[69.18582938194332, "o", "e"] -[69.21582938194332, "o", "_"] -[69.24582938194332, "o", "s"] -[69.27582938194332, "o", "h"] -[69.30582938194333, "o", "o"] -[69.33582938194333, "o", "p"] -[69.36582938194333, "o", " "] -[69.39582938194333, "o", "&"] -[69.42582938194333, "o", "&"] -[69.45582938194333, "o", " "] -[69.48582938194333, "o", "g"] -[69.51582938194333, "o", "i"] -[69.54582938194334, "o", "t"] -[69.57582938194334, "o", " "] -[69.60582938194334, "o", "c"] -[69.63582938194334, "o", "h"] -[69.66582938194334, "o", "e"] -[69.69582938194334, "o", "c"] -[69.72582938194334, "o", "k"] -[69.75582938194334, "o", "o"] -[69.78582938194334, "o", "u"] -[69.81582938194335, "o", "t"] -[69.84582938194335, "o", " "] -[69.87582938194335, "o", "d"] -[69.90582938194335, "o", "e"] -[69.93582938194335, "o", "m"] -[69.96582938194335, "o", "o"] -[69.99582938194335, "o", "/"] -[70.02582938194335, "o", "m"] -[70.05582938194335, "o", "a"] -[70.08582938194336, "o", "s"] -[70.11582938194336, "o", "t"] -[70.14582938194336, "o", "e"] -[70.17582938194336, "o", "r"] -[70.20582938194336, "o", " "] -[70.23582938194336, "o", "-"] -[70.26582938194336, "o", "-"] -[70.29582938194336, "o", "f"] -[70.32582938194336, "o", "o"] -[70.35582938194337, "o", "r"] -[70.38582938194337, "o", "c"] -[70.41582938194337, "o", "e"] -[70.44582938194337, "o", "\r\n"] -[70.47582938194337, "o", "\u001b[0m"] -[70.50582938194337, "o", "\r\n"] -[70.57977585792604, "o", "Branch 'demo/master' set up to track remote branch 'demo/master' from 'origin'.\r\n"] -[70.5802588939673, "o", "Switched to a new branch 'demo/master'\r\n"] -[70.6102588939673, "o", "\u001b[1m"] -[70.6402588939673, "o", "\u001b[36m"] -[70.6702588939673, "o", "\u001b[91m"] -[70.7002588939673, "o", "$"] -[70.7302588939673, "o", " "] -[70.7602588939673, "o", "\u001b[0m"] -[75.7902588939673, "o", "\u001b[H"] -[75.8202588939673, "o", "\u001b[J"] -[75.85025889396731, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check that dbt is set up to connect to the Splitgraph engine."] -[75.88025889396731, "o", "\r\n"] -[75.91025889396731, "o", "$ # We will be outputting data into the dbt_jaffle repository, so set that up.\r\n"] -[75.94025889396731, "o", "$"] -[75.97025889396731, "o", " "] -[76.00025889396731, "o", "c"] -[76.03025889396731, "o", "a"] -[76.06025889396732, "o", "t"] -[76.09025889396732, "o", " "] -[76.12025889396732, "o", "."] -[76.15025889396732, "o", "d"] -[76.18025889396732, "o", "b"] -[76.21025889396732, "o", "t"] -[76.24025889396732, "o", "/"] -[76.27025889396732, "o", "p"] -[76.30025889396732, "o", "r"] -[76.33025889396733, "o", "o"] -[76.36025889396733, "o", "f"] -[76.39025889396733, "o", "i"] -[76.42025889396733, "o", "l"] -[76.45025889396733, "o", "e"] -[76.48025889396733, "o", "s"] -[76.51025889396733, "o", "."] -[76.54025889396733, "o", "y"] -[76.57025889396733, "o", "m"] -[76.60025889396734, "o", "l"] -[76.63025889396734, "o", "\r\n"] -[76.66025889396734, "o", "$"] -[76.69025889396734, "o", " "] -[76.72025889396734, "o", "d"] -[76.75025889396734, "o", "b"] -[76.78025889396734, "o", "t"] -[76.81025889396734, "o", " "] -[76.84025889396734, "o", "d"] -[76.87025889396735, "o", "e"] -[76.90025889396735, "o", "b"] -[76.93025889396735, "o", "u"] -[76.96025889396735, "o", "g"] -[76.99025889396735, "o", " "] -[77.02025889396735, "o", "-"] -[77.05025889396735, "o", "-"] -[77.08025889396735, "o", "p"] -[77.11025889396736, "o", "r"] -[77.14025889396736, "o", "o"] -[77.17025889396736, "o", "f"] -[77.20025889396736, "o", "i"] -[77.23025889396736, "o", "l"] -[77.26025889396736, "o", "e"] -[77.29025889396736, "o", "s"] -[77.32025889396736, "o", "-"] -[77.35025889396736, "o", "d"] -[77.38025889396737, "o", "i"] -[77.41025889396737, "o", "r"] -[77.44025889396737, "o", " "] -[77.47025889396737, "o", "."] -[77.50025889396737, "o", "d"] -[77.53025889396737, "o", "b"] -[77.56025889396737, "o", "t"] -[77.59025889396737, "o", " "] -[77.62025889396737, "o", "-"] -[77.65025889396738, "o", "-"] -[77.68025889396738, "o", "p"] -[77.71025889396738, "o", "r"] -[77.74025889396738, "o", "o"] -[77.77025889396738, "o", "j"] -[77.80025889396738, "o", "e"] -[77.83025889396738, "o", "c"] -[77.86025889396738, "o", "t"] -[77.89025889396738, "o", "-"] -[77.92025889396739, "o", "d"] -[77.95025889396739, "o", "i"] -[77.98025889396739, "o", "r"] -[78.01025889396739, "o", " "] -[78.04025889396739, "o", "j"] -[78.07025889396739, "o", "a"] -[78.10025889396739, "o", "f"] -[78.1302588939674, "o", "f"] -[78.1602588939674, "o", "l"] -[78.1902588939674, "o", "e"] -[78.2202588939674, "o", "_"] -[78.2502588939674, "o", "s"] -[78.2802588939674, "o", "h"] -[78.3102588939674, "o", "o"] -[78.3402588939674, "o", "p"] -[78.3702588939674, "o", "\r\n"] -[78.4002588939674, "o", "$"] -[78.4302588939674, "o", " "] -[78.4602588939674, "o", "s"] -[78.49025889396741, "o", "g"] -[78.52025889396741, "o", "r"] -[78.55025889396741, "o", " "] -[78.58025889396741, "o", "i"] -[78.61025889396741, "o", "n"] -[78.64025889396741, "o", "i"] -[78.67025889396741, "o", "t"] -[78.70025889396742, "o", " "] -[78.73025889396742, "o", "d"] -[78.76025889396742, "o", "b"] -[78.79025889396742, "o", "t"] -[78.82025889396742, "o", "_"] -[78.85025889396742, "o", "j"] -[78.88025889396742, "o", "a"] -[78.91025889396742, "o", "f"] -[78.94025889396742, "o", "f"] -[78.97025889396743, "o", "l"] -[79.00025889396743, "o", "e"] -[79.03025889396743, "o", "\r\n"] -[79.06025889396743, "o", "\u001b[0m"] -[79.09025889396743, "o", "\r\n"] -[79.09171229362563, "o", "jaffle_shop:\r\n target: splitgraph\r\n outputs:\r\n splitgraph:\r\n type: postgres\r\n host: localhost\r\n user: sgr\r\n pass: supersecure\r\n port: 5432\r\n dbname: splitgraph\r\n # The final schema that dbt writes to is a combination of this profile schema\r\n # and the schema specified in the model.\r\n schema: \"dbt_jaffle\"\r\n threads: 4\r\n"] -[80.01877146720962, "o", "Running with dbt=0.18.0\r\n"] -[80.02667075157241, "o", "dbt version: 0.18.0\r\n"] -[80.02668386459426, "o", "python version: 3.7.10\r\npython path: /opt/hostedtoolcache/Python/3.7.10/x64/bin/python\r\nos info: Linux-5.4.0-1040-azure-x86_64-with-debian-bullseye-sid\r\nUsing profiles.yml file at .dbt/profiles.yml\r\nUsing dbt_project.yml file at /home/runner/work/splitgraph/splitgraph/examples/dbt/jaffle_shop/dbt_project.yml\r\n\r\n"] -[80.09495121002273, "o", "Configuration:\r\n profiles.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n dbt_project.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n\r\nRequired dependencies:\r\n"] -[80.10074788093642, "o", " - git [\u001b[32mOK found\u001b[0m]\r\n\r\n"] -[80.10075860977248, "o", "Connection:\r\n"] -[80.101058540345, "o", " host: localhost\r\n port: 5432\r\n user: sgr\r\n database: splitgraph\r\n"] -[80.10106712341384, "o", " schema: dbt_jaffle\r\n search_path: None\r\n keepalives_idle: 0\r\n sslmode: None"] -[80.101072130204, "o", "\r\n"] -[80.11491328239516, "o", " Connection test: \u001b[32mOK connection ok\u001b[0m"] -[80.11495667457656, "o", "\r\n"] -[80.11502533912734, "o", "\r\n"] -[80.29794841766433, "o", "\u001b[0m"] -[80.52813392639236, "o", "Initialized empty repository dbt_jaffle\r\n"] -[80.55813392639236, "o", "\u001b[1m"] -[80.58813392639236, "o", "\u001b[36m"] -[80.61813392639236, "o", "\u001b[91m"] -[80.64813392639236, "o", "$"] -[80.67813392639236, "o", " "] -[80.70813392639236, "o", "\u001b[0m"] -[99.2902588939673, "o", "\u001b[H"] -[99.3202588939673, "o", "\u001b[J"] -[99.35025889396731, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now run the dbt models."] -[99.38025889396731, "o", "\r\n"] -[99.41025889396731, "o", "$"] -[99.44025889396731, "o", " "] -[99.47025889396731, "o", "c"] -[99.50025889396731, "o", "d"] -[99.53025889396731, "o", " "] -[99.56025889396732, "o", "j"] -[99.59025889396732, "o", "a"] -[99.62025889396732, "o", "f"] -[99.65025889396732, "o", "f"] -[99.68025889396732, "o", "l"] -[99.71025889396732, "o", "e"] -[99.74025889396732, "o", "_"] -[99.77025889396732, "o", "s"] -[99.80025889396732, "o", "h"] -[99.83025889396733, "o", "o"] -[99.86025889396733, "o", "p"] -[99.89025889396733, "o", " "] -[99.92025889396733, "o", "&"] -[99.95025889396733, "o", "&"] -[99.98025889396733, "o", " "] -[100.01025889396733, "o", "d"] -[100.04025889396733, "o", "b"] -[100.07025889396733, "o", "t"] -[100.10025889396734, "o", " "] -[100.13025889396734, "o", "r"] -[100.16025889396734, "o", "u"] -[100.19025889396734, "o", "n"] -[100.22025889396734, "o", " "] -[100.25025889396734, "o", "-"] -[100.28025889396734, "o", "-"] -[100.31025889396734, "o", "p"] -[100.34025889396734, "o", "r"] -[100.37025889396735, "o", "o"] -[100.40025889396735, "o", "f"] -[100.43025889396735, "o", "i"] -[100.46025889396735, "o", "l"] -[100.49025889396735, "o", "e"] -[100.52025889396735, "o", "s"] -[100.55025889396735, "o", "-"] -[100.58025889396735, "o", "d"] -[100.61025889396736, "o", "i"] -[100.64025889396736, "o", "r"] -[100.67025889396736, "o", " "] -[100.70025889396736, "o", "."] -[100.73025889396736, "o", "."] -[100.76025889396736, "o", "/"] -[100.79025889396736, "o", "."] -[100.82025889396736, "o", "d"] -[100.85025889396736, "o", "b"] -[100.88025889396737, "o", "t"] -[100.91025889396737, "o", "\r\n"] -[100.94025889396737, "o", "\u001b[0m"] -[100.97025889396737, "o", "\r\n"] -[101.92156023025582, "o", "Running with dbt=0.18.0\r\n"] -[102.31745118141244, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] -[103.18117255210946, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] -[103.18374794960091, "o", "\r\n"] -[103.49479264259408, "o", "17:55:42 | Concurrency: 4 threads (target='splitgraph')\r\n"] -[103.49486583709786, "o", "17:55:42 | \r\n"] -[103.49894184112618, "o", "17:55:42 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]\r\n"] -[103.5165209198005, "o", "17:55:42 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]\r\n"] -[103.53148979187081, "o", "17:55:42 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]\r\n"] -[103.54030651092599, "o", "17:55:42 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]\r\n"] -[103.79616993904183, "o", "17:55:43 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.27s]"] -[103.79636615753243, "o", "\r\n"] -[103.80029505729745, "o", "17:55:43 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.30s]"] -[103.80034059524606, "o", "\r\n"] -[103.80224961280892, "o", "17:55:43 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.27s]"] -[103.80233901977608, "o", "\r\n"] -[103.80627578735421, "o", "17:55:43 | 5 of 9 START table model dbt_jaffle.order_payments................... [RUN]"] -[103.80630606651376, "o", "\r\n"] -[103.80804723739693, "o", "17:55:43 | 6 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]\r\n"] -[103.81128829956124, "o", "17:55:43 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.27s]"] -[103.81131905555795, "o", "\r\n"] -[103.82116931915353, "o", "17:55:43 | 7 of 9 START table model dbt_jaffle.customer_payments................ [RUN]"] -[103.82120555877755, "o", "\r\n"] -[104.01043361663888, "o", "17:55:43 | 5 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.19s]"] -[104.01045626640389, "o", "\r\n"] -[104.02055067062447, "o", "17:55:43 | 8 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]"] -[104.0205685520179, "o", "\r\n"] -[104.03954357147286, "o", "17:55:43 | 6 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.21s]\r\n"] -[104.04116815567086, "o", "17:55:43 | 7 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.20s]"] -[104.04119009018014, "o", "\r\n"] -[104.04357165336678, "o", "17:55:43 | 9 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]"] -[104.04360240936349, "o", "\r\n"] -[104.13745087623666, "o", "17:55:43 | 8 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.11s]"] -[104.13747567176888, "o", "\r\n"] -[104.15514296531747, "o", "17:55:43 | 9 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.10s]\r\n"] -[104.23653930664132, "o", "17:55:43 | \r\n"] -[104.23685735702584, "o", "17:55:43 | Finished running 4 view models, 5 table models in 1.05s.\r\n"] -[104.27030152320931, "o", "\r\n"] -[104.27032011985848, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] -[104.29957789421151, "o", "\u001b[0m"] -[104.32957789421151, "o", "\u001b[1m"] -[104.35957789421151, "o", "\u001b[36m"] -[104.38957789421151, "o", "\u001b[91m"] -[104.41957789421151, "o", "$"] -[104.44957789421152, "o", " "] -[104.47957789421152, "o", "\u001b[0m"] -[119.7902588939673, "o", "\u001b[H"] -[119.8202588939673, "o", "\u001b[J"] -[119.85025889396731, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Take a look at the built dataset and commit it."] -[119.88025889396731, "o", "\r\n"] -[119.91025889396731, "o", "$ # Note Splitgraph doesn't currently support storing views\r\n"] -[119.94025889396731, "o", "$ # that dbt uses as a staging point for the initial data.\r\n"] -[119.97025889396731, "o", "$"] -[120.00025889396731, "o", " "] -[120.03025889396731, "o", "s"] -[120.06025889396732, "o", "g"] -[120.09025889396732, "o", "r"] -[120.12025889396732, "o", " "] -[120.15025889396732, "o", "d"] -[120.18025889396732, "o", "i"] -[120.21025889396732, "o", "f"] -[120.24025889396732, "o", "f"] -[120.27025889396732, "o", " "] -[120.30025889396732, "o", "d"] -[120.33025889396733, "o", "b"] -[120.36025889396733, "o", "t"] -[120.39025889396733, "o", "_"] -[120.42025889396733, "o", "j"] -[120.45025889396733, "o", "a"] -[120.48025889396733, "o", "f"] -[120.51025889396733, "o", "f"] -[120.54025889396733, "o", "l"] -[120.57025889396733, "o", "e"] -[120.60025889396734, "o", "\r\n"] -[120.63025889396734, "o", "$"] -[120.66025889396734, "o", " "] -[120.69025889396734, "o", "s"] -[120.72025889396734, "o", "g"] -[120.75025889396734, "o", "r"] -[120.78025889396734, "o", " "] -[120.81025889396734, "o", "c"] -[120.84025889396734, "o", "o"] -[120.87025889396735, "o", "m"] -[120.90025889396735, "o", "m"] -[120.93025889396735, "o", "i"] -[120.96025889396735, "o", "t"] -[120.99025889396735, "o", " "] -[121.02025889396735, "o", "d"] -[121.05025889396735, "o", "b"] -[121.08025889396735, "o", "t"] -[121.11025889396736, "o", "_"] -[121.14025889396736, "o", "j"] -[121.17025889396736, "o", "a"] -[121.20025889396736, "o", "f"] -[121.23025889396736, "o", "f"] -[121.26025889396736, "o", "l"] -[121.29025889396736, "o", "e"] -[121.32025889396736, "o", "\r\n"] -[121.35025889396736, "o", "$"] -[121.38025889396737, "o", " "] -[121.41025889396737, "o", "s"] -[121.44025889396737, "o", "g"] -[121.47025889396737, "o", "r"] -[121.50025889396737, "o", " "] -[121.53025889396737, "o", "t"] -[121.56025889396737, "o", "a"] -[121.59025889396737, "o", "g"] -[121.62025889396737, "o", " "] -[121.65025889396738, "o", "d"] -[121.68025889396738, "o", "b"] -[121.71025889396738, "o", "t"] -[121.74025889396738, "o", "_"] -[121.77025889396738, "o", "j"] -[121.80025889396738, "o", "a"] -[121.83025889396738, "o", "f"] -[121.86025889396738, "o", "f"] -[121.89025889396738, "o", "l"] -[121.92025889396739, "o", "e"] -[121.95025889396739, "o", " "] -[121.98025889396739, "o", "a"] -[122.01025889396739, "o", "s"] -[122.04025889396739, "o", "o"] -[122.07025889396739, "o", "f"] -[122.10025889396739, "o", "_"] -[122.1302588939674, "o", "2"] -[122.1602588939674, "o", "0"] -[122.1902588939674, "o", "1"] -[122.2202588939674, "o", "8"] -[122.2502588939674, "o", "0"] -[122.2802588939674, "o", "4"] -[122.3102588939674, "o", "0"] -[122.3402588939674, "o", "9"] -[122.3702588939674, "o", "\r\n"] -[122.4002588939674, "o", "\u001b[0m"] -[122.4302588939674, "o", "\r\n"] -[122.65791025161816, "o", "Between 000000000000 and the current working copy: \r\n"] -[122.65792407989575, "o", "customer_orders: table added\r\ncustomer_payments: table added\r\ndim_customers: table added\r\nfct_orders: table added\r\norder_payments: table added\r\nstg_jaffle_shop__customers: untracked\r\nstg_jaffle_shop__orders: untracked\r\nstg_jaffle_shop__payments: untracked\r\nstg_stripe__payments: untracked\r\n"] -[122.85506310463025, "o", "Committing dbt_jaffle...\r\n"] -[122.86987056732251, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] -[122.87107410430981, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] -[122.87229027748181, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] -[122.8733958244331, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] -[122.88186373710705, "o", "Processing table order_payments\r\n"] -[122.95559754371716, "o", "Processing table customer_orders\r\n"] -[122.9762794017799, "o", "Processing table customer_payments\r\n"] -[122.99628605842663, "o", "Processing table fct_orders\r\n"] -[123.02127971649243, "o", "Processing table dim_customers\r\n"] -[123.0515340805061, "o", "Committed dbt_jaffle as 9a9f84e318c9.\r\n"] -[123.25414695739819, "o", "Tagged dbt_jaffle:9a9f84e318c9d339735341d2a0d52217721af39e336b9125699b3927b24542a1 with asof_20180409.\r\n"] -[123.28414695739819, "o", "\u001b[1m"] -[123.3141469573982, "o", "\u001b[36m"] -[123.3441469573982, "o", "\u001b[91m"] -[123.3741469573982, "o", "$"] -[123.4041469573982, "o", " "] -[123.4341469573982, "o", "\u001b[0m"] -[134.29025889396732, "o", "\u001b[H"] -[134.32025889396732, "o", "\u001b[J"] -[134.35025889396732, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the new version of the raw dataset and run dbt against it as well."] -[134.38025889396732, "o", "\r\n"] -[134.41025889396732, "o", "$"] -[134.44025889396733, "o", " "] -[134.47025889396733, "o", "s"] -[134.50025889396733, "o", "g"] -[134.53025889396733, "o", "r"] -[134.56025889396733, "o", " "] -[134.59025889396733, "o", "c"] -[134.62025889396733, "o", "h"] -[134.65025889396733, "o", "e"] -[134.68025889396733, "o", "c"] -[134.71025889396734, "o", "k"] -[134.74025889396734, "o", "o"] -[134.77025889396734, "o", "u"] -[134.80025889396734, "o", "t"] -[134.83025889396734, "o", " "] -[134.86025889396734, "o", "r"] -[134.89025889396734, "o", "a"] -[134.92025889396734, "o", "w"] -[134.95025889396734, "o", "_"] -[134.98025889396735, "o", "j"] -[135.01025889396735, "o", "a"] -[135.04025889396735, "o", "f"] -[135.07025889396735, "o", "f"] -[135.10025889396735, "o", "l"] -[135.13025889396735, "o", "e"] -[135.16025889396735, "o", "_"] -[135.19025889396735, "o", "s"] -[135.22025889396735, "o", "h"] -[135.25025889396736, "o", "o"] -[135.28025889396736, "o", "p"] -[135.31025889396736, "o", ":"] -[135.34025889396736, "o", "a"] -[135.37025889396736, "o", "s"] -[135.40025889396736, "o", "o"] -[135.43025889396736, "o", "f"] -[135.46025889396736, "o", "_"] -[135.49025889396736, "o", "2"] -[135.52025889396737, "o", "0"] -[135.55025889396737, "o", "1"] -[135.58025889396737, "o", "8"] -[135.61025889396737, "o", "0"] -[135.64025889396737, "o", "4"] -[135.67025889396737, "o", "1"] -[135.70025889396737, "o", "0"] -[135.73025889396737, "o", "\r\n"] -[135.76025889396738, "o", "$"] -[135.79025889396738, "o", " "] -[135.82025889396738, "o", "c"] -[135.85025889396738, "o", "d"] -[135.88025889396738, "o", " "] -[135.91025889396738, "o", "j"] -[135.94025889396738, "o", "a"] -[135.97025889396738, "o", "f"] -[136.00025889396738, "o", "f"] -[136.03025889396739, "o", "l"] -[136.0602588939674, "o", "e"] -[136.0902588939674, "o", "_"] -[136.1202588939674, "o", "s"] -[136.1502588939674, "o", "h"] -[136.1802588939674, "o", "o"] -[136.2102588939674, "o", "p"] -[136.2402588939674, "o", " "] -[136.2702588939674, "o", "&"] -[136.3002588939674, "o", "&"] -[136.3302588939674, "o", " "] -[136.3602588939674, "o", "d"] -[136.3902588939674, "o", "b"] -[136.4202588939674, "o", "t"] -[136.4502588939674, "o", " "] -[136.4802588939674, "o", "r"] -[136.5102588939674, "o", "u"] -[136.5402588939674, "o", "n"] -[136.5702588939674, "o", " "] -[136.6002588939674, "o", "-"] -[136.6302588939674, "o", "-"] -[136.6602588939674, "o", "p"] -[136.6902588939674, "o", "r"] -[136.7202588939674, "o", "o"] -[136.7502588939674, "o", "f"] -[136.7802588939674, "o", "i"] -[136.81025889396741, "o", "l"] -[136.84025889396742, "o", "e"] -[136.87025889396742, "o", "s"] -[136.90025889396742, "o", "-"] -[136.93025889396742, "o", "d"] -[136.96025889396742, "o", "i"] -[136.99025889396742, "o", "r"] -[137.02025889396742, "o", " "] -[137.05025889396742, "o", "."] -[137.08025889396743, "o", "."] -[137.11025889396743, "o", "/"] -[137.14025889396743, "o", "."] -[137.17025889396743, "o", "d"] -[137.20025889396743, "o", "b"] -[137.23025889396743, "o", "t"] -[137.26025889396743, "o", "\r\n"] -[137.29025889396743, "o", "\u001b[0m"] -[137.32025889396743, "o", "\r\n"] -[137.78585771560745, "o", "Checked out raw_jaffle_shop:9041a7f8f7ff.\r\n"] -[138.75138572692947, "o", "Running with dbt=0.18.0\r\n"] -[139.17818120956497, "o", "* Deprecation Warning: dbt v0.17.0 introduces a new config format for the\r\ndbt_project.yml file. Support for the existing version 1 format will be removed\r\nin a future release of dbt. The following packages are currently configured with\r\nconfig version 1:\r\n - jaffle_shop\r\n\r\nFor upgrading instructions, consult the documentation:\r\n https://docs.getdbt.com/docs/guides/migration-guide/upgrading-to-0-17-0\r\n\r\n"] -[140.0901089096077, "o", "Found 9 models, 28 tests, 0 snapshots, 0 analyses, 138 macros, 0 operations, 0 seed files, 3 sources\r\n"] -[140.09275392532425, "o", "\r\n"] -[140.5133481407173, "o", "17:55:48 | Concurrency: 4 threads (target='splitgraph')"] -[140.51339081764297, "o", "\r\n"] -[140.5136025333412, "o", "17:55:48 | "] -[140.51361493110733, "o", "\r\n"] -[140.5227167987831, "o", "17:55:48 | 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders........... [RUN]\r\n"] -[140.52318600654678, "o", "17:55:48 | 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments......... [RUN]"] -[140.52321390152053, "o", "\r\n"] -[140.52883342742996, "o", "17:55:48 | 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers........ [RUN]\r\n"] -[140.5343170547493, "o", "17:55:48 | 4 of 9 START view model dbt_jaffle.stg_stripe__payments.............. [RUN]\r\n"] -[140.8461220645912, "o", "17:55:48 | 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders...... [\u001b[32mCREATE VIEW\u001b[0m in 0.32s]"] -[140.8461451911934, "o", "\r\n"] -[140.84777931213455, "o", "17:55:48 | 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments.... [\u001b[32mCREATE VIEW\u001b[0m in 0.31s]\r\n"] -[140.84996632576065, "o", "17:55:48 | 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers... [\u001b[32mCREATE VIEW\u001b[0m in 0.31s]\r\n"] -[140.85221842765884, "o", "17:55:48 | 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments......... [\u001b[32mCREATE VIEW\u001b[0m in 0.31s]"] -[140.85225037574844, "o", "\r\n"] -[140.8541036033638, "o", "17:55:48 | 5 of 9 START table model dbt_jaffle.customer_orders.................. [RUN]"] -[140.85413340568618, "o", "\r\n"] -[140.85598973274307, "o", "17:55:48 | 6 of 9 START table model dbt_jaffle.customer_payments................ [RUN]"] -[140.8610535049446, "o", "\r\n"] -[140.8678656005867, "o", "17:55:48 | 7 of 9 START table model dbt_jaffle.order_payments................... [RUN]\r\n"] -[141.0767255210884, "o", "17:55:48 | 5 of 9 OK created table model dbt_jaffle.customer_orders............. [\u001b[32mSELECT 62\u001b[0m in 0.21s]"] -[141.07675961494522, "o", "\r\n"] -[141.07984618187027, "o", "17:55:48 | 7 of 9 OK created table model dbt_jaffle.order_payments.............. [\u001b[32mSELECT 99\u001b[0m in 0.20s]\r\n"] -[141.08179644584732, "o", "17:55:48 | 8 of 9 START table model dbt_jaffle.fct_orders....................... [RUN]\r\n"] -[141.12046269416885, "o", "17:55:49 | 6 of 9 OK created table model dbt_jaffle.customer_payments........... [\u001b[32mSELECT 62\u001b[0m in 0.25s]"] -[141.12050251007156, "o", "\r\n"] -[141.1251497650154, "o", "17:55:49 | 9 of 9 START table model dbt_jaffle.dim_customers.................... [RUN]"] -[141.12523678779678, "o", "\r\n"] -[141.23156813621597, "o", "17:55:49 | 8 of 9 OK created table model dbt_jaffle.fct_orders.................. [\u001b[32mSELECT 99\u001b[0m in 0.14s]"] -[141.23161295890884, "o", "\r\n"] -[141.24258355140762, "o", "17:55:49 | 9 of 9 OK created table model dbt_jaffle.dim_customers............... [\u001b[32mSELECT 100\u001b[0m in 0.12s]\r\n"] -[141.25372580528335, "o", "17:55:49 | \r\n"] -[141.25390128135757, "o", "17:55:49 | Finished running 4 view models, 5 table models in 1.16s."] -[141.2539534950264, "o", "\r\n"] -[141.2854955577858, "o", "\r\n"] -[141.2856712722786, "o", "\u001b[32mCompleted successfully\u001b[0m\r\n"] -[141.28585437774734, "o", "\r\nDone. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] -[141.31334856987075, "o", "\u001b[0m"] -[141.34334856987076, "o", "\u001b[1m"] -[141.37334856987076, "o", "\u001b[36m"] -[141.40334856987076, "o", "\u001b[91m"] -[141.43334856987076, "o", "$"] -[141.46334856987076, "o", " "] -[141.49334856987076, "o", "\u001b[0m"] -[155.79025889396732, "o", "\u001b[H"] -[155.82025889396732, "o", "\u001b[J"] -[155.85025889396732, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create an image from the new data."] -[155.88025889396732, "o", "\r\n"] -[155.91025889396732, "o", "$"] -[155.94025889396733, "o", " "] -[155.97025889396733, "o", "s"] -[156.00025889396733, "o", "g"] -[156.03025889396733, "o", "r"] -[156.06025889396733, "o", " "] -[156.09025889396733, "o", "c"] -[156.12025889396733, "o", "o"] -[156.15025889396733, "o", "m"] -[156.18025889396733, "o", "m"] -[156.21025889396734, "o", "i"] -[156.24025889396734, "o", "t"] -[156.27025889396734, "o", " "] -[156.30025889396734, "o", "d"] -[156.33025889396734, "o", "b"] -[156.36025889396734, "o", "t"] -[156.39025889396734, "o", "_"] -[156.42025889396734, "o", "j"] -[156.45025889396734, "o", "a"] -[156.48025889396735, "o", "f"] -[156.51025889396735, "o", "f"] -[156.54025889396735, "o", "l"] -[156.57025889396735, "o", "e"] -[156.60025889396735, "o", "\r\n"] -[156.63025889396735, "o", "$"] -[156.66025889396735, "o", " "] -[156.69025889396735, "o", "s"] -[156.72025889396735, "o", "g"] -[156.75025889396736, "o", "r"] -[156.78025889396736, "o", " "] -[156.81025889396736, "o", "t"] -[156.84025889396736, "o", "a"] -[156.87025889396736, "o", "g"] -[156.90025889396736, "o", " "] -[156.93025889396736, "o", "d"] -[156.96025889396736, "o", "b"] -[156.99025889396736, "o", "t"] -[157.02025889396737, "o", "_"] -[157.05025889396737, "o", "j"] -[157.08025889396737, "o", "a"] -[157.11025889396737, "o", "f"] -[157.14025889396737, "o", "f"] -[157.17025889396737, "o", "l"] -[157.20025889396737, "o", "e"] -[157.23025889396737, "o", " "] -[157.26025889396738, "o", "a"] -[157.29025889396738, "o", "s"] -[157.32025889396738, "o", "o"] -[157.35025889396738, "o", "f"] -[157.38025889396738, "o", "_"] -[157.41025889396738, "o", "2"] -[157.44025889396738, "o", "0"] -[157.47025889396738, "o", "1"] -[157.50025889396738, "o", "8"] -[157.53025889396739, "o", "0"] -[157.5602588939674, "o", "4"] -[157.5902588939674, "o", "1"] -[157.6202588939674, "o", "0"] -[157.6502588939674, "o", "\r\n"] -[157.6802588939674, "o", "\u001b[0m"] -[157.7102588939674, "o", "\r\n"] -[157.91739814758373, "o", "Committing dbt_jaffle...\r\n"] -[157.9416138458259, "o", "Processing table fct_orders\r\n"] -[158.01813071250987, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] -[158.02525465965343, "o", "Processing table customer_orders\r\n"] -[158.03062646865916, "o", "Object o0fafb9e76c06e221af3aa558b0a751b176857a09b2d75ca00826becbd12ef5 already exists, skipping\r\n"] -[158.03959577560497, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] -[158.04077070236278, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] -[158.04196875572276, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] -[158.04929678917003, "o", "Processing table order_payments\r\n"] -[158.05517333030772, "o", "Object o87940f703edacc7113c37ae83a6abe6293f48cbb940171ef03875a066b0c5c already exists, skipping\r\n"] -[158.06982582092357, "o", "Processing table customer_payments\r\n"] -[158.07464068412852, "o", "Object o47a7af4dc6d74898da55e6c760eac4d702db25633cfab4e28e6df77cf00098 already exists, skipping\r\n"] -[158.0869986343391, "o", "Processing table dim_customers\r\n"] -[158.09247057914806, "o", "Object o9656926ef986d89e326952a43869eaf3dc59905ff22aba22cd3dd67a834dc5 already exists, skipping\r\n"] -[158.11760681152415, "o", "Committed dbt_jaffle as 1695a4d6f28d.\r\n"] -[158.33120291709972, "o", "Tagged dbt_jaffle:1695a4d6f28d774f98f4ef52d30f0572c2cbc3138c40074dc489e41e90f9debe with asof_20180410.\r\n"] -[158.36120291709972, "o", "\u001b[1m"] -[158.39120291709972, "o", "\u001b[36m"] -[158.42120291709972, "o", "\u001b[91m"] -[158.45120291709972, "o", "$"] -[158.48120291709972, "o", " "] -[158.51120291709972, "o", "\u001b[0m"] -[165.79025889396732, "o", "\u001b[H"] -[165.82025889396732, "o", "\u001b[J"] -[165.85025889396732, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We now have two versions of the source and the target dataset."] -[165.88025889396732, "o", "\r\n"] -[165.91025889396732, "o", "$"] -[165.94025889396733, "o", " "] -[165.97025889396733, "o", "s"] -[166.00025889396733, "o", "g"] -[166.03025889396733, "o", "r"] -[166.06025889396733, "o", " "] -[166.09025889396733, "o", "l"] -[166.12025889396733, "o", "o"] -[166.15025889396733, "o", "g"] -[166.18025889396733, "o", " "] -[166.21025889396734, "o", "-"] -[166.24025889396734, "o", "t"] -[166.27025889396734, "o", " "] -[166.30025889396734, "o", "r"] -[166.33025889396734, "o", "a"] -[166.36025889396734, "o", "w"] -[166.39025889396734, "o", "_"] -[166.42025889396734, "o", "j"] -[166.45025889396734, "o", "a"] -[166.48025889396735, "o", "f"] -[166.51025889396735, "o", "f"] -[166.54025889396735, "o", "l"] -[166.57025889396735, "o", "e"] -[166.60025889396735, "o", "_"] -[166.63025889396735, "o", "s"] -[166.66025889396735, "o", "h"] -[166.69025889396735, "o", "o"] -[166.72025889396735, "o", "p"] -[166.75025889396736, "o", "\r\n"] -[166.78025889396736, "o", "$"] -[166.81025889396736, "o", " "] -[166.84025889396736, "o", "s"] -[166.87025889396736, "o", "g"] -[166.90025889396736, "o", "r"] -[166.93025889396736, "o", " "] -[166.96025889396736, "o", "l"] -[166.99025889396736, "o", "o"] -[167.02025889396737, "o", "g"] -[167.05025889396737, "o", " "] -[167.08025889396737, "o", "-"] -[167.11025889396737, "o", "t"] -[167.14025889396737, "o", " "] -[167.17025889396737, "o", "d"] -[167.20025889396737, "o", "b"] -[167.23025889396737, "o", "t"] -[167.26025889396738, "o", "_"] -[167.29025889396738, "o", "j"] -[167.32025889396738, "o", "a"] -[167.35025889396738, "o", "f"] -[167.38025889396738, "o", "f"] -[167.41025889396738, "o", "l"] -[167.44025889396738, "o", "e"] -[167.47025889396738, "o", "\r\n"] -[167.50025889396738, "o", "\u001b[0m"] -[167.53025889396739, "o", "\r\n"] -[167.75093650817942, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-03-12 17:55:32\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m97615ea01b\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-03-12 17:55:34\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m9041a7f8f7\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-03-12 17:55:37\u001b[0m\r\n"] -[167.9668974876411, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-03-12 17:55:40\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m9a9f84e318\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-03-12 17:55:44\u001b[0m\r\n \u2514 \u001b[1m\u001b[91m1695a4d6f2\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-03-12 17:55:49\u001b[0m\r\n"] -[167.9968974876411, "o", "\u001b[1m"] -[168.0268974876411, "o", "\u001b[36m"] -[168.0568974876411, "o", "\u001b[91m"] -[168.0868974876411, "o", "$"] -[168.1168974876411, "o", " "] -[168.1468974876411, "o", "\u001b[0m"] -[173.1768974876411, "o", "\u001b[H"] -[173.2068974876411, "o", "\u001b[J"] -[173.2368974876411, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the difference between the two datasets that dbt built."] -[173.2668974876411, "o", "\r\n"] -[173.2968974876411, "o", "$"] -[173.3268974876411, "o", " "] -[173.3568974876411, "o", "s"] -[173.3868974876411, "o", "g"] -[173.4168974876411, "o", "r"] -[173.4468974876411, "o", " "] -[173.4768974876411, "o", "d"] -[173.5068974876411, "o", "i"] -[173.5368974876411, "o", "f"] -[173.5668974876411, "o", "f"] -[173.59689748764112, "o", " "] -[173.62689748764112, "o", "d"] -[173.65689748764112, "o", "b"] -[173.68689748764112, "o", "t"] -[173.71689748764112, "o", "_"] -[173.74689748764112, "o", "j"] -[173.77689748764112, "o", "a"] -[173.80689748764112, "o", "f"] -[173.83689748764112, "o", "f"] -[173.86689748764113, "o", "l"] -[173.89689748764113, "o", "e"] -[173.92689748764113, "o", " "] -[173.95689748764113, "o", "a"] -[173.98689748764113, "o", "s"] -[174.01689748764113, "o", "o"] -[174.04689748764113, "o", "f"] -[174.07689748764113, "o", "_"] -[174.10689748764113, "o", "2"] -[174.13689748764114, "o", "0"] -[174.16689748764114, "o", "1"] -[174.19689748764114, "o", "8"] -[174.22689748764114, "o", "0"] -[174.25689748764114, "o", "4"] -[174.28689748764114, "o", "0"] -[174.31689748764114, "o", "9"] -[174.34689748764114, "o", " "] -[174.37689748764114, "o", "a"] -[174.40689748764115, "o", "s"] -[174.43689748764115, "o", "o"] -[174.46689748764115, "o", "f"] -[174.49689748764115, "o", "_"] -[174.52689748764115, "o", "2"] -[174.55689748764115, "o", "0"] -[174.58689748764115, "o", "1"] -[174.61689748764115, "o", "8"] -[174.64689748764116, "o", "0"] -[174.67689748764116, "o", "4"] -[174.70689748764116, "o", "1"] -[174.73689748764116, "o", "0"] -[174.76689748764116, "o", " "] -[174.79689748764116, "o", "-"] -[174.82689748764116, "o", "-"] -[174.85689748764116, "o", "v"] -[174.88689748764116, "o", "e"] -[174.91689748764117, "o", "r"] -[174.94689748764117, "o", "b"] -[174.97689748764117, "o", "o"] -[175.00689748764117, "o", "s"] -[175.03689748764117, "o", "e"] -[175.06689748764117, "o", "\r\n"] -[175.09689748764117, "o", "\u001b[0m"] -[175.12689748764117, "o", "\r\n"] -[175.5219761466988, "o", "Between 9a9f84e318c9 and 1695a4d6f28d: \r\n"] -[175.52256337165912, "o", "customer_orders: no changes.\r\ncustomer_payments: no changes.\r\ndim_customers: no changes.\r\nfct_orders: added 5 rows, removed 5 rows.\r\n- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending', 0, 0, 0, 23, 23)\r\n"] -[175.52258363723834, "o", "- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending', 0, 0, 15, 0, 15)\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 0, 25, 0, 25)\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped', 0, 0, 17, 0, 17)\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 23, 0, 0, 23)\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned', 0, 0, 0, 23, 23)\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned', 0, 0, 15, 0, 15)\r\n+ (84, 70, datetime.datetime(2018, 3,"] -[175.5225910282143, "o", " 26, 0, 0), 'returned', 0, 0, 25, 0, 25)\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 17, 0, 17)\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 23, 0, 0, 23)\r\norder_payments: no changes.\r\n"] -[175.5525910282143, "o", "\u001b[1m"] -[175.5825910282143, "o", "\u001b[36m"] -[175.6125910282143, "o", "\u001b[91m"] -[175.6425910282143, "o", "$"] -[175.6725910282143, "o", " "] -[175.7025910282143, "o", "\u001b[0m"] -[182.6768974876411, "o", "\u001b[H"] -[182.7068974876411, "o", "\u001b[J"] -[182.7368974876411, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a sample query: how much in bank transfer refunds did we process?"] -[182.7668974876411, "o", "\r\n"] -[182.7968974876411, "o", "$"] -[182.8268974876411, "o", " "] -[182.8568974876411, "o", "s"] -[182.8868974876411, "o", "g"] -[182.9168974876411, "o", "r"] -[182.9468974876411, "o", " "] -[182.9768974876411, "o", "s"] -[183.0068974876411, "o", "q"] -[183.0368974876411, "o", "l"] -[183.0668974876411, "o", " "] -[183.09689748764112, "o", "-"] -[183.12689748764112, "o", "i"] -[183.15689748764112, "o", " "] -[183.18689748764112, "o", "d"] -[183.21689748764112, "o", "b"] -[183.24689748764112, "o", "t"] -[183.27689748764112, "o", "_"] -[183.30689748764112, "o", "j"] -[183.33689748764112, "o", "a"] -[183.36689748764113, "o", "f"] -[183.39689748764113, "o", "f"] -[183.42689748764113, "o", "l"] -[183.45689748764113, "o", "e"] -[183.48689748764113, "o", ":"] -[183.51689748764113, "o", "a"] -[183.54689748764113, "o", "s"] -[183.57689748764113, "o", "o"] -[183.60689748764113, "o", "f"] -[183.63689748764114, "o", "_"] -[183.66689748764114, "o", "2"] -[183.69689748764114, "o", "0"] -[183.72689748764114, "o", "1"] -[183.75689748764114, "o", "8"] -[183.78689748764114, "o", "0"] -[183.81689748764114, "o", "4"] -[183.84689748764114, "o", "0"] -[183.87689748764114, "o", "9"] -[183.90689748764115, "o", " "] -[183.93689748764115, "o", "\""] -[183.96689748764115, "o", "S"] -[183.99689748764115, "o", "E"] -[184.02689748764115, "o", "L"] -[184.05689748764115, "o", "E"] -[184.08689748764115, "o", "C"] -[184.11689748764115, "o", "T"] -[184.14689748764116, "o", " "] -[184.17689748764116, "o", "s"] -[184.20689748764116, "o", "u"] -[184.23689748764116, "o", "m"] -[184.26689748764116, "o", "("] -[184.29689748764116, "o", "b"] -[184.32689748764116, "o", "a"] -[184.35689748764116, "o", "n"] -[184.38689748764116, "o", "k"] -[184.41689748764117, "o", "_"] -[184.44689748764117, "o", "t"] -[184.47689748764117, "o", "r"] -[184.50689748764117, "o", "a"] -[184.53689748764117, "o", "n"] -[184.56689748764117, "o", "s"] -[184.59689748764117, "o", "f"] -[184.62689748764117, "o", "e"] -[184.65689748764117, "o", "r"] -[184.68689748764118, "o", "_"] -[184.71689748764118, "o", "a"] -[184.74689748764118, "o", "m"] -[184.77689748764118, "o", "o"] -[184.80689748764118, "o", "u"] -[184.83689748764118, "o", "n"] -[184.86689748764118, "o", "t"] -[184.89689748764118, "o", ")"] -[184.92689748764118, "o", " "] -[184.95689748764119, "o", "F"] -[184.9868974876412, "o", "R"] -[185.0168974876412, "o", "O"] -[185.0468974876412, "o", "M"] -[185.0768974876412, "o", " "] -[185.1068974876412, "o", "f"] -[185.1368974876412, "o", "c"] -[185.1668974876412, "o", "t"] -[185.1968974876412, "o", "_"] -[185.2268974876412, "o", "o"] -[185.2568974876412, "o", "r"] -[185.2868974876412, "o", "d"] -[185.3168974876412, "o", "e"] -[185.3468974876412, "o", "r"] -[185.3768974876412, "o", "s"] -[185.4068974876412, "o", " "] -[185.4368974876412, "o", "W"] -[185.4668974876412, "o", "H"] -[185.4968974876412, "o", "E"] -[185.5268974876412, "o", "R"] -[185.5568974876412, "o", "E"] -[185.5868974876412, "o", " "] -[185.6168974876412, "o", "s"] -[185.6468974876412, "o", "t"] -[185.6768974876412, "o", "a"] -[185.7068974876412, "o", "t"] -[185.73689748764122, "o", "u"] -[185.76689748764122, "o", "s"] -[185.79689748764122, "o", " "] -[185.82689748764122, "o", "="] -[185.85689748764122, "o", " "] -[185.88689748764122, "o", "'"] -[185.91689748764122, "o", "r"] -[185.94689748764122, "o", "e"] -[185.97689748764122, "o", "t"] -[186.00689748764123, "o", "u"] -[186.03689748764123, "o", "r"] -[186.06689748764123, "o", "n"] -[186.09689748764123, "o", "e"] -[186.12689748764123, "o", "d"] -[186.15689748764123, "o", "'"] -[186.18689748764123, "o", "\""] -[186.21689748764123, "o", "\r\n"] -[186.24689748764123, "o", "$"] -[186.27689748764124, "o", " "] -[186.30689748764124, "o", "s"] -[186.33689748764124, "o", "g"] -[186.36689748764124, "o", "r"] -[186.39689748764124, "o", " "] -[186.42689748764124, "o", "s"] -[186.45689748764124, "o", "q"] -[186.48689748764124, "o", "l"] -[186.51689748764124, "o", " "] -[186.54689748764125, "o", "-"] -[186.57689748764125, "o", "i"] -[186.60689748764125, "o", " "] -[186.63689748764125, "o", "d"] -[186.66689748764125, "o", "b"] -[186.69689748764125, "o", "t"] -[186.72689748764125, "o", "_"] -[186.75689748764125, "o", "j"] -[186.78689748764126, "o", "a"] -[186.81689748764126, "o", "f"] -[186.84689748764126, "o", "f"] -[186.87689748764126, "o", "l"] -[186.90689748764126, "o", "e"] -[186.93689748764126, "o", ":"] -[186.96689748764126, "o", "a"] -[186.99689748764126, "o", "s"] -[187.02689748764126, "o", "o"] -[187.05689748764127, "o", "f"] -[187.08689748764127, "o", "_"] -[187.11689748764127, "o", "2"] -[187.14689748764127, "o", "0"] -[187.17689748764127, "o", "1"] -[187.20689748764127, "o", "8"] -[187.23689748764127, "o", "0"] -[187.26689748764127, "o", "4"] -[187.29689748764127, "o", "1"] -[187.32689748764128, "o", "0"] -[187.35689748764128, "o", " "] -[187.38689748764128, "o", "\""] -[187.41689748764128, "o", "S"] -[187.44689748764128, "o", "E"] -[187.47689748764128, "o", "L"] -[187.50689748764128, "o", "E"] -[187.53689748764128, "o", "C"] -[187.56689748764128, "o", "T"] -[187.5968974876413, "o", " "] -[187.6268974876413, "o", "s"] -[187.6568974876413, "o", "u"] -[187.6868974876413, "o", "m"] -[187.7168974876413, "o", "("] -[187.7468974876413, "o", "b"] -[187.7768974876413, "o", "a"] -[187.8068974876413, "o", "n"] -[187.8368974876413, "o", "k"] -[187.8668974876413, "o", "_"] -[187.8968974876413, "o", "t"] -[187.9268974876413, "o", "r"] -[187.9568974876413, "o", "a"] -[187.9868974876413, "o", "n"] -[188.0168974876413, "o", "s"] -[188.0468974876413, "o", "f"] -[188.0768974876413, "o", "e"] -[188.1068974876413, "o", "r"] -[188.1368974876413, "o", "_"] -[188.1668974876413, "o", "a"] -[188.1968974876413, "o", "m"] -[188.2268974876413, "o", "o"] -[188.2568974876413, "o", "u"] -[188.2868974876413, "o", "n"] -[188.3168974876413, "o", "t"] -[188.34689748764131, "o", ")"] -[188.37689748764132, "o", " "] -[188.40689748764132, "o", "F"] -[188.43689748764132, "o", "R"] -[188.46689748764132, "o", "O"] -[188.49689748764132, "o", "M"] -[188.52689748764132, "o", " "] -[188.55689748764132, "o", "f"] -[188.58689748764132, "o", "c"] -[188.61689748764132, "o", "t"] -[188.64689748764133, "o", "_"] -[188.67689748764133, "o", "o"] -[188.70689748764133, "o", "r"] -[188.73689748764133, "o", "d"] -[188.76689748764133, "o", "e"] -[188.79689748764133, "o", "r"] -[188.82689748764133, "o", "s"] -[188.85689748764133, "o", " "] -[188.88689748764133, "o", "W"] -[188.91689748764134, "o", "H"] -[188.94689748764134, "o", "E"] -[188.97689748764134, "o", "R"] -[189.00689748764134, "o", "E"] -[189.03689748764134, "o", " "] -[189.06689748764134, "o", "s"] -[189.09689748764134, "o", "t"] -[189.12689748764134, "o", "a"] -[189.15689748764134, "o", "t"] -[189.18689748764135, "o", "u"] -[189.21689748764135, "o", "s"] -[189.24689748764135, "o", " "] -[189.27689748764135, "o", "="] -[189.30689748764135, "o", " "] -[189.33689748764135, "o", "'"] -[189.36689748764135, "o", "r"] -[189.39689748764135, "o", "e"] -[189.42689748764136, "o", "t"] -[189.45689748764136, "o", "u"] -[189.48689748764136, "o", "r"] -[189.51689748764136, "o", "n"] -[189.54689748764136, "o", "e"] -[189.57689748764136, "o", "d"] -[189.60689748764136, "o", "'"] -[189.63689748764136, "o", "\""] -[189.66689748764136, "o", "\r\n"] -[189.69689748764137, "o", "\u001b[0m"] -[189.72689748764137, "o", "\r\n"] -[190.38053704261878, "o", "3\r\n"] -[191.03291917801002, "o", "60\r\n"] -[191.06291917801002, "o", "\u001b[1m"] -[191.09291917801002, "o", "\u001b[36m"] -[191.12291917801002, "o", "\u001b[91m"] -[191.15291917801002, "o", "$"] -[191.18291917801002, "o", " "] -[191.21291917801003, "o", "\u001b[0m"] \ No newline at end of file +[2.6399999999999975, "o", "$"] +[2.6699999999999973, "o", " "] +[2.699999999999997, "o", "m"] +[2.729999999999997, "o", "v"] +[2.7599999999999967, "o", " "] +[2.7899999999999965, "o", "j"] +[2.8199999999999963, "o", "a"] +[2.849999999999996, "o", "f"] +[2.879999999999996, "o", "f"] +[2.9099999999999957, "o", "l"] +[2.9399999999999955, "o", "e"] +[2.9699999999999953, "o", "_"] +[2.999999999999995, "o", "s"] +[3.029999999999995, "o", "h"] +[3.0599999999999947, "o", "o"] +[3.0899999999999945, "o", "p"] +[3.1199999999999943, "o", "_"] +[3.149999999999994, "o", "a"] +[3.179999999999994, "o", "r"] +[3.2099999999999937, "o", "c"] +[3.2399999999999936, "o", "h"] +[3.2699999999999934, "o", "i"] +[3.299999999999993, "o", "v"] +[3.329999999999993, "o", "e"] +[3.3599999999999928, "o", " "] +[3.3899999999999926, "o", "j"] +[3.4199999999999924, "o", "a"] +[3.449999999999992, "o", "f"] +[3.479999999999992, "o", "f"] +[3.509999999999992, "o", "l"] +[3.5399999999999916, "o", "e"] +[3.5699999999999914, "o", "_"] +[3.599999999999991, "o", "s"] +[3.629999999999991, "o", "h"] +[3.659999999999991, "o", "o"] +[3.6899999999999906, "o", "p"] +[3.7199999999999904, "o", "\r\n"] +[3.7499999999999902, "o", "\u001b[0m"] +[3.77999999999999, "o", "\r\n"] +[4.7799999999999905, "o", "installed version: 1.0.0\r\n latest version: 1.0.0\r\n\r\nUp to date!\r\n\r\nPlugins:\r\n - postgres: 1.0.0\r\n"] +[4.780081300735464, "o", "\u001b[0m"] +[4.782917766571035, "o", "Cloning into 'jaffle_shop_archive'...\r\n"] +[5.253615884780874, "o", "remote: Enumerating objects: 417, done. \r\nremote: Counting objects: 0% (1/417) \rremote: Counting objects: 1% (5/417) \r"] +[5.253711490631094, "o", "remote: Counting objects: 2% (9/417) \rremote: Counting objects: 3% (13/417) \rremote: Counting objects: 4% (17/417) \rremote: Counting objects: 5% (21/417) \rremote: Counting objects: 6% (26/417) \rremote: Counting objects: 7% (30/417) \rremote: Counting objects: 8% (34/417) \rremote: Counting objects: 9% (38/417) \rremote: Counting objects: 10% (42/417) \rremote: Counting objects: 11% (46/417) \rremote: Counting objects: 12% (5"] +[5.253856925964346, "o", "1/417) \rremote: Counting objects: 13% (55/417) \rremote: Counting objects: 14% (59/417) \rremote: Counting objects: 15% (63/417) \rremote: Counting objects: 16% (67/417) \rremote: Counting objects: 17% (71/417) \rremote: Counting objects: 18% (76/417) \rremote: Counting objects: 19% (80/417) \rremote: Counting objects: 20% (84/417) \rremote: Counting objects: 21% (88/417) \rremote: Counting objects: 22% (92/417) \rremote: Counting "] +[5.2539646911621, "o", "objects: 23% (96/417) \rremote: Counting objects: 24% (101/417) \rremote: Counting objects: 25% (105/417) \rremote: Counting objects: 26% (109/417) \rremote: Counting objects: 27% (113/417) \rremote: Counting objects: 28% (117/417) \rremote: Counting objects: 29% (121/417) \rremote: Counting objects: 30% (126/417) \rremote: Counting objects: 31% (130/417) \rremote: Counting objects: 32% (134/417) \rremote: Counting objects: 33% (138/417)"] +[5.254029779434195, "o", " \rremote: Counting objects: 34% (142/417) \rremote: Counting objects: 35% (146/417) \rremote: Counting objects: 36% (151/417) \rremote: Counting objects: 37% (155/417) \rremote: Counting objects: 38% (159/417) \rremote: Counting objects: 39% (163/417) \rremote: Counting objects: 40% (167/417) \rremote: Counting objects: 41% (171/417) \rremote: Counting objects: 42% (176/417) \rremote: Counting objects: 43% (180/417) \rremote: Count"] +[5.254107265472403, "o", "ing objects: 44% (184/417) \rremote: Counting objects: 45% (188/417) \rremote: Counting objects: 46% (192/417) \rremote: Counting objects: 47% (196/417) \rremote: Counting objects: 48% (201/417) \rremote: Counting objects: 49% (205/417) \rremote: Counting objects: 50% (209/417) \rremote: Counting objects: 51% (213/417) \rremote: Counting objects: 52% (217/417) \rremote: Counting objects: 53% (222/417) \rremote: Counting objects: 54% (226"] +[5.254194049835196, "o", "/417) \rremote: Counting objects: 55% (230/417) \rremote: Counting objects: 56% (234/417) \rremote: Counting objects: 57% (238/417) \rremote: Counting objects: 58% (242/417) \rremote: Counting objects: 59% (247/417) \rremote: Counting objects: 60% (251/417) \rremote: Counting objects: 61% (255/417) \rremote: Counting objects: 62% (259/417) \rremote: Counting objects: 63% (263/417) \rremote: Counting objects: 64% (267/417) \rremote: "] +[5.254278688430777, "o", "Counting objects: 65% (272/417) \rremote: Counting objects: 66% (276/417) \rremote: Counting objects: 67% (280/417) \rremote: Counting objects: 68% (284/417) \rremote: Counting objects: 69% (288/417) \rremote: Counting objects: 70% (292/417) \rremote: Counting objects: 71% (297/417) \rremote: Counting objects: 72% (301/417) \rremote: Counting objects: 73% (305/417) \rremote: Counting objects: 74% (309/417) \rremote: Counting objects: 75%"] +[5.2543113517761135, "o", " (313/417) \rremote: Counting objects: 76% (317/417) \rremote: Counting objects: 77% (322/417) \rremote: Counting objects: 78% (326/417) \rremote: Counting objects: 79% (330/417) \rremote: Counting objects: 80% (334/417) \rremote: Counting objects: 81% (338/417) \rremote: Counting objects: 82% (342/417) \rremote: Counting objects: 83% (347/417) \rremote: Counting objects: 84% (351/417) \rremote: Counting objects: 85% (355/417) \rrem"] +[5.254369287490835, "o", "ote: Counting objects: 86% (359/417) \rremote: Counting objects: 87% (363/417) \rremote: Counting objects: 88% (367/417) \rremote: Counting objects: 89% (372/417) \rremote: Counting objects: 90% (376/417) \rremote: Counting objects: 91% (380/417) \rremote: Counting objects: 92% (384/417) \rremote: Counting objects: 93% (388/417) \rremote: Counting objects: 94% (392/417) \rremote: Counting objects: 95% (397/417) \rremote: Counting objects:"] +[5.254422454833975, "o", " 96% (401/417) \rremote: Counting objects: 97% (405/417) \rremote: Counting objects: 98% (409/417) \rremote: Counting objects: 99% (413/417) \rremote: Counting objects: 100% (417/417) \rremote: Counting objects: 100% (417/417), done. \r\nremote: Compressing objects: 0% (1/179) \rremote: Compressing objects: 1% (2/179) \rremote: Compressing objects: 2% (4/179) \rremote: Compressing objects: 3% (6/179) \rremote: Compressing objects: 4% ("] +[5.254457263946524, "o", "8/179) \rremote: Compressing objects: 5% (9/179) \rremote: Compressing objects: 6% (11/179) \rremote: Compressing objects: 7% (13/179) \rremote: Compressing objects: 8% (15/179) \rremote: Compressing objects: 9% (17/179) \rremote: Compressing objects: 10% (18/179) \rremote: Compressing objects: 11% (20/179) \rremote: Compressing objects: 12% (22/179) \rremote: Compressing objects: 13% (24/179) \rremote: Compressing objects: 14% (26/1"] +[5.25449278831481, "o", "79) \rremote: Compressing objects: 15% (27/179) \rremote: Compressing objects: 16% (29/179) \rremote: Compressing objects: 17% (31/179) \rremote: Compressing objects: 18% (33/179) \rremote: Compressing objects: 19% (35/179) \rremote: Compressing objects: 20% (36/179) \rremote: Compressing objects: 21% (38/179) \rremote: Compressing objects: 22% (40/179) \rremote: Compressing objects: 23% (42/179) \rremote: Compressing objects: 24% (43/179"] +[5.254502801895132, "o", ") \rremote: Compressing objects: 25% (45/179) \rremote: Compressing objects: 26% (47/179) \rremote: Compressing objects: 27% (49/179) \rremote: Compressing objects: 28% (51/179) \rremote: Compressing objects: 29% (52/179) \rremote: Compressing objects: 30% (54/179) \rremote: Compressing objects: 31% (56/179) \rremote: Compressing objects: 32% (58/179) \rremote: Compressing objects: 33% (60/179) \rremote: Compressing objects: 34% (61/179) "] +[5.254507093429556, "o", " \rremote: Compressing objects: 35% (63/179) \rremote: Compressing objects: 36% (65/179) \rremote: Compressing objects: 37% (67/179) \rremote: Compressing objects: 38% (69/179) \rremote: Compressing objects: 39% (70/179) \rremote: Compressing objects: 40% (72/179) \rremote: Compressing objects: 41% (74/179) \rremote: Compressing objects: 42% (76/179) \rremote: Compressing objects: 43% (77/179) \rremote: Compressing objects: 44% (79/179) "] +[5.254511623382559, "o", " \rremote: Compressing objects: 45% (81/179) \rremote: Compressing objects: 46% (83/179) \rremote: Compressing objects: 47% (85/179) \rremote: Compressing objects: 48% (86/179) \rremote: Compressing objects: 49% (88/179) \rremote: Compressing objects: 50% (90/179) \rremote: Compressing objects: 51% (92/179) \rremote: Compressing objects: 52% (94/179) \rremote: Compressing objects: 53% (95/179) \rremote: Compressing objects: 54% (97/179) "] +[5.254518060684195, "o", " \rremote: Compressing objects: 55% (99/179) \rremote: Compressing objects: 56% (101/179) \rremote: Compressing objects: 57% (103/179) \rremote: Compressing objects: 58% (104/179) \rremote: Compressing objects: 59% (106/179) \rremote: Compressing objects: 60% (108/179) \rremote: Compressing objects: 61% (110/179) \rremote: Compressing objects: 62% (111/179) \rremote: Compressing objects: 63% (113/179) \rremote: Compressing objects: 64% (115/17"] +[5.2545225906371975, "o", "9) \rremote: Compressing objects: 65% (117/179) \rremote: Compressing objects: 66% (119/179) \rremote: Compressing objects: 67% (120/179) \rremote: Compressing objects: 68% (122/179) \rremote: Compressing objects: 69% (124/179) \rremote: Compressing objects: 70% (126/179) \rremote: Compressing objects: 71% (128/179) \rremote: Compressing objects: 72% (129/179) \rremote: Compressing objects: 73% (131/179) \rremote: Compressing objects: 74%"] +[5.2545271205902, "o", " (133/179) \rremote: Compressing objects: 75% (135/179) \rremote: Compressing objects: 76% (137/179) \rremote: Compressing objects: 77% (138/179) \rremote: Compressing objects: 78% (140/179) \rremote: Compressing objects: 79% (142/179) \rremote: Compressing objects: 80% (144/179) \rremote: Compressing objects: 81% (145/179) \rremote: Compressing objects: 82% (147/179) \rremote: Compressing objects: 83% (149/179) \rremote: Compressing objec"] +[5.254533319473257, "o", "ts: 84% (151/179) \rremote: Compressing objects: 85% (153/179) \rremote: Compressing objects: 86% (154/179) \rremote: Compressing objects: 87% (156/179) \rremote: Compressing objects: 88% (158/179) \rremote: Compressing objects: 89% (160/179) \rremote: Compressing objects: 90% (162/179) \rremote: Compressing objects: 91% (163/179) \rremote: Compressing objects: 92% (165/179) \rremote: Compressing objects: 93% (167/179) \rremote: Compressi"] +[5.254539995193472, "o", "ng objects: 94% (169/179) \rremote: Compressing objects: 95% (171/179) \rremote: Compressing objects: 96% (172/179) \rremote: Compressing objects: 97% (174/179) \rremote: Compressing objects: 98% (176/179) \rremote: Compressing objects: 99% (178/179) \rremote: Compressing objects: 100% (179/179) \rremote: Compressing objects: 100% (179/179), done. \r\n"] +[5.260333328247061, "o", "Receiving objects: 0% (1/417)\r"] +[5.260493545532217, "o", "Receiving objects: 1% (5/417)\r"] +[5.26083519935607, "o", "Receiving objects: 2% (9/417)\r"] +[5.261083393096914, "o", "Receiving objects: 3% (13/417)\r"] +[5.261368780136099, "o", "Receiving objects: 4% (17/417)\r"] +[5.261542110443106, "o", "Receiving objects: 5% (21/417)\r"] +[5.261748580932608, "o", "Receiving objects: 6% (26/417)\r"] +[5.2619452762603665, "o", "Receiving objects: 7% (30/417)\r"] +[5.26218584060668, "o", "Receiving objects: 8% (34/417)\r"] +[5.26239278793334, "o", "Receiving objects: 9% (38/417)\r"] +[5.262573032379141, "o", "Receiving objects: 10% (42/417)\r"] +[5.262768774032583, "o", "Receiving objects: 11% (46/417)\r"] +[5.263021020889273, "o", "Receiving objects: 12% (51/417)\r"] +[5.263221292495718, "o", "Receiving objects: 13% (55/417)\r"] +[5.263414173126211, "o", "Receiving objects: 14% (59/417)\r"] +[5.263646869659414, "o", "Receiving objects: 15% (63/417)\r"] +[5.263823776245108, "o", "Receiving objects: 16% (67/417)\r"] +[5.264009265899649, "o", "Receiving objects: 17% (71/417)\r"] +[5.264246253967276, "o", "Receiving objects: 18% (76/417)\r"] +[5.264446525573721, "o", "Receiving objects: 19% (80/417)\r"] +[5.264721422195425, "o", "Receiving objects: 20% (84/417)\r"] +[5.2649219322204495, "o", "Receiving objects: 21% (88/417)\r"] +[5.265343456268301, "o", "Receiving objects: 22% (92/417)\r"] +[5.265511779785147, "o", "Receiving objects: 23% (96/417)\r"] +[5.26864483833312, "o", "Receiving objects: 24% (101/417)\r"] +[5.268900661468496, "o", "Receiving objects: 25% (105/417)\r"] +[5.269094018936148, "o", "Receiving objects: 26% (109/417)\r"] +[5.269261865615835, "o", "Receiving objects: 27% (113/417)\r"] +[5.26945426940917, "o", "Receiving objects: 28% (117/417)\r"] +[5.269639759063711, "o", "Receiving objects: 29% (121/417)\r"] +[5.269824295043936, "o", "Receiving objects: 30% (126/417)\r"] +[5.26999047279357, "o", "Receiving objects: 31% (130/417)\r"] +[5.270122556686392, "o", "Receiving objects: 32% (134/417)\r"] +[5.2702720451354885, "o", "Receiving objects: 33% (138/417)\r"] +[5.270418434143057, "o", "Receiving objects: 34% (142/417)\r"] +[5.270572690963736, "o", "Receiving objects: 35% (146/417)\r"] +[5.270792989730825, "o", "Receiving objects: 36% (151/417)\r"] +[5.270999937057486, "o", "Receiving objects: 37% (155/417)\r"] +[5.27118709564208, "o", "Receiving objects: 38% (159/417)\r"] +[5.271374492645254, "o", "Receiving objects: 39% (163/417)\r"] +[5.271520643234243, "o", "Receiving objects: 40% (167/417)\r"] +[5.271733551025381, "o", "Receiving objects: 41% (171/417)\r"] +[5.271927862167349, "o", "Receiving objects: 42% (176/417)\r"] +[5.272084503173819, "o", "Receiving objects: 43% (180/417)\r"] +[5.277749090194693, "o", "Receiving objects: 44% (184/417)\r"] +[5.27840784072875, "o", "Receiving objects: 45% (188/417)\r"] +[5.278458862304678, "o", "Receiving objects: 46% (192/417)\r"] +[5.278616695404043, "o", "Receiving objects: 47% (196/417)\r"] +[5.2791431236266995, "o", "Receiving objects: 48% (201/417)\r"] +[5.282168416976919, "o", "Receiving objects: 49% (205/417)\rReceiving objects: 50% (209/417)\rReceiving objects: 51% (213/417)\r"] +[5.2824955272674465, "o", "Receiving objects: 52% (217/417)\r"] +[5.282689838409414, "o", "Receiving objects: 53% (222/417)\r"] +[5.2830846595764065, "o", "Receiving objects: 54% (226/417)\r"] +[5.283528118133535, "o", "Receiving objects: 55% (230/417)\r"] +[5.283665208816519, "o", "Receiving objects: 56% (234/417)\r"] +[5.283927230834951, "o", "remote: Total 417 (delta 201), reused 414 (delta 198), pack-reused 0 \r\n"] +[5.284101753234854, "o", "Receiving objects: 57% (238/417)\r"] +[5.284409790039053, "o", "Receiving objects: 58% (242/417)\r"] +[5.284489183425894, "o", "Receiving objects: 59% (247/417)\r"] +[5.2845282840728665, "o", "Receiving objects: 60% (251/417)\r"] +[5.284581212997427, "o", "Receiving objects: 61% (255/417)\r"] +[5.284623889923086, "o", "Receiving objects: 62% (259/417)\r"] +[5.2846293735504055, "o", "Receiving objects: 63% (263/417)\r"] +[5.284667043685904, "o", "Receiving objects: 64% (267/417)\r"] +[5.28473952293395, "o", "Receiving objects: 65% (272/417)\r"] +[5.284768371582022, "o", "Receiving objects: 66% (276/417)\r"] +[5.284825353622427, "o", "Receiving objects: 67% (280/417)\r"] +[5.284863023757925, "o", "Receiving objects: 68% (284/417)\r"] +[5.2849088001251125, "o", "Receiving objects: 69% (288/417)\r"] +[5.284946470260611, "o", "Receiving objects: 70% (292/417)\r"] +[5.284987478256216, "o", "Receiving objects: 71% (297/417)\r"] +[5.28505805015563, "o", "Receiving objects: 72% (301/417)\r"] +[5.285083322525015, "o", "Receiving objects: 73% (305/417)\r"] +[5.285117416381826, "o", "Receiving objects: 74% (309/417)\r"] +[5.285146265029898, "o", "Receiving objects: 75% (313/417)\r"] +[5.2851996707916165, "o", "Receiving objects: 76% (317/417)\r"] +[5.285271434783926, "o", "Receiving objects: 77% (322/417)\r"] +[5.285311489105215, "o", "Receiving objects: 78% (326/417)\r"] +[5.285350351333609, "o", "Receiving objects: 79% (330/417)\r"] +[5.285389213562002, "o", "Receiving objects: 80% (334/417)\r"] +[5.285414009094229, "o", "Receiving objects: 81% (338/417)\r"] +[5.285474090576162, "o", "Receiving objects: 82% (342/417)\r"] +[5.285523920059195, "o", "Receiving objects: 83% (347/417)\r"] +[5.285572080612173, "o", "Receiving objects: 84% (351/417)\r"] +[5.285613088607779, "o", "Receiving objects: 85% (355/417)\r"] +[5.285651712417593, "o", "Receiving objects: 86% (359/417)\r"] +[5.285682945251455, "o", "Receiving objects: 87% (363/417)\r"] +[5.2857163238525295, "o", "Receiving objects: 88% (367/417)\r"] +[5.285786180496206, "o", "Receiving objects: 89% (372/417)\r"] +[5.2858710575103665, "o", "Receiving objects: 90% (376/417)\r"] +[5.28594449043273, "o", "Receiving objects: 91% (380/417)\r"] +[5.285979299545279, "o", "Receiving objects: 92% (384/417)\r"] +[5.2860284137725735, "o", "Receiving objects: 93% (388/417)\r"] +[5.286060600280752, "o", "Receiving objects: 94% (392/417)\r"] +[5.286139755249014, "o", "Receiving objects: 95% (397/417)\r"] +[5.286194114685049, "o", "Receiving objects: 96% (401/417)\r"] +[5.286222009658804, "o", "Receiving objects: 97% (405/417)\r"] +[5.286266355514517, "o", "Receiving objects: 98% (409/417)\r"] +[5.286299734115591, "o", "Receiving objects: 99% (413/417)\r"] +[5.286376743316641, "o", "Receiving objects: 100% (417/417)\r"] +[5.286414413452139, "o", "Receiving objects: 100% (417/417), 270.94 KiB | 10.03 MiB/s, done.\r\n"] +[5.286625890731802, "o", "Resolving deltas: 0% (0/201)\r"] +[5.286726264953604, "o", "Resolving deltas: 1% (3/201)\r"] +[5.286815910339346, "o", "Resolving deltas: 2% (5/201)\r"] +[5.286885766983023, "o", "Resolving deltas: 3% (7/201)\r"] +[5.286940126419058, "o", "Resolving deltas: 4% (9/201)\r"] +[5.286992101669302, "o", "Resolving deltas: 5% (11/201)\r"] +[5.287026433944693, "o", "Resolving deltas: 6% (13/201)\r"] +[5.287064819335928, "o", "Resolving deltas: 7% (15/201)\r"] +[5.287189512252798, "o", "Resolving deltas: 8% (17/201)\r"] +[5.287283687591543, "o", "Resolving deltas: 9% (19/201)\r"] +[5.287363796234121, "o", "Resolving deltas: 10% (21/201)\r"] +[5.287442235946646, "o", "Resolving deltas: 11% (23/201)\r"] +[5.287492780685415, "o", "Resolving deltas: 12% (25/201)\r"] +[5.287538080215445, "o", "Resolving deltas: 13% (27/201)\r"] +[5.28758695602416, "o", "Resolving deltas: 14% (29/201)\r"] +[5.287627725601187, "o", "Resolving deltas: 15% (31/201)\r"] +[5.287687330245962, "o", "Resolving deltas: 16% (33/201)\r"] +[5.287734537124624, "o", "Resolving deltas: 17% (35/201)\r"] +[5.287776498794546, "o", "Resolving deltas: 18% (37/201)\r"] +[5.287821321487417, "o", "Resolving deltas: 19% (39/201)\r"] +[5.287866382598867, "o", "Resolving deltas: 20% (41/201)\r"] +[5.287924795150747, "o", "Resolving deltas: 21% (43/201)\r"] +[5.287978916168203, "o", "Resolving deltas: 22% (45/201)\r"] +[5.288016586303701, "o", "Resolving deltas: 23% (47/201)\r"] +[5.288077621459951, "o", "Resolving deltas: 24% (49/201)\r"] +[5.288152484893789, "o", "Resolving deltas: 25% (51/201)\r"] +[5.288207559585562, "o", "Resolving deltas: 26% (53/201)\r"] +[5.288270740509024, "o", "Resolving deltas: 27% (55/201)\r"] +[5.288334875106802, "o", "Resolving deltas: 28% (57/201)\r"] +[5.288412599563589, "o", "Resolving deltas: 29% (59/201)\r"] +[5.288466482162466, "o", "Resolving deltas: 30% (61/201)\r"] +[5.288511781692495, "o", "Resolving deltas: 31% (63/201)\r"] +[5.288553266525259, "o", "Resolving deltas: 32% (65/201)\r"] +[5.28859546661376, "o", "Resolving deltas: 33% (67/201)\r"] +[5.288630990982046, "o", "Resolving deltas: 34% (69/201)\r"] +[5.288666038513174, "o", "Resolving deltas: 35% (71/201)\r"] +[5.288701324462881, "o", "Resolving deltas: 36% (73/201)\r"] +[5.288736848831167, "o", "Resolving deltas: 37% (75/201)\r"] +[5.28878930091857, "o", "Resolving deltas: 38% (77/201)\r"] +[5.288835315704336, "o", "Resolving deltas: 39% (79/201)\r"] +[5.288876562118521, "o", "Resolving deltas: 40% (81/201)\r"] +[5.288912086486807, "o", "Resolving deltas: 41% (83/201)\r"] +[5.288953571319571, "o", "Resolving deltas: 42% (85/201)\r"] +[5.288994102478018, "o", "Resolving deltas: 43% (87/201)\r"] +[5.289031295776358, "o", "Resolving deltas: 44% (89/201)\r"] +[5.289066581726065, "o", "Resolving deltas: 45% (91/201)\r"] +[5.289147644042959, "o", "Resolving deltas: 46% (93/201)\r"] +[5.289201526641836, "o", "Resolving deltas: 47% (95/201)\r"] +[5.28923776626586, "o", "Resolving deltas: 48% (97/201)\r"] +[5.289280443191519, "o", "Resolving deltas: 49% (99/201)\r"] +[5.2893243122100735, "o", "Resolving deltas: 50% (101/201)\r"] +[5.289364604949942, "o", "Resolving deltas: 51% (103/201)\r"] +[5.2894041824340725, "o", "Resolving deltas: 52% (105/201)\r"] +[5.289440898895254, "o", "Resolving deltas: 53% (107/201)\r"] +[5.2894769001006985, "o", "Resolving deltas: 54% (109/201)\r"] +[5.289512424468985, "o", "Resolving deltas: 55% (111/201)\r"] +[5.289546995162954, "o", "Resolving deltas: 56% (113/201)\r"] +[5.28958275794982, "o", "Resolving deltas: 57% (115/201)\r"] +[5.289627580642691, "o", "Resolving deltas: 58% (117/201)\r"] +[5.289671211242666, "o", "Resolving deltas: 59% (119/201)\r"] +[5.289708404541006, "o", "Resolving deltas: 60% (121/201)\r"] +[5.289745121002188, "o", "Resolving deltas: 61% (123/201)\r"] +[5.289787321090689, "o", "Resolving deltas: 62% (125/201)\r"] +[5.289835004806509, "o", "Resolving deltas: 63% (127/201)\r"] +[5.289878873825064, "o", "Resolving deltas: 64% (129/201)\r"] +[5.290305404663076, "o", "Resolving deltas: 65% (131/201)\r"] +[5.290469675064077, "o", "Resolving deltas: 66% (133/201)\r"] +[5.2906341838836575, "o", "Resolving deltas: 67% (135/201)\r"] +[5.290792970657339, "o", "Resolving deltas: 68% (137/201)\r"] +[5.290950326919546, "o", "Resolving deltas: 69% (139/201)\r"] +[5.291116027832022, "o", "Resolving deltas: 70% (141/201)\r"] +[5.291271476745596, "o", "Resolving deltas: 71% (143/201)\r"] +[5.291425733566275, "o", "Resolving deltas: 72% (145/201)\r"] +[5.291665582656851, "o", "Resolving deltas: 73% (147/201)\r"] +[5.291858701705923, "o", "Resolving deltas: 74% (149/201)\r"] +[5.292571096420279, "o", "Resolving deltas: 75% (151/201)\rResolving deltas: 76% (153/201)\rResolving deltas: 77% (155/201)\rResolving deltas: 78% (157/201)\rResolving deltas: 79% (159/201)\r"] +[5.2946765708923245, "o", "Resolving deltas: 80% (161/201)\r"] +[5.2961108970641995, "o", "Resolving deltas: 81% (163/201)\r"] +[5.296721963882437, "o", "Resolving deltas: 82% (165/201)\r"] +[5.297151832580557, "o", "Resolving deltas: 83% (167/201)\r"] +[5.2975688266754055, "o", "Resolving deltas: 84% (169/201)\r"] +[5.297979860305777, "o", "Resolving deltas: 85% (171/201)\r"] +[5.3012943553924465, "o", "Resolving deltas: 86% (173/201)\r"] +[5.3040244865417385, "o", "Resolving deltas: 87% (175/201)\r"] +[5.305427341461172, "o", "Resolving deltas: 88% (177/201)\r"] +[5.305614500045767, "o", "Resolving deltas: 89% (179/201)\r"] +[5.305704145431509, "o", "Resolving deltas: 90% (181/201)\r"] +[5.305753498077383, "o", "Resolving deltas: 91% (183/201)\r"] +[5.305788307189932, "o", "Resolving deltas: 92% (185/201)\r"] +[5.305829792022696, "o", "Resolving deltas: 93% (187/201)\r"] +[5.30593731880187, "o", "Resolving deltas: 94% (189/201)\r"] +[5.305990009307852, "o", "Resolving deltas: 95% (191/201)\r"] +[5.3060245800018215, "o", "Resolving deltas: 96% (193/201)\r"] +[5.306085376739492, "o", "Resolving deltas: 97% (195/201)\r"] +[5.30613639831542, "o", "Resolving deltas: 98% (197/201)\r"] +[5.306180744171133, "o", "Resolving deltas: 99% (199/201)\r"] +[5.306638984680166, "o", "Resolving deltas: 100% (201/201)\r"] +[5.30704405784606, "o", "Resolving deltas: 100% (201/201), done.\r\n"] +[5.33704405784606, "o", "\u001b[1m"] +[5.36704405784606, "o", "\u001b[36m"] +[5.397044057846061, "o", "\u001b[91m"] +[5.427044057846061, "o", "$"] +[5.457044057846061, "o", " "] +[5.487044057846061, "o", "\u001b[0m"] +[10.51704405784606, "o", "\u001b[H"] +[10.54704405784606, "o", "\u001b[J"] +[10.57704405784606, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the initial data (in CSV) from this branch of the project."] +[10.607044057846059, "o", "\r\n"] +[10.637044057846058, "o", "$"] +[10.667044057846057, "o", " "] +[10.697044057846057, "o", "s"] +[10.727044057846056, "o", "g"] +[10.757044057846056, "o", "r"] +[10.787044057846055, "o", " "] +[10.817044057846054, "o", "i"] +[10.847044057846054, "o", "n"] +[10.877044057846053, "o", "i"] +[10.907044057846052, "o", "t"] +[10.937044057846052, "o", " "] +[10.967044057846051, "o", "r"] +[10.99704405784605, "o", "a"] +[11.02704405784605, "o", "w"] +[11.05704405784605, "o", "_"] +[11.087044057846049, "o", "j"] +[11.117044057846048, "o", "a"] +[11.147044057846047, "o", "f"] +[11.177044057846047, "o", "f"] +[11.207044057846046, "o", "l"] +[11.237044057846045, "o", "e"] +[11.267044057846045, "o", "_"] +[11.297044057846044, "o", "s"] +[11.327044057846043, "o", "h"] +[11.357044057846043, "o", "o"] +[11.387044057846042, "o", "p"] +[11.417044057846041, "o", "\r\n"] +[11.44704405784604, "o", "$"] +[11.47704405784604, "o", " "] +[11.50704405784604, "o", "s"] +[11.537044057846039, "o", "g"] +[11.567044057846038, "o", "r"] +[11.597044057846038, "o", " "] +[11.627044057846037, "o", "c"] +[11.657044057846036, "o", "s"] +[11.687044057846036, "o", "v"] +[11.717044057846035, "o", " "] +[11.747044057846034, "o", "i"] +[11.777044057846034, "o", "m"] +[11.807044057846033, "o", "p"] +[11.837044057846033, "o", "o"] +[11.867044057846032, "o", "r"] +[11.897044057846031, "o", "t"] +[11.92704405784603, "o", " "] +[11.95704405784603, "o", "-"] +[11.98704405784603, "o", "f"] +[12.017044057846029, "o", " "] +[12.047044057846028, "o", "j"] +[12.077044057846027, "o", "a"] +[12.107044057846027, "o", "f"] +[12.137044057846026, "o", "f"] +[12.167044057846025, "o", "l"] +[12.197044057846025, "o", "e"] +[12.227044057846024, "o", "_"] +[12.257044057846024, "o", "s"] +[12.287044057846023, "o", "h"] +[12.317044057846022, "o", "o"] +[12.347044057846022, "o", "p"] +[12.377044057846021, "o", "/"] +[12.40704405784602, "o", "d"] +[12.43704405784602, "o", "a"] +[12.467044057846019, "o", "t"] +[12.497044057846018, "o", "a"] +[12.527044057846018, "o", "/"] +[12.557044057846017, "o", "r"] +[12.587044057846017, "o", "a"] +[12.617044057846016, "o", "w"] +[12.647044057846015, "o", "_"] +[12.677044057846015, "o", "c"] +[12.707044057846014, "o", "u"] +[12.737044057846013, "o", "s"] +[12.767044057846013, "o", "t"] +[12.797044057846012, "o", "o"] +[12.827044057846011, "o", "m"] +[12.85704405784601, "o", "e"] +[12.88704405784601, "o", "r"] +[12.91704405784601, "o", "s"] +[12.947044057846009, "o", "."] +[12.977044057846008, "o", "c"] +[13.007044057846008, "o", "s"] +[13.037044057846007, "o", "v"] +[13.067044057846006, "o", " "] +[13.097044057846006, "o", "-"] +[13.127044057846005, "o", "k"] +[13.157044057846004, "o", " "] +[13.187044057846004, "o", "i"] +[13.217044057846003, "o", "d"] +[13.247044057846002, "o", " "] +[13.277044057846002, "o", "r"] +[13.307044057846001, "o", "a"] +[13.337044057846, "o", "w"] +[13.367044057846, "o", "_"] +[13.397044057846, "o", "j"] +[13.427044057845999, "o", "a"] +[13.457044057845998, "o", "f"] +[13.487044057845997, "o", "f"] +[13.517044057845997, "o", "l"] +[13.547044057845996, "o", "e"] +[13.577044057845995, "o", "_"] +[13.607044057845995, "o", "s"] +[13.637044057845994, "o", "h"] +[13.667044057845994, "o", "o"] +[13.697044057845993, "o", "p"] +[13.727044057845992, "o", " "] +[13.757044057845992, "o", "c"] +[13.787044057845991, "o", "u"] +[13.81704405784599, "o", "s"] +[13.84704405784599, "o", "t"] +[13.877044057845989, "o", "o"] +[13.907044057845988, "o", "m"] +[13.937044057845988, "o", "e"] +[13.967044057845987, "o", "r"] +[13.997044057845986, "o", "s"] +[14.027044057845986, "o", "\r\n"] +[14.057044057845985, "o", "$"] +[14.087044057845985, "o", " "] +[14.117044057845984, "o", "s"] +[14.147044057845983, "o", "g"] +[14.177044057845983, "o", "r"] +[14.207044057845982, "o", " "] +[14.237044057845981, "o", "c"] +[14.26704405784598, "o", "s"] +[14.29704405784598, "o", "v"] +[14.32704405784598, "o", " "] +[14.357044057845979, "o", "i"] +[14.387044057845978, "o", "m"] +[14.417044057845978, "o", "p"] +[14.447044057845977, "o", "o"] +[14.477044057845976, "o", "r"] +[14.507044057845976, "o", "t"] +[14.537044057845975, "o", " "] +[14.567044057845974, "o", "-"] +[14.597044057845974, "o", "f"] +[14.627044057845973, "o", " "] +[14.657044057845972, "o", "j"] +[14.687044057845972, "o", "a"] +[14.717044057845971, "o", "f"] +[14.74704405784597, "o", "f"] +[14.77704405784597, "o", "l"] +[14.80704405784597, "o", "e"] +[14.837044057845969, "o", "_"] +[14.867044057845968, "o", "s"] +[14.897044057845967, "o", "h"] +[14.927044057845967, "o", "o"] +[14.957044057845966, "o", "p"] +[14.987044057845965, "o", "/"] +[15.017044057845965, "o", "d"] +[15.047044057845964, "o", "a"] +[15.077044057845963, "o", "t"] +[15.107044057845963, "o", "a"] +[15.137044057845962, "o", "/"] +[15.167044057845962, "o", "r"] +[15.197044057845961, "o", "a"] +[15.22704405784596, "o", "w"] +[15.25704405784596, "o", "_"] +[15.287044057845959, "o", "o"] +[15.317044057845958, "o", "r"] +[15.347044057845958, "o", "d"] +[15.377044057845957, "o", "e"] +[15.407044057845956, "o", "r"] +[15.437044057845956, "o", "s"] +[15.467044057845955, "o", "."] +[15.497044057845955, "o", "c"] +[15.527044057845954, "o", "s"] +[15.557044057845953, "o", "v"] +[15.587044057845953, "o", " "] +[15.617044057845952, "o", "-"] +[15.647044057845951, "o", "k"] +[15.67704405784595, "o", " "] +[15.70704405784595, "o", "i"] +[15.73704405784595, "o", "d"] +[15.767044057845949, "o", " "] +[15.797044057845948, "o", "-"] +[15.827044057845947, "o", "t"] +[15.857044057845947, "o", " "] +[15.887044057845946, "o", "o"] +[15.917044057845946, "o", "r"] +[15.947044057845945, "o", "d"] +[15.977044057845944, "o", "e"] +[16.007044057845945, "o", "r"] +[16.037044057845947, "o", "_"] +[16.067044057845948, "o", "d"] +[16.09704405784595, "o", "a"] +[16.12704405784595, "o", "t"] +[16.15704405784595, "o", "e"] +[16.187044057845952, "o", " "] +[16.217044057845953, "o", "t"] +[16.247044057845955, "o", "i"] +[16.277044057845956, "o", "m"] +[16.307044057845957, "o", "e"] +[16.337044057845958, "o", "s"] +[16.36704405784596, "o", "t"] +[16.39704405784596, "o", "a"] +[16.42704405784596, "o", "m"] +[16.457044057845962, "o", "p"] +[16.487044057845964, "o", " "] +[16.517044057845965, "o", "r"] +[16.547044057845966, "o", "a"] +[16.577044057845967, "o", "w"] +[16.607044057845968, "o", "_"] +[16.63704405784597, "o", "j"] +[16.66704405784597, "o", "a"] +[16.69704405784597, "o", "f"] +[16.727044057845973, "o", "f"] +[16.757044057845974, "o", "l"] +[16.787044057845975, "o", "e"] +[16.817044057845976, "o", "_"] +[16.847044057845977, "o", "s"] +[16.87704405784598, "o", "h"] +[16.90704405784598, "o", "o"] +[16.93704405784598, "o", "p"] +[16.967044057845982, "o", " "] +[16.997044057845983, "o", "o"] +[17.027044057845984, "o", "r"] +[17.057044057845985, "o", "d"] +[17.087044057845986, "o", "e"] +[17.117044057845987, "o", "r"] +[17.14704405784599, "o", "s"] +[17.17704405784599, "o", "\r\n"] +[17.20704405784599, "o", "$"] +[17.237044057845992, "o", " "] +[17.267044057845993, "o", "s"] +[17.297044057845994, "o", "g"] +[17.327044057845995, "o", "r"] +[17.357044057845997, "o", " "] +[17.387044057845998, "o", "c"] +[17.417044057846, "o", "s"] +[17.447044057846, "o", "v"] +[17.477044057846, "o", " "] +[17.507044057846002, "o", "i"] +[17.537044057846003, "o", "m"] +[17.567044057846005, "o", "p"] +[17.597044057846006, "o", "o"] +[17.627044057846007, "o", "r"] +[17.657044057846008, "o", "t"] +[17.68704405784601, "o", " "] +[17.71704405784601, "o", "-"] +[17.74704405784601, "o", "f"] +[17.777044057846012, "o", " "] +[17.807044057846014, "o", "j"] +[17.837044057846015, "o", "a"] +[17.867044057846016, "o", "f"] +[17.897044057846017, "o", "f"] +[17.927044057846018, "o", "l"] +[17.95704405784602, "o", "e"] +[17.98704405784602, "o", "_"] +[18.01704405784602, "o", "s"] +[18.047044057846023, "o", "h"] +[18.077044057846024, "o", "o"] +[18.107044057846025, "o", "p"] +[18.137044057846026, "o", "/"] +[18.167044057846027, "o", "d"] +[18.19704405784603, "o", "a"] +[18.22704405784603, "o", "t"] +[18.25704405784603, "o", "a"] +[18.287044057846032, "o", "/"] +[18.317044057846033, "o", "r"] +[18.347044057846034, "o", "a"] +[18.377044057846035, "o", "w"] +[18.407044057846036, "o", "_"] +[18.437044057846038, "o", "p"] +[18.46704405784604, "o", "a"] +[18.49704405784604, "o", "y"] +[18.52704405784604, "o", "m"] +[18.557044057846042, "o", "e"] +[18.587044057846043, "o", "n"] +[18.617044057846044, "o", "t"] +[18.647044057846045, "o", "s"] +[18.677044057846047, "o", "."] +[18.707044057846048, "o", "c"] +[18.73704405784605, "o", "s"] +[18.76704405784605, "o", "v"] +[18.79704405784605, "o", " "] +[18.827044057846052, "o", "-"] +[18.857044057846053, "o", "k"] +[18.887044057846055, "o", " "] +[18.917044057846056, "o", "i"] +[18.947044057846057, "o", "d"] +[18.977044057846058, "o", " "] +[19.00704405784606, "o", "r"] +[19.03704405784606, "o", "a"] +[19.06704405784606, "o", "w"] +[19.097044057846063, "o", "_"] +[19.127044057846064, "o", "j"] +[19.157044057846065, "o", "a"] +[19.187044057846066, "o", "f"] +[19.217044057846067, "o", "f"] +[19.247044057846068, "o", "l"] +[19.27704405784607, "o", "e"] +[19.30704405784607, "o", "_"] +[19.33704405784607, "o", "s"] +[19.367044057846073, "o", "h"] +[19.397044057846074, "o", "o"] +[19.427044057846075, "o", "p"] +[19.457044057846076, "o", " "] +[19.487044057846077, "o", "p"] +[19.51704405784608, "o", "a"] +[19.54704405784608, "o", "y"] +[19.57704405784608, "o", "m"] +[19.607044057846082, "o", "e"] +[19.637044057846083, "o", "n"] +[19.667044057846084, "o", "t"] +[19.697044057846085, "o", "s"] +[19.727044057846086, "o", "\r\n"] +[19.757044057846088, "o", "\u001b[0m"] +[19.78704405784609, "o", "\r\n"] +[20.231877813339253, "o", "Initialized empty repository raw_jaffle_shop\r\n"] +[20.261877813339254, "o", "\u001b[1m"] +[20.291877813339255, "o", "\u001b[36m"] +[20.321877813339256, "o", "\u001b[91m"] +[20.351877813339257, "o", "$"] +[20.38187781333926, "o", " "] +[20.41187781333926, "o", "\u001b[0m"] +[25.44187781333926, "o", "\u001b[H"] +[25.471877813339262, "o", "\u001b[J"] +[25.501877813339263, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Snapshot the initial data with Splitgraph."] +[25.531877813339264, "o", "\r\n"] +[25.561877813339265, "o", "$"] +[25.591877813339266, "o", " "] +[25.621877813339268, "o", "s"] +[25.65187781333927, "o", "g"] +[25.68187781333927, "o", "r"] +[25.71187781333927, "o", " "] +[25.741877813339272, "o", "d"] +[25.771877813339273, "o", "i"] +[25.801877813339274, "o", "f"] +[25.831877813339275, "o", "f"] +[25.861877813339277, "o", " "] +[25.891877813339278, "o", "r"] +[25.92187781333928, "o", "a"] +[25.95187781333928, "o", "w"] +[25.98187781333928, "o", "_"] +[26.011877813339282, "o", "j"] +[26.041877813339283, "o", "a"] +[26.071877813339285, "o", "f"] +[26.101877813339286, "o", "f"] +[26.131877813339287, "o", "l"] +[26.161877813339288, "o", "e"] +[26.19187781333929, "o", "_"] +[26.22187781333929, "o", "s"] +[26.25187781333929, "o", "h"] +[26.281877813339293, "o", "o"] +[26.311877813339294, "o", "p"] +[26.341877813339295, "o", "\r\n"] +[26.371877813339296, "o", "$"] +[26.401877813339297, "o", " "] +[26.431877813339298, "o", "s"] +[26.4618778133393, "o", "g"] +[26.4918778133393, "o", "r"] +[26.5218778133393, "o", " "] +[26.551877813339303, "o", "c"] +[26.581877813339304, "o", "o"] +[26.611877813339305, "o", "m"] +[26.641877813339306, "o", "m"] +[26.671877813339307, "o", "i"] +[26.70187781333931, "o", "t"] +[26.73187781333931, "o", " "] +[26.76187781333931, "o", "r"] +[26.791877813339312, "o", "a"] +[26.821877813339313, "o", "w"] +[26.851877813339314, "o", "_"] +[26.881877813339315, "o", "j"] +[26.911877813339316, "o", "a"] +[26.941877813339318, "o", "f"] +[26.97187781333932, "o", "f"] +[27.00187781333932, "o", "l"] +[27.03187781333932, "o", "e"] +[27.061877813339322, "o", "_"] +[27.091877813339323, "o", "s"] +[27.121877813339324, "o", "h"] +[27.151877813339325, "o", "o"] +[27.181877813339327, "o", "p"] +[27.211877813339328, "o", "\r\n"] +[27.24187781333933, "o", "$"] +[27.27187781333933, "o", " "] +[27.30187781333933, "o", "s"] +[27.331877813339332, "o", "g"] +[27.361877813339333, "o", "r"] +[27.391877813339335, "o", " "] +[27.421877813339336, "o", "t"] +[27.451877813339337, "o", "a"] +[27.481877813339338, "o", "g"] +[27.51187781333934, "o", " "] +[27.54187781333934, "o", "r"] +[27.57187781333934, "o", "a"] +[27.601877813339343, "o", "w"] +[27.631877813339344, "o", "_"] +[27.661877813339345, "o", "j"] +[27.691877813339346, "o", "a"] +[27.721877813339347, "o", "f"] +[27.751877813339348, "o", "f"] +[27.78187781333935, "o", "l"] +[27.81187781333935, "o", "e"] +[27.84187781333935, "o", "_"] +[27.871877813339353, "o", "s"] +[27.901877813339354, "o", "h"] +[27.931877813339355, "o", "o"] +[27.961877813339356, "o", "p"] +[27.991877813339357, "o", " "] +[28.02187781333936, "o", "a"] +[28.05187781333936, "o", "s"] +[28.08187781333936, "o", "o"] +[28.111877813339362, "o", "f"] +[28.141877813339363, "o", "_"] +[28.171877813339364, "o", "2"] +[28.201877813339365, "o", "0"] +[28.231877813339366, "o", "1"] +[28.261877813339368, "o", "8"] +[28.29187781333937, "o", "0"] +[28.32187781333937, "o", "4"] +[28.35187781333937, "o", "0"] +[28.381877813339372, "o", "9"] +[28.411877813339373, "o", "\r\n"] +[28.441877813339374, "o", "\u001b[0m"] +[28.471877813339376, "o", "\r\n"] +[28.937631368637227, "o", "Between 000000000000 and the current working copy: \r\n"] +[28.93783259391799, "o", "customers: table added\r\n"] +[28.93796801567092, "o", "orders: table added\r\n"] +[28.938107013702535, "o", "payments: table added\r\n"] +[29.36225461959853, "o", "Committing raw_jaffle_shop...\r\n"] +[29.385152339935445, "o", "Processing table orders\r\n"] +[29.474947929382466, "o", "Processing table payments\r\n"] +[29.557260274887227, "o", "Processing table customers\r\n"] +[29.65237069129958, "o", "Committed raw_jaffle_shop as b7368aa32f16.\r\n"] +[30.08119869232192, "o", "Tagged raw_jaffle_shop:b7368aa32f16d10d5d039a25f20babe959c500915807bca652c0a0c6720fd99d with asof_20180409.\r\n"] +[30.11119869232192, "o", "\u001b[1m"] +[30.14119869232192, "o", "\u001b[36m"] +[30.171198692321923, "o", "\u001b[91m"] +[30.201198692321924, "o", "$"] +[30.231198692321925, "o", " "] +[30.261198692321926, "o", "\u001b[0m"] +[35.29119869232193, "o", "\u001b[H"] +[35.32119869232193, "o", "\u001b[J"] +[35.35119869232193, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the original data"] +[35.38119869232193, "o", "\r\n"] +[35.41119869232193, "o", "$"] +[35.44119869232193, "o", " "] +[35.471198692321934, "o", "s"] +[35.501198692321935, "o", "g"] +[35.53119869232194, "o", "r"] +[35.56119869232194, "o", " "] +[35.59119869232194, "o", "s"] +[35.62119869232194, "o", "h"] +[35.65119869232194, "o", "o"] +[35.68119869232194, "o", "w"] +[35.71119869232194, "o", " "] +[35.741198692321944, "o", "r"] +[35.771198692321946, "o", "a"] +[35.80119869232195, "o", "w"] +[35.83119869232195, "o", "_"] +[35.86119869232195, "o", "j"] +[35.89119869232195, "o", "a"] +[35.92119869232195, "o", "f"] +[35.95119869232195, "o", "f"] +[35.981198692321954, "o", "l"] +[36.011198692321955, "o", "e"] +[36.041198692321956, "o", "_"] +[36.07119869232196, "o", "s"] +[36.10119869232196, "o", "h"] +[36.13119869232196, "o", "o"] +[36.16119869232196, "o", "p"] +[36.19119869232196, "o", ":"] +[36.22119869232196, "o", "a"] +[36.251198692321964, "o", "s"] +[36.281198692321965, "o", "o"] +[36.311198692321966, "o", "f"] +[36.34119869232197, "o", "_"] +[36.37119869232197, "o", "2"] +[36.40119869232197, "o", "0"] +[36.43119869232197, "o", "1"] +[36.46119869232197, "o", "8"] +[36.49119869232197, "o", "0"] +[36.521198692321974, "o", "4"] +[36.551198692321975, "o", "0"] +[36.581198692321976, "o", "9"] +[36.61119869232198, "o", "\r\n"] +[36.64119869232198, "o", "$"] +[36.67119869232198, "o", " "] +[36.70119869232198, "o", "s"] +[36.73119869232198, "o", "g"] +[36.76119869232198, "o", "r"] +[36.791198692321984, "o", " "] +[36.821198692321985, "o", "t"] +[36.85119869232199, "o", "a"] +[36.88119869232199, "o", "b"] +[36.91119869232199, "o", "l"] +[36.94119869232199, "o", "e"] +[36.97119869232199, "o", " "] +[37.00119869232199, "o", "r"] +[37.03119869232199, "o", "a"] +[37.061198692321994, "o", "w"] +[37.091198692321996, "o", "_"] +[37.121198692322, "o", "j"] +[37.151198692322, "o", "a"] +[37.181198692322, "o", "f"] +[37.211198692322, "o", "f"] +[37.241198692322, "o", "l"] +[37.271198692322, "o", "e"] +[37.301198692322004, "o", "_"] +[37.331198692322005, "o", "s"] +[37.361198692322006, "o", "h"] +[37.39119869232201, "o", "o"] +[37.42119869232201, "o", "p"] +[37.45119869232201, "o", ":"] +[37.48119869232201, "o", "a"] +[37.51119869232201, "o", "s"] +[37.54119869232201, "o", "o"] +[37.571198692322014, "o", "f"] +[37.601198692322015, "o", "_"] +[37.631198692322016, "o", "2"] +[37.66119869232202, "o", "0"] +[37.69119869232202, "o", "1"] +[37.72119869232202, "o", "8"] +[37.75119869232202, "o", "0"] +[37.78119869232202, "o", "4"] +[37.81119869232202, "o", "0"] +[37.841198692322024, "o", "9"] +[37.871198692322025, "o", " "] +[37.901198692322026, "o", "o"] +[37.93119869232203, "o", "r"] +[37.96119869232203, "o", "d"] +[37.99119869232203, "o", "e"] +[38.02119869232203, "o", "r"] +[38.05119869232203, "o", "s"] +[38.08119869232203, "o", "\r\n"] +[38.111198692322034, "o", "\u001b[0m"] +[38.141198692322035, "o", "\r\n"] +[38.566390810013075, "o", "Image raw_jaffle_shop:b7368aa32f16d10d5d039a25f20babe959c500915807bca652c0a0c6720fd99d\r\n"] +[38.566417751312514, "o", "\r\nCreated at 2021-12-17T19:41:03.255131\r\n"] +[38.56755667686488, "o", "Size: 7.58 KiB\r\n"] +[38.567566452026625, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[38.56826072692897, "o", " customers\r\n"] +[38.56827121734645, "o", " orders\r\n payments\r\n"] +[38.998806533813735, "o", "Table raw_jaffle_shop:b7368aa32f16d10d5d039a25f20babe959c500915807bca652c0a0c6720fd99d/orders\r\n\r\n"] +[38.999382314682265, "o", "Size: 1.73 KiB\r\n"] +[39.0003870105746, "o", "Rows: 99\r\n"] +[39.00040036201503, "o", "Columns: \r\n id (integer, PK)\r\n user_id (integer)\r\n order_date (timestamp without time zone)\r\n status (character varying)\r\n\r\nObjects: \r\n o7e3ffa6e2141edde30498e4c4a6a2b510d8b7e479081aafe154d31ca4436bd\r\n"] +[39.03040036201503, "o", "\u001b[1m"] +[39.06040036201503, "o", "\u001b[36m"] +[39.09040036201503, "o", "\u001b[91m"] +[39.12040036201503, "o", "$"] +[39.150400362015034, "o", " "] +[39.180400362015035, "o", "\u001b[0m"] +[48.29119869232193, "o", "\u001b[H"] +[48.32119869232193, "o", "\u001b[J"] +[48.35119869232193, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The status column in the raw_orders table in the initial dataset can"] +[48.38119869232193, "o", "\r\n"] +[48.41119869232193, "o", "$ # change through time. Pretend that some jaffles were actually returned.\r\n"] +[48.44119869232193, "o", "$"] +[48.471198692321934, "o", " "] +[48.501198692321935, "o", "s"] +[48.53119869232194, "o", "g"] +[48.56119869232194, "o", "r"] +[48.59119869232194, "o", " "] +[48.62119869232194, "o", "s"] +[48.65119869232194, "o", "q"] +[48.68119869232194, "o", "l"] +[48.71119869232194, "o", " "] +[48.741198692321944, "o", "-"] +[48.771198692321946, "o", "s"] +[48.80119869232195, "o", " "] +[48.83119869232195, "o", "r"] +[48.86119869232195, "o", "a"] +[48.89119869232195, "o", "w"] +[48.92119869232195, "o", "_"] +[48.95119869232195, "o", "j"] +[48.981198692321954, "o", "a"] +[49.011198692321955, "o", "f"] +[49.041198692321956, "o", "f"] +[49.07119869232196, "o", "l"] +[49.10119869232196, "o", "e"] +[49.13119869232196, "o", "_"] +[49.16119869232196, "o", "s"] +[49.19119869232196, "o", "h"] +[49.22119869232196, "o", "o"] +[49.251198692321964, "o", "p"] +[49.281198692321965, "o", " "] +[49.311198692321966, "o", "\""] +[49.34119869232197, "o", "U"] +[49.37119869232197, "o", "P"] +[49.40119869232197, "o", "D"] +[49.43119869232197, "o", "A"] +[49.46119869232197, "o", "T"] +[49.49119869232197, "o", "E"] +[49.521198692321974, "o", " "] +[49.551198692321975, "o", "o"] +[49.581198692321976, "o", "r"] +[49.61119869232198, "o", "d"] +[49.64119869232198, "o", "e"] +[49.67119869232198, "o", "r"] +[49.70119869232198, "o", "s"] +[49.73119869232198, "o", " "] +[49.76119869232198, "o", "S"] +[49.791198692321984, "o", "E"] +[49.821198692321985, "o", "T"] +[49.85119869232199, "o", " "] +[49.88119869232199, "o", "s"] +[49.91119869232199, "o", "t"] +[49.94119869232199, "o", "a"] +[49.97119869232199, "o", "t"] +[50.00119869232199, "o", "u"] +[50.03119869232199, "o", "s"] +[50.061198692321994, "o", " "] +[50.091198692321996, "o", "="] +[50.121198692322, "o", " "] +[50.151198692322, "o", "'"] +[50.181198692322, "o", "r"] +[50.211198692322, "o", "e"] +[50.241198692322, "o", "t"] +[50.271198692322, "o", "u"] +[50.301198692322004, "o", "r"] +[50.331198692322005, "o", "n"] +[50.361198692322006, "o", "e"] +[50.39119869232201, "o", "d"] +[50.42119869232201, "o", "'"] +[50.45119869232201, "o", " "] +[50.48119869232201, "o", "\\"] +[50.51119869232201, "o", "\r\n "] +[50.54119869232201, "o", "W"] +[50.571198692322014, "o", "H"] +[50.601198692322015, "o", "E"] +[50.631198692322016, "o", "R"] +[50.66119869232202, "o", "E"] +[50.69119869232202, "o", " "] +[50.72119869232202, "o", "s"] +[50.75119869232202, "o", "t"] +[50.78119869232202, "o", "a"] +[50.81119869232202, "o", "t"] +[50.841198692322024, "o", "u"] +[50.871198692322025, "o", "s"] +[50.901198692322026, "o", " "] +[50.93119869232203, "o", "="] +[50.96119869232203, "o", " "] +[50.99119869232203, "o", "'"] +[51.02119869232203, "o", "r"] +[51.05119869232203, "o", "e"] +[51.08119869232203, "o", "t"] +[51.111198692322034, "o", "u"] +[51.141198692322035, "o", "r"] +[51.17119869232204, "o", "n"] +[51.20119869232204, "o", "_"] +[51.23119869232204, "o", "p"] +[51.26119869232204, "o", "e"] +[51.29119869232204, "o", "n"] +[51.32119869232204, "o", "d"] +[51.35119869232204, "o", "i"] +[51.381198692322045, "o", "n"] +[51.411198692322046, "o", "g"] +[51.44119869232205, "o", "'"] +[51.47119869232205, "o", " "] +[51.50119869232205, "o", "O"] +[51.53119869232205, "o", "R"] +[51.56119869232205, "o", " "] +[51.59119869232205, "o", "o"] +[51.621198692322054, "o", "r"] +[51.651198692322055, "o", "d"] +[51.681198692322056, "o", "e"] +[51.71119869232206, "o", "r"] +[51.74119869232206, "o", "_"] +[51.77119869232206, "o", "d"] +[51.80119869232206, "o", "a"] +[51.83119869232206, "o", "t"] +[51.86119869232206, "o", "e"] +[51.891198692322064, "o", " "] +[51.921198692322065, "o", "="] +[51.951198692322066, "o", " "] +[51.98119869232207, "o", "'"] +[52.01119869232207, "o", "2"] +[52.04119869232207, "o", "0"] +[52.07119869232207, "o", "1"] +[52.10119869232207, "o", "8"] +[52.13119869232207, "o", "-"] +[52.161198692322074, "o", "0"] +[52.191198692322075, "o", "3"] +[52.221198692322076, "o", "-"] +[52.25119869232208, "o", "2"] +[52.28119869232208, "o", "6"] +[52.31119869232208, "o", "'"] +[52.34119869232208, "o", "\""] +[52.37119869232208, "o", "\r\n"] +[52.40119869232208, "o", "$"] +[52.431198692322084, "o", " "] +[52.461198692322085, "o", "s"] +[52.49119869232209, "o", "g"] +[52.52119869232209, "o", "r"] +[52.55119869232209, "o", " "] +[52.58119869232209, "o", "d"] +[52.61119869232209, "o", "i"] +[52.64119869232209, "o", "f"] +[52.67119869232209, "o", "f"] +[52.701198692322095, "o", " "] +[52.731198692322096, "o", "-"] +[52.7611986923221, "o", "v"] +[52.7911986923221, "o", " "] +[52.8211986923221, "o", "r"] +[52.8511986923221, "o", "a"] +[52.8811986923221, "o", "w"] +[52.9111986923221, "o", "_"] +[52.941198692322104, "o", "j"] +[52.971198692322105, "o", "a"] +[53.001198692322106, "o", "f"] +[53.03119869232211, "o", "f"] +[53.06119869232211, "o", "l"] +[53.09119869232211, "o", "e"] +[53.12119869232211, "o", "_"] +[53.15119869232211, "o", "s"] +[53.18119869232211, "o", "h"] +[53.211198692322114, "o", "o"] +[53.241198692322115, "o", "p"] +[53.271198692322116, "o", "\r\n"] +[53.30119869232212, "o", "\u001b[0m"] +[53.33119869232212, "o", "\r\n"] +[54.04262685775791, "o", "Between b7368aa32f16 and the current working copy: \r\n"] +[54.04309678077732, "o", "customers: no changes.\r\n"] +[54.043368339538915, "o", "orders: added 5 rows, removed 5 rows.\r\n"] +[54.04340076446567, "o", "- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending')\r\n"] +[54.044570684433324, "o", "- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending')\r\n"] +[54.044857025146825, "o", "- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped')\r\n- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed')\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned')\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned')\r\n+ (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\n+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned')\r\npayments: no changes."] +[54.04486322402988, "o", "\r\n"] +[54.07486322402988, "o", "\u001b[1m"] +[54.104863224029884, "o", "\u001b[36m"] +[54.134863224029885, "o", "\u001b[91m"] +[54.16486322402989, "o", "$"] +[54.19486322402989, "o", " "] +[54.22486322402989, "o", "\u001b[0m"] +[59.25486322402989, "o", "\u001b[H"] +[59.28486322402989, "o", "\u001b[J"] +[59.31486322402989, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit this dataset and check out the original data"] +[59.34486322402989, "o", "\r\n"] +[59.374863224029895, "o", "$"] +[59.404863224029896, "o", " "] +[59.4348632240299, "o", "s"] +[59.4648632240299, "o", "g"] +[59.4948632240299, "o", "r"] +[59.5248632240299, "o", " "] +[59.5548632240299, "o", "c"] +[59.5848632240299, "o", "o"] +[59.614863224029904, "o", "m"] +[59.644863224029905, "o", "m"] +[59.674863224029906, "o", "i"] +[59.70486322402991, "o", "t"] +[59.73486322402991, "o", " "] +[59.76486322402991, "o", "r"] +[59.79486322402991, "o", "a"] +[59.82486322402991, "o", "w"] +[59.85486322402991, "o", "_"] +[59.884863224029914, "o", "j"] +[59.914863224029915, "o", "a"] +[59.944863224029916, "o", "f"] +[59.97486322402992, "o", "f"] +[60.00486322402992, "o", "l"] +[60.03486322402992, "o", "e"] +[60.06486322402992, "o", "_"] +[60.09486322402992, "o", "s"] +[60.12486322402992, "o", "h"] +[60.154863224029924, "o", "o"] +[60.184863224029925, "o", "p"] +[60.214863224029926, "o", "\r\n"] +[60.24486322402993, "o", "$"] +[60.27486322402993, "o", " "] +[60.30486322402993, "o", "s"] +[60.33486322402993, "o", "g"] +[60.36486322402993, "o", "r"] +[60.39486322402993, "o", " "] +[60.424863224029934, "o", "t"] +[60.454863224029936, "o", "a"] +[60.48486322402994, "o", "g"] +[60.51486322402994, "o", " "] +[60.54486322402994, "o", "r"] +[60.57486322402994, "o", "a"] +[60.60486322402994, "o", "w"] +[60.63486322402994, "o", "_"] +[60.66486322402994, "o", "j"] +[60.694863224029945, "o", "a"] +[60.724863224029946, "o", "f"] +[60.75486322402995, "o", "f"] +[60.78486322402995, "o", "l"] +[60.81486322402995, "o", "e"] +[60.84486322402995, "o", "_"] +[60.87486322402995, "o", "s"] +[60.90486322402995, "o", "h"] +[60.934863224029954, "o", "o"] +[60.964863224029955, "o", "p"] +[60.994863224029956, "o", " "] +[61.02486322402996, "o", "a"] +[61.05486322402996, "o", "s"] +[61.08486322402996, "o", "o"] +[61.11486322402996, "o", "f"] +[61.14486322402996, "o", "_"] +[61.17486322402996, "o", "2"] +[61.204863224029964, "o", "0"] +[61.234863224029965, "o", "1"] +[61.264863224029966, "o", "8"] +[61.29486322402997, "o", "0"] +[61.32486322402997, "o", "4"] +[61.35486322402997, "o", "1"] +[61.38486322402997, "o", "0"] +[61.41486322402997, "o", "\r\n"] +[61.44486322402997, "o", "$"] +[61.474863224029974, "o", " "] +[61.504863224029975, "o", "s"] +[61.534863224029976, "o", "g"] +[61.56486322402998, "o", "r"] +[61.59486322402998, "o", " "] +[61.62486322402998, "o", "c"] +[61.65486322402998, "o", "h"] +[61.68486322402998, "o", "e"] +[61.71486322402998, "o", "c"] +[61.744863224029984, "o", "k"] +[61.774863224029986, "o", "o"] +[61.80486322402999, "o", "u"] +[61.83486322402999, "o", "t"] +[61.86486322402999, "o", " "] +[61.89486322402999, "o", "r"] +[61.92486322402999, "o", "a"] +[61.95486322402999, "o", "w"] +[61.98486322402999, "o", "_"] +[62.014863224029995, "o", "j"] +[62.044863224029996, "o", "a"] +[62.07486322403, "o", "f"] +[62.10486322403, "o", "f"] +[62.13486322403, "o", "l"] +[62.16486322403, "o", "e"] +[62.19486322403, "o", "_"] +[62.22486322403, "o", "s"] +[62.254863224030004, "o", "h"] +[62.284863224030005, "o", "o"] +[62.314863224030006, "o", "p"] +[62.34486322403001, "o", ":"] +[62.37486322403001, "o", "a"] +[62.40486322403001, "o", "s"] +[62.43486322403001, "o", "o"] +[62.46486322403001, "o", "f"] +[62.49486322403001, "o", "_"] +[62.524863224030014, "o", "2"] +[62.554863224030015, "o", "0"] +[62.584863224030016, "o", "1"] +[62.61486322403002, "o", "8"] +[62.64486322403002, "o", "0"] +[62.67486322403002, "o", "4"] +[62.70486322403002, "o", "0"] +[62.73486322403002, "o", "9"] +[62.76486322403002, "o", "\r\n"] +[62.794863224030024, "o", "\u001b[0m"] +[62.824863224030025, "o", "\r\n"] +[63.250562219620235, "o", "Committing raw_jaffle_shop...\r\n"] +[63.27198889732409, "o", "Storing and indexing table orders\r\n"] +[63.36919954299975, "o", "Committed raw_jaffle_shop as d66a9009ecb8.\r\n"] +[63.789855508804806, "o", "Tagged raw_jaffle_shop:d66a9009ecb8f757f8c638faad21193f4d66766bc248a0fc8a935f1a6cb2681b with asof_20180410.\r\n"] +[64.51478031158496, "o", "Checked out raw_jaffle_shop:b7368aa32f16.\r\n"] +[64.54478031158496, "o", "\u001b[1m"] +[64.57478031158496, "o", "\u001b[36m"] +[64.60478031158496, "o", "\u001b[91m"] +[64.63478031158496, "o", "$"] +[64.66478031158496, "o", " "] +[64.69478031158496, "o", "\u001b[0m"] +[69.72478031158496, "o", "\u001b[H"] +[69.75478031158497, "o", "\u001b[J"] +[69.78478031158497, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the 'serious' version of the dbt project that uses data from"] +[69.81478031158497, "o", "\r\n"] +[69.84478031158497, "o", "$ # the actual warehouse rather than seed data.\r\n"] +[69.87478031158497, "o", "$"] +[69.90478031158497, "o", " "] +[69.93478031158497, "o", "c"] +[69.96478031158497, "o", "d"] +[69.99478031158498, "o", " "] +[70.02478031158498, "o", "j"] +[70.05478031158498, "o", "a"] +[70.08478031158498, "o", "f"] +[70.11478031158498, "o", "f"] +[70.14478031158498, "o", "l"] +[70.17478031158498, "o", "e"] +[70.20478031158498, "o", "_"] +[70.23478031158498, "o", "s"] +[70.26478031158499, "o", "h"] +[70.29478031158499, "o", "o"] +[70.32478031158499, "o", "p"] +[70.35478031158499, "o", " "] +[70.38478031158499, "o", "&"] +[70.41478031158499, "o", "&"] +[70.44478031158499, "o", " "] +[70.474780311585, "o", "g"] +[70.504780311585, "o", "i"] +[70.534780311585, "o", "t"] +[70.564780311585, "o", " "] +[70.594780311585, "o", "c"] +[70.624780311585, "o", "h"] +[70.654780311585, "o", "e"] +[70.684780311585, "o", "c"] +[70.714780311585, "o", "k"] +[70.744780311585, "o", "o"] +[70.774780311585, "o", "u"] +[70.804780311585, "o", "t"] +[70.834780311585, "o", " "] +[70.86478031158501, "o", "3"] +[70.89478031158501, "o", "5"] +[70.92478031158501, "o", "b"] +[70.95478031158501, "o", "2"] +[70.98478031158501, "o", "3"] +[71.01478031158501, "o", "e"] +[71.04478031158501, "o", "e"] +[71.07478031158502, "o", "6"] +[71.10478031158502, "o", "b"] +[71.13478031158502, "o", "7"] +[71.16478031158502, "o", "4"] +[71.19478031158502, "o", "5"] +[71.22478031158502, "o", "9"] +[71.25478031158502, "o", "2"] +[71.28478031158502, "o", "9"] +[71.31478031158503, "o", "d"] +[71.34478031158503, "o", "8"] +[71.37478031158503, "o", "a"] +[71.40478031158503, "o", "2"] +[71.43478031158503, "o", "0"] +[71.46478031158503, "o", "9"] +[71.49478031158503, "o", "b"] +[71.52478031158503, "o", "e"] +[71.55478031158503, "o", "8"] +[71.58478031158504, "o", "2"] +[71.61478031158504, "o", "4"] +[71.64478031158504, "o", "8"] +[71.67478031158504, "o", "8"] +[71.70478031158504, "o", "7"] +[71.73478031158504, "o", "8"] +[71.76478031158504, "o", "a"] +[71.79478031158504, "o", "8"] +[71.82478031158504, "o", "8"] +[71.85478031158505, "o", "9"] +[71.88478031158505, "o", "3"] +[71.91478031158505, "o", "3"] +[71.94478031158505, "o", "f"] +[71.97478031158505, "o", "0"] +[72.00478031158505, "o", "2"] +[72.03478031158505, "o", "9"] +[72.06478031158505, "o", " "] +[72.09478031158505, "o", "-"] +[72.12478031158506, "o", "-"] +[72.15478031158506, "o", "f"] +[72.18478031158506, "o", "o"] +[72.21478031158506, "o", "r"] +[72.24478031158506, "o", "c"] +[72.27478031158506, "o", "e"] +[72.30478031158506, "o", "\r\n"] +[72.33478031158506, "o", "\u001b[0m"] +[72.36478031158506, "o", "\r\n"] +[72.37027371406614, "o", "Note: switching to '35b23ee6b745929d8a209be8248878a88933f029'.\r\n\r\nYou are in 'detached HEAD' state. You can look around, make experimental\r\nchanges and commit them, and you can discard any commits you make in this\r\nstate without impacting any branches by switching back to a branch.\r\n\r\nIf you want to create a new branch to retain commits you create, you may\r\ndo so (now or later) by using -c with the switch command. Example:\r\n\r\n git switch -c \r\n\r\nOr undo this operation with:\r\n\r\n git switch "] +[72.37028420448362, "o", "-\r\n\r\nTurn off this advice by setting config variable advice.detachedHead to false\r\n\r\nHEAD is now at 35b23ee Update dbt_project.yml to config-version 2\r\n"] +[72.40028420448363, "o", "\u001b[1m"] +[72.43028420448363, "o", "\u001b[36m"] +[72.46028420448363, "o", "\u001b[91m"] +[72.49028420448363, "o", "$"] +[72.52028420448363, "o", " "] +[72.55028420448363, "o", "\u001b[0m"] +[80.72478031158496, "o", "\u001b[H"] +[80.75478031158497, "o", "\u001b[J"] +[80.78478031158497, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check that dbt is set up to connect to the Splitgraph engine."] +[80.81478031158497, "o", "\r\n"] +[80.84478031158497, "o", "$ # We will be outputting data into the dbt_jaffle repository, so set that up.\r\n"] +[80.87478031158497, "o", "$"] +[80.90478031158497, "o", " "] +[80.93478031158497, "o", "c"] +[80.96478031158497, "o", "a"] +[80.99478031158498, "o", "t"] +[81.02478031158498, "o", " "] +[81.05478031158498, "o", "."] +[81.08478031158498, "o", "d"] +[81.11478031158498, "o", "b"] +[81.14478031158498, "o", "t"] +[81.17478031158498, "o", "/"] +[81.20478031158498, "o", "p"] +[81.23478031158498, "o", "r"] +[81.26478031158499, "o", "o"] +[81.29478031158499, "o", "f"] +[81.32478031158499, "o", "i"] +[81.35478031158499, "o", "l"] +[81.38478031158499, "o", "e"] +[81.41478031158499, "o", "s"] +[81.44478031158499, "o", "."] +[81.474780311585, "o", "y"] +[81.504780311585, "o", "m"] +[81.534780311585, "o", "l"] +[81.564780311585, "o", "\r\n"] +[81.594780311585, "o", "$"] +[81.624780311585, "o", " "] +[81.654780311585, "o", "d"] +[81.684780311585, "o", "b"] +[81.714780311585, "o", "t"] +[81.744780311585, "o", " "] +[81.774780311585, "o", "d"] +[81.804780311585, "o", "e"] +[81.834780311585, "o", "b"] +[81.86478031158501, "o", "u"] +[81.89478031158501, "o", "g"] +[81.92478031158501, "o", " "] +[81.95478031158501, "o", "-"] +[81.98478031158501, "o", "-"] +[82.01478031158501, "o", "p"] +[82.04478031158501, "o", "r"] +[82.07478031158502, "o", "o"] +[82.10478031158502, "o", "f"] +[82.13478031158502, "o", "i"] +[82.16478031158502, "o", "l"] +[82.19478031158502, "o", "e"] +[82.22478031158502, "o", "s"] +[82.25478031158502, "o", "-"] +[82.28478031158502, "o", "d"] +[82.31478031158503, "o", "i"] +[82.34478031158503, "o", "r"] +[82.37478031158503, "o", " "] +[82.40478031158503, "o", "."] +[82.43478031158503, "o", "d"] +[82.46478031158503, "o", "b"] +[82.49478031158503, "o", "t"] +[82.52478031158503, "o", " "] +[82.55478031158503, "o", "-"] +[82.58478031158504, "o", "-"] +[82.61478031158504, "o", "p"] +[82.64478031158504, "o", "r"] +[82.67478031158504, "o", "o"] +[82.70478031158504, "o", "j"] +[82.73478031158504, "o", "e"] +[82.76478031158504, "o", "c"] +[82.79478031158504, "o", "t"] +[82.82478031158504, "o", "-"] +[82.85478031158505, "o", "d"] +[82.88478031158505, "o", "i"] +[82.91478031158505, "o", "r"] +[82.94478031158505, "o", " "] +[82.97478031158505, "o", "j"] +[83.00478031158505, "o", "a"] +[83.03478031158505, "o", "f"] +[83.06478031158505, "o", "f"] +[83.09478031158505, "o", "l"] +[83.12478031158506, "o", "e"] +[83.15478031158506, "o", "_"] +[83.18478031158506, "o", "s"] +[83.21478031158506, "o", "h"] +[83.24478031158506, "o", "o"] +[83.27478031158506, "o", "p"] +[83.30478031158506, "o", "\r\n"] +[83.33478031158506, "o", "$"] +[83.36478031158506, "o", " "] +[83.39478031158507, "o", "s"] +[83.42478031158507, "o", "g"] +[83.45478031158507, "o", "r"] +[83.48478031158507, "o", " "] +[83.51478031158507, "o", "i"] +[83.54478031158507, "o", "n"] +[83.57478031158507, "o", "i"] +[83.60478031158507, "o", "t"] +[83.63478031158508, "o", " "] +[83.66478031158508, "o", "d"] +[83.69478031158508, "o", "b"] +[83.72478031158508, "o", "t"] +[83.75478031158508, "o", "_"] +[83.78478031158508, "o", "j"] +[83.81478031158508, "o", "a"] +[83.84478031158508, "o", "f"] +[83.87478031158508, "o", "f"] +[83.90478031158509, "o", "l"] +[83.93478031158509, "o", "e"] +[83.96478031158509, "o", "\r\n"] +[83.99478031158509, "o", "\u001b[0m"] +[84.02478031158509, "o", "\r\n"] +[84.02609876632752, "o", "jaffle_shop:\r\n target: splitgraph\r\n outputs:\r\n splitgraph:\r\n type: postgres\r\n host: localhost\r\n user: sgr\r\n pass: supersecure\r\n port: 5432\r\n dbname: splitgraph\r\n # The final schema that dbt writes to is a combination of this profile schema\r\n # and the schema specified in the model.\r\n schema: \"dbt_jaffle\"\r\n threads: 4\r\n"] +[85.02609876632752, "o", "19:41:10 Running with dbt=1.0.0\r\n"] +[85.02964142799439, "o", "dbt version: 1.0.0\r\npython version: 3.8.12\r\npython path: /home/runner/work/splitgraph/splitgraph/dbt_venv/bin/python\r\n"] +[85.02965406417908, "o", "os info: Linux-5.4.0-1064-azure-x86_64-with-glibc2.2.5\r\nUsing profiles.yml file at /home/runner/work/splitgraph/splitgraph/examples/dbt/.dbt/profiles.yml\r\nUsing dbt_project.yml file at /home/runner/work/splitgraph/splitgraph/examples/dbt/jaffle_shop/dbt_project.yml\r\n\r\n"] +[85.0903354072577, "o", "19:41:10 [\u001b[33mWARNING\u001b[0m]: Deprecated functionality\r\nThe `source-paths` config has been renamed to `model-paths`. Please update your\r\n`dbt_project.yml` configuration to reflect this change.\r\n"] +[85.09125737190308, "o", "19:41:10 [\u001b[33mWARNING\u001b[0m]: Deprecated functionality\r\nThe `data-paths` config has been renamed to `seed-paths`. Please update your\r\n`dbt_project.yml` configuration to reflect this change.\r\n"] +[85.10819581985535, "o", "Configuration:\r\n profiles.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n dbt_project.yml file [\u001b[32mOK found and valid\u001b[0m]\r\n\r\n"] +[85.10821823120179, "o", "Required dependencies:\r\n"] +[85.11506823539796, "o", " - git [\u001b[32mOK found\u001b[0m]\r\n\r\nConnection:\r\n"] +[85.11509946823182, "o", " host: localhost\r\n port: 5432\r\n user: sgr\r\n database: splitgraph\r\n schema: dbt_jaffle\r\n search_path: None\r\n keepalives_idle: 0\r\n sslmode: None\r\n"] +[85.13261631965699, "o", " Connection test: [\u001b[32mOK connection ok\u001b[0m]\r\n\r\n"] +[85.13262633323731, "o", "\u001b[32mAll checks passed!\u001b[0m\r\n"] +[85.54231552124085, "o", "\u001b[0m"] +[86.01972536087098, "o", "Initialized empty repository dbt_jaffle\r\n"] +[86.04972536087098, "o", "\u001b[1m"] +[86.07972536087098, "o", "\u001b[36m"] +[86.10972536087098, "o", "\u001b[91m"] +[86.13972536087098, "o", "$"] +[86.16972536087098, "o", " "] +[86.19972536087099, "o", "\u001b[0m"] +[107.72478031158496, "o", "\u001b[H"] +[107.75478031158497, "o", "\u001b[J"] +[107.78478031158497, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now run the dbt models."] +[107.81478031158497, "o", "\r\n"] +[107.84478031158497, "o", "$"] +[107.87478031158497, "o", " "] +[107.90478031158497, "o", "c"] +[107.93478031158497, "o", "d"] +[107.96478031158497, "o", " "] +[107.99478031158498, "o", "j"] +[108.02478031158498, "o", "a"] +[108.05478031158498, "o", "f"] +[108.08478031158498, "o", "f"] +[108.11478031158498, "o", "l"] +[108.14478031158498, "o", "e"] +[108.17478031158498, "o", "_"] +[108.20478031158498, "o", "s"] +[108.23478031158498, "o", "h"] +[108.26478031158499, "o", "o"] +[108.29478031158499, "o", "p"] +[108.32478031158499, "o", " "] +[108.35478031158499, "o", "&"] +[108.38478031158499, "o", "&"] +[108.41478031158499, "o", " "] +[108.44478031158499, "o", "d"] +[108.474780311585, "o", "b"] +[108.504780311585, "o", "t"] +[108.534780311585, "o", " "] +[108.564780311585, "o", "r"] +[108.594780311585, "o", "u"] +[108.624780311585, "o", "n"] +[108.654780311585, "o", " "] +[108.684780311585, "o", "-"] +[108.714780311585, "o", "-"] +[108.744780311585, "o", "p"] +[108.774780311585, "o", "r"] +[108.804780311585, "o", "o"] +[108.834780311585, "o", "f"] +[108.86478031158501, "o", "i"] +[108.89478031158501, "o", "l"] +[108.92478031158501, "o", "e"] +[108.95478031158501, "o", "s"] +[108.98478031158501, "o", "-"] +[109.01478031158501, "o", "d"] +[109.04478031158501, "o", "i"] +[109.07478031158502, "o", "r"] +[109.10478031158502, "o", " "] +[109.13478031158502, "o", "."] +[109.16478031158502, "o", "."] +[109.19478031158502, "o", "/"] +[109.22478031158502, "o", "."] +[109.25478031158502, "o", "d"] +[109.28478031158502, "o", "b"] +[109.31478031158503, "o", "t"] +[109.34478031158503, "o", "\r\n"] +[109.37478031158503, "o", "\u001b[0m"] +[109.40478031158503, "o", "\r\n"] +[110.40478031158503, "o", "19:41:14 [\u001b[33mWARNING\u001b[0m]: Deprecated functionality\r\nThe `source-paths` config has been renamed to `model-paths`. Please update your\r\n`dbt_project.yml` configuration to reflect this change.\r\n"] +[110.40599553108271, "o", "19:41:14 [\u001b[33mWARNING\u001b[0m]: Deprecated functionality\r\nThe `data-paths` config has been renamed to `seed-paths`. Please update your\r\n`dbt_project.yml` configuration to reflect this change.\r\n"] +[110.44000617981013, "o", "19:41:14 Running with dbt=1.0.0\r\n"] +[110.45813076019343, "o", "19:41:14 Partial parse save file not found. Starting full parse."] +[110.4581538867956, "o", "\r\n"] +[111.34218685150202, "o", "19:41:15 Found 9 models, 28 tests, 0 snapshots, 0 analyses, 165 macros, 0 operations, 0 seed files, 3 sources, 0 exposures, 0 metrics\r\n"] +[111.34511200904902, "o", "19:41:15 \r\n"] +[111.56672017097529, "o", "19:41:15 Concurrency: 4 threads (target='splitgraph')\r\n"] +[111.56721250534113, "o", "19:41:15 \r\n"] +[111.57747380256708, "o", "19:41:15 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers................... [RUN]\r\n"] +[111.57837693214472, "o", "19:41:15 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders...................... [RUN]\r\n"] +[111.57917539596613, "o", "19:41:15 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments.................... [RUN]"] +[111.57921497345026, "o", "\r\n"] +[111.58071271896418, "o", "19:41:15 4 of 9 START view model dbt_jaffle.stg_stripe__payments......................... [RUN]\r\n"] +[111.7338959407812, "o", "19:41:15 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders................. [\u001b[32mCREATE VIEW\u001b[0m in 0.15s]"] +[111.7364012432104, "o", "\r\n"] +[111.74046818733271, "o", "19:41:15 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments.................... [\u001b[32mCREATE VIEW\u001b[0m in 0.16s]"] +[111.7405196857458, "o", "\r\n"] +[111.74196259498652, "o", "19:41:15 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers.............. [\u001b[32mCREATE VIEW\u001b[0m in 0.16s]\r\n"] +[111.74468914985712, "o", "19:41:15 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments............... [\u001b[32mCREATE VIEW\u001b[0m in 0.16s]"] +[111.74472658157404, "o", "\r\n"] +[111.74615184783991, "o", "19:41:15 5 of 9 START table model dbt_jaffle.customer_orders............................. [RUN]\r\n"] +[111.75302736282404, "o", "19:41:15 7 of 9 START table model dbt_jaffle.order_payments.............................. [RUN]\r\n"] +[111.75412027359064, "o", "19:41:15 6 of 9 START table model dbt_jaffle.customer_payments........................... [RUN]\r\n"] +[111.87571947097834, "o", "19:41:15 6 of 9 OK created table model dbt_jaffle.customer_payments...................... [\u001b[32mSELECT 62\u001b[0m in 0.11s]"] +[111.87578050613459, "o", "\r\n"] +[111.88033334732111, "o", "19:41:15 7 of 9 OK created table model dbt_jaffle.order_payments......................... [\u001b[32mSELECT 99\u001b[0m in 0.12s]\r\n"] +[111.88176791191157, "o", "19:41:15 5 of 9 OK created table model dbt_jaffle.customer_orders........................ [\u001b[32mSELECT 62\u001b[0m in 0.13s]"] +[111.88193933486994, "o", "\r\n"] +[111.88394038200434, "o", "19:41:15 8 of 9 START table model dbt_jaffle.fct_orders.................................. [RUN]\r\n"] +[111.891138477326, "o", "19:41:15 9 of 9 START table model dbt_jaffle.dim_customers............................... [RUN]"] +[111.89117567062434, "o", "\r\n"] +[111.94050471305903, "o", "19:41:15 8 of 9 OK created table model dbt_jaffle.fct_orders............................. [\u001b[32mSELECT 99\u001b[0m in 0.05s]"] +[111.9405712318426, "o", "\r\n"] +[111.94660441398676, "o", "19:41:15 9 of 9 OK created table model dbt_jaffle.dim_customers.......................... [\u001b[32mSELECT 100\u001b[0m in 0.05s]\r\n"] +[111.9578253459936, "o", "19:41:15 \r\n"] +[111.95858876228388, "o", "19:41:15 Finished running 4 view models, 5 table models in 0.61s.\r\n"] +[111.9692451190954, "o", "19:41:15 \r\n"] +[111.97001664161738, "o", "19:41:15 \u001b[32mCompleted successfully\u001b[0m\r\n"] +[111.9708799552923, "o", "19:41:15 \r\n"] +[111.9716226291662, "o", "19:41:15 Done. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[112.3426000308996, "o", "\u001b[0m"] +[112.3726000308996, "o", "\u001b[1m"] +[112.4026000308996, "o", "\u001b[36m"] +[112.43260003089961, "o", "\u001b[91m"] +[112.46260003089961, "o", "$"] +[112.49260003089961, "o", " "] +[112.52260003089961, "o", "\u001b[0m"] +[127.22478031158496, "o", "\u001b[H"] +[127.25478031158497, "o", "\u001b[J"] +[127.28478031158497, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Take a look at the built dataset and commit it."] +[127.31478031158497, "o", "\r\n"] +[127.34478031158497, "o", "$ # Note Splitgraph doesn't currently support storing views\r\n"] +[127.37478031158497, "o", "$ # that dbt uses as a staging point for the initial data.\r\n"] +[127.40478031158497, "o", "$"] +[127.43478031158497, "o", " "] +[127.46478031158497, "o", "s"] +[127.49478031158498, "o", "g"] +[127.52478031158498, "o", "r"] +[127.55478031158498, "o", " "] +[127.58478031158498, "o", "d"] +[127.61478031158498, "o", "i"] +[127.64478031158498, "o", "f"] +[127.67478031158498, "o", "f"] +[127.70478031158498, "o", " "] +[127.73478031158498, "o", "d"] +[127.76478031158499, "o", "b"] +[127.79478031158499, "o", "t"] +[127.82478031158499, "o", "_"] +[127.85478031158499, "o", "j"] +[127.88478031158499, "o", "a"] +[127.91478031158499, "o", "f"] +[127.94478031158499, "o", "f"] +[127.974780311585, "o", "l"] +[128.004780311585, "o", "e"] +[128.034780311585, "o", "\r\n"] +[128.064780311585, "o", "$"] +[128.094780311585, "o", " "] +[128.124780311585, "o", "s"] +[128.154780311585, "o", "g"] +[128.184780311585, "o", "r"] +[128.214780311585, "o", " "] +[128.244780311585, "o", "c"] +[128.274780311585, "o", "o"] +[128.304780311585, "o", "m"] +[128.334780311585, "o", "m"] +[128.364780311585, "o", "i"] +[128.394780311585, "o", "t"] +[128.424780311585, "o", " "] +[128.454780311585, "o", "d"] +[128.484780311585, "o", "b"] +[128.514780311585, "o", "t"] +[128.54478031158501, "o", "_"] +[128.57478031158502, "o", "j"] +[128.60478031158502, "o", "a"] +[128.63478031158502, "o", "f"] +[128.66478031158502, "o", "f"] +[128.69478031158502, "o", "l"] +[128.72478031158502, "o", "e"] +[128.75478031158502, "o", "\r\n"] +[128.78478031158502, "o", "$"] +[128.81478031158503, "o", " "] +[128.84478031158503, "o", "s"] +[128.87478031158503, "o", "g"] +[128.90478031158503, "o", "r"] +[128.93478031158503, "o", " "] +[128.96478031158503, "o", "t"] +[128.99478031158503, "o", "a"] +[129.02478031158503, "o", "g"] +[129.05478031158503, "o", " "] +[129.08478031158504, "o", "d"] +[129.11478031158504, "o", "b"] +[129.14478031158504, "o", "t"] +[129.17478031158504, "o", "_"] +[129.20478031158504, "o", "j"] +[129.23478031158504, "o", "a"] +[129.26478031158504, "o", "f"] +[129.29478031158504, "o", "f"] +[129.32478031158504, "o", "l"] +[129.35478031158505, "o", "e"] +[129.38478031158505, "o", " "] +[129.41478031158505, "o", "a"] +[129.44478031158505, "o", "s"] +[129.47478031158505, "o", "o"] +[129.50478031158505, "o", "f"] +[129.53478031158505, "o", "_"] +[129.56478031158505, "o", "2"] +[129.59478031158505, "o", "0"] +[129.62478031158506, "o", "1"] +[129.65478031158506, "o", "8"] +[129.68478031158506, "o", "0"] +[129.71478031158506, "o", "4"] +[129.74478031158506, "o", "0"] +[129.77478031158506, "o", "9"] +[129.80478031158506, "o", "\r\n"] +[129.83478031158506, "o", "\u001b[0m"] +[129.86478031158506, "o", "\r\n"] +[130.3055690574652, "o", "Between 000000000000 and the current working copy: \r\n"] +[130.30558407783568, "o", "customer_orders: table added\r\ncustomer_payments: table added\r\ndim_customers: table added\r\nfct_orders: table added\r\norder_payments: table added\r\nstg_jaffle_shop__customers: untracked\r\nstg_jaffle_shop__orders: untracked\r\nstg_jaffle_shop__payments: untracked\r\nstg_stripe__payments: untracked\r\n"] +[130.7284170436865, "o", "Committing dbt_jaffle...\r\n"] +[130.74655855178892, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[130.74744809150755, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[130.74833190918028, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[130.74924934387266, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[130.75514233589232, "o", "Processing table customer_payments\r\n"] +[130.84330070495665, "o", "Processing table order_payments\r\n"] +[130.93274844169676, "o", "Processing table customer_orders\r\n"] +[131.0191110420233, "o", "Processing table fct_orders\r\n"] +[131.10851753234923, "o", "Processing table dim_customers\r\n"] +[131.20967042923033, "o", "Committed dbt_jaffle as b097e8fcca05.\r\n"] +[131.6267417716986, "o", "Tagged dbt_jaffle:b097e8fcca05280b18b0df2a07f8d01834f2f260e4e444c565d4e07ab828add7 with asof_20180409.\r\n"] +[131.6567417716986, "o", "\u001b[1m"] +[131.6867417716986, "o", "\u001b[36m"] +[131.7167417716986, "o", "\u001b[91m"] +[131.7467417716986, "o", "$"] +[131.7767417716986, "o", " "] +[131.8067417716986, "o", "\u001b[0m"] +[141.72478031158496, "o", "\u001b[H"] +[141.75478031158497, "o", "\u001b[J"] +[141.78478031158497, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the new version of the raw dataset and run dbt against it as well."] +[141.81478031158497, "o", "\r\n"] +[141.84478031158497, "o", "$"] +[141.87478031158497, "o", " "] +[141.90478031158497, "o", "s"] +[141.93478031158497, "o", "g"] +[141.96478031158497, "o", "r"] +[141.99478031158498, "o", " "] +[142.02478031158498, "o", "c"] +[142.05478031158498, "o", "h"] +[142.08478031158498, "o", "e"] +[142.11478031158498, "o", "c"] +[142.14478031158498, "o", "k"] +[142.17478031158498, "o", "o"] +[142.20478031158498, "o", "u"] +[142.23478031158498, "o", "t"] +[142.26478031158499, "o", " "] +[142.294780311585, "o", "r"] +[142.324780311585, "o", "a"] +[142.354780311585, "o", "w"] +[142.384780311585, "o", "_"] +[142.414780311585, "o", "j"] +[142.444780311585, "o", "a"] +[142.474780311585, "o", "f"] +[142.504780311585, "o", "f"] +[142.534780311585, "o", "l"] +[142.564780311585, "o", "e"] +[142.594780311585, "o", "_"] +[142.624780311585, "o", "s"] +[142.654780311585, "o", "h"] +[142.684780311585, "o", "o"] +[142.714780311585, "o", "p"] +[142.744780311585, "o", ":"] +[142.774780311585, "o", "a"] +[142.804780311585, "o", "s"] +[142.834780311585, "o", "o"] +[142.864780311585, "o", "f"] +[142.894780311585, "o", "_"] +[142.924780311585, "o", "2"] +[142.954780311585, "o", "0"] +[142.984780311585, "o", "1"] +[143.014780311585, "o", "8"] +[143.04478031158501, "o", "0"] +[143.07478031158502, "o", "4"] +[143.10478031158502, "o", "1"] +[143.13478031158502, "o", "0"] +[143.16478031158502, "o", "\r\n"] +[143.19478031158502, "o", "$"] +[143.22478031158502, "o", " "] +[143.25478031158502, "o", "c"] +[143.28478031158502, "o", "d"] +[143.31478031158503, "o", " "] +[143.34478031158503, "o", "j"] +[143.37478031158503, "o", "a"] +[143.40478031158503, "o", "f"] +[143.43478031158503, "o", "f"] +[143.46478031158503, "o", "l"] +[143.49478031158503, "o", "e"] +[143.52478031158503, "o", "_"] +[143.55478031158503, "o", "s"] +[143.58478031158504, "o", "h"] +[143.61478031158504, "o", "o"] +[143.64478031158504, "o", "p"] +[143.67478031158504, "o", " "] +[143.70478031158504, "o", "&"] +[143.73478031158504, "o", "&"] +[143.76478031158504, "o", " "] +[143.79478031158504, "o", "d"] +[143.82478031158504, "o", "b"] +[143.85478031158505, "o", "t"] +[143.88478031158505, "o", " "] +[143.91478031158505, "o", "r"] +[143.94478031158505, "o", "u"] +[143.97478031158505, "o", "n"] +[144.00478031158505, "o", " "] +[144.03478031158505, "o", "-"] +[144.06478031158505, "o", "-"] +[144.09478031158505, "o", "p"] +[144.12478031158506, "o", "r"] +[144.15478031158506, "o", "o"] +[144.18478031158506, "o", "f"] +[144.21478031158506, "o", "i"] +[144.24478031158506, "o", "l"] +[144.27478031158506, "o", "e"] +[144.30478031158506, "o", "s"] +[144.33478031158506, "o", "-"] +[144.36478031158506, "o", "d"] +[144.39478031158507, "o", "i"] +[144.42478031158507, "o", "r"] +[144.45478031158507, "o", " "] +[144.48478031158507, "o", "."] +[144.51478031158507, "o", "."] +[144.54478031158507, "o", "/"] +[144.57478031158507, "o", "."] +[144.60478031158507, "o", "d"] +[144.63478031158508, "o", "b"] +[144.66478031158508, "o", "t"] +[144.69478031158508, "o", "\r\n"] +[144.72478031158508, "o", "\u001b[0m"] +[144.75478031158508, "o", "\r\n"] +[145.48534395217956, "o", "Checked out raw_jaffle_shop:d66a9009ecb8.\r\n"] +[146.48534395217956, "o", "19:41:21 [\u001b[33mWARNING\u001b[0m]: Deprecated functionality\r\nThe `source-paths` config has been renamed to `model-paths`. Please update your\r\n`dbt_project.yml` configuration to reflect this change.\r\n"] +[146.48616172790588, "o", "19:41:21 [\u001b[33mWARNING\u001b[0m]: Deprecated functionality\r\nThe `data-paths` config has been renamed to `seed-paths`. Please update your\r\n`dbt_project.yml` configuration to reflect this change.\r\n"] +[146.520273942948, "o", "19:41:21 Running with dbt=1.0.0\r\n"] +[146.58568002700866, "o", "19:41:21 Found 9 models, 28 tests, 0 snapshots, 0 analyses, 165 macros, 0 operations, 0 seed files, 3 sources, 0 exposures, 0 metrics\r\n"] +[146.58889820098938, "o", "19:41:21 \r\n"] +[146.91846754074157, "o", "19:41:21 Concurrency: 4 threads (target='splitgraph')\r\n"] +[146.91890098571838, "o", "19:41:21 \r\n"] +[146.92800714492859, "o", "19:41:21 1 of 9 START view model dbt_jaffle.stg_jaffle_shop__customers................... [RUN]"] +[146.92806913375915, "o", "\r\n"] +[146.92929675102295, "o", "19:41:21 2 of 9 START view model dbt_jaffle.stg_jaffle_shop__orders...................... [RUN]"] +[146.92933418273986, "o", "\r\n"] +[146.93046977043213, "o", "19:41:21 3 of 9 START view model dbt_jaffle.stg_jaffle_shop__payments.................... [RUN]\r\n"] +[146.93134262085022, "o", "19:41:21 4 of 9 START view model dbt_jaffle.stg_stripe__payments......................... [RUN]\r\n"] +[147.1393678379065, "o", "19:41:21 3 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__payments............... [\u001b[32mCREATE VIEW\u001b[0m in 0.20s]"] +[147.13939263343872, "o", "\r\n"] +[147.1537776184088, "o", "19:41:21 5 of 9 START table model dbt_jaffle.order_payments.............................. [RUN]\r\n"] +[147.160317201615, "o", "19:41:21 1 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__customers.............. [\u001b[32mCREATE VIEW\u001b[0m in 0.22s]"] +[147.16037156105102, "o", "\r\n"] +[147.16307141304077, "o", "19:41:21 4 of 9 OK created view model dbt_jaffle.stg_stripe__payments.................... [\u001b[32mCREATE VIEW\u001b[0m in 0.22s]\r\n"] +[147.16430594444336, "o", "19:41:21 2 of 9 OK created view model dbt_jaffle.stg_jaffle_shop__orders................. [\u001b[32mCREATE VIEW\u001b[0m in 0.23s]\r\n"] +[147.19554593086303, "o", "19:41:22 6 of 9 START table model dbt_jaffle.customer_orders............................. [RUN]\r\n"] +[147.1977117252356, "o", "19:41:22 7 of 9 START table model dbt_jaffle.customer_payments........................... [RUN]\r\n"] +[147.28023316383423, "o", "19:41:22 5 of 9 OK created table model dbt_jaffle.order_payments......................... [\u001b[32mSELECT 99\u001b[0m in 0.13s]"] +[147.28365804672302, "o", "\r\n"] +[147.29145338058532, "o", "19:41:22 8 of 9 START table model dbt_jaffle.fct_orders.................................. [RUN]\r\n"] +[147.29540969848694, "o", "19:41:22 7 of 9 OK created table model dbt_jaffle.customer_payments...................... [\u001b[32mSELECT 62\u001b[0m in 0.09s]\r\n"] +[147.2960696411139, "o", "19:41:22 6 of 9 OK created table model dbt_jaffle.customer_orders........................ [\u001b[32mSELECT 62\u001b[0m in 0.10s]\r\n"] +[147.30320693969787, "o", "19:41:22 9 of 9 START table model dbt_jaffle.dim_customers............................... [RUN]\r\n"] +[147.36316158294738, "o", "19:41:22 8 of 9 OK created table model dbt_jaffle.fct_orders............................. [\u001b[32mSELECT 99\u001b[0m in 0.07s]\r\n"] +[147.3690355014807, "o", "19:41:22 9 of 9 OK created table model dbt_jaffle.dim_customers.......................... [\u001b[32mSELECT 100\u001b[0m in 0.06s]\r\n"] +[147.3802466583258, "o", "19:41:22 \r\n"] +[147.38110043525757, "o", "19:41:22 Finished running 4 view models, 5 table models in 0.79s.\r\n"] +[147.3913951110846, "o", "19:41:22 \r\n"] +[147.3922233772284, "o", "19:41:22 \u001b[32mCompleted successfully\u001b[0m\r\n"] +[147.3930516433722, "o", "19:41:22 \r\n"] +[147.3937919330603, "o", "19:41:22 Done. PASS=9 WARN=0 ERROR=0 SKIP=0 TOTAL=9\r\n"] +[147.75681807518066, "o", "\u001b[0m"] +[147.78681807518066, "o", "\u001b[1m"] +[147.81681807518066, "o", "\u001b[36m"] +[147.84681807518066, "o", "\u001b[91m"] +[147.87681807518067, "o", "$"] +[147.90681807518067, "o", " "] +[147.93681807518067, "o", "\u001b[0m"] +[161.72478031158496, "o", "\u001b[H"] +[161.75478031158497, "o", "\u001b[J"] +[161.78478031158497, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create an image from the new data."] +[161.81478031158497, "o", "\r\n"] +[161.84478031158497, "o", "$"] +[161.87478031158497, "o", " "] +[161.90478031158497, "o", "s"] +[161.93478031158497, "o", "g"] +[161.96478031158497, "o", "r"] +[161.99478031158498, "o", " "] +[162.02478031158498, "o", "c"] +[162.05478031158498, "o", "o"] +[162.08478031158498, "o", "m"] +[162.11478031158498, "o", "m"] +[162.14478031158498, "o", "i"] +[162.17478031158498, "o", "t"] +[162.20478031158498, "o", " "] +[162.23478031158498, "o", "d"] +[162.26478031158499, "o", "b"] +[162.294780311585, "o", "t"] +[162.324780311585, "o", "_"] +[162.354780311585, "o", "j"] +[162.384780311585, "o", "a"] +[162.414780311585, "o", "f"] +[162.444780311585, "o", "f"] +[162.474780311585, "o", "l"] +[162.504780311585, "o", "e"] +[162.534780311585, "o", "\r\n"] +[162.564780311585, "o", "$"] +[162.594780311585, "o", " "] +[162.624780311585, "o", "s"] +[162.654780311585, "o", "g"] +[162.684780311585, "o", "r"] +[162.714780311585, "o", " "] +[162.744780311585, "o", "t"] +[162.774780311585, "o", "a"] +[162.804780311585, "o", "g"] +[162.834780311585, "o", " "] +[162.864780311585, "o", "d"] +[162.894780311585, "o", "b"] +[162.924780311585, "o", "t"] +[162.954780311585, "o", "_"] +[162.984780311585, "o", "j"] +[163.014780311585, "o", "a"] +[163.04478031158501, "o", "f"] +[163.07478031158502, "o", "f"] +[163.10478031158502, "o", "l"] +[163.13478031158502, "o", "e"] +[163.16478031158502, "o", " "] +[163.19478031158502, "o", "a"] +[163.22478031158502, "o", "s"] +[163.25478031158502, "o", "o"] +[163.28478031158502, "o", "f"] +[163.31478031158503, "o", "_"] +[163.34478031158503, "o", "2"] +[163.37478031158503, "o", "0"] +[163.40478031158503, "o", "1"] +[163.43478031158503, "o", "8"] +[163.46478031158503, "o", "0"] +[163.49478031158503, "o", "4"] +[163.52478031158503, "o", "1"] +[163.55478031158503, "o", "0"] +[163.58478031158504, "o", "\r\n"] +[163.61478031158504, "o", "\u001b[0m"] +[163.64478031158504, "o", "\r\n"] +[164.0621277427679, "o", "Committing dbt_jaffle...\r\n"] +[164.1005491352087, "o", "Processing table fct_orders\r\n"] +[164.1919707393652, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__orders is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[164.19275609016475, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_stripe__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[164.19353881835994, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__payments is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[164.19798675537166, "o", "Processing table customer_payments\r\n"] +[164.26027384758052, "o", "Object o47a7af4dc6d74898da55e6c760eac4d702db25633cfab4e28e6df77cf00098 already exists, skipping\r\n"] +[164.2771381473547, "o", "\u001b[33mwarning: \u001b[0mTable dbt_jaffle.stg_jaffle_shop__customers is a view. Splitgraph currently doesn't support views and this table will not be in the image.\r\n"] +[164.28153506279048, "o", "Processing table order_payments\r\n"] +[164.34511724472102, "o", "Object o87940f703edacc7113c37ae83a6abe6293f48cbb940171ef03875a066b0c5c already exists, skipping\r\n"] +[164.36686960220393, "o", "Processing table customer_orders\r\n"] +[164.42952934265193, "o", "Object o0fafb9e76c06e221af3aa558b0a751b176857a09b2d75ca00826becbd12ef5 already exists, skipping\r\n"] +[164.45065728187618, "o", "Processing table dim_customers\r\n"] +[164.51345864296016, "o", "Object o9656926ef986d89e326952a43869eaf3dc59905ff22aba22cd3dd67a834dc5 already exists, skipping\r\n"] +[164.55393401145992, "o", "Committed dbt_jaffle as bb1348f19a4b.\r\n"] +[164.97939649581966, "o", "Tagged dbt_jaffle:bb1348f19a4b1acb3ddc4ea4f6d0708290389646c9df0f057dbf1ac574855a2e with asof_20180410.\r\n"] +[165.00939649581966, "o", "\u001b[1m"] +[165.03939649581966, "o", "\u001b[36m"] +[165.06939649581966, "o", "\u001b[91m"] +[165.09939649581966, "o", "$"] +[165.12939649581966, "o", " "] +[165.15939649581966, "o", "\u001b[0m"] +[171.72478031158496, "o", "\u001b[H"] +[171.75478031158497, "o", "\u001b[J"] +[171.78478031158497, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We now have two versions of the source and the target dataset."] +[171.81478031158497, "o", "\r\n"] +[171.84478031158497, "o", "$"] +[171.87478031158497, "o", " "] +[171.90478031158497, "o", "s"] +[171.93478031158497, "o", "g"] +[171.96478031158497, "o", "r"] +[171.99478031158498, "o", " "] +[172.02478031158498, "o", "l"] +[172.05478031158498, "o", "o"] +[172.08478031158498, "o", "g"] +[172.11478031158498, "o", " "] +[172.14478031158498, "o", "-"] +[172.17478031158498, "o", "t"] +[172.20478031158498, "o", " "] +[172.23478031158498, "o", "r"] +[172.26478031158499, "o", "a"] +[172.294780311585, "o", "w"] +[172.324780311585, "o", "_"] +[172.354780311585, "o", "j"] +[172.384780311585, "o", "a"] +[172.414780311585, "o", "f"] +[172.444780311585, "o", "f"] +[172.474780311585, "o", "l"] +[172.504780311585, "o", "e"] +[172.534780311585, "o", "_"] +[172.564780311585, "o", "s"] +[172.594780311585, "o", "h"] +[172.624780311585, "o", "o"] +[172.654780311585, "o", "p"] +[172.684780311585, "o", "\r\n"] +[172.714780311585, "o", "$"] +[172.744780311585, "o", " "] +[172.774780311585, "o", "s"] +[172.804780311585, "o", "g"] +[172.834780311585, "o", "r"] +[172.864780311585, "o", " "] +[172.894780311585, "o", "l"] +[172.924780311585, "o", "o"] +[172.954780311585, "o", "g"] +[172.984780311585, "o", " "] +[173.014780311585, "o", "-"] +[173.04478031158501, "o", "t"] +[173.07478031158502, "o", " "] +[173.10478031158502, "o", "d"] +[173.13478031158502, "o", "b"] +[173.16478031158502, "o", "t"] +[173.19478031158502, "o", "_"] +[173.22478031158502, "o", "j"] +[173.25478031158502, "o", "a"] +[173.28478031158502, "o", "f"] +[173.31478031158503, "o", "f"] +[173.34478031158503, "o", "l"] +[173.37478031158503, "o", "e"] +[173.40478031158503, "o", "\r\n"] +[173.43478031158503, "o", "\u001b[0m"] +[173.46478031158503, "o", "\r\n"] +[173.89486477851923, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-12-17 19:41:00\u001b[0m\r\n \u2514 \u001b[1m\u001b[91mb7368aa32f\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-12-17 19:41:03\u001b[0m\r\n \u2514 \u001b[1m\u001b[91md66a9009ec\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-12-17 19:41:06\u001b[0m\r\n"] +[174.32347510337885, "o", "\u001b[1m\u001b[91m0000000000\u001b[0m \u001b[92m2021-12-17 19:41:11\u001b[0m\r\n \u2514 \u001b[1m\u001b[91mb097e8fcca\u001b[0m\u001b[1m\u001b[93m [asof_20180409]\u001b[0m \u001b[92m2021-12-17 19:41:17\u001b[0m\r\n \u2514 \u001b[1m\u001b[91mbb1348f19a\u001b[0m\u001b[1m\u001b[93m [HEAD, asof_20180410, latest]\u001b[0m \u001b[92m2021-12-17 19:41:23\u001b[0m\r\n"] +[174.35347510337886, "o", "\u001b[1m"] +[174.38347510337886, "o", "\u001b[36m"] +[174.41347510337886, "o", "\u001b[91m"] +[174.44347510337886, "o", "$"] +[174.47347510337886, "o", " "] +[174.50347510337886, "o", "\u001b[0m"] +[179.53347510337886, "o", "\u001b[H"] +[179.56347510337886, "o", "\u001b[J"] +[179.59347510337886, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the difference between the two datasets that dbt built."] +[179.62347510337887, "o", "\r\n"] +[179.65347510337887, "o", "$"] +[179.68347510337887, "o", " "] +[179.71347510337887, "o", "s"] +[179.74347510337887, "o", "g"] +[179.77347510337887, "o", "r"] +[179.80347510337887, "o", " "] +[179.83347510337887, "o", "d"] +[179.86347510337887, "o", "i"] +[179.89347510337888, "o", "f"] +[179.92347510337888, "o", "f"] +[179.95347510337888, "o", " "] +[179.98347510337888, "o", "d"] +[180.01347510337888, "o", "b"] +[180.04347510337888, "o", "t"] +[180.07347510337888, "o", "_"] +[180.10347510337888, "o", "j"] +[180.13347510337888, "o", "a"] +[180.1634751033789, "o", "f"] +[180.1934751033789, "o", "f"] +[180.2234751033789, "o", "l"] +[180.2534751033789, "o", "e"] +[180.2834751033789, "o", " "] +[180.3134751033789, "o", "a"] +[180.3434751033789, "o", "s"] +[180.3734751033789, "o", "o"] +[180.4034751033789, "o", "f"] +[180.4334751033789, "o", "_"] +[180.4634751033789, "o", "2"] +[180.4934751033789, "o", "0"] +[180.5234751033789, "o", "1"] +[180.5534751033789, "o", "8"] +[180.5834751033789, "o", "0"] +[180.6134751033789, "o", "4"] +[180.6434751033789, "o", "0"] +[180.6734751033789, "o", "9"] +[180.7034751033789, "o", " "] +[180.7334751033789, "o", "a"] +[180.7634751033789, "o", "s"] +[180.7934751033789, "o", "o"] +[180.8234751033789, "o", "f"] +[180.8534751033789, "o", "_"] +[180.8834751033789, "o", "2"] +[180.91347510337891, "o", "0"] +[180.94347510337892, "o", "1"] +[180.97347510337892, "o", "8"] +[181.00347510337892, "o", "0"] +[181.03347510337892, "o", "4"] +[181.06347510337892, "o", "1"] +[181.09347510337892, "o", "0"] +[181.12347510337892, "o", " "] +[181.15347510337892, "o", "-"] +[181.18347510337892, "o", "-"] +[181.21347510337893, "o", "v"] +[181.24347510337893, "o", "e"] +[181.27347510337893, "o", "r"] +[181.30347510337893, "o", "b"] +[181.33347510337893, "o", "o"] +[181.36347510337893, "o", "s"] +[181.39347510337893, "o", "e"] +[181.42347510337893, "o", "\r\n"] +[181.45347510337893, "o", "\u001b[0m"] +[181.48347510337894, "o", "\r\n"] +[182.1300717735297, "o", "Between b097e8fcca05 and bb1348f19a4b: \r\n"] +[182.13036073684756, "o", "customer_orders: no changes.\r\ncustomer_payments: no changes.\r\ndim_customers: no changes.\r\n"] +[182.13038386344974, "o", "fct_orders: added 5 rows, removed 5 rows.\r\n- (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'return_pending', 0, 0, 0, 23, 23)\r\n- (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'return_pending', 0, 0, 15, 0, 15)\r\n- (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 0, 25, 0, 25)\r\n- (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'shipped', 0, 0, 17, 0, 17)\r\n"] +[182.1305087947852, "o", "- (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'placed', 0, 23, 0, 0, 23)\r\n+ (23, 22, datetime.datetime(2018, 1, 26, 0, 0), 'returned', 0, 0, 0, 23, 23)\r\n+ (52, 54, datetime.datetime(2018, 2, 25, 0, 0), 'returned', 0, 0, 15, 0, 15)\r\n"] +[182.13052166938846, "o", "+ (84, 70, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 25, 0, 25)\r\n+ (85, 47, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 0, 17, 0, 17)\r\n"] +[182.13053001403873, "o", "+ (86, 68, datetime.datetime(2018, 3, 26, 0, 0), 'returned', 0, 23, 0, 0, 23)\r\n"] +[182.1305543327338, "o", "order_payments: no changes.\r\n"] +[182.1605543327338, "o", "\u001b[1m"] +[182.1905543327338, "o", "\u001b[36m"] +[182.2205543327338, "o", "\u001b[91m"] +[182.2505543327338, "o", "$"] +[182.2805543327338, "o", " "] +[182.3105543327338, "o", "\u001b[0m"] +[189.03347510337886, "o", "\u001b[H"] +[189.06347510337886, "o", "\u001b[J"] +[189.09347510337886, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a sample query: how much in bank transfer refunds did we process?"] +[189.12347510337887, "o", "\r\n"] +[189.15347510337887, "o", "$"] +[189.18347510337887, "o", " "] +[189.21347510337887, "o", "s"] +[189.24347510337887, "o", "g"] +[189.27347510337887, "o", "r"] +[189.30347510337887, "o", " "] +[189.33347510337887, "o", "s"] +[189.36347510337887, "o", "q"] +[189.39347510337888, "o", "l"] +[189.42347510337888, "o", " "] +[189.45347510337888, "o", "-"] +[189.48347510337888, "o", "i"] +[189.51347510337888, "o", " "] +[189.54347510337888, "o", "d"] +[189.57347510337888, "o", "b"] +[189.60347510337888, "o", "t"] +[189.63347510337888, "o", "_"] +[189.6634751033789, "o", "j"] +[189.6934751033789, "o", "a"] +[189.7234751033789, "o", "f"] +[189.7534751033789, "o", "f"] +[189.7834751033789, "o", "l"] +[189.8134751033789, "o", "e"] +[189.8434751033789, "o", ":"] +[189.8734751033789, "o", "a"] +[189.9034751033789, "o", "s"] +[189.9334751033789, "o", "o"] +[189.9634751033789, "o", "f"] +[189.9934751033789, "o", "_"] +[190.0234751033789, "o", "2"] +[190.0534751033789, "o", "0"] +[190.0834751033789, "o", "1"] +[190.1134751033789, "o", "8"] +[190.1434751033789, "o", "0"] +[190.1734751033789, "o", "4"] +[190.2034751033789, "o", "0"] +[190.2334751033789, "o", "9"] +[190.2634751033789, "o", " "] +[190.2934751033789, "o", "\""] +[190.3234751033789, "o", "S"] +[190.3534751033789, "o", "E"] +[190.3834751033789, "o", "L"] +[190.41347510337891, "o", "E"] +[190.44347510337892, "o", "C"] +[190.47347510337892, "o", "T"] +[190.50347510337892, "o", " "] +[190.53347510337892, "o", "s"] +[190.56347510337892, "o", "u"] +[190.59347510337892, "o", "m"] +[190.62347510337892, "o", "("] +[190.65347510337892, "o", "b"] +[190.68347510337892, "o", "a"] +[190.71347510337893, "o", "n"] +[190.74347510337893, "o", "k"] +[190.77347510337893, "o", "_"] +[190.80347510337893, "o", "t"] +[190.83347510337893, "o", "r"] +[190.86347510337893, "o", "a"] +[190.89347510337893, "o", "n"] +[190.92347510337893, "o", "s"] +[190.95347510337893, "o", "f"] +[190.98347510337894, "o", "e"] +[191.01347510337894, "o", "r"] +[191.04347510337894, "o", "_"] +[191.07347510337894, "o", "a"] +[191.10347510337894, "o", "m"] +[191.13347510337894, "o", "o"] +[191.16347510337894, "o", "u"] +[191.19347510337894, "o", "n"] +[191.22347510337895, "o", "t"] +[191.25347510337895, "o", ")"] +[191.28347510337895, "o", " "] +[191.31347510337895, "o", "F"] +[191.34347510337895, "o", "R"] +[191.37347510337895, "o", "O"] +[191.40347510337895, "o", "M"] +[191.43347510337895, "o", " "] +[191.46347510337895, "o", "f"] +[191.49347510337896, "o", "c"] +[191.52347510337896, "o", "t"] +[191.55347510337896, "o", "_"] +[191.58347510337896, "o", "o"] +[191.61347510337896, "o", "r"] +[191.64347510337896, "o", "d"] +[191.67347510337896, "o", "e"] +[191.70347510337896, "o", "r"] +[191.73347510337896, "o", "s"] +[191.76347510337897, "o", " "] +[191.79347510337897, "o", "W"] +[191.82347510337897, "o", "H"] +[191.85347510337897, "o", "E"] +[191.88347510337897, "o", "R"] +[191.91347510337897, "o", "E"] +[191.94347510337897, "o", " "] +[191.97347510337897, "o", "s"] +[192.00347510337897, "o", "t"] +[192.03347510337898, "o", "a"] +[192.06347510337898, "o", "t"] +[192.09347510337898, "o", "u"] +[192.12347510337898, "o", "s"] +[192.15347510337898, "o", " "] +[192.18347510337898, "o", "="] +[192.21347510337898, "o", " "] +[192.24347510337898, "o", "'"] +[192.27347510337898, "o", "r"] +[192.303475103379, "o", "e"] +[192.333475103379, "o", "t"] +[192.363475103379, "o", "u"] +[192.393475103379, "o", "r"] +[192.423475103379, "o", "n"] +[192.453475103379, "o", "e"] +[192.483475103379, "o", "d"] +[192.513475103379, "o", "'"] +[192.543475103379, "o", "\""] +[192.573475103379, "o", "\r\n"] +[192.603475103379, "o", "$"] +[192.633475103379, "o", " "] +[192.663475103379, "o", "s"] +[192.693475103379, "o", "g"] +[192.723475103379, "o", "r"] +[192.753475103379, "o", " "] +[192.783475103379, "o", "s"] +[192.813475103379, "o", "q"] +[192.843475103379, "o", "l"] +[192.873475103379, "o", " "] +[192.903475103379, "o", "-"] +[192.933475103379, "o", "i"] +[192.963475103379, "o", " "] +[192.993475103379, "o", "d"] +[193.023475103379, "o", "b"] +[193.05347510337901, "o", "t"] +[193.08347510337902, "o", "_"] +[193.11347510337902, "o", "j"] +[193.14347510337902, "o", "a"] +[193.17347510337902, "o", "f"] +[193.20347510337902, "o", "f"] +[193.23347510337902, "o", "l"] +[193.26347510337902, "o", "e"] +[193.29347510337902, "o", ":"] +[193.32347510337902, "o", "a"] +[193.35347510337903, "o", "s"] +[193.38347510337903, "o", "o"] +[193.41347510337903, "o", "f"] +[193.44347510337903, "o", "_"] +[193.47347510337903, "o", "2"] +[193.50347510337903, "o", "0"] +[193.53347510337903, "o", "1"] +[193.56347510337903, "o", "8"] +[193.59347510337903, "o", "0"] +[193.62347510337904, "o", "4"] +[193.65347510337904, "o", "1"] +[193.68347510337904, "o", "0"] +[193.71347510337904, "o", " "] +[193.74347510337904, "o", "\""] +[193.77347510337904, "o", "S"] +[193.80347510337904, "o", "E"] +[193.83347510337904, "o", "L"] +[193.86347510337905, "o", "E"] +[193.89347510337905, "o", "C"] +[193.92347510337905, "o", "T"] +[193.95347510337905, "o", " "] +[193.98347510337905, "o", "s"] +[194.01347510337905, "o", "u"] +[194.04347510337905, "o", "m"] +[194.07347510337905, "o", "("] +[194.10347510337905, "o", "b"] +[194.13347510337906, "o", "a"] +[194.16347510337906, "o", "n"] +[194.19347510337906, "o", "k"] +[194.22347510337906, "o", "_"] +[194.25347510337906, "o", "t"] +[194.28347510337906, "o", "r"] +[194.31347510337906, "o", "a"] +[194.34347510337906, "o", "n"] +[194.37347510337906, "o", "s"] +[194.40347510337907, "o", "f"] +[194.43347510337907, "o", "e"] +[194.46347510337907, "o", "r"] +[194.49347510337907, "o", "_"] +[194.52347510337907, "o", "a"] +[194.55347510337907, "o", "m"] +[194.58347510337907, "o", "o"] +[194.61347510337907, "o", "u"] +[194.64347510337907, "o", "n"] +[194.67347510337908, "o", "t"] +[194.70347510337908, "o", ")"] +[194.73347510337908, "o", " "] +[194.76347510337908, "o", "F"] +[194.79347510337908, "o", "R"] +[194.82347510337908, "o", "O"] +[194.85347510337908, "o", "M"] +[194.88347510337908, "o", " "] +[194.91347510337908, "o", "f"] +[194.9434751033791, "o", "c"] +[194.9734751033791, "o", "t"] +[195.0034751033791, "o", "_"] +[195.0334751033791, "o", "o"] +[195.0634751033791, "o", "r"] +[195.0934751033791, "o", "d"] +[195.1234751033791, "o", "e"] +[195.1534751033791, "o", "r"] +[195.1834751033791, "o", "s"] +[195.2134751033791, "o", " "] +[195.2434751033791, "o", "W"] +[195.2734751033791, "o", "H"] +[195.3034751033791, "o", "E"] +[195.3334751033791, "o", "R"] +[195.3634751033791, "o", "E"] +[195.3934751033791, "o", " "] +[195.4234751033791, "o", "s"] +[195.4534751033791, "o", "t"] +[195.4834751033791, "o", "a"] +[195.5134751033791, "o", "t"] +[195.5434751033791, "o", "u"] +[195.5734751033791, "o", "s"] +[195.6034751033791, "o", " "] +[195.6334751033791, "o", "="] +[195.6634751033791, "o", " "] +[195.69347510337911, "o", "'"] +[195.72347510337912, "o", "r"] +[195.75347510337912, "o", "e"] +[195.78347510337912, "o", "t"] +[195.81347510337912, "o", "u"] +[195.84347510337912, "o", "r"] +[195.87347510337912, "o", "n"] +[195.90347510337912, "o", "e"] +[195.93347510337912, "o", "d"] +[195.96347510337912, "o", "'"] +[195.99347510337913, "o", "\""] +[196.02347510337913, "o", "\r\n"] +[196.05347510337913, "o", "\u001b[0m"] +[196.08347510337913, "o", "\r\n"] +[197.08347510337913, "o", "3\r\n"] +[198.08347510337913, "o", "60\r\n"] +[198.11347510337913, "o", "\u001b[1m"] +[198.14347510337913, "o", "\u001b[36m"] +[198.17347510337913, "o", "\u001b[91m"] +[198.20347510337913, "o", "$"] +[198.23347510337913, "o", " "] +[198.26347510337914, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/latest/import-from-csv.cast b/content/casts/versioned/latest/import-from-csv.cast index 6d9bc02e..75d7a86c 100644 --- a/content/casts/versioned/latest/import-from-csv.cast +++ b/content/casts/versioned/latest/import-from-csv.cast @@ -1,4 +1,4 @@ -{"version": 2, "width": 100, "height": 45, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1615571673, "metadata": {"tss": [{"h": "Inspect the data file", "ts": 0.06}, {"h": "Initialize the repository", "ts": 6.502602577209474}, {"h": "Ingest the data into a new table (wrapper around COPY FROM STDIN)", "ts": 27.502602577209476}, {"h": "The data is now in a table but not committed as a Splitgraph image", "ts": 36.19260257720961}, {"h": "Create a new image and tag it", "ts": 43.47378568649313}, {"h": "Inspect the image", "ts": 51.33856751441985}, {"h": "Inspect the table", "ts": 58.01755641937291}, {"h": "Inspect object metadata", "ts": 77.51755641937291}]}} +{"version": 2, "width": 100, "height": 45, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1639769992, "metadata": {"tss": [{"h": "Inspect the data file", "ts": 0.06}, {"h": "Initialize the repository", "ts": 6.503155946731569}, {"h": "Ingest the data into a new table (wrapper around COPY FROM STDIN)", "ts": 27.50315594673157}, {"h": "The data is now in a table but not committed as a Splitgraph image", "ts": 36.19315594673171}, {"h": "Create a new image and tag it", "ts": 43.91122798919699}, {"h": "Inspect the image", "ts": 52.26576544761687}, {"h": "Inspect the table", "ts": 59.192593326568954}, {"h": "Inspect object metadata", "ts": 78.69259332656895}]}} [0.03, "o", "\u001b[H"] [0.06, "o", "\u001b[J"] [0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the data file"] @@ -41,588 +41,554 @@ [1.2000000000000008, "o", "\r\n"] [1.2300000000000009, "o", "\u001b[0m"] [1.260000000000001, "o", "\r\n"] -[1.2619433498382577, "o", "date;temperaturemin;temperaturemax;precipitation;snowfall;snowdepth;avgwindspeed;fastest2minwinddir;fastest2minwindspeed;fastest5secwinddir;fastest5secwindspeed;fog;fogheavy;mist;rain;fogground;ice;glaze;drizzle;snow;freezingrain;smokehaze;thunder;highwind;hail;blowingsnow;dust;freezingfog\r\r\n2007-01-06;50.0;71.1;0.13;0.0;0.0;8.05;230;17.9;230;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-09;30.0;55.0;0.0;0.0;0.0;7.61;280;23.04;270;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;N"] -[1.26195336341858, "o", "o;No\r\r\n2007-01-14;50.0;73.9;0.0;0.0;0.0;8.5;230;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n"] -[1.2626025772094736, "o", "2007-01-15;57.0;73.9;0.0;0.0;0.0;13.2;230;23.94;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n"] -[1.2926025772094736, "o", "\u001b[1m"] -[1.3226025772094736, "o", "\u001b[36m"] -[1.3526025772094736, "o", "\u001b[91m"] -[1.3826025772094737, "o", "$"] -[1.4126025772094737, "o", " "] -[1.4426025772094737, "o", "\u001b[0m"] -[6.472602577209474, "o", "\u001b[H"] -[6.502602577209474, "o", "\u001b[J"] -[6.532602577209475, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the repository"] -[6.562602577209475, "o", "\r\n"] -[6.592602577209475, "o", "$"] -[6.622602577209475, "o", " "] -[6.652602577209476, "o", "s"] -[6.682602577209476, "o", "g"] -[6.712602577209476, "o", "r"] -[6.742602577209476, "o", " "] -[6.772602577209477, "o", "i"] -[6.802602577209477, "o", "n"] -[6.832602577209477, "o", "i"] -[6.862602577209477, "o", "t"] -[6.892602577209478, "o", " "] -[6.922602577209478, "o", "d"] -[6.952602577209478, "o", "e"] -[6.982602577209478, "o", "m"] -[7.012602577209479, "o", "o"] -[7.042602577209479, "o", "/"] -[7.072602577209479, "o", "w"] -[7.102602577209479, "o", "e"] -[7.13260257720948, "o", "a"] -[7.16260257720948, "o", "t"] -[7.19260257720948, "o", "h"] -[7.22260257720948, "o", "e"] -[7.252602577209481, "o", "r"] -[7.282602577209481, "o", "\r\n"] -[7.312602577209481, "o", "$"] -[7.342602577209481, "o", " "] -[7.372602577209482, "o", "s"] -[7.402602577209482, "o", "g"] -[7.432602577209482, "o", "r"] -[7.462602577209482, "o", " "] -[7.492602577209483, "o", "c"] -[7.522602577209483, "o", "s"] -[7.552602577209483, "o", "v"] -[7.582602577209483, "o", " "] -[7.612602577209484, "o", "i"] -[7.642602577209484, "o", "m"] -[7.672602577209484, "o", "p"] -[7.702602577209484, "o", "o"] -[7.732602577209485, "o", "r"] -[7.762602577209485, "o", "t"] -[7.792602577209485, "o", " "] -[7.822602577209485, "o", "-"] -[7.852602577209486, "o", "-"] -[7.882602577209486, "o", "h"] -[7.912602577209486, "o", "e"] -[7.942602577209486, "o", "l"] -[7.972602577209487, "o", "p"] -[8.002602577209487, "o", "\r\n"] -[8.032602577209486, "o", "\u001b[0m"] -[8.062602577209486, "o", "\r\n"] -[8.283522424697889, "o", "Initialized empty repository demo/weather\r\n"] -[8.45344668388368, "o", "Usage: sgr csv import [OPTIONS] REPOSITORY TABLE\r\n\r\n Import a CSV file into a checked-out Splitgraph repository. This doesn't\r\n create a new image, use sgr commit after the import and any adjustments\r\n (e.g. adding primary keys or converting column types) to do so.\r\n\r\n If the target table doesn't exist, this will create a new table.\r\n\r\n If the target table does exist, this will try and patch the new values in\r\n by updating rows that exist in the current table (as per its primary key\r\n constraints) an"] -[8.453455982208265, "o", "d inserting new ones. Rows existing in the current table\r\n but missing in the CSV won't be deleted.\r\n\r\n If -r is passed, the table will instead be deleted and recreated from the\r\n CSV file if it exists.\r\n\r\nOptions:\r\n -f, --file FILENAME File name to import data from, default\r\n stdin.\r\n\r\n -r, --replace Replace the table if it already exists.\r\n -k, --primary-key TEXT Use the specified column(s) as primary\r\n "] -[8.453461704254163, "o", " key(s)\r\n\r\n -t, --override-type ...\r\n Explicitly set types of these columns to PG\r\n types\r\n\r\n --encoding TEXT Encoding to use for the CSV file\r\n --separator TEXT CSV separator to use\r\n --no-header Treats the first line of the CSV as data\r\n rather than a header.\r\n\r\n --skip-schema-check Skips checking that the dataframe is\r\n "] -[8.453467187881483, "o", " compatible with the target schema.\r\n\r\n --help Show this message and exit.\r\n"] -[8.483467187881482, "o", "\u001b[1m"] -[8.513467187881481, "o", "\u001b[36m"] -[8.54346718788148, "o", "\u001b[91m"] -[8.57346718788148, "o", "$"] -[8.60346718788148, "o", " "] -[8.633467187881479, "o", "\u001b[0m"] -[27.472602577209475, "o", "\u001b[H"] -[27.502602577209476, "o", "\u001b[J"] -[27.532602577209477, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the data into a new table (wrapper around COPY FROM STDIN)"] -[27.56260257720948, "o", "\r\n"] -[27.59260257720948, "o", "$"] -[27.62260257720948, "o", " "] -[27.652602577209482, "o", "s"] -[27.682602577209483, "o", "g"] -[27.712602577209484, "o", "r"] -[27.742602577209485, "o", " "] -[27.772602577209486, "o", "c"] -[27.802602577209488, "o", "s"] -[27.83260257720949, "o", "v"] -[27.86260257720949, "o", " "] -[27.89260257720949, "o", "i"] -[27.922602577209492, "o", "m"] -[27.952602577209493, "o", "p"] -[27.982602577209494, "o", "o"] -[28.012602577209496, "o", "r"] -[28.042602577209497, "o", "t"] -[28.072602577209498, "o", " "] -[28.1026025772095, "o", "-"] -[28.1326025772095, "o", "f"] -[28.1626025772095, "o", " "] -[28.192602577209502, "o", "r"] -[28.222602577209503, "o", "d"] -[28.252602577209505, "o", "u"] -[28.282602577209506, "o", "-"] -[28.312602577209507, "o", "w"] -[28.342602577209508, "o", "e"] -[28.37260257720951, "o", "a"] -[28.40260257720951, "o", "t"] -[28.43260257720951, "o", "h"] -[28.462602577209513, "o", "e"] -[28.492602577209514, "o", "r"] -[28.522602577209515, "o", "-"] -[28.552602577209516, "o", "h"] -[28.582602577209517, "o", "i"] -[28.61260257720952, "o", "s"] -[28.64260257720952, "o", "t"] -[28.67260257720952, "o", "o"] -[28.70260257720952, "o", "r"] -[28.732602577209523, "o", "y"] -[28.762602577209524, "o", "."] -[28.792602577209525, "o", "c"] -[28.822602577209526, "o", "s"] -[28.852602577209527, "o", "v"] -[28.88260257720953, "o", " "] -[28.91260257720953, "o", "\\"] -[28.94260257720953, "o", "\r\n "] -[28.972602577209532, "o", "-"] -[29.002602577209533, "o", "k"] -[29.032602577209534, "o", " "] -[29.062602577209535, "o", "d"] -[29.092602577209536, "o", "a"] -[29.122602577209538, "o", "t"] -[29.15260257720954, "o", "e"] -[29.18260257720954, "o", " "] -[29.21260257720954, "o", "\\"] -[29.242602577209542, "o", "\r\n "] -[29.272602577209543, "o", "-"] -[29.302602577209544, "o", "t"] -[29.332602577209546, "o", " "] -[29.362602577209547, "o", "d"] -[29.392602577209548, "o", "a"] -[29.42260257720955, "o", "t"] -[29.45260257720955, "o", "e"] -[29.48260257720955, "o", " "] -[29.512602577209552, "o", "t"] -[29.542602577209554, "o", "i"] -[29.572602577209555, "o", "m"] -[29.602602577209556, "o", "e"] -[29.632602577209557, "o", "s"] -[29.662602577209558, "o", "t"] -[29.69260257720956, "o", "a"] -[29.72260257720956, "o", "m"] -[29.75260257720956, "o", "p"] -[29.782602577209563, "o", " "] -[29.812602577209564, "o", "\\"] -[29.842602577209565, "o", "\r\n "] -[29.872602577209566, "o", "-"] -[29.902602577209567, "o", "-"] -[29.93260257720957, "o", "s"] -[29.96260257720957, "o", "e"] -[29.99260257720957, "o", "p"] -[30.02260257720957, "o", "a"] -[30.052602577209573, "o", "r"] -[30.082602577209574, "o", "a"] -[30.112602577209575, "o", "t"] -[30.142602577209576, "o", "o"] -[30.172602577209577, "o", "r"] -[30.20260257720958, "o", " "] -[30.23260257720958, "o", "\""] -[30.26260257720958, "o", ";"] -[30.292602577209582, "o", "\""] -[30.322602577209583, "o", " "] -[30.352602577209584, "o", "\\"] -[30.382602577209585, "o", "\r\n "] -[30.412602577209586, "o", "d"] -[30.442602577209588, "o", "e"] -[30.47260257720959, "o", "m"] -[30.50260257720959, "o", "o"] -[30.53260257720959, "o", "/"] -[30.562602577209592, "o", "w"] -[30.592602577209593, "o", "e"] -[30.622602577209594, "o", "a"] -[30.652602577209596, "o", "t"] -[30.682602577209597, "o", "h"] -[30.712602577209598, "o", "e"] -[30.7426025772096, "o", "r"] -[30.7726025772096, "o", " "] -[30.8026025772096, "o", "r"] -[30.832602577209602, "o", "d"] -[30.862602577209604, "o", "u"] -[30.892602577209605, "o", "\r\n"] -[30.922602577209606, "o", "\u001b[0m"] -[30.952602577209607, "o", "\r\n"] -[30.982602577209608, "o", "\u001b[1m"] -[31.01260257720961, "o", "\u001b[36m"] -[31.04260257720961, "o", "\u001b[91m"] -[31.07260257720961, "o", "$"] -[31.102602577209613, "o", " "] -[31.132602577209614, "o", "\u001b[0m"] -[36.16260257720961, "o", "\u001b[H"] -[36.19260257720961, "o", "\u001b[J"] -[36.222602577209614, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The data is now in a table but not committed as a Splitgraph image"] -[36.252602577209615, "o", "\r\n"] -[36.282602577209616, "o", "$"] -[36.31260257720962, "o", " "] -[36.34260257720962, "o", "s"] -[36.37260257720962, "o", "g"] -[36.40260257720962, "o", "r"] -[36.43260257720962, "o", " "] -[36.46260257720962, "o", "s"] -[36.492602577209624, "o", "t"] -[36.522602577209625, "o", "a"] -[36.552602577209626, "o", "t"] -[36.58260257720963, "o", "u"] -[36.61260257720963, "o", "s"] -[36.64260257720963, "o", " "] -[36.67260257720963, "o", "d"] -[36.70260257720963, "o", "e"] -[36.73260257720963, "o", "m"] -[36.762602577209634, "o", "o"] -[36.792602577209635, "o", "/"] -[36.822602577209636, "o", "w"] -[36.85260257720964, "o", "e"] -[36.88260257720964, "o", "a"] -[36.91260257720964, "o", "t"] -[36.94260257720964, "o", "h"] -[36.97260257720964, "o", "e"] -[37.00260257720964, "o", "r"] -[37.032602577209644, "o", "\r\n"] -[37.062602577209645, "o", "$"] -[37.09260257720965, "o", " "] -[37.12260257720965, "o", "s"] -[37.15260257720965, "o", "g"] -[37.18260257720965, "o", "r"] -[37.21260257720965, "o", " "] -[37.24260257720965, "o", "d"] -[37.27260257720965, "o", "i"] -[37.302602577209655, "o", "f"] -[37.332602577209656, "o", "f"] -[37.36260257720966, "o", " "] -[37.39260257720966, "o", "d"] -[37.42260257720966, "o", "e"] -[37.45260257720966, "o", "m"] -[37.48260257720966, "o", "o"] -[37.51260257720966, "o", "/"] -[37.542602577209664, "o", "w"] -[37.572602577209665, "o", "e"] -[37.602602577209666, "o", "a"] -[37.63260257720967, "o", "t"] -[37.66260257720967, "o", "h"] -[37.69260257720967, "o", "e"] -[37.72260257720967, "o", "r"] -[37.75260257720967, "o", "\r\n"] -[37.78260257720967, "o", "\u001b[0m"] -[37.812602577209674, "o", "\r\n"] -[38.02061444282552, "o", "demo/weather: on image 0000000000000000000000000000000000000000000000000000000000000000.\r\n"] -[38.23376494407674, "o", "Between 000000000000 and the current working copy: \r\n"] -[38.23378568649312, "o", "rdu: table added\r\n"] -[38.26378568649312, "o", "\u001b[1m"] -[38.29378568649312, "o", "\u001b[36m"] -[38.323785686493125, "o", "\u001b[91m"] -[38.353785686493126, "o", "$"] -[38.38378568649313, "o", " "] -[38.41378568649313, "o", "\u001b[0m"] -[43.44378568649313, "o", "\u001b[H"] -[43.47378568649313, "o", "\u001b[J"] -[43.50378568649313, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a new image and tag it"] -[43.53378568649313, "o", "\r\n"] -[43.563785686493134, "o", "$"] -[43.593785686493135, "o", " "] -[43.623785686493136, "o", "s"] -[43.65378568649314, "o", "g"] -[43.68378568649314, "o", "r"] -[43.71378568649314, "o", " "] -[43.74378568649314, "o", "c"] -[43.77378568649314, "o", "o"] -[43.80378568649314, "o", "m"] -[43.833785686493144, "o", "m"] -[43.863785686493145, "o", "i"] -[43.893785686493146, "o", "t"] -[43.92378568649315, "o", " "] -[43.95378568649315, "o", "d"] -[43.98378568649315, "o", "e"] -[44.01378568649315, "o", "m"] -[44.04378568649315, "o", "o"] -[44.07378568649315, "o", "/"] -[44.103785686493154, "o", "w"] -[44.133785686493155, "o", "e"] -[44.163785686493156, "o", "a"] -[44.19378568649316, "o", "t"] -[44.22378568649316, "o", "h"] -[44.25378568649316, "o", "e"] -[44.28378568649316, "o", "r"] -[44.31378568649316, "o", "\r\n"] -[44.34378568649316, "o", "$"] -[44.373785686493164, "o", " "] -[44.403785686493165, "o", "s"] -[44.43378568649317, "o", "g"] -[44.46378568649317, "o", "r"] -[44.49378568649317, "o", " "] -[44.52378568649317, "o", "t"] -[44.55378568649317, "o", "a"] -[44.58378568649317, "o", "g"] -[44.61378568649317, "o", " "] -[44.643785686493175, "o", "d"] -[44.673785686493176, "o", "e"] -[44.70378568649318, "o", "m"] -[44.73378568649318, "o", "o"] -[44.76378568649318, "o", "/"] -[44.79378568649318, "o", "w"] -[44.82378568649318, "o", "e"] -[44.85378568649318, "o", "a"] -[44.883785686493184, "o", "t"] -[44.913785686493185, "o", "h"] -[44.943785686493186, "o", "e"] -[44.97378568649319, "o", "r"] -[45.00378568649319, "o", " "] -[45.03378568649319, "o", "i"] -[45.06378568649319, "o", "n"] -[45.09378568649319, "o", "i"] -[45.12378568649319, "o", "t"] -[45.153785686493194, "o", "i"] -[45.183785686493195, "o", "a"] -[45.213785686493196, "o", "l"] -[45.2437856864932, "o", "_"] -[45.2737856864932, "o", "d"] -[45.3037856864932, "o", "a"] -[45.3337856864932, "o", "t"] -[45.3637856864932, "o", "a"] -[45.3937856864932, "o", "\r\n"] -[45.423785686493204, "o", "\u001b[0m"] -[45.453785686493205, "o", "\r\n"] -[45.662773160934734, "o", "Committing demo/weather...\r\n"] -[45.686674385071086, "o", "Processing table rdu\r\n"] -[45.8918071079257, "o", "Committed demo/weather as 029d9c9a6c58.\r\n"] -[46.09856751441984, "o", "Tagged demo/weather:029d9c9a6c58382a96a413329df9b84895fe8917c26bd366018e9665e2e959e0 with initial_data.\r\n"] -[46.12856751441984, "o", "\u001b[1m"] -[46.15856751441984, "o", "\u001b[36m"] -[46.188567514419844, "o", "\u001b[91m"] -[46.218567514419846, "o", "$"] -[46.24856751441985, "o", " "] -[46.27856751441985, "o", "\u001b[0m"] -[51.30856751441985, "o", "\u001b[H"] -[51.33856751441985, "o", "\u001b[J"] -[51.36856751441985, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image"] -[51.39856751441985, "o", "\r\n"] -[51.42856751441985, "o", "$"] -[51.458567514419855, "o", " "] -[51.488567514419856, "o", "s"] -[51.51856751441986, "o", "g"] -[51.54856751441986, "o", "r"] -[51.57856751441986, "o", " "] -[51.60856751441986, "o", "s"] -[51.63856751441986, "o", "h"] -[51.66856751441986, "o", "o"] -[51.698567514419864, "o", "w"] -[51.728567514419865, "o", " "] -[51.758567514419866, "o", "d"] -[51.78856751441987, "o", "e"] -[51.81856751441987, "o", "m"] -[51.84856751441987, "o", "o"] -[51.87856751441987, "o", "/"] -[51.90856751441987, "o", "w"] -[51.93856751441987, "o", "e"] -[51.968567514419874, "o", "a"] -[51.998567514419875, "o", "t"] -[52.028567514419876, "o", "h"] -[52.05856751441988, "o", "e"] -[52.08856751441988, "o", "r"] -[52.11856751441988, "o", ":"] -[52.14856751441988, "o", "i"] -[52.17856751441988, "o", "n"] -[52.20856751441988, "o", "i"] -[52.238567514419884, "o", "t"] -[52.268567514419885, "o", "i"] -[52.29856751441989, "o", "a"] -[52.32856751441989, "o", "l"] -[52.35856751441989, "o", "_"] -[52.38856751441989, "o", "d"] -[52.41856751441989, "o", "a"] -[52.44856751441989, "o", "t"] -[52.47856751441989, "o", "a"] -[52.508567514419894, "o", "\r\n"] -[52.538567514419896, "o", "\u001b[0m"] -[52.5685675144199, "o", "\r\n"] -[52.774378776550634, "o", "Image demo/weather:029d9c9a6c58382a96a413329df9b84895fe8917c26bd366018e9665e2e959e0\r\n"] -[52.774479627609594, "o", "\r\n"] -[52.77456808090244, "o", "Created at 2021-03-12T17:54:44.178117\r\n"] -[52.77644515037571, "o", "Size: 109.61 KiB\r\n"] -[52.77669072151218, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n"] -[52.77690315246616, "o", "\r\n"] -[52.77694582939182, "o", "Tables:\r\n"] -[52.7775564193729, "o", " rdu\r\n"] -[52.8075564193729, "o", "\u001b[1m"] -[52.8375564193729, "o", "\u001b[36m"] -[52.8675564193729, "o", "\u001b[91m"] -[52.897556419372904, "o", "$"] -[52.927556419372905, "o", " "] -[52.95755641937291, "o", "\u001b[0m"] -[57.98755641937291, "o", "\u001b[H"] -[58.01755641937291, "o", "\u001b[J"] -[58.04755641937291, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the table"] -[58.07755641937291, "o", "\r\n"] -[58.10755641937291, "o", "$"] -[58.13755641937291, "o", " "] -[58.167556419372914, "o", "s"] -[58.197556419372916, "o", "g"] -[58.22755641937292, "o", "r"] -[58.25755641937292, "o", " "] -[58.28755641937292, "o", "t"] -[58.31755641937292, "o", "a"] -[58.34755641937292, "o", "b"] -[58.37755641937292, "o", "l"] -[58.40755641937292, "o", "e"] -[58.437556419372925, "o", " "] -[58.467556419372926, "o", "d"] -[58.49755641937293, "o", "e"] -[58.52755641937293, "o", "m"] -[58.55755641937293, "o", "o"] -[58.58755641937293, "o", "/"] -[58.61755641937293, "o", "w"] -[58.64755641937293, "o", "e"] -[58.677556419372934, "o", "a"] -[58.707556419372935, "o", "t"] -[58.737556419372936, "o", "h"] -[58.76755641937294, "o", "e"] -[58.79755641937294, "o", "r"] -[58.82755641937294, "o", ":"] -[58.85755641937294, "o", "i"] -[58.88755641937294, "o", "n"] -[58.91755641937294, "o", "i"] -[58.947556419372944, "o", "t"] -[58.977556419372945, "o", "i"] -[59.007556419372946, "o", "a"] -[59.03755641937295, "o", "l"] -[59.06755641937295, "o", "_"] -[59.09755641937295, "o", "d"] -[59.12755641937295, "o", "a"] -[59.15755641937295, "o", "t"] -[59.18755641937295, "o", "a"] -[59.217556419372954, "o", " "] -[59.247556419372955, "o", "r"] -[59.27755641937296, "o", "d"] -[59.30755641937296, "o", "u"] -[59.33755641937296, "o", "\r\n"] -[59.36755641937296, "o", "\u001b[0m"] -[59.39755641937296, "o", "\r\n"] -[59.60674583435099, "o", "Table demo/weather:029d9c9a6c58382a96a413329df9b84895fe8917c26bd366018e9665e2e959e0/rdu\r\n"] -[59.607028121948645, "o", "\r\n"] -[59.60804521560709, "o", "Size: 109.61 KiB\r\n"] -[59.60886561393778, "o", "Rows: 4633\r\n"] -[59.608885402679846, "o", "Columns: \r\n date (timestamp without time zone, PK)\r\n temperaturemin (numeric)\r\n temperaturemax (numeric)\r\n precipitation (numeric)\r\n snowfall (numeric)\r\n snowdepth (numeric)\r\n avgwindspeed (numeric)\r\n"] -[59.6089075756077, "o", " fastest2minwinddir (integer)\r\n fastest2minwindspeed (numeric)\r\n fastest5secwinddir (integer)\r\n"] -[59.608917589188025, "o", " fastest5secwindspeed (numeric)\r\n fog (character varying)\r\n"] -[59.60892736434977, "o", " fogheavy (character varying)\r\n"] -[59.6089395236973, "o", " mist (character varying)\r\n rain (character varying)\r\n"] -[59.60895144462626, "o", " fogground (character varying)\r\n ice (character varying)\r\n"] -[59.608962888718054, "o", " glaze (character varying)\r\n"] -[59.60897647857706, "o", " drizzle (character varying)\r\n snow (character varying)\r\n"] -[59.60899006843607, "o", " freezingrain (character varying)\r\n smokehaze (character varying)\r\n thunder (character varying)\r\n"] -[59.60900151252787, "o", " highwind (character varying)\r\n"] -[59.609013195038244, "o", " hail (character varying)\r\n blowingsnow (character varying)\r\n"] -[59.60902320861857, "o", " dust (character varying)\r\n"] -[59.60903632164042, "o", " freezingfog (character varying)\r\n\r\n"] -[59.60904895782511, "o", "Objects: \r\n"] -[59.60905634880106, "o", " ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] -[59.63905634880106, "o", "\u001b[1m"] -[59.669056348801064, "o", "\u001b[36m"] -[59.699056348801065, "o", "\u001b[91m"] -[59.729056348801066, "o", "$"] -[59.75905634880107, "o", " "] -[59.78905634880107, "o", "\u001b[0m"] -[77.48755641937291, "o", "\u001b[H"] -[77.51755641937291, "o", "\u001b[J"] -[77.54755641937291, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect object metadata"] -[77.57755641937291, "o", "\r\n"] -[77.60755641937291, "o", "$"] -[77.63755641937291, "o", " "] -[77.66755641937291, "o", "s"] -[77.69755641937292, "o", "g"] -[77.72755641937292, "o", "r"] -[77.75755641937292, "o", " "] -[77.78755641937292, "o", "o"] -[77.81755641937292, "o", "b"] -[77.84755641937292, "o", "j"] -[77.87755641937292, "o", "e"] -[77.90755641937292, "o", "c"] -[77.93755641937292, "o", "t"] -[77.96755641937293, "o", " "] -[77.99755641937293, "o", "o"] -[78.02755641937293, "o", "b"] -[78.05755641937293, "o", "7"] -[78.08755641937293, "o", "9"] -[78.11755641937293, "o", "9"] -[78.14755641937293, "o", "c"] -[78.17755641937293, "o", "a"] -[78.20755641937293, "o", "7"] -[78.23755641937294, "o", "6"] -[78.26755641937294, "o", "1"] -[78.29755641937294, "o", "e"] -[78.32755641937294, "o", "a"] -[78.35755641937294, "o", "6"] -[78.38755641937294, "o", "3"] -[78.41755641937294, "o", "8"] -[78.44755641937294, "o", "c"] -[78.47755641937295, "o", "0"] -[78.50755641937295, "o", "d"] -[78.53755641937295, "o", "b"] -[78.56755641937295, "o", "b"] -[78.59755641937295, "o", "4"] -[78.62755641937295, "o", "d"] -[78.65755641937295, "o", "f"] -[78.68755641937295, "o", "3"] -[78.71755641937295, "o", "e"] -[78.74755641937296, "o", "5"] -[78.77755641937296, "o", "9"] -[78.80755641937296, "o", "a"] -[78.83755641937296, "o", "b"] -[78.86755641937296, "o", "6"] -[78.89755641937296, "o", "a"] -[78.92755641937296, "o", "9"] -[78.95755641937296, "o", "9"] -[78.98755641937296, "o", "5"] -[79.01755641937297, "o", "d"] -[79.04755641937297, "o", "8"] -[79.07755641937297, "o", "7"] -[79.10755641937297, "o", "9"] -[79.13755641937297, "o", "9"] -[79.16755641937297, "o", "9"] -[79.19755641937297, "o", "9"] -[79.22755641937297, "o", "0"] -[79.25755641937297, "o", "9"] -[79.28755641937298, "o", "d"] -[79.31755641937298, "o", "0"] -[79.34755641937298, "o", "0"] -[79.37755641937298, "o", "8"] -[79.40755641937298, "o", "a"] -[79.43755641937298, "o", "3"] -[79.46755641937298, "o", "4"] -[79.49755641937298, "o", "9"] -[79.52755641937298, "o", "5"] -[79.55755641937299, "o", "7"] -[79.58755641937299, "o", "1"] -[79.61755641937299, "o", "1"] -[79.64755641937299, "o", "c"] -[79.67755641937299, "o", "9"] -[79.70755641937299, "o", "0"] -[79.73755641937299, "o", "0"] -[79.767556419373, "o", "9"] -[79.797556419373, "o", "f"] -[79.827556419373, "o", "8"] -[79.857556419373, "o", "f"] -[79.887556419373, "o", "\r\n"] -[79.917556419373, "o", "\u001b[0m"] -[79.947556419373, "o", "\r\n"] -[80.15419475555464, "o", "Object ID: ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] -[80.15420739173933, "o", "\r\nNamespace: demo\r\nFormat: FRAG\r\nSize: 109.61 KiB\r\nCreated: 2021-03-12 17:54:44.380528\r\n"] -[80.15471760749861, "o", "Rows inserted: 4633\r\n"] -[80.15472976684615, "o", "Insertion hash: 4b49b5701a582aa5c418238e4bf75c84d0dcd2ec993fb4e7fe1d0dfcf6ef6877\r\nRows deleted: 0\r\nDeletion hash: 0000000000000000000000000000000000000000000000000000000000000000\r\nColumn index:\r\n"] -[80.15493719100996, "o", " fog: ['No', 'Yes']\r\n"] -[80.15494315147444, "o", " ice: ['No', 'Yes']\r\n date: ['2007-01-01 00:00:00', '2019-09-07 00:00:00']\r\n dust: ['No', 'Yes']"] -[80.15516631126448, "o", "\r\n"] -[80.15517441749617, "o", " hail: ['No', 'Yes']\r\n"] -[80.1553930473332, "o", " mist: ['No', 'Yes']\r\n"] -[80.15540616035506, "o", " rain: ['No', 'Yes']\r\n snow: ['No', 'Yes']\r\n"] -[80.1556235980992, "o", " glaze: ['No', 'Yes']\r\n"] -[80.15563098907515, "o", " drizzle: ['No', 'Yes']\r\n thunder: ['No', 'Yes']\r\n"] -[80.15583960533186, "o", " fogheavy: ['No', 'Yes']\r\n"] -[80.15584747314497, "o", " highwind: ['No', 'Yes']\r\n snowfall: ['0.0', '7.01']\r\n"] -[80.15605346679732, "o", " fogground: ['No', 'Yes']\r\n"] -[80.15606324195906, "o", " smokehaze: ['No', 'Yes']\r\n snowdepth: ['0.0', '5.91']\r\n"] -[80.15627114296004, "o", " blowingsnow: ['No', 'Yes']\r\n"] -[80.15627829551741, "o", " freezingfog: ['No', 'Yes']\r\n avgwindspeed: ['0.0', '20.36']\r\n"] -[80.1564814281468, "o", " freezingrain: ['No', 'Yes']\r\n"] -[80.15649024963423, "o", " precipitation: ['0.0', '6.45']\r\n temperaturemax: ['23.2', '105.1']\r\n"] -[80.1567255687718, "o", " temperaturemin: ['4.1', '80.1']\r\n"] -[80.15673415184065, "o", " fastest2minwinddir: [10, 360]\r\n fastest5secwinddir: [10, 360]\r\n fastest2minwindspeed: ['4.92', '59.95']"] -[80.15692655563399, "o", "\r\n"] -[80.15693919181868, "o", " fastest5secwindspeed: ['6.93', '86.12']\r\n"] -[80.15704862594649, "o", "\r\n"] -[80.1762031745915, "o", "Location: created locally\r\n"] -[80.20620317459151, "o", "\u001b[1m"] -[80.23620317459151, "o", "\u001b[36m"] -[80.26620317459151, "o", "\u001b[91m"] -[80.29620317459151, "o", "$"] -[80.32620317459151, "o", " "] -[80.35620317459151, "o", "\u001b[0m"] \ No newline at end of file +[1.263143787384034, "o", "date;temperaturemin;temperaturemax;precipitation;snowfall;snowdepth;avgwindspeed;fastest2minwinddir;fastest2minwindspeed;fastest5secwinddir;fastest5secwindspeed;fog;fogheavy;mist;rain;fogground;ice;glaze;drizzle;snow;freezingrain;smokehaze;thunder;highwind;hail;blowingsnow;dust;freezingfog\r\r\n2007-01-06;50.0;71.1;0.13;0.0;0.0;8.05;230;17.9;230;21.92;Yes;No;Yes;Yes;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-09;30.0;55.0;0.0;0.0;0.0;7.61;280;23.04;270;29.08;No;No;No;Yes;No;No;No;No;No;No;No;No;No;No;No;N"] +[1.2631559467315683, "o", "o;No\r\r\n2007-01-14;50.0;73.9;0.0;0.0;0.0;8.5;230;21.03;230;25.05;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n2007-01-15;57.0;73.9;0.0;0.0;0.0;13.2;230;23.94;230;29.08;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No;No\r\r\n"] +[1.2931559467315683, "o", "\u001b[1m"] +[1.3231559467315683, "o", "\u001b[36m"] +[1.3531559467315684, "o", "\u001b[91m"] +[1.3831559467315684, "o", "$"] +[1.4131559467315684, "o", " "] +[1.4431559467315684, "o", "\u001b[0m"] +[6.473155946731569, "o", "\u001b[H"] +[6.503155946731569, "o", "\u001b[J"] +[6.533155946731569, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the repository"] +[6.56315594673157, "o", "\r\n"] +[6.59315594673157, "o", "$"] +[6.62315594673157, "o", " "] +[6.65315594673157, "o", "s"] +[6.683155946731571, "o", "g"] +[6.713155946731571, "o", "r"] +[6.743155946731571, "o", " "] +[6.773155946731571, "o", "i"] +[6.803155946731572, "o", "n"] +[6.833155946731572, "o", "i"] +[6.863155946731572, "o", "t"] +[6.893155946731572, "o", " "] +[6.923155946731573, "o", "d"] +[6.953155946731573, "o", "e"] +[6.983155946731573, "o", "m"] +[7.013155946731573, "o", "o"] +[7.043155946731574, "o", "/"] +[7.073155946731574, "o", "w"] +[7.103155946731574, "o", "e"] +[7.133155946731574, "o", "a"] +[7.163155946731575, "o", "t"] +[7.193155946731575, "o", "h"] +[7.223155946731575, "o", "e"] +[7.253155946731575, "o", "r"] +[7.283155946731576, "o", "\r\n"] +[7.313155946731576, "o", "$"] +[7.343155946731576, "o", " "] +[7.373155946731576, "o", "s"] +[7.403155946731577, "o", "g"] +[7.433155946731577, "o", "r"] +[7.463155946731577, "o", " "] +[7.493155946731577, "o", "c"] +[7.523155946731578, "o", "s"] +[7.553155946731578, "o", "v"] +[7.583155946731578, "o", " "] +[7.613155946731578, "o", "i"] +[7.643155946731579, "o", "m"] +[7.673155946731579, "o", "p"] +[7.703155946731579, "o", "o"] +[7.733155946731579, "o", "r"] +[7.76315594673158, "o", "t"] +[7.79315594673158, "o", " "] +[7.82315594673158, "o", "-"] +[7.85315594673158, "o", "-"] +[7.883155946731581, "o", "h"] +[7.913155946731581, "o", "e"] +[7.943155946731581, "o", "l"] +[7.973155946731581, "o", "p"] +[8.003155946731582, "o", "\r\n"] +[8.033155946731581, "o", "\u001b[0m"] +[8.06315594673158, "o", "\r\n"] +[8.49641829490663, "o", "Initialized empty repository demo/weather\r\n"] +[8.888166961669935, "o", "Usage: sgr csv import [OPTIONS] REPOSITORY TABLE\r\n\r\n Import a CSV file into a checked-out Splitgraph repository. This doesn't\r\n create a new image, use sgr commit after the import and any adjustments\r\n (e.g. adding primary keys or converting column types) to do so.\r\n\r\n If the target table doesn't exist, this will create a new table.\r\n\r\n If the target table does exist, this will try and patch the new values in\r\n by updating rows that exist in the current table (as per its primary key\r\n constraints) an"] +[8.888187942504896, "o", "d inserting new ones. Rows existing in the current table\r\n but missing in the CSV won't be deleted.\r\n\r\n If -r is passed, the table will instead be deleted and recreated from the\r\n CSV file if it exists.\r\n\r\nOptions:\r\n -f, --file FILENAME File name to import data from, default\r\n stdin.\r\n\r\n -r, --replace Replace the table if it already exists.\r\n -k, --primary-key TEXT Use the specified column(s) as primary\r\n "] +[8.888196763992323, "o", " key(s)\r\n\r\n -t, --override-type ...\r\n Explicitly set types of these columns to PG\r\n types\r\n\r\n --encoding TEXT Encoding to use for the CSV file\r\n --separator TEXT CSV separator to use\r\n --no-header Treats the first line of the CSV as data\r\n rather than a header.\r\n\r\n --skip-schema-check Skips checking that the dataframe is\r\n "] +[8.888211307525648, "o", " compatible with the target schema.\r\n\r\n --help Show this message and exit.\r\n"] +[8.918211307525647, "o", "\u001b[1m"] +[8.948211307525646, "o", "\u001b[36m"] +[8.978211307525646, "o", "\u001b[91m"] +[9.008211307525645, "o", "$"] +[9.038211307525645, "o", " "] +[9.068211307525644, "o", "\u001b[0m"] +[27.47315594673157, "o", "\u001b[H"] +[27.50315594673157, "o", "\u001b[J"] +[27.533155946731572, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the data into a new table (wrapper around COPY FROM STDIN)"] +[27.563155946731573, "o", "\r\n"] +[27.593155946731574, "o", "$"] +[27.623155946731575, "o", " "] +[27.653155946731577, "o", "s"] +[27.683155946731578, "o", "g"] +[27.71315594673158, "o", "r"] +[27.74315594673158, "o", " "] +[27.77315594673158, "o", "c"] +[27.803155946731582, "o", "s"] +[27.833155946731583, "o", "v"] +[27.863155946731585, "o", " "] +[27.893155946731586, "o", "i"] +[27.923155946731587, "o", "m"] +[27.953155946731588, "o", "p"] +[27.98315594673159, "o", "o"] +[28.01315594673159, "o", "r"] +[28.04315594673159, "o", "t"] +[28.073155946731593, "o", " "] +[28.103155946731594, "o", "-"] +[28.133155946731595, "o", "f"] +[28.163155946731596, "o", " "] +[28.193155946731597, "o", "r"] +[28.223155946731598, "o", "d"] +[28.2531559467316, "o", "u"] +[28.2831559467316, "o", "-"] +[28.3131559467316, "o", "w"] +[28.343155946731603, "o", "e"] +[28.373155946731604, "o", "a"] +[28.403155946731605, "o", "t"] +[28.433155946731606, "o", "h"] +[28.463155946731607, "o", "e"] +[28.49315594673161, "o", "r"] +[28.52315594673161, "o", "-"] +[28.55315594673161, "o", "h"] +[28.583155946731612, "o", "i"] +[28.613155946731613, "o", "s"] +[28.643155946731614, "o", "t"] +[28.673155946731615, "o", "o"] +[28.703155946731616, "o", "r"] +[28.733155946731618, "o", "y"] +[28.76315594673162, "o", "."] +[28.79315594673162, "o", "c"] +[28.82315594673162, "o", "s"] +[28.853155946731622, "o", "v"] +[28.883155946731623, "o", " "] +[28.913155946731624, "o", "\\"] +[28.943155946731626, "o", "\r\n "] +[28.973155946731627, "o", "-"] +[29.003155946731628, "o", "k"] +[29.03315594673163, "o", " "] +[29.06315594673163, "o", "d"] +[29.09315594673163, "o", "a"] +[29.123155946731632, "o", "t"] +[29.153155946731633, "o", "e"] +[29.183155946731635, "o", " "] +[29.213155946731636, "o", "\\"] +[29.243155946731637, "o", "\r\n "] +[29.273155946731638, "o", "-"] +[29.30315594673164, "o", "t"] +[29.33315594673164, "o", " "] +[29.36315594673164, "o", "d"] +[29.393155946731643, "o", "a"] +[29.423155946731644, "o", "t"] +[29.453155946731645, "o", "e"] +[29.483155946731646, "o", " "] +[29.513155946731647, "o", "t"] +[29.54315594673165, "o", "i"] +[29.57315594673165, "o", "m"] +[29.60315594673165, "o", "e"] +[29.63315594673165, "o", "s"] +[29.663155946731653, "o", "t"] +[29.693155946731654, "o", "a"] +[29.723155946731655, "o", "m"] +[29.753155946731656, "o", "p"] +[29.783155946731657, "o", " "] +[29.81315594673166, "o", "\\"] +[29.84315594673166, "o", "\r\n "] +[29.87315594673166, "o", "-"] +[29.903155946731662, "o", "-"] +[29.933155946731663, "o", "s"] +[29.963155946731664, "o", "e"] +[29.993155946731665, "o", "p"] +[30.023155946731666, "o", "a"] +[30.053155946731668, "o", "r"] +[30.08315594673167, "o", "a"] +[30.11315594673167, "o", "t"] +[30.14315594673167, "o", "o"] +[30.173155946731672, "o", "r"] +[30.203155946731673, "o", " "] +[30.233155946731674, "o", "\""] +[30.263155946731676, "o", ";"] +[30.293155946731677, "o", "\""] +[30.323155946731678, "o", " "] +[30.35315594673168, "o", "\\"] +[30.38315594673168, "o", "\r\n "] +[30.41315594673168, "o", "d"] +[30.443155946731682, "o", "e"] +[30.473155946731683, "o", "m"] +[30.503155946731685, "o", "o"] +[30.533155946731686, "o", "/"] +[30.563155946731687, "o", "w"] +[30.593155946731688, "o", "e"] +[30.62315594673169, "o", "a"] +[30.65315594673169, "o", "t"] +[30.68315594673169, "o", "h"] +[30.713155946731693, "o", "e"] +[30.743155946731694, "o", "r"] +[30.773155946731695, "o", " "] +[30.803155946731696, "o", "r"] +[30.833155946731697, "o", "d"] +[30.8631559467317, "o", "u"] +[30.8931559467317, "o", "\r\n"] +[30.9231559467317, "o", "\u001b[0m"] +[30.9531559467317, "o", "\r\n"] +[30.983155946731703, "o", "\u001b[1m"] +[31.013155946731704, "o", "\u001b[36m"] +[31.043155946731705, "o", "\u001b[91m"] +[31.073155946731706, "o", "$"] +[31.103155946731707, "o", " "] +[31.13315594673171, "o", "\u001b[0m"] +[36.163155946731706, "o", "\u001b[H"] +[36.19315594673171, "o", "\u001b[J"] +[36.22315594673171, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The data is now in a table but not committed as a Splitgraph image"] +[36.25315594673171, "o", "\r\n"] +[36.28315594673171, "o", "$"] +[36.31315594673171, "o", " "] +[36.34315594673171, "o", "s"] +[36.373155946731714, "o", "g"] +[36.403155946731715, "o", "r"] +[36.433155946731716, "o", " "] +[36.46315594673172, "o", "s"] +[36.49315594673172, "o", "t"] +[36.52315594673172, "o", "a"] +[36.55315594673172, "o", "t"] +[36.58315594673172, "o", "u"] +[36.61315594673172, "o", "s"] +[36.643155946731724, "o", " "] +[36.673155946731725, "o", "d"] +[36.70315594673173, "o", "e"] +[36.73315594673173, "o", "m"] +[36.76315594673173, "o", "o"] +[36.79315594673173, "o", "/"] +[36.82315594673173, "o", "w"] +[36.85315594673173, "o", "e"] +[36.88315594673173, "o", "a"] +[36.913155946731735, "o", "t"] +[36.943155946731736, "o", "h"] +[36.97315594673174, "o", "e"] +[37.00315594673174, "o", "r"] +[37.03315594673174, "o", "\r\n"] +[37.06315594673174, "o", "$"] +[37.09315594673174, "o", " "] +[37.12315594673174, "o", "s"] +[37.153155946731744, "o", "g"] +[37.183155946731745, "o", "r"] +[37.213155946731746, "o", " "] +[37.24315594673175, "o", "d"] +[37.27315594673175, "o", "i"] +[37.30315594673175, "o", "f"] +[37.33315594673175, "o", "f"] +[37.36315594673175, "o", " "] +[37.39315594673175, "o", "d"] +[37.423155946731754, "o", "e"] +[37.453155946731755, "o", "m"] +[37.483155946731756, "o", "o"] +[37.51315594673176, "o", "/"] +[37.54315594673176, "o", "w"] +[37.57315594673176, "o", "e"] +[37.60315594673176, "o", "a"] +[37.63315594673176, "o", "t"] +[37.66315594673176, "o", "h"] +[37.693155946731764, "o", "e"] +[37.723155946731765, "o", "r"] +[37.753155946731766, "o", "\r\n"] +[37.78315594673177, "o", "\u001b[0m"] +[37.81315594673177, "o", "\r\n"] +[38.23989230155965, "o", "demo/weather: on image 0000000000000000000000000000000000000000000000000000000000000000.\r\n"] +[38.671194610595904, "o", "Between 000000000000 and the current working copy: \r\n"] +[38.67122798919698, "o", "rdu: table added\r\n"] +[38.70122798919698, "o", "\u001b[1m"] +[38.73122798919698, "o", "\u001b[36m"] +[38.76122798919698, "o", "\u001b[91m"] +[38.79122798919698, "o", "$"] +[38.821227989196984, "o", " "] +[38.851227989196985, "o", "\u001b[0m"] +[43.88122798919699, "o", "\u001b[H"] +[43.91122798919699, "o", "\u001b[J"] +[43.94122798919699, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a new image and tag it"] +[43.97122798919699, "o", "\r\n"] +[44.00122798919699, "o", "$"] +[44.03122798919699, "o", " "] +[44.06122798919699, "o", "s"] +[44.091227989196994, "o", "g"] +[44.121227989196996, "o", "r"] +[44.151227989197, "o", " "] +[44.181227989197, "o", "c"] +[44.211227989197, "o", "o"] +[44.241227989197, "o", "m"] +[44.271227989197, "o", "m"] +[44.301227989197, "o", "i"] +[44.331227989197004, "o", "t"] +[44.361227989197005, "o", " "] +[44.391227989197006, "o", "d"] +[44.42122798919701, "o", "e"] +[44.45122798919701, "o", "m"] +[44.48122798919701, "o", "o"] +[44.51122798919701, "o", "/"] +[44.54122798919701, "o", "w"] +[44.57122798919701, "o", "e"] +[44.601227989197014, "o", "a"] +[44.631227989197015, "o", "t"] +[44.661227989197016, "o", "h"] +[44.69122798919702, "o", "e"] +[44.72122798919702, "o", "r"] +[44.75122798919702, "o", "\r\n"] +[44.78122798919702, "o", "$"] +[44.81122798919702, "o", " "] +[44.84122798919702, "o", "s"] +[44.871227989197024, "o", "g"] +[44.901227989197025, "o", "r"] +[44.931227989197026, "o", " "] +[44.96122798919703, "o", "t"] +[44.99122798919703, "o", "a"] +[45.02122798919703, "o", "g"] +[45.05122798919703, "o", " "] +[45.08122798919703, "o", "d"] +[45.11122798919703, "o", "e"] +[45.141227989197034, "o", "m"] +[45.171227989197035, "o", "o"] +[45.20122798919704, "o", "/"] +[45.23122798919704, "o", "w"] +[45.26122798919704, "o", "e"] +[45.29122798919704, "o", "a"] +[45.32122798919704, "o", "t"] +[45.35122798919704, "o", "h"] +[45.38122798919704, "o", "e"] +[45.411227989197045, "o", "r"] +[45.441227989197046, "o", " "] +[45.47122798919705, "o", "i"] +[45.50122798919705, "o", "n"] +[45.53122798919705, "o", "i"] +[45.56122798919705, "o", "t"] +[45.59122798919705, "o", "i"] +[45.62122798919705, "o", "a"] +[45.651227989197054, "o", "l"] +[45.681227989197055, "o", "_"] +[45.711227989197056, "o", "d"] +[45.74122798919706, "o", "a"] +[45.77122798919706, "o", "t"] +[45.80122798919706, "o", "a"] +[45.83122798919706, "o", "\r\n"] +[45.86122798919706, "o", "\u001b[0m"] +[45.89122798919706, "o", "\r\n"] +[46.346106319427776, "o", "Committing demo/weather...\r\n"] +[46.368726758957195, "o", "Processing table rdu\r\n"] +[46.60128858566313, "o", "Committed demo/weather as d1908b3b629e.\r\n"] +[47.02576544761686, "o", "Tagged demo/weather:d1908b3b629ec5e4abceb16b3ed75d0e040c6dd126947d6346637e9268f02e7d with initial_data.\r\n"] +[47.055765447616864, "o", "\u001b[1m"] +[47.085765447616865, "o", "\u001b[36m"] +[47.115765447616866, "o", "\u001b[91m"] +[47.14576544761687, "o", "$"] +[47.17576544761687, "o", " "] +[47.20576544761687, "o", "\u001b[0m"] +[52.23576544761687, "o", "\u001b[H"] +[52.26576544761687, "o", "\u001b[J"] +[52.29576544761687, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image"] +[52.325765447616874, "o", "\r\n"] +[52.355765447616875, "o", "$"] +[52.385765447616876, "o", " "] +[52.41576544761688, "o", "s"] +[52.44576544761688, "o", "g"] +[52.47576544761688, "o", "r"] +[52.50576544761688, "o", " "] +[52.53576544761688, "o", "s"] +[52.56576544761688, "o", "h"] +[52.595765447616884, "o", "o"] +[52.625765447616885, "o", "w"] +[52.655765447616886, "o", " "] +[52.68576544761689, "o", "d"] +[52.71576544761689, "o", "e"] +[52.74576544761689, "o", "m"] +[52.77576544761689, "o", "o"] +[52.80576544761689, "o", "/"] +[52.83576544761689, "o", "w"] +[52.865765447616894, "o", "e"] +[52.895765447616895, "o", "a"] +[52.9257654476169, "o", "t"] +[52.9557654476169, "o", "h"] +[52.9857654476169, "o", "e"] +[53.0157654476169, "o", "r"] +[53.0457654476169, "o", ":"] +[53.0757654476169, "o", "i"] +[53.1057654476169, "o", "n"] +[53.135765447616905, "o", "i"] +[53.165765447616906, "o", "t"] +[53.19576544761691, "o", "i"] +[53.22576544761691, "o", "a"] +[53.25576544761691, "o", "l"] +[53.28576544761691, "o", "_"] +[53.31576544761691, "o", "d"] +[53.34576544761691, "o", "a"] +[53.375765447616914, "o", "t"] +[53.405765447616915, "o", "a"] +[53.435765447616916, "o", "\r\n"] +[53.46576544761692, "o", "\u001b[0m"] +[53.49576544761692, "o", "\r\n"] +[53.95041847229038, "o", "Image demo/weather:d1908b3b629ec5e4abceb16b3ed75d0e040c6dd126947d6346637e9268f02e7d\r\n\r\n"] +[53.950438261032446, "o", "Created at 2021-12-17T19:40:03.730174\r\n"] +[53.95191812515293, "o", "Size: 113.04 KiB\r\n"] +[53.95192766189609, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[53.952593326568945, "o", " rdu\r\n"] +[53.982593326568946, "o", "\u001b[1m"] +[54.01259332656895, "o", "\u001b[36m"] +[54.04259332656895, "o", "\u001b[91m"] +[54.07259332656895, "o", "$"] +[54.10259332656895, "o", " "] +[54.13259332656895, "o", "\u001b[0m"] +[59.16259332656895, "o", "\u001b[H"] +[59.192593326568954, "o", "\u001b[J"] +[59.222593326568955, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the table"] +[59.252593326568956, "o", "\r\n"] +[59.28259332656896, "o", "$"] +[59.31259332656896, "o", " "] +[59.34259332656896, "o", "s"] +[59.37259332656896, "o", "g"] +[59.40259332656896, "o", "r"] +[59.43259332656896, "o", " "] +[59.462593326568964, "o", "t"] +[59.492593326568965, "o", "a"] +[59.522593326568966, "o", "b"] +[59.55259332656897, "o", "l"] +[59.58259332656897, "o", "e"] +[59.61259332656897, "o", " "] +[59.64259332656897, "o", "d"] +[59.67259332656897, "o", "e"] +[59.70259332656897, "o", "m"] +[59.732593326568974, "o", "o"] +[59.762593326568975, "o", "/"] +[59.792593326568976, "o", "w"] +[59.82259332656898, "o", "e"] +[59.85259332656898, "o", "a"] +[59.88259332656898, "o", "t"] +[59.91259332656898, "o", "h"] +[59.94259332656898, "o", "e"] +[59.97259332656898, "o", "r"] +[60.002593326568984, "o", ":"] +[60.032593326568986, "o", "i"] +[60.06259332656899, "o", "n"] +[60.09259332656899, "o", "i"] +[60.12259332656899, "o", "t"] +[60.15259332656899, "o", "i"] +[60.18259332656899, "o", "a"] +[60.21259332656899, "o", "l"] +[60.24259332656899, "o", "_"] +[60.272593326568995, "o", "d"] +[60.302593326568996, "o", "a"] +[60.332593326569, "o", "t"] +[60.362593326569, "o", "a"] +[60.392593326569, "o", " "] +[60.422593326569, "o", "r"] +[60.452593326569, "o", "d"] +[60.482593326569, "o", "u"] +[60.512593326569004, "o", "\r\n"] +[60.542593326569005, "o", "\u001b[0m"] +[60.572593326569006, "o", "\r\n"] +[60.99644624710123, "o", "Table demo/weather:d1908b3b629ec5e4abceb16b3ed75d0e040c6dd126947d6346637e9268f02e7d/rdu\r\n\r\n"] +[60.99712574005167, "o", "Size: 113.04 KiB\r\n"] +[60.998167629242346, "o", "Rows: 4633\r\nColumns: \r\n"] +[60.998178119659826, "o", " date (timestamp without time zone, PK)\r\n temperaturemin (numeric)\r\n temperaturemax (numeric)\r\n precipitation (numeric)\r\n snowfall (numeric)\r\n snowdepth (numeric)\r\n avgwindspeed (numeric)\r\n fastest2minwinddir (integer)\r\n fastest2minwindspeed (numeric)\r\n fastest5secwinddir (integer)\r\n fastest5secwindspeed (numeric)\r\n fog (character varying)\r\n fogheavy (character varying)\r\n mist (character varying)\r\n rain (character varying)\r\n"] +[60.998210544586584, "o", " fogground (character varying)\r\n ice (character varying)\r\n"] +[60.99824153900187, "o", " glaze (character varying)\r\n drizzle (character varying)\r\n snow (character varying)\r\n freezingrain (character varying)\r\n smokehaze (character varying)\r\n"] +[60.998255605698034, "o", " thunder (character varying)\r\n highwind (character varying)\r\n hail (character varying)\r\n blowingsnow (character varying)\r\n dust (character varying)\r\n"] +[60.99827444076578, "o", " freezingfog (character varying)\r\n\r\nObjects: \r\n"] +[60.99828540802042, "o", " ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n"] +[61.02828540802042, "o", "\u001b[1m"] +[61.058285408020424, "o", "\u001b[36m"] +[61.088285408020425, "o", "\u001b[91m"] +[61.11828540802043, "o", "$"] +[61.14828540802043, "o", " "] +[61.17828540802043, "o", "\u001b[0m"] +[78.66259332656895, "o", "\u001b[H"] +[78.69259332656895, "o", "\u001b[J"] +[78.72259332656895, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect object metadata"] +[78.75259332656896, "o", "\r\n"] +[78.78259332656896, "o", "$"] +[78.81259332656896, "o", " "] +[78.84259332656896, "o", "s"] +[78.87259332656896, "o", "g"] +[78.90259332656896, "o", "r"] +[78.93259332656896, "o", " "] +[78.96259332656896, "o", "o"] +[78.99259332656897, "o", "b"] +[79.02259332656897, "o", "j"] +[79.05259332656897, "o", "e"] +[79.08259332656897, "o", "c"] +[79.11259332656897, "o", "t"] +[79.14259332656897, "o", " "] +[79.17259332656897, "o", "o"] +[79.20259332656897, "o", "b"] +[79.23259332656897, "o", "7"] +[79.26259332656898, "o", "9"] +[79.29259332656898, "o", "9"] +[79.32259332656898, "o", "c"] +[79.35259332656898, "o", "a"] +[79.38259332656898, "o", "7"] +[79.41259332656898, "o", "6"] +[79.44259332656898, "o", "1"] +[79.47259332656898, "o", "e"] +[79.50259332656898, "o", "a"] +[79.53259332656899, "o", "6"] +[79.56259332656899, "o", "3"] +[79.59259332656899, "o", "8"] +[79.62259332656899, "o", "c"] +[79.65259332656899, "o", "0"] +[79.68259332656899, "o", "d"] +[79.71259332656899, "o", "b"] +[79.742593326569, "o", "b"] +[79.772593326569, "o", "4"] +[79.802593326569, "o", "d"] +[79.832593326569, "o", "f"] +[79.862593326569, "o", "3"] +[79.892593326569, "o", "e"] +[79.922593326569, "o", "5"] +[79.952593326569, "o", "9"] +[79.982593326569, "o", "a"] +[80.012593326569, "o", "b"] +[80.042593326569, "o", "6"] +[80.072593326569, "o", "a"] +[80.102593326569, "o", "9"] +[80.13259332656901, "o", "9"] +[80.16259332656901, "o", "5"] +[80.19259332656901, "o", "d"] +[80.22259332656901, "o", "8"] +[80.25259332656901, "o", "7"] +[80.28259332656901, "o", "9"] +[80.31259332656902, "o", "9"] +[80.34259332656902, "o", "9"] +[80.37259332656902, "o", "9"] +[80.40259332656902, "o", "0"] +[80.43259332656902, "o", "9"] +[80.46259332656902, "o", "d"] +[80.49259332656902, "o", "0"] +[80.52259332656902, "o", "0"] +[80.55259332656902, "o", "8"] +[80.58259332656903, "o", "a"] +[80.61259332656903, "o", "3"] +[80.64259332656903, "o", "4"] +[80.67259332656903, "o", "9"] +[80.70259332656903, "o", "5"] +[80.73259332656903, "o", "7"] +[80.76259332656903, "o", "1"] +[80.79259332656903, "o", "1"] +[80.82259332656903, "o", "c"] +[80.85259332656904, "o", "9"] +[80.88259332656904, "o", "0"] +[80.91259332656904, "o", "0"] +[80.94259332656904, "o", "9"] +[80.97259332656904, "o", "f"] +[81.00259332656904, "o", "8"] +[81.03259332656904, "o", "f"] +[81.06259332656904, "o", "\r\n"] +[81.09259332656904, "o", "\u001b[0m"] +[81.12259332656905, "o", "\r\n"] +[81.53976432800337, "o", "Object ID: ob799ca761ea638c0dbb4df3e59ab6a995d87999909d008a3495711c9009f8f\r\n\r\n"] +[81.53977982521101, "o", "Namespace: demo\r\nFormat: FRAG\r\nSize: 113.04 KiB\r\nCreated: 2021-12-17 19:40:03.942441"] +[81.54035870552107, "o", "\r\nRows inserted: 4633\r\nInsertion hash: 4b49b5701a582aa5c418238e4bf75c84d0dcd2ec993fb4e7fe1d0dfcf6ef6877\r\nRows deleted: 0\r\nDeletion hash: 0000000000000000000000000000000000000000000000000000000000000000\r\nColumn index:\r\n"] +[81.54065172195479, "o", " fog: ['No', 'Yes']\r\n ice: ['No', 'Yes']\r\n date: ['2007-01-01 00:00:00', '2019-09-07 00:00:00']\r\n dust: ['No', 'Yes']\r\n hail: ['No', 'Yes']\r\n mist: ['No', 'Yes']\r\n rain: ['No', 'Yes']\r\n snow: ['No', 'Yes']\r\n glaze: ['No', 'Yes']\r\n drizzle: ['No', 'Yes']\r\n thunder: ['No', 'Yes']\r\n fogheavy: ['No', 'Yes']\r\n highwind: ['No', 'Yes']\r\n snowfall: ['0.0', '7.01']\r\n fogground: ['No', 'Yes']\r\n smokehaze: ['No', 'Yes']\r\n snowdepth: ['0.0', '5.91']\r\n blowingsnow: ['No', 'Yes']\r\n freezingfog: ['No', "] +[81.54066221237227, "o", "'Yes']\r\n avgwindspeed: ['0.0', '20.36']\r\n freezingrain: ['No', 'Yes']\r\n precipitation: ['0.0', '6.45']\r\n temperaturemax: ['23.2', '105.1']\r\n temperaturemin: ['4.1', '80.1']\r\n fastest2minwinddir: [10, 360]\r\n fastest5secwinddir: [10, 360]\r\n fastest2minwindspeed: ['4.92', '59.95']\r\n fastest5secwindspeed: ['6.93', '86.12']\r\n\r\n"] +[81.56389371871992, "o", "Location: created locally\r\n"] +[81.59389371871993, "o", "\u001b[1m"] +[81.62389371871993, "o", "\u001b[36m"] +[81.65389371871993, "o", "\u001b[91m"] +[81.68389371871993, "o", "$"] +[81.71389371871993, "o", " "] +[81.74389371871993, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/latest/import-from-mongo.cast b/content/casts/versioned/latest/import-from-mongo.cast index 3faeebb1..18c2b599 100644 --- a/content/casts/versioned/latest/import-from-mongo.cast +++ b/content/casts/versioned/latest/import-from-mongo.cast @@ -1,4 +1,4 @@ -{"version": 2, "width": 100, "height": 35, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1615571688, "metadata": {"tss": [{"h": "Inspect the config file", "ts": 0.06}, {"h": "Do some preliminary cleanup", "ts": 6.0600000000000005}, {"h": "Mount the Mongo database", "ts": 12.214177150726325}, {"h": "Check the contents of the new table", "ts": 29.21417715072633}, {"h": "Import the data into a new Splitgraph repository", "ts": 36.08989016532905}, {"h": "Alternatively, data can be imported from other databases with Splitfiles", "ts": 44.85391857147235}]}} +{"version": 2, "width": 100, "height": 35, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1639770007, "metadata": {"tss": [{"h": "Inspect the config file", "ts": 0.06}, {"h": "Do some preliminary cleanup", "ts": 6.0600000000000005}, {"h": "Mount the Mongo database", "ts": 12.447155971527106}, {"h": "Check the contents of the new table", "ts": 29.44715597152711}, {"h": "Import the data into a new Splitgraph repository", "ts": 36.550614757537915}, {"h": "Alternatively, data can be imported from other databases with Splitfiles", "ts": 45.08043362617511}]}} [0.03, "o", "\u001b[H"] [0.06, "o", "\u001b[J"] [0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the config file"] @@ -21,13 +21,13 @@ [0.6000000000000003, "o", "\r\n"] [0.6300000000000003, "o", "\u001b[0m"] [0.6600000000000004, "o", "\r\n"] -[0.6612304782867435, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[data_sources]\r\nmongo_fdw=splitgraph.hooks.data_source.MongoDataSource\r\n"] -[0.6912304782867436, "o", "\u001b[1m"] -[0.7212304782867436, "o", "\u001b[36m"] -[0.7512304782867436, "o", "\u001b[91m"] -[0.7812304782867436, "o", "$"] -[0.8112304782867437, "o", " "] -[0.8412304782867437, "o", "\u001b[0m"] +[0.6621536350250248, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[data_sources]\r\nmongo_fdw=splitgraph.hooks.data_source.MongoDataSource\r\n"] +[0.6921536350250248, "o", "\u001b[1m"] +[0.7221536350250248, "o", "\u001b[36m"] +[0.7521536350250249, "o", "\u001b[91m"] +[0.7821536350250249, "o", "$"] +[0.8121536350250249, "o", " "] +[0.8421536350250249, "o", "\u001b[0m"] [6.03, "o", "\u001b[H"] [6.0600000000000005, "o", "\u001b[J"] [6.090000000000001, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Do some preliminary cleanup"] @@ -54,604 +54,616 @@ [6.720000000000006, "o", "\r\n"] [6.750000000000006, "o", "\u001b[0m"] [6.7800000000000065, "o", "\r\n"] -[6.974177150726325, "o", "Postgres schema staging will be deleted.\r\n"] -[7.004177150726325, "o", "\u001b[1m"] -[7.034177150726325, "o", "\u001b[36m"] -[7.064177150726326, "o", "\u001b[91m"] -[7.094177150726326, "o", "$"] -[7.124177150726326, "o", " "] -[7.154177150726326, "o", "\u001b[0m"] -[12.184177150726326, "o", "\u001b[H"] -[12.214177150726325, "o", "\u001b[J"] -[12.244177150726324, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Mount the Mongo database"] -[12.274177150726324, "o", "\r\n"] -[12.304177150726323, "o", "$"] -[12.334177150726322, "o", " "] -[12.364177150726322, "o", "s"] -[12.394177150726321, "o", "g"] -[12.42417715072632, "o", "r"] -[12.45417715072632, "o", " "] -[12.48417715072632, "o", "m"] -[12.514177150726319, "o", "o"] -[12.544177150726318, "o", "u"] -[12.574177150726317, "o", "n"] -[12.604177150726317, "o", "t"] -[12.634177150726316, "o", " "] -[12.664177150726315, "o", "m"] -[12.694177150726315, "o", "o"] -[12.724177150726314, "o", "n"] -[12.754177150726314, "o", "g"] -[12.784177150726313, "o", "o"] -[12.814177150726312, "o", "_"] -[12.844177150726312, "o", "f"] -[12.874177150726311, "o", "d"] -[12.90417715072631, "o", "w"] -[12.93417715072631, "o", " "] -[12.964177150726309, "o", "-"] -[12.994177150726308, "o", "-"] -[13.024177150726308, "o", "h"] -[13.054177150726307, "o", "e"] -[13.084177150726306, "o", "l"] -[13.114177150726306, "o", "p"] -[13.144177150726305, "o", "\r\n"] -[13.174177150726305, "o", "$"] -[13.204177150726304, "o", " "] -[13.234177150726303, "o", "s"] -[13.264177150726303, "o", "g"] -[13.294177150726302, "o", "r"] -[13.324177150726301, "o", " "] -[13.3541771507263, "o", "m"] -[13.3841771507263, "o", "o"] -[13.4141771507263, "o", "u"] -[13.444177150726299, "o", "n"] -[13.474177150726298, "o", "t"] -[13.504177150726298, "o", " "] -[13.534177150726297, "o", "m"] -[13.564177150726296, "o", "o"] -[13.594177150726296, "o", "n"] -[13.624177150726295, "o", "g"] -[13.654177150726294, "o", "o"] -[13.684177150726294, "o", "_"] -[13.714177150726293, "o", "f"] -[13.744177150726292, "o", "d"] -[13.774177150726292, "o", "w"] -[13.804177150726291, "o", " "] -[13.83417715072629, "o", "s"] -[13.86417715072629, "o", "t"] -[13.89417715072629, "o", "a"] -[13.924177150726289, "o", "g"] -[13.954177150726288, "o", "i"] -[13.984177150726287, "o", "n"] -[14.014177150726287, "o", "g"] -[14.044177150726286, "o", " "] -[14.074177150726285, "o", "-"] -[14.104177150726285, "o", "c"] -[14.134177150726284, "o", " "] -[14.164177150726283, "o", "o"] -[14.194177150726283, "o", "r"] -[14.224177150726282, "o", "i"] -[14.254177150726282, "o", "g"] -[14.284177150726281, "o", "i"] -[14.31417715072628, "o", "n"] -[14.34417715072628, "o", "r"] -[14.374177150726279, "o", "o"] -[14.404177150726278, "o", ":"] -[14.434177150726278, "o", "o"] -[14.464177150726277, "o", "r"] -[14.494177150726276, "o", "i"] -[14.524177150726276, "o", "g"] -[14.554177150726275, "o", "i"] -[14.584177150726275, "o", "n"] -[14.614177150726274, "o", "p"] -[14.644177150726273, "o", "a"] -[14.674177150726273, "o", "s"] -[14.704177150726272, "o", "s"] -[14.734177150726271, "o", "@"] -[14.76417715072627, "o", "m"] -[14.79417715072627, "o", "o"] -[14.82417715072627, "o", "n"] -[14.854177150726269, "o", "g"] -[14.884177150726268, "o", "o"] -[14.914177150726267, "o", ":"] -[14.944177150726267, "o", "2"] -[14.974177150726266, "o", "7"] -[15.004177150726266, "o", "0"] -[15.034177150726265, "o", "1"] -[15.064177150726264, "o", "7"] -[15.094177150726264, "o", " "] -[15.124177150726263, "o", "-"] -[15.154177150726262, "o", "o"] -[15.184177150726262, "o", " "] -[15.214177150726261, "o", "'"] -[15.24417715072626, "o", "{"] -[15.27417715072626, "o", "\""] -[15.30417715072626, "o", "t"] -[15.334177150726259, "o", "a"] -[15.364177150726258, "o", "b"] -[15.394177150726257, "o", "l"] -[15.424177150726257, "o", "e"] -[15.454177150726256, "o", "s"] -[15.484177150726255, "o", "\""] -[15.514177150726255, "o", ":"] -[15.544177150726254, "o", " "] -[15.574177150726253, "o", "{"] -[15.604177150726253, "o", "\""] -[15.634177150726252, "o", "s"] -[15.664177150726251, "o", "t"] -[15.69417715072625, "o", "u"] -[15.72417715072625, "o", "f"] -[15.75417715072625, "o", "f"] -[15.784177150726249, "o", "\""] -[15.814177150726248, "o", ":"] -[15.844177150726248, "o", " "] -[15.874177150726247, "o", "{"] -[15.904177150726246, "o", "\r\n "] -[15.934177150726246, "o", "\""] -[15.964177150726245, "o", "o"] -[15.994177150726244, "o", "p"] -[16.024177150726246, "o", "t"] -[16.054177150726247, "o", "i"] -[16.084177150726248, "o", "o"] -[16.11417715072625, "o", "n"] -[16.14417715072625, "o", "s"] -[16.17417715072625, "o", "\""] -[16.204177150726252, "o", ":"] -[16.234177150726254, "o", "\r\n "] -[16.264177150726255, "o", "{"] -[16.294177150726256, "o", "\r\n "] -[16.324177150726257, "o", "\""] -[16.354177150726258, "o", "d"] -[16.38417715072626, "o", "b"] -[16.41417715072626, "o", "\""] -[16.44417715072626, "o", ":"] -[16.474177150726263, "o", " "] -[16.504177150726264, "o", "\""] -[16.534177150726265, "o", "o"] -[16.564177150726266, "o", "r"] -[16.594177150726267, "o", "i"] -[16.62417715072627, "o", "g"] -[16.65417715072627, "o", "i"] -[16.68417715072627, "o", "n"] -[16.71417715072627, "o", "d"] -[16.744177150726273, "o", "b"] -[16.774177150726274, "o", "\""] -[16.804177150726275, "o", ","] -[16.834177150726276, "o", "\r\n "] -[16.864177150726277, "o", "\""] -[16.89417715072628, "o", "c"] -[16.92417715072628, "o", "o"] -[16.95417715072628, "o", "l"] -[16.984177150726282, "o", "l"] -[17.014177150726283, "o", "\""] -[17.044177150726284, "o", ":"] -[17.074177150726285, "o", " "] -[17.104177150726287, "o", "\""] -[17.134177150726288, "o", "s"] -[17.16417715072629, "o", "t"] -[17.19417715072629, "o", "u"] -[17.22417715072629, "o", "f"] -[17.254177150726292, "o", "f"] -[17.284177150726293, "o", "\""] -[17.314177150726294, "o", "\r\n "] -[17.344177150726296, "o", "}"] -[17.374177150726297, "o", ","] -[17.404177150726298, "o", "\r\n "] -[17.4341771507263, "o", "\""] -[17.4641771507263, "o", "s"] -[17.4941771507263, "o", "c"] -[17.524177150726302, "o", "h"] -[17.554177150726304, "o", "e"] -[17.584177150726305, "o", "m"] -[17.614177150726306, "o", "a"] -[17.644177150726307, "o", "\""] -[17.674177150726308, "o", ":"] -[17.70417715072631, "o", " "] -[17.73417715072631, "o", "{"] -[17.76417715072631, "o", "\r\n "] -[17.794177150726313, "o", "\""] -[17.824177150726314, "o", "n"] -[17.854177150726315, "o", "a"] -[17.884177150726316, "o", "m"] -[17.914177150726317, "o", "e"] -[17.94417715072632, "o", "\""] -[17.97417715072632, "o", ":"] -[18.00417715072632, "o", " "] -[18.03417715072632, "o", "\""] -[18.064177150726323, "o", "t"] -[18.094177150726324, "o", "e"] -[18.124177150726325, "o", "x"] -[18.154177150726326, "o", "t"] -[18.184177150726327, "o", "\""] -[18.21417715072633, "o", ","] -[18.24417715072633, "o", "\r\n "] -[18.27417715072633, "o", "\""] -[18.304177150726332, "o", "d"] -[18.334177150726333, "o", "u"] -[18.364177150726334, "o", "r"] -[18.394177150726335, "o", "a"] -[18.424177150726337, "o", "t"] -[18.454177150726338, "o", "i"] -[18.48417715072634, "o", "o"] -[18.51417715072634, "o", "n"] -[18.54417715072634, "o", "\""] -[18.574177150726342, "o", ":"] -[18.604177150726343, "o", " "] -[18.634177150726345, "o", "\""] -[18.664177150726346, "o", "n"] -[18.694177150726347, "o", "u"] -[18.724177150726348, "o", "m"] -[18.75417715072635, "o", "e"] -[18.78417715072635, "o", "r"] -[18.81417715072635, "o", "i"] -[18.844177150726352, "o", "c"] -[18.874177150726354, "o", "\""] -[18.904177150726355, "o", ","] -[18.934177150726356, "o", "\r\n "] -[18.964177150726357, "o", "\""] -[18.994177150726358, "o", "h"] -[19.02417715072636, "o", "a"] -[19.05417715072636, "o", "p"] -[19.08417715072636, "o", "p"] -[19.114177150726363, "o", "y"] -[19.144177150726364, "o", "\""] -[19.174177150726365, "o", ":"] -[19.204177150726366, "o", " "] -[19.234177150726367, "o", "\""] -[19.26417715072637, "o", "b"] -[19.29417715072637, "o", "o"] -[19.32417715072637, "o", "o"] -[19.354177150726372, "o", "l"] -[19.384177150726373, "o", "e"] -[19.414177150726374, "o", "a"] -[19.444177150726375, "o", "n"] -[19.474177150726376, "o", "\""] -[19.504177150726377, "o", "}"] -[19.53417715072638, "o", "}"] -[19.56417715072638, "o", "}"] -[19.59417715072638, "o", "}"] -[19.624177150726382, "o", "'"] -[19.654177150726383, "o", "\r\n"] -[19.684177150726384, "o", "\u001b[0m"] -[19.714177150726385, "o", "\r\n"] -[19.886630554199286, "o", "Usage: sgr mount mongo_fdw [OPTIONS] SCHEMA\r\n\r\n Mount a Mongo database.\r\n\r\n Mounts one or more collections on a remote Mongo database as a set of\r\n foreign tables locally.\r\n\r\nOptions:\r\n -c, --connection TEXT Connection string in the form\r\n username:password@server:port\r\n\r\n -o, --handler-options JSON JSON-encoded dictionary or @filename.json with\r\n handler options:\r\n \r\n tables: A di"] -[19.886642236709662, "o", "ctionary of form { \"table_name\":\r\n { \"schema\": {\"col1\": \"type1\"...},\r\n \"options\": {\"db\": , \"coll\":\r\n } } }\r\n\r\n --help Show this message and exit.\r\n"] -[20.126186389923163, "o", "Mounting table stuff\r\n"] -[20.156186389923164, "o", "\u001b[1m"] -[20.186186389923165, "o", "\u001b[36m"] -[20.216186389923166, "o", "\u001b[91m"] -[20.246186389923167, "o", "$"] -[20.27618638992317, "o", " "] -[20.30618638992317, "o", "\u001b[0m"] -[29.184177150726327, "o", "\u001b[H"] -[29.21417715072633, "o", "\u001b[J"] -[29.24417715072633, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the contents of the new table"] -[29.27417715072633, "o", "\r\n"] -[29.304177150726332, "o", "$"] -[29.334177150726333, "o", " "] -[29.364177150726334, "o", "s"] -[29.394177150726335, "o", "g"] -[29.424177150726337, "o", "r"] -[29.454177150726338, "o", " "] -[29.48417715072634, "o", "s"] -[29.51417715072634, "o", "q"] -[29.54417715072634, "o", "l"] -[29.574177150726342, "o", " "] -[29.604177150726343, "o", "-"] -[29.634177150726345, "o", "s"] -[29.664177150726346, "o", " "] -[29.694177150726347, "o", "s"] -[29.724177150726348, "o", "t"] -[29.75417715072635, "o", "a"] -[29.78417715072635, "o", "g"] -[29.81417715072635, "o", "i"] -[29.844177150726352, "o", "n"] -[29.874177150726354, "o", "g"] -[29.904177150726355, "o", " "] -[29.934177150726356, "o", "\""] -[29.964177150726357, "o", "S"] -[29.994177150726358, "o", "E"] -[30.02417715072636, "o", "L"] -[30.05417715072636, "o", "E"] -[30.08417715072636, "o", "C"] -[30.114177150726363, "o", "T"] -[30.144177150726364, "o", " "] -[30.174177150726365, "o", "*"] -[30.204177150726366, "o", " "] -[30.234177150726367, "o", "F"] -[30.26417715072637, "o", "R"] -[30.29417715072637, "o", "O"] -[30.32417715072637, "o", "M"] -[30.354177150726372, "o", " "] -[30.384177150726373, "o", "s"] -[30.414177150726374, "o", "t"] -[30.444177150726375, "o", "u"] -[30.474177150726376, "o", "f"] -[30.504177150726377, "o", "f"] -[30.53417715072638, "o", "\""] -[30.56417715072638, "o", "\r\n"] -[30.59417715072638, "o", "\u001b[0m"] -[30.624177150726382, "o", "\r\n"] -[30.849890165329043, "o", "Alex 12 False 604baaf461255d21c30917d4\r\nJames 2 True 604baaf461255d21c30917d5\r\nAlice 98765 True 604baaf461255d21c30917d6\r\n"] -[30.879890165329044, "o", "\u001b[1m"] -[30.909890165329045, "o", "\u001b[36m"] -[30.939890165329047, "o", "\u001b[91m"] -[30.969890165329048, "o", "$"] -[30.99989016532905, "o", " "] -[31.02989016532905, "o", "\u001b[0m"] -[36.05989016532905, "o", "\u001b[H"] -[36.08989016532905, "o", "\u001b[J"] -[36.11989016532905, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Import the data into a new Splitgraph repository"] -[36.149890165329055, "o", "\r\n"] -[36.179890165329056, "o", "$"] -[36.20989016532906, "o", " "] -[36.23989016532906, "o", "s"] -[36.26989016532906, "o", "g"] -[36.29989016532906, "o", "r"] -[36.32989016532906, "o", " "] -[36.35989016532906, "o", "i"] -[36.389890165329064, "o", "m"] -[36.419890165329065, "o", "p"] -[36.449890165329066, "o", "o"] -[36.47989016532907, "o", "r"] -[36.50989016532907, "o", "t"] -[36.53989016532907, "o", " "] -[36.56989016532907, "o", "s"] -[36.59989016532907, "o", "t"] -[36.62989016532907, "o", "a"] -[36.659890165329074, "o", "g"] -[36.689890165329075, "o", "i"] -[36.719890165329076, "o", "n"] -[36.74989016532908, "o", "g"] -[36.77989016532908, "o", " "] -[36.80989016532908, "o", "\""] -[36.83989016532908, "o", "S"] -[36.86989016532908, "o", "E"] -[36.89989016532908, "o", "L"] -[36.929890165329084, "o", "E"] -[36.959890165329085, "o", "C"] -[36.989890165329086, "o", "T"] -[37.01989016532909, "o", " "] -[37.04989016532909, "o", "n"] -[37.07989016532909, "o", "a"] -[37.10989016532909, "o", "m"] -[37.13989016532909, "o", "e"] -[37.16989016532909, "o", ","] -[37.199890165329094, "o", " "] -[37.229890165329095, "o", "d"] -[37.2598901653291, "o", "u"] -[37.2898901653291, "o", "r"] -[37.3198901653291, "o", "a"] -[37.3498901653291, "o", "t"] -[37.3798901653291, "o", "i"] -[37.4098901653291, "o", "o"] -[37.4398901653291, "o", "n"] -[37.469890165329105, "o", ","] -[37.499890165329106, "o", " "] -[37.52989016532911, "o", "h"] -[37.55989016532911, "o", "a"] -[37.58989016532911, "o", "p"] -[37.61989016532911, "o", "p"] -[37.64989016532911, "o", "y"] -[37.67989016532911, "o", " "] -[37.709890165329114, "o", "F"] -[37.739890165329115, "o", "R"] -[37.769890165329116, "o", "O"] -[37.79989016532912, "o", "M"] -[37.82989016532912, "o", " "] -[37.85989016532912, "o", "s"] -[37.88989016532912, "o", "t"] -[37.91989016532912, "o", "u"] -[37.94989016532912, "o", "f"] -[37.979890165329124, "o", "f"] -[38.009890165329125, "o", "\""] -[38.039890165329126, "o", " "] -[38.06989016532913, "o", "m"] -[38.09989016532913, "o", "y"] -[38.12989016532913, "o", "/"] -[38.15989016532913, "o", "r"] -[38.18989016532913, "o", "e"] -[38.21989016532913, "o", "p"] -[38.249890165329134, "o", "o"] -[38.279890165329135, "o", "s"] -[38.309890165329136, "o", "i"] -[38.33989016532914, "o", "t"] -[38.36989016532914, "o", "o"] -[38.39989016532914, "o", "r"] -[38.42989016532914, "o", "y"] -[38.45989016532914, "o", " "] -[38.48989016532914, "o", "s"] -[38.519890165329144, "o", "t"] -[38.549890165329145, "o", "u"] -[38.57989016532915, "o", "f"] -[38.60989016532915, "o", "f"] -[38.63989016532915, "o", "\r\n"] -[38.66989016532915, "o", "\u001b[0m"] -[38.69989016532915, "o", "\r\n"] -[39.36345603942888, "o", "Processing table sg_tmp_ac9badf4a3c36049e1f0c299c680bf6a\r\n"] -[39.61391857147234, "o", "my/repository:stuff has been imported from staging:SELECT name, duration, happy FROM stuff\r\n"] -[39.64391857147234, "o", "\u001b[1m"] -[39.67391857147234, "o", "\u001b[36m"] -[39.70391857147234, "o", "\u001b[91m"] -[39.733918571472344, "o", "$"] -[39.763918571472345, "o", " "] -[39.79391857147235, "o", "\u001b[0m"] -[44.82391857147235, "o", "\u001b[H"] -[44.85391857147235, "o", "\u001b[J"] -[44.88391857147235, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Alternatively, data can be imported from other databases with Splitfiles"] -[44.91391857147235, "o", "\r\n"] -[44.94391857147235, "o", "$"] -[44.97391857147235, "o", " "] -[45.003918571472354, "o", "c"] -[45.033918571472356, "o", "a"] -[45.06391857147236, "o", "t"] -[45.09391857147236, "o", " "] -[45.12391857147236, "o", "m"] -[45.15391857147236, "o", "o"] -[45.18391857147236, "o", "n"] -[45.21391857147236, "o", "g"] -[45.24391857147236, "o", "o"] -[45.273918571472365, "o", "_"] -[45.303918571472366, "o", "i"] -[45.33391857147237, "o", "m"] -[45.36391857147237, "o", "p"] -[45.39391857147237, "o", "o"] -[45.42391857147237, "o", "r"] -[45.45391857147237, "o", "t"] -[45.48391857147237, "o", "."] -[45.513918571472374, "o", "s"] -[45.543918571472375, "o", "p"] -[45.573918571472376, "o", "l"] -[45.60391857147238, "o", "i"] -[45.63391857147238, "o", "t"] -[45.66391857147238, "o", "f"] -[45.69391857147238, "o", "i"] -[45.72391857147238, "o", "l"] -[45.75391857147238, "o", "e"] -[45.783918571472384, "o", "\r\n"] -[45.813918571472385, "o", "$"] -[45.843918571472386, "o", " "] -[45.87391857147239, "o", "s"] -[45.90391857147239, "o", "g"] -[45.93391857147239, "o", "r"] -[45.96391857147239, "o", " "] -[45.99391857147239, "o", "b"] -[46.02391857147239, "o", "u"] -[46.053918571472394, "o", "i"] -[46.083918571472395, "o", "l"] -[46.1139185714724, "o", "d"] -[46.1439185714724, "o", " "] -[46.1739185714724, "o", "m"] -[46.2039185714724, "o", "o"] -[46.2339185714724, "o", "n"] -[46.2639185714724, "o", "g"] -[46.2939185714724, "o", "o"] -[46.323918571472404, "o", "_"] -[46.353918571472406, "o", "i"] -[46.38391857147241, "o", "m"] -[46.41391857147241, "o", "p"] -[46.44391857147241, "o", "o"] -[46.47391857147241, "o", "r"] -[46.50391857147241, "o", "t"] -[46.53391857147241, "o", "."] -[46.56391857147241, "o", "s"] -[46.593918571472415, "o", "p"] -[46.623918571472416, "o", "l"] -[46.65391857147242, "o", "i"] -[46.68391857147242, "o", "t"] -[46.71391857147242, "o", "f"] -[46.74391857147242, "o", "i"] -[46.77391857147242, "o", "l"] -[46.80391857147242, "o", "e"] -[46.833918571472424, "o", "\r\n"] -[46.863918571472425, "o", "\u001b[0m"] -[46.893918571472426, "o", "\r\n"] -[46.895460901260634, "o", "FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"tables\": {\"stuff\": {\r\n \"options\": {\r\n \"db\": \"origindb\",\r\n \"coll\": \"stuff\"\r\n },\r\n \"schema\": {\r\n \"name\": \"text\",\r\n \"duration\": \"numeric\",\r\n \"happy\": \"boolean\"}}}}'\r\n IMPORT {SELECT * FROM stuff} AS stuff\r\n"] -[47.09044795990016, "o", "Executing Splitfile mongo_import.splitfile with arguments {}\r\n"] -[47.124703226089736, "o", "\u001b[1m\r\nStep 1/1 : FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"t...\u001b[0m\r\n"] -[47.19425731658961, "o", "Mounting table stuff\r\n"] -[47.66024499893214, "o", "Processing table sg_tmp_a954e0d27023c6df07255a3f97c3b6d8\r\n"] -[47.94563585281398, "o", "Successfully built mongo_import:22767642b808.\r\n"] -[47.97563585281398, "o", "\u001b[1m"] -[48.00563585281398, "o", "\u001b[36m"] -[48.03563585281398, "o", "\u001b[91m"] -[48.06563585281398, "o", "$"] -[48.095635852813984, "o", " "] -[48.125635852813986, "o", "\u001b[0m"] -[54.82391857147235, "o", "\u001b[H"] -[54.85391857147235, "o", "\u001b[J"] -[54.88391857147235, "o", "\u001b[1m"] -[54.91391857147235, "o", "\u001b[36m"] -[54.94391857147235, "o", "\u001b[91m"] -[54.97391857147235, "o", "$"] -[55.003918571472354, "o", " "] -[55.033918571472356, "o", "s"] -[55.06391857147236, "o", "g"] -[55.09391857147236, "o", "r"] -[55.12391857147236, "o", " "] -[55.15391857147236, "o", "s"] -[55.18391857147236, "o", "h"] -[55.21391857147236, "o", "o"] -[55.24391857147236, "o", "w"] -[55.273918571472365, "o", " "] -[55.303918571472366, "o", "m"] -[55.33391857147237, "o", "o"] -[55.36391857147237, "o", "n"] -[55.39391857147237, "o", "g"] -[55.42391857147237, "o", "o"] -[55.45391857147237, "o", "_"] -[55.48391857147237, "o", "i"] -[55.513918571472374, "o", "m"] -[55.543918571472375, "o", "p"] -[55.573918571472376, "o", "o"] -[55.60391857147238, "o", "r"] -[55.63391857147238, "o", "t"] -[55.66391857147238, "o", ":"] -[55.69391857147238, "o", "l"] -[55.72391857147238, "o", "a"] -[55.75391857147238, "o", "t"] -[55.783918571472384, "o", "e"] -[55.813918571472385, "o", "s"] -[55.843918571472386, "o", "t"] -[55.87391857147239, "o", "\r\n"] -[55.90391857147239, "o", "$"] -[55.93391857147239, "o", " "] -[55.96391857147239, "o", "s"] -[55.99391857147239, "o", "g"] -[56.02391857147239, "o", "r"] -[56.053918571472394, "o", " "] -[56.083918571472395, "o", "s"] -[56.1139185714724, "o", "q"] -[56.1439185714724, "o", "l"] -[56.1739185714724, "o", " "] -[56.2039185714724, "o", "-"] -[56.2339185714724, "o", "s"] -[56.2639185714724, "o", " "] -[56.2939185714724, "o", "m"] -[56.323918571472404, "o", "o"] -[56.353918571472406, "o", "n"] -[56.38391857147241, "o", "g"] -[56.41391857147241, "o", "o"] -[56.44391857147241, "o", "_"] -[56.47391857147241, "o", "i"] -[56.50391857147241, "o", "m"] -[56.53391857147241, "o", "p"] -[56.56391857147241, "o", "o"] -[56.593918571472415, "o", "r"] -[56.623918571472416, "o", "t"] -[56.65391857147242, "o", " "] -[56.68391857147242, "o", "\""] -[56.71391857147242, "o", "S"] -[56.74391857147242, "o", "E"] -[56.77391857147242, "o", "L"] -[56.80391857147242, "o", "E"] -[56.833918571472424, "o", "C"] -[56.863918571472425, "o", "T"] -[56.893918571472426, "o", " "] -[56.92391857147243, "o", "*"] -[56.95391857147243, "o", " "] -[56.98391857147243, "o", "F"] -[57.01391857147243, "o", "R"] -[57.04391857147243, "o", "O"] -[57.07391857147243, "o", "M"] -[57.103918571472434, "o", " "] -[57.133918571472435, "o", "s"] -[57.163918571472436, "o", "t"] -[57.19391857147244, "o", "u"] -[57.22391857147244, "o", "f"] -[57.25391857147244, "o", "f"] -[57.28391857147244, "o", "\""] -[57.31391857147244, "o", "\r\n"] -[57.34391857147244, "o", "\u001b[0m"] -[57.373918571472444, "o", "\r\n"] -[57.56587604522733, "o", "Image mongo_import:22767642b8080c9e60b87e36928196215451af3bb2f19acbdeda345c6613f11c\r\n"] -[57.56619433403043, "o", "Importing 1 table from mongo_fdw_tmp_staging\r\nCreated at 2021-03-12T17:55:07.870200\r\n"] -[57.56722907066373, "o", "Size: 589.00 B\r\n"] -[57.56725982666043, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] -[57.567827024460115, "o", " stuff\r\n"] -[57.75967506408719, "o", "Alex 12 False 604baaf461255d21c30917d4\r\nAlice 98765 True 604baaf461255d21c30917d6\r\nJames 2 True 604baaf461255d21c30917d5\r\n"] -[57.78967506408719, "o", "\u001b[1m"] -[57.81967506408719, "o", "\u001b[36m"] -[57.849675064087194, "o", "\u001b[91m"] -[57.879675064087195, "o", "$"] -[57.909675064087196, "o", " "] -[57.9396750640872, "o", "\u001b[0m"] \ No newline at end of file +[7.207155971527106, "o", "Postgres schema staging will be deleted.\r\n"] +[7.237155971527106, "o", "\u001b[1m"] +[7.267155971527107, "o", "\u001b[36m"] +[7.297155971527107, "o", "\u001b[91m"] +[7.327155971527107, "o", "$"] +[7.357155971527107, "o", " "] +[7.387155971527108, "o", "\u001b[0m"] +[12.417155971527107, "o", "\u001b[H"] +[12.447155971527106, "o", "\u001b[J"] +[12.477155971527106, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Mount the Mongo database"] +[12.507155971527105, "o", "\r\n"] +[12.537155971527104, "o", "$"] +[12.567155971527104, "o", " "] +[12.597155971527103, "o", "s"] +[12.627155971527102, "o", "g"] +[12.657155971527102, "o", "r"] +[12.687155971527101, "o", " "] +[12.7171559715271, "o", "m"] +[12.7471559715271, "o", "o"] +[12.7771559715271, "o", "u"] +[12.807155971527099, "o", "n"] +[12.837155971527098, "o", "t"] +[12.867155971527097, "o", " "] +[12.897155971527097, "o", "m"] +[12.927155971527096, "o", "o"] +[12.957155971527095, "o", "n"] +[12.987155971527095, "o", "g"] +[13.017155971527094, "o", "o"] +[13.047155971527093, "o", "_"] +[13.077155971527093, "o", "f"] +[13.107155971527092, "o", "d"] +[13.137155971527092, "o", "w"] +[13.167155971527091, "o", " "] +[13.19715597152709, "o", "-"] +[13.22715597152709, "o", "-"] +[13.257155971527089, "o", "h"] +[13.287155971527088, "o", "e"] +[13.317155971527088, "o", "l"] +[13.347155971527087, "o", "p"] +[13.377155971527086, "o", "\r\n"] +[13.407155971527086, "o", "$"] +[13.437155971527085, "o", " "] +[13.467155971527085, "o", "s"] +[13.497155971527084, "o", "g"] +[13.527155971527083, "o", "r"] +[13.557155971527083, "o", " "] +[13.587155971527082, "o", "m"] +[13.617155971527081, "o", "o"] +[13.64715597152708, "o", "u"] +[13.67715597152708, "o", "n"] +[13.70715597152708, "o", "t"] +[13.737155971527079, "o", " "] +[13.767155971527078, "o", "m"] +[13.797155971527078, "o", "o"] +[13.827155971527077, "o", "n"] +[13.857155971527076, "o", "g"] +[13.887155971527076, "o", "o"] +[13.917155971527075, "o", "_"] +[13.947155971527074, "o", "f"] +[13.977155971527074, "o", "d"] +[14.007155971527073, "o", "w"] +[14.037155971527072, "o", " "] +[14.067155971527072, "o", "s"] +[14.097155971527071, "o", "t"] +[14.12715597152707, "o", "a"] +[14.15715597152707, "o", "g"] +[14.18715597152707, "o", "i"] +[14.217155971527069, "o", "n"] +[14.247155971527068, "o", "g"] +[14.277155971527067, "o", " "] +[14.307155971527067, "o", "-"] +[14.337155971527066, "o", "c"] +[14.367155971527065, "o", " "] +[14.397155971527065, "o", "o"] +[14.427155971527064, "o", "r"] +[14.457155971527063, "o", "i"] +[14.487155971527063, "o", "g"] +[14.517155971527062, "o", "i"] +[14.547155971527062, "o", "n"] +[14.57715597152706, "o", "r"] +[14.60715597152706, "o", "o"] +[14.63715597152706, "o", ":"] +[14.667155971527059, "o", "o"] +[14.697155971527058, "o", "r"] +[14.727155971527058, "o", "i"] +[14.757155971527057, "o", "g"] +[14.787155971527056, "o", "i"] +[14.817155971527056, "o", "n"] +[14.847155971527055, "o", "p"] +[14.877155971527054, "o", "a"] +[14.907155971527054, "o", "s"] +[14.937155971527053, "o", "s"] +[14.967155971527053, "o", "@"] +[14.997155971527052, "o", "m"] +[15.027155971527051, "o", "o"] +[15.05715597152705, "o", "n"] +[15.08715597152705, "o", "g"] +[15.11715597152705, "o", "o"] +[15.147155971527049, "o", ":"] +[15.177155971527048, "o", "2"] +[15.207155971527047, "o", "7"] +[15.237155971527047, "o", "0"] +[15.267155971527046, "o", "1"] +[15.297155971527046, "o", "7"] +[15.327155971527045, "o", " "] +[15.357155971527044, "o", "-"] +[15.387155971527044, "o", "o"] +[15.417155971527043, "o", " "] +[15.447155971527042, "o", "'"] +[15.477155971527042, "o", "{"] +[15.507155971527041, "o", "\""] +[15.53715597152704, "o", "t"] +[15.56715597152704, "o", "a"] +[15.59715597152704, "o", "b"] +[15.627155971527039, "o", "l"] +[15.657155971527038, "o", "e"] +[15.687155971527037, "o", "s"] +[15.717155971527037, "o", "\""] +[15.747155971527036, "o", ":"] +[15.777155971527035, "o", " "] +[15.807155971527035, "o", "{"] +[15.837155971527034, "o", "\""] +[15.867155971527033, "o", "s"] +[15.897155971527033, "o", "t"] +[15.927155971527032, "o", "u"] +[15.957155971527031, "o", "f"] +[15.98715597152703, "o", "f"] +[16.017155971527032, "o", "\""] +[16.047155971527033, "o", ":"] +[16.077155971527034, "o", " "] +[16.107155971527035, "o", "{"] +[16.137155971527037, "o", "\r\n "] +[16.167155971527038, "o", "\""] +[16.19715597152704, "o", "o"] +[16.22715597152704, "o", "p"] +[16.25715597152704, "o", "t"] +[16.287155971527042, "o", "i"] +[16.317155971527043, "o", "o"] +[16.347155971527044, "o", "n"] +[16.377155971527046, "o", "s"] +[16.407155971527047, "o", "\""] +[16.437155971527048, "o", ":"] +[16.46715597152705, "o", "\r\n "] +[16.49715597152705, "o", "{"] +[16.52715597152705, "o", "\r\n "] +[16.557155971527052, "o", "\""] +[16.587155971527054, "o", "d"] +[16.617155971527055, "o", "a"] +[16.647155971527056, "o", "t"] +[16.677155971527057, "o", "a"] +[16.707155971527058, "o", "b"] +[16.73715597152706, "o", "a"] +[16.76715597152706, "o", "s"] +[16.79715597152706, "o", "e"] +[16.827155971527063, "o", "\""] +[16.857155971527064, "o", ":"] +[16.887155971527065, "o", " "] +[16.917155971527066, "o", "\""] +[16.947155971527067, "o", "o"] +[16.97715597152707, "o", "r"] +[17.00715597152707, "o", "i"] +[17.03715597152707, "o", "g"] +[17.06715597152707, "o", "i"] +[17.097155971527073, "o", "n"] +[17.127155971527074, "o", "d"] +[17.157155971527075, "o", "b"] +[17.187155971527076, "o", "\""] +[17.217155971527077, "o", ","] +[17.24715597152708, "o", "\r\n "] +[17.27715597152708, "o", "\""] +[17.30715597152708, "o", "c"] +[17.337155971527082, "o", "o"] +[17.367155971527083, "o", "l"] +[17.397155971527084, "o", "l"] +[17.427155971527085, "o", "e"] +[17.457155971527087, "o", "c"] +[17.487155971527088, "o", "t"] +[17.51715597152709, "o", "i"] +[17.54715597152709, "o", "o"] +[17.57715597152709, "o", "n"] +[17.607155971527092, "o", "\""] +[17.637155971527093, "o", ":"] +[17.667155971527094, "o", " "] +[17.697155971527096, "o", "\""] +[17.727155971527097, "o", "s"] +[17.757155971527098, "o", "t"] +[17.7871559715271, "o", "u"] +[17.8171559715271, "o", "f"] +[17.8471559715271, "o", "f"] +[17.877155971527102, "o", "\""] +[17.907155971527104, "o", "\r\n "] +[17.937155971527105, "o", "}"] +[17.967155971527106, "o", ","] +[17.997155971527107, "o", "\r\n "] +[18.027155971527108, "o", "\""] +[18.05715597152711, "o", "s"] +[18.08715597152711, "o", "c"] +[18.11715597152711, "o", "h"] +[18.147155971527113, "o", "e"] +[18.177155971527114, "o", "m"] +[18.207155971527115, "o", "a"] +[18.237155971527116, "o", "\""] +[18.267155971527117, "o", ":"] +[18.29715597152712, "o", " "] +[18.32715597152712, "o", "{"] +[18.35715597152712, "o", "\r\n "] +[18.387155971527122, "o", "\""] +[18.417155971527123, "o", "n"] +[18.447155971527124, "o", "a"] +[18.477155971527125, "o", "m"] +[18.507155971527126, "o", "e"] +[18.537155971527127, "o", "\""] +[18.56715597152713, "o", ":"] +[18.59715597152713, "o", " "] +[18.62715597152713, "o", "\""] +[18.657155971527132, "o", "t"] +[18.687155971527133, "o", "e"] +[18.717155971527134, "o", "x"] +[18.747155971527135, "o", "t"] +[18.777155971527137, "o", "\""] +[18.807155971527138, "o", ","] +[18.83715597152714, "o", "\r\n "] +[18.86715597152714, "o", "\""] +[18.89715597152714, "o", "d"] +[18.927155971527142, "o", "u"] +[18.957155971527143, "o", "r"] +[18.987155971527145, "o", "a"] +[19.017155971527146, "o", "t"] +[19.047155971527147, "o", "i"] +[19.077155971527148, "o", "o"] +[19.10715597152715, "o", "n"] +[19.13715597152715, "o", "\""] +[19.16715597152715, "o", ":"] +[19.197155971527152, "o", " "] +[19.227155971527154, "o", "\""] +[19.257155971527155, "o", "n"] +[19.287155971527156, "o", "u"] +[19.317155971527157, "o", "m"] +[19.347155971527158, "o", "e"] +[19.37715597152716, "o", "r"] +[19.40715597152716, "o", "i"] +[19.43715597152716, "o", "c"] +[19.467155971527163, "o", "\""] +[19.497155971527164, "o", ","] +[19.527155971527165, "o", "\r\n "] +[19.557155971527166, "o", "\""] +[19.587155971527167, "o", "h"] +[19.61715597152717, "o", "a"] +[19.64715597152717, "o", "p"] +[19.67715597152717, "o", "p"] +[19.707155971527172, "o", "y"] +[19.737155971527173, "o", "\""] +[19.767155971527174, "o", ":"] +[19.797155971527175, "o", " "] +[19.827155971527176, "o", "\""] +[19.857155971527177, "o", "b"] +[19.88715597152718, "o", "o"] +[19.91715597152718, "o", "o"] +[19.94715597152718, "o", "l"] +[19.977155971527182, "o", "e"] +[20.007155971527183, "o", "a"] +[20.037155971527184, "o", "n"] +[20.067155971527185, "o", "\""] +[20.097155971527187, "o", "}"] +[20.127155971527188, "o", "}"] +[20.15715597152719, "o", "}"] +[20.18715597152719, "o", "}"] +[20.21715597152719, "o", "'"] +[20.247155971527192, "o", "\r\n"] +[20.277155971527193, "o", "\u001b[0m"] +[20.307155971527195, "o", "\r\n"] +[20.695108060836887, "o", "Usage: sgr mount mongo_fdw [OPTIONS] SCHEMA\r\n\r\n Mount a Mongo database.\r\n\r\n Mounts one or more collections on a remote Mongo database as a set of\r\n foreign tables locally.\r\n\r\nOptions:\r\n -c, --connection TEXT Connection string in the form\r\n username:password@server:port\r\n\r\n -o, --handler-options JSON JSON-encoded dictionary or @filename.json with\r\n handler options:\r\n \r\n tables: A di"] +[20.695129280090427, "o", "ctionary of form { \"table_name\":\r\n { \"schema\": {\"col1\": \"type1\"...},\r\n \"options\": {\"database\": , \"collection\":\r\n } } }\r\n\r\n --help Show this message and exit.\r\n"] +[21.191879634857273, "o", "Mounting table stuff\r\n"] +[21.221879634857274, "o", "\u001b[1m"] +[21.251879634857275, "o", "\u001b[36m"] +[21.281879634857276, "o", "\u001b[91m"] +[21.311879634857277, "o", "$"] +[21.34187963485728, "o", " "] +[21.37187963485728, "o", "\u001b[0m"] +[29.41715597152711, "o", "\u001b[H"] +[29.44715597152711, "o", "\u001b[J"] +[29.47715597152711, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the contents of the new table"] +[29.507155971527112, "o", "\r\n"] +[29.537155971527113, "o", "$"] +[29.567155971527114, "o", " "] +[29.597155971527116, "o", "s"] +[29.627155971527117, "o", "g"] +[29.657155971527118, "o", "r"] +[29.68715597152712, "o", " "] +[29.71715597152712, "o", "s"] +[29.74715597152712, "o", "q"] +[29.777155971527122, "o", "l"] +[29.807155971527123, "o", " "] +[29.837155971527125, "o", "-"] +[29.867155971527126, "o", "s"] +[29.897155971527127, "o", " "] +[29.927155971527128, "o", "s"] +[29.95715597152713, "o", "t"] +[29.98715597152713, "o", "a"] +[30.01715597152713, "o", "g"] +[30.047155971527133, "o", "i"] +[30.077155971527134, "o", "n"] +[30.107155971527135, "o", "g"] +[30.137155971527136, "o", " "] +[30.167155971527137, "o", "\""] +[30.19715597152714, "o", "S"] +[30.22715597152714, "o", "E"] +[30.25715597152714, "o", "L"] +[30.28715597152714, "o", "E"] +[30.317155971527143, "o", "C"] +[30.347155971527144, "o", "T"] +[30.377155971527145, "o", " "] +[30.407155971527146, "o", "*"] +[30.437155971527147, "o", " "] +[30.46715597152715, "o", "F"] +[30.49715597152715, "o", "R"] +[30.52715597152715, "o", "O"] +[30.557155971527152, "o", "M"] +[30.587155971527153, "o", " "] +[30.617155971527154, "o", "s"] +[30.647155971527155, "o", "t"] +[30.677155971527156, "o", "u"] +[30.707155971527158, "o", "f"] +[30.73715597152716, "o", "f"] +[30.76715597152716, "o", "\""] +[30.79715597152716, "o", "\r\n"] +[30.827155971527162, "o", "\u001b[0m"] +[30.857155971527163, "o", "\r\n"] +[31.310614757537905, "o", "Alex 12 False 61bce7ab0b4af3adbd817aca\r\nJames 2 True 61bce7ab0b4af3adbd817acb\r\nAlice 98765 True 61bce7ab0b4af3adbd817acc\r\n"] +[31.340614757537907, "o", "\u001b[1m"] +[31.370614757537908, "o", "\u001b[36m"] +[31.40061475753791, "o", "\u001b[91m"] +[31.43061475753791, "o", "$"] +[31.46061475753791, "o", " "] +[31.490614757537912, "o", "\u001b[0m"] +[36.52061475753791, "o", "\u001b[H"] +[36.550614757537915, "o", "\u001b[J"] +[36.580614757537916, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Import the data into a new Splitgraph repository"] +[36.61061475753792, "o", "\r\n"] +[36.64061475753792, "o", "$"] +[36.67061475753792, "o", " "] +[36.70061475753792, "o", "s"] +[36.73061475753792, "o", "g"] +[36.76061475753792, "o", "r"] +[36.790614757537924, "o", " "] +[36.820614757537925, "o", "i"] +[36.850614757537926, "o", "m"] +[36.88061475753793, "o", "p"] +[36.91061475753793, "o", "o"] +[36.94061475753793, "o", "r"] +[36.97061475753793, "o", "t"] +[37.00061475753793, "o", " "] +[37.03061475753793, "o", "s"] +[37.060614757537934, "o", "t"] +[37.090614757537935, "o", "a"] +[37.120614757537936, "o", "g"] +[37.15061475753794, "o", "i"] +[37.18061475753794, "o", "n"] +[37.21061475753794, "o", "g"] +[37.24061475753794, "o", " "] +[37.27061475753794, "o", "\""] +[37.30061475753794, "o", "S"] +[37.330614757537944, "o", "E"] +[37.360614757537945, "o", "L"] +[37.390614757537946, "o", "E"] +[37.42061475753795, "o", "C"] +[37.45061475753795, "o", "T"] +[37.48061475753795, "o", " "] +[37.51061475753795, "o", "n"] +[37.54061475753795, "o", "a"] +[37.57061475753795, "o", "m"] +[37.600614757537954, "o", "e"] +[37.630614757537955, "o", ","] +[37.66061475753796, "o", " "] +[37.69061475753796, "o", "d"] +[37.72061475753796, "o", "u"] +[37.75061475753796, "o", "r"] +[37.78061475753796, "o", "a"] +[37.81061475753796, "o", "t"] +[37.84061475753796, "o", "i"] +[37.870614757537965, "o", "o"] +[37.900614757537966, "o", "n"] +[37.93061475753797, "o", ","] +[37.96061475753797, "o", " "] +[37.99061475753797, "o", "h"] +[38.02061475753797, "o", "a"] +[38.05061475753797, "o", "p"] +[38.08061475753797, "o", "p"] +[38.110614757537974, "o", "y"] +[38.140614757537975, "o", " "] +[38.170614757537976, "o", "F"] +[38.20061475753798, "o", "R"] +[38.23061475753798, "o", "O"] +[38.26061475753798, "o", "M"] +[38.29061475753798, "o", " "] +[38.32061475753798, "o", "s"] +[38.35061475753798, "o", "t"] +[38.380614757537984, "o", "u"] +[38.410614757537985, "o", "f"] +[38.440614757537986, "o", "f"] +[38.47061475753799, "o", "\""] +[38.50061475753799, "o", " "] +[38.53061475753799, "o", "m"] +[38.56061475753799, "o", "y"] +[38.59061475753799, "o", "/"] +[38.62061475753799, "o", "r"] +[38.650614757537994, "o", "e"] +[38.680614757537995, "o", "p"] +[38.710614757537996, "o", "o"] +[38.740614757538, "o", "s"] +[38.770614757538, "o", "i"] +[38.800614757538, "o", "t"] +[38.830614757538, "o", "o"] +[38.860614757538, "o", "r"] +[38.890614757538, "o", "y"] +[38.920614757538004, "o", " "] +[38.950614757538006, "o", "s"] +[38.98061475753801, "o", "t"] +[39.01061475753801, "o", "u"] +[39.04061475753801, "o", "f"] +[39.07061475753801, "o", "f"] +[39.10061475753801, "o", "\r\n"] +[39.13061475753801, "o", "\u001b[0m"] +[39.16061475753801, "o", "\r\n"] +[39.64151957511919, "o", "Processing table sg_tmp_7a40311a48aaf929bba2ed41eb1f4c6f\r\n"] +[39.8404336261751, "o", "my/repository:stuff has been imported from staging:SELECT name, duration, happy FROM stuff\r\n"] +[39.8704336261751, "o", "\u001b[1m"] +[39.9004336261751, "o", "\u001b[36m"] +[39.9304336261751, "o", "\u001b[91m"] +[39.9604336261751, "o", "$"] +[39.990433626175104, "o", " "] +[40.020433626175105, "o", "\u001b[0m"] +[45.050433626175106, "o", "\u001b[H"] +[45.08043362617511, "o", "\u001b[J"] +[45.11043362617511, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Alternatively, data can be imported from other databases with Splitfiles"] +[45.14043362617511, "o", "\r\n"] +[45.17043362617511, "o", "$"] +[45.20043362617511, "o", " "] +[45.23043362617511, "o", "c"] +[45.260433626175114, "o", "a"] +[45.290433626175115, "o", "t"] +[45.32043362617512, "o", " "] +[45.35043362617512, "o", "m"] +[45.38043362617512, "o", "o"] +[45.41043362617512, "o", "n"] +[45.44043362617512, "o", "g"] +[45.47043362617512, "o", "o"] +[45.50043362617512, "o", "_"] +[45.530433626175125, "o", "i"] +[45.560433626175126, "o", "m"] +[45.59043362617513, "o", "p"] +[45.62043362617513, "o", "o"] +[45.65043362617513, "o", "r"] +[45.68043362617513, "o", "t"] +[45.71043362617513, "o", "."] +[45.74043362617513, "o", "s"] +[45.770433626175134, "o", "p"] +[45.800433626175135, "o", "l"] +[45.830433626175136, "o", "i"] +[45.86043362617514, "o", "t"] +[45.89043362617514, "o", "f"] +[45.92043362617514, "o", "i"] +[45.95043362617514, "o", "l"] +[45.98043362617514, "o", "e"] +[46.01043362617514, "o", "\r\n"] +[46.040433626175144, "o", "$"] +[46.070433626175145, "o", " "] +[46.100433626175146, "o", "s"] +[46.13043362617515, "o", "g"] +[46.16043362617515, "o", "r"] +[46.19043362617515, "o", " "] +[46.22043362617515, "o", "b"] +[46.25043362617515, "o", "u"] +[46.28043362617515, "o", "i"] +[46.310433626175154, "o", "l"] +[46.340433626175155, "o", "d"] +[46.370433626175156, "o", " "] +[46.40043362617516, "o", "m"] +[46.43043362617516, "o", "o"] +[46.46043362617516, "o", "n"] +[46.49043362617516, "o", "g"] +[46.52043362617516, "o", "o"] +[46.55043362617516, "o", "_"] +[46.580433626175164, "o", "i"] +[46.610433626175166, "o", "m"] +[46.64043362617517, "o", "p"] +[46.67043362617517, "o", "o"] +[46.70043362617517, "o", "r"] +[46.73043362617517, "o", "t"] +[46.76043362617517, "o", "."] +[46.79043362617517, "o", "s"] +[46.82043362617517, "o", "p"] +[46.850433626175175, "o", "l"] +[46.880433626175176, "o", "i"] +[46.91043362617518, "o", "t"] +[46.94043362617518, "o", "f"] +[46.97043362617518, "o", "i"] +[47.00043362617518, "o", "l"] +[47.03043362617518, "o", "e"] +[47.06043362617518, "o", "\r\n"] +[47.090433626175184, "o", "\u001b[0m"] +[47.120433626175185, "o", "\r\n"] +[47.12180906295802, "o", "FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"tables\": {\"stuff\": {\r\n \"options\": {\r\n \"database\": \"origindb\",\r\n \"collection\": \"stuff\"\r\n },\r\n \"schema\": {\r\n \"name\": \"text\",\r\n \"duration\": \"numeric\",\r\n \"happy\": \"boolean\"}}}}'\r\n IMPORT {SELECT * FROM stuff} AS stuff\r\n"] +[47.55003958702113, "o", "Executing Splitfile mongo_import.splitfile with arguments {}\r\n"] +[47.55046730995204, "o", "\u001b[1m\r\nStep 1/1 : FROM MOUNT mongo_fdw originro:originpass@mongo:27017 '{\"t...\u001b[0m\r\n"] +[47.70152979850795, "o", "Mounting table stuff\r\n"] +[47.76601439476039, "o", "Processing table sg_tmp_9c1a35d3c8c219c36c29d66d2ff09560\r\n"] +[47.98326736450221, "o", "Successfully built mongo_import:db12924d2a13.\r\n"] +[48.01326736450221, "o", "\u001b[1m"] +[48.04326736450221, "o", "\u001b[36m"] +[48.073267364502215, "o", "\u001b[91m"] +[48.103267364502216, "o", "$"] +[48.13326736450222, "o", " "] +[48.16326736450222, "o", "\u001b[0m"] +[55.050433626175106, "o", "\u001b[H"] +[55.08043362617511, "o", "\u001b[J"] +[55.11043362617511, "o", "\u001b[1m"] +[55.14043362617511, "o", "\u001b[36m"] +[55.17043362617511, "o", "\u001b[91m"] +[55.20043362617511, "o", "$"] +[55.23043362617511, "o", " "] +[55.260433626175114, "o", "s"] +[55.290433626175115, "o", "g"] +[55.32043362617512, "o", "r"] +[55.35043362617512, "o", " "] +[55.38043362617512, "o", "s"] +[55.41043362617512, "o", "h"] +[55.44043362617512, "o", "o"] +[55.47043362617512, "o", "w"] +[55.50043362617512, "o", " "] +[55.530433626175125, "o", "m"] +[55.560433626175126, "o", "o"] +[55.59043362617513, "o", "n"] +[55.62043362617513, "o", "g"] +[55.65043362617513, "o", "o"] +[55.68043362617513, "o", "_"] +[55.71043362617513, "o", "i"] +[55.74043362617513, "o", "m"] +[55.770433626175134, "o", "p"] +[55.800433626175135, "o", "o"] +[55.830433626175136, "o", "r"] +[55.86043362617514, "o", "t"] +[55.89043362617514, "o", ":"] +[55.92043362617514, "o", "l"] +[55.95043362617514, "o", "a"] +[55.98043362617514, "o", "t"] +[56.01043362617514, "o", "e"] +[56.040433626175144, "o", "s"] +[56.070433626175145, "o", "t"] +[56.100433626175146, "o", "\r\n"] +[56.13043362617515, "o", "$"] +[56.16043362617515, "o", " "] +[56.19043362617515, "o", "s"] +[56.22043362617515, "o", "g"] +[56.25043362617515, "o", "r"] +[56.28043362617515, "o", " "] +[56.310433626175154, "o", "s"] +[56.340433626175155, "o", "q"] +[56.370433626175156, "o", "l"] +[56.40043362617516, "o", " "] +[56.43043362617516, "o", "-"] +[56.46043362617516, "o", "s"] +[56.49043362617516, "o", " "] +[56.52043362617516, "o", "m"] +[56.55043362617516, "o", "o"] +[56.580433626175164, "o", "n"] +[56.610433626175166, "o", "g"] +[56.64043362617517, "o", "o"] +[56.67043362617517, "o", "_"] +[56.70043362617517, "o", "i"] +[56.73043362617517, "o", "m"] +[56.76043362617517, "o", "p"] +[56.79043362617517, "o", "o"] +[56.82043362617517, "o", "r"] +[56.850433626175175, "o", "t"] +[56.880433626175176, "o", " "] +[56.91043362617518, "o", "\""] +[56.94043362617518, "o", "S"] +[56.97043362617518, "o", "E"] +[57.00043362617518, "o", "L"] +[57.03043362617518, "o", "E"] +[57.06043362617518, "o", "C"] +[57.090433626175184, "o", "T"] +[57.120433626175185, "o", " "] +[57.150433626175186, "o", "*"] +[57.18043362617519, "o", " "] +[57.21043362617519, "o", "F"] +[57.24043362617519, "o", "R"] +[57.27043362617519, "o", "O"] +[57.30043362617519, "o", "M"] +[57.33043362617519, "o", " "] +[57.360433626175194, "o", "s"] +[57.390433626175195, "o", "t"] +[57.420433626175196, "o", "u"] +[57.4504336261752, "o", "f"] +[57.4804336261752, "o", "f"] +[57.5104336261752, "o", "\""] +[57.5404336261752, "o", "\r\n"] +[57.5704336261752, "o", "\u001b[0m"] +[57.6004336261752, "o", "\r\n"] +[58.03204301834134, "o", "Image mongo_import:db12924d2a13cc245790d5d722086fc92aa56b4d8b9b5d39b29d9f001bfaa04b\r\n"] +[58.032071151733675, "o", "Importing 1 table from mongo_fdw_tmp_staging\r\nCreated at 2021-12-17T19:40:35.885999\r\n"] +[58.033501186371126, "o", "Size: 589.00 B\r\n"] +[58.03351024627713, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[58.03419784545926, "o", " stuff\r\n"] +[58.47085622787503, "o", "Alex 12 False 61bce7ab0b4af3adbd817aca\r\nJames 2 True 61bce7ab0b4af3adbd817acb\r\nAlice 98765 True 61bce7ab0b4af3adbd817acc\r\n"] +[58.50085622787503, "o", "\u001b[1m"] +[58.530856227875034, "o", "\u001b[36m"] +[58.560856227875036, "o", "\u001b[91m"] +[58.59085622787504, "o", "$"] +[58.62085622787504, "o", " "] +[58.65085622787504, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/latest/metadata.json b/content/casts/versioned/latest/metadata.json index f5720236..cac821a1 100644 --- a/content/casts/versioned/latest/metadata.json +++ b/content/casts/versioned/latest/metadata.json @@ -1,21 +1,21 @@ { - "title": "v0.2.9", - "updated_at": "2021-03-15T13:05:56.102Z", + "title": "v0.3.0", + "updated_at": "2022-01-20T00:00:33.495Z", "release": { - "id": 39731301, - "tag_name": "v0.2.9", - "target_commitish": "5ec79cf97df336a93503ee0c48f168f79158d548", - "created_at": "2021-03-12T17:37:06Z", - "published_at": "2021-03-12T18:17:05Z", + "id": 55571256, + "tag_name": "v0.3.0", + "target_commitish": "fb8bbc616bda9717cd77db3597381a9cbe26d488", + "created_at": "2021-12-17T19:30:50Z", + "published_at": "2021-12-17T19:49:27Z", "assets": [ { - "id": 33389368, - "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/33389368", + "id": 52039025, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/52039025", "name": "sgr-docs-bin.tar.gz", "label": "", - "created_at": "2021-03-12T18:01:59Z", - "updated_at": "2021-03-12T18:01:59Z", - "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.9/sgr-docs-bin.tar.gz" + "created_at": "2021-12-17T19:49:15Z", + "updated_at": "2021-12-17T19:49:16Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.3.0/sgr-docs-bin.tar.gz" } ] }, diff --git a/content/casts/versioned/latest/pg-replication.cast b/content/casts/versioned/latest/pg-replication.cast index 6c74975e..ace83244 100644 --- a/content/casts/versioned/latest/pg-replication.cast +++ b/content/casts/versioned/latest/pg-replication.cast @@ -1,4 +1,4 @@ -{"version": 2, "width": 100, "height": 21, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1615571755, "metadata": {"tss": [{"h": "The configuration file for sgr contains credentials for the", "ts": 0.06}, {"h": "The origin database has been set up with a couple of tables.", "ts": 10.059999999999999}, {"h": "Create a publication on the origin database", "ts": 19.4169276237487}, {"h": "Create a schema with the same name and same tables", "ts": 28.19692762374884}, {"h": "Set up replication from the origin database.", "ts": 38.19692762374884}, {"h": "Check the data on the engine", "ts": 49.13692762374907}, {"h": "Commit the data as an initial image", "ts": 57.3612755203251}, {"h": "Make a change on the origin database", "ts": 66.94458477973993}, {"h": "The change propagates to the subscriber and gets", "ts": 83.01458477974035}, {"h": "Committing creates a new image, snapshotting the state.", "ts": 89.68029669761759}]}} +{"version": 2, "width": 100, "height": 21, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1639770089, "metadata": {"tss": [{"h": "The configuration file for sgr contains credentials for the", "ts": 0.06}, {"h": "The origin database has been set up with a couple of tables.", "ts": 10.059999999999999}, {"h": "Create a publication on the origin database", "ts": 19.86708312034599}, {"h": "Create a schema with the same name and same tables", "ts": 28.64708312034613}, {"h": "Set up replication from the origin database.", "ts": 38.64708312034613}, {"h": "Check the data on the engine", "ts": 49.58708312034636}, {"h": "Commit the data as an initial image", "ts": 58.281167354584134}, {"h": "Make a change on the origin database", "ts": 68.63117568969781}, {"h": "The change propagates to the subscriber and gets", "ts": 84.70117568969823}, {"h": "Committing creates a new image, snapshotting the state.", "ts": 91.60877326965434}]}} [0.03, "o", "\u001b[H"] [0.06, "o", "\u001b[J"] [0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The configuration file for sgr contains credentials for the"] @@ -23,13 +23,13 @@ [0.6600000000000004, "o", "\r\n"] [0.6900000000000004, "o", "\u001b[0m"] [0.7200000000000004, "o", "\r\n"] -[0.7212130737304692, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n; Add the origin database here so that we can\r\n; use sgr to talk to it (can use any pg client)\r\n[remote:origin]\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=originuser\r\nSG_ENGINE_PWD=originpass\r\nSG_ENGINE_DB=originuser\r\n"] -[0.7512130737304692, "o", "\u001b[1m"] -[0.7812130737304692, "o", "\u001b[36m"] -[0.8112130737304692, "o", "\u001b[91m"] -[0.8412130737304693, "o", "$"] -[0.8712130737304693, "o", " "] -[0.9012130737304693, "o", "\u001b[0m"] +[0.72151538848877, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n; Add the origin database here so that we can\r\n; use sgr to talk to it (can use any pg client)\r\n[remote:origin]\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=originuser\r\nSG_ENGINE_PWD=originpass\r\nSG_ENGINE_DB=originuser\r\n"] +[0.75151538848877, "o", "\u001b[1m"] +[0.78151538848877, "o", "\u001b[36m"] +[0.81151538848877, "o", "\u001b[91m"] +[0.84151538848877, "o", "$"] +[0.8715153884887701, "o", " "] +[0.9015153884887701, "o", "\u001b[0m"] [10.03, "o", "\u001b[H"] [10.059999999999999, "o", "\u001b[J"] [10.089999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The origin database has been set up with a couple of tables."] @@ -157,1245 +157,1243 @@ [13.74999999999992, "o", "\r\n"] [13.77999999999992, "o", "\u001b[0m"] [13.809999999999919, "o", "\r\n"] -[14.000275192260661, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] -[14.176927623748698, "o", "1 1 15 Toilet Roll 2020-03-15 12:00:00\r\n2 1 20 Hand Sanitizer 2020-03-16 02:00:00\r\n3 2 5 Pasta 2020-03-21 17:32:11\r\n4 3 50 Surgical Mask 2020-04-01 12:00:01\r\n5 1 50 Surgical Mask 2020-04-02 11:29:42\r\n"] -[14.206927623748697, "o", "\u001b[1m"] -[14.236927623748697, "o", "\u001b[36m"] -[14.266927623748696, "o", "\u001b[91m"] -[14.296927623748696, "o", "$"] -[14.326927623748695, "o", " "] -[14.356927623748694, "o", "\u001b[0m"] -[19.386927623748697, "o", "\u001b[H"] -[19.4169276237487, "o", "\u001b[J"] -[19.4469276237487, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a publication on the origin database"] -[19.4769276237487, "o", "\r\n"] -[19.5069276237487, "o", "$"] -[19.536927623748703, "o", " "] -[19.566927623748704, "o", "s"] -[19.596927623748705, "o", "g"] -[19.626927623748706, "o", "r"] -[19.656927623748707, "o", " "] -[19.68692762374871, "o", "s"] -[19.71692762374871, "o", "q"] -[19.74692762374871, "o", "l"] -[19.776927623748712, "o", " "] -[19.806927623748713, "o", "-"] -[19.836927623748714, "o", "r"] -[19.866927623748715, "o", " "] -[19.896927623748716, "o", "o"] -[19.926927623748718, "o", "r"] -[19.95692762374872, "o", "i"] -[19.98692762374872, "o", "g"] -[20.01692762374872, "o", "i"] -[20.046927623748722, "o", "n"] -[20.076927623748723, "o", " "] -[20.106927623748724, "o", "\""] -[20.136927623748726, "o", "C"] -[20.166927623748727, "o", "R"] -[20.196927623748728, "o", "E"] -[20.22692762374873, "o", "A"] -[20.25692762374873, "o", "T"] -[20.28692762374873, "o", "E"] -[20.316927623748732, "o", " "] -[20.346927623748734, "o", "P"] -[20.376927623748735, "o", "U"] -[20.406927623748736, "o", "B"] -[20.436927623748737, "o", "L"] -[20.466927623748738, "o", "I"] -[20.49692762374874, "o", "C"] -[20.52692762374874, "o", "A"] -[20.55692762374874, "o", "T"] -[20.586927623748743, "o", "I"] -[20.616927623748744, "o", "O"] -[20.646927623748745, "o", "N"] -[20.676927623748746, "o", " "] -[20.706927623748747, "o", "p"] -[20.73692762374875, "o", "u"] -[20.76692762374875, "o", "b"] -[20.79692762374875, "o", "_"] -[20.82692762374875, "o", "o"] -[20.856927623748753, "o", "r"] -[20.886927623748754, "o", "d"] -[20.916927623748755, "o", "e"] -[20.946927623748756, "o", "r"] -[20.976927623748757, "o", "s"] -[21.00692762374876, "o", " "] -[21.03692762374876, "o", "\\"] -[21.06692762374876, "o", "\r\n "] -[21.096927623748762, "o", "F"] -[21.126927623748763, "o", "O"] -[21.156927623748764, "o", "R"] -[21.186927623748765, "o", " "] -[21.216927623748767, "o", "T"] -[21.246927623748768, "o", "A"] -[21.27692762374877, "o", "B"] -[21.30692762374877, "o", "L"] -[21.33692762374877, "o", "E"] -[21.366927623748772, "o", " "] -[21.396927623748773, "o", "p"] -[21.426927623748774, "o", "r"] -[21.456927623748776, "o", "o"] -[21.486927623748777, "o", "d"] -[21.516927623748778, "o", "u"] -[21.54692762374878, "o", "c"] -[21.57692762374878, "o", "t"] -[21.60692762374878, "o", "i"] -[21.636927623748782, "o", "o"] -[21.666927623748784, "o", "n"] -[21.696927623748785, "o", "_"] -[21.726927623748786, "o", "d"] -[21.756927623748787, "o", "a"] -[21.786927623748788, "o", "t"] -[21.81692762374879, "o", "a"] -[21.84692762374879, "o", "."] -[21.87692762374879, "o", "c"] -[21.906927623748793, "o", "u"] -[21.936927623748794, "o", "s"] -[21.966927623748795, "o", "t"] -[21.996927623748796, "o", "o"] -[22.026927623748797, "o", "m"] -[22.0569276237488, "o", "e"] -[22.0869276237488, "o", "r"] -[22.1169276237488, "o", "s"] -[22.1469276237488, "o", ","] -[22.176927623748803, "o", " "] -[22.206927623748804, "o", "p"] -[22.236927623748805, "o", "r"] -[22.266927623748806, "o", "o"] -[22.296927623748807, "o", "d"] -[22.32692762374881, "o", "u"] -[22.35692762374881, "o", "c"] -[22.38692762374881, "o", "t"] -[22.416927623748812, "o", "i"] -[22.446927623748813, "o", "o"] -[22.476927623748814, "o", "n"] -[22.506927623748815, "o", "_"] -[22.536927623748817, "o", "d"] -[22.566927623748818, "o", "a"] -[22.59692762374882, "o", "t"] -[22.62692762374882, "o", "a"] -[22.65692762374882, "o", "."] -[22.686927623748822, "o", "o"] -[22.716927623748823, "o", "r"] -[22.746927623748824, "o", "d"] -[22.776927623748826, "o", "e"] -[22.806927623748827, "o", "r"] -[22.836927623748828, "o", "s"] -[22.86692762374883, "o", "\""] -[22.89692762374883, "o", "\r\n"] -[22.92692762374883, "o", "\u001b[0m"] -[22.956927623748832, "o", "\r\n"] -[22.986927623748834, "o", "\u001b[1m"] -[23.016927623748835, "o", "\u001b[36m"] -[23.046927623748836, "o", "\u001b[91m"] -[23.076927623748837, "o", "$"] -[23.106927623748838, "o", " "] -[23.13692762374884, "o", "\u001b[0m"] -[28.16692762374884, "o", "\u001b[H"] -[28.19692762374884, "o", "\u001b[J"] -[28.226927623748843, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a schema with the same name and same tables"] -[28.256927623748844, "o", "\r\n"] -[28.286927623748845, "o", "$ # on the engine and initialize the repository.\r\n"] -[28.316927623748846, "o", "$"] -[28.346927623748847, "o", " "] -[28.37692762374885, "o", "s"] -[28.40692762374885, "o", "g"] -[28.43692762374885, "o", "r"] -[28.46692762374885, "o", " "] -[28.496927623748853, "o", "i"] -[28.526927623748854, "o", "n"] -[28.556927623748855, "o", "i"] -[28.586927623748856, "o", "t"] -[28.616927623748857, "o", " "] -[28.64692762374886, "o", "p"] -[28.67692762374886, "o", "r"] -[28.70692762374886, "o", "o"] -[28.736927623748862, "o", "d"] -[28.766927623748863, "o", "u"] -[28.796927623748864, "o", "c"] -[28.826927623748865, "o", "t"] -[28.856927623748867, "o", "i"] -[28.886927623748868, "o", "o"] -[28.91692762374887, "o", "n"] -[28.94692762374887, "o", "_"] -[28.97692762374887, "o", "d"] -[29.006927623748872, "o", "a"] -[29.036927623748873, "o", "t"] -[29.066927623748875, "o", "a"] -[29.096927623748876, "o", "\r\n"] -[29.126927623748877, "o", "$"] -[29.156927623748878, "o", " "] -[29.18692762374888, "o", "c"] -[29.21692762374888, "o", "a"] -[29.24692762374888, "o", "t"] -[29.276927623748882, "o", " "] -[29.306927623748884, "o", "e"] -[29.336927623748885, "o", "n"] -[29.366927623748886, "o", "g"] -[29.396927623748887, "o", "i"] -[29.426927623748888, "o", "n"] -[29.45692762374889, "o", "e"] -[29.48692762374889, "o", "/"] -[29.51692762374889, "o", "s"] -[29.546927623748893, "o", "c"] -[29.576927623748894, "o", "h"] -[29.606927623748895, "o", "e"] -[29.636927623748896, "o", "m"] -[29.666927623748897, "o", "a"] -[29.6969276237489, "o", "."] -[29.7269276237489, "o", "s"] -[29.7569276237489, "o", "q"] -[29.786927623748902, "o", "l"] -[29.816927623748903, "o", "\r\n"] -[29.846927623748904, "o", "$"] -[29.876927623748905, "o", " "] -[29.906927623748906, "o", "s"] -[29.936927623748907, "o", "g"] -[29.96692762374891, "o", "r"] -[29.99692762374891, "o", " "] -[30.02692762374891, "o", "s"] -[30.056927623748912, "o", "q"] -[30.086927623748913, "o", "l"] -[30.116927623748914, "o", " "] -[30.146927623748915, "o", "-"] -[30.176927623748917, "o", "s"] -[30.206927623748918, "o", " "] -[30.23692762374892, "o", "p"] -[30.26692762374892, "o", "r"] -[30.29692762374892, "o", "o"] -[30.326927623748922, "o", "d"] -[30.356927623748923, "o", "u"] -[30.386927623748925, "o", "c"] -[30.416927623748926, "o", "t"] -[30.446927623748927, "o", "i"] -[30.476927623748928, "o", "o"] -[30.50692762374893, "o", "n"] -[30.53692762374893, "o", "_"] -[30.56692762374893, "o", "d"] -[30.596927623748932, "o", "a"] -[30.626927623748934, "o", "t"] -[30.656927623748935, "o", "a"] -[30.686927623748936, "o", " "] -[30.716927623748937, "o", "\""] -[30.746927623748938, "o", "$"] -[30.77692762374894, "o", "("] -[30.80692762374894, "o", "c"] -[30.83692762374894, "o", "a"] -[30.866927623748943, "o", "t"] -[30.896927623748944, "o", " "] -[30.926927623748945, "o", "e"] -[30.956927623748946, "o", "n"] -[30.986927623748947, "o", "g"] -[31.01692762374895, "o", "i"] -[31.04692762374895, "o", "n"] -[31.07692762374895, "o", "e"] -[31.106927623748952, "o", "/"] -[31.136927623748953, "o", "s"] -[31.166927623748954, "o", "c"] -[31.196927623748955, "o", "h"] -[31.226927623748956, "o", "e"] -[31.256927623748958, "o", "m"] -[31.28692762374896, "o", "a"] -[31.31692762374896, "o", "."] -[31.34692762374896, "o", "s"] -[31.376927623748962, "o", "q"] -[31.406927623748963, "o", "l"] -[31.436927623748964, "o", ")"] -[31.466927623748965, "o", "\""] -[31.496927623748967, "o", "\r\n"] -[31.526927623748968, "o", "\u001b[0m"] -[31.55692762374897, "o", "\r\n"] -[31.77598804473896, "o", "Initialized empty repository production_data\r\n"] -[31.777832689285468, "o", "CREATE TABLE production_data.customers (\r\n id INTEGER PRIMARY KEY,\r\n name VARCHAR,\r\n registration_time TIMESTAMP\r\n);\r\n\r\nCREATE TABLE production_data.orders (\r\n id INTEGER PRIMARY KEY,\r\n customer_id INTEGER,\r\n quantity INTEGER,\r\n item_name VARCHAR,\r\n placed_time TIMESTAMP\r\n);\r\n"] -[31.80783268928547, "o", "\u001b[1m"] -[31.83783268928547, "o", "\u001b[36m"] -[31.86783268928547, "o", "\u001b[91m"] -[31.897832689285472, "o", "$"] -[31.927832689285474, "o", " "] -[31.957832689285475, "o", "\u001b[0m"] -[38.16692762374884, "o", "\u001b[H"] -[38.19692762374884, "o", "\u001b[J"] -[38.22692762374884, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Set up replication from the origin database."] -[38.256927623748844, "o", "\r\n"] -[38.286927623748845, "o", "$ # This will copy existing data into the tables too.\r\n"] -[38.316927623748846, "o", "$"] -[38.34692762374885, "o", " "] -[38.37692762374885, "o", "s"] -[38.40692762374885, "o", "g"] -[38.43692762374885, "o", "r"] -[38.46692762374885, "o", " "] -[38.49692762374885, "o", "s"] -[38.526927623748854, "o", "q"] -[38.556927623748855, "o", "l"] -[38.586927623748856, "o", " "] -[38.61692762374886, "o", "-"] -[38.64692762374886, "o", "-"] -[38.67692762374886, "o", "n"] -[38.70692762374886, "o", "o"] -[38.73692762374886, "o", "-"] -[38.76692762374886, "o", "t"] -[38.796927623748864, "o", "r"] -[38.826927623748865, "o", "a"] -[38.85692762374887, "o", "n"] -[38.88692762374887, "o", "s"] -[38.91692762374887, "o", "a"] -[38.94692762374887, "o", "c"] -[38.97692762374887, "o", "t"] -[39.00692762374887, "o", "i"] -[39.03692762374887, "o", "o"] -[39.066927623748875, "o", "n"] -[39.096927623748876, "o", " "] -[39.12692762374888, "o", "\""] -[39.15692762374888, "o", "C"] -[39.18692762374888, "o", "R"] -[39.21692762374888, "o", "E"] -[39.24692762374888, "o", "A"] -[39.27692762374888, "o", "T"] -[39.306927623748884, "o", "E"] -[39.336927623748885, "o", " "] -[39.366927623748886, "o", "S"] -[39.39692762374889, "o", "U"] -[39.42692762374889, "o", "B"] -[39.45692762374889, "o", "S"] -[39.48692762374889, "o", "C"] -[39.51692762374889, "o", "R"] -[39.54692762374889, "o", "I"] -[39.576927623748894, "o", "P"] -[39.606927623748895, "o", "T"] -[39.636927623748896, "o", "I"] -[39.6669276237489, "o", "O"] -[39.6969276237489, "o", "N"] -[39.7269276237489, "o", " "] -[39.7569276237489, "o", "s"] -[39.7869276237489, "o", "u"] -[39.8169276237489, "o", "b"] -[39.846927623748904, "o", "_"] -[39.876927623748905, "o", "o"] -[39.906927623748906, "o", "r"] -[39.93692762374891, "o", "d"] -[39.96692762374891, "o", "e"] -[39.99692762374891, "o", "r"] -[40.02692762374891, "o", "s"] -[40.05692762374891, "o", " "] -[40.08692762374891, "o", "\\"] -[40.116927623748914, "o", "\r\n "] -[40.146927623748915, "o", "C"] -[40.17692762374892, "o", "O"] -[40.20692762374892, "o", "N"] -[40.23692762374892, "o", "N"] -[40.26692762374892, "o", "E"] -[40.29692762374892, "o", "C"] -[40.32692762374892, "o", "T"] -[40.35692762374892, "o", "I"] -[40.386927623748925, "o", "O"] -[40.416927623748926, "o", "N"] -[40.44692762374893, "o", " "] -[40.47692762374893, "o", "'"] -[40.50692762374893, "o", "p"] -[40.53692762374893, "o", "o"] -[40.56692762374893, "o", "s"] -[40.59692762374893, "o", "t"] -[40.626927623748934, "o", "g"] -[40.656927623748935, "o", "r"] -[40.686927623748936, "o", "e"] -[40.71692762374894, "o", "s"] -[40.74692762374894, "o", "q"] -[40.77692762374894, "o", "l"] -[40.80692762374894, "o", ":"] -[40.83692762374894, "o", "/"] -[40.86692762374894, "o", "/"] -[40.896927623748944, "o", "o"] -[40.926927623748945, "o", "r"] -[40.956927623748946, "o", "i"] -[40.98692762374895, "o", "g"] -[41.01692762374895, "o", "i"] -[41.04692762374895, "o", "n"] -[41.07692762374895, "o", "u"] -[41.10692762374895, "o", "s"] -[41.13692762374895, "o", "e"] -[41.166927623748954, "o", "r"] -[41.196927623748955, "o", ":"] -[41.226927623748956, "o", "o"] -[41.25692762374896, "o", "r"] -[41.28692762374896, "o", "i"] -[41.31692762374896, "o", "g"] -[41.34692762374896, "o", "i"] -[41.37692762374896, "o", "n"] -[41.40692762374896, "o", "p"] -[41.436927623748964, "o", "a"] -[41.466927623748965, "o", "s"] -[41.49692762374897, "o", "s"] -[41.52692762374897, "o", "@"] -[41.55692762374897, "o", "o"] -[41.58692762374897, "o", "r"] -[41.61692762374897, "o", "i"] -[41.64692762374897, "o", "g"] -[41.67692762374897, "o", "i"] -[41.706927623748975, "o", "n"] -[41.736927623748976, "o", ":"] -[41.76692762374898, "o", "5"] -[41.79692762374898, "o", "4"] -[41.82692762374898, "o", "3"] -[41.85692762374898, "o", "2"] -[41.88692762374898, "o", "/"] -[41.91692762374898, "o", "o"] -[41.946927623748984, "o", "r"] -[41.976927623748985, "o", "i"] -[42.006927623748986, "o", "g"] -[42.03692762374899, "o", "i"] -[42.06692762374899, "o", "n"] -[42.09692762374899, "o", "u"] -[42.12692762374899, "o", "s"] -[42.15692762374899, "o", "e"] -[42.18692762374899, "o", "r"] -[42.216927623748994, "o", "'"] -[42.246927623748995, "o", " "] -[42.276927623748996, "o", "\\"] -[42.306927623749, "o", "\r\n "] -[42.336927623749, "o", "P"] -[42.366927623749, "o", "U"] -[42.396927623749, "o", "B"] -[42.426927623749, "o", "L"] -[42.456927623749, "o", "I"] -[42.486927623749004, "o", "C"] -[42.516927623749005, "o", "A"] -[42.546927623749006, "o", "T"] -[42.57692762374901, "o", "I"] -[42.60692762374901, "o", "O"] -[42.63692762374901, "o", "N"] -[42.66692762374901, "o", " "] -[42.69692762374901, "o", "p"] -[42.72692762374901, "o", "u"] -[42.756927623749014, "o", "b"] -[42.786927623749015, "o", "_"] -[42.81692762374902, "o", "o"] -[42.84692762374902, "o", "r"] -[42.87692762374902, "o", "d"] -[42.90692762374902, "o", "e"] -[42.93692762374902, "o", "r"] -[42.96692762374902, "o", "s"] -[42.99692762374902, "o", " "] -[43.026927623749025, "o", "\\"] -[43.056927623749026, "o", "\r\n "] -[43.08692762374903, "o", "W"] -[43.11692762374903, "o", "I"] -[43.14692762374903, "o", "T"] -[43.17692762374903, "o", "H"] -[43.20692762374903, "o", " "] -[43.23692762374903, "o", "("] -[43.266927623749034, "o", "c"] -[43.296927623749035, "o", "o"] -[43.326927623749036, "o", "p"] -[43.35692762374904, "o", "y"] -[43.38692762374904, "o", "_"] -[43.41692762374904, "o", "d"] -[43.44692762374904, "o", "a"] -[43.47692762374904, "o", "t"] -[43.50692762374904, "o", "a"] -[43.536927623749044, "o", " "] -[43.566927623749045, "o", "="] -[43.596927623749046, "o", " "] -[43.62692762374905, "o", "t"] -[43.65692762374905, "o", "r"] -[43.68692762374905, "o", "u"] -[43.71692762374905, "o", "e"] -[43.74692762374905, "o", ")"] -[43.77692762374905, "o", ";"] -[43.806927623749054, "o", "\""] -[43.836927623749055, "o", "\r\n"] -[43.866927623749056, "o", "\u001b[0m"] -[43.89692762374906, "o", "\r\n"] -[43.92692762374906, "o", "\u001b[1m"] -[43.95692762374906, "o", "\u001b[36m"] -[43.98692762374906, "o", "\u001b[91m"] -[44.01692762374906, "o", "$"] -[44.04692762374906, "o", " "] -[44.076927623749064, "o", "\u001b[0m"] -[49.106927623749066, "o", "\u001b[H"] -[49.13692762374907, "o", "\u001b[J"] -[49.16692762374907, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the data on the engine"] -[49.19692762374907, "o", "\r\n"] -[49.22692762374907, "o", "$"] -[49.25692762374907, "o", " "] -[49.28692762374907, "o", "s"] -[49.31692762374907, "o", "g"] -[49.346927623749075, "o", "r"] -[49.376927623749076, "o", " "] -[49.40692762374908, "o", "d"] -[49.43692762374908, "o", "i"] -[49.46692762374908, "o", "f"] -[49.49692762374908, "o", "f"] -[49.52692762374908, "o", " "] -[49.55692762374908, "o", "p"] -[49.586927623749084, "o", "r"] -[49.616927623749085, "o", "o"] -[49.646927623749086, "o", "d"] -[49.67692762374909, "o", "u"] -[49.70692762374909, "o", "c"] -[49.73692762374909, "o", "t"] -[49.76692762374909, "o", "i"] -[49.79692762374909, "o", "o"] -[49.82692762374909, "o", "n"] -[49.856927623749094, "o", "_"] -[49.886927623749095, "o", "d"] -[49.916927623749096, "o", "a"] -[49.9469276237491, "o", "t"] -[49.9769276237491, "o", "a"] -[50.0069276237491, "o", "\r\n"] -[50.0369276237491, "o", "$"] -[50.0669276237491, "o", " "] -[50.0969276237491, "o", "s"] -[50.126927623749104, "o", "g"] -[50.156927623749105, "o", "r"] -[50.186927623749106, "o", " "] -[50.21692762374911, "o", "s"] -[50.24692762374911, "o", "q"] -[50.27692762374911, "o", "l"] -[50.30692762374911, "o", " "] -[50.33692762374911, "o", "-"] -[50.36692762374911, "o", "s"] -[50.396927623749114, "o", " "] -[50.426927623749116, "o", "p"] -[50.45692762374912, "o", "r"] -[50.48692762374912, "o", "o"] -[50.51692762374912, "o", "d"] -[50.54692762374912, "o", "u"] -[50.57692762374912, "o", "c"] -[50.60692762374912, "o", "t"] -[50.63692762374912, "o", "i"] -[50.666927623749125, "o", "o"] -[50.696927623749126, "o", "n"] -[50.72692762374913, "o", "_"] -[50.75692762374913, "o", "d"] -[50.78692762374913, "o", "a"] -[50.81692762374913, "o", "t"] -[50.84692762374913, "o", "a"] -[50.87692762374913, "o", " "] -[50.906927623749134, "o", "\""] -[50.936927623749135, "o", "S"] -[50.966927623749136, "o", "E"] -[50.99692762374914, "o", "L"] -[51.02692762374914, "o", "E"] -[51.05692762374914, "o", "C"] -[51.08692762374914, "o", "T"] -[51.11692762374914, "o", " "] -[51.14692762374914, "o", "*"] -[51.176927623749144, "o", " "] -[51.206927623749145, "o", "F"] -[51.236927623749146, "o", "R"] -[51.26692762374915, "o", "O"] -[51.29692762374915, "o", "M"] -[51.32692762374915, "o", " "] -[51.35692762374915, "o", "c"] -[51.38692762374915, "o", "u"] -[51.41692762374915, "o", "s"] -[51.446927623749154, "o", "t"] -[51.476927623749155, "o", "o"] -[51.50692762374916, "o", "m"] -[51.53692762374916, "o", "e"] -[51.56692762374916, "o", "r"] -[51.59692762374916, "o", "s"] -[51.62692762374916, "o", "\""] -[51.65692762374916, "o", "\r\n"] -[51.68692762374916, "o", "\u001b[0m"] -[51.716927623749164, "o", "\r\n"] -[51.91799197196999, "o", "Between 000000000000 and the current working copy: \r\n"] -[51.918010091782, "o", "customers: table added\r\norders: table added\r\n"] -[52.12127552032509, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] -[52.15127552032509, "o", "\u001b[1m"] -[52.181275520325094, "o", "\u001b[36m"] -[52.211275520325096, "o", "\u001b[91m"] -[52.2412755203251, "o", "$"] -[52.2712755203251, "o", " "] -[52.3012755203251, "o", "\u001b[0m"] -[57.3312755203251, "o", "\u001b[H"] -[57.3612755203251, "o", "\u001b[J"] -[57.3912755203251, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit the data as an initial image"] -[57.4212755203251, "o", "\r\n"] -[57.451275520325105, "o", "$"] -[57.481275520325106, "o", " "] -[57.51127552032511, "o", "s"] -[57.54127552032511, "o", "g"] -[57.57127552032511, "o", "r"] -[57.60127552032511, "o", " "] -[57.63127552032511, "o", "c"] -[57.66127552032511, "o", "o"] -[57.691275520325114, "o", "m"] -[57.721275520325115, "o", "m"] -[57.751275520325116, "o", "i"] -[57.78127552032512, "o", "t"] -[57.81127552032512, "o", " "] -[57.84127552032512, "o", "p"] -[57.87127552032512, "o", "r"] -[57.90127552032512, "o", "o"] -[57.93127552032512, "o", "d"] -[57.961275520325124, "o", "u"] -[57.991275520325125, "o", "c"] -[58.021275520325126, "o", "t"] -[58.05127552032513, "o", "i"] -[58.08127552032513, "o", "o"] -[58.11127552032513, "o", "n"] -[58.14127552032513, "o", "_"] -[58.17127552032513, "o", "d"] -[58.20127552032513, "o", "a"] -[58.231275520325134, "o", "t"] -[58.261275520325135, "o", "a"] -[58.29127552032514, "o", "\r\n"] -[58.32127552032514, "o", "$"] -[58.35127552032514, "o", " "] -[58.38127552032514, "o", "s"] -[58.41127552032514, "o", "g"] -[58.44127552032514, "o", "r"] -[58.47127552032514, "o", " "] -[58.501275520325144, "o", "t"] -[58.531275520325146, "o", "a"] -[58.56127552032515, "o", "g"] -[58.59127552032515, "o", " "] -[58.62127552032515, "o", "p"] -[58.65127552032515, "o", "r"] -[58.68127552032515, "o", "o"] -[58.71127552032515, "o", "d"] -[58.74127552032515, "o", "u"] -[58.771275520325155, "o", "c"] -[58.801275520325156, "o", "t"] -[58.83127552032516, "o", "i"] -[58.86127552032516, "o", "o"] -[58.89127552032516, "o", "n"] -[58.92127552032516, "o", "_"] -[58.95127552032516, "o", "d"] -[58.98127552032516, "o", "a"] -[59.011275520325164, "o", "t"] -[59.041275520325165, "o", "a"] -[59.071275520325166, "o", " "] -[59.10127552032517, "o", "i"] -[59.13127552032517, "o", "n"] -[59.16127552032517, "o", "i"] -[59.19127552032517, "o", "t"] -[59.22127552032517, "o", "i"] -[59.25127552032517, "o", "a"] -[59.281275520325174, "o", "l"] -[59.311275520325175, "o", "_"] -[59.341275520325176, "o", "s"] -[59.37127552032518, "o", "n"] -[59.40127552032518, "o", "a"] -[59.43127552032518, "o", "p"] -[59.46127552032518, "o", "s"] -[59.49127552032518, "o", "h"] -[59.52127552032518, "o", "o"] -[59.551275520325184, "o", "t"] -[59.581275520325185, "o", "\r\n"] -[59.61127552032519, "o", "$"] -[59.64127552032519, "o", " "] -[59.67127552032519, "o", "s"] -[59.70127552032519, "o", "g"] -[59.73127552032519, "o", "r"] -[59.76127552032519, "o", " "] -[59.79127552032519, "o", "s"] -[59.821275520325194, "o", "h"] -[59.851275520325196, "o", "o"] -[59.8812755203252, "o", "w"] -[59.9112755203252, "o", " "] -[59.9412755203252, "o", "p"] -[59.9712755203252, "o", "r"] -[60.0012755203252, "o", "o"] -[60.0312755203252, "o", "d"] -[60.061275520325204, "o", "u"] -[60.091275520325205, "o", "c"] -[60.121275520325206, "o", "t"] -[60.15127552032521, "o", "i"] -[60.18127552032521, "o", "o"] -[60.21127552032521, "o", "n"] -[60.24127552032521, "o", "_"] -[60.27127552032521, "o", "d"] -[60.30127552032521, "o", "a"] -[60.331275520325214, "o", "t"] -[60.361275520325215, "o", "a"] -[60.391275520325216, "o", ":"] -[60.42127552032522, "o", "i"] -[60.45127552032522, "o", "n"] -[60.48127552032522, "o", "i"] -[60.51127552032522, "o", "t"] -[60.54127552032522, "o", "i"] -[60.57127552032522, "o", "a"] -[60.601275520325224, "o", "l"] -[60.631275520325225, "o", "_"] -[60.661275520325226, "o", "s"] -[60.69127552032523, "o", "n"] -[60.72127552032523, "o", "a"] -[60.75127552032523, "o", "p"] -[60.78127552032523, "o", "s"] -[60.81127552032523, "o", "h"] -[60.84127552032523, "o", "o"] -[60.871275520325234, "o", "t"] -[60.901275520325235, "o", "\r\n"] -[60.93127552032524, "o", "\u001b[0m"] -[60.96127552032524, "o", "\r\n"] -[61.16452211380058, "o", "Committing production_data...\r\n"] -[61.18703669548088, "o", "Processing table customers\r\n"] -[61.260860385895306, "o", "Processing table orders\r\n"] -[61.28795689582878, "o", "Committed production_data as 19fa6d9bffde.\r\n"] -[61.49092024803215, "o", "Tagged production_data:19fa6d9bffde6b180cc29c08aeeb25bc8dd9686f3c00467b2849f8012447fc20 with initial_snapshot.\r\n"] -[61.70260232925468, "o", "Image production_data:19fa6d9bffde6b180cc29c08aeeb25bc8dd9686f3c00467b2849f8012447fc20\r\n\r\n"] -[61.70261854171806, "o", "Created at 2021-03-12T17:56:17.731412\r\n"] -[61.70396155357414, "o", "Size: 1.11 KiB\r\n"] -[61.70397466659599, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] -[61.70458477973991, "o", " customers\r\n orders\r\n"] -[61.73458477973991, "o", "\u001b[1m"] -[61.76458477973991, "o", "\u001b[36m"] -[61.794584779739914, "o", "\u001b[91m"] -[61.824584779739915, "o", "$"] -[61.854584779739916, "o", " "] -[61.88458477973992, "o", "\u001b[0m"] -[66.91458477973993, "o", "\u001b[H"] -[66.94458477973993, "o", "\u001b[J"] -[66.97458477973993, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make a change on the origin database"] -[67.00458477973993, "o", "\r\n"] -[67.03458477973993, "o", "$"] -[67.06458477973993, "o", " "] -[67.09458477973993, "o", "s"] -[67.12458477973993, "o", "g"] -[67.15458477973993, "o", "r"] -[67.18458477973994, "o", " "] -[67.21458477973994, "o", "s"] -[67.24458477973994, "o", "q"] -[67.27458477973994, "o", "l"] -[67.30458477973994, "o", " "] -[67.33458477973994, "o", "-"] -[67.36458477973994, "o", "r"] -[67.39458477973994, "o", " "] -[67.42458477973994, "o", "o"] -[67.45458477973995, "o", "r"] -[67.48458477973995, "o", "i"] -[67.51458477973995, "o", "g"] -[67.54458477973995, "o", "i"] -[67.57458477973995, "o", "n"] -[67.60458477973995, "o", " "] -[67.63458477973995, "o", "-"] -[67.66458477973995, "o", "s"] -[67.69458477973996, "o", " "] -[67.72458477973996, "o", "p"] -[67.75458477973996, "o", "r"] -[67.78458477973996, "o", "o"] -[67.81458477973996, "o", "d"] -[67.84458477973996, "o", "u"] -[67.87458477973996, "o", "c"] -[67.90458477973996, "o", "t"] -[67.93458477973996, "o", "i"] -[67.96458477973997, "o", "o"] -[67.99458477973997, "o", "n"] -[68.02458477973997, "o", "_"] -[68.05458477973997, "o", "d"] -[68.08458477973997, "o", "a"] -[68.11458477973997, "o", "t"] -[68.14458477973997, "o", "a"] -[68.17458477973997, "o", " "] -[68.20458477973997, "o", "\""] -[68.23458477973998, "o", "U"] -[68.26458477973998, "o", "P"] -[68.29458477973998, "o", "D"] -[68.32458477973998, "o", "A"] -[68.35458477973998, "o", "T"] -[68.38458477973998, "o", "E"] -[68.41458477973998, "o", " "] -[68.44458477973998, "o", "o"] -[68.47458477973998, "o", "r"] -[68.50458477973999, "o", "d"] -[68.53458477973999, "o", "e"] -[68.56458477973999, "o", "r"] -[68.59458477973999, "o", "s"] -[68.62458477973999, "o", " "] -[68.65458477973999, "o", "\\"] -[68.68458477973999, "o", "\r\n "] -[68.71458477974, "o", "S"] -[68.74458477974, "o", "E"] -[68.77458477974, "o", "T"] -[68.80458477974, "o", " "] -[68.83458477974, "o", "q"] -[68.86458477974, "o", "u"] -[68.89458477974, "o", "a"] -[68.92458477974, "o", "n"] -[68.95458477974, "o", "t"] -[68.98458477974, "o", "i"] -[69.01458477974, "o", "t"] -[69.04458477974, "o", "y"] -[69.07458477974001, "o", " "] -[69.10458477974001, "o", "="] -[69.13458477974001, "o", " "] -[69.16458477974001, "o", "q"] -[69.19458477974001, "o", "u"] -[69.22458477974001, "o", "a"] -[69.25458477974001, "o", "n"] -[69.28458477974002, "o", "t"] -[69.31458477974002, "o", "i"] -[69.34458477974002, "o", "t"] -[69.37458477974002, "o", "y"] -[69.40458477974002, "o", " "] -[69.43458477974002, "o", "+"] -[69.46458477974002, "o", " "] -[69.49458477974002, "o", "5"] -[69.52458477974002, "o", " "] -[69.55458477974003, "o", "W"] -[69.58458477974003, "o", "H"] -[69.61458477974003, "o", "E"] -[69.64458477974003, "o", "R"] -[69.67458477974003, "o", "E"] -[69.70458477974003, "o", " "] -[69.73458477974003, "o", "i"] -[69.76458477974003, "o", "d"] -[69.79458477974003, "o", " "] -[69.82458477974004, "o", "="] -[69.85458477974004, "o", " "] -[69.88458477974004, "o", "2"] -[69.91458477974004, "o", ";"] -[69.94458477974004, "o", " "] -[69.97458477974004, "o", "\\"] -[70.00458477974004, "o", "\r\n "] -[70.03458477974004, "o", "D"] -[70.06458477974004, "o", "E"] -[70.09458477974005, "o", "L"] -[70.12458477974005, "o", "E"] -[70.15458477974005, "o", "T"] -[70.18458477974005, "o", "E"] -[70.21458477974005, "o", " "] -[70.24458477974005, "o", "F"] -[70.27458477974005, "o", "R"] -[70.30458477974005, "o", "O"] -[70.33458477974006, "o", "M"] -[70.36458477974006, "o", " "] -[70.39458477974006, "o", "o"] -[70.42458477974006, "o", "r"] -[70.45458477974006, "o", "d"] -[70.48458477974006, "o", "e"] -[70.51458477974006, "o", "r"] -[70.54458477974006, "o", "s"] -[70.57458477974006, "o", " "] -[70.60458477974007, "o", "W"] -[70.63458477974007, "o", "H"] -[70.66458477974007, "o", "E"] -[70.69458477974007, "o", "R"] -[70.72458477974007, "o", "E"] -[70.75458477974007, "o", " "] -[70.78458477974007, "o", "i"] -[70.81458477974007, "o", "d"] -[70.84458477974007, "o", " "] -[70.87458477974008, "o", "="] -[70.90458477974008, "o", " "] -[70.93458477974008, "o", "5"] -[70.96458477974008, "o", ";"] -[70.99458477974008, "o", " "] -[71.02458477974008, "o", "\\"] -[71.05458477974008, "o", "\r\n "] -[71.08458477974008, "o", "I"] -[71.11458477974008, "o", "N"] -[71.14458477974009, "o", "S"] -[71.17458477974009, "o", "E"] -[71.20458477974009, "o", "R"] -[71.23458477974009, "o", "T"] -[71.26458477974009, "o", " "] -[71.29458477974009, "o", "I"] -[71.32458477974009, "o", "N"] -[71.3545847797401, "o", "T"] -[71.3845847797401, "o", "O"] -[71.4145847797401, "o", " "] -[71.4445847797401, "o", "c"] -[71.4745847797401, "o", "u"] -[71.5045847797401, "o", "s"] -[71.5345847797401, "o", "t"] -[71.5645847797401, "o", "o"] -[71.5945847797401, "o", "m"] -[71.6245847797401, "o", "e"] -[71.6545847797401, "o", "r"] -[71.6845847797401, "o", "s"] -[71.71458477974011, "o", " "] -[71.74458477974011, "o", "("] -[71.77458477974011, "o", "n"] -[71.80458477974011, "o", "a"] -[71.83458477974011, "o", "m"] -[71.86458477974011, "o", "e"] -[71.89458477974011, "o", ","] -[71.92458477974012, "o", " "] -[71.95458477974012, "o", "r"] -[71.98458477974012, "o", "e"] -[72.01458477974012, "o", "g"] -[72.04458477974012, "o", "i"] -[72.07458477974012, "o", "s"] -[72.10458477974012, "o", "t"] -[72.13458477974012, "o", "r"] -[72.16458477974012, "o", "a"] -[72.19458477974013, "o", "t"] -[72.22458477974013, "o", "i"] -[72.25458477974013, "o", "o"] -[72.28458477974013, "o", "n"] -[72.31458477974013, "o", "_"] -[72.34458477974013, "o", "t"] -[72.37458477974013, "o", "i"] -[72.40458477974013, "o", "m"] -[72.43458477974013, "o", "e"] -[72.46458477974014, "o", ")"] -[72.49458477974014, "o", " "] -[72.52458477974014, "o", "V"] -[72.55458477974014, "o", "A"] -[72.58458477974014, "o", "L"] -[72.61458477974014, "o", "U"] -[72.64458477974014, "o", "E"] -[72.67458477974014, "o", "S"] -[72.70458477974014, "o", " "] -[72.73458477974015, "o", "\\"] -[72.76458477974015, "o", "\r\n "] -[72.79458477974015, "o", "("] -[72.82458477974015, "o", "'"] -[72.85458477974015, "o", "J"] -[72.88458477974015, "o", "a"] -[72.91458477974015, "o", "c"] -[72.94458477974015, "o", "k"] -[72.97458477974016, "o", " "] -[73.00458477974016, "o", "S"] -[73.03458477974016, "o", "a"] -[73.06458477974016, "o", "m"] -[73.09458477974016, "o", "p"] -[73.12458477974016, "o", "l"] -[73.15458477974016, "o", "e"] -[73.18458477974016, "o", "'"] -[73.21458477974016, "o", ","] -[73.24458477974017, "o", " "] -[73.27458477974017, "o", "'"] -[73.30458477974017, "o", "2"] -[73.33458477974017, "o", "0"] -[73.36458477974017, "o", "2"] -[73.39458477974017, "o", "0"] -[73.42458477974017, "o", "-"] -[73.45458477974017, "o", "0"] -[73.48458477974017, "o", "4"] -[73.51458477974018, "o", "-"] -[73.54458477974018, "o", "2"] -[73.57458477974018, "o", "0"] -[73.60458477974018, "o", " "] -[73.63458477974018, "o", "1"] -[73.66458477974018, "o", "4"] -[73.69458477974018, "o", ":"] -[73.72458477974018, "o", "0"] -[73.75458477974018, "o", "3"] -[73.78458477974019, "o", ":"] -[73.81458477974019, "o", "4"] -[73.84458477974019, "o", "8"] -[73.87458477974019, "o", "'"] -[73.90458477974019, "o", ")"] -[73.93458477974019, "o", ";"] -[73.96458477974019, "o", " "] -[73.9945847797402, "o", "\\"] -[74.0245847797402, "o", "\r\n "] -[74.0545847797402, "o", "I"] -[74.0845847797402, "o", "N"] -[74.1145847797402, "o", "S"] -[74.1445847797402, "o", "E"] -[74.1745847797402, "o", "R"] -[74.2045847797402, "o", "T"] -[74.2345847797402, "o", " "] -[74.2645847797402, "o", "I"] -[74.2945847797402, "o", "N"] -[74.3245847797402, "o", "T"] -[74.35458477974021, "o", "O"] -[74.38458477974021, "o", " "] -[74.41458477974021, "o", "o"] -[74.44458477974021, "o", "r"] -[74.47458477974021, "o", "d"] -[74.50458477974021, "o", "e"] -[74.53458477974021, "o", "r"] -[74.56458477974022, "o", "s"] -[74.59458477974022, "o", " "] -[74.62458477974022, "o", "("] -[74.65458477974022, "o", "c"] -[74.68458477974022, "o", "u"] -[74.71458477974022, "o", "s"] -[74.74458477974022, "o", "t"] -[74.77458477974022, "o", "o"] -[74.80458477974022, "o", "m"] -[74.83458477974023, "o", "e"] -[74.86458477974023, "o", "r"] -[74.89458477974023, "o", "_"] -[74.92458477974023, "o", "i"] -[74.95458477974023, "o", "d"] -[74.98458477974023, "o", ","] -[75.01458477974023, "o", " "] -[75.04458477974023, "o", "q"] -[75.07458477974023, "o", "u"] -[75.10458477974024, "o", "a"] -[75.13458477974024, "o", "n"] -[75.16458477974024, "o", "t"] -[75.19458477974024, "o", "i"] -[75.22458477974024, "o", "t"] -[75.25458477974024, "o", "y"] -[75.28458477974024, "o", ","] -[75.31458477974024, "o", " "] -[75.34458477974025, "o", "i"] -[75.37458477974025, "o", "t"] -[75.40458477974025, "o", "e"] -[75.43458477974025, "o", "m"] -[75.46458477974025, "o", "_"] -[75.49458477974025, "o", "n"] -[75.52458477974025, "o", "a"] -[75.55458477974025, "o", "m"] -[75.58458477974025, "o", "e"] -[75.61458477974026, "o", ","] -[75.64458477974026, "o", " "] -[75.67458477974026, "o", "p"] -[75.70458477974026, "o", "l"] -[75.73458477974026, "o", "a"] -[75.76458477974026, "o", "c"] -[75.79458477974026, "o", "e"] -[75.82458477974026, "o", "d"] -[75.85458477974026, "o", "_"] -[75.88458477974027, "o", "t"] -[75.91458477974027, "o", "i"] -[75.94458477974027, "o", "m"] -[75.97458477974027, "o", "e"] -[76.00458477974027, "o", ")"] -[76.03458477974027, "o", " "] -[76.06458477974027, "o", "V"] -[76.09458477974027, "o", "A"] -[76.12458477974027, "o", "L"] -[76.15458477974028, "o", "U"] -[76.18458477974028, "o", "E"] -[76.21458477974028, "o", "S"] -[76.24458477974028, "o", " "] -[76.27458477974028, "o", "\\"] -[76.30458477974028, "o", "\r\n "] -[76.33458477974028, "o", "("] -[76.36458477974028, "o", "4"] -[76.39458477974028, "o", ","] -[76.42458477974029, "o", " "] -[76.45458477974029, "o", "5"] -[76.48458477974029, "o", ","] -[76.51458477974029, "o", " "] -[76.54458477974029, "o", "'"] -[76.57458477974029, "o", "T"] -[76.60458477974029, "o", "o"] -[76.6345847797403, "o", "i"] -[76.6645847797403, "o", "l"] -[76.6945847797403, "o", "e"] -[76.7245847797403, "o", "t"] -[76.7545847797403, "o", " "] -[76.7845847797403, "o", "R"] -[76.8145847797403, "o", "o"] -[76.8445847797403, "o", "l"] -[76.8745847797403, "o", "l"] -[76.9045847797403, "o", "'"] -[76.9345847797403, "o", ","] -[76.9645847797403, "o", " "] -[76.99458477974031, "o", "'"] -[77.02458477974031, "o", "2"] -[77.05458477974031, "o", "0"] -[77.08458477974031, "o", "2"] -[77.11458477974031, "o", "0"] -[77.14458477974031, "o", "-"] -[77.17458477974031, "o", "0"] -[77.20458477974032, "o", "4"] -[77.23458477974032, "o", "-"] -[77.26458477974032, "o", "2"] -[77.29458477974032, "o", "0"] -[77.32458477974032, "o", " "] -[77.35458477974032, "o", "1"] -[77.38458477974032, "o", "4"] -[77.41458477974032, "o", ":"] -[77.44458477974032, "o", "0"] -[77.47458477974033, "o", "5"] -[77.50458477974033, "o", ":"] -[77.53458477974033, "o", "1"] -[77.56458477974033, "o", "7"] -[77.59458477974033, "o", "'"] -[77.62458477974033, "o", ")"] -[77.65458477974033, "o", ";"] -[77.68458477974033, "o", "\""] -[77.71458477974033, "o", "\r\n"] -[77.74458477974034, "o", "\u001b[0m"] -[77.77458477974034, "o", "\r\n"] -[77.80458477974034, "o", "\u001b[1m"] -[77.83458477974034, "o", "\u001b[36m"] -[77.86458477974034, "o", "\u001b[91m"] -[77.89458477974034, "o", "$"] -[77.92458477974034, "o", " "] -[77.95458477974034, "o", "\u001b[0m"] -[82.98458477974035, "o", "\u001b[H"] -[83.01458477974035, "o", "\u001b[J"] -[83.04458477974035, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The change propagates to the subscriber and gets"] -[83.07458477974035, "o", "\r\n"] -[83.10458477974035, "o", "$ # captured by Splitgraph's change tracking\r\n"] -[83.13458477974035, "o", "$"] -[83.16458477974035, "o", " "] -[83.19458477974035, "o", "s"] -[83.22458477974035, "o", "g"] -[83.25458477974036, "o", "r"] -[83.28458477974036, "o", " "] -[83.31458477974036, "o", "d"] -[83.34458477974036, "o", "i"] -[83.37458477974036, "o", "f"] -[83.40458477974036, "o", "f"] -[83.43458477974036, "o", " "] -[83.46458477974036, "o", "-"] -[83.49458477974036, "o", "v"] -[83.52458477974037, "o", " "] -[83.55458477974037, "o", "p"] -[83.58458477974037, "o", "r"] -[83.61458477974037, "o", "o"] -[83.64458477974037, "o", "d"] -[83.67458477974037, "o", "u"] -[83.70458477974037, "o", "c"] -[83.73458477974037, "o", "t"] -[83.76458477974037, "o", "i"] -[83.79458477974038, "o", "o"] -[83.82458477974038, "o", "n"] -[83.85458477974038, "o", "_"] -[83.88458477974038, "o", "d"] -[83.91458477974038, "o", "a"] -[83.94458477974038, "o", "t"] -[83.97458477974038, "o", "a"] -[84.00458477974038, "o", "\r\n"] -[84.03458477974038, "o", "\u001b[0m"] -[84.06458477974039, "o", "\r\n"] -[84.43985300064188, "o", "Between 19fa6d9bffde and the current working copy: \r\n"] -[84.44003682136636, "o", "customers: added 1 row.\r\n"] -[84.44012050628763, "o", "+ (4, 'Jack Sample', datetime.datetime(2020, 4, 20, 14, 3, 48))\r\n"] -[84.44029669761758, "o", "orders: added 2 rows, removed 2 rows.\r\n- (2, 1, 20, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n- (5, 1, 50, 'Surgical Mask', datetime.datetime(2020, 4, 2, 11, 29, 42))\r\n+ (2, 1, 25, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n+ (6, 4, 5, 'Toilet Roll', datetime.datetime(2020, 4, 20, 14, 5, 17))\r\n"] -[84.47029669761758, "o", "\u001b[1m"] -[84.50029669761759, "o", "\u001b[36m"] -[84.53029669761759, "o", "\u001b[91m"] -[84.56029669761759, "o", "$"] -[84.59029669761759, "o", " "] -[84.62029669761759, "o", "\u001b[0m"] -[89.65029669761759, "o", "\u001b[H"] -[89.68029669761759, "o", "\u001b[J"] -[89.7102966976176, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Committing creates a new image, snapshotting the state."] -[89.7402966976176, "o", "\r\n"] -[89.7702966976176, "o", "$"] -[89.8002966976176, "o", " "] -[89.8302966976176, "o", "s"] -[89.8602966976176, "o", "g"] -[89.8902966976176, "o", "r"] -[89.9202966976176, "o", " "] -[89.9502966976176, "o", "c"] -[89.9802966976176, "o", "o"] -[90.0102966976176, "o", "m"] -[90.0402966976176, "o", "m"] -[90.07029669761761, "o", "i"] -[90.10029669761761, "o", "t"] -[90.13029669761761, "o", " "] -[90.16029669761761, "o", "p"] -[90.19029669761761, "o", "r"] -[90.22029669761761, "o", "o"] -[90.25029669761761, "o", "d"] -[90.28029669761762, "o", "u"] -[90.31029669761762, "o", "c"] -[90.34029669761762, "o", "t"] -[90.37029669761762, "o", "i"] -[90.40029669761762, "o", "o"] -[90.43029669761762, "o", "n"] -[90.46029669761762, "o", "_"] -[90.49029669761762, "o", "d"] -[90.52029669761762, "o", "a"] -[90.55029669761763, "o", "t"] -[90.58029669761763, "o", "a"] -[90.61029669761763, "o", "\r\n"] -[90.64029669761763, "o", "$"] -[90.67029669761763, "o", " "] -[90.70029669761763, "o", "s"] -[90.73029669761763, "o", "g"] -[90.76029669761763, "o", "r"] -[90.79029669761763, "o", " "] -[90.82029669761764, "o", "t"] -[90.85029669761764, "o", "a"] -[90.88029669761764, "o", "g"] -[90.91029669761764, "o", " "] -[90.94029669761764, "o", "p"] -[90.97029669761764, "o", "r"] -[91.00029669761764, "o", "o"] -[91.03029669761764, "o", "d"] -[91.06029669761764, "o", "u"] -[91.09029669761765, "o", "c"] -[91.12029669761765, "o", "t"] -[91.15029669761765, "o", "i"] -[91.18029669761765, "o", "o"] -[91.21029669761765, "o", "n"] -[91.24029669761765, "o", "_"] -[91.27029669761765, "o", "d"] -[91.30029669761765, "o", "a"] -[91.33029669761765, "o", "t"] -[91.36029669761766, "o", "a"] -[91.39029669761766, "o", " "] -[91.42029669761766, "o", "c"] -[91.45029669761766, "o", "u"] -[91.48029669761766, "o", "r"] -[91.51029669761766, "o", "r"] -[91.54029669761766, "o", "e"] -[91.57029669761766, "o", "n"] -[91.60029669761767, "o", "t"] -[91.63029669761767, "o", "_"] -[91.66029669761767, "o", "s"] -[91.69029669761767, "o", "n"] -[91.72029669761767, "o", "a"] -[91.75029669761767, "o", "p"] -[91.78029669761767, "o", "s"] -[91.81029669761767, "o", "h"] -[91.84029669761767, "o", "o"] -[91.87029669761768, "o", "t"] -[91.90029669761768, "o", "\r\n"] -[91.93029669761768, "o", "$"] -[91.96029669761768, "o", " "] -[91.99029669761768, "o", "s"] -[92.02029669761768, "o", "g"] -[92.05029669761768, "o", "r"] -[92.08029669761768, "o", " "] -[92.11029669761768, "o", "s"] -[92.14029669761769, "o", "h"] -[92.17029669761769, "o", "o"] -[92.20029669761769, "o", "w"] -[92.23029669761769, "o", " "] -[92.26029669761769, "o", "p"] -[92.29029669761769, "o", "r"] -[92.32029669761769, "o", "o"] -[92.3502966976177, "o", "d"] -[92.3802966976177, "o", "u"] -[92.4102966976177, "o", "c"] -[92.4402966976177, "o", "t"] -[92.4702966976177, "o", "i"] -[92.5002966976177, "o", "o"] -[92.5302966976177, "o", "n"] -[92.5602966976177, "o", "_"] -[92.5902966976177, "o", "d"] -[92.6202966976177, "o", "a"] -[92.6502966976177, "o", "t"] -[92.6802966976177, "o", "a"] -[92.71029669761771, "o", ":"] -[92.74029669761771, "o", "c"] -[92.77029669761771, "o", "u"] -[92.80029669761771, "o", "r"] -[92.83029669761771, "o", "r"] -[92.86029669761771, "o", "e"] -[92.89029669761771, "o", "n"] -[92.92029669761772, "o", "t"] -[92.95029669761772, "o", "_"] -[92.98029669761772, "o", "s"] -[93.01029669761772, "o", "n"] -[93.04029669761772, "o", "a"] -[93.07029669761772, "o", "p"] -[93.10029669761772, "o", "s"] -[93.13029669761772, "o", "h"] -[93.16029669761772, "o", "o"] -[93.19029669761773, "o", "t"] -[93.22029669761773, "o", "\r\n"] -[93.25029669761773, "o", "\u001b[0m"] -[93.28029669761773, "o", "\r\n"] -[93.49624861717339, "o", "Committing production_data...\r\n"] -[93.52947749137994, "o", "Committed production_data as f234d20922e5.\r\n"] -[93.74330104827996, "o", "Tagged production_data:f234d20922e595c989046bd6ed9d728c3679d36f8e3de211cea7856a0b8657e5 with current_snapshot.\r\n"] -[93.96333016395684, "o", "Image production_data:f234d20922e595c989046bd6ed9d728c3679d36f8e3de211cea7856a0b8657e5\r\n\r\n"] -[93.96343173027154, "o", "Created at 2021-03-12T17:56:19.815369\r\n"] -[93.96513856887933, "o", "Size: 1.11 KiB\r\n"] -[93.96515406608697, "o", "Parent: 19fa6d9bffde6b180cc29c08aeeb25bc8dd9686f3c00467b2849f8012447fc20\r\n\r\nTables:\r\n"] -[93.96631134986993, "o", " customers\r\n orders"] -[93.96638525962945, "o", "\r\n"] -[93.99638525962945, "o", "\u001b[1m"] -[94.02638525962945, "o", "\u001b[36m"] -[94.05638525962945, "o", "\u001b[91m"] -[94.08638525962945, "o", "$"] -[94.11638525962945, "o", " "] -[94.14638525962945, "o", "\u001b[0m"] \ No newline at end of file +[14.225307521819987, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[14.627083120345988, "o", "1 1 15 Toilet Roll 2020-03-15 12:00:00\r\n2 1 20 Hand Sanitizer 2020-03-16 02:00:00\r\n3 2 5 Pasta 2020-03-21 17:32:11\r\n4 3 50 Surgical Mask 2020-04-01 12:00:01\r\n5 1 50 Surgical Mask 2020-04-02 11:29:42\r\n"] +[14.657083120345987, "o", "\u001b[1m"] +[14.687083120345987, "o", "\u001b[36m"] +[14.717083120345986, "o", "\u001b[91m"] +[14.747083120345986, "o", "$"] +[14.777083120345985, "o", " "] +[14.807083120345984, "o", "\u001b[0m"] +[19.837083120345987, "o", "\u001b[H"] +[19.86708312034599, "o", "\u001b[J"] +[19.89708312034599, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a publication on the origin database"] +[19.92708312034599, "o", "\r\n"] +[19.95708312034599, "o", "$"] +[19.987083120345993, "o", " "] +[20.017083120345994, "o", "s"] +[20.047083120345995, "o", "g"] +[20.077083120345996, "o", "r"] +[20.107083120345997, "o", " "] +[20.137083120346, "o", "s"] +[20.167083120346, "o", "q"] +[20.197083120346, "o", "l"] +[20.227083120346002, "o", " "] +[20.257083120346003, "o", "-"] +[20.287083120346004, "o", "r"] +[20.317083120346005, "o", " "] +[20.347083120346007, "o", "o"] +[20.377083120346008, "o", "r"] +[20.40708312034601, "o", "i"] +[20.43708312034601, "o", "g"] +[20.46708312034601, "o", "i"] +[20.497083120346012, "o", "n"] +[20.527083120346013, "o", " "] +[20.557083120346014, "o", "\""] +[20.587083120346016, "o", "C"] +[20.617083120346017, "o", "R"] +[20.647083120346018, "o", "E"] +[20.67708312034602, "o", "A"] +[20.70708312034602, "o", "T"] +[20.73708312034602, "o", "E"] +[20.767083120346022, "o", " "] +[20.797083120346024, "o", "P"] +[20.827083120346025, "o", "U"] +[20.857083120346026, "o", "B"] +[20.887083120346027, "o", "L"] +[20.917083120346028, "o", "I"] +[20.94708312034603, "o", "C"] +[20.97708312034603, "o", "A"] +[21.00708312034603, "o", "T"] +[21.037083120346033, "o", "I"] +[21.067083120346034, "o", "O"] +[21.097083120346035, "o", "N"] +[21.127083120346036, "o", " "] +[21.157083120346037, "o", "p"] +[21.18708312034604, "o", "u"] +[21.21708312034604, "o", "b"] +[21.24708312034604, "o", "_"] +[21.27708312034604, "o", "o"] +[21.307083120346043, "o", "r"] +[21.337083120346044, "o", "d"] +[21.367083120346045, "o", "e"] +[21.397083120346046, "o", "r"] +[21.427083120346047, "o", "s"] +[21.45708312034605, "o", " "] +[21.48708312034605, "o", "\\"] +[21.51708312034605, "o", "\r\n "] +[21.547083120346052, "o", "F"] +[21.577083120346053, "o", "O"] +[21.607083120346054, "o", "R"] +[21.637083120346055, "o", " "] +[21.667083120346057, "o", "T"] +[21.697083120346058, "o", "A"] +[21.72708312034606, "o", "B"] +[21.75708312034606, "o", "L"] +[21.78708312034606, "o", "E"] +[21.817083120346062, "o", " "] +[21.847083120346063, "o", "p"] +[21.877083120346065, "o", "r"] +[21.907083120346066, "o", "o"] +[21.937083120346067, "o", "d"] +[21.967083120346068, "o", "u"] +[21.99708312034607, "o", "c"] +[22.02708312034607, "o", "t"] +[22.05708312034607, "o", "i"] +[22.087083120346072, "o", "o"] +[22.117083120346074, "o", "n"] +[22.147083120346075, "o", "_"] +[22.177083120346076, "o", "d"] +[22.207083120346077, "o", "a"] +[22.237083120346078, "o", "t"] +[22.26708312034608, "o", "a"] +[22.29708312034608, "o", "."] +[22.32708312034608, "o", "c"] +[22.357083120346083, "o", "u"] +[22.387083120346084, "o", "s"] +[22.417083120346085, "o", "t"] +[22.447083120346086, "o", "o"] +[22.477083120346087, "o", "m"] +[22.50708312034609, "o", "e"] +[22.53708312034609, "o", "r"] +[22.56708312034609, "o", "s"] +[22.597083120346092, "o", ","] +[22.627083120346093, "o", " "] +[22.657083120346094, "o", "p"] +[22.687083120346095, "o", "r"] +[22.717083120346096, "o", "o"] +[22.747083120346097, "o", "d"] +[22.7770831203461, "o", "u"] +[22.8070831203461, "o", "c"] +[22.8370831203461, "o", "t"] +[22.867083120346102, "o", "i"] +[22.897083120346103, "o", "o"] +[22.927083120346104, "o", "n"] +[22.957083120346105, "o", "_"] +[22.987083120346107, "o", "d"] +[23.017083120346108, "o", "a"] +[23.04708312034611, "o", "t"] +[23.07708312034611, "o", "a"] +[23.10708312034611, "o", "."] +[23.137083120346112, "o", "o"] +[23.167083120346113, "o", "r"] +[23.197083120346115, "o", "d"] +[23.227083120346116, "o", "e"] +[23.257083120346117, "o", "r"] +[23.287083120346118, "o", "s"] +[23.31708312034612, "o", "\""] +[23.34708312034612, "o", "\r\n"] +[23.37708312034612, "o", "\u001b[0m"] +[23.407083120346122, "o", "\r\n"] +[23.437083120346124, "o", "\u001b[1m"] +[23.467083120346125, "o", "\u001b[36m"] +[23.497083120346126, "o", "\u001b[91m"] +[23.527083120346127, "o", "$"] +[23.557083120346128, "o", " "] +[23.58708312034613, "o", "\u001b[0m"] +[28.61708312034613, "o", "\u001b[H"] +[28.64708312034613, "o", "\u001b[J"] +[28.677083120346133, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Create a schema with the same name and same tables"] +[28.707083120346134, "o", "\r\n"] +[28.737083120346135, "o", "$ # on the engine and initialize the repository.\r\n"] +[28.767083120346136, "o", "$"] +[28.797083120346137, "o", " "] +[28.82708312034614, "o", "s"] +[28.85708312034614, "o", "g"] +[28.88708312034614, "o", "r"] +[28.917083120346142, "o", " "] +[28.947083120346143, "o", "i"] +[28.977083120346144, "o", "n"] +[29.007083120346145, "o", "i"] +[29.037083120346146, "o", "t"] +[29.067083120346147, "o", " "] +[29.09708312034615, "o", "p"] +[29.12708312034615, "o", "r"] +[29.15708312034615, "o", "o"] +[29.187083120346152, "o", "d"] +[29.217083120346153, "o", "u"] +[29.247083120346154, "o", "c"] +[29.277083120346155, "o", "t"] +[29.307083120346157, "o", "i"] +[29.337083120346158, "o", "o"] +[29.36708312034616, "o", "n"] +[29.39708312034616, "o", "_"] +[29.42708312034616, "o", "d"] +[29.457083120346162, "o", "a"] +[29.487083120346163, "o", "t"] +[29.517083120346165, "o", "a"] +[29.547083120346166, "o", "\r\n"] +[29.577083120346167, "o", "$"] +[29.607083120346168, "o", " "] +[29.63708312034617, "o", "c"] +[29.66708312034617, "o", "a"] +[29.69708312034617, "o", "t"] +[29.727083120346173, "o", " "] +[29.757083120346174, "o", "e"] +[29.787083120346175, "o", "n"] +[29.817083120346176, "o", "g"] +[29.847083120346177, "o", "i"] +[29.877083120346178, "o", "n"] +[29.90708312034618, "o", "e"] +[29.93708312034618, "o", "/"] +[29.96708312034618, "o", "s"] +[29.997083120346183, "o", "c"] +[30.027083120346184, "o", "h"] +[30.057083120346185, "o", "e"] +[30.087083120346186, "o", "m"] +[30.117083120346187, "o", "a"] +[30.14708312034619, "o", "."] +[30.17708312034619, "o", "s"] +[30.20708312034619, "o", "q"] +[30.237083120346192, "o", "l"] +[30.267083120346193, "o", "\r\n"] +[30.297083120346194, "o", "$"] +[30.327083120346195, "o", " "] +[30.357083120346196, "o", "s"] +[30.387083120346198, "o", "g"] +[30.4170831203462, "o", "r"] +[30.4470831203462, "o", " "] +[30.4770831203462, "o", "s"] +[30.507083120346202, "o", "q"] +[30.537083120346203, "o", "l"] +[30.567083120346204, "o", " "] +[30.597083120346205, "o", "-"] +[30.627083120346207, "o", "s"] +[30.657083120346208, "o", " "] +[30.68708312034621, "o", "p"] +[30.71708312034621, "o", "r"] +[30.74708312034621, "o", "o"] +[30.777083120346212, "o", "d"] +[30.807083120346213, "o", "u"] +[30.837083120346215, "o", "c"] +[30.867083120346216, "o", "t"] +[30.897083120346217, "o", "i"] +[30.927083120346218, "o", "o"] +[30.95708312034622, "o", "n"] +[30.98708312034622, "o", "_"] +[31.01708312034622, "o", "d"] +[31.047083120346223, "o", "a"] +[31.077083120346224, "o", "t"] +[31.107083120346225, "o", "a"] +[31.137083120346226, "o", " "] +[31.167083120346227, "o", "\""] +[31.197083120346228, "o", "$"] +[31.22708312034623, "o", "("] +[31.25708312034623, "o", "c"] +[31.28708312034623, "o", "a"] +[31.317083120346233, "o", "t"] +[31.347083120346234, "o", " "] +[31.377083120346235, "o", "e"] +[31.407083120346236, "o", "n"] +[31.437083120346237, "o", "g"] +[31.46708312034624, "o", "i"] +[31.49708312034624, "o", "n"] +[31.52708312034624, "o", "e"] +[31.557083120346242, "o", "/"] +[31.587083120346243, "o", "s"] +[31.617083120346244, "o", "c"] +[31.647083120346245, "o", "h"] +[31.677083120346246, "o", "e"] +[31.707083120346248, "o", "m"] +[31.73708312034625, "o", "a"] +[31.76708312034625, "o", "."] +[31.79708312034625, "o", "s"] +[31.827083120346252, "o", "q"] +[31.857083120346253, "o", "l"] +[31.887083120346254, "o", ")"] +[31.917083120346255, "o", "\""] +[31.947083120346257, "o", "\r\n"] +[31.977083120346258, "o", "\u001b[0m"] +[32.00708312034626, "o", "\r\n"] +[32.45430511474628, "o", "Initialized empty repository production_data\r\n"] +[32.45618838310261, "o", "CREATE TABLE production_data.customers (\r\n id INTEGER PRIMARY KEY,\r\n name VARCHAR,\r\n registration_time TIMESTAMP\r\n);\r\n\r\nCREATE TABLE production_data.orders (\r\n id INTEGER PRIMARY KEY,\r\n customer_id INTEGER,\r\n quantity INTEGER,\r\n item_name VARCHAR,\r\n placed_time TIMESTAMP\r\n);\r\n"] +[32.48618838310261, "o", "\u001b[1m"] +[32.51618838310261, "o", "\u001b[36m"] +[32.54618838310261, "o", "\u001b[91m"] +[32.57618838310261, "o", "$"] +[32.60618838310261, "o", " "] +[32.63618838310261, "o", "\u001b[0m"] +[38.61708312034613, "o", "\u001b[H"] +[38.64708312034613, "o", "\u001b[J"] +[38.67708312034613, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Set up replication from the origin database."] +[38.707083120346134, "o", "\r\n"] +[38.737083120346135, "o", "$ # This will copy existing data into the tables too.\r\n"] +[38.767083120346136, "o", "$"] +[38.79708312034614, "o", " "] +[38.82708312034614, "o", "s"] +[38.85708312034614, "o", "g"] +[38.88708312034614, "o", "r"] +[38.91708312034614, "o", " "] +[38.94708312034614, "o", "s"] +[38.977083120346144, "o", "q"] +[39.007083120346145, "o", "l"] +[39.037083120346146, "o", " "] +[39.06708312034615, "o", "-"] +[39.09708312034615, "o", "-"] +[39.12708312034615, "o", "n"] +[39.15708312034615, "o", "o"] +[39.18708312034615, "o", "-"] +[39.21708312034615, "o", "t"] +[39.247083120346154, "o", "r"] +[39.277083120346155, "o", "a"] +[39.30708312034616, "o", "n"] +[39.33708312034616, "o", "s"] +[39.36708312034616, "o", "a"] +[39.39708312034616, "o", "c"] +[39.42708312034616, "o", "t"] +[39.45708312034616, "o", "i"] +[39.48708312034616, "o", "o"] +[39.517083120346165, "o", "n"] +[39.547083120346166, "o", " "] +[39.57708312034617, "o", "\""] +[39.60708312034617, "o", "C"] +[39.63708312034617, "o", "R"] +[39.66708312034617, "o", "E"] +[39.69708312034617, "o", "A"] +[39.72708312034617, "o", "T"] +[39.757083120346174, "o", "E"] +[39.787083120346175, "o", " "] +[39.817083120346176, "o", "S"] +[39.84708312034618, "o", "U"] +[39.87708312034618, "o", "B"] +[39.90708312034618, "o", "S"] +[39.93708312034618, "o", "C"] +[39.96708312034618, "o", "R"] +[39.99708312034618, "o", "I"] +[40.027083120346184, "o", "P"] +[40.057083120346185, "o", "T"] +[40.087083120346186, "o", "I"] +[40.11708312034619, "o", "O"] +[40.14708312034619, "o", "N"] +[40.17708312034619, "o", " "] +[40.20708312034619, "o", "s"] +[40.23708312034619, "o", "u"] +[40.26708312034619, "o", "b"] +[40.297083120346194, "o", "_"] +[40.327083120346195, "o", "o"] +[40.357083120346196, "o", "r"] +[40.3870831203462, "o", "d"] +[40.4170831203462, "o", "e"] +[40.4470831203462, "o", "r"] +[40.4770831203462, "o", "s"] +[40.5070831203462, "o", " "] +[40.5370831203462, "o", "\\"] +[40.567083120346204, "o", "\r\n "] +[40.597083120346205, "o", "C"] +[40.62708312034621, "o", "O"] +[40.65708312034621, "o", "N"] +[40.68708312034621, "o", "N"] +[40.71708312034621, "o", "E"] +[40.74708312034621, "o", "C"] +[40.77708312034621, "o", "T"] +[40.80708312034621, "o", "I"] +[40.837083120346215, "o", "O"] +[40.867083120346216, "o", "N"] +[40.89708312034622, "o", " "] +[40.92708312034622, "o", "'"] +[40.95708312034622, "o", "p"] +[40.98708312034622, "o", "o"] +[41.01708312034622, "o", "s"] +[41.04708312034622, "o", "t"] +[41.077083120346224, "o", "g"] +[41.107083120346225, "o", "r"] +[41.137083120346226, "o", "e"] +[41.16708312034623, "o", "s"] +[41.19708312034623, "o", "q"] +[41.22708312034623, "o", "l"] +[41.25708312034623, "o", ":"] +[41.28708312034623, "o", "/"] +[41.31708312034623, "o", "/"] +[41.347083120346234, "o", "o"] +[41.377083120346235, "o", "r"] +[41.407083120346236, "o", "i"] +[41.43708312034624, "o", "g"] +[41.46708312034624, "o", "i"] +[41.49708312034624, "o", "n"] +[41.52708312034624, "o", "u"] +[41.55708312034624, "o", "s"] +[41.58708312034624, "o", "e"] +[41.617083120346244, "o", "r"] +[41.647083120346245, "o", ":"] +[41.677083120346246, "o", "o"] +[41.70708312034625, "o", "r"] +[41.73708312034625, "o", "i"] +[41.76708312034625, "o", "g"] +[41.79708312034625, "o", "i"] +[41.82708312034625, "o", "n"] +[41.85708312034625, "o", "p"] +[41.887083120346254, "o", "a"] +[41.917083120346255, "o", "s"] +[41.94708312034626, "o", "s"] +[41.97708312034626, "o", "@"] +[42.00708312034626, "o", "o"] +[42.03708312034626, "o", "r"] +[42.06708312034626, "o", "i"] +[42.09708312034626, "o", "g"] +[42.12708312034626, "o", "i"] +[42.157083120346265, "o", "n"] +[42.187083120346266, "o", ":"] +[42.21708312034627, "o", "5"] +[42.24708312034627, "o", "4"] +[42.27708312034627, "o", "3"] +[42.30708312034627, "o", "2"] +[42.33708312034627, "o", "/"] +[42.36708312034627, "o", "o"] +[42.397083120346274, "o", "r"] +[42.427083120346275, "o", "i"] +[42.457083120346276, "o", "g"] +[42.48708312034628, "o", "i"] +[42.51708312034628, "o", "n"] +[42.54708312034628, "o", "u"] +[42.57708312034628, "o", "s"] +[42.60708312034628, "o", "e"] +[42.63708312034628, "o", "r"] +[42.667083120346284, "o", "'"] +[42.697083120346285, "o", " "] +[42.727083120346286, "o", "\\"] +[42.75708312034629, "o", "\r\n "] +[42.78708312034629, "o", "P"] +[42.81708312034629, "o", "U"] +[42.84708312034629, "o", "B"] +[42.87708312034629, "o", "L"] +[42.90708312034629, "o", "I"] +[42.937083120346294, "o", "C"] +[42.967083120346295, "o", "A"] +[42.997083120346296, "o", "T"] +[43.0270831203463, "o", "I"] +[43.0570831203463, "o", "O"] +[43.0870831203463, "o", "N"] +[43.1170831203463, "o", " "] +[43.1470831203463, "o", "p"] +[43.1770831203463, "o", "u"] +[43.207083120346304, "o", "b"] +[43.237083120346306, "o", "_"] +[43.26708312034631, "o", "o"] +[43.29708312034631, "o", "r"] +[43.32708312034631, "o", "d"] +[43.35708312034631, "o", "e"] +[43.38708312034631, "o", "r"] +[43.41708312034631, "o", "s"] +[43.44708312034631, "o", " "] +[43.477083120346315, "o", "\\"] +[43.507083120346316, "o", "\r\n "] +[43.53708312034632, "o", "W"] +[43.56708312034632, "o", "I"] +[43.59708312034632, "o", "T"] +[43.62708312034632, "o", "H"] +[43.65708312034632, "o", " "] +[43.68708312034632, "o", "("] +[43.717083120346324, "o", "c"] +[43.747083120346325, "o", "o"] +[43.777083120346326, "o", "p"] +[43.80708312034633, "o", "y"] +[43.83708312034633, "o", "_"] +[43.86708312034633, "o", "d"] +[43.89708312034633, "o", "a"] +[43.92708312034633, "o", "t"] +[43.95708312034633, "o", "a"] +[43.987083120346334, "o", " "] +[44.017083120346335, "o", "="] +[44.047083120346336, "o", " "] +[44.07708312034634, "o", "t"] +[44.10708312034634, "o", "r"] +[44.13708312034634, "o", "u"] +[44.16708312034634, "o", "e"] +[44.19708312034634, "o", ")"] +[44.22708312034634, "o", ";"] +[44.257083120346344, "o", "\""] +[44.287083120346345, "o", "\r\n"] +[44.31708312034635, "o", "\u001b[0m"] +[44.34708312034635, "o", "\r\n"] +[44.37708312034635, "o", "\u001b[1m"] +[44.40708312034635, "o", "\u001b[36m"] +[44.43708312034635, "o", "\u001b[91m"] +[44.46708312034635, "o", "$"] +[44.49708312034635, "o", " "] +[44.527083120346354, "o", "\u001b[0m"] +[49.557083120346356, "o", "\u001b[H"] +[49.58708312034636, "o", "\u001b[J"] +[49.61708312034636, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check the data on the engine"] +[49.64708312034636, "o", "\r\n"] +[49.67708312034636, "o", "$"] +[49.70708312034636, "o", " "] +[49.73708312034636, "o", "s"] +[49.76708312034636, "o", "g"] +[49.797083120346365, "o", "r"] +[49.827083120346366, "o", " "] +[49.85708312034637, "o", "d"] +[49.88708312034637, "o", "i"] +[49.91708312034637, "o", "f"] +[49.94708312034637, "o", "f"] +[49.97708312034637, "o", " "] +[50.00708312034637, "o", "p"] +[50.037083120346374, "o", "r"] +[50.067083120346375, "o", "o"] +[50.097083120346376, "o", "d"] +[50.12708312034638, "o", "u"] +[50.15708312034638, "o", "c"] +[50.18708312034638, "o", "t"] +[50.21708312034638, "o", "i"] +[50.24708312034638, "o", "o"] +[50.27708312034638, "o", "n"] +[50.307083120346384, "o", "_"] +[50.337083120346385, "o", "d"] +[50.367083120346386, "o", "a"] +[50.39708312034639, "o", "t"] +[50.42708312034639, "o", "a"] +[50.45708312034639, "o", "\r\n"] +[50.48708312034639, "o", "$"] +[50.51708312034639, "o", " "] +[50.54708312034639, "o", "s"] +[50.577083120346394, "o", "g"] +[50.607083120346395, "o", "r"] +[50.6370831203464, "o", " "] +[50.6670831203464, "o", "s"] +[50.6970831203464, "o", "q"] +[50.7270831203464, "o", "l"] +[50.7570831203464, "o", " "] +[50.7870831203464, "o", "-"] +[50.8170831203464, "o", "s"] +[50.847083120346404, "o", " "] +[50.877083120346406, "o", "p"] +[50.90708312034641, "o", "r"] +[50.93708312034641, "o", "o"] +[50.96708312034641, "o", "d"] +[50.99708312034641, "o", "u"] +[51.02708312034641, "o", "c"] +[51.05708312034641, "o", "t"] +[51.08708312034641, "o", "i"] +[51.117083120346415, "o", "o"] +[51.147083120346416, "o", "n"] +[51.17708312034642, "o", "_"] +[51.20708312034642, "o", "d"] +[51.23708312034642, "o", "a"] +[51.26708312034642, "o", "t"] +[51.29708312034642, "o", "a"] +[51.32708312034642, "o", " "] +[51.357083120346424, "o", "\""] +[51.387083120346425, "o", "S"] +[51.417083120346426, "o", "E"] +[51.44708312034643, "o", "L"] +[51.47708312034643, "o", "E"] +[51.50708312034643, "o", "C"] +[51.53708312034643, "o", "T"] +[51.56708312034643, "o", " "] +[51.59708312034643, "o", "*"] +[51.627083120346434, "o", " "] +[51.657083120346435, "o", "F"] +[51.687083120346436, "o", "R"] +[51.71708312034644, "o", "O"] +[51.74708312034644, "o", "M"] +[51.77708312034644, "o", " "] +[51.80708312034644, "o", "c"] +[51.83708312034644, "o", "u"] +[51.86708312034644, "o", "s"] +[51.897083120346444, "o", "t"] +[51.927083120346445, "o", "o"] +[51.95708312034645, "o", "m"] +[51.98708312034645, "o", "e"] +[52.01708312034645, "o", "r"] +[52.04708312034645, "o", "s"] +[52.07708312034645, "o", "\""] +[52.10708312034645, "o", "\r\n"] +[52.13708312034645, "o", "\u001b[0m"] +[52.167083120346454, "o", "\r\n"] +[52.60528454780617, "o", "Between 000000000000 and the current working copy: \r\n"] +[52.605301952362446, "o", "customers: table added\r\norders: table added\r\n"] +[53.041167354584125, "o", "1 Jack Doe 2020-01-01 12:00:00\r\n2 Jane Doe 2020-01-02 03:04:00\r\n3 Alexandra Sample 2020-03-01 01:05:01\r\n"] +[53.07116735458413, "o", "\u001b[1m"] +[53.10116735458413, "o", "\u001b[36m"] +[53.13116735458413, "o", "\u001b[91m"] +[53.16116735458413, "o", "$"] +[53.19116735458413, "o", " "] +[53.22116735458413, "o", "\u001b[0m"] +[58.25116735458413, "o", "\u001b[H"] +[58.281167354584134, "o", "\u001b[J"] +[58.311167354584136, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Commit the data as an initial image"] +[58.34116735458414, "o", "\r\n"] +[58.37116735458414, "o", "$"] +[58.40116735458414, "o", " "] +[58.43116735458414, "o", "s"] +[58.46116735458414, "o", "g"] +[58.49116735458414, "o", "r"] +[58.52116735458414, "o", " "] +[58.551167354584145, "o", "c"] +[58.581167354584146, "o", "o"] +[58.61116735458415, "o", "m"] +[58.64116735458415, "o", "m"] +[58.67116735458415, "o", "i"] +[58.70116735458415, "o", "t"] +[58.73116735458415, "o", " "] +[58.76116735458415, "o", "p"] +[58.791167354584154, "o", "r"] +[58.821167354584155, "o", "o"] +[58.851167354584156, "o", "d"] +[58.88116735458416, "o", "u"] +[58.91116735458416, "o", "c"] +[58.94116735458416, "o", "t"] +[58.97116735458416, "o", "i"] +[59.00116735458416, "o", "o"] +[59.03116735458416, "o", "n"] +[59.061167354584164, "o", "_"] +[59.091167354584165, "o", "d"] +[59.121167354584166, "o", "a"] +[59.15116735458417, "o", "t"] +[59.18116735458417, "o", "a"] +[59.21116735458417, "o", "\r\n"] +[59.24116735458417, "o", "$"] +[59.27116735458417, "o", " "] +[59.30116735458417, "o", "s"] +[59.331167354584174, "o", "g"] +[59.361167354584175, "o", "r"] +[59.39116735458418, "o", " "] +[59.42116735458418, "o", "t"] +[59.45116735458418, "o", "a"] +[59.48116735458418, "o", "g"] +[59.51116735458418, "o", " "] +[59.54116735458418, "o", "p"] +[59.57116735458418, "o", "r"] +[59.601167354584184, "o", "o"] +[59.631167354584186, "o", "d"] +[59.66116735458419, "o", "u"] +[59.69116735458419, "o", "c"] +[59.72116735458419, "o", "t"] +[59.75116735458419, "o", "i"] +[59.78116735458419, "o", "o"] +[59.81116735458419, "o", "n"] +[59.841167354584194, "o", "_"] +[59.871167354584195, "o", "d"] +[59.901167354584196, "o", "a"] +[59.9311673545842, "o", "t"] +[59.9611673545842, "o", "a"] +[59.9911673545842, "o", " "] +[60.0211673545842, "o", "i"] +[60.0511673545842, "o", "n"] +[60.0811673545842, "o", "i"] +[60.111167354584204, "o", "t"] +[60.141167354584205, "o", "i"] +[60.171167354584206, "o", "a"] +[60.20116735458421, "o", "l"] +[60.23116735458421, "o", "_"] +[60.26116735458421, "o", "s"] +[60.29116735458421, "o", "n"] +[60.32116735458421, "o", "a"] +[60.35116735458421, "o", "p"] +[60.381167354584214, "o", "s"] +[60.411167354584215, "o", "h"] +[60.441167354584216, "o", "o"] +[60.47116735458422, "o", "t"] +[60.50116735458422, "o", "\r\n"] +[60.53116735458422, "o", "$"] +[60.56116735458422, "o", " "] +[60.59116735458422, "o", "s"] +[60.62116735458422, "o", "g"] +[60.651167354584224, "o", "r"] +[60.681167354584225, "o", " "] +[60.71116735458423, "o", "s"] +[60.74116735458423, "o", "h"] +[60.77116735458423, "o", "o"] +[60.80116735458423, "o", "w"] +[60.83116735458423, "o", " "] +[60.86116735458423, "o", "p"] +[60.89116735458423, "o", "r"] +[60.921167354584234, "o", "o"] +[60.951167354584236, "o", "d"] +[60.98116735458424, "o", "u"] +[61.01116735458424, "o", "c"] +[61.04116735458424, "o", "t"] +[61.07116735458424, "o", "i"] +[61.10116735458424, "o", "o"] +[61.13116735458424, "o", "n"] +[61.161167354584244, "o", "_"] +[61.191167354584245, "o", "d"] +[61.221167354584246, "o", "a"] +[61.25116735458425, "o", "t"] +[61.28116735458425, "o", "a"] +[61.31116735458425, "o", ":"] +[61.34116735458425, "o", "i"] +[61.37116735458425, "o", "n"] +[61.40116735458425, "o", "i"] +[61.431167354584254, "o", "t"] +[61.461167354584255, "o", "i"] +[61.491167354584256, "o", "a"] +[61.52116735458426, "o", "l"] +[61.55116735458426, "o", "_"] +[61.58116735458426, "o", "s"] +[61.61116735458426, "o", "n"] +[61.64116735458426, "o", "a"] +[61.67116735458426, "o", "p"] +[61.701167354584264, "o", "s"] +[61.731167354584265, "o", "h"] +[61.761167354584266, "o", "o"] +[61.79116735458427, "o", "t"] +[61.82116735458427, "o", "\r\n"] +[61.85116735458427, "o", "\u001b[0m"] +[61.88116735458427, "o", "\r\n"] +[62.306389989853436, "o", "Committing production_data...\r\n"] +[62.33032340049797, "o", "Processing table customers\r\n"] +[62.4250621223455, "o", "Processing table orders\r\n"] +[62.52111119270378, "o", "Committed production_data as 9d1e5c3f50cf.\r\n"] +[62.9561638259893, "o", "Tagged production_data:9d1e5c3f50cff7ea96054b452ead3f3f37ec7c10ef20ffd0df418b9d8ae5f1d8 with initial_snapshot.\r\n"] +[63.38794964790397, "o", "Image production_data:9d1e5c3f50cff7ea96054b452ead3f3f37ec7c10ef20ffd0df418b9d8ae5f1d8\r\n\r\n"] +[63.38797873497062, "o", "Created at 2021-12-17T19:41:54.663812\r\n"] +[63.389994802475506, "o", "Size: 1.11 KiB\r\n"] +[63.390011253357464, "o", "Parent: 0000000000000000000000000000000000000000000000000000000000000000\r\n\r\nTables:\r\n"] +[63.391175689697796, "o", " customers\r\n orders\r\n"] +[63.4211756896978, "o", "\u001b[1m"] +[63.4511756896978, "o", "\u001b[36m"] +[63.4811756896978, "o", "\u001b[91m"] +[63.5111756896978, "o", "$"] +[63.5411756896978, "o", " "] +[63.5711756896978, "o", "\u001b[0m"] +[68.60117568969781, "o", "\u001b[H"] +[68.63117568969781, "o", "\u001b[J"] +[68.66117568969781, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make a change on the origin database"] +[68.69117568969781, "o", "\r\n"] +[68.72117568969782, "o", "$"] +[68.75117568969782, "o", " "] +[68.78117568969782, "o", "s"] +[68.81117568969782, "o", "g"] +[68.84117568969782, "o", "r"] +[68.87117568969782, "o", " "] +[68.90117568969782, "o", "s"] +[68.93117568969782, "o", "q"] +[68.96117568969782, "o", "l"] +[68.99117568969783, "o", " "] +[69.02117568969783, "o", "-"] +[69.05117568969783, "o", "r"] +[69.08117568969783, "o", " "] +[69.11117568969783, "o", "o"] +[69.14117568969783, "o", "r"] +[69.17117568969783, "o", "i"] +[69.20117568969783, "o", "g"] +[69.23117568969784, "o", "i"] +[69.26117568969784, "o", "n"] +[69.29117568969784, "o", " "] +[69.32117568969784, "o", "-"] +[69.35117568969784, "o", "s"] +[69.38117568969784, "o", " "] +[69.41117568969784, "o", "p"] +[69.44117568969784, "o", "r"] +[69.47117568969784, "o", "o"] +[69.50117568969785, "o", "d"] +[69.53117568969785, "o", "u"] +[69.56117568969785, "o", "c"] +[69.59117568969785, "o", "t"] +[69.62117568969785, "o", "i"] +[69.65117568969785, "o", "o"] +[69.68117568969785, "o", "n"] +[69.71117568969785, "o", "_"] +[69.74117568969785, "o", "d"] +[69.77117568969786, "o", "a"] +[69.80117568969786, "o", "t"] +[69.83117568969786, "o", "a"] +[69.86117568969786, "o", " "] +[69.89117568969786, "o", "\""] +[69.92117568969786, "o", "U"] +[69.95117568969786, "o", "P"] +[69.98117568969786, "o", "D"] +[70.01117568969786, "o", "A"] +[70.04117568969787, "o", "T"] +[70.07117568969787, "o", "E"] +[70.10117568969787, "o", " "] +[70.13117568969787, "o", "o"] +[70.16117568969787, "o", "r"] +[70.19117568969787, "o", "d"] +[70.22117568969787, "o", "e"] +[70.25117568969787, "o", "r"] +[70.28117568969787, "o", "s"] +[70.31117568969788, "o", " "] +[70.34117568969788, "o", "\\"] +[70.37117568969788, "o", "\r\n "] +[70.40117568969788, "o", "S"] +[70.43117568969788, "o", "E"] +[70.46117568969788, "o", "T"] +[70.49117568969788, "o", " "] +[70.52117568969788, "o", "q"] +[70.55117568969789, "o", "u"] +[70.58117568969789, "o", "a"] +[70.61117568969789, "o", "n"] +[70.64117568969789, "o", "t"] +[70.67117568969789, "o", "i"] +[70.70117568969789, "o", "t"] +[70.73117568969789, "o", "y"] +[70.7611756896979, "o", " "] +[70.7911756896979, "o", "="] +[70.8211756896979, "o", " "] +[70.8511756896979, "o", "q"] +[70.8811756896979, "o", "u"] +[70.9111756896979, "o", "a"] +[70.9411756896979, "o", "n"] +[70.9711756896979, "o", "t"] +[71.0011756896979, "o", "i"] +[71.0311756896979, "o", "t"] +[71.0611756896979, "o", "y"] +[71.0911756896979, "o", " "] +[71.1211756896979, "o", "+"] +[71.15117568969791, "o", " "] +[71.18117568969791, "o", "5"] +[71.21117568969791, "o", " "] +[71.24117568969791, "o", "W"] +[71.27117568969791, "o", "H"] +[71.30117568969791, "o", "E"] +[71.33117568969791, "o", "R"] +[71.36117568969792, "o", "E"] +[71.39117568969792, "o", " "] +[71.42117568969792, "o", "i"] +[71.45117568969792, "o", "d"] +[71.48117568969792, "o", " "] +[71.51117568969792, "o", "="] +[71.54117568969792, "o", " "] +[71.57117568969792, "o", "2"] +[71.60117568969793, "o", ";"] +[71.63117568969793, "o", " "] +[71.66117568969793, "o", "\\"] +[71.69117568969793, "o", "\r\n "] +[71.72117568969793, "o", "D"] +[71.75117568969793, "o", "E"] +[71.78117568969793, "o", "L"] +[71.81117568969793, "o", "E"] +[71.84117568969793, "o", "T"] +[71.87117568969794, "o", "E"] +[71.90117568969794, "o", " "] +[71.93117568969794, "o", "F"] +[71.96117568969794, "o", "R"] +[71.99117568969794, "o", "O"] +[72.02117568969794, "o", "M"] +[72.05117568969794, "o", " "] +[72.08117568969794, "o", "o"] +[72.11117568969794, "o", "r"] +[72.14117568969795, "o", "d"] +[72.17117568969795, "o", "e"] +[72.20117568969795, "o", "r"] +[72.23117568969795, "o", "s"] +[72.26117568969795, "o", " "] +[72.29117568969795, "o", "W"] +[72.32117568969795, "o", "H"] +[72.35117568969795, "o", "E"] +[72.38117568969795, "o", "R"] +[72.41117568969796, "o", "E"] +[72.44117568969796, "o", " "] +[72.47117568969796, "o", "i"] +[72.50117568969796, "o", "d"] +[72.53117568969796, "o", " "] +[72.56117568969796, "o", "="] +[72.59117568969796, "o", " "] +[72.62117568969796, "o", "5"] +[72.65117568969796, "o", ";"] +[72.68117568969797, "o", " "] +[72.71117568969797, "o", "\\"] +[72.74117568969797, "o", "\r\n "] +[72.77117568969797, "o", "I"] +[72.80117568969797, "o", "N"] +[72.83117568969797, "o", "S"] +[72.86117568969797, "o", "E"] +[72.89117568969797, "o", "R"] +[72.92117568969798, "o", "T"] +[72.95117568969798, "o", " "] +[72.98117568969798, "o", "I"] +[73.01117568969798, "o", "N"] +[73.04117568969798, "o", "T"] +[73.07117568969798, "o", "O"] +[73.10117568969798, "o", " "] +[73.13117568969798, "o", "c"] +[73.16117568969798, "o", "u"] +[73.19117568969799, "o", "s"] +[73.22117568969799, "o", "t"] +[73.25117568969799, "o", "o"] +[73.28117568969799, "o", "m"] +[73.31117568969799, "o", "e"] +[73.34117568969799, "o", "r"] +[73.37117568969799, "o", "s"] +[73.401175689698, "o", " "] +[73.431175689698, "o", "("] +[73.461175689698, "o", "n"] +[73.491175689698, "o", "a"] +[73.521175689698, "o", "m"] +[73.551175689698, "o", "e"] +[73.581175689698, "o", ","] +[73.611175689698, "o", " "] +[73.641175689698, "o", "r"] +[73.671175689698, "o", "e"] +[73.701175689698, "o", "g"] +[73.731175689698, "o", "i"] +[73.761175689698, "o", "s"] +[73.79117568969801, "o", "t"] +[73.82117568969801, "o", "r"] +[73.85117568969801, "o", "a"] +[73.88117568969801, "o", "t"] +[73.91117568969801, "o", "i"] +[73.94117568969801, "o", "o"] +[73.97117568969801, "o", "n"] +[74.00117568969802, "o", "_"] +[74.03117568969802, "o", "t"] +[74.06117568969802, "o", "i"] +[74.09117568969802, "o", "m"] +[74.12117568969802, "o", "e"] +[74.15117568969802, "o", ")"] +[74.18117568969802, "o", " "] +[74.21117568969802, "o", "V"] +[74.24117568969803, "o", "A"] +[74.27117568969803, "o", "L"] +[74.30117568969803, "o", "U"] +[74.33117568969803, "o", "E"] +[74.36117568969803, "o", "S"] +[74.39117568969803, "o", " "] +[74.42117568969803, "o", "\\"] +[74.45117568969803, "o", "\r\n "] +[74.48117568969803, "o", "("] +[74.51117568969804, "o", "'"] +[74.54117568969804, "o", "J"] +[74.57117568969804, "o", "a"] +[74.60117568969804, "o", "c"] +[74.63117568969804, "o", "k"] +[74.66117568969804, "o", " "] +[74.69117568969804, "o", "S"] +[74.72117568969804, "o", "a"] +[74.75117568969804, "o", "m"] +[74.78117568969805, "o", "p"] +[74.81117568969805, "o", "l"] +[74.84117568969805, "o", "e"] +[74.87117568969805, "o", "'"] +[74.90117568969805, "o", ","] +[74.93117568969805, "o", " "] +[74.96117568969805, "o", "'"] +[74.99117568969805, "o", "2"] +[75.02117568969805, "o", "0"] +[75.05117568969806, "o", "2"] +[75.08117568969806, "o", "0"] +[75.11117568969806, "o", "-"] +[75.14117568969806, "o", "0"] +[75.17117568969806, "o", "4"] +[75.20117568969806, "o", "-"] +[75.23117568969806, "o", "2"] +[75.26117568969806, "o", "0"] +[75.29117568969806, "o", " "] +[75.32117568969807, "o", "1"] +[75.35117568969807, "o", "4"] +[75.38117568969807, "o", ":"] +[75.41117568969807, "o", "0"] +[75.44117568969807, "o", "3"] +[75.47117568969807, "o", ":"] +[75.50117568969807, "o", "4"] +[75.53117568969807, "o", "8"] +[75.56117568969808, "o", "'"] +[75.59117568969808, "o", ")"] +[75.62117568969808, "o", ";"] +[75.65117568969808, "o", " "] +[75.68117568969808, "o", "\\"] +[75.71117568969808, "o", "\r\n "] +[75.74117568969808, "o", "I"] +[75.77117568969808, "o", "N"] +[75.80117568969808, "o", "S"] +[75.83117568969809, "o", "E"] +[75.86117568969809, "o", "R"] +[75.89117568969809, "o", "T"] +[75.92117568969809, "o", " "] +[75.95117568969809, "o", "I"] +[75.98117568969809, "o", "N"] +[76.01117568969809, "o", "T"] +[76.0411756896981, "o", "O"] +[76.0711756896981, "o", " "] +[76.1011756896981, "o", "o"] +[76.1311756896981, "o", "r"] +[76.1611756896981, "o", "d"] +[76.1911756896981, "o", "e"] +[76.2211756896981, "o", "r"] +[76.2511756896981, "o", "s"] +[76.2811756896981, "o", " "] +[76.3111756896981, "o", "("] +[76.3411756896981, "o", "c"] +[76.3711756896981, "o", "u"] +[76.4011756896981, "o", "s"] +[76.43117568969811, "o", "t"] +[76.46117568969811, "o", "o"] +[76.49117568969811, "o", "m"] +[76.52117568969811, "o", "e"] +[76.55117568969811, "o", "r"] +[76.58117568969811, "o", "_"] +[76.61117568969811, "o", "i"] +[76.64117568969812, "o", "d"] +[76.67117568969812, "o", ","] +[76.70117568969812, "o", " "] +[76.73117568969812, "o", "q"] +[76.76117568969812, "o", "u"] +[76.79117568969812, "o", "a"] +[76.82117568969812, "o", "n"] +[76.85117568969812, "o", "t"] +[76.88117568969813, "o", "i"] +[76.91117568969813, "o", "t"] +[76.94117568969813, "o", "y"] +[76.97117568969813, "o", ","] +[77.00117568969813, "o", " "] +[77.03117568969813, "o", "i"] +[77.06117568969813, "o", "t"] +[77.09117568969813, "o", "e"] +[77.12117568969813, "o", "m"] +[77.15117568969814, "o", "_"] +[77.18117568969814, "o", "n"] +[77.21117568969814, "o", "a"] +[77.24117568969814, "o", "m"] +[77.27117568969814, "o", "e"] +[77.30117568969814, "o", ","] +[77.33117568969814, "o", " "] +[77.36117568969814, "o", "p"] +[77.39117568969814, "o", "l"] +[77.42117568969815, "o", "a"] +[77.45117568969815, "o", "c"] +[77.48117568969815, "o", "e"] +[77.51117568969815, "o", "d"] +[77.54117568969815, "o", "_"] +[77.57117568969815, "o", "t"] +[77.60117568969815, "o", "i"] +[77.63117568969815, "o", "m"] +[77.66117568969815, "o", "e"] +[77.69117568969816, "o", ")"] +[77.72117568969816, "o", " "] +[77.75117568969816, "o", "V"] +[77.78117568969816, "o", "A"] +[77.81117568969816, "o", "L"] +[77.84117568969816, "o", "U"] +[77.87117568969816, "o", "E"] +[77.90117568969816, "o", "S"] +[77.93117568969816, "o", " "] +[77.96117568969817, "o", "\\"] +[77.99117568969817, "o", "\r\n "] +[78.02117568969817, "o", "("] +[78.05117568969817, "o", "4"] +[78.08117568969817, "o", ","] +[78.11117568969817, "o", " "] +[78.14117568969817, "o", "5"] +[78.17117568969817, "o", ","] +[78.20117568969818, "o", " "] +[78.23117568969818, "o", "'"] +[78.26117568969818, "o", "T"] +[78.29117568969818, "o", "o"] +[78.32117568969818, "o", "i"] +[78.35117568969818, "o", "l"] +[78.38117568969818, "o", "e"] +[78.41117568969818, "o", "t"] +[78.44117568969818, "o", " "] +[78.47117568969819, "o", "R"] +[78.50117568969819, "o", "o"] +[78.53117568969819, "o", "l"] +[78.56117568969819, "o", "l"] +[78.59117568969819, "o", "'"] +[78.62117568969819, "o", ","] +[78.65117568969819, "o", " "] +[78.6811756896982, "o", "'"] +[78.7111756896982, "o", "2"] +[78.7411756896982, "o", "0"] +[78.7711756896982, "o", "2"] +[78.8011756896982, "o", "0"] +[78.8311756896982, "o", "-"] +[78.8611756896982, "o", "0"] +[78.8911756896982, "o", "4"] +[78.9211756896982, "o", "-"] +[78.9511756896982, "o", "2"] +[78.9811756896982, "o", "0"] +[79.0111756896982, "o", " "] +[79.0411756896982, "o", "1"] +[79.07117568969821, "o", "4"] +[79.10117568969821, "o", ":"] +[79.13117568969821, "o", "0"] +[79.16117568969821, "o", "5"] +[79.19117568969821, "o", ":"] +[79.22117568969821, "o", "1"] +[79.25117568969821, "o", "7"] +[79.28117568969822, "o", "'"] +[79.31117568969822, "o", ")"] +[79.34117568969822, "o", ";"] +[79.37117568969822, "o", "\""] +[79.40117568969822, "o", "\r\n"] +[79.43117568969822, "o", "\u001b[0m"] +[79.46117568969822, "o", "\r\n"] +[79.49117568969822, "o", "\u001b[1m"] +[79.52117568969823, "o", "\u001b[36m"] +[79.55117568969823, "o", "\u001b[91m"] +[79.58117568969823, "o", "$"] +[79.61117568969823, "o", " "] +[79.64117568969823, "o", "\u001b[0m"] +[84.67117568969823, "o", "\u001b[H"] +[84.70117568969823, "o", "\u001b[J"] +[84.73117568969823, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The change propagates to the subscriber and gets"] +[84.76117568969823, "o", "\r\n"] +[84.79117568969824, "o", "$ # captured by Splitgraph's change tracking\r\n"] +[84.82117568969824, "o", "$"] +[84.85117568969824, "o", " "] +[84.88117568969824, "o", "s"] +[84.91117568969824, "o", "g"] +[84.94117568969824, "o", "r"] +[84.97117568969824, "o", " "] +[85.00117568969824, "o", "d"] +[85.03117568969824, "o", "i"] +[85.06117568969825, "o", "f"] +[85.09117568969825, "o", "f"] +[85.12117568969825, "o", " "] +[85.15117568969825, "o", "-"] +[85.18117568969825, "o", "v"] +[85.21117568969825, "o", " "] +[85.24117568969825, "o", "p"] +[85.27117568969825, "o", "r"] +[85.30117568969825, "o", "o"] +[85.33117568969826, "o", "d"] +[85.36117568969826, "o", "u"] +[85.39117568969826, "o", "c"] +[85.42117568969826, "o", "t"] +[85.45117568969826, "o", "i"] +[85.48117568969826, "o", "o"] +[85.51117568969826, "o", "n"] +[85.54117568969826, "o", "_"] +[85.57117568969826, "o", "d"] +[85.60117568969827, "o", "a"] +[85.63117568969827, "o", "t"] +[85.66117568969827, "o", "a"] +[85.69117568969827, "o", "\r\n"] +[85.72117568969827, "o", "\u001b[0m"] +[85.75117568969827, "o", "\r\n"] +[86.36816506385904, "o", "Between 9d1e5c3f50cf and the current working copy: \r\n"] +[86.36844997406106, "o", "customers: added 1 row.\r\n+ (4, 'Jack Sample', datetime.datetime(2020, 4, 20, 14, 3, 48))\r\n"] +[86.36877326965433, "o", "orders: added 2 rows, removed 2 rows.\r\n- (2, 1, 20, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n- (5, 1, 50, 'Surgical Mask', datetime.datetime(2020, 4, 2, 11, 29, 42))\r\n+ (2, 1, 25, 'Hand Sanitizer', datetime.datetime(2020, 3, 16, 2, 0))\r\n+ (6, 4, 5, 'Toilet Roll', datetime.datetime(2020, 4, 20, 14, 5, 17))\r\n"] +[86.39877326965433, "o", "\u001b[1m"] +[86.42877326965433, "o", "\u001b[36m"] +[86.45877326965433, "o", "\u001b[91m"] +[86.48877326965433, "o", "$"] +[86.51877326965433, "o", " "] +[86.54877326965433, "o", "\u001b[0m"] +[91.57877326965433, "o", "\u001b[H"] +[91.60877326965434, "o", "\u001b[J"] +[91.63877326965434, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Committing creates a new image, snapshotting the state."] +[91.66877326965434, "o", "\r\n"] +[91.69877326965434, "o", "$"] +[91.72877326965434, "o", " "] +[91.75877326965434, "o", "s"] +[91.78877326965434, "o", "g"] +[91.81877326965434, "o", "r"] +[91.84877326965434, "o", " "] +[91.87877326965435, "o", "c"] +[91.90877326965435, "o", "o"] +[91.93877326965435, "o", "m"] +[91.96877326965435, "o", "m"] +[91.99877326965435, "o", "i"] +[92.02877326965435, "o", "t"] +[92.05877326965435, "o", " "] +[92.08877326965435, "o", "p"] +[92.11877326965435, "o", "r"] +[92.14877326965436, "o", "o"] +[92.17877326965436, "o", "d"] +[92.20877326965436, "o", "u"] +[92.23877326965436, "o", "c"] +[92.26877326965436, "o", "t"] +[92.29877326965436, "o", "i"] +[92.32877326965436, "o", "o"] +[92.35877326965436, "o", "n"] +[92.38877326965437, "o", "_"] +[92.41877326965437, "o", "d"] +[92.44877326965437, "o", "a"] +[92.47877326965437, "o", "t"] +[92.50877326965437, "o", "a"] +[92.53877326965437, "o", "\r\n"] +[92.56877326965437, "o", "$"] +[92.59877326965437, "o", " "] +[92.62877326965437, "o", "s"] +[92.65877326965438, "o", "g"] +[92.68877326965438, "o", "r"] +[92.71877326965438, "o", " "] +[92.74877326965438, "o", "t"] +[92.77877326965438, "o", "a"] +[92.80877326965438, "o", "g"] +[92.83877326965438, "o", " "] +[92.86877326965438, "o", "p"] +[92.89877326965438, "o", "r"] +[92.92877326965439, "o", "o"] +[92.95877326965439, "o", "d"] +[92.98877326965439, "o", "u"] +[93.01877326965439, "o", "c"] +[93.04877326965439, "o", "t"] +[93.07877326965439, "o", "i"] +[93.10877326965439, "o", "o"] +[93.1387732696544, "o", "n"] +[93.1687732696544, "o", "_"] +[93.1987732696544, "o", "d"] +[93.2287732696544, "o", "a"] +[93.2587732696544, "o", "t"] +[93.2887732696544, "o", "a"] +[93.3187732696544, "o", " "] +[93.3487732696544, "o", "c"] +[93.3787732696544, "o", "u"] +[93.4087732696544, "o", "r"] +[93.4387732696544, "o", "r"] +[93.4687732696544, "o", "e"] +[93.49877326965441, "o", "n"] +[93.52877326965441, "o", "t"] +[93.55877326965441, "o", "_"] +[93.58877326965441, "o", "s"] +[93.61877326965441, "o", "n"] +[93.64877326965441, "o", "a"] +[93.67877326965441, "o", "p"] +[93.70877326965442, "o", "s"] +[93.73877326965442, "o", "h"] +[93.76877326965442, "o", "o"] +[93.79877326965442, "o", "t"] +[93.82877326965442, "o", "\r\n"] +[93.85877326965442, "o", "$"] +[93.88877326965442, "o", " "] +[93.91877326965442, "o", "s"] +[93.94877326965442, "o", "g"] +[93.97877326965443, "o", "r"] +[94.00877326965443, "o", " "] +[94.03877326965443, "o", "s"] +[94.06877326965443, "o", "h"] +[94.09877326965443, "o", "o"] +[94.12877326965443, "o", "w"] +[94.15877326965443, "o", " "] +[94.18877326965443, "o", "p"] +[94.21877326965443, "o", "r"] +[94.24877326965444, "o", "o"] +[94.27877326965444, "o", "d"] +[94.30877326965444, "o", "u"] +[94.33877326965444, "o", "c"] +[94.36877326965444, "o", "t"] +[94.39877326965444, "o", "i"] +[94.42877326965444, "o", "o"] +[94.45877326965444, "o", "n"] +[94.48877326965444, "o", "_"] +[94.51877326965445, "o", "d"] +[94.54877326965445, "o", "a"] +[94.57877326965445, "o", "t"] +[94.60877326965445, "o", "a"] +[94.63877326965445, "o", ":"] +[94.66877326965445, "o", "c"] +[94.69877326965445, "o", "u"] +[94.72877326965445, "o", "r"] +[94.75877326965445, "o", "r"] +[94.78877326965446, "o", "e"] +[94.81877326965446, "o", "n"] +[94.84877326965446, "o", "t"] +[94.87877326965446, "o", "_"] +[94.90877326965446, "o", "s"] +[94.93877326965446, "o", "n"] +[94.96877326965446, "o", "a"] +[94.99877326965446, "o", "p"] +[95.02877326965447, "o", "s"] +[95.05877326965447, "o", "h"] +[95.08877326965447, "o", "o"] +[95.11877326965447, "o", "t"] +[95.14877326965447, "o", "\r\n"] +[95.17877326965447, "o", "\u001b[0m"] +[95.20877326965447, "o", "\r\n"] +[95.64292181968804, "o", "Committing production_data...\r\n"] +[95.69318474769707, "o", "Committed production_data as 370d012c8aa7.\r\n"] +[96.1381820583355, "o", "Tagged production_data:370d012c8aa711617bf3480098121e3f26bd5d3d5bbf383184aee9fb9c4f14a6 with current_snapshot.\r\n"] +[96.56138862609978, "o", "Image production_data:370d012c8aa711617bf3480098121e3f26bd5d3d5bbf383184aee9fb9c4f14a6\r\n\r\n"] +[96.56141270637627, "o", "Created at 2021-12-17T19:41:57.593779\r\n"] +[96.56281937599297, "o", "Size: 1.11 KiB\r\n"] +[96.56283201217767, "o", "Parent: 9d1e5c3f50cff7ea96054b452ead3f3f37ec7c10ef20ffd0df418b9d8ae5f1d8\r\n\r\nTables:\r\n"] +[96.56353701591607, "o", " customers\r\n orders\r\n"] +[96.59353701591607, "o", "\u001b[1m"] +[96.62353701591607, "o", "\u001b[36m"] +[96.65353701591607, "o", "\u001b[91m"] +[96.68353701591607, "o", "$"] +[96.71353701591607, "o", " "] +[96.74353701591608, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/latest/postgrest.cast b/content/casts/versioned/latest/postgrest.cast index aa2d983c..cd194b62 100644 --- a/content/casts/versioned/latest/postgrest.cast +++ b/content/casts/versioned/latest/postgrest.cast @@ -1,4 +1,4 @@ -{"version": 2, "width": 100, "height": 16, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1615571782, "metadata": {"tss": [{"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 0.06}, {"h": "Also create another image so we can switch between them.", "ts": 12.76806082725526}, {"h": "Check out the original version of the dataset and look at the API spec for it.", "ts": 25.31330688476571}, {"h": "Get all rows in the table", "ts": 37.00679930686978}, {"h": "Run a query selecting one row", "ts": 43.68104188919101}, {"h": "Run the query against the new version of the dataset.", "ts": 52.35149129867601}]}} +{"version": 2, "width": 100, "height": 16, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1639770120, "metadata": {"tss": [{"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 0.06}, {"h": "Also create another image so we can switch between them.", "ts": 13.452977085113531}, {"h": "Check out the original version of the dataset and look at the API spec for it.", "ts": 26.45180781364453}, {"h": "Get all rows in the table", "ts": 38.26041230201752}, {"h": "Run a query selecting one row", "ts": 44.94514172554053}, {"h": "Run the query against the new version of the dataset.", "ts": 53.62186750412038}]}} [0.03, "o", "\u001b[H"] [0.06, "o", "\u001b[J"] [0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] @@ -221,946 +221,1019 @@ [6.60000000000001, "o", "\r\n"] [6.6300000000000106, "o", "\u001b[0m"] [6.660000000000011, "o", "\r\n"] -[6.892354640960704, "o", "Initialized empty repository demo/weather\r\n"] -[7.100505266189586, "o", "Committing demo/weather...\r\n"] -[7.124646577835094, "o", "Processing table rdu\r\n"] -[7.324979457855235, "o", "Committed demo/weather as 6a0122d5f19c.\r\n"] -[7.52806082725526, "o", "Tagged demo/weather:6a0122d5f19cf1ebf786fa32a1f64cfbe9266663dd1a2e3fe7f419535a2479bd with initial_data.\r\n"] -[7.55806082725526, "o", "\u001b[1m"] -[7.58806082725526, "o", "\u001b[36m"] -[7.618060827255261, "o", "\u001b[91m"] -[7.648060827255261, "o", "$"] -[7.678060827255261, "o", " "] -[7.708060827255261, "o", "\u001b[0m"] -[12.73806082725526, "o", "\u001b[H"] -[12.76806082725526, "o", "\u001b[J"] -[12.79806082725526, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Also create another image so we can switch between them."] -[12.828060827255259, "o", "\r\n"] -[12.858060827255258, "o", "$"] -[12.888060827255257, "o", " "] -[12.918060827255257, "o", "s"] -[12.948060827255256, "o", "g"] -[12.978060827255256, "o", "r"] -[13.008060827255255, "o", " "] -[13.038060827255254, "o", "s"] -[13.068060827255254, "o", "q"] -[13.098060827255253, "o", "l"] -[13.128060827255252, "o", " "] -[13.158060827255252, "o", "-"] -[13.188060827255251, "o", "s"] -[13.21806082725525, "o", " "] -[13.24806082725525, "o", "d"] -[13.27806082725525, "o", "e"] -[13.308060827255249, "o", "m"] -[13.338060827255248, "o", "o"] -[13.368060827255247, "o", "/"] -[13.398060827255247, "o", "w"] -[13.428060827255246, "o", "e"] -[13.458060827255245, "o", "a"] -[13.488060827255245, "o", "t"] -[13.518060827255244, "o", "h"] -[13.548060827255243, "o", "e"] -[13.578060827255243, "o", "r"] -[13.608060827255242, "o", " "] -[13.638060827255241, "o", "\""] -[13.66806082725524, "o", "U"] -[13.69806082725524, "o", "P"] -[13.72806082725524, "o", "D"] -[13.758060827255239, "o", "A"] -[13.788060827255238, "o", "T"] -[13.818060827255238, "o", "E"] -[13.848060827255237, "o", " "] -[13.878060827255236, "o", "r"] -[13.908060827255236, "o", "d"] -[13.938060827255235, "o", "u"] -[13.968060827255234, "o", " "] -[13.998060827255234, "o", "S"] -[14.028060827255233, "o", "E"] -[14.058060827255233, "o", "T"] -[14.088060827255232, "o", " "] -[14.118060827255231, "o", "p"] -[14.14806082725523, "o", "r"] -[14.17806082725523, "o", "e"] -[14.20806082725523, "o", "c"] -[14.238060827255229, "o", "i"] -[14.268060827255228, "o", "p"] -[14.298060827255227, "o", "i"] -[14.328060827255227, "o", "t"] -[14.358060827255226, "o", "a"] -[14.388060827255226, "o", "t"] -[14.418060827255225, "o", "i"] -[14.448060827255224, "o", "o"] -[14.478060827255224, "o", "n"] -[14.508060827255223, "o", " "] -[14.538060827255222, "o", "="] -[14.568060827255222, "o", " "] -[14.598060827255221, "o", "p"] -[14.62806082725522, "o", "r"] -[14.65806082725522, "o", "e"] -[14.688060827255219, "o", "c"] -[14.718060827255218, "o", "i"] -[14.748060827255218, "o", "p"] -[14.778060827255217, "o", "i"] -[14.808060827255217, "o", "t"] -[14.838060827255216, "o", "a"] -[14.868060827255215, "o", "t"] -[14.898060827255215, "o", "i"] -[14.928060827255214, "o", "o"] -[14.958060827255213, "o", "n"] -[14.988060827255213, "o", " "] -[15.018060827255212, "o", "*"] -[15.048060827255211, "o", " "] -[15.07806082725521, "o", "1"] -[15.10806082725521, "o", "."] -[15.13806082725521, "o", "2"] -[15.168060827255209, "o", " "] -[15.198060827255208, "o", "W"] -[15.228060827255208, "o", "H"] -[15.258060827255207, "o", "E"] -[15.288060827255206, "o", "R"] -[15.318060827255206, "o", "E"] -[15.348060827255205, "o", " "] -[15.378060827255204, "o", "E"] -[15.408060827255204, "o", "X"] -[15.438060827255203, "o", "T"] -[15.468060827255202, "o", "R"] -[15.498060827255202, "o", "A"] -[15.528060827255201, "o", "C"] -[15.5580608272552, "o", "T"] -[15.5880608272552, "o", " "] -[15.6180608272552, "o", "("] -[15.648060827255199, "o", "y"] -[15.678060827255198, "o", "e"] -[15.708060827255197, "o", "a"] -[15.738060827255197, "o", "r"] -[15.768060827255196, "o", " "] -[15.798060827255195, "o", "F"] -[15.828060827255195, "o", "R"] -[15.858060827255194, "o", "O"] -[15.888060827255194, "o", "M"] -[15.918060827255193, "o", " "] -[15.948060827255192, "o", "d"] -[15.978060827255192, "o", "a"] -[16.008060827255193, "o", "t"] -[16.038060827255194, "o", "e"] -[16.068060827255195, "o", ")"] -[16.098060827255196, "o", " "] -[16.128060827255197, "o", "="] -[16.1580608272552, "o", " "] -[16.1880608272552, "o", "2"] -[16.2180608272552, "o", "0"] -[16.248060827255202, "o", "1"] -[16.278060827255203, "o", "2"] -[16.308060827255204, "o", "\""] -[16.338060827255205, "o", "\r\n"] -[16.368060827255206, "o", "$"] -[16.398060827255208, "o", " "] -[16.42806082725521, "o", "s"] -[16.45806082725521, "o", "g"] -[16.48806082725521, "o", "r"] -[16.518060827255212, "o", " "] -[16.548060827255213, "o", "c"] -[16.578060827255214, "o", "o"] -[16.608060827255215, "o", "m"] -[16.638060827255217, "o", "m"] -[16.668060827255218, "o", "i"] -[16.69806082725522, "o", "t"] -[16.72806082725522, "o", " "] -[16.75806082725522, "o", "-"] -[16.788060827255222, "o", "m"] -[16.818060827255223, "o", " "] -[16.848060827255225, "o", "\""] -[16.878060827255226, "o", "R"] -[16.908060827255227, "o", "e"] -[16.938060827255228, "o", "v"] -[16.96806082725523, "o", "i"] -[16.99806082725523, "o", "s"] -[17.02806082725523, "o", "i"] -[17.058060827255233, "o", "o"] -[17.088060827255234, "o", "n"] -[17.118060827255235, "o", " "] -[17.148060827255236, "o", "t"] -[17.178060827255237, "o", "o"] -[17.208060827255238, "o", " "] -[17.23806082725524, "o", "t"] -[17.26806082725524, "o", "h"] -[17.29806082725524, "o", "e"] -[17.328060827255243, "o", " "] -[17.358060827255244, "o", "2"] -[17.388060827255245, "o", "0"] -[17.418060827255246, "o", "1"] -[17.448060827255247, "o", "2"] -[17.47806082725525, "o", " "] -[17.50806082725525, "o", "r"] -[17.53806082725525, "o", "a"] -[17.568060827255252, "o", "i"] -[17.598060827255253, "o", "n"] -[17.628060827255254, "o", "f"] -[17.658060827255255, "o", "a"] -[17.688060827255256, "o", "l"] -[17.718060827255258, "o", "l"] -[17.74806082725526, "o", " "] -[17.77806082725526, "o", "d"] -[17.80806082725526, "o", "a"] -[17.838060827255262, "o", "t"] -[17.868060827255263, "o", "a"] -[17.898060827255264, "o", "\""] -[17.928060827255266, "o", " "] -[17.958060827255267, "o", "d"] -[17.988060827255268, "o", "e"] -[18.01806082725527, "o", "m"] -[18.04806082725527, "o", "o"] -[18.07806082725527, "o", "/"] -[18.108060827255272, "o", "w"] -[18.138060827255273, "o", "e"] -[18.168060827255275, "o", "a"] -[18.198060827255276, "o", "t"] -[18.228060827255277, "o", "h"] -[18.258060827255278, "o", "e"] -[18.28806082725528, "o", "r"] -[18.31806082725528, "o", "\r\n"] -[18.34806082725528, "o", "$"] -[18.378060827255283, "o", " "] -[18.408060827255284, "o", "s"] -[18.438060827255285, "o", "g"] -[18.468060827255286, "o", "r"] -[18.498060827255287, "o", " "] -[18.52806082725529, "o", "t"] -[18.55806082725529, "o", "a"] -[18.58806082725529, "o", "g"] -[18.61806082725529, "o", " "] -[18.648060827255293, "o", "d"] -[18.678060827255294, "o", "e"] -[18.708060827255295, "o", "m"] -[18.738060827255296, "o", "o"] -[18.768060827255297, "o", "/"] -[18.7980608272553, "o", "w"] -[18.8280608272553, "o", "e"] -[18.8580608272553, "o", "a"] -[18.888060827255302, "o", "t"] -[18.918060827255303, "o", "h"] -[18.948060827255304, "o", "e"] -[18.978060827255305, "o", "r"] -[19.008060827255306, "o", " "] -[19.038060827255308, "o", "r"] -[19.06806082725531, "o", "e"] -[19.09806082725531, "o", "v"] -[19.12806082725531, "o", "i"] -[19.158060827255312, "o", "s"] -[19.188060827255313, "o", "e"] -[19.218060827255314, "o", "d"] -[19.248060827255316, "o", "_"] -[19.278060827255317, "o", "d"] -[19.308060827255318, "o", "a"] -[19.33806082725532, "o", "t"] -[19.36806082725532, "o", "a"] -[19.39806082725532, "o", "\r\n"] -[19.428060827255322, "o", "\u001b[0m"] -[19.458060827255323, "o", "\r\n"] -[19.66926201820381, "o", "Committing demo/weather...\r\n"] -[19.702408876419142, "o", "Storing and indexing table rdu\r\n"] -[19.86930045127876, "o", "Committed demo/weather as 5a60375bd3aa.\r\n"] -[20.0733068847657, "o", "Tagged demo/weather:5a60375bd3aa5cd0938bd2db7573417373469fb222e3fa129ed9acc9fcce4b80 with revised_data.\r\n"] -[20.1033068847657, "o", "\u001b[1m"] -[20.1333068847657, "o", "\u001b[36m"] -[20.163306884765703, "o", "\u001b[91m"] -[20.193306884765704, "o", "$"] -[20.223306884765705, "o", " "] -[20.253306884765706, "o", "\u001b[0m"] -[25.283306884765707, "o", "\u001b[H"] -[25.31330688476571, "o", "\u001b[J"] -[25.34330688476571, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the original version of the dataset and look at the API spec for it."] -[25.37330688476571, "o", "\r\n"] -[25.403306884765712, "o", "$ # For this, we need to restart PostgREST so that it picks up the new schema.\r\n"] -[25.433306884765713, "o", "$"] -[25.463306884765714, "o", " "] -[25.493306884765715, "o", "d"] -[25.523306884765717, "o", "o"] -[25.553306884765718, "o", "c"] -[25.58330688476572, "o", "k"] -[25.61330688476572, "o", "e"] -[25.64330688476572, "o", "r"] -[25.673306884765722, "o", "-"] -[25.703306884765723, "o", "c"] -[25.733306884765724, "o", "o"] -[25.763306884765726, "o", "m"] -[25.793306884765727, "o", "p"] -[25.823306884765728, "o", "o"] -[25.85330688476573, "o", "s"] -[25.88330688476573, "o", "e"] -[25.91330688476573, "o", " "] -[25.943306884765732, "o", "-"] -[25.973306884765734, "o", "-"] -[26.003306884765735, "o", "p"] -[26.033306884765736, "o", "r"] -[26.063306884765737, "o", "o"] -[26.093306884765738, "o", "j"] -[26.12330688476574, "o", "e"] -[26.15330688476574, "o", "c"] -[26.18330688476574, "o", "t"] -[26.213306884765743, "o", "-"] -[26.243306884765744, "o", "n"] -[26.273306884765745, "o", "a"] -[26.303306884765746, "o", "m"] -[26.333306884765747, "o", "e"] -[26.36330688476575, "o", " "] -[26.39330688476575, "o", "s"] -[26.42330688476575, "o", "p"] -[26.45330688476575, "o", "l"] -[26.483306884765753, "o", "i"] -[26.513306884765754, "o", "t"] -[26.543306884765755, "o", "g"] -[26.573306884765756, "o", "r"] -[26.603306884765757, "o", "a"] -[26.63330688476576, "o", "p"] -[26.66330688476576, "o", "h"] -[26.69330688476576, "o", "_"] -[26.723306884765762, "o", "e"] -[26.753306884765763, "o", "x"] -[26.783306884765764, "o", "a"] -[26.813306884765765, "o", "m"] -[26.843306884765767, "o", "p"] -[26.873306884765768, "o", "l"] -[26.90330688476577, "o", "e"] -[26.93330688476577, "o", " "] -[26.96330688476577, "o", "r"] -[26.993306884765772, "o", "e"] -[27.023306884765773, "o", "s"] -[27.053306884765774, "o", "t"] -[27.083306884765776, "o", "a"] -[27.113306884765777, "o", "r"] -[27.143306884765778, "o", "t"] -[27.17330688476578, "o", " "] -[27.20330688476578, "o", "p"] -[27.23330688476578, "o", "o"] -[27.263306884765782, "o", "s"] -[27.293306884765784, "o", "t"] -[27.323306884765785, "o", "g"] -[27.353306884765786, "o", "r"] -[27.383306884765787, "o", "e"] -[27.413306884765788, "o", "s"] -[27.44330688476579, "o", "t"] -[27.47330688476579, "o", "\r\n"] -[27.50330688476579, "o", "$"] -[27.533306884765793, "o", " "] -[27.563306884765794, "o", "s"] -[27.593306884765795, "o", "g"] -[27.623306884765796, "o", "r"] -[27.653306884765797, "o", " "] -[27.6833068847658, "o", "c"] -[27.7133068847658, "o", "h"] -[27.7433068847658, "o", "e"] -[27.773306884765802, "o", "c"] -[27.803306884765803, "o", "k"] -[27.833306884765804, "o", "o"] -[27.863306884765805, "o", "u"] -[27.893306884765806, "o", "t"] -[27.923306884765807, "o", " "] -[27.95330688476581, "o", "d"] -[27.98330688476581, "o", "e"] -[28.01330688476581, "o", "m"] -[28.043306884765812, "o", "o"] -[28.073306884765813, "o", "/"] -[28.103306884765814, "o", "w"] -[28.133306884765815, "o", "e"] -[28.163306884765817, "o", "a"] -[28.193306884765818, "o", "t"] -[28.22330688476582, "o", "h"] -[28.25330688476582, "o", "e"] -[28.28330688476582, "o", "r"] -[28.313306884765822, "o", ":"] -[28.343306884765823, "o", "i"] -[28.373306884765825, "o", "n"] -[28.403306884765826, "o", "i"] -[28.433306884765827, "o", "t"] -[28.463306884765828, "o", "i"] -[28.49330688476583, "o", "a"] -[28.52330688476583, "o", "l"] -[28.55330688476583, "o", "_"] -[28.583306884765832, "o", "d"] -[28.613306884765834, "o", "a"] -[28.643306884765835, "o", "t"] -[28.673306884765836, "o", "a"] -[28.703306884765837, "o", "\r\n"] -[28.733306884765838, "o", "$"] -[28.76330688476584, "o", " "] -[28.79330688476584, "o", "c"] -[28.82330688476584, "o", "u"] -[28.853306884765843, "o", "r"] -[28.883306884765844, "o", "l"] -[28.913306884765845, "o", " "] -[28.943306884765846, "o", "h"] -[28.973306884765847, "o", "t"] -[29.00330688476585, "o", "t"] -[29.03330688476585, "o", "p"] -[29.06330688476585, "o", ":"] -[29.093306884765852, "o", "/"] -[29.123306884765853, "o", "/"] -[29.153306884765854, "o", "l"] -[29.183306884765855, "o", "o"] -[29.213306884765856, "o", "c"] -[29.243306884765857, "o", "a"] -[29.27330688476586, "o", "l"] -[29.30330688476586, "o", "h"] -[29.33330688476586, "o", "o"] -[29.363306884765862, "o", "s"] -[29.393306884765863, "o", "t"] -[29.423306884765864, "o", ":"] -[29.453306884765865, "o", "8"] -[29.483306884765867, "o", "0"] -[29.513306884765868, "o", "8"] -[29.54330688476587, "o", "0"] -[29.57330688476587, "o", "/"] -[29.60330688476587, "o", " "] -[29.633306884765872, "o", "|"] -[29.663306884765873, "o", " "] -[29.693306884765875, "o", "c"] -[29.723306884765876, "o", "u"] -[29.753306884765877, "o", "t"] -[29.783306884765878, "o", " "] -[29.81330688476588, "o", "-"] -[29.84330688476588, "o", "c"] -[29.87330688476588, "o", " "] -[29.903306884765883, "o", "-"] -[29.933306884765884, "o", "7"] -[29.963306884765885, "o", "9"] -[29.993306884765886, "o", "3"] -[30.023306884765887, "o", "\r\n"] -[30.053306884765888, "o", "\u001b[0m"] -[30.08330688476589, "o", "\r\n"] -[30.65768513679531, "o", "Restarting splitgraph_example_postgrest_1 ... \r\r\n"] -[31.42078576087978, "o", "\u001b[1A\u001b[2K\rRestarting splitgraph_example_postgrest_1 ... \u001b[32mdone\u001b[0m\r\u001b[1B"] -[31.733599758148458, "o", "Checked out demo/weather:6a0122d5f19c.\r\n"] -[31.74316058158901, "o", " "] -[31.743214464187886, "o", " "] -[31.743240928650167, "o", "%"] -[31.743267631531026, "o", " "] -[31.7432907581332, "o", "T"] -[31.743313646316793, "o", "o"] -[31.743336296081807, "o", "t"] -[31.743358945846822, "o", "a"] -[31.743381834030416, "o", "l"] -[31.74341259002712, "o", " "] -[31.743426895141866, "o", " "] -[31.743501520157125, "o", " % Received % "] -[31.74351034164455, "o", "Xferd Average Speed"] -[31.743514871597554, "o", " T"] -[31.743519639969136, "o", "im"] -[31.74352393150356, "o", "e "] -[31.743528223037984, "o", " "] -[31.74353203773525, "o", " T"] -[31.743535852432515, "o", "im"] -[31.74353966712978, "o", "e "] -[31.743543958664205, "o", " "] -[31.74354825019863, "o", " "] -[31.743552303314473, "o", "Ti"] -[31.743556356430318, "o", "me"] -[31.743560171127584, "o", " "] -[31.74356398582485, "o", "Cu"] -[31.743568038940694, "o", "rr"] -[31.74357209205654, "o", "en"] -[31.743578767776754, "o", "t\r\n"] -[31.743583059311177, "o", " "] -[31.743587112427022, "o", " "] -[31.743591642380025, "o", " "] -[31.74359569549587, "o", " "] -[31.743599987030294, "o", " "] -[31.74360404014614, "o", " "] -[31.743608093261983, "o", " "] -[31.743612146377828, "o", " "] -[31.743616199493673, "o", " "] -[31.743620252609517, "o", " "] -[31.743624305725362, "o", " "] -[31.743628358841207, "o", " "] -[31.74363288879421, "o", " Dload Upload Total Spe"] -[31.74363789558437, "o", "nt"] -[31.743642187118795, "o", " "] -[31.743646717071798, "o", " Le"] -[31.743650770187642, "o", "ft"] -[31.743654584884908, "o", " "] -[31.743658638000753, "o", "Sp"] -[31.743662691116597, "o", "eed"] -[31.743668889999654, "o", "\r\n\r"] -[31.743673419952657, "o", " "] -[31.7436774730685, "o", "0 "] -[31.743682241440084, "o", " "] -[31.743686532974507, "o", " 0"] -[31.743690586090352, "o", " "] -[31.743694877624776, "o", " "] -[31.743700838089254, "o", "0 "] -[31.743705129623677, "o", " "] -[31.743709182739522, "o", " "] -[31.743712997436788, "o", "0 "] -[31.743716812134053, "o", " "] -[31.743720865249898, "o", " "] -[31.743725156784322, "o", "0 "] -[31.743729209900167, "o", " "] -[31.74373326301601, "o", " "] -[31.743737554550435, "o", "0 "] -[31.74374160766628, "o", " "] -[31.743745660782125, "o", " "] -[31.74374971389797, "o", " 0"] -[31.743753528595235, "o", " "] -[31.74375758171108, "o", " "] -[31.743761634826924, "o", " "] -[31.74376521110561, "o", "0 "] -[31.74377069473293, "o", "--"] -[31.743774747848775, "o", ":-"] -[31.7437790393832, "o", "-:"] -[31.743782854080465, "o", "--"] -[31.74378690719631, "o", " "] -[31.743790721893575, "o", "--"] -[31.74379429817226, "o", ":-"] -[31.743798351288106, "o", "-:"] -[31.743804550171163, "o", "--"] -[31.74381027221706, "o", " --"] -[31.743814802170064, "o", ":-"] -[31.743819093704488, "o", "-:"] -[31.743823385238912, "o", "--"] -[31.743827438354757, "o", " "] -[31.7438314914706, "o", " "] -[31.743835306167867, "o", " 0"] -[31.765104389190938, "o", "\r"] -[31.765166616440084, "o", "100 1201"] -[31.765174722671773, "o", "0 0 12010 "] -[31.765179252624776, "o", " 0"] -[31.76518378257778, "o", " "] -[31.765187835693624, "o", " "] -[31.765192127228048, "o", " "] -[31.765196180343892, "o", " 0"] -[31.765203571319844, "o", " "] -[31.765211915970113, "o", " 53"] -[31.765216445923116, "o", "3k "] -[31.76522073745754, "o", " "] -[31.765224790573384, "o", " "] -[31.765240287781026, "o", "0 "] -[31.76525530815151, "o", "--"] -[31.76526007652309, "o", ":--:-"] -[31.765264606476094, "o", "- "] -[31.76526889801052, "o", "--"] -[31.7652736663821, "o", ":-"] -[31.765278196335103, "o", "-:"] -[31.765282487869527, "o", "--"] -[31.765289163589742, "o", " -"] -[31.765293455124166, "o", "-"] -[31.76529750824001, "o", ":"] -[31.765301561355855, "o", "--"] -[31.7653056144717, "o", ":-"] -[31.765309429168965, "o", "- "] -[31.76531348228481, "o", " 5"] -[31.765317296982076, "o", "33"] -[31.76532135009792, "o", "k"] -[31.76532707214382, "o", "\r\n"] -[31.766785001755025, "o", "{\"swagger\":\"2.0\",\"info\":{\"version\":\"7.0.1 (UNKNOWN)\",\"title\":\"PostgREST API\",\"description\":\"This is a dynamic API generated by PostgREST\"},\"host\":\"localhost:8080\",\"basePath\":\"/\",\"schemes\":[\"http\"],\"consumes\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"produces\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"paths\":{\"/\":{\"get\":{\"tags\":[\"Introspection\"],\"summary\":\"OpenAPI description (this document)\",\"produces\":[\"application/openapi+json\",\"application/json\"],\"res"] -[31.76679930686977, "o", "ponses\":{\"200\":{\"description\":\"OK\"}}}},\"/rdu\":{\"get\":{\"tags\":[\"rdu\"],\"parameters\":[{\"$ref\":\"#/parameters/rowFilter.rdu.date\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemin\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemax\"},{\"$ref\":\"#/parameters/rowFilter.rdu.precipitation\r\n"] -[31.796799306869772, "o", "\u001b[1m"] -[31.826799306869773, "o", "\u001b[36m"] -[31.856799306869775, "o", "\u001b[91m"] -[31.886799306869776, "o", "$"] -[31.916799306869777, "o", " "] -[31.946799306869778, "o", "\u001b[0m"] -[36.97679930686978, "o", "\u001b[H"] -[37.00679930686978, "o", "\u001b[J"] -[37.03679930686978, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get all rows in the table"] -[37.06679930686978, "o", "\r\n"] -[37.096799306869784, "o", "$"] -[37.126799306869785, "o", " "] -[37.156799306869786, "o", "c"] -[37.18679930686979, "o", "u"] -[37.21679930686979, "o", "r"] -[37.24679930686979, "o", "l"] -[37.27679930686979, "o", " "] -[37.30679930686979, "o", "h"] -[37.33679930686979, "o", "t"] -[37.366799306869794, "o", "t"] -[37.396799306869795, "o", "p"] -[37.426799306869796, "o", ":"] -[37.4567993068698, "o", "/"] -[37.4867993068698, "o", "/"] -[37.5167993068698, "o", "l"] -[37.5467993068698, "o", "o"] -[37.5767993068698, "o", "c"] -[37.6067993068698, "o", "a"] -[37.636799306869804, "o", "l"] -[37.666799306869805, "o", "h"] -[37.696799306869806, "o", "o"] -[37.72679930686981, "o", "s"] -[37.75679930686981, "o", "t"] -[37.78679930686981, "o", ":"] -[37.81679930686981, "o", "8"] -[37.84679930686981, "o", "0"] -[37.87679930686981, "o", "8"] -[37.906799306869814, "o", "0"] -[37.936799306869815, "o", "/"] -[37.96679930686982, "o", "r"] -[37.99679930686982, "o", "d"] -[38.02679930686982, "o", "u"] -[38.05679930686982, "o", " "] -[38.08679930686982, "o", "|"] -[38.11679930686982, "o", " "] -[38.14679930686982, "o", "w"] -[38.176799306869825, "o", "c"] -[38.206799306869826, "o", " "] -[38.23679930686983, "o", "-"] -[38.26679930686983, "o", "l"] -[38.29679930686983, "o", "\r\n"] -[38.32679930686983, "o", "\u001b[0m"] -[38.35679930686983, "o", "\r\n"] -[38.3649167442325, "o", " % T"] -[38.36494177818331, "o", "o"] -[38.36496061325106, "o", "t"] -[38.364976825714436, "o", "a"] -[38.364992799759236, "o", "l"] -[38.36500829696688, "o", " "] -[38.3650240325931, "o", " "] -[38.36503976821932, "o", " "] -[38.36505550384554, "o", " "] -[38.36507100105318, "o", "%"] -[38.365088167190876, "o", " "] -[38.36510366439852, "o", "R"] -[38.36511892318758, "o", "e"] -[38.36513561248812, "o", "c"] -[38.365152540207234, "o", "e"] -[38.365167798996296, "o", "i"] -[38.36518329620394, "o", "v"] -[38.36519879341158, "o", "e"] -[38.36521429061922, "o", "d"] -[38.36523026466402, "o", " "] -[38.36524552345308, "o", "%"] -[38.36526197433504, "o", " "] -[38.36527747154268, "o", "X"] -[38.365292730331745, "o", "f"] -[38.365308465957966, "o", "e"] -[38.36532372474703, "o", "r"] -[38.36533922195467, "o", "d"] -[38.36535495758089, "o", " "] -[38.36536902427706, "o", " "] -[38.36538404464754, "o", "A"] -[38.365401449203816, "o", "v"] -[38.365417661667195, "o", "e"] -[38.36543506622347, "o", "r"] -[38.36599153518709, "o", "age Speed Time Time Time Current\r\n Dload Upload Total Spent Left Speed\r\n"] -[38.36600035667452, "o", "\r 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0"] -[38.439474287033406, "o", "\r100 2292k 0"] -[38.43949789047274, "o", " "] -[38.43960398674044, "o", "2"] -[38.43961590766939, "o", "2"] -[38.43962687492403, "o", "9"] -[38.43963760376009, "o", "2"] -[38.43964809417757, "o", "k"] -[38.43965858459505, "o", " "] -[38.43966955184969, "o", " "] -[38.4396831417087, "o", " "] -[38.43969649314913, "o", " "] -[38.439710321426716, "o", "0"] -[38.439723672867146, "o", " "] -[38.439737024307576, "o", " "] -[38.43992370605501, "o", " 0 30.2M 0 --:--:-- --:--:-- --:--:-- 30.2M"] -[38.44003504753145, "o", "\r\n"] -[38.441041889191, "o", "4632\r\n"] -[38.471041889191, "o", "\u001b[1m"] -[38.501041889191, "o", "\u001b[36m"] -[38.531041889191, "o", "\u001b[91m"] -[38.561041889191, "o", "$"] -[38.591041889191004, "o", " "] -[38.621041889191005, "o", "\u001b[0m"] -[43.651041889191006, "o", "\u001b[H"] -[43.68104188919101, "o", "\u001b[J"] -[43.71104188919101, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a query selecting one row"] -[43.74104188919101, "o", "\r\n"] -[43.77104188919101, "o", "$"] -[43.80104188919101, "o", " "] -[43.83104188919101, "o", "c"] -[43.861041889191014, "o", "u"] -[43.891041889191015, "o", "r"] -[43.92104188919102, "o", "l"] -[43.95104188919102, "o", " "] -[43.98104188919102, "o", "\""] -[44.01104188919102, "o", "h"] -[44.04104188919102, "o", "t"] -[44.07104188919102, "o", "t"] -[44.10104188919102, "o", "p"] -[44.131041889191025, "o", ":"] -[44.161041889191026, "o", "/"] -[44.19104188919103, "o", "/"] -[44.22104188919103, "o", "l"] -[44.25104188919103, "o", "o"] -[44.28104188919103, "o", "c"] -[44.31104188919103, "o", "a"] -[44.34104188919103, "o", "l"] -[44.371041889191034, "o", "h"] -[44.401041889191035, "o", "o"] -[44.431041889191036, "o", "s"] -[44.46104188919104, "o", "t"] -[44.49104188919104, "o", ":"] -[44.52104188919104, "o", "8"] -[44.55104188919104, "o", "0"] -[44.58104188919104, "o", "8"] -[44.61104188919104, "o", "0"] -[44.641041889191044, "o", "/"] -[44.671041889191045, "o", "r"] -[44.701041889191046, "o", "d"] -[44.73104188919105, "o", "u"] -[44.76104188919105, "o", "?"] -[44.79104188919105, "o", "d"] -[44.82104188919105, "o", "a"] -[44.85104188919105, "o", "t"] -[44.88104188919105, "o", "e"] -[44.911041889191054, "o", "="] -[44.941041889191055, "o", "e"] -[44.971041889191056, "o", "q"] -[45.00104188919106, "o", "."] -[45.03104188919106, "o", "2"] -[45.06104188919106, "o", "0"] -[45.09104188919106, "o", "1"] -[45.12104188919106, "o", "2"] -[45.15104188919106, "o", "-"] -[45.181041889191064, "o", "1"] -[45.211041889191065, "o", "2"] -[45.24104188919107, "o", "-"] -[45.27104188919107, "o", "2"] -[45.30104188919107, "o", "6"] -[45.33104188919107, "o", "&"] -[45.36104188919107, "o", "s"] -[45.39104188919107, "o", "e"] -[45.42104188919107, "o", "l"] -[45.451041889191075, "o", "e"] -[45.481041889191076, "o", "c"] -[45.51104188919108, "o", "t"] -[45.54104188919108, "o", "="] -[45.57104188919108, "o", "d"] -[45.60104188919108, "o", "a"] -[45.63104188919108, "o", "t"] -[45.66104188919108, "o", "e"] -[45.691041889191084, "o", ","] -[45.721041889191085, "o", "t"] -[45.751041889191086, "o", "e"] -[45.78104188919109, "o", "m"] -[45.81104188919109, "o", "p"] -[45.84104188919109, "o", "e"] -[45.87104188919109, "o", "r"] -[45.90104188919109, "o", "a"] -[45.93104188919109, "o", "t"] -[45.961041889191094, "o", "u"] -[45.991041889191095, "o", "r"] -[46.021041889191096, "o", "e"] -[46.0510418891911, "o", "m"] -[46.0810418891911, "o", "i"] -[46.1110418891911, "o", "n"] -[46.1410418891911, "o", ","] -[46.1710418891911, "o", "t"] -[46.2010418891911, "o", "e"] -[46.231041889191104, "o", "m"] -[46.261041889191105, "o", "p"] -[46.291041889191106, "o", "e"] -[46.32104188919111, "o", "r"] -[46.35104188919111, "o", "a"] -[46.38104188919111, "o", "t"] -[46.41104188919111, "o", "u"] -[46.44104188919111, "o", "r"] -[46.47104188919111, "o", "e"] -[46.501041889191114, "o", "m"] -[46.531041889191116, "o", "a"] -[46.56104188919112, "o", "x"] -[46.59104188919112, "o", ","] -[46.62104188919112, "o", "p"] -[46.65104188919112, "o", "r"] -[46.68104188919112, "o", "e"] -[46.71104188919112, "o", "c"] -[46.74104188919112, "o", "i"] -[46.771041889191125, "o", "p"] -[46.801041889191126, "o", "i"] -[46.83104188919113, "o", "t"] -[46.86104188919113, "o", "a"] -[46.89104188919113, "o", "t"] -[46.92104188919113, "o", "i"] -[46.95104188919113, "o", "o"] -[46.98104188919113, "o", "n"] -[47.011041889191134, "o", "\""] -[47.041041889191135, "o", "\r\n"] -[47.071041889191136, "o", "\u001b[0m"] -[47.10104188919114, "o", "\r\n"] -[47.111491298676, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.41}]"] -[47.141491298676, "o", "\u001b[1m"] -[47.171491298676, "o", "\u001b[36m"] -[47.201491298676004, "o", "\u001b[91m"] -[47.231491298676005, "o", "$"] -[47.261491298676006, "o", " "] -[47.29149129867601, "o", "\u001b[0m"] -[52.32149129867601, "o", "\u001b[H"] -[52.35149129867601, "o", "\u001b[J"] -[52.38149129867601, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run the query against the new version of the dataset."] -[52.41149129867601, "o", "\r\n"] -[52.44149129867601, "o", "$ # This time, use layered querying that queries fragments directly without checkout,\r\n"] -[52.471491298676014, "o", "$ # downloading them if they're not local. This is seamless to PostgREST or any other application.\r\n"] -[52.501491298676015, "o", "$"] -[52.531491298676016, "o", " "] -[52.56149129867602, "o", "s"] -[52.59149129867602, "o", "g"] -[52.62149129867602, "o", "r"] -[52.65149129867602, "o", " "] -[52.68149129867602, "o", "c"] -[52.71149129867602, "o", "h"] -[52.741491298676024, "o", "e"] -[52.771491298676025, "o", "c"] -[52.80149129867603, "o", "k"] -[52.83149129867603, "o", "o"] -[52.86149129867603, "o", "u"] -[52.89149129867603, "o", "t"] -[52.92149129867603, "o", " "] -[52.95149129867603, "o", "-"] -[52.98149129867603, "o", "-"] -[53.011491298676034, "o", "l"] -[53.041491298676036, "o", "a"] -[53.07149129867604, "o", "y"] -[53.10149129867604, "o", "e"] -[53.13149129867604, "o", "r"] -[53.16149129867604, "o", "e"] -[53.19149129867604, "o", "d"] -[53.22149129867604, "o", " "] -[53.251491298676044, "o", "d"] -[53.281491298676045, "o", "e"] -[53.311491298676046, "o", "m"] -[53.34149129867605, "o", "o"] -[53.37149129867605, "o", "/"] -[53.40149129867605, "o", "w"] -[53.43149129867605, "o", "e"] -[53.46149129867605, "o", "a"] -[53.49149129867605, "o", "t"] -[53.521491298676054, "o", "h"] -[53.551491298676055, "o", "e"] -[53.581491298676056, "o", "r"] -[53.61149129867606, "o", ":"] -[53.64149129867606, "o", "r"] -[53.67149129867606, "o", "e"] -[53.70149129867606, "o", "v"] -[53.73149129867606, "o", "i"] -[53.76149129867606, "o", "s"] -[53.791491298676064, "o", "e"] -[53.821491298676065, "o", "d"] -[53.851491298676066, "o", "_"] -[53.88149129867607, "o", "d"] -[53.91149129867607, "o", "a"] -[53.94149129867607, "o", "t"] -[53.97149129867607, "o", "a"] -[54.00149129867607, "o", "\r\n"] -[54.03149129867607, "o", "$"] -[54.061491298676074, "o", " "] -[54.091491298676075, "o", "c"] -[54.12149129867608, "o", "u"] -[54.15149129867608, "o", "r"] -[54.18149129867608, "o", "l"] -[54.21149129867608, "o", " "] -[54.24149129867608, "o", "\""] -[54.27149129867608, "o", "h"] -[54.30149129867608, "o", "t"] -[54.331491298676085, "o", "t"] -[54.361491298676086, "o", "p"] -[54.39149129867609, "o", ":"] -[54.42149129867609, "o", "/"] -[54.45149129867609, "o", "/"] -[54.48149129867609, "o", "l"] -[54.51149129867609, "o", "o"] -[54.54149129867609, "o", "c"] -[54.571491298676094, "o", "a"] -[54.601491298676095, "o", "l"] -[54.631491298676096, "o", "h"] -[54.6614912986761, "o", "o"] -[54.6914912986761, "o", "s"] -[54.7214912986761, "o", "t"] -[54.7514912986761, "o", ":"] -[54.7814912986761, "o", "8"] -[54.8114912986761, "o", "0"] -[54.841491298676104, "o", "8"] -[54.871491298676105, "o", "0"] -[54.901491298676106, "o", "/"] -[54.93149129867611, "o", "r"] -[54.96149129867611, "o", "d"] -[54.99149129867611, "o", "u"] -[55.02149129867611, "o", "?"] -[55.05149129867611, "o", "d"] -[55.08149129867611, "o", "a"] -[55.111491298676114, "o", "t"] -[55.141491298676115, "o", "e"] -[55.171491298676116, "o", "="] -[55.20149129867612, "o", "e"] -[55.23149129867612, "o", "q"] -[55.26149129867612, "o", "."] -[55.29149129867612, "o", "2"] -[55.32149129867612, "o", "0"] -[55.35149129867612, "o", "1"] -[55.381491298676124, "o", "2"] -[55.411491298676125, "o", "-"] -[55.44149129867613, "o", "1"] -[55.47149129867613, "o", "2"] -[55.50149129867613, "o", "-"] -[55.53149129867613, "o", "2"] -[55.56149129867613, "o", "6"] -[55.59149129867613, "o", "&"] -[55.62149129867613, "o", "s"] -[55.651491298676135, "o", "e"] -[55.681491298676136, "o", "l"] -[55.71149129867614, "o", "e"] -[55.74149129867614, "o", "c"] -[55.77149129867614, "o", "t"] -[55.80149129867614, "o", "="] -[55.83149129867614, "o", "d"] -[55.86149129867614, "o", "a"] -[55.891491298676144, "o", "t"] -[55.921491298676145, "o", "e"] -[55.951491298676146, "o", ","] -[55.98149129867615, "o", "t"] -[56.01149129867615, "o", "e"] -[56.04149129867615, "o", "m"] -[56.07149129867615, "o", "p"] -[56.10149129867615, "o", "e"] -[56.13149129867615, "o", "r"] -[56.161491298676154, "o", "a"] -[56.191491298676155, "o", "t"] -[56.221491298676156, "o", "u"] -[56.25149129867616, "o", "r"] -[56.28149129867616, "o", "e"] -[56.31149129867616, "o", "m"] -[56.34149129867616, "o", "i"] -[56.37149129867616, "o", "n"] -[56.40149129867616, "o", ","] -[56.431491298676164, "o", "t"] -[56.461491298676165, "o", "e"] -[56.491491298676166, "o", "m"] -[56.52149129867617, "o", "p"] -[56.55149129867617, "o", "e"] -[56.58149129867617, "o", "r"] -[56.61149129867617, "o", "a"] -[56.64149129867617, "o", "t"] -[56.67149129867617, "o", "u"] -[56.701491298676174, "o", "r"] -[56.731491298676175, "o", "e"] -[56.76149129867618, "o", "m"] -[56.79149129867618, "o", "a"] -[56.82149129867618, "o", "x"] -[56.85149129867618, "o", ","] -[56.88149129867618, "o", "p"] -[56.91149129867618, "o", "r"] -[56.94149129867618, "o", "e"] -[56.971491298676185, "o", "c"] -[57.001491298676186, "o", "i"] -[57.03149129867619, "o", "p"] -[57.06149129867619, "o", "i"] -[57.09149129867619, "o", "t"] -[57.12149129867619, "o", "a"] -[57.15149129867619, "o", "t"] -[57.18149129867619, "o", "i"] -[57.211491298676194, "o", "o"] -[57.241491298676195, "o", "n"] -[57.271491298676196, "o", "\""] -[57.3014912986762, "o", "\r\n"] -[57.3314912986762, "o", "\u001b[0m"] -[57.3614912986762, "o", "\r\n"] -[57.773222064972586, "o", "Checked out demo/weather:5a60375bd3aa.\r\n"] -[58.10248241424627, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.692}]"] -[58.13248241424627, "o", "\u001b[1m"] -[58.16248241424627, "o", "\u001b[36m"] -[58.19248241424627, "o", "\u001b[91m"] -[58.22248241424627, "o", "$"] -[58.25248241424627, "o", " "] -[58.282482414246275, "o", "\u001b[0m"] \ No newline at end of file +[7.10494390487672, "o", "Initialized empty repository demo/weather\r\n"] +[7.532645378112804, "o", "Committing demo/weather...\r\n"] +[7.555421504974376, "o", "Processing table rdu\r\n"] +[7.789980325698863, "o", "Committed demo/weather as 1f08d546e6db.\r\n"] +[8.212977085113536, "o", "Tagged demo/weather:1f08d546e6db7856e6b9bd702bf8f002326219b09b6cc5a50b75395e2724fb23 with initial_data.\r\n"] +[8.242977085113536, "o", "\u001b[1m"] +[8.272977085113535, "o", "\u001b[36m"] +[8.302977085113534, "o", "\u001b[91m"] +[8.332977085113534, "o", "$"] +[8.362977085113533, "o", " "] +[8.392977085113532, "o", "\u001b[0m"] +[13.422977085113532, "o", "\u001b[H"] +[13.452977085113531, "o", "\u001b[J"] +[13.48297708511353, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Also create another image so we can switch between them."] +[13.51297708511353, "o", "\r\n"] +[13.54297708511353, "o", "$"] +[13.572977085113529, "o", " "] +[13.602977085113528, "o", "s"] +[13.632977085113527, "o", "g"] +[13.662977085113527, "o", "r"] +[13.692977085113526, "o", " "] +[13.722977085113525, "o", "s"] +[13.752977085113525, "o", "q"] +[13.782977085113524, "o", "l"] +[13.812977085113523, "o", " "] +[13.842977085113523, "o", "-"] +[13.872977085113522, "o", "s"] +[13.902977085113521, "o", " "] +[13.93297708511352, "o", "d"] +[13.96297708511352, "o", "e"] +[13.99297708511352, "o", "m"] +[14.022977085113519, "o", "o"] +[14.052977085113518, "o", "/"] +[14.082977085113518, "o", "w"] +[14.112977085113517, "o", "e"] +[14.142977085113516, "o", "a"] +[14.172977085113516, "o", "t"] +[14.202977085113515, "o", "h"] +[14.232977085113514, "o", "e"] +[14.262977085113514, "o", "r"] +[14.292977085113513, "o", " "] +[14.322977085113513, "o", "\""] +[14.352977085113512, "o", "U"] +[14.382977085113511, "o", "P"] +[14.41297708511351, "o", "D"] +[14.44297708511351, "o", "A"] +[14.47297708511351, "o", "T"] +[14.502977085113509, "o", "E"] +[14.532977085113508, "o", " "] +[14.562977085113507, "o", "r"] +[14.592977085113507, "o", "d"] +[14.622977085113506, "o", "u"] +[14.652977085113505, "o", " "] +[14.682977085113505, "o", "S"] +[14.712977085113504, "o", "E"] +[14.742977085113504, "o", "T"] +[14.772977085113503, "o", " "] +[14.802977085113502, "o", "p"] +[14.832977085113502, "o", "r"] +[14.862977085113501, "o", "e"] +[14.8929770851135, "o", "c"] +[14.9229770851135, "o", "i"] +[14.952977085113499, "o", "p"] +[14.982977085113498, "o", "i"] +[15.012977085113498, "o", "t"] +[15.042977085113497, "o", "a"] +[15.072977085113497, "o", "t"] +[15.102977085113496, "o", "i"] +[15.132977085113495, "o", "o"] +[15.162977085113495, "o", "n"] +[15.192977085113494, "o", " "] +[15.222977085113493, "o", "="] +[15.252977085113493, "o", " "] +[15.282977085113492, "o", "p"] +[15.312977085113491, "o", "r"] +[15.34297708511349, "o", "e"] +[15.37297708511349, "o", "c"] +[15.40297708511349, "o", "i"] +[15.432977085113489, "o", "p"] +[15.462977085113488, "o", "i"] +[15.492977085113488, "o", "t"] +[15.522977085113487, "o", "a"] +[15.552977085113486, "o", "t"] +[15.582977085113486, "o", "i"] +[15.612977085113485, "o", "o"] +[15.642977085113484, "o", "n"] +[15.672977085113484, "o", " "] +[15.702977085113483, "o", "*"] +[15.732977085113482, "o", " "] +[15.762977085113482, "o", "1"] +[15.792977085113481, "o", "."] +[15.82297708511348, "o", "2"] +[15.85297708511348, "o", " "] +[15.88297708511348, "o", "W"] +[15.912977085113479, "o", "H"] +[15.942977085113478, "o", "E"] +[15.972977085113477, "o", "R"] +[16.00297708511348, "o", "E"] +[16.03297708511348, "o", " "] +[16.06297708511348, "o", "E"] +[16.092977085113482, "o", "X"] +[16.122977085113483, "o", "T"] +[16.152977085113484, "o", "R"] +[16.182977085113485, "o", "A"] +[16.212977085113486, "o", "C"] +[16.242977085113488, "o", "T"] +[16.27297708511349, "o", " "] +[16.30297708511349, "o", "("] +[16.33297708511349, "o", "y"] +[16.362977085113492, "o", "e"] +[16.392977085113493, "o", "a"] +[16.422977085113494, "o", "r"] +[16.452977085113496, "o", " "] +[16.482977085113497, "o", "F"] +[16.512977085113498, "o", "R"] +[16.5429770851135, "o", "O"] +[16.5729770851135, "o", "M"] +[16.6029770851135, "o", " "] +[16.632977085113502, "o", "d"] +[16.662977085113504, "o", "a"] +[16.692977085113505, "o", "t"] +[16.722977085113506, "o", "e"] +[16.752977085113507, "o", ")"] +[16.782977085113508, "o", " "] +[16.81297708511351, "o", "="] +[16.84297708511351, "o", " "] +[16.87297708511351, "o", "2"] +[16.902977085113513, "o", "0"] +[16.932977085113514, "o", "1"] +[16.962977085113515, "o", "2"] +[16.992977085113516, "o", "\""] +[17.022977085113517, "o", "\r\n"] +[17.05297708511352, "o", "$"] +[17.08297708511352, "o", " "] +[17.11297708511352, "o", "s"] +[17.14297708511352, "o", "g"] +[17.172977085113523, "o", "r"] +[17.202977085113524, "o", " "] +[17.232977085113525, "o", "c"] +[17.262977085113526, "o", "o"] +[17.292977085113527, "o", "m"] +[17.32297708511353, "o", "m"] +[17.35297708511353, "o", "i"] +[17.38297708511353, "o", "t"] +[17.412977085113532, "o", " "] +[17.442977085113533, "o", "-"] +[17.472977085113534, "o", "m"] +[17.502977085113535, "o", " "] +[17.532977085113536, "o", "\""] +[17.562977085113538, "o", "R"] +[17.59297708511354, "o", "e"] +[17.62297708511354, "o", "v"] +[17.65297708511354, "o", "i"] +[17.682977085113542, "o", "s"] +[17.712977085113543, "o", "i"] +[17.742977085113544, "o", "o"] +[17.772977085113546, "o", "n"] +[17.802977085113547, "o", " "] +[17.832977085113548, "o", "t"] +[17.86297708511355, "o", "o"] +[17.89297708511355, "o", " "] +[17.92297708511355, "o", "t"] +[17.952977085113552, "o", "h"] +[17.982977085113554, "o", "e"] +[18.012977085113555, "o", " "] +[18.042977085113556, "o", "2"] +[18.072977085113557, "o", "0"] +[18.102977085113558, "o", "1"] +[18.13297708511356, "o", "2"] +[18.16297708511356, "o", " "] +[18.19297708511356, "o", "r"] +[18.222977085113563, "o", "a"] +[18.252977085113564, "o", "i"] +[18.282977085113565, "o", "n"] +[18.312977085113566, "o", "f"] +[18.342977085113567, "o", "a"] +[18.37297708511357, "o", "l"] +[18.40297708511357, "o", "l"] +[18.43297708511357, "o", " "] +[18.46297708511357, "o", "d"] +[18.492977085113573, "o", "a"] +[18.522977085113574, "o", "t"] +[18.552977085113575, "o", "a"] +[18.582977085113576, "o", "\""] +[18.612977085113577, "o", " "] +[18.64297708511358, "o", "d"] +[18.67297708511358, "o", "e"] +[18.70297708511358, "o", "m"] +[18.732977085113582, "o", "o"] +[18.762977085113583, "o", "/"] +[18.792977085113584, "o", "w"] +[18.822977085113585, "o", "e"] +[18.852977085113586, "o", "a"] +[18.882977085113588, "o", "t"] +[18.91297708511359, "o", "h"] +[18.94297708511359, "o", "e"] +[18.97297708511359, "o", "r"] +[19.002977085113592, "o", "\r\n"] +[19.032977085113593, "o", "$"] +[19.062977085113594, "o", " "] +[19.092977085113596, "o", "s"] +[19.122977085113597, "o", "g"] +[19.152977085113598, "o", "r"] +[19.1829770851136, "o", " "] +[19.2129770851136, "o", "t"] +[19.2429770851136, "o", "a"] +[19.272977085113602, "o", "g"] +[19.302977085113604, "o", " "] +[19.332977085113605, "o", "d"] +[19.362977085113606, "o", "e"] +[19.392977085113607, "o", "m"] +[19.422977085113608, "o", "o"] +[19.45297708511361, "o", "/"] +[19.48297708511361, "o", "w"] +[19.51297708511361, "o", "e"] +[19.542977085113613, "o", "a"] +[19.572977085113614, "o", "t"] +[19.602977085113615, "o", "h"] +[19.632977085113616, "o", "e"] +[19.662977085113617, "o", "r"] +[19.69297708511362, "o", " "] +[19.72297708511362, "o", "r"] +[19.75297708511362, "o", "e"] +[19.78297708511362, "o", "v"] +[19.812977085113623, "o", "i"] +[19.842977085113624, "o", "s"] +[19.872977085113625, "o", "e"] +[19.902977085113626, "o", "d"] +[19.932977085113627, "o", "_"] +[19.96297708511363, "o", "d"] +[19.99297708511363, "o", "a"] +[20.02297708511363, "o", "t"] +[20.052977085113632, "o", "a"] +[20.082977085113633, "o", "\r\n"] +[20.112977085113634, "o", "\u001b[0m"] +[20.142977085113635, "o", "\r\n"] +[20.56101330757152, "o", "Committing demo/weather...\r\n"] +[20.59636911392223, "o", "Storing and indexing table rdu\r\n"] +[20.79279812812816, "o", "Committed demo/weather as 383bdfc80ba0.\r\n"] +[21.21180781364452, "o", "Tagged demo/weather:383bdfc80ba08f4cdf7b903e07558d91f85f1f8e919a793ca8839cbbdae34c61 with revised_data.\r\n"] +[21.24180781364452, "o", "\u001b[1m"] +[21.27180781364452, "o", "\u001b[36m"] +[21.301807813644523, "o", "\u001b[91m"] +[21.331807813644524, "o", "$"] +[21.361807813644525, "o", " "] +[21.391807813644526, "o", "\u001b[0m"] +[26.421807813644527, "o", "\u001b[H"] +[26.45180781364453, "o", "\u001b[J"] +[26.48180781364453, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Check out the original version of the dataset and look at the API spec for it."] +[26.51180781364453, "o", "\r\n"] +[26.54180781364453, "o", "$ # For this, we need to restart PostgREST so that it picks up the new schema.\r\n"] +[26.571807813644533, "o", "$"] +[26.601807813644534, "o", " "] +[26.631807813644535, "o", "d"] +[26.661807813644536, "o", "o"] +[26.691807813644537, "o", "c"] +[26.72180781364454, "o", "k"] +[26.75180781364454, "o", "e"] +[26.78180781364454, "o", "r"] +[26.811807813644542, "o", "-"] +[26.841807813644543, "o", "c"] +[26.871807813644544, "o", "o"] +[26.901807813644545, "o", "m"] +[26.931807813644546, "o", "p"] +[26.961807813644548, "o", "o"] +[26.99180781364455, "o", "s"] +[27.02180781364455, "o", "e"] +[27.05180781364455, "o", " "] +[27.081807813644552, "o", "-"] +[27.111807813644553, "o", "-"] +[27.141807813644554, "o", "p"] +[27.171807813644556, "o", "r"] +[27.201807813644557, "o", "o"] +[27.231807813644558, "o", "j"] +[27.26180781364456, "o", "e"] +[27.29180781364456, "o", "c"] +[27.32180781364456, "o", "t"] +[27.351807813644562, "o", "-"] +[27.381807813644564, "o", "n"] +[27.411807813644565, "o", "a"] +[27.441807813644566, "o", "m"] +[27.471807813644567, "o", "e"] +[27.501807813644568, "o", " "] +[27.53180781364457, "o", "s"] +[27.56180781364457, "o", "p"] +[27.59180781364457, "o", "l"] +[27.621807813644573, "o", "i"] +[27.651807813644574, "o", "t"] +[27.681807813644575, "o", "g"] +[27.711807813644576, "o", "r"] +[27.741807813644577, "o", "a"] +[27.77180781364458, "o", "p"] +[27.80180781364458, "o", "h"] +[27.83180781364458, "o", "_"] +[27.86180781364458, "o", "e"] +[27.891807813644583, "o", "x"] +[27.921807813644584, "o", "a"] +[27.951807813644585, "o", "m"] +[27.981807813644586, "o", "p"] +[28.011807813644587, "o", "l"] +[28.04180781364459, "o", "e"] +[28.07180781364459, "o", " "] +[28.10180781364459, "o", "r"] +[28.131807813644592, "o", "e"] +[28.161807813644593, "o", "s"] +[28.191807813644594, "o", "t"] +[28.221807813644595, "o", "a"] +[28.251807813644596, "o", "r"] +[28.281807813644598, "o", "t"] +[28.3118078136446, "o", " "] +[28.3418078136446, "o", "p"] +[28.3718078136446, "o", "o"] +[28.401807813644602, "o", "s"] +[28.431807813644603, "o", "t"] +[28.461807813644604, "o", "g"] +[28.491807813644606, "o", "r"] +[28.521807813644607, "o", "e"] +[28.551807813644608, "o", "s"] +[28.58180781364461, "o", "t"] +[28.61180781364461, "o", "\r\n"] +[28.64180781364461, "o", "$"] +[28.671807813644612, "o", " "] +[28.701807813644614, "o", "s"] +[28.731807813644615, "o", "g"] +[28.761807813644616, "o", "r"] +[28.791807813644617, "o", " "] +[28.821807813644618, "o", "c"] +[28.85180781364462, "o", "h"] +[28.88180781364462, "o", "e"] +[28.91180781364462, "o", "c"] +[28.941807813644623, "o", "k"] +[28.971807813644624, "o", "o"] +[29.001807813644625, "o", "u"] +[29.031807813644626, "o", "t"] +[29.061807813644627, "o", " "] +[29.09180781364463, "o", "d"] +[29.12180781364463, "o", "e"] +[29.15180781364463, "o", "m"] +[29.18180781364463, "o", "o"] +[29.211807813644633, "o", "/"] +[29.241807813644634, "o", "w"] +[29.271807813644635, "o", "e"] +[29.301807813644636, "o", "a"] +[29.331807813644637, "o", "t"] +[29.36180781364464, "o", "h"] +[29.39180781364464, "o", "e"] +[29.42180781364464, "o", "r"] +[29.451807813644642, "o", ":"] +[29.481807813644643, "o", "i"] +[29.511807813644644, "o", "n"] +[29.541807813644645, "o", "i"] +[29.571807813644647, "o", "t"] +[29.601807813644648, "o", "i"] +[29.63180781364465, "o", "a"] +[29.66180781364465, "o", "l"] +[29.69180781364465, "o", "_"] +[29.721807813644652, "o", "d"] +[29.751807813644653, "o", "a"] +[29.781807813644654, "o", "t"] +[29.811807813644656, "o", "a"] +[29.841807813644657, "o", "\r\n"] +[29.871807813644658, "o", "$"] +[29.90180781364466, "o", " "] +[29.93180781364466, "o", "c"] +[29.96180781364466, "o", "u"] +[29.991807813644662, "o", "r"] +[30.021807813644664, "o", "l"] +[30.051807813644665, "o", " "] +[30.081807813644666, "o", "h"] +[30.111807813644667, "o", "t"] +[30.141807813644668, "o", "t"] +[30.17180781364467, "o", "p"] +[30.20180781364467, "o", ":"] +[30.23180781364467, "o", "/"] +[30.261807813644673, "o", "/"] +[30.291807813644674, "o", "l"] +[30.321807813644675, "o", "o"] +[30.351807813644676, "o", "c"] +[30.381807813644677, "o", "a"] +[30.41180781364468, "o", "l"] +[30.44180781364468, "o", "h"] +[30.47180781364468, "o", "o"] +[30.50180781364468, "o", "s"] +[30.531807813644683, "o", "t"] +[30.561807813644684, "o", ":"] +[30.591807813644685, "o", "8"] +[30.621807813644686, "o", "0"] +[30.651807813644687, "o", "8"] +[30.68180781364469, "o", "0"] +[30.71180781364469, "o", "/"] +[30.74180781364469, "o", " "] +[30.771807813644692, "o", "|"] +[30.801807813644693, "o", " "] +[30.831807813644694, "o", "c"] +[30.861807813644695, "o", "u"] +[30.891807813644697, "o", "t"] +[30.921807813644698, "o", " "] +[30.9518078136447, "o", "-"] +[30.9818078136447, "o", "c"] +[31.0118078136447, "o", " "] +[31.041807813644702, "o", "-"] +[31.071807813644703, "o", "7"] +[31.101807813644704, "o", "9"] +[31.131807813644706, "o", "3"] +[31.161807813644707, "o", "\r\n"] +[31.191807813644708, "o", "\u001b[0m"] +[31.22180781364471, "o", "\r\n"] +[31.86382827758819, "o", "Restarting splitgraph_example_postgrest_1 ... \r\r\n"] +[32.42532978057891, "o", "\u001b[1A\u001b[2K\rRestarting splitgraph_example_postgrest_1 ... \u001b[32mdone\u001b[0m\r\u001b[1B"] +[32.983764028549494, "o", "Checked out demo/weather:1f08d546e6db.\r\n"] +[32.99298152923614, "o", " "] +[32.99304542541534, "o", " "] +[32.99309358596832, "o", "%"] +[32.99312291145355, "o", " "] +[32.993152713775935, "o", "T"] +[32.99318108558685, "o", "o"] +[32.99320921897918, "o", "t"] +[32.993237590790095, "o", "a"] +[32.993301248550715, "o", "l"] +[32.99330983161956, "o", " % Received % Xfe"] +[32.9933150768283, "o", "rd "] +[32.99331936836273, "o", "Av"] +[32.99332342147857, "o", "er"] +[32.99332723617584, "o", "ag"] +[32.9933310508731, "o", "e"] +[32.993335342407526, "o", " Sp"] +[32.99333939552337, "o", "ee"] +[32.993343448639216, "o", "d "] +[32.99334726333648, "o", " "] +[32.993351793289484, "o", "T"] +[32.99335560798675, "o", "im"] +[32.993359422684016, "o", "e "] +[32.99336347579986, "o", " "] +[32.993367767334284, "o", " T"] +[32.99337158203155, "o", "im"] +[32.993375158310236, "o", "e "] +[32.99337992668182, "o", " "] +[32.99338445663482, "o", " "] +[32.9933892250064, "o", " T"] +[32.99339280128509, "o", "im"] +[32.993396854400935, "o", "e "] +[32.9934006690982, "o", " C"] +[32.993404483795466, "o", "ur"] +[32.99340901374847, "o", "r"] +[32.993412828445734, "o", "en"] +[32.99341974258453, "o", "t\r\n"] +[32.993423557281794, "o", " "] +[32.993428325653376, "o", " "] +[32.99343214035064, "o", " "] +[32.993436431885065, "o", " "] +[32.99344263076812, "o", " Dload"] +[32.99344668388397, "o", " "] +[32.99345026016265, "o", "Up"] +[32.99345383644134, "o", "lo"] +[32.993458127975764, "o", "ad"] +[32.99346218109161, "o", " "] +[32.99346623420745, "o", " "] +[32.99347004890472, "o", "To"] +[32.99347410202056, "o", "tal "] +[32.993478870392146, "o", " "] +[32.99348244667083, "o", " S"] +[32.99348649978668, "o", "pe"] +[32.99349031448394, "o", "nt"] +[32.99349579811126, "o", " "] +[32.99349961280853, "o", " "] +[32.99350342750579, "o", "Le"] +[32.99350771904022, "o", "f"] +[32.9935112953189, "o", "t "] +[32.99351558685333, "o", "Sp"] +[32.99352011680633, "o", "e"] +[32.993524408340754, "o", "ed"] +[32.99353013038665, "o", "\r\n"] +[32.9935341835025, "o", "\r "] +[32.993537759781184, "o", " 0"] +[32.99354157447845, "o", " "] +[32.993545627594294, "o", " "] +[32.99354944229156, "o", " "] +[32.993553256988825, "o", "0 "] +[32.99355731010467, "o", " "] +[32.993561124801936, "o", " "] +[32.99356517791778, "o", "0 "] +[32.99357256889373, "o", " "] +[32.993576383591, "o", " 0"] +[32.993580198288264, "o", " "] +[32.99358401298553, "o", " "] +[32.993588066101374, "o", " 0"] +[32.9935923576358, "o", " "] +[32.993595933914484, "o", " "] +[32.99360213279754, "o", " 0"] +[32.99360594749481, "o", " "] +[32.99361000061065, "o", " "] +[32.99363718032867, "o", " "] +[32.99403295516998, "o", " "] +[32.994152879715266, "o", "0 "] +[32.99428758621246, "o", " 0 --:--:-- --:--:-- --:--:-- 0"] +[33.01794514656097, "o", "\r"] +[33.01799187660247, "o", "100 12"] +[33.01804504394561, "o", "000 0 12000 0 "] +[33.018060302734675, "o", " "] +[33.01807246208221, "o", " "] +[33.018084383011164, "o", " "] +[33.01809630394012, "o", "0"] +[33.018110847473444, "o", " "] +[33.0181227684024, "o", " "] +[33.01813516616851, "o", " "] +[33.01814732551605, "o", "4"] +[33.018159246445, "o", "6"] +[33.01817092895538, "o", "8"] +[33.01818284988433, "o", "k"] +[33.01819477081329, "o", " "] +[33.01820669174224, "o", " "] +[33.01821837425262, "o", " "] +[33.018230295181574, "o", " "] +[33.01824221611053, "o", " "] +[33.018254137039484, "o", " "] +[33.01826939582855, "o", "0"] +[33.01828727722198, "o", " "] +[33.018301582336726, "o", "-"] +[33.018320417404475, "o", "-"] +[33.01833472251922, "o", ":"] +[33.01859245300323, "o", "--:-- --:--:-- --:--:-- 468k"] +[33.018620347976984, "o", "\r\n"] +[33.01947937011749, "o", "{\"swagger\":\"2.0\",\"info\":{\"version\":\"9.0.0\",\"title\":\"PostgREST API\",\"description\":\"This is a dynamic API generated by PostgREST\"},\"host\":\"localhost:8080\",\"basePath\":\"/\",\"schemes\":[\"http\"],\"consumes\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"produces\":[\"application/json\",\"application/vnd.pgrst.object+json\",\"text/csv\"],\"paths\":{\"/\":{\"get\":{\"tags\":[\"Introspection\"],\"summary\":\"OpenAPI description (this document)\",\"produces\":[\"application/openapi+json\",\"application/json\"],\"responses\":{\""] +[33.02041230201751, "o", "200\":{\"description\":\"OK\"}}}},\"/rdu\":{\"get\":{\"tags\":[\"rdu\"],\"parameters\":[{\"$ref\":\"#/parameters/rowFilter.rdu.date\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemin\"},{\"$ref\":\"#/parameters/rowFilter.rdu.temperaturemax\"},{\"$ref\":\"#/parameters/rowFilter.rdu.precipitation\"},{\"$ref\"\r\n"] +[33.05041230201751, "o", "\u001b[1m"] +[33.080412302017514, "o", "\u001b[36m"] +[33.110412302017515, "o", "\u001b[91m"] +[33.140412302017516, "o", "$"] +[33.17041230201752, "o", " "] +[33.20041230201752, "o", "\u001b[0m"] +[38.23041230201752, "o", "\u001b[H"] +[38.26041230201752, "o", "\u001b[J"] +[38.29041230201752, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get all rows in the table"] +[38.32041230201752, "o", "\r\n"] +[38.350412302017524, "o", "$"] +[38.380412302017525, "o", " "] +[38.41041230201753, "o", "c"] +[38.44041230201753, "o", "u"] +[38.47041230201753, "o", "r"] +[38.50041230201753, "o", "l"] +[38.53041230201753, "o", " "] +[38.56041230201753, "o", "h"] +[38.59041230201753, "o", "t"] +[38.620412302017535, "o", "t"] +[38.650412302017536, "o", "p"] +[38.68041230201754, "o", ":"] +[38.71041230201754, "o", "/"] +[38.74041230201754, "o", "/"] +[38.77041230201754, "o", "l"] +[38.80041230201754, "o", "o"] +[38.83041230201754, "o", "c"] +[38.860412302017544, "o", "a"] +[38.890412302017545, "o", "l"] +[38.920412302017546, "o", "h"] +[38.95041230201755, "o", "o"] +[38.98041230201755, "o", "s"] +[39.01041230201755, "o", "t"] +[39.04041230201755, "o", ":"] +[39.07041230201755, "o", "8"] +[39.10041230201755, "o", "0"] +[39.130412302017554, "o", "8"] +[39.160412302017555, "o", "0"] +[39.190412302017556, "o", "/"] +[39.22041230201756, "o", "r"] +[39.25041230201756, "o", "d"] +[39.28041230201756, "o", "u"] +[39.31041230201756, "o", " "] +[39.34041230201756, "o", "|"] +[39.37041230201756, "o", " "] +[39.400412302017564, "o", "w"] +[39.430412302017565, "o", "c"] +[39.460412302017566, "o", " "] +[39.49041230201757, "o", "-"] +[39.52041230201757, "o", "l"] +[39.55041230201757, "o", "\r\n"] +[39.58041230201757, "o", "\u001b[0m"] +[39.61041230201757, "o", "\r\n"] +[39.61937135696447, "o", " "] +[39.61940163612402, "o", " "] +[39.619423332214716, "o", "%"] +[39.61944312095678, "o", " "] +[39.61946124076879, "o", "T"] +[39.619481744766595, "o", "o"] +[39.61949938774145, "o", "t"] +[39.61951679229772, "o", "a"] +[39.61953443527258, "o", "l"] +[39.61955183982885, "o", " "] +[39.619569244385126, "o", " "] +[39.61958712577856, "o", " "] +[39.61960453033483, "o", " "] +[39.61962193489111, "o", "%"] +[39.61963933944738, "o", " "] +[39.619656744003656, "o", "R"] +[39.61967462539709, "o", "e"] +[39.61969250679052, "o", "c"] +[39.61971229553259, "o", "e"] +[39.61972970008886, "o", "i"] +[39.619757595062616, "o", "v"] +[39.619778337479, "o", "e"] +[39.61979598045385, "o", "d"] +[39.619813861847284, "o", " "] +[39.61983150482214, "o", "%"] +[39.61984938621557, "o", " "] +[39.619866790771844, "o", "X"] +[39.61988562583959, "o", "f"] +[39.61990303039587, "o", "e"] +[39.61992043495214, "o", "r"] +[39.619938077926996, "o", "d"] +[39.61996072769201, "o", " "] +[39.61997765541113, "o", " "] +[39.6199950599674, "o", "A"] +[39.6200110340122, "o", "v"] +[39.62002891540563, "o", "e"] +[39.6200475120548, "o", "r"] +[39.62006730079687, "o", "a"] +[39.620124044418695, "o", "ge"] +[39.620132389068964, "o", " Speed Time Ti"] +[39.620137395859125, "o", "me "] +[39.62014144897497, "o", " "] +[39.620145502090814, "o", " "] +[39.62014955520666, "o", "Ti"] +[39.62015384674108, "o", "me"] +[39.62015789985693, "o", " "] +[39.62016171455419, "o", "Cu"] +[39.62016576767004, "o", "rre"] +[39.6201695823673, "o", "nt"] +[39.62017554283178, "o", "\r\n"] +[39.620182218551996, "o", " "] +[39.62018651008642, "o", " "] +[39.620190086365106, "o", " "] +[39.62019413948095, "o", " "] +[39.62019795417822, "o", " "] +[39.62020200729406, "o", " "] +[39.620206060409906, "o", " "] +[39.62021035194433, "o", " "] +[39.62021655082739, "o", " "] +[39.62022084236181, "o", " "] +[39.620225133896234, "o", " "] +[39.62022871017492, "o", " "] +[39.62023228645361, "o", " "] +[39.62023633956945, "o", " "] +[39.6202403926853, "o", " "] +[39.620245876312616, "o", " "] +[39.62024969100988, "o", " D"] +[39.620253744125726, "o", "lo"] +[39.62025779724157, "o", "ad"] +[39.62026137352026, "o", " "] +[39.62026518821752, "o", "Up"] +[39.62026900291479, "o", "l"] +[39.620272817612054, "o", "oa"] +[39.62027710914648, "o", "d "] +[39.62028283119238, "o", " "] +[39.62028664588964, "o", "To"] +[39.620290937424066, "o", "tal "] +[39.62029499053991, "o", " S"] +[39.62029880523718, "o", "pe"] +[39.62030261993444, "o", "nt"] +[39.62030786514318, "o", " "] +[39.62031191825903, "o", " "] +[39.62031597137487, "o", "Le"] +[39.620320739746454, "o", "ft"] +[39.62032503128088, "o", " "] +[39.620328607559564, "o", "Sp"] +[39.62033289909399, "o", "e"] +[39.620336713791254, "o", "ed"] +[39.62034243583715, "o", "\r\n"] +[39.620346488953, "o", "\r "] +[39.62035054206884, "o", " 0"] +[39.62035435676611, "o", " "] +[39.62035817146337, "o", " "] +[39.62036222457922, "o", " 0"] +[39.62036627769506, "o", " "] +[39.62037009239233, "o", " "] +[39.62037414550817, "o", " 0"] +[39.620378675461176, "o", " "] +[39.62038558959997, "o", " "] +[39.620389642715814, "o", " 0 "] +[39.62039369583166, "o", " "] +[39.620397748947504, "o", " 0"] +[39.62040180206335, "o", " "] +[39.62040585517919, "o", " "] +[39.62041229248083, "o", " 0"] +[39.620416107178094, "o", " "] +[39.62041992187536, "o", " "] +[39.620423974991205, "o", " "] +[39.62042778968847, "o", "0 "] +[39.620431604385736, "o", " "] +[39.62043565750158, "o", " "] +[39.620439472198846, "o", " "] +[39.62044376373327, "o", "0 "] +[39.62044948577917, "o", "--"] +[39.620453300476434, "o", ":-"] +[39.62045759201086, "o", "-:"] +[39.6204616451267, "o", "--"] +[39.62046545982397, "o", " -"] +[39.62046998977697, "o", "-:"] +[39.62047356605566, "o", "-"] +[39.62047785759008, "o", "-:"] +[39.6204833412174, "o", "--"] +[39.62048715591467, "o", " -"] +[39.62049168586767, "o", "-:"] +[39.620495738983514, "o", "--"] +[39.62049955368078, "o", ":-"] +[39.62050408363378, "o", "-"] +[39.62050789833105, "o", " "] +[39.62051195144689, "o", " "] +[39.62051576614416, "o", " 0"] +[39.703930797577264, "o", "\r100 22"] +[39.70442742347753, "o", "92k 0 2292k 0 0 26.3M 0 --:--:-- --:--:-- --:--:-- 26.3M\r\n"] +[39.70514172554052, "o", "4632\r\n"] +[39.73514172554052, "o", "\u001b[1m"] +[39.76514172554052, "o", "\u001b[36m"] +[39.795141725540525, "o", "\u001b[91m"] +[39.825141725540526, "o", "$"] +[39.85514172554053, "o", " "] +[39.88514172554053, "o", "\u001b[0m"] +[44.91514172554053, "o", "\u001b[H"] +[44.94514172554053, "o", "\u001b[J"] +[44.97514172554053, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run a query selecting one row"] +[45.00514172554053, "o", "\r\n"] +[45.035141725540534, "o", "$"] +[45.065141725540535, "o", " "] +[45.095141725540536, "o", "c"] +[45.12514172554054, "o", "u"] +[45.15514172554054, "o", "r"] +[45.18514172554054, "o", "l"] +[45.21514172554054, "o", " "] +[45.24514172554054, "o", "\""] +[45.27514172554054, "o", "h"] +[45.305141725540544, "o", "t"] +[45.335141725540545, "o", "t"] +[45.365141725540546, "o", "p"] +[45.39514172554055, "o", ":"] +[45.42514172554055, "o", "/"] +[45.45514172554055, "o", "/"] +[45.48514172554055, "o", "l"] +[45.51514172554055, "o", "o"] +[45.54514172554055, "o", "c"] +[45.575141725540554, "o", "a"] +[45.605141725540555, "o", "l"] +[45.63514172554056, "o", "h"] +[45.66514172554056, "o", "o"] +[45.69514172554056, "o", "s"] +[45.72514172554056, "o", "t"] +[45.75514172554056, "o", ":"] +[45.78514172554056, "o", "8"] +[45.81514172554056, "o", "0"] +[45.845141725540564, "o", "8"] +[45.875141725540566, "o", "0"] +[45.90514172554057, "o", "/"] +[45.93514172554057, "o", "r"] +[45.96514172554057, "o", "d"] +[45.99514172554057, "o", "u"] +[46.02514172554057, "o", "?"] +[46.05514172554057, "o", "d"] +[46.08514172554057, "o", "a"] +[46.115141725540575, "o", "t"] +[46.145141725540576, "o", "e"] +[46.17514172554058, "o", "="] +[46.20514172554058, "o", "e"] +[46.23514172554058, "o", "q"] +[46.26514172554058, "o", "."] +[46.29514172554058, "o", "2"] +[46.32514172554058, "o", "0"] +[46.355141725540584, "o", "1"] +[46.385141725540585, "o", "2"] +[46.415141725540586, "o", "-"] +[46.44514172554059, "o", "1"] +[46.47514172554059, "o", "2"] +[46.50514172554059, "o", "-"] +[46.53514172554059, "o", "2"] +[46.56514172554059, "o", "6"] +[46.59514172554059, "o", "&"] +[46.625141725540594, "o", "s"] +[46.655141725540595, "o", "e"] +[46.685141725540596, "o", "l"] +[46.7151417255406, "o", "e"] +[46.7451417255406, "o", "c"] +[46.7751417255406, "o", "t"] +[46.8051417255406, "o", "="] +[46.8351417255406, "o", "d"] +[46.8651417255406, "o", "a"] +[46.895141725540604, "o", "t"] +[46.925141725540605, "o", "e"] +[46.95514172554061, "o", ","] +[46.98514172554061, "o", "t"] +[47.01514172554061, "o", "e"] +[47.04514172554061, "o", "m"] +[47.07514172554061, "o", "p"] +[47.10514172554061, "o", "e"] +[47.13514172554061, "o", "r"] +[47.165141725540614, "o", "a"] +[47.195141725540616, "o", "t"] +[47.22514172554062, "o", "u"] +[47.25514172554062, "o", "r"] +[47.28514172554062, "o", "e"] +[47.31514172554062, "o", "m"] +[47.34514172554062, "o", "i"] +[47.37514172554062, "o", "n"] +[47.405141725540624, "o", ","] +[47.435141725540625, "o", "t"] +[47.465141725540626, "o", "e"] +[47.49514172554063, "o", "m"] +[47.52514172554063, "o", "p"] +[47.55514172554063, "o", "e"] +[47.58514172554063, "o", "r"] +[47.61514172554063, "o", "a"] +[47.64514172554063, "o", "t"] +[47.675141725540634, "o", "u"] +[47.705141725540635, "o", "r"] +[47.735141725540636, "o", "e"] +[47.76514172554064, "o", "m"] +[47.79514172554064, "o", "a"] +[47.82514172554064, "o", "x"] +[47.85514172554064, "o", ","] +[47.88514172554064, "o", "p"] +[47.91514172554064, "o", "r"] +[47.945141725540644, "o", "e"] +[47.975141725540645, "o", "c"] +[48.005141725540646, "o", "i"] +[48.03514172554065, "o", "p"] +[48.06514172554065, "o", "i"] +[48.09514172554065, "o", "t"] +[48.12514172554065, "o", "a"] +[48.15514172554065, "o", "t"] +[48.18514172554065, "o", "i"] +[48.215141725540654, "o", "o"] +[48.245141725540655, "o", "n"] +[48.27514172554066, "o", "\""] +[48.30514172554066, "o", "\r\n"] +[48.33514172554066, "o", "\u001b[0m"] +[48.36514172554066, "o", "\r\n"] +[48.38186750412037, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.41}]"] +[48.41186750412037, "o", "\u001b[1m"] +[48.441867504120374, "o", "\u001b[36m"] +[48.471867504120375, "o", "\u001b[91m"] +[48.501867504120376, "o", "$"] +[48.53186750412038, "o", " "] +[48.56186750412038, "o", "\u001b[0m"] +[53.59186750412038, "o", "\u001b[H"] +[53.62186750412038, "o", "\u001b[J"] +[53.65186750412038, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run the query against the new version of the dataset."] +[53.68186750412038, "o", "\r\n"] +[53.711867504120384, "o", "$ # This time, use layered querying that queries fragments directly without checkout,\r\n"] +[53.741867504120385, "o", "$ # downloading them if they're not local. This is seamless to PostgREST or any other application.\r\n"] +[53.77186750412039, "o", "$"] +[53.80186750412039, "o", " "] +[53.83186750412039, "o", "s"] +[53.86186750412039, "o", "g"] +[53.89186750412039, "o", "r"] +[53.92186750412039, "o", " "] +[53.95186750412039, "o", "c"] +[53.981867504120395, "o", "h"] +[54.011867504120396, "o", "e"] +[54.0418675041204, "o", "c"] +[54.0718675041204, "o", "k"] +[54.1018675041204, "o", "o"] +[54.1318675041204, "o", "u"] +[54.1618675041204, "o", "t"] +[54.1918675041204, "o", " "] +[54.221867504120404, "o", "-"] +[54.251867504120405, "o", "-"] +[54.281867504120406, "o", "l"] +[54.31186750412041, "o", "a"] +[54.34186750412041, "o", "y"] +[54.37186750412041, "o", "e"] +[54.40186750412041, "o", "r"] +[54.43186750412041, "o", "e"] +[54.46186750412041, "o", "d"] +[54.491867504120414, "o", " "] +[54.521867504120415, "o", "d"] +[54.551867504120416, "o", "e"] +[54.58186750412042, "o", "m"] +[54.61186750412042, "o", "o"] +[54.64186750412042, "o", "/"] +[54.67186750412042, "o", "w"] +[54.70186750412042, "o", "e"] +[54.73186750412042, "o", "a"] +[54.761867504120424, "o", "t"] +[54.791867504120425, "o", "h"] +[54.821867504120426, "o", "e"] +[54.85186750412043, "o", "r"] +[54.88186750412043, "o", ":"] +[54.91186750412043, "o", "r"] +[54.94186750412043, "o", "e"] +[54.97186750412043, "o", "v"] +[55.00186750412043, "o", "i"] +[55.031867504120434, "o", "s"] +[55.061867504120436, "o", "e"] +[55.09186750412044, "o", "d"] +[55.12186750412044, "o", "_"] +[55.15186750412044, "o", "d"] +[55.18186750412044, "o", "a"] +[55.21186750412044, "o", "t"] +[55.24186750412044, "o", "a"] +[55.27186750412044, "o", "\r\n"] +[55.301867504120445, "o", "$"] +[55.331867504120446, "o", " "] +[55.36186750412045, "o", "c"] +[55.39186750412045, "o", "u"] +[55.42186750412045, "o", "r"] +[55.45186750412045, "o", "l"] +[55.48186750412045, "o", " "] +[55.51186750412045, "o", "\""] +[55.541867504120454, "o", "h"] +[55.571867504120455, "o", "t"] +[55.601867504120456, "o", "t"] +[55.63186750412046, "o", "p"] +[55.66186750412046, "o", ":"] +[55.69186750412046, "o", "/"] +[55.72186750412046, "o", "/"] +[55.75186750412046, "o", "l"] +[55.78186750412046, "o", "o"] +[55.811867504120464, "o", "c"] +[55.841867504120465, "o", "a"] +[55.871867504120466, "o", "l"] +[55.90186750412047, "o", "h"] +[55.93186750412047, "o", "o"] +[55.96186750412047, "o", "s"] +[55.99186750412047, "o", "t"] +[56.02186750412047, "o", ":"] +[56.05186750412047, "o", "8"] +[56.081867504120474, "o", "0"] +[56.111867504120475, "o", "8"] +[56.141867504120476, "o", "0"] +[56.17186750412048, "o", "/"] +[56.20186750412048, "o", "r"] +[56.23186750412048, "o", "d"] +[56.26186750412048, "o", "u"] +[56.29186750412048, "o", "?"] +[56.32186750412048, "o", "d"] +[56.351867504120484, "o", "a"] +[56.381867504120486, "o", "t"] +[56.41186750412049, "o", "e"] +[56.44186750412049, "o", "="] +[56.47186750412049, "o", "e"] +[56.50186750412049, "o", "q"] +[56.53186750412049, "o", "."] +[56.56186750412049, "o", "2"] +[56.59186750412049, "o", "0"] +[56.621867504120495, "o", "1"] +[56.651867504120496, "o", "2"] +[56.6818675041205, "o", "-"] +[56.7118675041205, "o", "1"] +[56.7418675041205, "o", "2"] +[56.7718675041205, "o", "-"] +[56.8018675041205, "o", "2"] +[56.8318675041205, "o", "6"] +[56.861867504120504, "o", "&"] +[56.891867504120505, "o", "s"] +[56.921867504120506, "o", "e"] +[56.95186750412051, "o", "l"] +[56.98186750412051, "o", "e"] +[57.01186750412051, "o", "c"] +[57.04186750412051, "o", "t"] +[57.07186750412051, "o", "="] +[57.10186750412051, "o", "d"] +[57.131867504120514, "o", "a"] +[57.161867504120515, "o", "t"] +[57.191867504120516, "o", "e"] +[57.22186750412052, "o", ","] +[57.25186750412052, "o", "t"] +[57.28186750412052, "o", "e"] +[57.31186750412052, "o", "m"] +[57.34186750412052, "o", "p"] +[57.37186750412052, "o", "e"] +[57.401867504120524, "o", "r"] +[57.431867504120525, "o", "a"] +[57.46186750412053, "o", "t"] +[57.49186750412053, "o", "u"] +[57.52186750412053, "o", "r"] +[57.55186750412053, "o", "e"] +[57.58186750412053, "o", "m"] +[57.61186750412053, "o", "i"] +[57.64186750412053, "o", "n"] +[57.671867504120534, "o", ","] +[57.701867504120536, "o", "t"] +[57.73186750412054, "o", "e"] +[57.76186750412054, "o", "m"] +[57.79186750412054, "o", "p"] +[57.82186750412054, "o", "e"] +[57.85186750412054, "o", "r"] +[57.88186750412054, "o", "a"] +[57.91186750412054, "o", "t"] +[57.941867504120545, "o", "u"] +[57.971867504120546, "o", "r"] +[58.00186750412055, "o", "e"] +[58.03186750412055, "o", "m"] +[58.06186750412055, "o", "a"] +[58.09186750412055, "o", "x"] +[58.12186750412055, "o", ","] +[58.15186750412055, "o", "p"] +[58.181867504120554, "o", "r"] +[58.211867504120555, "o", "e"] +[58.241867504120556, "o", "c"] +[58.27186750412056, "o", "i"] +[58.30186750412056, "o", "p"] +[58.33186750412056, "o", "i"] +[58.36186750412056, "o", "t"] +[58.39186750412056, "o", "a"] +[58.42186750412056, "o", "t"] +[58.451867504120564, "o", "i"] +[58.481867504120565, "o", "o"] +[58.511867504120566, "o", "n"] +[58.54186750412057, "o", "\""] +[58.57186750412057, "o", "\r\n"] +[58.60186750412057, "o", "\u001b[0m"] +[58.63186750412057, "o", "\r\n"] +[59.3622799873359, "o", "Checked out demo/weather:383bdfc80ba0.\r\n"] +[59.746280527115566, "o", "[{\"date\":\"2012-12-26T00:00:00\",\"temperaturemin\":37.0,\"temperaturemax\":48.9,\"precipitation\":1.692}]"] +[59.77628052711557, "o", "\u001b[1m"] +[59.80628052711557, "o", "\u001b[36m"] +[59.83628052711557, "o", "\u001b[91m"] +[59.86628052711557, "o", "$"] +[59.89628052711557, "o", " "] +[59.92628052711557, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/latest/push-to-other-engine.cast b/content/casts/versioned/latest/push-to-other-engine.cast index 3bec2d6d..30668b39 100644 --- a/content/casts/versioned/latest/push-to-other-engine.cast +++ b/content/casts/versioned/latest/push-to-other-engine.cast @@ -1,4 +1,4 @@ -{"version": 2, "width": 100, "height": 26, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1615571803, "metadata": {"tss": [{"h": "The .sgconfig file is written from the point of view of the first engine.", "ts": 0.06}, {"h": "Initialize the two engines", "ts": 9.559999999999999}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 22.060000000000002}, {"h": "Push the dataset out to the other engine", "ts": 34.798492574692034}, {"h": "Check that the dataset exists on the remote engine", "ts": 42.91723186492956}, {"h": "Update the dataset on the local engine", "ts": 49.961395196915106}, {"h": "Inspect our changes", "ts": 61.252445316315345}, {"h": "Push the changes out to the remote engine", "ts": 68.99252518653941}, {"h": "Inspect the dataset on the remote engine", "ts": 76.02343680381853}]}} +{"version": 2, "width": 100, "height": 28, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1639770140, "metadata": {"tss": [{"h": "The .sgconfig file is written from the point of view of the first engine.", "ts": 0.06}, {"h": "Initialize the two engines", "ts": 9.559999999999999}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport from the CSV example", "ts": 23.060000000000002}, {"h": "Push the dataset out to the other engine", "ts": 36.48798360824611}, {"h": "Check that the dataset exists on the remote engine", "ts": 44.843569583893185}, {"h": "Update the dataset on the local engine", "ts": 52.10538166046186}, {"h": "Inspect our changes", "ts": 63.88464627265995}, {"h": "Push the changes out to the remote engine", "ts": 71.62466033935618}, {"h": "Inspect the dataset on the remote engine", "ts": 78.9054601383217}]}} [0.03, "o", "\u001b[H"] [0.06, "o", "\u001b[J"] [0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The .sgconfig file is written from the point of view of the first engine."] @@ -22,42 +22,13 @@ [0.6300000000000003, "o", "\r\n"] [0.6600000000000004, "o", "\u001b[0m"] [0.6900000000000004, "o", "\r\n"] -[0.6913444423675541, "o", "[defaults]"] -[0.6913854503631596, "o", "\r\n"] -[0.6916195774078373, "o", "SG_LOGLEVEL=INFO"] -[0.6916405582427982, "o", "\r\n"] -[0.6916834735870365, "o", "SG_ENGINE_HOST=localhost"] -[0.6916937255859379, "o", "\r\n"] -[0.691703262329102, "o", "SG_ENGINE_PORT=5432"] -[0.6917125606536869, "o", "\r\n"] -[0.6917242431640629, "o", "SG_ENGINE_USER=sgr"] -[0.691733779907227, "o", "\r\n"] -[0.6917449855804447, "o", "SG_ENGINE_PWD=supersecure"] -[0.6917542839050297, "o", "\r\n"] -[0.6917633438110355, "o", "\r\n"] -[0.6917726421356205, "o", "[remote: engine_2]"] -[0.6917828941345219, "o", "\r\n"] -[0.6917924308776859, "o", "SG_ENGINE_ADMIN_USER=sgr"] -[0.6918017292022709, "o", "\r\n"] -[0.6918110275268559, "o", "SG_ENGINE_ADMIN_PWD=supersecure"] -[0.6918203258514408, "o", "\r\n"] -[0.6918296241760258, "o", "SG_ENGINE_POSTGRES_DB_NAME=splitgraph"] -[0.6918384456634525, "o", "\r\n"] -[0.6918477439880375, "o", "SG_ENGINE_HOST=localhost"] -[0.6918568038940434, "o", "\r\n"] -[0.6918687248229984, "o", "SG_ENGINE_PORT=5431"] -[0.6918801689147953, "o", "\r\n"] -[0.6918923282623295, "o", "SG_ENGINE_USER=sgr"] -[0.6919032955169682, "o", "\r\n"] -[0.6919140243530277, "o", "SG_ENGINE_PWD=supersecure"] -[0.6919233226776127, "o", "\r\n"] -[0.6919361972808842, "o", "SG_ENGINE_DB_NAME=splitgraph"] -[0.7219361972808842, "o", "\u001b[1m"] -[0.7519361972808842, "o", "\u001b[36m"] -[0.7819361972808843, "o", "\u001b[91m"] -[0.8119361972808843, "o", "$"] -[0.8419361972808843, "o", " "] -[0.8719361972808843, "o", "\u001b[0m"] +[0.691543760299683, "o", "[defaults]\r\nSG_LOGLEVEL=INFO\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5432\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\n\r\n[remote: engine_2]\r\nSG_ENGINE_ADMIN_USER=sgr\r\nSG_ENGINE_ADMIN_PWD=supersecure\r\nSG_ENGINE_POSTGRES_DB_NAME=splitgraph\r\nSG_ENGINE_HOST=localhost\r\nSG_ENGINE_PORT=5431\r\nSG_ENGINE_USER=sgr\r\nSG_ENGINE_PWD=supersecure\r\nSG_ENGINE_DB_NAME=splitgraph"] +[0.721543760299683, "o", "\u001b[1m"] +[0.7515437602996831, "o", "\u001b[36m"] +[0.7815437602996831, "o", "\u001b[91m"] +[0.8115437602996831, "o", "$"] +[0.8415437602996831, "o", " "] +[0.8715437602996832, "o", "\u001b[0m"] [9.53, "o", "\u001b[H"] [9.559999999999999, "o", "\u001b[J"] [9.589999999999998, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Initialize the two engines"] @@ -105,815 +76,813 @@ [10.849999999999971, "o", "\r\n"] [10.87999999999997, "o", "\u001b[0m"] [10.90999999999997, "o", "\r\n"] -[11.146425161361664, "o", "Initializing engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph)..."] -[11.14647403717038, "o", "\r\n"] -[11.150690469741791, "o", "Waiting for connection....\r\n"] -[12.150690469741791, "o", "Database splitgraph already exists, skipping\r\n"] -[12.150709781646698, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] -[12.161192569732636, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] -[12.184781227111786, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] -[12.185951862335175, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] -[12.202991876602143, "o", "Installing Splitgraph API functions...\r\n"] -[12.239499244689911, "o", "Installing CStore management functions...\r\n"] -[12.242821130752533, "o", "Installing the audit trigger...\r\n"] -[12.253967914581269, "o", "Engine PostgresEngine LOCAL (sgr@localhost:5432/splitgraph) initialized.\r\n"] -[12.428643617629975, "o", "Initializing engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph)...\r\n"] -[12.436545286178559, "o", "Database splitgraph already exists, skipping\r\n"] -[12.436729822158783, "o", "Ensuring the metadata schema at splitgraph_meta exists...\r\n"] -[12.443359050750702, "o", "Running splitgraph_meta--0.0.1.sql\r\n"] -[12.466501150131196, "o", "Running splitgraph_meta--0.0.1--0.0.2.sql\r\n"] -[12.46799937248227, "o", "Running splitgraph_meta--0.0.2--0.0.3.sql\r\n"] -[12.490070734024018, "o", "Installing Splitgraph API functions...\r\n"] -[12.527032527923554, "o", "Installing CStore management functions...\r\n"] -[12.530509624481171, "o", "Installing the audit trigger...\r\n"] -[12.542691144943207, "o", "Engine PostgresEngine engine_2 (sgr@localhost:5431/splitgraph) initialized.\r\n"] -[12.572691144943207, "o", "\u001b[1m"] -[12.602691144943206, "o", "\u001b[36m"] -[12.632691144943205, "o", "\u001b[91m"] -[12.662691144943205, "o", "$"] -[12.692691144943204, "o", " "] -[12.722691144943203, "o", "\u001b[0m"] -[22.03, "o", "\u001b[H"] -[22.060000000000002, "o", "\u001b[J"] -[22.090000000000003, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport from the CSV example"] -[22.120000000000005, "o", "\r\n"] -[22.150000000000006, "o", "$"] -[22.180000000000007, "o", " "] -[22.210000000000008, "o", "s"] -[22.24000000000001, "o", "g"] -[22.27000000000001, "o", "r"] -[22.30000000000001, "o", " "] -[22.330000000000013, "o", "i"] -[22.360000000000014, "o", "n"] -[22.390000000000015, "o", "i"] -[22.420000000000016, "o", "t"] -[22.450000000000017, "o", " "] -[22.480000000000018, "o", "d"] -[22.51000000000002, "o", "e"] -[22.54000000000002, "o", "m"] -[22.57000000000002, "o", "o"] -[22.600000000000023, "o", "/"] -[22.630000000000024, "o", "w"] -[22.660000000000025, "o", "e"] -[22.690000000000026, "o", "a"] -[22.720000000000027, "o", "t"] -[22.75000000000003, "o", "h"] -[22.78000000000003, "o", "e"] -[22.81000000000003, "o", "r"] -[22.840000000000032, "o", "\r\n"] -[22.870000000000033, "o", "$"] -[22.900000000000034, "o", " "] -[22.930000000000035, "o", "s"] -[22.960000000000036, "o", "g"] -[22.990000000000038, "o", "r"] -[23.02000000000004, "o", " "] -[23.05000000000004, "o", "c"] -[23.08000000000004, "o", "s"] -[23.110000000000042, "o", "v"] -[23.140000000000043, "o", " "] -[23.170000000000044, "o", "i"] -[23.200000000000045, "o", "m"] -[23.230000000000047, "o", "p"] -[23.260000000000048, "o", "o"] -[23.29000000000005, "o", "r"] -[23.32000000000005, "o", "t"] -[23.35000000000005, "o", " "] -[23.380000000000052, "o", "-"] -[23.410000000000053, "o", "f"] -[23.440000000000055, "o", " "] -[23.470000000000056, "o", "."] -[23.500000000000057, "o", "."] -[23.530000000000058, "o", "/"] -[23.56000000000006, "o", "i"] -[23.59000000000006, "o", "m"] -[23.62000000000006, "o", "p"] -[23.650000000000063, "o", "o"] -[23.680000000000064, "o", "r"] -[23.710000000000065, "o", "t"] -[23.740000000000066, "o", "-"] -[23.770000000000067, "o", "f"] -[23.800000000000068, "o", "r"] -[23.83000000000007, "o", "o"] -[23.86000000000007, "o", "m"] -[23.89000000000007, "o", "-"] -[23.920000000000073, "o", "c"] -[23.950000000000074, "o", "s"] -[23.980000000000075, "o", "v"] -[24.010000000000076, "o", "/"] -[24.040000000000077, "o", "r"] -[24.07000000000008, "o", "d"] -[24.10000000000008, "o", "u"] -[24.13000000000008, "o", "-"] -[24.160000000000082, "o", "w"] -[24.190000000000083, "o", "e"] -[24.220000000000084, "o", "a"] -[24.250000000000085, "o", "t"] -[24.280000000000086, "o", "h"] -[24.310000000000088, "o", "e"] -[24.34000000000009, "o", "r"] -[24.37000000000009, "o", "-"] -[24.40000000000009, "o", "h"] -[24.430000000000092, "o", "i"] -[24.460000000000093, "o", "s"] -[24.490000000000094, "o", "t"] -[24.520000000000095, "o", "o"] -[24.550000000000097, "o", "r"] -[24.580000000000098, "o", "y"] -[24.6100000000001, "o", "."] -[24.6400000000001, "o", "c"] -[24.6700000000001, "o", "s"] -[24.700000000000102, "o", "v"] -[24.730000000000103, "o", " "] -[24.760000000000105, "o", "\\"] -[24.790000000000106, "o", "\r\n "] -[24.820000000000107, "o", "-"] -[24.850000000000108, "o", "k"] -[24.88000000000011, "o", " "] -[24.91000000000011, "o", "d"] -[24.94000000000011, "o", "a"] -[24.970000000000113, "o", "t"] -[25.000000000000114, "o", "e"] -[25.030000000000115, "o", " "] -[25.060000000000116, "o", "\\"] -[25.090000000000117, "o", "\r\n "] -[25.12000000000012, "o", "-"] -[25.15000000000012, "o", "t"] -[25.18000000000012, "o", " "] -[25.21000000000012, "o", "d"] -[25.240000000000123, "o", "a"] -[25.270000000000124, "o", "t"] -[25.300000000000125, "o", "e"] -[25.330000000000126, "o", " "] -[25.360000000000127, "o", "t"] -[25.39000000000013, "o", "i"] -[25.42000000000013, "o", "m"] -[25.45000000000013, "o", "e"] -[25.480000000000132, "o", "s"] -[25.510000000000133, "o", "t"] -[25.540000000000134, "o", "a"] -[25.570000000000135, "o", "m"] -[25.600000000000136, "o", "p"] -[25.630000000000138, "o", " "] -[25.66000000000014, "o", "\\"] -[25.69000000000014, "o", "\r\n "] -[25.72000000000014, "o", "-"] -[25.750000000000142, "o", "-"] -[25.780000000000143, "o", "s"] -[25.810000000000144, "o", "e"] -[25.840000000000146, "o", "p"] -[25.870000000000147, "o", "a"] -[25.900000000000148, "o", "r"] -[25.93000000000015, "o", "a"] -[25.96000000000015, "o", "t"] -[25.99000000000015, "o", "o"] -[26.020000000000152, "o", "r"] -[26.050000000000153, "o", " "] -[26.080000000000155, "o", "\""] -[26.110000000000156, "o", ";"] -[26.140000000000157, "o", "\""] -[26.170000000000158, "o", " "] -[26.20000000000016, "o", "\\"] -[26.23000000000016, "o", "\r\n "] -[26.26000000000016, "o", "d"] -[26.290000000000163, "o", "e"] -[26.320000000000164, "o", "m"] -[26.350000000000165, "o", "o"] -[26.380000000000166, "o", "/"] -[26.410000000000167, "o", "w"] -[26.44000000000017, "o", "e"] -[26.47000000000017, "o", "a"] -[26.50000000000017, "o", "t"] -[26.53000000000017, "o", "h"] -[26.560000000000173, "o", "e"] -[26.590000000000174, "o", "r"] -[26.620000000000175, "o", " "] -[26.650000000000176, "o", "r"] -[26.680000000000177, "o", "d"] -[26.71000000000018, "o", "u"] -[26.74000000000018, "o", "\r\n"] -[26.77000000000018, "o", "$"] -[26.800000000000182, "o", " "] -[26.830000000000183, "o", "s"] -[26.860000000000184, "o", "g"] -[26.890000000000185, "o", "r"] -[26.920000000000186, "o", " "] -[26.950000000000188, "o", "c"] -[26.98000000000019, "o", "o"] -[27.01000000000019, "o", "m"] -[27.04000000000019, "o", "m"] -[27.070000000000192, "o", "i"] -[27.100000000000193, "o", "t"] -[27.130000000000194, "o", " "] -[27.160000000000196, "o", "d"] -[27.190000000000197, "o", "e"] -[27.220000000000198, "o", "m"] -[27.2500000000002, "o", "o"] -[27.2800000000002, "o", "/"] -[27.3100000000002, "o", "w"] -[27.340000000000202, "o", "e"] -[27.370000000000203, "o", "a"] -[27.400000000000205, "o", "t"] -[27.430000000000206, "o", "h"] -[27.460000000000207, "o", "e"] -[27.490000000000208, "o", "r"] -[27.52000000000021, "o", "\r\n"] -[27.55000000000021, "o", "$"] -[27.58000000000021, "o", " "] -[27.610000000000213, "o", "s"] -[27.640000000000214, "o", "g"] -[27.670000000000215, "o", "r"] -[27.700000000000216, "o", " "] -[27.730000000000217, "o", "t"] -[27.76000000000022, "o", "a"] -[27.79000000000022, "o", "g"] -[27.82000000000022, "o", " "] -[27.85000000000022, "o", "d"] -[27.880000000000223, "o", "e"] -[27.910000000000224, "o", "m"] -[27.940000000000225, "o", "o"] -[27.970000000000226, "o", "/"] -[28.000000000000227, "o", "w"] -[28.03000000000023, "o", "e"] -[28.06000000000023, "o", "a"] -[28.09000000000023, "o", "t"] -[28.120000000000232, "o", "h"] -[28.150000000000233, "o", "e"] -[28.180000000000234, "o", "r"] -[28.210000000000235, "o", " "] -[28.240000000000236, "o", "i"] -[28.270000000000238, "o", "n"] -[28.30000000000024, "o", "i"] -[28.33000000000024, "o", "t"] -[28.36000000000024, "o", "i"] -[28.390000000000242, "o", "a"] -[28.420000000000243, "o", "l"] -[28.450000000000244, "o", "_"] -[28.480000000000246, "o", "d"] -[28.510000000000247, "o", "a"] -[28.540000000000248, "o", "t"] -[28.57000000000025, "o", "a"] -[28.60000000000025, "o", "\r\n"] -[28.63000000000025, "o", "\u001b[0m"] -[28.660000000000252, "o", "\r\n"] -[28.889401350021615, "o", "Initialized empty repository demo/weather\r\n"] -[29.11017218589808, "o", "Committing demo/weather...\r\n"] -[29.136869821548714, "o", "Processing table rdu\r\n"] -[29.34230700492884, "o", "Committed demo/weather as 03caa35a81a1.\r\n"] -[29.558492574692025, "o", "Tagged demo/weather:03caa35a81a1f9715f49d9d4814edf65bec8781e877daccafa8bcbaede8cc525 with initial_data.\r\n"] -[29.588492574692026, "o", "\u001b[1m"] -[29.618492574692027, "o", "\u001b[36m"] -[29.64849257469203, "o", "\u001b[91m"] -[29.67849257469203, "o", "$"] -[29.70849257469203, "o", " "] -[29.73849257469203, "o", "\u001b[0m"] -[34.76849257469203, "o", "\u001b[H"] -[34.798492574692034, "o", "\u001b[J"] -[34.828492574692035, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset out to the other engine"] -[34.858492574692036, "o", "\r\n"] -[34.88849257469204, "o", "$ # Since by default Splitgraph is configured to use S3 for uploading, we need\r\n"] -[34.91849257469204, "o", "$ # to override the upload handler and upload data to the actual database.\r\n"] -[34.94849257469204, "o", "$"] -[34.97849257469204, "o", " "] -[35.00849257469204, "o", "s"] -[35.03849257469204, "o", "g"] -[35.068492574692044, "o", "r"] -[35.098492574692045, "o", " "] -[35.128492574692046, "o", "p"] -[35.15849257469205, "o", "u"] -[35.18849257469205, "o", "s"] -[35.21849257469205, "o", "h"] -[35.24849257469205, "o", " "] -[35.27849257469205, "o", "d"] -[35.30849257469205, "o", "e"] -[35.338492574692054, "o", "m"] -[35.368492574692056, "o", "o"] -[35.39849257469206, "o", "/"] -[35.42849257469206, "o", "w"] -[35.45849257469206, "o", "e"] -[35.48849257469206, "o", "a"] -[35.51849257469206, "o", "t"] -[35.54849257469206, "o", "h"] -[35.57849257469206, "o", "e"] -[35.608492574692065, "o", "r"] -[35.638492574692066, "o", " "] -[35.66849257469207, "o", "-"] -[35.69849257469207, "o", "-"] -[35.72849257469207, "o", "r"] -[35.75849257469207, "o", "e"] -[35.78849257469207, "o", "m"] -[35.81849257469207, "o", "o"] -[35.848492574692074, "o", "t"] -[35.878492574692075, "o", "e"] -[35.908492574692076, "o", " "] -[35.93849257469208, "o", "e"] -[35.96849257469208, "o", "n"] -[35.99849257469208, "o", "g"] -[36.02849257469208, "o", "i"] -[36.05849257469208, "o", "n"] -[36.08849257469208, "o", "e"] -[36.118492574692084, "o", "_"] -[36.148492574692085, "o", "2"] -[36.178492574692086, "o", " "] -[36.20849257469209, "o", "d"] -[36.23849257469209, "o", "e"] -[36.26849257469209, "o", "m"] -[36.29849257469209, "o", "o"] -[36.32849257469209, "o", "/"] -[36.35849257469209, "o", "w"] -[36.388492574692094, "o", "e"] -[36.418492574692095, "o", "a"] -[36.4484925746921, "o", "t"] -[36.4784925746921, "o", "h"] -[36.5084925746921, "o", "e"] -[36.5384925746921, "o", "r"] -[36.5684925746921, "o", " "] -[36.5984925746921, "o", "-"] -[36.6284925746921, "o", "-"] -[36.658492574692104, "o", "u"] -[36.688492574692106, "o", "p"] -[36.71849257469211, "o", "l"] -[36.74849257469211, "o", "o"] -[36.77849257469211, "o", "a"] -[36.80849257469211, "o", "d"] -[36.83849257469211, "o", "-"] -[36.86849257469211, "o", "h"] -[36.89849257469211, "o", "a"] -[36.928492574692115, "o", "n"] -[36.958492574692116, "o", "d"] -[36.98849257469212, "o", "l"] -[37.01849257469212, "o", "e"] -[37.04849257469212, "o", "r"] -[37.07849257469212, "o", " "] -[37.10849257469212, "o", "D"] -[37.13849257469212, "o", "B"] -[37.168492574692124, "o", "\r\n"] -[37.198492574692125, "o", "\u001b[0m"] -[37.228492574692126, "o", "\r\n"] -[37.40282829284703, "o", "Pushing demo/weather to demo/weather on remote engine_2\r\n"] -[37.40297277450597, "o", "Gathering remote metadata...\r\n"] -[37.46593339920079, "o", "Uploading 1 object, total size 109.61 KiB\r\n"] -[37.472893552780505, "o", "\r 0%| | 0/1 [00:00 25386a18b054\r\n"] -[24.22741576194776, "o", "\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] -[24.234490118026862, "o", "Executing SQL...\r\n"] -[24.440199098587165, "o", "Committing demo/summary...\r\n"] -[24.46855278968824, "o", "Processing table monthly_summary\r\n"] -[24.55576106071485, "o", " ---> 65245bd878ac\r\n"] -[24.55879159927381, "o", "Successfully built demo/summary:65245bd878ac.\r\n"] -[24.76809140205396, "o", "Tagged demo/summary:65245bd878aca09cc0c3bc87411cebef7f42b601ad169951821c321000ccacf8 with based_on_initial.\r\n"] -[24.798091402053963, "o", "\u001b[1m"] -[24.828091402053964, "o", "\u001b[36m"] -[24.858091402053965, "o", "\u001b[91m"] -[24.888091402053966, "o", "$"] -[24.918091402053967, "o", " "] -[24.94809140205397, "o", "\u001b[0m"] -[29.97809140205397, "o", "\u001b[H"] -[30.00809140205397, "o", "\u001b[J"] -[30.038091402053972, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Much like with Docker, the build result is cached, so running build again checks out the existing image."] -[30.068091402053973, "o", "\r\n"] -[30.098091402053974, "o", "$"] -[30.128091402053975, "o", " "] -[30.158091402053977, "o", "s"] -[30.188091402053978, "o", "g"] -[30.21809140205398, "o", "r"] -[30.24809140205398, "o", " "] -[30.27809140205398, "o", "b"] -[30.308091402053982, "o", "u"] -[30.338091402053983, "o", "i"] -[30.368091402053984, "o", "l"] -[30.398091402053986, "o", "d"] -[30.428091402053987, "o", " "] -[30.458091402053988, "o", "r"] -[30.48809140205399, "o", "d"] -[30.51809140205399, "o", "u"] -[30.54809140205399, "o", "-"] -[30.578091402053992, "o", "w"] -[30.608091402053994, "o", "e"] -[30.638091402053995, "o", "a"] -[30.668091402053996, "o", "t"] -[30.698091402053997, "o", "h"] -[30.728091402053998, "o", "e"] -[30.758091402054, "o", "r"] -[30.788091402054, "o", "-"] -[30.818091402054, "o", "s"] -[30.848091402054003, "o", "u"] -[30.878091402054004, "o", "m"] -[30.908091402054005, "o", "m"] -[30.938091402054006, "o", "a"] -[30.968091402054007, "o", "r"] -[30.99809140205401, "o", "y"] -[31.02809140205401, "o", "."] -[31.05809140205401, "o", "s"] -[31.088091402054012, "o", "p"] -[31.118091402054013, "o", "l"] -[31.148091402054014, "o", "i"] -[31.178091402054015, "o", "t"] -[31.208091402054016, "o", "f"] -[31.238091402054017, "o", "i"] -[31.26809140205402, "o", "l"] -[31.29809140205402, "o", "e"] -[31.32809140205402, "o", " "] -[31.358091402054022, "o", "-"] -[31.388091402054023, "o", "o"] -[31.418091402054024, "o", " "] -[31.448091402054025, "o", "d"] -[31.478091402054027, "o", "e"] -[31.508091402054028, "o", "m"] -[31.53809140205403, "o", "o"] -[31.56809140205403, "o", "/"] -[31.59809140205403, "o", "s"] -[31.628091402054032, "o", "u"] -[31.658091402054033, "o", "m"] -[31.688091402054035, "o", "m"] -[31.718091402054036, "o", "a"] -[31.748091402054037, "o", "r"] -[31.778091402054038, "o", "y"] -[31.80809140205404, "o", "\r\n"] -[31.83809140205404, "o", "\u001b[0m"] -[31.86809140205404, "o", "\r\n"] -[32.06952696800253, "o", "Executing Splitfile rdu-weather-summary.splitfile with arguments {}\r\n"] -[32.149000701904505, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather IMPORT rdu AS source_data\u001b[0m\r\n"] -[32.150049028396815, "o", "Resolving repository demo/weather\r\n"] -[32.27885347366354, "o", " ---> Using cache\r\n"] -[32.278918085098475, "o", " ---> 25386a18b054\r\n\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] -[32.49251562118551, "o", " ---> Using cache\r\n"] -[32.49263792991659, "o", " ---> 65245bd878ac\r\n"] -[32.495388326645106, "o", "Successfully built demo/summary:65245bd878ac.\r\n"] -[32.52538832664511, "o", "\u001b[1m"] -[32.55538832664511, "o", "\u001b[36m"] -[32.58538832664511, "o", "\u001b[91m"] -[32.61538832664511, "o", "$"] -[32.64538832664511, "o", " "] -[32.67538832664511, "o", "\u001b[0m"] -[37.705388326645114, "o", "\u001b[H"] -[37.735388326645115, "o", "\u001b[J"] -[37.765388326645116, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the new dataset"] -[37.79538832664512, "o", "\r\n"] -[37.82538832664512, "o", "$"] -[37.85538832664512, "o", " "] -[37.88538832664512, "o", "s"] -[37.91538832664512, "o", "g"] -[37.94538832664512, "o", "r"] -[37.975388326645124, "o", " "] -[38.005388326645125, "o", "s"] -[38.035388326645126, "o", "h"] -[38.06538832664513, "o", "o"] -[38.09538832664513, "o", "w"] -[38.12538832664513, "o", " "] -[38.15538832664513, "o", "d"] -[38.18538832664513, "o", "e"] -[38.21538832664513, "o", "m"] -[38.245388326645134, "o", "o"] -[38.275388326645135, "o", "/"] -[38.30538832664514, "o", "s"] -[38.33538832664514, "o", "u"] -[38.36538832664514, "o", "m"] -[38.39538832664514, "o", "m"] -[38.42538832664514, "o", "a"] -[38.45538832664514, "o", "r"] -[38.48538832664514, "o", "y"] -[38.515388326645144, "o", ":"] -[38.545388326645146, "o", "b"] -[38.57538832664515, "o", "a"] -[38.60538832664515, "o", "s"] -[38.63538832664515, "o", "e"] -[38.66538832664515, "o", "d"] -[38.69538832664515, "o", "_"] -[38.72538832664515, "o", "o"] -[38.75538832664515, "o", "n"] -[38.785388326645155, "o", "_"] -[38.815388326645156, "o", "i"] -[38.84538832664516, "o", "n"] -[38.87538832664516, "o", "i"] -[38.90538832664516, "o", "t"] -[38.93538832664516, "o", "i"] -[38.96538832664516, "o", "a"] -[38.99538832664516, "o", "l"] -[39.025388326645164, "o", "\r\n"] -[39.055388326645165, "o", "$"] -[39.085388326645166, "o", " "] -[39.11538832664517, "o", "s"] -[39.14538832664517, "o", "g"] -[39.17538832664517, "o", "r"] -[39.20538832664517, "o", " "] -[39.23538832664517, "o", "t"] -[39.26538832664517, "o", "a"] -[39.295388326645174, "o", "b"] -[39.325388326645175, "o", "l"] -[39.355388326645176, "o", "e"] -[39.38538832664518, "o", " "] -[39.41538832664518, "o", "d"] -[39.44538832664518, "o", "e"] -[39.47538832664518, "o", "m"] -[39.50538832664518, "o", "o"] -[39.53538832664518, "o", "/"] -[39.565388326645184, "o", "s"] -[39.595388326645185, "o", "u"] -[39.62538832664519, "o", "m"] -[39.65538832664519, "o", "m"] -[39.68538832664519, "o", "a"] -[39.71538832664519, "o", "r"] -[39.74538832664519, "o", "y"] -[39.77538832664519, "o", ":"] -[39.80538832664519, "o", "b"] -[39.835388326645194, "o", "a"] -[39.865388326645196, "o", "s"] -[39.8953883266452, "o", "e"] -[39.9253883266452, "o", "d"] -[39.9553883266452, "o", "_"] -[39.9853883266452, "o", "o"] -[40.0153883266452, "o", "n"] -[40.0453883266452, "o", "_"] -[40.075388326645204, "o", "i"] -[40.105388326645205, "o", "n"] -[40.135388326645206, "o", "i"] -[40.16538832664521, "o", "t"] -[40.19538832664521, "o", "i"] -[40.22538832664521, "o", "a"] -[40.25538832664521, "o", "l"] -[40.28538832664521, "o", " "] -[40.31538832664521, "o", "m"] -[40.345388326645214, "o", "o"] -[40.375388326645215, "o", "n"] -[40.405388326645216, "o", "t"] -[40.43538832664522, "o", "h"] -[40.46538832664522, "o", "l"] -[40.49538832664522, "o", "y"] -[40.52538832664522, "o", "_"] -[40.55538832664522, "o", "s"] -[40.58538832664522, "o", "u"] -[40.615388326645224, "o", "m"] -[40.645388326645225, "o", "m"] -[40.675388326645226, "o", "a"] -[40.70538832664523, "o", "r"] -[40.73538832664523, "o", "y"] -[40.76538832664523, "o", "\r\n"] -[40.79538832664523, "o", "$"] -[40.82538832664523, "o", " "] -[40.85538832664523, "o", "s"] -[40.885388326645234, "o", "g"] -[40.915388326645235, "o", "r"] -[40.94538832664524, "o", " "] -[40.97538832664524, "o", "s"] -[41.00538832664524, "o", "q"] -[41.03538832664524, "o", "l"] -[41.06538832664524, "o", " "] -[41.09538832664524, "o", "-"] -[41.12538832664524, "o", "s"] -[41.155388326645244, "o", " "] -[41.185388326645246, "o", "d"] -[41.21538832664525, "o", "e"] -[41.24538832664525, "o", "m"] -[41.27538832664525, "o", "o"] -[41.30538832664525, "o", "/"] -[41.33538832664525, "o", "s"] -[41.36538832664525, "o", "u"] -[41.395388326645254, "o", "m"] -[41.425388326645255, "o", "m"] -[41.455388326645256, "o", "a"] -[41.48538832664526, "o", "r"] -[41.51538832664526, "o", "y"] -[41.54538832664526, "o", " "] -[41.57538832664526, "o", "\""] -[41.60538832664526, "o", "S"] -[41.63538832664526, "o", "E"] -[41.665388326645264, "o", "L"] -[41.695388326645265, "o", "E"] -[41.725388326645266, "o", "C"] -[41.75538832664527, "o", "T"] -[41.78538832664527, "o", " "] -[41.81538832664527, "o", "*"] -[41.84538832664527, "o", " "] -[41.87538832664527, "o", "F"] -[41.90538832664527, "o", "R"] -[41.935388326645274, "o", "O"] -[41.965388326645275, "o", "M"] -[41.995388326645276, "o", " "] -[42.02538832664528, "o", "m"] -[42.05538832664528, "o", "o"] -[42.08538832664528, "o", "n"] -[42.11538832664528, "o", "t"] -[42.14538832664528, "o", "h"] -[42.17538832664528, "o", "l"] -[42.205388326645284, "o", "y"] -[42.235388326645285, "o", "_"] -[42.26538832664529, "o", "s"] -[42.29538832664529, "o", "u"] -[42.32538832664529, "o", "m"] -[42.35538832664529, "o", "m"] -[42.38538832664529, "o", "a"] -[42.41538832664529, "o", "r"] -[42.44538832664529, "o", "y"] -[42.475388326645295, "o", " "] -[42.505388326645296, "o", "O"] -[42.5353883266453, "o", "R"] -[42.5653883266453, "o", "D"] -[42.5953883266453, "o", "E"] -[42.6253883266453, "o", "R"] -[42.6553883266453, "o", " "] -[42.6853883266453, "o", "B"] -[42.715388326645304, "o", "Y"] -[42.745388326645305, "o", " "] -[42.775388326645306, "o", "m"] -[42.80538832664531, "o", "o"] -[42.83538832664531, "o", "n"] -[42.86538832664531, "o", "t"] -[42.89538832664531, "o", "h"] -[42.92538832664531, "o", " "] -[42.95538832664531, "o", "D"] -[42.985388326645314, "o", "E"] -[43.015388326645315, "o", "S"] -[43.045388326645316, "o", "C"] -[43.07538832664532, "o", " "] -[43.10538832664532, "o", "L"] -[43.13538832664532, "o", "I"] -[43.16538832664532, "o", "M"] -[43.19538832664532, "o", "I"] -[43.22538832664532, "o", "T"] -[43.255388326645324, "o", " "] -[43.285388326645325, "o", "5"] -[43.315388326645326, "o", "\""] -[43.34538832664533, "o", "\r\n"] -[43.37538832664533, "o", "\u001b[0m"] -[43.40538832664533, "o", "\r\n"] -[43.61573335647626, "o", "Image demo/summary:65245bd878aca09cc0c3bc87411cebef7f42b601ad169951821c321000ccacf8\r\n"] -[43.61575028419538, "o", "CREATE TABLE monthly_summary AS ( SELECT to_char(date, 'YYYYMM') AS month, AVG(precipitation) AS average_precipitation, AVG(snowfall) AS average_snowfall FROM source_data GROUP BY month ORDER BY month ASC)\r\nCreated at 2021-03-12T17:57:46.295969\r\n"] -[43.617011756897405, "o", "Size: 111.78 KiB\r\n"] -[43.617019624710515, "o", "Parent: 25386a18b0543fc5c664d294a07303aa2a90992e9d1abf52272c7e1993681621\r\n\r\nTables:\r\n"] -[43.61766407012983, "o", " monthly_summary\r\n source_data\r\n"] -[43.83064481735273, "o", "Table demo/summary:65245bd878aca09cc0c3bc87411cebef7f42b601ad169951821c321000ccacf8/monthly_summary\r\n"] -[43.8306564998631, "o", "\r\n"] -[43.83219120025678, "o", "Size: 2.17 KiB\r\n"] -[43.83304831504865, "o", "Rows: 153\r\n"] -[43.833065719604924, "o", "Columns: \r\n month (text)\r\n average_precipitation (numeric)\r\n average_snowfall (numeric)\r\n\r\nObjects: \r\n"] -[43.833073348999456, "o", " o5e29c3cf82603335df66690a448ca1f604f0002d5a3496b18c982a5ea835f3\r\n"] -[44.04492613792463, "o", "201909 0.171667 0\r\n201908 0.139032 0\r\n201907 0.117097 0\r\n201906 0.12 0\r\n201905 0.103548 0\r\n"] -[44.07492613792463, "o", "\u001b[1m"] -[44.10492613792463, "o", "\u001b[36m"] -[44.13492613792463, "o", "\u001b[91m"] -[44.16492613792463, "o", "$"] -[44.19492613792463, "o", " "] -[44.22492613792463, "o", "\u001b[0m"] -[52.705388326645114, "o", "\u001b[H"] -[52.735388326645115, "o", "\u001b[J"] -[52.765388326645116, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image's provenance (generated from its metadata)"] -[52.79538832664512, "o", "\r\n"] -[52.82538832664512, "o", "$"] -[52.85538832664512, "o", " "] -[52.88538832664512, "o", "s"] -[52.91538832664512, "o", "g"] -[52.94538832664512, "o", "r"] -[52.975388326645124, "o", " "] -[53.005388326645125, "o", "p"] -[53.035388326645126, "o", "r"] -[53.06538832664513, "o", "o"] -[53.09538832664513, "o", "v"] -[53.12538832664513, "o", "e"] -[53.15538832664513, "o", "n"] -[53.18538832664513, "o", "a"] -[53.21538832664513, "o", "n"] -[53.245388326645134, "o", "c"] -[53.275388326645135, "o", "e"] -[53.30538832664514, "o", " "] -[53.33538832664514, "o", "d"] -[53.36538832664514, "o", "e"] -[53.39538832664514, "o", "m"] -[53.42538832664514, "o", "o"] -[53.45538832664514, "o", "/"] -[53.48538832664514, "o", "s"] -[53.515388326645144, "o", "u"] -[53.545388326645146, "o", "m"] -[53.57538832664515, "o", "m"] -[53.60538832664515, "o", "a"] -[53.63538832664515, "o", "r"] -[53.66538832664515, "o", "y"] -[53.69538832664515, "o", "\r\n"] -[53.72538832664515, "o", "$"] -[53.75538832664515, "o", " "] -[53.785388326645155, "o", "s"] -[53.815388326645156, "o", "g"] -[53.84538832664516, "o", "r"] -[53.87538832664516, "o", " "] -[53.90538832664516, "o", "p"] -[53.93538832664516, "o", "r"] -[53.96538832664516, "o", "o"] -[53.99538832664516, "o", "v"] -[54.025388326645164, "o", "e"] -[54.055388326645165, "o", "n"] -[54.085388326645166, "o", "a"] -[54.11538832664517, "o", "n"] -[54.14538832664517, "o", "c"] -[54.17538832664517, "o", "e"] -[54.20538832664517, "o", " "] -[54.23538832664517, "o", "-"] -[54.26538832664517, "o", "-"] -[54.295388326645174, "o", "f"] -[54.325388326645175, "o", "u"] -[54.355388326645176, "o", "l"] -[54.38538832664518, "o", "l"] -[54.41538832664518, "o", " "] -[54.44538832664518, "o", "d"] -[54.47538832664518, "o", "e"] -[54.50538832664518, "o", "m"] -[54.53538832664518, "o", "o"] -[54.565388326645184, "o", "/"] -[54.595388326645185, "o", "s"] -[54.62538832664519, "o", "u"] -[54.65538832664519, "o", "m"] -[54.68538832664519, "o", "m"] -[54.71538832664519, "o", "a"] -[54.74538832664519, "o", "r"] -[54.77538832664519, "o", "y"] -[54.80538832664519, "o", "\r\n"] -[54.835388326645194, "o", "\u001b[0m"] -[54.865388326645196, "o", "\r\n"] -[55.07878988266021, "o", "demo/summary:65245bd878aca09cc0c3bc87411cebef7f42b601ad169951821c321000ccacf8 depends on:\r\n"] -[55.0788082408908, "o", "demo/weather:dc76bb70063c7a4d6f3fcdd32c9d86d09e25e3958606a291f69fea3aa4371739\r\n"] -[55.296296768188775, "o", "# Splitfile commands used to recreate demo/summary:65245bd878aca09cc0c3bc87411cebef7f42b601ad169951821c321000ccacf8\r\n"] -[55.29631989479095, "o", "FROM demo/weather:dc76bb70063c7a4d6f3fcdd32c9d86d09e25e3958606a291f69fea3aa4371739 IMPORT rdu AS source_data\r\nSQL {CREATE TABLE monthly_summary\r\n AS SELECT to_char(date, 'YYYYMM') AS month\r\n , avg(precipitation) AS average_precipitation\r\n , avg(snowfall) AS average_snowfall\r\n FROM source_data\r\n GROUP BY month\r\n ORDER BY month ASC}\r\n"] -[55.32631989479095, "o", "\u001b[1m"] -[55.35631989479095, "o", "\u001b[36m"] -[55.38631989479095, "o", "\u001b[91m"] -[55.41631989479095, "o", "$"] -[55.44631989479095, "o", " "] -[55.476319894790954, "o", "\u001b[0m"] -[60.506319894790956, "o", "\u001b[H"] -[60.53631989479096, "o", "\u001b[J"] -[60.56631989479096, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We can also see that a new image has been derived from demo/weather"] -[60.59631989479096, "o", "\r\n"] -[60.62631989479096, "o", "$"] -[60.65631989479096, "o", " "] -[60.68631989479096, "o", "s"] -[60.71631989479096, "o", "g"] -[60.746319894790965, "o", "r"] -[60.776319894790966, "o", " "] -[60.80631989479097, "o", "d"] -[60.83631989479097, "o", "e"] -[60.86631989479097, "o", "p"] -[60.89631989479097, "o", "e"] -[60.92631989479097, "o", "n"] -[60.95631989479097, "o", "d"] -[60.986319894790974, "o", "e"] -[61.016319894790975, "o", "n"] -[61.046319894790976, "o", "t"] -[61.07631989479098, "o", "s"] -[61.10631989479098, "o", " "] -[61.13631989479098, "o", "d"] -[61.16631989479098, "o", "e"] -[61.19631989479098, "o", "m"] -[61.22631989479098, "o", "o"] -[61.256319894790984, "o", "/"] -[61.286319894790985, "o", "w"] -[61.316319894790986, "o", "e"] -[61.34631989479099, "o", "a"] -[61.37631989479099, "o", "t"] -[61.40631989479099, "o", "h"] -[61.43631989479099, "o", "e"] -[61.46631989479099, "o", "r"] -[61.49631989479099, "o", "\r\n"] -[61.526319894790994, "o", "\u001b[0m"] -[61.556319894790995, "o", "\r\n"] -[61.76166934013401, "o", "demo/weather:dc76bb70063c7a4d6f3fcdd32c9d86d09e25e3958606a291f69fea3aa4371739 is depended on by:\r\n"] -[61.76168817520176, "o", "demo/summary:65245bd878aca09cc0c3bc87411cebef7f42b601ad169951821c321000ccacf8\r\n"] -[61.79168817520176, "o", "\u001b[1m"] -[61.821688175201764, "o", "\u001b[36m"] -[61.851688175201765, "o", "\u001b[91m"] -[61.88168817520177, "o", "$"] -[61.91168817520177, "o", " "] -[61.94168817520177, "o", "\u001b[0m"] -[66.97168817520176, "o", "\u001b[H"] -[67.00168817520176, "o", "\u001b[J"] -[67.03168817520177, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now pretend there's been a revision to the source historical weather data"] -[67.06168817520177, "o", "\r\n"] -[67.09168817520177, "o", "$"] -[67.12168817520177, "o", " "] -[67.15168817520177, "o", "s"] -[67.18168817520177, "o", "g"] -[67.21168817520177, "o", "r"] -[67.24168817520177, "o", " "] -[67.27168817520177, "o", "s"] -[67.30168817520178, "o", "q"] -[67.33168817520178, "o", "l"] -[67.36168817520178, "o", " "] -[67.39168817520178, "o", "-"] -[67.42168817520178, "o", "s"] -[67.45168817520178, "o", " "] -[67.48168817520178, "o", "d"] -[67.51168817520178, "o", "e"] -[67.54168817520178, "o", "m"] -[67.57168817520179, "o", "o"] -[67.60168817520179, "o", "/"] -[67.63168817520179, "o", "w"] -[67.66168817520179, "o", "e"] -[67.69168817520179, "o", "a"] -[67.72168817520179, "o", "t"] -[67.75168817520179, "o", "h"] -[67.7816881752018, "o", "e"] -[67.8116881752018, "o", "r"] -[67.8416881752018, "o", " "] -[67.8716881752018, "o", "\""] -[67.9016881752018, "o", "U"] -[67.9316881752018, "o", "P"] -[67.9616881752018, "o", "D"] -[67.9916881752018, "o", "A"] -[68.0216881752018, "o", "T"] -[68.0516881752018, "o", "E"] -[68.0816881752018, "o", " "] -[68.1116881752018, "o", "r"] -[68.1416881752018, "o", "d"] -[68.17168817520181, "o", "u"] -[68.20168817520181, "o", " "] -[68.23168817520181, "o", "S"] -[68.26168817520181, "o", "E"] -[68.29168817520181, "o", "T"] -[68.32168817520181, "o", " "] -[68.35168817520182, "o", "p"] -[68.38168817520182, "o", "r"] -[68.41168817520182, "o", "e"] -[68.44168817520182, "o", "c"] -[68.47168817520182, "o", "i"] -[68.50168817520182, "o", "p"] -[68.53168817520182, "o", "i"] -[68.56168817520182, "o", "t"] -[68.59168817520182, "o", "a"] -[68.62168817520183, "o", "t"] -[68.65168817520183, "o", "i"] -[68.68168817520183, "o", "o"] -[68.71168817520183, "o", "n"] -[68.74168817520183, "o", " "] -[68.77168817520183, "o", "="] -[68.80168817520183, "o", " "] -[68.83168817520183, "o", "p"] -[68.86168817520183, "o", "r"] -[68.89168817520184, "o", "e"] -[68.92168817520184, "o", "c"] -[68.95168817520184, "o", "i"] -[68.98168817520184, "o", "p"] -[69.01168817520184, "o", "i"] -[69.04168817520184, "o", "t"] -[69.07168817520184, "o", "a"] -[69.10168817520184, "o", "t"] -[69.13168817520184, "o", "i"] -[69.16168817520185, "o", "o"] -[69.19168817520185, "o", "n"] -[69.22168817520185, "o", " "] -[69.25168817520185, "o", "*"] -[69.28168817520185, "o", " "] -[69.31168817520185, "o", "1"] -[69.34168817520185, "o", "."] -[69.37168817520185, "o", "2"] -[69.40168817520185, "o", " "] -[69.43168817520186, "o", "W"] -[69.46168817520186, "o", "H"] -[69.49168817520186, "o", "E"] -[69.52168817520186, "o", "R"] -[69.55168817520186, "o", "E"] -[69.58168817520186, "o", " "] -[69.61168817520186, "o", "E"] -[69.64168817520186, "o", "X"] -[69.67168817520187, "o", "T"] -[69.70168817520187, "o", "R"] -[69.73168817520187, "o", "A"] -[69.76168817520187, "o", "C"] -[69.79168817520187, "o", "T"] -[69.82168817520187, "o", " "] -[69.85168817520187, "o", "("] -[69.88168817520187, "o", "y"] -[69.91168817520187, "o", "e"] -[69.94168817520188, "o", "a"] -[69.97168817520188, "o", "r"] -[70.00168817520188, "o", " "] -[70.03168817520188, "o", "F"] -[70.06168817520188, "o", "R"] -[70.09168817520188, "o", "O"] -[70.12168817520188, "o", "M"] -[70.15168817520188, "o", " "] -[70.18168817520188, "o", "d"] -[70.21168817520189, "o", "a"] -[70.24168817520189, "o", "t"] -[70.27168817520189, "o", "e"] -[70.30168817520189, "o", ")"] -[70.33168817520189, "o", " "] -[70.36168817520189, "o", "="] -[70.39168817520189, "o", " "] -[70.4216881752019, "o", "2"] -[70.4516881752019, "o", "0"] -[70.4816881752019, "o", "1"] -[70.5116881752019, "o", "2"] -[70.5416881752019, "o", "\""] -[70.5716881752019, "o", "\r\n"] -[70.6016881752019, "o", "$"] -[70.6316881752019, "o", " "] -[70.6616881752019, "o", "s"] -[70.6916881752019, "o", "g"] -[70.7216881752019, "o", "r"] -[70.7516881752019, "o", " "] -[70.78168817520191, "o", "c"] -[70.81168817520191, "o", "o"] -[70.84168817520191, "o", "m"] -[70.87168817520191, "o", "m"] -[70.90168817520191, "o", "i"] -[70.93168817520191, "o", "t"] -[70.96168817520191, "o", " "] -[70.99168817520192, "o", "-"] -[71.02168817520192, "o", "m"] -[71.05168817520192, "o", " "] -[71.08168817520192, "o", "\""] -[71.11168817520192, "o", "R"] -[71.14168817520192, "o", "e"] -[71.17168817520192, "o", "v"] -[71.20168817520192, "o", "i"] -[71.23168817520192, "o", "s"] -[71.26168817520193, "o", "i"] -[71.29168817520193, "o", "o"] -[71.32168817520193, "o", "n"] -[71.35168817520193, "o", " "] -[71.38168817520193, "o", "t"] -[71.41168817520193, "o", "o"] -[71.44168817520193, "o", " "] -[71.47168817520193, "o", "t"] -[71.50168817520193, "o", "h"] -[71.53168817520194, "o", "e"] -[71.56168817520194, "o", " "] -[71.59168817520194, "o", "2"] -[71.62168817520194, "o", "0"] -[71.65168817520194, "o", "1"] -[71.68168817520194, "o", "2"] -[71.71168817520194, "o", " "] -[71.74168817520194, "o", "r"] -[71.77168817520194, "o", "a"] -[71.80168817520195, "o", "i"] -[71.83168817520195, "o", "n"] -[71.86168817520195, "o", "f"] -[71.89168817520195, "o", "a"] -[71.92168817520195, "o", "l"] -[71.95168817520195, "o", "l"] -[71.98168817520195, "o", " "] -[72.01168817520195, "o", "d"] -[72.04168817520195, "o", "a"] -[72.07168817520196, "o", "t"] -[72.10168817520196, "o", "a"] -[72.13168817520196, "o", "\""] -[72.16168817520196, "o", " "] -[72.19168817520196, "o", "d"] -[72.22168817520196, "o", "e"] -[72.25168817520196, "o", "m"] -[72.28168817520196, "o", "o"] -[72.31168817520197, "o", "/"] -[72.34168817520197, "o", "w"] -[72.37168817520197, "o", "e"] -[72.40168817520197, "o", "a"] -[72.43168817520197, "o", "t"] -[72.46168817520197, "o", "h"] -[72.49168817520197, "o", "e"] -[72.52168817520197, "o", "r"] -[72.55168817520197, "o", "\r\n"] -[72.58168817520198, "o", "$"] -[72.61168817520198, "o", " "] -[72.64168817520198, "o", "s"] -[72.67168817520198, "o", "g"] -[72.70168817520198, "o", "r"] -[72.73168817520198, "o", " "] -[72.76168817520198, "o", "t"] -[72.79168817520198, "o", "a"] -[72.82168817520198, "o", "g"] -[72.85168817520199, "o", " "] -[72.88168817520199, "o", "d"] -[72.91168817520199, "o", "e"] -[72.94168817520199, "o", "m"] -[72.97168817520199, "o", "o"] -[73.00168817520199, "o", "/"] -[73.03168817520199, "o", "w"] -[73.061688175202, "o", "e"] -[73.091688175202, "o", "a"] -[73.121688175202, "o", "t"] -[73.151688175202, "o", "h"] -[73.181688175202, "o", "e"] -[73.211688175202, "o", "r"] -[73.241688175202, "o", " "] -[73.271688175202, "o", "r"] -[73.301688175202, "o", "e"] -[73.331688175202, "o", "v"] -[73.361688175202, "o", "i"] -[73.391688175202, "o", "s"] -[73.42168817520201, "o", "e"] -[73.45168817520201, "o", "d"] -[73.48168817520201, "o", "_"] -[73.51168817520201, "o", "d"] -[73.54168817520201, "o", "a"] -[73.57168817520201, "o", "t"] -[73.60168817520201, "o", "a"] -[73.63168817520202, "o", "\r\n"] -[73.66168817520202, "o", "\u001b[0m"] -[73.69168817520202, "o", "\r\n"] -[73.90317189216674, "o", "Committing demo/weather..."] -[73.90319382667602, "o", "\r\n"] -[73.9355746459967, "o", "Storing and indexing table rdu\r\n"] -[74.10939776420653, "o", "Committed demo/weather as 5f5513204b88.\r\n"] -[74.31323682785094, "o", "Tagged demo/weather:5f5513204b88f932378f8a95751f2a3d5b99dbc79bc13ac509a9f440dc96c093 with revised_data.\r\n"] -[74.34323682785094, "o", "\u001b[1m"] -[74.37323682785095, "o", "\u001b[36m"] -[74.40323682785095, "o", "\u001b[91m"] -[74.43323682785095, "o", "$"] -[74.46323682785095, "o", " "] -[74.49323682785095, "o", "\u001b[0m"] -[79.52323682785095, "o", "\u001b[H"] -[79.55323682785095, "o", "\u001b[J"] -[79.58323682785095, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Use the derivative image's provenance to rebuild it against the revised version"] -[79.61323682785095, "o", "\r\n"] -[79.64323682785096, "o", "$"] -[79.67323682785096, "o", " "] -[79.70323682785096, "o", "s"] -[79.73323682785096, "o", "g"] -[79.76323682785096, "o", "r"] -[79.79323682785096, "o", " "] -[79.82323682785096, "o", "r"] -[79.85323682785096, "o", "e"] -[79.88323682785096, "o", "b"] -[79.91323682785097, "o", "u"] -[79.94323682785097, "o", "i"] -[79.97323682785097, "o", "l"] -[80.00323682785097, "o", "d"] -[80.03323682785097, "o", " "] -[80.06323682785097, "o", "d"] -[80.09323682785097, "o", "e"] -[80.12323682785097, "o", "m"] -[80.15323682785098, "o", "o"] -[80.18323682785098, "o", "/"] -[80.21323682785098, "o", "s"] -[80.24323682785098, "o", "u"] -[80.27323682785098, "o", "m"] -[80.30323682785098, "o", "m"] -[80.33323682785098, "o", "a"] -[80.36323682785098, "o", "r"] -[80.39323682785098, "o", "y"] -[80.42323682785099, "o", " "] -[80.45323682785099, "o", "-"] -[80.48323682785099, "o", "-"] -[80.51323682785099, "o", "a"] -[80.54323682785099, "o", "g"] -[80.57323682785099, "o", "a"] -[80.60323682785099, "o", "i"] -[80.633236827851, "o", "n"] -[80.663236827851, "o", "s"] -[80.693236827851, "o", "t"] -[80.723236827851, "o", " "] -[80.753236827851, "o", "d"] -[80.783236827851, "o", "e"] -[80.813236827851, "o", "m"] -[80.843236827851, "o", "o"] -[80.873236827851, "o", "/"] -[80.903236827851, "o", "w"] -[80.933236827851, "o", "e"] -[80.963236827851, "o", "a"] -[80.993236827851, "o", "t"] -[81.02323682785101, "o", "h"] -[81.05323682785101, "o", "e"] -[81.08323682785101, "o", "r"] -[81.11323682785101, "o", ":"] -[81.14323682785101, "o", "r"] -[81.17323682785101, "o", "e"] -[81.20323682785101, "o", "v"] -[81.23323682785102, "o", "i"] -[81.26323682785102, "o", "s"] -[81.29323682785102, "o", "e"] -[81.32323682785102, "o", "d"] -[81.35323682785102, "o", "_"] -[81.38323682785102, "o", "d"] -[81.41323682785102, "o", "a"] -[81.44323682785102, "o", "t"] -[81.47323682785103, "o", "a"] -[81.50323682785103, "o", "\r\n"] -[81.53323682785103, "o", "$"] -[81.56323682785103, "o", " "] -[81.59323682785103, "o", "s"] -[81.62323682785103, "o", "g"] -[81.65323682785103, "o", "r"] -[81.68323682785103, "o", " "] -[81.71323682785103, "o", "t"] -[81.74323682785104, "o", "a"] -[81.77323682785104, "o", "g"] -[81.80323682785104, "o", " "] -[81.83323682785104, "o", "d"] -[81.86323682785104, "o", "e"] -[81.89323682785104, "o", "m"] -[81.92323682785104, "o", "o"] -[81.95323682785104, "o", "/"] -[81.98323682785104, "o", "s"] -[82.01323682785105, "o", "u"] -[82.04323682785105, "o", "m"] -[82.07323682785105, "o", "m"] -[82.10323682785105, "o", "a"] -[82.13323682785105, "o", "r"] -[82.16323682785105, "o", "y"] -[82.19323682785105, "o", " "] -[82.22323682785105, "o", "b"] -[82.25323682785105, "o", "a"] -[82.28323682785106, "o", "s"] -[82.31323682785106, "o", "e"] -[82.34323682785106, "o", "d"] -[82.37323682785106, "o", "_"] -[82.40323682785106, "o", "o"] -[82.43323682785106, "o", "n"] -[82.46323682785106, "o", "_"] -[82.49323682785106, "o", "r"] -[82.52323682785106, "o", "e"] -[82.55323682785107, "o", "v"] -[82.58323682785107, "o", "i"] -[82.61323682785107, "o", "s"] -[82.64323682785107, "o", "e"] -[82.67323682785107, "o", "d"] -[82.70323682785107, "o", "\r\n"] -[82.73323682785107, "o", "\u001b[0m"] -[82.76323682785107, "o", "\r\n"] -[82.97515112876965, "o", "Rerunning demo/summary:65245bd878aca09cc0c3bc87411cebef7f42b601ad169951821c321000ccacf8 against:\r\n"] -[82.9751642417915, "o", "demo/weather:revised_data\r\n"] -[83.05384237289502, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather:revised_data IMPORT rdu AS source_data\u001b[0m\r\n"] -[83.0541027259834, "o", "Resolving repository demo/weather\r\n"] -[83.05766803741528, "o", "Importing 1 table from demo/weather:5f5513204b88 into demo/summary\r\n"] -[83.19320518493726, "o", " ---> 1d24f3f7cd6b\r\n"] -[83.19354707717969, "o", "\u001b[1m\r\nStep 2/2 : SQL {CREATE TABLE monthly_summary AS SELECT to_char(dat...\u001b[0m\r\n"] -[83.19855005264355, "o", "Executing SQL...\r\n"] -[83.40251929283215, "o", "Committing demo/summary...\r\n"] -[83.4255626869209, "o", "Processing table monthly_summary\r\n"] -[83.51880986213757, "o", " ---> 85d43c181826\r\n"] -[83.52196795463635, "o", "Successfully built demo/summary:85d43c181826.\r\n"] -[83.73289520263745, "o", "Tagged demo/summary:85d43c181826defd2ffad328dbde9ea22d1ad4e5c6bb7e894f0a32b6d5cbd0ca with based_on_revised.\r\n"] -[83.76289520263745, "o", "\u001b[1m"] -[83.79289520263745, "o", "\u001b[36m"] -[83.82289520263745, "o", "\u001b[91m"] -[83.85289520263746, "o", "$"] -[83.88289520263746, "o", " "] -[83.91289520263746, "o", "\u001b[0m"] -[89.02323682785095, "o", "\u001b[H"] -[89.05323682785095, "o", "\u001b[J"] -[89.08323682785095, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Compare the two resultant datasets"] -[89.11323682785095, "o", "\r\n"] -[89.14323682785096, "o", "$"] -[89.17323682785096, "o", " "] -[89.20323682785096, "o", "s"] -[89.23323682785096, "o", "g"] -[89.26323682785096, "o", "r"] -[89.29323682785096, "o", " "] -[89.32323682785096, "o", "d"] -[89.35323682785096, "o", "i"] -[89.38323682785096, "o", "f"] -[89.41323682785097, "o", "f"] -[89.44323682785097, "o", " "] -[89.47323682785097, "o", "d"] -[89.50323682785097, "o", "e"] -[89.53323682785097, "o", "m"] -[89.56323682785097, "o", "o"] -[89.59323682785097, "o", "/"] -[89.62323682785097, "o", "s"] -[89.65323682785098, "o", "u"] -[89.68323682785098, "o", "m"] -[89.71323682785098, "o", "m"] -[89.74323682785098, "o", "a"] -[89.77323682785098, "o", "r"] -[89.80323682785098, "o", "y"] -[89.83323682785098, "o", " "] -[89.86323682785098, "o", "b"] -[89.89323682785098, "o", "a"] -[89.92323682785099, "o", "s"] -[89.95323682785099, "o", "e"] -[89.98323682785099, "o", "d"] -[90.01323682785099, "o", "_"] -[90.04323682785099, "o", "o"] -[90.07323682785099, "o", "n"] -[90.10323682785099, "o", "_"] -[90.133236827851, "o", "i"] -[90.163236827851, "o", "n"] -[90.193236827851, "o", "i"] -[90.223236827851, "o", "t"] -[90.253236827851, "o", "i"] -[90.283236827851, "o", "a"] -[90.313236827851, "o", "l"] -[90.343236827851, "o", " "] -[90.373236827851, "o", "b"] -[90.403236827851, "o", "a"] -[90.433236827851, "o", "s"] -[90.463236827851, "o", "e"] -[90.493236827851, "o", "d"] -[90.52323682785101, "o", "_"] -[90.55323682785101, "o", "o"] -[90.58323682785101, "o", "n"] -[90.61323682785101, "o", "_"] -[90.64323682785101, "o", "r"] -[90.67323682785101, "o", "e"] -[90.70323682785101, "o", "v"] -[90.73323682785102, "o", "i"] -[90.76323682785102, "o", "s"] -[90.79323682785102, "o", "e"] -[90.82323682785102, "o", "d"] -[90.85323682785102, "o", " "] -[90.88323682785102, "o", "-"] -[90.91323682785102, "o", "-"] -[90.94323682785102, "o", "v"] -[90.97323682785103, "o", "e"] -[91.00323682785103, "o", "r"] -[91.03323682785103, "o", "b"] -[91.06323682785103, "o", "o"] -[91.09323682785103, "o", "s"] -[91.12323682785103, "o", "e"] -[91.15323682785103, "o", " "] -[91.18323682785103, "o", "-"] -[91.21323682785103, "o", "-"] -[91.24323682785104, "o", "t"] -[91.27323682785104, "o", "a"] -[91.30323682785104, "o", "b"] -[91.33323682785104, "o", "l"] -[91.36323682785104, "o", "e"] -[91.39323682785104, "o", "-"] -[91.42323682785104, "o", "n"] -[91.45323682785104, "o", "a"] -[91.48323682785104, "o", "m"] -[91.51323682785105, "o", "e"] -[91.54323682785105, "o", " "] -[91.57323682785105, "o", "m"] -[91.60323682785105, "o", "o"] -[91.63323682785105, "o", "n"] -[91.66323682785105, "o", "t"] -[91.69323682785105, "o", "h"] -[91.72323682785105, "o", "l"] -[91.75323682785105, "o", "y"] -[91.78323682785106, "o", "_"] -[91.81323682785106, "o", "s"] -[91.84323682785106, "o", "u"] -[91.87323682785106, "o", "m"] -[91.90323682785106, "o", "m"] -[91.93323682785106, "o", "a"] -[91.96323682785106, "o", "r"] -[91.99323682785106, "o", "y"] -[92.02323682785106, "o", "\r\n"] -[92.05323682785107, "o", "\u001b[0m"] -[92.08323682785107, "o", "\r\n"] -[92.44228757858349, "o", "Between 65245bd878ac and 85d43c181826: \r\n"] -[92.44252432823254, "o", "monthly_summary: added 12 rows, removed 12 rows.\r\n- ('201201', Decimal('0.06322580645161290323'), Decimal('0E-20'))\r\n- ('201202', Decimal('0.06689655172413793103'), Decimal('0.03137931034482758621'))\r\n- ('201203', Decimal('0.17290322580645161290'), Decimal('0E-20'))\r\n- ('201204', Decimal('0.08766666666666666667'), Decimal('0E-20'))\r\n- ('201205', Decimal('0.12806451612903225806'), Decimal('0E-20'))\r\n- ('201206', Decimal('0.10333333333333333333'), Decimal('0E-20'))\r\n- ('201207', Decimal('0.1496774193548387096"] -[92.44253195762707, "o", "8'), Decimal('0E-20'))\r\n- ('201208', Decimal('0.13000000000000000000'), Decimal('0E-20'))\r\n- ('201209', Decimal('0.26100000000000000000'), Decimal('0E-20'))\r\n- ('201210', Decimal('0.05903225806451612903'), Decimal('0E-20'))\r\n"] -[92.44265927314831, "o", "- ('201211', Decimal('0.01866666666666666667'), Decimal('0E-20'))\r\n- ('201212', Decimal('0.09483870967741935484'), Decimal('0E-20'))\r\n+ ('201201', Decimal('0.07587096774193548387'), Decimal('0E-20'))\r\n+ ('201202', Decimal('0.08027586206896551724'), Decimal('0.03137931034482758621'))\r\n+ ('201203', Decimal('0.20748387096774193548'), Decimal('0E-20'))\r\n+ ('201204', Decimal('0.10520000000000000000'), Decimal('0E-20'))\r\n+ ('201205', Decimal('0.15367741935483870968'), Decimal('0E-20'))\r\n+ ('201206', Decimal('0.12"] -[92.44266714096142, "o", "400000000000000000'), Decimal('0E-20'))\r\n+ ('201207', Decimal('0.17961290322580645161'), Decimal('0E-20'))\r\n+ ('201208', Decimal('0.15600000000000000000'), Decimal('0E-20'))\r\n"] -[92.44283641815258, "o", "+ ('201209', Decimal('0.31320000000000000000'), Decimal('0E-20'))\r\n+ ('201210', Decimal('0.07083870967741935484'), Decimal('0E-20'))\r\n+ ('201211', Decimal('0.02240000000000000000'), Decimal('0E-20'))\r\n+ ('201212', Decimal('0.11380645161290322581'), Decimal('0E-20'))\r\n"] -[92.47283641815258, "o", "\u001b[1m"] -[92.50283641815258, "o", "\u001b[36m"] -[92.53283641815258, "o", "\u001b[91m"] -[92.56283641815259, "o", "$"] -[92.59283641815259, "o", " "] -[92.62283641815259, "o", "\u001b[0m"] \ No newline at end of file +[7.105965290069591, "o", "Initialized empty repository demo/weather\r\n"] +[7.536823902130138, "o", "Committing demo/weather...\r\n"] +[7.559878978729259, "o", "Processing table rdu\r\n"] +[7.7981757259369004, "o", "Committed demo/weather as e5acbcae5ab7.\r\n"] +[8.230833444595348, "o", "Tagged demo/weather:e5acbcae5ab76d5f0076bf929d60e93b6e9856bd7b6bf9f385ee07d616252d54 with initial_data.\r\n"] +[8.260833444595347, "o", "\u001b[1m"] +[8.290833444595346, "o", "\u001b[36m"] +[8.320833444595346, "o", "\u001b[91m"] +[8.350833444595345, "o", "$"] +[8.380833444595345, "o", " "] +[8.410833444595344, "o", "\u001b[0m"] +[13.440833444595343, "o", "\u001b[H"] +[13.470833444595343, "o", "\u001b[J"] +[13.500833444595342, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the Splitfile used to create a derivative image"] +[13.530833444595341, "o", "\r\n"] +[13.56083344459534, "o", "$"] +[13.59083344459534, "o", " "] +[13.62083344459534, "o", "c"] +[13.650833444595339, "o", "a"] +[13.680833444595338, "o", "t"] +[13.710833444595337, "o", " "] +[13.740833444595337, "o", "r"] +[13.770833444595336, "o", "d"] +[13.800833444595336, "o", "u"] +[13.830833444595335, "o", "-"] +[13.860833444595334, "o", "w"] +[13.890833444595334, "o", "e"] +[13.920833444595333, "o", "a"] +[13.950833444595332, "o", "t"] +[13.980833444595332, "o", "h"] +[14.010833444595331, "o", "e"] +[14.04083344459533, "o", "r"] +[14.07083344459533, "o", "-"] +[14.10083344459533, "o", "s"] +[14.130833444595329, "o", "u"] +[14.160833444595328, "o", "m"] +[14.190833444595327, "o", "m"] +[14.220833444595327, "o", "a"] +[14.250833444595326, "o", "r"] +[14.280833444595325, "o", "y"] +[14.310833444595325, "o", "."] +[14.340833444595324, "o", "s"] +[14.370833444595323, "o", "p"] +[14.400833444595323, "o", "l"] +[14.430833444595322, "o", "i"] +[14.460833444595321, "o", "t"] +[14.49083344459532, "o", "f"] +[14.52083344459532, "o", "i"] +[14.55083344459532, "o", "l"] +[14.580833444595319, "o", "e"] +[14.610833444595318, "o", "\r\n"] +[14.640833444595318, "o", "\u001b[0m"] +[14.670833444595317, "o", "\r\n"] +[14.673641061782817, "o", "# First, import the original data table: this doesn't consume extra space (reuses the same\r\n# object that's used by the demo/weather repository.\r\n\r\nFROM demo/weather IMPORT rdu AS source_data\r\n\r\n# Now summarize the data\r\nSQL CREATE TABLE monthly_summary AS ( \\\r\n SELECT to_char(date, 'YYYYMM') AS month, \\\r\n AVG(precipitation) AS average_precipitation, \\\r\n AVG(snowfall) AS average_snowfall \\\r\n FROM source_data \\\r\n GROUP BY month \\\r\n ORDER BY month ASC)\r\n"] +[14.703641061782816, "o", "\u001b[1m"] +[14.733641061782816, "o", "\u001b[36m"] +[14.763641061782815, "o", "\u001b[91m"] +[14.793641061782814, "o", "$"] +[14.823641061782814, "o", " "] +[14.853641061782813, "o", "\u001b[0m"] +[21.440833444595345, "o", "\u001b[H"] +[21.470833444595346, "o", "\u001b[J"] +[21.500833444595347, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run the Splitfile to build a new image"] +[21.53083344459535, "o", "\r\n"] +[21.56083344459535, "o", "$"] +[21.59083344459535, "o", " "] +[21.620833444595352, "o", "s"] +[21.650833444595353, "o", "g"] +[21.680833444595354, "o", "r"] +[21.710833444595355, "o", " "] +[21.740833444595356, "o", "b"] +[21.770833444595358, "o", "u"] +[21.80083344459536, "o", "i"] +[21.83083344459536, "o", "l"] +[21.86083344459536, "o", "d"] +[21.890833444595362, "o", " "] +[21.920833444595363, "o", "r"] +[21.950833444595364, "o", "d"] +[21.980833444595365, "o", "u"] +[22.010833444595367, "o", "-"] +[22.040833444595368, "o", "w"] +[22.07083344459537, "o", "e"] +[22.10083344459537, "o", "a"] +[22.13083344459537, "o", "t"] +[22.160833444595372, "o", "h"] +[22.190833444595373, "o", "e"] +[22.220833444595375, "o", "r"] +[22.250833444595376, "o", "-"] +[22.280833444595377, "o", "s"] +[22.310833444595378, "o", "u"] +[22.34083344459538, "o", "m"] +[22.37083344459538, "o", "m"] +[22.40083344459538, "o", "a"] +[22.430833444595383, "o", "r"] +[22.460833444595384, "o", "y"] +[22.490833444595385, "o", "."] +[22.520833444595386, "o", "s"] +[22.550833444595387, "o", "p"] +[22.580833444595388, "o", "l"] +[22.61083344459539, "o", "i"] +[22.64083344459539, "o", "t"] +[22.67083344459539, "o", "f"] +[22.700833444595393, "o", "i"] +[22.730833444595394, "o", "l"] +[22.760833444595395, "o", "e"] +[22.790833444595396, "o", " "] +[22.820833444595397, "o", "-"] +[22.8508334445954, "o", "o"] +[22.8808334445954, "o", " "] +[22.9108334445954, "o", "d"] +[22.940833444595402, "o", "e"] +[22.970833444595403, "o", "m"] +[23.000833444595404, "o", "o"] +[23.030833444595405, "o", "/"] +[23.060833444595406, "o", "s"] +[23.090833444595408, "o", "u"] +[23.12083344459541, "o", "m"] +[23.15083344459541, "o", "m"] +[23.18083344459541, "o", "a"] +[23.210833444595412, "o", "r"] +[23.240833444595413, "o", "y"] +[23.270833444595414, "o", "\r\n"] +[23.300833444595416, "o", "$"] +[23.330833444595417, "o", " "] +[23.360833444595418, "o", "s"] +[23.39083344459542, "o", "g"] +[23.42083344459542, "o", "r"] +[23.45083344459542, "o", " "] +[23.480833444595422, "o", "t"] +[23.510833444595423, "o", "a"] +[23.540833444595425, "o", "g"] +[23.570833444595426, "o", " "] +[23.600833444595427, "o", "d"] +[23.630833444595428, "o", "e"] +[23.66083344459543, "o", "m"] +[23.69083344459543, "o", "o"] +[23.72083344459543, "o", "/"] +[23.750833444595433, "o", "s"] +[23.780833444595434, "o", "u"] +[23.810833444595435, "o", "m"] +[23.840833444595436, "o", "m"] +[23.870833444595437, "o", "a"] +[23.90083344459544, "o", "r"] +[23.93083344459544, "o", "y"] +[23.96083344459544, "o", " "] +[23.99083344459544, "o", "b"] +[24.020833444595443, "o", "a"] +[24.050833444595444, "o", "s"] +[24.080833444595445, "o", "e"] +[24.110833444595446, "o", "d"] +[24.140833444595447, "o", "_"] +[24.17083344459545, "o", "o"] +[24.20083344459545, "o", "n"] +[24.23083344459545, "o", "_"] +[24.260833444595452, "o", "i"] +[24.290833444595453, "o", "n"] +[24.320833444595454, "o", "i"] +[24.350833444595455, "o", "t"] +[24.380833444595456, "o", "i"] +[24.410833444595458, "o", "a"] +[24.44083344459546, "o", "l"] +[24.47083344459546, "o", "\r\n"] +[24.50083344459546, "o", "\u001b[0m"] +[24.530833444595462, "o", "\r\n"] +[24.969417772293216, "o", "Executing Splitfile rdu-weather-summary.splitfile with arguments {}\r\n"] +[24.969818792343265, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather IMPORT rdu AS source_data\u001b[0m\r\n"] +[25.071516952514774, "o", "Resolving repository demo/weather\r\n"] +[25.07596846580518, "o", "Importing 1 table from demo/weather:e5acbcae5ab7 into demo/summary\r\n"] +[25.22263570785535, "o", " ---> 43b80268ce7e\r\n"] +[25.222664318084842, "o", "\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[25.229226312637454, "o", "Executing SQL...\r\n"] +[25.460465154647952, "o", "Committing demo/summary...\r\n"] +[25.484931907653934, "o", "Processing table monthly_summary\r\n"] +[25.598450860977298, "o", " ---> dd4bf60c05b6\r\n"] +[25.60200353622449, "o", "Successfully built demo/summary:dd4bf60c05b6.\r\n"] +[26.035999736786014, "o", "Tagged demo/summary:dd4bf60c05b60539e3f9fac2da09d3d28ac28145646762f5acfaef932afdfaae with based_on_initial.\r\n"] +[26.065999736786015, "o", "\u001b[1m"] +[26.095999736786016, "o", "\u001b[36m"] +[26.125999736786017, "o", "\u001b[91m"] +[26.15599973678602, "o", "$"] +[26.18599973678602, "o", " "] +[26.21599973678602, "o", "\u001b[0m"] +[31.245999736786022, "o", "\u001b[H"] +[31.275999736786023, "o", "\u001b[J"] +[31.305999736786024, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Much like with Docker, the build result is cached, so running build again checks out the existing image."] +[31.335999736786025, "o", "\r\n"] +[31.365999736786026, "o", "$"] +[31.395999736786028, "o", " "] +[31.42599973678603, "o", "s"] +[31.45599973678603, "o", "g"] +[31.48599973678603, "o", "r"] +[31.515999736786032, "o", " "] +[31.545999736786033, "o", "b"] +[31.575999736786034, "o", "u"] +[31.605999736786035, "o", "i"] +[31.635999736786037, "o", "l"] +[31.665999736786038, "o", "d"] +[31.69599973678604, "o", " "] +[31.72599973678604, "o", "r"] +[31.75599973678604, "o", "d"] +[31.785999736786042, "o", "u"] +[31.815999736786043, "o", "-"] +[31.845999736786045, "o", "w"] +[31.875999736786046, "o", "e"] +[31.905999736786047, "o", "a"] +[31.935999736786048, "o", "t"] +[31.96599973678605, "o", "h"] +[31.99599973678605, "o", "e"] +[32.02599973678605, "o", "r"] +[32.05599973678605, "o", "-"] +[32.08599973678605, "o", "s"] +[32.11599973678605, "o", "u"] +[32.14599973678605, "o", "m"] +[32.17599973678605, "o", "m"] +[32.205999736786055, "o", "a"] +[32.235999736786056, "o", "r"] +[32.26599973678606, "o", "y"] +[32.29599973678606, "o", "."] +[32.32599973678606, "o", "s"] +[32.35599973678606, "o", "p"] +[32.38599973678606, "o", "l"] +[32.41599973678606, "o", "i"] +[32.445999736786064, "o", "t"] +[32.475999736786065, "o", "f"] +[32.505999736786066, "o", "i"] +[32.53599973678607, "o", "l"] +[32.56599973678607, "o", "e"] +[32.59599973678607, "o", " "] +[32.62599973678607, "o", "-"] +[32.65599973678607, "o", "o"] +[32.68599973678607, "o", " "] +[32.715999736786074, "o", "d"] +[32.745999736786075, "o", "e"] +[32.775999736786076, "o", "m"] +[32.80599973678608, "o", "o"] +[32.83599973678608, "o", "/"] +[32.86599973678608, "o", "s"] +[32.89599973678608, "o", "u"] +[32.92599973678608, "o", "m"] +[32.95599973678608, "o", "m"] +[32.985999736786084, "o", "a"] +[33.015999736786085, "o", "r"] +[33.04599973678609, "o", "y"] +[33.07599973678609, "o", "\r\n"] +[33.10599973678609, "o", "\u001b[0m"] +[33.13599973678609, "o", "\r\n"] +[33.57064729690572, "o", "Executing Splitfile rdu-weather-summary.splitfile with arguments {}\r\n"] +[33.57116704940816, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather IMPORT rdu AS source_data\u001b[0m\r\n"] +[33.673784313202106, "o", "Resolving repository demo/weather\r\n"] +[33.82400136947652, "o", " ---> Using cache\r\n"] +[33.82408052444478, "o", " ---> 43b80268ce7e\r\n\u001b[1m\r\nStep 2/2 : SQL CREATE TABLE monthly_summary AS ( SELECT to_char(...\u001b[0m\r\n"] +[34.070637521743976, "o", " ---> Using cache\r\n"] +[34.0710764503481, "o", " ---> dd4bf60c05b6\r\n"] +[34.07404857635518, "o", "Successfully built demo/summary:dd4bf60c05b6.\r\n"] +[34.10404857635518, "o", "\u001b[1m"] +[34.134048576355184, "o", "\u001b[36m"] +[34.164048576355185, "o", "\u001b[91m"] +[34.194048576355186, "o", "$"] +[34.22404857635519, "o", " "] +[34.25404857635519, "o", "\u001b[0m"] +[39.28404857635519, "o", "\u001b[H"] +[39.31404857635519, "o", "\u001b[J"] +[39.34404857635519, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the new dataset"] +[39.37404857635519, "o", "\r\n"] +[39.404048576355194, "o", "$"] +[39.434048576355195, "o", " "] +[39.4640485763552, "o", "s"] +[39.4940485763552, "o", "g"] +[39.5240485763552, "o", "r"] +[39.5540485763552, "o", " "] +[39.5840485763552, "o", "s"] +[39.6140485763552, "o", "h"] +[39.6440485763552, "o", "o"] +[39.674048576355204, "o", "w"] +[39.704048576355206, "o", " "] +[39.73404857635521, "o", "d"] +[39.76404857635521, "o", "e"] +[39.79404857635521, "o", "m"] +[39.82404857635521, "o", "o"] +[39.85404857635521, "o", "/"] +[39.88404857635521, "o", "s"] +[39.91404857635521, "o", "u"] +[39.944048576355215, "o", "m"] +[39.974048576355216, "o", "m"] +[40.00404857635522, "o", "a"] +[40.03404857635522, "o", "r"] +[40.06404857635522, "o", "y"] +[40.09404857635522, "o", ":"] +[40.12404857635522, "o", "b"] +[40.15404857635522, "o", "a"] +[40.184048576355224, "o", "s"] +[40.214048576355225, "o", "e"] +[40.244048576355226, "o", "d"] +[40.27404857635523, "o", "_"] +[40.30404857635523, "o", "o"] +[40.33404857635523, "o", "n"] +[40.36404857635523, "o", "_"] +[40.39404857635523, "o", "i"] +[40.42404857635523, "o", "n"] +[40.454048576355234, "o", "i"] +[40.484048576355235, "o", "t"] +[40.514048576355236, "o", "i"] +[40.54404857635524, "o", "a"] +[40.57404857635524, "o", "l"] +[40.60404857635524, "o", "\r\n"] +[40.63404857635524, "o", "$"] +[40.66404857635524, "o", " "] +[40.69404857635524, "o", "s"] +[40.724048576355244, "o", "g"] +[40.754048576355245, "o", "r"] +[40.78404857635525, "o", " "] +[40.81404857635525, "o", "t"] +[40.84404857635525, "o", "a"] +[40.87404857635525, "o", "b"] +[40.90404857635525, "o", "l"] +[40.93404857635525, "o", "e"] +[40.96404857635525, "o", " "] +[40.994048576355254, "o", "d"] +[41.024048576355256, "o", "e"] +[41.05404857635526, "o", "m"] +[41.08404857635526, "o", "o"] +[41.11404857635526, "o", "/"] +[41.14404857635526, "o", "s"] +[41.17404857635526, "o", "u"] +[41.20404857635526, "o", "m"] +[41.23404857635526, "o", "m"] +[41.264048576355265, "o", "a"] +[41.294048576355266, "o", "r"] +[41.32404857635527, "o", "y"] +[41.35404857635527, "o", ":"] +[41.38404857635527, "o", "b"] +[41.41404857635527, "o", "a"] +[41.44404857635527, "o", "s"] +[41.47404857635527, "o", "e"] +[41.504048576355274, "o", "d"] +[41.534048576355275, "o", "_"] +[41.564048576355276, "o", "o"] +[41.59404857635528, "o", "n"] +[41.62404857635528, "o", "_"] +[41.65404857635528, "o", "i"] +[41.68404857635528, "o", "n"] +[41.71404857635528, "o", "i"] +[41.74404857635528, "o", "t"] +[41.774048576355284, "o", "i"] +[41.804048576355285, "o", "a"] +[41.834048576355286, "o", "l"] +[41.86404857635529, "o", " "] +[41.89404857635529, "o", "m"] +[41.92404857635529, "o", "o"] +[41.95404857635529, "o", "n"] +[41.98404857635529, "o", "t"] +[42.01404857635529, "o", "h"] +[42.044048576355294, "o", "l"] +[42.074048576355295, "o", "y"] +[42.1040485763553, "o", "_"] +[42.1340485763553, "o", "s"] +[42.1640485763553, "o", "u"] +[42.1940485763553, "o", "m"] +[42.2240485763553, "o", "m"] +[42.2540485763553, "o", "a"] +[42.2840485763553, "o", "r"] +[42.314048576355304, "o", "y"] +[42.344048576355306, "o", "\r\n"] +[42.37404857635531, "o", "$"] +[42.40404857635531, "o", " "] +[42.43404857635531, "o", "s"] +[42.46404857635531, "o", "g"] +[42.49404857635531, "o", "r"] +[42.52404857635531, "o", " "] +[42.554048576355314, "o", "s"] +[42.584048576355315, "o", "q"] +[42.614048576355316, "o", "l"] +[42.64404857635532, "o", " "] +[42.67404857635532, "o", "-"] +[42.70404857635532, "o", "s"] +[42.73404857635532, "o", " "] +[42.76404857635532, "o", "d"] +[42.79404857635532, "o", "e"] +[42.824048576355324, "o", "m"] +[42.854048576355325, "o", "o"] +[42.884048576355326, "o", "/"] +[42.91404857635533, "o", "s"] +[42.94404857635533, "o", "u"] +[42.97404857635533, "o", "m"] +[43.00404857635533, "o", "m"] +[43.03404857635533, "o", "a"] +[43.06404857635533, "o", "r"] +[43.094048576355334, "o", "y"] +[43.124048576355335, "o", " "] +[43.154048576355336, "o", "\""] +[43.18404857635534, "o", "S"] +[43.21404857635534, "o", "E"] +[43.24404857635534, "o", "L"] +[43.27404857635534, "o", "E"] +[43.30404857635534, "o", "C"] +[43.33404857635534, "o", "T"] +[43.364048576355344, "o", " "] +[43.394048576355345, "o", "*"] +[43.42404857635535, "o", " "] +[43.45404857635535, "o", "F"] +[43.48404857635535, "o", "R"] +[43.51404857635535, "o", "O"] +[43.54404857635535, "o", "M"] +[43.57404857635535, "o", " "] +[43.60404857635535, "o", "m"] +[43.634048576355354, "o", "o"] +[43.664048576355356, "o", "n"] +[43.69404857635536, "o", "t"] +[43.72404857635536, "o", "h"] +[43.75404857635536, "o", "l"] +[43.78404857635536, "o", "y"] +[43.81404857635536, "o", "_"] +[43.84404857635536, "o", "s"] +[43.874048576355364, "o", "u"] +[43.904048576355365, "o", "m"] +[43.934048576355366, "o", "m"] +[43.96404857635537, "o", "a"] +[43.99404857635537, "o", "r"] +[44.02404857635537, "o", "y"] +[44.05404857635537, "o", " "] +[44.08404857635537, "o", "O"] +[44.11404857635537, "o", "R"] +[44.144048576355374, "o", "D"] +[44.174048576355375, "o", "E"] +[44.204048576355376, "o", "R"] +[44.23404857635538, "o", " "] +[44.26404857635538, "o", "B"] +[44.29404857635538, "o", "Y"] +[44.32404857635538, "o", " "] +[44.35404857635538, "o", "m"] +[44.38404857635538, "o", "o"] +[44.414048576355384, "o", "n"] +[44.444048576355385, "o", "t"] +[44.474048576355386, "o", "h"] +[44.50404857635539, "o", " "] +[44.53404857635539, "o", "D"] +[44.56404857635539, "o", "E"] +[44.59404857635539, "o", "S"] +[44.62404857635539, "o", "C"] +[44.65404857635539, "o", " "] +[44.684048576355394, "o", "L"] +[44.714048576355395, "o", "I"] +[44.7440485763554, "o", "M"] +[44.7740485763554, "o", "I"] +[44.8040485763554, "o", "T"] +[44.8340485763554, "o", " "] +[44.8640485763554, "o", "5"] +[44.8940485763554, "o", "\""] +[44.9240485763554, "o", "\r\n"] +[44.954048576355405, "o", "\u001b[0m"] +[44.984048576355406, "o", "\r\n"] +[45.4101915073399, "o", "Image demo/summary:dd4bf60c05b60539e3f9fac2da09d3d28ac28145646762f5acfaef932afdfaae\r\n"] +[45.41021105766339, "o", "CREATE TABLE monthly_summary AS ( SELECT to_char(date, 'YYYYMM') AS month, AVG(precipitation) AS average_precipitation, AVG(snowfall) AS average_snowfall FROM source_data GROUP BY month ORDER BY month ASC)\r\nCreated at 2021-12-17T19:43:36.430576\r\n"] +[45.41187808036847, "o", "Size: 115.21 KiB\r\n"] +[45.411894292831846, "o", "Parent: 43b80268ce7e4bf95af7651b2fd35d41816b7330313ec84398eee2df74f06b4f\r\n\r\nTables:\r\n"] +[45.41257259368939, "o", " monthly_summary\r\n"] +[45.412586898804136, "o", " source_data\r\n"] +[45.83941766738934, "o", "Table demo/summary:dd4bf60c05b60539e3f9fac2da09d3d28ac28145646762f5acfaef932afdfaae/monthly_summary\r\n\r\n"] +[45.84059831619305, "o", "Size: 2.17 KiB\r\n"] +[45.841598243713804, "o", "Rows: 153\r\n"] +[45.84161350250287, "o", "Columns: \r\n month (text)\r\n average_precipitation (numeric)\r\n average_snowfall (numeric)\r\n\r\nObjects: \r\n o5e29c3cf82603335df66690a448ca1f604f0002d5a3496b18c982a5ea835f3\r\n"] +[46.282746524811216, "o", "201909 0.171667 0\r\n201908 0.139032 0\r\n201907 0.117097 0\r\n201906 0.12 0\r\n201905 0.103548 0\r\n"] +[46.31274652481122, "o", "\u001b[1m"] +[46.34274652481122, "o", "\u001b[36m"] +[46.37274652481122, "o", "\u001b[91m"] +[46.40274652481122, "o", "$"] +[46.43274652481122, "o", " "] +[46.46274652481122, "o", "\u001b[0m"] +[54.28404857635519, "o", "\u001b[H"] +[54.31404857635519, "o", "\u001b[J"] +[54.34404857635519, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the image's provenance (generated from its metadata)"] +[54.37404857635519, "o", "\r\n"] +[54.404048576355194, "o", "$"] +[54.434048576355195, "o", " "] +[54.4640485763552, "o", "s"] +[54.4940485763552, "o", "g"] +[54.5240485763552, "o", "r"] +[54.5540485763552, "o", " "] +[54.5840485763552, "o", "p"] +[54.6140485763552, "o", "r"] +[54.6440485763552, "o", "o"] +[54.674048576355204, "o", "v"] +[54.704048576355206, "o", "e"] +[54.73404857635521, "o", "n"] +[54.76404857635521, "o", "a"] +[54.79404857635521, "o", "n"] +[54.82404857635521, "o", "c"] +[54.85404857635521, "o", "e"] +[54.88404857635521, "o", " "] +[54.91404857635521, "o", "d"] +[54.944048576355215, "o", "e"] +[54.974048576355216, "o", "m"] +[55.00404857635522, "o", "o"] +[55.03404857635522, "o", "/"] +[55.06404857635522, "o", "s"] +[55.09404857635522, "o", "u"] +[55.12404857635522, "o", "m"] +[55.15404857635522, "o", "m"] +[55.184048576355224, "o", "a"] +[55.214048576355225, "o", "r"] +[55.244048576355226, "o", "y"] +[55.27404857635523, "o", "\r\n"] +[55.30404857635523, "o", "$"] +[55.33404857635523, "o", " "] +[55.36404857635523, "o", "s"] +[55.39404857635523, "o", "g"] +[55.42404857635523, "o", "r"] +[55.454048576355234, "o", " "] +[55.484048576355235, "o", "p"] +[55.514048576355236, "o", "r"] +[55.54404857635524, "o", "o"] +[55.57404857635524, "o", "v"] +[55.60404857635524, "o", "e"] +[55.63404857635524, "o", "n"] +[55.66404857635524, "o", "a"] +[55.69404857635524, "o", "n"] +[55.724048576355244, "o", "c"] +[55.754048576355245, "o", "e"] +[55.78404857635525, "o", " "] +[55.81404857635525, "o", "-"] +[55.84404857635525, "o", "-"] +[55.87404857635525, "o", "f"] +[55.90404857635525, "o", "u"] +[55.93404857635525, "o", "l"] +[55.96404857635525, "o", "l"] +[55.994048576355254, "o", " "] +[56.024048576355256, "o", "d"] +[56.05404857635526, "o", "e"] +[56.08404857635526, "o", "m"] +[56.11404857635526, "o", "o"] +[56.14404857635526, "o", "/"] +[56.17404857635526, "o", "s"] +[56.20404857635526, "o", "u"] +[56.23404857635526, "o", "m"] +[56.264048576355265, "o", "m"] +[56.294048576355266, "o", "a"] +[56.32404857635527, "o", "r"] +[56.35404857635527, "o", "y"] +[56.38404857635527, "o", "\r\n"] +[56.41404857635527, "o", "\u001b[0m"] +[56.44404857635527, "o", "\r\n"] +[56.872111015320115, "o", "demo/summary:dd4bf60c05b60539e3f9fac2da09d3d28ac28145646762f5acfaef932afdfaae depends on:\r\n"] +[56.872169427871995, "o", "demo/weather:e5acbcae5ab76d5f0076bf929d60e93b6e9856bd7b6bf9f385ee07d616252d54\r\n"] +[57.31212537765532, "o", "# Splitfile commands used to recreate demo/summary:dd4bf60c05b60539e3f9fac2da09d3d28ac28145646762f5acfaef932afdfaae\r\n"] +[57.31215470314055, "o", "FROM demo/weather:e5acbcae5ab76d5f0076bf929d60e93b6e9856bd7b6bf9f385ee07d616252d54 IMPORT rdu AS source_data\r\nSQL {CREATE TABLE monthly_summary\r\n AS SELECT to_char(date, 'YYYYMM') AS month\r\n , avg(precipitation) AS average_precipitation\r\n , avg(snowfall) AS average_snowfall\r\n FROM source_data\r\n GROUP BY month\r\n ORDER BY month ASC}\r\n"] +[57.34215470314055, "o", "\u001b[1m"] +[57.37215470314055, "o", "\u001b[36m"] +[57.40215470314055, "o", "\u001b[91m"] +[57.432154703140554, "o", "$"] +[57.462154703140556, "o", " "] +[57.49215470314056, "o", "\u001b[0m"] +[62.52215470314056, "o", "\u001b[H"] +[62.55215470314056, "o", "\u001b[J"] +[62.58215470314056, "o", "\u001b[1m\u001b[36m\u001b[91m$ # We can also see that a new image has been derived from demo/weather"] +[62.61215470314056, "o", "\r\n"] +[62.64215470314056, "o", "$"] +[62.67215470314056, "o", " "] +[62.702154703140565, "o", "s"] +[62.732154703140566, "o", "g"] +[62.76215470314057, "o", "r"] +[62.79215470314057, "o", " "] +[62.82215470314057, "o", "d"] +[62.85215470314057, "o", "e"] +[62.88215470314057, "o", "p"] +[62.91215470314057, "o", "e"] +[62.942154703140574, "o", "n"] +[62.972154703140575, "o", "d"] +[63.002154703140576, "o", "e"] +[63.03215470314058, "o", "n"] +[63.06215470314058, "o", "t"] +[63.09215470314058, "o", "s"] +[63.12215470314058, "o", " "] +[63.15215470314058, "o", "d"] +[63.18215470314058, "o", "e"] +[63.212154703140584, "o", "m"] +[63.242154703140585, "o", "o"] +[63.272154703140586, "o", "/"] +[63.30215470314059, "o", "w"] +[63.33215470314059, "o", "e"] +[63.36215470314059, "o", "a"] +[63.39215470314059, "o", "t"] +[63.42215470314059, "o", "h"] +[63.45215470314059, "o", "e"] +[63.482154703140594, "o", "r"] +[63.512154703140595, "o", "\r\n"] +[63.542154703140596, "o", "\u001b[0m"] +[63.5721547031406, "o", "\r\n"] +[64.00380009651218, "o", "demo/weather:e5acbcae5ab76d5f0076bf929d60e93b6e9856bd7b6bf9f385ee07d616252d54 is depended on by:\r\n"] +[64.00382918357883, "o", "demo/summary:dd4bf60c05b60539e3f9fac2da09d3d28ac28145646762f5acfaef932afdfaae\r\n"] +[64.03382918357883, "o", "\u001b[1m"] +[64.06382918357883, "o", "\u001b[36m"] +[64.09382918357883, "o", "\u001b[91m"] +[64.12382918357883, "o", "$"] +[64.15382918357884, "o", " "] +[64.18382918357884, "o", "\u001b[0m"] +[69.21382918357884, "o", "\u001b[H"] +[69.24382918357884, "o", "\u001b[J"] +[69.27382918357884, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Now pretend there's been a revision to the source historical weather data"] +[69.30382918357884, "o", "\r\n"] +[69.33382918357884, "o", "$"] +[69.36382918357884, "o", " "] +[69.39382918357884, "o", "s"] +[69.42382918357885, "o", "g"] +[69.45382918357885, "o", "r"] +[69.48382918357885, "o", " "] +[69.51382918357885, "o", "s"] +[69.54382918357885, "o", "q"] +[69.57382918357885, "o", "l"] +[69.60382918357885, "o", " "] +[69.63382918357885, "o", "-"] +[69.66382918357886, "o", "s"] +[69.69382918357886, "o", " "] +[69.72382918357886, "o", "d"] +[69.75382918357886, "o", "e"] +[69.78382918357886, "o", "m"] +[69.81382918357886, "o", "o"] +[69.84382918357886, "o", "/"] +[69.87382918357886, "o", "w"] +[69.90382918357886, "o", "e"] +[69.93382918357887, "o", "a"] +[69.96382918357887, "o", "t"] +[69.99382918357887, "o", "h"] +[70.02382918357887, "o", "e"] +[70.05382918357887, "o", "r"] +[70.08382918357887, "o", " "] +[70.11382918357887, "o", "\""] +[70.14382918357887, "o", "U"] +[70.17382918357887, "o", "P"] +[70.20382918357888, "o", "D"] +[70.23382918357888, "o", "A"] +[70.26382918357888, "o", "T"] +[70.29382918357888, "o", "E"] +[70.32382918357888, "o", " "] +[70.35382918357888, "o", "r"] +[70.38382918357888, "o", "d"] +[70.41382918357888, "o", "u"] +[70.44382918357888, "o", " "] +[70.47382918357889, "o", "S"] +[70.50382918357889, "o", "E"] +[70.53382918357889, "o", "T"] +[70.56382918357889, "o", " "] +[70.59382918357889, "o", "p"] +[70.62382918357889, "o", "r"] +[70.65382918357889, "o", "e"] +[70.6838291835789, "o", "c"] +[70.7138291835789, "o", "i"] +[70.7438291835789, "o", "p"] +[70.7738291835789, "o", "i"] +[70.8038291835789, "o", "t"] +[70.8338291835789, "o", "a"] +[70.8638291835789, "o", "t"] +[70.8938291835789, "o", "i"] +[70.9238291835789, "o", "o"] +[70.9538291835789, "o", "n"] +[70.9838291835789, "o", " "] +[71.0138291835789, "o", "="] +[71.04382918357891, "o", " "] +[71.07382918357891, "o", "p"] +[71.10382918357891, "o", "r"] +[71.13382918357891, "o", "e"] +[71.16382918357891, "o", "c"] +[71.19382918357891, "o", "i"] +[71.22382918357891, "o", "p"] +[71.25382918357892, "o", "i"] +[71.28382918357892, "o", "t"] +[71.31382918357892, "o", "a"] +[71.34382918357892, "o", "t"] +[71.37382918357892, "o", "i"] +[71.40382918357892, "o", "o"] +[71.43382918357892, "o", "n"] +[71.46382918357892, "o", " "] +[71.49382918357892, "o", "*"] +[71.52382918357893, "o", " "] +[71.55382918357893, "o", "1"] +[71.58382918357893, "o", "."] +[71.61382918357893, "o", "2"] +[71.64382918357893, "o", " "] +[71.67382918357893, "o", "W"] +[71.70382918357893, "o", "H"] +[71.73382918357893, "o", "E"] +[71.76382918357893, "o", "R"] +[71.79382918357894, "o", "E"] +[71.82382918357894, "o", " "] +[71.85382918357894, "o", "E"] +[71.88382918357894, "o", "X"] +[71.91382918357894, "o", "T"] +[71.94382918357894, "o", "R"] +[71.97382918357894, "o", "A"] +[72.00382918357894, "o", "C"] +[72.03382918357894, "o", "T"] +[72.06382918357895, "o", " "] +[72.09382918357895, "o", "("] +[72.12382918357895, "o", "y"] +[72.15382918357895, "o", "e"] +[72.18382918357895, "o", "a"] +[72.21382918357895, "o", "r"] +[72.24382918357895, "o", " "] +[72.27382918357895, "o", "F"] +[72.30382918357896, "o", "R"] +[72.33382918357896, "o", "O"] +[72.36382918357896, "o", "M"] +[72.39382918357896, "o", " "] +[72.42382918357896, "o", "d"] +[72.45382918357896, "o", "a"] +[72.48382918357896, "o", "t"] +[72.51382918357896, "o", "e"] +[72.54382918357896, "o", ")"] +[72.57382918357897, "o", " "] +[72.60382918357897, "o", "="] +[72.63382918357897, "o", " "] +[72.66382918357897, "o", "2"] +[72.69382918357897, "o", "0"] +[72.72382918357897, "o", "1"] +[72.75382918357897, "o", "2"] +[72.78382918357897, "o", "\""] +[72.81382918357897, "o", "\r\n"] +[72.84382918357898, "o", "$"] +[72.87382918357898, "o", " "] +[72.90382918357898, "o", "s"] +[72.93382918357898, "o", "g"] +[72.96382918357898, "o", "r"] +[72.99382918357898, "o", " "] +[73.02382918357898, "o", "c"] +[73.05382918357898, "o", "o"] +[73.08382918357898, "o", "m"] +[73.11382918357899, "o", "m"] +[73.14382918357899, "o", "i"] +[73.17382918357899, "o", "t"] +[73.20382918357899, "o", " "] +[73.23382918357899, "o", "-"] +[73.26382918357899, "o", "m"] +[73.29382918357899, "o", " "] +[73.323829183579, "o", "\""] +[73.353829183579, "o", "R"] +[73.383829183579, "o", "e"] +[73.413829183579, "o", "v"] +[73.443829183579, "o", "i"] +[73.473829183579, "o", "s"] +[73.503829183579, "o", "i"] +[73.533829183579, "o", "o"] +[73.563829183579, "o", "n"] +[73.593829183579, "o", " "] +[73.623829183579, "o", "t"] +[73.653829183579, "o", "o"] +[73.68382918357901, "o", " "] +[73.71382918357901, "o", "t"] +[73.74382918357901, "o", "h"] +[73.77382918357901, "o", "e"] +[73.80382918357901, "o", " "] +[73.83382918357901, "o", "2"] +[73.86382918357901, "o", "0"] +[73.89382918357902, "o", "1"] +[73.92382918357902, "o", "2"] +[73.95382918357902, "o", " "] +[73.98382918357902, "o", "r"] +[74.01382918357902, "o", "a"] +[74.04382918357902, "o", "i"] +[74.07382918357902, "o", "n"] +[74.10382918357902, "o", "f"] +[74.13382918357902, "o", "a"] +[74.16382918357903, "o", "l"] +[74.19382918357903, "o", "l"] +[74.22382918357903, "o", " "] +[74.25382918357903, "o", "d"] +[74.28382918357903, "o", "a"] +[74.31382918357903, "o", "t"] +[74.34382918357903, "o", "a"] +[74.37382918357903, "o", "\""] +[74.40382918357903, "o", " "] +[74.43382918357904, "o", "d"] +[74.46382918357904, "o", "e"] +[74.49382918357904, "o", "m"] +[74.52382918357904, "o", "o"] +[74.55382918357904, "o", "/"] +[74.58382918357904, "o", "w"] +[74.61382918357904, "o", "e"] +[74.64382918357904, "o", "a"] +[74.67382918357904, "o", "t"] +[74.70382918357905, "o", "h"] +[74.73382918357905, "o", "e"] +[74.76382918357905, "o", "r"] +[74.79382918357905, "o", "\r\n"] +[74.82382918357905, "o", "$"] +[74.85382918357905, "o", " "] +[74.88382918357905, "o", "s"] +[74.91382918357905, "o", "g"] +[74.94382918357906, "o", "r"] +[74.97382918357906, "o", " "] +[75.00382918357906, "o", "t"] +[75.03382918357906, "o", "a"] +[75.06382918357906, "o", "g"] +[75.09382918357906, "o", " "] +[75.12382918357906, "o", "d"] +[75.15382918357906, "o", "e"] +[75.18382918357906, "o", "m"] +[75.21382918357907, "o", "o"] +[75.24382918357907, "o", "/"] +[75.27382918357907, "o", "w"] +[75.30382918357907, "o", "e"] +[75.33382918357907, "o", "a"] +[75.36382918357907, "o", "t"] +[75.39382918357907, "o", "h"] +[75.42382918357907, "o", "e"] +[75.45382918357907, "o", "r"] +[75.48382918357908, "o", " "] +[75.51382918357908, "o", "r"] +[75.54382918357908, "o", "e"] +[75.57382918357908, "o", "v"] +[75.60382918357908, "o", "i"] +[75.63382918357908, "o", "s"] +[75.66382918357908, "o", "e"] +[75.69382918357908, "o", "d"] +[75.72382918357908, "o", "_"] +[75.75382918357909, "o", "d"] +[75.78382918357909, "o", "a"] +[75.81382918357909, "o", "t"] +[75.84382918357909, "o", "a"] +[75.87382918357909, "o", "\r\n"] +[75.90382918357909, "o", "\u001b[0m"] +[75.93382918357909, "o", "\r\n"] +[76.36489283561767, "o", "Committing demo/weather...\r\n"] +[76.40305411338866, "o", "Storing and indexing table rdu\r\n"] +[76.61117231369079, "o", "Committed demo/weather as 8850a73540ae.\r\n"] +[77.06337368011535, "o", "Tagged demo/weather:8850a73540aec61630a94017ce8cf5fce4af3e830775d415c6f707aac51eabce with revised_data.\r\n"] +[77.09337368011535, "o", "\u001b[1m"] +[77.12337368011535, "o", "\u001b[36m"] +[77.15337368011535, "o", "\u001b[91m"] +[77.18337368011535, "o", "$"] +[77.21337368011535, "o", " "] +[77.24337368011535, "o", "\u001b[0m"] +[82.27337368011536, "o", "\u001b[H"] +[82.30337368011536, "o", "\u001b[J"] +[82.33337368011536, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Use the derivative image's provenance to rebuild it against the revised version"] +[82.36337368011536, "o", "\r\n"] +[82.39337368011536, "o", "$"] +[82.42337368011536, "o", " "] +[82.45337368011536, "o", "s"] +[82.48337368011536, "o", "g"] +[82.51337368011536, "o", "r"] +[82.54337368011537, "o", " "] +[82.57337368011537, "o", "r"] +[82.60337368011537, "o", "e"] +[82.63337368011537, "o", "b"] +[82.66337368011537, "o", "u"] +[82.69337368011537, "o", "i"] +[82.72337368011537, "o", "l"] +[82.75337368011537, "o", "d"] +[82.78337368011537, "o", " "] +[82.81337368011538, "o", "d"] +[82.84337368011538, "o", "e"] +[82.87337368011538, "o", "m"] +[82.90337368011538, "o", "o"] +[82.93337368011538, "o", "/"] +[82.96337368011538, "o", "s"] +[82.99337368011538, "o", "u"] +[83.02337368011538, "o", "m"] +[83.05337368011539, "o", "m"] +[83.08337368011539, "o", "a"] +[83.11337368011539, "o", "r"] +[83.14337368011539, "o", "y"] +[83.17337368011539, "o", " "] +[83.20337368011539, "o", "-"] +[83.23337368011539, "o", "-"] +[83.2633736801154, "o", "a"] +[83.2933736801154, "o", "g"] +[83.3233736801154, "o", "a"] +[83.3533736801154, "o", "i"] +[83.3833736801154, "o", "n"] +[83.4133736801154, "o", "s"] +[83.4433736801154, "o", "t"] +[83.4733736801154, "o", " "] +[83.5033736801154, "o", "d"] +[83.5333736801154, "o", "e"] +[83.5633736801154, "o", "m"] +[83.5933736801154, "o", "o"] +[83.6233736801154, "o", "/"] +[83.65337368011541, "o", "w"] +[83.68337368011541, "o", "e"] +[83.71337368011541, "o", "a"] +[83.74337368011541, "o", "t"] +[83.77337368011541, "o", "h"] +[83.80337368011541, "o", "e"] +[83.83337368011541, "o", "r"] +[83.86337368011542, "o", ":"] +[83.89337368011542, "o", "r"] +[83.92337368011542, "o", "e"] +[83.95337368011542, "o", "v"] +[83.98337368011542, "o", "i"] +[84.01337368011542, "o", "s"] +[84.04337368011542, "o", "e"] +[84.07337368011542, "o", "d"] +[84.10337368011542, "o", "_"] +[84.13337368011543, "o", "d"] +[84.16337368011543, "o", "a"] +[84.19337368011543, "o", "t"] +[84.22337368011543, "o", "a"] +[84.25337368011543, "o", "\r\n"] +[84.28337368011543, "o", "$"] +[84.31337368011543, "o", " "] +[84.34337368011543, "o", "s"] +[84.37337368011544, "o", "g"] +[84.40337368011544, "o", "r"] +[84.43337368011544, "o", " "] +[84.46337368011544, "o", "t"] +[84.49337368011544, "o", "a"] +[84.52337368011544, "o", "g"] +[84.55337368011544, "o", " "] +[84.58337368011544, "o", "d"] +[84.61337368011544, "o", "e"] +[84.64337368011545, "o", "m"] +[84.67337368011545, "o", "o"] +[84.70337368011545, "o", "/"] +[84.73337368011545, "o", "s"] +[84.76337368011545, "o", "u"] +[84.79337368011545, "o", "m"] +[84.82337368011545, "o", "m"] +[84.85337368011545, "o", "a"] +[84.88337368011545, "o", "r"] +[84.91337368011546, "o", "y"] +[84.94337368011546, "o", " "] +[84.97337368011546, "o", "b"] +[85.00337368011546, "o", "a"] +[85.03337368011546, "o", "s"] +[85.06337368011546, "o", "e"] +[85.09337368011546, "o", "d"] +[85.12337368011546, "o", "_"] +[85.15337368011546, "o", "o"] +[85.18337368011547, "o", "n"] +[85.21337368011547, "o", "_"] +[85.24337368011547, "o", "r"] +[85.27337368011547, "o", "e"] +[85.30337368011547, "o", "v"] +[85.33337368011547, "o", "i"] +[85.36337368011547, "o", "s"] +[85.39337368011547, "o", "e"] +[85.42337368011547, "o", "d"] +[85.45337368011548, "o", "\r\n"] +[85.48337368011548, "o", "\u001b[0m"] +[85.51337368011548, "o", "\r\n"] +[85.97140461921765, "o", "Rerunning demo/summary:dd4bf60c05b60539e3f9fac2da09d3d28ac28145646762f5acfaef932afdfaae against:\r\n"] +[85.9714177322395, "o", "demo/weather:revised_data\r\n"] +[86.02168590545728, "o", "\u001b[1m\r\nStep 1/2 : FROM demo/weather:revised_data IMPORT rdu AS source_data\u001b[0m\r\n"] +[86.08437377929761, "o", "Resolving repository demo/weather\r\n"] +[86.0894666385658, "o", "Importing 1 table from demo/weather:8850a73540ae into demo/summary\r\n"] +[86.25130683898999, "o", " ---> e210f3a178fb\r\n"] +[86.25176555633618, "o", "\u001b[1m\r\nStep 2/2 : SQL {CREATE TABLE monthly_summary AS SELECT to_char(dat...\u001b[0m\r\n"] +[86.25762993812634, "o", "Executing SQL...\r\n"] +[86.49246580123975, "o", "Committing demo/summary...\r\n"] +[86.52042347908093, "o", "Processing table monthly_summary\r\n"] +[86.64573938369824, "o", " ---> baace25c6eab\r\n"] +[86.64939720153882, "o", "Successfully built demo/summary:baace25c6eab."] +[86.64944345474316, "o", "\r\n"] +[87.10666973114087, "o", "Tagged demo/summary:baace25c6eab3fab4ffd5794a18fbc79b198ee85cec623e8c4fa9055242f5f44 with based_on_revised.\r\n"] +[87.13666973114087, "o", "\u001b[1m"] +[87.16666973114087, "o", "\u001b[36m"] +[87.19666973114087, "o", "\u001b[91m"] +[87.22666973114087, "o", "$"] +[87.25666973114087, "o", " "] +[87.28666973114088, "o", "\u001b[0m"] +[92.31666973114088, "o", "\u001b[H"] +[92.34666973114088, "o", "\u001b[J"] +[92.37666973114088, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Compare the two resultant datasets"] +[92.40666973114088, "o", "\r\n"] +[92.43666973114088, "o", "$"] +[92.46666973114088, "o", " "] +[92.49666973114088, "o", "s"] +[92.52666973114088, "o", "g"] +[92.55666973114089, "o", "r"] +[92.58666973114089, "o", " "] +[92.61666973114089, "o", "d"] +[92.64666973114089, "o", "i"] +[92.67666973114089, "o", "f"] +[92.70666973114089, "o", "f"] +[92.73666973114089, "o", " "] +[92.7666697311409, "o", "d"] +[92.7966697311409, "o", "e"] +[92.8266697311409, "o", "m"] +[92.8566697311409, "o", "o"] +[92.8866697311409, "o", "/"] +[92.9166697311409, "o", "s"] +[92.9466697311409, "o", "u"] +[92.9766697311409, "o", "m"] +[93.0066697311409, "o", "m"] +[93.0366697311409, "o", "a"] +[93.0666697311409, "o", "r"] +[93.0966697311409, "o", "y"] +[93.12666973114091, "o", " "] +[93.15666973114091, "o", "b"] +[93.18666973114091, "o", "a"] +[93.21666973114091, "o", "s"] +[93.24666973114091, "o", "e"] +[93.27666973114091, "o", "d"] +[93.30666973114091, "o", "_"] +[93.33666973114092, "o", "o"] +[93.36666973114092, "o", "n"] +[93.39666973114092, "o", "_"] +[93.42666973114092, "o", "i"] +[93.45666973114092, "o", "n"] +[93.48666973114092, "o", "i"] +[93.51666973114092, "o", "t"] +[93.54666973114092, "o", "i"] +[93.57666973114092, "o", "a"] +[93.60666973114093, "o", "l"] +[93.63666973114093, "o", " "] +[93.66666973114093, "o", "b"] +[93.69666973114093, "o", "a"] +[93.72666973114093, "o", "s"] +[93.75666973114093, "o", "e"] +[93.78666973114093, "o", "d"] +[93.81666973114093, "o", "_"] +[93.84666973114093, "o", "o"] +[93.87666973114094, "o", "n"] +[93.90666973114094, "o", "_"] +[93.93666973114094, "o", "r"] +[93.96666973114094, "o", "e"] +[93.99666973114094, "o", "v"] +[94.02666973114094, "o", "i"] +[94.05666973114094, "o", "s"] +[94.08666973114094, "o", "e"] +[94.11666973114095, "o", "d"] +[94.14666973114095, "o", " "] +[94.17666973114095, "o", "-"] +[94.20666973114095, "o", "-"] +[94.23666973114095, "o", "v"] +[94.26666973114095, "o", "e"] +[94.29666973114095, "o", "r"] +[94.32666973114095, "o", "b"] +[94.35666973114095, "o", "o"] +[94.38666973114096, "o", "s"] +[94.41666973114096, "o", "e"] +[94.44666973114096, "o", " "] +[94.47666973114096, "o", "-"] +[94.50666973114096, "o", "-"] +[94.53666973114096, "o", "t"] +[94.56666973114096, "o", "a"] +[94.59666973114096, "o", "b"] +[94.62666973114096, "o", "l"] +[94.65666973114097, "o", "e"] +[94.68666973114097, "o", "-"] +[94.71666973114097, "o", "n"] +[94.74666973114097, "o", "a"] +[94.77666973114097, "o", "m"] +[94.80666973114097, "o", "e"] +[94.83666973114097, "o", " "] +[94.86666973114097, "o", "m"] +[94.89666973114097, "o", "o"] +[94.92666973114098, "o", "n"] +[94.95666973114098, "o", "t"] +[94.98666973114098, "o", "h"] +[95.01666973114098, "o", "l"] +[95.04666973114098, "o", "y"] +[95.07666973114098, "o", "_"] +[95.10666973114098, "o", "s"] +[95.13666973114098, "o", "u"] +[95.16666973114098, "o", "m"] +[95.19666973114099, "o", "m"] +[95.22666973114099, "o", "a"] +[95.25666973114099, "o", "r"] +[95.28666973114099, "o", "y"] +[95.31666973114099, "o", "\r\n"] +[95.34666973114099, "o", "\u001b[0m"] +[95.37666973114099, "o", "\r\n"] +[95.98079642295923, "o", "Between dd4bf60c05b6 and baace25c6eab: \r\n"] +[95.98110088348474, "o", "monthly_summary: added 12 rows, removed 12 rows.\r\n- ('201201', Decimal('0.06322580645161290323'), Decimal('0E-20'))\r\n- ('201202', Decimal('0.06689655172413793103'), Decimal('0.03137931034482758621'))\r\n- ('201203', Decimal('0.17290322580645161290'), Decimal('0E-20'))\r\n- ('201204', Decimal('0.08766666666666666667'), Decimal('0E-20'))\r\n- ('201205', Decimal('0.12806451612903225806'), Decimal('0E-20'))\r\n- ('201206', Decimal('0.10333333333333333333'), Decimal('0E-20'))\r\n- ('201207', Decimal('0.1496774193548387096"] +[95.98110803604212, "o", "8'), Decimal('0E-20'))\r\n- ('201208', Decimal('0.13000000000000000000'), Decimal('0E-20'))\r\n- ('201209', Decimal('0.26100000000000000000'), Decimal('0E-20'))\r\n- ('201210', Decimal('0.05903225806451612903'), Decimal('0E-20'))\r\n- ('201211', Decimal('0.01866666666666666667'), Decimal('0E-20'))\r\n- ('201212', Decimal('0.09483870967741935484'), Decimal('0E-20'))\r\n+ ('201201', Decimal('0.07587096774193548387'), Decimal('0E-20'))\r\n+ ('201202', Decimal('0.08027586206896551724'), Decimal('0.03137931034482758621'))\r\n+ "] +[95.9811128044137, "o", "('201203', Decimal('0.20748387096774193548'), Decimal('0E-20'))\r\n+ ('201204', Decimal('0.10520000000000000000'), Decimal('0E-20'))\r\n+ ('201205', Decimal('0.15367741935483870968'), Decimal('0E-20'))\r\n+ ('201206', Decimal('0.12400000000000000000'), Decimal('0E-20'))\r\n+ ('201207', Decimal('0.17961290322580645161'), Decimal('0E-20'))\r\n+ ('201208', Decimal('0.15600000000000000000'), Decimal('0E-20'))\r\n+ ('201209', Decimal('0.31320000000000000000'), Decimal('0E-20'))\r\n+ ('201210', Decimal('0.07083870967741935484'"] +[95.98112210273828, "o", "), Decimal('0E-20'))\r\n+ ('201211', Decimal('0.02240000000000000000'), Decimal('0E-20'))\r\n+ ('201212', Decimal('0.11380645161290322581'), Decimal('0E-20'))\r\n"] +[96.01112210273828, "o", "\u001b[1m"] +[96.04112210273829, "o", "\u001b[36m"] +[96.07112210273829, "o", "\u001b[91m"] +[96.10112210273829, "o", "$"] +[96.13112210273829, "o", " "] +[96.16112210273829, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/casts/versioned/latest/splitgraph-cloud.cast b/content/casts/versioned/latest/splitgraph-cloud.cast index 40ba3486..1678efbe 100644 --- a/content/casts/versioned/latest/splitgraph-cloud.cast +++ b/content/casts/versioned/latest/splitgraph-cloud.cast @@ -1,4 +1,4 @@ -{"version": 2, "width": 100, "height": 22, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1615571821, "metadata": {"tss": [{"h": "Make sure you are registered and logged into Splitgraph Cloud.", "ts": 0.06}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport", "ts": 8.755740499496454}, {"h": "Push the dataset to Splitgraph", "ts": 20.86912068366991}, {"h": "Upload some dataset metadata as well.", "ts": 28.869942207336326}, {"h": "Perform a request against an automatically-generated", "ts": 39.36994220733632}, {"h": "sgr also has a shorthand to access the query API", "ts": 48.41892819404606}, {"h": "You can also run a query against the Splitgraph Data Delivery Network.", "ts": 57.418928194046174}, {"h": "The query API also supports running one-off Splitfile commands against a repository,", "ts": 68.60892819404637}, {"h": "Run another command against the new layer to join the two datasets", "ts": 78.12066841125537}, {"h": "Pull the dataset and check out the new image", "ts": 87.69420323371949}, {"h": "Inspect the generated data", "ts": 99.95769389152596}]}} +{"version": 2, "width": 100, "height": 22, "env": {"TERM": "xterm-256color", "SHELL": "/bin/zsh"}, "timestamp": 1639770161, "metadata": {"tss": [{"h": "Make sure you are registered and logged into Splitgraph Cloud.", "ts": 0.06}, {"h": "Ingest the weather dataset at Raleigh-Durham Airport", "ts": 8.849999999999994}, {"h": "Push the dataset to Splitgraph", "ts": 21.648066606521482}, {"h": "Upload some dataset metadata as well.", "ts": 29.99945761680594}, {"h": "Perform a request against an automatically-generated", "ts": 40.49945761680594}, {"h": "sgr also has a shorthand to access the query API", "ts": 49.75046377182012}, {"h": "You can also run a query against the Splitgraph Data Delivery Network.", "ts": 58.750463771820236}, {"h": "The query API also supports running one-off Splitfile commands against a repository,", "ts": 69.94046377182043}, {"h": "Run another command against the new layer to join the two datasets", "ts": 79.45231676101734}, {"h": "Pull the dataset and check out the new image", "ts": 89.05366978645388}, {"h": "Inspect the generated data", "ts": 102.35350401878428}]}} [0.03, "o", "\u001b[H"] [0.06, "o", "\u001b[J"] [0.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Make sure you are registered and logged into Splitgraph Cloud."] @@ -86,1252 +86,1254 @@ [2.549999999999998, "o", "\r\n"] [2.579999999999998, "o", "\u001b[0m"] [2.6099999999999977, "o", "\r\n"] -[3.5157404994964576, "o", "splitgraph-demo\r\n"] -[3.5457404994964574, "o", "\u001b[1m"] -[3.5757404994964572, "o", "\u001b[36m"] -[3.605740499496457, "o", "\u001b[91m"] -[3.635740499496457, "o", "$"] -[3.6657404994964566, "o", " "] -[3.6957404994964564, "o", "\u001b[0m"] -[8.725740499496455, "o", "\u001b[H"] -[8.755740499496454, "o", "\u001b[J"] -[8.785740499496454, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Ingest the weather dataset at Raleigh-Durham Airport"] -[8.815740499496453, "o", "\r\n"] -[8.845740499496452, "o", "$"] -[8.875740499496452, "o", " "] -[8.905740499496451, "o", "s"] -[8.93574049949645, "o", "g"] -[8.96574049949645, "o", "r"] -[8.99574049949645, "o", " "] -[9.025740499496449, "o", "i"] -[9.055740499496448, "o", "n"] -[9.085740499496447, "o", "i"] -[9.115740499496447, "o", "t"] -[9.145740499496446, "o", " "] -[9.175740499496445, "o", "w"] -[9.205740499496445, "o", "e"] -[9.235740499496444, "o", "a"] -[9.265740499496443, "o", "t"] -[9.295740499496443, "o", "h"] -[9.325740499496442, "o", "e"] -[9.355740499496441, "o", "r"] -[9.38574049949644, "o", "\r\n"] -[9.41574049949644, "o", "$"] -[9.44574049949644, "o", " "] -[9.475740499496439, "o", "s"] -[9.505740499496438, "o", "g"] -[9.535740499496438, "o", "r"] -[9.565740499496437, "o", " "] -[9.595740499496436, "o", "c"] -[9.625740499496436, "o", "s"] -[9.655740499496435, "o", "v"] -[9.685740499496434, "o", " "] -[9.715740499496434, "o", "i"] -[9.745740499496433, "o", "m"] -[9.775740499496433, "o", "p"] -[9.805740499496432, "o", "o"] -[9.835740499496431, "o", "r"] -[9.86574049949643, "o", "t"] -[9.89574049949643, "o", " "] -[9.92574049949643, "o", "-"] -[9.955740499496429, "o", "f"] -[9.985740499496428, "o", " "] -[10.015740499496427, "o", "."] -[10.045740499496427, "o", "."] -[10.075740499496426, "o", "/"] -[10.105740499496425, "o", "i"] -[10.135740499496425, "o", "m"] -[10.165740499496424, "o", "p"] -[10.195740499496424, "o", "o"] -[10.225740499496423, "o", "r"] -[10.255740499496422, "o", "t"] -[10.285740499496422, "o", "-"] -[10.315740499496421, "o", "f"] -[10.34574049949642, "o", "r"] -[10.37574049949642, "o", "o"] -[10.405740499496419, "o", "m"] -[10.435740499496418, "o", "-"] -[10.465740499496418, "o", "c"] -[10.495740499496417, "o", "s"] -[10.525740499496417, "o", "v"] -[10.555740499496416, "o", "/"] -[10.585740499496415, "o", "r"] -[10.615740499496415, "o", "d"] -[10.645740499496414, "o", "u"] -[10.675740499496413, "o", "-"] -[10.705740499496413, "o", "w"] -[10.735740499496412, "o", "e"] -[10.765740499496411, "o", "a"] -[10.79574049949641, "o", "t"] -[10.82574049949641, "o", "h"] -[10.85574049949641, "o", "e"] -[10.885740499496409, "o", "r"] -[10.915740499496408, "o", "-"] -[10.945740499496408, "o", "h"] -[10.975740499496407, "o", "i"] -[11.005740499496406, "o", "s"] -[11.035740499496406, "o", "t"] -[11.065740499496405, "o", "o"] -[11.095740499496404, "o", "r"] -[11.125740499496404, "o", "y"] -[11.155740499496403, "o", "."] -[11.185740499496402, "o", "c"] -[11.215740499496402, "o", "s"] -[11.245740499496401, "o", "v"] -[11.2757404994964, "o", " "] -[11.3057404994964, "o", "\\"] -[11.3357404994964, "o", "\r\n "] -[11.365740499496399, "o", "-"] -[11.395740499496398, "o", "k"] -[11.425740499496397, "o", " "] -[11.455740499496397, "o", "d"] -[11.485740499496396, "o", "a"] -[11.515740499496395, "o", "t"] -[11.545740499496395, "o", "e"] -[11.575740499496394, "o", " "] -[11.605740499496394, "o", "\\"] -[11.635740499496393, "o", "\r\n "] -[11.665740499496392, "o", "-"] -[11.695740499496392, "o", "t"] -[11.725740499496391, "o", " "] -[11.75574049949639, "o", "d"] -[11.78574049949639, "o", "a"] -[11.815740499496389, "o", "t"] -[11.845740499496388, "o", "e"] -[11.875740499496388, "o", " "] -[11.905740499496387, "o", "t"] -[11.935740499496386, "o", "i"] -[11.965740499496386, "o", "m"] -[11.995740499496385, "o", "e"] -[12.025740499496385, "o", "s"] -[12.055740499496384, "o", "t"] -[12.085740499496383, "o", "a"] -[12.115740499496383, "o", "m"] -[12.145740499496382, "o", "p"] -[12.175740499496381, "o", " "] -[12.20574049949638, "o", "\\"] -[12.23574049949638, "o", "\r\n "] -[12.26574049949638, "o", "-"] -[12.295740499496379, "o", "-"] -[12.325740499496378, "o", "s"] -[12.355740499496378, "o", "e"] -[12.385740499496377, "o", "p"] -[12.415740499496376, "o", "a"] -[12.445740499496376, "o", "r"] -[12.475740499496375, "o", "a"] -[12.505740499496374, "o", "t"] -[12.535740499496374, "o", "o"] -[12.565740499496373, "o", "r"] -[12.595740499496372, "o", " "] -[12.625740499496372, "o", "\""] -[12.655740499496371, "o", ";"] -[12.68574049949637, "o", "\""] -[12.71574049949637, "o", " "] -[12.74574049949637, "o", "\\"] -[12.775740499496369, "o", "\r\n "] -[12.805740499496368, "o", "w"] -[12.835740499496367, "o", "e"] -[12.865740499496367, "o", "a"] -[12.895740499496366, "o", "t"] -[12.925740499496365, "o", "h"] -[12.955740499496365, "o", "e"] -[12.985740499496364, "o", "r"] -[13.015740499496363, "o", " "] -[13.045740499496363, "o", "r"] -[13.075740499496362, "o", "d"] -[13.105740499496362, "o", "u"] -[13.135740499496361, "o", "\r\n"] -[13.16574049949636, "o", "$"] -[13.19574049949636, "o", " "] -[13.225740499496359, "o", "s"] -[13.255740499496358, "o", "g"] -[13.285740499496358, "o", "r"] -[13.315740499496357, "o", " "] -[13.345740499496356, "o", "c"] -[13.375740499496356, "o", "o"] -[13.405740499496355, "o", "m"] -[13.435740499496355, "o", "m"] -[13.465740499496354, "o", "i"] -[13.495740499496353, "o", "t"] -[13.525740499496353, "o", " "] -[13.555740499496352, "o", "w"] -[13.585740499496351, "o", "e"] -[13.61574049949635, "o", "a"] -[13.64574049949635, "o", "t"] -[13.67574049949635, "o", "h"] -[13.705740499496349, "o", "e"] -[13.735740499496348, "o", "r"] -[13.765740499496347, "o", "\r\n"] -[13.795740499496347, "o", "$"] -[13.825740499496346, "o", " "] -[13.855740499496346, "o", "s"] -[13.885740499496345, "o", "g"] -[13.915740499496344, "o", "r"] -[13.945740499496344, "o", " "] -[13.975740499496343, "o", "t"] -[14.005740499496342, "o", "a"] -[14.035740499496342, "o", "g"] -[14.065740499496341, "o", " "] -[14.09574049949634, "o", "w"] -[14.12574049949634, "o", "e"] -[14.15574049949634, "o", "a"] -[14.185740499496339, "o", "t"] -[14.215740499496338, "o", "h"] -[14.245740499496337, "o", "e"] -[14.275740499496337, "o", "r"] -[14.305740499496336, "o", " "] -[14.335740499496335, "o", "i"] -[14.365740499496335, "o", "n"] -[14.395740499496334, "o", "i"] -[14.425740499496333, "o", "t"] -[14.455740499496333, "o", "i"] -[14.485740499496332, "o", "a"] -[14.515740499496331, "o", "l"] -[14.54574049949633, "o", "_"] -[14.57574049949633, "o", "d"] -[14.60574049949633, "o", "a"] -[14.635740499496329, "o", "t"] -[14.665740499496328, "o", "a"] -[14.695740499496328, "o", "\r\n"] -[14.725740499496327, "o", "\u001b[0m"] -[14.755740499496326, "o", "\r\n"] -[14.985376453399525, "o", "Initialized empty repository weather\r\n"] -[15.18942103385912, "o", "Committing weather...\r\n"] -[15.212408161163196, "o", "Processing table rdu\r\n"] -[15.415934896468983, "o", "Committed weather as 717b406321c6.\r\n"] -[15.62912068366991, "o", "Tagged weather:717b406321c6040a73fb5264d8e6386cc4be643c32a609cf7e162e78e318d015 with initial_data.\r\n"] -[15.65912068366991, "o", "\u001b[1m"] -[15.689120683669909, "o", "\u001b[36m"] -[15.719120683669908, "o", "\u001b[91m"] -[15.749120683669908, "o", "$"] -[15.779120683669907, "o", " "] -[15.809120683669907, "o", "\u001b[0m"] -[20.839120683669908, "o", "\u001b[H"] -[20.86912068366991, "o", "\u001b[J"] -[20.89912068366991, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Push the dataset to Splitgraph"] -[20.92912068366991, "o", "\r\n"] -[20.959120683669912, "o", "$"] -[20.989120683669913, "o", " "] -[21.019120683669914, "o", "s"] -[21.049120683669916, "o", "g"] -[21.079120683669917, "o", "r"] -[21.109120683669918, "o", " "] -[21.13912068366992, "o", "p"] -[21.16912068366992, "o", "u"] -[21.19912068366992, "o", "s"] -[21.229120683669922, "o", "h"] -[21.259120683669924, "o", " "] -[21.289120683669925, "o", "w"] -[21.319120683669926, "o", "e"] -[21.349120683669927, "o", "a"] -[21.379120683669928, "o", "t"] -[21.40912068366993, "o", "h"] -[21.43912068366993, "o", "e"] -[21.46912068366993, "o", "r"] -[21.499120683669933, "o", "\r\n"] -[21.529120683669934, "o", "\u001b[0m"] -[21.559120683669935, "o", "\r\n"] -[21.7704601573943, "o", "Pushing weather to splitgraph-demo/weather on remote data.splitgraph.com\r\n"] -[21.770472316741834, "o", "Gathering remote metadata...\r\n"] -[22.770472316741834, "o", "No objects to upload.\r\n"] -[23.625097064971815, "o", "Uploaded metadata for 2 images, 1 table, 0 objects and 1 tag."] -[23.62515666961659, "o", "\r\n"] -[23.629942207336317, "o", "Setting upstream for weather to splitgraph-demo/weather.\r\n"] -[23.659942207336318, "o", "\u001b[1m"] -[23.68994220733632, "o", "\u001b[36m"] -[23.71994220733632, "o", "\u001b[91m"] -[23.74994220733632, "o", "$"] -[23.779942207336322, "o", " "] -[23.809942207336324, "o", "\u001b[0m"] -[28.839942207336325, "o", "\u001b[H"] -[28.869942207336326, "o", "\u001b[J"] -[28.899942207336327, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Upload some dataset metadata as well."] -[28.929942207336328, "o", "\r\n"] -[28.95994220733633, "o", "$"] -[28.98994220733633, "o", " "] -[29.01994220733633, "o", "c"] -[29.049942207336333, "o", "a"] -[29.079942207336334, "o", "t"] -[29.109942207336335, "o", " "] -[29.139942207336336, "o", "d"] -[29.169942207336337, "o", "a"] -[29.19994220733634, "o", "t"] -[29.22994220733634, "o", "a"] -[29.25994220733634, "o", "s"] -[29.289942207336342, "o", "e"] -[29.319942207336343, "o", "t"] -[29.349942207336344, "o", "-"] -[29.379942207336345, "o", "m"] -[29.409942207336346, "o", "e"] -[29.439942207336347, "o", "t"] -[29.46994220733635, "o", "a"] -[29.49994220733635, "o", "d"] -[29.52994220733635, "o", "a"] -[29.559942207336352, "o", "t"] -[29.589942207336353, "o", "a"] -[29.619942207336354, "o", "."] -[29.649942207336355, "o", "y"] -[29.679942207336357, "o", "m"] -[29.709942207336358, "o", "l"] -[29.73994220733636, "o", "\r\n"] -[29.76994220733636, "o", "$"] -[29.79994220733636, "o", " "] -[29.829942207336362, "o", "c"] -[29.859942207336363, "o", "a"] -[29.889942207336365, "o", "t"] -[29.919942207336366, "o", " "] -[29.949942207336367, "o", "d"] -[29.979942207336368, "o", "a"] -[30.00994220733637, "o", "t"] -[30.03994220733637, "o", "a"] -[30.06994220733637, "o", "s"] -[30.099942207336372, "o", "e"] -[30.129942207336374, "o", "t"] -[30.159942207336375, "o", "-"] -[30.189942207336376, "o", "r"] -[30.219942207336377, "o", "e"] -[30.249942207336378, "o", "a"] -[30.27994220733638, "o", "d"] -[30.30994220733638, "o", "m"] -[30.33994220733638, "o", "e"] -[30.369942207336383, "o", "."] -[30.399942207336384, "o", "m"] -[30.429942207336385, "o", "d"] -[30.459942207336386, "o", "\r\n"] -[30.489942207336387, "o", "$"] -[30.51994220733639, "o", " "] -[30.54994220733639, "o", "s"] -[30.57994220733639, "o", "g"] -[30.609942207336392, "o", "r"] -[30.639942207336393, "o", " "] -[30.669942207336394, "o", "c"] -[30.699942207336395, "o", "l"] -[30.729942207336396, "o", "o"] -[30.759942207336398, "o", "u"] -[30.7899422073364, "o", "d"] -[30.8199422073364, "o", " "] -[30.8499422073364, "o", "m"] -[30.879942207336402, "o", "e"] -[30.909942207336403, "o", "t"] -[30.939942207336404, "o", "a"] -[30.969942207336405, "o", "d"] -[30.999942207336407, "o", "a"] -[31.029942207336408, "o", "t"] -[31.05994220733641, "o", "a"] -[31.08994220733641, "o", " "] -[31.11994220733641, "o", "s"] -[31.149942207336412, "o", "p"] -[31.179942207336413, "o", "l"] -[31.209942207336415, "o", "i"] -[31.239942207336416, "o", "t"] -[31.269942207336417, "o", "g"] -[31.299942207336418, "o", "r"] -[31.32994220733642, "o", "a"] -[31.35994220733642, "o", "p"] -[31.38994220733642, "o", "h"] -[31.419942207336423, "o", "-"] -[31.449942207336424, "o", "d"] -[31.479942207336425, "o", "e"] -[31.509942207336426, "o", "m"] -[31.539942207336427, "o", "o"] -[31.569942207336428, "o", "/"] -[31.59994220733643, "o", "w"] -[31.62994220733643, "o", "e"] -[31.65994220733643, "o", "a"] -[31.689942207336433, "o", "t"] -[31.719942207336434, "o", "h"] -[31.749942207336435, "o", "e"] -[31.779942207336436, "o", "r"] -[31.809942207336437, "o", " "] -[31.83994220733644, "o", "d"] -[31.86994220733644, "o", "a"] -[31.89994220733644, "o", "t"] -[31.929942207336442, "o", "a"] -[31.959942207336443, "o", "s"] -[31.989942207336444, "o", "e"] -[32.01994220733644, "o", "t"] -[32.04994220733644, "o", "-"] -[32.079942207336444, "o", "m"] -[32.109942207336445, "o", "e"] -[32.139942207336446, "o", "t"] -[32.16994220733645, "o", "a"] -[32.19994220733645, "o", "d"] -[32.22994220733645, "o", "a"] -[32.25994220733645, "o", "t"] -[32.28994220733645, "o", "a"] -[32.31994220733645, "o", "."] -[32.349942207336454, "o", "y"] -[32.379942207336455, "o", "m"] -[32.40994220733646, "o", "l"] -[32.43994220733646, "o", "\r\n"] -[32.46994220733646, "o", "\u001b[0m"] -[32.49994220733646, "o", "\r\n"] -[32.501729631423984, "o", "# This is a sample dataset metadata file that's used\r\n# to update the dataset's README and description.\r\n\r\nreadme: dataset-readme.md\r\ndescription: Weather history in Raleigh-Durham International airport joined with US domestic flights data (uploaded from Splitgraph release CI)\r\n"] -[32.50328769683841, "o", "# Sample dataset README\r\n\r\nDataset of weather history in Raleigh-Durham International airport, joined with\r\n[US domestic flights data](/splitgraph/domestic_us_flights).\r\n\r\nThis dataset was uploaded from a CI job.\r\n\r\n## Source\r\n\r\n[data.gov](https://catalog.data.gov/dataset/local-weather-archive)\r\n"] -[33.17928662300113, "o", "Metadata updated for repository splitgraph-demo/weather.\r\n"] -[33.209286623001134, "o", "\u001b[1m"] -[33.239286623001135, "o", "\u001b[36m"] -[33.269286623001136, "o", "\u001b[91m"] -[33.29928662300114, "o", "$"] -[33.32928662300114, "o", " "] -[33.35928662300114, "o", "\u001b[0m"] -[39.33994220733632, "o", "\u001b[H"] -[39.36994220733632, "o", "\u001b[J"] -[39.39994220733632, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Perform a request against an automatically-generated"] -[39.429942207336325, "o", "\r\n"] -[39.459942207336326, "o", "$ # Postgrest (https://postgrest.org) endpoint.\r\n"] -[39.48994220733633, "o", "$"] -[39.51994220733633, "o", " "] -[39.54994220733633, "o", "c"] -[39.57994220733633, "o", "u"] -[39.60994220733633, "o", "r"] -[39.63994220733633, "o", "l"] -[39.669942207336334, "o", " "] -[39.699942207336335, "o", "\""] -[39.729942207336336, "o", "h"] -[39.75994220733634, "o", "t"] -[39.78994220733634, "o", "t"] -[39.81994220733634, "o", "p"] -[39.84994220733634, "o", "s"] -[39.87994220733634, "o", ":"] -[39.90994220733634, "o", "/"] -[39.939942207336344, "o", "/"] -[39.969942207336345, "o", "d"] -[39.999942207336346, "o", "a"] -[40.02994220733635, "o", "t"] -[40.05994220733635, "o", "a"] -[40.08994220733635, "o", "."] -[40.11994220733635, "o", "s"] -[40.14994220733635, "o", "p"] -[40.17994220733635, "o", "l"] -[40.209942207336354, "o", "i"] -[40.239942207336355, "o", "t"] -[40.269942207336356, "o", "g"] -[40.29994220733636, "o", "r"] -[40.32994220733636, "o", "a"] -[40.35994220733636, "o", "p"] -[40.38994220733636, "o", "h"] -[40.41994220733636, "o", "."] -[40.44994220733636, "o", "c"] -[40.479942207336364, "o", "o"] -[40.509942207336366, "o", "m"] -[40.53994220733637, "o", "/"] -[40.56994220733637, "o", "s"] -[40.59994220733637, "o", "p"] -[40.62994220733637, "o", "l"] -[40.65994220733637, "o", "i"] -[40.68994220733637, "o", "t"] -[40.71994220733637, "o", "g"] -[40.749942207336375, "o", "r"] -[40.779942207336376, "o", "a"] -[40.80994220733638, "o", "p"] -[40.83994220733638, "o", "h"] -[40.86994220733638, "o", "-"] -[40.89994220733638, "o", "d"] -[40.92994220733638, "o", "e"] -[40.95994220733638, "o", "m"] -[40.989942207336384, "o", "o"] -[41.019942207336385, "o", "/"] -[41.049942207336386, "o", "w"] -[41.07994220733639, "o", "e"] -[41.10994220733639, "o", "a"] -[41.13994220733639, "o", "t"] -[41.16994220733639, "o", "h"] -[41.19994220733639, "o", "e"] -[41.22994220733639, "o", "r"] -[41.259942207336394, "o", "/"] -[41.289942207336395, "o", "i"] -[41.319942207336396, "o", "n"] -[41.3499422073364, "o", "i"] -[41.3799422073364, "o", "t"] -[41.4099422073364, "o", "i"] -[41.4399422073364, "o", "a"] -[41.4699422073364, "o", "l"] -[41.4999422073364, "o", "_"] -[41.529942207336404, "o", "d"] -[41.559942207336405, "o", "a"] -[41.58994220733641, "o", "t"] -[41.61994220733641, "o", "a"] -[41.64994220733641, "o", "/"] -[41.67994220733641, "o", "-"] -[41.70994220733641, "o", "/"] -[41.73994220733641, "o", "r"] -[41.76994220733641, "o", "e"] -[41.799942207336414, "o", "s"] -[41.829942207336416, "o", "t"] -[41.85994220733642, "o", "/"] -[41.88994220733642, "o", "r"] -[41.91994220733642, "o", "d"] -[41.94994220733642, "o", "u"] -[41.97994220733642, "o", "?"] -[42.00994220733642, "o", "d"] -[42.03994220733642, "o", "a"] -[42.069942207336425, "o", "t"] -[42.099942207336426, "o", "e"] -[42.12994220733643, "o", "="] -[42.15994220733643, "o", "e"] -[42.18994220733643, "o", "q"] -[42.21994220733643, "o", "."] -[42.24994220733643, "o", "2"] -[42.27994220733643, "o", "0"] -[42.309942207336434, "o", "0"] -[42.339942207336435, "o", "9"] -[42.369942207336436, "o", "-"] -[42.39994220733644, "o", "0"] -[42.42994220733644, "o", "8"] -[42.45994220733644, "o", "-"] -[42.48994220733644, "o", "2"] -[42.51994220733644, "o", "5"] -[42.54994220733644, "o", "T"] -[42.579942207336444, "o", "0"] -[42.609942207336445, "o", "0"] -[42.639942207336446, "o", ":"] -[42.66994220733645, "o", "0"] -[42.69994220733645, "o", "0"] -[42.72994220733645, "o", ":"] -[42.75994220733645, "o", "0"] -[42.78994220733645, "o", "0"] -[42.81994220733645, "o", "\""] -[42.849942207336454, "o", "\r\n"] -[42.879942207336455, "o", "\u001b[0m"] -[42.90994220733646, "o", "\r\n"] -[43.17892819404605, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] -[43.20892819404605, "o", "\u001b[1m"] -[43.23892819404605, "o", "\u001b[36m"] -[43.268928194046055, "o", "\u001b[91m"] -[43.298928194046056, "o", "$"] -[43.32892819404606, "o", " "] -[43.35892819404606, "o", "\u001b[0m"] -[48.38892819404606, "o", "\u001b[H"] -[48.41892819404606, "o", "\u001b[J"] -[48.44892819404606, "o", "\u001b[1m\u001b[36m\u001b[91m$ # sgr also has a shorthand to access the query API"] -[48.47892819404606, "o", "\r\n"] -[48.508928194046064, "o", "$"] -[48.538928194046065, "o", " "] -[48.568928194046066, "o", "s"] -[48.59892819404607, "o", "g"] -[48.62892819404607, "o", "r"] -[48.65892819404607, "o", " "] -[48.68892819404607, "o", "c"] -[48.71892819404607, "o", "l"] -[48.74892819404607, "o", "o"] -[48.778928194046074, "o", "u"] -[48.808928194046075, "o", "d"] -[48.838928194046076, "o", " "] -[48.86892819404608, "o", "c"] -[48.89892819404608, "o", "u"] -[48.92892819404608, "o", "r"] -[48.95892819404608, "o", "l"] -[48.98892819404608, "o", " "] -[49.01892819404608, "o", "s"] -[49.048928194046084, "o", "p"] -[49.078928194046085, "o", "l"] -[49.108928194046086, "o", "i"] -[49.13892819404609, "o", "t"] -[49.16892819404609, "o", "g"] -[49.19892819404609, "o", "r"] -[49.22892819404609, "o", "a"] -[49.25892819404609, "o", "p"] -[49.28892819404609, "o", "h"] -[49.318928194046094, "o", "-"] -[49.348928194046096, "o", "d"] -[49.3789281940461, "o", "e"] -[49.4089281940461, "o", "m"] -[49.4389281940461, "o", "o"] -[49.4689281940461, "o", "/"] -[49.4989281940461, "o", "w"] -[49.5289281940461, "o", "e"] -[49.5589281940461, "o", "a"] -[49.588928194046105, "o", "t"] -[49.618928194046106, "o", "h"] -[49.64892819404611, "o", "e"] -[49.67892819404611, "o", "r"] -[49.70892819404611, "o", ":"] -[49.73892819404611, "o", "i"] -[49.76892819404611, "o", "n"] -[49.79892819404611, "o", "i"] -[49.828928194046114, "o", "t"] -[49.858928194046115, "o", "i"] -[49.888928194046116, "o", "a"] -[49.91892819404612, "o", "l"] -[49.94892819404612, "o", "_"] -[49.97892819404612, "o", "d"] -[50.00892819404612, "o", "a"] -[50.03892819404612, "o", "t"] -[50.06892819404612, "o", "a"] -[50.098928194046124, "o", " "] -[50.128928194046125, "o", "\""] -[50.158928194046126, "o", "r"] -[50.18892819404613, "o", "d"] -[50.21892819404613, "o", "u"] -[50.24892819404613, "o", "?"] -[50.27892819404613, "o", "d"] -[50.30892819404613, "o", "a"] -[50.33892819404613, "o", "t"] -[50.368928194046134, "o", "e"] -[50.398928194046135, "o", "="] -[50.42892819404614, "o", "e"] -[50.45892819404614, "o", "q"] -[50.48892819404614, "o", "."] -[50.51892819404614, "o", "2"] -[50.54892819404614, "o", "0"] -[50.57892819404614, "o", "0"] -[50.60892819404614, "o", "9"] -[50.638928194046144, "o", "-"] -[50.668928194046146, "o", "0"] -[50.69892819404615, "o", "8"] -[50.72892819404615, "o", "-"] -[50.75892819404615, "o", "2"] -[50.78892819404615, "o", "5"] -[50.81892819404615, "o", "T"] -[50.84892819404615, "o", "0"] -[50.87892819404615, "o", "0"] -[50.908928194046155, "o", ":"] -[50.938928194046156, "o", "0"] -[50.96892819404616, "o", "0"] -[50.99892819404616, "o", ":"] -[51.02892819404616, "o", "0"] -[51.05892819404616, "o", "0"] -[51.08892819404616, "o", "\""] -[51.11892819404616, "o", "\r\n"] -[51.148928194046164, "o", "\u001b[0m"] -[51.178928194046165, "o", "\r\n"] -[52.178928194046165, "o", "[{\"date\":\"2009-08-25T00:00:00\",\"temperaturemin\":68.0,\"temperaturemax\":88.0,\"precipitation\":0.0,\"snowfall\":0.0,\"snowdepth\":0.0,\"avgwindspeed\":3.36,\"fastest2minwinddir\":100,\"fastest2minwindspeed\":12.08,\"fastest5secwinddir\":70,\"fastest5secwindspeed\":17.0,\"fog\":\"Yes\",\"fogheavy\":\"No\",\"mist\":\"Yes\",\"rain\":\"No\",\"fogground\":\"No\",\"ice\":\"No\",\"glaze\":\"No\",\"drizzle\":\"No\",\"snow\":\"No\",\"freezingrain\":\"No\",\"smokehaze\":\"Yes\",\"thunder\":\"No\",\"highwind\":\"No\",\"hail\":\"No\",\"blowingsnow\":\"No\",\"dust\":\"No\",\"freezingfog\":\"No\"}]"] -[52.208928194046166, "o", "\u001b[1m"] -[52.23892819404617, "o", "\u001b[36m"] -[52.26892819404617, "o", "\u001b[91m"] -[52.29892819404617, "o", "$"] -[52.32892819404617, "o", " "] -[52.35892819404617, "o", "\u001b[0m"] -[57.38892819404617, "o", "\u001b[H"] -[57.418928194046174, "o", "\u001b[J"] -[57.448928194046175, "o", "\u001b[1m\u001b[36m\u001b[91m$ # You can also run a query against the Splitgraph Data Delivery Network."] -[57.478928194046176, "o", "\r\n"] -[57.50892819404618, "o", "$ # It supports most PostgresSQL clients and lets you query Splitgraph images and other\r\n"] -[57.53892819404618, "o", "$ # datasets proxied by Splitgraph.\r\n"] -[57.56892819404618, "o", "$"] -[57.59892819404618, "o", " "] -[57.62892819404618, "o", "s"] -[57.65892819404618, "o", "g"] -[57.688928194046184, "o", "r"] -[57.718928194046185, "o", " "] -[57.74892819404619, "o", "c"] -[57.77892819404619, "o", "l"] -[57.80892819404619, "o", "o"] -[57.83892819404619, "o", "u"] -[57.86892819404619, "o", "d"] -[57.89892819404619, "o", " "] -[57.92892819404619, "o", "s"] -[57.958928194046194, "o", "q"] -[57.988928194046196, "o", "l"] -[58.0189281940462, "o", " "] -[58.0489281940462, "o", "\""] -[58.0789281940462, "o", "S"] -[58.1089281940462, "o", "E"] -[58.1389281940462, "o", "L"] -[58.1689281940462, "o", "E"] -[58.1989281940462, "o", "C"] -[58.228928194046205, "o", "T"] -[58.258928194046206, "o", " "] -[58.28892819404621, "o", "d"] -[58.31892819404621, "o", "a"] -[58.34892819404621, "o", "t"] -[58.37892819404621, "o", "e"] -[58.40892819404621, "o", ","] -[58.43892819404621, "o", " "] -[58.468928194046214, "o", "t"] -[58.498928194046215, "o", "e"] -[58.528928194046216, "o", "m"] -[58.55892819404622, "o", "p"] -[58.58892819404622, "o", "e"] -[58.61892819404622, "o", "r"] -[58.64892819404622, "o", "a"] -[58.67892819404622, "o", "t"] -[58.70892819404622, "o", "u"] -[58.738928194046224, "o", "r"] -[58.768928194046225, "o", "e"] -[58.798928194046226, "o", "m"] -[58.82892819404623, "o", "i"] -[58.85892819404623, "o", "n"] -[58.88892819404623, "o", ","] -[58.91892819404623, "o", " "] -[58.94892819404623, "o", "t"] -[58.97892819404623, "o", "e"] -[59.008928194046234, "o", "m"] -[59.038928194046235, "o", "p"] -[59.06892819404624, "o", "e"] -[59.09892819404624, "o", "r"] -[59.12892819404624, "o", "a"] -[59.15892819404624, "o", "t"] -[59.18892819404624, "o", "u"] -[59.21892819404624, "o", "r"] -[59.24892819404624, "o", "e"] -[59.278928194046244, "o", "m"] -[59.308928194046246, "o", "a"] -[59.33892819404625, "o", "x"] -[59.36892819404625, "o", "\r\n "] -[59.39892819404625, "o", "F"] -[59.42892819404625, "o", "R"] -[59.45892819404625, "o", "O"] -[59.48892819404625, "o", "M"] -[59.518928194046254, "o", " "] -[59.548928194046255, "o", "\\"] -[59.578928194046256, "o", "\""] -[59.60892819404626, "o", "s"] -[59.63892819404626, "o", "p"] -[59.66892819404626, "o", "l"] -[59.69892819404626, "o", "i"] -[59.72892819404626, "o", "t"] -[59.75892819404626, "o", "g"] -[59.788928194046264, "o", "r"] -[59.818928194046265, "o", "a"] -[59.848928194046266, "o", "p"] -[59.87892819404627, "o", "h"] -[59.90892819404627, "o", "-"] -[59.93892819404627, "o", "d"] -[59.96892819404627, "o", "e"] -[59.99892819404627, "o", "m"] -[60.02892819404627, "o", "o"] -[60.058928194046274, "o", "/"] -[60.088928194046275, "o", "w"] -[60.118928194046276, "o", "e"] -[60.14892819404628, "o", "a"] -[60.17892819404628, "o", "t"] -[60.20892819404628, "o", "h"] -[60.23892819404628, "o", "e"] -[60.26892819404628, "o", "r"] -[60.29892819404628, "o", ":"] -[60.328928194046284, "o", "i"] -[60.358928194046285, "o", "n"] -[60.38892819404629, "o", "i"] -[60.41892819404629, "o", "t"] -[60.44892819404629, "o", "i"] -[60.47892819404629, "o", "a"] -[60.50892819404629, "o", "l"] -[60.53892819404629, "o", "_"] -[60.56892819404629, "o", "d"] -[60.598928194046294, "o", "a"] -[60.628928194046296, "o", "t"] -[60.6589281940463, "o", "a"] -[60.6889281940463, "o", "\\"] -[60.7189281940463, "o", "\""] -[60.7489281940463, "o", "."] -[60.7789281940463, "o", "r"] -[60.8089281940463, "o", "d"] -[60.838928194046304, "o", "u"] -[60.868928194046305, "o", "\r\n "] -[60.898928194046306, "o", "W"] -[60.92892819404631, "o", "H"] -[60.95892819404631, "o", "E"] -[60.98892819404631, "o", "R"] -[61.01892819404631, "o", "E"] -[61.04892819404631, "o", " "] -[61.07892819404631, "o", "d"] -[61.108928194046314, "o", "a"] -[61.138928194046315, "o", "t"] -[61.168928194046316, "o", "e"] -[61.19892819404632, "o", "_"] -[61.22892819404632, "o", "t"] -[61.25892819404632, "o", "r"] -[61.28892819404632, "o", "u"] -[61.31892819404632, "o", "n"] -[61.34892819404632, "o", "c"] -[61.378928194046324, "o", "("] -[61.408928194046325, "o", "'"] -[61.438928194046326, "o", "m"] -[61.46892819404633, "o", "o"] -[61.49892819404633, "o", "n"] -[61.52892819404633, "o", "t"] -[61.55892819404633, "o", "h"] -[61.58892819404633, "o", "'"] -[61.61892819404633, "o", ","] -[61.648928194046334, "o", " "] -[61.678928194046335, "o", "d"] -[61.70892819404634, "o", "a"] -[61.73892819404634, "o", "t"] -[61.76892819404634, "o", "e"] -[61.79892819404634, "o", ")"] -[61.82892819404634, "o", " "] -[61.85892819404634, "o", "="] -[61.88892819404634, "o", " "] -[61.918928194046345, "o", "'"] -[61.948928194046346, "o", "2"] -[61.97892819404635, "o", "0"] -[62.00892819404635, "o", "0"] -[62.03892819404635, "o", "9"] -[62.06892819404635, "o", "-"] -[62.09892819404635, "o", "0"] -[62.12892819404635, "o", "8"] -[62.158928194046354, "o", "-"] -[62.188928194046355, "o", "0"] -[62.218928194046356, "o", "1"] -[62.24892819404636, "o", "'"] -[62.27892819404636, "o", "\""] -[62.30892819404636, "o", "\r\n"] -[62.33892819404636, "o", "\u001b[0m"] -[62.36892819404636, "o", "\r\n"] -[63.36892819404636, "o", "2009-08-01 00:00:00 73 91.9\r\n2009-08-02 00:00:00 73.9 82.9\r\n2009-08-03 00:00:00 70 95\r\n2009-08-04 00:00:00 66.9 95\r\n2009-08-05 00:00:00 72 96.1\r\n2009-08-06 00:00:00 70 84.9\r\n2009-08-07 00:00:00 68 88\r\n2009-08-08 00:00:00 69.1 91\r\n2009-08-09 00:00:00 70 99\r\n2009-08-10 00:00:00 72 99\r\n"] -[63.39892819404636, "o", "\u001b[1m"] -[63.428928194046364, "o", "\u001b[36m"] -[63.458928194046365, "o", "\u001b[91m"] -[63.488928194046366, "o", "$"] -[63.51892819404637, "o", " "] -[63.54892819404637, "o", "\u001b[0m"] -[68.57892819404637, "o", "\u001b[H"] -[68.60892819404637, "o", "\u001b[J"] -[68.63892819404637, "o", "\u001b[1m\u001b[36m\u001b[91m$ # The query API also supports running one-off Splitfile commands against a repository,"] -[68.66892819404637, "o", "\r\n"] -[68.69892819404637, "o", "$ # creating new images that can be pulled. sgr handles authentication for this automatically.\r\n"] -[68.72892819404638, "o", "$"] -[68.75892819404638, "o", " "] -[68.78892819404638, "o", "c"] -[68.81892819404638, "o", "a"] -[68.84892819404638, "o", "t"] -[68.87892819404638, "o", " "] -[68.90892819404638, "o", "r"] -[68.93892819404638, "o", "e"] -[68.96892819404638, "o", "q"] -[68.99892819404639, "o", "u"] -[69.02892819404639, "o", "e"] -[69.05892819404639, "o", "s"] -[69.08892819404639, "o", "t"] -[69.11892819404639, "o", "_"] -[69.14892819404639, "o", "1"] -[69.17892819404639, "o", "."] -[69.2089281940464, "o", "j"] -[69.2389281940464, "o", "s"] -[69.2689281940464, "o", "o"] -[69.2989281940464, "o", "n"] -[69.3289281940464, "o", "\r\n"] -[69.3589281940464, "o", "$"] -[69.3889281940464, "o", " "] -[69.4189281940464, "o", "s"] -[69.4489281940464, "o", "g"] -[69.4789281940464, "o", "r"] -[69.5089281940464, "o", " "] -[69.5389281940464, "o", "c"] -[69.5689281940464, "o", "l"] -[69.59892819404641, "o", "o"] -[69.62892819404641, "o", "u"] -[69.65892819404641, "o", "d"] -[69.68892819404641, "o", " "] -[69.71892819404641, "o", "c"] -[69.74892819404641, "o", "u"] -[69.77892819404642, "o", "r"] -[69.80892819404642, "o", "l"] -[69.83892819404642, "o", " "] -[69.86892819404642, "o", "-"] -[69.89892819404642, "o", "t"] -[69.92892819404642, "o", " "] -[69.95892819404642, "o", "s"] -[69.98892819404642, "o", "p"] -[70.01892819404642, "o", "l"] -[70.04892819404643, "o", "i"] -[70.07892819404643, "o", "t"] -[70.10892819404643, "o", "f"] -[70.13892819404643, "o", "i"] -[70.16892819404643, "o", "l"] -[70.19892819404643, "o", "e"] -[70.22892819404643, "o", " "] -[70.25892819404643, "o", "s"] -[70.28892819404643, "o", "p"] -[70.31892819404644, "o", "l"] -[70.34892819404644, "o", "i"] -[70.37892819404644, "o", "t"] -[70.40892819404644, "o", "g"] -[70.43892819404644, "o", "r"] -[70.46892819404644, "o", "a"] -[70.49892819404644, "o", "p"] -[70.52892819404644, "o", "h"] -[70.55892819404644, "o", "-"] -[70.58892819404645, "o", "d"] -[70.61892819404645, "o", "e"] -[70.64892819404645, "o", "m"] -[70.67892819404645, "o", "o"] -[70.70892819404645, "o", "/"] -[70.73892819404645, "o", "w"] -[70.76892819404645, "o", "e"] -[70.79892819404645, "o", "a"] -[70.82892819404645, "o", "t"] -[70.85892819404646, "o", "h"] -[70.88892819404646, "o", "e"] -[70.91892819404646, "o", "r"] -[70.94892819404646, "o", ":"] -[70.97892819404646, "o", "i"] -[71.00892819404646, "o", "n"] -[71.03892819404646, "o", "i"] -[71.06892819404646, "o", "t"] -[71.09892819404647, "o", "i"] -[71.12892819404647, "o", "a"] -[71.15892819404647, "o", "l"] -[71.18892819404647, "o", "_"] -[71.21892819404647, "o", "d"] -[71.24892819404647, "o", "a"] -[71.27892819404647, "o", "t"] -[71.30892819404647, "o", "a"] -[71.33892819404647, "o", " "] -[71.36892819404648, "o", "@"] -[71.39892819404648, "o", "r"] -[71.42892819404648, "o", "e"] -[71.45892819404648, "o", "q"] -[71.48892819404648, "o", "u"] -[71.51892819404648, "o", "e"] -[71.54892819404648, "o", "s"] -[71.57892819404648, "o", "t"] -[71.60892819404648, "o", "_"] -[71.63892819404649, "o", "1"] -[71.66892819404649, "o", "."] -[71.69892819404649, "o", "j"] -[71.72892819404649, "o", "s"] -[71.75892819404649, "o", "o"] -[71.78892819404649, "o", "n"] -[71.81892819404649, "o", "\r\n"] -[71.8489281940465, "o", "\u001b[0m"] -[71.8789281940465, "o", "\r\n"] -[71.88066841125536, "o", "{\"command\": \"FROM splitgraph/domestic_us_flights:latest IMPORT {SELECT fly_month, SUM(passengers) AS total_passengers FROM flights WHERE origin_airport = 'RDU' OR destination_airport = 'RDU' GROUP BY fly_month ORDER BY fly_month} AS flights\",\r\n \"tag\": \"with_flight_data\"}\r\n\r\n"] -[72.88066841125536, "o", "{\"image_hash\":\"dae5c3173253f7d0f0bf6ecbdb7f28ffd924235602775d2d226cc541f9858c9c\"}"] -[72.91066841125536, "o", "\u001b[1m"] -[72.94066841125536, "o", "\u001b[36m"] -[72.97066841125536, "o", "\u001b[91m"] -[73.00066841125536, "o", "$"] -[73.03066841125536, "o", " "] -[73.06066841125536, "o", "\u001b[0m"] -[78.09066841125536, "o", "\u001b[H"] -[78.12066841125537, "o", "\u001b[J"] -[78.15066841125537, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Run another command against the new layer to join the two datasets"] -[78.18066841125537, "o", "\r\n"] -[78.21066841125537, "o", "$"] -[78.24066841125537, "o", " "] -[78.27066841125537, "o", "c"] -[78.30066841125537, "o", "a"] -[78.33066841125537, "o", "t"] -[78.36066841125538, "o", " "] -[78.39066841125538, "o", "r"] -[78.42066841125538, "o", "e"] -[78.45066841125538, "o", "q"] -[78.48066841125538, "o", "u"] -[78.51066841125538, "o", "e"] -[78.54066841125538, "o", "s"] -[78.57066841125538, "o", "t"] -[78.60066841125538, "o", "_"] -[78.63066841125539, "o", "2"] -[78.66066841125539, "o", "."] -[78.69066841125539, "o", "j"] -[78.72066841125539, "o", "s"] -[78.75066841125539, "o", "o"] -[78.78066841125539, "o", "n"] -[78.81066841125539, "o", "\r\n"] -[78.8406684112554, "o", "$"] -[78.8706684112554, "o", " "] -[78.9006684112554, "o", "s"] -[78.9306684112554, "o", "g"] -[78.9606684112554, "o", "r"] -[78.9906684112554, "o", " "] -[79.0206684112554, "o", "c"] -[79.0506684112554, "o", "l"] -[79.0806684112554, "o", "o"] -[79.1106684112554, "o", "u"] -[79.1406684112554, "o", "d"] -[79.1706684112554, "o", " "] -[79.2006684112554, "o", "c"] -[79.23066841125541, "o", "u"] -[79.26066841125541, "o", "r"] -[79.29066841125541, "o", "l"] -[79.32066841125541, "o", " "] -[79.35066841125541, "o", "-"] -[79.38066841125541, "o", "t"] -[79.41066841125541, "o", " "] -[79.44066841125542, "o", "s"] -[79.47066841125542, "o", "p"] -[79.50066841125542, "o", "l"] -[79.53066841125542, "o", "i"] -[79.56066841125542, "o", "t"] -[79.59066841125542, "o", "f"] -[79.62066841125542, "o", "i"] -[79.65066841125542, "o", "l"] -[79.68066841125543, "o", "e"] -[79.71066841125543, "o", " "] -[79.74066841125543, "o", "s"] -[79.77066841125543, "o", "p"] -[79.80066841125543, "o", "l"] -[79.83066841125543, "o", "i"] -[79.86066841125543, "o", "t"] -[79.89066841125543, "o", "g"] -[79.92066841125543, "o", "r"] -[79.95066841125544, "o", "a"] -[79.98066841125544, "o", "p"] -[80.01066841125544, "o", "h"] -[80.04066841125544, "o", "-"] -[80.07066841125544, "o", "d"] -[80.10066841125544, "o", "e"] -[80.13066841125544, "o", "m"] -[80.16066841125544, "o", "o"] -[80.19066841125544, "o", "/"] -[80.22066841125545, "o", "w"] -[80.25066841125545, "o", "e"] -[80.28066841125545, "o", "a"] -[80.31066841125545, "o", "t"] -[80.34066841125545, "o", "h"] -[80.37066841125545, "o", "e"] -[80.40066841125545, "o", "r"] -[80.43066841125545, "o", ":"] -[80.46066841125545, "o", "w"] -[80.49066841125546, "o", "i"] -[80.52066841125546, "o", "t"] -[80.55066841125546, "o", "h"] -[80.58066841125546, "o", "_"] -[80.61066841125546, "o", "f"] -[80.64066841125546, "o", "l"] -[80.67066841125546, "o", "i"] -[80.70066841125546, "o", "g"] -[80.73066841125546, "o", "h"] -[80.76066841125547, "o", "t"] -[80.79066841125547, "o", "_"] -[80.82066841125547, "o", "d"] -[80.85066841125547, "o", "a"] -[80.88066841125547, "o", "t"] -[80.91066841125547, "o", "a"] -[80.94066841125547, "o", " "] -[80.97066841125547, "o", "@"] -[81.00066841125548, "o", "r"] -[81.03066841125548, "o", "e"] -[81.06066841125548, "o", "q"] -[81.09066841125548, "o", "u"] -[81.12066841125548, "o", "e"] -[81.15066841125548, "o", "s"] -[81.18066841125548, "o", "t"] -[81.21066841125548, "o", "_"] -[81.24066841125548, "o", "2"] -[81.27066841125549, "o", "."] -[81.30066841125549, "o", "j"] -[81.33066841125549, "o", "s"] -[81.36066841125549, "o", "o"] -[81.39066841125549, "o", "n"] -[81.42066841125549, "o", "\r\n"] -[81.45066841125549, "o", "\u001b[0m"] -[81.4806684112555, "o", "\r\n"] -[81.48233066558899, "o", "{\"command\": \"SQL CREATE TABLE rdu_flights_weather AS ( WITH monthly_summary AS (SELECT date_trunc ('month', date) AS month, AVG(temperaturemin) AS tmin_avg, AVG(temperaturemax) AS tmax_avg FROM rdu GROUP BY month) SELECT w.month, w.tmin_avg, w.tmax_avg, f.total_passengers FROM monthly_summary w JOIN flights f ON w.month = f.fly_month)\",\r\n \"tag\": \"joined_data\"}\r\n\r\n"] -[82.45420323371948, "o", "{\"image_hash\":\"887d5b30bbd504be60d1de20f9a3837950400b97d715efd6225f71d6ed849c7f\"}"] -[82.48420323371948, "o", "\u001b[1m"] -[82.51420323371948, "o", "\u001b[36m"] -[82.54420323371949, "o", "\u001b[91m"] -[82.57420323371949, "o", "$"] -[82.60420323371949, "o", " "] -[82.63420323371949, "o", "\u001b[0m"] -[87.66420323371949, "o", "\u001b[H"] -[87.69420323371949, "o", "\u001b[J"] -[87.72420323371949, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Pull the dataset and check out the new image"] -[87.7542032337195, "o", "\r\n"] -[87.7842032337195, "o", "$"] -[87.8142032337195, "o", " "] -[87.8442032337195, "o", "s"] -[87.8742032337195, "o", "g"] -[87.9042032337195, "o", "r"] -[87.9342032337195, "o", " "] -[87.9642032337195, "o", "p"] -[87.9942032337195, "o", "u"] -[88.0242032337195, "o", "l"] -[88.0542032337195, "o", "l"] -[88.0842032337195, "o", " "] -[88.11420323371951, "o", "w"] -[88.14420323371951, "o", "e"] -[88.17420323371951, "o", "a"] -[88.20420323371951, "o", "t"] -[88.23420323371951, "o", "h"] -[88.26420323371951, "o", "e"] -[88.29420323371951, "o", "r"] -[88.32420323371952, "o", "\r\n"] -[88.35420323371952, "o", "$"] -[88.38420323371952, "o", " "] -[88.41420323371952, "o", "s"] -[88.44420323371952, "o", "g"] -[88.47420323371952, "o", "r"] -[88.50420323371952, "o", " "] -[88.53420323371952, "o", "c"] -[88.56420323371952, "o", "h"] -[88.59420323371953, "o", "e"] -[88.62420323371953, "o", "c"] -[88.65420323371953, "o", "k"] -[88.68420323371953, "o", "o"] -[88.71420323371953, "o", "u"] -[88.74420323371953, "o", "t"] -[88.77420323371953, "o", " "] -[88.80420323371953, "o", "w"] -[88.83420323371953, "o", "e"] -[88.86420323371954, "o", "a"] -[88.89420323371954, "o", "t"] -[88.92420323371954, "o", "h"] -[88.95420323371954, "o", "e"] -[88.98420323371954, "o", "r"] -[89.01420323371954, "o", ":"] -[89.04420323371954, "o", "j"] -[89.07420323371954, "o", "o"] -[89.10420323371955, "o", "i"] -[89.13420323371955, "o", "n"] -[89.16420323371955, "o", "e"] -[89.19420323371955, "o", "d"] -[89.22420323371955, "o", "_"] -[89.25420323371955, "o", "d"] -[89.28420323371955, "o", "a"] -[89.31420323371955, "o", "t"] -[89.34420323371955, "o", "a"] -[89.37420323371956, "o", "\r\n"] -[89.40420323371956, "o", "\u001b[0m"] -[89.43420323371956, "o", "\r\n"] -[89.64757737159798, "o", "Gathering remote metadata...\r\n"] -[90.64757737159798, "o", "Fetched metadata for 2 images, 5 tables, 2 objects and 2 tags.\r\n"] -[90.90104850769112, "o", "Need to download 1 object (3.02 KiB), cache occupancy: 0.00 B/10.00 GiB\r\n"] -[90.95445426940987, "o", "Fetching 1 object, total size 3.02 KiB\r\n"] -[90.95714386940071, "o", "Getting download URLs from registry PostgresEngine data.splitgraph.com (ca446922b2844ed19f8e6c8b35edbe31@data.splitgraph.com:5432/sgregistry)...\r\n"] -[91.80121621131966, "o", "\r 0%| | 0/1 [00:00 4a832e4a1b62\r\n"] -[34.739219465255815, "o", "\u001b[1m\r\nStep 2/3 : FROM splitgraph/2016_election IMPORT { SELECT lpad(co...\u001b[0m\r\n"] -[34.74032191276558, "o", "Resolving repository splitgraph/2016_election\r\n"] -[35.35426954269417, "o", "Gathering remote metadata...\r\n"] -[36.35426954269417, "o", "Fetched metadata for 1 image, 1 table, 20 objects and 1 tag.\r\n"] -[36.368345537185746, "o", "Importing 1 table from splitgraph/2016_election:3835145ada3f into qoz_vote_fraction\r\n"] -[37.368345537185746, "o", "Processing table sg_tmp_8ea1fea4a0b59001d666228e12d919c7\r\n"] -[37.66517499923714, "o", " ---> 105f0cc16f07\r\n"] -[37.668986597061235, "o", "\u001b[1m\r\nStep 3/3 : SQL { CREATE TABLE qoz_vote_fraction AS SELECT ...\u001b[0m\r\n"] -[37.67980364799507, "o", "Executing SQL...\r\n"] -[37.69306138992317, "o", "Committing qoz_vote_fraction...\r\n"] -[37.72216848373421, "o", "Processing table qoz_vote_fraction\r\n"] -[37.83949378967293, "o", " ---> 2fd53f55d05e\r\n"] -[37.84285072326668, "o", "Successfully built qoz_vote_fraction:2fd53f55d05e.\r\n"] -[37.87285072326668, "o", "\u001b[1m"] -[37.90285072326668, "o", "\u001b[36m"] -[37.93285072326668, "o", "\u001b[91m"] -[37.96285072326668, "o", "$"] -[37.992850723266685, "o", " "] -[38.022850723266686, "o", "\u001b[0m"] -[44.03, "o", "\u001b[H"] -[44.06, "o", "\u001b[J"] -[44.09, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the dataset metadata"] -[44.120000000000005, "o", "\r\n"] -[44.150000000000006, "o", "$"] -[44.18000000000001, "o", " "] -[44.21000000000001, "o", "s"] -[44.24000000000001, "o", "g"] -[44.27000000000001, "o", "r"] -[44.30000000000001, "o", " "] -[44.33000000000001, "o", "s"] -[44.360000000000014, "o", "h"] -[44.390000000000015, "o", "o"] -[44.420000000000016, "o", "w"] -[44.45000000000002, "o", " "] -[44.48000000000002, "o", "q"] -[44.51000000000002, "o", "o"] -[44.54000000000002, "o", "z"] -[44.57000000000002, "o", "_"] -[44.60000000000002, "o", "v"] -[44.630000000000024, "o", "o"] -[44.660000000000025, "o", "t"] -[44.690000000000026, "o", "e"] -[44.72000000000003, "o", "_"] -[44.75000000000003, "o", "f"] -[44.78000000000003, "o", "r"] -[44.81000000000003, "o", "a"] -[44.84000000000003, "o", "c"] -[44.87000000000003, "o", "t"] -[44.900000000000034, "o", "i"] -[44.930000000000035, "o", "o"] -[44.960000000000036, "o", "n"] -[44.99000000000004, "o", "\r\n"] -[45.02000000000004, "o", "$"] -[45.05000000000004, "o", " "] -[45.08000000000004, "o", "s"] -[45.11000000000004, "o", "g"] -[45.14000000000004, "o", "r"] -[45.170000000000044, "o", " "] -[45.200000000000045, "o", "t"] -[45.23000000000005, "o", "a"] -[45.26000000000005, "o", "b"] -[45.29000000000005, "o", "l"] -[45.32000000000005, "o", "e"] -[45.35000000000005, "o", " "] -[45.38000000000005, "o", "q"] -[45.41000000000005, "o", "o"] -[45.440000000000055, "o", "z"] -[45.470000000000056, "o", "_"] -[45.50000000000006, "o", "v"] -[45.53000000000006, "o", "o"] -[45.56000000000006, "o", "t"] -[45.59000000000006, "o", "e"] -[45.62000000000006, "o", "_"] -[45.65000000000006, "o", "f"] -[45.680000000000064, "o", "r"] -[45.710000000000065, "o", "a"] -[45.740000000000066, "o", "c"] -[45.77000000000007, "o", "t"] -[45.80000000000007, "o", "i"] -[45.83000000000007, "o", "o"] -[45.86000000000007, "o", "n"] -[45.89000000000007, "o", " "] -[45.92000000000007, "o", "q"] -[45.950000000000074, "o", "o"] -[45.980000000000075, "o", "z"] -[46.010000000000076, "o", "_"] -[46.04000000000008, "o", "v"] -[46.07000000000008, "o", "o"] -[46.10000000000008, "o", "t"] -[46.13000000000008, "o", "e"] -[46.16000000000008, "o", "_"] -[46.19000000000008, "o", "f"] -[46.220000000000084, "o", "r"] -[46.250000000000085, "o", "a"] -[46.280000000000086, "o", "c"] -[46.31000000000009, "o", "t"] -[46.34000000000009, "o", "i"] -[46.37000000000009, "o", "o"] -[46.40000000000009, "o", "n"] -[46.43000000000009, "o", "\r\n"] -[46.46000000000009, "o", "\u001b[0m"] -[46.490000000000094, "o", "\r\n"] -[46.6991999053956, "o", "Image qoz_vote_fraction:2fd53f55d05e97d62ffba88cb98f010eb4a3a42143b94711bc7a19338157748e\r\n"] -[46.69921730995188, "o", " CREATE TABLE qoz_vote_fraction AS SELECT v.county_id, COALESCE(qoz_tract_fraction, 0) AS qoz_tract_fraction, trump_vote_fraction, clinton_vote_fraction, total_votes FROM vote_fraction v LEFT JOIN qoz_tract_fraction q ON q.county_id = v.county_id WHERE v.county_id IS NOT NULL; ALTER TABLE qoz_vote_fraction ADD PRIMARY KEY (county_id);\r\nCreated at 2021-03-12T17:58:20.383854\r\n"] -[46.7012967967988, "o", "Size: 220.67 KiB\r\n"] -[46.701308479309176, "o", "Parent: 105f0cc16f0756e1fab3e8e4a9cb50d704b35dbad72fdf6513e3862c84353562\r\n\r\nTables:\r\n"] -[46.702306737899875, "o", " qoz_tract_fraction\r\n qoz_vote_fraction\r\n"] -[46.702320089340304, "o", " vote_fraction\r\n"] -[46.907079210281466, "o", "Table qoz_vote_fraction:2fd53f55d05e97d62ffba88cb98f010eb4a3a42143b94711bc7a19338157748e/qoz_vote_fraction\r\n\r\n"] -[46.908645381927585, "o", "Size: 107.08 KiB\r\n"] -[46.909693470001315, "o", "Rows: 3114\r\nColumns: \r\n"] -[46.90970467567453, "o", " county_id (text, PK)\r\n qoz_tract_fraction (numeric)\r\n trump_vote_fraction (numeric)\r\n clinton_vote_fraction (numeric)\r\n"] -[46.91018318176279, "o", " total_votes (numeric)\r\n\r\nObjects: \r\n"] -[46.910202970504855, "o", " oc423b7e057e6f48cb616bea1291248f22eafeeb17231ae9b8a0de978cbeccf\r\n"] -[46.940202970504856, "o", "\u001b[1m"] -[46.97020297050486, "o", "\u001b[36m"] -[47.00020297050486, "o", "\u001b[91m"] -[47.03020297050486, "o", "$"] -[47.06020297050486, "o", " "] -[47.09020297050486, "o", "\u001b[0m"] -[57.53, "o", "\u001b[H"] -[57.56, "o", "\u001b[J"] -[57.59, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get the data for New York County (FIPS 36061)"] -[57.620000000000005, "o", "\r\n"] -[57.650000000000006, "o", "$"] -[57.68000000000001, "o", " "] -[57.71000000000001, "o", "s"] -[57.74000000000001, "o", "g"] -[57.77000000000001, "o", "r"] -[57.80000000000001, "o", " "] -[57.83000000000001, "o", "s"] -[57.860000000000014, "o", "q"] -[57.890000000000015, "o", "l"] -[57.920000000000016, "o", " "] -[57.95000000000002, "o", "-"] -[57.98000000000002, "o", "s"] -[58.01000000000002, "o", " "] -[58.04000000000002, "o", "q"] -[58.07000000000002, "o", "o"] -[58.10000000000002, "o", "z"] -[58.130000000000024, "o", "_"] -[58.160000000000025, "o", "v"] -[58.190000000000026, "o", "o"] -[58.22000000000003, "o", "t"] -[58.25000000000003, "o", "e"] -[58.28000000000003, "o", "_"] -[58.31000000000003, "o", "f"] -[58.34000000000003, "o", "r"] -[58.37000000000003, "o", "a"] -[58.400000000000034, "o", "c"] -[58.430000000000035, "o", "t"] -[58.460000000000036, "o", "i"] -[58.49000000000004, "o", "o"] -[58.52000000000004, "o", "n"] -[58.55000000000004, "o", " "] -[58.58000000000004, "o", "\\"] -[58.61000000000004, "o", "\r\n "] -[58.64000000000004, "o", "\""] -[58.670000000000044, "o", "S"] -[58.700000000000045, "o", "E"] -[58.73000000000005, "o", "L"] -[58.76000000000005, "o", "E"] -[58.79000000000005, "o", "C"] -[58.82000000000005, "o", "T"] -[58.85000000000005, "o", " "] -[58.88000000000005, "o", "r"] -[58.91000000000005, "o", "o"] -[58.940000000000055, "o", "w"] -[58.970000000000056, "o", "_"] -[59.00000000000006, "o", "t"] -[59.03000000000006, "o", "o"] -[59.06000000000006, "o", "_"] -[59.09000000000006, "o", "j"] -[59.12000000000006, "o", "s"] -[59.15000000000006, "o", "o"] -[59.180000000000064, "o", "n"] -[59.210000000000065, "o", "("] -[59.240000000000066, "o", "d"] -[59.27000000000007, "o", ")"] -[59.30000000000007, "o", " "] -[59.33000000000007, "o", "F"] -[59.36000000000007, "o", "R"] -[59.39000000000007, "o", "O"] -[59.42000000000007, "o", "M"] -[59.450000000000074, "o", " "] -[59.480000000000075, "o", "("] -[59.510000000000076, "o", "S"] -[59.54000000000008, "o", "E"] -[59.57000000000008, "o", "L"] -[59.60000000000008, "o", "E"] -[59.63000000000008, "o", "C"] -[59.66000000000008, "o", "T"] -[59.69000000000008, "o", " "] -[59.720000000000084, "o", "*"] -[59.750000000000085, "o", " "] -[59.780000000000086, "o", "F"] -[59.81000000000009, "o", "R"] -[59.84000000000009, "o", "O"] -[59.87000000000009, "o", "M"] -[59.90000000000009, "o", " "] -[59.93000000000009, "o", "q"] -[59.96000000000009, "o", "o"] -[59.990000000000094, "o", "z"] -[60.020000000000095, "o", "_"] -[60.0500000000001, "o", "v"] -[60.0800000000001, "o", "o"] -[60.1100000000001, "o", "t"] -[60.1400000000001, "o", "e"] -[60.1700000000001, "o", "_"] -[60.2000000000001, "o", "f"] -[60.2300000000001, "o", "r"] -[60.260000000000105, "o", "a"] -[60.290000000000106, "o", "c"] -[60.32000000000011, "o", "t"] -[60.35000000000011, "o", "i"] -[60.38000000000011, "o", "o"] -[60.41000000000011, "o", "n"] -[60.44000000000011, "o", " "] -[60.47000000000011, "o", "W"] -[60.500000000000114, "o", "H"] -[60.530000000000115, "o", "E"] -[60.560000000000116, "o", "R"] -[60.59000000000012, "o", "E"] -[60.62000000000012, "o", " "] -[60.65000000000012, "o", "c"] -[60.68000000000012, "o", "o"] -[60.71000000000012, "o", "u"] -[60.74000000000012, "o", "n"] -[60.770000000000124, "o", "t"] -[60.800000000000125, "o", "y"] -[60.830000000000126, "o", "_"] -[60.86000000000013, "o", "i"] -[60.89000000000013, "o", "d"] -[60.92000000000013, "o", " "] -[60.95000000000013, "o", "="] -[60.98000000000013, "o", " "] -[61.01000000000013, "o", "'"] -[61.040000000000134, "o", "3"] -[61.070000000000135, "o", "6"] -[61.100000000000136, "o", "0"] -[61.13000000000014, "o", "6"] -[61.16000000000014, "o", "1"] -[61.19000000000014, "o", "'"] -[61.22000000000014, "o", ")"] -[61.25000000000014, "o", " "] -[61.28000000000014, "o", "d"] -[61.310000000000144, "o", "\""] -[61.340000000000146, "o", "\r\n"] -[61.37000000000015, "o", "\u001b[0m"] -[61.40000000000015, "o", "\r\n"] -[61.603245162964015, "o", "{'county_id': '36061', 'qoz_tract_fraction': 0.125, 'trump_vote_fraction': 0.08865095716546313, 'clinton_vote_fraction': 0.7905445350569275, 'total_votes': 732423}\r\n"] -[61.633245162964016, "o", "\u001b[1m"] -[61.66324516296402, "o", "\u001b[36m"] -[61.69324516296402, "o", "\u001b[91m"] -[61.72324516296402, "o", "$"] -[61.75324516296402, "o", " "] -[61.78324516296402, "o", "\u001b[0m"] -[66.81324516296402, "o", "\u001b[H"] -[66.84324516296402, "o", "\u001b[J"] -[66.87324516296403, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Do a quick analysis of the dataset."] -[66.90324516296403, "o", "\r\n"] -[66.93324516296403, "o", "$"] -[66.96324516296403, "o", " "] -[66.99324516296403, "o", "c"] -[67.02324516296403, "o", "a"] -[67.05324516296403, "o", "t"] -[67.08324516296403, "o", " "] -[67.11324516296403, "o", "a"] -[67.14324516296404, "o", "n"] -[67.17324516296404, "o", "a"] -[67.20324516296404, "o", "l"] -[67.23324516296404, "o", "y"] -[67.26324516296404, "o", "z"] -[67.29324516296404, "o", "e"] -[67.32324516296404, "o", "."] -[67.35324516296404, "o", "p"] -[67.38324516296404, "o", "y"] -[67.41324516296405, "o", "\r\n"] -[67.44324516296405, "o", "$"] -[67.47324516296405, "o", " "] -[67.50324516296405, "o", "p"] -[67.53324516296405, "o", "y"] -[67.56324516296405, "o", "t"] -[67.59324516296405, "o", "h"] -[67.62324516296405, "o", "o"] -[67.65324516296405, "o", "n"] -[67.68324516296406, "o", " "] -[67.71324516296406, "o", "a"] -[67.74324516296406, "o", "n"] -[67.77324516296406, "o", "a"] -[67.80324516296406, "o", "l"] -[67.83324516296406, "o", "y"] -[67.86324516296406, "o", "z"] -[67.89324516296406, "o", "e"] -[67.92324516296407, "o", "."] -[67.95324516296407, "o", "p"] -[67.98324516296407, "o", "y"] -[68.01324516296407, "o", "\r\n"] -[68.04324516296407, "o", "\u001b[0m"] -[68.07324516296407, "o", "\r\n"] -[68.07500326156637, "o", "import scipy.stats as ss"] -[68.07506286621114, "o", "\r\n\r\nfrom splitgraph.core.repository import Repository\r\nfrom splitgraph.ingestion.pandas import sql_to_df\r\n\r\n# Load the dataset we created into Pandas\r\nimage = Repository(\"\", \"qoz_vote_fraction\").images[\"latest\"]\r\ndf = sql_to_df(\"SELECT * FROM qoz_vote_fraction\", image=image, use_lq=True)\r\nprint(df)\r\n\r\n# Is there a correlation between the Trump vote fraction and the fraction of\r\n# QOZ-qualified tracts in every county?\r\nprint(ss.linregress(df[\"trump_vote_fraction\"], df[\"qoz_tract_fraction\"]))\r\n"] -[69.07506286621114, "o", " county_id qoz_tract_fraction trump_vote_fraction clinton_vote_fraction total_votes\r\n0 01001 0.083333 0.491135 0.160432 37000.0\r\n1 01003 0.187500 0.496056 0.125629 146925.0\r\n2 01005 0.111111 0.330305 0.294998 16512.0\r\n3 01007 0.250000 0.485132 0.134927 13889.0\r\n4 01009 0.111111 "] -[69.07507335662862, "o", "0.588017 0.055430 38788.0\r\n... ... ... ... ... ...\r\n3109 56037 0.083333 0.709515 0.188616 17130.0\r\n3110 56039 0.000000 0.310525 0.579235 12627.0\r\n3111 56041 0.333333 0.726564 0.141913 8470.0\r\n3112 56043 0.333333 0.763241 0.139486 3814.0\r\n3"] -[69.07508098602315, "o", "113 56045 0.000000 0.860182 0.084799 3526.0\r\n\r\n[3114 rows x 5 columns]\r\n"] -[69.07734524726888, "o", "LinregressResult(slope=-0.06217947076052383, intercept=0.1781160377798594, rvalue=-0.05782420568050623, pvalue=0.0012457930627282692, stderr=0.019243775109388402, intercept_stderr=0.012338526356298417)\r\n"] -[69.10734524726888, "o", "\u001b[1m"] -[69.13734524726888, "o", "\u001b[36m"] -[69.16734524726888, "o", "\u001b[91m"] -[69.19734524726888, "o", "$"] -[69.22734524726889, "o", " "] -[69.25734524726889, "o", "\u001b[0m"] \ No newline at end of file +[30.47819975852974, "o", "Executing Splitfile qoz_vote_fraction.splitfile with arguments {}\r\n"] +[30.50819975852974, "o", "\u001b[1m"] +[30.538199758529743, "o", "\u001b[36m"] +[30.568199758529744, "o", "\u001b[91m"] +[30.598199758529745, "o", "$"] +[30.628199758529746, "o", " "] +[30.658199758529747, "o", "\u001b[0m"] +[35.68819975852975, "o", "\u001b[H"] +[35.71819975852975, "o", "\u001b[J"] +[35.74819975852975, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Inspect the dataset metadata"] +[35.77819975852975, "o", "\r\n"] +[35.80819975852975, "o", "$"] +[35.838199758529754, "o", " "] +[35.868199758529755, "o", "s"] +[35.898199758529756, "o", "g"] +[35.92819975852976, "o", "r"] +[35.95819975852976, "o", " "] +[35.98819975852976, "o", "s"] +[36.01819975852976, "o", "h"] +[36.04819975852976, "o", "o"] +[36.07819975852976, "o", "w"] +[36.108199758529764, "o", " "] +[36.138199758529765, "o", "q"] +[36.16819975852977, "o", "o"] +[36.19819975852977, "o", "z"] +[36.22819975852977, "o", "_"] +[36.25819975852977, "o", "v"] +[36.28819975852977, "o", "o"] +[36.31819975852977, "o", "t"] +[36.34819975852977, "o", "e"] +[36.378199758529774, "o", "_"] +[36.408199758529776, "o", "f"] +[36.43819975852978, "o", "r"] +[36.46819975852978, "o", "a"] +[36.49819975852978, "o", "c"] +[36.52819975852978, "o", "t"] +[36.55819975852978, "o", "i"] +[36.58819975852978, "o", "o"] +[36.618199758529784, "o", "n"] +[36.648199758529785, "o", "\r\n"] +[36.678199758529786, "o", "$"] +[36.70819975852979, "o", " "] +[36.73819975852979, "o", "s"] +[36.76819975852979, "o", "g"] +[36.79819975852979, "o", "r"] +[36.82819975852979, "o", " "] +[36.85819975852979, "o", "t"] +[36.888199758529794, "o", "a"] +[36.918199758529795, "o", "b"] +[36.948199758529796, "o", "l"] +[36.9781997585298, "o", "e"] +[37.0081997585298, "o", " "] +[37.0381997585298, "o", "q"] +[37.0681997585298, "o", "o"] +[37.0981997585298, "o", "z"] +[37.1281997585298, "o", "_"] +[37.158199758529804, "o", "v"] +[37.188199758529805, "o", "o"] +[37.218199758529806, "o", "t"] +[37.24819975852981, "o", "e"] +[37.27819975852981, "o", "_"] +[37.30819975852981, "o", "f"] +[37.33819975852981, "o", "r"] +[37.36819975852981, "o", "a"] +[37.39819975852981, "o", "c"] +[37.428199758529814, "o", "t"] +[37.458199758529815, "o", "i"] +[37.48819975852982, "o", "o"] +[37.51819975852982, "o", "n"] +[37.54819975852982, "o", " "] +[37.57819975852982, "o", "q"] +[37.60819975852982, "o", "o"] +[37.63819975852982, "o", "z"] +[37.66819975852982, "o", "_"] +[37.698199758529825, "o", "v"] +[37.728199758529826, "o", "o"] +[37.75819975852983, "o", "t"] +[37.78819975852983, "o", "e"] +[37.81819975852983, "o", "_"] +[37.84819975852983, "o", "f"] +[37.87819975852983, "o", "r"] +[37.90819975852983, "o", "a"] +[37.938199758529834, "o", "c"] +[37.968199758529835, "o", "t"] +[37.998199758529836, "o", "i"] +[38.02819975852984, "o", "o"] +[38.05819975852984, "o", "n"] +[38.08819975852984, "o", "\r\n"] +[38.11819975852984, "o", "\u001b[0m"] +[38.14819975852984, "o", "\r\n"] +[38.58724709510821, "o", "Image qoz_vote_fraction:2dcb25ec934f81a0ea8687a4fc1d9b09b37f591caa67d16482d12512e0d11d90\r\n"] +[38.58726497650164, "o", " CREATE TABLE qoz_vote_fraction AS SELECT v.county_id, COALESCE(qoz_tract_fraction, 0) AS qoz_tract_fraction, trump_vote_fraction, clinton_vote_fraction, total_votes FROM vote_fraction v LEFT JOIN qoz_tract_fraction q ON q.county_id = v.county_id WHERE v.county_id IS NOT NULL; ALTER TABLE qoz_vote_fraction ADD PRIMARY KEY (county_id);\r\nCreated at 2021-12-17T19:44:23.797155\r\n"] +[38.58881755828875, "o", "Size: 221.57 KiB\r\n"] +[38.588832817077815, "o", "Parent: 33227e5f942e9afe432146105371ad6fca98d8aabb10538149f55a01c53d30f3\r\n\r\nTables:\r\n"] +[38.589506587982356, "o", " qoz_tract_fraction\r\n"] +[38.589512548446834, "o", " qoz_vote_fraction\r\n vote_fraction\r\n"] +[39.01045270919818, "o", "Table qoz_vote_fraction:2dcb25ec934f81a0ea8687a4fc1d9b09b37f591caa67d16482d12512e0d11d90/qoz_vote_fraction\r\n\r\n"] +[39.011944255829036, "o", "Size: 107.29 KiB\r\n"] +[39.01295515060443, "o", "Rows: 3114\r\nColumns: \r\n county_id (text, PK)\r\n qoz_tract_fraction (numeric)\r\n trump_vote_fraction (numeric)\r\n"] +[39.01297064781207, "o", " clinton_vote_fraction (numeric)\r\n total_votes (numeric)\r\n\r\nObjects: \r\n oc423b7e057e6f48cb616bea1291248f22eafeeb17231ae9b8a0de978cbeccf\r\n"] +[39.04297064781207, "o", "\u001b[1m"] +[39.07297064781207, "o", "\u001b[36m"] +[39.10297064781207, "o", "\u001b[91m"] +[39.13297064781207, "o", "$"] +[39.162970647812074, "o", " "] +[39.192970647812075, "o", "\u001b[0m"] +[49.18819975852975, "o", "\u001b[H"] +[49.21819975852975, "o", "\u001b[J"] +[49.24819975852975, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Get the data for New York County (FIPS 36061)"] +[49.27819975852975, "o", "\r\n"] +[49.30819975852975, "o", "$"] +[49.338199758529754, "o", " "] +[49.368199758529755, "o", "s"] +[49.398199758529756, "o", "g"] +[49.42819975852976, "o", "r"] +[49.45819975852976, "o", " "] +[49.48819975852976, "o", "s"] +[49.51819975852976, "o", "q"] +[49.54819975852976, "o", "l"] +[49.57819975852976, "o", " "] +[49.608199758529764, "o", "-"] +[49.638199758529765, "o", "s"] +[49.66819975852977, "o", " "] +[49.69819975852977, "o", "q"] +[49.72819975852977, "o", "o"] +[49.75819975852977, "o", "z"] +[49.78819975852977, "o", "_"] +[49.81819975852977, "o", "v"] +[49.84819975852977, "o", "o"] +[49.878199758529774, "o", "t"] +[49.908199758529776, "o", "e"] +[49.93819975852978, "o", "_"] +[49.96819975852978, "o", "f"] +[49.99819975852978, "o", "r"] +[50.02819975852978, "o", "a"] +[50.05819975852978, "o", "c"] +[50.08819975852978, "o", "t"] +[50.118199758529784, "o", "i"] +[50.148199758529785, "o", "o"] +[50.178199758529786, "o", "n"] +[50.20819975852979, "o", " "] +[50.23819975852979, "o", "\\"] +[50.26819975852979, "o", "\r\n "] +[50.29819975852979, "o", "\""] +[50.32819975852979, "o", "S"] +[50.35819975852979, "o", "E"] +[50.388199758529794, "o", "L"] +[50.418199758529795, "o", "E"] +[50.448199758529796, "o", "C"] +[50.4781997585298, "o", "T"] +[50.5081997585298, "o", " "] +[50.5381997585298, "o", "r"] +[50.5681997585298, "o", "o"] +[50.5981997585298, "o", "w"] +[50.6281997585298, "o", "_"] +[50.658199758529804, "o", "t"] +[50.688199758529805, "o", "o"] +[50.718199758529806, "o", "_"] +[50.74819975852981, "o", "j"] +[50.77819975852981, "o", "s"] +[50.80819975852981, "o", "o"] +[50.83819975852981, "o", "n"] +[50.86819975852981, "o", "("] +[50.89819975852981, "o", "d"] +[50.928199758529814, "o", ")"] +[50.958199758529815, "o", " "] +[50.98819975852982, "o", "F"] +[51.01819975852982, "o", "R"] +[51.04819975852982, "o", "O"] +[51.07819975852982, "o", "M"] +[51.10819975852982, "o", " "] +[51.13819975852982, "o", "("] +[51.16819975852982, "o", "S"] +[51.198199758529825, "o", "E"] +[51.228199758529826, "o", "L"] +[51.25819975852983, "o", "E"] +[51.28819975852983, "o", "C"] +[51.31819975852983, "o", "T"] +[51.34819975852983, "o", " "] +[51.37819975852983, "o", "*"] +[51.40819975852983, "o", " "] +[51.438199758529834, "o", "F"] +[51.468199758529835, "o", "R"] +[51.498199758529836, "o", "O"] +[51.52819975852984, "o", "M"] +[51.55819975852984, "o", " "] +[51.58819975852984, "o", "q"] +[51.61819975852984, "o", "o"] +[51.64819975852984, "o", "z"] +[51.67819975852984, "o", "_"] +[51.708199758529844, "o", "v"] +[51.738199758529845, "o", "o"] +[51.768199758529846, "o", "t"] +[51.79819975852985, "o", "e"] +[51.82819975852985, "o", "_"] +[51.85819975852985, "o", "f"] +[51.88819975852985, "o", "r"] +[51.91819975852985, "o", "a"] +[51.94819975852985, "o", "c"] +[51.978199758529854, "o", "t"] +[52.008199758529855, "o", "i"] +[52.038199758529856, "o", "o"] +[52.06819975852986, "o", "n"] +[52.09819975852986, "o", " "] +[52.12819975852986, "o", "W"] +[52.15819975852986, "o", "H"] +[52.18819975852986, "o", "E"] +[52.21819975852986, "o", "R"] +[52.248199758529864, "o", "E"] +[52.278199758529865, "o", " "] +[52.30819975852987, "o", "c"] +[52.33819975852987, "o", "o"] +[52.36819975852987, "o", "u"] +[52.39819975852987, "o", "n"] +[52.42819975852987, "o", "t"] +[52.45819975852987, "o", "y"] +[52.48819975852987, "o", "_"] +[52.518199758529875, "o", "i"] +[52.548199758529876, "o", "d"] +[52.57819975852988, "o", " "] +[52.60819975852988, "o", "="] +[52.63819975852988, "o", " "] +[52.66819975852988, "o", "'"] +[52.69819975852988, "o", "3"] +[52.72819975852988, "o", "6"] +[52.758199758529884, "o", "0"] +[52.788199758529885, "o", "6"] +[52.818199758529886, "o", "1"] +[52.84819975852989, "o", "'"] +[52.87819975852989, "o", ")"] +[52.90819975852989, "o", " "] +[52.93819975852989, "o", "d"] +[52.96819975852989, "o", "\""] +[52.99819975852989, "o", "\r\n"] +[53.028199758529894, "o", "\u001b[0m"] +[53.058199758529895, "o", "\r\n"] +[53.48504411697411, "o", "{'county_id': '36061', 'qoz_tract_fraction': 0.125, 'trump_vote_fraction': 0.08865095716546313, 'clinton_vote_fraction': 0.7905445350569275, 'total_votes': 732423}\r\n"] +[53.51504411697411, "o", "\u001b[1m"] +[53.54504411697411, "o", "\u001b[36m"] +[53.57504411697411, "o", "\u001b[91m"] +[53.60504411697411, "o", "$"] +[53.635044116974115, "o", " "] +[53.665044116974116, "o", "\u001b[0m"] +[58.69504411697412, "o", "\u001b[H"] +[58.72504411697412, "o", "\u001b[J"] +[58.75504411697412, "o", "\u001b[1m\u001b[36m\u001b[91m$ # Do a quick analysis of the dataset."] +[58.78504411697412, "o", "\r\n"] +[58.81504411697412, "o", "$"] +[58.84504411697412, "o", " "] +[58.875044116974124, "o", "c"] +[58.905044116974125, "o", "a"] +[58.935044116974126, "o", "t"] +[58.96504411697413, "o", " "] +[58.99504411697413, "o", "a"] +[59.02504411697413, "o", "n"] +[59.05504411697413, "o", "a"] +[59.08504411697413, "o", "l"] +[59.11504411697413, "o", "y"] +[59.145044116974134, "o", "z"] +[59.175044116974135, "o", "e"] +[59.205044116974136, "o", "."] +[59.23504411697414, "o", "p"] +[59.26504411697414, "o", "y"] +[59.29504411697414, "o", "\r\n"] +[59.32504411697414, "o", "$"] +[59.35504411697414, "o", " "] +[59.38504411697414, "o", "p"] +[59.415044116974144, "o", "y"] +[59.445044116974145, "o", "t"] +[59.475044116974146, "o", "h"] +[59.50504411697415, "o", "o"] +[59.53504411697415, "o", "n"] +[59.56504411697415, "o", " "] +[59.59504411697415, "o", "a"] +[59.62504411697415, "o", "n"] +[59.65504411697415, "o", "a"] +[59.685044116974154, "o", "l"] +[59.715044116974155, "o", "y"] +[59.74504411697416, "o", "z"] +[59.77504411697416, "o", "e"] +[59.80504411697416, "o", "."] +[59.83504411697416, "o", "p"] +[59.86504411697416, "o", "y"] +[59.89504411697416, "o", "\r\n"] +[59.92504411697416, "o", "\u001b[0m"] +[59.955044116974165, "o", "\r\n"] +[59.95674118042021, "o", "import scipy.stats as ss\r\n\r\nfrom splitgraph.core.repository import Repository\r\nfrom splitgraph.ingestion.pandas import sql_to_df\r\n\r\n# Load the dataset we created into Pandas\r\nimage = Repository(\"\", \"qoz_vote_fraction\").images[\"latest\"]\r\ndf = sql_to_df(\"SELECT * FROM qoz_vote_fraction\", image=image, use_lq=True)\r\nprint(df)\r\n\r\n# Is there a correlation between the Trump vote fraction and the fraction of\r\n# QOZ-qualified tracts in every county?\r\nprint(ss.linregress(df[\"trump_vote_fraction\"], df[\"qoz_tract_fract"] +[59.956750001907636, "o", "ion\"]))\r\n"] +[60.956750001907636, "o", " county_id qoz_tract_fraction trump_vote_fraction clinton_vote_fraction total_votes\r\n0 48039 0.117647 0.600680 0.356492 121181.0\r\n1 26031 0.111111 0.635094 0.314658 13672.0\r\n2 20139 0.200000 0.684928 0.248794 7046.0\r\n3 51145 0.000000 0.703254 0.240237 16900.0\r\n4 31007 0.000000 "] +[60.95676478385954, "o", "0.888060 0.047264 402.0\r\n... ... ... ... ... ...\r\n3109 42043 0.092308 0.461843 0.491004 131783.0\r\n3110 27031 0.333333 0.340501 0.563181 3395.0\r\n3111 22019 0.113636 0.646786 0.313851 83785.0\r\n3112 51183 0.200000 0.407415 0.570777 5044.0\r\n3"] +[60.956771221161176, "o", "113 13015 0.000000 0.756283 0.207636 39550.0\r\n\r\n[3114 rows x 5 columns]\r\n"] +[60.95805415153532, "o", "LinregressResult(slope=-0.062179470760523846, intercept=0.1781160377798594, rvalue=-0.05782420568050624, pvalue=0.0012457930627282658, stderr=0.019243775109388406, intercept_stderr=0.012338526356298419)"] +[60.95816072464018, "o", "\r\n"] +[60.98816072464018, "o", "\u001b[1m"] +[61.01816072464018, "o", "\u001b[36m"] +[61.048160724640184, "o", "\u001b[91m"] +[61.078160724640185, "o", "$"] +[61.108160724640186, "o", " "] +[61.13816072464019, "o", "\u001b[0m"] \ No newline at end of file diff --git a/content/docs-manifest.json b/content/docs-manifest.json index bb80ba2a..d6af2608 100644 --- a/content/docs-manifest.json +++ b/content/docs-manifest.json @@ -1,23 +1,203 @@ { "latest": { - "id": 39731301, - "tag_name": "v0.2.9", - "target_commitish": "5ec79cf97df336a93503ee0c48f168f79158d548", - "created_at": "2021-03-12T17:37:06Z", - "published_at": "2021-03-12T18:17:05Z", + "id": 55571256, + "tag_name": "v0.3.0", + "target_commitish": "fb8bbc616bda9717cd77db3597381a9cbe26d488", + "created_at": "2021-12-17T19:30:50Z", + "published_at": "2021-12-17T19:49:27Z", "assets": [ { - "id": 33389368, - "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/33389368", + "id": 52039025, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/52039025", "name": "sgr-docs-bin.tar.gz", "label": "", - "created_at": "2021-03-12T18:01:59Z", - "updated_at": "2021-03-12T18:01:59Z", - "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.9/sgr-docs-bin.tar.gz" + "created_at": "2021-12-17T19:49:15Z", + "updated_at": "2021-12-17T19:49:16Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.3.0/sgr-docs-bin.tar.gz" } ] }, "releases": [ + { + "id": 55571256, + "tag_name": "v0.3.0", + "target_commitish": "fb8bbc616bda9717cd77db3597381a9cbe26d488", + "created_at": "2021-12-17T19:30:50Z", + "published_at": "2021-12-17T19:49:27Z", + "assets": [ + { + "id": 52039025, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/52039025", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-12-17T19:49:15Z", + "updated_at": "2021-12-17T19:49:16Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.3.0/sgr-docs-bin.tar.gz" + } + ] + }, + { + "id": 53567785, + "tag_name": "v0.2.18", + "target_commitish": "cc98bd8a87b1252d69f31a8f066818e2a4b7bb70", + "created_at": "2021-11-17T15:11:01Z", + "published_at": "2021-11-17T15:51:54Z", + "assets": [ + { + "id": 49679059, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/49679059", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-11-17T15:39:42Z", + "updated_at": "2021-11-17T15:39:43Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.18/sgr-docs-bin.tar.gz" + } + ] + }, + { + "id": 51394754, + "tag_name": "v0.2.17", + "target_commitish": "69e2e396e41b3f9f3a7437bfb69189720d8c8b66", + "created_at": "2021-10-14T21:11:31Z", + "published_at": "2021-10-14T21:51:29Z", + "assets": [ + { + "id": 47011063, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/47011063", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-10-14T21:44:15Z", + "updated_at": "2021-10-14T21:44:15Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.17/sgr-docs-bin.tar.gz" + } + ] + }, + { + "id": 48066336, + "tag_name": "v0.2.16", + "target_commitish": "e7553fcf76b6a34ac0d396e407f122d7cd2a6e59", + "created_at": "2021-08-18T17:39:35Z", + "published_at": "2021-08-18T19:13:55Z", + "assets": [ + { + "id": 42751073, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/42751073", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-08-18T18:52:44Z", + "updated_at": "2021-08-18T18:52:45Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.16/sgr-docs-bin.tar.gz" + } + ] + }, + { + "id": 46757318, + "tag_name": "v0.2.15", + "target_commitish": "443e9cf2d61db94fcb0dec8d674c2f79c58e01e5", + "created_at": "2021-07-26T09:25:14Z", + "published_at": "2021-07-26T09:58:34Z", + "assets": [ + { + "id": 41030652, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/41030652", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-07-26T09:56:59Z", + "updated_at": "2021-07-26T09:57:00Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.15/sgr-docs-bin.tar.gz" + } + ] + }, + { + "id": 42470070, + "tag_name": "v0.2.14", + "target_commitish": "b6085d0bc345aaff8f9bb1812d783c177a2c1a0e", + "created_at": "2021-05-05T11:12:15Z", + "published_at": "2021-05-05T13:43:59Z", + "assets": [ + { + "id": 36435419, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/36435419", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-05-05T11:39:07Z", + "updated_at": "2021-05-05T11:39:07Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.14/sgr-docs-bin.tar.gz" + } + ] + }, + { + "id": 41423565, + "tag_name": "v0.2.13", + "target_commitish": "ef8332b29640230f4eebcbb350a37c67285064b1", + "created_at": "2021-04-14T14:43:01Z", + "published_at": "2021-04-22T13:36:49Z", + "assets": [ + { + "id": 35012171, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/35012171", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-04-14T15:10:32Z", + "updated_at": "2021-04-14T15:10:33Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.13/sgr-docs-bin.tar.gz" + } + ] + }, + { + "id": 41069524, + "tag_name": "v0.2.12", + "target_commitish": "9f64e86b1567603749712e4c27ed6ccdc6475af4", + "created_at": "2021-04-07T15:31:09Z", + "published_at": "2021-04-22T13:36:43Z", + "assets": [ + { + "id": 34595301, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/34595301", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-04-07T15:58:00Z", + "updated_at": "2021-04-07T15:58:01Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.12/sgr-docs-bin.tar.gz" + } + ] + }, + { + "id": 40632768, + "tag_name": "v0.2.11", + "target_commitish": "f84b245302f20ae1ec65320e75e24753f59b364d", + "created_at": "2021-03-29T12:27:51Z", + "published_at": "2021-03-29T13:15:46Z", + "assets": [ + { + "id": 34145547, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/34145547", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-03-29T12:54:24Z", + "updated_at": "2021-03-29T12:54:24Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.11/sgr-docs-bin.tar.gz" + } + ] + }, + { + "id": 39960104, + "tag_name": "v0.2.10", + "target_commitish": "3688be4452e0a98e4510876b085b29a61d9c73be", + "created_at": "2021-03-17T17:52:24Z", + "published_at": "2021-03-17T18:18:59Z", + "assets": [ + { + "id": 33604378, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/33604378", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-03-17T18:18:16Z", + "updated_at": "2021-03-17T18:18:16Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.10/sgr-docs-bin.tar.gz" + } + ] + }, { "id": 39731301, "tag_name": "v0.2.9", diff --git a/content/docs/9000_sgr/0002_engine-management/0000_engine-add.mdx b/content/docs/9000_sgr/0002_engine-management/0000_engine-add.mdx index c0b69417..cc6ef138 100644 --- a/content/docs/9000_sgr/0002_engine-management/0000_engine-add.mdx +++ b/content/docs/9000_sgr/0002_engine-management/0000_engine-add.mdx @@ -23,4 +23,5 @@ its data and metadata volumes will have names `splitgraph_engine_default_data` a * **`--inject-source`**: Inject the current Splitgraph source code into the engine using Docker bind mounts * **`--no-pull`**: Don't pull the Docker image * **`--set-default`**: Set the engine as the default engine in the config regardless of its name + * **`--cap-add TEXT`**: Add kernel capabilities to the engine container * **`--password TEXT`**: diff --git a/content/docs/9000_sgr/0005_sharing-images/0001_push.mdx b/content/docs/9000_sgr/0005_sharing-images/0001_push.mdx index 60ba1e17..7082172b 100644 --- a/content/docs/9000_sgr/0005_sharing-images/0001_push.mdx +++ b/content/docs/9000_sgr/0005_sharing-images/0001_push.mdx @@ -1,8 +1,8 @@ -export const meta = {id: "push", title: "sgr push", sidebarTitle: "push", description: "Push images the Splitgraph registry or another engine."}; +export const meta = {id: "push", title: "sgr push", sidebarTitle: "push", description: "Push images to the Splitgraph registry or another engine."}; ```sgr push [OPTIONS] REPOSITORY_OR_IMAGE [REMOTE_REPOSITORY]``` -Push images the Splitgraph registry or another engine. +Push images to the Splitgraph registry or another engine. If an image is not specified (e.g. `sgr push noaa/climate`, this will push all new images. diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0000_cloud-add.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0000_cloud-add.mdx new file mode 100644 index 00000000..9eba1036 --- /dev/null +++ b/content/docs/9000_sgr/0007_splitgraph-cloud/0000_cloud-add.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "cloud-add", title: "sgr cloud add", sidebarTitle: "cloud add", description: "Add a remote Splitgraph registry to .sgconfig with default parameters"}; + +```sgr cloud add [OPTIONS] DOMAIN_NAME``` + +Add a remote Splitgraph registry to .sgconfig with default parameters + +### Options + + * **`--remote TEXT`**: Name for the remote (infer from the domain name by default) + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0000_cloud-register.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0001_cloud-register.mdx similarity index 100% rename from content/docs/9000_sgr/0007_splitgraph-cloud/0000_cloud-register.mdx rename to content/docs/9000_sgr/0007_splitgraph-cloud/0001_cloud-register.mdx diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0001_cloud-login.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0002_cloud-login.mdx similarity index 100% rename from content/docs/9000_sgr/0007_splitgraph-cloud/0001_cloud-login.mdx rename to content/docs/9000_sgr/0007_splitgraph-cloud/0002_cloud-login.mdx diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0002_cloud-login-api.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0003_cloud-login-api.mdx similarity index 100% rename from content/docs/9000_sgr/0007_splitgraph-cloud/0002_cloud-login-api.mdx rename to content/docs/9000_sgr/0007_splitgraph-cloud/0003_cloud-login-api.mdx diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0004_cloud-token.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0004_cloud-token.mdx new file mode 100644 index 00000000..5cea68fa --- /dev/null +++ b/content/docs/9000_sgr/0007_splitgraph-cloud/0004_cloud-token.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "cloud-token", title: "sgr cloud token", sidebarTitle: "cloud token", description: "Output an up-to-date access token for a remote."}; + +```sgr cloud token [OPTIONS] ``` + +Output an up-to-date access token for a remote. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0003_cloud-sql.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0005_cloud-sql.mdx similarity index 100% rename from content/docs/9000_sgr/0007_splitgraph-cloud/0003_cloud-sql.mdx rename to content/docs/9000_sgr/0007_splitgraph-cloud/0005_cloud-sql.mdx diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0004_cloud-curl.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0006_cloud-curl.mdx similarity index 100% rename from content/docs/9000_sgr/0007_splitgraph-cloud/0004_cloud-curl.mdx rename to content/docs/9000_sgr/0007_splitgraph-cloud/0006_cloud-curl.mdx diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0007_cloud-readme.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0007_cloud-readme.mdx new file mode 100644 index 00000000..4ee4cf56 --- /dev/null +++ b/content/docs/9000_sgr/0007_splitgraph-cloud/0007_cloud-readme.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-readme", title: "sgr cloud readme", sidebarTitle: "cloud readme", description: "Upload a README to a Splitgraph repository."}; + +```sgr cloud readme [OPTIONS] REPOSITORY README``` + +Upload a README to a Splitgraph repository. + +The repository must have already been pushed. The README must be a file in Markdown format. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0006_cloud-description.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0008_cloud-description.mdx similarity index 100% rename from content/docs/9000_sgr/0007_splitgraph-cloud/0006_cloud-description.mdx rename to content/docs/9000_sgr/0007_splitgraph-cloud/0008_cloud-description.mdx diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0007_cloud-metadata.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0009_cloud-metadata.mdx similarity index 100% rename from content/docs/9000_sgr/0007_splitgraph-cloud/0007_cloud-metadata.mdx rename to content/docs/9000_sgr/0007_splitgraph-cloud/0009_cloud-metadata.mdx diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0008_cloud-search.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0010_cloud-search.mdx similarity index 100% rename from content/docs/9000_sgr/0007_splitgraph-cloud/0008_cloud-search.mdx rename to content/docs/9000_sgr/0007_splitgraph-cloud/0010_cloud-search.mdx diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0011_cloud-dump.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0011_cloud-dump.mdx new file mode 100644 index 00000000..61ce08a4 --- /dev/null +++ b/content/docs/9000_sgr/0007_splitgraph-cloud/0011_cloud-dump.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "cloud-dump", title: "sgr cloud dump", sidebarTitle: "cloud dump", description: "Dump a Splitgraph catalog to a YAML file."}; + +```sgr cloud dump [OPTIONS] [LIMIT_REPOSITORIES]...``` + +Dump a Splitgraph catalog to a YAML file. + +This creates a splitgraph.yml file in the target directory as well as a subdirectory `readmes` +with all the repository readmes. This file can be used to recreate all catalog metadata +and all external data source settings for a repository using `sgr cloud load`. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--readme-dir TEXT`**: Directory to dump the data into + * **`-f, --repositories-file FILENAME`**: diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0012_cloud-load.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0012_cloud-load.mdx new file mode 100644 index 00000000..7154bbe9 --- /dev/null +++ b/content/docs/9000_sgr/0007_splitgraph-cloud/0012_cloud-load.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "cloud-load", title: "sgr cloud load", sidebarTitle: "cloud load", description: "Load a Splitgraph catalog from a YAML file."}; + +```sgr cloud load [OPTIONS] [LIMIT_REPOSITORIES]...``` + +Load a Splitgraph catalog from a YAML file. + +This will load a splitgraph.yml file and the `readmes` subdirectory produced by +`sgr cloud dump` back into a remote Splitgraph catalog. + +By default, if a repository doesn't yet exist, it will be public. Pass `--initial-private` to +this command to make it start off as private. This won't apply to existing repositories: use +the Splitgraph GUI to manage repository access settings. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--readme-dir TEXT`**: Path to the directory with the README files + * **`-p, --initial-private`**: If the repository doesn't exist, create it as private. + * **`-f, --repositories-file PATH`**: + * **`--skip-external`**: Only set up the metadata, not the external data source settings diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0013_cloud-sync.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0013_cloud-sync.mdx new file mode 100644 index 00000000..4a129b19 --- /dev/null +++ b/content/docs/9000_sgr/0007_splitgraph-cloud/0013_cloud-sync.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "cloud-sync", title: "sgr cloud sync", sidebarTitle: "cloud sync", description: "Trigger an ingestion job for a repository."}; + +```sgr cloud sync [OPTIONS] REPOSITORY``` + +Trigger an ingestion job for a repository. + +This starts off a load job for an existing/new repository, optionally using a +splitgraph.yml file and waiting for the job to complete before exiting. + +If the splitgraph.yml file is specified, it will use the settings for that repository +from there to override the existing parameters for a repository or to create a new repository. +Otherwise, it will use the existing parameters. + +By default, if a repository doesn't yet exist, it will be public. Pass `--initial-private` to +this command to make it start off as private. This won't apply to existing repositories: use +the Splitgraph GUI to manage repository access settings. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-r, --full-refresh`**: Trigger a full reload instead of an incremental load + * **`-w, --wait`**: Attach to the job and wait for it to finish + * **`-p, --initial-private`**: If the repository doesn't exist, create it as private. + * **`-u, --use-file`**: Use a YAML file with repository settings + * **`-f, --repositories-file PATH`**: diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0014_cloud-status.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0014_cloud-status.mdx new file mode 100644 index 00000000..c3b05ff3 --- /dev/null +++ b/content/docs/9000_sgr/0007_splitgraph-cloud/0014_cloud-status.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "cloud-status", title: "sgr cloud status", sidebarTitle: "cloud status", description: "Get job statuses for given repositories."}; + +```sgr cloud status [OPTIONS] [REPOSITORIES]...``` + +Get job statuses for given repositories. + +If this command is passed a list of repositories, it will get the latest job +statuses just for those repositories. Otherwise, it will use an existing splitgraph.yml +file and get job statuses for all repositories in this file. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-f, --repositories-file PATH`**: diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0015_cloud-logs.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0015_cloud-logs.mdx new file mode 100644 index 00000000..c364d040 --- /dev/null +++ b/content/docs/9000_sgr/0007_splitgraph-cloud/0015_cloud-logs.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "cloud-logs", title: "sgr cloud logs", sidebarTitle: "cloud logs", description: "Get ingestion job logs."}; + +```sgr cloud logs [OPTIONS] REPOSITORY TASK_ID``` + +Get ingestion job logs. + +Output the logs for an ingestion job into a repository on Splitgraph Cloud. +Use `sgr cloud status` to get a list of ingestion jobs and their recent task IDs. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0016_cloud-upload.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0016_cloud-upload.mdx new file mode 100644 index 00000000..e9a59468 --- /dev/null +++ b/content/docs/9000_sgr/0007_splitgraph-cloud/0016_cloud-upload.mdx @@ -0,0 +1,13 @@ +export const meta = {id: "cloud-upload", title: "sgr cloud upload", sidebarTitle: "cloud upload", description: "Upload files to Splitgraph."}; + +```sgr cloud upload [OPTIONS] REPOSITORY [FILES]...``` + +Upload files to Splitgraph. + +This uses the upload API to add data like CSV files to a remote Splitgraph instance, +trigger a load and wait for the data to load into a repository. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--file-format [csv]`**: diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0017_cloud-download.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0017_cloud-download.mdx new file mode 100644 index 00000000..98465cf6 --- /dev/null +++ b/content/docs/9000_sgr/0007_splitgraph-cloud/0017_cloud-download.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "cloud-download", title: "sgr cloud download", sidebarTitle: "cloud download", description: "Download query results from Splitgraph."}; + +```sgr cloud download [OPTIONS] QUERY [OUTPUT_PATH]``` + +Download query results from Splitgraph. + +This runs a query on Splitgraph Cloud and exports the results into a csv.gz format. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--file-format [csv]`**: diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0018_cloud-plugins.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0018_cloud-plugins.mdx new file mode 100644 index 00000000..4207d21a --- /dev/null +++ b/content/docs/9000_sgr/0007_splitgraph-cloud/0018_cloud-plugins.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "cloud-plugins", title: "sgr cloud plugins", sidebarTitle: "cloud plugins", description: "List all Splitgraph Cloud data plugins."}; + +```sgr cloud plugins [OPTIONS] ``` + +List all Splitgraph Cloud data plugins. + +This command lists all plugins available on a remote Splitgraph Cloud instance. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-f, --filter TEXT`**: Filter for plugins with this string in name/description diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0019_cloud-stub.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0019_cloud-stub.mdx new file mode 100644 index 00000000..396ec7b9 --- /dev/null +++ b/content/docs/9000_sgr/0007_splitgraph-cloud/0019_cloud-stub.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "cloud-stub", title: "sgr cloud stub", sidebarTitle: "cloud stub", description: "Generate a splitgraph.yml stub file for a given plugin"}; + +```sgr cloud stub [OPTIONS] PLUGIN_NAME REPOSITORY [OUTPUT_FILE]``` + +Generate a splitgraph.yml stub file for a given plugin + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0020_cloud-validate.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0020_cloud-validate.mdx new file mode 100644 index 00000000..ba66a11e --- /dev/null +++ b/content/docs/9000_sgr/0007_splitgraph-cloud/0020_cloud-validate.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "cloud-validate", title: "sgr cloud validate", sidebarTitle: "cloud validate", description: "Validate, merge and output project file(s)"}; + +```sgr cloud validate [OPTIONS] ``` + +Validate, merge and output project file(s) + +### Options + + * **`-f, --repositories-file PATH`**: diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0021_cloud-seed.mdx b/content/docs/9000_sgr/0007_splitgraph-cloud/0021_cloud-seed.mdx new file mode 100644 index 00000000..57dcaa5f --- /dev/null +++ b/content/docs/9000_sgr/0007_splitgraph-cloud/0021_cloud-seed.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "cloud-seed", title: "sgr cloud seed", sidebarTitle: "cloud seed", description: "Generate a starter Splitgraph Cloud project from a seed."}; + +```sgr cloud seed [OPTIONS] SEED [DIRECTORY]``` + +Generate a starter Splitgraph Cloud project from a seed. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--github-repository TEXT`**: Name of the GitHub repository diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0000_checkout.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0000_checkout.mdx new file mode 100644 index 00000000..cc805a26 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0000_checkout.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "checkout", title: "sgr checkout", sidebarTitle: "checkout", description: "Check out a Splitgraph image into a Postgres schema."}; + +```sgr checkout [OPTIONS] IMAGE_SPEC``` + +Check out a Splitgraph image into a Postgres schema. + +This downloads the required physical objects and materializes all tables, unless ``-l`` or ``--layered`` is passed, +in which case the objects are downloaded and a foreign data wrapper is set up on the engine to satisfy read-only +queries by combining results from each table's fragments. + +Tables checked out in this way are still presented as normal Postgres tables and can queried in the same way. +Since the tables aren't materialized, layered querying is faster to set up, but since each query now results in a +subquery to each object comprising the table, actual query execution is slower than to materialized Postgres tables. + +Layered querying is only supported for read-only queries. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. Note that currently, the schema that the +image is checked out into has to have the same name as the repository. If no image hash or tag is passed, +"HEAD" is assumed. + +If ``-u`` or ``--uncheckout`` is passed, this instead deletes the checked out schema (assuming there are no pending +changes) and removes the HEAD pointer. + +If ``--force`` isn't passed and the schema has pending changes, this will fail. + +### Options + + * **`-f, --force`**: Discard all pending changes to the schema + * **`-u, --uncheckout`**: Delete the checked out copy instead + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0001_commit.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0001_commit.mdx new file mode 100644 index 00000000..9a2ec1f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0001_commit.mdx @@ -0,0 +1,59 @@ +export const meta = {id: "commit", title: "sgr commit", sidebarTitle: "commit", description: "Commit changes to a checked-out Splitgraph repository."}; + +```sgr commit [OPTIONS] REPOSITORY``` + +Commit changes to a checked-out Splitgraph repository. + +This packages up all changes into a new image. Where a table hasn't been created or had its schema changed, +this will delta compress the changes. For all other tables (or if ``-s`` has been passed), this will +store them as full table snapshots. + +When a table is stored as a full snapshot, `--chunk-size` sets the maximum size, in rows, of the fragments +that the table will be split into (default is no splitting). The splitting is done by the +table's primary key. + +If `--split-changesets` is passed, delta-compressed changes will also be split up according to the original +table chunk boundaries. For example, if there's a change to the first and the 20000th row of a table that was +originally committed with `--chunk-size=10000`, this will create 2 fragments: one based on the first chunk +and one on the second chunk of the table. + +If `--chunk-sort-keys` is passed, data inside the chunk is sorted by this key (or multiple keys). +This helps speed up queries on those keys for storage layers than can leverage that (e.g. CStore). The expected format is JSON, e.g. `{table_1: [col_1, col_2]}` + +`--index-options` expects a JSON-serialized dictionary of `{table: index_type: column: index_specific_kwargs}`. +Indexes are used to narrow down the amount of chunks to scan through when running a query. By default, each column +has a range index (minimum and maximum values) and it's possible to add bloom filtering to speed up queries that +involve equalities. + +Bloom filtering allows to trade off between the space overhead of the index and the probability of a false +positive (claiming that an object contains a record when it actually doesn't, leading to extra scans). + +An example `index-options` dictionary: + + +``` +{ + "table": { + "bloom": { + "column_1": { + "probability": 0.01, # Only one of probability + "size": 10000 # or size can be specified. + } + }, + # Only compute the range index on these columns. By default, + # it's computed on all columns and is always computed on the + # primary key no matter what. + "range": ["column_2", "column_3"] + } +} +``` + +### Options + + * **`-s, --snap`**: Do not delta compress the changes and instead store the whole table again. This consumes more space, but makes checkouts faster. + * **`-c, --chunk-size INTEGER`**: Split new tables into chunks of this many rows (by primary key). The default value is governed by the SG_COMMIT_CHUNK_SIZE configuration parameter. + * **`-k, --chunk-sort-keys JSON`**: Sort the data inside each chunk by this/these key(s) + * **`-t, --split-changesets`**: Split changesets for existing tables across original chunk boundaries. + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate on the new objects. + * **`-m, --message TEXT`**: Optional commit message + * **`-o, --overwrite`**: Overwrite physical objects that already exist diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0002_tag.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0002_tag.mdx new file mode 100644 index 00000000..89f01837 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0002_tag.mdx @@ -0,0 +1,36 @@ +export const meta = {id: "tag", title: "sgr tag", sidebarTitle: "tag", description: "Manage tags on images."}; + +```sgr tag [OPTIONS] IMAGE_SPEC [TAG]``` + +Manage tags on images. + +Depending on the exact invocation, this command can tag a Splitgraph image, +list all tags in a repository or delete a tag. + +### Examples + +``sgr tag noaa/climate`` + +List all tagged images in the ``noaa/climate`` repository and their tags. + +``sgr tag noaa/climate:abcdef1234567890`` + +List all tags assigned to the image ``noaa/climate:abcdef1234567890...`` + +``sgr tag noaa/climate:abcdef1234567890 my_new_tag`` + +Tag the image ``noaa/climate:abcdef1234567890...`` with ``my_new_tag``. If the tag already exists, this will +overwrite the tag. + +``sgr tag noaa/climate my_new_tag`` + +Tag the current ``HEAD`` of ``noaa/climate`` with ``my_new_tag``. + +``sgr tag --delete noaa/climate:my_new_tag`` + +Delete the tag ``my_new_tag`` from ``noaa/climate``. + +### Options + + * **`-d, --delete`**: Delete the tag instead. + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0003_import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0003_import.mdx new file mode 100644 index 00000000..b69bbfb4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0003_import.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "import", title: "sgr import", sidebarTitle: "import", description: "Import tables into a Splitgraph repository."}; + +```sgr import [OPTIONS] IMAGE_SPEC TABLE_OR_QUERY TARGET_REPOSITORY [TARGET_TABLE]``` + +Import tables into a Splitgraph repository. + +Imports a table or a result of a query from a local Splitgraph repository or a Postgres schema into another +Splitgraph repository. + +### Examples + +``sgr import noaa/climate:my_tag climate_data my/repository`` + +Create a new image in ``my/repository`` with the ``climate_data`` table included. This links the new image to +the physical object, meaning that the history of the ``climate_data`` table is preserved. + +If no tag is specified, the 'latest' (not the HEAD image or current state of the checked out image) +image is used. + +``sgr import noaa/climate:my_tag "SELECT * FROM climate_data" my/repository climate_data`` + +Create a new image in ``my/repository`` with the result of the query stored in the ``climate_data`` table. This +creates a new physical object without any linkage to the original data, so the history of the ``climate_data`` +table isn't preserved. The SQL query can interact with multiple tables in the source image. + +``sgr import other_schema other_table my/repository`` + +Since other_schema isn't a Splitgraph repository, this will copy ``other_schema.other_table`` +into a new Splitgraph object and add the ``other_table`` table to a new image in ``my/repository``. + +Note that importing doesn't discard or commit pending changes in the target Splitgraph repository: a new image +is created with the new table added, the new table is materialized in the repository and the HEAD pointer is moved. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0004_reindex.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0004_reindex.mdx new file mode 100644 index 00000000..b640ffe3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/0004_reindex.mdx @@ -0,0 +1,19 @@ +export const meta = {id: "reindex", title: "sgr reindex", sidebarTitle: "reindex", description: "Run extra indexes on a table."}; + +```sgr reindex [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Run extra indexes on a table. This will merge the indexing results for all objects +that a table is formed from with the current object indexes. For explanation of +what indexes do, see the documentation for `sgr commit`. + +If the objects haven't been downloaded yet, this will download them. + +Currently reindexing objects that change other objects is unsupported and will raise +an error. Pass `-o` to ignore these objects and only reindex supported objects. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate, e.g. '{"bloom": {"column_1": {"probability": 0.01}}}' [required] + * **`-o, --ignore-patch-objects`**: Ignore objects that change other objects' rows instead of raising an error diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/metadata.json new file mode 100644 index 00000000..9ef75b16 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0000_image-management-creation/metadata.json @@ -0,0 +1 @@ +{"title": "Image management/creation"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0000_log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0000_log.mdx new file mode 100644 index 00000000..db5078b4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0000_log.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "log", title: "sgr log", sidebarTitle: "log", description: "Show the history of a Splitgraph repository/image."}; + +```sgr log [OPTIONS] IMAGE_SPEC``` + +Show the history of a Splitgraph repository/image. + +By default, this shows the history of the current branch, starting from the HEAD pointer and following its +parent chain. + +Alternatively, it can follow the parent chain of any other image. + +If ``-t`` or ``--tree`` is passed, this instead renders the full image tree. The repository doesn't need to have +been checked out in this case. + +### Options + + * **`-t, --tree`**: + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0001_diff.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0001_diff.mdx new file mode 100644 index 00000000..8ef569e8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0001_diff.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "diff", title: "sgr diff", sidebarTitle: "diff", description: "Show differences between two Splitgraph images."}; + +```sgr diff [OPTIONS] REPOSITORY [TAG_OR_HASH_1] [TAG_OR_HASH_2]``` + +Show differences between two Splitgraph images. + +The two images must be in the same repository. The actual targets of this command depend +on the number of arguments passed: + +``sgr diff REPOSITORY`` + +Return the differences between the current HEAD image and the checked out schema. + +``sgr diff REPOSITORY TAG_OR_HASH`` + +Return the differences between the image and its parent. + +``sgr diff REPOSITORY TAG_OR_HASH_1 TAG_OR_HASH_2`` + +Return the differences from the first (earlier) image to the second image. + +### Options + + * **`-v, --verbose`**: Include the actual differences rather than just the total number of updated rows. + * **`-t, --table-name TEXT`**: Show the differences for a single table. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0002_object.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0002_object.mdx new file mode 100644 index 00000000..ff8c38a9 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0002_object.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "object", title: "sgr object", sidebarTitle: "object", description: "Show information about a Splitgraph object."}; + +```sgr object [OPTIONS] OBJECT_ID``` + +Show information about a Splitgraph object. + +Objects, or fragments, are building blocks of Splitgraph tables: each table consists of multiple immutable fragments +that can partially overwrite each other. Each fragment might have a parent that it depends on. In addition, +the smallest and largest values for every column are stored in the fragment's metadata. This information is used +to choose which objects to download in order to execute a query against a table. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0003_objects.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0003_objects.mdx new file mode 100644 index 00000000..c56fa727 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0003_objects.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "objects", title: "sgr objects", sidebarTitle: "objects", description: "List objects known to this engine."}; + +```sgr objects [OPTIONS] ``` + +List objects known to this engine. + +### Options + + * **`--local`**: Show only objects that are physically present on this engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0004_show.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0004_show.mdx new file mode 100644 index 00000000..4ddcc55d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0004_show.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "show", title: "sgr show", sidebarTitle: "show", description: "Show information about a Splitgraph image."}; + +```sgr show [OPTIONS] IMAGE_SPEC``` + +Show information about a Splitgraph image. This includes its parent, comment, size and creation time. + +Note that the size isn't the on-disk footprint, as the image might share some objects with other images +or if some of the image's objects have not been downloaded. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0005_table.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0005_table.mdx new file mode 100644 index 00000000..cc681c85 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0005_table.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "table", title: "sgr table", sidebarTitle: "table", description: "Show information about a table in a Splitgraph image."}; + +```sgr table [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Show information about a table in a Splitgraph image. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-v, --verbose`**: Show all of table's objects. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0006_sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0006_sql.mdx new file mode 100644 index 00000000..ea8a304b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0006_sql.mdx @@ -0,0 +1,34 @@ +export const meta = {id: "sql", title: "sgr sql", sidebarTitle: "sql", description: "Run an SQL statement against the Splitgraph engine."}; + +```sgr sql [OPTIONS] SQL``` + +Run an SQL statement against the Splitgraph engine. + +There are no restrictions on the contents of the statement: this is the same as running it +from any other PostgreSQL client. + +If ``--schema`` is specified, the statement is run with the ``search_path`` set to that schema. This means +that these statements are equivalent: + + +``` +sgr sql "SELECT * FROM "noaa/climate".table" +sgr sql -s noaa/climate "SELECT * FROM table" +``` + +If `--image` is specified, this will run the statement against that image using layered querying. +Only read-only statements are supported. For example: + + +``` +sgr sql -i noaa/climate:latest "SELECT * FROM table" +``` + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-s, --schema TEXT`**: Run SQL against this schema. + * **`-i, --image IMAGE`**: Run SQL against this image. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON + * **`-n, --no-transaction`**: Don't wrap the SQL in a transaction. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0007_status.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0007_status.mdx new file mode 100644 index 00000000..5e312f11 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/0007_status.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "status", title: "sgr status", sidebarTitle: "status", description: "Show the status of the Splitgraph engine."}; + +```sgr status [OPTIONS] [REPOSITORY]``` + +Show the status of the Splitgraph engine. + +If a repository is passed, show in-depth information about a repository. + +If not, show information about all repositories local to the engine. This will show a list +of all repositories, number of local images and tags, total repository size (theoretical +maximum size and current on-disk footprint of cached objects) and the current checked +out image (with LQ if the image is checked out using read-only layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/metadata.json new file mode 100644 index 00000000..a2c3f0f8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0001_image-information/metadata.json @@ -0,0 +1 @@ +{"title": "Image information"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0000_engine-add.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0000_engine-add.mdx new file mode 100644 index 00000000..c0b69417 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0000_engine-add.mdx @@ -0,0 +1,26 @@ +export const meta = {id: "engine-add", title: "sgr engine add", sidebarTitle: "engine add", description: "Create and start a Splitgraph engine."}; + +```sgr engine add [OPTIONS] [NAME]``` + +Create and start a Splitgraph engine. + +This will pull the Splitgraph engine image, start it, create a Postgres user and initialize +the engine. + +This also creates Docker volumes required to persist data/metadata. + +The engine Docker container by default will be named `splitgraph_engine_default` and +its data and metadata volumes will have names `splitgraph_engine_default_data` and +`splitgraph_engine_default_metadata`. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`-p, --port INTEGER`**: Port to start the engine on + * **`-u, --username TEXT`**: + * **`--no-init`**: Don't run `sgr init` on the engine + * **`--no-sgconfig`**: Don't add the engine to .sgconfig + * **`--inject-source`**: Inject the current Splitgraph source code into the engine using Docker bind mounts + * **`--no-pull`**: Don't pull the Docker image + * **`--set-default`**: Set the engine as the default engine in the config regardless of its name + * **`--password TEXT`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0001_engine-delete.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0001_engine-delete.mdx new file mode 100644 index 00000000..6229e082 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0001_engine-delete.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "engine-delete", title: "sgr engine delete", sidebarTitle: "engine delete", description: "Delete the Splitgraph engine container."}; + +```sgr engine delete [OPTIONS] [NAME]``` + +Delete the Splitgraph engine container. + +### Options + + * **`-y, --yes`**: Do not prompt for confirmation. + * **`-f, --force`**: Delete the engine anyway if it's running. + * **`-v, --with-volumes`**: Include the engine's volumes (if not specified, volumes will be reattached when an engine with the same name is created). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0002_engine-list.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0002_engine-list.mdx new file mode 100644 index 00000000..a2530db2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0002_engine-list.mdx @@ -0,0 +1,13 @@ +export const meta = {id: "engine-list", title: "sgr engine list", sidebarTitle: "engine list", description: "List Splitgraph engines."}; + +```sgr engine list [OPTIONS] ``` + +List Splitgraph engines. + +This only lists Docker containers that were created by sgr engine +(whose names start with `splitgraph_engine_`. To manage other engines, +use Docker CLI directly. + +### Options + + * **`-a, --include-all`**: Include stopped engine containers. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0003_engine-start.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0003_engine-start.mdx new file mode 100644 index 00000000..4c9cdf6c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0003_engine-start.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-start", title: "sgr engine start", sidebarTitle: "engine start", description: "Start a Splitgraph engine."}; + +```sgr engine start [OPTIONS] [NAME]``` + +Start a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0004_engine-stop.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0004_engine-stop.mdx new file mode 100644 index 00000000..7ea64786 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0004_engine-stop.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-stop", title: "sgr engine stop", sidebarTitle: "engine stop", description: "Stop a Splitgraph engine."}; + +```sgr engine stop [OPTIONS] [NAME]``` + +Stop a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0005_engine-upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0005_engine-upgrade.mdx new file mode 100644 index 00000000..751cd998 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0005_engine-upgrade.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "engine-upgrade", title: "sgr engine upgrade", sidebarTitle: "engine upgrade", description: "Upgrade a Splitgraph engine."}; + +```sgr engine upgrade [OPTIONS] [NAME]``` + +Upgrade a Splitgraph engine. + +This consists of shutting down the current Splitgraph engine, +deleting its Docker container (keeping the actual data and +metadata volumes intact), creating a container based on a newer +image and finally reinitializing the engine to perform needed migrations. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`--no-pull`**: Don't pull the new engine image diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0006_engine-log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0006_engine-log.mdx new file mode 100644 index 00000000..58859523 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0006_engine-log.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "engine-log", title: "sgr engine log", sidebarTitle: "engine log", description: "Get logs from a Splitgraph engine."}; + +```sgr engine log [OPTIONS] [NAME]``` + +Get logs from a Splitgraph engine. + +### Options + + * **`-f, --follow`**: Stream logs diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0007_engine-configure.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0007_engine-configure.mdx new file mode 100644 index 00000000..1be8adcd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0007_engine-configure.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "engine-configure", title: "sgr engine configure", sidebarTitle: "engine configure", description: "Inject a configuration file into an engine."}; + +```sgr engine configure [OPTIONS] [NAME]``` + +Inject a configuration file into an engine. + +This copies the current .sgconfig file (pointed to by SG_CONFIG_FILE) into +the engine container, making it use that configuration for +when it's queried through an application other than the sgr client +(layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0008_engine-version.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0008_engine-version.mdx new file mode 100644 index 00000000..d47bfe05 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/0008_engine-version.mdx @@ -0,0 +1,5 @@ +export const meta = {id: "engine-version", title: "sgr engine version", sidebarTitle: "engine version", description: "Get version of Splitgraph engine."}; + +```sgr engine version [OPTIONS] [NAME]``` + +Get version of Splitgraph engine. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/metadata.json new file mode 100644 index 00000000..3f70a9d2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0002_engine-management/metadata.json @@ -0,0 +1 @@ +{"title": "Engine management"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/0000_csv-export.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/0000_csv-export.mdx new file mode 100644 index 00000000..8408f9f2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/0000_csv-export.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-export", title: "sgr csv export", sidebarTitle: "csv export", description: "Export the result of a query as CSV."}; + +```sgr csv export [OPTIONS] IMAGE_SPEC QUERY``` + +Export the result of a query as CSV. + +### Examples + +`sgr csv export noaa/climate "SELECT * FROM rainfall"` + +Output everything in the currently checked-out `"rainfall"` table as CSV. + +`sgr csv export noaa/climate:dec_2018 "SELECT * FROM rainfall WHERE state = 'AZ' -f dec_2018_az.csv` + +Check out the `dec_2018` tag of `noaa/climate` and output values from `"rainfall"` for Arizona to `dec_2018_az.csv` + +`sgr csv export --layered noaa/climate:abcdef1234567890 "SELECT * FROM rainfall JOIN other_table ON..."` + +Uses layered querying instead to execute a join on tables in a certain image (satisfying the query without +having to check the image out). + +### Options + + * **`-f, --file FILENAME`**: File name to export to, default stdout. + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/0001_csv-import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/0001_csv-import.mdx new file mode 100644 index 00000000..5f3eb655 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/0001_csv-import.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-import", title: "sgr csv import", sidebarTitle: "csv import", description: "Import a CSV file into a checked-out Splitgraph repository."}; + +```sgr csv import [OPTIONS] REPOSITORY TABLE``` + +Import a CSV file into a checked-out Splitgraph repository. This doesn't create a new image, use `sgr commit` +after the import and any adjustments (e.g. adding primary keys or converting column types) to do so. + +If the target table doesn't exist, this will create a new table. + +If the target table does exist, this will try and patch the new values in by updating rows that exist in the +current table (as per its primary key constraints) and inserting new ones. Rows existing in the current table +but missing in the CSV won't be deleted. + +If `-r` is passed, the table will instead be deleted and recreated from the CSV file if it exists. + +### Options + + * **`-f, --file FILENAME`**: File name to import data from, default stdin. + * **`-r, --replace`**: Replace the table if it already exists. + * **`-k, --primary-key TEXT`**: Use the specified column(s) as primary key(s) + * **`-t, --override-type ...`**: Explicitly set types of these columns to PG types + * **`--encoding TEXT`**: Encoding to use for the CSV file + * **`--separator TEXT`**: CSV separator to use + * **`--no-header`**: Treats the first line of the CSV as data rather than a header. + * **`--skip-schema-check`**: Skips checking that the dataframe is compatible with the target schema. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/0002_mount.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/0002_mount.mdx new file mode 100644 index 00000000..85bcb7f5 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/0002_mount.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "mount", title: "sgr mount", sidebarTitle: "mount", description: "Mount foreign databases as Postgres schemas."}; + +```sgr mount [OPTIONS] ``` + +Mount foreign databases as Postgres schemas. + +Uses the Postgres FDW interface to create a local Postgres schema with foreign tables that map +to tables in other databases. + +See a given mount handler's documentation for handler-specific parameters. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/0003_singer-target.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/0003_singer-target.mdx new file mode 100644 index 00000000..c353a781 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/0003_singer-target.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "singer-target", title: "sgr singer target", sidebarTitle: "singer target", description: "Singer target that loads data into Splitgraph images."}; + +```sgr singer target [OPTIONS] IMAGE``` + +Singer target that loads data into Splitgraph images. + +This will read data from the stdin from a Singer-compatible tap and load it into +a Splitgraph image, merging data if the image already exists. + +Image must be of the format `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]` where `HASH_OR_TAG` +is a tag of an existing image to base the image on. If the repository doesn't exist, +it will be created. + +As this target consumes data from stdin, it will flush the records into a Splitgraph image. By +default, it will only keep the image if the whole stream has been successfully consumed. To +make this target completely follow the Singer spec (if it emits state, the records have been +flushed), pass --failure=keep-both or --failure=delete-old. To delete the old image on success, +pass --delete-old. + +### Options + + * **`-d, --delete-old`**: Delete the old image at the end of ingestion + * **`-f, --failure [keep-both|delete-old|delete-new]`**: What to do in case of a failure. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/metadata.json new file mode 100644 index 00000000..d82f5068 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0003_data-import-export/metadata.json @@ -0,0 +1 @@ +{"title": "Data import/export"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0000_rm.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0000_rm.mdx new file mode 100644 index 00000000..47baf9a3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0000_rm.mdx @@ -0,0 +1,40 @@ +export const meta = {id: "rm", title: "sgr rm", sidebarTitle: "rm", description: "Delete schemas, repositories or images."}; + +```sgr rm [OPTIONS] IMAGE_SPEC``` + +Delete schemas, repositories or images. + +If the target of this command is a Postgres schema, this performs DROP SCHEMA CASCADE. + +If the target of this command is a Splitgraph repository, this deletes the repository and all of its history. + +If the target of this command is an image, this deletes the image and all of its children. + +In any case, this command will ask for confirmation of the deletion, unless ``-y`` is passed. If ``-r`` +(``--remote``), is passed, this will perform deletion on a remote Splitgraph engine (registered in the config) +instead, assuming the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Examples + +``sgr rm temporary_schema`` + +Deletes ``temporary_schema`` from the local engine. + +``sgr rm --remote data.splitgraph.com username/repo`` + +Deletes ``username/repo`` from the Splitgraph registry. + +``sgr rm -y username/repo:old_branch`` + +Deletes the image pointed to by ``old_branch`` as well as all of its children (images created by a commit based +on this image), as well as all of the tags that point to now deleted images, without asking for confirmation. +Note this will not delete images that import tables from the deleted images via Splitfiles or indeed the +physical objects containing the actual tables. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0001_init.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0001_init.mdx new file mode 100644 index 00000000..e4ab8d4d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0001_init.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "init", title: "sgr init", sidebarTitle: "init", description: "Initialize a new repository/engine."}; + +```sgr init [OPTIONS] [REPOSITORY]``` + +Initialize a new repository/engine. + +### Examples + +`sgr init` + +Initializes the current local Splitgraph engine by writing some bookkeeping information. +This is required for the rest of sgr to work. + +`sgr init --skip-object-handling` + +Initializes a Splitgraph engine without installing audit triggers or object management routines: +this is useful for engines that aren't intended to be used for image checkouts. + +``sgr init new/repo`` + +Creates a single image with the hash ``00000...`` in ``new/repo`` + +### Options + + * **`--skip-object-handling`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0002_cleanup.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0002_cleanup.mdx new file mode 100644 index 00000000..c23688a4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0002_cleanup.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "cleanup", title: "sgr cleanup", sidebarTitle: "cleanup", description: "Prune unneeded objects from the engine."}; + +```sgr cleanup [OPTIONS] ``` + +Prune unneeded objects from the engine. + +This deletes all objects from the cache that aren't required by any local repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0003_prune.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0003_prune.mdx new file mode 100644 index 00000000..64c2d49b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0003_prune.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "prune", title: "sgr prune", sidebarTitle: "prune", description: "Cleanup dangling images from a repository."}; + +```sgr prune [OPTIONS] REPOSITORY``` + +Cleanup dangling images from a repository. + +This includes images not pointed to by any tags (or checked out) and those that aren't required by any of +such images. + +Will ask for confirmation of the deletion, unless ``-y ``is passed. If ``-r`` (``--remote``) is +passed, this will perform deletion on a remote Splitgraph engine (registered in the config) instead, assuming +the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0004_config.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0004_config.mdx new file mode 100644 index 00000000..7fcaa53c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0004_config.mdx @@ -0,0 +1,33 @@ +export const meta = {id: "config", title: "sgr config", sidebarTitle: "config", description: "Print the current Splitgraph configuration."}; + +```sgr config [OPTIONS] ``` + +Print the current Splitgraph configuration. + +This takes into account the local config file, the default values +and all overrides specified via environment variables. + +This command can be used to dump the current Splitgraph configuration into a file: + +``` +sgr config --no-shielding --config-format > .sgconfig +``` + +...or save a config file overriding an entry: + +``` +SG_REPO_LOOKUP=engine1,engine2 sgr config -sc > .sgconfig +``` + +If `--conn-string` is passed, this prints out a libpq connection string +that can be used to connect to the default Splitgraph engine with other tools: + +``` +pgcli $(sgr config -n) +``` + +### Options + + * **`-s, --no-shielding`**: If set, doesn't replace sensitive values (like passwords) with asterisks + * **`-c, --config-format`**: Output configuration in the Splitgraph config file format + * **`-n, --conn-string`**: Print a libpq connection string to the engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0005_dump.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0005_dump.mdx new file mode 100644 index 00000000..111baceb --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0005_dump.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "dump", title: "sgr dump", sidebarTitle: "dump", description: "Dump a repository to SQL."}; + +```sgr dump [OPTIONS] REPOSITORY``` + +Dump a repository to SQL. + +### Options + + * **`--exclude-object-contents`**: Don't dump the commands needed to recreate objects required by the repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0006_eval.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0006_eval.mdx new file mode 100644 index 00000000..5b4b7f0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0006_eval.mdx @@ -0,0 +1,39 @@ +export const meta = {id: "eval", title: "sgr eval", sidebarTitle: "eval", description: "Evaluate a Python snippet using the Splitgraph API."}; + +```sgr eval [OPTIONS] COMMAND``` + +Evaluate a Python snippet using the Splitgraph API. + +This is for advanced users only and should be only used +if you know what you are doing. + +Normal Python statements are supported and the command is evaluated +in a namespace where the following is already imported and available: + + * Repository: class that instantiates a Splitgraph repository and makes + API functions like .commit(), .checkout() etc available. + + * engine: Current local engine + + * object_manager: an instance of ObjectManager that allows + to get information about objects and manage the object cache. + + +Example: +``` +sgr eval 'import json; print(json.dumps(Repository\ + .from_schema(repo_name)\ + .images["latest"]\ + .get_table(table_name)\ + .table_schema))' \ +-a repo_name my_repo -a table_name my_table +``` + +Will dump the schema of table my_table in the most recent image in my_repo in JSON format. + +For more information, see the Splitgraph API reference. + +### Options + + * **`--i-know-what-im-doing`**: Pass this if you're sure that the code you're running is safe and don't want to be prompted. + * **`-a, --arg ...`**: Make extra variables available in the command's namespace diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0007_upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0007_upgrade.mdx new file mode 100644 index 00000000..188e798b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/0007_upgrade.mdx @@ -0,0 +1,17 @@ +export const meta = {id: "upgrade", title: "sgr upgrade", sidebarTitle: "upgrade", description: "Upgrade sgr client and engine."}; + +```sgr upgrade [OPTIONS] [VERSION]``` + +Upgrade sgr client and engine. + +This will try to download the most recent stable binary for the current platform +into the location this binary is running from and then upgrade the default engine. + +This method is only supported for single-binary installs and engines managed +by `sgr engine`. + +### Options + + * **`--skip-engine-upgrade`**: Only upgrade the client + * **`--path TEXT`**: Override the path to download the new binary to. + * **`--force`**: Reinstall older/same versions. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/metadata.json new file mode 100644 index 00000000..26f7a103 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0004_miscellaneous/metadata.json @@ -0,0 +1 @@ +{"title": "Miscellaneous"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/0000_clone.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/0000_clone.mdx new file mode 100644 index 00000000..7c2929bd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/0000_clone.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "clone", title: "sgr clone", sidebarTitle: "clone", description: "Clone a remote Splitgraph repository/image into a local one."}; + +```sgr clone [OPTIONS] REMOTE_REPOSITORY_OR_IMAGE [LOCAL_REPOSITORY]``` + +Clone a remote Splitgraph repository/image into a local one. + +The lookup path for the repository is governed by the ``SG_REPO_LOOKUP`` and ``SG_REPO_LOOKUP_OVERRIDE`` +config parameters and can be overridden by the command line ``--remote`` option. + +### Options + + * **`-r, --remote TEXT`**: Name of the remote engine + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/0001_push.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/0001_push.mdx new file mode 100644 index 00000000..60ba1e17 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/0001_push.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "push", title: "sgr push", sidebarTitle: "push", description: "Push images the Splitgraph registry or another engine."}; + +```sgr push [OPTIONS] REPOSITORY_OR_IMAGE [REMOTE_REPOSITORY]``` + +Push images the Splitgraph registry or another engine. + +If an image is not specified (e.g. `sgr push noaa/climate`, this will push all new images. + +By default, the repository will be pushed to a repository with the same name in the user's namespace +(SG_NAMESPACE configuration value which defaults to the username). + +If there's a single engine registered in the config (e.g. data.splitgraph.com), it shall be the default +destination. + +If an upstream repository/engine has been configured for this engine with `sgr upstream`, +it will be used instead. + +Finally, if `remote_repository` or `--remote` are passed, they will take precedence. + +The actual objects will be uploaded to S3 using Minio. When pushing to another engine, +you can choose to upload them directly by passing `--handler DB`. + +### Options + + * **`-r, --remote []`**: Name of the remote engine + * **`-h, --upload-handler TEXT`**: Upload handler + * **`-o, --upload-handler-options JSON`**: Upload handler parameters + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing remote objects + * **`-t, --tags`**: Overwrite tags for pushed image/repo + * **`-u, --reupload-objects`**: Reupload objects that metadata is pushed out for diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/0002_pull.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/0002_pull.mdx new file mode 100644 index 00000000..d1b631d1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/0002_pull.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "pull", title: "sgr pull", sidebarTitle: "pull", description: "Pull changes / download a single image."}; + +```sgr pull [OPTIONS] REPOSITORY_OR_IMAGE``` + +Pull changes / download a single image. + +### Options + + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/0003_upstream.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/0003_upstream.mdx new file mode 100644 index 00000000..32f1d6ec --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/0003_upstream.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "upstream", title: "sgr upstream", sidebarTitle: "upstream", description: "Get or set the upstream for a repository."}; + +```sgr upstream [OPTIONS] REPOSITORY``` + +Get or set the upstream for a repository. + +This shows the default repository used for pushes and pulls as well as allows to change it to a different +remote engine and repository. + +The remote engine alias must exist in the config file. + +### Examples + +``sgr upstream my/repo --set splitgraph.com username/repo`` + +Sets the upstream for ``my/repo`` to ``username/repo`` existing on the ``splitgraph.com`` engine + +``sgr upstream my/repo --reset`` + +Removes the upstream for ``my/repo``. + +``sgr upstream my/repo`` + +Shows the current upstream for ``my/repo``. + +### Options + + * **`-s, --set ...`**: Set the upstream to a engine alias + repository + * **`-r, --reset`**: Delete the upstream diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/metadata.json new file mode 100644 index 00000000..b2c1ab8d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0005_sharing-images/metadata.json @@ -0,0 +1 @@ +{"title": "Sharing images"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/0000_build.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/0000_build.mdx new file mode 100644 index 00000000..2204aae2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/0000_build.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "build", title: "sgr build", sidebarTitle: "build", description: "Build Splitgraph images."}; + +```sgr build [OPTIONS] SPLITFILE``` + +Build Splitgraph images. + +This executes a Splitfile, building a new image or checking it out from cache if the same +image had already been built. + +### Examples + +``sgr build my.splitfile`` + +Executes ``my.splitfile`` and writes its output into a new repository with the same name +as the Splitfile (my) unless the name is specified in the Splitfile. + +``sgr build my.splitfile -o mynew/repo`` + +Executes ``my.splitfile`` and writes its output into ``mynew/repo``. + +``sgr build my_other.splitfile -o mynew/otherrepo --args PARAM1 VAL1 --args PARAM2 VAL2`` + +Executes ``my_other.splitfile`` with parameters ``PARAM1`` and ``PARAM2`` set to +``VAL1`` and ``VAL2``, respectively. + +### Options + + * **`-a, --args ...`**: Parameters to be substituted into the Splitfile. All parameters mentioned in the file must be specified in order for the Splitfile to be executed. + * **`-o, --output-repository REPOSITORY`**: Repository to store the result in. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/0001_rebuild.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/0001_rebuild.mdx new file mode 100644 index 00000000..8194b0f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/0001_rebuild.mdx @@ -0,0 +1,27 @@ +export const meta = {id: "rebuild", title: "sgr rebuild", sidebarTitle: "rebuild", description: "Rebuild images against different dependencies."}; + +```sgr rebuild [OPTIONS] IMAGE_SPEC``` + +Rebuild images against different dependencies. + +Examines the provenance of a Splitgraph image created by a Splitfile and reruns it against different images than +the ones that were imported by the original run. + +### Examples + +``sgr rebuild my/repo --against noaa/climate:old_data`` + +Reconstructs the Splitfile used to create ``my/repo:latest``, replaces all imports from ``noaa/climate`` with +imports from ``noaa/climate:old_data`` and reruns the Splitfile. + +``sgr rebuild my/repo:other_tag -u`` + +Rebuilds ``my_repo:other_tag`` against the latest versions of all of its dependencies. + +Image caching still works in this case: if the result of the rebuild already exists, the image will be checked +out. + +### Options + + * **`-u, --update`**: Rederive the image against the latest version of all dependencies. + * **`-a, --against IMAGE`**: Images to substitute into the reconstructed Splitfile, of the form [NAMESPACE/]REPOSITORY[:HASH_OR_TAG]. Default tag is 'latest'. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/0002_provenance.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/0002_provenance.mdx new file mode 100644 index 00000000..45d3a5a8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/0002_provenance.mdx @@ -0,0 +1,62 @@ +export const meta = {id: "provenance", title: "sgr provenance", sidebarTitle: "provenance", description: "Reconstruct the provenance of an image."}; + +```sgr provenance [OPTIONS] IMAGE_SPEC``` + +Reconstruct the provenance of an image. + +This inspects the image to produce a list of images that were used by the Splitfile +that created it, or a Splitfile with the same effect. + +`IMAGE_SPEC` must be of the form `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]`. +If no tag is specified, `latest` is used. + +### Examples + +Assume `my/repo` is produced by the following Splitfile: + +``` +FROM MOUNT [...] IMPORT external_table +FROM noaa/climate IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} AS rainfall_data +``` + +`my/repo` will have 2 images: one having `hash_1` (with the `external_table` imported from a mounted database) +and one having `hash_2` (with both `external_table` and the `rainfall_data` containing the result +of the query run against the then-latest image in the `noaa/climate` repository). + +In this case: + +``` +sgr provenance my/repo +``` + +Returns a list of repositories and images that were imported by the Splitfile that constructed this image:: + +``` +my/repo:[hash_2] depends on: +noaa/climate:[hash_3] +``` + +Where `hash_3` is the hash of the latest image in the `noaa/climate` repository at the time the original +Splitfile was run. However: + +``` +sgr provenance -f my/repo +``` + +Will try to reconstruct the Splitfile that can be used to build this image. Since the FROM MOUNT command isn't +reproducible (requires access to the original external database, which is a moving target), this will fail. + +If `-e` is passed, this will emit information about irreproducible commands instead of failing. + +``` +sgr provenance -ef my/repo + +# Splitfile commands used to reconstruct my/repo:[image_hash] +# Irreproducible Splitfile command of type MOUNT +FROM noaa/climate:[hash_3] IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} +``` + +### Options + + * **`-f, --full`**: Recreate the Splitfile used to create this image + * **`-e, --ignore-errors`**: If set, ignore commands that aren't reproducible (like MOUNT or custom commands) diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/0003_dependents.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/0003_dependents.mdx new file mode 100644 index 00000000..fc8bc234 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/0003_dependents.mdx @@ -0,0 +1,21 @@ +export const meta = {id: "dependents", title: "sgr dependents", sidebarTitle: "dependents", description: "List images that were created from an image."}; + +```sgr dependents [OPTIONS] IMAGE_SPEC``` + +List images that were created from an image. + +This is the inverse of the sgr provenance command. It will list all images that were +created using a Splitfile that imported data from this image. + +By default, this will look at images on the local engine. The engine can be overridden +with --source-on and --dependents-on. For example: + + sgr dependents --source-on data.splitgraph.com --dependents-on LOCAL noaa/climate:latest + +will show all images on the local engine that derived data from `noaa/climate:latest` +on the Splitgraph registry. + +### Options + + * **`-O, --source-on TEXT`**: Override the engine to look the source up on + * **`-o, --dependents-on TEXT`**: Override the engine to list dependents from diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/metadata.json new file mode 100644 index 00000000..50afd08a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0006_splitfile-execution/metadata.json @@ -0,0 +1 @@ +{"title": "Splitfile execution"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0000_cloud-register.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0000_cloud-register.mdx new file mode 100644 index 00000000..089ce0c6 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0000_cloud-register.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "cloud-register", title: "sgr cloud register", sidebarTitle: "cloud register", description: "Register the user on a Splitgraph registry."}; + +```sgr cloud register [OPTIONS] ``` + +Register the user on a Splitgraph registry. + +By default, this registers the user on data.splitgraph.com, +obtains a set of machine (API) credentials for the client to communicate +with the registry and configures the data.splitgraph.com engine. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--email TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to register on. + * **`--accept-tos`**: Accept the registry's Terms of Service + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0001_cloud-login.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0001_cloud-login.mdx new file mode 100644 index 00000000..cb99d6c1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0001_cloud-login.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "cloud-login", title: "sgr cloud login", sidebarTitle: "cloud login", description: "Log into a Splitgraph registry with username/password."}; + +```sgr cloud login [OPTIONS] ``` + +Log into a Splitgraph registry with username/password. + +This will generate a new refresh token (to use the Splitgraph query API) +and API keys to let sgr access the registry (if they don't already exist +in the configuration file or if the actual username has changed). + +Note that if you already have generated an API key pair but it's not +in the configuration file, this will generate a new pair instead of +restoring the existing one, as the API secret is only stored in the configuration file. + +If you want to log in using an existing API key pair, use `sgr cloud login-api` instead. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`--overwrite`**: Overwrite old API keys in the config if they exist + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0002_cloud-login-api.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0002_cloud-login-api.mdx new file mode 100644 index 00000000..4007fe22 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0002_cloud-login-api.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "cloud-login-api", title: "sgr cloud login-api", sidebarTitle: "cloud login-api", description: "Log into a Splitgraph registry using existing API keys."}; + +```sgr cloud login-api [OPTIONS] ``` + +Log into a Splitgraph registry using existing API keys. + +This will inject the API keys for the registry into the configuration file +and generate a new access token. + +### Options + + * **`--api-key TEXT`**: + * **`--api-secret TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0003_cloud-sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0003_cloud-sql.mdx new file mode 100644 index 00000000..56c4be0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0003_cloud-sql.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "cloud-sql", title: "sgr cloud sql", sidebarTitle: "cloud sql", description: "Run SQL on or connect to the Splitgraph Data Delivery Network."}; + +```sgr cloud sql [OPTIONS] [QUERY]``` + +Run SQL on or connect to the Splitgraph Data Delivery Network. + +If a query isn't passed, this will return a libpq-compatible connection string to +the registry's SQL endpoint. It can be used to connect to the endpoint with other SQL clients: + +``` +pgcli $(sgr cloud sql) +``` + +If a query is passed, this will run an SQL query against the SQL endpoint. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0004_cloud-curl.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0004_cloud-curl.mdx new file mode 100644 index 00000000..e902965b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0004_cloud-curl.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "cloud-curl", title: "sgr cloud curl", sidebarTitle: "cloud curl", description: "Query a Splitgraph REST API."}; + +```sgr cloud curl [OPTIONS] IMAGE [REQUEST_PARAMS]``` + +Query a Splitgraph REST API. + +This is a thin wrapper around curl that performs an HTTP request to Splitgraph Cloud to +interact with a dataset using PostgREST (http://postgrest.org) or the Splitfile execution service. + +The actual invocation is: + +``` +curl [API endpoint][request] -H [access_token] [extra curl args]. +``` + +The image must be of the form `namespace/repository:[hash_or_tag (default latest)]`. + +The actual request parameters depend on the request type: + + * For PostgREST: `/table?[postgrest request]` or empty to get the OpenAPI spec for this image. + For a reference on how to perform Postgrest requests, see http://postgrest.org/en/latest/api.html. + * For the Splitfile executor: a JSON array to be POSTed to the executor, e.g. + `'{"command": "FROM some/repo IMPORT some_table AS alias", "tag": "new_tag"}'`. + +`--curl-args` allows to pass extra arguments to curl. Note that every argument must be prefixed +with `--curl-args`, e.g. `--curl-args --cacert --curl-args /path/to/ca.pem`. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-t, --request-type [postgrest|splitfile]`**: + * **`-c, --curl-args TEXT`**: Extra arguments to be passed to curl diff --git a/content/docs/9000_sgr/0007_splitgraph-cloud/0005_cloud-readme.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0005_cloud-readme.mdx similarity index 100% rename from content/docs/9000_sgr/0007_splitgraph-cloud/0005_cloud-readme.mdx rename to content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0005_cloud-readme.mdx diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0006_cloud-description.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0006_cloud-description.mdx new file mode 100644 index 00000000..003c953f --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0006_cloud-description.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-description", title: "sgr cloud description", sidebarTitle: "cloud description", description: "Upload a description to a Splitgraph repository."}; + +```sgr cloud description [OPTIONS] REPOSITORY DESCRIPTION``` + +Upload a description to a Splitgraph repository. + +The repository must have already been pushed. The description should be plain text, 160 characters or shorter. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0007_cloud-metadata.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0007_cloud-metadata.mdx new file mode 100644 index 00000000..01b2f064 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0007_cloud-metadata.mdx @@ -0,0 +1,41 @@ +export const meta = {id: "cloud-metadata", title: "sgr cloud metadata", sidebarTitle: "cloud metadata", description: "Upload a metadata file to a Splitgraph repository."}; + +```sgr cloud metadata [OPTIONS] REPOSITORY [METADATA_FILE]``` + +Upload a metadata file to a Splitgraph repository. + +This can manipulate the repository's short description, README, topics, license, sources and extra metadata. + +The metadata file must be a YAML file. Omitting a key doesn't delete the value. + +For example: + + +``` +readme: dataset-readme.md +description: Dataset description (160 characters max). +topics: + - topic_1 + - topic_2 +sources: + - anchor: Source + href: https://www.splitgraph.com + isCreator: true + isSameAs: false + - anchor: Source 2 + href: https://www.splitgraph.com + isCreator: false + isSameAs: true +license: Public Domain +extra_metadata: + key_1: + key_1_1: value_1_1 + key_1_2: value_1_2 + key_2: + key_2_1: value_2_1 + key_2_2: value_2_2 +``` + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0008_cloud-search.mdx b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0008_cloud-search.mdx new file mode 100644 index 00000000..c23c31f4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/0008_cloud-search.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "cloud-search", title: "sgr cloud search", sidebarTitle: "cloud search", description: "Search for a repository on the Splitgraph registry."}; + +```sgr cloud search [OPTIONS] QUERY``` + +Search for a repository on the Splitgraph registry. + +For more advanced search, including filtering by topics, go to the registry's website itself. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--limit INTEGER RANGE`**: Number of results to return diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/metadata.json new file mode 100644 index 00000000..25ba655e --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/0007_splitgraph-cloud/metadata.json @@ -0,0 +1 @@ +{"title": "Splitgraph Cloud"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.10/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.10/metadata.json new file mode 100644 index 00000000..5e8a88f4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.10/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.10", + "updated_at": "2022-01-20T00:00:50.955Z", + "release": { + "id": 39960104, + "tag_name": "v0.2.10", + "target_commitish": "3688be4452e0a98e4510876b085b29a61d9c73be", + "created_at": "2021-03-17T17:52:24Z", + "published_at": "2021-03-17T18:18:59Z", + "assets": [ + { + "id": 33604378, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/33604378", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-03-17T18:18:16Z", + "updated_at": "2021-03-17T18:18:16Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.10/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0000_checkout.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0000_checkout.mdx new file mode 100644 index 00000000..cc805a26 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0000_checkout.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "checkout", title: "sgr checkout", sidebarTitle: "checkout", description: "Check out a Splitgraph image into a Postgres schema."}; + +```sgr checkout [OPTIONS] IMAGE_SPEC``` + +Check out a Splitgraph image into a Postgres schema. + +This downloads the required physical objects and materializes all tables, unless ``-l`` or ``--layered`` is passed, +in which case the objects are downloaded and a foreign data wrapper is set up on the engine to satisfy read-only +queries by combining results from each table's fragments. + +Tables checked out in this way are still presented as normal Postgres tables and can queried in the same way. +Since the tables aren't materialized, layered querying is faster to set up, but since each query now results in a +subquery to each object comprising the table, actual query execution is slower than to materialized Postgres tables. + +Layered querying is only supported for read-only queries. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. Note that currently, the schema that the +image is checked out into has to have the same name as the repository. If no image hash or tag is passed, +"HEAD" is assumed. + +If ``-u`` or ``--uncheckout`` is passed, this instead deletes the checked out schema (assuming there are no pending +changes) and removes the HEAD pointer. + +If ``--force`` isn't passed and the schema has pending changes, this will fail. + +### Options + + * **`-f, --force`**: Discard all pending changes to the schema + * **`-u, --uncheckout`**: Delete the checked out copy instead + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0001_commit.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0001_commit.mdx new file mode 100644 index 00000000..9a2ec1f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0001_commit.mdx @@ -0,0 +1,59 @@ +export const meta = {id: "commit", title: "sgr commit", sidebarTitle: "commit", description: "Commit changes to a checked-out Splitgraph repository."}; + +```sgr commit [OPTIONS] REPOSITORY``` + +Commit changes to a checked-out Splitgraph repository. + +This packages up all changes into a new image. Where a table hasn't been created or had its schema changed, +this will delta compress the changes. For all other tables (or if ``-s`` has been passed), this will +store them as full table snapshots. + +When a table is stored as a full snapshot, `--chunk-size` sets the maximum size, in rows, of the fragments +that the table will be split into (default is no splitting). The splitting is done by the +table's primary key. + +If `--split-changesets` is passed, delta-compressed changes will also be split up according to the original +table chunk boundaries. For example, if there's a change to the first and the 20000th row of a table that was +originally committed with `--chunk-size=10000`, this will create 2 fragments: one based on the first chunk +and one on the second chunk of the table. + +If `--chunk-sort-keys` is passed, data inside the chunk is sorted by this key (or multiple keys). +This helps speed up queries on those keys for storage layers than can leverage that (e.g. CStore). The expected format is JSON, e.g. `{table_1: [col_1, col_2]}` + +`--index-options` expects a JSON-serialized dictionary of `{table: index_type: column: index_specific_kwargs}`. +Indexes are used to narrow down the amount of chunks to scan through when running a query. By default, each column +has a range index (minimum and maximum values) and it's possible to add bloom filtering to speed up queries that +involve equalities. + +Bloom filtering allows to trade off between the space overhead of the index and the probability of a false +positive (claiming that an object contains a record when it actually doesn't, leading to extra scans). + +An example `index-options` dictionary: + + +``` +{ + "table": { + "bloom": { + "column_1": { + "probability": 0.01, # Only one of probability + "size": 10000 # or size can be specified. + } + }, + # Only compute the range index on these columns. By default, + # it's computed on all columns and is always computed on the + # primary key no matter what. + "range": ["column_2", "column_3"] + } +} +``` + +### Options + + * **`-s, --snap`**: Do not delta compress the changes and instead store the whole table again. This consumes more space, but makes checkouts faster. + * **`-c, --chunk-size INTEGER`**: Split new tables into chunks of this many rows (by primary key). The default value is governed by the SG_COMMIT_CHUNK_SIZE configuration parameter. + * **`-k, --chunk-sort-keys JSON`**: Sort the data inside each chunk by this/these key(s) + * **`-t, --split-changesets`**: Split changesets for existing tables across original chunk boundaries. + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate on the new objects. + * **`-m, --message TEXT`**: Optional commit message + * **`-o, --overwrite`**: Overwrite physical objects that already exist diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0002_tag.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0002_tag.mdx new file mode 100644 index 00000000..89f01837 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0002_tag.mdx @@ -0,0 +1,36 @@ +export const meta = {id: "tag", title: "sgr tag", sidebarTitle: "tag", description: "Manage tags on images."}; + +```sgr tag [OPTIONS] IMAGE_SPEC [TAG]``` + +Manage tags on images. + +Depending on the exact invocation, this command can tag a Splitgraph image, +list all tags in a repository or delete a tag. + +### Examples + +``sgr tag noaa/climate`` + +List all tagged images in the ``noaa/climate`` repository and their tags. + +``sgr tag noaa/climate:abcdef1234567890`` + +List all tags assigned to the image ``noaa/climate:abcdef1234567890...`` + +``sgr tag noaa/climate:abcdef1234567890 my_new_tag`` + +Tag the image ``noaa/climate:abcdef1234567890...`` with ``my_new_tag``. If the tag already exists, this will +overwrite the tag. + +``sgr tag noaa/climate my_new_tag`` + +Tag the current ``HEAD`` of ``noaa/climate`` with ``my_new_tag``. + +``sgr tag --delete noaa/climate:my_new_tag`` + +Delete the tag ``my_new_tag`` from ``noaa/climate``. + +### Options + + * **`-d, --delete`**: Delete the tag instead. + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0003_import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0003_import.mdx new file mode 100644 index 00000000..b69bbfb4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0003_import.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "import", title: "sgr import", sidebarTitle: "import", description: "Import tables into a Splitgraph repository."}; + +```sgr import [OPTIONS] IMAGE_SPEC TABLE_OR_QUERY TARGET_REPOSITORY [TARGET_TABLE]``` + +Import tables into a Splitgraph repository. + +Imports a table or a result of a query from a local Splitgraph repository or a Postgres schema into another +Splitgraph repository. + +### Examples + +``sgr import noaa/climate:my_tag climate_data my/repository`` + +Create a new image in ``my/repository`` with the ``climate_data`` table included. This links the new image to +the physical object, meaning that the history of the ``climate_data`` table is preserved. + +If no tag is specified, the 'latest' (not the HEAD image or current state of the checked out image) +image is used. + +``sgr import noaa/climate:my_tag "SELECT * FROM climate_data" my/repository climate_data`` + +Create a new image in ``my/repository`` with the result of the query stored in the ``climate_data`` table. This +creates a new physical object without any linkage to the original data, so the history of the ``climate_data`` +table isn't preserved. The SQL query can interact with multiple tables in the source image. + +``sgr import other_schema other_table my/repository`` + +Since other_schema isn't a Splitgraph repository, this will copy ``other_schema.other_table`` +into a new Splitgraph object and add the ``other_table`` table to a new image in ``my/repository``. + +Note that importing doesn't discard or commit pending changes in the target Splitgraph repository: a new image +is created with the new table added, the new table is materialized in the repository and the HEAD pointer is moved. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0004_reindex.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0004_reindex.mdx new file mode 100644 index 00000000..b640ffe3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/0004_reindex.mdx @@ -0,0 +1,19 @@ +export const meta = {id: "reindex", title: "sgr reindex", sidebarTitle: "reindex", description: "Run extra indexes on a table."}; + +```sgr reindex [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Run extra indexes on a table. This will merge the indexing results for all objects +that a table is formed from with the current object indexes. For explanation of +what indexes do, see the documentation for `sgr commit`. + +If the objects haven't been downloaded yet, this will download them. + +Currently reindexing objects that change other objects is unsupported and will raise +an error. Pass `-o` to ignore these objects and only reindex supported objects. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate, e.g. '{"bloom": {"column_1": {"probability": 0.01}}}' [required] + * **`-o, --ignore-patch-objects`**: Ignore objects that change other objects' rows instead of raising an error diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/metadata.json new file mode 100644 index 00000000..9ef75b16 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0000_image-management-creation/metadata.json @@ -0,0 +1 @@ +{"title": "Image management/creation"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0000_log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0000_log.mdx new file mode 100644 index 00000000..db5078b4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0000_log.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "log", title: "sgr log", sidebarTitle: "log", description: "Show the history of a Splitgraph repository/image."}; + +```sgr log [OPTIONS] IMAGE_SPEC``` + +Show the history of a Splitgraph repository/image. + +By default, this shows the history of the current branch, starting from the HEAD pointer and following its +parent chain. + +Alternatively, it can follow the parent chain of any other image. + +If ``-t`` or ``--tree`` is passed, this instead renders the full image tree. The repository doesn't need to have +been checked out in this case. + +### Options + + * **`-t, --tree`**: + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0001_diff.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0001_diff.mdx new file mode 100644 index 00000000..8ef569e8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0001_diff.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "diff", title: "sgr diff", sidebarTitle: "diff", description: "Show differences between two Splitgraph images."}; + +```sgr diff [OPTIONS] REPOSITORY [TAG_OR_HASH_1] [TAG_OR_HASH_2]``` + +Show differences between two Splitgraph images. + +The two images must be in the same repository. The actual targets of this command depend +on the number of arguments passed: + +``sgr diff REPOSITORY`` + +Return the differences between the current HEAD image and the checked out schema. + +``sgr diff REPOSITORY TAG_OR_HASH`` + +Return the differences between the image and its parent. + +``sgr diff REPOSITORY TAG_OR_HASH_1 TAG_OR_HASH_2`` + +Return the differences from the first (earlier) image to the second image. + +### Options + + * **`-v, --verbose`**: Include the actual differences rather than just the total number of updated rows. + * **`-t, --table-name TEXT`**: Show the differences for a single table. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0002_object.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0002_object.mdx new file mode 100644 index 00000000..ff8c38a9 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0002_object.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "object", title: "sgr object", sidebarTitle: "object", description: "Show information about a Splitgraph object."}; + +```sgr object [OPTIONS] OBJECT_ID``` + +Show information about a Splitgraph object. + +Objects, or fragments, are building blocks of Splitgraph tables: each table consists of multiple immutable fragments +that can partially overwrite each other. Each fragment might have a parent that it depends on. In addition, +the smallest and largest values for every column are stored in the fragment's metadata. This information is used +to choose which objects to download in order to execute a query against a table. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0003_objects.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0003_objects.mdx new file mode 100644 index 00000000..c56fa727 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0003_objects.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "objects", title: "sgr objects", sidebarTitle: "objects", description: "List objects known to this engine."}; + +```sgr objects [OPTIONS] ``` + +List objects known to this engine. + +### Options + + * **`--local`**: Show only objects that are physically present on this engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0004_show.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0004_show.mdx new file mode 100644 index 00000000..4ddcc55d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0004_show.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "show", title: "sgr show", sidebarTitle: "show", description: "Show information about a Splitgraph image."}; + +```sgr show [OPTIONS] IMAGE_SPEC``` + +Show information about a Splitgraph image. This includes its parent, comment, size and creation time. + +Note that the size isn't the on-disk footprint, as the image might share some objects with other images +or if some of the image's objects have not been downloaded. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0005_table.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0005_table.mdx new file mode 100644 index 00000000..cc681c85 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0005_table.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "table", title: "sgr table", sidebarTitle: "table", description: "Show information about a table in a Splitgraph image."}; + +```sgr table [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Show information about a table in a Splitgraph image. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-v, --verbose`**: Show all of table's objects. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0006_sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0006_sql.mdx new file mode 100644 index 00000000..ea8a304b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0006_sql.mdx @@ -0,0 +1,34 @@ +export const meta = {id: "sql", title: "sgr sql", sidebarTitle: "sql", description: "Run an SQL statement against the Splitgraph engine."}; + +```sgr sql [OPTIONS] SQL``` + +Run an SQL statement against the Splitgraph engine. + +There are no restrictions on the contents of the statement: this is the same as running it +from any other PostgreSQL client. + +If ``--schema`` is specified, the statement is run with the ``search_path`` set to that schema. This means +that these statements are equivalent: + + +``` +sgr sql "SELECT * FROM "noaa/climate".table" +sgr sql -s noaa/climate "SELECT * FROM table" +``` + +If `--image` is specified, this will run the statement against that image using layered querying. +Only read-only statements are supported. For example: + + +``` +sgr sql -i noaa/climate:latest "SELECT * FROM table" +``` + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-s, --schema TEXT`**: Run SQL against this schema. + * **`-i, --image IMAGE`**: Run SQL against this image. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON + * **`-n, --no-transaction`**: Don't wrap the SQL in a transaction. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0007_status.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0007_status.mdx new file mode 100644 index 00000000..5e312f11 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/0007_status.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "status", title: "sgr status", sidebarTitle: "status", description: "Show the status of the Splitgraph engine."}; + +```sgr status [OPTIONS] [REPOSITORY]``` + +Show the status of the Splitgraph engine. + +If a repository is passed, show in-depth information about a repository. + +If not, show information about all repositories local to the engine. This will show a list +of all repositories, number of local images and tags, total repository size (theoretical +maximum size and current on-disk footprint of cached objects) and the current checked +out image (with LQ if the image is checked out using read-only layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/metadata.json new file mode 100644 index 00000000..a2c3f0f8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0001_image-information/metadata.json @@ -0,0 +1 @@ +{"title": "Image information"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0000_engine-add.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0000_engine-add.mdx new file mode 100644 index 00000000..c0b69417 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0000_engine-add.mdx @@ -0,0 +1,26 @@ +export const meta = {id: "engine-add", title: "sgr engine add", sidebarTitle: "engine add", description: "Create and start a Splitgraph engine."}; + +```sgr engine add [OPTIONS] [NAME]``` + +Create and start a Splitgraph engine. + +This will pull the Splitgraph engine image, start it, create a Postgres user and initialize +the engine. + +This also creates Docker volumes required to persist data/metadata. + +The engine Docker container by default will be named `splitgraph_engine_default` and +its data and metadata volumes will have names `splitgraph_engine_default_data` and +`splitgraph_engine_default_metadata`. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`-p, --port INTEGER`**: Port to start the engine on + * **`-u, --username TEXT`**: + * **`--no-init`**: Don't run `sgr init` on the engine + * **`--no-sgconfig`**: Don't add the engine to .sgconfig + * **`--inject-source`**: Inject the current Splitgraph source code into the engine using Docker bind mounts + * **`--no-pull`**: Don't pull the Docker image + * **`--set-default`**: Set the engine as the default engine in the config regardless of its name + * **`--password TEXT`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0001_engine-delete.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0001_engine-delete.mdx new file mode 100644 index 00000000..6229e082 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0001_engine-delete.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "engine-delete", title: "sgr engine delete", sidebarTitle: "engine delete", description: "Delete the Splitgraph engine container."}; + +```sgr engine delete [OPTIONS] [NAME]``` + +Delete the Splitgraph engine container. + +### Options + + * **`-y, --yes`**: Do not prompt for confirmation. + * **`-f, --force`**: Delete the engine anyway if it's running. + * **`-v, --with-volumes`**: Include the engine's volumes (if not specified, volumes will be reattached when an engine with the same name is created). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0002_engine-list.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0002_engine-list.mdx new file mode 100644 index 00000000..a2530db2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0002_engine-list.mdx @@ -0,0 +1,13 @@ +export const meta = {id: "engine-list", title: "sgr engine list", sidebarTitle: "engine list", description: "List Splitgraph engines."}; + +```sgr engine list [OPTIONS] ``` + +List Splitgraph engines. + +This only lists Docker containers that were created by sgr engine +(whose names start with `splitgraph_engine_`. To manage other engines, +use Docker CLI directly. + +### Options + + * **`-a, --include-all`**: Include stopped engine containers. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0003_engine-start.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0003_engine-start.mdx new file mode 100644 index 00000000..4c9cdf6c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0003_engine-start.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-start", title: "sgr engine start", sidebarTitle: "engine start", description: "Start a Splitgraph engine."}; + +```sgr engine start [OPTIONS] [NAME]``` + +Start a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0004_engine-stop.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0004_engine-stop.mdx new file mode 100644 index 00000000..7ea64786 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0004_engine-stop.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-stop", title: "sgr engine stop", sidebarTitle: "engine stop", description: "Stop a Splitgraph engine."}; + +```sgr engine stop [OPTIONS] [NAME]``` + +Stop a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0005_engine-upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0005_engine-upgrade.mdx new file mode 100644 index 00000000..751cd998 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0005_engine-upgrade.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "engine-upgrade", title: "sgr engine upgrade", sidebarTitle: "engine upgrade", description: "Upgrade a Splitgraph engine."}; + +```sgr engine upgrade [OPTIONS] [NAME]``` + +Upgrade a Splitgraph engine. + +This consists of shutting down the current Splitgraph engine, +deleting its Docker container (keeping the actual data and +metadata volumes intact), creating a container based on a newer +image and finally reinitializing the engine to perform needed migrations. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`--no-pull`**: Don't pull the new engine image diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0006_engine-log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0006_engine-log.mdx new file mode 100644 index 00000000..58859523 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0006_engine-log.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "engine-log", title: "sgr engine log", sidebarTitle: "engine log", description: "Get logs from a Splitgraph engine."}; + +```sgr engine log [OPTIONS] [NAME]``` + +Get logs from a Splitgraph engine. + +### Options + + * **`-f, --follow`**: Stream logs diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0007_engine-configure.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0007_engine-configure.mdx new file mode 100644 index 00000000..1be8adcd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0007_engine-configure.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "engine-configure", title: "sgr engine configure", sidebarTitle: "engine configure", description: "Inject a configuration file into an engine."}; + +```sgr engine configure [OPTIONS] [NAME]``` + +Inject a configuration file into an engine. + +This copies the current .sgconfig file (pointed to by SG_CONFIG_FILE) into +the engine container, making it use that configuration for +when it's queried through an application other than the sgr client +(layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0008_engine-version.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0008_engine-version.mdx new file mode 100644 index 00000000..d47bfe05 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/0008_engine-version.mdx @@ -0,0 +1,5 @@ +export const meta = {id: "engine-version", title: "sgr engine version", sidebarTitle: "engine version", description: "Get version of Splitgraph engine."}; + +```sgr engine version [OPTIONS] [NAME]``` + +Get version of Splitgraph engine. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/metadata.json new file mode 100644 index 00000000..3f70a9d2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0002_engine-management/metadata.json @@ -0,0 +1 @@ +{"title": "Engine management"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/0000_csv-export.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/0000_csv-export.mdx new file mode 100644 index 00000000..8408f9f2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/0000_csv-export.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-export", title: "sgr csv export", sidebarTitle: "csv export", description: "Export the result of a query as CSV."}; + +```sgr csv export [OPTIONS] IMAGE_SPEC QUERY``` + +Export the result of a query as CSV. + +### Examples + +`sgr csv export noaa/climate "SELECT * FROM rainfall"` + +Output everything in the currently checked-out `"rainfall"` table as CSV. + +`sgr csv export noaa/climate:dec_2018 "SELECT * FROM rainfall WHERE state = 'AZ' -f dec_2018_az.csv` + +Check out the `dec_2018` tag of `noaa/climate` and output values from `"rainfall"` for Arizona to `dec_2018_az.csv` + +`sgr csv export --layered noaa/climate:abcdef1234567890 "SELECT * FROM rainfall JOIN other_table ON..."` + +Uses layered querying instead to execute a join on tables in a certain image (satisfying the query without +having to check the image out). + +### Options + + * **`-f, --file FILENAME`**: File name to export to, default stdout. + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/0001_csv-import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/0001_csv-import.mdx new file mode 100644 index 00000000..5f3eb655 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/0001_csv-import.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-import", title: "sgr csv import", sidebarTitle: "csv import", description: "Import a CSV file into a checked-out Splitgraph repository."}; + +```sgr csv import [OPTIONS] REPOSITORY TABLE``` + +Import a CSV file into a checked-out Splitgraph repository. This doesn't create a new image, use `sgr commit` +after the import and any adjustments (e.g. adding primary keys or converting column types) to do so. + +If the target table doesn't exist, this will create a new table. + +If the target table does exist, this will try and patch the new values in by updating rows that exist in the +current table (as per its primary key constraints) and inserting new ones. Rows existing in the current table +but missing in the CSV won't be deleted. + +If `-r` is passed, the table will instead be deleted and recreated from the CSV file if it exists. + +### Options + + * **`-f, --file FILENAME`**: File name to import data from, default stdin. + * **`-r, --replace`**: Replace the table if it already exists. + * **`-k, --primary-key TEXT`**: Use the specified column(s) as primary key(s) + * **`-t, --override-type ...`**: Explicitly set types of these columns to PG types + * **`--encoding TEXT`**: Encoding to use for the CSV file + * **`--separator TEXT`**: CSV separator to use + * **`--no-header`**: Treats the first line of the CSV as data rather than a header. + * **`--skip-schema-check`**: Skips checking that the dataframe is compatible with the target schema. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/0002_mount.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/0002_mount.mdx new file mode 100644 index 00000000..85bcb7f5 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/0002_mount.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "mount", title: "sgr mount", sidebarTitle: "mount", description: "Mount foreign databases as Postgres schemas."}; + +```sgr mount [OPTIONS] ``` + +Mount foreign databases as Postgres schemas. + +Uses the Postgres FDW interface to create a local Postgres schema with foreign tables that map +to tables in other databases. + +See a given mount handler's documentation for handler-specific parameters. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/0003_singer-target.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/0003_singer-target.mdx new file mode 100644 index 00000000..c353a781 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/0003_singer-target.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "singer-target", title: "sgr singer target", sidebarTitle: "singer target", description: "Singer target that loads data into Splitgraph images."}; + +```sgr singer target [OPTIONS] IMAGE``` + +Singer target that loads data into Splitgraph images. + +This will read data from the stdin from a Singer-compatible tap and load it into +a Splitgraph image, merging data if the image already exists. + +Image must be of the format `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]` where `HASH_OR_TAG` +is a tag of an existing image to base the image on. If the repository doesn't exist, +it will be created. + +As this target consumes data from stdin, it will flush the records into a Splitgraph image. By +default, it will only keep the image if the whole stream has been successfully consumed. To +make this target completely follow the Singer spec (if it emits state, the records have been +flushed), pass --failure=keep-both or --failure=delete-old. To delete the old image on success, +pass --delete-old. + +### Options + + * **`-d, --delete-old`**: Delete the old image at the end of ingestion + * **`-f, --failure [keep-both|delete-old|delete-new]`**: What to do in case of a failure. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/metadata.json new file mode 100644 index 00000000..d82f5068 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0003_data-import-export/metadata.json @@ -0,0 +1 @@ +{"title": "Data import/export"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0000_rm.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0000_rm.mdx new file mode 100644 index 00000000..47baf9a3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0000_rm.mdx @@ -0,0 +1,40 @@ +export const meta = {id: "rm", title: "sgr rm", sidebarTitle: "rm", description: "Delete schemas, repositories or images."}; + +```sgr rm [OPTIONS] IMAGE_SPEC``` + +Delete schemas, repositories or images. + +If the target of this command is a Postgres schema, this performs DROP SCHEMA CASCADE. + +If the target of this command is a Splitgraph repository, this deletes the repository and all of its history. + +If the target of this command is an image, this deletes the image and all of its children. + +In any case, this command will ask for confirmation of the deletion, unless ``-y`` is passed. If ``-r`` +(``--remote``), is passed, this will perform deletion on a remote Splitgraph engine (registered in the config) +instead, assuming the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Examples + +``sgr rm temporary_schema`` + +Deletes ``temporary_schema`` from the local engine. + +``sgr rm --remote data.splitgraph.com username/repo`` + +Deletes ``username/repo`` from the Splitgraph registry. + +``sgr rm -y username/repo:old_branch`` + +Deletes the image pointed to by ``old_branch`` as well as all of its children (images created by a commit based +on this image), as well as all of the tags that point to now deleted images, without asking for confirmation. +Note this will not delete images that import tables from the deleted images via Splitfiles or indeed the +physical objects containing the actual tables. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0001_init.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0001_init.mdx new file mode 100644 index 00000000..e4ab8d4d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0001_init.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "init", title: "sgr init", sidebarTitle: "init", description: "Initialize a new repository/engine."}; + +```sgr init [OPTIONS] [REPOSITORY]``` + +Initialize a new repository/engine. + +### Examples + +`sgr init` + +Initializes the current local Splitgraph engine by writing some bookkeeping information. +This is required for the rest of sgr to work. + +`sgr init --skip-object-handling` + +Initializes a Splitgraph engine without installing audit triggers or object management routines: +this is useful for engines that aren't intended to be used for image checkouts. + +``sgr init new/repo`` + +Creates a single image with the hash ``00000...`` in ``new/repo`` + +### Options + + * **`--skip-object-handling`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0002_cleanup.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0002_cleanup.mdx new file mode 100644 index 00000000..c23688a4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0002_cleanup.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "cleanup", title: "sgr cleanup", sidebarTitle: "cleanup", description: "Prune unneeded objects from the engine."}; + +```sgr cleanup [OPTIONS] ``` + +Prune unneeded objects from the engine. + +This deletes all objects from the cache that aren't required by any local repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0003_prune.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0003_prune.mdx new file mode 100644 index 00000000..64c2d49b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0003_prune.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "prune", title: "sgr prune", sidebarTitle: "prune", description: "Cleanup dangling images from a repository."}; + +```sgr prune [OPTIONS] REPOSITORY``` + +Cleanup dangling images from a repository. + +This includes images not pointed to by any tags (or checked out) and those that aren't required by any of +such images. + +Will ask for confirmation of the deletion, unless ``-y ``is passed. If ``-r`` (``--remote``) is +passed, this will perform deletion on a remote Splitgraph engine (registered in the config) instead, assuming +the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0004_config.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0004_config.mdx new file mode 100644 index 00000000..7fcaa53c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0004_config.mdx @@ -0,0 +1,33 @@ +export const meta = {id: "config", title: "sgr config", sidebarTitle: "config", description: "Print the current Splitgraph configuration."}; + +```sgr config [OPTIONS] ``` + +Print the current Splitgraph configuration. + +This takes into account the local config file, the default values +and all overrides specified via environment variables. + +This command can be used to dump the current Splitgraph configuration into a file: + +``` +sgr config --no-shielding --config-format > .sgconfig +``` + +...or save a config file overriding an entry: + +``` +SG_REPO_LOOKUP=engine1,engine2 sgr config -sc > .sgconfig +``` + +If `--conn-string` is passed, this prints out a libpq connection string +that can be used to connect to the default Splitgraph engine with other tools: + +``` +pgcli $(sgr config -n) +``` + +### Options + + * **`-s, --no-shielding`**: If set, doesn't replace sensitive values (like passwords) with asterisks + * **`-c, --config-format`**: Output configuration in the Splitgraph config file format + * **`-n, --conn-string`**: Print a libpq connection string to the engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0005_dump.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0005_dump.mdx new file mode 100644 index 00000000..111baceb --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0005_dump.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "dump", title: "sgr dump", sidebarTitle: "dump", description: "Dump a repository to SQL."}; + +```sgr dump [OPTIONS] REPOSITORY``` + +Dump a repository to SQL. + +### Options + + * **`--exclude-object-contents`**: Don't dump the commands needed to recreate objects required by the repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0006_eval.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0006_eval.mdx new file mode 100644 index 00000000..5b4b7f0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0006_eval.mdx @@ -0,0 +1,39 @@ +export const meta = {id: "eval", title: "sgr eval", sidebarTitle: "eval", description: "Evaluate a Python snippet using the Splitgraph API."}; + +```sgr eval [OPTIONS] COMMAND``` + +Evaluate a Python snippet using the Splitgraph API. + +This is for advanced users only and should be only used +if you know what you are doing. + +Normal Python statements are supported and the command is evaluated +in a namespace where the following is already imported and available: + + * Repository: class that instantiates a Splitgraph repository and makes + API functions like .commit(), .checkout() etc available. + + * engine: Current local engine + + * object_manager: an instance of ObjectManager that allows + to get information about objects and manage the object cache. + + +Example: +``` +sgr eval 'import json; print(json.dumps(Repository\ + .from_schema(repo_name)\ + .images["latest"]\ + .get_table(table_name)\ + .table_schema))' \ +-a repo_name my_repo -a table_name my_table +``` + +Will dump the schema of table my_table in the most recent image in my_repo in JSON format. + +For more information, see the Splitgraph API reference. + +### Options + + * **`--i-know-what-im-doing`**: Pass this if you're sure that the code you're running is safe and don't want to be prompted. + * **`-a, --arg ...`**: Make extra variables available in the command's namespace diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0007_upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0007_upgrade.mdx new file mode 100644 index 00000000..188e798b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/0007_upgrade.mdx @@ -0,0 +1,17 @@ +export const meta = {id: "upgrade", title: "sgr upgrade", sidebarTitle: "upgrade", description: "Upgrade sgr client and engine."}; + +```sgr upgrade [OPTIONS] [VERSION]``` + +Upgrade sgr client and engine. + +This will try to download the most recent stable binary for the current platform +into the location this binary is running from and then upgrade the default engine. + +This method is only supported for single-binary installs and engines managed +by `sgr engine`. + +### Options + + * **`--skip-engine-upgrade`**: Only upgrade the client + * **`--path TEXT`**: Override the path to download the new binary to. + * **`--force`**: Reinstall older/same versions. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/metadata.json new file mode 100644 index 00000000..26f7a103 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0004_miscellaneous/metadata.json @@ -0,0 +1 @@ +{"title": "Miscellaneous"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/0000_clone.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/0000_clone.mdx new file mode 100644 index 00000000..7c2929bd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/0000_clone.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "clone", title: "sgr clone", sidebarTitle: "clone", description: "Clone a remote Splitgraph repository/image into a local one."}; + +```sgr clone [OPTIONS] REMOTE_REPOSITORY_OR_IMAGE [LOCAL_REPOSITORY]``` + +Clone a remote Splitgraph repository/image into a local one. + +The lookup path for the repository is governed by the ``SG_REPO_LOOKUP`` and ``SG_REPO_LOOKUP_OVERRIDE`` +config parameters and can be overridden by the command line ``--remote`` option. + +### Options + + * **`-r, --remote TEXT`**: Name of the remote engine + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/0001_push.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/0001_push.mdx new file mode 100644 index 00000000..60ba1e17 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/0001_push.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "push", title: "sgr push", sidebarTitle: "push", description: "Push images the Splitgraph registry or another engine."}; + +```sgr push [OPTIONS] REPOSITORY_OR_IMAGE [REMOTE_REPOSITORY]``` + +Push images the Splitgraph registry or another engine. + +If an image is not specified (e.g. `sgr push noaa/climate`, this will push all new images. + +By default, the repository will be pushed to a repository with the same name in the user's namespace +(SG_NAMESPACE configuration value which defaults to the username). + +If there's a single engine registered in the config (e.g. data.splitgraph.com), it shall be the default +destination. + +If an upstream repository/engine has been configured for this engine with `sgr upstream`, +it will be used instead. + +Finally, if `remote_repository` or `--remote` are passed, they will take precedence. + +The actual objects will be uploaded to S3 using Minio. When pushing to another engine, +you can choose to upload them directly by passing `--handler DB`. + +### Options + + * **`-r, --remote []`**: Name of the remote engine + * **`-h, --upload-handler TEXT`**: Upload handler + * **`-o, --upload-handler-options JSON`**: Upload handler parameters + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing remote objects + * **`-t, --tags`**: Overwrite tags for pushed image/repo + * **`-u, --reupload-objects`**: Reupload objects that metadata is pushed out for diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/0002_pull.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/0002_pull.mdx new file mode 100644 index 00000000..d1b631d1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/0002_pull.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "pull", title: "sgr pull", sidebarTitle: "pull", description: "Pull changes / download a single image."}; + +```sgr pull [OPTIONS] REPOSITORY_OR_IMAGE``` + +Pull changes / download a single image. + +### Options + + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/0003_upstream.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/0003_upstream.mdx new file mode 100644 index 00000000..32f1d6ec --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/0003_upstream.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "upstream", title: "sgr upstream", sidebarTitle: "upstream", description: "Get or set the upstream for a repository."}; + +```sgr upstream [OPTIONS] REPOSITORY``` + +Get or set the upstream for a repository. + +This shows the default repository used for pushes and pulls as well as allows to change it to a different +remote engine and repository. + +The remote engine alias must exist in the config file. + +### Examples + +``sgr upstream my/repo --set splitgraph.com username/repo`` + +Sets the upstream for ``my/repo`` to ``username/repo`` existing on the ``splitgraph.com`` engine + +``sgr upstream my/repo --reset`` + +Removes the upstream for ``my/repo``. + +``sgr upstream my/repo`` + +Shows the current upstream for ``my/repo``. + +### Options + + * **`-s, --set ...`**: Set the upstream to a engine alias + repository + * **`-r, --reset`**: Delete the upstream diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/metadata.json new file mode 100644 index 00000000..b2c1ab8d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0005_sharing-images/metadata.json @@ -0,0 +1 @@ +{"title": "Sharing images"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/0000_build.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/0000_build.mdx new file mode 100644 index 00000000..2204aae2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/0000_build.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "build", title: "sgr build", sidebarTitle: "build", description: "Build Splitgraph images."}; + +```sgr build [OPTIONS] SPLITFILE``` + +Build Splitgraph images. + +This executes a Splitfile, building a new image or checking it out from cache if the same +image had already been built. + +### Examples + +``sgr build my.splitfile`` + +Executes ``my.splitfile`` and writes its output into a new repository with the same name +as the Splitfile (my) unless the name is specified in the Splitfile. + +``sgr build my.splitfile -o mynew/repo`` + +Executes ``my.splitfile`` and writes its output into ``mynew/repo``. + +``sgr build my_other.splitfile -o mynew/otherrepo --args PARAM1 VAL1 --args PARAM2 VAL2`` + +Executes ``my_other.splitfile`` with parameters ``PARAM1`` and ``PARAM2`` set to +``VAL1`` and ``VAL2``, respectively. + +### Options + + * **`-a, --args ...`**: Parameters to be substituted into the Splitfile. All parameters mentioned in the file must be specified in order for the Splitfile to be executed. + * **`-o, --output-repository REPOSITORY`**: Repository to store the result in. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/0001_rebuild.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/0001_rebuild.mdx new file mode 100644 index 00000000..8194b0f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/0001_rebuild.mdx @@ -0,0 +1,27 @@ +export const meta = {id: "rebuild", title: "sgr rebuild", sidebarTitle: "rebuild", description: "Rebuild images against different dependencies."}; + +```sgr rebuild [OPTIONS] IMAGE_SPEC``` + +Rebuild images against different dependencies. + +Examines the provenance of a Splitgraph image created by a Splitfile and reruns it against different images than +the ones that were imported by the original run. + +### Examples + +``sgr rebuild my/repo --against noaa/climate:old_data`` + +Reconstructs the Splitfile used to create ``my/repo:latest``, replaces all imports from ``noaa/climate`` with +imports from ``noaa/climate:old_data`` and reruns the Splitfile. + +``sgr rebuild my/repo:other_tag -u`` + +Rebuilds ``my_repo:other_tag`` against the latest versions of all of its dependencies. + +Image caching still works in this case: if the result of the rebuild already exists, the image will be checked +out. + +### Options + + * **`-u, --update`**: Rederive the image against the latest version of all dependencies. + * **`-a, --against IMAGE`**: Images to substitute into the reconstructed Splitfile, of the form [NAMESPACE/]REPOSITORY[:HASH_OR_TAG]. Default tag is 'latest'. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/0002_provenance.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/0002_provenance.mdx new file mode 100644 index 00000000..45d3a5a8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/0002_provenance.mdx @@ -0,0 +1,62 @@ +export const meta = {id: "provenance", title: "sgr provenance", sidebarTitle: "provenance", description: "Reconstruct the provenance of an image."}; + +```sgr provenance [OPTIONS] IMAGE_SPEC``` + +Reconstruct the provenance of an image. + +This inspects the image to produce a list of images that were used by the Splitfile +that created it, or a Splitfile with the same effect. + +`IMAGE_SPEC` must be of the form `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]`. +If no tag is specified, `latest` is used. + +### Examples + +Assume `my/repo` is produced by the following Splitfile: + +``` +FROM MOUNT [...] IMPORT external_table +FROM noaa/climate IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} AS rainfall_data +``` + +`my/repo` will have 2 images: one having `hash_1` (with the `external_table` imported from a mounted database) +and one having `hash_2` (with both `external_table` and the `rainfall_data` containing the result +of the query run against the then-latest image in the `noaa/climate` repository). + +In this case: + +``` +sgr provenance my/repo +``` + +Returns a list of repositories and images that were imported by the Splitfile that constructed this image:: + +``` +my/repo:[hash_2] depends on: +noaa/climate:[hash_3] +``` + +Where `hash_3` is the hash of the latest image in the `noaa/climate` repository at the time the original +Splitfile was run. However: + +``` +sgr provenance -f my/repo +``` + +Will try to reconstruct the Splitfile that can be used to build this image. Since the FROM MOUNT command isn't +reproducible (requires access to the original external database, which is a moving target), this will fail. + +If `-e` is passed, this will emit information about irreproducible commands instead of failing. + +``` +sgr provenance -ef my/repo + +# Splitfile commands used to reconstruct my/repo:[image_hash] +# Irreproducible Splitfile command of type MOUNT +FROM noaa/climate:[hash_3] IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} +``` + +### Options + + * **`-f, --full`**: Recreate the Splitfile used to create this image + * **`-e, --ignore-errors`**: If set, ignore commands that aren't reproducible (like MOUNT or custom commands) diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/0003_dependents.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/0003_dependents.mdx new file mode 100644 index 00000000..fc8bc234 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/0003_dependents.mdx @@ -0,0 +1,21 @@ +export const meta = {id: "dependents", title: "sgr dependents", sidebarTitle: "dependents", description: "List images that were created from an image."}; + +```sgr dependents [OPTIONS] IMAGE_SPEC``` + +List images that were created from an image. + +This is the inverse of the sgr provenance command. It will list all images that were +created using a Splitfile that imported data from this image. + +By default, this will look at images on the local engine. The engine can be overridden +with --source-on and --dependents-on. For example: + + sgr dependents --source-on data.splitgraph.com --dependents-on LOCAL noaa/climate:latest + +will show all images on the local engine that derived data from `noaa/climate:latest` +on the Splitgraph registry. + +### Options + + * **`-O, --source-on TEXT`**: Override the engine to look the source up on + * **`-o, --dependents-on TEXT`**: Override the engine to list dependents from diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/metadata.json new file mode 100644 index 00000000..50afd08a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0006_splitfile-execution/metadata.json @@ -0,0 +1 @@ +{"title": "Splitfile execution"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0000_cloud-register.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0000_cloud-register.mdx new file mode 100644 index 00000000..089ce0c6 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0000_cloud-register.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "cloud-register", title: "sgr cloud register", sidebarTitle: "cloud register", description: "Register the user on a Splitgraph registry."}; + +```sgr cloud register [OPTIONS] ``` + +Register the user on a Splitgraph registry. + +By default, this registers the user on data.splitgraph.com, +obtains a set of machine (API) credentials for the client to communicate +with the registry and configures the data.splitgraph.com engine. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--email TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to register on. + * **`--accept-tos`**: Accept the registry's Terms of Service + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0001_cloud-login.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0001_cloud-login.mdx new file mode 100644 index 00000000..cb99d6c1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0001_cloud-login.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "cloud-login", title: "sgr cloud login", sidebarTitle: "cloud login", description: "Log into a Splitgraph registry with username/password."}; + +```sgr cloud login [OPTIONS] ``` + +Log into a Splitgraph registry with username/password. + +This will generate a new refresh token (to use the Splitgraph query API) +and API keys to let sgr access the registry (if they don't already exist +in the configuration file or if the actual username has changed). + +Note that if you already have generated an API key pair but it's not +in the configuration file, this will generate a new pair instead of +restoring the existing one, as the API secret is only stored in the configuration file. + +If you want to log in using an existing API key pair, use `sgr cloud login-api` instead. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`--overwrite`**: Overwrite old API keys in the config if they exist + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0002_cloud-login-api.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0002_cloud-login-api.mdx new file mode 100644 index 00000000..4007fe22 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0002_cloud-login-api.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "cloud-login-api", title: "sgr cloud login-api", sidebarTitle: "cloud login-api", description: "Log into a Splitgraph registry using existing API keys."}; + +```sgr cloud login-api [OPTIONS] ``` + +Log into a Splitgraph registry using existing API keys. + +This will inject the API keys for the registry into the configuration file +and generate a new access token. + +### Options + + * **`--api-key TEXT`**: + * **`--api-secret TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0003_cloud-sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0003_cloud-sql.mdx new file mode 100644 index 00000000..56c4be0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0003_cloud-sql.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "cloud-sql", title: "sgr cloud sql", sidebarTitle: "cloud sql", description: "Run SQL on or connect to the Splitgraph Data Delivery Network."}; + +```sgr cloud sql [OPTIONS] [QUERY]``` + +Run SQL on or connect to the Splitgraph Data Delivery Network. + +If a query isn't passed, this will return a libpq-compatible connection string to +the registry's SQL endpoint. It can be used to connect to the endpoint with other SQL clients: + +``` +pgcli $(sgr cloud sql) +``` + +If a query is passed, this will run an SQL query against the SQL endpoint. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0004_cloud-curl.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0004_cloud-curl.mdx new file mode 100644 index 00000000..e902965b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0004_cloud-curl.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "cloud-curl", title: "sgr cloud curl", sidebarTitle: "cloud curl", description: "Query a Splitgraph REST API."}; + +```sgr cloud curl [OPTIONS] IMAGE [REQUEST_PARAMS]``` + +Query a Splitgraph REST API. + +This is a thin wrapper around curl that performs an HTTP request to Splitgraph Cloud to +interact with a dataset using PostgREST (http://postgrest.org) or the Splitfile execution service. + +The actual invocation is: + +``` +curl [API endpoint][request] -H [access_token] [extra curl args]. +``` + +The image must be of the form `namespace/repository:[hash_or_tag (default latest)]`. + +The actual request parameters depend on the request type: + + * For PostgREST: `/table?[postgrest request]` or empty to get the OpenAPI spec for this image. + For a reference on how to perform Postgrest requests, see http://postgrest.org/en/latest/api.html. + * For the Splitfile executor: a JSON array to be POSTed to the executor, e.g. + `'{"command": "FROM some/repo IMPORT some_table AS alias", "tag": "new_tag"}'`. + +`--curl-args` allows to pass extra arguments to curl. Note that every argument must be prefixed +with `--curl-args`, e.g. `--curl-args --cacert --curl-args /path/to/ca.pem`. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-t, --request-type [postgrest|splitfile]`**: + * **`-c, --curl-args TEXT`**: Extra arguments to be passed to curl diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0005_cloud-readme.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0005_cloud-readme.mdx new file mode 100644 index 00000000..4d800dc6 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0005_cloud-readme.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-readme", title: "sgr cloud readme", sidebarTitle: "cloud readme", description: "Upload or a README to a Splitgraph repository."}; + +```sgr cloud readme [OPTIONS] REPOSITORY README``` + +Upload or a README to a Splitgraph repository. + +The repository must have already been pushed. The README must be a file in Markdown format. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0006_cloud-description.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0006_cloud-description.mdx new file mode 100644 index 00000000..003c953f --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0006_cloud-description.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-description", title: "sgr cloud description", sidebarTitle: "cloud description", description: "Upload a description to a Splitgraph repository."}; + +```sgr cloud description [OPTIONS] REPOSITORY DESCRIPTION``` + +Upload a description to a Splitgraph repository. + +The repository must have already been pushed. The description should be plain text, 160 characters or shorter. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0007_cloud-metadata.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0007_cloud-metadata.mdx new file mode 100644 index 00000000..01b2f064 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0007_cloud-metadata.mdx @@ -0,0 +1,41 @@ +export const meta = {id: "cloud-metadata", title: "sgr cloud metadata", sidebarTitle: "cloud metadata", description: "Upload a metadata file to a Splitgraph repository."}; + +```sgr cloud metadata [OPTIONS] REPOSITORY [METADATA_FILE]``` + +Upload a metadata file to a Splitgraph repository. + +This can manipulate the repository's short description, README, topics, license, sources and extra metadata. + +The metadata file must be a YAML file. Omitting a key doesn't delete the value. + +For example: + + +``` +readme: dataset-readme.md +description: Dataset description (160 characters max). +topics: + - topic_1 + - topic_2 +sources: + - anchor: Source + href: https://www.splitgraph.com + isCreator: true + isSameAs: false + - anchor: Source 2 + href: https://www.splitgraph.com + isCreator: false + isSameAs: true +license: Public Domain +extra_metadata: + key_1: + key_1_1: value_1_1 + key_1_2: value_1_2 + key_2: + key_2_1: value_2_1 + key_2_2: value_2_2 +``` + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0008_cloud-search.mdx b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0008_cloud-search.mdx new file mode 100644 index 00000000..c23c31f4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/0008_cloud-search.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "cloud-search", title: "sgr cloud search", sidebarTitle: "cloud search", description: "Search for a repository on the Splitgraph registry."}; + +```sgr cloud search [OPTIONS] QUERY``` + +Search for a repository on the Splitgraph registry. + +For more advanced search, including filtering by topics, go to the registry's website itself. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--limit INTEGER RANGE`**: Number of results to return diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/metadata.json new file mode 100644 index 00000000..25ba655e --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/0007_splitgraph-cloud/metadata.json @@ -0,0 +1 @@ +{"title": "Splitgraph Cloud"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.11/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.11/metadata.json new file mode 100644 index 00000000..7e25ed68 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.11/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.11", + "updated_at": "2022-01-20T00:00:49.689Z", + "release": { + "id": 40632768, + "tag_name": "v0.2.11", + "target_commitish": "f84b245302f20ae1ec65320e75e24753f59b364d", + "created_at": "2021-03-29T12:27:51Z", + "published_at": "2021-03-29T13:15:46Z", + "assets": [ + { + "id": 34145547, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/34145547", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-03-29T12:54:24Z", + "updated_at": "2021-03-29T12:54:24Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.11/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0000_checkout.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0000_checkout.mdx new file mode 100644 index 00000000..cc805a26 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0000_checkout.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "checkout", title: "sgr checkout", sidebarTitle: "checkout", description: "Check out a Splitgraph image into a Postgres schema."}; + +```sgr checkout [OPTIONS] IMAGE_SPEC``` + +Check out a Splitgraph image into a Postgres schema. + +This downloads the required physical objects and materializes all tables, unless ``-l`` or ``--layered`` is passed, +in which case the objects are downloaded and a foreign data wrapper is set up on the engine to satisfy read-only +queries by combining results from each table's fragments. + +Tables checked out in this way are still presented as normal Postgres tables and can queried in the same way. +Since the tables aren't materialized, layered querying is faster to set up, but since each query now results in a +subquery to each object comprising the table, actual query execution is slower than to materialized Postgres tables. + +Layered querying is only supported for read-only queries. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. Note that currently, the schema that the +image is checked out into has to have the same name as the repository. If no image hash or tag is passed, +"HEAD" is assumed. + +If ``-u`` or ``--uncheckout`` is passed, this instead deletes the checked out schema (assuming there are no pending +changes) and removes the HEAD pointer. + +If ``--force`` isn't passed and the schema has pending changes, this will fail. + +### Options + + * **`-f, --force`**: Discard all pending changes to the schema + * **`-u, --uncheckout`**: Delete the checked out copy instead + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0001_commit.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0001_commit.mdx new file mode 100644 index 00000000..9a2ec1f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0001_commit.mdx @@ -0,0 +1,59 @@ +export const meta = {id: "commit", title: "sgr commit", sidebarTitle: "commit", description: "Commit changes to a checked-out Splitgraph repository."}; + +```sgr commit [OPTIONS] REPOSITORY``` + +Commit changes to a checked-out Splitgraph repository. + +This packages up all changes into a new image. Where a table hasn't been created or had its schema changed, +this will delta compress the changes. For all other tables (or if ``-s`` has been passed), this will +store them as full table snapshots. + +When a table is stored as a full snapshot, `--chunk-size` sets the maximum size, in rows, of the fragments +that the table will be split into (default is no splitting). The splitting is done by the +table's primary key. + +If `--split-changesets` is passed, delta-compressed changes will also be split up according to the original +table chunk boundaries. For example, if there's a change to the first and the 20000th row of a table that was +originally committed with `--chunk-size=10000`, this will create 2 fragments: one based on the first chunk +and one on the second chunk of the table. + +If `--chunk-sort-keys` is passed, data inside the chunk is sorted by this key (or multiple keys). +This helps speed up queries on those keys for storage layers than can leverage that (e.g. CStore). The expected format is JSON, e.g. `{table_1: [col_1, col_2]}` + +`--index-options` expects a JSON-serialized dictionary of `{table: index_type: column: index_specific_kwargs}`. +Indexes are used to narrow down the amount of chunks to scan through when running a query. By default, each column +has a range index (minimum and maximum values) and it's possible to add bloom filtering to speed up queries that +involve equalities. + +Bloom filtering allows to trade off between the space overhead of the index and the probability of a false +positive (claiming that an object contains a record when it actually doesn't, leading to extra scans). + +An example `index-options` dictionary: + + +``` +{ + "table": { + "bloom": { + "column_1": { + "probability": 0.01, # Only one of probability + "size": 10000 # or size can be specified. + } + }, + # Only compute the range index on these columns. By default, + # it's computed on all columns and is always computed on the + # primary key no matter what. + "range": ["column_2", "column_3"] + } +} +``` + +### Options + + * **`-s, --snap`**: Do not delta compress the changes and instead store the whole table again. This consumes more space, but makes checkouts faster. + * **`-c, --chunk-size INTEGER`**: Split new tables into chunks of this many rows (by primary key). The default value is governed by the SG_COMMIT_CHUNK_SIZE configuration parameter. + * **`-k, --chunk-sort-keys JSON`**: Sort the data inside each chunk by this/these key(s) + * **`-t, --split-changesets`**: Split changesets for existing tables across original chunk boundaries. + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate on the new objects. + * **`-m, --message TEXT`**: Optional commit message + * **`-o, --overwrite`**: Overwrite physical objects that already exist diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0002_tag.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0002_tag.mdx new file mode 100644 index 00000000..89f01837 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0002_tag.mdx @@ -0,0 +1,36 @@ +export const meta = {id: "tag", title: "sgr tag", sidebarTitle: "tag", description: "Manage tags on images."}; + +```sgr tag [OPTIONS] IMAGE_SPEC [TAG]``` + +Manage tags on images. + +Depending on the exact invocation, this command can tag a Splitgraph image, +list all tags in a repository or delete a tag. + +### Examples + +``sgr tag noaa/climate`` + +List all tagged images in the ``noaa/climate`` repository and their tags. + +``sgr tag noaa/climate:abcdef1234567890`` + +List all tags assigned to the image ``noaa/climate:abcdef1234567890...`` + +``sgr tag noaa/climate:abcdef1234567890 my_new_tag`` + +Tag the image ``noaa/climate:abcdef1234567890...`` with ``my_new_tag``. If the tag already exists, this will +overwrite the tag. + +``sgr tag noaa/climate my_new_tag`` + +Tag the current ``HEAD`` of ``noaa/climate`` with ``my_new_tag``. + +``sgr tag --delete noaa/climate:my_new_tag`` + +Delete the tag ``my_new_tag`` from ``noaa/climate``. + +### Options + + * **`-d, --delete`**: Delete the tag instead. + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0003_import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0003_import.mdx new file mode 100644 index 00000000..b69bbfb4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0003_import.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "import", title: "sgr import", sidebarTitle: "import", description: "Import tables into a Splitgraph repository."}; + +```sgr import [OPTIONS] IMAGE_SPEC TABLE_OR_QUERY TARGET_REPOSITORY [TARGET_TABLE]``` + +Import tables into a Splitgraph repository. + +Imports a table or a result of a query from a local Splitgraph repository or a Postgres schema into another +Splitgraph repository. + +### Examples + +``sgr import noaa/climate:my_tag climate_data my/repository`` + +Create a new image in ``my/repository`` with the ``climate_data`` table included. This links the new image to +the physical object, meaning that the history of the ``climate_data`` table is preserved. + +If no tag is specified, the 'latest' (not the HEAD image or current state of the checked out image) +image is used. + +``sgr import noaa/climate:my_tag "SELECT * FROM climate_data" my/repository climate_data`` + +Create a new image in ``my/repository`` with the result of the query stored in the ``climate_data`` table. This +creates a new physical object without any linkage to the original data, so the history of the ``climate_data`` +table isn't preserved. The SQL query can interact with multiple tables in the source image. + +``sgr import other_schema other_table my/repository`` + +Since other_schema isn't a Splitgraph repository, this will copy ``other_schema.other_table`` +into a new Splitgraph object and add the ``other_table`` table to a new image in ``my/repository``. + +Note that importing doesn't discard or commit pending changes in the target Splitgraph repository: a new image +is created with the new table added, the new table is materialized in the repository and the HEAD pointer is moved. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0004_reindex.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0004_reindex.mdx new file mode 100644 index 00000000..b640ffe3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/0004_reindex.mdx @@ -0,0 +1,19 @@ +export const meta = {id: "reindex", title: "sgr reindex", sidebarTitle: "reindex", description: "Run extra indexes on a table."}; + +```sgr reindex [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Run extra indexes on a table. This will merge the indexing results for all objects +that a table is formed from with the current object indexes. For explanation of +what indexes do, see the documentation for `sgr commit`. + +If the objects haven't been downloaded yet, this will download them. + +Currently reindexing objects that change other objects is unsupported and will raise +an error. Pass `-o` to ignore these objects and only reindex supported objects. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate, e.g. '{"bloom": {"column_1": {"probability": 0.01}}}' [required] + * **`-o, --ignore-patch-objects`**: Ignore objects that change other objects' rows instead of raising an error diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/metadata.json new file mode 100644 index 00000000..9ef75b16 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0000_image-management-creation/metadata.json @@ -0,0 +1 @@ +{"title": "Image management/creation"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0000_log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0000_log.mdx new file mode 100644 index 00000000..db5078b4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0000_log.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "log", title: "sgr log", sidebarTitle: "log", description: "Show the history of a Splitgraph repository/image."}; + +```sgr log [OPTIONS] IMAGE_SPEC``` + +Show the history of a Splitgraph repository/image. + +By default, this shows the history of the current branch, starting from the HEAD pointer and following its +parent chain. + +Alternatively, it can follow the parent chain of any other image. + +If ``-t`` or ``--tree`` is passed, this instead renders the full image tree. The repository doesn't need to have +been checked out in this case. + +### Options + + * **`-t, --tree`**: + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0001_diff.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0001_diff.mdx new file mode 100644 index 00000000..8ef569e8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0001_diff.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "diff", title: "sgr diff", sidebarTitle: "diff", description: "Show differences between two Splitgraph images."}; + +```sgr diff [OPTIONS] REPOSITORY [TAG_OR_HASH_1] [TAG_OR_HASH_2]``` + +Show differences between two Splitgraph images. + +The two images must be in the same repository. The actual targets of this command depend +on the number of arguments passed: + +``sgr diff REPOSITORY`` + +Return the differences between the current HEAD image and the checked out schema. + +``sgr diff REPOSITORY TAG_OR_HASH`` + +Return the differences between the image and its parent. + +``sgr diff REPOSITORY TAG_OR_HASH_1 TAG_OR_HASH_2`` + +Return the differences from the first (earlier) image to the second image. + +### Options + + * **`-v, --verbose`**: Include the actual differences rather than just the total number of updated rows. + * **`-t, --table-name TEXT`**: Show the differences for a single table. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0002_object.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0002_object.mdx new file mode 100644 index 00000000..ff8c38a9 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0002_object.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "object", title: "sgr object", sidebarTitle: "object", description: "Show information about a Splitgraph object."}; + +```sgr object [OPTIONS] OBJECT_ID``` + +Show information about a Splitgraph object. + +Objects, or fragments, are building blocks of Splitgraph tables: each table consists of multiple immutable fragments +that can partially overwrite each other. Each fragment might have a parent that it depends on. In addition, +the smallest and largest values for every column are stored in the fragment's metadata. This information is used +to choose which objects to download in order to execute a query against a table. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0003_objects.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0003_objects.mdx new file mode 100644 index 00000000..c56fa727 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0003_objects.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "objects", title: "sgr objects", sidebarTitle: "objects", description: "List objects known to this engine."}; + +```sgr objects [OPTIONS] ``` + +List objects known to this engine. + +### Options + + * **`--local`**: Show only objects that are physically present on this engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0004_show.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0004_show.mdx new file mode 100644 index 00000000..4ddcc55d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0004_show.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "show", title: "sgr show", sidebarTitle: "show", description: "Show information about a Splitgraph image."}; + +```sgr show [OPTIONS] IMAGE_SPEC``` + +Show information about a Splitgraph image. This includes its parent, comment, size and creation time. + +Note that the size isn't the on-disk footprint, as the image might share some objects with other images +or if some of the image's objects have not been downloaded. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0005_table.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0005_table.mdx new file mode 100644 index 00000000..cc681c85 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0005_table.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "table", title: "sgr table", sidebarTitle: "table", description: "Show information about a table in a Splitgraph image."}; + +```sgr table [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Show information about a table in a Splitgraph image. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-v, --verbose`**: Show all of table's objects. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0006_sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0006_sql.mdx new file mode 100644 index 00000000..ea8a304b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0006_sql.mdx @@ -0,0 +1,34 @@ +export const meta = {id: "sql", title: "sgr sql", sidebarTitle: "sql", description: "Run an SQL statement against the Splitgraph engine."}; + +```sgr sql [OPTIONS] SQL``` + +Run an SQL statement against the Splitgraph engine. + +There are no restrictions on the contents of the statement: this is the same as running it +from any other PostgreSQL client. + +If ``--schema`` is specified, the statement is run with the ``search_path`` set to that schema. This means +that these statements are equivalent: + + +``` +sgr sql "SELECT * FROM "noaa/climate".table" +sgr sql -s noaa/climate "SELECT * FROM table" +``` + +If `--image` is specified, this will run the statement against that image using layered querying. +Only read-only statements are supported. For example: + + +``` +sgr sql -i noaa/climate:latest "SELECT * FROM table" +``` + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-s, --schema TEXT`**: Run SQL against this schema. + * **`-i, --image IMAGE`**: Run SQL against this image. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON + * **`-n, --no-transaction`**: Don't wrap the SQL in a transaction. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0007_status.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0007_status.mdx new file mode 100644 index 00000000..5e312f11 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/0007_status.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "status", title: "sgr status", sidebarTitle: "status", description: "Show the status of the Splitgraph engine."}; + +```sgr status [OPTIONS] [REPOSITORY]``` + +Show the status of the Splitgraph engine. + +If a repository is passed, show in-depth information about a repository. + +If not, show information about all repositories local to the engine. This will show a list +of all repositories, number of local images and tags, total repository size (theoretical +maximum size and current on-disk footprint of cached objects) and the current checked +out image (with LQ if the image is checked out using read-only layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/metadata.json new file mode 100644 index 00000000..a2c3f0f8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0001_image-information/metadata.json @@ -0,0 +1 @@ +{"title": "Image information"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0000_engine-add.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0000_engine-add.mdx new file mode 100644 index 00000000..c0b69417 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0000_engine-add.mdx @@ -0,0 +1,26 @@ +export const meta = {id: "engine-add", title: "sgr engine add", sidebarTitle: "engine add", description: "Create and start a Splitgraph engine."}; + +```sgr engine add [OPTIONS] [NAME]``` + +Create and start a Splitgraph engine. + +This will pull the Splitgraph engine image, start it, create a Postgres user and initialize +the engine. + +This also creates Docker volumes required to persist data/metadata. + +The engine Docker container by default will be named `splitgraph_engine_default` and +its data and metadata volumes will have names `splitgraph_engine_default_data` and +`splitgraph_engine_default_metadata`. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`-p, --port INTEGER`**: Port to start the engine on + * **`-u, --username TEXT`**: + * **`--no-init`**: Don't run `sgr init` on the engine + * **`--no-sgconfig`**: Don't add the engine to .sgconfig + * **`--inject-source`**: Inject the current Splitgraph source code into the engine using Docker bind mounts + * **`--no-pull`**: Don't pull the Docker image + * **`--set-default`**: Set the engine as the default engine in the config regardless of its name + * **`--password TEXT`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0001_engine-delete.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0001_engine-delete.mdx new file mode 100644 index 00000000..6229e082 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0001_engine-delete.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "engine-delete", title: "sgr engine delete", sidebarTitle: "engine delete", description: "Delete the Splitgraph engine container."}; + +```sgr engine delete [OPTIONS] [NAME]``` + +Delete the Splitgraph engine container. + +### Options + + * **`-y, --yes`**: Do not prompt for confirmation. + * **`-f, --force`**: Delete the engine anyway if it's running. + * **`-v, --with-volumes`**: Include the engine's volumes (if not specified, volumes will be reattached when an engine with the same name is created). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0002_engine-list.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0002_engine-list.mdx new file mode 100644 index 00000000..a2530db2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0002_engine-list.mdx @@ -0,0 +1,13 @@ +export const meta = {id: "engine-list", title: "sgr engine list", sidebarTitle: "engine list", description: "List Splitgraph engines."}; + +```sgr engine list [OPTIONS] ``` + +List Splitgraph engines. + +This only lists Docker containers that were created by sgr engine +(whose names start with `splitgraph_engine_`. To manage other engines, +use Docker CLI directly. + +### Options + + * **`-a, --include-all`**: Include stopped engine containers. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0003_engine-start.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0003_engine-start.mdx new file mode 100644 index 00000000..4c9cdf6c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0003_engine-start.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-start", title: "sgr engine start", sidebarTitle: "engine start", description: "Start a Splitgraph engine."}; + +```sgr engine start [OPTIONS] [NAME]``` + +Start a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0004_engine-stop.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0004_engine-stop.mdx new file mode 100644 index 00000000..7ea64786 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0004_engine-stop.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-stop", title: "sgr engine stop", sidebarTitle: "engine stop", description: "Stop a Splitgraph engine."}; + +```sgr engine stop [OPTIONS] [NAME]``` + +Stop a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0005_engine-upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0005_engine-upgrade.mdx new file mode 100644 index 00000000..751cd998 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0005_engine-upgrade.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "engine-upgrade", title: "sgr engine upgrade", sidebarTitle: "engine upgrade", description: "Upgrade a Splitgraph engine."}; + +```sgr engine upgrade [OPTIONS] [NAME]``` + +Upgrade a Splitgraph engine. + +This consists of shutting down the current Splitgraph engine, +deleting its Docker container (keeping the actual data and +metadata volumes intact), creating a container based on a newer +image and finally reinitializing the engine to perform needed migrations. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`--no-pull`**: Don't pull the new engine image diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0006_engine-log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0006_engine-log.mdx new file mode 100644 index 00000000..58859523 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0006_engine-log.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "engine-log", title: "sgr engine log", sidebarTitle: "engine log", description: "Get logs from a Splitgraph engine."}; + +```sgr engine log [OPTIONS] [NAME]``` + +Get logs from a Splitgraph engine. + +### Options + + * **`-f, --follow`**: Stream logs diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0007_engine-configure.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0007_engine-configure.mdx new file mode 100644 index 00000000..1be8adcd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0007_engine-configure.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "engine-configure", title: "sgr engine configure", sidebarTitle: "engine configure", description: "Inject a configuration file into an engine."}; + +```sgr engine configure [OPTIONS] [NAME]``` + +Inject a configuration file into an engine. + +This copies the current .sgconfig file (pointed to by SG_CONFIG_FILE) into +the engine container, making it use that configuration for +when it's queried through an application other than the sgr client +(layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0008_engine-version.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0008_engine-version.mdx new file mode 100644 index 00000000..d47bfe05 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/0008_engine-version.mdx @@ -0,0 +1,5 @@ +export const meta = {id: "engine-version", title: "sgr engine version", sidebarTitle: "engine version", description: "Get version of Splitgraph engine."}; + +```sgr engine version [OPTIONS] [NAME]``` + +Get version of Splitgraph engine. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/metadata.json new file mode 100644 index 00000000..3f70a9d2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0002_engine-management/metadata.json @@ -0,0 +1 @@ +{"title": "Engine management"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/0000_csv-export.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/0000_csv-export.mdx new file mode 100644 index 00000000..8408f9f2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/0000_csv-export.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-export", title: "sgr csv export", sidebarTitle: "csv export", description: "Export the result of a query as CSV."}; + +```sgr csv export [OPTIONS] IMAGE_SPEC QUERY``` + +Export the result of a query as CSV. + +### Examples + +`sgr csv export noaa/climate "SELECT * FROM rainfall"` + +Output everything in the currently checked-out `"rainfall"` table as CSV. + +`sgr csv export noaa/climate:dec_2018 "SELECT * FROM rainfall WHERE state = 'AZ' -f dec_2018_az.csv` + +Check out the `dec_2018` tag of `noaa/climate` and output values from `"rainfall"` for Arizona to `dec_2018_az.csv` + +`sgr csv export --layered noaa/climate:abcdef1234567890 "SELECT * FROM rainfall JOIN other_table ON..."` + +Uses layered querying instead to execute a join on tables in a certain image (satisfying the query without +having to check the image out). + +### Options + + * **`-f, --file FILENAME`**: File name to export to, default stdout. + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/0001_csv-import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/0001_csv-import.mdx new file mode 100644 index 00000000..5f3eb655 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/0001_csv-import.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-import", title: "sgr csv import", sidebarTitle: "csv import", description: "Import a CSV file into a checked-out Splitgraph repository."}; + +```sgr csv import [OPTIONS] REPOSITORY TABLE``` + +Import a CSV file into a checked-out Splitgraph repository. This doesn't create a new image, use `sgr commit` +after the import and any adjustments (e.g. adding primary keys or converting column types) to do so. + +If the target table doesn't exist, this will create a new table. + +If the target table does exist, this will try and patch the new values in by updating rows that exist in the +current table (as per its primary key constraints) and inserting new ones. Rows existing in the current table +but missing in the CSV won't be deleted. + +If `-r` is passed, the table will instead be deleted and recreated from the CSV file if it exists. + +### Options + + * **`-f, --file FILENAME`**: File name to import data from, default stdin. + * **`-r, --replace`**: Replace the table if it already exists. + * **`-k, --primary-key TEXT`**: Use the specified column(s) as primary key(s) + * **`-t, --override-type ...`**: Explicitly set types of these columns to PG types + * **`--encoding TEXT`**: Encoding to use for the CSV file + * **`--separator TEXT`**: CSV separator to use + * **`--no-header`**: Treats the first line of the CSV as data rather than a header. + * **`--skip-schema-check`**: Skips checking that the dataframe is compatible with the target schema. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/0002_mount.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/0002_mount.mdx new file mode 100644 index 00000000..85bcb7f5 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/0002_mount.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "mount", title: "sgr mount", sidebarTitle: "mount", description: "Mount foreign databases as Postgres schemas."}; + +```sgr mount [OPTIONS] ``` + +Mount foreign databases as Postgres schemas. + +Uses the Postgres FDW interface to create a local Postgres schema with foreign tables that map +to tables in other databases. + +See a given mount handler's documentation for handler-specific parameters. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/0003_singer-target.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/0003_singer-target.mdx new file mode 100644 index 00000000..c353a781 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/0003_singer-target.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "singer-target", title: "sgr singer target", sidebarTitle: "singer target", description: "Singer target that loads data into Splitgraph images."}; + +```sgr singer target [OPTIONS] IMAGE``` + +Singer target that loads data into Splitgraph images. + +This will read data from the stdin from a Singer-compatible tap and load it into +a Splitgraph image, merging data if the image already exists. + +Image must be of the format `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]` where `HASH_OR_TAG` +is a tag of an existing image to base the image on. If the repository doesn't exist, +it will be created. + +As this target consumes data from stdin, it will flush the records into a Splitgraph image. By +default, it will only keep the image if the whole stream has been successfully consumed. To +make this target completely follow the Singer spec (if it emits state, the records have been +flushed), pass --failure=keep-both or --failure=delete-old. To delete the old image on success, +pass --delete-old. + +### Options + + * **`-d, --delete-old`**: Delete the old image at the end of ingestion + * **`-f, --failure [keep-both|delete-old|delete-new]`**: What to do in case of a failure. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/metadata.json new file mode 100644 index 00000000..d82f5068 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0003_data-import-export/metadata.json @@ -0,0 +1 @@ +{"title": "Data import/export"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0000_rm.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0000_rm.mdx new file mode 100644 index 00000000..47baf9a3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0000_rm.mdx @@ -0,0 +1,40 @@ +export const meta = {id: "rm", title: "sgr rm", sidebarTitle: "rm", description: "Delete schemas, repositories or images."}; + +```sgr rm [OPTIONS] IMAGE_SPEC``` + +Delete schemas, repositories or images. + +If the target of this command is a Postgres schema, this performs DROP SCHEMA CASCADE. + +If the target of this command is a Splitgraph repository, this deletes the repository and all of its history. + +If the target of this command is an image, this deletes the image and all of its children. + +In any case, this command will ask for confirmation of the deletion, unless ``-y`` is passed. If ``-r`` +(``--remote``), is passed, this will perform deletion on a remote Splitgraph engine (registered in the config) +instead, assuming the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Examples + +``sgr rm temporary_schema`` + +Deletes ``temporary_schema`` from the local engine. + +``sgr rm --remote data.splitgraph.com username/repo`` + +Deletes ``username/repo`` from the Splitgraph registry. + +``sgr rm -y username/repo:old_branch`` + +Deletes the image pointed to by ``old_branch`` as well as all of its children (images created by a commit based +on this image), as well as all of the tags that point to now deleted images, without asking for confirmation. +Note this will not delete images that import tables from the deleted images via Splitfiles or indeed the +physical objects containing the actual tables. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0001_init.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0001_init.mdx new file mode 100644 index 00000000..e4ab8d4d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0001_init.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "init", title: "sgr init", sidebarTitle: "init", description: "Initialize a new repository/engine."}; + +```sgr init [OPTIONS] [REPOSITORY]``` + +Initialize a new repository/engine. + +### Examples + +`sgr init` + +Initializes the current local Splitgraph engine by writing some bookkeeping information. +This is required for the rest of sgr to work. + +`sgr init --skip-object-handling` + +Initializes a Splitgraph engine without installing audit triggers or object management routines: +this is useful for engines that aren't intended to be used for image checkouts. + +``sgr init new/repo`` + +Creates a single image with the hash ``00000...`` in ``new/repo`` + +### Options + + * **`--skip-object-handling`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0002_cleanup.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0002_cleanup.mdx new file mode 100644 index 00000000..c23688a4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0002_cleanup.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "cleanup", title: "sgr cleanup", sidebarTitle: "cleanup", description: "Prune unneeded objects from the engine."}; + +```sgr cleanup [OPTIONS] ``` + +Prune unneeded objects from the engine. + +This deletes all objects from the cache that aren't required by any local repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0003_prune.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0003_prune.mdx new file mode 100644 index 00000000..64c2d49b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0003_prune.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "prune", title: "sgr prune", sidebarTitle: "prune", description: "Cleanup dangling images from a repository."}; + +```sgr prune [OPTIONS] REPOSITORY``` + +Cleanup dangling images from a repository. + +This includes images not pointed to by any tags (or checked out) and those that aren't required by any of +such images. + +Will ask for confirmation of the deletion, unless ``-y ``is passed. If ``-r`` (``--remote``) is +passed, this will perform deletion on a remote Splitgraph engine (registered in the config) instead, assuming +the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0004_config.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0004_config.mdx new file mode 100644 index 00000000..7fcaa53c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0004_config.mdx @@ -0,0 +1,33 @@ +export const meta = {id: "config", title: "sgr config", sidebarTitle: "config", description: "Print the current Splitgraph configuration."}; + +```sgr config [OPTIONS] ``` + +Print the current Splitgraph configuration. + +This takes into account the local config file, the default values +and all overrides specified via environment variables. + +This command can be used to dump the current Splitgraph configuration into a file: + +``` +sgr config --no-shielding --config-format > .sgconfig +``` + +...or save a config file overriding an entry: + +``` +SG_REPO_LOOKUP=engine1,engine2 sgr config -sc > .sgconfig +``` + +If `--conn-string` is passed, this prints out a libpq connection string +that can be used to connect to the default Splitgraph engine with other tools: + +``` +pgcli $(sgr config -n) +``` + +### Options + + * **`-s, --no-shielding`**: If set, doesn't replace sensitive values (like passwords) with asterisks + * **`-c, --config-format`**: Output configuration in the Splitgraph config file format + * **`-n, --conn-string`**: Print a libpq connection string to the engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0005_dump.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0005_dump.mdx new file mode 100644 index 00000000..111baceb --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0005_dump.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "dump", title: "sgr dump", sidebarTitle: "dump", description: "Dump a repository to SQL."}; + +```sgr dump [OPTIONS] REPOSITORY``` + +Dump a repository to SQL. + +### Options + + * **`--exclude-object-contents`**: Don't dump the commands needed to recreate objects required by the repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0006_eval.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0006_eval.mdx new file mode 100644 index 00000000..5b4b7f0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0006_eval.mdx @@ -0,0 +1,39 @@ +export const meta = {id: "eval", title: "sgr eval", sidebarTitle: "eval", description: "Evaluate a Python snippet using the Splitgraph API."}; + +```sgr eval [OPTIONS] COMMAND``` + +Evaluate a Python snippet using the Splitgraph API. + +This is for advanced users only and should be only used +if you know what you are doing. + +Normal Python statements are supported and the command is evaluated +in a namespace where the following is already imported and available: + + * Repository: class that instantiates a Splitgraph repository and makes + API functions like .commit(), .checkout() etc available. + + * engine: Current local engine + + * object_manager: an instance of ObjectManager that allows + to get information about objects and manage the object cache. + + +Example: +``` +sgr eval 'import json; print(json.dumps(Repository\ + .from_schema(repo_name)\ + .images["latest"]\ + .get_table(table_name)\ + .table_schema))' \ +-a repo_name my_repo -a table_name my_table +``` + +Will dump the schema of table my_table in the most recent image in my_repo in JSON format. + +For more information, see the Splitgraph API reference. + +### Options + + * **`--i-know-what-im-doing`**: Pass this if you're sure that the code you're running is safe and don't want to be prompted. + * **`-a, --arg ...`**: Make extra variables available in the command's namespace diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0007_upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0007_upgrade.mdx new file mode 100644 index 00000000..188e798b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/0007_upgrade.mdx @@ -0,0 +1,17 @@ +export const meta = {id: "upgrade", title: "sgr upgrade", sidebarTitle: "upgrade", description: "Upgrade sgr client and engine."}; + +```sgr upgrade [OPTIONS] [VERSION]``` + +Upgrade sgr client and engine. + +This will try to download the most recent stable binary for the current platform +into the location this binary is running from and then upgrade the default engine. + +This method is only supported for single-binary installs and engines managed +by `sgr engine`. + +### Options + + * **`--skip-engine-upgrade`**: Only upgrade the client + * **`--path TEXT`**: Override the path to download the new binary to. + * **`--force`**: Reinstall older/same versions. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/metadata.json new file mode 100644 index 00000000..26f7a103 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0004_miscellaneous/metadata.json @@ -0,0 +1 @@ +{"title": "Miscellaneous"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/0000_clone.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/0000_clone.mdx new file mode 100644 index 00000000..7c2929bd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/0000_clone.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "clone", title: "sgr clone", sidebarTitle: "clone", description: "Clone a remote Splitgraph repository/image into a local one."}; + +```sgr clone [OPTIONS] REMOTE_REPOSITORY_OR_IMAGE [LOCAL_REPOSITORY]``` + +Clone a remote Splitgraph repository/image into a local one. + +The lookup path for the repository is governed by the ``SG_REPO_LOOKUP`` and ``SG_REPO_LOOKUP_OVERRIDE`` +config parameters and can be overridden by the command line ``--remote`` option. + +### Options + + * **`-r, --remote TEXT`**: Name of the remote engine + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/0001_push.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/0001_push.mdx new file mode 100644 index 00000000..60ba1e17 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/0001_push.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "push", title: "sgr push", sidebarTitle: "push", description: "Push images the Splitgraph registry or another engine."}; + +```sgr push [OPTIONS] REPOSITORY_OR_IMAGE [REMOTE_REPOSITORY]``` + +Push images the Splitgraph registry or another engine. + +If an image is not specified (e.g. `sgr push noaa/climate`, this will push all new images. + +By default, the repository will be pushed to a repository with the same name in the user's namespace +(SG_NAMESPACE configuration value which defaults to the username). + +If there's a single engine registered in the config (e.g. data.splitgraph.com), it shall be the default +destination. + +If an upstream repository/engine has been configured for this engine with `sgr upstream`, +it will be used instead. + +Finally, if `remote_repository` or `--remote` are passed, they will take precedence. + +The actual objects will be uploaded to S3 using Minio. When pushing to another engine, +you can choose to upload them directly by passing `--handler DB`. + +### Options + + * **`-r, --remote []`**: Name of the remote engine + * **`-h, --upload-handler TEXT`**: Upload handler + * **`-o, --upload-handler-options JSON`**: Upload handler parameters + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing remote objects + * **`-t, --tags`**: Overwrite tags for pushed image/repo + * **`-u, --reupload-objects`**: Reupload objects that metadata is pushed out for diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/0002_pull.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/0002_pull.mdx new file mode 100644 index 00000000..d1b631d1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/0002_pull.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "pull", title: "sgr pull", sidebarTitle: "pull", description: "Pull changes / download a single image."}; + +```sgr pull [OPTIONS] REPOSITORY_OR_IMAGE``` + +Pull changes / download a single image. + +### Options + + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/0003_upstream.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/0003_upstream.mdx new file mode 100644 index 00000000..32f1d6ec --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/0003_upstream.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "upstream", title: "sgr upstream", sidebarTitle: "upstream", description: "Get or set the upstream for a repository."}; + +```sgr upstream [OPTIONS] REPOSITORY``` + +Get or set the upstream for a repository. + +This shows the default repository used for pushes and pulls as well as allows to change it to a different +remote engine and repository. + +The remote engine alias must exist in the config file. + +### Examples + +``sgr upstream my/repo --set splitgraph.com username/repo`` + +Sets the upstream for ``my/repo`` to ``username/repo`` existing on the ``splitgraph.com`` engine + +``sgr upstream my/repo --reset`` + +Removes the upstream for ``my/repo``. + +``sgr upstream my/repo`` + +Shows the current upstream for ``my/repo``. + +### Options + + * **`-s, --set ...`**: Set the upstream to a engine alias + repository + * **`-r, --reset`**: Delete the upstream diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/metadata.json new file mode 100644 index 00000000..b2c1ab8d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0005_sharing-images/metadata.json @@ -0,0 +1 @@ +{"title": "Sharing images"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/0000_build.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/0000_build.mdx new file mode 100644 index 00000000..2204aae2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/0000_build.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "build", title: "sgr build", sidebarTitle: "build", description: "Build Splitgraph images."}; + +```sgr build [OPTIONS] SPLITFILE``` + +Build Splitgraph images. + +This executes a Splitfile, building a new image or checking it out from cache if the same +image had already been built. + +### Examples + +``sgr build my.splitfile`` + +Executes ``my.splitfile`` and writes its output into a new repository with the same name +as the Splitfile (my) unless the name is specified in the Splitfile. + +``sgr build my.splitfile -o mynew/repo`` + +Executes ``my.splitfile`` and writes its output into ``mynew/repo``. + +``sgr build my_other.splitfile -o mynew/otherrepo --args PARAM1 VAL1 --args PARAM2 VAL2`` + +Executes ``my_other.splitfile`` with parameters ``PARAM1`` and ``PARAM2`` set to +``VAL1`` and ``VAL2``, respectively. + +### Options + + * **`-a, --args ...`**: Parameters to be substituted into the Splitfile. All parameters mentioned in the file must be specified in order for the Splitfile to be executed. + * **`-o, --output-repository REPOSITORY`**: Repository to store the result in. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/0001_rebuild.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/0001_rebuild.mdx new file mode 100644 index 00000000..8194b0f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/0001_rebuild.mdx @@ -0,0 +1,27 @@ +export const meta = {id: "rebuild", title: "sgr rebuild", sidebarTitle: "rebuild", description: "Rebuild images against different dependencies."}; + +```sgr rebuild [OPTIONS] IMAGE_SPEC``` + +Rebuild images against different dependencies. + +Examines the provenance of a Splitgraph image created by a Splitfile and reruns it against different images than +the ones that were imported by the original run. + +### Examples + +``sgr rebuild my/repo --against noaa/climate:old_data`` + +Reconstructs the Splitfile used to create ``my/repo:latest``, replaces all imports from ``noaa/climate`` with +imports from ``noaa/climate:old_data`` and reruns the Splitfile. + +``sgr rebuild my/repo:other_tag -u`` + +Rebuilds ``my_repo:other_tag`` against the latest versions of all of its dependencies. + +Image caching still works in this case: if the result of the rebuild already exists, the image will be checked +out. + +### Options + + * **`-u, --update`**: Rederive the image against the latest version of all dependencies. + * **`-a, --against IMAGE`**: Images to substitute into the reconstructed Splitfile, of the form [NAMESPACE/]REPOSITORY[:HASH_OR_TAG]. Default tag is 'latest'. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/0002_provenance.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/0002_provenance.mdx new file mode 100644 index 00000000..45d3a5a8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/0002_provenance.mdx @@ -0,0 +1,62 @@ +export const meta = {id: "provenance", title: "sgr provenance", sidebarTitle: "provenance", description: "Reconstruct the provenance of an image."}; + +```sgr provenance [OPTIONS] IMAGE_SPEC``` + +Reconstruct the provenance of an image. + +This inspects the image to produce a list of images that were used by the Splitfile +that created it, or a Splitfile with the same effect. + +`IMAGE_SPEC` must be of the form `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]`. +If no tag is specified, `latest` is used. + +### Examples + +Assume `my/repo` is produced by the following Splitfile: + +``` +FROM MOUNT [...] IMPORT external_table +FROM noaa/climate IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} AS rainfall_data +``` + +`my/repo` will have 2 images: one having `hash_1` (with the `external_table` imported from a mounted database) +and one having `hash_2` (with both `external_table` and the `rainfall_data` containing the result +of the query run against the then-latest image in the `noaa/climate` repository). + +In this case: + +``` +sgr provenance my/repo +``` + +Returns a list of repositories and images that were imported by the Splitfile that constructed this image:: + +``` +my/repo:[hash_2] depends on: +noaa/climate:[hash_3] +``` + +Where `hash_3` is the hash of the latest image in the `noaa/climate` repository at the time the original +Splitfile was run. However: + +``` +sgr provenance -f my/repo +``` + +Will try to reconstruct the Splitfile that can be used to build this image. Since the FROM MOUNT command isn't +reproducible (requires access to the original external database, which is a moving target), this will fail. + +If `-e` is passed, this will emit information about irreproducible commands instead of failing. + +``` +sgr provenance -ef my/repo + +# Splitfile commands used to reconstruct my/repo:[image_hash] +# Irreproducible Splitfile command of type MOUNT +FROM noaa/climate:[hash_3] IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} +``` + +### Options + + * **`-f, --full`**: Recreate the Splitfile used to create this image + * **`-e, --ignore-errors`**: If set, ignore commands that aren't reproducible (like MOUNT or custom commands) diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/0003_dependents.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/0003_dependents.mdx new file mode 100644 index 00000000..fc8bc234 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/0003_dependents.mdx @@ -0,0 +1,21 @@ +export const meta = {id: "dependents", title: "sgr dependents", sidebarTitle: "dependents", description: "List images that were created from an image."}; + +```sgr dependents [OPTIONS] IMAGE_SPEC``` + +List images that were created from an image. + +This is the inverse of the sgr provenance command. It will list all images that were +created using a Splitfile that imported data from this image. + +By default, this will look at images on the local engine. The engine can be overridden +with --source-on and --dependents-on. For example: + + sgr dependents --source-on data.splitgraph.com --dependents-on LOCAL noaa/climate:latest + +will show all images on the local engine that derived data from `noaa/climate:latest` +on the Splitgraph registry. + +### Options + + * **`-O, --source-on TEXT`**: Override the engine to look the source up on + * **`-o, --dependents-on TEXT`**: Override the engine to list dependents from diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/metadata.json new file mode 100644 index 00000000..50afd08a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0006_splitfile-execution/metadata.json @@ -0,0 +1 @@ +{"title": "Splitfile execution"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0000_cloud-register.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0000_cloud-register.mdx new file mode 100644 index 00000000..089ce0c6 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0000_cloud-register.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "cloud-register", title: "sgr cloud register", sidebarTitle: "cloud register", description: "Register the user on a Splitgraph registry."}; + +```sgr cloud register [OPTIONS] ``` + +Register the user on a Splitgraph registry. + +By default, this registers the user on data.splitgraph.com, +obtains a set of machine (API) credentials for the client to communicate +with the registry and configures the data.splitgraph.com engine. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--email TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to register on. + * **`--accept-tos`**: Accept the registry's Terms of Service + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0001_cloud-login.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0001_cloud-login.mdx new file mode 100644 index 00000000..cb99d6c1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0001_cloud-login.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "cloud-login", title: "sgr cloud login", sidebarTitle: "cloud login", description: "Log into a Splitgraph registry with username/password."}; + +```sgr cloud login [OPTIONS] ``` + +Log into a Splitgraph registry with username/password. + +This will generate a new refresh token (to use the Splitgraph query API) +and API keys to let sgr access the registry (if they don't already exist +in the configuration file or if the actual username has changed). + +Note that if you already have generated an API key pair but it's not +in the configuration file, this will generate a new pair instead of +restoring the existing one, as the API secret is only stored in the configuration file. + +If you want to log in using an existing API key pair, use `sgr cloud login-api` instead. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`--overwrite`**: Overwrite old API keys in the config if they exist + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0002_cloud-login-api.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0002_cloud-login-api.mdx new file mode 100644 index 00000000..4007fe22 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0002_cloud-login-api.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "cloud-login-api", title: "sgr cloud login-api", sidebarTitle: "cloud login-api", description: "Log into a Splitgraph registry using existing API keys."}; + +```sgr cloud login-api [OPTIONS] ``` + +Log into a Splitgraph registry using existing API keys. + +This will inject the API keys for the registry into the configuration file +and generate a new access token. + +### Options + + * **`--api-key TEXT`**: + * **`--api-secret TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0003_cloud-sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0003_cloud-sql.mdx new file mode 100644 index 00000000..56c4be0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0003_cloud-sql.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "cloud-sql", title: "sgr cloud sql", sidebarTitle: "cloud sql", description: "Run SQL on or connect to the Splitgraph Data Delivery Network."}; + +```sgr cloud sql [OPTIONS] [QUERY]``` + +Run SQL on or connect to the Splitgraph Data Delivery Network. + +If a query isn't passed, this will return a libpq-compatible connection string to +the registry's SQL endpoint. It can be used to connect to the endpoint with other SQL clients: + +``` +pgcli $(sgr cloud sql) +``` + +If a query is passed, this will run an SQL query against the SQL endpoint. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0004_cloud-curl.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0004_cloud-curl.mdx new file mode 100644 index 00000000..e902965b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0004_cloud-curl.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "cloud-curl", title: "sgr cloud curl", sidebarTitle: "cloud curl", description: "Query a Splitgraph REST API."}; + +```sgr cloud curl [OPTIONS] IMAGE [REQUEST_PARAMS]``` + +Query a Splitgraph REST API. + +This is a thin wrapper around curl that performs an HTTP request to Splitgraph Cloud to +interact with a dataset using PostgREST (http://postgrest.org) or the Splitfile execution service. + +The actual invocation is: + +``` +curl [API endpoint][request] -H [access_token] [extra curl args]. +``` + +The image must be of the form `namespace/repository:[hash_or_tag (default latest)]`. + +The actual request parameters depend on the request type: + + * For PostgREST: `/table?[postgrest request]` or empty to get the OpenAPI spec for this image. + For a reference on how to perform Postgrest requests, see http://postgrest.org/en/latest/api.html. + * For the Splitfile executor: a JSON array to be POSTed to the executor, e.g. + `'{"command": "FROM some/repo IMPORT some_table AS alias", "tag": "new_tag"}'`. + +`--curl-args` allows to pass extra arguments to curl. Note that every argument must be prefixed +with `--curl-args`, e.g. `--curl-args --cacert --curl-args /path/to/ca.pem`. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-t, --request-type [postgrest|splitfile]`**: + * **`-c, --curl-args TEXT`**: Extra arguments to be passed to curl diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0005_cloud-readme.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0005_cloud-readme.mdx new file mode 100644 index 00000000..4d800dc6 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0005_cloud-readme.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-readme", title: "sgr cloud readme", sidebarTitle: "cloud readme", description: "Upload or a README to a Splitgraph repository."}; + +```sgr cloud readme [OPTIONS] REPOSITORY README``` + +Upload or a README to a Splitgraph repository. + +The repository must have already been pushed. The README must be a file in Markdown format. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0006_cloud-description.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0006_cloud-description.mdx new file mode 100644 index 00000000..003c953f --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0006_cloud-description.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-description", title: "sgr cloud description", sidebarTitle: "cloud description", description: "Upload a description to a Splitgraph repository."}; + +```sgr cloud description [OPTIONS] REPOSITORY DESCRIPTION``` + +Upload a description to a Splitgraph repository. + +The repository must have already been pushed. The description should be plain text, 160 characters or shorter. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0007_cloud-metadata.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0007_cloud-metadata.mdx new file mode 100644 index 00000000..01b2f064 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0007_cloud-metadata.mdx @@ -0,0 +1,41 @@ +export const meta = {id: "cloud-metadata", title: "sgr cloud metadata", sidebarTitle: "cloud metadata", description: "Upload a metadata file to a Splitgraph repository."}; + +```sgr cloud metadata [OPTIONS] REPOSITORY [METADATA_FILE]``` + +Upload a metadata file to a Splitgraph repository. + +This can manipulate the repository's short description, README, topics, license, sources and extra metadata. + +The metadata file must be a YAML file. Omitting a key doesn't delete the value. + +For example: + + +``` +readme: dataset-readme.md +description: Dataset description (160 characters max). +topics: + - topic_1 + - topic_2 +sources: + - anchor: Source + href: https://www.splitgraph.com + isCreator: true + isSameAs: false + - anchor: Source 2 + href: https://www.splitgraph.com + isCreator: false + isSameAs: true +license: Public Domain +extra_metadata: + key_1: + key_1_1: value_1_1 + key_1_2: value_1_2 + key_2: + key_2_1: value_2_1 + key_2_2: value_2_2 +``` + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0008_cloud-search.mdx b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0008_cloud-search.mdx new file mode 100644 index 00000000..c23c31f4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/0008_cloud-search.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "cloud-search", title: "sgr cloud search", sidebarTitle: "cloud search", description: "Search for a repository on the Splitgraph registry."}; + +```sgr cloud search [OPTIONS] QUERY``` + +Search for a repository on the Splitgraph registry. + +For more advanced search, including filtering by topics, go to the registry's website itself. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--limit INTEGER RANGE`**: Number of results to return diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/metadata.json new file mode 100644 index 00000000..25ba655e --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/0007_splitgraph-cloud/metadata.json @@ -0,0 +1 @@ +{"title": "Splitgraph Cloud"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.12/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.12/metadata.json new file mode 100644 index 00000000..bedc4dfd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.12/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.12", + "updated_at": "2022-01-20T00:00:48.356Z", + "release": { + "id": 41069524, + "tag_name": "v0.2.12", + "target_commitish": "9f64e86b1567603749712e4c27ed6ccdc6475af4", + "created_at": "2021-04-07T15:31:09Z", + "published_at": "2021-04-22T13:36:43Z", + "assets": [ + { + "id": 34595301, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/34595301", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-04-07T15:58:00Z", + "updated_at": "2021-04-07T15:58:01Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.12/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0000_checkout.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0000_checkout.mdx new file mode 100644 index 00000000..cc805a26 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0000_checkout.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "checkout", title: "sgr checkout", sidebarTitle: "checkout", description: "Check out a Splitgraph image into a Postgres schema."}; + +```sgr checkout [OPTIONS] IMAGE_SPEC``` + +Check out a Splitgraph image into a Postgres schema. + +This downloads the required physical objects and materializes all tables, unless ``-l`` or ``--layered`` is passed, +in which case the objects are downloaded and a foreign data wrapper is set up on the engine to satisfy read-only +queries by combining results from each table's fragments. + +Tables checked out in this way are still presented as normal Postgres tables and can queried in the same way. +Since the tables aren't materialized, layered querying is faster to set up, but since each query now results in a +subquery to each object comprising the table, actual query execution is slower than to materialized Postgres tables. + +Layered querying is only supported for read-only queries. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. Note that currently, the schema that the +image is checked out into has to have the same name as the repository. If no image hash or tag is passed, +"HEAD" is assumed. + +If ``-u`` or ``--uncheckout`` is passed, this instead deletes the checked out schema (assuming there are no pending +changes) and removes the HEAD pointer. + +If ``--force`` isn't passed and the schema has pending changes, this will fail. + +### Options + + * **`-f, --force`**: Discard all pending changes to the schema + * **`-u, --uncheckout`**: Delete the checked out copy instead + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0001_commit.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0001_commit.mdx new file mode 100644 index 00000000..9a2ec1f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0001_commit.mdx @@ -0,0 +1,59 @@ +export const meta = {id: "commit", title: "sgr commit", sidebarTitle: "commit", description: "Commit changes to a checked-out Splitgraph repository."}; + +```sgr commit [OPTIONS] REPOSITORY``` + +Commit changes to a checked-out Splitgraph repository. + +This packages up all changes into a new image. Where a table hasn't been created or had its schema changed, +this will delta compress the changes. For all other tables (or if ``-s`` has been passed), this will +store them as full table snapshots. + +When a table is stored as a full snapshot, `--chunk-size` sets the maximum size, in rows, of the fragments +that the table will be split into (default is no splitting). The splitting is done by the +table's primary key. + +If `--split-changesets` is passed, delta-compressed changes will also be split up according to the original +table chunk boundaries. For example, if there's a change to the first and the 20000th row of a table that was +originally committed with `--chunk-size=10000`, this will create 2 fragments: one based on the first chunk +and one on the second chunk of the table. + +If `--chunk-sort-keys` is passed, data inside the chunk is sorted by this key (or multiple keys). +This helps speed up queries on those keys for storage layers than can leverage that (e.g. CStore). The expected format is JSON, e.g. `{table_1: [col_1, col_2]}` + +`--index-options` expects a JSON-serialized dictionary of `{table: index_type: column: index_specific_kwargs}`. +Indexes are used to narrow down the amount of chunks to scan through when running a query. By default, each column +has a range index (minimum and maximum values) and it's possible to add bloom filtering to speed up queries that +involve equalities. + +Bloom filtering allows to trade off between the space overhead of the index and the probability of a false +positive (claiming that an object contains a record when it actually doesn't, leading to extra scans). + +An example `index-options` dictionary: + + +``` +{ + "table": { + "bloom": { + "column_1": { + "probability": 0.01, # Only one of probability + "size": 10000 # or size can be specified. + } + }, + # Only compute the range index on these columns. By default, + # it's computed on all columns and is always computed on the + # primary key no matter what. + "range": ["column_2", "column_3"] + } +} +``` + +### Options + + * **`-s, --snap`**: Do not delta compress the changes and instead store the whole table again. This consumes more space, but makes checkouts faster. + * **`-c, --chunk-size INTEGER`**: Split new tables into chunks of this many rows (by primary key). The default value is governed by the SG_COMMIT_CHUNK_SIZE configuration parameter. + * **`-k, --chunk-sort-keys JSON`**: Sort the data inside each chunk by this/these key(s) + * **`-t, --split-changesets`**: Split changesets for existing tables across original chunk boundaries. + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate on the new objects. + * **`-m, --message TEXT`**: Optional commit message + * **`-o, --overwrite`**: Overwrite physical objects that already exist diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0002_tag.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0002_tag.mdx new file mode 100644 index 00000000..89f01837 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0002_tag.mdx @@ -0,0 +1,36 @@ +export const meta = {id: "tag", title: "sgr tag", sidebarTitle: "tag", description: "Manage tags on images."}; + +```sgr tag [OPTIONS] IMAGE_SPEC [TAG]``` + +Manage tags on images. + +Depending on the exact invocation, this command can tag a Splitgraph image, +list all tags in a repository or delete a tag. + +### Examples + +``sgr tag noaa/climate`` + +List all tagged images in the ``noaa/climate`` repository and their tags. + +``sgr tag noaa/climate:abcdef1234567890`` + +List all tags assigned to the image ``noaa/climate:abcdef1234567890...`` + +``sgr tag noaa/climate:abcdef1234567890 my_new_tag`` + +Tag the image ``noaa/climate:abcdef1234567890...`` with ``my_new_tag``. If the tag already exists, this will +overwrite the tag. + +``sgr tag noaa/climate my_new_tag`` + +Tag the current ``HEAD`` of ``noaa/climate`` with ``my_new_tag``. + +``sgr tag --delete noaa/climate:my_new_tag`` + +Delete the tag ``my_new_tag`` from ``noaa/climate``. + +### Options + + * **`-d, --delete`**: Delete the tag instead. + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0003_import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0003_import.mdx new file mode 100644 index 00000000..b69bbfb4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0003_import.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "import", title: "sgr import", sidebarTitle: "import", description: "Import tables into a Splitgraph repository."}; + +```sgr import [OPTIONS] IMAGE_SPEC TABLE_OR_QUERY TARGET_REPOSITORY [TARGET_TABLE]``` + +Import tables into a Splitgraph repository. + +Imports a table or a result of a query from a local Splitgraph repository or a Postgres schema into another +Splitgraph repository. + +### Examples + +``sgr import noaa/climate:my_tag climate_data my/repository`` + +Create a new image in ``my/repository`` with the ``climate_data`` table included. This links the new image to +the physical object, meaning that the history of the ``climate_data`` table is preserved. + +If no tag is specified, the 'latest' (not the HEAD image or current state of the checked out image) +image is used. + +``sgr import noaa/climate:my_tag "SELECT * FROM climate_data" my/repository climate_data`` + +Create a new image in ``my/repository`` with the result of the query stored in the ``climate_data`` table. This +creates a new physical object without any linkage to the original data, so the history of the ``climate_data`` +table isn't preserved. The SQL query can interact with multiple tables in the source image. + +``sgr import other_schema other_table my/repository`` + +Since other_schema isn't a Splitgraph repository, this will copy ``other_schema.other_table`` +into a new Splitgraph object and add the ``other_table`` table to a new image in ``my/repository``. + +Note that importing doesn't discard or commit pending changes in the target Splitgraph repository: a new image +is created with the new table added, the new table is materialized in the repository and the HEAD pointer is moved. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0004_reindex.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0004_reindex.mdx new file mode 100644 index 00000000..b640ffe3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/0004_reindex.mdx @@ -0,0 +1,19 @@ +export const meta = {id: "reindex", title: "sgr reindex", sidebarTitle: "reindex", description: "Run extra indexes on a table."}; + +```sgr reindex [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Run extra indexes on a table. This will merge the indexing results for all objects +that a table is formed from with the current object indexes. For explanation of +what indexes do, see the documentation for `sgr commit`. + +If the objects haven't been downloaded yet, this will download them. + +Currently reindexing objects that change other objects is unsupported and will raise +an error. Pass `-o` to ignore these objects and only reindex supported objects. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate, e.g. '{"bloom": {"column_1": {"probability": 0.01}}}' [required] + * **`-o, --ignore-patch-objects`**: Ignore objects that change other objects' rows instead of raising an error diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/metadata.json new file mode 100644 index 00000000..9ef75b16 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0000_image-management-creation/metadata.json @@ -0,0 +1 @@ +{"title": "Image management/creation"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0000_log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0000_log.mdx new file mode 100644 index 00000000..db5078b4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0000_log.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "log", title: "sgr log", sidebarTitle: "log", description: "Show the history of a Splitgraph repository/image."}; + +```sgr log [OPTIONS] IMAGE_SPEC``` + +Show the history of a Splitgraph repository/image. + +By default, this shows the history of the current branch, starting from the HEAD pointer and following its +parent chain. + +Alternatively, it can follow the parent chain of any other image. + +If ``-t`` or ``--tree`` is passed, this instead renders the full image tree. The repository doesn't need to have +been checked out in this case. + +### Options + + * **`-t, --tree`**: + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0001_diff.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0001_diff.mdx new file mode 100644 index 00000000..8ef569e8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0001_diff.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "diff", title: "sgr diff", sidebarTitle: "diff", description: "Show differences between two Splitgraph images."}; + +```sgr diff [OPTIONS] REPOSITORY [TAG_OR_HASH_1] [TAG_OR_HASH_2]``` + +Show differences between two Splitgraph images. + +The two images must be in the same repository. The actual targets of this command depend +on the number of arguments passed: + +``sgr diff REPOSITORY`` + +Return the differences between the current HEAD image and the checked out schema. + +``sgr diff REPOSITORY TAG_OR_HASH`` + +Return the differences between the image and its parent. + +``sgr diff REPOSITORY TAG_OR_HASH_1 TAG_OR_HASH_2`` + +Return the differences from the first (earlier) image to the second image. + +### Options + + * **`-v, --verbose`**: Include the actual differences rather than just the total number of updated rows. + * **`-t, --table-name TEXT`**: Show the differences for a single table. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0002_object.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0002_object.mdx new file mode 100644 index 00000000..ff8c38a9 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0002_object.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "object", title: "sgr object", sidebarTitle: "object", description: "Show information about a Splitgraph object."}; + +```sgr object [OPTIONS] OBJECT_ID``` + +Show information about a Splitgraph object. + +Objects, or fragments, are building blocks of Splitgraph tables: each table consists of multiple immutable fragments +that can partially overwrite each other. Each fragment might have a parent that it depends on. In addition, +the smallest and largest values for every column are stored in the fragment's metadata. This information is used +to choose which objects to download in order to execute a query against a table. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0003_objects.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0003_objects.mdx new file mode 100644 index 00000000..c56fa727 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0003_objects.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "objects", title: "sgr objects", sidebarTitle: "objects", description: "List objects known to this engine."}; + +```sgr objects [OPTIONS] ``` + +List objects known to this engine. + +### Options + + * **`--local`**: Show only objects that are physically present on this engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0004_show.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0004_show.mdx new file mode 100644 index 00000000..4ddcc55d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0004_show.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "show", title: "sgr show", sidebarTitle: "show", description: "Show information about a Splitgraph image."}; + +```sgr show [OPTIONS] IMAGE_SPEC``` + +Show information about a Splitgraph image. This includes its parent, comment, size and creation time. + +Note that the size isn't the on-disk footprint, as the image might share some objects with other images +or if some of the image's objects have not been downloaded. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0005_table.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0005_table.mdx new file mode 100644 index 00000000..cc681c85 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0005_table.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "table", title: "sgr table", sidebarTitle: "table", description: "Show information about a table in a Splitgraph image."}; + +```sgr table [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Show information about a table in a Splitgraph image. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-v, --verbose`**: Show all of table's objects. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0006_sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0006_sql.mdx new file mode 100644 index 00000000..ea8a304b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0006_sql.mdx @@ -0,0 +1,34 @@ +export const meta = {id: "sql", title: "sgr sql", sidebarTitle: "sql", description: "Run an SQL statement against the Splitgraph engine."}; + +```sgr sql [OPTIONS] SQL``` + +Run an SQL statement against the Splitgraph engine. + +There are no restrictions on the contents of the statement: this is the same as running it +from any other PostgreSQL client. + +If ``--schema`` is specified, the statement is run with the ``search_path`` set to that schema. This means +that these statements are equivalent: + + +``` +sgr sql "SELECT * FROM "noaa/climate".table" +sgr sql -s noaa/climate "SELECT * FROM table" +``` + +If `--image` is specified, this will run the statement against that image using layered querying. +Only read-only statements are supported. For example: + + +``` +sgr sql -i noaa/climate:latest "SELECT * FROM table" +``` + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-s, --schema TEXT`**: Run SQL against this schema. + * **`-i, --image IMAGE`**: Run SQL against this image. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON + * **`-n, --no-transaction`**: Don't wrap the SQL in a transaction. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0007_status.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0007_status.mdx new file mode 100644 index 00000000..5e312f11 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/0007_status.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "status", title: "sgr status", sidebarTitle: "status", description: "Show the status of the Splitgraph engine."}; + +```sgr status [OPTIONS] [REPOSITORY]``` + +Show the status of the Splitgraph engine. + +If a repository is passed, show in-depth information about a repository. + +If not, show information about all repositories local to the engine. This will show a list +of all repositories, number of local images and tags, total repository size (theoretical +maximum size and current on-disk footprint of cached objects) and the current checked +out image (with LQ if the image is checked out using read-only layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/metadata.json new file mode 100644 index 00000000..a2c3f0f8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0001_image-information/metadata.json @@ -0,0 +1 @@ +{"title": "Image information"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0000_engine-add.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0000_engine-add.mdx new file mode 100644 index 00000000..c0b69417 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0000_engine-add.mdx @@ -0,0 +1,26 @@ +export const meta = {id: "engine-add", title: "sgr engine add", sidebarTitle: "engine add", description: "Create and start a Splitgraph engine."}; + +```sgr engine add [OPTIONS] [NAME]``` + +Create and start a Splitgraph engine. + +This will pull the Splitgraph engine image, start it, create a Postgres user and initialize +the engine. + +This also creates Docker volumes required to persist data/metadata. + +The engine Docker container by default will be named `splitgraph_engine_default` and +its data and metadata volumes will have names `splitgraph_engine_default_data` and +`splitgraph_engine_default_metadata`. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`-p, --port INTEGER`**: Port to start the engine on + * **`-u, --username TEXT`**: + * **`--no-init`**: Don't run `sgr init` on the engine + * **`--no-sgconfig`**: Don't add the engine to .sgconfig + * **`--inject-source`**: Inject the current Splitgraph source code into the engine using Docker bind mounts + * **`--no-pull`**: Don't pull the Docker image + * **`--set-default`**: Set the engine as the default engine in the config regardless of its name + * **`--password TEXT`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0001_engine-delete.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0001_engine-delete.mdx new file mode 100644 index 00000000..6229e082 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0001_engine-delete.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "engine-delete", title: "sgr engine delete", sidebarTitle: "engine delete", description: "Delete the Splitgraph engine container."}; + +```sgr engine delete [OPTIONS] [NAME]``` + +Delete the Splitgraph engine container. + +### Options + + * **`-y, --yes`**: Do not prompt for confirmation. + * **`-f, --force`**: Delete the engine anyway if it's running. + * **`-v, --with-volumes`**: Include the engine's volumes (if not specified, volumes will be reattached when an engine with the same name is created). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0002_engine-list.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0002_engine-list.mdx new file mode 100644 index 00000000..a2530db2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0002_engine-list.mdx @@ -0,0 +1,13 @@ +export const meta = {id: "engine-list", title: "sgr engine list", sidebarTitle: "engine list", description: "List Splitgraph engines."}; + +```sgr engine list [OPTIONS] ``` + +List Splitgraph engines. + +This only lists Docker containers that were created by sgr engine +(whose names start with `splitgraph_engine_`. To manage other engines, +use Docker CLI directly. + +### Options + + * **`-a, --include-all`**: Include stopped engine containers. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0003_engine-start.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0003_engine-start.mdx new file mode 100644 index 00000000..4c9cdf6c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0003_engine-start.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-start", title: "sgr engine start", sidebarTitle: "engine start", description: "Start a Splitgraph engine."}; + +```sgr engine start [OPTIONS] [NAME]``` + +Start a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0004_engine-stop.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0004_engine-stop.mdx new file mode 100644 index 00000000..7ea64786 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0004_engine-stop.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-stop", title: "sgr engine stop", sidebarTitle: "engine stop", description: "Stop a Splitgraph engine."}; + +```sgr engine stop [OPTIONS] [NAME]``` + +Stop a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0005_engine-upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0005_engine-upgrade.mdx new file mode 100644 index 00000000..751cd998 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0005_engine-upgrade.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "engine-upgrade", title: "sgr engine upgrade", sidebarTitle: "engine upgrade", description: "Upgrade a Splitgraph engine."}; + +```sgr engine upgrade [OPTIONS] [NAME]``` + +Upgrade a Splitgraph engine. + +This consists of shutting down the current Splitgraph engine, +deleting its Docker container (keeping the actual data and +metadata volumes intact), creating a container based on a newer +image and finally reinitializing the engine to perform needed migrations. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`--no-pull`**: Don't pull the new engine image diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0006_engine-log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0006_engine-log.mdx new file mode 100644 index 00000000..58859523 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0006_engine-log.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "engine-log", title: "sgr engine log", sidebarTitle: "engine log", description: "Get logs from a Splitgraph engine."}; + +```sgr engine log [OPTIONS] [NAME]``` + +Get logs from a Splitgraph engine. + +### Options + + * **`-f, --follow`**: Stream logs diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0007_engine-configure.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0007_engine-configure.mdx new file mode 100644 index 00000000..1be8adcd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0007_engine-configure.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "engine-configure", title: "sgr engine configure", sidebarTitle: "engine configure", description: "Inject a configuration file into an engine."}; + +```sgr engine configure [OPTIONS] [NAME]``` + +Inject a configuration file into an engine. + +This copies the current .sgconfig file (pointed to by SG_CONFIG_FILE) into +the engine container, making it use that configuration for +when it's queried through an application other than the sgr client +(layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0008_engine-version.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0008_engine-version.mdx new file mode 100644 index 00000000..d47bfe05 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/0008_engine-version.mdx @@ -0,0 +1,5 @@ +export const meta = {id: "engine-version", title: "sgr engine version", sidebarTitle: "engine version", description: "Get version of Splitgraph engine."}; + +```sgr engine version [OPTIONS] [NAME]``` + +Get version of Splitgraph engine. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/metadata.json new file mode 100644 index 00000000..3f70a9d2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0002_engine-management/metadata.json @@ -0,0 +1 @@ +{"title": "Engine management"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/0000_csv-export.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/0000_csv-export.mdx new file mode 100644 index 00000000..8408f9f2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/0000_csv-export.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-export", title: "sgr csv export", sidebarTitle: "csv export", description: "Export the result of a query as CSV."}; + +```sgr csv export [OPTIONS] IMAGE_SPEC QUERY``` + +Export the result of a query as CSV. + +### Examples + +`sgr csv export noaa/climate "SELECT * FROM rainfall"` + +Output everything in the currently checked-out `"rainfall"` table as CSV. + +`sgr csv export noaa/climate:dec_2018 "SELECT * FROM rainfall WHERE state = 'AZ' -f dec_2018_az.csv` + +Check out the `dec_2018` tag of `noaa/climate` and output values from `"rainfall"` for Arizona to `dec_2018_az.csv` + +`sgr csv export --layered noaa/climate:abcdef1234567890 "SELECT * FROM rainfall JOIN other_table ON..."` + +Uses layered querying instead to execute a join on tables in a certain image (satisfying the query without +having to check the image out). + +### Options + + * **`-f, --file FILENAME`**: File name to export to, default stdout. + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/0001_csv-import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/0001_csv-import.mdx new file mode 100644 index 00000000..5f3eb655 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/0001_csv-import.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-import", title: "sgr csv import", sidebarTitle: "csv import", description: "Import a CSV file into a checked-out Splitgraph repository."}; + +```sgr csv import [OPTIONS] REPOSITORY TABLE``` + +Import a CSV file into a checked-out Splitgraph repository. This doesn't create a new image, use `sgr commit` +after the import and any adjustments (e.g. adding primary keys or converting column types) to do so. + +If the target table doesn't exist, this will create a new table. + +If the target table does exist, this will try and patch the new values in by updating rows that exist in the +current table (as per its primary key constraints) and inserting new ones. Rows existing in the current table +but missing in the CSV won't be deleted. + +If `-r` is passed, the table will instead be deleted and recreated from the CSV file if it exists. + +### Options + + * **`-f, --file FILENAME`**: File name to import data from, default stdin. + * **`-r, --replace`**: Replace the table if it already exists. + * **`-k, --primary-key TEXT`**: Use the specified column(s) as primary key(s) + * **`-t, --override-type ...`**: Explicitly set types of these columns to PG types + * **`--encoding TEXT`**: Encoding to use for the CSV file + * **`--separator TEXT`**: CSV separator to use + * **`--no-header`**: Treats the first line of the CSV as data rather than a header. + * **`--skip-schema-check`**: Skips checking that the dataframe is compatible with the target schema. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/0002_mount.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/0002_mount.mdx new file mode 100644 index 00000000..85bcb7f5 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/0002_mount.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "mount", title: "sgr mount", sidebarTitle: "mount", description: "Mount foreign databases as Postgres schemas."}; + +```sgr mount [OPTIONS] ``` + +Mount foreign databases as Postgres schemas. + +Uses the Postgres FDW interface to create a local Postgres schema with foreign tables that map +to tables in other databases. + +See a given mount handler's documentation for handler-specific parameters. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/0003_singer-target.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/0003_singer-target.mdx new file mode 100644 index 00000000..c353a781 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/0003_singer-target.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "singer-target", title: "sgr singer target", sidebarTitle: "singer target", description: "Singer target that loads data into Splitgraph images."}; + +```sgr singer target [OPTIONS] IMAGE``` + +Singer target that loads data into Splitgraph images. + +This will read data from the stdin from a Singer-compatible tap and load it into +a Splitgraph image, merging data if the image already exists. + +Image must be of the format `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]` where `HASH_OR_TAG` +is a tag of an existing image to base the image on. If the repository doesn't exist, +it will be created. + +As this target consumes data from stdin, it will flush the records into a Splitgraph image. By +default, it will only keep the image if the whole stream has been successfully consumed. To +make this target completely follow the Singer spec (if it emits state, the records have been +flushed), pass --failure=keep-both or --failure=delete-old. To delete the old image on success, +pass --delete-old. + +### Options + + * **`-d, --delete-old`**: Delete the old image at the end of ingestion + * **`-f, --failure [keep-both|delete-old|delete-new]`**: What to do in case of a failure. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/metadata.json new file mode 100644 index 00000000..d82f5068 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0003_data-import-export/metadata.json @@ -0,0 +1 @@ +{"title": "Data import/export"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0000_rm.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0000_rm.mdx new file mode 100644 index 00000000..47baf9a3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0000_rm.mdx @@ -0,0 +1,40 @@ +export const meta = {id: "rm", title: "sgr rm", sidebarTitle: "rm", description: "Delete schemas, repositories or images."}; + +```sgr rm [OPTIONS] IMAGE_SPEC``` + +Delete schemas, repositories or images. + +If the target of this command is a Postgres schema, this performs DROP SCHEMA CASCADE. + +If the target of this command is a Splitgraph repository, this deletes the repository and all of its history. + +If the target of this command is an image, this deletes the image and all of its children. + +In any case, this command will ask for confirmation of the deletion, unless ``-y`` is passed. If ``-r`` +(``--remote``), is passed, this will perform deletion on a remote Splitgraph engine (registered in the config) +instead, assuming the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Examples + +``sgr rm temporary_schema`` + +Deletes ``temporary_schema`` from the local engine. + +``sgr rm --remote data.splitgraph.com username/repo`` + +Deletes ``username/repo`` from the Splitgraph registry. + +``sgr rm -y username/repo:old_branch`` + +Deletes the image pointed to by ``old_branch`` as well as all of its children (images created by a commit based +on this image), as well as all of the tags that point to now deleted images, without asking for confirmation. +Note this will not delete images that import tables from the deleted images via Splitfiles or indeed the +physical objects containing the actual tables. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0001_init.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0001_init.mdx new file mode 100644 index 00000000..e4ab8d4d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0001_init.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "init", title: "sgr init", sidebarTitle: "init", description: "Initialize a new repository/engine."}; + +```sgr init [OPTIONS] [REPOSITORY]``` + +Initialize a new repository/engine. + +### Examples + +`sgr init` + +Initializes the current local Splitgraph engine by writing some bookkeeping information. +This is required for the rest of sgr to work. + +`sgr init --skip-object-handling` + +Initializes a Splitgraph engine without installing audit triggers or object management routines: +this is useful for engines that aren't intended to be used for image checkouts. + +``sgr init new/repo`` + +Creates a single image with the hash ``00000...`` in ``new/repo`` + +### Options + + * **`--skip-object-handling`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0002_cleanup.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0002_cleanup.mdx new file mode 100644 index 00000000..c23688a4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0002_cleanup.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "cleanup", title: "sgr cleanup", sidebarTitle: "cleanup", description: "Prune unneeded objects from the engine."}; + +```sgr cleanup [OPTIONS] ``` + +Prune unneeded objects from the engine. + +This deletes all objects from the cache that aren't required by any local repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0003_prune.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0003_prune.mdx new file mode 100644 index 00000000..64c2d49b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0003_prune.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "prune", title: "sgr prune", sidebarTitle: "prune", description: "Cleanup dangling images from a repository."}; + +```sgr prune [OPTIONS] REPOSITORY``` + +Cleanup dangling images from a repository. + +This includes images not pointed to by any tags (or checked out) and those that aren't required by any of +such images. + +Will ask for confirmation of the deletion, unless ``-y ``is passed. If ``-r`` (``--remote``) is +passed, this will perform deletion on a remote Splitgraph engine (registered in the config) instead, assuming +the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0004_config.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0004_config.mdx new file mode 100644 index 00000000..7fcaa53c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0004_config.mdx @@ -0,0 +1,33 @@ +export const meta = {id: "config", title: "sgr config", sidebarTitle: "config", description: "Print the current Splitgraph configuration."}; + +```sgr config [OPTIONS] ``` + +Print the current Splitgraph configuration. + +This takes into account the local config file, the default values +and all overrides specified via environment variables. + +This command can be used to dump the current Splitgraph configuration into a file: + +``` +sgr config --no-shielding --config-format > .sgconfig +``` + +...or save a config file overriding an entry: + +``` +SG_REPO_LOOKUP=engine1,engine2 sgr config -sc > .sgconfig +``` + +If `--conn-string` is passed, this prints out a libpq connection string +that can be used to connect to the default Splitgraph engine with other tools: + +``` +pgcli $(sgr config -n) +``` + +### Options + + * **`-s, --no-shielding`**: If set, doesn't replace sensitive values (like passwords) with asterisks + * **`-c, --config-format`**: Output configuration in the Splitgraph config file format + * **`-n, --conn-string`**: Print a libpq connection string to the engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0005_dump.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0005_dump.mdx new file mode 100644 index 00000000..111baceb --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0005_dump.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "dump", title: "sgr dump", sidebarTitle: "dump", description: "Dump a repository to SQL."}; + +```sgr dump [OPTIONS] REPOSITORY``` + +Dump a repository to SQL. + +### Options + + * **`--exclude-object-contents`**: Don't dump the commands needed to recreate objects required by the repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0006_eval.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0006_eval.mdx new file mode 100644 index 00000000..5b4b7f0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0006_eval.mdx @@ -0,0 +1,39 @@ +export const meta = {id: "eval", title: "sgr eval", sidebarTitle: "eval", description: "Evaluate a Python snippet using the Splitgraph API."}; + +```sgr eval [OPTIONS] COMMAND``` + +Evaluate a Python snippet using the Splitgraph API. + +This is for advanced users only and should be only used +if you know what you are doing. + +Normal Python statements are supported and the command is evaluated +in a namespace where the following is already imported and available: + + * Repository: class that instantiates a Splitgraph repository and makes + API functions like .commit(), .checkout() etc available. + + * engine: Current local engine + + * object_manager: an instance of ObjectManager that allows + to get information about objects and manage the object cache. + + +Example: +``` +sgr eval 'import json; print(json.dumps(Repository\ + .from_schema(repo_name)\ + .images["latest"]\ + .get_table(table_name)\ + .table_schema))' \ +-a repo_name my_repo -a table_name my_table +``` + +Will dump the schema of table my_table in the most recent image in my_repo in JSON format. + +For more information, see the Splitgraph API reference. + +### Options + + * **`--i-know-what-im-doing`**: Pass this if you're sure that the code you're running is safe and don't want to be prompted. + * **`-a, --arg ...`**: Make extra variables available in the command's namespace diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0007_upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0007_upgrade.mdx new file mode 100644 index 00000000..188e798b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/0007_upgrade.mdx @@ -0,0 +1,17 @@ +export const meta = {id: "upgrade", title: "sgr upgrade", sidebarTitle: "upgrade", description: "Upgrade sgr client and engine."}; + +```sgr upgrade [OPTIONS] [VERSION]``` + +Upgrade sgr client and engine. + +This will try to download the most recent stable binary for the current platform +into the location this binary is running from and then upgrade the default engine. + +This method is only supported for single-binary installs and engines managed +by `sgr engine`. + +### Options + + * **`--skip-engine-upgrade`**: Only upgrade the client + * **`--path TEXT`**: Override the path to download the new binary to. + * **`--force`**: Reinstall older/same versions. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/metadata.json new file mode 100644 index 00000000..26f7a103 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0004_miscellaneous/metadata.json @@ -0,0 +1 @@ +{"title": "Miscellaneous"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/0000_clone.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/0000_clone.mdx new file mode 100644 index 00000000..7c2929bd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/0000_clone.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "clone", title: "sgr clone", sidebarTitle: "clone", description: "Clone a remote Splitgraph repository/image into a local one."}; + +```sgr clone [OPTIONS] REMOTE_REPOSITORY_OR_IMAGE [LOCAL_REPOSITORY]``` + +Clone a remote Splitgraph repository/image into a local one. + +The lookup path for the repository is governed by the ``SG_REPO_LOOKUP`` and ``SG_REPO_LOOKUP_OVERRIDE`` +config parameters and can be overridden by the command line ``--remote`` option. + +### Options + + * **`-r, --remote TEXT`**: Name of the remote engine + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/0001_push.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/0001_push.mdx new file mode 100644 index 00000000..60ba1e17 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/0001_push.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "push", title: "sgr push", sidebarTitle: "push", description: "Push images the Splitgraph registry or another engine."}; + +```sgr push [OPTIONS] REPOSITORY_OR_IMAGE [REMOTE_REPOSITORY]``` + +Push images the Splitgraph registry or another engine. + +If an image is not specified (e.g. `sgr push noaa/climate`, this will push all new images. + +By default, the repository will be pushed to a repository with the same name in the user's namespace +(SG_NAMESPACE configuration value which defaults to the username). + +If there's a single engine registered in the config (e.g. data.splitgraph.com), it shall be the default +destination. + +If an upstream repository/engine has been configured for this engine with `sgr upstream`, +it will be used instead. + +Finally, if `remote_repository` or `--remote` are passed, they will take precedence. + +The actual objects will be uploaded to S3 using Minio. When pushing to another engine, +you can choose to upload them directly by passing `--handler DB`. + +### Options + + * **`-r, --remote []`**: Name of the remote engine + * **`-h, --upload-handler TEXT`**: Upload handler + * **`-o, --upload-handler-options JSON`**: Upload handler parameters + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing remote objects + * **`-t, --tags`**: Overwrite tags for pushed image/repo + * **`-u, --reupload-objects`**: Reupload objects that metadata is pushed out for diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/0002_pull.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/0002_pull.mdx new file mode 100644 index 00000000..d1b631d1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/0002_pull.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "pull", title: "sgr pull", sidebarTitle: "pull", description: "Pull changes / download a single image."}; + +```sgr pull [OPTIONS] REPOSITORY_OR_IMAGE``` + +Pull changes / download a single image. + +### Options + + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/0003_upstream.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/0003_upstream.mdx new file mode 100644 index 00000000..32f1d6ec --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/0003_upstream.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "upstream", title: "sgr upstream", sidebarTitle: "upstream", description: "Get or set the upstream for a repository."}; + +```sgr upstream [OPTIONS] REPOSITORY``` + +Get or set the upstream for a repository. + +This shows the default repository used for pushes and pulls as well as allows to change it to a different +remote engine and repository. + +The remote engine alias must exist in the config file. + +### Examples + +``sgr upstream my/repo --set splitgraph.com username/repo`` + +Sets the upstream for ``my/repo`` to ``username/repo`` existing on the ``splitgraph.com`` engine + +``sgr upstream my/repo --reset`` + +Removes the upstream for ``my/repo``. + +``sgr upstream my/repo`` + +Shows the current upstream for ``my/repo``. + +### Options + + * **`-s, --set ...`**: Set the upstream to a engine alias + repository + * **`-r, --reset`**: Delete the upstream diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/metadata.json new file mode 100644 index 00000000..b2c1ab8d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0005_sharing-images/metadata.json @@ -0,0 +1 @@ +{"title": "Sharing images"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/0000_build.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/0000_build.mdx new file mode 100644 index 00000000..2204aae2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/0000_build.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "build", title: "sgr build", sidebarTitle: "build", description: "Build Splitgraph images."}; + +```sgr build [OPTIONS] SPLITFILE``` + +Build Splitgraph images. + +This executes a Splitfile, building a new image or checking it out from cache if the same +image had already been built. + +### Examples + +``sgr build my.splitfile`` + +Executes ``my.splitfile`` and writes its output into a new repository with the same name +as the Splitfile (my) unless the name is specified in the Splitfile. + +``sgr build my.splitfile -o mynew/repo`` + +Executes ``my.splitfile`` and writes its output into ``mynew/repo``. + +``sgr build my_other.splitfile -o mynew/otherrepo --args PARAM1 VAL1 --args PARAM2 VAL2`` + +Executes ``my_other.splitfile`` with parameters ``PARAM1`` and ``PARAM2`` set to +``VAL1`` and ``VAL2``, respectively. + +### Options + + * **`-a, --args ...`**: Parameters to be substituted into the Splitfile. All parameters mentioned in the file must be specified in order for the Splitfile to be executed. + * **`-o, --output-repository REPOSITORY`**: Repository to store the result in. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/0001_rebuild.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/0001_rebuild.mdx new file mode 100644 index 00000000..8194b0f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/0001_rebuild.mdx @@ -0,0 +1,27 @@ +export const meta = {id: "rebuild", title: "sgr rebuild", sidebarTitle: "rebuild", description: "Rebuild images against different dependencies."}; + +```sgr rebuild [OPTIONS] IMAGE_SPEC``` + +Rebuild images against different dependencies. + +Examines the provenance of a Splitgraph image created by a Splitfile and reruns it against different images than +the ones that were imported by the original run. + +### Examples + +``sgr rebuild my/repo --against noaa/climate:old_data`` + +Reconstructs the Splitfile used to create ``my/repo:latest``, replaces all imports from ``noaa/climate`` with +imports from ``noaa/climate:old_data`` and reruns the Splitfile. + +``sgr rebuild my/repo:other_tag -u`` + +Rebuilds ``my_repo:other_tag`` against the latest versions of all of its dependencies. + +Image caching still works in this case: if the result of the rebuild already exists, the image will be checked +out. + +### Options + + * **`-u, --update`**: Rederive the image against the latest version of all dependencies. + * **`-a, --against IMAGE`**: Images to substitute into the reconstructed Splitfile, of the form [NAMESPACE/]REPOSITORY[:HASH_OR_TAG]. Default tag is 'latest'. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/0002_provenance.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/0002_provenance.mdx new file mode 100644 index 00000000..45d3a5a8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/0002_provenance.mdx @@ -0,0 +1,62 @@ +export const meta = {id: "provenance", title: "sgr provenance", sidebarTitle: "provenance", description: "Reconstruct the provenance of an image."}; + +```sgr provenance [OPTIONS] IMAGE_SPEC``` + +Reconstruct the provenance of an image. + +This inspects the image to produce a list of images that were used by the Splitfile +that created it, or a Splitfile with the same effect. + +`IMAGE_SPEC` must be of the form `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]`. +If no tag is specified, `latest` is used. + +### Examples + +Assume `my/repo` is produced by the following Splitfile: + +``` +FROM MOUNT [...] IMPORT external_table +FROM noaa/climate IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} AS rainfall_data +``` + +`my/repo` will have 2 images: one having `hash_1` (with the `external_table` imported from a mounted database) +and one having `hash_2` (with both `external_table` and the `rainfall_data` containing the result +of the query run against the then-latest image in the `noaa/climate` repository). + +In this case: + +``` +sgr provenance my/repo +``` + +Returns a list of repositories and images that were imported by the Splitfile that constructed this image:: + +``` +my/repo:[hash_2] depends on: +noaa/climate:[hash_3] +``` + +Where `hash_3` is the hash of the latest image in the `noaa/climate` repository at the time the original +Splitfile was run. However: + +``` +sgr provenance -f my/repo +``` + +Will try to reconstruct the Splitfile that can be used to build this image. Since the FROM MOUNT command isn't +reproducible (requires access to the original external database, which is a moving target), this will fail. + +If `-e` is passed, this will emit information about irreproducible commands instead of failing. + +``` +sgr provenance -ef my/repo + +# Splitfile commands used to reconstruct my/repo:[image_hash] +# Irreproducible Splitfile command of type MOUNT +FROM noaa/climate:[hash_3] IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} +``` + +### Options + + * **`-f, --full`**: Recreate the Splitfile used to create this image + * **`-e, --ignore-errors`**: If set, ignore commands that aren't reproducible (like MOUNT or custom commands) diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/0003_dependents.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/0003_dependents.mdx new file mode 100644 index 00000000..fc8bc234 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/0003_dependents.mdx @@ -0,0 +1,21 @@ +export const meta = {id: "dependents", title: "sgr dependents", sidebarTitle: "dependents", description: "List images that were created from an image."}; + +```sgr dependents [OPTIONS] IMAGE_SPEC``` + +List images that were created from an image. + +This is the inverse of the sgr provenance command. It will list all images that were +created using a Splitfile that imported data from this image. + +By default, this will look at images on the local engine. The engine can be overridden +with --source-on and --dependents-on. For example: + + sgr dependents --source-on data.splitgraph.com --dependents-on LOCAL noaa/climate:latest + +will show all images on the local engine that derived data from `noaa/climate:latest` +on the Splitgraph registry. + +### Options + + * **`-O, --source-on TEXT`**: Override the engine to look the source up on + * **`-o, --dependents-on TEXT`**: Override the engine to list dependents from diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/metadata.json new file mode 100644 index 00000000..50afd08a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0006_splitfile-execution/metadata.json @@ -0,0 +1 @@ +{"title": "Splitfile execution"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0000_cloud-register.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0000_cloud-register.mdx new file mode 100644 index 00000000..089ce0c6 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0000_cloud-register.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "cloud-register", title: "sgr cloud register", sidebarTitle: "cloud register", description: "Register the user on a Splitgraph registry."}; + +```sgr cloud register [OPTIONS] ``` + +Register the user on a Splitgraph registry. + +By default, this registers the user on data.splitgraph.com, +obtains a set of machine (API) credentials for the client to communicate +with the registry and configures the data.splitgraph.com engine. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--email TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to register on. + * **`--accept-tos`**: Accept the registry's Terms of Service + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0001_cloud-login.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0001_cloud-login.mdx new file mode 100644 index 00000000..cb99d6c1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0001_cloud-login.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "cloud-login", title: "sgr cloud login", sidebarTitle: "cloud login", description: "Log into a Splitgraph registry with username/password."}; + +```sgr cloud login [OPTIONS] ``` + +Log into a Splitgraph registry with username/password. + +This will generate a new refresh token (to use the Splitgraph query API) +and API keys to let sgr access the registry (if they don't already exist +in the configuration file or if the actual username has changed). + +Note that if you already have generated an API key pair but it's not +in the configuration file, this will generate a new pair instead of +restoring the existing one, as the API secret is only stored in the configuration file. + +If you want to log in using an existing API key pair, use `sgr cloud login-api` instead. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`--overwrite`**: Overwrite old API keys in the config if they exist + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0002_cloud-login-api.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0002_cloud-login-api.mdx new file mode 100644 index 00000000..4007fe22 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0002_cloud-login-api.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "cloud-login-api", title: "sgr cloud login-api", sidebarTitle: "cloud login-api", description: "Log into a Splitgraph registry using existing API keys."}; + +```sgr cloud login-api [OPTIONS] ``` + +Log into a Splitgraph registry using existing API keys. + +This will inject the API keys for the registry into the configuration file +and generate a new access token. + +### Options + + * **`--api-key TEXT`**: + * **`--api-secret TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0003_cloud-sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0003_cloud-sql.mdx new file mode 100644 index 00000000..56c4be0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0003_cloud-sql.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "cloud-sql", title: "sgr cloud sql", sidebarTitle: "cloud sql", description: "Run SQL on or connect to the Splitgraph Data Delivery Network."}; + +```sgr cloud sql [OPTIONS] [QUERY]``` + +Run SQL on or connect to the Splitgraph Data Delivery Network. + +If a query isn't passed, this will return a libpq-compatible connection string to +the registry's SQL endpoint. It can be used to connect to the endpoint with other SQL clients: + +``` +pgcli $(sgr cloud sql) +``` + +If a query is passed, this will run an SQL query against the SQL endpoint. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0004_cloud-curl.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0004_cloud-curl.mdx new file mode 100644 index 00000000..e902965b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0004_cloud-curl.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "cloud-curl", title: "sgr cloud curl", sidebarTitle: "cloud curl", description: "Query a Splitgraph REST API."}; + +```sgr cloud curl [OPTIONS] IMAGE [REQUEST_PARAMS]``` + +Query a Splitgraph REST API. + +This is a thin wrapper around curl that performs an HTTP request to Splitgraph Cloud to +interact with a dataset using PostgREST (http://postgrest.org) or the Splitfile execution service. + +The actual invocation is: + +``` +curl [API endpoint][request] -H [access_token] [extra curl args]. +``` + +The image must be of the form `namespace/repository:[hash_or_tag (default latest)]`. + +The actual request parameters depend on the request type: + + * For PostgREST: `/table?[postgrest request]` or empty to get the OpenAPI spec for this image. + For a reference on how to perform Postgrest requests, see http://postgrest.org/en/latest/api.html. + * For the Splitfile executor: a JSON array to be POSTed to the executor, e.g. + `'{"command": "FROM some/repo IMPORT some_table AS alias", "tag": "new_tag"}'`. + +`--curl-args` allows to pass extra arguments to curl. Note that every argument must be prefixed +with `--curl-args`, e.g. `--curl-args --cacert --curl-args /path/to/ca.pem`. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-t, --request-type [postgrest|splitfile]`**: + * **`-c, --curl-args TEXT`**: Extra arguments to be passed to curl diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0005_cloud-readme.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0005_cloud-readme.mdx new file mode 100644 index 00000000..4d800dc6 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0005_cloud-readme.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-readme", title: "sgr cloud readme", sidebarTitle: "cloud readme", description: "Upload or a README to a Splitgraph repository."}; + +```sgr cloud readme [OPTIONS] REPOSITORY README``` + +Upload or a README to a Splitgraph repository. + +The repository must have already been pushed. The README must be a file in Markdown format. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0006_cloud-description.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0006_cloud-description.mdx new file mode 100644 index 00000000..003c953f --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0006_cloud-description.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-description", title: "sgr cloud description", sidebarTitle: "cloud description", description: "Upload a description to a Splitgraph repository."}; + +```sgr cloud description [OPTIONS] REPOSITORY DESCRIPTION``` + +Upload a description to a Splitgraph repository. + +The repository must have already been pushed. The description should be plain text, 160 characters or shorter. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0007_cloud-metadata.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0007_cloud-metadata.mdx new file mode 100644 index 00000000..01b2f064 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0007_cloud-metadata.mdx @@ -0,0 +1,41 @@ +export const meta = {id: "cloud-metadata", title: "sgr cloud metadata", sidebarTitle: "cloud metadata", description: "Upload a metadata file to a Splitgraph repository."}; + +```sgr cloud metadata [OPTIONS] REPOSITORY [METADATA_FILE]``` + +Upload a metadata file to a Splitgraph repository. + +This can manipulate the repository's short description, README, topics, license, sources and extra metadata. + +The metadata file must be a YAML file. Omitting a key doesn't delete the value. + +For example: + + +``` +readme: dataset-readme.md +description: Dataset description (160 characters max). +topics: + - topic_1 + - topic_2 +sources: + - anchor: Source + href: https://www.splitgraph.com + isCreator: true + isSameAs: false + - anchor: Source 2 + href: https://www.splitgraph.com + isCreator: false + isSameAs: true +license: Public Domain +extra_metadata: + key_1: + key_1_1: value_1_1 + key_1_2: value_1_2 + key_2: + key_2_1: value_2_1 + key_2_2: value_2_2 +``` + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0008_cloud-search.mdx b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0008_cloud-search.mdx new file mode 100644 index 00000000..c23c31f4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/0008_cloud-search.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "cloud-search", title: "sgr cloud search", sidebarTitle: "cloud search", description: "Search for a repository on the Splitgraph registry."}; + +```sgr cloud search [OPTIONS] QUERY``` + +Search for a repository on the Splitgraph registry. + +For more advanced search, including filtering by topics, go to the registry's website itself. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--limit INTEGER RANGE`**: Number of results to return diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/metadata.json new file mode 100644 index 00000000..25ba655e --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/0007_splitgraph-cloud/metadata.json @@ -0,0 +1 @@ +{"title": "Splitgraph Cloud"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.13/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.13/metadata.json new file mode 100644 index 00000000..66e10e4c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.13/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.13", + "updated_at": "2022-01-20T00:00:46.941Z", + "release": { + "id": 41423565, + "tag_name": "v0.2.13", + "target_commitish": "ef8332b29640230f4eebcbb350a37c67285064b1", + "created_at": "2021-04-14T14:43:01Z", + "published_at": "2021-04-22T13:36:49Z", + "assets": [ + { + "id": 35012171, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/35012171", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-04-14T15:10:32Z", + "updated_at": "2021-04-14T15:10:33Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.13/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0000_checkout.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0000_checkout.mdx new file mode 100644 index 00000000..cc805a26 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0000_checkout.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "checkout", title: "sgr checkout", sidebarTitle: "checkout", description: "Check out a Splitgraph image into a Postgres schema."}; + +```sgr checkout [OPTIONS] IMAGE_SPEC``` + +Check out a Splitgraph image into a Postgres schema. + +This downloads the required physical objects and materializes all tables, unless ``-l`` or ``--layered`` is passed, +in which case the objects are downloaded and a foreign data wrapper is set up on the engine to satisfy read-only +queries by combining results from each table's fragments. + +Tables checked out in this way are still presented as normal Postgres tables and can queried in the same way. +Since the tables aren't materialized, layered querying is faster to set up, but since each query now results in a +subquery to each object comprising the table, actual query execution is slower than to materialized Postgres tables. + +Layered querying is only supported for read-only queries. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. Note that currently, the schema that the +image is checked out into has to have the same name as the repository. If no image hash or tag is passed, +"HEAD" is assumed. + +If ``-u`` or ``--uncheckout`` is passed, this instead deletes the checked out schema (assuming there are no pending +changes) and removes the HEAD pointer. + +If ``--force`` isn't passed and the schema has pending changes, this will fail. + +### Options + + * **`-f, --force`**: Discard all pending changes to the schema + * **`-u, --uncheckout`**: Delete the checked out copy instead + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0001_commit.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0001_commit.mdx new file mode 100644 index 00000000..9a2ec1f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0001_commit.mdx @@ -0,0 +1,59 @@ +export const meta = {id: "commit", title: "sgr commit", sidebarTitle: "commit", description: "Commit changes to a checked-out Splitgraph repository."}; + +```sgr commit [OPTIONS] REPOSITORY``` + +Commit changes to a checked-out Splitgraph repository. + +This packages up all changes into a new image. Where a table hasn't been created or had its schema changed, +this will delta compress the changes. For all other tables (or if ``-s`` has been passed), this will +store them as full table snapshots. + +When a table is stored as a full snapshot, `--chunk-size` sets the maximum size, in rows, of the fragments +that the table will be split into (default is no splitting). The splitting is done by the +table's primary key. + +If `--split-changesets` is passed, delta-compressed changes will also be split up according to the original +table chunk boundaries. For example, if there's a change to the first and the 20000th row of a table that was +originally committed with `--chunk-size=10000`, this will create 2 fragments: one based on the first chunk +and one on the second chunk of the table. + +If `--chunk-sort-keys` is passed, data inside the chunk is sorted by this key (or multiple keys). +This helps speed up queries on those keys for storage layers than can leverage that (e.g. CStore). The expected format is JSON, e.g. `{table_1: [col_1, col_2]}` + +`--index-options` expects a JSON-serialized dictionary of `{table: index_type: column: index_specific_kwargs}`. +Indexes are used to narrow down the amount of chunks to scan through when running a query. By default, each column +has a range index (minimum and maximum values) and it's possible to add bloom filtering to speed up queries that +involve equalities. + +Bloom filtering allows to trade off between the space overhead of the index and the probability of a false +positive (claiming that an object contains a record when it actually doesn't, leading to extra scans). + +An example `index-options` dictionary: + + +``` +{ + "table": { + "bloom": { + "column_1": { + "probability": 0.01, # Only one of probability + "size": 10000 # or size can be specified. + } + }, + # Only compute the range index on these columns. By default, + # it's computed on all columns and is always computed on the + # primary key no matter what. + "range": ["column_2", "column_3"] + } +} +``` + +### Options + + * **`-s, --snap`**: Do not delta compress the changes and instead store the whole table again. This consumes more space, but makes checkouts faster. + * **`-c, --chunk-size INTEGER`**: Split new tables into chunks of this many rows (by primary key). The default value is governed by the SG_COMMIT_CHUNK_SIZE configuration parameter. + * **`-k, --chunk-sort-keys JSON`**: Sort the data inside each chunk by this/these key(s) + * **`-t, --split-changesets`**: Split changesets for existing tables across original chunk boundaries. + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate on the new objects. + * **`-m, --message TEXT`**: Optional commit message + * **`-o, --overwrite`**: Overwrite physical objects that already exist diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0002_tag.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0002_tag.mdx new file mode 100644 index 00000000..89f01837 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0002_tag.mdx @@ -0,0 +1,36 @@ +export const meta = {id: "tag", title: "sgr tag", sidebarTitle: "tag", description: "Manage tags on images."}; + +```sgr tag [OPTIONS] IMAGE_SPEC [TAG]``` + +Manage tags on images. + +Depending on the exact invocation, this command can tag a Splitgraph image, +list all tags in a repository or delete a tag. + +### Examples + +``sgr tag noaa/climate`` + +List all tagged images in the ``noaa/climate`` repository and their tags. + +``sgr tag noaa/climate:abcdef1234567890`` + +List all tags assigned to the image ``noaa/climate:abcdef1234567890...`` + +``sgr tag noaa/climate:abcdef1234567890 my_new_tag`` + +Tag the image ``noaa/climate:abcdef1234567890...`` with ``my_new_tag``. If the tag already exists, this will +overwrite the tag. + +``sgr tag noaa/climate my_new_tag`` + +Tag the current ``HEAD`` of ``noaa/climate`` with ``my_new_tag``. + +``sgr tag --delete noaa/climate:my_new_tag`` + +Delete the tag ``my_new_tag`` from ``noaa/climate``. + +### Options + + * **`-d, --delete`**: Delete the tag instead. + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0003_import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0003_import.mdx new file mode 100644 index 00000000..b69bbfb4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0003_import.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "import", title: "sgr import", sidebarTitle: "import", description: "Import tables into a Splitgraph repository."}; + +```sgr import [OPTIONS] IMAGE_SPEC TABLE_OR_QUERY TARGET_REPOSITORY [TARGET_TABLE]``` + +Import tables into a Splitgraph repository. + +Imports a table or a result of a query from a local Splitgraph repository or a Postgres schema into another +Splitgraph repository. + +### Examples + +``sgr import noaa/climate:my_tag climate_data my/repository`` + +Create a new image in ``my/repository`` with the ``climate_data`` table included. This links the new image to +the physical object, meaning that the history of the ``climate_data`` table is preserved. + +If no tag is specified, the 'latest' (not the HEAD image or current state of the checked out image) +image is used. + +``sgr import noaa/climate:my_tag "SELECT * FROM climate_data" my/repository climate_data`` + +Create a new image in ``my/repository`` with the result of the query stored in the ``climate_data`` table. This +creates a new physical object without any linkage to the original data, so the history of the ``climate_data`` +table isn't preserved. The SQL query can interact with multiple tables in the source image. + +``sgr import other_schema other_table my/repository`` + +Since other_schema isn't a Splitgraph repository, this will copy ``other_schema.other_table`` +into a new Splitgraph object and add the ``other_table`` table to a new image in ``my/repository``. + +Note that importing doesn't discard or commit pending changes in the target Splitgraph repository: a new image +is created with the new table added, the new table is materialized in the repository and the HEAD pointer is moved. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0004_reindex.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0004_reindex.mdx new file mode 100644 index 00000000..b640ffe3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/0004_reindex.mdx @@ -0,0 +1,19 @@ +export const meta = {id: "reindex", title: "sgr reindex", sidebarTitle: "reindex", description: "Run extra indexes on a table."}; + +```sgr reindex [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Run extra indexes on a table. This will merge the indexing results for all objects +that a table is formed from with the current object indexes. For explanation of +what indexes do, see the documentation for `sgr commit`. + +If the objects haven't been downloaded yet, this will download them. + +Currently reindexing objects that change other objects is unsupported and will raise +an error. Pass `-o` to ignore these objects and only reindex supported objects. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate, e.g. '{"bloom": {"column_1": {"probability": 0.01}}}' [required] + * **`-o, --ignore-patch-objects`**: Ignore objects that change other objects' rows instead of raising an error diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/metadata.json new file mode 100644 index 00000000..9ef75b16 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0000_image-management-creation/metadata.json @@ -0,0 +1 @@ +{"title": "Image management/creation"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0000_log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0000_log.mdx new file mode 100644 index 00000000..db5078b4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0000_log.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "log", title: "sgr log", sidebarTitle: "log", description: "Show the history of a Splitgraph repository/image."}; + +```sgr log [OPTIONS] IMAGE_SPEC``` + +Show the history of a Splitgraph repository/image. + +By default, this shows the history of the current branch, starting from the HEAD pointer and following its +parent chain. + +Alternatively, it can follow the parent chain of any other image. + +If ``-t`` or ``--tree`` is passed, this instead renders the full image tree. The repository doesn't need to have +been checked out in this case. + +### Options + + * **`-t, --tree`**: + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0001_diff.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0001_diff.mdx new file mode 100644 index 00000000..8ef569e8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0001_diff.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "diff", title: "sgr diff", sidebarTitle: "diff", description: "Show differences between two Splitgraph images."}; + +```sgr diff [OPTIONS] REPOSITORY [TAG_OR_HASH_1] [TAG_OR_HASH_2]``` + +Show differences between two Splitgraph images. + +The two images must be in the same repository. The actual targets of this command depend +on the number of arguments passed: + +``sgr diff REPOSITORY`` + +Return the differences between the current HEAD image and the checked out schema. + +``sgr diff REPOSITORY TAG_OR_HASH`` + +Return the differences between the image and its parent. + +``sgr diff REPOSITORY TAG_OR_HASH_1 TAG_OR_HASH_2`` + +Return the differences from the first (earlier) image to the second image. + +### Options + + * **`-v, --verbose`**: Include the actual differences rather than just the total number of updated rows. + * **`-t, --table-name TEXT`**: Show the differences for a single table. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0002_object.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0002_object.mdx new file mode 100644 index 00000000..ff8c38a9 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0002_object.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "object", title: "sgr object", sidebarTitle: "object", description: "Show information about a Splitgraph object."}; + +```sgr object [OPTIONS] OBJECT_ID``` + +Show information about a Splitgraph object. + +Objects, or fragments, are building blocks of Splitgraph tables: each table consists of multiple immutable fragments +that can partially overwrite each other. Each fragment might have a parent that it depends on. In addition, +the smallest and largest values for every column are stored in the fragment's metadata. This information is used +to choose which objects to download in order to execute a query against a table. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0003_objects.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0003_objects.mdx new file mode 100644 index 00000000..c56fa727 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0003_objects.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "objects", title: "sgr objects", sidebarTitle: "objects", description: "List objects known to this engine."}; + +```sgr objects [OPTIONS] ``` + +List objects known to this engine. + +### Options + + * **`--local`**: Show only objects that are physically present on this engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0004_show.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0004_show.mdx new file mode 100644 index 00000000..4ddcc55d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0004_show.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "show", title: "sgr show", sidebarTitle: "show", description: "Show information about a Splitgraph image."}; + +```sgr show [OPTIONS] IMAGE_SPEC``` + +Show information about a Splitgraph image. This includes its parent, comment, size and creation time. + +Note that the size isn't the on-disk footprint, as the image might share some objects with other images +or if some of the image's objects have not been downloaded. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0005_table.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0005_table.mdx new file mode 100644 index 00000000..cc681c85 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0005_table.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "table", title: "sgr table", sidebarTitle: "table", description: "Show information about a table in a Splitgraph image."}; + +```sgr table [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Show information about a table in a Splitgraph image. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-v, --verbose`**: Show all of table's objects. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0006_sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0006_sql.mdx new file mode 100644 index 00000000..ea8a304b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0006_sql.mdx @@ -0,0 +1,34 @@ +export const meta = {id: "sql", title: "sgr sql", sidebarTitle: "sql", description: "Run an SQL statement against the Splitgraph engine."}; + +```sgr sql [OPTIONS] SQL``` + +Run an SQL statement against the Splitgraph engine. + +There are no restrictions on the contents of the statement: this is the same as running it +from any other PostgreSQL client. + +If ``--schema`` is specified, the statement is run with the ``search_path`` set to that schema. This means +that these statements are equivalent: + + +``` +sgr sql "SELECT * FROM "noaa/climate".table" +sgr sql -s noaa/climate "SELECT * FROM table" +``` + +If `--image` is specified, this will run the statement against that image using layered querying. +Only read-only statements are supported. For example: + + +``` +sgr sql -i noaa/climate:latest "SELECT * FROM table" +``` + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-s, --schema TEXT`**: Run SQL against this schema. + * **`-i, --image IMAGE`**: Run SQL against this image. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON + * **`-n, --no-transaction`**: Don't wrap the SQL in a transaction. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0007_status.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0007_status.mdx new file mode 100644 index 00000000..5e312f11 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/0007_status.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "status", title: "sgr status", sidebarTitle: "status", description: "Show the status of the Splitgraph engine."}; + +```sgr status [OPTIONS] [REPOSITORY]``` + +Show the status of the Splitgraph engine. + +If a repository is passed, show in-depth information about a repository. + +If not, show information about all repositories local to the engine. This will show a list +of all repositories, number of local images and tags, total repository size (theoretical +maximum size and current on-disk footprint of cached objects) and the current checked +out image (with LQ if the image is checked out using read-only layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/metadata.json new file mode 100644 index 00000000..a2c3f0f8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0001_image-information/metadata.json @@ -0,0 +1 @@ +{"title": "Image information"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0000_engine-add.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0000_engine-add.mdx new file mode 100644 index 00000000..c0b69417 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0000_engine-add.mdx @@ -0,0 +1,26 @@ +export const meta = {id: "engine-add", title: "sgr engine add", sidebarTitle: "engine add", description: "Create and start a Splitgraph engine."}; + +```sgr engine add [OPTIONS] [NAME]``` + +Create and start a Splitgraph engine. + +This will pull the Splitgraph engine image, start it, create a Postgres user and initialize +the engine. + +This also creates Docker volumes required to persist data/metadata. + +The engine Docker container by default will be named `splitgraph_engine_default` and +its data and metadata volumes will have names `splitgraph_engine_default_data` and +`splitgraph_engine_default_metadata`. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`-p, --port INTEGER`**: Port to start the engine on + * **`-u, --username TEXT`**: + * **`--no-init`**: Don't run `sgr init` on the engine + * **`--no-sgconfig`**: Don't add the engine to .sgconfig + * **`--inject-source`**: Inject the current Splitgraph source code into the engine using Docker bind mounts + * **`--no-pull`**: Don't pull the Docker image + * **`--set-default`**: Set the engine as the default engine in the config regardless of its name + * **`--password TEXT`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0001_engine-delete.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0001_engine-delete.mdx new file mode 100644 index 00000000..6229e082 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0001_engine-delete.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "engine-delete", title: "sgr engine delete", sidebarTitle: "engine delete", description: "Delete the Splitgraph engine container."}; + +```sgr engine delete [OPTIONS] [NAME]``` + +Delete the Splitgraph engine container. + +### Options + + * **`-y, --yes`**: Do not prompt for confirmation. + * **`-f, --force`**: Delete the engine anyway if it's running. + * **`-v, --with-volumes`**: Include the engine's volumes (if not specified, volumes will be reattached when an engine with the same name is created). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0002_engine-list.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0002_engine-list.mdx new file mode 100644 index 00000000..a2530db2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0002_engine-list.mdx @@ -0,0 +1,13 @@ +export const meta = {id: "engine-list", title: "sgr engine list", sidebarTitle: "engine list", description: "List Splitgraph engines."}; + +```sgr engine list [OPTIONS] ``` + +List Splitgraph engines. + +This only lists Docker containers that were created by sgr engine +(whose names start with `splitgraph_engine_`. To manage other engines, +use Docker CLI directly. + +### Options + + * **`-a, --include-all`**: Include stopped engine containers. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0003_engine-start.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0003_engine-start.mdx new file mode 100644 index 00000000..4c9cdf6c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0003_engine-start.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-start", title: "sgr engine start", sidebarTitle: "engine start", description: "Start a Splitgraph engine."}; + +```sgr engine start [OPTIONS] [NAME]``` + +Start a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0004_engine-stop.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0004_engine-stop.mdx new file mode 100644 index 00000000..7ea64786 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0004_engine-stop.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-stop", title: "sgr engine stop", sidebarTitle: "engine stop", description: "Stop a Splitgraph engine."}; + +```sgr engine stop [OPTIONS] [NAME]``` + +Stop a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0005_engine-upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0005_engine-upgrade.mdx new file mode 100644 index 00000000..751cd998 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0005_engine-upgrade.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "engine-upgrade", title: "sgr engine upgrade", sidebarTitle: "engine upgrade", description: "Upgrade a Splitgraph engine."}; + +```sgr engine upgrade [OPTIONS] [NAME]``` + +Upgrade a Splitgraph engine. + +This consists of shutting down the current Splitgraph engine, +deleting its Docker container (keeping the actual data and +metadata volumes intact), creating a container based on a newer +image and finally reinitializing the engine to perform needed migrations. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`--no-pull`**: Don't pull the new engine image diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0006_engine-log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0006_engine-log.mdx new file mode 100644 index 00000000..58859523 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0006_engine-log.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "engine-log", title: "sgr engine log", sidebarTitle: "engine log", description: "Get logs from a Splitgraph engine."}; + +```sgr engine log [OPTIONS] [NAME]``` + +Get logs from a Splitgraph engine. + +### Options + + * **`-f, --follow`**: Stream logs diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0007_engine-configure.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0007_engine-configure.mdx new file mode 100644 index 00000000..1be8adcd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0007_engine-configure.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "engine-configure", title: "sgr engine configure", sidebarTitle: "engine configure", description: "Inject a configuration file into an engine."}; + +```sgr engine configure [OPTIONS] [NAME]``` + +Inject a configuration file into an engine. + +This copies the current .sgconfig file (pointed to by SG_CONFIG_FILE) into +the engine container, making it use that configuration for +when it's queried through an application other than the sgr client +(layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0008_engine-version.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0008_engine-version.mdx new file mode 100644 index 00000000..d47bfe05 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/0008_engine-version.mdx @@ -0,0 +1,5 @@ +export const meta = {id: "engine-version", title: "sgr engine version", sidebarTitle: "engine version", description: "Get version of Splitgraph engine."}; + +```sgr engine version [OPTIONS] [NAME]``` + +Get version of Splitgraph engine. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/metadata.json new file mode 100644 index 00000000..3f70a9d2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0002_engine-management/metadata.json @@ -0,0 +1 @@ +{"title": "Engine management"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/0000_csv-export.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/0000_csv-export.mdx new file mode 100644 index 00000000..8408f9f2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/0000_csv-export.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-export", title: "sgr csv export", sidebarTitle: "csv export", description: "Export the result of a query as CSV."}; + +```sgr csv export [OPTIONS] IMAGE_SPEC QUERY``` + +Export the result of a query as CSV. + +### Examples + +`sgr csv export noaa/climate "SELECT * FROM rainfall"` + +Output everything in the currently checked-out `"rainfall"` table as CSV. + +`sgr csv export noaa/climate:dec_2018 "SELECT * FROM rainfall WHERE state = 'AZ' -f dec_2018_az.csv` + +Check out the `dec_2018` tag of `noaa/climate` and output values from `"rainfall"` for Arizona to `dec_2018_az.csv` + +`sgr csv export --layered noaa/climate:abcdef1234567890 "SELECT * FROM rainfall JOIN other_table ON..."` + +Uses layered querying instead to execute a join on tables in a certain image (satisfying the query without +having to check the image out). + +### Options + + * **`-f, --file FILENAME`**: File name to export to, default stdout. + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/0001_csv-import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/0001_csv-import.mdx new file mode 100644 index 00000000..5f3eb655 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/0001_csv-import.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-import", title: "sgr csv import", sidebarTitle: "csv import", description: "Import a CSV file into a checked-out Splitgraph repository."}; + +```sgr csv import [OPTIONS] REPOSITORY TABLE``` + +Import a CSV file into a checked-out Splitgraph repository. This doesn't create a new image, use `sgr commit` +after the import and any adjustments (e.g. adding primary keys or converting column types) to do so. + +If the target table doesn't exist, this will create a new table. + +If the target table does exist, this will try and patch the new values in by updating rows that exist in the +current table (as per its primary key constraints) and inserting new ones. Rows existing in the current table +but missing in the CSV won't be deleted. + +If `-r` is passed, the table will instead be deleted and recreated from the CSV file if it exists. + +### Options + + * **`-f, --file FILENAME`**: File name to import data from, default stdin. + * **`-r, --replace`**: Replace the table if it already exists. + * **`-k, --primary-key TEXT`**: Use the specified column(s) as primary key(s) + * **`-t, --override-type ...`**: Explicitly set types of these columns to PG types + * **`--encoding TEXT`**: Encoding to use for the CSV file + * **`--separator TEXT`**: CSV separator to use + * **`--no-header`**: Treats the first line of the CSV as data rather than a header. + * **`--skip-schema-check`**: Skips checking that the dataframe is compatible with the target schema. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/0002_mount.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/0002_mount.mdx new file mode 100644 index 00000000..85bcb7f5 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/0002_mount.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "mount", title: "sgr mount", sidebarTitle: "mount", description: "Mount foreign databases as Postgres schemas."}; + +```sgr mount [OPTIONS] ``` + +Mount foreign databases as Postgres schemas. + +Uses the Postgres FDW interface to create a local Postgres schema with foreign tables that map +to tables in other databases. + +See a given mount handler's documentation for handler-specific parameters. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/0003_singer-target.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/0003_singer-target.mdx new file mode 100644 index 00000000..c353a781 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/0003_singer-target.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "singer-target", title: "sgr singer target", sidebarTitle: "singer target", description: "Singer target that loads data into Splitgraph images."}; + +```sgr singer target [OPTIONS] IMAGE``` + +Singer target that loads data into Splitgraph images. + +This will read data from the stdin from a Singer-compatible tap and load it into +a Splitgraph image, merging data if the image already exists. + +Image must be of the format `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]` where `HASH_OR_TAG` +is a tag of an existing image to base the image on. If the repository doesn't exist, +it will be created. + +As this target consumes data from stdin, it will flush the records into a Splitgraph image. By +default, it will only keep the image if the whole stream has been successfully consumed. To +make this target completely follow the Singer spec (if it emits state, the records have been +flushed), pass --failure=keep-both or --failure=delete-old. To delete the old image on success, +pass --delete-old. + +### Options + + * **`-d, --delete-old`**: Delete the old image at the end of ingestion + * **`-f, --failure [keep-both|delete-old|delete-new]`**: What to do in case of a failure. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/metadata.json new file mode 100644 index 00000000..d82f5068 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0003_data-import-export/metadata.json @@ -0,0 +1 @@ +{"title": "Data import/export"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0000_rm.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0000_rm.mdx new file mode 100644 index 00000000..47baf9a3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0000_rm.mdx @@ -0,0 +1,40 @@ +export const meta = {id: "rm", title: "sgr rm", sidebarTitle: "rm", description: "Delete schemas, repositories or images."}; + +```sgr rm [OPTIONS] IMAGE_SPEC``` + +Delete schemas, repositories or images. + +If the target of this command is a Postgres schema, this performs DROP SCHEMA CASCADE. + +If the target of this command is a Splitgraph repository, this deletes the repository and all of its history. + +If the target of this command is an image, this deletes the image and all of its children. + +In any case, this command will ask for confirmation of the deletion, unless ``-y`` is passed. If ``-r`` +(``--remote``), is passed, this will perform deletion on a remote Splitgraph engine (registered in the config) +instead, assuming the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Examples + +``sgr rm temporary_schema`` + +Deletes ``temporary_schema`` from the local engine. + +``sgr rm --remote data.splitgraph.com username/repo`` + +Deletes ``username/repo`` from the Splitgraph registry. + +``sgr rm -y username/repo:old_branch`` + +Deletes the image pointed to by ``old_branch`` as well as all of its children (images created by a commit based +on this image), as well as all of the tags that point to now deleted images, without asking for confirmation. +Note this will not delete images that import tables from the deleted images via Splitfiles or indeed the +physical objects containing the actual tables. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0001_init.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0001_init.mdx new file mode 100644 index 00000000..e4ab8d4d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0001_init.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "init", title: "sgr init", sidebarTitle: "init", description: "Initialize a new repository/engine."}; + +```sgr init [OPTIONS] [REPOSITORY]``` + +Initialize a new repository/engine. + +### Examples + +`sgr init` + +Initializes the current local Splitgraph engine by writing some bookkeeping information. +This is required for the rest of sgr to work. + +`sgr init --skip-object-handling` + +Initializes a Splitgraph engine without installing audit triggers or object management routines: +this is useful for engines that aren't intended to be used for image checkouts. + +``sgr init new/repo`` + +Creates a single image with the hash ``00000...`` in ``new/repo`` + +### Options + + * **`--skip-object-handling`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0002_cleanup.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0002_cleanup.mdx new file mode 100644 index 00000000..c23688a4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0002_cleanup.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "cleanup", title: "sgr cleanup", sidebarTitle: "cleanup", description: "Prune unneeded objects from the engine."}; + +```sgr cleanup [OPTIONS] ``` + +Prune unneeded objects from the engine. + +This deletes all objects from the cache that aren't required by any local repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0003_prune.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0003_prune.mdx new file mode 100644 index 00000000..64c2d49b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0003_prune.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "prune", title: "sgr prune", sidebarTitle: "prune", description: "Cleanup dangling images from a repository."}; + +```sgr prune [OPTIONS] REPOSITORY``` + +Cleanup dangling images from a repository. + +This includes images not pointed to by any tags (or checked out) and those that aren't required by any of +such images. + +Will ask for confirmation of the deletion, unless ``-y ``is passed. If ``-r`` (``--remote``) is +passed, this will perform deletion on a remote Splitgraph engine (registered in the config) instead, assuming +the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0004_config.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0004_config.mdx new file mode 100644 index 00000000..7fcaa53c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0004_config.mdx @@ -0,0 +1,33 @@ +export const meta = {id: "config", title: "sgr config", sidebarTitle: "config", description: "Print the current Splitgraph configuration."}; + +```sgr config [OPTIONS] ``` + +Print the current Splitgraph configuration. + +This takes into account the local config file, the default values +and all overrides specified via environment variables. + +This command can be used to dump the current Splitgraph configuration into a file: + +``` +sgr config --no-shielding --config-format > .sgconfig +``` + +...or save a config file overriding an entry: + +``` +SG_REPO_LOOKUP=engine1,engine2 sgr config -sc > .sgconfig +``` + +If `--conn-string` is passed, this prints out a libpq connection string +that can be used to connect to the default Splitgraph engine with other tools: + +``` +pgcli $(sgr config -n) +``` + +### Options + + * **`-s, --no-shielding`**: If set, doesn't replace sensitive values (like passwords) with asterisks + * **`-c, --config-format`**: Output configuration in the Splitgraph config file format + * **`-n, --conn-string`**: Print a libpq connection string to the engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0005_dump.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0005_dump.mdx new file mode 100644 index 00000000..111baceb --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0005_dump.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "dump", title: "sgr dump", sidebarTitle: "dump", description: "Dump a repository to SQL."}; + +```sgr dump [OPTIONS] REPOSITORY``` + +Dump a repository to SQL. + +### Options + + * **`--exclude-object-contents`**: Don't dump the commands needed to recreate objects required by the repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0006_eval.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0006_eval.mdx new file mode 100644 index 00000000..5b4b7f0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0006_eval.mdx @@ -0,0 +1,39 @@ +export const meta = {id: "eval", title: "sgr eval", sidebarTitle: "eval", description: "Evaluate a Python snippet using the Splitgraph API."}; + +```sgr eval [OPTIONS] COMMAND``` + +Evaluate a Python snippet using the Splitgraph API. + +This is for advanced users only and should be only used +if you know what you are doing. + +Normal Python statements are supported and the command is evaluated +in a namespace where the following is already imported and available: + + * Repository: class that instantiates a Splitgraph repository and makes + API functions like .commit(), .checkout() etc available. + + * engine: Current local engine + + * object_manager: an instance of ObjectManager that allows + to get information about objects and manage the object cache. + + +Example: +``` +sgr eval 'import json; print(json.dumps(Repository\ + .from_schema(repo_name)\ + .images["latest"]\ + .get_table(table_name)\ + .table_schema))' \ +-a repo_name my_repo -a table_name my_table +``` + +Will dump the schema of table my_table in the most recent image in my_repo in JSON format. + +For more information, see the Splitgraph API reference. + +### Options + + * **`--i-know-what-im-doing`**: Pass this if you're sure that the code you're running is safe and don't want to be prompted. + * **`-a, --arg ...`**: Make extra variables available in the command's namespace diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0007_upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0007_upgrade.mdx new file mode 100644 index 00000000..188e798b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/0007_upgrade.mdx @@ -0,0 +1,17 @@ +export const meta = {id: "upgrade", title: "sgr upgrade", sidebarTitle: "upgrade", description: "Upgrade sgr client and engine."}; + +```sgr upgrade [OPTIONS] [VERSION]``` + +Upgrade sgr client and engine. + +This will try to download the most recent stable binary for the current platform +into the location this binary is running from and then upgrade the default engine. + +This method is only supported for single-binary installs and engines managed +by `sgr engine`. + +### Options + + * **`--skip-engine-upgrade`**: Only upgrade the client + * **`--path TEXT`**: Override the path to download the new binary to. + * **`--force`**: Reinstall older/same versions. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/metadata.json new file mode 100644 index 00000000..26f7a103 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0004_miscellaneous/metadata.json @@ -0,0 +1 @@ +{"title": "Miscellaneous"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/0000_clone.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/0000_clone.mdx new file mode 100644 index 00000000..7c2929bd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/0000_clone.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "clone", title: "sgr clone", sidebarTitle: "clone", description: "Clone a remote Splitgraph repository/image into a local one."}; + +```sgr clone [OPTIONS] REMOTE_REPOSITORY_OR_IMAGE [LOCAL_REPOSITORY]``` + +Clone a remote Splitgraph repository/image into a local one. + +The lookup path for the repository is governed by the ``SG_REPO_LOOKUP`` and ``SG_REPO_LOOKUP_OVERRIDE`` +config parameters and can be overridden by the command line ``--remote`` option. + +### Options + + * **`-r, --remote TEXT`**: Name of the remote engine + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/0001_push.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/0001_push.mdx new file mode 100644 index 00000000..60ba1e17 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/0001_push.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "push", title: "sgr push", sidebarTitle: "push", description: "Push images the Splitgraph registry or another engine."}; + +```sgr push [OPTIONS] REPOSITORY_OR_IMAGE [REMOTE_REPOSITORY]``` + +Push images the Splitgraph registry or another engine. + +If an image is not specified (e.g. `sgr push noaa/climate`, this will push all new images. + +By default, the repository will be pushed to a repository with the same name in the user's namespace +(SG_NAMESPACE configuration value which defaults to the username). + +If there's a single engine registered in the config (e.g. data.splitgraph.com), it shall be the default +destination. + +If an upstream repository/engine has been configured for this engine with `sgr upstream`, +it will be used instead. + +Finally, if `remote_repository` or `--remote` are passed, they will take precedence. + +The actual objects will be uploaded to S3 using Minio. When pushing to another engine, +you can choose to upload them directly by passing `--handler DB`. + +### Options + + * **`-r, --remote []`**: Name of the remote engine + * **`-h, --upload-handler TEXT`**: Upload handler + * **`-o, --upload-handler-options JSON`**: Upload handler parameters + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing remote objects + * **`-t, --tags`**: Overwrite tags for pushed image/repo + * **`-u, --reupload-objects`**: Reupload objects that metadata is pushed out for diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/0002_pull.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/0002_pull.mdx new file mode 100644 index 00000000..d1b631d1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/0002_pull.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "pull", title: "sgr pull", sidebarTitle: "pull", description: "Pull changes / download a single image."}; + +```sgr pull [OPTIONS] REPOSITORY_OR_IMAGE``` + +Pull changes / download a single image. + +### Options + + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/0003_upstream.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/0003_upstream.mdx new file mode 100644 index 00000000..32f1d6ec --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/0003_upstream.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "upstream", title: "sgr upstream", sidebarTitle: "upstream", description: "Get or set the upstream for a repository."}; + +```sgr upstream [OPTIONS] REPOSITORY``` + +Get or set the upstream for a repository. + +This shows the default repository used for pushes and pulls as well as allows to change it to a different +remote engine and repository. + +The remote engine alias must exist in the config file. + +### Examples + +``sgr upstream my/repo --set splitgraph.com username/repo`` + +Sets the upstream for ``my/repo`` to ``username/repo`` existing on the ``splitgraph.com`` engine + +``sgr upstream my/repo --reset`` + +Removes the upstream for ``my/repo``. + +``sgr upstream my/repo`` + +Shows the current upstream for ``my/repo``. + +### Options + + * **`-s, --set ...`**: Set the upstream to a engine alias + repository + * **`-r, --reset`**: Delete the upstream diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/metadata.json new file mode 100644 index 00000000..b2c1ab8d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0005_sharing-images/metadata.json @@ -0,0 +1 @@ +{"title": "Sharing images"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/0000_build.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/0000_build.mdx new file mode 100644 index 00000000..2204aae2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/0000_build.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "build", title: "sgr build", sidebarTitle: "build", description: "Build Splitgraph images."}; + +```sgr build [OPTIONS] SPLITFILE``` + +Build Splitgraph images. + +This executes a Splitfile, building a new image or checking it out from cache if the same +image had already been built. + +### Examples + +``sgr build my.splitfile`` + +Executes ``my.splitfile`` and writes its output into a new repository with the same name +as the Splitfile (my) unless the name is specified in the Splitfile. + +``sgr build my.splitfile -o mynew/repo`` + +Executes ``my.splitfile`` and writes its output into ``mynew/repo``. + +``sgr build my_other.splitfile -o mynew/otherrepo --args PARAM1 VAL1 --args PARAM2 VAL2`` + +Executes ``my_other.splitfile`` with parameters ``PARAM1`` and ``PARAM2`` set to +``VAL1`` and ``VAL2``, respectively. + +### Options + + * **`-a, --args ...`**: Parameters to be substituted into the Splitfile. All parameters mentioned in the file must be specified in order for the Splitfile to be executed. + * **`-o, --output-repository REPOSITORY`**: Repository to store the result in. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/0001_rebuild.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/0001_rebuild.mdx new file mode 100644 index 00000000..8194b0f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/0001_rebuild.mdx @@ -0,0 +1,27 @@ +export const meta = {id: "rebuild", title: "sgr rebuild", sidebarTitle: "rebuild", description: "Rebuild images against different dependencies."}; + +```sgr rebuild [OPTIONS] IMAGE_SPEC``` + +Rebuild images against different dependencies. + +Examines the provenance of a Splitgraph image created by a Splitfile and reruns it against different images than +the ones that were imported by the original run. + +### Examples + +``sgr rebuild my/repo --against noaa/climate:old_data`` + +Reconstructs the Splitfile used to create ``my/repo:latest``, replaces all imports from ``noaa/climate`` with +imports from ``noaa/climate:old_data`` and reruns the Splitfile. + +``sgr rebuild my/repo:other_tag -u`` + +Rebuilds ``my_repo:other_tag`` against the latest versions of all of its dependencies. + +Image caching still works in this case: if the result of the rebuild already exists, the image will be checked +out. + +### Options + + * **`-u, --update`**: Rederive the image against the latest version of all dependencies. + * **`-a, --against IMAGE`**: Images to substitute into the reconstructed Splitfile, of the form [NAMESPACE/]REPOSITORY[:HASH_OR_TAG]. Default tag is 'latest'. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/0002_provenance.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/0002_provenance.mdx new file mode 100644 index 00000000..45d3a5a8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/0002_provenance.mdx @@ -0,0 +1,62 @@ +export const meta = {id: "provenance", title: "sgr provenance", sidebarTitle: "provenance", description: "Reconstruct the provenance of an image."}; + +```sgr provenance [OPTIONS] IMAGE_SPEC``` + +Reconstruct the provenance of an image. + +This inspects the image to produce a list of images that were used by the Splitfile +that created it, or a Splitfile with the same effect. + +`IMAGE_SPEC` must be of the form `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]`. +If no tag is specified, `latest` is used. + +### Examples + +Assume `my/repo` is produced by the following Splitfile: + +``` +FROM MOUNT [...] IMPORT external_table +FROM noaa/climate IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} AS rainfall_data +``` + +`my/repo` will have 2 images: one having `hash_1` (with the `external_table` imported from a mounted database) +and one having `hash_2` (with both `external_table` and the `rainfall_data` containing the result +of the query run against the then-latest image in the `noaa/climate` repository). + +In this case: + +``` +sgr provenance my/repo +``` + +Returns a list of repositories and images that were imported by the Splitfile that constructed this image:: + +``` +my/repo:[hash_2] depends on: +noaa/climate:[hash_3] +``` + +Where `hash_3` is the hash of the latest image in the `noaa/climate` repository at the time the original +Splitfile was run. However: + +``` +sgr provenance -f my/repo +``` + +Will try to reconstruct the Splitfile that can be used to build this image. Since the FROM MOUNT command isn't +reproducible (requires access to the original external database, which is a moving target), this will fail. + +If `-e` is passed, this will emit information about irreproducible commands instead of failing. + +``` +sgr provenance -ef my/repo + +# Splitfile commands used to reconstruct my/repo:[image_hash] +# Irreproducible Splitfile command of type MOUNT +FROM noaa/climate:[hash_3] IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} +``` + +### Options + + * **`-f, --full`**: Recreate the Splitfile used to create this image + * **`-e, --ignore-errors`**: If set, ignore commands that aren't reproducible (like MOUNT or custom commands) diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/0003_dependents.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/0003_dependents.mdx new file mode 100644 index 00000000..fc8bc234 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/0003_dependents.mdx @@ -0,0 +1,21 @@ +export const meta = {id: "dependents", title: "sgr dependents", sidebarTitle: "dependents", description: "List images that were created from an image."}; + +```sgr dependents [OPTIONS] IMAGE_SPEC``` + +List images that were created from an image. + +This is the inverse of the sgr provenance command. It will list all images that were +created using a Splitfile that imported data from this image. + +By default, this will look at images on the local engine. The engine can be overridden +with --source-on and --dependents-on. For example: + + sgr dependents --source-on data.splitgraph.com --dependents-on LOCAL noaa/climate:latest + +will show all images on the local engine that derived data from `noaa/climate:latest` +on the Splitgraph registry. + +### Options + + * **`-O, --source-on TEXT`**: Override the engine to look the source up on + * **`-o, --dependents-on TEXT`**: Override the engine to list dependents from diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/metadata.json new file mode 100644 index 00000000..50afd08a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0006_splitfile-execution/metadata.json @@ -0,0 +1 @@ +{"title": "Splitfile execution"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0000_cloud-register.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0000_cloud-register.mdx new file mode 100644 index 00000000..089ce0c6 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0000_cloud-register.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "cloud-register", title: "sgr cloud register", sidebarTitle: "cloud register", description: "Register the user on a Splitgraph registry."}; + +```sgr cloud register [OPTIONS] ``` + +Register the user on a Splitgraph registry. + +By default, this registers the user on data.splitgraph.com, +obtains a set of machine (API) credentials for the client to communicate +with the registry and configures the data.splitgraph.com engine. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--email TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to register on. + * **`--accept-tos`**: Accept the registry's Terms of Service + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0001_cloud-login.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0001_cloud-login.mdx new file mode 100644 index 00000000..cb99d6c1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0001_cloud-login.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "cloud-login", title: "sgr cloud login", sidebarTitle: "cloud login", description: "Log into a Splitgraph registry with username/password."}; + +```sgr cloud login [OPTIONS] ``` + +Log into a Splitgraph registry with username/password. + +This will generate a new refresh token (to use the Splitgraph query API) +and API keys to let sgr access the registry (if they don't already exist +in the configuration file or if the actual username has changed). + +Note that if you already have generated an API key pair but it's not +in the configuration file, this will generate a new pair instead of +restoring the existing one, as the API secret is only stored in the configuration file. + +If you want to log in using an existing API key pair, use `sgr cloud login-api` instead. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`--overwrite`**: Overwrite old API keys in the config if they exist + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0002_cloud-login-api.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0002_cloud-login-api.mdx new file mode 100644 index 00000000..4007fe22 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0002_cloud-login-api.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "cloud-login-api", title: "sgr cloud login-api", sidebarTitle: "cloud login-api", description: "Log into a Splitgraph registry using existing API keys."}; + +```sgr cloud login-api [OPTIONS] ``` + +Log into a Splitgraph registry using existing API keys. + +This will inject the API keys for the registry into the configuration file +and generate a new access token. + +### Options + + * **`--api-key TEXT`**: + * **`--api-secret TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0003_cloud-sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0003_cloud-sql.mdx new file mode 100644 index 00000000..56c4be0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0003_cloud-sql.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "cloud-sql", title: "sgr cloud sql", sidebarTitle: "cloud sql", description: "Run SQL on or connect to the Splitgraph Data Delivery Network."}; + +```sgr cloud sql [OPTIONS] [QUERY]``` + +Run SQL on or connect to the Splitgraph Data Delivery Network. + +If a query isn't passed, this will return a libpq-compatible connection string to +the registry's SQL endpoint. It can be used to connect to the endpoint with other SQL clients: + +``` +pgcli $(sgr cloud sql) +``` + +If a query is passed, this will run an SQL query against the SQL endpoint. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0004_cloud-curl.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0004_cloud-curl.mdx new file mode 100644 index 00000000..e902965b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0004_cloud-curl.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "cloud-curl", title: "sgr cloud curl", sidebarTitle: "cloud curl", description: "Query a Splitgraph REST API."}; + +```sgr cloud curl [OPTIONS] IMAGE [REQUEST_PARAMS]``` + +Query a Splitgraph REST API. + +This is a thin wrapper around curl that performs an HTTP request to Splitgraph Cloud to +interact with a dataset using PostgREST (http://postgrest.org) or the Splitfile execution service. + +The actual invocation is: + +``` +curl [API endpoint][request] -H [access_token] [extra curl args]. +``` + +The image must be of the form `namespace/repository:[hash_or_tag (default latest)]`. + +The actual request parameters depend on the request type: + + * For PostgREST: `/table?[postgrest request]` or empty to get the OpenAPI spec for this image. + For a reference on how to perform Postgrest requests, see http://postgrest.org/en/latest/api.html. + * For the Splitfile executor: a JSON array to be POSTed to the executor, e.g. + `'{"command": "FROM some/repo IMPORT some_table AS alias", "tag": "new_tag"}'`. + +`--curl-args` allows to pass extra arguments to curl. Note that every argument must be prefixed +with `--curl-args`, e.g. `--curl-args --cacert --curl-args /path/to/ca.pem`. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-t, --request-type [postgrest|splitfile]`**: + * **`-c, --curl-args TEXT`**: Extra arguments to be passed to curl diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0005_cloud-readme.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0005_cloud-readme.mdx new file mode 100644 index 00000000..4ee4cf56 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0005_cloud-readme.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-readme", title: "sgr cloud readme", sidebarTitle: "cloud readme", description: "Upload a README to a Splitgraph repository."}; + +```sgr cloud readme [OPTIONS] REPOSITORY README``` + +Upload a README to a Splitgraph repository. + +The repository must have already been pushed. The README must be a file in Markdown format. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0006_cloud-description.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0006_cloud-description.mdx new file mode 100644 index 00000000..003c953f --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0006_cloud-description.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-description", title: "sgr cloud description", sidebarTitle: "cloud description", description: "Upload a description to a Splitgraph repository."}; + +```sgr cloud description [OPTIONS] REPOSITORY DESCRIPTION``` + +Upload a description to a Splitgraph repository. + +The repository must have already been pushed. The description should be plain text, 160 characters or shorter. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0007_cloud-metadata.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0007_cloud-metadata.mdx new file mode 100644 index 00000000..01b2f064 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0007_cloud-metadata.mdx @@ -0,0 +1,41 @@ +export const meta = {id: "cloud-metadata", title: "sgr cloud metadata", sidebarTitle: "cloud metadata", description: "Upload a metadata file to a Splitgraph repository."}; + +```sgr cloud metadata [OPTIONS] REPOSITORY [METADATA_FILE]``` + +Upload a metadata file to a Splitgraph repository. + +This can manipulate the repository's short description, README, topics, license, sources and extra metadata. + +The metadata file must be a YAML file. Omitting a key doesn't delete the value. + +For example: + + +``` +readme: dataset-readme.md +description: Dataset description (160 characters max). +topics: + - topic_1 + - topic_2 +sources: + - anchor: Source + href: https://www.splitgraph.com + isCreator: true + isSameAs: false + - anchor: Source 2 + href: https://www.splitgraph.com + isCreator: false + isSameAs: true +license: Public Domain +extra_metadata: + key_1: + key_1_1: value_1_1 + key_1_2: value_1_2 + key_2: + key_2_1: value_2_1 + key_2_2: value_2_2 +``` + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0008_cloud-search.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0008_cloud-search.mdx new file mode 100644 index 00000000..c23c31f4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0008_cloud-search.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "cloud-search", title: "sgr cloud search", sidebarTitle: "cloud search", description: "Search for a repository on the Splitgraph registry."}; + +```sgr cloud search [OPTIONS] QUERY``` + +Search for a repository on the Splitgraph registry. + +For more advanced search, including filtering by topics, go to the registry's website itself. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--limit INTEGER RANGE`**: Number of results to return diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0009_cloud-dump.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0009_cloud-dump.mdx new file mode 100644 index 00000000..8441621e --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0009_cloud-dump.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "cloud-dump", title: "sgr cloud dump", sidebarTitle: "cloud dump", description: "Dump a Splitgraph catalog to a YAML file."}; + +```sgr cloud dump [OPTIONS] [LIMIT_REPOSITORIES]...``` + +Dump a Splitgraph catalog to a YAML file. + +This creates a repositories.yml file in the target directory as well as a subdirectory `readmes` +with all the repository readmes. This file can be used to recreate all catalog metadata +and all external data source settings for a repository using `sgr cloud load`. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--readme-dir TEXT`**: Directory to dump the data into + * **`-f, --repositories-file FILENAME`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0010_cloud-load.mdx b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0010_cloud-load.mdx new file mode 100644 index 00000000..123bbb43 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/0010_cloud-load.mdx @@ -0,0 +1,67 @@ +export const meta = {id: "cloud-load", title: "sgr cloud load", sidebarTitle: "cloud load", description: "Load a Splitgraph catalog from a YAML file."}; + +```sgr cloud load [OPTIONS] [LIMIT_REPOSITORIES]...``` + +Load a Splitgraph catalog from a YAML file. + +This will load a repositories.yml file and the `readmes` subdirectory produced by +`sgr cloud dump` back into a remote Splitgraph catalog. + +The format is an extension of the format accepted by `sgr cloud metadata` to include multiple +repositories. README files are read from the `readmes` subdirectory. + + +``` +credentials: # Optional credentials to access remote data sources + my_bucket: + plugin: csv + data: + s3_access_key: ... + s3_secret_key: ... +repositories: +- namespace: my_username + repository: repository + metadata: + readme: dataset-readme.md + description: Dataset description (160 characters max). + topics: + - topic_1 + - topic_2 + sources: + - anchor: Source + href: https://www.splitgraph.com + isCreator: true + isSameAs: false + - anchor: Source 2 + href: https://www.splitgraph.com + isCreator: false + isSameAs: true + license: Public Domain + extra_metadata: + key_1: + key_1_1: value_1_1 + key_1_2: value_1_2 + key_2: + key_2_1: value_2_1 + key_2_2: value_2_2 + external: + credential: my_bucket + plugin: csv + params: + s3_bucket: my_bucket + tables: + table_1: + schema: + - name: column_1 + type: text + - name: column_2 + type: integer + options: + s3_object: some/s3_key.csv +``` + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--readme-dir TEXT`**: Path to the directory with the README files + * **`-f, --repositories-file FILENAME`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/metadata.json new file mode 100644 index 00000000..25ba655e --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/0007_splitgraph-cloud/metadata.json @@ -0,0 +1 @@ +{"title": "Splitgraph Cloud"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.14/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.14/metadata.json new file mode 100644 index 00000000..7ed3c860 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.14/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.14", + "updated_at": "2022-01-20T00:00:45.343Z", + "release": { + "id": 42470070, + "tag_name": "v0.2.14", + "target_commitish": "b6085d0bc345aaff8f9bb1812d783c177a2c1a0e", + "created_at": "2021-05-05T11:12:15Z", + "published_at": "2021-05-05T13:43:59Z", + "assets": [ + { + "id": 36435419, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/36435419", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-05-05T11:39:07Z", + "updated_at": "2021-05-05T11:39:07Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.14/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0000_checkout.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0000_checkout.mdx new file mode 100644 index 00000000..cc805a26 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0000_checkout.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "checkout", title: "sgr checkout", sidebarTitle: "checkout", description: "Check out a Splitgraph image into a Postgres schema."}; + +```sgr checkout [OPTIONS] IMAGE_SPEC``` + +Check out a Splitgraph image into a Postgres schema. + +This downloads the required physical objects and materializes all tables, unless ``-l`` or ``--layered`` is passed, +in which case the objects are downloaded and a foreign data wrapper is set up on the engine to satisfy read-only +queries by combining results from each table's fragments. + +Tables checked out in this way are still presented as normal Postgres tables and can queried in the same way. +Since the tables aren't materialized, layered querying is faster to set up, but since each query now results in a +subquery to each object comprising the table, actual query execution is slower than to materialized Postgres tables. + +Layered querying is only supported for read-only queries. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. Note that currently, the schema that the +image is checked out into has to have the same name as the repository. If no image hash or tag is passed, +"HEAD" is assumed. + +If ``-u`` or ``--uncheckout`` is passed, this instead deletes the checked out schema (assuming there are no pending +changes) and removes the HEAD pointer. + +If ``--force`` isn't passed and the schema has pending changes, this will fail. + +### Options + + * **`-f, --force`**: Discard all pending changes to the schema + * **`-u, --uncheckout`**: Delete the checked out copy instead + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0001_commit.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0001_commit.mdx new file mode 100644 index 00000000..9a2ec1f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0001_commit.mdx @@ -0,0 +1,59 @@ +export const meta = {id: "commit", title: "sgr commit", sidebarTitle: "commit", description: "Commit changes to a checked-out Splitgraph repository."}; + +```sgr commit [OPTIONS] REPOSITORY``` + +Commit changes to a checked-out Splitgraph repository. + +This packages up all changes into a new image. Where a table hasn't been created or had its schema changed, +this will delta compress the changes. For all other tables (or if ``-s`` has been passed), this will +store them as full table snapshots. + +When a table is stored as a full snapshot, `--chunk-size` sets the maximum size, in rows, of the fragments +that the table will be split into (default is no splitting). The splitting is done by the +table's primary key. + +If `--split-changesets` is passed, delta-compressed changes will also be split up according to the original +table chunk boundaries. For example, if there's a change to the first and the 20000th row of a table that was +originally committed with `--chunk-size=10000`, this will create 2 fragments: one based on the first chunk +and one on the second chunk of the table. + +If `--chunk-sort-keys` is passed, data inside the chunk is sorted by this key (or multiple keys). +This helps speed up queries on those keys for storage layers than can leverage that (e.g. CStore). The expected format is JSON, e.g. `{table_1: [col_1, col_2]}` + +`--index-options` expects a JSON-serialized dictionary of `{table: index_type: column: index_specific_kwargs}`. +Indexes are used to narrow down the amount of chunks to scan through when running a query. By default, each column +has a range index (minimum and maximum values) and it's possible to add bloom filtering to speed up queries that +involve equalities. + +Bloom filtering allows to trade off between the space overhead of the index and the probability of a false +positive (claiming that an object contains a record when it actually doesn't, leading to extra scans). + +An example `index-options` dictionary: + + +``` +{ + "table": { + "bloom": { + "column_1": { + "probability": 0.01, # Only one of probability + "size": 10000 # or size can be specified. + } + }, + # Only compute the range index on these columns. By default, + # it's computed on all columns and is always computed on the + # primary key no matter what. + "range": ["column_2", "column_3"] + } +} +``` + +### Options + + * **`-s, --snap`**: Do not delta compress the changes and instead store the whole table again. This consumes more space, but makes checkouts faster. + * **`-c, --chunk-size INTEGER`**: Split new tables into chunks of this many rows (by primary key). The default value is governed by the SG_COMMIT_CHUNK_SIZE configuration parameter. + * **`-k, --chunk-sort-keys JSON`**: Sort the data inside each chunk by this/these key(s) + * **`-t, --split-changesets`**: Split changesets for existing tables across original chunk boundaries. + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate on the new objects. + * **`-m, --message TEXT`**: Optional commit message + * **`-o, --overwrite`**: Overwrite physical objects that already exist diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0002_tag.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0002_tag.mdx new file mode 100644 index 00000000..89f01837 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0002_tag.mdx @@ -0,0 +1,36 @@ +export const meta = {id: "tag", title: "sgr tag", sidebarTitle: "tag", description: "Manage tags on images."}; + +```sgr tag [OPTIONS] IMAGE_SPEC [TAG]``` + +Manage tags on images. + +Depending on the exact invocation, this command can tag a Splitgraph image, +list all tags in a repository or delete a tag. + +### Examples + +``sgr tag noaa/climate`` + +List all tagged images in the ``noaa/climate`` repository and their tags. + +``sgr tag noaa/climate:abcdef1234567890`` + +List all tags assigned to the image ``noaa/climate:abcdef1234567890...`` + +``sgr tag noaa/climate:abcdef1234567890 my_new_tag`` + +Tag the image ``noaa/climate:abcdef1234567890...`` with ``my_new_tag``. If the tag already exists, this will +overwrite the tag. + +``sgr tag noaa/climate my_new_tag`` + +Tag the current ``HEAD`` of ``noaa/climate`` with ``my_new_tag``. + +``sgr tag --delete noaa/climate:my_new_tag`` + +Delete the tag ``my_new_tag`` from ``noaa/climate``. + +### Options + + * **`-d, --delete`**: Delete the tag instead. + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0003_import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0003_import.mdx new file mode 100644 index 00000000..b69bbfb4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0003_import.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "import", title: "sgr import", sidebarTitle: "import", description: "Import tables into a Splitgraph repository."}; + +```sgr import [OPTIONS] IMAGE_SPEC TABLE_OR_QUERY TARGET_REPOSITORY [TARGET_TABLE]``` + +Import tables into a Splitgraph repository. + +Imports a table or a result of a query from a local Splitgraph repository or a Postgres schema into another +Splitgraph repository. + +### Examples + +``sgr import noaa/climate:my_tag climate_data my/repository`` + +Create a new image in ``my/repository`` with the ``climate_data`` table included. This links the new image to +the physical object, meaning that the history of the ``climate_data`` table is preserved. + +If no tag is specified, the 'latest' (not the HEAD image or current state of the checked out image) +image is used. + +``sgr import noaa/climate:my_tag "SELECT * FROM climate_data" my/repository climate_data`` + +Create a new image in ``my/repository`` with the result of the query stored in the ``climate_data`` table. This +creates a new physical object without any linkage to the original data, so the history of the ``climate_data`` +table isn't preserved. The SQL query can interact with multiple tables in the source image. + +``sgr import other_schema other_table my/repository`` + +Since other_schema isn't a Splitgraph repository, this will copy ``other_schema.other_table`` +into a new Splitgraph object and add the ``other_table`` table to a new image in ``my/repository``. + +Note that importing doesn't discard or commit pending changes in the target Splitgraph repository: a new image +is created with the new table added, the new table is materialized in the repository and the HEAD pointer is moved. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0004_reindex.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0004_reindex.mdx new file mode 100644 index 00000000..b640ffe3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/0004_reindex.mdx @@ -0,0 +1,19 @@ +export const meta = {id: "reindex", title: "sgr reindex", sidebarTitle: "reindex", description: "Run extra indexes on a table."}; + +```sgr reindex [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Run extra indexes on a table. This will merge the indexing results for all objects +that a table is formed from with the current object indexes. For explanation of +what indexes do, see the documentation for `sgr commit`. + +If the objects haven't been downloaded yet, this will download them. + +Currently reindexing objects that change other objects is unsupported and will raise +an error. Pass `-o` to ignore these objects and only reindex supported objects. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate, e.g. '{"bloom": {"column_1": {"probability": 0.01}}}' [required] + * **`-o, --ignore-patch-objects`**: Ignore objects that change other objects' rows instead of raising an error diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/metadata.json new file mode 100644 index 00000000..9ef75b16 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0000_image-management-creation/metadata.json @@ -0,0 +1 @@ +{"title": "Image management/creation"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0000_log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0000_log.mdx new file mode 100644 index 00000000..db5078b4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0000_log.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "log", title: "sgr log", sidebarTitle: "log", description: "Show the history of a Splitgraph repository/image."}; + +```sgr log [OPTIONS] IMAGE_SPEC``` + +Show the history of a Splitgraph repository/image. + +By default, this shows the history of the current branch, starting from the HEAD pointer and following its +parent chain. + +Alternatively, it can follow the parent chain of any other image. + +If ``-t`` or ``--tree`` is passed, this instead renders the full image tree. The repository doesn't need to have +been checked out in this case. + +### Options + + * **`-t, --tree`**: + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0001_diff.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0001_diff.mdx new file mode 100644 index 00000000..8ef569e8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0001_diff.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "diff", title: "sgr diff", sidebarTitle: "diff", description: "Show differences between two Splitgraph images."}; + +```sgr diff [OPTIONS] REPOSITORY [TAG_OR_HASH_1] [TAG_OR_HASH_2]``` + +Show differences between two Splitgraph images. + +The two images must be in the same repository. The actual targets of this command depend +on the number of arguments passed: + +``sgr diff REPOSITORY`` + +Return the differences between the current HEAD image and the checked out schema. + +``sgr diff REPOSITORY TAG_OR_HASH`` + +Return the differences between the image and its parent. + +``sgr diff REPOSITORY TAG_OR_HASH_1 TAG_OR_HASH_2`` + +Return the differences from the first (earlier) image to the second image. + +### Options + + * **`-v, --verbose`**: Include the actual differences rather than just the total number of updated rows. + * **`-t, --table-name TEXT`**: Show the differences for a single table. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0002_object.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0002_object.mdx new file mode 100644 index 00000000..ff8c38a9 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0002_object.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "object", title: "sgr object", sidebarTitle: "object", description: "Show information about a Splitgraph object."}; + +```sgr object [OPTIONS] OBJECT_ID``` + +Show information about a Splitgraph object. + +Objects, or fragments, are building blocks of Splitgraph tables: each table consists of multiple immutable fragments +that can partially overwrite each other. Each fragment might have a parent that it depends on. In addition, +the smallest and largest values for every column are stored in the fragment's metadata. This information is used +to choose which objects to download in order to execute a query against a table. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0003_objects.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0003_objects.mdx new file mode 100644 index 00000000..c56fa727 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0003_objects.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "objects", title: "sgr objects", sidebarTitle: "objects", description: "List objects known to this engine."}; + +```sgr objects [OPTIONS] ``` + +List objects known to this engine. + +### Options + + * **`--local`**: Show only objects that are physically present on this engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0004_show.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0004_show.mdx new file mode 100644 index 00000000..4ddcc55d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0004_show.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "show", title: "sgr show", sidebarTitle: "show", description: "Show information about a Splitgraph image."}; + +```sgr show [OPTIONS] IMAGE_SPEC``` + +Show information about a Splitgraph image. This includes its parent, comment, size and creation time. + +Note that the size isn't the on-disk footprint, as the image might share some objects with other images +or if some of the image's objects have not been downloaded. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0005_table.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0005_table.mdx new file mode 100644 index 00000000..cc681c85 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0005_table.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "table", title: "sgr table", sidebarTitle: "table", description: "Show information about a table in a Splitgraph image."}; + +```sgr table [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Show information about a table in a Splitgraph image. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-v, --verbose`**: Show all of table's objects. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0006_sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0006_sql.mdx new file mode 100644 index 00000000..ea8a304b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0006_sql.mdx @@ -0,0 +1,34 @@ +export const meta = {id: "sql", title: "sgr sql", sidebarTitle: "sql", description: "Run an SQL statement against the Splitgraph engine."}; + +```sgr sql [OPTIONS] SQL``` + +Run an SQL statement against the Splitgraph engine. + +There are no restrictions on the contents of the statement: this is the same as running it +from any other PostgreSQL client. + +If ``--schema`` is specified, the statement is run with the ``search_path`` set to that schema. This means +that these statements are equivalent: + + +``` +sgr sql "SELECT * FROM "noaa/climate".table" +sgr sql -s noaa/climate "SELECT * FROM table" +``` + +If `--image` is specified, this will run the statement against that image using layered querying. +Only read-only statements are supported. For example: + + +``` +sgr sql -i noaa/climate:latest "SELECT * FROM table" +``` + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-s, --schema TEXT`**: Run SQL against this schema. + * **`-i, --image IMAGE`**: Run SQL against this image. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON + * **`-n, --no-transaction`**: Don't wrap the SQL in a transaction. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0007_status.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0007_status.mdx new file mode 100644 index 00000000..5e312f11 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/0007_status.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "status", title: "sgr status", sidebarTitle: "status", description: "Show the status of the Splitgraph engine."}; + +```sgr status [OPTIONS] [REPOSITORY]``` + +Show the status of the Splitgraph engine. + +If a repository is passed, show in-depth information about a repository. + +If not, show information about all repositories local to the engine. This will show a list +of all repositories, number of local images and tags, total repository size (theoretical +maximum size and current on-disk footprint of cached objects) and the current checked +out image (with LQ if the image is checked out using read-only layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/metadata.json new file mode 100644 index 00000000..a2c3f0f8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0001_image-information/metadata.json @@ -0,0 +1 @@ +{"title": "Image information"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0000_engine-add.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0000_engine-add.mdx new file mode 100644 index 00000000..c0b69417 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0000_engine-add.mdx @@ -0,0 +1,26 @@ +export const meta = {id: "engine-add", title: "sgr engine add", sidebarTitle: "engine add", description: "Create and start a Splitgraph engine."}; + +```sgr engine add [OPTIONS] [NAME]``` + +Create and start a Splitgraph engine. + +This will pull the Splitgraph engine image, start it, create a Postgres user and initialize +the engine. + +This also creates Docker volumes required to persist data/metadata. + +The engine Docker container by default will be named `splitgraph_engine_default` and +its data and metadata volumes will have names `splitgraph_engine_default_data` and +`splitgraph_engine_default_metadata`. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`-p, --port INTEGER`**: Port to start the engine on + * **`-u, --username TEXT`**: + * **`--no-init`**: Don't run `sgr init` on the engine + * **`--no-sgconfig`**: Don't add the engine to .sgconfig + * **`--inject-source`**: Inject the current Splitgraph source code into the engine using Docker bind mounts + * **`--no-pull`**: Don't pull the Docker image + * **`--set-default`**: Set the engine as the default engine in the config regardless of its name + * **`--password TEXT`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0001_engine-delete.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0001_engine-delete.mdx new file mode 100644 index 00000000..6229e082 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0001_engine-delete.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "engine-delete", title: "sgr engine delete", sidebarTitle: "engine delete", description: "Delete the Splitgraph engine container."}; + +```sgr engine delete [OPTIONS] [NAME]``` + +Delete the Splitgraph engine container. + +### Options + + * **`-y, --yes`**: Do not prompt for confirmation. + * **`-f, --force`**: Delete the engine anyway if it's running. + * **`-v, --with-volumes`**: Include the engine's volumes (if not specified, volumes will be reattached when an engine with the same name is created). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0002_engine-list.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0002_engine-list.mdx new file mode 100644 index 00000000..a2530db2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0002_engine-list.mdx @@ -0,0 +1,13 @@ +export const meta = {id: "engine-list", title: "sgr engine list", sidebarTitle: "engine list", description: "List Splitgraph engines."}; + +```sgr engine list [OPTIONS] ``` + +List Splitgraph engines. + +This only lists Docker containers that were created by sgr engine +(whose names start with `splitgraph_engine_`. To manage other engines, +use Docker CLI directly. + +### Options + + * **`-a, --include-all`**: Include stopped engine containers. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0003_engine-start.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0003_engine-start.mdx new file mode 100644 index 00000000..4c9cdf6c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0003_engine-start.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-start", title: "sgr engine start", sidebarTitle: "engine start", description: "Start a Splitgraph engine."}; + +```sgr engine start [OPTIONS] [NAME]``` + +Start a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0004_engine-stop.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0004_engine-stop.mdx new file mode 100644 index 00000000..7ea64786 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0004_engine-stop.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-stop", title: "sgr engine stop", sidebarTitle: "engine stop", description: "Stop a Splitgraph engine."}; + +```sgr engine stop [OPTIONS] [NAME]``` + +Stop a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0005_engine-upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0005_engine-upgrade.mdx new file mode 100644 index 00000000..751cd998 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0005_engine-upgrade.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "engine-upgrade", title: "sgr engine upgrade", sidebarTitle: "engine upgrade", description: "Upgrade a Splitgraph engine."}; + +```sgr engine upgrade [OPTIONS] [NAME]``` + +Upgrade a Splitgraph engine. + +This consists of shutting down the current Splitgraph engine, +deleting its Docker container (keeping the actual data and +metadata volumes intact), creating a container based on a newer +image and finally reinitializing the engine to perform needed migrations. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`--no-pull`**: Don't pull the new engine image diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0006_engine-log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0006_engine-log.mdx new file mode 100644 index 00000000..58859523 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0006_engine-log.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "engine-log", title: "sgr engine log", sidebarTitle: "engine log", description: "Get logs from a Splitgraph engine."}; + +```sgr engine log [OPTIONS] [NAME]``` + +Get logs from a Splitgraph engine. + +### Options + + * **`-f, --follow`**: Stream logs diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0007_engine-configure.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0007_engine-configure.mdx new file mode 100644 index 00000000..1be8adcd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0007_engine-configure.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "engine-configure", title: "sgr engine configure", sidebarTitle: "engine configure", description: "Inject a configuration file into an engine."}; + +```sgr engine configure [OPTIONS] [NAME]``` + +Inject a configuration file into an engine. + +This copies the current .sgconfig file (pointed to by SG_CONFIG_FILE) into +the engine container, making it use that configuration for +when it's queried through an application other than the sgr client +(layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0008_engine-version.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0008_engine-version.mdx new file mode 100644 index 00000000..d47bfe05 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/0008_engine-version.mdx @@ -0,0 +1,5 @@ +export const meta = {id: "engine-version", title: "sgr engine version", sidebarTitle: "engine version", description: "Get version of Splitgraph engine."}; + +```sgr engine version [OPTIONS] [NAME]``` + +Get version of Splitgraph engine. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/metadata.json new file mode 100644 index 00000000..3f70a9d2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0002_engine-management/metadata.json @@ -0,0 +1 @@ +{"title": "Engine management"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/0000_csv-export.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/0000_csv-export.mdx new file mode 100644 index 00000000..8408f9f2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/0000_csv-export.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-export", title: "sgr csv export", sidebarTitle: "csv export", description: "Export the result of a query as CSV."}; + +```sgr csv export [OPTIONS] IMAGE_SPEC QUERY``` + +Export the result of a query as CSV. + +### Examples + +`sgr csv export noaa/climate "SELECT * FROM rainfall"` + +Output everything in the currently checked-out `"rainfall"` table as CSV. + +`sgr csv export noaa/climate:dec_2018 "SELECT * FROM rainfall WHERE state = 'AZ' -f dec_2018_az.csv` + +Check out the `dec_2018` tag of `noaa/climate` and output values from `"rainfall"` for Arizona to `dec_2018_az.csv` + +`sgr csv export --layered noaa/climate:abcdef1234567890 "SELECT * FROM rainfall JOIN other_table ON..."` + +Uses layered querying instead to execute a join on tables in a certain image (satisfying the query without +having to check the image out). + +### Options + + * **`-f, --file FILENAME`**: File name to export to, default stdout. + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/0001_csv-import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/0001_csv-import.mdx new file mode 100644 index 00000000..5f3eb655 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/0001_csv-import.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-import", title: "sgr csv import", sidebarTitle: "csv import", description: "Import a CSV file into a checked-out Splitgraph repository."}; + +```sgr csv import [OPTIONS] REPOSITORY TABLE``` + +Import a CSV file into a checked-out Splitgraph repository. This doesn't create a new image, use `sgr commit` +after the import and any adjustments (e.g. adding primary keys or converting column types) to do so. + +If the target table doesn't exist, this will create a new table. + +If the target table does exist, this will try and patch the new values in by updating rows that exist in the +current table (as per its primary key constraints) and inserting new ones. Rows existing in the current table +but missing in the CSV won't be deleted. + +If `-r` is passed, the table will instead be deleted and recreated from the CSV file if it exists. + +### Options + + * **`-f, --file FILENAME`**: File name to import data from, default stdin. + * **`-r, --replace`**: Replace the table if it already exists. + * **`-k, --primary-key TEXT`**: Use the specified column(s) as primary key(s) + * **`-t, --override-type ...`**: Explicitly set types of these columns to PG types + * **`--encoding TEXT`**: Encoding to use for the CSV file + * **`--separator TEXT`**: CSV separator to use + * **`--no-header`**: Treats the first line of the CSV as data rather than a header. + * **`--skip-schema-check`**: Skips checking that the dataframe is compatible with the target schema. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/0002_mount.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/0002_mount.mdx new file mode 100644 index 00000000..85bcb7f5 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/0002_mount.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "mount", title: "sgr mount", sidebarTitle: "mount", description: "Mount foreign databases as Postgres schemas."}; + +```sgr mount [OPTIONS] ``` + +Mount foreign databases as Postgres schemas. + +Uses the Postgres FDW interface to create a local Postgres schema with foreign tables that map +to tables in other databases. + +See a given mount handler's documentation for handler-specific parameters. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/0003_singer-target.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/0003_singer-target.mdx new file mode 100644 index 00000000..c353a781 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/0003_singer-target.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "singer-target", title: "sgr singer target", sidebarTitle: "singer target", description: "Singer target that loads data into Splitgraph images."}; + +```sgr singer target [OPTIONS] IMAGE``` + +Singer target that loads data into Splitgraph images. + +This will read data from the stdin from a Singer-compatible tap and load it into +a Splitgraph image, merging data if the image already exists. + +Image must be of the format `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]` where `HASH_OR_TAG` +is a tag of an existing image to base the image on. If the repository doesn't exist, +it will be created. + +As this target consumes data from stdin, it will flush the records into a Splitgraph image. By +default, it will only keep the image if the whole stream has been successfully consumed. To +make this target completely follow the Singer spec (if it emits state, the records have been +flushed), pass --failure=keep-both or --failure=delete-old. To delete the old image on success, +pass --delete-old. + +### Options + + * **`-d, --delete-old`**: Delete the old image at the end of ingestion + * **`-f, --failure [keep-both|delete-old|delete-new]`**: What to do in case of a failure. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/metadata.json new file mode 100644 index 00000000..d82f5068 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0003_data-import-export/metadata.json @@ -0,0 +1 @@ +{"title": "Data import/export"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0000_rm.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0000_rm.mdx new file mode 100644 index 00000000..47baf9a3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0000_rm.mdx @@ -0,0 +1,40 @@ +export const meta = {id: "rm", title: "sgr rm", sidebarTitle: "rm", description: "Delete schemas, repositories or images."}; + +```sgr rm [OPTIONS] IMAGE_SPEC``` + +Delete schemas, repositories or images. + +If the target of this command is a Postgres schema, this performs DROP SCHEMA CASCADE. + +If the target of this command is a Splitgraph repository, this deletes the repository and all of its history. + +If the target of this command is an image, this deletes the image and all of its children. + +In any case, this command will ask for confirmation of the deletion, unless ``-y`` is passed. If ``-r`` +(``--remote``), is passed, this will perform deletion on a remote Splitgraph engine (registered in the config) +instead, assuming the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Examples + +``sgr rm temporary_schema`` + +Deletes ``temporary_schema`` from the local engine. + +``sgr rm --remote data.splitgraph.com username/repo`` + +Deletes ``username/repo`` from the Splitgraph registry. + +``sgr rm -y username/repo:old_branch`` + +Deletes the image pointed to by ``old_branch`` as well as all of its children (images created by a commit based +on this image), as well as all of the tags that point to now deleted images, without asking for confirmation. +Note this will not delete images that import tables from the deleted images via Splitfiles or indeed the +physical objects containing the actual tables. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0001_init.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0001_init.mdx new file mode 100644 index 00000000..e4ab8d4d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0001_init.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "init", title: "sgr init", sidebarTitle: "init", description: "Initialize a new repository/engine."}; + +```sgr init [OPTIONS] [REPOSITORY]``` + +Initialize a new repository/engine. + +### Examples + +`sgr init` + +Initializes the current local Splitgraph engine by writing some bookkeeping information. +This is required for the rest of sgr to work. + +`sgr init --skip-object-handling` + +Initializes a Splitgraph engine without installing audit triggers or object management routines: +this is useful for engines that aren't intended to be used for image checkouts. + +``sgr init new/repo`` + +Creates a single image with the hash ``00000...`` in ``new/repo`` + +### Options + + * **`--skip-object-handling`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0002_cleanup.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0002_cleanup.mdx new file mode 100644 index 00000000..c23688a4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0002_cleanup.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "cleanup", title: "sgr cleanup", sidebarTitle: "cleanup", description: "Prune unneeded objects from the engine."}; + +```sgr cleanup [OPTIONS] ``` + +Prune unneeded objects from the engine. + +This deletes all objects from the cache that aren't required by any local repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0003_prune.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0003_prune.mdx new file mode 100644 index 00000000..64c2d49b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0003_prune.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "prune", title: "sgr prune", sidebarTitle: "prune", description: "Cleanup dangling images from a repository."}; + +```sgr prune [OPTIONS] REPOSITORY``` + +Cleanup dangling images from a repository. + +This includes images not pointed to by any tags (or checked out) and those that aren't required by any of +such images. + +Will ask for confirmation of the deletion, unless ``-y ``is passed. If ``-r`` (``--remote``) is +passed, this will perform deletion on a remote Splitgraph engine (registered in the config) instead, assuming +the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0004_config.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0004_config.mdx new file mode 100644 index 00000000..7fcaa53c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0004_config.mdx @@ -0,0 +1,33 @@ +export const meta = {id: "config", title: "sgr config", sidebarTitle: "config", description: "Print the current Splitgraph configuration."}; + +```sgr config [OPTIONS] ``` + +Print the current Splitgraph configuration. + +This takes into account the local config file, the default values +and all overrides specified via environment variables. + +This command can be used to dump the current Splitgraph configuration into a file: + +``` +sgr config --no-shielding --config-format > .sgconfig +``` + +...or save a config file overriding an entry: + +``` +SG_REPO_LOOKUP=engine1,engine2 sgr config -sc > .sgconfig +``` + +If `--conn-string` is passed, this prints out a libpq connection string +that can be used to connect to the default Splitgraph engine with other tools: + +``` +pgcli $(sgr config -n) +``` + +### Options + + * **`-s, --no-shielding`**: If set, doesn't replace sensitive values (like passwords) with asterisks + * **`-c, --config-format`**: Output configuration in the Splitgraph config file format + * **`-n, --conn-string`**: Print a libpq connection string to the engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0005_dump.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0005_dump.mdx new file mode 100644 index 00000000..111baceb --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0005_dump.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "dump", title: "sgr dump", sidebarTitle: "dump", description: "Dump a repository to SQL."}; + +```sgr dump [OPTIONS] REPOSITORY``` + +Dump a repository to SQL. + +### Options + + * **`--exclude-object-contents`**: Don't dump the commands needed to recreate objects required by the repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0006_eval.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0006_eval.mdx new file mode 100644 index 00000000..5b4b7f0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0006_eval.mdx @@ -0,0 +1,39 @@ +export const meta = {id: "eval", title: "sgr eval", sidebarTitle: "eval", description: "Evaluate a Python snippet using the Splitgraph API."}; + +```sgr eval [OPTIONS] COMMAND``` + +Evaluate a Python snippet using the Splitgraph API. + +This is for advanced users only and should be only used +if you know what you are doing. + +Normal Python statements are supported and the command is evaluated +in a namespace where the following is already imported and available: + + * Repository: class that instantiates a Splitgraph repository and makes + API functions like .commit(), .checkout() etc available. + + * engine: Current local engine + + * object_manager: an instance of ObjectManager that allows + to get information about objects and manage the object cache. + + +Example: +``` +sgr eval 'import json; print(json.dumps(Repository\ + .from_schema(repo_name)\ + .images["latest"]\ + .get_table(table_name)\ + .table_schema))' \ +-a repo_name my_repo -a table_name my_table +``` + +Will dump the schema of table my_table in the most recent image in my_repo in JSON format. + +For more information, see the Splitgraph API reference. + +### Options + + * **`--i-know-what-im-doing`**: Pass this if you're sure that the code you're running is safe and don't want to be prompted. + * **`-a, --arg ...`**: Make extra variables available in the command's namespace diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0007_upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0007_upgrade.mdx new file mode 100644 index 00000000..188e798b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/0007_upgrade.mdx @@ -0,0 +1,17 @@ +export const meta = {id: "upgrade", title: "sgr upgrade", sidebarTitle: "upgrade", description: "Upgrade sgr client and engine."}; + +```sgr upgrade [OPTIONS] [VERSION]``` + +Upgrade sgr client and engine. + +This will try to download the most recent stable binary for the current platform +into the location this binary is running from and then upgrade the default engine. + +This method is only supported for single-binary installs and engines managed +by `sgr engine`. + +### Options + + * **`--skip-engine-upgrade`**: Only upgrade the client + * **`--path TEXT`**: Override the path to download the new binary to. + * **`--force`**: Reinstall older/same versions. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/metadata.json new file mode 100644 index 00000000..26f7a103 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0004_miscellaneous/metadata.json @@ -0,0 +1 @@ +{"title": "Miscellaneous"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/0000_clone.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/0000_clone.mdx new file mode 100644 index 00000000..7c2929bd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/0000_clone.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "clone", title: "sgr clone", sidebarTitle: "clone", description: "Clone a remote Splitgraph repository/image into a local one."}; + +```sgr clone [OPTIONS] REMOTE_REPOSITORY_OR_IMAGE [LOCAL_REPOSITORY]``` + +Clone a remote Splitgraph repository/image into a local one. + +The lookup path for the repository is governed by the ``SG_REPO_LOOKUP`` and ``SG_REPO_LOOKUP_OVERRIDE`` +config parameters and can be overridden by the command line ``--remote`` option. + +### Options + + * **`-r, --remote TEXT`**: Name of the remote engine + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/0001_push.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/0001_push.mdx new file mode 100644 index 00000000..60ba1e17 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/0001_push.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "push", title: "sgr push", sidebarTitle: "push", description: "Push images the Splitgraph registry or another engine."}; + +```sgr push [OPTIONS] REPOSITORY_OR_IMAGE [REMOTE_REPOSITORY]``` + +Push images the Splitgraph registry or another engine. + +If an image is not specified (e.g. `sgr push noaa/climate`, this will push all new images. + +By default, the repository will be pushed to a repository with the same name in the user's namespace +(SG_NAMESPACE configuration value which defaults to the username). + +If there's a single engine registered in the config (e.g. data.splitgraph.com), it shall be the default +destination. + +If an upstream repository/engine has been configured for this engine with `sgr upstream`, +it will be used instead. + +Finally, if `remote_repository` or `--remote` are passed, they will take precedence. + +The actual objects will be uploaded to S3 using Minio. When pushing to another engine, +you can choose to upload them directly by passing `--handler DB`. + +### Options + + * **`-r, --remote []`**: Name of the remote engine + * **`-h, --upload-handler TEXT`**: Upload handler + * **`-o, --upload-handler-options JSON`**: Upload handler parameters + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing remote objects + * **`-t, --tags`**: Overwrite tags for pushed image/repo + * **`-u, --reupload-objects`**: Reupload objects that metadata is pushed out for diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/0002_pull.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/0002_pull.mdx new file mode 100644 index 00000000..d1b631d1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/0002_pull.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "pull", title: "sgr pull", sidebarTitle: "pull", description: "Pull changes / download a single image."}; + +```sgr pull [OPTIONS] REPOSITORY_OR_IMAGE``` + +Pull changes / download a single image. + +### Options + + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/0003_upstream.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/0003_upstream.mdx new file mode 100644 index 00000000..32f1d6ec --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/0003_upstream.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "upstream", title: "sgr upstream", sidebarTitle: "upstream", description: "Get or set the upstream for a repository."}; + +```sgr upstream [OPTIONS] REPOSITORY``` + +Get or set the upstream for a repository. + +This shows the default repository used for pushes and pulls as well as allows to change it to a different +remote engine and repository. + +The remote engine alias must exist in the config file. + +### Examples + +``sgr upstream my/repo --set splitgraph.com username/repo`` + +Sets the upstream for ``my/repo`` to ``username/repo`` existing on the ``splitgraph.com`` engine + +``sgr upstream my/repo --reset`` + +Removes the upstream for ``my/repo``. + +``sgr upstream my/repo`` + +Shows the current upstream for ``my/repo``. + +### Options + + * **`-s, --set ...`**: Set the upstream to a engine alias + repository + * **`-r, --reset`**: Delete the upstream diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/metadata.json new file mode 100644 index 00000000..b2c1ab8d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0005_sharing-images/metadata.json @@ -0,0 +1 @@ +{"title": "Sharing images"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/0000_build.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/0000_build.mdx new file mode 100644 index 00000000..2204aae2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/0000_build.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "build", title: "sgr build", sidebarTitle: "build", description: "Build Splitgraph images."}; + +```sgr build [OPTIONS] SPLITFILE``` + +Build Splitgraph images. + +This executes a Splitfile, building a new image or checking it out from cache if the same +image had already been built. + +### Examples + +``sgr build my.splitfile`` + +Executes ``my.splitfile`` and writes its output into a new repository with the same name +as the Splitfile (my) unless the name is specified in the Splitfile. + +``sgr build my.splitfile -o mynew/repo`` + +Executes ``my.splitfile`` and writes its output into ``mynew/repo``. + +``sgr build my_other.splitfile -o mynew/otherrepo --args PARAM1 VAL1 --args PARAM2 VAL2`` + +Executes ``my_other.splitfile`` with parameters ``PARAM1`` and ``PARAM2`` set to +``VAL1`` and ``VAL2``, respectively. + +### Options + + * **`-a, --args ...`**: Parameters to be substituted into the Splitfile. All parameters mentioned in the file must be specified in order for the Splitfile to be executed. + * **`-o, --output-repository REPOSITORY`**: Repository to store the result in. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/0001_rebuild.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/0001_rebuild.mdx new file mode 100644 index 00000000..8194b0f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/0001_rebuild.mdx @@ -0,0 +1,27 @@ +export const meta = {id: "rebuild", title: "sgr rebuild", sidebarTitle: "rebuild", description: "Rebuild images against different dependencies."}; + +```sgr rebuild [OPTIONS] IMAGE_SPEC``` + +Rebuild images against different dependencies. + +Examines the provenance of a Splitgraph image created by a Splitfile and reruns it against different images than +the ones that were imported by the original run. + +### Examples + +``sgr rebuild my/repo --against noaa/climate:old_data`` + +Reconstructs the Splitfile used to create ``my/repo:latest``, replaces all imports from ``noaa/climate`` with +imports from ``noaa/climate:old_data`` and reruns the Splitfile. + +``sgr rebuild my/repo:other_tag -u`` + +Rebuilds ``my_repo:other_tag`` against the latest versions of all of its dependencies. + +Image caching still works in this case: if the result of the rebuild already exists, the image will be checked +out. + +### Options + + * **`-u, --update`**: Rederive the image against the latest version of all dependencies. + * **`-a, --against IMAGE`**: Images to substitute into the reconstructed Splitfile, of the form [NAMESPACE/]REPOSITORY[:HASH_OR_TAG]. Default tag is 'latest'. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/0002_provenance.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/0002_provenance.mdx new file mode 100644 index 00000000..45d3a5a8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/0002_provenance.mdx @@ -0,0 +1,62 @@ +export const meta = {id: "provenance", title: "sgr provenance", sidebarTitle: "provenance", description: "Reconstruct the provenance of an image."}; + +```sgr provenance [OPTIONS] IMAGE_SPEC``` + +Reconstruct the provenance of an image. + +This inspects the image to produce a list of images that were used by the Splitfile +that created it, or a Splitfile with the same effect. + +`IMAGE_SPEC` must be of the form `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]`. +If no tag is specified, `latest` is used. + +### Examples + +Assume `my/repo` is produced by the following Splitfile: + +``` +FROM MOUNT [...] IMPORT external_table +FROM noaa/climate IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} AS rainfall_data +``` + +`my/repo` will have 2 images: one having `hash_1` (with the `external_table` imported from a mounted database) +and one having `hash_2` (with both `external_table` and the `rainfall_data` containing the result +of the query run against the then-latest image in the `noaa/climate` repository). + +In this case: + +``` +sgr provenance my/repo +``` + +Returns a list of repositories and images that were imported by the Splitfile that constructed this image:: + +``` +my/repo:[hash_2] depends on: +noaa/climate:[hash_3] +``` + +Where `hash_3` is the hash of the latest image in the `noaa/climate` repository at the time the original +Splitfile was run. However: + +``` +sgr provenance -f my/repo +``` + +Will try to reconstruct the Splitfile that can be used to build this image. Since the FROM MOUNT command isn't +reproducible (requires access to the original external database, which is a moving target), this will fail. + +If `-e` is passed, this will emit information about irreproducible commands instead of failing. + +``` +sgr provenance -ef my/repo + +# Splitfile commands used to reconstruct my/repo:[image_hash] +# Irreproducible Splitfile command of type MOUNT +FROM noaa/climate:[hash_3] IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} +``` + +### Options + + * **`-f, --full`**: Recreate the Splitfile used to create this image + * **`-e, --ignore-errors`**: If set, ignore commands that aren't reproducible (like MOUNT or custom commands) diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/0003_dependents.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/0003_dependents.mdx new file mode 100644 index 00000000..fc8bc234 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/0003_dependents.mdx @@ -0,0 +1,21 @@ +export const meta = {id: "dependents", title: "sgr dependents", sidebarTitle: "dependents", description: "List images that were created from an image."}; + +```sgr dependents [OPTIONS] IMAGE_SPEC``` + +List images that were created from an image. + +This is the inverse of the sgr provenance command. It will list all images that were +created using a Splitfile that imported data from this image. + +By default, this will look at images on the local engine. The engine can be overridden +with --source-on and --dependents-on. For example: + + sgr dependents --source-on data.splitgraph.com --dependents-on LOCAL noaa/climate:latest + +will show all images on the local engine that derived data from `noaa/climate:latest` +on the Splitgraph registry. + +### Options + + * **`-O, --source-on TEXT`**: Override the engine to look the source up on + * **`-o, --dependents-on TEXT`**: Override the engine to list dependents from diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/metadata.json new file mode 100644 index 00000000..50afd08a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0006_splitfile-execution/metadata.json @@ -0,0 +1 @@ +{"title": "Splitfile execution"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0000_cloud-add.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0000_cloud-add.mdx new file mode 100644 index 00000000..9eba1036 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0000_cloud-add.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "cloud-add", title: "sgr cloud add", sidebarTitle: "cloud add", description: "Add a remote Splitgraph registry to .sgconfig with default parameters"}; + +```sgr cloud add [OPTIONS] DOMAIN_NAME``` + +Add a remote Splitgraph registry to .sgconfig with default parameters + +### Options + + * **`--remote TEXT`**: Name for the remote (infer from the domain name by default) + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0001_cloud-register.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0001_cloud-register.mdx new file mode 100644 index 00000000..089ce0c6 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0001_cloud-register.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "cloud-register", title: "sgr cloud register", sidebarTitle: "cloud register", description: "Register the user on a Splitgraph registry."}; + +```sgr cloud register [OPTIONS] ``` + +Register the user on a Splitgraph registry. + +By default, this registers the user on data.splitgraph.com, +obtains a set of machine (API) credentials for the client to communicate +with the registry and configures the data.splitgraph.com engine. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--email TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to register on. + * **`--accept-tos`**: Accept the registry's Terms of Service + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0002_cloud-login.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0002_cloud-login.mdx new file mode 100644 index 00000000..cb99d6c1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0002_cloud-login.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "cloud-login", title: "sgr cloud login", sidebarTitle: "cloud login", description: "Log into a Splitgraph registry with username/password."}; + +```sgr cloud login [OPTIONS] ``` + +Log into a Splitgraph registry with username/password. + +This will generate a new refresh token (to use the Splitgraph query API) +and API keys to let sgr access the registry (if they don't already exist +in the configuration file or if the actual username has changed). + +Note that if you already have generated an API key pair but it's not +in the configuration file, this will generate a new pair instead of +restoring the existing one, as the API secret is only stored in the configuration file. + +If you want to log in using an existing API key pair, use `sgr cloud login-api` instead. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`--overwrite`**: Overwrite old API keys in the config if they exist + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0003_cloud-login-api.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0003_cloud-login-api.mdx new file mode 100644 index 00000000..4007fe22 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0003_cloud-login-api.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "cloud-login-api", title: "sgr cloud login-api", sidebarTitle: "cloud login-api", description: "Log into a Splitgraph registry using existing API keys."}; + +```sgr cloud login-api [OPTIONS] ``` + +Log into a Splitgraph registry using existing API keys. + +This will inject the API keys for the registry into the configuration file +and generate a new access token. + +### Options + + * **`--api-key TEXT`**: + * **`--api-secret TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0004_cloud-sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0004_cloud-sql.mdx new file mode 100644 index 00000000..56c4be0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0004_cloud-sql.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "cloud-sql", title: "sgr cloud sql", sidebarTitle: "cloud sql", description: "Run SQL on or connect to the Splitgraph Data Delivery Network."}; + +```sgr cloud sql [OPTIONS] [QUERY]``` + +Run SQL on or connect to the Splitgraph Data Delivery Network. + +If a query isn't passed, this will return a libpq-compatible connection string to +the registry's SQL endpoint. It can be used to connect to the endpoint with other SQL clients: + +``` +pgcli $(sgr cloud sql) +``` + +If a query is passed, this will run an SQL query against the SQL endpoint. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0005_cloud-curl.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0005_cloud-curl.mdx new file mode 100644 index 00000000..e902965b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0005_cloud-curl.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "cloud-curl", title: "sgr cloud curl", sidebarTitle: "cloud curl", description: "Query a Splitgraph REST API."}; + +```sgr cloud curl [OPTIONS] IMAGE [REQUEST_PARAMS]``` + +Query a Splitgraph REST API. + +This is a thin wrapper around curl that performs an HTTP request to Splitgraph Cloud to +interact with a dataset using PostgREST (http://postgrest.org) or the Splitfile execution service. + +The actual invocation is: + +``` +curl [API endpoint][request] -H [access_token] [extra curl args]. +``` + +The image must be of the form `namespace/repository:[hash_or_tag (default latest)]`. + +The actual request parameters depend on the request type: + + * For PostgREST: `/table?[postgrest request]` or empty to get the OpenAPI spec for this image. + For a reference on how to perform Postgrest requests, see http://postgrest.org/en/latest/api.html. + * For the Splitfile executor: a JSON array to be POSTed to the executor, e.g. + `'{"command": "FROM some/repo IMPORT some_table AS alias", "tag": "new_tag"}'`. + +`--curl-args` allows to pass extra arguments to curl. Note that every argument must be prefixed +with `--curl-args`, e.g. `--curl-args --cacert --curl-args /path/to/ca.pem`. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-t, --request-type [postgrest|splitfile]`**: + * **`-c, --curl-args TEXT`**: Extra arguments to be passed to curl diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0006_cloud-readme.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0006_cloud-readme.mdx new file mode 100644 index 00000000..4ee4cf56 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0006_cloud-readme.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-readme", title: "sgr cloud readme", sidebarTitle: "cloud readme", description: "Upload a README to a Splitgraph repository."}; + +```sgr cloud readme [OPTIONS] REPOSITORY README``` + +Upload a README to a Splitgraph repository. + +The repository must have already been pushed. The README must be a file in Markdown format. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0007_cloud-description.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0007_cloud-description.mdx new file mode 100644 index 00000000..003c953f --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0007_cloud-description.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-description", title: "sgr cloud description", sidebarTitle: "cloud description", description: "Upload a description to a Splitgraph repository."}; + +```sgr cloud description [OPTIONS] REPOSITORY DESCRIPTION``` + +Upload a description to a Splitgraph repository. + +The repository must have already been pushed. The description should be plain text, 160 characters or shorter. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0008_cloud-metadata.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0008_cloud-metadata.mdx new file mode 100644 index 00000000..01b2f064 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0008_cloud-metadata.mdx @@ -0,0 +1,41 @@ +export const meta = {id: "cloud-metadata", title: "sgr cloud metadata", sidebarTitle: "cloud metadata", description: "Upload a metadata file to a Splitgraph repository."}; + +```sgr cloud metadata [OPTIONS] REPOSITORY [METADATA_FILE]``` + +Upload a metadata file to a Splitgraph repository. + +This can manipulate the repository's short description, README, topics, license, sources and extra metadata. + +The metadata file must be a YAML file. Omitting a key doesn't delete the value. + +For example: + + +``` +readme: dataset-readme.md +description: Dataset description (160 characters max). +topics: + - topic_1 + - topic_2 +sources: + - anchor: Source + href: https://www.splitgraph.com + isCreator: true + isSameAs: false + - anchor: Source 2 + href: https://www.splitgraph.com + isCreator: false + isSameAs: true +license: Public Domain +extra_metadata: + key_1: + key_1_1: value_1_1 + key_1_2: value_1_2 + key_2: + key_2_1: value_2_1 + key_2_2: value_2_2 +``` + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0009_cloud-search.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0009_cloud-search.mdx new file mode 100644 index 00000000..c23c31f4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0009_cloud-search.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "cloud-search", title: "sgr cloud search", sidebarTitle: "cloud search", description: "Search for a repository on the Splitgraph registry."}; + +```sgr cloud search [OPTIONS] QUERY``` + +Search for a repository on the Splitgraph registry. + +For more advanced search, including filtering by topics, go to the registry's website itself. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--limit INTEGER RANGE`**: Number of results to return diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0010_cloud-dump.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0010_cloud-dump.mdx new file mode 100644 index 00000000..8441621e --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0010_cloud-dump.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "cloud-dump", title: "sgr cloud dump", sidebarTitle: "cloud dump", description: "Dump a Splitgraph catalog to a YAML file."}; + +```sgr cloud dump [OPTIONS] [LIMIT_REPOSITORIES]...``` + +Dump a Splitgraph catalog to a YAML file. + +This creates a repositories.yml file in the target directory as well as a subdirectory `readmes` +with all the repository readmes. This file can be used to recreate all catalog metadata +and all external data source settings for a repository using `sgr cloud load`. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--readme-dir TEXT`**: Directory to dump the data into + * **`-f, --repositories-file FILENAME`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0011_cloud-load.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0011_cloud-load.mdx new file mode 100644 index 00000000..123bbb43 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0011_cloud-load.mdx @@ -0,0 +1,67 @@ +export const meta = {id: "cloud-load", title: "sgr cloud load", sidebarTitle: "cloud load", description: "Load a Splitgraph catalog from a YAML file."}; + +```sgr cloud load [OPTIONS] [LIMIT_REPOSITORIES]...``` + +Load a Splitgraph catalog from a YAML file. + +This will load a repositories.yml file and the `readmes` subdirectory produced by +`sgr cloud dump` back into a remote Splitgraph catalog. + +The format is an extension of the format accepted by `sgr cloud metadata` to include multiple +repositories. README files are read from the `readmes` subdirectory. + + +``` +credentials: # Optional credentials to access remote data sources + my_bucket: + plugin: csv + data: + s3_access_key: ... + s3_secret_key: ... +repositories: +- namespace: my_username + repository: repository + metadata: + readme: dataset-readme.md + description: Dataset description (160 characters max). + topics: + - topic_1 + - topic_2 + sources: + - anchor: Source + href: https://www.splitgraph.com + isCreator: true + isSameAs: false + - anchor: Source 2 + href: https://www.splitgraph.com + isCreator: false + isSameAs: true + license: Public Domain + extra_metadata: + key_1: + key_1_1: value_1_1 + key_1_2: value_1_2 + key_2: + key_2_1: value_2_1 + key_2_2: value_2_2 + external: + credential: my_bucket + plugin: csv + params: + s3_bucket: my_bucket + tables: + table_1: + schema: + - name: column_1 + type: text + - name: column_2 + type: integer + options: + s3_object: some/s3_key.csv +``` + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--readme-dir TEXT`**: Path to the directory with the README files + * **`-f, --repositories-file FILENAME`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0012_cloud-token.mdx b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0012_cloud-token.mdx new file mode 100644 index 00000000..5cea68fa --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/0012_cloud-token.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "cloud-token", title: "sgr cloud token", sidebarTitle: "cloud token", description: "Output an up-to-date access token for a remote."}; + +```sgr cloud token [OPTIONS] ``` + +Output an up-to-date access token for a remote. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/metadata.json new file mode 100644 index 00000000..25ba655e --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/0007_splitgraph-cloud/metadata.json @@ -0,0 +1 @@ +{"title": "Splitgraph Cloud"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.15/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.15/metadata.json new file mode 100644 index 00000000..bd9ebda0 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.15/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.15", + "updated_at": "2022-01-20T00:00:43.800Z", + "release": { + "id": 46757318, + "tag_name": "v0.2.15", + "target_commitish": "443e9cf2d61db94fcb0dec8d674c2f79c58e01e5", + "created_at": "2021-07-26T09:25:14Z", + "published_at": "2021-07-26T09:58:34Z", + "assets": [ + { + "id": 41030652, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/41030652", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-07-26T09:56:59Z", + "updated_at": "2021-07-26T09:57:00Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.15/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0000_checkout.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0000_checkout.mdx new file mode 100644 index 00000000..cc805a26 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0000_checkout.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "checkout", title: "sgr checkout", sidebarTitle: "checkout", description: "Check out a Splitgraph image into a Postgres schema."}; + +```sgr checkout [OPTIONS] IMAGE_SPEC``` + +Check out a Splitgraph image into a Postgres schema. + +This downloads the required physical objects and materializes all tables, unless ``-l`` or ``--layered`` is passed, +in which case the objects are downloaded and a foreign data wrapper is set up on the engine to satisfy read-only +queries by combining results from each table's fragments. + +Tables checked out in this way are still presented as normal Postgres tables and can queried in the same way. +Since the tables aren't materialized, layered querying is faster to set up, but since each query now results in a +subquery to each object comprising the table, actual query execution is slower than to materialized Postgres tables. + +Layered querying is only supported for read-only queries. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. Note that currently, the schema that the +image is checked out into has to have the same name as the repository. If no image hash or tag is passed, +"HEAD" is assumed. + +If ``-u`` or ``--uncheckout`` is passed, this instead deletes the checked out schema (assuming there are no pending +changes) and removes the HEAD pointer. + +If ``--force`` isn't passed and the schema has pending changes, this will fail. + +### Options + + * **`-f, --force`**: Discard all pending changes to the schema + * **`-u, --uncheckout`**: Delete the checked out copy instead + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0001_commit.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0001_commit.mdx new file mode 100644 index 00000000..9a2ec1f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0001_commit.mdx @@ -0,0 +1,59 @@ +export const meta = {id: "commit", title: "sgr commit", sidebarTitle: "commit", description: "Commit changes to a checked-out Splitgraph repository."}; + +```sgr commit [OPTIONS] REPOSITORY``` + +Commit changes to a checked-out Splitgraph repository. + +This packages up all changes into a new image. Where a table hasn't been created or had its schema changed, +this will delta compress the changes. For all other tables (or if ``-s`` has been passed), this will +store them as full table snapshots. + +When a table is stored as a full snapshot, `--chunk-size` sets the maximum size, in rows, of the fragments +that the table will be split into (default is no splitting). The splitting is done by the +table's primary key. + +If `--split-changesets` is passed, delta-compressed changes will also be split up according to the original +table chunk boundaries. For example, if there's a change to the first and the 20000th row of a table that was +originally committed with `--chunk-size=10000`, this will create 2 fragments: one based on the first chunk +and one on the second chunk of the table. + +If `--chunk-sort-keys` is passed, data inside the chunk is sorted by this key (or multiple keys). +This helps speed up queries on those keys for storage layers than can leverage that (e.g. CStore). The expected format is JSON, e.g. `{table_1: [col_1, col_2]}` + +`--index-options` expects a JSON-serialized dictionary of `{table: index_type: column: index_specific_kwargs}`. +Indexes are used to narrow down the amount of chunks to scan through when running a query. By default, each column +has a range index (minimum and maximum values) and it's possible to add bloom filtering to speed up queries that +involve equalities. + +Bloom filtering allows to trade off between the space overhead of the index and the probability of a false +positive (claiming that an object contains a record when it actually doesn't, leading to extra scans). + +An example `index-options` dictionary: + + +``` +{ + "table": { + "bloom": { + "column_1": { + "probability": 0.01, # Only one of probability + "size": 10000 # or size can be specified. + } + }, + # Only compute the range index on these columns. By default, + # it's computed on all columns and is always computed on the + # primary key no matter what. + "range": ["column_2", "column_3"] + } +} +``` + +### Options + + * **`-s, --snap`**: Do not delta compress the changes and instead store the whole table again. This consumes more space, but makes checkouts faster. + * **`-c, --chunk-size INTEGER`**: Split new tables into chunks of this many rows (by primary key). The default value is governed by the SG_COMMIT_CHUNK_SIZE configuration parameter. + * **`-k, --chunk-sort-keys JSON`**: Sort the data inside each chunk by this/these key(s) + * **`-t, --split-changesets`**: Split changesets for existing tables across original chunk boundaries. + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate on the new objects. + * **`-m, --message TEXT`**: Optional commit message + * **`-o, --overwrite`**: Overwrite physical objects that already exist diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0002_tag.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0002_tag.mdx new file mode 100644 index 00000000..89f01837 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0002_tag.mdx @@ -0,0 +1,36 @@ +export const meta = {id: "tag", title: "sgr tag", sidebarTitle: "tag", description: "Manage tags on images."}; + +```sgr tag [OPTIONS] IMAGE_SPEC [TAG]``` + +Manage tags on images. + +Depending on the exact invocation, this command can tag a Splitgraph image, +list all tags in a repository or delete a tag. + +### Examples + +``sgr tag noaa/climate`` + +List all tagged images in the ``noaa/climate`` repository and their tags. + +``sgr tag noaa/climate:abcdef1234567890`` + +List all tags assigned to the image ``noaa/climate:abcdef1234567890...`` + +``sgr tag noaa/climate:abcdef1234567890 my_new_tag`` + +Tag the image ``noaa/climate:abcdef1234567890...`` with ``my_new_tag``. If the tag already exists, this will +overwrite the tag. + +``sgr tag noaa/climate my_new_tag`` + +Tag the current ``HEAD`` of ``noaa/climate`` with ``my_new_tag``. + +``sgr tag --delete noaa/climate:my_new_tag`` + +Delete the tag ``my_new_tag`` from ``noaa/climate``. + +### Options + + * **`-d, --delete`**: Delete the tag instead. + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0003_import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0003_import.mdx new file mode 100644 index 00000000..b69bbfb4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0003_import.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "import", title: "sgr import", sidebarTitle: "import", description: "Import tables into a Splitgraph repository."}; + +```sgr import [OPTIONS] IMAGE_SPEC TABLE_OR_QUERY TARGET_REPOSITORY [TARGET_TABLE]``` + +Import tables into a Splitgraph repository. + +Imports a table or a result of a query from a local Splitgraph repository or a Postgres schema into another +Splitgraph repository. + +### Examples + +``sgr import noaa/climate:my_tag climate_data my/repository`` + +Create a new image in ``my/repository`` with the ``climate_data`` table included. This links the new image to +the physical object, meaning that the history of the ``climate_data`` table is preserved. + +If no tag is specified, the 'latest' (not the HEAD image or current state of the checked out image) +image is used. + +``sgr import noaa/climate:my_tag "SELECT * FROM climate_data" my/repository climate_data`` + +Create a new image in ``my/repository`` with the result of the query stored in the ``climate_data`` table. This +creates a new physical object without any linkage to the original data, so the history of the ``climate_data`` +table isn't preserved. The SQL query can interact with multiple tables in the source image. + +``sgr import other_schema other_table my/repository`` + +Since other_schema isn't a Splitgraph repository, this will copy ``other_schema.other_table`` +into a new Splitgraph object and add the ``other_table`` table to a new image in ``my/repository``. + +Note that importing doesn't discard or commit pending changes in the target Splitgraph repository: a new image +is created with the new table added, the new table is materialized in the repository and the HEAD pointer is moved. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0004_reindex.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0004_reindex.mdx new file mode 100644 index 00000000..b640ffe3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/0004_reindex.mdx @@ -0,0 +1,19 @@ +export const meta = {id: "reindex", title: "sgr reindex", sidebarTitle: "reindex", description: "Run extra indexes on a table."}; + +```sgr reindex [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Run extra indexes on a table. This will merge the indexing results for all objects +that a table is formed from with the current object indexes. For explanation of +what indexes do, see the documentation for `sgr commit`. + +If the objects haven't been downloaded yet, this will download them. + +Currently reindexing objects that change other objects is unsupported and will raise +an error. Pass `-o` to ignore these objects and only reindex supported objects. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate, e.g. '{"bloom": {"column_1": {"probability": 0.01}}}' [required] + * **`-o, --ignore-patch-objects`**: Ignore objects that change other objects' rows instead of raising an error diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/metadata.json new file mode 100644 index 00000000..9ef75b16 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0000_image-management-creation/metadata.json @@ -0,0 +1 @@ +{"title": "Image management/creation"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0000_log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0000_log.mdx new file mode 100644 index 00000000..db5078b4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0000_log.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "log", title: "sgr log", sidebarTitle: "log", description: "Show the history of a Splitgraph repository/image."}; + +```sgr log [OPTIONS] IMAGE_SPEC``` + +Show the history of a Splitgraph repository/image. + +By default, this shows the history of the current branch, starting from the HEAD pointer and following its +parent chain. + +Alternatively, it can follow the parent chain of any other image. + +If ``-t`` or ``--tree`` is passed, this instead renders the full image tree. The repository doesn't need to have +been checked out in this case. + +### Options + + * **`-t, --tree`**: + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0001_diff.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0001_diff.mdx new file mode 100644 index 00000000..8ef569e8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0001_diff.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "diff", title: "sgr diff", sidebarTitle: "diff", description: "Show differences between two Splitgraph images."}; + +```sgr diff [OPTIONS] REPOSITORY [TAG_OR_HASH_1] [TAG_OR_HASH_2]``` + +Show differences between two Splitgraph images. + +The two images must be in the same repository. The actual targets of this command depend +on the number of arguments passed: + +``sgr diff REPOSITORY`` + +Return the differences between the current HEAD image and the checked out schema. + +``sgr diff REPOSITORY TAG_OR_HASH`` + +Return the differences between the image and its parent. + +``sgr diff REPOSITORY TAG_OR_HASH_1 TAG_OR_HASH_2`` + +Return the differences from the first (earlier) image to the second image. + +### Options + + * **`-v, --verbose`**: Include the actual differences rather than just the total number of updated rows. + * **`-t, --table-name TEXT`**: Show the differences for a single table. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0002_object.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0002_object.mdx new file mode 100644 index 00000000..ff8c38a9 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0002_object.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "object", title: "sgr object", sidebarTitle: "object", description: "Show information about a Splitgraph object."}; + +```sgr object [OPTIONS] OBJECT_ID``` + +Show information about a Splitgraph object. + +Objects, or fragments, are building blocks of Splitgraph tables: each table consists of multiple immutable fragments +that can partially overwrite each other. Each fragment might have a parent that it depends on. In addition, +the smallest and largest values for every column are stored in the fragment's metadata. This information is used +to choose which objects to download in order to execute a query against a table. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0003_objects.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0003_objects.mdx new file mode 100644 index 00000000..c56fa727 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0003_objects.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "objects", title: "sgr objects", sidebarTitle: "objects", description: "List objects known to this engine."}; + +```sgr objects [OPTIONS] ``` + +List objects known to this engine. + +### Options + + * **`--local`**: Show only objects that are physically present on this engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0004_show.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0004_show.mdx new file mode 100644 index 00000000..4ddcc55d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0004_show.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "show", title: "sgr show", sidebarTitle: "show", description: "Show information about a Splitgraph image."}; + +```sgr show [OPTIONS] IMAGE_SPEC``` + +Show information about a Splitgraph image. This includes its parent, comment, size and creation time. + +Note that the size isn't the on-disk footprint, as the image might share some objects with other images +or if some of the image's objects have not been downloaded. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0005_table.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0005_table.mdx new file mode 100644 index 00000000..cc681c85 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0005_table.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "table", title: "sgr table", sidebarTitle: "table", description: "Show information about a table in a Splitgraph image."}; + +```sgr table [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Show information about a table in a Splitgraph image. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-v, --verbose`**: Show all of table's objects. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0006_sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0006_sql.mdx new file mode 100644 index 00000000..ea8a304b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0006_sql.mdx @@ -0,0 +1,34 @@ +export const meta = {id: "sql", title: "sgr sql", sidebarTitle: "sql", description: "Run an SQL statement against the Splitgraph engine."}; + +```sgr sql [OPTIONS] SQL``` + +Run an SQL statement against the Splitgraph engine. + +There are no restrictions on the contents of the statement: this is the same as running it +from any other PostgreSQL client. + +If ``--schema`` is specified, the statement is run with the ``search_path`` set to that schema. This means +that these statements are equivalent: + + +``` +sgr sql "SELECT * FROM "noaa/climate".table" +sgr sql -s noaa/climate "SELECT * FROM table" +``` + +If `--image` is specified, this will run the statement against that image using layered querying. +Only read-only statements are supported. For example: + + +``` +sgr sql -i noaa/climate:latest "SELECT * FROM table" +``` + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-s, --schema TEXT`**: Run SQL against this schema. + * **`-i, --image IMAGE`**: Run SQL against this image. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON + * **`-n, --no-transaction`**: Don't wrap the SQL in a transaction. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0007_status.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0007_status.mdx new file mode 100644 index 00000000..5e312f11 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/0007_status.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "status", title: "sgr status", sidebarTitle: "status", description: "Show the status of the Splitgraph engine."}; + +```sgr status [OPTIONS] [REPOSITORY]``` + +Show the status of the Splitgraph engine. + +If a repository is passed, show in-depth information about a repository. + +If not, show information about all repositories local to the engine. This will show a list +of all repositories, number of local images and tags, total repository size (theoretical +maximum size and current on-disk footprint of cached objects) and the current checked +out image (with LQ if the image is checked out using read-only layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/metadata.json new file mode 100644 index 00000000..a2c3f0f8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0001_image-information/metadata.json @@ -0,0 +1 @@ +{"title": "Image information"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0000_engine-add.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0000_engine-add.mdx new file mode 100644 index 00000000..c0b69417 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0000_engine-add.mdx @@ -0,0 +1,26 @@ +export const meta = {id: "engine-add", title: "sgr engine add", sidebarTitle: "engine add", description: "Create and start a Splitgraph engine."}; + +```sgr engine add [OPTIONS] [NAME]``` + +Create and start a Splitgraph engine. + +This will pull the Splitgraph engine image, start it, create a Postgres user and initialize +the engine. + +This also creates Docker volumes required to persist data/metadata. + +The engine Docker container by default will be named `splitgraph_engine_default` and +its data and metadata volumes will have names `splitgraph_engine_default_data` and +`splitgraph_engine_default_metadata`. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`-p, --port INTEGER`**: Port to start the engine on + * **`-u, --username TEXT`**: + * **`--no-init`**: Don't run `sgr init` on the engine + * **`--no-sgconfig`**: Don't add the engine to .sgconfig + * **`--inject-source`**: Inject the current Splitgraph source code into the engine using Docker bind mounts + * **`--no-pull`**: Don't pull the Docker image + * **`--set-default`**: Set the engine as the default engine in the config regardless of its name + * **`--password TEXT`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0001_engine-delete.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0001_engine-delete.mdx new file mode 100644 index 00000000..6229e082 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0001_engine-delete.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "engine-delete", title: "sgr engine delete", sidebarTitle: "engine delete", description: "Delete the Splitgraph engine container."}; + +```sgr engine delete [OPTIONS] [NAME]``` + +Delete the Splitgraph engine container. + +### Options + + * **`-y, --yes`**: Do not prompt for confirmation. + * **`-f, --force`**: Delete the engine anyway if it's running. + * **`-v, --with-volumes`**: Include the engine's volumes (if not specified, volumes will be reattached when an engine with the same name is created). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0002_engine-list.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0002_engine-list.mdx new file mode 100644 index 00000000..a2530db2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0002_engine-list.mdx @@ -0,0 +1,13 @@ +export const meta = {id: "engine-list", title: "sgr engine list", sidebarTitle: "engine list", description: "List Splitgraph engines."}; + +```sgr engine list [OPTIONS] ``` + +List Splitgraph engines. + +This only lists Docker containers that were created by sgr engine +(whose names start with `splitgraph_engine_`. To manage other engines, +use Docker CLI directly. + +### Options + + * **`-a, --include-all`**: Include stopped engine containers. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0003_engine-start.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0003_engine-start.mdx new file mode 100644 index 00000000..4c9cdf6c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0003_engine-start.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-start", title: "sgr engine start", sidebarTitle: "engine start", description: "Start a Splitgraph engine."}; + +```sgr engine start [OPTIONS] [NAME]``` + +Start a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0004_engine-stop.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0004_engine-stop.mdx new file mode 100644 index 00000000..7ea64786 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0004_engine-stop.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-stop", title: "sgr engine stop", sidebarTitle: "engine stop", description: "Stop a Splitgraph engine."}; + +```sgr engine stop [OPTIONS] [NAME]``` + +Stop a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0005_engine-upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0005_engine-upgrade.mdx new file mode 100644 index 00000000..751cd998 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0005_engine-upgrade.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "engine-upgrade", title: "sgr engine upgrade", sidebarTitle: "engine upgrade", description: "Upgrade a Splitgraph engine."}; + +```sgr engine upgrade [OPTIONS] [NAME]``` + +Upgrade a Splitgraph engine. + +This consists of shutting down the current Splitgraph engine, +deleting its Docker container (keeping the actual data and +metadata volumes intact), creating a container based on a newer +image and finally reinitializing the engine to perform needed migrations. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`--no-pull`**: Don't pull the new engine image diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0006_engine-log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0006_engine-log.mdx new file mode 100644 index 00000000..58859523 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0006_engine-log.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "engine-log", title: "sgr engine log", sidebarTitle: "engine log", description: "Get logs from a Splitgraph engine."}; + +```sgr engine log [OPTIONS] [NAME]``` + +Get logs from a Splitgraph engine. + +### Options + + * **`-f, --follow`**: Stream logs diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0007_engine-configure.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0007_engine-configure.mdx new file mode 100644 index 00000000..1be8adcd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0007_engine-configure.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "engine-configure", title: "sgr engine configure", sidebarTitle: "engine configure", description: "Inject a configuration file into an engine."}; + +```sgr engine configure [OPTIONS] [NAME]``` + +Inject a configuration file into an engine. + +This copies the current .sgconfig file (pointed to by SG_CONFIG_FILE) into +the engine container, making it use that configuration for +when it's queried through an application other than the sgr client +(layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0008_engine-version.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0008_engine-version.mdx new file mode 100644 index 00000000..d47bfe05 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/0008_engine-version.mdx @@ -0,0 +1,5 @@ +export const meta = {id: "engine-version", title: "sgr engine version", sidebarTitle: "engine version", description: "Get version of Splitgraph engine."}; + +```sgr engine version [OPTIONS] [NAME]``` + +Get version of Splitgraph engine. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/metadata.json new file mode 100644 index 00000000..3f70a9d2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0002_engine-management/metadata.json @@ -0,0 +1 @@ +{"title": "Engine management"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/0000_csv-export.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/0000_csv-export.mdx new file mode 100644 index 00000000..8408f9f2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/0000_csv-export.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-export", title: "sgr csv export", sidebarTitle: "csv export", description: "Export the result of a query as CSV."}; + +```sgr csv export [OPTIONS] IMAGE_SPEC QUERY``` + +Export the result of a query as CSV. + +### Examples + +`sgr csv export noaa/climate "SELECT * FROM rainfall"` + +Output everything in the currently checked-out `"rainfall"` table as CSV. + +`sgr csv export noaa/climate:dec_2018 "SELECT * FROM rainfall WHERE state = 'AZ' -f dec_2018_az.csv` + +Check out the `dec_2018` tag of `noaa/climate` and output values from `"rainfall"` for Arizona to `dec_2018_az.csv` + +`sgr csv export --layered noaa/climate:abcdef1234567890 "SELECT * FROM rainfall JOIN other_table ON..."` + +Uses layered querying instead to execute a join on tables in a certain image (satisfying the query without +having to check the image out). + +### Options + + * **`-f, --file FILENAME`**: File name to export to, default stdout. + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/0001_csv-import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/0001_csv-import.mdx new file mode 100644 index 00000000..5f3eb655 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/0001_csv-import.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-import", title: "sgr csv import", sidebarTitle: "csv import", description: "Import a CSV file into a checked-out Splitgraph repository."}; + +```sgr csv import [OPTIONS] REPOSITORY TABLE``` + +Import a CSV file into a checked-out Splitgraph repository. This doesn't create a new image, use `sgr commit` +after the import and any adjustments (e.g. adding primary keys or converting column types) to do so. + +If the target table doesn't exist, this will create a new table. + +If the target table does exist, this will try and patch the new values in by updating rows that exist in the +current table (as per its primary key constraints) and inserting new ones. Rows existing in the current table +but missing in the CSV won't be deleted. + +If `-r` is passed, the table will instead be deleted and recreated from the CSV file if it exists. + +### Options + + * **`-f, --file FILENAME`**: File name to import data from, default stdin. + * **`-r, --replace`**: Replace the table if it already exists. + * **`-k, --primary-key TEXT`**: Use the specified column(s) as primary key(s) + * **`-t, --override-type ...`**: Explicitly set types of these columns to PG types + * **`--encoding TEXT`**: Encoding to use for the CSV file + * **`--separator TEXT`**: CSV separator to use + * **`--no-header`**: Treats the first line of the CSV as data rather than a header. + * **`--skip-schema-check`**: Skips checking that the dataframe is compatible with the target schema. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/0002_mount.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/0002_mount.mdx new file mode 100644 index 00000000..85bcb7f5 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/0002_mount.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "mount", title: "sgr mount", sidebarTitle: "mount", description: "Mount foreign databases as Postgres schemas."}; + +```sgr mount [OPTIONS] ``` + +Mount foreign databases as Postgres schemas. + +Uses the Postgres FDW interface to create a local Postgres schema with foreign tables that map +to tables in other databases. + +See a given mount handler's documentation for handler-specific parameters. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/0003_singer-target.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/0003_singer-target.mdx new file mode 100644 index 00000000..c353a781 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/0003_singer-target.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "singer-target", title: "sgr singer target", sidebarTitle: "singer target", description: "Singer target that loads data into Splitgraph images."}; + +```sgr singer target [OPTIONS] IMAGE``` + +Singer target that loads data into Splitgraph images. + +This will read data from the stdin from a Singer-compatible tap and load it into +a Splitgraph image, merging data if the image already exists. + +Image must be of the format `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]` where `HASH_OR_TAG` +is a tag of an existing image to base the image on. If the repository doesn't exist, +it will be created. + +As this target consumes data from stdin, it will flush the records into a Splitgraph image. By +default, it will only keep the image if the whole stream has been successfully consumed. To +make this target completely follow the Singer spec (if it emits state, the records have been +flushed), pass --failure=keep-both or --failure=delete-old. To delete the old image on success, +pass --delete-old. + +### Options + + * **`-d, --delete-old`**: Delete the old image at the end of ingestion + * **`-f, --failure [keep-both|delete-old|delete-new]`**: What to do in case of a failure. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/metadata.json new file mode 100644 index 00000000..d82f5068 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0003_data-import-export/metadata.json @@ -0,0 +1 @@ +{"title": "Data import/export"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0000_rm.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0000_rm.mdx new file mode 100644 index 00000000..47baf9a3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0000_rm.mdx @@ -0,0 +1,40 @@ +export const meta = {id: "rm", title: "sgr rm", sidebarTitle: "rm", description: "Delete schemas, repositories or images."}; + +```sgr rm [OPTIONS] IMAGE_SPEC``` + +Delete schemas, repositories or images. + +If the target of this command is a Postgres schema, this performs DROP SCHEMA CASCADE. + +If the target of this command is a Splitgraph repository, this deletes the repository and all of its history. + +If the target of this command is an image, this deletes the image and all of its children. + +In any case, this command will ask for confirmation of the deletion, unless ``-y`` is passed. If ``-r`` +(``--remote``), is passed, this will perform deletion on a remote Splitgraph engine (registered in the config) +instead, assuming the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Examples + +``sgr rm temporary_schema`` + +Deletes ``temporary_schema`` from the local engine. + +``sgr rm --remote data.splitgraph.com username/repo`` + +Deletes ``username/repo`` from the Splitgraph registry. + +``sgr rm -y username/repo:old_branch`` + +Deletes the image pointed to by ``old_branch`` as well as all of its children (images created by a commit based +on this image), as well as all of the tags that point to now deleted images, without asking for confirmation. +Note this will not delete images that import tables from the deleted images via Splitfiles or indeed the +physical objects containing the actual tables. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0001_init.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0001_init.mdx new file mode 100644 index 00000000..e4ab8d4d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0001_init.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "init", title: "sgr init", sidebarTitle: "init", description: "Initialize a new repository/engine."}; + +```sgr init [OPTIONS] [REPOSITORY]``` + +Initialize a new repository/engine. + +### Examples + +`sgr init` + +Initializes the current local Splitgraph engine by writing some bookkeeping information. +This is required for the rest of sgr to work. + +`sgr init --skip-object-handling` + +Initializes a Splitgraph engine without installing audit triggers or object management routines: +this is useful for engines that aren't intended to be used for image checkouts. + +``sgr init new/repo`` + +Creates a single image with the hash ``00000...`` in ``new/repo`` + +### Options + + * **`--skip-object-handling`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0002_cleanup.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0002_cleanup.mdx new file mode 100644 index 00000000..c23688a4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0002_cleanup.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "cleanup", title: "sgr cleanup", sidebarTitle: "cleanup", description: "Prune unneeded objects from the engine."}; + +```sgr cleanup [OPTIONS] ``` + +Prune unneeded objects from the engine. + +This deletes all objects from the cache that aren't required by any local repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0003_prune.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0003_prune.mdx new file mode 100644 index 00000000..64c2d49b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0003_prune.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "prune", title: "sgr prune", sidebarTitle: "prune", description: "Cleanup dangling images from a repository."}; + +```sgr prune [OPTIONS] REPOSITORY``` + +Cleanup dangling images from a repository. + +This includes images not pointed to by any tags (or checked out) and those that aren't required by any of +such images. + +Will ask for confirmation of the deletion, unless ``-y ``is passed. If ``-r`` (``--remote``) is +passed, this will perform deletion on a remote Splitgraph engine (registered in the config) instead, assuming +the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0004_config.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0004_config.mdx new file mode 100644 index 00000000..7fcaa53c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0004_config.mdx @@ -0,0 +1,33 @@ +export const meta = {id: "config", title: "sgr config", sidebarTitle: "config", description: "Print the current Splitgraph configuration."}; + +```sgr config [OPTIONS] ``` + +Print the current Splitgraph configuration. + +This takes into account the local config file, the default values +and all overrides specified via environment variables. + +This command can be used to dump the current Splitgraph configuration into a file: + +``` +sgr config --no-shielding --config-format > .sgconfig +``` + +...or save a config file overriding an entry: + +``` +SG_REPO_LOOKUP=engine1,engine2 sgr config -sc > .sgconfig +``` + +If `--conn-string` is passed, this prints out a libpq connection string +that can be used to connect to the default Splitgraph engine with other tools: + +``` +pgcli $(sgr config -n) +``` + +### Options + + * **`-s, --no-shielding`**: If set, doesn't replace sensitive values (like passwords) with asterisks + * **`-c, --config-format`**: Output configuration in the Splitgraph config file format + * **`-n, --conn-string`**: Print a libpq connection string to the engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0005_dump.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0005_dump.mdx new file mode 100644 index 00000000..111baceb --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0005_dump.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "dump", title: "sgr dump", sidebarTitle: "dump", description: "Dump a repository to SQL."}; + +```sgr dump [OPTIONS] REPOSITORY``` + +Dump a repository to SQL. + +### Options + + * **`--exclude-object-contents`**: Don't dump the commands needed to recreate objects required by the repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0006_eval.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0006_eval.mdx new file mode 100644 index 00000000..5b4b7f0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0006_eval.mdx @@ -0,0 +1,39 @@ +export const meta = {id: "eval", title: "sgr eval", sidebarTitle: "eval", description: "Evaluate a Python snippet using the Splitgraph API."}; + +```sgr eval [OPTIONS] COMMAND``` + +Evaluate a Python snippet using the Splitgraph API. + +This is for advanced users only and should be only used +if you know what you are doing. + +Normal Python statements are supported and the command is evaluated +in a namespace where the following is already imported and available: + + * Repository: class that instantiates a Splitgraph repository and makes + API functions like .commit(), .checkout() etc available. + + * engine: Current local engine + + * object_manager: an instance of ObjectManager that allows + to get information about objects and manage the object cache. + + +Example: +``` +sgr eval 'import json; print(json.dumps(Repository\ + .from_schema(repo_name)\ + .images["latest"]\ + .get_table(table_name)\ + .table_schema))' \ +-a repo_name my_repo -a table_name my_table +``` + +Will dump the schema of table my_table in the most recent image in my_repo in JSON format. + +For more information, see the Splitgraph API reference. + +### Options + + * **`--i-know-what-im-doing`**: Pass this if you're sure that the code you're running is safe and don't want to be prompted. + * **`-a, --arg ...`**: Make extra variables available in the command's namespace diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0007_upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0007_upgrade.mdx new file mode 100644 index 00000000..188e798b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/0007_upgrade.mdx @@ -0,0 +1,17 @@ +export const meta = {id: "upgrade", title: "sgr upgrade", sidebarTitle: "upgrade", description: "Upgrade sgr client and engine."}; + +```sgr upgrade [OPTIONS] [VERSION]``` + +Upgrade sgr client and engine. + +This will try to download the most recent stable binary for the current platform +into the location this binary is running from and then upgrade the default engine. + +This method is only supported for single-binary installs and engines managed +by `sgr engine`. + +### Options + + * **`--skip-engine-upgrade`**: Only upgrade the client + * **`--path TEXT`**: Override the path to download the new binary to. + * **`--force`**: Reinstall older/same versions. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/metadata.json new file mode 100644 index 00000000..26f7a103 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0004_miscellaneous/metadata.json @@ -0,0 +1 @@ +{"title": "Miscellaneous"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/0000_clone.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/0000_clone.mdx new file mode 100644 index 00000000..7c2929bd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/0000_clone.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "clone", title: "sgr clone", sidebarTitle: "clone", description: "Clone a remote Splitgraph repository/image into a local one."}; + +```sgr clone [OPTIONS] REMOTE_REPOSITORY_OR_IMAGE [LOCAL_REPOSITORY]``` + +Clone a remote Splitgraph repository/image into a local one. + +The lookup path for the repository is governed by the ``SG_REPO_LOOKUP`` and ``SG_REPO_LOOKUP_OVERRIDE`` +config parameters and can be overridden by the command line ``--remote`` option. + +### Options + + * **`-r, --remote TEXT`**: Name of the remote engine + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/0001_push.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/0001_push.mdx new file mode 100644 index 00000000..60ba1e17 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/0001_push.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "push", title: "sgr push", sidebarTitle: "push", description: "Push images the Splitgraph registry or another engine."}; + +```sgr push [OPTIONS] REPOSITORY_OR_IMAGE [REMOTE_REPOSITORY]``` + +Push images the Splitgraph registry or another engine. + +If an image is not specified (e.g. `sgr push noaa/climate`, this will push all new images. + +By default, the repository will be pushed to a repository with the same name in the user's namespace +(SG_NAMESPACE configuration value which defaults to the username). + +If there's a single engine registered in the config (e.g. data.splitgraph.com), it shall be the default +destination. + +If an upstream repository/engine has been configured for this engine with `sgr upstream`, +it will be used instead. + +Finally, if `remote_repository` or `--remote` are passed, they will take precedence. + +The actual objects will be uploaded to S3 using Minio. When pushing to another engine, +you can choose to upload them directly by passing `--handler DB`. + +### Options + + * **`-r, --remote []`**: Name of the remote engine + * **`-h, --upload-handler TEXT`**: Upload handler + * **`-o, --upload-handler-options JSON`**: Upload handler parameters + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing remote objects + * **`-t, --tags`**: Overwrite tags for pushed image/repo + * **`-u, --reupload-objects`**: Reupload objects that metadata is pushed out for diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/0002_pull.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/0002_pull.mdx new file mode 100644 index 00000000..d1b631d1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/0002_pull.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "pull", title: "sgr pull", sidebarTitle: "pull", description: "Pull changes / download a single image."}; + +```sgr pull [OPTIONS] REPOSITORY_OR_IMAGE``` + +Pull changes / download a single image. + +### Options + + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/0003_upstream.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/0003_upstream.mdx new file mode 100644 index 00000000..32f1d6ec --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/0003_upstream.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "upstream", title: "sgr upstream", sidebarTitle: "upstream", description: "Get or set the upstream for a repository."}; + +```sgr upstream [OPTIONS] REPOSITORY``` + +Get or set the upstream for a repository. + +This shows the default repository used for pushes and pulls as well as allows to change it to a different +remote engine and repository. + +The remote engine alias must exist in the config file. + +### Examples + +``sgr upstream my/repo --set splitgraph.com username/repo`` + +Sets the upstream for ``my/repo`` to ``username/repo`` existing on the ``splitgraph.com`` engine + +``sgr upstream my/repo --reset`` + +Removes the upstream for ``my/repo``. + +``sgr upstream my/repo`` + +Shows the current upstream for ``my/repo``. + +### Options + + * **`-s, --set ...`**: Set the upstream to a engine alias + repository + * **`-r, --reset`**: Delete the upstream diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/metadata.json new file mode 100644 index 00000000..b2c1ab8d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0005_sharing-images/metadata.json @@ -0,0 +1 @@ +{"title": "Sharing images"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/0000_build.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/0000_build.mdx new file mode 100644 index 00000000..2204aae2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/0000_build.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "build", title: "sgr build", sidebarTitle: "build", description: "Build Splitgraph images."}; + +```sgr build [OPTIONS] SPLITFILE``` + +Build Splitgraph images. + +This executes a Splitfile, building a new image or checking it out from cache if the same +image had already been built. + +### Examples + +``sgr build my.splitfile`` + +Executes ``my.splitfile`` and writes its output into a new repository with the same name +as the Splitfile (my) unless the name is specified in the Splitfile. + +``sgr build my.splitfile -o mynew/repo`` + +Executes ``my.splitfile`` and writes its output into ``mynew/repo``. + +``sgr build my_other.splitfile -o mynew/otherrepo --args PARAM1 VAL1 --args PARAM2 VAL2`` + +Executes ``my_other.splitfile`` with parameters ``PARAM1`` and ``PARAM2`` set to +``VAL1`` and ``VAL2``, respectively. + +### Options + + * **`-a, --args ...`**: Parameters to be substituted into the Splitfile. All parameters mentioned in the file must be specified in order for the Splitfile to be executed. + * **`-o, --output-repository REPOSITORY`**: Repository to store the result in. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/0001_rebuild.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/0001_rebuild.mdx new file mode 100644 index 00000000..8194b0f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/0001_rebuild.mdx @@ -0,0 +1,27 @@ +export const meta = {id: "rebuild", title: "sgr rebuild", sidebarTitle: "rebuild", description: "Rebuild images against different dependencies."}; + +```sgr rebuild [OPTIONS] IMAGE_SPEC``` + +Rebuild images against different dependencies. + +Examines the provenance of a Splitgraph image created by a Splitfile and reruns it against different images than +the ones that were imported by the original run. + +### Examples + +``sgr rebuild my/repo --against noaa/climate:old_data`` + +Reconstructs the Splitfile used to create ``my/repo:latest``, replaces all imports from ``noaa/climate`` with +imports from ``noaa/climate:old_data`` and reruns the Splitfile. + +``sgr rebuild my/repo:other_tag -u`` + +Rebuilds ``my_repo:other_tag`` against the latest versions of all of its dependencies. + +Image caching still works in this case: if the result of the rebuild already exists, the image will be checked +out. + +### Options + + * **`-u, --update`**: Rederive the image against the latest version of all dependencies. + * **`-a, --against IMAGE`**: Images to substitute into the reconstructed Splitfile, of the form [NAMESPACE/]REPOSITORY[:HASH_OR_TAG]. Default tag is 'latest'. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/0002_provenance.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/0002_provenance.mdx new file mode 100644 index 00000000..45d3a5a8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/0002_provenance.mdx @@ -0,0 +1,62 @@ +export const meta = {id: "provenance", title: "sgr provenance", sidebarTitle: "provenance", description: "Reconstruct the provenance of an image."}; + +```sgr provenance [OPTIONS] IMAGE_SPEC``` + +Reconstruct the provenance of an image. + +This inspects the image to produce a list of images that were used by the Splitfile +that created it, or a Splitfile with the same effect. + +`IMAGE_SPEC` must be of the form `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]`. +If no tag is specified, `latest` is used. + +### Examples + +Assume `my/repo` is produced by the following Splitfile: + +``` +FROM MOUNT [...] IMPORT external_table +FROM noaa/climate IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} AS rainfall_data +``` + +`my/repo` will have 2 images: one having `hash_1` (with the `external_table` imported from a mounted database) +and one having `hash_2` (with both `external_table` and the `rainfall_data` containing the result +of the query run against the then-latest image in the `noaa/climate` repository). + +In this case: + +``` +sgr provenance my/repo +``` + +Returns a list of repositories and images that were imported by the Splitfile that constructed this image:: + +``` +my/repo:[hash_2] depends on: +noaa/climate:[hash_3] +``` + +Where `hash_3` is the hash of the latest image in the `noaa/climate` repository at the time the original +Splitfile was run. However: + +``` +sgr provenance -f my/repo +``` + +Will try to reconstruct the Splitfile that can be used to build this image. Since the FROM MOUNT command isn't +reproducible (requires access to the original external database, which is a moving target), this will fail. + +If `-e` is passed, this will emit information about irreproducible commands instead of failing. + +``` +sgr provenance -ef my/repo + +# Splitfile commands used to reconstruct my/repo:[image_hash] +# Irreproducible Splitfile command of type MOUNT +FROM noaa/climate:[hash_3] IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} +``` + +### Options + + * **`-f, --full`**: Recreate the Splitfile used to create this image + * **`-e, --ignore-errors`**: If set, ignore commands that aren't reproducible (like MOUNT or custom commands) diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/0003_dependents.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/0003_dependents.mdx new file mode 100644 index 00000000..fc8bc234 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/0003_dependents.mdx @@ -0,0 +1,21 @@ +export const meta = {id: "dependents", title: "sgr dependents", sidebarTitle: "dependents", description: "List images that were created from an image."}; + +```sgr dependents [OPTIONS] IMAGE_SPEC``` + +List images that were created from an image. + +This is the inverse of the sgr provenance command. It will list all images that were +created using a Splitfile that imported data from this image. + +By default, this will look at images on the local engine. The engine can be overridden +with --source-on and --dependents-on. For example: + + sgr dependents --source-on data.splitgraph.com --dependents-on LOCAL noaa/climate:latest + +will show all images on the local engine that derived data from `noaa/climate:latest` +on the Splitgraph registry. + +### Options + + * **`-O, --source-on TEXT`**: Override the engine to look the source up on + * **`-o, --dependents-on TEXT`**: Override the engine to list dependents from diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/metadata.json new file mode 100644 index 00000000..50afd08a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0006_splitfile-execution/metadata.json @@ -0,0 +1 @@ +{"title": "Splitfile execution"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0000_cloud-add.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0000_cloud-add.mdx new file mode 100644 index 00000000..9eba1036 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0000_cloud-add.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "cloud-add", title: "sgr cloud add", sidebarTitle: "cloud add", description: "Add a remote Splitgraph registry to .sgconfig with default parameters"}; + +```sgr cloud add [OPTIONS] DOMAIN_NAME``` + +Add a remote Splitgraph registry to .sgconfig with default parameters + +### Options + + * **`--remote TEXT`**: Name for the remote (infer from the domain name by default) + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0001_cloud-register.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0001_cloud-register.mdx new file mode 100644 index 00000000..089ce0c6 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0001_cloud-register.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "cloud-register", title: "sgr cloud register", sidebarTitle: "cloud register", description: "Register the user on a Splitgraph registry."}; + +```sgr cloud register [OPTIONS] ``` + +Register the user on a Splitgraph registry. + +By default, this registers the user on data.splitgraph.com, +obtains a set of machine (API) credentials for the client to communicate +with the registry and configures the data.splitgraph.com engine. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--email TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to register on. + * **`--accept-tos`**: Accept the registry's Terms of Service + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0002_cloud-login.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0002_cloud-login.mdx new file mode 100644 index 00000000..cb99d6c1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0002_cloud-login.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "cloud-login", title: "sgr cloud login", sidebarTitle: "cloud login", description: "Log into a Splitgraph registry with username/password."}; + +```sgr cloud login [OPTIONS] ``` + +Log into a Splitgraph registry with username/password. + +This will generate a new refresh token (to use the Splitgraph query API) +and API keys to let sgr access the registry (if they don't already exist +in the configuration file or if the actual username has changed). + +Note that if you already have generated an API key pair but it's not +in the configuration file, this will generate a new pair instead of +restoring the existing one, as the API secret is only stored in the configuration file. + +If you want to log in using an existing API key pair, use `sgr cloud login-api` instead. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`--overwrite`**: Overwrite old API keys in the config if they exist + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0003_cloud-login-api.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0003_cloud-login-api.mdx new file mode 100644 index 00000000..4007fe22 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0003_cloud-login-api.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "cloud-login-api", title: "sgr cloud login-api", sidebarTitle: "cloud login-api", description: "Log into a Splitgraph registry using existing API keys."}; + +```sgr cloud login-api [OPTIONS] ``` + +Log into a Splitgraph registry using existing API keys. + +This will inject the API keys for the registry into the configuration file +and generate a new access token. + +### Options + + * **`--api-key TEXT`**: + * **`--api-secret TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0004_cloud-sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0004_cloud-sql.mdx new file mode 100644 index 00000000..56c4be0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0004_cloud-sql.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "cloud-sql", title: "sgr cloud sql", sidebarTitle: "cloud sql", description: "Run SQL on or connect to the Splitgraph Data Delivery Network."}; + +```sgr cloud sql [OPTIONS] [QUERY]``` + +Run SQL on or connect to the Splitgraph Data Delivery Network. + +If a query isn't passed, this will return a libpq-compatible connection string to +the registry's SQL endpoint. It can be used to connect to the endpoint with other SQL clients: + +``` +pgcli $(sgr cloud sql) +``` + +If a query is passed, this will run an SQL query against the SQL endpoint. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0005_cloud-curl.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0005_cloud-curl.mdx new file mode 100644 index 00000000..e902965b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0005_cloud-curl.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "cloud-curl", title: "sgr cloud curl", sidebarTitle: "cloud curl", description: "Query a Splitgraph REST API."}; + +```sgr cloud curl [OPTIONS] IMAGE [REQUEST_PARAMS]``` + +Query a Splitgraph REST API. + +This is a thin wrapper around curl that performs an HTTP request to Splitgraph Cloud to +interact with a dataset using PostgREST (http://postgrest.org) or the Splitfile execution service. + +The actual invocation is: + +``` +curl [API endpoint][request] -H [access_token] [extra curl args]. +``` + +The image must be of the form `namespace/repository:[hash_or_tag (default latest)]`. + +The actual request parameters depend on the request type: + + * For PostgREST: `/table?[postgrest request]` or empty to get the OpenAPI spec for this image. + For a reference on how to perform Postgrest requests, see http://postgrest.org/en/latest/api.html. + * For the Splitfile executor: a JSON array to be POSTed to the executor, e.g. + `'{"command": "FROM some/repo IMPORT some_table AS alias", "tag": "new_tag"}'`. + +`--curl-args` allows to pass extra arguments to curl. Note that every argument must be prefixed +with `--curl-args`, e.g. `--curl-args --cacert --curl-args /path/to/ca.pem`. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-t, --request-type [postgrest|splitfile]`**: + * **`-c, --curl-args TEXT`**: Extra arguments to be passed to curl diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0006_cloud-readme.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0006_cloud-readme.mdx new file mode 100644 index 00000000..4ee4cf56 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0006_cloud-readme.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-readme", title: "sgr cloud readme", sidebarTitle: "cloud readme", description: "Upload a README to a Splitgraph repository."}; + +```sgr cloud readme [OPTIONS] REPOSITORY README``` + +Upload a README to a Splitgraph repository. + +The repository must have already been pushed. The README must be a file in Markdown format. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0007_cloud-description.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0007_cloud-description.mdx new file mode 100644 index 00000000..003c953f --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0007_cloud-description.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-description", title: "sgr cloud description", sidebarTitle: "cloud description", description: "Upload a description to a Splitgraph repository."}; + +```sgr cloud description [OPTIONS] REPOSITORY DESCRIPTION``` + +Upload a description to a Splitgraph repository. + +The repository must have already been pushed. The description should be plain text, 160 characters or shorter. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0008_cloud-metadata.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0008_cloud-metadata.mdx new file mode 100644 index 00000000..01b2f064 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0008_cloud-metadata.mdx @@ -0,0 +1,41 @@ +export const meta = {id: "cloud-metadata", title: "sgr cloud metadata", sidebarTitle: "cloud metadata", description: "Upload a metadata file to a Splitgraph repository."}; + +```sgr cloud metadata [OPTIONS] REPOSITORY [METADATA_FILE]``` + +Upload a metadata file to a Splitgraph repository. + +This can manipulate the repository's short description, README, topics, license, sources and extra metadata. + +The metadata file must be a YAML file. Omitting a key doesn't delete the value. + +For example: + + +``` +readme: dataset-readme.md +description: Dataset description (160 characters max). +topics: + - topic_1 + - topic_2 +sources: + - anchor: Source + href: https://www.splitgraph.com + isCreator: true + isSameAs: false + - anchor: Source 2 + href: https://www.splitgraph.com + isCreator: false + isSameAs: true +license: Public Domain +extra_metadata: + key_1: + key_1_1: value_1_1 + key_1_2: value_1_2 + key_2: + key_2_1: value_2_1 + key_2_2: value_2_2 +``` + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0009_cloud-search.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0009_cloud-search.mdx new file mode 100644 index 00000000..c23c31f4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0009_cloud-search.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "cloud-search", title: "sgr cloud search", sidebarTitle: "cloud search", description: "Search for a repository on the Splitgraph registry."}; + +```sgr cloud search [OPTIONS] QUERY``` + +Search for a repository on the Splitgraph registry. + +For more advanced search, including filtering by topics, go to the registry's website itself. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--limit INTEGER RANGE`**: Number of results to return diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0010_cloud-dump.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0010_cloud-dump.mdx new file mode 100644 index 00000000..8441621e --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0010_cloud-dump.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "cloud-dump", title: "sgr cloud dump", sidebarTitle: "cloud dump", description: "Dump a Splitgraph catalog to a YAML file."}; + +```sgr cloud dump [OPTIONS] [LIMIT_REPOSITORIES]...``` + +Dump a Splitgraph catalog to a YAML file. + +This creates a repositories.yml file in the target directory as well as a subdirectory `readmes` +with all the repository readmes. This file can be used to recreate all catalog metadata +and all external data source settings for a repository using `sgr cloud load`. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--readme-dir TEXT`**: Directory to dump the data into + * **`-f, --repositories-file FILENAME`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0011_cloud-load.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0011_cloud-load.mdx new file mode 100644 index 00000000..123bbb43 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0011_cloud-load.mdx @@ -0,0 +1,67 @@ +export const meta = {id: "cloud-load", title: "sgr cloud load", sidebarTitle: "cloud load", description: "Load a Splitgraph catalog from a YAML file."}; + +```sgr cloud load [OPTIONS] [LIMIT_REPOSITORIES]...``` + +Load a Splitgraph catalog from a YAML file. + +This will load a repositories.yml file and the `readmes` subdirectory produced by +`sgr cloud dump` back into a remote Splitgraph catalog. + +The format is an extension of the format accepted by `sgr cloud metadata` to include multiple +repositories. README files are read from the `readmes` subdirectory. + + +``` +credentials: # Optional credentials to access remote data sources + my_bucket: + plugin: csv + data: + s3_access_key: ... + s3_secret_key: ... +repositories: +- namespace: my_username + repository: repository + metadata: + readme: dataset-readme.md + description: Dataset description (160 characters max). + topics: + - topic_1 + - topic_2 + sources: + - anchor: Source + href: https://www.splitgraph.com + isCreator: true + isSameAs: false + - anchor: Source 2 + href: https://www.splitgraph.com + isCreator: false + isSameAs: true + license: Public Domain + extra_metadata: + key_1: + key_1_1: value_1_1 + key_1_2: value_1_2 + key_2: + key_2_1: value_2_1 + key_2_2: value_2_2 + external: + credential: my_bucket + plugin: csv + params: + s3_bucket: my_bucket + tables: + table_1: + schema: + - name: column_1 + type: text + - name: column_2 + type: integer + options: + s3_object: some/s3_key.csv +``` + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--readme-dir TEXT`**: Path to the directory with the README files + * **`-f, --repositories-file FILENAME`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0012_cloud-token.mdx b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0012_cloud-token.mdx new file mode 100644 index 00000000..5cea68fa --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/0012_cloud-token.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "cloud-token", title: "sgr cloud token", sidebarTitle: "cloud token", description: "Output an up-to-date access token for a remote."}; + +```sgr cloud token [OPTIONS] ``` + +Output an up-to-date access token for a remote. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/metadata.json new file mode 100644 index 00000000..25ba655e --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/0007_splitgraph-cloud/metadata.json @@ -0,0 +1 @@ +{"title": "Splitgraph Cloud"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.16/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.16/metadata.json new file mode 100644 index 00000000..7f2d1bb8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.16/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.16", + "updated_at": "2022-01-20T00:00:41.057Z", + "release": { + "id": 48066336, + "tag_name": "v0.2.16", + "target_commitish": "e7553fcf76b6a34ac0d396e407f122d7cd2a6e59", + "created_at": "2021-08-18T17:39:35Z", + "published_at": "2021-08-18T19:13:55Z", + "assets": [ + { + "id": 42751073, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/42751073", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-08-18T18:52:44Z", + "updated_at": "2021-08-18T18:52:45Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.16/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0000_checkout.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0000_checkout.mdx new file mode 100644 index 00000000..cc805a26 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0000_checkout.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "checkout", title: "sgr checkout", sidebarTitle: "checkout", description: "Check out a Splitgraph image into a Postgres schema."}; + +```sgr checkout [OPTIONS] IMAGE_SPEC``` + +Check out a Splitgraph image into a Postgres schema. + +This downloads the required physical objects and materializes all tables, unless ``-l`` or ``--layered`` is passed, +in which case the objects are downloaded and a foreign data wrapper is set up on the engine to satisfy read-only +queries by combining results from each table's fragments. + +Tables checked out in this way are still presented as normal Postgres tables and can queried in the same way. +Since the tables aren't materialized, layered querying is faster to set up, but since each query now results in a +subquery to each object comprising the table, actual query execution is slower than to materialized Postgres tables. + +Layered querying is only supported for read-only queries. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. Note that currently, the schema that the +image is checked out into has to have the same name as the repository. If no image hash or tag is passed, +"HEAD" is assumed. + +If ``-u`` or ``--uncheckout`` is passed, this instead deletes the checked out schema (assuming there are no pending +changes) and removes the HEAD pointer. + +If ``--force`` isn't passed and the schema has pending changes, this will fail. + +### Options + + * **`-f, --force`**: Discard all pending changes to the schema + * **`-u, --uncheckout`**: Delete the checked out copy instead + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0001_commit.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0001_commit.mdx new file mode 100644 index 00000000..9a2ec1f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0001_commit.mdx @@ -0,0 +1,59 @@ +export const meta = {id: "commit", title: "sgr commit", sidebarTitle: "commit", description: "Commit changes to a checked-out Splitgraph repository."}; + +```sgr commit [OPTIONS] REPOSITORY``` + +Commit changes to a checked-out Splitgraph repository. + +This packages up all changes into a new image. Where a table hasn't been created or had its schema changed, +this will delta compress the changes. For all other tables (or if ``-s`` has been passed), this will +store them as full table snapshots. + +When a table is stored as a full snapshot, `--chunk-size` sets the maximum size, in rows, of the fragments +that the table will be split into (default is no splitting). The splitting is done by the +table's primary key. + +If `--split-changesets` is passed, delta-compressed changes will also be split up according to the original +table chunk boundaries. For example, if there's a change to the first and the 20000th row of a table that was +originally committed with `--chunk-size=10000`, this will create 2 fragments: one based on the first chunk +and one on the second chunk of the table. + +If `--chunk-sort-keys` is passed, data inside the chunk is sorted by this key (or multiple keys). +This helps speed up queries on those keys for storage layers than can leverage that (e.g. CStore). The expected format is JSON, e.g. `{table_1: [col_1, col_2]}` + +`--index-options` expects a JSON-serialized dictionary of `{table: index_type: column: index_specific_kwargs}`. +Indexes are used to narrow down the amount of chunks to scan through when running a query. By default, each column +has a range index (minimum and maximum values) and it's possible to add bloom filtering to speed up queries that +involve equalities. + +Bloom filtering allows to trade off between the space overhead of the index and the probability of a false +positive (claiming that an object contains a record when it actually doesn't, leading to extra scans). + +An example `index-options` dictionary: + + +``` +{ + "table": { + "bloom": { + "column_1": { + "probability": 0.01, # Only one of probability + "size": 10000 # or size can be specified. + } + }, + # Only compute the range index on these columns. By default, + # it's computed on all columns and is always computed on the + # primary key no matter what. + "range": ["column_2", "column_3"] + } +} +``` + +### Options + + * **`-s, --snap`**: Do not delta compress the changes and instead store the whole table again. This consumes more space, but makes checkouts faster. + * **`-c, --chunk-size INTEGER`**: Split new tables into chunks of this many rows (by primary key). The default value is governed by the SG_COMMIT_CHUNK_SIZE configuration parameter. + * **`-k, --chunk-sort-keys JSON`**: Sort the data inside each chunk by this/these key(s) + * **`-t, --split-changesets`**: Split changesets for existing tables across original chunk boundaries. + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate on the new objects. + * **`-m, --message TEXT`**: Optional commit message + * **`-o, --overwrite`**: Overwrite physical objects that already exist diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0002_tag.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0002_tag.mdx new file mode 100644 index 00000000..89f01837 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0002_tag.mdx @@ -0,0 +1,36 @@ +export const meta = {id: "tag", title: "sgr tag", sidebarTitle: "tag", description: "Manage tags on images."}; + +```sgr tag [OPTIONS] IMAGE_SPEC [TAG]``` + +Manage tags on images. + +Depending on the exact invocation, this command can tag a Splitgraph image, +list all tags in a repository or delete a tag. + +### Examples + +``sgr tag noaa/climate`` + +List all tagged images in the ``noaa/climate`` repository and their tags. + +``sgr tag noaa/climate:abcdef1234567890`` + +List all tags assigned to the image ``noaa/climate:abcdef1234567890...`` + +``sgr tag noaa/climate:abcdef1234567890 my_new_tag`` + +Tag the image ``noaa/climate:abcdef1234567890...`` with ``my_new_tag``. If the tag already exists, this will +overwrite the tag. + +``sgr tag noaa/climate my_new_tag`` + +Tag the current ``HEAD`` of ``noaa/climate`` with ``my_new_tag``. + +``sgr tag --delete noaa/climate:my_new_tag`` + +Delete the tag ``my_new_tag`` from ``noaa/climate``. + +### Options + + * **`-d, --delete`**: Delete the tag instead. + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0003_import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0003_import.mdx new file mode 100644 index 00000000..b69bbfb4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0003_import.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "import", title: "sgr import", sidebarTitle: "import", description: "Import tables into a Splitgraph repository."}; + +```sgr import [OPTIONS] IMAGE_SPEC TABLE_OR_QUERY TARGET_REPOSITORY [TARGET_TABLE]``` + +Import tables into a Splitgraph repository. + +Imports a table or a result of a query from a local Splitgraph repository or a Postgres schema into another +Splitgraph repository. + +### Examples + +``sgr import noaa/climate:my_tag climate_data my/repository`` + +Create a new image in ``my/repository`` with the ``climate_data`` table included. This links the new image to +the physical object, meaning that the history of the ``climate_data`` table is preserved. + +If no tag is specified, the 'latest' (not the HEAD image or current state of the checked out image) +image is used. + +``sgr import noaa/climate:my_tag "SELECT * FROM climate_data" my/repository climate_data`` + +Create a new image in ``my/repository`` with the result of the query stored in the ``climate_data`` table. This +creates a new physical object without any linkage to the original data, so the history of the ``climate_data`` +table isn't preserved. The SQL query can interact with multiple tables in the source image. + +``sgr import other_schema other_table my/repository`` + +Since other_schema isn't a Splitgraph repository, this will copy ``other_schema.other_table`` +into a new Splitgraph object and add the ``other_table`` table to a new image in ``my/repository``. + +Note that importing doesn't discard or commit pending changes in the target Splitgraph repository: a new image +is created with the new table added, the new table is materialized in the repository and the HEAD pointer is moved. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0004_reindex.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0004_reindex.mdx new file mode 100644 index 00000000..b640ffe3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/0004_reindex.mdx @@ -0,0 +1,19 @@ +export const meta = {id: "reindex", title: "sgr reindex", sidebarTitle: "reindex", description: "Run extra indexes on a table."}; + +```sgr reindex [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Run extra indexes on a table. This will merge the indexing results for all objects +that a table is formed from with the current object indexes. For explanation of +what indexes do, see the documentation for `sgr commit`. + +If the objects haven't been downloaded yet, this will download them. + +Currently reindexing objects that change other objects is unsupported and will raise +an error. Pass `-o` to ignore these objects and only reindex supported objects. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate, e.g. '{"bloom": {"column_1": {"probability": 0.01}}}' [required] + * **`-o, --ignore-patch-objects`**: Ignore objects that change other objects' rows instead of raising an error diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/metadata.json new file mode 100644 index 00000000..9ef75b16 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0000_image-management-creation/metadata.json @@ -0,0 +1 @@ +{"title": "Image management/creation"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0000_log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0000_log.mdx new file mode 100644 index 00000000..db5078b4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0000_log.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "log", title: "sgr log", sidebarTitle: "log", description: "Show the history of a Splitgraph repository/image."}; + +```sgr log [OPTIONS] IMAGE_SPEC``` + +Show the history of a Splitgraph repository/image. + +By default, this shows the history of the current branch, starting from the HEAD pointer and following its +parent chain. + +Alternatively, it can follow the parent chain of any other image. + +If ``-t`` or ``--tree`` is passed, this instead renders the full image tree. The repository doesn't need to have +been checked out in this case. + +### Options + + * **`-t, --tree`**: + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0001_diff.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0001_diff.mdx new file mode 100644 index 00000000..8ef569e8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0001_diff.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "diff", title: "sgr diff", sidebarTitle: "diff", description: "Show differences between two Splitgraph images."}; + +```sgr diff [OPTIONS] REPOSITORY [TAG_OR_HASH_1] [TAG_OR_HASH_2]``` + +Show differences between two Splitgraph images. + +The two images must be in the same repository. The actual targets of this command depend +on the number of arguments passed: + +``sgr diff REPOSITORY`` + +Return the differences between the current HEAD image and the checked out schema. + +``sgr diff REPOSITORY TAG_OR_HASH`` + +Return the differences between the image and its parent. + +``sgr diff REPOSITORY TAG_OR_HASH_1 TAG_OR_HASH_2`` + +Return the differences from the first (earlier) image to the second image. + +### Options + + * **`-v, --verbose`**: Include the actual differences rather than just the total number of updated rows. + * **`-t, --table-name TEXT`**: Show the differences for a single table. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0002_object.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0002_object.mdx new file mode 100644 index 00000000..ff8c38a9 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0002_object.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "object", title: "sgr object", sidebarTitle: "object", description: "Show information about a Splitgraph object."}; + +```sgr object [OPTIONS] OBJECT_ID``` + +Show information about a Splitgraph object. + +Objects, or fragments, are building blocks of Splitgraph tables: each table consists of multiple immutable fragments +that can partially overwrite each other. Each fragment might have a parent that it depends on. In addition, +the smallest and largest values for every column are stored in the fragment's metadata. This information is used +to choose which objects to download in order to execute a query against a table. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0003_objects.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0003_objects.mdx new file mode 100644 index 00000000..c56fa727 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0003_objects.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "objects", title: "sgr objects", sidebarTitle: "objects", description: "List objects known to this engine."}; + +```sgr objects [OPTIONS] ``` + +List objects known to this engine. + +### Options + + * **`--local`**: Show only objects that are physically present on this engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0004_show.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0004_show.mdx new file mode 100644 index 00000000..4ddcc55d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0004_show.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "show", title: "sgr show", sidebarTitle: "show", description: "Show information about a Splitgraph image."}; + +```sgr show [OPTIONS] IMAGE_SPEC``` + +Show information about a Splitgraph image. This includes its parent, comment, size and creation time. + +Note that the size isn't the on-disk footprint, as the image might share some objects with other images +or if some of the image's objects have not been downloaded. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0005_table.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0005_table.mdx new file mode 100644 index 00000000..cc681c85 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0005_table.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "table", title: "sgr table", sidebarTitle: "table", description: "Show information about a table in a Splitgraph image."}; + +```sgr table [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Show information about a table in a Splitgraph image. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-v, --verbose`**: Show all of table's objects. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0006_sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0006_sql.mdx new file mode 100644 index 00000000..ea8a304b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0006_sql.mdx @@ -0,0 +1,34 @@ +export const meta = {id: "sql", title: "sgr sql", sidebarTitle: "sql", description: "Run an SQL statement against the Splitgraph engine."}; + +```sgr sql [OPTIONS] SQL``` + +Run an SQL statement against the Splitgraph engine. + +There are no restrictions on the contents of the statement: this is the same as running it +from any other PostgreSQL client. + +If ``--schema`` is specified, the statement is run with the ``search_path`` set to that schema. This means +that these statements are equivalent: + + +``` +sgr sql "SELECT * FROM "noaa/climate".table" +sgr sql -s noaa/climate "SELECT * FROM table" +``` + +If `--image` is specified, this will run the statement against that image using layered querying. +Only read-only statements are supported. For example: + + +``` +sgr sql -i noaa/climate:latest "SELECT * FROM table" +``` + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-s, --schema TEXT`**: Run SQL against this schema. + * **`-i, --image IMAGE`**: Run SQL against this image. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON + * **`-n, --no-transaction`**: Don't wrap the SQL in a transaction. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0007_status.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0007_status.mdx new file mode 100644 index 00000000..5e312f11 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/0007_status.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "status", title: "sgr status", sidebarTitle: "status", description: "Show the status of the Splitgraph engine."}; + +```sgr status [OPTIONS] [REPOSITORY]``` + +Show the status of the Splitgraph engine. + +If a repository is passed, show in-depth information about a repository. + +If not, show information about all repositories local to the engine. This will show a list +of all repositories, number of local images and tags, total repository size (theoretical +maximum size and current on-disk footprint of cached objects) and the current checked +out image (with LQ if the image is checked out using read-only layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/metadata.json new file mode 100644 index 00000000..a2c3f0f8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0001_image-information/metadata.json @@ -0,0 +1 @@ +{"title": "Image information"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0000_engine-add.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0000_engine-add.mdx new file mode 100644 index 00000000..c0b69417 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0000_engine-add.mdx @@ -0,0 +1,26 @@ +export const meta = {id: "engine-add", title: "sgr engine add", sidebarTitle: "engine add", description: "Create and start a Splitgraph engine."}; + +```sgr engine add [OPTIONS] [NAME]``` + +Create and start a Splitgraph engine. + +This will pull the Splitgraph engine image, start it, create a Postgres user and initialize +the engine. + +This also creates Docker volumes required to persist data/metadata. + +The engine Docker container by default will be named `splitgraph_engine_default` and +its data and metadata volumes will have names `splitgraph_engine_default_data` and +`splitgraph_engine_default_metadata`. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`-p, --port INTEGER`**: Port to start the engine on + * **`-u, --username TEXT`**: + * **`--no-init`**: Don't run `sgr init` on the engine + * **`--no-sgconfig`**: Don't add the engine to .sgconfig + * **`--inject-source`**: Inject the current Splitgraph source code into the engine using Docker bind mounts + * **`--no-pull`**: Don't pull the Docker image + * **`--set-default`**: Set the engine as the default engine in the config regardless of its name + * **`--password TEXT`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0001_engine-delete.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0001_engine-delete.mdx new file mode 100644 index 00000000..6229e082 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0001_engine-delete.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "engine-delete", title: "sgr engine delete", sidebarTitle: "engine delete", description: "Delete the Splitgraph engine container."}; + +```sgr engine delete [OPTIONS] [NAME]``` + +Delete the Splitgraph engine container. + +### Options + + * **`-y, --yes`**: Do not prompt for confirmation. + * **`-f, --force`**: Delete the engine anyway if it's running. + * **`-v, --with-volumes`**: Include the engine's volumes (if not specified, volumes will be reattached when an engine with the same name is created). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0002_engine-list.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0002_engine-list.mdx new file mode 100644 index 00000000..a2530db2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0002_engine-list.mdx @@ -0,0 +1,13 @@ +export const meta = {id: "engine-list", title: "sgr engine list", sidebarTitle: "engine list", description: "List Splitgraph engines."}; + +```sgr engine list [OPTIONS] ``` + +List Splitgraph engines. + +This only lists Docker containers that were created by sgr engine +(whose names start with `splitgraph_engine_`. To manage other engines, +use Docker CLI directly. + +### Options + + * **`-a, --include-all`**: Include stopped engine containers. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0003_engine-start.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0003_engine-start.mdx new file mode 100644 index 00000000..4c9cdf6c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0003_engine-start.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-start", title: "sgr engine start", sidebarTitle: "engine start", description: "Start a Splitgraph engine."}; + +```sgr engine start [OPTIONS] [NAME]``` + +Start a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0004_engine-stop.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0004_engine-stop.mdx new file mode 100644 index 00000000..7ea64786 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0004_engine-stop.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-stop", title: "sgr engine stop", sidebarTitle: "engine stop", description: "Stop a Splitgraph engine."}; + +```sgr engine stop [OPTIONS] [NAME]``` + +Stop a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0005_engine-upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0005_engine-upgrade.mdx new file mode 100644 index 00000000..751cd998 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0005_engine-upgrade.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "engine-upgrade", title: "sgr engine upgrade", sidebarTitle: "engine upgrade", description: "Upgrade a Splitgraph engine."}; + +```sgr engine upgrade [OPTIONS] [NAME]``` + +Upgrade a Splitgraph engine. + +This consists of shutting down the current Splitgraph engine, +deleting its Docker container (keeping the actual data and +metadata volumes intact), creating a container based on a newer +image and finally reinitializing the engine to perform needed migrations. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`--no-pull`**: Don't pull the new engine image diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0006_engine-log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0006_engine-log.mdx new file mode 100644 index 00000000..58859523 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0006_engine-log.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "engine-log", title: "sgr engine log", sidebarTitle: "engine log", description: "Get logs from a Splitgraph engine."}; + +```sgr engine log [OPTIONS] [NAME]``` + +Get logs from a Splitgraph engine. + +### Options + + * **`-f, --follow`**: Stream logs diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0007_engine-configure.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0007_engine-configure.mdx new file mode 100644 index 00000000..1be8adcd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0007_engine-configure.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "engine-configure", title: "sgr engine configure", sidebarTitle: "engine configure", description: "Inject a configuration file into an engine."}; + +```sgr engine configure [OPTIONS] [NAME]``` + +Inject a configuration file into an engine. + +This copies the current .sgconfig file (pointed to by SG_CONFIG_FILE) into +the engine container, making it use that configuration for +when it's queried through an application other than the sgr client +(layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0008_engine-version.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0008_engine-version.mdx new file mode 100644 index 00000000..d47bfe05 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/0008_engine-version.mdx @@ -0,0 +1,5 @@ +export const meta = {id: "engine-version", title: "sgr engine version", sidebarTitle: "engine version", description: "Get version of Splitgraph engine."}; + +```sgr engine version [OPTIONS] [NAME]``` + +Get version of Splitgraph engine. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/metadata.json new file mode 100644 index 00000000..3f70a9d2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0002_engine-management/metadata.json @@ -0,0 +1 @@ +{"title": "Engine management"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/0000_csv-export.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/0000_csv-export.mdx new file mode 100644 index 00000000..8408f9f2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/0000_csv-export.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-export", title: "sgr csv export", sidebarTitle: "csv export", description: "Export the result of a query as CSV."}; + +```sgr csv export [OPTIONS] IMAGE_SPEC QUERY``` + +Export the result of a query as CSV. + +### Examples + +`sgr csv export noaa/climate "SELECT * FROM rainfall"` + +Output everything in the currently checked-out `"rainfall"` table as CSV. + +`sgr csv export noaa/climate:dec_2018 "SELECT * FROM rainfall WHERE state = 'AZ' -f dec_2018_az.csv` + +Check out the `dec_2018` tag of `noaa/climate` and output values from `"rainfall"` for Arizona to `dec_2018_az.csv` + +`sgr csv export --layered noaa/climate:abcdef1234567890 "SELECT * FROM rainfall JOIN other_table ON..."` + +Uses layered querying instead to execute a join on tables in a certain image (satisfying the query without +having to check the image out). + +### Options + + * **`-f, --file FILENAME`**: File name to export to, default stdout. + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/0001_csv-import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/0001_csv-import.mdx new file mode 100644 index 00000000..5f3eb655 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/0001_csv-import.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-import", title: "sgr csv import", sidebarTitle: "csv import", description: "Import a CSV file into a checked-out Splitgraph repository."}; + +```sgr csv import [OPTIONS] REPOSITORY TABLE``` + +Import a CSV file into a checked-out Splitgraph repository. This doesn't create a new image, use `sgr commit` +after the import and any adjustments (e.g. adding primary keys or converting column types) to do so. + +If the target table doesn't exist, this will create a new table. + +If the target table does exist, this will try and patch the new values in by updating rows that exist in the +current table (as per its primary key constraints) and inserting new ones. Rows existing in the current table +but missing in the CSV won't be deleted. + +If `-r` is passed, the table will instead be deleted and recreated from the CSV file if it exists. + +### Options + + * **`-f, --file FILENAME`**: File name to import data from, default stdin. + * **`-r, --replace`**: Replace the table if it already exists. + * **`-k, --primary-key TEXT`**: Use the specified column(s) as primary key(s) + * **`-t, --override-type ...`**: Explicitly set types of these columns to PG types + * **`--encoding TEXT`**: Encoding to use for the CSV file + * **`--separator TEXT`**: CSV separator to use + * **`--no-header`**: Treats the first line of the CSV as data rather than a header. + * **`--skip-schema-check`**: Skips checking that the dataframe is compatible with the target schema. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/0002_mount.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/0002_mount.mdx new file mode 100644 index 00000000..85bcb7f5 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/0002_mount.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "mount", title: "sgr mount", sidebarTitle: "mount", description: "Mount foreign databases as Postgres schemas."}; + +```sgr mount [OPTIONS] ``` + +Mount foreign databases as Postgres schemas. + +Uses the Postgres FDW interface to create a local Postgres schema with foreign tables that map +to tables in other databases. + +See a given mount handler's documentation for handler-specific parameters. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/0003_singer-target.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/0003_singer-target.mdx new file mode 100644 index 00000000..c353a781 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/0003_singer-target.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "singer-target", title: "sgr singer target", sidebarTitle: "singer target", description: "Singer target that loads data into Splitgraph images."}; + +```sgr singer target [OPTIONS] IMAGE``` + +Singer target that loads data into Splitgraph images. + +This will read data from the stdin from a Singer-compatible tap and load it into +a Splitgraph image, merging data if the image already exists. + +Image must be of the format `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]` where `HASH_OR_TAG` +is a tag of an existing image to base the image on. If the repository doesn't exist, +it will be created. + +As this target consumes data from stdin, it will flush the records into a Splitgraph image. By +default, it will only keep the image if the whole stream has been successfully consumed. To +make this target completely follow the Singer spec (if it emits state, the records have been +flushed), pass --failure=keep-both or --failure=delete-old. To delete the old image on success, +pass --delete-old. + +### Options + + * **`-d, --delete-old`**: Delete the old image at the end of ingestion + * **`-f, --failure [keep-both|delete-old|delete-new]`**: What to do in case of a failure. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/metadata.json new file mode 100644 index 00000000..d82f5068 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0003_data-import-export/metadata.json @@ -0,0 +1 @@ +{"title": "Data import/export"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0000_rm.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0000_rm.mdx new file mode 100644 index 00000000..47baf9a3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0000_rm.mdx @@ -0,0 +1,40 @@ +export const meta = {id: "rm", title: "sgr rm", sidebarTitle: "rm", description: "Delete schemas, repositories or images."}; + +```sgr rm [OPTIONS] IMAGE_SPEC``` + +Delete schemas, repositories or images. + +If the target of this command is a Postgres schema, this performs DROP SCHEMA CASCADE. + +If the target of this command is a Splitgraph repository, this deletes the repository and all of its history. + +If the target of this command is an image, this deletes the image and all of its children. + +In any case, this command will ask for confirmation of the deletion, unless ``-y`` is passed. If ``-r`` +(``--remote``), is passed, this will perform deletion on a remote Splitgraph engine (registered in the config) +instead, assuming the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Examples + +``sgr rm temporary_schema`` + +Deletes ``temporary_schema`` from the local engine. + +``sgr rm --remote data.splitgraph.com username/repo`` + +Deletes ``username/repo`` from the Splitgraph registry. + +``sgr rm -y username/repo:old_branch`` + +Deletes the image pointed to by ``old_branch`` as well as all of its children (images created by a commit based +on this image), as well as all of the tags that point to now deleted images, without asking for confirmation. +Note this will not delete images that import tables from the deleted images via Splitfiles or indeed the +physical objects containing the actual tables. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0001_init.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0001_init.mdx new file mode 100644 index 00000000..e4ab8d4d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0001_init.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "init", title: "sgr init", sidebarTitle: "init", description: "Initialize a new repository/engine."}; + +```sgr init [OPTIONS] [REPOSITORY]``` + +Initialize a new repository/engine. + +### Examples + +`sgr init` + +Initializes the current local Splitgraph engine by writing some bookkeeping information. +This is required for the rest of sgr to work. + +`sgr init --skip-object-handling` + +Initializes a Splitgraph engine without installing audit triggers or object management routines: +this is useful for engines that aren't intended to be used for image checkouts. + +``sgr init new/repo`` + +Creates a single image with the hash ``00000...`` in ``new/repo`` + +### Options + + * **`--skip-object-handling`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0002_cleanup.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0002_cleanup.mdx new file mode 100644 index 00000000..c23688a4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0002_cleanup.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "cleanup", title: "sgr cleanup", sidebarTitle: "cleanup", description: "Prune unneeded objects from the engine."}; + +```sgr cleanup [OPTIONS] ``` + +Prune unneeded objects from the engine. + +This deletes all objects from the cache that aren't required by any local repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0003_prune.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0003_prune.mdx new file mode 100644 index 00000000..64c2d49b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0003_prune.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "prune", title: "sgr prune", sidebarTitle: "prune", description: "Cleanup dangling images from a repository."}; + +```sgr prune [OPTIONS] REPOSITORY``` + +Cleanup dangling images from a repository. + +This includes images not pointed to by any tags (or checked out) and those that aren't required by any of +such images. + +Will ask for confirmation of the deletion, unless ``-y ``is passed. If ``-r`` (``--remote``) is +passed, this will perform deletion on a remote Splitgraph engine (registered in the config) instead, assuming +the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0004_config.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0004_config.mdx new file mode 100644 index 00000000..7fcaa53c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0004_config.mdx @@ -0,0 +1,33 @@ +export const meta = {id: "config", title: "sgr config", sidebarTitle: "config", description: "Print the current Splitgraph configuration."}; + +```sgr config [OPTIONS] ``` + +Print the current Splitgraph configuration. + +This takes into account the local config file, the default values +and all overrides specified via environment variables. + +This command can be used to dump the current Splitgraph configuration into a file: + +``` +sgr config --no-shielding --config-format > .sgconfig +``` + +...or save a config file overriding an entry: + +``` +SG_REPO_LOOKUP=engine1,engine2 sgr config -sc > .sgconfig +``` + +If `--conn-string` is passed, this prints out a libpq connection string +that can be used to connect to the default Splitgraph engine with other tools: + +``` +pgcli $(sgr config -n) +``` + +### Options + + * **`-s, --no-shielding`**: If set, doesn't replace sensitive values (like passwords) with asterisks + * **`-c, --config-format`**: Output configuration in the Splitgraph config file format + * **`-n, --conn-string`**: Print a libpq connection string to the engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0005_dump.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0005_dump.mdx new file mode 100644 index 00000000..111baceb --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0005_dump.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "dump", title: "sgr dump", sidebarTitle: "dump", description: "Dump a repository to SQL."}; + +```sgr dump [OPTIONS] REPOSITORY``` + +Dump a repository to SQL. + +### Options + + * **`--exclude-object-contents`**: Don't dump the commands needed to recreate objects required by the repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0006_eval.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0006_eval.mdx new file mode 100644 index 00000000..5b4b7f0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0006_eval.mdx @@ -0,0 +1,39 @@ +export const meta = {id: "eval", title: "sgr eval", sidebarTitle: "eval", description: "Evaluate a Python snippet using the Splitgraph API."}; + +```sgr eval [OPTIONS] COMMAND``` + +Evaluate a Python snippet using the Splitgraph API. + +This is for advanced users only and should be only used +if you know what you are doing. + +Normal Python statements are supported and the command is evaluated +in a namespace where the following is already imported and available: + + * Repository: class that instantiates a Splitgraph repository and makes + API functions like .commit(), .checkout() etc available. + + * engine: Current local engine + + * object_manager: an instance of ObjectManager that allows + to get information about objects and manage the object cache. + + +Example: +``` +sgr eval 'import json; print(json.dumps(Repository\ + .from_schema(repo_name)\ + .images["latest"]\ + .get_table(table_name)\ + .table_schema))' \ +-a repo_name my_repo -a table_name my_table +``` + +Will dump the schema of table my_table in the most recent image in my_repo in JSON format. + +For more information, see the Splitgraph API reference. + +### Options + + * **`--i-know-what-im-doing`**: Pass this if you're sure that the code you're running is safe and don't want to be prompted. + * **`-a, --arg ...`**: Make extra variables available in the command's namespace diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0007_upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0007_upgrade.mdx new file mode 100644 index 00000000..188e798b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/0007_upgrade.mdx @@ -0,0 +1,17 @@ +export const meta = {id: "upgrade", title: "sgr upgrade", sidebarTitle: "upgrade", description: "Upgrade sgr client and engine."}; + +```sgr upgrade [OPTIONS] [VERSION]``` + +Upgrade sgr client and engine. + +This will try to download the most recent stable binary for the current platform +into the location this binary is running from and then upgrade the default engine. + +This method is only supported for single-binary installs and engines managed +by `sgr engine`. + +### Options + + * **`--skip-engine-upgrade`**: Only upgrade the client + * **`--path TEXT`**: Override the path to download the new binary to. + * **`--force`**: Reinstall older/same versions. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/metadata.json new file mode 100644 index 00000000..26f7a103 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0004_miscellaneous/metadata.json @@ -0,0 +1 @@ +{"title": "Miscellaneous"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/0000_clone.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/0000_clone.mdx new file mode 100644 index 00000000..7c2929bd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/0000_clone.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "clone", title: "sgr clone", sidebarTitle: "clone", description: "Clone a remote Splitgraph repository/image into a local one."}; + +```sgr clone [OPTIONS] REMOTE_REPOSITORY_OR_IMAGE [LOCAL_REPOSITORY]``` + +Clone a remote Splitgraph repository/image into a local one. + +The lookup path for the repository is governed by the ``SG_REPO_LOOKUP`` and ``SG_REPO_LOOKUP_OVERRIDE`` +config parameters and can be overridden by the command line ``--remote`` option. + +### Options + + * **`-r, --remote TEXT`**: Name of the remote engine + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/0001_push.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/0001_push.mdx new file mode 100644 index 00000000..7082172b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/0001_push.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "push", title: "sgr push", sidebarTitle: "push", description: "Push images to the Splitgraph registry or another engine."}; + +```sgr push [OPTIONS] REPOSITORY_OR_IMAGE [REMOTE_REPOSITORY]``` + +Push images to the Splitgraph registry or another engine. + +If an image is not specified (e.g. `sgr push noaa/climate`, this will push all new images. + +By default, the repository will be pushed to a repository with the same name in the user's namespace +(SG_NAMESPACE configuration value which defaults to the username). + +If there's a single engine registered in the config (e.g. data.splitgraph.com), it shall be the default +destination. + +If an upstream repository/engine has been configured for this engine with `sgr upstream`, +it will be used instead. + +Finally, if `remote_repository` or `--remote` are passed, they will take precedence. + +The actual objects will be uploaded to S3 using Minio. When pushing to another engine, +you can choose to upload them directly by passing `--handler DB`. + +### Options + + * **`-r, --remote []`**: Name of the remote engine + * **`-h, --upload-handler TEXT`**: Upload handler + * **`-o, --upload-handler-options JSON`**: Upload handler parameters + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing remote objects + * **`-t, --tags`**: Overwrite tags for pushed image/repo + * **`-u, --reupload-objects`**: Reupload objects that metadata is pushed out for diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/0002_pull.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/0002_pull.mdx new file mode 100644 index 00000000..d1b631d1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/0002_pull.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "pull", title: "sgr pull", sidebarTitle: "pull", description: "Pull changes / download a single image."}; + +```sgr pull [OPTIONS] REPOSITORY_OR_IMAGE``` + +Pull changes / download a single image. + +### Options + + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/0003_upstream.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/0003_upstream.mdx new file mode 100644 index 00000000..32f1d6ec --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/0003_upstream.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "upstream", title: "sgr upstream", sidebarTitle: "upstream", description: "Get or set the upstream for a repository."}; + +```sgr upstream [OPTIONS] REPOSITORY``` + +Get or set the upstream for a repository. + +This shows the default repository used for pushes and pulls as well as allows to change it to a different +remote engine and repository. + +The remote engine alias must exist in the config file. + +### Examples + +``sgr upstream my/repo --set splitgraph.com username/repo`` + +Sets the upstream for ``my/repo`` to ``username/repo`` existing on the ``splitgraph.com`` engine + +``sgr upstream my/repo --reset`` + +Removes the upstream for ``my/repo``. + +``sgr upstream my/repo`` + +Shows the current upstream for ``my/repo``. + +### Options + + * **`-s, --set ...`**: Set the upstream to a engine alias + repository + * **`-r, --reset`**: Delete the upstream diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/metadata.json new file mode 100644 index 00000000..b2c1ab8d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0005_sharing-images/metadata.json @@ -0,0 +1 @@ +{"title": "Sharing images"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/0000_build.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/0000_build.mdx new file mode 100644 index 00000000..2204aae2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/0000_build.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "build", title: "sgr build", sidebarTitle: "build", description: "Build Splitgraph images."}; + +```sgr build [OPTIONS] SPLITFILE``` + +Build Splitgraph images. + +This executes a Splitfile, building a new image or checking it out from cache if the same +image had already been built. + +### Examples + +``sgr build my.splitfile`` + +Executes ``my.splitfile`` and writes its output into a new repository with the same name +as the Splitfile (my) unless the name is specified in the Splitfile. + +``sgr build my.splitfile -o mynew/repo`` + +Executes ``my.splitfile`` and writes its output into ``mynew/repo``. + +``sgr build my_other.splitfile -o mynew/otherrepo --args PARAM1 VAL1 --args PARAM2 VAL2`` + +Executes ``my_other.splitfile`` with parameters ``PARAM1`` and ``PARAM2`` set to +``VAL1`` and ``VAL2``, respectively. + +### Options + + * **`-a, --args ...`**: Parameters to be substituted into the Splitfile. All parameters mentioned in the file must be specified in order for the Splitfile to be executed. + * **`-o, --output-repository REPOSITORY`**: Repository to store the result in. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/0001_rebuild.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/0001_rebuild.mdx new file mode 100644 index 00000000..8194b0f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/0001_rebuild.mdx @@ -0,0 +1,27 @@ +export const meta = {id: "rebuild", title: "sgr rebuild", sidebarTitle: "rebuild", description: "Rebuild images against different dependencies."}; + +```sgr rebuild [OPTIONS] IMAGE_SPEC``` + +Rebuild images against different dependencies. + +Examines the provenance of a Splitgraph image created by a Splitfile and reruns it against different images than +the ones that were imported by the original run. + +### Examples + +``sgr rebuild my/repo --against noaa/climate:old_data`` + +Reconstructs the Splitfile used to create ``my/repo:latest``, replaces all imports from ``noaa/climate`` with +imports from ``noaa/climate:old_data`` and reruns the Splitfile. + +``sgr rebuild my/repo:other_tag -u`` + +Rebuilds ``my_repo:other_tag`` against the latest versions of all of its dependencies. + +Image caching still works in this case: if the result of the rebuild already exists, the image will be checked +out. + +### Options + + * **`-u, --update`**: Rederive the image against the latest version of all dependencies. + * **`-a, --against IMAGE`**: Images to substitute into the reconstructed Splitfile, of the form [NAMESPACE/]REPOSITORY[:HASH_OR_TAG]. Default tag is 'latest'. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/0002_provenance.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/0002_provenance.mdx new file mode 100644 index 00000000..45d3a5a8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/0002_provenance.mdx @@ -0,0 +1,62 @@ +export const meta = {id: "provenance", title: "sgr provenance", sidebarTitle: "provenance", description: "Reconstruct the provenance of an image."}; + +```sgr provenance [OPTIONS] IMAGE_SPEC``` + +Reconstruct the provenance of an image. + +This inspects the image to produce a list of images that were used by the Splitfile +that created it, or a Splitfile with the same effect. + +`IMAGE_SPEC` must be of the form `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]`. +If no tag is specified, `latest` is used. + +### Examples + +Assume `my/repo` is produced by the following Splitfile: + +``` +FROM MOUNT [...] IMPORT external_table +FROM noaa/climate IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} AS rainfall_data +``` + +`my/repo` will have 2 images: one having `hash_1` (with the `external_table` imported from a mounted database) +and one having `hash_2` (with both `external_table` and the `rainfall_data` containing the result +of the query run against the then-latest image in the `noaa/climate` repository). + +In this case: + +``` +sgr provenance my/repo +``` + +Returns a list of repositories and images that were imported by the Splitfile that constructed this image:: + +``` +my/repo:[hash_2] depends on: +noaa/climate:[hash_3] +``` + +Where `hash_3` is the hash of the latest image in the `noaa/climate` repository at the time the original +Splitfile was run. However: + +``` +sgr provenance -f my/repo +``` + +Will try to reconstruct the Splitfile that can be used to build this image. Since the FROM MOUNT command isn't +reproducible (requires access to the original external database, which is a moving target), this will fail. + +If `-e` is passed, this will emit information about irreproducible commands instead of failing. + +``` +sgr provenance -ef my/repo + +# Splitfile commands used to reconstruct my/repo:[image_hash] +# Irreproducible Splitfile command of type MOUNT +FROM noaa/climate:[hash_3] IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} +``` + +### Options + + * **`-f, --full`**: Recreate the Splitfile used to create this image + * **`-e, --ignore-errors`**: If set, ignore commands that aren't reproducible (like MOUNT or custom commands) diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/0003_dependents.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/0003_dependents.mdx new file mode 100644 index 00000000..fc8bc234 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/0003_dependents.mdx @@ -0,0 +1,21 @@ +export const meta = {id: "dependents", title: "sgr dependents", sidebarTitle: "dependents", description: "List images that were created from an image."}; + +```sgr dependents [OPTIONS] IMAGE_SPEC``` + +List images that were created from an image. + +This is the inverse of the sgr provenance command. It will list all images that were +created using a Splitfile that imported data from this image. + +By default, this will look at images on the local engine. The engine can be overridden +with --source-on and --dependents-on. For example: + + sgr dependents --source-on data.splitgraph.com --dependents-on LOCAL noaa/climate:latest + +will show all images on the local engine that derived data from `noaa/climate:latest` +on the Splitgraph registry. + +### Options + + * **`-O, --source-on TEXT`**: Override the engine to look the source up on + * **`-o, --dependents-on TEXT`**: Override the engine to list dependents from diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/metadata.json new file mode 100644 index 00000000..50afd08a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0006_splitfile-execution/metadata.json @@ -0,0 +1 @@ +{"title": "Splitfile execution"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0000_cloud-add.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0000_cloud-add.mdx new file mode 100644 index 00000000..9eba1036 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0000_cloud-add.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "cloud-add", title: "sgr cloud add", sidebarTitle: "cloud add", description: "Add a remote Splitgraph registry to .sgconfig with default parameters"}; + +```sgr cloud add [OPTIONS] DOMAIN_NAME``` + +Add a remote Splitgraph registry to .sgconfig with default parameters + +### Options + + * **`--remote TEXT`**: Name for the remote (infer from the domain name by default) + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0001_cloud-register.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0001_cloud-register.mdx new file mode 100644 index 00000000..089ce0c6 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0001_cloud-register.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "cloud-register", title: "sgr cloud register", sidebarTitle: "cloud register", description: "Register the user on a Splitgraph registry."}; + +```sgr cloud register [OPTIONS] ``` + +Register the user on a Splitgraph registry. + +By default, this registers the user on data.splitgraph.com, +obtains a set of machine (API) credentials for the client to communicate +with the registry and configures the data.splitgraph.com engine. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--email TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to register on. + * **`--accept-tos`**: Accept the registry's Terms of Service + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0002_cloud-login.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0002_cloud-login.mdx new file mode 100644 index 00000000..cb99d6c1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0002_cloud-login.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "cloud-login", title: "sgr cloud login", sidebarTitle: "cloud login", description: "Log into a Splitgraph registry with username/password."}; + +```sgr cloud login [OPTIONS] ``` + +Log into a Splitgraph registry with username/password. + +This will generate a new refresh token (to use the Splitgraph query API) +and API keys to let sgr access the registry (if they don't already exist +in the configuration file or if the actual username has changed). + +Note that if you already have generated an API key pair but it's not +in the configuration file, this will generate a new pair instead of +restoring the existing one, as the API secret is only stored in the configuration file. + +If you want to log in using an existing API key pair, use `sgr cloud login-api` instead. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`--overwrite`**: Overwrite old API keys in the config if they exist + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0003_cloud-login-api.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0003_cloud-login-api.mdx new file mode 100644 index 00000000..4007fe22 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0003_cloud-login-api.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "cloud-login-api", title: "sgr cloud login-api", sidebarTitle: "cloud login-api", description: "Log into a Splitgraph registry using existing API keys."}; + +```sgr cloud login-api [OPTIONS] ``` + +Log into a Splitgraph registry using existing API keys. + +This will inject the API keys for the registry into the configuration file +and generate a new access token. + +### Options + + * **`--api-key TEXT`**: + * **`--api-secret TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0004_cloud-sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0004_cloud-sql.mdx new file mode 100644 index 00000000..56c4be0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0004_cloud-sql.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "cloud-sql", title: "sgr cloud sql", sidebarTitle: "cloud sql", description: "Run SQL on or connect to the Splitgraph Data Delivery Network."}; + +```sgr cloud sql [OPTIONS] [QUERY]``` + +Run SQL on or connect to the Splitgraph Data Delivery Network. + +If a query isn't passed, this will return a libpq-compatible connection string to +the registry's SQL endpoint. It can be used to connect to the endpoint with other SQL clients: + +``` +pgcli $(sgr cloud sql) +``` + +If a query is passed, this will run an SQL query against the SQL endpoint. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0005_cloud-curl.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0005_cloud-curl.mdx new file mode 100644 index 00000000..e902965b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0005_cloud-curl.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "cloud-curl", title: "sgr cloud curl", sidebarTitle: "cloud curl", description: "Query a Splitgraph REST API."}; + +```sgr cloud curl [OPTIONS] IMAGE [REQUEST_PARAMS]``` + +Query a Splitgraph REST API. + +This is a thin wrapper around curl that performs an HTTP request to Splitgraph Cloud to +interact with a dataset using PostgREST (http://postgrest.org) or the Splitfile execution service. + +The actual invocation is: + +``` +curl [API endpoint][request] -H [access_token] [extra curl args]. +``` + +The image must be of the form `namespace/repository:[hash_or_tag (default latest)]`. + +The actual request parameters depend on the request type: + + * For PostgREST: `/table?[postgrest request]` or empty to get the OpenAPI spec for this image. + For a reference on how to perform Postgrest requests, see http://postgrest.org/en/latest/api.html. + * For the Splitfile executor: a JSON array to be POSTed to the executor, e.g. + `'{"command": "FROM some/repo IMPORT some_table AS alias", "tag": "new_tag"}'`. + +`--curl-args` allows to pass extra arguments to curl. Note that every argument must be prefixed +with `--curl-args`, e.g. `--curl-args --cacert --curl-args /path/to/ca.pem`. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-t, --request-type [postgrest|splitfile]`**: + * **`-c, --curl-args TEXT`**: Extra arguments to be passed to curl diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0006_cloud-readme.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0006_cloud-readme.mdx new file mode 100644 index 00000000..4ee4cf56 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0006_cloud-readme.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-readme", title: "sgr cloud readme", sidebarTitle: "cloud readme", description: "Upload a README to a Splitgraph repository."}; + +```sgr cloud readme [OPTIONS] REPOSITORY README``` + +Upload a README to a Splitgraph repository. + +The repository must have already been pushed. The README must be a file in Markdown format. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0007_cloud-description.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0007_cloud-description.mdx new file mode 100644 index 00000000..003c953f --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0007_cloud-description.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-description", title: "sgr cloud description", sidebarTitle: "cloud description", description: "Upload a description to a Splitgraph repository."}; + +```sgr cloud description [OPTIONS] REPOSITORY DESCRIPTION``` + +Upload a description to a Splitgraph repository. + +The repository must have already been pushed. The description should be plain text, 160 characters or shorter. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0008_cloud-metadata.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0008_cloud-metadata.mdx new file mode 100644 index 00000000..01b2f064 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0008_cloud-metadata.mdx @@ -0,0 +1,41 @@ +export const meta = {id: "cloud-metadata", title: "sgr cloud metadata", sidebarTitle: "cloud metadata", description: "Upload a metadata file to a Splitgraph repository."}; + +```sgr cloud metadata [OPTIONS] REPOSITORY [METADATA_FILE]``` + +Upload a metadata file to a Splitgraph repository. + +This can manipulate the repository's short description, README, topics, license, sources and extra metadata. + +The metadata file must be a YAML file. Omitting a key doesn't delete the value. + +For example: + + +``` +readme: dataset-readme.md +description: Dataset description (160 characters max). +topics: + - topic_1 + - topic_2 +sources: + - anchor: Source + href: https://www.splitgraph.com + isCreator: true + isSameAs: false + - anchor: Source 2 + href: https://www.splitgraph.com + isCreator: false + isSameAs: true +license: Public Domain +extra_metadata: + key_1: + key_1_1: value_1_1 + key_1_2: value_1_2 + key_2: + key_2_1: value_2_1 + key_2_2: value_2_2 +``` + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0009_cloud-search.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0009_cloud-search.mdx new file mode 100644 index 00000000..c23c31f4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0009_cloud-search.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "cloud-search", title: "sgr cloud search", sidebarTitle: "cloud search", description: "Search for a repository on the Splitgraph registry."}; + +```sgr cloud search [OPTIONS] QUERY``` + +Search for a repository on the Splitgraph registry. + +For more advanced search, including filtering by topics, go to the registry's website itself. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--limit INTEGER RANGE`**: Number of results to return diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0010_cloud-dump.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0010_cloud-dump.mdx new file mode 100644 index 00000000..8441621e --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0010_cloud-dump.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "cloud-dump", title: "sgr cloud dump", sidebarTitle: "cloud dump", description: "Dump a Splitgraph catalog to a YAML file."}; + +```sgr cloud dump [OPTIONS] [LIMIT_REPOSITORIES]...``` + +Dump a Splitgraph catalog to a YAML file. + +This creates a repositories.yml file in the target directory as well as a subdirectory `readmes` +with all the repository readmes. This file can be used to recreate all catalog metadata +and all external data source settings for a repository using `sgr cloud load`. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--readme-dir TEXT`**: Directory to dump the data into + * **`-f, --repositories-file FILENAME`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0011_cloud-load.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0011_cloud-load.mdx new file mode 100644 index 00000000..123bbb43 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0011_cloud-load.mdx @@ -0,0 +1,67 @@ +export const meta = {id: "cloud-load", title: "sgr cloud load", sidebarTitle: "cloud load", description: "Load a Splitgraph catalog from a YAML file."}; + +```sgr cloud load [OPTIONS] [LIMIT_REPOSITORIES]...``` + +Load a Splitgraph catalog from a YAML file. + +This will load a repositories.yml file and the `readmes` subdirectory produced by +`sgr cloud dump` back into a remote Splitgraph catalog. + +The format is an extension of the format accepted by `sgr cloud metadata` to include multiple +repositories. README files are read from the `readmes` subdirectory. + + +``` +credentials: # Optional credentials to access remote data sources + my_bucket: + plugin: csv + data: + s3_access_key: ... + s3_secret_key: ... +repositories: +- namespace: my_username + repository: repository + metadata: + readme: dataset-readme.md + description: Dataset description (160 characters max). + topics: + - topic_1 + - topic_2 + sources: + - anchor: Source + href: https://www.splitgraph.com + isCreator: true + isSameAs: false + - anchor: Source 2 + href: https://www.splitgraph.com + isCreator: false + isSameAs: true + license: Public Domain + extra_metadata: + key_1: + key_1_1: value_1_1 + key_1_2: value_1_2 + key_2: + key_2_1: value_2_1 + key_2_2: value_2_2 + external: + credential: my_bucket + plugin: csv + params: + s3_bucket: my_bucket + tables: + table_1: + schema: + - name: column_1 + type: text + - name: column_2 + type: integer + options: + s3_object: some/s3_key.csv +``` + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--readme-dir TEXT`**: Path to the directory with the README files + * **`-f, --repositories-file FILENAME`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0012_cloud-token.mdx b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0012_cloud-token.mdx new file mode 100644 index 00000000..5cea68fa --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/0012_cloud-token.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "cloud-token", title: "sgr cloud token", sidebarTitle: "cloud token", description: "Output an up-to-date access token for a remote."}; + +```sgr cloud token [OPTIONS] ``` + +Output an up-to-date access token for a remote. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/metadata.json new file mode 100644 index 00000000..25ba655e --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/0007_splitgraph-cloud/metadata.json @@ -0,0 +1 @@ +{"title": "Splitgraph Cloud"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.17/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.17/metadata.json new file mode 100644 index 00000000..3aeb07c2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.17/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.17", + "updated_at": "2022-01-20T00:00:38.164Z", + "release": { + "id": 51394754, + "tag_name": "v0.2.17", + "target_commitish": "69e2e396e41b3f9f3a7437bfb69189720d8c8b66", + "created_at": "2021-10-14T21:11:31Z", + "published_at": "2021-10-14T21:51:29Z", + "assets": [ + { + "id": 47011063, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/47011063", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-10-14T21:44:15Z", + "updated_at": "2021-10-14T21:44:15Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.17/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0000_checkout.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0000_checkout.mdx new file mode 100644 index 00000000..cc805a26 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0000_checkout.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "checkout", title: "sgr checkout", sidebarTitle: "checkout", description: "Check out a Splitgraph image into a Postgres schema."}; + +```sgr checkout [OPTIONS] IMAGE_SPEC``` + +Check out a Splitgraph image into a Postgres schema. + +This downloads the required physical objects and materializes all tables, unless ``-l`` or ``--layered`` is passed, +in which case the objects are downloaded and a foreign data wrapper is set up on the engine to satisfy read-only +queries by combining results from each table's fragments. + +Tables checked out in this way are still presented as normal Postgres tables and can queried in the same way. +Since the tables aren't materialized, layered querying is faster to set up, but since each query now results in a +subquery to each object comprising the table, actual query execution is slower than to materialized Postgres tables. + +Layered querying is only supported for read-only queries. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. Note that currently, the schema that the +image is checked out into has to have the same name as the repository. If no image hash or tag is passed, +"HEAD" is assumed. + +If ``-u`` or ``--uncheckout`` is passed, this instead deletes the checked out schema (assuming there are no pending +changes) and removes the HEAD pointer. + +If ``--force`` isn't passed and the schema has pending changes, this will fail. + +### Options + + * **`-f, --force`**: Discard all pending changes to the schema + * **`-u, --uncheckout`**: Delete the checked out copy instead + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0001_commit.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0001_commit.mdx new file mode 100644 index 00000000..9a2ec1f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0001_commit.mdx @@ -0,0 +1,59 @@ +export const meta = {id: "commit", title: "sgr commit", sidebarTitle: "commit", description: "Commit changes to a checked-out Splitgraph repository."}; + +```sgr commit [OPTIONS] REPOSITORY``` + +Commit changes to a checked-out Splitgraph repository. + +This packages up all changes into a new image. Where a table hasn't been created or had its schema changed, +this will delta compress the changes. For all other tables (or if ``-s`` has been passed), this will +store them as full table snapshots. + +When a table is stored as a full snapshot, `--chunk-size` sets the maximum size, in rows, of the fragments +that the table will be split into (default is no splitting). The splitting is done by the +table's primary key. + +If `--split-changesets` is passed, delta-compressed changes will also be split up according to the original +table chunk boundaries. For example, if there's a change to the first and the 20000th row of a table that was +originally committed with `--chunk-size=10000`, this will create 2 fragments: one based on the first chunk +and one on the second chunk of the table. + +If `--chunk-sort-keys` is passed, data inside the chunk is sorted by this key (or multiple keys). +This helps speed up queries on those keys for storage layers than can leverage that (e.g. CStore). The expected format is JSON, e.g. `{table_1: [col_1, col_2]}` + +`--index-options` expects a JSON-serialized dictionary of `{table: index_type: column: index_specific_kwargs}`. +Indexes are used to narrow down the amount of chunks to scan through when running a query. By default, each column +has a range index (minimum and maximum values) and it's possible to add bloom filtering to speed up queries that +involve equalities. + +Bloom filtering allows to trade off between the space overhead of the index and the probability of a false +positive (claiming that an object contains a record when it actually doesn't, leading to extra scans). + +An example `index-options` dictionary: + + +``` +{ + "table": { + "bloom": { + "column_1": { + "probability": 0.01, # Only one of probability + "size": 10000 # or size can be specified. + } + }, + # Only compute the range index on these columns. By default, + # it's computed on all columns and is always computed on the + # primary key no matter what. + "range": ["column_2", "column_3"] + } +} +``` + +### Options + + * **`-s, --snap`**: Do not delta compress the changes and instead store the whole table again. This consumes more space, but makes checkouts faster. + * **`-c, --chunk-size INTEGER`**: Split new tables into chunks of this many rows (by primary key). The default value is governed by the SG_COMMIT_CHUNK_SIZE configuration parameter. + * **`-k, --chunk-sort-keys JSON`**: Sort the data inside each chunk by this/these key(s) + * **`-t, --split-changesets`**: Split changesets for existing tables across original chunk boundaries. + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate on the new objects. + * **`-m, --message TEXT`**: Optional commit message + * **`-o, --overwrite`**: Overwrite physical objects that already exist diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0002_tag.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0002_tag.mdx new file mode 100644 index 00000000..89f01837 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0002_tag.mdx @@ -0,0 +1,36 @@ +export const meta = {id: "tag", title: "sgr tag", sidebarTitle: "tag", description: "Manage tags on images."}; + +```sgr tag [OPTIONS] IMAGE_SPEC [TAG]``` + +Manage tags on images. + +Depending on the exact invocation, this command can tag a Splitgraph image, +list all tags in a repository or delete a tag. + +### Examples + +``sgr tag noaa/climate`` + +List all tagged images in the ``noaa/climate`` repository and their tags. + +``sgr tag noaa/climate:abcdef1234567890`` + +List all tags assigned to the image ``noaa/climate:abcdef1234567890...`` + +``sgr tag noaa/climate:abcdef1234567890 my_new_tag`` + +Tag the image ``noaa/climate:abcdef1234567890...`` with ``my_new_tag``. If the tag already exists, this will +overwrite the tag. + +``sgr tag noaa/climate my_new_tag`` + +Tag the current ``HEAD`` of ``noaa/climate`` with ``my_new_tag``. + +``sgr tag --delete noaa/climate:my_new_tag`` + +Delete the tag ``my_new_tag`` from ``noaa/climate``. + +### Options + + * **`-d, --delete`**: Delete the tag instead. + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0003_import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0003_import.mdx new file mode 100644 index 00000000..b69bbfb4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0003_import.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "import", title: "sgr import", sidebarTitle: "import", description: "Import tables into a Splitgraph repository."}; + +```sgr import [OPTIONS] IMAGE_SPEC TABLE_OR_QUERY TARGET_REPOSITORY [TARGET_TABLE]``` + +Import tables into a Splitgraph repository. + +Imports a table or a result of a query from a local Splitgraph repository or a Postgres schema into another +Splitgraph repository. + +### Examples + +``sgr import noaa/climate:my_tag climate_data my/repository`` + +Create a new image in ``my/repository`` with the ``climate_data`` table included. This links the new image to +the physical object, meaning that the history of the ``climate_data`` table is preserved. + +If no tag is specified, the 'latest' (not the HEAD image or current state of the checked out image) +image is used. + +``sgr import noaa/climate:my_tag "SELECT * FROM climate_data" my/repository climate_data`` + +Create a new image in ``my/repository`` with the result of the query stored in the ``climate_data`` table. This +creates a new physical object without any linkage to the original data, so the history of the ``climate_data`` +table isn't preserved. The SQL query can interact with multiple tables in the source image. + +``sgr import other_schema other_table my/repository`` + +Since other_schema isn't a Splitgraph repository, this will copy ``other_schema.other_table`` +into a new Splitgraph object and add the ``other_table`` table to a new image in ``my/repository``. + +Note that importing doesn't discard or commit pending changes in the target Splitgraph repository: a new image +is created with the new table added, the new table is materialized in the repository and the HEAD pointer is moved. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0004_reindex.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0004_reindex.mdx new file mode 100644 index 00000000..b640ffe3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/0004_reindex.mdx @@ -0,0 +1,19 @@ +export const meta = {id: "reindex", title: "sgr reindex", sidebarTitle: "reindex", description: "Run extra indexes on a table."}; + +```sgr reindex [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Run extra indexes on a table. This will merge the indexing results for all objects +that a table is formed from with the current object indexes. For explanation of +what indexes do, see the documentation for `sgr commit`. + +If the objects haven't been downloaded yet, this will download them. + +Currently reindexing objects that change other objects is unsupported and will raise +an error. Pass `-o` to ignore these objects and only reindex supported objects. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate, e.g. '{"bloom": {"column_1": {"probability": 0.01}}}' [required] + * **`-o, --ignore-patch-objects`**: Ignore objects that change other objects' rows instead of raising an error diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/metadata.json new file mode 100644 index 00000000..9ef75b16 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0000_image-management-creation/metadata.json @@ -0,0 +1 @@ +{"title": "Image management/creation"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0000_log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0000_log.mdx new file mode 100644 index 00000000..db5078b4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0000_log.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "log", title: "sgr log", sidebarTitle: "log", description: "Show the history of a Splitgraph repository/image."}; + +```sgr log [OPTIONS] IMAGE_SPEC``` + +Show the history of a Splitgraph repository/image. + +By default, this shows the history of the current branch, starting from the HEAD pointer and following its +parent chain. + +Alternatively, it can follow the parent chain of any other image. + +If ``-t`` or ``--tree`` is passed, this instead renders the full image tree. The repository doesn't need to have +been checked out in this case. + +### Options + + * **`-t, --tree`**: + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0001_diff.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0001_diff.mdx new file mode 100644 index 00000000..8ef569e8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0001_diff.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "diff", title: "sgr diff", sidebarTitle: "diff", description: "Show differences between two Splitgraph images."}; + +```sgr diff [OPTIONS] REPOSITORY [TAG_OR_HASH_1] [TAG_OR_HASH_2]``` + +Show differences between two Splitgraph images. + +The two images must be in the same repository. The actual targets of this command depend +on the number of arguments passed: + +``sgr diff REPOSITORY`` + +Return the differences between the current HEAD image and the checked out schema. + +``sgr diff REPOSITORY TAG_OR_HASH`` + +Return the differences between the image and its parent. + +``sgr diff REPOSITORY TAG_OR_HASH_1 TAG_OR_HASH_2`` + +Return the differences from the first (earlier) image to the second image. + +### Options + + * **`-v, --verbose`**: Include the actual differences rather than just the total number of updated rows. + * **`-t, --table-name TEXT`**: Show the differences for a single table. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0002_object.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0002_object.mdx new file mode 100644 index 00000000..ff8c38a9 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0002_object.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "object", title: "sgr object", sidebarTitle: "object", description: "Show information about a Splitgraph object."}; + +```sgr object [OPTIONS] OBJECT_ID``` + +Show information about a Splitgraph object. + +Objects, or fragments, are building blocks of Splitgraph tables: each table consists of multiple immutable fragments +that can partially overwrite each other. Each fragment might have a parent that it depends on. In addition, +the smallest and largest values for every column are stored in the fragment's metadata. This information is used +to choose which objects to download in order to execute a query against a table. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0003_objects.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0003_objects.mdx new file mode 100644 index 00000000..c56fa727 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0003_objects.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "objects", title: "sgr objects", sidebarTitle: "objects", description: "List objects known to this engine."}; + +```sgr objects [OPTIONS] ``` + +List objects known to this engine. + +### Options + + * **`--local`**: Show only objects that are physically present on this engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0004_show.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0004_show.mdx new file mode 100644 index 00000000..4ddcc55d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0004_show.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "show", title: "sgr show", sidebarTitle: "show", description: "Show information about a Splitgraph image."}; + +```sgr show [OPTIONS] IMAGE_SPEC``` + +Show information about a Splitgraph image. This includes its parent, comment, size and creation time. + +Note that the size isn't the on-disk footprint, as the image might share some objects with other images +or if some of the image's objects have not been downloaded. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0005_table.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0005_table.mdx new file mode 100644 index 00000000..cc681c85 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0005_table.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "table", title: "sgr table", sidebarTitle: "table", description: "Show information about a table in a Splitgraph image."}; + +```sgr table [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Show information about a table in a Splitgraph image. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-v, --verbose`**: Show all of table's objects. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0006_sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0006_sql.mdx new file mode 100644 index 00000000..ea8a304b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0006_sql.mdx @@ -0,0 +1,34 @@ +export const meta = {id: "sql", title: "sgr sql", sidebarTitle: "sql", description: "Run an SQL statement against the Splitgraph engine."}; + +```sgr sql [OPTIONS] SQL``` + +Run an SQL statement against the Splitgraph engine. + +There are no restrictions on the contents of the statement: this is the same as running it +from any other PostgreSQL client. + +If ``--schema`` is specified, the statement is run with the ``search_path`` set to that schema. This means +that these statements are equivalent: + + +``` +sgr sql "SELECT * FROM "noaa/climate".table" +sgr sql -s noaa/climate "SELECT * FROM table" +``` + +If `--image` is specified, this will run the statement against that image using layered querying. +Only read-only statements are supported. For example: + + +``` +sgr sql -i noaa/climate:latest "SELECT * FROM table" +``` + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-s, --schema TEXT`**: Run SQL against this schema. + * **`-i, --image IMAGE`**: Run SQL against this image. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON + * **`-n, --no-transaction`**: Don't wrap the SQL in a transaction. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0007_status.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0007_status.mdx new file mode 100644 index 00000000..5e312f11 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/0007_status.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "status", title: "sgr status", sidebarTitle: "status", description: "Show the status of the Splitgraph engine."}; + +```sgr status [OPTIONS] [REPOSITORY]``` + +Show the status of the Splitgraph engine. + +If a repository is passed, show in-depth information about a repository. + +If not, show information about all repositories local to the engine. This will show a list +of all repositories, number of local images and tags, total repository size (theoretical +maximum size and current on-disk footprint of cached objects) and the current checked +out image (with LQ if the image is checked out using read-only layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/metadata.json new file mode 100644 index 00000000..a2c3f0f8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0001_image-information/metadata.json @@ -0,0 +1 @@ +{"title": "Image information"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0000_engine-add.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0000_engine-add.mdx new file mode 100644 index 00000000..c0b69417 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0000_engine-add.mdx @@ -0,0 +1,26 @@ +export const meta = {id: "engine-add", title: "sgr engine add", sidebarTitle: "engine add", description: "Create and start a Splitgraph engine."}; + +```sgr engine add [OPTIONS] [NAME]``` + +Create and start a Splitgraph engine. + +This will pull the Splitgraph engine image, start it, create a Postgres user and initialize +the engine. + +This also creates Docker volumes required to persist data/metadata. + +The engine Docker container by default will be named `splitgraph_engine_default` and +its data and metadata volumes will have names `splitgraph_engine_default_data` and +`splitgraph_engine_default_metadata`. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`-p, --port INTEGER`**: Port to start the engine on + * **`-u, --username TEXT`**: + * **`--no-init`**: Don't run `sgr init` on the engine + * **`--no-sgconfig`**: Don't add the engine to .sgconfig + * **`--inject-source`**: Inject the current Splitgraph source code into the engine using Docker bind mounts + * **`--no-pull`**: Don't pull the Docker image + * **`--set-default`**: Set the engine as the default engine in the config regardless of its name + * **`--password TEXT`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0001_engine-delete.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0001_engine-delete.mdx new file mode 100644 index 00000000..6229e082 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0001_engine-delete.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "engine-delete", title: "sgr engine delete", sidebarTitle: "engine delete", description: "Delete the Splitgraph engine container."}; + +```sgr engine delete [OPTIONS] [NAME]``` + +Delete the Splitgraph engine container. + +### Options + + * **`-y, --yes`**: Do not prompt for confirmation. + * **`-f, --force`**: Delete the engine anyway if it's running. + * **`-v, --with-volumes`**: Include the engine's volumes (if not specified, volumes will be reattached when an engine with the same name is created). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0002_engine-list.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0002_engine-list.mdx new file mode 100644 index 00000000..a2530db2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0002_engine-list.mdx @@ -0,0 +1,13 @@ +export const meta = {id: "engine-list", title: "sgr engine list", sidebarTitle: "engine list", description: "List Splitgraph engines."}; + +```sgr engine list [OPTIONS] ``` + +List Splitgraph engines. + +This only lists Docker containers that were created by sgr engine +(whose names start with `splitgraph_engine_`. To manage other engines, +use Docker CLI directly. + +### Options + + * **`-a, --include-all`**: Include stopped engine containers. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0003_engine-start.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0003_engine-start.mdx new file mode 100644 index 00000000..4c9cdf6c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0003_engine-start.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-start", title: "sgr engine start", sidebarTitle: "engine start", description: "Start a Splitgraph engine."}; + +```sgr engine start [OPTIONS] [NAME]``` + +Start a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0004_engine-stop.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0004_engine-stop.mdx new file mode 100644 index 00000000..7ea64786 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0004_engine-stop.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-stop", title: "sgr engine stop", sidebarTitle: "engine stop", description: "Stop a Splitgraph engine."}; + +```sgr engine stop [OPTIONS] [NAME]``` + +Stop a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0005_engine-upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0005_engine-upgrade.mdx new file mode 100644 index 00000000..751cd998 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0005_engine-upgrade.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "engine-upgrade", title: "sgr engine upgrade", sidebarTitle: "engine upgrade", description: "Upgrade a Splitgraph engine."}; + +```sgr engine upgrade [OPTIONS] [NAME]``` + +Upgrade a Splitgraph engine. + +This consists of shutting down the current Splitgraph engine, +deleting its Docker container (keeping the actual data and +metadata volumes intact), creating a container based on a newer +image and finally reinitializing the engine to perform needed migrations. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`--no-pull`**: Don't pull the new engine image diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0006_engine-log.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0006_engine-log.mdx new file mode 100644 index 00000000..58859523 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0006_engine-log.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "engine-log", title: "sgr engine log", sidebarTitle: "engine log", description: "Get logs from a Splitgraph engine."}; + +```sgr engine log [OPTIONS] [NAME]``` + +Get logs from a Splitgraph engine. + +### Options + + * **`-f, --follow`**: Stream logs diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0007_engine-configure.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0007_engine-configure.mdx new file mode 100644 index 00000000..1be8adcd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0007_engine-configure.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "engine-configure", title: "sgr engine configure", sidebarTitle: "engine configure", description: "Inject a configuration file into an engine."}; + +```sgr engine configure [OPTIONS] [NAME]``` + +Inject a configuration file into an engine. + +This copies the current .sgconfig file (pointed to by SG_CONFIG_FILE) into +the engine container, making it use that configuration for +when it's queried through an application other than the sgr client +(layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0008_engine-version.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0008_engine-version.mdx new file mode 100644 index 00000000..d47bfe05 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/0008_engine-version.mdx @@ -0,0 +1,5 @@ +export const meta = {id: "engine-version", title: "sgr engine version", sidebarTitle: "engine version", description: "Get version of Splitgraph engine."}; + +```sgr engine version [OPTIONS] [NAME]``` + +Get version of Splitgraph engine. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/metadata.json new file mode 100644 index 00000000..3f70a9d2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0002_engine-management/metadata.json @@ -0,0 +1 @@ +{"title": "Engine management"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/0000_csv-export.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/0000_csv-export.mdx new file mode 100644 index 00000000..8408f9f2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/0000_csv-export.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-export", title: "sgr csv export", sidebarTitle: "csv export", description: "Export the result of a query as CSV."}; + +```sgr csv export [OPTIONS] IMAGE_SPEC QUERY``` + +Export the result of a query as CSV. + +### Examples + +`sgr csv export noaa/climate "SELECT * FROM rainfall"` + +Output everything in the currently checked-out `"rainfall"` table as CSV. + +`sgr csv export noaa/climate:dec_2018 "SELECT * FROM rainfall WHERE state = 'AZ' -f dec_2018_az.csv` + +Check out the `dec_2018` tag of `noaa/climate` and output values from `"rainfall"` for Arizona to `dec_2018_az.csv` + +`sgr csv export --layered noaa/climate:abcdef1234567890 "SELECT * FROM rainfall JOIN other_table ON..."` + +Uses layered querying instead to execute a join on tables in a certain image (satisfying the query without +having to check the image out). + +### Options + + * **`-f, --file FILENAME`**: File name to export to, default stdout. + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/0001_csv-import.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/0001_csv-import.mdx new file mode 100644 index 00000000..5f3eb655 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/0001_csv-import.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-import", title: "sgr csv import", sidebarTitle: "csv import", description: "Import a CSV file into a checked-out Splitgraph repository."}; + +```sgr csv import [OPTIONS] REPOSITORY TABLE``` + +Import a CSV file into a checked-out Splitgraph repository. This doesn't create a new image, use `sgr commit` +after the import and any adjustments (e.g. adding primary keys or converting column types) to do so. + +If the target table doesn't exist, this will create a new table. + +If the target table does exist, this will try and patch the new values in by updating rows that exist in the +current table (as per its primary key constraints) and inserting new ones. Rows existing in the current table +but missing in the CSV won't be deleted. + +If `-r` is passed, the table will instead be deleted and recreated from the CSV file if it exists. + +### Options + + * **`-f, --file FILENAME`**: File name to import data from, default stdin. + * **`-r, --replace`**: Replace the table if it already exists. + * **`-k, --primary-key TEXT`**: Use the specified column(s) as primary key(s) + * **`-t, --override-type ...`**: Explicitly set types of these columns to PG types + * **`--encoding TEXT`**: Encoding to use for the CSV file + * **`--separator TEXT`**: CSV separator to use + * **`--no-header`**: Treats the first line of the CSV as data rather than a header. + * **`--skip-schema-check`**: Skips checking that the dataframe is compatible with the target schema. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/0002_mount.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/0002_mount.mdx new file mode 100644 index 00000000..85bcb7f5 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/0002_mount.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "mount", title: "sgr mount", sidebarTitle: "mount", description: "Mount foreign databases as Postgres schemas."}; + +```sgr mount [OPTIONS] ``` + +Mount foreign databases as Postgres schemas. + +Uses the Postgres FDW interface to create a local Postgres schema with foreign tables that map +to tables in other databases. + +See a given mount handler's documentation for handler-specific parameters. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/0003_singer-target.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/0003_singer-target.mdx new file mode 100644 index 00000000..c353a781 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/0003_singer-target.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "singer-target", title: "sgr singer target", sidebarTitle: "singer target", description: "Singer target that loads data into Splitgraph images."}; + +```sgr singer target [OPTIONS] IMAGE``` + +Singer target that loads data into Splitgraph images. + +This will read data from the stdin from a Singer-compatible tap and load it into +a Splitgraph image, merging data if the image already exists. + +Image must be of the format `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]` where `HASH_OR_TAG` +is a tag of an existing image to base the image on. If the repository doesn't exist, +it will be created. + +As this target consumes data from stdin, it will flush the records into a Splitgraph image. By +default, it will only keep the image if the whole stream has been successfully consumed. To +make this target completely follow the Singer spec (if it emits state, the records have been +flushed), pass --failure=keep-both or --failure=delete-old. To delete the old image on success, +pass --delete-old. + +### Options + + * **`-d, --delete-old`**: Delete the old image at the end of ingestion + * **`-f, --failure [keep-both|delete-old|delete-new]`**: What to do in case of a failure. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/metadata.json new file mode 100644 index 00000000..d82f5068 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0003_data-import-export/metadata.json @@ -0,0 +1 @@ +{"title": "Data import/export"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0000_rm.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0000_rm.mdx new file mode 100644 index 00000000..47baf9a3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0000_rm.mdx @@ -0,0 +1,40 @@ +export const meta = {id: "rm", title: "sgr rm", sidebarTitle: "rm", description: "Delete schemas, repositories or images."}; + +```sgr rm [OPTIONS] IMAGE_SPEC``` + +Delete schemas, repositories or images. + +If the target of this command is a Postgres schema, this performs DROP SCHEMA CASCADE. + +If the target of this command is a Splitgraph repository, this deletes the repository and all of its history. + +If the target of this command is an image, this deletes the image and all of its children. + +In any case, this command will ask for confirmation of the deletion, unless ``-y`` is passed. If ``-r`` +(``--remote``), is passed, this will perform deletion on a remote Splitgraph engine (registered in the config) +instead, assuming the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Examples + +``sgr rm temporary_schema`` + +Deletes ``temporary_schema`` from the local engine. + +``sgr rm --remote data.splitgraph.com username/repo`` + +Deletes ``username/repo`` from the Splitgraph registry. + +``sgr rm -y username/repo:old_branch`` + +Deletes the image pointed to by ``old_branch`` as well as all of its children (images created by a commit based +on this image), as well as all of the tags that point to now deleted images, without asking for confirmation. +Note this will not delete images that import tables from the deleted images via Splitfiles or indeed the +physical objects containing the actual tables. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0001_init.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0001_init.mdx new file mode 100644 index 00000000..e4ab8d4d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0001_init.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "init", title: "sgr init", sidebarTitle: "init", description: "Initialize a new repository/engine."}; + +```sgr init [OPTIONS] [REPOSITORY]``` + +Initialize a new repository/engine. + +### Examples + +`sgr init` + +Initializes the current local Splitgraph engine by writing some bookkeeping information. +This is required for the rest of sgr to work. + +`sgr init --skip-object-handling` + +Initializes a Splitgraph engine without installing audit triggers or object management routines: +this is useful for engines that aren't intended to be used for image checkouts. + +``sgr init new/repo`` + +Creates a single image with the hash ``00000...`` in ``new/repo`` + +### Options + + * **`--skip-object-handling`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0002_cleanup.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0002_cleanup.mdx new file mode 100644 index 00000000..c23688a4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0002_cleanup.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "cleanup", title: "sgr cleanup", sidebarTitle: "cleanup", description: "Prune unneeded objects from the engine."}; + +```sgr cleanup [OPTIONS] ``` + +Prune unneeded objects from the engine. + +This deletes all objects from the cache that aren't required by any local repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0003_prune.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0003_prune.mdx new file mode 100644 index 00000000..64c2d49b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0003_prune.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "prune", title: "sgr prune", sidebarTitle: "prune", description: "Cleanup dangling images from a repository."}; + +```sgr prune [OPTIONS] REPOSITORY``` + +Cleanup dangling images from a repository. + +This includes images not pointed to by any tags (or checked out) and those that aren't required by any of +such images. + +Will ask for confirmation of the deletion, unless ``-y ``is passed. If ``-r`` (``--remote``) is +passed, this will perform deletion on a remote Splitgraph engine (registered in the config) instead, assuming +the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0004_config.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0004_config.mdx new file mode 100644 index 00000000..7fcaa53c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0004_config.mdx @@ -0,0 +1,33 @@ +export const meta = {id: "config", title: "sgr config", sidebarTitle: "config", description: "Print the current Splitgraph configuration."}; + +```sgr config [OPTIONS] ``` + +Print the current Splitgraph configuration. + +This takes into account the local config file, the default values +and all overrides specified via environment variables. + +This command can be used to dump the current Splitgraph configuration into a file: + +``` +sgr config --no-shielding --config-format > .sgconfig +``` + +...or save a config file overriding an entry: + +``` +SG_REPO_LOOKUP=engine1,engine2 sgr config -sc > .sgconfig +``` + +If `--conn-string` is passed, this prints out a libpq connection string +that can be used to connect to the default Splitgraph engine with other tools: + +``` +pgcli $(sgr config -n) +``` + +### Options + + * **`-s, --no-shielding`**: If set, doesn't replace sensitive values (like passwords) with asterisks + * **`-c, --config-format`**: Output configuration in the Splitgraph config file format + * **`-n, --conn-string`**: Print a libpq connection string to the engine diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0005_dump.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0005_dump.mdx new file mode 100644 index 00000000..111baceb --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0005_dump.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "dump", title: "sgr dump", sidebarTitle: "dump", description: "Dump a repository to SQL."}; + +```sgr dump [OPTIONS] REPOSITORY``` + +Dump a repository to SQL. + +### Options + + * **`--exclude-object-contents`**: Don't dump the commands needed to recreate objects required by the repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0006_eval.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0006_eval.mdx new file mode 100644 index 00000000..5b4b7f0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0006_eval.mdx @@ -0,0 +1,39 @@ +export const meta = {id: "eval", title: "sgr eval", sidebarTitle: "eval", description: "Evaluate a Python snippet using the Splitgraph API."}; + +```sgr eval [OPTIONS] COMMAND``` + +Evaluate a Python snippet using the Splitgraph API. + +This is for advanced users only and should be only used +if you know what you are doing. + +Normal Python statements are supported and the command is evaluated +in a namespace where the following is already imported and available: + + * Repository: class that instantiates a Splitgraph repository and makes + API functions like .commit(), .checkout() etc available. + + * engine: Current local engine + + * object_manager: an instance of ObjectManager that allows + to get information about objects and manage the object cache. + + +Example: +``` +sgr eval 'import json; print(json.dumps(Repository\ + .from_schema(repo_name)\ + .images["latest"]\ + .get_table(table_name)\ + .table_schema))' \ +-a repo_name my_repo -a table_name my_table +``` + +Will dump the schema of table my_table in the most recent image in my_repo in JSON format. + +For more information, see the Splitgraph API reference. + +### Options + + * **`--i-know-what-im-doing`**: Pass this if you're sure that the code you're running is safe and don't want to be prompted. + * **`-a, --arg ...`**: Make extra variables available in the command's namespace diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0007_upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0007_upgrade.mdx new file mode 100644 index 00000000..188e798b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/0007_upgrade.mdx @@ -0,0 +1,17 @@ +export const meta = {id: "upgrade", title: "sgr upgrade", sidebarTitle: "upgrade", description: "Upgrade sgr client and engine."}; + +```sgr upgrade [OPTIONS] [VERSION]``` + +Upgrade sgr client and engine. + +This will try to download the most recent stable binary for the current platform +into the location this binary is running from and then upgrade the default engine. + +This method is only supported for single-binary installs and engines managed +by `sgr engine`. + +### Options + + * **`--skip-engine-upgrade`**: Only upgrade the client + * **`--path TEXT`**: Override the path to download the new binary to. + * **`--force`**: Reinstall older/same versions. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/metadata.json new file mode 100644 index 00000000..26f7a103 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0004_miscellaneous/metadata.json @@ -0,0 +1 @@ +{"title": "Miscellaneous"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/0000_clone.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/0000_clone.mdx new file mode 100644 index 00000000..7c2929bd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/0000_clone.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "clone", title: "sgr clone", sidebarTitle: "clone", description: "Clone a remote Splitgraph repository/image into a local one."}; + +```sgr clone [OPTIONS] REMOTE_REPOSITORY_OR_IMAGE [LOCAL_REPOSITORY]``` + +Clone a remote Splitgraph repository/image into a local one. + +The lookup path for the repository is governed by the ``SG_REPO_LOOKUP`` and ``SG_REPO_LOOKUP_OVERRIDE`` +config parameters and can be overridden by the command line ``--remote`` option. + +### Options + + * **`-r, --remote TEXT`**: Name of the remote engine + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/0001_push.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/0001_push.mdx new file mode 100644 index 00000000..7082172b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/0001_push.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "push", title: "sgr push", sidebarTitle: "push", description: "Push images to the Splitgraph registry or another engine."}; + +```sgr push [OPTIONS] REPOSITORY_OR_IMAGE [REMOTE_REPOSITORY]``` + +Push images to the Splitgraph registry or another engine. + +If an image is not specified (e.g. `sgr push noaa/climate`, this will push all new images. + +By default, the repository will be pushed to a repository with the same name in the user's namespace +(SG_NAMESPACE configuration value which defaults to the username). + +If there's a single engine registered in the config (e.g. data.splitgraph.com), it shall be the default +destination. + +If an upstream repository/engine has been configured for this engine with `sgr upstream`, +it will be used instead. + +Finally, if `remote_repository` or `--remote` are passed, they will take precedence. + +The actual objects will be uploaded to S3 using Minio. When pushing to another engine, +you can choose to upload them directly by passing `--handler DB`. + +### Options + + * **`-r, --remote []`**: Name of the remote engine + * **`-h, --upload-handler TEXT`**: Upload handler + * **`-o, --upload-handler-options JSON`**: Upload handler parameters + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing remote objects + * **`-t, --tags`**: Overwrite tags for pushed image/repo + * **`-u, --reupload-objects`**: Reupload objects that metadata is pushed out for diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/0002_pull.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/0002_pull.mdx new file mode 100644 index 00000000..d1b631d1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/0002_pull.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "pull", title: "sgr pull", sidebarTitle: "pull", description: "Pull changes / download a single image."}; + +```sgr pull [OPTIONS] REPOSITORY_OR_IMAGE``` + +Pull changes / download a single image. + +### Options + + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/0003_upstream.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/0003_upstream.mdx new file mode 100644 index 00000000..32f1d6ec --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/0003_upstream.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "upstream", title: "sgr upstream", sidebarTitle: "upstream", description: "Get or set the upstream for a repository."}; + +```sgr upstream [OPTIONS] REPOSITORY``` + +Get or set the upstream for a repository. + +This shows the default repository used for pushes and pulls as well as allows to change it to a different +remote engine and repository. + +The remote engine alias must exist in the config file. + +### Examples + +``sgr upstream my/repo --set splitgraph.com username/repo`` + +Sets the upstream for ``my/repo`` to ``username/repo`` existing on the ``splitgraph.com`` engine + +``sgr upstream my/repo --reset`` + +Removes the upstream for ``my/repo``. + +``sgr upstream my/repo`` + +Shows the current upstream for ``my/repo``. + +### Options + + * **`-s, --set ...`**: Set the upstream to a engine alias + repository + * **`-r, --reset`**: Delete the upstream diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/metadata.json new file mode 100644 index 00000000..b2c1ab8d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0005_sharing-images/metadata.json @@ -0,0 +1 @@ +{"title": "Sharing images"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/0000_build.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/0000_build.mdx new file mode 100644 index 00000000..2204aae2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/0000_build.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "build", title: "sgr build", sidebarTitle: "build", description: "Build Splitgraph images."}; + +```sgr build [OPTIONS] SPLITFILE``` + +Build Splitgraph images. + +This executes a Splitfile, building a new image or checking it out from cache if the same +image had already been built. + +### Examples + +``sgr build my.splitfile`` + +Executes ``my.splitfile`` and writes its output into a new repository with the same name +as the Splitfile (my) unless the name is specified in the Splitfile. + +``sgr build my.splitfile -o mynew/repo`` + +Executes ``my.splitfile`` and writes its output into ``mynew/repo``. + +``sgr build my_other.splitfile -o mynew/otherrepo --args PARAM1 VAL1 --args PARAM2 VAL2`` + +Executes ``my_other.splitfile`` with parameters ``PARAM1`` and ``PARAM2`` set to +``VAL1`` and ``VAL2``, respectively. + +### Options + + * **`-a, --args ...`**: Parameters to be substituted into the Splitfile. All parameters mentioned in the file must be specified in order for the Splitfile to be executed. + * **`-o, --output-repository REPOSITORY`**: Repository to store the result in. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/0001_rebuild.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/0001_rebuild.mdx new file mode 100644 index 00000000..8194b0f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/0001_rebuild.mdx @@ -0,0 +1,27 @@ +export const meta = {id: "rebuild", title: "sgr rebuild", sidebarTitle: "rebuild", description: "Rebuild images against different dependencies."}; + +```sgr rebuild [OPTIONS] IMAGE_SPEC``` + +Rebuild images against different dependencies. + +Examines the provenance of a Splitgraph image created by a Splitfile and reruns it against different images than +the ones that were imported by the original run. + +### Examples + +``sgr rebuild my/repo --against noaa/climate:old_data`` + +Reconstructs the Splitfile used to create ``my/repo:latest``, replaces all imports from ``noaa/climate`` with +imports from ``noaa/climate:old_data`` and reruns the Splitfile. + +``sgr rebuild my/repo:other_tag -u`` + +Rebuilds ``my_repo:other_tag`` against the latest versions of all of its dependencies. + +Image caching still works in this case: if the result of the rebuild already exists, the image will be checked +out. + +### Options + + * **`-u, --update`**: Rederive the image against the latest version of all dependencies. + * **`-a, --against IMAGE`**: Images to substitute into the reconstructed Splitfile, of the form [NAMESPACE/]REPOSITORY[:HASH_OR_TAG]. Default tag is 'latest'. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/0002_provenance.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/0002_provenance.mdx new file mode 100644 index 00000000..45d3a5a8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/0002_provenance.mdx @@ -0,0 +1,62 @@ +export const meta = {id: "provenance", title: "sgr provenance", sidebarTitle: "provenance", description: "Reconstruct the provenance of an image."}; + +```sgr provenance [OPTIONS] IMAGE_SPEC``` + +Reconstruct the provenance of an image. + +This inspects the image to produce a list of images that were used by the Splitfile +that created it, or a Splitfile with the same effect. + +`IMAGE_SPEC` must be of the form `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]`. +If no tag is specified, `latest` is used. + +### Examples + +Assume `my/repo` is produced by the following Splitfile: + +``` +FROM MOUNT [...] IMPORT external_table +FROM noaa/climate IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} AS rainfall_data +``` + +`my/repo` will have 2 images: one having `hash_1` (with the `external_table` imported from a mounted database) +and one having `hash_2` (with both `external_table` and the `rainfall_data` containing the result +of the query run against the then-latest image in the `noaa/climate` repository). + +In this case: + +``` +sgr provenance my/repo +``` + +Returns a list of repositories and images that were imported by the Splitfile that constructed this image:: + +``` +my/repo:[hash_2] depends on: +noaa/climate:[hash_3] +``` + +Where `hash_3` is the hash of the latest image in the `noaa/climate` repository at the time the original +Splitfile was run. However: + +``` +sgr provenance -f my/repo +``` + +Will try to reconstruct the Splitfile that can be used to build this image. Since the FROM MOUNT command isn't +reproducible (requires access to the original external database, which is a moving target), this will fail. + +If `-e` is passed, this will emit information about irreproducible commands instead of failing. + +``` +sgr provenance -ef my/repo + +# Splitfile commands used to reconstruct my/repo:[image_hash] +# Irreproducible Splitfile command of type MOUNT +FROM noaa/climate:[hash_3] IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} +``` + +### Options + + * **`-f, --full`**: Recreate the Splitfile used to create this image + * **`-e, --ignore-errors`**: If set, ignore commands that aren't reproducible (like MOUNT or custom commands) diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/0003_dependents.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/0003_dependents.mdx new file mode 100644 index 00000000..fc8bc234 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/0003_dependents.mdx @@ -0,0 +1,21 @@ +export const meta = {id: "dependents", title: "sgr dependents", sidebarTitle: "dependents", description: "List images that were created from an image."}; + +```sgr dependents [OPTIONS] IMAGE_SPEC``` + +List images that were created from an image. + +This is the inverse of the sgr provenance command. It will list all images that were +created using a Splitfile that imported data from this image. + +By default, this will look at images on the local engine. The engine can be overridden +with --source-on and --dependents-on. For example: + + sgr dependents --source-on data.splitgraph.com --dependents-on LOCAL noaa/climate:latest + +will show all images on the local engine that derived data from `noaa/climate:latest` +on the Splitgraph registry. + +### Options + + * **`-O, --source-on TEXT`**: Override the engine to look the source up on + * **`-o, --dependents-on TEXT`**: Override the engine to list dependents from diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/metadata.json new file mode 100644 index 00000000..50afd08a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0006_splitfile-execution/metadata.json @@ -0,0 +1 @@ +{"title": "Splitfile execution"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0000_cloud-add.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0000_cloud-add.mdx new file mode 100644 index 00000000..9eba1036 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0000_cloud-add.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "cloud-add", title: "sgr cloud add", sidebarTitle: "cloud add", description: "Add a remote Splitgraph registry to .sgconfig with default parameters"}; + +```sgr cloud add [OPTIONS] DOMAIN_NAME``` + +Add a remote Splitgraph registry to .sgconfig with default parameters + +### Options + + * **`--remote TEXT`**: Name for the remote (infer from the domain name by default) + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0001_cloud-register.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0001_cloud-register.mdx new file mode 100644 index 00000000..089ce0c6 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0001_cloud-register.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "cloud-register", title: "sgr cloud register", sidebarTitle: "cloud register", description: "Register the user on a Splitgraph registry."}; + +```sgr cloud register [OPTIONS] ``` + +Register the user on a Splitgraph registry. + +By default, this registers the user on data.splitgraph.com, +obtains a set of machine (API) credentials for the client to communicate +with the registry and configures the data.splitgraph.com engine. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--email TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to register on. + * **`--accept-tos`**: Accept the registry's Terms of Service + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0002_cloud-login.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0002_cloud-login.mdx new file mode 100644 index 00000000..cb99d6c1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0002_cloud-login.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "cloud-login", title: "sgr cloud login", sidebarTitle: "cloud login", description: "Log into a Splitgraph registry with username/password."}; + +```sgr cloud login [OPTIONS] ``` + +Log into a Splitgraph registry with username/password. + +This will generate a new refresh token (to use the Splitgraph query API) +and API keys to let sgr access the registry (if they don't already exist +in the configuration file or if the actual username has changed). + +Note that if you already have generated an API key pair but it's not +in the configuration file, this will generate a new pair instead of +restoring the existing one, as the API secret is only stored in the configuration file. + +If you want to log in using an existing API key pair, use `sgr cloud login-api` instead. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`--overwrite`**: Overwrite old API keys in the config if they exist + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0003_cloud-login-api.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0003_cloud-login-api.mdx new file mode 100644 index 00000000..4007fe22 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0003_cloud-login-api.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "cloud-login-api", title: "sgr cloud login-api", sidebarTitle: "cloud login-api", description: "Log into a Splitgraph registry using existing API keys."}; + +```sgr cloud login-api [OPTIONS] ``` + +Log into a Splitgraph registry using existing API keys. + +This will inject the API keys for the registry into the configuration file +and generate a new access token. + +### Options + + * **`--api-key TEXT`**: + * **`--api-secret TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0004_cloud-sql.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0004_cloud-sql.mdx new file mode 100644 index 00000000..56c4be0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0004_cloud-sql.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "cloud-sql", title: "sgr cloud sql", sidebarTitle: "cloud sql", description: "Run SQL on or connect to the Splitgraph Data Delivery Network."}; + +```sgr cloud sql [OPTIONS] [QUERY]``` + +Run SQL on or connect to the Splitgraph Data Delivery Network. + +If a query isn't passed, this will return a libpq-compatible connection string to +the registry's SQL endpoint. It can be used to connect to the endpoint with other SQL clients: + +``` +pgcli $(sgr cloud sql) +``` + +If a query is passed, this will run an SQL query against the SQL endpoint. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0005_cloud-curl.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0005_cloud-curl.mdx new file mode 100644 index 00000000..e902965b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0005_cloud-curl.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "cloud-curl", title: "sgr cloud curl", sidebarTitle: "cloud curl", description: "Query a Splitgraph REST API."}; + +```sgr cloud curl [OPTIONS] IMAGE [REQUEST_PARAMS]``` + +Query a Splitgraph REST API. + +This is a thin wrapper around curl that performs an HTTP request to Splitgraph Cloud to +interact with a dataset using PostgREST (http://postgrest.org) or the Splitfile execution service. + +The actual invocation is: + +``` +curl [API endpoint][request] -H [access_token] [extra curl args]. +``` + +The image must be of the form `namespace/repository:[hash_or_tag (default latest)]`. + +The actual request parameters depend on the request type: + + * For PostgREST: `/table?[postgrest request]` or empty to get the OpenAPI spec for this image. + For a reference on how to perform Postgrest requests, see http://postgrest.org/en/latest/api.html. + * For the Splitfile executor: a JSON array to be POSTed to the executor, e.g. + `'{"command": "FROM some/repo IMPORT some_table AS alias", "tag": "new_tag"}'`. + +`--curl-args` allows to pass extra arguments to curl. Note that every argument must be prefixed +with `--curl-args`, e.g. `--curl-args --cacert --curl-args /path/to/ca.pem`. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-t, --request-type [postgrest|splitfile]`**: + * **`-c, --curl-args TEXT`**: Extra arguments to be passed to curl diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0006_cloud-readme.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0006_cloud-readme.mdx new file mode 100644 index 00000000..4ee4cf56 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0006_cloud-readme.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-readme", title: "sgr cloud readme", sidebarTitle: "cloud readme", description: "Upload a README to a Splitgraph repository."}; + +```sgr cloud readme [OPTIONS] REPOSITORY README``` + +Upload a README to a Splitgraph repository. + +The repository must have already been pushed. The README must be a file in Markdown format. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0007_cloud-description.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0007_cloud-description.mdx new file mode 100644 index 00000000..003c953f --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0007_cloud-description.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-description", title: "sgr cloud description", sidebarTitle: "cloud description", description: "Upload a description to a Splitgraph repository."}; + +```sgr cloud description [OPTIONS] REPOSITORY DESCRIPTION``` + +Upload a description to a Splitgraph repository. + +The repository must have already been pushed. The description should be plain text, 160 characters or shorter. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0008_cloud-metadata.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0008_cloud-metadata.mdx new file mode 100644 index 00000000..01b2f064 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0008_cloud-metadata.mdx @@ -0,0 +1,41 @@ +export const meta = {id: "cloud-metadata", title: "sgr cloud metadata", sidebarTitle: "cloud metadata", description: "Upload a metadata file to a Splitgraph repository."}; + +```sgr cloud metadata [OPTIONS] REPOSITORY [METADATA_FILE]``` + +Upload a metadata file to a Splitgraph repository. + +This can manipulate the repository's short description, README, topics, license, sources and extra metadata. + +The metadata file must be a YAML file. Omitting a key doesn't delete the value. + +For example: + + +``` +readme: dataset-readme.md +description: Dataset description (160 characters max). +topics: + - topic_1 + - topic_2 +sources: + - anchor: Source + href: https://www.splitgraph.com + isCreator: true + isSameAs: false + - anchor: Source 2 + href: https://www.splitgraph.com + isCreator: false + isSameAs: true +license: Public Domain +extra_metadata: + key_1: + key_1_1: value_1_1 + key_1_2: value_1_2 + key_2: + key_2_1: value_2_1 + key_2_2: value_2_2 +``` + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0009_cloud-search.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0009_cloud-search.mdx new file mode 100644 index 00000000..c23c31f4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0009_cloud-search.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "cloud-search", title: "sgr cloud search", sidebarTitle: "cloud search", description: "Search for a repository on the Splitgraph registry."}; + +```sgr cloud search [OPTIONS] QUERY``` + +Search for a repository on the Splitgraph registry. + +For more advanced search, including filtering by topics, go to the registry's website itself. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--limit INTEGER RANGE`**: Number of results to return diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0010_cloud-dump.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0010_cloud-dump.mdx new file mode 100644 index 00000000..8441621e --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0010_cloud-dump.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "cloud-dump", title: "sgr cloud dump", sidebarTitle: "cloud dump", description: "Dump a Splitgraph catalog to a YAML file."}; + +```sgr cloud dump [OPTIONS] [LIMIT_REPOSITORIES]...``` + +Dump a Splitgraph catalog to a YAML file. + +This creates a repositories.yml file in the target directory as well as a subdirectory `readmes` +with all the repository readmes. This file can be used to recreate all catalog metadata +and all external data source settings for a repository using `sgr cloud load`. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--readme-dir TEXT`**: Directory to dump the data into + * **`-f, --repositories-file FILENAME`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0011_cloud-load.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0011_cloud-load.mdx new file mode 100644 index 00000000..123bbb43 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0011_cloud-load.mdx @@ -0,0 +1,67 @@ +export const meta = {id: "cloud-load", title: "sgr cloud load", sidebarTitle: "cloud load", description: "Load a Splitgraph catalog from a YAML file."}; + +```sgr cloud load [OPTIONS] [LIMIT_REPOSITORIES]...``` + +Load a Splitgraph catalog from a YAML file. + +This will load a repositories.yml file and the `readmes` subdirectory produced by +`sgr cloud dump` back into a remote Splitgraph catalog. + +The format is an extension of the format accepted by `sgr cloud metadata` to include multiple +repositories. README files are read from the `readmes` subdirectory. + + +``` +credentials: # Optional credentials to access remote data sources + my_bucket: + plugin: csv + data: + s3_access_key: ... + s3_secret_key: ... +repositories: +- namespace: my_username + repository: repository + metadata: + readme: dataset-readme.md + description: Dataset description (160 characters max). + topics: + - topic_1 + - topic_2 + sources: + - anchor: Source + href: https://www.splitgraph.com + isCreator: true + isSameAs: false + - anchor: Source 2 + href: https://www.splitgraph.com + isCreator: false + isSameAs: true + license: Public Domain + extra_metadata: + key_1: + key_1_1: value_1_1 + key_1_2: value_1_2 + key_2: + key_2_1: value_2_1 + key_2_2: value_2_2 + external: + credential: my_bucket + plugin: csv + params: + s3_bucket: my_bucket + tables: + table_1: + schema: + - name: column_1 + type: text + - name: column_2 + type: integer + options: + s3_object: some/s3_key.csv +``` + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--readme-dir TEXT`**: Path to the directory with the README files + * **`-f, --repositories-file FILENAME`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0012_cloud-token.mdx b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0012_cloud-token.mdx new file mode 100644 index 00000000..5cea68fa --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/0012_cloud-token.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "cloud-token", title: "sgr cloud token", sidebarTitle: "cloud token", description: "Output an up-to-date access token for a remote."}; + +```sgr cloud token [OPTIONS] ``` + +Output an up-to-date access token for a remote. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/metadata.json new file mode 100644 index 00000000..25ba655e --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/0007_splitgraph-cloud/metadata.json @@ -0,0 +1 @@ +{"title": "Splitgraph Cloud"} diff --git a/content/docs/9000_sgr/9000_versions/v0.2.18/metadata.json b/content/docs/9000_sgr/9000_versions/v0.2.18/metadata.json new file mode 100644 index 00000000..effac7e8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.2.18/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.18", + "updated_at": "2022-01-20T00:00:36.607Z", + "release": { + "id": 53567785, + "tag_name": "v0.2.18", + "target_commitish": "cc98bd8a87b1252d69f31a8f066818e2a4b7bb70", + "created_at": "2021-11-17T15:11:01Z", + "published_at": "2021-11-17T15:51:54Z", + "assets": [ + { + "id": 49679059, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/49679059", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-11-17T15:39:42Z", + "updated_at": "2021-11-17T15:39:43Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.18/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0000_checkout.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0000_checkout.mdx new file mode 100644 index 00000000..cc805a26 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0000_checkout.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "checkout", title: "sgr checkout", sidebarTitle: "checkout", description: "Check out a Splitgraph image into a Postgres schema."}; + +```sgr checkout [OPTIONS] IMAGE_SPEC``` + +Check out a Splitgraph image into a Postgres schema. + +This downloads the required physical objects and materializes all tables, unless ``-l`` or ``--layered`` is passed, +in which case the objects are downloaded and a foreign data wrapper is set up on the engine to satisfy read-only +queries by combining results from each table's fragments. + +Tables checked out in this way are still presented as normal Postgres tables and can queried in the same way. +Since the tables aren't materialized, layered querying is faster to set up, but since each query now results in a +subquery to each object comprising the table, actual query execution is slower than to materialized Postgres tables. + +Layered querying is only supported for read-only queries. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. Note that currently, the schema that the +image is checked out into has to have the same name as the repository. If no image hash or tag is passed, +"HEAD" is assumed. + +If ``-u`` or ``--uncheckout`` is passed, this instead deletes the checked out schema (assuming there are no pending +changes) and removes the HEAD pointer. + +If ``--force`` isn't passed and the schema has pending changes, this will fail. + +### Options + + * **`-f, --force`**: Discard all pending changes to the schema + * **`-u, --uncheckout`**: Delete the checked out copy instead + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0001_commit.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0001_commit.mdx new file mode 100644 index 00000000..9a2ec1f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0001_commit.mdx @@ -0,0 +1,59 @@ +export const meta = {id: "commit", title: "sgr commit", sidebarTitle: "commit", description: "Commit changes to a checked-out Splitgraph repository."}; + +```sgr commit [OPTIONS] REPOSITORY``` + +Commit changes to a checked-out Splitgraph repository. + +This packages up all changes into a new image. Where a table hasn't been created or had its schema changed, +this will delta compress the changes. For all other tables (or if ``-s`` has been passed), this will +store them as full table snapshots. + +When a table is stored as a full snapshot, `--chunk-size` sets the maximum size, in rows, of the fragments +that the table will be split into (default is no splitting). The splitting is done by the +table's primary key. + +If `--split-changesets` is passed, delta-compressed changes will also be split up according to the original +table chunk boundaries. For example, if there's a change to the first and the 20000th row of a table that was +originally committed with `--chunk-size=10000`, this will create 2 fragments: one based on the first chunk +and one on the second chunk of the table. + +If `--chunk-sort-keys` is passed, data inside the chunk is sorted by this key (or multiple keys). +This helps speed up queries on those keys for storage layers than can leverage that (e.g. CStore). The expected format is JSON, e.g. `{table_1: [col_1, col_2]}` + +`--index-options` expects a JSON-serialized dictionary of `{table: index_type: column: index_specific_kwargs}`. +Indexes are used to narrow down the amount of chunks to scan through when running a query. By default, each column +has a range index (minimum and maximum values) and it's possible to add bloom filtering to speed up queries that +involve equalities. + +Bloom filtering allows to trade off between the space overhead of the index and the probability of a false +positive (claiming that an object contains a record when it actually doesn't, leading to extra scans). + +An example `index-options` dictionary: + + +``` +{ + "table": { + "bloom": { + "column_1": { + "probability": 0.01, # Only one of probability + "size": 10000 # or size can be specified. + } + }, + # Only compute the range index on these columns. By default, + # it's computed on all columns and is always computed on the + # primary key no matter what. + "range": ["column_2", "column_3"] + } +} +``` + +### Options + + * **`-s, --snap`**: Do not delta compress the changes and instead store the whole table again. This consumes more space, but makes checkouts faster. + * **`-c, --chunk-size INTEGER`**: Split new tables into chunks of this many rows (by primary key). The default value is governed by the SG_COMMIT_CHUNK_SIZE configuration parameter. + * **`-k, --chunk-sort-keys JSON`**: Sort the data inside each chunk by this/these key(s) + * **`-t, --split-changesets`**: Split changesets for existing tables across original chunk boundaries. + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate on the new objects. + * **`-m, --message TEXT`**: Optional commit message + * **`-o, --overwrite`**: Overwrite physical objects that already exist diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0002_tag.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0002_tag.mdx new file mode 100644 index 00000000..89f01837 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0002_tag.mdx @@ -0,0 +1,36 @@ +export const meta = {id: "tag", title: "sgr tag", sidebarTitle: "tag", description: "Manage tags on images."}; + +```sgr tag [OPTIONS] IMAGE_SPEC [TAG]``` + +Manage tags on images. + +Depending on the exact invocation, this command can tag a Splitgraph image, +list all tags in a repository or delete a tag. + +### Examples + +``sgr tag noaa/climate`` + +List all tagged images in the ``noaa/climate`` repository and their tags. + +``sgr tag noaa/climate:abcdef1234567890`` + +List all tags assigned to the image ``noaa/climate:abcdef1234567890...`` + +``sgr tag noaa/climate:abcdef1234567890 my_new_tag`` + +Tag the image ``noaa/climate:abcdef1234567890...`` with ``my_new_tag``. If the tag already exists, this will +overwrite the tag. + +``sgr tag noaa/climate my_new_tag`` + +Tag the current ``HEAD`` of ``noaa/climate`` with ``my_new_tag``. + +``sgr tag --delete noaa/climate:my_new_tag`` + +Delete the tag ``my_new_tag`` from ``noaa/climate``. + +### Options + + * **`-d, --delete`**: Delete the tag instead. + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0003_import.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0003_import.mdx new file mode 100644 index 00000000..b69bbfb4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0003_import.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "import", title: "sgr import", sidebarTitle: "import", description: "Import tables into a Splitgraph repository."}; + +```sgr import [OPTIONS] IMAGE_SPEC TABLE_OR_QUERY TARGET_REPOSITORY [TARGET_TABLE]``` + +Import tables into a Splitgraph repository. + +Imports a table or a result of a query from a local Splitgraph repository or a Postgres schema into another +Splitgraph repository. + +### Examples + +``sgr import noaa/climate:my_tag climate_data my/repository`` + +Create a new image in ``my/repository`` with the ``climate_data`` table included. This links the new image to +the physical object, meaning that the history of the ``climate_data`` table is preserved. + +If no tag is specified, the 'latest' (not the HEAD image or current state of the checked out image) +image is used. + +``sgr import noaa/climate:my_tag "SELECT * FROM climate_data" my/repository climate_data`` + +Create a new image in ``my/repository`` with the result of the query stored in the ``climate_data`` table. This +creates a new physical object without any linkage to the original data, so the history of the ``climate_data`` +table isn't preserved. The SQL query can interact with multiple tables in the source image. + +``sgr import other_schema other_table my/repository`` + +Since other_schema isn't a Splitgraph repository, this will copy ``other_schema.other_table`` +into a new Splitgraph object and add the ``other_table`` table to a new image in ``my/repository``. + +Note that importing doesn't discard or commit pending changes in the target Splitgraph repository: a new image +is created with the new table added, the new table is materialized in the repository and the HEAD pointer is moved. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0004_reindex.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0004_reindex.mdx new file mode 100644 index 00000000..b640ffe3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/0004_reindex.mdx @@ -0,0 +1,19 @@ +export const meta = {id: "reindex", title: "sgr reindex", sidebarTitle: "reindex", description: "Run extra indexes on a table."}; + +```sgr reindex [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Run extra indexes on a table. This will merge the indexing results for all objects +that a table is formed from with the current object indexes. For explanation of +what indexes do, see the documentation for `sgr commit`. + +If the objects haven't been downloaded yet, this will download them. + +Currently reindexing objects that change other objects is unsupported and will raise +an error. Pass `-o` to ignore these objects and only reindex supported objects. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-i, --index-options JSON`**: JSON dictionary of extra indexes to calculate, e.g. '{"bloom": {"column_1": {"probability": 0.01}}}' [required] + * **`-o, --ignore-patch-objects`**: Ignore objects that change other objects' rows instead of raising an error diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/metadata.json b/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/metadata.json new file mode 100644 index 00000000..9ef75b16 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0000_image-management-creation/metadata.json @@ -0,0 +1 @@ +{"title": "Image management/creation"} diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0000_log.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0000_log.mdx new file mode 100644 index 00000000..db5078b4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0000_log.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "log", title: "sgr log", sidebarTitle: "log", description: "Show the history of a Splitgraph repository/image."}; + +```sgr log [OPTIONS] IMAGE_SPEC``` + +Show the history of a Splitgraph repository/image. + +By default, this shows the history of the current branch, starting from the HEAD pointer and following its +parent chain. + +Alternatively, it can follow the parent chain of any other image. + +If ``-t`` or ``--tree`` is passed, this instead renders the full image tree. The repository doesn't need to have +been checked out in this case. + +### Options + + * **`-t, --tree`**: + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0001_diff.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0001_diff.mdx new file mode 100644 index 00000000..8ef569e8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0001_diff.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "diff", title: "sgr diff", sidebarTitle: "diff", description: "Show differences between two Splitgraph images."}; + +```sgr diff [OPTIONS] REPOSITORY [TAG_OR_HASH_1] [TAG_OR_HASH_2]``` + +Show differences between two Splitgraph images. + +The two images must be in the same repository. The actual targets of this command depend +on the number of arguments passed: + +``sgr diff REPOSITORY`` + +Return the differences between the current HEAD image and the checked out schema. + +``sgr diff REPOSITORY TAG_OR_HASH`` + +Return the differences between the image and its parent. + +``sgr diff REPOSITORY TAG_OR_HASH_1 TAG_OR_HASH_2`` + +Return the differences from the first (earlier) image to the second image. + +### Options + + * **`-v, --verbose`**: Include the actual differences rather than just the total number of updated rows. + * **`-t, --table-name TEXT`**: Show the differences for a single table. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0002_object.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0002_object.mdx new file mode 100644 index 00000000..ff8c38a9 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0002_object.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "object", title: "sgr object", sidebarTitle: "object", description: "Show information about a Splitgraph object."}; + +```sgr object [OPTIONS] OBJECT_ID``` + +Show information about a Splitgraph object. + +Objects, or fragments, are building blocks of Splitgraph tables: each table consists of multiple immutable fragments +that can partially overwrite each other. Each fragment might have a parent that it depends on. In addition, +the smallest and largest values for every column are stored in the fragment's metadata. This information is used +to choose which objects to download in order to execute a query against a table. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0003_objects.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0003_objects.mdx new file mode 100644 index 00000000..c56fa727 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0003_objects.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "objects", title: "sgr objects", sidebarTitle: "objects", description: "List objects known to this engine."}; + +```sgr objects [OPTIONS] ``` + +List objects known to this engine. + +### Options + + * **`--local`**: Show only objects that are physically present on this engine diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0004_show.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0004_show.mdx new file mode 100644 index 00000000..4ddcc55d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0004_show.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "show", title: "sgr show", sidebarTitle: "show", description: "Show information about a Splitgraph image."}; + +```sgr show [OPTIONS] IMAGE_SPEC``` + +Show information about a Splitgraph image. This includes its parent, comment, size and creation time. + +Note that the size isn't the on-disk footprint, as the image might share some objects with other images +or if some of the image's objects have not been downloaded. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0005_table.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0005_table.mdx new file mode 100644 index 00000000..cc681c85 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0005_table.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "table", title: "sgr table", sidebarTitle: "table", description: "Show information about a table in a Splitgraph image."}; + +```sgr table [OPTIONS] IMAGE_SPEC TABLE_NAME``` + +Show information about a table in a Splitgraph image. + +Image spec must be of the format ``[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]``. If no tag is specified, ``HEAD`` is used. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-v, --verbose`**: Show all of table's objects. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0006_sql.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0006_sql.mdx new file mode 100644 index 00000000..ea8a304b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0006_sql.mdx @@ -0,0 +1,34 @@ +export const meta = {id: "sql", title: "sgr sql", sidebarTitle: "sql", description: "Run an SQL statement against the Splitgraph engine."}; + +```sgr sql [OPTIONS] SQL``` + +Run an SQL statement against the Splitgraph engine. + +There are no restrictions on the contents of the statement: this is the same as running it +from any other PostgreSQL client. + +If ``--schema`` is specified, the statement is run with the ``search_path`` set to that schema. This means +that these statements are equivalent: + + +``` +sgr sql "SELECT * FROM "noaa/climate".table" +sgr sql -s noaa/climate "SELECT * FROM table" +``` + +If `--image` is specified, this will run the statement against that image using layered querying. +Only read-only statements are supported. For example: + + +``` +sgr sql -i noaa/climate:latest "SELECT * FROM table" +``` + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-s, --schema TEXT`**: Run SQL against this schema. + * **`-i, --image IMAGE`**: Run SQL against this image. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON + * **`-n, --no-transaction`**: Don't wrap the SQL in a transaction. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0007_status.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0007_status.mdx new file mode 100644 index 00000000..5e312f11 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/0007_status.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "status", title: "sgr status", sidebarTitle: "status", description: "Show the status of the Splitgraph engine."}; + +```sgr status [OPTIONS] [REPOSITORY]``` + +Show the status of the Splitgraph engine. + +If a repository is passed, show in-depth information about a repository. + +If not, show information about all repositories local to the engine. This will show a list +of all repositories, number of local images and tags, total repository size (theoretical +maximum size and current on-disk footprint of cached objects) and the current checked +out image (with LQ if the image is checked out using read-only layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/metadata.json b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/metadata.json new file mode 100644 index 00000000..a2c3f0f8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0001_image-information/metadata.json @@ -0,0 +1 @@ +{"title": "Image information"} diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0000_engine-add.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0000_engine-add.mdx new file mode 100644 index 00000000..cc6ef138 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0000_engine-add.mdx @@ -0,0 +1,27 @@ +export const meta = {id: "engine-add", title: "sgr engine add", sidebarTitle: "engine add", description: "Create and start a Splitgraph engine."}; + +```sgr engine add [OPTIONS] [NAME]``` + +Create and start a Splitgraph engine. + +This will pull the Splitgraph engine image, start it, create a Postgres user and initialize +the engine. + +This also creates Docker volumes required to persist data/metadata. + +The engine Docker container by default will be named `splitgraph_engine_default` and +its data and metadata volumes will have names `splitgraph_engine_default_data` and +`splitgraph_engine_default_metadata`. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`-p, --port INTEGER`**: Port to start the engine on + * **`-u, --username TEXT`**: + * **`--no-init`**: Don't run `sgr init` on the engine + * **`--no-sgconfig`**: Don't add the engine to .sgconfig + * **`--inject-source`**: Inject the current Splitgraph source code into the engine using Docker bind mounts + * **`--no-pull`**: Don't pull the Docker image + * **`--set-default`**: Set the engine as the default engine in the config regardless of its name + * **`--cap-add TEXT`**: Add kernel capabilities to the engine container + * **`--password TEXT`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0001_engine-delete.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0001_engine-delete.mdx new file mode 100644 index 00000000..6229e082 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0001_engine-delete.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "engine-delete", title: "sgr engine delete", sidebarTitle: "engine delete", description: "Delete the Splitgraph engine container."}; + +```sgr engine delete [OPTIONS] [NAME]``` + +Delete the Splitgraph engine container. + +### Options + + * **`-y, --yes`**: Do not prompt for confirmation. + * **`-f, --force`**: Delete the engine anyway if it's running. + * **`-v, --with-volumes`**: Include the engine's volumes (if not specified, volumes will be reattached when an engine with the same name is created). diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0002_engine-list.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0002_engine-list.mdx new file mode 100644 index 00000000..a2530db2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0002_engine-list.mdx @@ -0,0 +1,13 @@ +export const meta = {id: "engine-list", title: "sgr engine list", sidebarTitle: "engine list", description: "List Splitgraph engines."}; + +```sgr engine list [OPTIONS] ``` + +List Splitgraph engines. + +This only lists Docker containers that were created by sgr engine +(whose names start with `splitgraph_engine_`. To manage other engines, +use Docker CLI directly. + +### Options + + * **`-a, --include-all`**: Include stopped engine containers. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0003_engine-start.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0003_engine-start.mdx new file mode 100644 index 00000000..4c9cdf6c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0003_engine-start.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-start", title: "sgr engine start", sidebarTitle: "engine start", description: "Start a Splitgraph engine."}; + +```sgr engine start [OPTIONS] [NAME]``` + +Start a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0004_engine-stop.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0004_engine-stop.mdx new file mode 100644 index 00000000..7ea64786 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0004_engine-stop.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "engine-stop", title: "sgr engine stop", sidebarTitle: "engine stop", description: "Stop a Splitgraph engine."}; + +```sgr engine stop [OPTIONS] [NAME]``` + +Stop a Splitgraph engine. + +This is a wrapper around the corresponding Docker command. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0005_engine-upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0005_engine-upgrade.mdx new file mode 100644 index 00000000..751cd998 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0005_engine-upgrade.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "engine-upgrade", title: "sgr engine upgrade", sidebarTitle: "engine upgrade", description: "Upgrade a Splitgraph engine."}; + +```sgr engine upgrade [OPTIONS] [NAME]``` + +Upgrade a Splitgraph engine. + +This consists of shutting down the current Splitgraph engine, +deleting its Docker container (keeping the actual data and +metadata volumes intact), creating a container based on a newer +image and finally reinitializing the engine to perform needed migrations. + +### Options + + * **`-i, --image TEXT`**: Docker image with the Splitgraph engine + * **`--no-pull`**: Don't pull the new engine image diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0006_engine-log.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0006_engine-log.mdx new file mode 100644 index 00000000..58859523 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0006_engine-log.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "engine-log", title: "sgr engine log", sidebarTitle: "engine log", description: "Get logs from a Splitgraph engine."}; + +```sgr engine log [OPTIONS] [NAME]``` + +Get logs from a Splitgraph engine. + +### Options + + * **`-f, --follow`**: Stream logs diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0007_engine-configure.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0007_engine-configure.mdx new file mode 100644 index 00000000..1be8adcd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0007_engine-configure.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "engine-configure", title: "sgr engine configure", sidebarTitle: "engine configure", description: "Inject a configuration file into an engine."}; + +```sgr engine configure [OPTIONS] [NAME]``` + +Inject a configuration file into an engine. + +This copies the current .sgconfig file (pointed to by SG_CONFIG_FILE) into +the engine container, making it use that configuration for +when it's queried through an application other than the sgr client +(layered querying). diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0008_engine-version.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0008_engine-version.mdx new file mode 100644 index 00000000..d47bfe05 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/0008_engine-version.mdx @@ -0,0 +1,5 @@ +export const meta = {id: "engine-version", title: "sgr engine version", sidebarTitle: "engine version", description: "Get version of Splitgraph engine."}; + +```sgr engine version [OPTIONS] [NAME]``` + +Get version of Splitgraph engine. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/metadata.json b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/metadata.json new file mode 100644 index 00000000..3f70a9d2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0002_engine-management/metadata.json @@ -0,0 +1 @@ +{"title": "Engine management"} diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/0000_csv-export.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/0000_csv-export.mdx new file mode 100644 index 00000000..8408f9f2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/0000_csv-export.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-export", title: "sgr csv export", sidebarTitle: "csv export", description: "Export the result of a query as CSV."}; + +```sgr csv export [OPTIONS] IMAGE_SPEC QUERY``` + +Export the result of a query as CSV. + +### Examples + +`sgr csv export noaa/climate "SELECT * FROM rainfall"` + +Output everything in the currently checked-out `"rainfall"` table as CSV. + +`sgr csv export noaa/climate:dec_2018 "SELECT * FROM rainfall WHERE state = 'AZ' -f dec_2018_az.csv` + +Check out the `dec_2018` tag of `noaa/climate` and output values from `"rainfall"` for Arizona to `dec_2018_az.csv` + +`sgr csv export --layered noaa/climate:abcdef1234567890 "SELECT * FROM rainfall JOIN other_table ON..."` + +Uses layered querying instead to execute a join on tables in a certain image (satisfying the query without +having to check the image out). + +### Options + + * **`-f, --file FILENAME`**: File name to export to, default stdout. + * **`-l, --layered`**: Don't materialize the tables, use layered querying instead. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/0001_csv-import.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/0001_csv-import.mdx new file mode 100644 index 00000000..5f3eb655 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/0001_csv-import.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "csv-import", title: "sgr csv import", sidebarTitle: "csv import", description: "Import a CSV file into a checked-out Splitgraph repository."}; + +```sgr csv import [OPTIONS] REPOSITORY TABLE``` + +Import a CSV file into a checked-out Splitgraph repository. This doesn't create a new image, use `sgr commit` +after the import and any adjustments (e.g. adding primary keys or converting column types) to do so. + +If the target table doesn't exist, this will create a new table. + +If the target table does exist, this will try and patch the new values in by updating rows that exist in the +current table (as per its primary key constraints) and inserting new ones. Rows existing in the current table +but missing in the CSV won't be deleted. + +If `-r` is passed, the table will instead be deleted and recreated from the CSV file if it exists. + +### Options + + * **`-f, --file FILENAME`**: File name to import data from, default stdin. + * **`-r, --replace`**: Replace the table if it already exists. + * **`-k, --primary-key TEXT`**: Use the specified column(s) as primary key(s) + * **`-t, --override-type ...`**: Explicitly set types of these columns to PG types + * **`--encoding TEXT`**: Encoding to use for the CSV file + * **`--separator TEXT`**: CSV separator to use + * **`--no-header`**: Treats the first line of the CSV as data rather than a header. + * **`--skip-schema-check`**: Skips checking that the dataframe is compatible with the target schema. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/0002_mount.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/0002_mount.mdx new file mode 100644 index 00000000..85bcb7f5 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/0002_mount.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "mount", title: "sgr mount", sidebarTitle: "mount", description: "Mount foreign databases as Postgres schemas."}; + +```sgr mount [OPTIONS] ``` + +Mount foreign databases as Postgres schemas. + +Uses the Postgres FDW interface to create a local Postgres schema with foreign tables that map +to tables in other databases. + +See a given mount handler's documentation for handler-specific parameters. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/0003_singer-target.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/0003_singer-target.mdx new file mode 100644 index 00000000..c353a781 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/0003_singer-target.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "singer-target", title: "sgr singer target", sidebarTitle: "singer target", description: "Singer target that loads data into Splitgraph images."}; + +```sgr singer target [OPTIONS] IMAGE``` + +Singer target that loads data into Splitgraph images. + +This will read data from the stdin from a Singer-compatible tap and load it into +a Splitgraph image, merging data if the image already exists. + +Image must be of the format `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]` where `HASH_OR_TAG` +is a tag of an existing image to base the image on. If the repository doesn't exist, +it will be created. + +As this target consumes data from stdin, it will flush the records into a Splitgraph image. By +default, it will only keep the image if the whole stream has been successfully consumed. To +make this target completely follow the Singer spec (if it emits state, the records have been +flushed), pass --failure=keep-both or --failure=delete-old. To delete the old image on success, +pass --delete-old. + +### Options + + * **`-d, --delete-old`**: Delete the old image at the end of ingestion + * **`-f, --failure [keep-both|delete-old|delete-new]`**: What to do in case of a failure. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/metadata.json b/content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/metadata.json new file mode 100644 index 00000000..d82f5068 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0003_data-import-export/metadata.json @@ -0,0 +1 @@ +{"title": "Data import/export"} diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0000_rm.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0000_rm.mdx new file mode 100644 index 00000000..47baf9a3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0000_rm.mdx @@ -0,0 +1,40 @@ +export const meta = {id: "rm", title: "sgr rm", sidebarTitle: "rm", description: "Delete schemas, repositories or images."}; + +```sgr rm [OPTIONS] IMAGE_SPEC``` + +Delete schemas, repositories or images. + +If the target of this command is a Postgres schema, this performs DROP SCHEMA CASCADE. + +If the target of this command is a Splitgraph repository, this deletes the repository and all of its history. + +If the target of this command is an image, this deletes the image and all of its children. + +In any case, this command will ask for confirmation of the deletion, unless ``-y`` is passed. If ``-r`` +(``--remote``), is passed, this will perform deletion on a remote Splitgraph engine (registered in the config) +instead, assuming the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Examples + +``sgr rm temporary_schema`` + +Deletes ``temporary_schema`` from the local engine. + +``sgr rm --remote data.splitgraph.com username/repo`` + +Deletes ``username/repo`` from the Splitgraph registry. + +``sgr rm -y username/repo:old_branch`` + +Deletes the image pointed to by ``old_branch`` as well as all of its children (images created by a commit based +on this image), as well as all of the tags that point to now deleted images, without asking for confirmation. +Note this will not delete images that import tables from the deleted images via Splitfiles or indeed the +physical objects containing the actual tables. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0001_init.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0001_init.mdx new file mode 100644 index 00000000..e4ab8d4d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0001_init.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "init", title: "sgr init", sidebarTitle: "init", description: "Initialize a new repository/engine."}; + +```sgr init [OPTIONS] [REPOSITORY]``` + +Initialize a new repository/engine. + +### Examples + +`sgr init` + +Initializes the current local Splitgraph engine by writing some bookkeeping information. +This is required for the rest of sgr to work. + +`sgr init --skip-object-handling` + +Initializes a Splitgraph engine without installing audit triggers or object management routines: +this is useful for engines that aren't intended to be used for image checkouts. + +``sgr init new/repo`` + +Creates a single image with the hash ``00000...`` in ``new/repo`` + +### Options + + * **`--skip-object-handling`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0002_cleanup.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0002_cleanup.mdx new file mode 100644 index 00000000..c23688a4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0002_cleanup.mdx @@ -0,0 +1,7 @@ +export const meta = {id: "cleanup", title: "sgr cleanup", sidebarTitle: "cleanup", description: "Prune unneeded objects from the engine."}; + +```sgr cleanup [OPTIONS] ``` + +Prune unneeded objects from the engine. + +This deletes all objects from the cache that aren't required by any local repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0003_prune.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0003_prune.mdx new file mode 100644 index 00000000..64c2d49b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0003_prune.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "prune", title: "sgr prune", sidebarTitle: "prune", description: "Cleanup dangling images from a repository."}; + +```sgr prune [OPTIONS] REPOSITORY``` + +Cleanup dangling images from a repository. + +This includes images not pointed to by any tags (or checked out) and those that aren't required by any of +such images. + +Will ask for confirmation of the deletion, unless ``-y ``is passed. If ``-r`` (``--remote``) is +passed, this will perform deletion on a remote Splitgraph engine (registered in the config) instead, assuming +the user has write access to the remote repository. + +This does not delete any physical objects that the deleted repository/images depend on: +use ``sgr cleanup`` to do that. + +### Options + + * **`-r, --remote []`**: Perform operation on a different remote engine + * **`-y, --yes`**: Agree to deletion without confirmation diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0004_config.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0004_config.mdx new file mode 100644 index 00000000..7fcaa53c --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0004_config.mdx @@ -0,0 +1,33 @@ +export const meta = {id: "config", title: "sgr config", sidebarTitle: "config", description: "Print the current Splitgraph configuration."}; + +```sgr config [OPTIONS] ``` + +Print the current Splitgraph configuration. + +This takes into account the local config file, the default values +and all overrides specified via environment variables. + +This command can be used to dump the current Splitgraph configuration into a file: + +``` +sgr config --no-shielding --config-format > .sgconfig +``` + +...or save a config file overriding an entry: + +``` +SG_REPO_LOOKUP=engine1,engine2 sgr config -sc > .sgconfig +``` + +If `--conn-string` is passed, this prints out a libpq connection string +that can be used to connect to the default Splitgraph engine with other tools: + +``` +pgcli $(sgr config -n) +``` + +### Options + + * **`-s, --no-shielding`**: If set, doesn't replace sensitive values (like passwords) with asterisks + * **`-c, --config-format`**: Output configuration in the Splitgraph config file format + * **`-n, --conn-string`**: Print a libpq connection string to the engine diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0005_dump.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0005_dump.mdx new file mode 100644 index 00000000..111baceb --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0005_dump.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "dump", title: "sgr dump", sidebarTitle: "dump", description: "Dump a repository to SQL."}; + +```sgr dump [OPTIONS] REPOSITORY``` + +Dump a repository to SQL. + +### Options + + * **`--exclude-object-contents`**: Don't dump the commands needed to recreate objects required by the repository. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0006_eval.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0006_eval.mdx new file mode 100644 index 00000000..5b4b7f0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0006_eval.mdx @@ -0,0 +1,39 @@ +export const meta = {id: "eval", title: "sgr eval", sidebarTitle: "eval", description: "Evaluate a Python snippet using the Splitgraph API."}; + +```sgr eval [OPTIONS] COMMAND``` + +Evaluate a Python snippet using the Splitgraph API. + +This is for advanced users only and should be only used +if you know what you are doing. + +Normal Python statements are supported and the command is evaluated +in a namespace where the following is already imported and available: + + * Repository: class that instantiates a Splitgraph repository and makes + API functions like .commit(), .checkout() etc available. + + * engine: Current local engine + + * object_manager: an instance of ObjectManager that allows + to get information about objects and manage the object cache. + + +Example: +``` +sgr eval 'import json; print(json.dumps(Repository\ + .from_schema(repo_name)\ + .images["latest"]\ + .get_table(table_name)\ + .table_schema))' \ +-a repo_name my_repo -a table_name my_table +``` + +Will dump the schema of table my_table in the most recent image in my_repo in JSON format. + +For more information, see the Splitgraph API reference. + +### Options + + * **`--i-know-what-im-doing`**: Pass this if you're sure that the code you're running is safe and don't want to be prompted. + * **`-a, --arg ...`**: Make extra variables available in the command's namespace diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0007_upgrade.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0007_upgrade.mdx new file mode 100644 index 00000000..188e798b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/0007_upgrade.mdx @@ -0,0 +1,17 @@ +export const meta = {id: "upgrade", title: "sgr upgrade", sidebarTitle: "upgrade", description: "Upgrade sgr client and engine."}; + +```sgr upgrade [OPTIONS] [VERSION]``` + +Upgrade sgr client and engine. + +This will try to download the most recent stable binary for the current platform +into the location this binary is running from and then upgrade the default engine. + +This method is only supported for single-binary installs and engines managed +by `sgr engine`. + +### Options + + * **`--skip-engine-upgrade`**: Only upgrade the client + * **`--path TEXT`**: Override the path to download the new binary to. + * **`--force`**: Reinstall older/same versions. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/metadata.json b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/metadata.json new file mode 100644 index 00000000..26f7a103 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0004_miscellaneous/metadata.json @@ -0,0 +1 @@ +{"title": "Miscellaneous"} diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/0000_clone.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/0000_clone.mdx new file mode 100644 index 00000000..7c2929bd --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/0000_clone.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "clone", title: "sgr clone", sidebarTitle: "clone", description: "Clone a remote Splitgraph repository/image into a local one."}; + +```sgr clone [OPTIONS] REMOTE_REPOSITORY_OR_IMAGE [LOCAL_REPOSITORY]``` + +Clone a remote Splitgraph repository/image into a local one. + +The lookup path for the repository is governed by the ``SG_REPO_LOOKUP`` and ``SG_REPO_LOOKUP_OVERRIDE`` +config parameters and can be overridden by the command line ``--remote`` option. + +### Options + + * **`-r, --remote TEXT`**: Name of the remote engine + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/0001_push.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/0001_push.mdx new file mode 100644 index 00000000..7082172b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/0001_push.mdx @@ -0,0 +1,30 @@ +export const meta = {id: "push", title: "sgr push", sidebarTitle: "push", description: "Push images to the Splitgraph registry or another engine."}; + +```sgr push [OPTIONS] REPOSITORY_OR_IMAGE [REMOTE_REPOSITORY]``` + +Push images to the Splitgraph registry or another engine. + +If an image is not specified (e.g. `sgr push noaa/climate`, this will push all new images. + +By default, the repository will be pushed to a repository with the same name in the user's namespace +(SG_NAMESPACE configuration value which defaults to the username). + +If there's a single engine registered in the config (e.g. data.splitgraph.com), it shall be the default +destination. + +If an upstream repository/engine has been configured for this engine with `sgr upstream`, +it will be used instead. + +Finally, if `remote_repository` or `--remote` are passed, they will take precedence. + +The actual objects will be uploaded to S3 using Minio. When pushing to another engine, +you can choose to upload them directly by passing `--handler DB`. + +### Options + + * **`-r, --remote []`**: Name of the remote engine + * **`-h, --upload-handler TEXT`**: Upload handler + * **`-o, --upload-handler-options JSON`**: Upload handler parameters + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing remote objects + * **`-t, --tags`**: Overwrite tags for pushed image/repo + * **`-u, --reupload-objects`**: Reupload objects that metadata is pushed out for diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/0002_pull.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/0002_pull.mdx new file mode 100644 index 00000000..d1b631d1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/0002_pull.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "pull", title: "sgr pull", sidebarTitle: "pull", description: "Pull changes / download a single image."}; + +```sgr pull [OPTIONS] REPOSITORY_OR_IMAGE``` + +Pull changes / download a single image. + +### Options + + * **`-d, --download-all`**: Download all objects immediately instead of on checkout. + * **`-f, --overwrite-object-meta`**: Overwrite metadata for existing objects + * **`-t, --tags`**: Overwrite tags for pulled image/repo diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/0003_upstream.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/0003_upstream.mdx new file mode 100644 index 00000000..32f1d6ec --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/0003_upstream.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "upstream", title: "sgr upstream", sidebarTitle: "upstream", description: "Get or set the upstream for a repository."}; + +```sgr upstream [OPTIONS] REPOSITORY``` + +Get or set the upstream for a repository. + +This shows the default repository used for pushes and pulls as well as allows to change it to a different +remote engine and repository. + +The remote engine alias must exist in the config file. + +### Examples + +``sgr upstream my/repo --set splitgraph.com username/repo`` + +Sets the upstream for ``my/repo`` to ``username/repo`` existing on the ``splitgraph.com`` engine + +``sgr upstream my/repo --reset`` + +Removes the upstream for ``my/repo``. + +``sgr upstream my/repo`` + +Shows the current upstream for ``my/repo``. + +### Options + + * **`-s, --set ...`**: Set the upstream to a engine alias + repository + * **`-r, --reset`**: Delete the upstream diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/metadata.json b/content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/metadata.json new file mode 100644 index 00000000..b2c1ab8d --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0005_sharing-images/metadata.json @@ -0,0 +1 @@ +{"title": "Sharing images"} diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/0000_build.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/0000_build.mdx new file mode 100644 index 00000000..2204aae2 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/0000_build.mdx @@ -0,0 +1,29 @@ +export const meta = {id: "build", title: "sgr build", sidebarTitle: "build", description: "Build Splitgraph images."}; + +```sgr build [OPTIONS] SPLITFILE``` + +Build Splitgraph images. + +This executes a Splitfile, building a new image or checking it out from cache if the same +image had already been built. + +### Examples + +``sgr build my.splitfile`` + +Executes ``my.splitfile`` and writes its output into a new repository with the same name +as the Splitfile (my) unless the name is specified in the Splitfile. + +``sgr build my.splitfile -o mynew/repo`` + +Executes ``my.splitfile`` and writes its output into ``mynew/repo``. + +``sgr build my_other.splitfile -o mynew/otherrepo --args PARAM1 VAL1 --args PARAM2 VAL2`` + +Executes ``my_other.splitfile`` with parameters ``PARAM1`` and ``PARAM2`` set to +``VAL1`` and ``VAL2``, respectively. + +### Options + + * **`-a, --args ...`**: Parameters to be substituted into the Splitfile. All parameters mentioned in the file must be specified in order for the Splitfile to be executed. + * **`-o, --output-repository REPOSITORY`**: Repository to store the result in. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/0001_rebuild.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/0001_rebuild.mdx new file mode 100644 index 00000000..8194b0f1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/0001_rebuild.mdx @@ -0,0 +1,27 @@ +export const meta = {id: "rebuild", title: "sgr rebuild", sidebarTitle: "rebuild", description: "Rebuild images against different dependencies."}; + +```sgr rebuild [OPTIONS] IMAGE_SPEC``` + +Rebuild images against different dependencies. + +Examines the provenance of a Splitgraph image created by a Splitfile and reruns it against different images than +the ones that were imported by the original run. + +### Examples + +``sgr rebuild my/repo --against noaa/climate:old_data`` + +Reconstructs the Splitfile used to create ``my/repo:latest``, replaces all imports from ``noaa/climate`` with +imports from ``noaa/climate:old_data`` and reruns the Splitfile. + +``sgr rebuild my/repo:other_tag -u`` + +Rebuilds ``my_repo:other_tag`` against the latest versions of all of its dependencies. + +Image caching still works in this case: if the result of the rebuild already exists, the image will be checked +out. + +### Options + + * **`-u, --update`**: Rederive the image against the latest version of all dependencies. + * **`-a, --against IMAGE`**: Images to substitute into the reconstructed Splitfile, of the form [NAMESPACE/]REPOSITORY[:HASH_OR_TAG]. Default tag is 'latest'. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/0002_provenance.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/0002_provenance.mdx new file mode 100644 index 00000000..45d3a5a8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/0002_provenance.mdx @@ -0,0 +1,62 @@ +export const meta = {id: "provenance", title: "sgr provenance", sidebarTitle: "provenance", description: "Reconstruct the provenance of an image."}; + +```sgr provenance [OPTIONS] IMAGE_SPEC``` + +Reconstruct the provenance of an image. + +This inspects the image to produce a list of images that were used by the Splitfile +that created it, or a Splitfile with the same effect. + +`IMAGE_SPEC` must be of the form `[NAMESPACE/]REPOSITORY[:HASH_OR_TAG]`. +If no tag is specified, `latest` is used. + +### Examples + +Assume `my/repo` is produced by the following Splitfile: + +``` +FROM MOUNT [...] IMPORT external_table +FROM noaa/climate IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} AS rainfall_data +``` + +`my/repo` will have 2 images: one having `hash_1` (with the `external_table` imported from a mounted database) +and one having `hash_2` (with both `external_table` and the `rainfall_data` containing the result +of the query run against the then-latest image in the `noaa/climate` repository). + +In this case: + +``` +sgr provenance my/repo +``` + +Returns a list of repositories and images that were imported by the Splitfile that constructed this image:: + +``` +my/repo:[hash_2] depends on: +noaa/climate:[hash_3] +``` + +Where `hash_3` is the hash of the latest image in the `noaa/climate` repository at the time the original +Splitfile was run. However: + +``` +sgr provenance -f my/repo +``` + +Will try to reconstruct the Splitfile that can be used to build this image. Since the FROM MOUNT command isn't +reproducible (requires access to the original external database, which is a moving target), this will fail. + +If `-e` is passed, this will emit information about irreproducible commands instead of failing. + +``` +sgr provenance -ef my/repo + +# Splitfile commands used to reconstruct my/repo:[image_hash] +# Irreproducible Splitfile command of type MOUNT +FROM noaa/climate:[hash_3] IMPORT {SELECT * FROM rainfall_data WHERE state = 'AZ'} +``` + +### Options + + * **`-f, --full`**: Recreate the Splitfile used to create this image + * **`-e, --ignore-errors`**: If set, ignore commands that aren't reproducible (like MOUNT or custom commands) diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/0003_dependents.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/0003_dependents.mdx new file mode 100644 index 00000000..fc8bc234 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/0003_dependents.mdx @@ -0,0 +1,21 @@ +export const meta = {id: "dependents", title: "sgr dependents", sidebarTitle: "dependents", description: "List images that were created from an image."}; + +```sgr dependents [OPTIONS] IMAGE_SPEC``` + +List images that were created from an image. + +This is the inverse of the sgr provenance command. It will list all images that were +created using a Splitfile that imported data from this image. + +By default, this will look at images on the local engine. The engine can be overridden +with --source-on and --dependents-on. For example: + + sgr dependents --source-on data.splitgraph.com --dependents-on LOCAL noaa/climate:latest + +will show all images on the local engine that derived data from `noaa/climate:latest` +on the Splitgraph registry. + +### Options + + * **`-O, --source-on TEXT`**: Override the engine to look the source up on + * **`-o, --dependents-on TEXT`**: Override the engine to list dependents from diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/metadata.json b/content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/metadata.json new file mode 100644 index 00000000..50afd08a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0006_splitfile-execution/metadata.json @@ -0,0 +1 @@ +{"title": "Splitfile execution"} diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0000_cloud-add.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0000_cloud-add.mdx new file mode 100644 index 00000000..9eba1036 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0000_cloud-add.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "cloud-add", title: "sgr cloud add", sidebarTitle: "cloud add", description: "Add a remote Splitgraph registry to .sgconfig with default parameters"}; + +```sgr cloud add [OPTIONS] DOMAIN_NAME``` + +Add a remote Splitgraph registry to .sgconfig with default parameters + +### Options + + * **`--remote TEXT`**: Name for the remote (infer from the domain name by default) + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0001_cloud-register.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0001_cloud-register.mdx new file mode 100644 index 00000000..089ce0c6 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0001_cloud-register.mdx @@ -0,0 +1,18 @@ +export const meta = {id: "cloud-register", title: "sgr cloud register", sidebarTitle: "cloud register", description: "Register the user on a Splitgraph registry."}; + +```sgr cloud register [OPTIONS] ``` + +Register the user on a Splitgraph registry. + +By default, this registers the user on data.splitgraph.com, +obtains a set of machine (API) credentials for the client to communicate +with the registry and configures the data.splitgraph.com engine. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--email TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to register on. + * **`--accept-tos`**: Accept the registry's Terms of Service + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0002_cloud-login.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0002_cloud-login.mdx new file mode 100644 index 00000000..cb99d6c1 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0002_cloud-login.mdx @@ -0,0 +1,23 @@ +export const meta = {id: "cloud-login", title: "sgr cloud login", sidebarTitle: "cloud login", description: "Log into a Splitgraph registry with username/password."}; + +```sgr cloud login [OPTIONS] ``` + +Log into a Splitgraph registry with username/password. + +This will generate a new refresh token (to use the Splitgraph query API) +and API keys to let sgr access the registry (if they don't already exist +in the configuration file or if the actual username has changed). + +Note that if you already have generated an API key pair but it's not +in the configuration file, this will generate a new pair instead of +restoring the existing one, as the API secret is only stored in the configuration file. + +If you want to log in using an existing API key pair, use `sgr cloud login-api` instead. + +### Options + + * **`--username TEXT`**: + * **`--password TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`--overwrite`**: Overwrite old API keys in the config if they exist + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0003_cloud-login-api.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0003_cloud-login-api.mdx new file mode 100644 index 00000000..4007fe22 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0003_cloud-login-api.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "cloud-login-api", title: "sgr cloud login-api", sidebarTitle: "cloud login-api", description: "Log into a Splitgraph registry using existing API keys."}; + +```sgr cloud login-api [OPTIONS] ``` + +Log into a Splitgraph registry using existing API keys. + +This will inject the API keys for the registry into the configuration file +and generate a new access token. + +### Options + + * **`--api-key TEXT`**: + * **`--api-secret TEXT`**: + * **`--remote TEXT`**: Name of the remote registry to log into. + * **`-s, --skip-inject`**: Don't try to copy the config into all engines diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0004_cloud-token.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0004_cloud-token.mdx new file mode 100644 index 00000000..5cea68fa --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0004_cloud-token.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "cloud-token", title: "sgr cloud token", sidebarTitle: "cloud token", description: "Output an up-to-date access token for a remote."}; + +```sgr cloud token [OPTIONS] ``` + +Output an up-to-date access token for a remote. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0005_cloud-sql.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0005_cloud-sql.mdx new file mode 100644 index 00000000..56c4be0a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0005_cloud-sql.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "cloud-sql", title: "sgr cloud sql", sidebarTitle: "cloud sql", description: "Run SQL on or connect to the Splitgraph Data Delivery Network."}; + +```sgr cloud sql [OPTIONS] [QUERY]``` + +Run SQL on or connect to the Splitgraph Data Delivery Network. + +If a query isn't passed, this will return a libpq-compatible connection string to +the registry's SQL endpoint. It can be used to connect to the endpoint with other SQL clients: + +``` +pgcli $(sgr cloud sql) +``` + +If a query is passed, this will run an SQL query against the SQL endpoint. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-a, --show-all`**: Return all results of the query. + * **`-j, --json`**: Return results as JSON diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0006_cloud-curl.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0006_cloud-curl.mdx new file mode 100644 index 00000000..e902965b --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0006_cloud-curl.mdx @@ -0,0 +1,32 @@ +export const meta = {id: "cloud-curl", title: "sgr cloud curl", sidebarTitle: "cloud curl", description: "Query a Splitgraph REST API."}; + +```sgr cloud curl [OPTIONS] IMAGE [REQUEST_PARAMS]``` + +Query a Splitgraph REST API. + +This is a thin wrapper around curl that performs an HTTP request to Splitgraph Cloud to +interact with a dataset using PostgREST (http://postgrest.org) or the Splitfile execution service. + +The actual invocation is: + +``` +curl [API endpoint][request] -H [access_token] [extra curl args]. +``` + +The image must be of the form `namespace/repository:[hash_or_tag (default latest)]`. + +The actual request parameters depend on the request type: + + * For PostgREST: `/table?[postgrest request]` or empty to get the OpenAPI spec for this image. + For a reference on how to perform Postgrest requests, see http://postgrest.org/en/latest/api.html. + * For the Splitfile executor: a JSON array to be POSTed to the executor, e.g. + `'{"command": "FROM some/repo IMPORT some_table AS alias", "tag": "new_tag"}'`. + +`--curl-args` allows to pass extra arguments to curl. Note that every argument must be prefixed +with `--curl-args`, e.g. `--curl-args --cacert --curl-args /path/to/ca.pem`. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-t, --request-type [postgrest|splitfile]`**: + * **`-c, --curl-args TEXT`**: Extra arguments to be passed to curl diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0007_cloud-readme.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0007_cloud-readme.mdx new file mode 100644 index 00000000..4ee4cf56 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0007_cloud-readme.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-readme", title: "sgr cloud readme", sidebarTitle: "cloud readme", description: "Upload a README to a Splitgraph repository."}; + +```sgr cloud readme [OPTIONS] REPOSITORY README``` + +Upload a README to a Splitgraph repository. + +The repository must have already been pushed. The README must be a file in Markdown format. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0008_cloud-description.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0008_cloud-description.mdx new file mode 100644 index 00000000..003c953f --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0008_cloud-description.mdx @@ -0,0 +1,11 @@ +export const meta = {id: "cloud-description", title: "sgr cloud description", sidebarTitle: "cloud description", description: "Upload a description to a Splitgraph repository."}; + +```sgr cloud description [OPTIONS] REPOSITORY DESCRIPTION``` + +Upload a description to a Splitgraph repository. + +The repository must have already been pushed. The description should be plain text, 160 characters or shorter. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0009_cloud-metadata.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0009_cloud-metadata.mdx new file mode 100644 index 00000000..01b2f064 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0009_cloud-metadata.mdx @@ -0,0 +1,41 @@ +export const meta = {id: "cloud-metadata", title: "sgr cloud metadata", sidebarTitle: "cloud metadata", description: "Upload a metadata file to a Splitgraph repository."}; + +```sgr cloud metadata [OPTIONS] REPOSITORY [METADATA_FILE]``` + +Upload a metadata file to a Splitgraph repository. + +This can manipulate the repository's short description, README, topics, license, sources and extra metadata. + +The metadata file must be a YAML file. Omitting a key doesn't delete the value. + +For example: + + +``` +readme: dataset-readme.md +description: Dataset description (160 characters max). +topics: + - topic_1 + - topic_2 +sources: + - anchor: Source + href: https://www.splitgraph.com + isCreator: true + isSameAs: false + - anchor: Source 2 + href: https://www.splitgraph.com + isCreator: false + isSameAs: true +license: Public Domain +extra_metadata: + key_1: + key_1_1: value_1_1 + key_1_2: value_1_2 + key_2: + key_2_1: value_2_1 + key_2_2: value_2_2 +``` + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0010_cloud-search.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0010_cloud-search.mdx new file mode 100644 index 00000000..c23c31f4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0010_cloud-search.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "cloud-search", title: "sgr cloud search", sidebarTitle: "cloud search", description: "Search for a repository on the Splitgraph registry."}; + +```sgr cloud search [OPTIONS] QUERY``` + +Search for a repository on the Splitgraph registry. + +For more advanced search, including filtering by topics, go to the registry's website itself. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--limit INTEGER RANGE`**: Number of results to return diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0011_cloud-dump.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0011_cloud-dump.mdx new file mode 100644 index 00000000..61ce08a4 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0011_cloud-dump.mdx @@ -0,0 +1,15 @@ +export const meta = {id: "cloud-dump", title: "sgr cloud dump", sidebarTitle: "cloud dump", description: "Dump a Splitgraph catalog to a YAML file."}; + +```sgr cloud dump [OPTIONS] [LIMIT_REPOSITORIES]...``` + +Dump a Splitgraph catalog to a YAML file. + +This creates a splitgraph.yml file in the target directory as well as a subdirectory `readmes` +with all the repository readmes. This file can be used to recreate all catalog metadata +and all external data source settings for a repository using `sgr cloud load`. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--readme-dir TEXT`**: Directory to dump the data into + * **`-f, --repositories-file FILENAME`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0012_cloud-load.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0012_cloud-load.mdx new file mode 100644 index 00000000..7154bbe9 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0012_cloud-load.mdx @@ -0,0 +1,20 @@ +export const meta = {id: "cloud-load", title: "sgr cloud load", sidebarTitle: "cloud load", description: "Load a Splitgraph catalog from a YAML file."}; + +```sgr cloud load [OPTIONS] [LIMIT_REPOSITORIES]...``` + +Load a Splitgraph catalog from a YAML file. + +This will load a splitgraph.yml file and the `readmes` subdirectory produced by +`sgr cloud dump` back into a remote Splitgraph catalog. + +By default, if a repository doesn't yet exist, it will be public. Pass `--initial-private` to +this command to make it start off as private. This won't apply to existing repositories: use +the Splitgraph GUI to manage repository access settings. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--readme-dir TEXT`**: Path to the directory with the README files + * **`-p, --initial-private`**: If the repository doesn't exist, create it as private. + * **`-f, --repositories-file PATH`**: + * **`--skip-external`**: Only set up the metadata, not the external data source settings diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0013_cloud-sync.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0013_cloud-sync.mdx new file mode 100644 index 00000000..4a129b19 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0013_cloud-sync.mdx @@ -0,0 +1,25 @@ +export const meta = {id: "cloud-sync", title: "sgr cloud sync", sidebarTitle: "cloud sync", description: "Trigger an ingestion job for a repository."}; + +```sgr cloud sync [OPTIONS] REPOSITORY``` + +Trigger an ingestion job for a repository. + +This starts off a load job for an existing/new repository, optionally using a +splitgraph.yml file and waiting for the job to complete before exiting. + +If the splitgraph.yml file is specified, it will use the settings for that repository +from there to override the existing parameters for a repository or to create a new repository. +Otherwise, it will use the existing parameters. + +By default, if a repository doesn't yet exist, it will be public. Pass `--initial-private` to +this command to make it start off as private. This won't apply to existing repositories: use +the Splitgraph GUI to manage repository access settings. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-r, --full-refresh`**: Trigger a full reload instead of an incremental load + * **`-w, --wait`**: Attach to the job and wait for it to finish + * **`-p, --initial-private`**: If the repository doesn't exist, create it as private. + * **`-u, --use-file`**: Use a YAML file with repository settings + * **`-f, --repositories-file PATH`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0014_cloud-status.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0014_cloud-status.mdx new file mode 100644 index 00000000..c3b05ff3 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0014_cloud-status.mdx @@ -0,0 +1,14 @@ +export const meta = {id: "cloud-status", title: "sgr cloud status", sidebarTitle: "cloud status", description: "Get job statuses for given repositories."}; + +```sgr cloud status [OPTIONS] [REPOSITORIES]...``` + +Get job statuses for given repositories. + +If this command is passed a list of repositories, it will get the latest job +statuses just for those repositories. Otherwise, it will use an existing splitgraph.yml +file and get job statuses for all repositories in this file. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-f, --repositories-file PATH`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0015_cloud-logs.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0015_cloud-logs.mdx new file mode 100644 index 00000000..c364d040 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0015_cloud-logs.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "cloud-logs", title: "sgr cloud logs", sidebarTitle: "cloud logs", description: "Get ingestion job logs."}; + +```sgr cloud logs [OPTIONS] REPOSITORY TASK_ID``` + +Get ingestion job logs. + +Output the logs for an ingestion job into a repository on Splitgraph Cloud. +Use `sgr cloud status` to get a list of ingestion jobs and their recent task IDs. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0016_cloud-upload.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0016_cloud-upload.mdx new file mode 100644 index 00000000..e9a59468 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0016_cloud-upload.mdx @@ -0,0 +1,13 @@ +export const meta = {id: "cloud-upload", title: "sgr cloud upload", sidebarTitle: "cloud upload", description: "Upload files to Splitgraph."}; + +```sgr cloud upload [OPTIONS] REPOSITORY [FILES]...``` + +Upload files to Splitgraph. + +This uses the upload API to add data like CSV files to a remote Splitgraph instance, +trigger a load and wait for the data to load into a repository. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--file-format [csv]`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0017_cloud-download.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0017_cloud-download.mdx new file mode 100644 index 00000000..98465cf6 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0017_cloud-download.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "cloud-download", title: "sgr cloud download", sidebarTitle: "cloud download", description: "Download query results from Splitgraph."}; + +```sgr cloud download [OPTIONS] QUERY [OUTPUT_PATH]``` + +Download query results from Splitgraph. + +This runs a query on Splitgraph Cloud and exports the results into a csv.gz format. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--file-format [csv]`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0018_cloud-plugins.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0018_cloud-plugins.mdx new file mode 100644 index 00000000..4207d21a --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0018_cloud-plugins.mdx @@ -0,0 +1,12 @@ +export const meta = {id: "cloud-plugins", title: "sgr cloud plugins", sidebarTitle: "cloud plugins", description: "List all Splitgraph Cloud data plugins."}; + +```sgr cloud plugins [OPTIONS] ``` + +List all Splitgraph Cloud data plugins. + +This command lists all plugins available on a remote Splitgraph Cloud instance. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`-f, --filter TEXT`**: Filter for plugins with this string in name/description diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0019_cloud-stub.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0019_cloud-stub.mdx new file mode 100644 index 00000000..396ec7b9 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0019_cloud-stub.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "cloud-stub", title: "sgr cloud stub", sidebarTitle: "cloud stub", description: "Generate a splitgraph.yml stub file for a given plugin"}; + +```sgr cloud stub [OPTIONS] PLUGIN_NAME REPOSITORY [OUTPUT_FILE]``` + +Generate a splitgraph.yml stub file for a given plugin + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0020_cloud-validate.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0020_cloud-validate.mdx new file mode 100644 index 00000000..ba66a11e --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0020_cloud-validate.mdx @@ -0,0 +1,9 @@ +export const meta = {id: "cloud-validate", title: "sgr cloud validate", sidebarTitle: "cloud validate", description: "Validate, merge and output project file(s)"}; + +```sgr cloud validate [OPTIONS] ``` + +Validate, merge and output project file(s) + +### Options + + * **`-f, --repositories-file PATH`**: diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0021_cloud-seed.mdx b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0021_cloud-seed.mdx new file mode 100644 index 00000000..57dcaa5f --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/0021_cloud-seed.mdx @@ -0,0 +1,10 @@ +export const meta = {id: "cloud-seed", title: "sgr cloud seed", sidebarTitle: "cloud seed", description: "Generate a starter Splitgraph Cloud project from a seed."}; + +```sgr cloud seed [OPTIONS] SEED [DIRECTORY]``` + +Generate a starter Splitgraph Cloud project from a seed. + +### Options + + * **`--remote TEXT`**: Name of the remote registry to use. + * **`--github-repository TEXT`**: Name of the GitHub repository diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/metadata.json b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/metadata.json new file mode 100644 index 00000000..25ba655e --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/0007_splitgraph-cloud/metadata.json @@ -0,0 +1 @@ +{"title": "Splitgraph Cloud"} diff --git a/content/docs/9000_sgr/9000_versions/v0.3.0/metadata.json b/content/docs/9000_sgr/9000_versions/v0.3.0/metadata.json new file mode 100644 index 00000000..e48fd5a8 --- /dev/null +++ b/content/docs/9000_sgr/9000_versions/v0.3.0/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.3.0", + "updated_at": "2022-01-20T00:00:34.891Z", + "release": { + "id": 55571256, + "tag_name": "v0.3.0", + "target_commitish": "fb8bbc616bda9717cd77db3597381a9cbe26d488", + "created_at": "2021-12-17T19:30:50Z", + "published_at": "2021-12-17T19:49:27Z", + "assets": [ + { + "id": 52039025, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/52039025", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-12-17T19:49:15Z", + "updated_at": "2021-12-17T19:49:16Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.3.0/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9000_sgr/metadata.json b/content/docs/9000_sgr/metadata.json index c162a997..0d3309ce 100644 --- a/content/docs/9000_sgr/metadata.json +++ b/content/docs/9000_sgr/metadata.json @@ -1,21 +1,21 @@ { "title": "sgr CLI", - "updated_at": "2021-03-15T13:06:04.392Z", + "updated_at": "2022-01-20T00:00:51.116Z", "release": { - "id": 39731301, - "tag_name": "v0.2.9", - "target_commitish": "5ec79cf97df336a93503ee0c48f168f79158d548", - "created_at": "2021-03-12T17:37:06Z", - "published_at": "2021-03-12T18:17:05Z", + "id": 55571256, + "tag_name": "v0.3.0", + "target_commitish": "fb8bbc616bda9717cd77db3597381a9cbe26d488", + "created_at": "2021-12-17T19:30:50Z", + "published_at": "2021-12-17T19:49:27Z", "assets": [ { - "id": 33389368, - "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/33389368", + "id": 52039025, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/52039025", "name": "sgr-docs-bin.tar.gz", "label": "", - "created_at": "2021-03-12T18:01:59Z", - "updated_at": "2021-03-12T18:01:59Z", - "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.9/sgr-docs-bin.tar.gz" + "created_at": "2021-12-17T19:49:15Z", + "updated_at": "2021-12-17T19:49:16Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.3.0/sgr-docs-bin.tar.gz" } ] }, diff --git a/content/docs/9500_python-api/9000_versions/v0.2.10/metadata.json b/content/docs/9500_python-api/9000_versions/v0.2.10/metadata.json new file mode 100644 index 00000000..e4889aba --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.10/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.10", + "updated_at": "2022-01-20T00:00:50.920Z", + "release": { + "id": 39960104, + "tag_name": "v0.2.10", + "target_commitish": "3688be4452e0a98e4510876b085b29a61d9c73be", + "created_at": "2021-03-17T17:52:24Z", + "published_at": "2021-03-17T18:18:59Z", + "assets": [ + { + "id": 33604378, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/33604378", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-03-17T18:18:16Z", + "updated_at": "2021-03-17T18:18:16Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.10/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.cloud.mdx b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.cloud.mdx new file mode 100644 index 00000000..e250faf0 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.cloud.mdx @@ -0,0 +1,209 @@ + + + +export const meta = { + title: "splitgraph.cloud package", + id: "splitgraph.cloud package" +}; + +
+

Module contents

+

Public API for interacting with the Splitgraph registry

+
+
+class splitgraph.cloud.AuthAPIClient(remote: str)
+

Bases: object

+

Client for the Splitgraph registry auth API that generates tokens to access +other Splitgraph services.

+

Currently incomplete with just enough methods to allow to register and access +the Splitgraph registry via the command line.

+
+
+property access_token
+

Will return an up-to-date access token by either getting it from +the configuration file or contacting the auth service for a new one. +Will write the new access token into the configuration file.

+
+
Returns
+

Access token.

+
+
+
+ +
+
+create_machine_credentials(access_token: str, password: str)requests.models.Response
+

Generate a key and secret that can be used to log into the Splitgraph registry +via a normal Postgres connection. The secret must be stored in the user’s local +configuration file (it’s not stored on Splitgraph servers).

+
+
Parameters
+
    +
  • access_token – Access token

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (key, secret).

+
+
+
+ +
+
+get_access_token(refresh_token: str)requests.models.Response
+

Get a new access token from a refresh token.

+
+
Parameters
+

refresh_token – Refresh token

+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_access_token_from_api(api_key: str, api_secret: str)requests.models.Response
+

Get a new access token from API keys

+
+
Parameters
+
    +
  • api_key – API key

  • +
  • api_secret – API secret

  • +
+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_latest_version()Optional[str]
+
+ +
+
+get_refresh_token(username: str, password: str)requests.models.Response
+

Get a long-lived refresh token and a short-lived access token from the API.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (access_token, refresh_token).

+
+
+
+ +
+
+register(username: str, password: str, email: str, accept_tos: bool)requests.models.Response
+

Register a new Splitgraph user.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
  • email – Email

  • +
  • accept_tos – Accept the Terms of Service if they exist

  • +
+
+
+
+ +
+
+tos()requests.models.Response
+

Get a Terms of Service message from the registry (if accepting ToS is required) +:return: Link to the Terms of Service or None

+
+ +
+ +
+
+class splitgraph.cloud.GQLAPIClient(remote: str)
+

Bases: object

+

Wrapper class for select Splitgraph Registry GQL operations that can be +called from the CLI

+
+
+find_repository(query: str, limit: int = 10)Tuple[int, List[Tuple[str, str, str]]]
+
+ +
+
+upsert_description(namespace: str, repository: str, description: str)
+
+ +
+
+upsert_metadata(*args, **kwargs)
+
+ +
+
+upsert_readme(namespace: str, repository: str, readme: str)
+
+ +
+
+upsert_topics(namespace: str, repository: str, topics: List[str])
+
+ +
+ +
+
+splitgraph.cloud.expect_result(result: List[str], ignore_status_codes: Optional[List[int]] = None)Callable[[Callable[[], requests.models.Response]], Callable[[], Union[str, Tuple[str]]]]
+

A decorator that can be wrapped around a function returning a requests.Response with a JSON body. +If the request has failed, it will extract the “error” from the JSON response and raise an AuthAPIError.

+
+
Parameters
+
    +
  • result – Items to extract. Will raise an AuthAPIError if not all items were fetched.

  • +
  • ignore_status_codes – If one of these status codes is returned (e.g. 404), +it gets ignored and a None is returned instead.

  • +
+
+
Returns
+

Tuple of items enumerated in the result list. If there’s only one item, it will +return just that item.

+
+
+
+ +
+
+splitgraph.cloud.get_headers()
+
+ +
+
+splitgraph.cloud.get_remote_param(remote: str, key: str)str
+
+ +
+
+splitgraph.cloud.get_token_claim(jwt, claim)
+

Extract a claim from a JWT token without validating it.

+
+ +
+
+splitgraph.cloud.handle_gql_errors(func: Callable[[], requests.models.Response])Callable[[], requests.models.Response]
+

A decorator that handles responses from the GQL API, transforming errors into exceptions.

+
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.commandline.mdx b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.commandline.mdx new file mode 100644 index 00000000..58743867 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.commandline.mdx @@ -0,0 +1,365 @@ + + + +export const meta = { + title: "splitgraph.commandline package", + id: "splitgraph.commandline package" +}; + +
+

Module contents

+

Splitgraph command line client

+

Hooks into the API to allow management of Splitgraph repositories and images using sgr.

+
+
+class splitgraph.commandline.ClickHandler(level=0)
+

Bases: logging.Handler

+
+
+emit(record)
+

Do whatever it takes to actually log the specified logging record.

+

This version is intended to be implemented by subclasses and so +raises a NotImplementedError.

+
+ +
+ +
+
+class splitgraph.commandline.WithExceptionHandler(name=None, commands=None, **attrs)
+

Bases: click.core.Group

+
+
+get_command(ctx, cmd_name)
+

Given a context and a command name, this returns a +Command object if it exists or returns None.

+
+ +
+
+invoke(ctx)
+

Given a context, this invokes the attached callback (if it exists) +in the right way.

+
+ +
+ +
+
+splitgraph.commandline.get_exception_name(o)
+
+ +
+ +
+

Submodules

+
+
+

splitgraph.commandline.cloud module

+

Command line routines related to registering/setting up connections to the Splitgraph registry.

+
+
+

splitgraph.commandline.common module

+

Various common functions used by the command line interface.

+
+
+class splitgraph.commandline.common.Color
+

Bases: object

+

An enumeration of console colors

+
+
+BLUE = '\x1b[94m'
+
+ +
+
+BOLD = '\x1b[1m'
+
+ +
+
+CYAN = '\x1b[96m'
+
+ +
+
+DARKCYAN = '\x1b[36m'
+
+ +
+
+END = '\x1b[0m'
+
+ +
+
+GREEN = '\x1b[92m'
+
+ +
+
+PURPLE = '\x1b[95m'
+
+ +
+
+RED = '\x1b[91m'
+
+ +
+
+UNDERLINE = '\x1b[4m'
+
+ +
+
+YELLOW = '\x1b[93m'
+
+ +
+ +
+
+class splitgraph.commandline.common.ImageType(default: Optional[str] = 'latest', repository_exists: bool = False, get_image: bool = False)
+

Bases: click.types.ParamType

+

Parser that extracts the full image specification (repository and hash/tag).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])Tuple[Repository, Optional[Union[Image, str]]]
+

Image specification must have the format [NAMESPACE/]REPOSITORY[:HASH_OR_TAG].

+

The parser returns a tuple of (repository object, tag or hash).

+
+ +
+
+name = 'Image'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.JsonType
+

Bases: click.types.ParamType

+

Parser for Json – a wrapper around json.loads because without specifying +the name Click shows the type for the option/arg as LOADS.

+

Also supports passing JSON files (pass in @filename.json).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Json'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.RepositoryType(exists: bool = False)
+

Bases: click.types.ParamType

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])Repository
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Repository'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.ResettableStream(stream)
+

Bases: io.RawIOBase

+

Stream that supports reading from the underlying stream and resetting the position once.

+

We can’t use fseek() in this case, since we might be reading from a pipe. So, we operate +this stream in two modes. In the first mode, we mirror all reads into a separate buffer +(consuming the input stream). After the user calls reset(), we first output data from the +mirrored copy, then continue consuming the input stream (simulating seek(0).

+
+
+readable()
+

Return whether object was opened for reading.

+

If False, read() will raise OSError.

+
+ +
+
+readinto(b)
+
+ +
+
+reset()
+
+ +
+ +
+
+splitgraph.commandline.common.emit_sql_results(results, use_json=False, show_all=False)
+
+ +
+
+splitgraph.commandline.common.load_json_param(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+
+ +
+
+splitgraph.commandline.common.remote_switch_option(*names, **kwargs)
+

Adds an option to switch global SG_ENGINE for this invocation of sgr.

+

This is useful for e.g. tagging or viewing image information on a remote +registry. This is not used in operations like commit/checkout (even though +nothing is preventing SG_ENGINE switch from working on that if the remote engine +supports this), the user should switch SG_ENGINE envvar themselves in that case.

+
+
Parameters
+
    +
  • names – Names

  • +
  • kwargs – Passed to click.option

  • +
+
+
+
+ +
+
+splitgraph.commandline.common.sql_results_to_str(results: List[Tuple[Any]], use_json: bool = False)str
+
+ +
+
+

splitgraph.commandline.engine module

+
+
+splitgraph.commandline.engine.copy_to_container(container: Container, source_path: str, target_path: str)None
+

Copy a file into a Docker container

+
+
Parameters
+
    +
  • container – Container object

  • +
  • source_path – Source file path

  • +
  • target_path – Target file path (in the container)

  • +
+
+
Returns
+

+
+
+
+ +
+
+splitgraph.commandline.engine.get_docker_client()
+

Wrapper around client.from_env() that also pings the daemon +to make sure it can connect and if not, raises an error.

+
+ +
+
+splitgraph.commandline.engine.inject_config_into_engines(engine_prefix, config_path)
+

Copy the current config into all engines that are managed by sgr engine. This +is so that the engine has the right credentials and settings for when we do +layered querying (a Postgres client queries the engine directly and it +has to download objects etc).

+
+
Parameters
+
    +
  • engine_prefix – Prefix for Docker containers that are considered to be engines

  • +
  • config_path – Path to the config file.

  • +
+
+
+
+ +
+
+splitgraph.commandline.engine.list_engines(prefix, include_all=False, unavailable_ok=True)
+
+ +
+
+splitgraph.commandline.engine.patch_and_save_config(config, patch)
+
+ +
+
+

splitgraph.commandline.example module

+

Command line routines generating example data / Splitfiles

+
+
+splitgraph.commandline.example.alter_table(repository: Repository, table_name: str, rows_added: int, rows_deleted: int, rows_updated: int)None
+

Alters the example table, adding/updating/deleting a certain number of rows.

+
+
Parameters
+
    +
  • repository – Checked-out Repository object.

  • +
  • table_name – Name of the table

  • +
  • rows_added – Number of rows to add

  • +
  • rows_deleted – Number of rows to remove

  • +
  • rows_updated – Number of rows to update

  • +
+
+
+
+ +
+
+splitgraph.commandline.example.generate_table(repository: Repository, table_name: str, size: int)None
+

Creates a table with an integer primary key and a string value.

+
+
Parameters
+
    +
  • repository – Checked-out Repository to create the table in.

  • +
  • table_name – Name of the table to generate

  • +
  • size – Number of rows in the table.

  • +
+
+
+
+ +
+
+

splitgraph.commandline.image_creation module

+

sgr commands related to creating and checking out images

+
+
+

splitgraph.commandline.image_info module

+

sgr commands related to getting information out of / about images

+
+
+

splitgraph.commandline.ingestion module

+

Command line tools for ingesting/exporting Splitgraph images into other formats.

+
+
+

splitgraph.commandline.misc module

+

Miscellaneous image management sgr commands.

+
+
+

splitgraph.commandline.mount module

+

sgr commands related to mounting databases via Postgres FDW

+
+
+

splitgraph.commandline.push_pull module

+

sgr commands related to sharing and downloading images.

+
+
+

splitgraph.commandline.splitfile module

+

sgr commands related to building and rebuilding Splitfiles.

+
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.config.mdx b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.config.mdx new file mode 100644 index 00000000..6f22349f --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.config.mdx @@ -0,0 +1,392 @@ + + + +export const meta = { + title: "splitgraph.config package", + id: "splitgraph.config package" +}; + +
+

Module contents

+

The CONFIG object is created and exported once __at import time__ +Calling CONFIG[“KEY”] directly should be sufficient in most cases, +except when a config value has changed since importing CONFIG. +In that case, create_config_dict() can provide an updated config dict

+

Priority (highest to lowest):

+
+
    +
  1. Command line argument values

  2. +
  3. Environment variable values

  4. +
  5. Config file values in [defaults] section

  6. +
  7. DEFAULTS (see keys.py)

  8. +
+
+
+ +
+

Submodules

+
+
+

splitgraph.config.argument_config module

+
+
+splitgraph.config.argument_config.get_arg_tuples()List[Tuple[str, str]]
+

Get the raw (argN, argN+1) tuples from sys.argv

+

We could also use click to parse the flags ahead of time, and then pass +the parsed flag object into SystemConfigGetters. But this way, we avoid +having to pass down variables from click just to get config values.

+
+ +
+
+splitgraph.config.argument_config.get_argument_config_value(key: str, default_return: Optional[str] = None)Optional[str]
+

Get get the value of an argument, where value is the argument +immediately following the argument matching a key in ARG_KEYS, e.g.:

+
+

SYS_ARGS = [“–namespace”, “foo”] +–> return “foo”

+
+

Otherwise, return default_return

+
+ +
+
+

splitgraph.config.config module

+
+
+splitgraph.config.config.chain_getters(getters: Sequence[Callable[[str], Optional[str]]], key: str, default_return: Optional[str] = None)Optional[str]
+
+ +
+
+splitgraph.config.config.create_config_dict()Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create and return a dict of all known config values

+
+ +
+
+splitgraph.config.config.get_all_in_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str)Dict[str, Union[Dict[str, str], str]]
+

Get all subsections from a config (e.g. config[“data_sources”])

+
+ +
+
+splitgraph.config.config.get_all_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str)Dict[str, str]
+
+ +
+
+splitgraph.config.config.get_from_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, item: str)str
+
+ +
+
+splitgraph.config.config.get_from_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str)str
+

Return a singleton variable from a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.get_singleton(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], item: str)str
+

Return a singleton (not a section) variable from the config.

+
+ +
+
+splitgraph.config.config.lazy_get_config_value(key: str, default_return: Optional[str] = None)Optional[Union[str, Dict[str, Dict[str, str]]]]
+

Get the config value for a key in the following precedence +Otherwise return default_return

+
+ +
+
+splitgraph.config.config.patch_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], patch: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Recursively updates a nested configuration dictionary:

+
+
patch_config(
+
{“key_1”: “value_1”,

“dict_1”: {“key_1”: “value_1”}},

+
+
{“key_1”: “value_2”,

“dict_1”: {“key_2”: “value_2”}}) == {“key_1”: “value_2”, +“dict_1”: {“key_1”: “value_1”, “key_2”: “value_2”}}

+
+
+
+
+
+
Parameters
+
    +
  • config – Config dictionary

  • +
  • patch – Dictionary with the path

  • +
+
+
Returns
+

New patched dictionary

+
+
+
+ +
+
+splitgraph.config.config.set_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str, value: str)None
+

Set a singleton variable in a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.update_config_dict_from_arguments(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sys.argv +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_env_vars(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading os.environ +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_file(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], sg_config_file: str)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sg_config_file +and overwriting any keys according to the rules in config_file_config

+

Return updated copy of config_dict.

+
+ +
+
+

splitgraph.config.config_file_config module

+
+
+splitgraph.config.config_file_config.accumulate_lists(config_dict: Dict[str, Union[Dict[str, str], str]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Transform a config_dict to “accumulate” objects “nested” via key name

+

Because ConfigParser does not support nesting, we implement our own +syntax via the key names of sections. The ‘:’ character can be used in +section names to specify the left and right key. Example:

+
.ini config             new config_dict
+
+                  ----->
+                    |
+[remote: remote1]   |   {
+SG_ENV_VAR=foo      |       **rest_of_config_dict,
+                    |       "remotes": {
+[origin: origin1]   |           "remote1": {
+SG_ENV_VAR=bar      |               "SG_ENV_VAR": "foo"
+                    |           }
+[origin: origin2]   |       },
+SG_ENV_VAR=bax      |       "origins": {
+                    |           "origin1": {
+                    |               "SG_ENV_VAR": "bar"
+                    |           },
+                    |           "origin2": {
+                    |               "SG_ENV_VAR": "bax"
+                    |           }
+                    |       }
+                    |   }
+                    |
+                  ----->
+
+
+

:return a new, updated copy of config_dict

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_config_file(sg_file: str, **kwargs)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create a dict from ConfigParser, apply transformations to it.

+

Return parsed and transformed config_dict.

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_file(sg_file: str, **kwargs)Dict[str, Dict[str, str]]
+
+ +
+
+splitgraph.config.config_file_config.hoist_section(config_dict: Dict[str, Dict[str, str]], section: str = 'defaults')Dict[str, Union[Dict[str, str], str]]
+

If a section exists called <hoist_section>, hoist it to the top level +This is useful for overriding default configs from within a config file

+

Transform config_dict to “hoist” any config values from a section +into the top level (thus, overriding environment variables), +when the name of the section matches hoist_section.

+

Return a new, updated copy of config_dict.

+
+ +
+
+splitgraph.config.config_file_config.transform_config_dict(config_dict: Dict[str, Dict[str, str]], **kwargs)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Apply transformations to the raw ConfigParser.config object

+
+
    +
  1. hoist_section

  2. +
  3. accumulate_lists

  4. +
+
+

Return the a new, updated copy of config_dict.

+
+ +
+
+

splitgraph.config.default_config module

+
+
+splitgraph.config.default_config.get_default_config_value(key: str, default_return: Optional[str] = None)Any
+

Get the hard-coded default value of a config key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.environment_config module

+
+
+splitgraph.config.environment_config.get_environment_config_value(key: str, default_return: Optional[str] = None)Optional[str]
+

Get the environment variable value of the environment variable matching key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.export module

+

Routines for exporting the config back into text.

+
+
+splitgraph.config.export.overwrite_config(new_config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_path: str, include_defaults: bool = False)None
+

Serialize the new config dictionary and overwrite the current config file. +Note: this will delete all comments in the config!

+
+
Parameters
+
    +
  • new_config – Config dictionary.

  • +
  • config_path – Path to the config file.

  • +
  • include_defaults – Whether to include values that are the same +as their defaults.

  • +
+
+
+
+ +
+
+splitgraph.config.export.serialize_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_format: bool, no_shielding: bool, include_defaults: bool = True)str
+

Pretty-print the configuration or print it in the Splitgraph config file format.

+
+
Parameters
+
    +
  • config – Configuration dictionary.

  • +
  • config_format – Output configuration in the Splitgraph config file format.

  • +
  • no_shielding – Don’t replace sensitive values (like passwords) with asterisks

  • +
  • include_defaults – Emit the config variable even if it’s the same as the default.

  • +
+
+
Returns
+

Textual representation of the config.

+
+
+
+ +
+
+splitgraph.config.export.serialize_engine_config(engine_name: str, conn_params: Dict[str, str], no_shielding: bool)str
+

Output the config section with connection parameters for a single engine.

+
+
Parameters
+
    +
  • engine_name – Name of the engine

  • +
  • conn_params – Dictionary of connection parameters

  • +
  • no_shielding – Don’t replace passwords with asterisks

  • +
+
+
+
+ +
+
+

splitgraph.config.keys module

+
+
+splitgraph.config.keys.SENSITIVE_KEY_SUFFIXES = ['_PWD', '_TOKEN']
+

Warning: Every key in DEFAULTS must have a key in ARGUMENT_KEY_MAP +If you add/remove keys from DEFAULTS, make sure to do so here too.

+
+ +
+
+

splitgraph.config.system_config module

+
+
+splitgraph.config.system_config.file_exists(_dir: str, filename: str)bool
+
+ +
+
+splitgraph.config.system_config.get_config_file(default_return: None = None)Optional[str]
+

Get the location of an existing SG_CONFIG_FILE on the system with +a valid name. Do not attempt to parse the config file, just return +its location.

+

Otherwise, return default_return

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_dirs()List[str]
+

Get any explicitly defined config file directories, +which are directories where we should search for files from +VALID_CONFIG_FILE_NAMES.

+

This list is defined similar to $PATH, as a colon (:) delimited +string, either in:

+
+
    +
  • argument flag –config-dirs

  • +
  • or environment key SG_CONFIG_DIRS

  • +
+
+

Or a single directory defined in either

+
+
    +
  • argument flag –config-dir

  • +
  • environment key SG_CONFIG_DIR

  • +
+
+

If both plural and single are defined, join them together.

+

Return a list of valid paths that are set, or an empty list.

+

Print a warning if any paths to not exist.

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_location()Optional[str]
+

Get the explicitly defined location of config file, if defined.

+

The location will either be defined in:

+
+
    +
  • argument flag –config-file

  • +
  • or environment key SG_CONFIG_FILE

  • +
+
+

In keeping with assumptions about priority, argument flag has +higher priority than environment value.

+

If the location is set, and points to an existing file, return location.

+

Otherwise return None

+

Print a warning if location is set but points to non-existing file.

+
+ +
+
+splitgraph.config.system_config.get_system_config_value(key: str, default_return: None = None)Optional[str]
+
+ +
+
+splitgraph.config.system_config.is_file(filename: str)bool
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.core.indexing.mdx b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.core.indexing.mdx new file mode 100644 index 00000000..794d6acf --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.core.indexing.mdx @@ -0,0 +1,141 @@ + + + +export const meta = { + title: "splitgraph.core.indexing package", + id: "splitgraph.core.indexing package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.core.indexing.bloom module

+

Bloom filtering on fragments for equality queries.

+
+
+splitgraph.core.indexing.bloom.describe(index_tuple: Tuple[int, str])str
+

Returns a pretty-printed summary of the bloom filter

+
+
Parameters
+

index_tuple – Tuple of (k, base64-encoded fingerprint) +returned by generate_bloom_index

+
+
Returns
+

String

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.filter_bloom_index(engine: PsycopgEngine, object_ids: List[str], quals: Any)List[str]
+

Runs a bloom filter on given qualifiers using the given objects’ previously-generated +fingerprints.

+
+
Parameters
+
    +
  • engine – Object engine

  • +
  • object_ids – Object IDs

  • +
  • quals – List of qualifiers

  • +
+
+
Returns
+

List of object IDs that might match the qualifiers in quals (including +IDs that don’t have a bloom index).

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.generate_bloom_index(engine: PsycopgEngine, object_id: str, changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], column: str, probability: Optional[float] = None, size: Optional[int] = None)Tuple[int, str]
+

Generates a bloom filter signature for a given column and a given fragment. Bloom filters +can answer queries asking whether an item is definitely not in a given set or possibly can be.

+

The tradeoff is between the probability of a false positive (item said to be in the set when +it actually isn’t) and the size of the filter.

+

Bloom filters also have an extra parameter, k, or the number of bits in the signature that +a certain item flips. This parameter has an optimal value for a given number of distinct items +or a probability and so isn’t explicitly passed by the user.

+
+
Parameters
+
    +
  • engine – Object engine the fragment is cached in.

  • +
  • object_id – Fragment ID

  • +
  • changeset – Optional, if specified, the old column values are included in the index.

  • +
  • column – Column name to generate the index on.

  • +
  • probability – Probability of a false positive. Either this or the size of the filter must +be specified, but not both.

  • +
  • size – Size of the filter, in bytes.

  • +
+
+
Returns
+

Dictionary to be inserted into the index.

+
+
+
+ +
+
+

splitgraph.core.indexing.range module

+
+
+splitgraph.core.indexing.range.extract_min_max_pks(engine: PsycopgEngine, fragments: List[str], table_pks: List[str], table_pk_types: List[str])Any
+

Extract minimum/maximum PK values for given fragments.

+
+
Parameters
+
    +
  • engine – Engine the objects live on

  • +
  • fragments – IDs of objects

  • +
  • table_pks – List of columns forming the table primary key

  • +
  • table_pk_types – List of types for table PK columns

  • +
+
+
Returns
+

List of min/max primary key for every object.

+
+
+
+ +
+
+splitgraph.core.indexing.range.filter_range_index(metadata_engine: PsycopgEngine, object_ids: List[str], quals: Any, column_types: Dict[str, str])List[str]
+
+ +
+
+splitgraph.core.indexing.range.generate_range_index(object_engine: PsycopgEngine, object_id: str, table_schema: TableSchema, changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], columns: Optional[List[str]] = None)Dict[str, Tuple[T, T]]
+

Calculate the minimum/maximum values of every column in the object (including deleted values).

+
+
Parameters
+
    +
  • object_engine – Engine the object is located on

  • +
  • object_id – ID of the object.

  • +
  • table_schema – Schema of the table

  • +
  • changeset – Changeset (old values will be included in the index)

  • +
  • columns – Columns to run the index on (default all)

  • +
+
+
Returns
+

Dictionary of &lbrace;column: [min, max]&rbrace;

+
+
+
+ +
+
+splitgraph.core.indexing.range.quals_to_sql(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], column_types: Dict[str, str])Tuple[psycopg2.sql.Composable, Tuple]
+

Convert a list of qualifiers in CNF to a fragment of a Postgres query +:param quals: Qualifiers in CNF +:param column_types: Dictionary of column names and their types +:return: SQL Composable object and a tuple of arguments to be mogrified into it.

+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.core.mdx b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.core.mdx new file mode 100644 index 00000000..e48cdce6 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.core.mdx @@ -0,0 +1,2021 @@ + + + +export const meta = { + title: "splitgraph.core package", + id: "splitgraph.core package" +}; + +
+

Module contents

+

Core Splitgraph functionality: versioning and sharing tables.

+

The main point of interaction with the Splitgraph API is a splitgraph.core.repository.Repository object +representing a local or a remote Splitgraph repository. Repositories can be created using one of the +following methods:

+
+
    +
  • Directly by invoking Repository(namespace, name, engine) where engine is the engine that the repository +belongs to (that can be gotten with get_engine(engine_name). If the created repository doesn’t actually exist +on the engine, it must first be initialized with repository.init().

  • +
  • By using splitgraph.core.engine.lookup_repository() which will search for the repository on the current +lookup path.

  • +
+
+
+ + +
+

Submodules

+
+
+

splitgraph.core.common module

+

Common internal functions used by Splitgraph commands.

+
+
+class splitgraph.core.common.CallbackList(iterable=(), /)
+

Bases: list

+

Used to pass around and call multiple callbacks at once.

+
+ +
+
+class splitgraph.core.common.Tracer
+

Bases: object

+

Accumulates events and returns the times between them.

+
+
+get_durations()List[Tuple[str, float]]
+

Return all events and durations between them. +:return: List of (event name, time to this event from the previous event (or start))

+
+ +
+
+get_total_time()float
+
+
Returns
+

Time from start to the final logged event.

+
+
+
+ +
+
+log(event: str)None
+

Log an event at the current time +:param event: Event name

+
+ +
+ +
+
+splitgraph.core.common.adapt(value: Any, pg_type: str)Any
+

Coerces a value with a PG type into its Python equivalent.

+
+
Parameters
+
    +
  • value – Value

  • +
  • pg_type – Postgres datatype

  • +
+
+
Returns
+

Coerced value.

+
+
+
+ +
+
+splitgraph.core.common.aggregate_changes(query_result: List[Tuple[int, int]], initial: Optional[Tuple[int, int, int]] = None)Tuple[int, int, int]
+

Add a changeset to the aggregated diff result

+
+ +
+
+splitgraph.core.common.coerce_val_to_json(val: Any)Any
+

Turn a Python value to a string/float that can be stored as JSON.

+
+ +
+
+splitgraph.core.common.ensure_metadata_schema(engine: PsycopgEngine)None
+

Create or migrate the metadata schema splitgraph_meta that stores the hash tree of schema +snapshots (images), tags and tables. +This means we can’t mount anything under the schema splitgraph_meta – much like we can’t have a folder +“.git” under Git version control…

+
+ +
+
+splitgraph.core.common.gather_sync_metadata(target: Repository, source: Repository, overwrite_objects=False, overwrite_tags=False, single_image: Optional[str] = None)Any
+

Inspects two Splitgraph repositories and gathers metadata that is required to bring target up to +date with source.

+
+
Parameters
+
    +
  • target – Target Repository object

  • +
  • source – Source repository object

  • +
  • overwrite_objects – If True, will return metadata for all objects +belonging to new images (or existing image if single_image=True)

  • +
  • single_image – If set, only grab a single image with this hash/tag from the source.

  • +
  • overwrite_tags – If True and single_image is set, will return all tags for that image. +If single_image is not set, will return all tags in the source repository. +If False, will only return tags in the source that don’t exist on the target.

  • +
+
+
Returns
+

Tuple of metadata for new_images, new_tables, object_locations, object_meta, tags

+
+
+
+ +
+
+splitgraph.core.common.get_data_safe(package: str, resource: str)bytes
+
+ +
+
+splitgraph.core.common.get_temporary_table_id()str
+

Generate a random ID for temporary/staging objects that haven’t had their ID calculated yet.

+
+ +
+
+splitgraph.core.common.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.common.manage_audit(func: Callable)Callable
+

A decorator to be put around various Splitgraph commands +that adds/removes audit triggers for new/committed/deleted tables.

+
+ +
+
+splitgraph.core.common.manage_audit_triggers(engine: PostgresEngine, object_engine: Optional[PostgresEngine] = None)None
+

Does bookkeeping on audit triggers / audit table:

+
+
    +
  • Detect tables that are being audited that don’t need to be any more +(e.g. they’ve been unmounted)

  • +
  • Drop audit triggers for those and delete all audit info for them

  • +
  • Set up audit triggers for new tables

  • +
+
+

If the metadata engine isn’t the same as the object engine, this does nothing.

+
+
Parameters
+
    +
  • engine – Metadata engine with information about images and their checkout state

  • +
  • object_engine – Object engine where the checked-out table and the audit triggers are located.

  • +
+
+
+
+ +
+
+splitgraph.core.common.resource_path(relative_path)
+
+ +
+
+splitgraph.core.common.set_head(repository: Repository, image: Optional[str])None
+

Sets the HEAD pointer of a given repository to a given image. Shouldn’t be used directly.

+
+ +
+
+splitgraph.core.common.set_tag(repository: Repository, image_hash: Optional[str], tag: str)None
+

Internal function – add a tag to an image.

+
+ +
+
+splitgraph.core.common.set_tags_batch(repository: Repository, hashes_tags: List[Tuple[str, str]])None
+
+ +
+
+splitgraph.core.common.slow_diff(repository: Repository, table_name: str, image_1: Optional[str], image_2: Optional[str], aggregate: bool)Union[Tuple[int, int, int], List[Tuple[bool, Tuple]]]
+

Materialize both tables and manually diff them

+
+ +
+
+

splitgraph.core.engine module

+

Routines for managing Splitgraph engines, including looking up repositories and managing objects.

+
+
+splitgraph.core.engine.get_current_repositories(engine: PostgresEngine)List[Tuple[Repository, Optional[Image]]]
+

Lists all repositories currently in the engine.

+
+
Parameters
+

engine – Engine

+
+
Returns
+

List of (Repository object, current HEAD image)

+
+
+
+ +
+
+splitgraph.core.engine.init_engine(skip_object_handling: bool = False)None
+

Initializes the engine by:

+
+
    +
  • performing any required engine-custom initialization

  • +
  • creating the metadata tables

  • +
+
+
+
Parameters
+

skip_object_handling – If True, skips installing routines related to +object handling and checkouts (like audit triggers and CStore management).

+
+
+
+ +
+
+splitgraph.core.engine.lookup_repository(name: str, include_local: bool = False)Repository
+

Queries the SG engines on the lookup path to locate one hosting the given repository.

+
+
Parameters
+
    +
  • name – Repository name

  • +
  • include_local – If True, also queries the local engine

  • +
+
+
Returns
+

Local or remote Repository object

+
+
+
+ +
+
+splitgraph.core.engine.repository_exists(repository: Repository)bool
+

Checks if a repository exists on the engine.

+
+
Parameters
+

repository – Repository object

+
+
+
+ +
+
+

splitgraph.core.fdw_checkout module

+
+
+

splitgraph.core.fragment_manager module

+

Routines related to storing tables as fragments.

+
+
+class splitgraph.core.fragment_manager.Digest(shorts: Tuple[int, ])
+

Bases: object

+

Homomorphic hashing similar to LtHash (but limited to being backed by 256-bit hashes). The main property is that +for any rows A, B, LtHash(A) + LtHash(B) = LtHash(A+B). This is done by construction: we simply hash individual +rows and then do bit-wise addition / subtraction of individual hashes to come up with the full table hash.

+

Hence, the content hash of any Splitgraph table fragment is the sum of hashes of its added rows minus the sum +of hashes of its deleted rows (including the old values of the rows that have been updated). This has a very +useful implication: the hash of a full Splitgraph table is equal to the sum of hashes of its individual fragments.

+

This property can be used to simplify deduplication.

+
+
+classmethod empty()splitgraph.core.fragment_manager.Digest
+

Return an empty Digest instance such that for any Digest D, D + empty == D - empty == D

+
+ +
+
+classmethod from_hex(hex_string: str)splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 64-characters (256-bit) hexadecimal string

+
+ +
+
+classmethod from_memoryview(memory: Union[bytes, memoryview])splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 256-bit memoryview/bytearray.

+
+ +
+
+hex()str
+

Convert the hash into a hexadecimal value.

+
+ +
+ +
+
+class splitgraph.core.fragment_manager.FragmentManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.metadata_manager.MetadataManager

+

A storage engine for Splitgraph tables. Each table can be stored as one or more immutable fragments that can +optionally overwrite each other. When a new table is created, it’s split up into multiple base fragments. When +a new version of the table is written, the audit log is inspected and one or more patch fragments are created, +to be based on the fragments the previous version of the table consisted of. Only the top fragments in this stack +are stored in the table metadata: to reconstruct the whole table, the links from the top fragments down to the +base fragments have to be followed.

+

In addition, the fragments engine also supports min-max indexing on fragments: this is used to only fetch fragments +that are required for a given query.

+
+
+calculate_content_hash(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None, chunk_id_col: Optional[str] = None, chunk_id: Optional[int] = None)Tuple[str, int]
+

Calculates the homomorphic hash of table contents.

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Name of the table

  • +
  • table_schema – Schema of the table

  • +
  • chunk_id_col – Column the table is partitioned on

  • +
  • chunk_id – Column value to get rows from

  • +
+
+
Returns
+

A 64-character (256-bit) hexadecimal string with the content hash of the table +and the number of rows in the hash.

+
+
+
+ +
+
+calculate_fragment_insertion_hash_stats(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None)Tuple[splitgraph.core.fragment_manager.Digest, int]
+

Calculate the homomorphic hash of just the rows that a given fragment inserts +:param schema: Schema the fragment is stored in. +:param table: Name of the table the fragment is stored in. +:return: A Digest object and the number of inserted rows

+
+ +
+
+create_base_fragment(source_schema: str, source_table: str, namespace: str, chunk_id_col: Optional[str] = None, chunk_id: Optional[int] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None)str
+
+ +
+
+delete_objects(objects: Union[Set[str], List[str]])None
+

Deletes objects from the Splitgraph cache

+
+
Parameters
+

objects – A sequence of objects to be deleted

+
+
+
+ +
+
+filter_fragments(object_ids: List[str], table: Table, quals: Any)List[str]
+

Performs fuzzy filtering on the given object IDs using the index and a set of qualifiers, discarding +objects that definitely do not match the qualifiers.

+
+
Parameters
+
    +
  • object_ids – List of object IDs to filter.

  • +
  • table – A Table object the objects belong to.

  • +
  • quals

    List of qualifiers in conjunctive normal form that will be matched against the index. +Objects that definitely don’t match these qualifiers will be discarded.

    +

    A list containing [[qual_1, qual_2], [qual_3, qual_4]] will be interpreted as +(qual_1 OR qual_2) AND (qual_3 OR qual_4).

    +

    Each qual is a tuple of (column_name, operator, value) where +operator can be one of >, >=, <, <=, =.

    +

    For unknown operators, it will be assumed that all fragments might match that clause.

    +

  • +
+
+
Returns
+

List of objects that might match the given qualifiers.

+
+
+
+ +
+
+generate_object_index(object_id: str, table_schema: List[splitgraph.core.types.TableColumn], changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None)Dict[str, Any]
+

Queries the max/min values of a given fragment for each column, used to speed up querying.

+
+
Parameters
+
    +
  • object_id – ID of an object

  • +
  • table_schema – Schema of the table the object belongs to.

  • +
  • changeset – Optional, if specified, the old row values are included in the index.

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
Returns
+

Dict containing the object index.

+
+
+
+ +
+
+get_min_max_pks(fragments: List[str], table_pks: List[Tuple[str, str]])List[Tuple[Tuple, Tuple]]
+

Get PK ranges for given fragments using the index (without reading the fragments).

+
+
Parameters
+
    +
  • fragments – List of object IDs (must be registered and with the same schema)

  • +
  • table_pks – List of tuples (column, type) that form the object PK.

  • +
+
+
Returns
+

List of (min, max) PK for every fragment where PK is a tuple. +If a fragment doesn’t exist or doesn’t have a corresponding index entry, +a SplitGraphError is raised.

+
+
+
+ +
+
+record_table_as_base(repository: Repository, table_name: str, image_hash: str, chunk_size: Optional[int] = 10000, source_schema: Optional[str] = None, source_table: Optional[str] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False)List[str]
+

Copies the full table verbatim into one or more new base fragments and registers them.

+
+
Parameters
+
    +
  • repository – Repository

  • +
  • table_name – Table name

  • +
  • image_hash – Hash of the new image

  • +
  • chunk_size – If specified, splits the table into multiple objects with a given number of rows

  • +
  • source_schema – Override the schema the source table is stored in

  • +
  • source_table – Override the name of the table the source is stored in

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Key to sort data inside each chunk by.

  • +
  • overwrite – Overwrite physical objects that already exist.

  • +
+
+
+
+ +
+
+record_table_as_patch(old_table: Table, schema: str, image_hash: str, new_schema_spec: List[splitgraph.core.types.TableColumn] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False)None
+

Flushes the pending changes from the audit table for a given table and records them, +registering the new objects.

+
+
Parameters
+
    +
  • old_table – Table object pointing to the current HEAD table

  • +
  • schema – Schema the table is checked out into.

  • +
  • image_hash – Image hash to store the table under

  • +
  • new_schema_spec – New schema of the table (use the old table’s schema by default).

  • +
  • split_changeset – See Repository.commit for reference

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
+
+ +
+ +
+
+splitgraph.core.fragment_manager.get_chunk_groups(chunks: List[Tuple[str, Any, Any]])List[List[Tuple[str, Any, Any]]]
+

Takes a list of chunks and their boundaries and combines them +into independent groups such that chunks from no two groups +overlap with each other (intervals are assumed to be closed, +e.g. chunk (1,2) overlaps with chunk (2,3)).

+

The original order of chunks is preserved within each group.

+

For example, 4 chunks A, B, C, D that don’t overlap each other +will be grouped into 4 groups [A], [B], [C], [D].

+

If A overlaps B, the result will be [A, B], [C], [D].

+

If in addition B overlaps C (but not A), the result will be [A, B, C], [D].

+

If in addition D overlaps any of A, B or C, the result will be [A, B, C, D] +(despite that D is located before A: it will be last since it was last in the +original list).

+
+
Parameters
+

chunks – List of (chunk_id, start, end)

+
+
Returns
+

List of lists of (chunk_id, start, end)

+
+
+
+ +
+
+

splitgraph.core.image module

+

Image representation and provenance

+
+
+class splitgraph.core.image.Image(image_hash: str, parent_id: Optional[str], created: datetime.datetime, comment: str, provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], repository: Repository)
+

Bases: tuple

+

Represents a Splitgraph image. Should’t be created directly, use Image-loading methods in the +splitgraph.core.repository.Repository class instead.

+
+
+checkout(force: bool = False, layered: bool = False)None
+

Checks the image out, changing the current HEAD pointer. Raises an error +if there are pending changes to its checkout.

+
+
Parameters
+
    +
  • force – Discards all pending changes to the schema.

  • +
  • layered – If True, uses layered querying to check out the image (doesn’t materialize tables +inside of it).

  • +
+
+
+
+ +
+
+property comment
+

Alias for field number 3

+
+ +
+
+property created
+

Alias for field number 2

+
+ +
+
+delete_tag(tag: str)None
+

Deletes a tag from an image.

+
+
Parameters
+

tag – Tag to delete.

+
+
+
+ +
+
+property engine
+
+ +
+
+get_log()List[splitgraph.core.image.Image]
+

Repeatedly gets the parent of a given image until it reaches the bottom.

+
+ +
+
+get_parent_children()Tuple[Optional[str], List[str]]
+

Gets the parent and a list of children of a given image.

+
+ +
+
+get_size()int
+

Get the physical size used by the image’s objects (including those that might be +shared with other images).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of image’s +objects have been downloaded.

+
+
Returns
+

Size of the image in bytes.

+
+
+
+ +
+
+get_table(table_name: str)splitgraph.core.table.Table
+

Returns a Table object representing a version of a given table. +Contains a list of objects that the table is linked to and the table’s schema.

+
+
Parameters
+

table_name – Name of the table

+
+
Returns
+

Table object

+
+
+
+ +
+
+get_tables()List[str]
+

Gets the names of all tables inside of an image.

+
+ +
+
+get_tags()
+

Lists all tags that this image has.

+
+ +
+
+property image_hash
+

Alias for field number 0

+
+ +
+
+property object_engine
+
+ +
+
+property parent_id
+

Alias for field number 1

+
+ +
+
+provenance(reverse=False, engine=None)List[Tuple[Repository, str]]
+

Inspects the image’s parent chain to come up with a set of repositories and their hashes +that it was created from.

+

If reverse is True, returns a list of images that were created _from_ this image. If +this image is on a remote repository, engine can be passed in to override the engine +used for the lookup of dependents.

+
+
Returns
+

List of (repository, image_hash)

+
+
+
+ +
+
+property provenance_data
+

Alias for field number 4

+
+ +
+
+query_schema(wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', commit: bool = True)Iterator[str]
+

Creates a temporary schema with tables in this image mounted as foreign tables that can be accessed via +read-only layered querying. On exit from the context manager, the schema is discarded.

+
+
Returns
+

The name of the schema the image is located in.

+
+
+
+ +
+
+property repository
+

Alias for field number 5

+
+ +
+
+set_provenance(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]])None
+

Sets the image’s provenance. Internal function called by the Splitfile interpreter, shouldn’t +be called directly as it changes the image after it’s been created.

+
+
Parameters
+

provenance_data – List of parsed Splitfile commands and their data.

+
+
+
+ +
+
+tag(tag: str)None
+

Tags a given image. All tags are unique inside of a repository. If a tag already exists, it’s removed +from the previous image and given to the new image.

+
+
Parameters
+

tag – Tag to set. ‘latest’ and ‘HEAD’ are reserved tags.

+
+
+
+ +
+
+to_splitfile(ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None)List[str]
+

Recreate the Splitfile that can be used to reconstruct this image.

+
+
Parameters
+
    +
  • ignore_irreproducible – If True, ignore commands from irreproducible Splitfile lines +(like MOUNT or custom commands) and instead emit a comment (this results in an invalid Splitfile).

  • +
  • source_replacement – A dictionary of repositories and image hashes/tags specifying how to replace the +dependencies of this Splitfile (table imports and FROM commands).

  • +
+
+
Returns
+

A list of Splitfile commands that can be fed back into the executor.

+
+
+
+ +
+ +
+
+splitgraph.core.image.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.image.reconstruct_splitfile(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None)List[str]
+

Recreate the Splitfile that can be used to reconstruct an image.

+
+ +
+
+

splitgraph.core.image_manager module

+
+
+class splitgraph.core.image_manager.ImageManager(repository: Repository)
+

Bases: object

+

Collects various image-related functions.

+
+
+add(parent_id: Optional[str], image: str, created: Optional[datetime.datetime] = None, comment: Optional[str] = None, provenance_data: Optional[List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]] = None)None
+

Registers a new image in the Splitgraph image tree.

+

Internal method used by actual image creation routines (committing, importing or pulling).

+
+
Parameters
+
    +
  • parent_id – Parent of the image

  • +
  • image – Image hash

  • +
  • created – Creation time (defaults to current timestamp)

  • +
  • comment – Comment (defaults to empty)

  • +
  • provenance_data – Provenance data that can be used to reconstruct the image.

  • +
+
+
+
+ +
+
+add_batch(images: List[splitgraph.core.image.Image])None
+

Like add, but registers multiple images at the same time. Used in push/pull +to avoid a roundtrip to the registry for each image +:param images: List of Image objects. Namespace and repository will be patched

+
+

with this repository.

+
+
+ +
+
+by_hash(image_hash: str)splitgraph.core.image.Image
+

Returns an image corresponding to a given (possibly shortened) image hash. If the image hash +is ambiguous, raises an error. If the image does not exist, raises an error or returns None.

+
+
Parameters
+

image_hash – Image hash (can be shortened).

+
+
Returns
+

Image

+
+
+
+ +
+
+by_tag(tag: str, raise_on_none: bool = True)Optional[splitgraph.core.image.Image]
+

Returns an image with a given tag

+
+
Parameters
+
    +
  • tag – Tag. ‘latest’ is a special case: it returns the most recent image in the repository.

  • +
  • raise_on_none – Whether to raise an error or return None if the tag doesn’t exist.

  • +
+
+
+
+ +
+
+delete(images: Sequence[str])None
+

Deletes a set of Splitgraph images from the repository. Note this doesn’t check whether +this will orphan some other images in the repository and can make the state of the repository +invalid.

+

Image deletions won’t be replicated on push/pull (those can only add new images).

+
+
Parameters
+

images – List of image IDs

+
+
+
+ +
+
+get_all_child_images(start_image: str)Set[str]
+

Get all children of start_image of any degree.

+
+ +
+
+get_all_parent_images(start_images: Set[str])Set[str]
+

Get all parents of the ‘start_images’ set of any degree.

+
+ +
+ +
+
+

splitgraph.core.metadata_manager module

+

Classes related to managing table/image/object metadata tables.

+
+
+class splitgraph.core.metadata_manager.MetadataManager(metadata_engine: PsycopgEngine)
+

Bases: object

+

A data access layer for the metadata tables in the splitgraph_meta schema that concerns itself +with image, table and object information.

+
+
+cleanup_metadata()List[str]
+

Go through the current metadata and delete all objects that aren’t required +by any table on the engine.

+
+
Returns
+

List of objects that have been deleted.

+
+
+
+ +
+
+delete_object_meta(object_ids: Sequence[str])
+

Delete metadata for multiple objects (external locations, indexes, hashes). +This doesn’t delete physical objects.

+
+
Parameters
+

object_ids – Object IDs to delete

+
+
+
+ +
+
+get_all_objects()List[str]
+

Gets all objects currently in the Splitgraph tree.

+
+
Returns
+

List of object IDs.

+
+
+
+ +
+
+get_external_object_locations(objects: List[str])List[Tuple[str, str, str]]
+

Gets external locations for objects.

+
+
Parameters
+

objects – List of object IDs stored externally.

+
+
Returns
+

List of (object_id, location, protocol).

+
+
+
+ +
+
+get_new_objects(object_ids: List[str])List[str]
+

Get object IDs from the passed list that don’t exist in the tree.

+
+
Parameters
+

object_ids – List of objects to check

+
+
Returns
+

List of unknown object IDs.

+
+
+
+ +
+
+get_object_meta(objects: List[str])Dict[str, splitgraph.core.metadata_manager.Object]
+

Get metadata for multiple Splitgraph objects from the tree

+
+
Parameters
+

objects – List of objects to get metadata for.

+
+
Returns
+

Dictionary of object_id -> Object

+
+
+
+ +
+
+get_objects_for_repository(repository: Repository, image_hash: Optional[str] = None)List[str]
+
+ +
+
+get_unused_objects(threshold: Optional[int] = None)List[Tuple[str, datetime.datetime]]
+

Get a list of all objects in the metadata that aren’t used by any table and can be +safely deleted.

+
+
Parameters
+

threshold – Only return objects that were created earlier than this (in minutes)

+
+
Returns
+

List of objects and their creation times.

+
+
+
+ +
+
+overwrite_table(repository: Repository, image_hash: str, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+
+ +
+
+register_object_locations(object_locations: List[Tuple[str, str, str]])None
+

Registers external locations (e.g. HTTP or S3) for Splitgraph objects. +Objects must already be registered in the object tree.

+
+
Parameters
+

object_locations – List of (object_id, location, protocol).

+
+
+
+ +
+
+register_objects(objects: List[splitgraph.core.metadata_manager.Object], namespace: Optional[str] = None)None
+

Registers multiple Splitgraph objects in the tree.

+
+
Parameters
+
    +
  • objects – List of Object objects.

  • +
  • namespace – If specified, overrides the original object namespace, required +in the case where the remote repository has a different namespace than the local one.

  • +
+
+
+
+ +
+
+register_tables(repository: Repository, table_meta: List[Tuple[str, str, List[splitgraph.core.types.TableColumn], List[str]]])None
+

Links tables in an image to physical objects that they are stored as. +Objects must already be registered in the object tree.

+
+
Parameters
+
    +
  • repository – Repository that the tables belong to.

  • +
  • table_meta – A list of (image_hash, table_name, table_schema, object_ids).

  • +
+
+
+
+ +
+ +
+
+class splitgraph.core.metadata_manager.Object(object_id: str, format: str, namespace: str, size: int, created: datetime.datetime, insertion_hash: str, deletion_hash: str, object_index: Dict[str, Any], rows_inserted: int, rows_deleted: int)
+

Bases: tuple

+

Represents a Splitgraph object that tables are composed of.

+
+
+property created
+

Alias for field number 4

+
+ +
+
+property deletion_hash
+

Alias for field number 6

+
+ +
+
+property format
+

Alias for field number 1

+
+ +
+
+property insertion_hash
+

Alias for field number 5

+
+ +
+
+property namespace
+

Alias for field number 2

+
+ +
+
+property object_id
+

Alias for field number 0

+
+ +
+
+property object_index
+

Alias for field number 7

+
+ +
+
+property rows_deleted
+

Alias for field number 9

+
+ +
+
+property rows_inserted
+

Alias for field number 8

+
+ +
+
+property size
+

Alias for field number 3

+
+ +
+ +
+
+

splitgraph.core.migration module

+
+
+splitgraph.core.migration.get_installed_version(engine: PsycopgEngine, schema_name: str, version_table: str = 'version')Optional[Tuple[str, datetime.datetime]]
+
+ +
+
+splitgraph.core.migration.get_version_tuples(filenames: List[str])List[Tuple[Optional[str], str]]
+
+ +
+
+splitgraph.core.migration.make_file_list(schema_name: str, migration_path: List[Optional[str]])
+

Construct a list of file names from history of versions and schema name

+
+ +
+
+splitgraph.core.migration.set_installed_version(engine: PsycopgEngine, schema_name: str, version: str, version_table: str = 'version')
+
+ +
+
+splitgraph.core.migration.source_files_to_apply(engine: PsycopgEngine, schema_name: str, schema_files: List[str], version_table: str = 'version', static: bool = False, target_version: Optional[str] = None)Tuple[List[str], str]
+

Get the ordered list of .sql files to apply to the database

+
+ +
+
+

splitgraph.core.object_manager module

+

Functions related to creating, deleting and keeping track of physical Splitgraph objects.

+
+
+class splitgraph.core.object_manager.ObjectManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.fragment_manager.FragmentManager

+

Brings the multiple manager classes together and manages the object cache (downloading and uploading +objects as required in order to fulfill certain queries)

+
+
+cleanup()List[str]
+

Deletes all objects in the object_tree not required by any current repository, including their dependencies and +their remote locations. Also deletes all objects not registered in the object_tree.

+
+ +
+
+download_objects(source: Optional[splitgraph.core.object_manager.ObjectManager], objects_to_fetch: List[str], object_locations: List[Tuple[str, str, str]])List[str]
+

Fetches the required objects from the remote and stores them locally. +Does nothing for objects that already exist.

+
+
Parameters
+
    +
  • source – Remote ObjectManager. If None, will only try to download objects from the external location.

  • +
  • objects_to_fetch – List of object IDs to download.

  • +
  • object_locations – List of custom object locations, encoded as tuples (object_id, object_url, protocol).

  • +
+
+
+
+ +
+
+ensure_objects(table: Optional[Table], objects: Optional[List[str]] = None, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]] = None, defer_release: bool = False, tracer: Optional[splitgraph.core.common.Tracer] = None, upstream_manager: Optional[ObjectManager] = None)Iterator[Union[List[str], Tuple[List[str], splitgraph.core.common.CallbackList]]]
+

Resolves the objects needed to materialize a given table and makes sure they are in the local +splitgraph_meta schema.

+

Whilst inside this manager, the objects are guaranteed to exist. On exit from it, the objects are marked as +unneeded and can be garbage collected.

+
+
Parameters
+
    +
  • table – Table to materialize

  • +
  • objects – List of objects to download: one of table or objects must be specified.

  • +
  • quals – Optional list of qualifiers to be passed to the fragment engine. Fragments that definitely do +not match these qualifiers will be dropped. See the docstring for filter_fragments for the format.

  • +
  • defer_release – If True, won’t release the objects on exit.

  • +
+
+
Returns
+

If defer_release is True: List of table fragments and a callback that the caller must call +when the objects are no longer needed. If defer_release is False: just the list of table fragments.

+
+
+
+ +
+
+get_cache_occupancy()int
+
+
Returns
+

Space occupied by objects cached from external locations, in bytes.

+
+
+
+ +
+
+get_downloaded_objects(limit_to: Optional[List[str]] = None)List[str]
+

Gets a list of objects currently in the Splitgraph cache (i.e. not only existing externally.)

+
+
Parameters
+

limit_to – If specified, only the objects in this list will be returned.

+
+
Returns
+

Set of object IDs.

+
+
+
+ +
+
+get_total_object_size()
+
+
Returns
+

Space occupied by all objects on the engine, in bytes.

+
+
+
+ +
+
+make_objects_external(objects: List[str], handler: str, handler_params: Dict[Any, Any])None
+

Uploads local objects to an external location and marks them as being cached locally (thus making it possible +to evict or swap them out).

+
+
Parameters
+
    +
  • objects – Object IDs to upload. Will do nothing for objects that already exist externally.

  • +
  • handler – Object handler

  • +
  • handler_params – Extra handler parameters

  • +
+
+
+
+ +
+
+run_eviction(keep_objects: List[str], required_space: Optional[int] = None)None
+

Delete enough objects with zero reference count (only those, since we guarantee that whilst refcount is >0, +the object stays alive) to free at least required_space in the cache.

+
+
Parameters
+
    +
  • keep_objects – List of objects (besides those with nonzero refcount) that can’t be deleted.

  • +
  • required_space – Space, in bytes, to free. If the routine can’t free at least this much space, +it shall raise an exception. If None, removes all eligible objects.

  • +
+
+
+
+ +
+
+upload_objects(target: splitgraph.core.object_manager.ObjectManager, objects_to_push: List[str], handler: str = 'DB', handler_params: Optional[Dict[Any, Any]] = None)Sequence[Tuple[str, Optional[str]]]
+

Uploads physical objects to the remote or some other external location.

+
+
Parameters
+
    +
  • target – Target ObjectManager

  • +
  • objects_to_push – List of object IDs to upload.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote, FILE +to store them in a directory that can be accessed from the client and HTTP to upload them to HTTP.

  • +
  • handler_params – For HTTP, a dictionary &lbrace;“username”: username, “password”, password&rbrace;. For FILE, +a dictionary &lbrace;“path”: path&rbrace; specifying the directory where the objects shall be saved.

  • +
+
+
Returns
+

A list of (object_id, url) that specifies all objects were uploaded (skipping objects that +already exist on the remote).

+
+
+
+ +
+ +
+
+

splitgraph.core.output module

+
+
+splitgraph.core.output.conn_string_to_dict(connection: Optional[str])Dict[str, Any]
+
+ +
+
+splitgraph.core.output.parse_date(string: str)datetime.date
+
+ +
+
+splitgraph.core.output.parse_dt(string: str)datetime.datetime
+
+ +
+
+splitgraph.core.output.parse_repo_tag_or_hash(value, default='latest')
+
+ +
+
+splitgraph.core.output.parse_time(string: str)time.struct_time
+
+ +
+
+splitgraph.core.output.pluralise(word: str, number: int)str
+

1 banana, 2 bananas

+
+ +
+
+splitgraph.core.output.pretty_size(size: Union[int, float])str
+

Converts a size in bytes to its string representation (e.g. 1024 -> 1KiB) +:param size: Size in bytes

+
+ +
+
+splitgraph.core.output.slugify(text: str, max_length: int = 50)str
+
+ +
+
+splitgraph.core.output.truncate_line(line: str, length: int = 80)str
+

Truncates a line to a given length, replacing the remainder with …

+
+ +
+
+splitgraph.core.output.truncate_list(items: List[Any], max_entries: int = 10)str
+

Print a list, possibly truncating it to the specified number of entries

+
+ +
+
+

splitgraph.core.registry module

+

Functions for communicating with the remote Splitgraph catalog

+
+
+splitgraph.core.registry.get_info_key(engine: PostgresEngine, key: str)Optional[str]
+

Gets a configuration key from the remote registry, used to notify the client of the registry’s capabilities.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to get

  • +
+
+
+
+ +
+
+splitgraph.core.registry.set_info_key(engine: PostgresEngine, key: str, value: Union[bool, str])None
+

Sets a configuration value on the remote registry.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to set

  • +
  • value – New value for the key

  • +
+
+
+
+ +
+
+splitgraph.core.registry.setup_registry_mode(engine: PostgresEngine)None
+

Set up access policies/RLS:

+
    +
  • Normal users aren’t allowed to create tables/schemata (can’t do checkouts inside of a registry or +upload SG objects directly to it)

  • +
  • Normal users can’t access the splitgraph_meta schema directly: they’re only supposed to be able to +talk to it via stored procedures in splitgraph_api. Those procedures are set up with SECURITY INVOKER +(run with those users’ credentials) and what they can access is further restricted by RLS:

    +
      +
    • images/tables/tags meta tables: can only create/update/delete records where the namespace = user ID

    • +
    • objects/object_location tables: same. An object (piece of data) becomes owned by the user that creates +it and still remains so even if someone else’s image starts using it. Hence, the original owner can delete +or change it (since they control the external location they’ve uploaded it to anyway).

    • +
    +
  • +
+
+ +
+
+

splitgraph.core.repository module

+

Public API for managing images in a Splitgraph repository.

+
+
+class splitgraph.core.repository.Repository(namespace: str, repository: str, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_manager: Optional[splitgraph.core.object_manager.ObjectManager] = None)
+

Bases: object

+

Splitgraph repository API

+
+
+commit(image_hash: Optional[str] = None, comment: Optional[str] = None, snap_only: bool = False, chunk_size: Optional[int] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]]] = None, in_fragment_order: Optional[Dict[str, List[str]]] = None, overwrite: bool = False)splitgraph.core.image.Image
+

Commits all pending changes to a given repository, creating a new image.

+
+
Parameters
+
    +
  • image_hash – Hash of the commit. Chosen by random if unspecified.

  • +
  • comment – Optional comment to add to the commit.

  • +
  • snap_only – If True, will store the table as a full snapshot instead of delta compression

  • +
  • chunk_size – For tables that are stored as snapshots (new tables and where snap_only has been passed, +the table will be split into fragments of this many rows.

  • +
  • split_changeset – If True, splits the changeset into multiple fragments based on +the PK regions spanned by the current table fragments. For example, if the original table +consists of 2 fragments, first spanning rows 1-10000, second spanning rows 10001-20000 and the +change alters rows 1, 10001 and inserts a row with PK 20001, this will record the change as +3 fragments: one inheriting from the first original fragment, one inheriting from the second +and a brand new fragment. This increases the number of fragments in total but means that fewer rows +will need to be scanned to satisfy a query. +If False, the changeset will be stored as a single fragment inheriting from the last fragment in the +table.

  • +
  • extra_indexes – Dictionary of &lbrace;table: index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Dictionary of &lbrace;table: list of columns&rbrace;. If specified, will

  • +
+
+
+

sort the data inside each chunk by this/these key(s) for each table. +:param overwrite: If an object already exists, will force recreate it.

+
+
Returns
+

The newly created Image object.

+
+
+
+ +
+
+commit_engines()None
+

Commit the underlying transactions on both engines that the repository uses.

+
+ +
+
+delete(unregister: bool = True, uncheckout: bool = True)None
+

Discards all changes to a given repository and optionally all of its history, +as well as deleting the Postgres schema that it might be checked out into. +Doesn’t delete any cached physical objects.

+

After performing this operation, this object becomes invalid and must be discarded, +unless init() is called again.

+
+
Parameters
+
    +
  • unregister – Whether to purge repository history/metadata

  • +
  • uncheckout – Whether to delete the actual checked out repo. This has no effect +if the repository is backed by a registry (rather than a local engine).

  • +
+
+
+
+ +
+
+diff(table_name: str, image_1: Union[splitgraph.core.image.Image, str], image_2: Optional[Union[splitgraph.core.image.Image, str]], aggregate: bool = False)Optional[Union[bool, Tuple[int, int, int], List[Tuple[bool, Tuple]]]]
+

Compares the state of a table in different images by materializing both tables into a temporary space +and comparing them row-to-row.

+
+
Parameters
+
    +
  • table_name – Name of the table.

  • +
  • image_1 – First image hash / object. If None, uses the state of the current staging area.

  • +
  • image_2 – Second image hash / object. If None, uses the state of the current staging area.

  • +
  • aggregate – If True, returns a tuple of integers denoting added, removed and updated rows between +the two images.

  • +
+
+
Returns
+

If the table doesn’t exist in one of the images, returns True if it was added and False if it was +removed. If aggregate is True, returns the aggregation of changes as specified before. +Otherwise, returns a list of changes where each change is a tuple of +(True for added, False for removed, row contents).

+
+
+
+ +
+
+dump(stream: _io.TextIOWrapper, exclude_object_contents: bool = False)None
+

Creates an SQL dump with the metadata required for the repository and all of its objects.

+
+
Parameters
+
    +
  • stream – Stream to dump the data into.

  • +
  • exclude_object_contents – Only dump the metadata but not the actual object contents.

  • +
+
+
+
+ +
+
+classmethod from_schema(schema: str)splitgraph.core.repository.Repository
+

Convert a Postgres schema name of the format namespace/repository to a Splitgraph repository object.

+
+ +
+
+classmethod from_template(template: splitgraph.core.repository.Repository, namespace: Optional[str] = None, repository: Optional[str] = None, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None)splitgraph.core.repository.Repository
+

Create a Repository from an existing one replacing some of its attributes.

+
+ +
+
+get_all_hashes_tags()List[Tuple[Optional[str], str]]
+

Gets all tagged images and their hashes in a given repository.

+
+
Returns
+

List of (image_hash, tag)

+
+
+
+ +
+
+get_local_size()int
+

Get the actual size used by this repository’s downloaded objects.

+

This might still be double-counted if the repository shares objects +with other repositores.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+get_size()int
+

Get the physical size used by the repository’s data, counting objects that are used +by multiple images only once. This is calculated from the metadata, the on-disk +footprint might be smaller if not all of repository’s objects have been downloaded.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+has_pending_changes()bool
+

Detects if the repository has any pending changes (schema changes, table additions/deletions, content changes).

+
+ +
+
+property head
+

Return the HEAD image for the repository or None if the repository isn’t checked out.

+
+ +
+
+property head_strict
+

Return the HEAD image for the repository. Raise an exception if the repository +isn’t checked out.

+
+ +
+
+images
+

A splitgraph.core.image.ImageManager instance that performs operations +(checkout, delete etc) on this repository’s images.

+
+ +
+
+import_tables(tables: Sequence[str], source_repository: splitgraph.core.repository.Repository, source_tables: Sequence[str], image_hash: Optional[str] = None, foreign_tables: bool = False, do_checkout: bool = True, target_hash: Optional[str] = None, table_queries: Optional[Sequence[bool]] = None, parent_hash: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', skip_validation: bool = False)str
+

Creates a new commit in target_repository with one or more tables linked to already-existing tables. +After this operation, the HEAD of the target repository moves to the new commit and the new tables are +materialized.

+
+
Parameters
+
    +
  • tables – If not empty, must be the list of the same length as source_tables specifying names to store +them under in the target repository.

  • +
  • source_repository – Repository to import tables from.

  • +
  • source_tables – List of tables to import. If empty, imports all tables.

  • +
  • image_hash – Image hash in the source repository to import tables from. +Uses the current source HEAD by default.

  • +
  • foreign_tables – If True, copies all source tables to create a series of new snapshots instead of +treating them as Splitgraph-versioned tables. This is useful for adding brand new tables +(for example, from an FDW-mounted table).

  • +
  • do_checkout – If False, doesn’t check out the newly created image.

  • +
  • target_hash – Hash of the new image that tables is recorded under. If None, gets chosen at random.

  • +
  • table_queries – If not [], it’s treated as a Boolean mask showing which entries in the tables list are +instead SELECT SQL queries that form the target table. The queries have to be non-schema qualified and work +only against tables in the source repository. Each target table created is the result of the respective SQL +query. This is committed as a new snapshot.

  • +
  • parent_hash – If not None, must be the hash of the image to base the new image on. +Existing tables from the parent image are preserved in the new image. If None, the current repository +HEAD is used.

  • +
  • wrapper – Override the default class for the layered querying foreign data wrapper.

  • +
  • skip_validation – Don’t validate SQL used in import statements (used by the Splitfile executor that pre-formats the SQL).

  • +
+
+
Returns
+

Hash that the new image was stored under.

+
+
+
+ +
+
+init()None
+

Initializes an empty repo with an initial commit (hash 0000…)

+
+ +
+
+materialized_table(table_name: str, image_hash: Optional[str])Iterator[Tuple[str, str]]
+

A context manager that returns a pointer to a read-only materialized table in a given image. +The table is deleted on exit from the context manager.

+
+
Parameters
+
    +
  • table_name – Name of the table

  • +
  • image_hash – Image hash to materialize

  • +
+
+
Returns
+

(schema, table_name) where the materialized table is located.

+
+
+
+ +
+
+objects
+

A splitgraph.core.object_manager.ObjectManager instance that performs operations on +the objects on this repository’s engine (not just objects belonging to this repository).

+
+ +
+
+pull(download_all: Optional[bool] = False, overwrite_objects: bool = False, overwrite_tags: bool = False, single_image: Optional[str] = None)None
+

Synchronizes the state of the local Splitgraph repository with its upstream, optionally downloading all new +objects created on the remote.

+
+
Parameters
+
    +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download +required objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – Limit the download to a single image hash/tag.

  • +
+
+
+
+ +
+
+push(remote_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, reupload_objects: bool = False, overwrite_tags: bool = False, handler: str = 'DB', handler_options: Optional[Dict[str, Any]] = None, single_image: Optional[str] = None)splitgraph.core.repository.Repository
+

Inverse of pull: Pushes all local changes to the remote and uploads new objects.

+
+
Parameters
+
    +
  • remote_repository – Remote repository to push changes to. If not specified, the current +upstream is used.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote or S3 +to store them in an S3 bucket.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the remote repository for existing objects.

  • +
  • reupload_objects – If True, will reupload objects for which metadata is uploaded.

  • +
  • overwrite_tags – If True, will overwrite existing tags on the remote repository.

  • +
  • handler_options – Extra options to pass to the handler. For example, see +splitgraph.hooks.s3.S3ExternalObjectHandler.

  • +
  • single_image – Limit the upload to a single image hash/tag.

  • +
+
+
+
+ +
+
+rollback_engines()None
+

Rollback the underlying transactions on both engines that the repository uses.

+
+ +
+
+run_sql(sql: Union[psycopg2.sql.Composed, str], arguments: Optional[Any] = None, return_shape: splitgraph.engine.ResultShape = <ResultShape.MANY_MANY: 4>)Any
+

Execute an arbitrary SQL statement inside of this repository’s checked out schema.

+
+ +
+
+set_tags(tags: Dict[str, Optional[str]])None
+

Sets tags for multiple images.

+
+
Parameters
+

tags – List of (image_hash, tag)

+
+
+
+ +
+
+to_schema()str
+

Returns the engine schema that this repository gets checked out into.

+
+ +
+
+uncheckout(force: bool = False)None
+

Deletes the schema that the repository is checked out into

+
+
Parameters
+

force – Discards all pending changes to the schema.

+
+
+
+ +
+
+property upstream
+

The remote upstream repository that this local repository tracks.

+
+ +
+ +
+
+splitgraph.core.repository.clone(remote_repository: Union[splitgraph.core.repository.Repository, str], local_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, overwrite_tags: bool = False, download_all: Optional[bool] = False, single_image: Optional[str] = None)splitgraph.core.repository.Repository
+

Clones a remote Splitgraph repository or synchronizes remote changes with the local ones.

+

If the target repository has no set upstream engine, the source repository becomes its upstream.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object to clone or the repository’s name. If a name is passed, +the repository will be looked up on the current lookup path in order to find the engine the repository +belongs to.

  • +
  • local_repository – Local repository to clone into. If None, uses the same name as the remote.

  • +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download required +objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – If set, only get a single image with this hash/tag from the source.

  • +
+
+
Returns
+

A locally cloned Repository object.

+
+
+
+ +
+
+splitgraph.core.repository.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.repository.import_table_from_remote(remote_repository: splitgraph.core.repository.Repository, remote_tables: List[str], remote_image_hash: str, target_repository: splitgraph.core.repository.Repository, target_tables: List[Any], target_hash: Optional[str] = None)None
+

Shorthand for importing one or more tables from a yet-uncloned remote. Here, the remote image hash is required, +as otherwise we aren’t necessarily able to determine what the remote head is.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object

  • +
  • remote_tables – List of remote tables to import

  • +
  • remote_image_hash – Image hash to import the tables from

  • +
  • target_repository – Target repository to import the tables to

  • +
  • target_tables – Target table aliases

  • +
  • target_hash – Hash of the image that’s created with the import. Default random.

  • +
+
+
+
+ +
+
+splitgraph.core.repository.table_exists_at(repository: splitgraph.core.repository.Repository, table_name: str, image: Optional[splitgraph.core.image.Image] = None)bool
+

Determines whether a given table exists in a Splitgraph image without checking it out. If image_hash is None, +determines whether the table exists in the current staging area.

+
+ +
+
+

splitgraph.core.server module

+

Routines that are run inside of the engine, +here so that they can get type- and syntax-checked.

+

When inside of an LQFDW shim, these are called directly by the Splitgraph core code +to avoid a redundant connection to the engine.

+
+
+splitgraph.core.server.delete_object_files(object_id: str)
+
+ +
+
+splitgraph.core.server.download_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.get_object_schema(object_id: str)str
+
+ +
+
+splitgraph.core.server.get_object_size(object_id: str)int
+
+ +
+
+splitgraph.core.server.list_objects()List[str]
+
+ +
+
+splitgraph.core.server.object_exists(object_id: str)bool
+
+ +
+
+splitgraph.core.server.rename_object_files(old_object_id: str, new_object_id: str)
+
+ +
+
+splitgraph.core.server.set_object_schema(object_id: str, schema: str)
+
+ +
+
+splitgraph.core.server.upload_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.verify(url: str)
+
+ +
+
+

splitgraph.core.table module

+

Table metadata-related classes.

+
+
+class splitgraph.core.table.QueryPlan(table: splitgraph.core.table.Table, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str])
+

Bases: object

+

Represents the initial query plan (fragments to query) for given columns and +qualifiers.

+
+ +
+
+class splitgraph.core.table.Table(repository: Repository, image: Image, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+

Bases: object

+

Represents a Splitgraph table in a given image. Shouldn’t be created directly, use Table-loading +methods in the splitgraph.core.image.Image class instead.

+
+
+get_length()int
+

Get the number of rows in this table.

+

This might be smaller than the total number of rows in all objects belonging to this +table as some objects might overwrite each other.

+
+
Returns
+

Number of rows in table

+
+
+
+ +
+
+get_query_plan(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str], use_cache: bool = True)splitgraph.core.table.QueryPlan
+

Start planning a query (preliminary steps before object downloading, +like qualifier filtering).

+
+
Parameters
+
    +
  • quals – Qualifiers in CNF form

  • +
  • columns – List of columns

  • +
  • use_cache – If True, will fetch the plan from the cache for the same qualifiers and columns.

  • +
+
+
Returns
+

QueryPlan

+
+
+
+ +
+
+get_size()int
+

Get the physical size used by the table’s objects (including those shared with other tables).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of table’s +objects have been downloaded.

+
+
Returns
+

Size of the table in bytes.

+
+
+
+ +
+
+materialize(destination: str, destination_schema: Optional[str] = None, lq_server: Optional[str] = None, temporary: bool = False)None
+

Materializes a Splitgraph table in the target schema as a normal Postgres table, potentially downloading all +required objects and using them to reconstruct the table.

+
+
Parameters
+
    +
  • destination – Name of the destination table.

  • +
  • destination_schema – Name of the destination schema.

  • +
  • lq_server – If set, sets up a layered querying FDW for the table instead using this foreign server.

  • +
+
+
+
+ +
+
+query(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])
+

Run a read-only query against this table without materializing it.

+

This is a wrapper around query_lazy() that force evaluates the results which +might mean more fragments being materialized that aren’t needed.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

List of dictionaries of results

+
+
+
+ +
+
+query_indirect(columns: List[str], quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]])Tuple[Iterator[bytes], Callable, splitgraph.core.table.QueryPlan]
+

Run a read-only query against this table without materializing it. Instead of +actual results, this returns a generator of SQL queries that the caller can use +to get the results as well as a callback that the caller has to run after they’re +done consuming the results.

+

In particular, the query generator will prefer returning direct queries to +Splitgraph objects and only when those are exhausted will it start materializing +delta-compressed fragments.

+

This is an advanced method: you probably want to call table.query().

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of queries (bytes), a callback and a query plan object (containing stats +that are fully populated after the callback has been called to end the query).

+
+
+
+ +
+
+query_lazy(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])Iterator[Iterator[Dict[str, Any]]]
+

Run a read-only query against this table without materializing it.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of dictionaries of results.

+
+
+
+ +
+
+reindex(extra_indexes: Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]], raise_on_patch_objects=True)List[str]
+

Run extra indexes on all objects in this table and update their metadata. +This only works on objects that don’t have any deletions or upserts (have a deletion hash of 000000…).

+
+
Parameters
+
    +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • raise_on_patch_objects – If True, will raise an exception if any objects in the table +overwrite any other objects. If False, will log a warning but will reindex all non-patch objects.

  • +
+
+
+

:returns List of objects that were reindexed.

+
+ +
+ +
+
+splitgraph.core.table.merge_index_data(current_index: Dict[str, Any], new_index: Dict[str, Any])
+
+ +
+
+

splitgraph.core.types module

+
+
+class splitgraph.core.types.Comparable
+

Bases: object

+
+ +
+
+class splitgraph.core.types.TableColumn(ordinal, name, pg_type, is_pk, comment)
+

Bases: tuple

+
+
+property comment
+

Alias for field number 4

+
+ +
+
+property is_pk
+

Alias for field number 3

+
+ +
+
+property name
+

Alias for field number 1

+
+ +
+
+property ordinal
+

Alias for field number 0

+
+ +
+
+property pg_type
+

Alias for field number 2

+
+ +
+ +
+
+splitgraph.core.types.dict_to_tableschema(tables: Dict[str, Dict[str, Any]])Dict[str, List[splitgraph.core.types.TableColumn]]
+
+ +
+
+splitgraph.core.types.tableschema_to_dict(tables: Dict[str, List[splitgraph.core.types.TableColumn]])Dict[str, Dict[str, str]]
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.core.sql.mdx b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.core.sql.mdx new file mode 100644 index 00000000..fcc487f3 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.core.sql.mdx @@ -0,0 +1,120 @@ + + + +export const meta = { + title: "splitgraph.core.sql package", + id: "splitgraph.core.sql package" +}; + +
+

Module contents

+

Routines for managing SQL statements

+
+
+splitgraph.core.sql.insert(table: str, columns: Sequence[str], schema: str = 'splitgraph_meta')psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to insert as a list of strings.

  • +
  • schema – Schema that contains the table

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query (parameterized)

+
+
+
+ +
+
+splitgraph.core.sql.prepare_splitfile_sql(sql: str, image_mapper: Callable)Tuple[str, str]
+

Transform an SQL query to prepare for it to be used in a Splitfile SQL command and validate it. +The rules are:

+
+
    +
  • Only basic DDL (CREATE/ALTER/DROP table) and DML (SELECT/INSERT/UPDATE/DELETE) are permitted.

  • +
  • All tables must be either non-schema qualified (the statement is run with search_path

  • +
+

set to the single schema that a Splitgraph image is checked out into) or have schemata of +format namespace/repository:hash_or_tag. In the second case, the schema is rewritten to point +at a temporary mount of the Splitgraph image. +* Function invocations are forbidden.

+
+
+
Parameters
+
    +
  • sql – SQL query

  • +
  • image_mapper – Takes in an image and gives back the schema it should be rewritten to +(for the purposes of execution) and the canonical form of the image.

  • +
  • schema – Schema to add to all non-qualified tables

  • +
+
+
Returns
+

Transformed form of the SQL with substituted schema shims for Splitfile execution +and the canonical form (with e.g. tags resolved into at-the-time full image hashes)

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+
+splitgraph.core.sql.recover_original_schema_name(sql: str, schema_name: str)str
+

Postgres truncates identifiers to 63 characters at parse time and, as pglast +uses bits of PG to parse queries, image names like noaa/climate:64_chars_of_hash +get truncated which can cause ambiguities and issues in provenance. We can’t +get pglast to give us back the full identifier, but we can try and figure out +what it used to be and patch the AST to have it again.

+
+ +
+
+splitgraph.core.sql.select(table: str, columns: str = '*', where: str = '', schema: str = 'splitgraph_meta', table_args: Optional[str] = None)psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to select as a string. WARN: concatenated directly without any formatting.

  • +
  • where – If specified, added to the query with a “WHERE” keyword. WARN also concatenated directly.

  • +
  • schema – Defaults to SPLITGRAPH_META_SCHEMA.

  • +
  • table_args – If specified, appends to the FROM clause after the table specification, +for example, SELECT * FROM “splitgraph_api”.”get_images” (%s, %s) …

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query.

+
+
+
+ +
+
+splitgraph.core.sql.validate_import_sql(sql: str)str
+

Check an SQL query to see if it can be safely used in an IMPORT statement +(e.g. FROM noaa/climate:latest IMPORT &lbrace;SELECT * FROM rainfall WHERE state = ‘AZ’&rbrace; AS rainfall. +In this case, only a single SELECT statement is supported.

+
+
Parameters
+

sql – SQL query

+
+
Returns
+

Canonical (formatted) form of the SQL statement

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.engine.mdx b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.engine.mdx new file mode 100644 index 00000000..395cb80c --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.engine.mdx @@ -0,0 +1,565 @@ + + + +export const meta = { + title: "splitgraph.engine package", + id: "splitgraph.engine package" +}; + +
+

Module contents

+

Defines the interface for a Splitgraph engine (a backing database), including running basic SQL commands, +tracking tables for changes and uploading/downloading tables to other remote engines.

+

By default, Splitgraph is backed by Postgres: see splitgraph.engine.postgres for an example of how to +implement a different engine.

+
+
+class splitgraph.engine.ChangeEngine
+

Bases: splitgraph.engine.SQLEngine, abc.ABC

+

An SQL engine that can perform change tracking on a set of tables.

+
+
+discard_pending_changes(schema, table=None)
+

Discard recorded pending changes for a tracked table or the whole schema

+
+ +
+
+get_change_key(schema: str, table: str)List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_changed_tables(schema)
+

List tracked tables that have pending changes

+
+
Parameters
+

schema – Schema to check for changes

+
+
Returns
+

List of tables with changed contents

+
+
+
+ +
+
+get_pending_changes(schema, table, aggregate=False)
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: tuple with numbers of (added_rows, removed_rows, updated_rows). +If aggregate is False: A changeset. The changeset is a list of +(pk, action (0 for Insert, 1 for Delete, 2 for Update), action_data) +where action_data is None for Delete and &lbrace;‘c’: [column_names], ‘v’: [column_values]&rbrace; that +have been inserted/updated otherwise.

+
+
+
+ +
+
+get_tracked_tables()
+
+
Returns
+

A list of (table_schema, table_name) that the engine currently tracks for changes

+
+
+
+ +
+
+has_pending_changes(schema)
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables)
+

Start engine-specific change tracking on a list of tables.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+
+untrack_tables(tables)
+

Stop engine-specific change tracking on a list of tables and delete any pending changes.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+ +
+
+class splitgraph.engine.ObjectEngine
+

Bases: object

+

Routines for storing/applying objects as well as sharing them with other engines.

+
+
+apply_fragments(objects, target_schema, target_table, extra_quals=None, extra_qual_args=None, schema_spec=None, progress_every: Optional[int] = None)
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids)
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects, remote_engine)
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id, stream, schema)
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+get_object_schema(object_id)
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id)
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+store_fragment(inserted, deleted, schema, table, source_schema, source_table, source_schema_spec)
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args: Optional[Sequence[Any]], overwrite: bool)
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+upload_objects(objects, remote_engine)
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.ResultShape(value)
+

Bases: enum.Enum

+

Shape that the result of a query will be coerced to

+
+
+MANY_MANY = 4
+
+ +
+
+MANY_ONE = 3
+
+ +
+
+NONE = 0
+
+ +
+
+ONE_MANY = 2
+
+ +
+
+ONE_ONE = 1
+
+ +
+ +
+
+class splitgraph.engine.SQLEngine
+

Bases: abc.ABC

+

Abstraction for a Splitgraph SQL backend. Requires any overriding classes to implement run_sql as well as +a few other functions. Together with the information_schema (part of the SQL standard), this class uses those +functions to implement some basic database management methods like listing, deleting, creating, dumping +and loading tables.

+
+
+close()
+

Commit and close the engine’s backing connection

+
+ +
+
+commit()
+

Commit the engine’s backing connection

+
+ +
+
+copy_table(source_schema: str, source_table: str, target_schema: str, target_table: str, with_pk_constraints: bool = True)None
+

Copy a table in the same engine, optionally applying primary key constraints as well.

+
+ +
+
+create_schema(schema: str)None
+

Create a schema if it doesn’t exist

+
+ +
+
+create_table(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False)None
+

Creates a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
+
+ +
+
+delete_schema(schema: str)None
+

Delete a schema if it exists, including all the tables in it.

+
+ +
+
+delete_table(schema: str, table: str)None
+

Drop a table from a schema if it exists

+
+ +
+
+static dump_table_creation(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False)Tuple[psycopg2.sql.Composed, Tuple]
+

Dumps the DDL for a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
Returns
+

An SQL statement that reconstructs the table schema + args to be mogrified into it.

+
+
+
+ +
+
+dump_table_sql(schema, table_name, stream, columns='*', where='', where_args=None, target_schema=None, target_table=None)
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_all_tables(schema: str)List[str]
+

Get all tables in a given schema.

+
+ +
+
+get_full_table_schema(schema: str, table_name: str)List[splitgraph.core.types.TableColumn]
+

Generates a list of (column ordinal, name, data type, is_pk, column comment), +used to detect schema changes like columns being dropped/added/renamed or type changes.

+

NB this doesn’t work for temporary tables (pg_temp) and returns an empty schema.

+
+ +
+
+get_primary_keys(schema, table)
+

Get a list of (column_name, column_type) denoting the primary keys of a given table.

+
+ +
+
+get_table_type(schema: str, table: str)Optional[str]
+

Get the type of the table (BASE or FOREIGN)

+
+ +
+
+initialize()
+

Does any required initialization of the engine

+
+ +
+
+lock_table(schema, table)
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback()
+

Rollback the engine’s backing connection

+
+ +
+
+run_sql(statement, arguments=None, return_shape=<ResultShape.MANY_MANY: 4>, named=False)
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement, arguments, schema=None)
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+run_sql_in(schema: str, sql: Union[psycopg2.sql.Composed, str], arguments: None = None, return_shape: splitgraph.engine.ResultShape = <ResultShape.MANY_MANY: 4>)Any
+

Executes a non-schema-qualified query against a specific schema.

+
+
Parameters
+
    +
  • schema – Schema to run the query in

  • +
  • sql – Query

  • +
  • arguments – Query arguments

  • +
  • return_shape – ReturnShape to coerce the result into.

  • +
+
+
+
+ +
+
+savepoint(name: str)Iterator[None]
+

At the beginning of this context manager, a savepoint is initialized and any database +error that occurs in run_sql results in a rollback to this savepoint rather than the +rollback of the whole transaction. At exit, the savepoint is released.

+
+ +
+
+schema_exists(schema: str)bool
+

Check if a schema exists on the engine.

+
+
Parameters
+

schema – Schema name

+
+
+
+ +
+
+table_exists(schema: str, table_name: str)bool
+

Check if a table exists on the engine.

+
+
Parameters
+
    +
  • schema – Schema name

  • +
  • table_name – Table name

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.SavepointStack
+

Bases: _thread._local

+
+ +
+
+splitgraph.engine.get_engine(name: Optional[str] = None, use_socket: bool = False, use_fdw_params: bool = False, autocommit: bool = False)PostgresEngine
+

Get the current global engine or a named remote engine

+
+
Parameters
+
    +
  • name – Name of the remote engine as specified in the config. If None, the current global engine +is returned.

  • +
  • use_socket – Use a local UNIX socket instead of PG_HOST, PG_PORT for LOCAL engine connections.

  • +
  • use_fdw_params – Use the _FDW connection parameters (SG_ENGINE_FDW_HOST/PORT). By default, +will infer from the global splitgraph.config.IN_FDW flag.

  • +
  • autocommit – If True, the engine will not open SQL transactions implicitly.

  • +
+
+
+
+ +
+
+splitgraph.engine.set_engine(engine: PostgresEngine)None
+

Switch the global engine to a different one.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.switch_engine(engine: PostgresEngine)Iterator[None]
+

Switch the global engine to a different one. The engine will +get switched back on exit from the context manager.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.validate_type(t: str)str
+
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.engine.postgres.mdx b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.engine.postgres.mdx new file mode 100644 index 00000000..53096b26 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.engine.postgres.mdx @@ -0,0 +1,450 @@ + + + +export const meta = { + title: "splitgraph.engine.postgres package", + id: "splitgraph.engine.postgres package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.engine.postgres.engine module

+

Default Splitgraph engine: uses PostgreSQL to store metadata and actual objects and an audit stored procedure +to track changes, as well as the Postgres FDW interface to upload/download objects to/from other Postgres engines.

+
+
+class splitgraph.engine.postgres.engine.AuditTriggerChangeEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.PsycopgEngine, splitgraph.engine.ChangeEngine

+

Change tracking based on an audit trigger stored procedure

+
+
+discard_pending_changes(schema: str, table: Optional[str] = None)None
+

Discard recorded pending changes for a tracked schema / table

+
+ +
+
+get_changed_tables(schema: str)List[str]
+

Get list of tables that have changed content

+
+ +
+
+get_pending_changes(schema: str, table: str, aggregate: bool = False)Union[List[Tuple[int, int]], List[Tuple[Tuple[str, ], bool, Dict[str, Any], Dict[str, Any]]]]
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: List of tuples of (change_type, number of rows). +If aggregate is False: List of (primary_key, change_type, change_data)

+
+
+
+ +
+
+get_tracked_tables()List[Tuple[str, str]]
+

Return a list of tables that the audit trigger is working on.

+
+ +
+
+has_pending_changes(schema: str)bool
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables: List[Tuple[str, str]])None
+

Install the audit trigger on the required tables

+
+ +
+
+untrack_tables(tables: List[Tuple[str, str]])None
+

Remove triggers from tables and delete their pending changes

+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PostgresEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.AuditTriggerChangeEngine, splitgraph.engine.ObjectEngine

+

An implementation of the Postgres engine for Splitgraph

+
+
+apply_fragments(objects: List[Tuple[str, str]], target_schema: str, target_table: str, extra_quals: Optional[psycopg2.sql.Composed] = None, extra_qual_args: Optional[Tuple[str]] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, progress_every: Optional[int] = None)None
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids: List[str])None
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine)List[str]
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id: str, stream: _io.TextIOWrapper, schema: str)None
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+dump_object_creation(object_id: str, schema: str, table: Optional[str] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, if_not_exists: bool = False)bytes
+

Generate the SQL that remounts a foreign table pointing to a Splitgraph object.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • schema – Schema to create the table in

  • +
  • table – Name of the table to mount

  • +
  • schema_spec – Schema of the table

  • +
  • if_not_exists – Add IF NOT EXISTS to the DDL

  • +
+
+
Returns
+

SQL in bytes format.

+
+
+
+ +
+
+get_change_key(schema: str, table: str)List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_object_schema(object_id: str)List[splitgraph.core.types.TableColumn]
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id: str)int
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+mount_object(object_id: str, table: None = None, schema: str = 'splitgraph_meta', schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None)None
+

Mount an object from local storage as a foreign table.

+
+
Parameters
+
    +
  • object_id – ID of the object

  • +
  • table – Table to mount the object into

  • +
  • schema – Schema to mount the object into

  • +
  • schema_spec – Schema of the object.

  • +
+
+
+
+ +
+
+rename_object(old_object_id: str, new_object_id: str)
+
+ +
+
+store_fragment(inserted: Any, deleted: Any, schema: str, table: str, source_schema: str, source_table: str, source_schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None)None
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args=None, overwrite=False)None
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+sync_object_mounts()None
+

Scan through local object storage and synchronize it with the foreign tables in +splitgraph_meta (unmounting non-existing objects and mounting existing ones).

+
+ +
+
+unmount_objects(object_ids: List[str])None
+

Unmount objects from splitgraph_meta (this doesn’t delete the physical files.

+
+ +
+
+upload_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine)None
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PsycopgEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.SQLEngine

+

Postgres SQL engine backed by a Psycopg connection.

+
+
+close()None
+

Commit and close the engine’s backing connection

+
+ +
+
+close_others()None
+

Close and release all other connections to the connection pool.

+
+ +
+
+commit()None
+

Commit the engine’s backing connection

+
+ +
+
+property connection
+

Engine-internal Psycopg connection.

+
+ +
+
+copy_cursor()
+

Return a cursor that can be used for copy_expert operations

+
+ +
+
+delete_database(database: str)None
+

Helper function to drop a database using the admin connection

+
+
Parameters
+

database – Database name to drop

+
+
+
+ +
+
+dump_table_sql(schema: str, table_name: str, stream: _io.TextIOWrapper, columns: str = '*', where: str = '', where_args: Optional[Union[List[str], Tuple[str, str]]] = None, target_schema: Optional[str] = None, target_table: Optional[str] = None)None
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_primary_keys(schema: str, table: str)List[Tuple[str, str]]
+

Inspects the Postgres information_schema to get the primary keys for a given table.

+
+ +
+
+initialize(skip_object_handling: bool = False, skip_create_database: bool = False)None
+

Create the Splitgraph Postgres database and install the audit trigger

+
+
Parameters
+
    +
  • skip_object_handling – If True, skips installation of +audit triggers and other object management routines for engines +that don’t need change tracking or checkouts.

  • +
  • skip_create_database – Don’t create the Splitgraph database

  • +
+
+
+
+ +
+
+lock_table(schema: str, table: str)None
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback()None
+

Rollback the engine’s backing connection

+
+ +
+
+run_api_call(call: str, *args, schema: str = 'splitgraph_api')Any
+
+ +
+
+run_api_call_batch(call: str, argslist, schema: str = 'splitgraph_api')
+
+ +
+
+run_chunked_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Sequence[Any], return_shape: Optional[splitgraph.engine.ResultShape] = <ResultShape.MANY_MANY: 4>, chunk_size: int = 1000, chunk_position: int = -1)Any
+

Because the Splitgraph API has a request size limitation, certain +SQL calls with variadic arguments are going to be too long to fit that. This function +runs an SQL query against a set of broken up arguments and returns the combined result.

+
+ +
+
+run_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Optional[Sequence[Any]] = None, return_shape: Optional[splitgraph.engine.ResultShape] = <ResultShape.MANY_MANY: 4>, named: bool = False)Any
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement: Union[psycopg2.sql.Composed, str], arguments: Any, schema: Optional[str] = None, max_size=261000)None
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+property splitgraph_version
+

Returns the version of the Splitgraph library installed on the engine +and by association the version of the engine itself.

+
+ +
+ +
+
+splitgraph.engine.postgres.engine.add_ud_flag_column(table_schema: List[splitgraph.core.types.TableColumn])List[splitgraph.core.types.TableColumn]
+
+ +
+
+splitgraph.engine.postgres.engine.chunk(sequence: Sequence[T], chunk_size: int = 1000)Iterator[List[T]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_change_key(schema_spec: List[splitgraph.core.types.TableColumn])List[Tuple[str, str]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_conn_str(conn_params: Dict[str, str])str
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.hooks.data_source.mdx b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.hooks.data_source.mdx new file mode 100644 index 00000000..485aab19 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.hooks.data_source.mdx @@ -0,0 +1,515 @@ + + + +export const meta = { + title: "splitgraph.hooks.data_source package", + id: "splitgraph.hooks.data_source package" +}; + +
+

Module contents

+
+
+splitgraph.hooks.data_source.get_data_source(data_source: str)Type[splitgraph.hooks.data_source.base.DataSource]
+

Returns a class for a given data source

+
+ +
+
+splitgraph.hooks.data_source.get_data_sources()List[str]
+

Returns the names of all registered data sources.

+
+ +
+
+splitgraph.hooks.data_source.register_data_source(name: str, data_source_class: Type[splitgraph.hooks.data_source.base.DataSource])None
+

Returns a data source under a given name.

+
+ +
+ +
+

Submodules

+
+
+

splitgraph.hooks.data_source.base module

+
+
+class splitgraph.hooks.data_source.base.DataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any])
+

Bases: abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+abstract classmethod get_description()str
+
+ +
+
+abstract classmethod get_name()str
+
+ +
+
+abstract introspect()Dict[str, List[splitgraph.core.types.TableColumn]]
+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_load = False
+
+ +
+
+supports_mount = False
+
+ +
+
+supports_sync = False
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.LoadableDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any])
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+load(repository: Repository, tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]] = None)str
+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_load = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.MountableDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any])
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+abstract mount(schema: str, tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]] = None, overwrite: bool = True)
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_mount = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.SyncableDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any])
+

Bases: splitgraph.hooks.data_source.base.LoadableDataSource, splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_load = True
+
+ +
+
+supports_sync = True
+
+ +
+
+sync(repository: Repository, image_hash: Optional[str], tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]] = None)str
+
+ +
+ +
+
+splitgraph.hooks.data_source.base.get_ingestion_state(repository: Repository, image_hash: Optional[str])Optional[Dict[str, Any]]
+
+ +
+
+splitgraph.hooks.data_source.base.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.hooks.data_source.base.prepare_new_image(repository: Repository, hash_or_tag: Optional[str])Tuple[Optional[splitgraph.core.image.Image], str]
+
+ +
+
+

splitgraph.hooks.data_source.fdw module

+
+
+class splitgraph.hooks.data_source.fdw.ElasticSearchDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount an ElasticSearch instance.\n\nMount a set of tables proxying to a remote ElasticSearch index.\n\nThis uses a fork of postgres-elasticsearch-fdw behind the scenes. You can add a column\n`query` to your table and set it as `query_column` to pass advanced ES queries and aggregations.\nFor example:\n\n```\nsgr mount elasticsearch target_schema -c elasticsearch:9200 -o@- <<EOF\n    &lbrace;\n      "tables": &lbrace;\n        "table_1": &lbrace;\n          "schema": &lbrace;\n            "id": "text",\n            "@timestamp": "timestamp",\n            "query": "text",\n            "col_1": "text",\n            "col_2": "boolean"\n          &rbrace;,\n          "options": &lbrace;\n              "index": "index-pattern*",\n              "rowid_column": "id",\n              "query_column": "query"\n          &rbrace;\n        &rbrace;\n      &rbrace;\n    &rbrace;\nEOF\n```\n'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': ['string', 'null']&rbrace;, 'username': &lbrace;'type': ['string', 'null']&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'properties': &lbrace;'index': &lbrace;'description': 'ES index name or pattern to use, for example, "events-*"', 'type': 'string'&rbrace;, 'query_column': &lbrace;'description': 'Name of the column to use to pass queries in', 'type': 'string'&rbrace;, 'score_column': &lbrace;'description': 'Name of the column with the document score', 'type': 'string'&rbrace;, 'scroll_duration': &lbrace;'description': 'How long to hold the scroll context open for, default 10m', 'type': 'string'&rbrace;, 'scroll_size': &lbrace;'description': 'Fetch size, default 1000', 'type': 'integer'&rbrace;, 'type': &lbrace;'description': 'Pre-ES7 doc_type, not required in ES7 or later', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'required': ['host', 'port', 'tables'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.base.MountableDataSource, splitgraph.hooks.data_source.base.LoadableDataSource, abc.ABC

+
+
+commandline_help: str = ''
+
+ +
+
+commandline_kwargs_help: str = ''
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs)splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+abstract get_fdw_name()
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()Mapping[str, str]
+
+ +
+
+get_table_options(table_name: str)Mapping[str, str]
+
+ +
+
+get_table_schema(table_name: str, table_schema: List[splitgraph.core.types.TableColumn])List[splitgraph.core.types.TableColumn]
+
+ +
+
+get_user_options()Mapping[str, str]
+
+ +
+
+introspect()Dict[str, List[splitgraph.core.types.TableColumn]]
+
+ +
+
+mount(schema: str, tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]] = None, overwrite: bool = True)
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+preview(schema: Dict[str, List[splitgraph.core.types.TableColumn]])Dict[str, Union[str, List[Dict[str, Any]]]]
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MongoDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Mongo database.\n\nMounts one or more collections on a remote Mongo database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'tables: A dictionary of form\n```\n&lbrace;\n    "table_name": &lbrace;\n        "schema": &lbrace;"col1": "type1"...&rbrace;,\n        "options": &lbrace;"db": <dbname>, "coll": <collection>&rbrace; \n    &rbrace; \n&rbrace;\n```\n'
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str)
+
+ +
+
+get_table_schema(table_name, table_schema)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'properties': &lbrace;'coll': &lbrace;'type': 'string'&rbrace;, 'db': &lbrace;'type': 'string'&rbrace;, 'required': ['db', 'coll']&rbrace;, 'type': 'object'&rbrace;, 'required': ['options']&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'required': ['host', 'port', 'tables'], 'type': 'object'&rbrace;
+
+ +
+
+tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]]
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MySQLDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a MySQL database.\n\nMounts a schema on a remote MySQL database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'remote_schema: Remote schema name (required)\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n        '
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'remote_schema': &lbrace;'type': 'string'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'required': ['host', 'port', 'remote_schema'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.PostgreSQLDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Postgres database.\n\nMounts a schema on a remote Postgres database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'dbname: Database name (required)\nremote_schema: Remote schema name (required)\nextra_server_args: Dictionary of extra arguments to pass to the foreign server\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n    '
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'description': 'Database name', 'type': 'string'&rbrace;, 'host': &lbrace;'description': 'Remote hostname', 'type': 'string'&rbrace;, 'port': &lbrace;'description': 'Port', 'type': 'integer'&rbrace;, 'remote_schema': &lbrace;'description': 'Remote schema name', 'type': 'string'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname', 'remote_schema'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.hooks.data_source.fdw.create_foreign_table(schema: str, server: str, table_name: str, schema_spec: List[splitgraph.core.types.TableColumn], extra_options: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.hooks.data_source.fdw.init_fdw(engine: PostgresEngine, server_id: str, wrapper: str, server_options: Optional[Mapping[str, Optional[str]]] = None, user_options: Optional[Mapping[str, str]] = None, overwrite: bool = True)None
+

Sets up a foreign data server on the engine.

+
+
Parameters
+
    +
  • engine – PostgresEngine

  • +
  • server_id – Name to call the foreign server, must be unique. Will be deleted if exists.

  • +
  • wrapper – Name of the foreign data wrapper (must be installed as an extension on the engine)

  • +
  • server_options – Dictionary of FDW options

  • +
  • user_options – Dictionary of user options

  • +
  • overwrite – If the server already exists, delete and recreate it.

  • +
+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.hooks.mdx b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.hooks.mdx new file mode 100644 index 00000000..81e40082 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.hooks.mdx @@ -0,0 +1,366 @@ + + + +export const meta = { + title: "splitgraph.hooks package", + id: "splitgraph.hooks package" +}; + +
+

Module contents

+

Various hooks for extending Splitgraph, including:

+
+
    +
  • External object handlers (splitgraph.hooks.external_objects) allowing to download/upload objects +to locations other than the remote Splitgraph engine.

  • +
  • Data sources (splitgraph.hooks.data_sources) that allow to add data to Splitgraph, e.g.

  • +
+
+

using the Postgres engine’s FDW interface to mount other external databases on the engine.

+
+ +
+
+ + +
+

Submodules

+
+
+

splitgraph.hooks.external_objects module

+

Hooks for registering handlers to upload/download objects from external locations into Splitgraph’s cache.

+
+
+class splitgraph.hooks.external_objects.ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: object

+

Framework for allowing to dump objects from the Splitgraph cache to an external location. This allows +the objects to be stored somewhere other than the actual remote engine.

+

External object handlers must extend this class and be registered in the Splitgraph config.

+

For an example of how this can be used, see splitgraph.hooks.s3: it’s a handler allowing objects to be +uploaded to S3/S3-compatible host using the Minio API. It’s registered in the config as follows:

+
[external_handlers]
+S3=splitgraph.hooks.s3.S3ExternalObjectHandler
+
+
+

The protocol and the URLs returned by this handler are stored in splitgraph_meta.external_objects +and used to download the objects back into the Splitgraph cache when they are needed.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine)Sequence[str]
+

Download objects from the external location into the Splitgraph cache.

+
+
Parameters
+
    +
  • objects – List of tuples (object_id, object_url) that this handler had previosly +uploaded the objects to.

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of object IDs that have been successfully downloaded.

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine)Sequence[Tuple[str, str]]
+

Upload objects from the Splitgraph cache to an external location

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of successfully uploaded object IDs and URLs they can be found at.

+
+
+
+ +
+ +
+
+splitgraph.hooks.external_objects.get_external_object_handler(name: str, handler_params: Dict[Any, Any])splitgraph.hooks.external_objects.ExternalObjectHandler
+

Load an external protocol handler by its name, initializing it with optional parameters.

+
+ +
+
+splitgraph.hooks.external_objects.register_upload_download_handler(name: str, handler_class: Callable[[], splitgraph.hooks.external_objects.ExternalObjectHandler])None
+

Register an external protocol handler. See the docstring for get_upload_download_handler for the required +signatures of the handler functions.

+
+ +
+
+

splitgraph.hooks.mount_handlers module

+

Extra wrapper code for mount handlers

+
+
+splitgraph.hooks.mount_handlers.mount(mountpoint: str, mount_handler: str, handler_kwargs: Dict[str, Any], overwrite: bool = True, tables: Optional[TableInfo] = None)None
+

Mounts a foreign database via an FDW (without creating new Splitgraph objects)

+
+
Parameters
+
    +
  • mountpoint – Mountpoint to import the new tables into.

  • +
  • mount_handler – The type of the mounted database.

  • +
  • handler_kwargs – Dictionary of options to pass to the mount handler.

  • +
  • overwrite – Delete the foreign server if it already exists. Used by mount_postgres for data pulls.

  • +
  • tables – List of tables to mount or their schemas

  • +
+
+
+
+ +
+
+splitgraph.hooks.mount_handlers.mount_postgres(mountpoint, **kwargs)None
+

Mount a Postgres database.

+

Mounts a schema on a remote Postgres database as a set of foreign tables locally. +

+
+
Parameters
+
    +
  • mountpoint – Schema to mount the remote into.

  • +
  • server – Database hostname.

  • +
  • port – Port the Postgres server is running on.

  • +
  • username – A read-only user that the database will be accessed as.

  • +
  • password – Password for the read-only user.

  • +
  • dbname – Remote database name.

  • +
  • remote_schema – Remote schema name.

  • +
  • extra_server_args – Dictionary of extra arguments to pass to the foreign server

  • +
  • tables – Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.

  • +
+
+
+

If a dictionary, must have the format &lbrace;“table_name”: &lbrace;“col_1”: “type_1”, …&rbrace;&rbrace;.

+
+ +
+
+

splitgraph.hooks.s3 module

+

Plugin for uploading Splitgraph objects from the cache to an external S3-like object store

+
+
+class splitgraph.hooks.s3.S3ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: splitgraph.hooks.external_objects.ExternalObjectHandler

+

Uploads/downloads the objects to/from S3/S3-compatible host using the Minio client.

+

The handler is “attached” to a given registry which manages issuing pre-signed +GET/PUT URLs.

+

The handler supports a parameter threads specifying the number of threads +used to upload the objects.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine)List[str]
+

Download objects from Minio.

+
+
Parameters
+

objects – List of (object ID, object URL (object ID it’s stored under))

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine)List[Tuple[str, str]]
+

Upload objects to Minio

+
+
Parameters
+
    +
  • remote_engine – Remote Engine class

  • +
  • objects – List of object IDs to upload

  • +
+
+
Returns
+

List of tuples with successfully uploaded objects and their URLs.

+
+
+
+ +
+ +
+
+splitgraph.hooks.s3.get_object_download_urls(remote_engine, remote_object_ids)
+
+ +
+
+splitgraph.hooks.s3.get_object_upload_urls(remote_engine, objects)
+
+ +
+
+

splitgraph.hooks.s3_server module

+

S3 registry-side routines called from the Python stored procedure +that are aware of the actual S3 access creds and generate pre-signed +URLs to upload/download objects.

+
+
+splitgraph.hooks.s3_server.delete_objects(client: minio.api.Minio, object_ids: List[str])None
+

Delete objects stored in Minio

+
+
Parameters
+
    +
  • client – Minio client

  • +
  • object_ids – List of Splitgraph object IDs to delete

  • +
+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_download_urls(s3_host: str, object_ids: List[str])List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_upload_urls(s3_host: str, object_ids: List[str])List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.list_objects(client: minio.api.Minio)List[str]
+

List objects stored in Minio

+
+
Parameters
+

client – Minio client

+
+
Returns
+

List of Splitgraph object IDs

+
+
+
+ +
+
+

splitgraph.hooks.splitfile_commands module

+

A framework for custom Splitfile commands. The execution flow is as follows:

+
+
    +
  • When the Splitfile executor finds an unknown command, it looks for an entry in the config file:

    +
    [commands]
    +RUN=splitgraph.plugins.Run
    +
    +
    +
  • +
  • The command class must extend this class, initialized at every invocation time.

  • +
  • The command’s calc_hash() method is run. The resultant command context hash is combined with the current +image hash to produce the new image hash: if it already exists, then the image is simply checked out.

  • +
  • Otherwise (or if calc_hash is undefined or returns None), execute(), where the actual command should be +implemented, is run. If it returns a hash, this hash is used for the new image. If this hash already exists, +the existing image is checked out instead. If the command returns None, a random hash is generated for the +new image.

  • +
+
+
+
+class splitgraph.hooks.splitfile_commands.PluginCommand
+

Bases: object

+

Base class for custom Splitfile commands.

+
+
+calc_hash(repository, args)
+

Calculates the command context hash for this custom command. If either the command context hash or the +previous image hash has changed, then the image hash produced by this command will change. +Consequently, two commands with the same command context hashes are assumed to have the same effect +on any Splitgraph images.

+

This is supposed to be a lightweight method intended for pre-flight image hash calculations +(without performing the actual transformation). If it returns None, the actual transformation is run anyway.

+

For example, for a command that imports some data from an external URL, this could be the hash of the last +modified timestamp provided by the external data vendor. If the timestamp is unchanged, the data is unchanged +and so actual command won’t be re-executed.

+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits)

+
+
+
+ +
+
+execute(repository, args)
+

Execute the custom command against the target schema, optionally returning the new image hash. The contract +for the command is as follows (though it is not currently enforced by the runtime):

+
+
    +
  • Has to use get_engine().run_sql (or run_sql_batch) to interact with the engine.

  • +
  • Can only write to the schema with the checked-out repository (run_sql runs non-schema-qualified +statements against the correct schema).

  • +
  • Can inspect splitgraph_meta (e.g. to find the current HEAD) for the repository.

  • +
  • Can’t alter the versioning of the repository.

  • +
+
+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits). If calc_hash() had previously returned +a hash, this hash is ignored. If both this command and calc_hash() return None, the hash is randomly +generated.

+
+
+
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.ingestion.csv.mdx b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.ingestion.csv.mdx new file mode 100644 index 00000000..64aae5ec --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.ingestion.csv.mdx @@ -0,0 +1,174 @@ + + + +export const meta = { + title: "splitgraph.ingestion.csv package", + id: "splitgraph.ingestion.csv package" +}; + +
+

Module contents

+
+
+class splitgraph.ingestion.csv.CSVDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount CSV files in S3/HTTP.\n\nIf passed an URL, this will live query a CSV file on an HTTP server. If passed\nS3 access credentials, this will scan a bucket for CSV files, infer their schema\nand make them available to query over SQL.  \n\nFor example:  \n\n\x08\n```\nsgr mount csv target_schema -o@- <<EOF\n  &lbrace;\n    "s3_endpoint": "cdn.mycompany.com:9000",\n    "s3_access_key": "ABCDEF",\n    "s3_secret_key": "GHIJKL",\n    "s3_bucket": "data",\n    "s3_object_prefix": "csv_files/current/",\n    "autodetect_header": true,\n    "autodetect_dialect": true\n  &rbrace;\nEOF\n```\n'
+
+ +
+
+commandline_kwargs_help: str = 's3_access_key:\ns3_secret_key:\ntables: Tables to mount (default all). If a list, will import only these tables. \nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\nurl: HTTP URL to the CSV file.\ns3_endpoint: S3 endpoint (including port if required).\ns3_region: Region of the S3 bucket.\ns3_secure: Whether to use HTTPS for S3 access.\ns3_bucket: Bucket the object is in.\ns3_object_prefix: Prefix for object in S3 bucket.\nautodetect_header: Detect whether the CSV file has a header automatically.\nautodetect_dialect: Detect the CSV file\'s dialect (separator, quoting characters etc) automatically.\nheader: First line of the CSV file is its header.\nseparator: Character used to separate fields in the file.\nquotechar: Character used to quote fields.'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'s3_access_key': &lbrace;'type': 'string'&rbrace;, 's3_secret_key': &lbrace;'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs)splitgraph.ingestion.csv.CSVDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str)Mapping[str, str]
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'autodetect_dialect': &lbrace;'description': "Detect the CSV file's dialect (separator, quoting characters etc) automatically", 'type': 'boolean'&rbrace;, 'autodetect_header': &lbrace;'description': 'Detect whether the CSV file has a header automatically', 'type': 'boolean'&rbrace;, 'header': &lbrace;'description': 'First line of the CSV file is its header', 'type': 'boolean'&rbrace;, 'quotechar': &lbrace;'description': 'Character used to quote fields', 'type': 'string'&rbrace;, 's3_bucket': &lbrace;'description': 'Bucket the object is in', 'type': 'string'&rbrace;, 's3_endpoint': &lbrace;'description': 'S3 endpoint (including port if required)', 'type': 'string'&rbrace;, 's3_object_prefix': &lbrace;'description': 'Prefix for object in S3 bucket', 'type': 'string'&rbrace;, 's3_region': &lbrace;'description': 'Region of the S3 bucket', 'type': 'string'&rbrace;, 's3_secure': &lbrace;'description': 'Whether to use HTTPS for S3 access', 'type': 'boolean'&rbrace;, 'separator': &lbrace;'description': 'Character used to separate fields in the file', 'type': 'string'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;, 'url': &lbrace;'description': 'HTTP URL to the CSV file', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+ +
+
+class splitgraph.ingestion.csv.CSVIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.csv.copy_csv_buffer(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = False, **kwargs)
+

Copy CSV data from a buffer into a given schema/table

+
+ +
+
+splitgraph.ingestion.csv.query_to_csv(engine: PsycopgEngine, query, buffer, schema: Optional[str] = None)
+
+ +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.csv.fdw module

+
+
+class splitgraph.ingestion.csv.fdw.CSVForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+

Foreign data wrapper for CSV files stored in S3 buckets or HTTP

+
+
+can_sort(sortkeys)
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+
+ +
+
+classmethod import_schema(schema, srv_options, options, restriction_type, restricts)
+
+ +
+ +
+
+splitgraph.ingestion.csv.fdw.get_bool(params: Dict[str, str], key: str, default: bool = True)bool
+
+ +
+
+splitgraph.ingestion.csv.fdw.make_csv_reader(response: io.IOBase, autodetect_header: bool = False, autodetect_dialect: bool = False, delimiter: str = ',', quotechar: str = '"', header: bool = True, encoding: str = 'utf-8')
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.ingestion.mdx b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.ingestion.mdx new file mode 100644 index 00000000..94e2f946 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.ingestion.mdx @@ -0,0 +1,197 @@ + + + +export const meta = { + title: "splitgraph.ingestion package", + id: "splitgraph.ingestion package" +}; + +
+

Module contents

+
+ + +
+

Submodules

+
+
+

splitgraph.ingestion.common module

+
+
+class splitgraph.ingestion.common.IngestionAdapter
+

Bases: object

+
+
+abstract create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+abstract data_to_new_table(data, engine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+abstract query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+
+to_data(query: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)
+
+ +
+
+to_table(data, repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True, no_header: bool = False, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.common.build_commandline_help(json_schema)
+
+ +
+
+splitgraph.ingestion.common.dedupe_sg_schema(schema_spec: List[splitgraph.core.types.TableColumn], prefix_len: int = 59)List[splitgraph.core.types.TableColumn]
+

Some foreign schemas have columns that are longer than 63 characters +where the first 63 characters are the same between several columns +(e.g. odn.data.socrata.com). This routine renames columns in a schema +to make sure this can’t happen (by giving duplicates a number suffix).

+
+ +
+
+splitgraph.ingestion.common.merge_tables(engine: splitgraph.engine.postgres.engine.PsycopgEngine, source_schema: str, source_table: str, source_schema_spec: List[splitgraph.core.types.TableColumn], target_schema: str, target_table: str, target_schema_spec: List[splitgraph.core.types.TableColumn])
+
+ +
+
+splitgraph.ingestion.common.schema_compatible(source_schema: List[splitgraph.core.types.TableColumn], target_schema: List[splitgraph.core.types.TableColumn])bool
+

Quick check to see if a dataframe with target_schema can be written into source_schema. +There are some implicit type conversions that SQLAlchemy/Pandas can do so we don’t want to immediately fail +if the column types aren’t exactly the same (eg bigint vs numeric etc). Most errors should be caught by PG itself.

+

Schema is a list of (ordinal, name, type, is_pk).

+
+ +
+
+

splitgraph.ingestion.inference module

+
+
+splitgraph.ingestion.inference.infer_sg_schema(sample: List[Tuple[str, ]], override_types: Optional[Dict[str, Any]], primary_keys: Optional[List[str]] = None)
+
+ +
+
+splitgraph.ingestion.inference.parse_bigint(integer: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_boolean(boolean: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_int(integer: str)
+
+ +
+
+

splitgraph.ingestion.pandas module

+

Routines that ingest/export CSV files to/from Splitgraph images using Pandas

+
+
+class splitgraph.ingestion.pandas.PandasIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.pandas.df_to_table(df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True)None
+

Writes a Pandas DataFrame to a checked-out Splitgraph table. Doesn’t create a new image.

+
+
Parameters
+
    +
  • df – Pandas DataFrame to insert.

  • +
  • repository – Splitgraph Repository object. Must be checked out.

  • +
  • table – Table name.

  • +
  • if_exists – Behaviour if the table already exists: ‘patch’ means that primary keys that already exist in the

  • +
+
+
+

table will be updated and ones that don’t will be inserted. ‘replace’ means that the table will be dropped and +recreated. +:param schema_check: If False, skips checking that the dataframe is compatible with the target schema.

+
+ +
+
+splitgraph.ingestion.pandas.df_to_table_fast(engine: PsycopgEngine, df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], target_schema: str, target_table: str)
+
+ +
+
+splitgraph.ingestion.pandas.sql_to_df(sql: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)pandas.core.frame.DataFrame
+

Executes an SQL query against a Splitgraph image, returning the result.

+

Extra **kwargs are passed to Pandas’ read_sql_query.

+
+
Parameters
+
    +
  • sql – SQL query to execute.

  • +
  • image – Image object, image hash/tag (str) or None (use the currently checked out image).

  • +
  • repository – Repository the image belongs to. Must be set if image is a hash/tag or None.

  • +
  • use_lq – Whether to use layered querying or check out the image if it’s not checked out.

  • +
+
+
Returns
+

A Pandas dataframe.

+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.ingestion.snowflake.mdx b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.ingestion.snowflake.mdx new file mode 100644 index 00000000..c4a0a931 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.ingestion.snowflake.mdx @@ -0,0 +1,87 @@ + + + +export const meta = { + title: "splitgraph.ingestion.snowflake package", + id: "splitgraph.ingestion.snowflake package" +}; + +
+

Module contents

+
+
+class splitgraph.ingestion.snowflake.SnowflakeDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Snowflake database.\n    \nThis will mount a remote Snowflake schema or a table. You can also get a mounted table to point to the result of a subquery that will be executed on the Snowflake instance. For example:\n\n\x08\n```\n$ sgr mount snowflake test_snowflake -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "password": "password",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "schema": "TPCH_SF100"\n&rbrace;\nEOF\n\n$ sgr mount snowflake test_snowflake_subquery -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "password": "password",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "tables": &lbrace;\n        "balances": &lbrace;\n            "schema": &lbrace;\n                "n_nation": "varchar",\n                "segment": "varchar",\n                "avg_balance": "numeric"\n            &rbrace;,\n            "options": &lbrace;\n                "subquery": "SELECT n_nation AS nation, c_mktsegment AS segment, AVG(c_acctbal) AS avg_balance FROM TPCH_SF100.customer c JOIN TPCH_SF100.nation n ON c_nationkey = n_nationkey"\n            &rbrace;\n        &rbrace;\n    &rbrace;\n&rbrace;\nEOF\n```\n    '
+
+ +
+
+commandline_kwargs_help: str = 'username: Username. Required.\npassword: Password. Required.\naccount: Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html. Required.\ntables: Tables to mount (default all). If a list, will import only these tables. \nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\ndatabase: Snowflake database name. Required.\nschema: Snowflake schema.\nwarehouse: Warehouse name.\nrole: Role.\nThe schema parameter is required when subquery isn\'t used.'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'account': &lbrace;'description': 'Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html', 'type': 'string'&rbrace;, 'password': &lbrace;'description': 'Password', 'type': 'string'&rbrace;, 'username': &lbrace;'description': 'Username', 'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password', 'account'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str)Mapping[str, str]
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'database': &lbrace;'description': 'Snowflake database name', 'type': 'string'&rbrace;, 'role': &lbrace;'description': 'Role', 'type': 'string'&rbrace;, 'schema': &lbrace;'description': 'Snowflake schema', 'type': 'string'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;, 'warehouse': &lbrace;'description': 'Warehouse name', 'type': 'string'&rbrace;&rbrace;, 'required': ['database'], 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.ingestion.socrata.mdx b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.ingestion.socrata.mdx new file mode 100644 index 00000000..871192a6 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.ingestion.socrata.mdx @@ -0,0 +1,175 @@ + + + +export const meta = { + title: "splitgraph.ingestion.socrata package", + id: "splitgraph.ingestion.socrata package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.ingestion.socrata.fdw module

+

Module imported by Multicorn on the Splitgraph engine server: a foreign data wrapper +that communicates to Socrata datasets using sodapy.

+
+
+class splitgraph.ingestion.socrata.fdw.SocrataForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+
+
+can_sort(sortkeys)
+
+
Parameters
+

sortkeys – List of SortKey

+
+
Returns
+

List of SortKey the FDW can sort on

+
+
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+

Method called from the planner to estimate the resulting relation +size for a scan. +It will help the planner in deciding between different types of plans, +according to their costs. +Args:

+
+
+
quals (list): A list of Qual instances describing the filters

applied to this scan.

+
+
+

columns (list): The list of columns that must be returned.

+
+
+
Returns:

A tuple of the form (expected_number_of_rows, avg_row_width (in bytes))

+
+
+
+ +
+
+property table_meta
+
+ +
+ +
+
+splitgraph.ingestion.socrata.fdw.to_json(row, columns, column_map)
+
+ +
+
+

splitgraph.ingestion.socrata.mount module

+

Splitgraph mount handler for Socrata datasets

+
+
+class splitgraph.ingestion.socrata.mount.SocrataDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'app_token': &lbrace;'description': 'Socrata app token, optional', 'type': ['string', 'null']&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs)splitgraph.ingestion.socrata.mount.SocrataDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'description': 'Amount of rows to fetch from Socrata per request (limit parameter). Maximum 50000.', 'type': 'integer'&rbrace;, 'domain': &lbrace;'description': 'Socrata domain, for example, data.albanyny.gov', 'type': 'string'&rbrace;, 'tables': &lbrace;'type': 'object'&rbrace;&rbrace;, 'required': ['domain'], 'type': 'object'&rbrace;
+
+
tables: A dictionary mapping PostgreSQL table names to Socrata table IDs. For example,

&lbrace;“salaries”: “xzkq-xp2w”&rbrace;. If skipped, ALL tables in the Socrata endpoint will be mounted.

+
+
+
+ +
+
+tables: Optional[TableInfo]
+
+ +
+ +
+
+splitgraph.ingestion.socrata.mount.generate_socrata_mount_queries(sought_ids, datasets, mountpoint, server_id, tables)
+
+ +
+
+

splitgraph.ingestion.socrata.querying module

+
+
+splitgraph.ingestion.socrata.querying.cols_to_socrata(cols, column_map: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.ingestion.socrata.querying.estimate_socrata_rows_width(columns, metadata, column_map=None)
+

Estimate number of rows required for a query and each row’s width +from the table metadata.

+
+ +
+
+splitgraph.ingestion.socrata.querying.quals_to_socrata(quals, column_map: Optional[Dict[str, str]] = None)
+

Convert a list of Multicorn quals to a SoQL query

+
+ +
+
+splitgraph.ingestion.socrata.querying.socrata_to_sg_schema(metadata: Dict[str, Any])Tuple[List[splitgraph.core.types.TableColumn], Dict[str, str]]
+
+ +
+
+splitgraph.ingestion.socrata.querying.sortkeys_to_socrata(sortkeys, column_map: Optional[Dict[str, str]] = None)
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.mdx b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.mdx new file mode 100644 index 00000000..a3d36728 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.mdx @@ -0,0 +1,330 @@ + + + +export const meta = { + title: "splitgraph package", + id: "splitgraph package" +}; + +
+

Module contents

+
+ +
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

splitgraph.exceptions module

+

Exceptions that can be raised by the Splitgraph library.

+
+
+exception splitgraph.exceptions.APICompatibilityError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions related to API incompatibilities

+
+ +
+
+exception splitgraph.exceptions.AuthAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by the Auth API

+
+ +
+
+exception splitgraph.exceptions.CheckoutError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to checking out/committing repositories

+
+ +
+
+exception splitgraph.exceptions.DataSourceError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by mount handlers.

+
+ +
+
+exception splitgraph.exceptions.DockerUnavailableError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Could not connect to the Docker daemon.

+
+ +
+
+exception splitgraph.exceptions.EngineInitializationError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when the engine isn’t initialized (no splitgraph_meta schema or audit triggers)

+
+ +
+
+exception splitgraph.exceptions.ExternalHandlerError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by external object handlers.

+
+ +
+
+exception splitgraph.exceptions.GQLAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

GQL API errors

+
+ +
+
+exception splitgraph.exceptions.GQLRepoDoesntExistError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Repository doesn’t exist

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthenticatedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthenticated (user not logged in)

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthorizedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthorized (e.g. repository isn’t writeable by the user)

+
+ +
+
+exception splitgraph.exceptions.ImageNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph image doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectDownloadError(reason: Optional[BaseException], successful_objects: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during download of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectUploadError(reason: Optional[BaseException], successful_objects: List[str], successful_object_urls: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during upload of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.ObjectCacheError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Issues with the object cache (not enough space)

+
+ +
+
+exception splitgraph.exceptions.ObjectIndexingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to indexing objects

+
+ +
+
+exception splitgraph.exceptions.ObjectMountingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to incompatible objects.

+
+ +
+
+exception splitgraph.exceptions.ObjectNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when a physical object doesn’t exist in the cache.

+
+ +
+
+exception splitgraph.exceptions.RepositoryNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph repository doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.SplitGraphError
+

Bases: Exception

+

A generic Splitgraph exception.

+
+ +
+
+exception splitgraph.exceptions.SplitfileError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Generic error class for Splitfile interpretation/execution errors.

+
+ +
+
+exception splitgraph.exceptions.TableNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A table doesn’t exist in an image

+
+ +
+
+exception splitgraph.exceptions.UnsupportedSQLError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised for unsupported SQL statements, for example, containing schema-qualified tables when the statement +is supposed to be used in an SQL/IMPORT Splitfile command.

+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.splitfile.mdx b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.splitfile.mdx new file mode 100644 index 00000000..39a80266 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.10/splitgraph.splitfile.mdx @@ -0,0 +1,89 @@ + + + +export const meta = { + title: "splitgraph.splitfile package", + id: "splitgraph.splitfile package" +}; + +
+

Module contents

+

Splitfile interpreter: a set of tools on top of the core Splitgraph versioning and image management to give +the user a Dockerfile-like experience for building Splitgraph images (caching, consistent hashing, a declarative +language).

+
+ +
+

Submodules

+
+
+

splitgraph.splitfile.execution module

+

Functions for executing Splitfiles.

+
+
+class splitgraph.splitfile.execution.ImageMapper(object_engine: splitgraph.engine.postgres.engine.PostgresEngine)
+

Bases: object

+
+
+get_provenance_data()Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]
+
+ +
+
+setup_lq_mounts()None
+
+ +
+
+teardown_lq_mounts()None
+
+ +
+ +
+
+splitgraph.splitfile.execution.execute_commands(commands: str, params: Optional[Dict[str, str]] = None, output: Optional[splitgraph.core.repository.Repository] = None, output_base: str = '00000000000000000000000000000000')None
+

Executes a series of Splitfile commands.

+
+
Parameters
+
    +
  • commands – A string with the raw Splitfile.

  • +
  • params – A dictionary of parameters to be applied to the Splitfile ($&lbrace;PARAM&rbrace; is replaced with the specified +parameter value).

  • +
  • output – Output repository to execute the Splitfile against.

  • +
  • output_base – If not None, a revision that gets checked out for all Splitfile actions to be committed +on top of it.

  • +
+
+
+
+ +
+
+splitgraph.splitfile.execution.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.splitfile.execution.prevalidate_imports(table_names: List[str], table_queries: List[bool])List[str]
+
+ +
+
+splitgraph.splitfile.execution.rebuild_image(image: splitgraph.core.image.Image, source_replacement: Dict[splitgraph.core.repository.Repository, str])None
+

Recreates the Splitfile used to create a given image and reruns it, replacing its dependencies with a different +set of versions.

+
+
Parameters
+
    +
  • image – Image object

  • +
  • source_replacement – A map that specifies replacement images/tags for repositories that the image depends on

  • +
+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.11/metadata.json b/content/docs/9500_python-api/9000_versions/v0.2.11/metadata.json new file mode 100644 index 00000000..53723306 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.11/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.11", + "updated_at": "2022-01-20T00:00:49.655Z", + "release": { + "id": 40632768, + "tag_name": "v0.2.11", + "target_commitish": "f84b245302f20ae1ec65320e75e24753f59b364d", + "created_at": "2021-03-29T12:27:51Z", + "published_at": "2021-03-29T13:15:46Z", + "assets": [ + { + "id": 34145547, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/34145547", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-03-29T12:54:24Z", + "updated_at": "2021-03-29T12:54:24Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.11/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.cloud.mdx b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.cloud.mdx new file mode 100644 index 00000000..e250faf0 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.cloud.mdx @@ -0,0 +1,209 @@ + + + +export const meta = { + title: "splitgraph.cloud package", + id: "splitgraph.cloud package" +}; + +
+

Module contents

+

Public API for interacting with the Splitgraph registry

+
+
+class splitgraph.cloud.AuthAPIClient(remote: str)
+

Bases: object

+

Client for the Splitgraph registry auth API that generates tokens to access +other Splitgraph services.

+

Currently incomplete with just enough methods to allow to register and access +the Splitgraph registry via the command line.

+
+
+property access_token
+

Will return an up-to-date access token by either getting it from +the configuration file or contacting the auth service for a new one. +Will write the new access token into the configuration file.

+
+
Returns
+

Access token.

+
+
+
+ +
+
+create_machine_credentials(access_token: str, password: str)requests.models.Response
+

Generate a key and secret that can be used to log into the Splitgraph registry +via a normal Postgres connection. The secret must be stored in the user’s local +configuration file (it’s not stored on Splitgraph servers).

+
+
Parameters
+
    +
  • access_token – Access token

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (key, secret).

+
+
+
+ +
+
+get_access_token(refresh_token: str)requests.models.Response
+

Get a new access token from a refresh token.

+
+
Parameters
+

refresh_token – Refresh token

+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_access_token_from_api(api_key: str, api_secret: str)requests.models.Response
+

Get a new access token from API keys

+
+
Parameters
+
    +
  • api_key – API key

  • +
  • api_secret – API secret

  • +
+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_latest_version()Optional[str]
+
+ +
+
+get_refresh_token(username: str, password: str)requests.models.Response
+

Get a long-lived refresh token and a short-lived access token from the API.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (access_token, refresh_token).

+
+
+
+ +
+
+register(username: str, password: str, email: str, accept_tos: bool)requests.models.Response
+

Register a new Splitgraph user.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
  • email – Email

  • +
  • accept_tos – Accept the Terms of Service if they exist

  • +
+
+
+
+ +
+
+tos()requests.models.Response
+

Get a Terms of Service message from the registry (if accepting ToS is required) +:return: Link to the Terms of Service or None

+
+ +
+ +
+
+class splitgraph.cloud.GQLAPIClient(remote: str)
+

Bases: object

+

Wrapper class for select Splitgraph Registry GQL operations that can be +called from the CLI

+
+
+find_repository(query: str, limit: int = 10)Tuple[int, List[Tuple[str, str, str]]]
+
+ +
+
+upsert_description(namespace: str, repository: str, description: str)
+
+ +
+
+upsert_metadata(*args, **kwargs)
+
+ +
+
+upsert_readme(namespace: str, repository: str, readme: str)
+
+ +
+
+upsert_topics(namespace: str, repository: str, topics: List[str])
+
+ +
+ +
+
+splitgraph.cloud.expect_result(result: List[str], ignore_status_codes: Optional[List[int]] = None)Callable[[Callable[[], requests.models.Response]], Callable[[], Union[str, Tuple[str]]]]
+

A decorator that can be wrapped around a function returning a requests.Response with a JSON body. +If the request has failed, it will extract the “error” from the JSON response and raise an AuthAPIError.

+
+
Parameters
+
    +
  • result – Items to extract. Will raise an AuthAPIError if not all items were fetched.

  • +
  • ignore_status_codes – If one of these status codes is returned (e.g. 404), +it gets ignored and a None is returned instead.

  • +
+
+
Returns
+

Tuple of items enumerated in the result list. If there’s only one item, it will +return just that item.

+
+
+
+ +
+
+splitgraph.cloud.get_headers()
+
+ +
+
+splitgraph.cloud.get_remote_param(remote: str, key: str)str
+
+ +
+
+splitgraph.cloud.get_token_claim(jwt, claim)
+

Extract a claim from a JWT token without validating it.

+
+ +
+
+splitgraph.cloud.handle_gql_errors(func: Callable[[], requests.models.Response])Callable[[], requests.models.Response]
+

A decorator that handles responses from the GQL API, transforming errors into exceptions.

+
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.commandline.mdx b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.commandline.mdx new file mode 100644 index 00000000..58743867 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.commandline.mdx @@ -0,0 +1,365 @@ + + + +export const meta = { + title: "splitgraph.commandline package", + id: "splitgraph.commandline package" +}; + +
+

Module contents

+

Splitgraph command line client

+

Hooks into the API to allow management of Splitgraph repositories and images using sgr.

+
+
+class splitgraph.commandline.ClickHandler(level=0)
+

Bases: logging.Handler

+
+
+emit(record)
+

Do whatever it takes to actually log the specified logging record.

+

This version is intended to be implemented by subclasses and so +raises a NotImplementedError.

+
+ +
+ +
+
+class splitgraph.commandline.WithExceptionHandler(name=None, commands=None, **attrs)
+

Bases: click.core.Group

+
+
+get_command(ctx, cmd_name)
+

Given a context and a command name, this returns a +Command object if it exists or returns None.

+
+ +
+
+invoke(ctx)
+

Given a context, this invokes the attached callback (if it exists) +in the right way.

+
+ +
+ +
+
+splitgraph.commandline.get_exception_name(o)
+
+ +
+ +
+

Submodules

+
+
+

splitgraph.commandline.cloud module

+

Command line routines related to registering/setting up connections to the Splitgraph registry.

+
+
+

splitgraph.commandline.common module

+

Various common functions used by the command line interface.

+
+
+class splitgraph.commandline.common.Color
+

Bases: object

+

An enumeration of console colors

+
+
+BLUE = '\x1b[94m'
+
+ +
+
+BOLD = '\x1b[1m'
+
+ +
+
+CYAN = '\x1b[96m'
+
+ +
+
+DARKCYAN = '\x1b[36m'
+
+ +
+
+END = '\x1b[0m'
+
+ +
+
+GREEN = '\x1b[92m'
+
+ +
+
+PURPLE = '\x1b[95m'
+
+ +
+
+RED = '\x1b[91m'
+
+ +
+
+UNDERLINE = '\x1b[4m'
+
+ +
+
+YELLOW = '\x1b[93m'
+
+ +
+ +
+
+class splitgraph.commandline.common.ImageType(default: Optional[str] = 'latest', repository_exists: bool = False, get_image: bool = False)
+

Bases: click.types.ParamType

+

Parser that extracts the full image specification (repository and hash/tag).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])Tuple[Repository, Optional[Union[Image, str]]]
+

Image specification must have the format [NAMESPACE/]REPOSITORY[:HASH_OR_TAG].

+

The parser returns a tuple of (repository object, tag or hash).

+
+ +
+
+name = 'Image'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.JsonType
+

Bases: click.types.ParamType

+

Parser for Json – a wrapper around json.loads because without specifying +the name Click shows the type for the option/arg as LOADS.

+

Also supports passing JSON files (pass in @filename.json).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Json'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.RepositoryType(exists: bool = False)
+

Bases: click.types.ParamType

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])Repository
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Repository'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.ResettableStream(stream)
+

Bases: io.RawIOBase

+

Stream that supports reading from the underlying stream and resetting the position once.

+

We can’t use fseek() in this case, since we might be reading from a pipe. So, we operate +this stream in two modes. In the first mode, we mirror all reads into a separate buffer +(consuming the input stream). After the user calls reset(), we first output data from the +mirrored copy, then continue consuming the input stream (simulating seek(0).

+
+
+readable()
+

Return whether object was opened for reading.

+

If False, read() will raise OSError.

+
+ +
+
+readinto(b)
+
+ +
+
+reset()
+
+ +
+ +
+
+splitgraph.commandline.common.emit_sql_results(results, use_json=False, show_all=False)
+
+ +
+
+splitgraph.commandline.common.load_json_param(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+
+ +
+
+splitgraph.commandline.common.remote_switch_option(*names, **kwargs)
+

Adds an option to switch global SG_ENGINE for this invocation of sgr.

+

This is useful for e.g. tagging or viewing image information on a remote +registry. This is not used in operations like commit/checkout (even though +nothing is preventing SG_ENGINE switch from working on that if the remote engine +supports this), the user should switch SG_ENGINE envvar themselves in that case.

+
+
Parameters
+
    +
  • names – Names

  • +
  • kwargs – Passed to click.option

  • +
+
+
+
+ +
+
+splitgraph.commandline.common.sql_results_to_str(results: List[Tuple[Any]], use_json: bool = False)str
+
+ +
+
+

splitgraph.commandline.engine module

+
+
+splitgraph.commandline.engine.copy_to_container(container: Container, source_path: str, target_path: str)None
+

Copy a file into a Docker container

+
+
Parameters
+
    +
  • container – Container object

  • +
  • source_path – Source file path

  • +
  • target_path – Target file path (in the container)

  • +
+
+
Returns
+

+
+
+
+ +
+
+splitgraph.commandline.engine.get_docker_client()
+

Wrapper around client.from_env() that also pings the daemon +to make sure it can connect and if not, raises an error.

+
+ +
+
+splitgraph.commandline.engine.inject_config_into_engines(engine_prefix, config_path)
+

Copy the current config into all engines that are managed by sgr engine. This +is so that the engine has the right credentials and settings for when we do +layered querying (a Postgres client queries the engine directly and it +has to download objects etc).

+
+
Parameters
+
    +
  • engine_prefix – Prefix for Docker containers that are considered to be engines

  • +
  • config_path – Path to the config file.

  • +
+
+
+
+ +
+
+splitgraph.commandline.engine.list_engines(prefix, include_all=False, unavailable_ok=True)
+
+ +
+
+splitgraph.commandline.engine.patch_and_save_config(config, patch)
+
+ +
+
+

splitgraph.commandline.example module

+

Command line routines generating example data / Splitfiles

+
+
+splitgraph.commandline.example.alter_table(repository: Repository, table_name: str, rows_added: int, rows_deleted: int, rows_updated: int)None
+

Alters the example table, adding/updating/deleting a certain number of rows.

+
+
Parameters
+
    +
  • repository – Checked-out Repository object.

  • +
  • table_name – Name of the table

  • +
  • rows_added – Number of rows to add

  • +
  • rows_deleted – Number of rows to remove

  • +
  • rows_updated – Number of rows to update

  • +
+
+
+
+ +
+
+splitgraph.commandline.example.generate_table(repository: Repository, table_name: str, size: int)None
+

Creates a table with an integer primary key and a string value.

+
+
Parameters
+
    +
  • repository – Checked-out Repository to create the table in.

  • +
  • table_name – Name of the table to generate

  • +
  • size – Number of rows in the table.

  • +
+
+
+
+ +
+
+

splitgraph.commandline.image_creation module

+

sgr commands related to creating and checking out images

+
+
+

splitgraph.commandline.image_info module

+

sgr commands related to getting information out of / about images

+
+
+

splitgraph.commandline.ingestion module

+

Command line tools for ingesting/exporting Splitgraph images into other formats.

+
+
+

splitgraph.commandline.misc module

+

Miscellaneous image management sgr commands.

+
+
+

splitgraph.commandline.mount module

+

sgr commands related to mounting databases via Postgres FDW

+
+
+

splitgraph.commandline.push_pull module

+

sgr commands related to sharing and downloading images.

+
+
+

splitgraph.commandline.splitfile module

+

sgr commands related to building and rebuilding Splitfiles.

+
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.config.mdx b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.config.mdx new file mode 100644 index 00000000..6f22349f --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.config.mdx @@ -0,0 +1,392 @@ + + + +export const meta = { + title: "splitgraph.config package", + id: "splitgraph.config package" +}; + +
+

Module contents

+

The CONFIG object is created and exported once __at import time__ +Calling CONFIG[“KEY”] directly should be sufficient in most cases, +except when a config value has changed since importing CONFIG. +In that case, create_config_dict() can provide an updated config dict

+

Priority (highest to lowest):

+
+
    +
  1. Command line argument values

  2. +
  3. Environment variable values

  4. +
  5. Config file values in [defaults] section

  6. +
  7. DEFAULTS (see keys.py)

  8. +
+
+
+ +
+

Submodules

+
+
+

splitgraph.config.argument_config module

+
+
+splitgraph.config.argument_config.get_arg_tuples()List[Tuple[str, str]]
+

Get the raw (argN, argN+1) tuples from sys.argv

+

We could also use click to parse the flags ahead of time, and then pass +the parsed flag object into SystemConfigGetters. But this way, we avoid +having to pass down variables from click just to get config values.

+
+ +
+
+splitgraph.config.argument_config.get_argument_config_value(key: str, default_return: Optional[str] = None)Optional[str]
+

Get get the value of an argument, where value is the argument +immediately following the argument matching a key in ARG_KEYS, e.g.:

+
+

SYS_ARGS = [“–namespace”, “foo”] +–> return “foo”

+
+

Otherwise, return default_return

+
+ +
+
+

splitgraph.config.config module

+
+
+splitgraph.config.config.chain_getters(getters: Sequence[Callable[[str], Optional[str]]], key: str, default_return: Optional[str] = None)Optional[str]
+
+ +
+
+splitgraph.config.config.create_config_dict()Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create and return a dict of all known config values

+
+ +
+
+splitgraph.config.config.get_all_in_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str)Dict[str, Union[Dict[str, str], str]]
+

Get all subsections from a config (e.g. config[“data_sources”])

+
+ +
+
+splitgraph.config.config.get_all_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str)Dict[str, str]
+
+ +
+
+splitgraph.config.config.get_from_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, item: str)str
+
+ +
+
+splitgraph.config.config.get_from_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str)str
+

Return a singleton variable from a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.get_singleton(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], item: str)str
+

Return a singleton (not a section) variable from the config.

+
+ +
+
+splitgraph.config.config.lazy_get_config_value(key: str, default_return: Optional[str] = None)Optional[Union[str, Dict[str, Dict[str, str]]]]
+

Get the config value for a key in the following precedence +Otherwise return default_return

+
+ +
+
+splitgraph.config.config.patch_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], patch: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Recursively updates a nested configuration dictionary:

+
+
patch_config(
+
&lbrace;“key_1”: “value_1”,

“dict_1”: &lbrace;“key_1”: “value_1”&rbrace;&rbrace;,

+
+
&lbrace;“key_1”: “value_2”,

“dict_1”: &lbrace;“key_2”: “value_2”&rbrace;&rbrace;) == &lbrace;“key_1”: “value_2”, +“dict_1”: &lbrace;“key_1”: “value_1”, “key_2”: “value_2”&rbrace;&rbrace;

+
+
+
+
+
+
Parameters
+
    +
  • config – Config dictionary

  • +
  • patch – Dictionary with the path

  • +
+
+
Returns
+

New patched dictionary

+
+
+
+ +
+
+splitgraph.config.config.set_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str, value: str)None
+

Set a singleton variable in a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.update_config_dict_from_arguments(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sys.argv +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_env_vars(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading os.environ +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_file(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], sg_config_file: str)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sg_config_file +and overwriting any keys according to the rules in config_file_config

+

Return updated copy of config_dict.

+
+ +
+
+

splitgraph.config.config_file_config module

+
+
+splitgraph.config.config_file_config.accumulate_lists(config_dict: Dict[str, Union[Dict[str, str], str]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Transform a config_dict to “accumulate” objects “nested” via key name

+

Because ConfigParser does not support nesting, we implement our own +syntax via the key names of sections. The ‘:’ character can be used in +section names to specify the left and right key. Example:

+
.ini config             new config_dict
+
+                  ----->
+                    |
+[remote: remote1]   |   &lbrace;
+SG_ENV_VAR=foo      |       **rest_of_config_dict,
+                    |       "remotes": &lbrace;
+[origin: origin1]   |           "remote1": &lbrace;
+SG_ENV_VAR=bar      |               "SG_ENV_VAR": "foo"
+                    |           &rbrace;
+[origin: origin2]   |       &rbrace;,
+SG_ENV_VAR=bax      |       "origins": &lbrace;
+                    |           "origin1": &lbrace;
+                    |               "SG_ENV_VAR": "bar"
+                    |           &rbrace;,
+                    |           "origin2": &lbrace;
+                    |               "SG_ENV_VAR": "bax"
+                    |           &rbrace;
+                    |       &rbrace;
+                    |   &rbrace;
+                    |
+                  ----->
+
+
+

:return a new, updated copy of config_dict

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_config_file(sg_file: str, **kwargs)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create a dict from ConfigParser, apply transformations to it.

+

Return parsed and transformed config_dict.

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_file(sg_file: str, **kwargs)Dict[str, Dict[str, str]]
+
+ +
+
+splitgraph.config.config_file_config.hoist_section(config_dict: Dict[str, Dict[str, str]], section: str = 'defaults')Dict[str, Union[Dict[str, str], str]]
+

If a section exists called <hoist_section>, hoist it to the top level +This is useful for overriding default configs from within a config file

+

Transform config_dict to “hoist” any config values from a section +into the top level (thus, overriding environment variables), +when the name of the section matches hoist_section.

+

Return a new, updated copy of config_dict.

+
+ +
+
+splitgraph.config.config_file_config.transform_config_dict(config_dict: Dict[str, Dict[str, str]], **kwargs)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Apply transformations to the raw ConfigParser.config object

+
+
    +
  1. hoist_section

  2. +
  3. accumulate_lists

  4. +
+
+

Return the a new, updated copy of config_dict.

+
+ +
+
+

splitgraph.config.default_config module

+
+
+splitgraph.config.default_config.get_default_config_value(key: str, default_return: Optional[str] = None)Any
+

Get the hard-coded default value of a config key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.environment_config module

+
+
+splitgraph.config.environment_config.get_environment_config_value(key: str, default_return: Optional[str] = None)Optional[str]
+

Get the environment variable value of the environment variable matching key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.export module

+

Routines for exporting the config back into text.

+
+
+splitgraph.config.export.overwrite_config(new_config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_path: str, include_defaults: bool = False)None
+

Serialize the new config dictionary and overwrite the current config file. +Note: this will delete all comments in the config!

+
+
Parameters
+
    +
  • new_config – Config dictionary.

  • +
  • config_path – Path to the config file.

  • +
  • include_defaults – Whether to include values that are the same +as their defaults.

  • +
+
+
+
+ +
+
+splitgraph.config.export.serialize_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_format: bool, no_shielding: bool, include_defaults: bool = True)str
+

Pretty-print the configuration or print it in the Splitgraph config file format.

+
+
Parameters
+
    +
  • config – Configuration dictionary.

  • +
  • config_format – Output configuration in the Splitgraph config file format.

  • +
  • no_shielding – Don’t replace sensitive values (like passwords) with asterisks

  • +
  • include_defaults – Emit the config variable even if it’s the same as the default.

  • +
+
+
Returns
+

Textual representation of the config.

+
+
+
+ +
+
+splitgraph.config.export.serialize_engine_config(engine_name: str, conn_params: Dict[str, str], no_shielding: bool)str
+

Output the config section with connection parameters for a single engine.

+
+
Parameters
+
    +
  • engine_name – Name of the engine

  • +
  • conn_params – Dictionary of connection parameters

  • +
  • no_shielding – Don’t replace passwords with asterisks

  • +
+
+
+
+ +
+
+

splitgraph.config.keys module

+
+
+splitgraph.config.keys.SENSITIVE_KEY_SUFFIXES = ['_PWD', '_TOKEN']
+

Warning: Every key in DEFAULTS must have a key in ARGUMENT_KEY_MAP +If you add/remove keys from DEFAULTS, make sure to do so here too.

+
+ +
+
+

splitgraph.config.system_config module

+
+
+splitgraph.config.system_config.file_exists(_dir: str, filename: str)bool
+
+ +
+
+splitgraph.config.system_config.get_config_file(default_return: None = None)Optional[str]
+

Get the location of an existing SG_CONFIG_FILE on the system with +a valid name. Do not attempt to parse the config file, just return +its location.

+

Otherwise, return default_return

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_dirs()List[str]
+

Get any explicitly defined config file directories, +which are directories where we should search for files from +VALID_CONFIG_FILE_NAMES.

+

This list is defined similar to $PATH, as a colon (:) delimited +string, either in:

+
+
    +
  • argument flag –config-dirs

  • +
  • or environment key SG_CONFIG_DIRS

  • +
+
+

Or a single directory defined in either

+
+
    +
  • argument flag –config-dir

  • +
  • environment key SG_CONFIG_DIR

  • +
+
+

If both plural and single are defined, join them together.

+

Return a list of valid paths that are set, or an empty list.

+

Print a warning if any paths to not exist.

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_location()Optional[str]
+

Get the explicitly defined location of config file, if defined.

+

The location will either be defined in:

+
+
    +
  • argument flag –config-file

  • +
  • or environment key SG_CONFIG_FILE

  • +
+
+

In keeping with assumptions about priority, argument flag has +higher priority than environment value.

+

If the location is set, and points to an existing file, return location.

+

Otherwise return None

+

Print a warning if location is set but points to non-existing file.

+
+ +
+
+splitgraph.config.system_config.get_system_config_value(key: str, default_return: None = None)Optional[str]
+
+ +
+
+splitgraph.config.system_config.is_file(filename: str)bool
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.core.indexing.mdx b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.core.indexing.mdx new file mode 100644 index 00000000..794d6acf --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.core.indexing.mdx @@ -0,0 +1,141 @@ + + + +export const meta = { + title: "splitgraph.core.indexing package", + id: "splitgraph.core.indexing package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.core.indexing.bloom module

+

Bloom filtering on fragments for equality queries.

+
+
+splitgraph.core.indexing.bloom.describe(index_tuple: Tuple[int, str])str
+

Returns a pretty-printed summary of the bloom filter

+
+
Parameters
+

index_tuple – Tuple of (k, base64-encoded fingerprint) +returned by generate_bloom_index

+
+
Returns
+

String

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.filter_bloom_index(engine: PsycopgEngine, object_ids: List[str], quals: Any)List[str]
+

Runs a bloom filter on given qualifiers using the given objects’ previously-generated +fingerprints.

+
+
Parameters
+
    +
  • engine – Object engine

  • +
  • object_ids – Object IDs

  • +
  • quals – List of qualifiers

  • +
+
+
Returns
+

List of object IDs that might match the qualifiers in quals (including +IDs that don’t have a bloom index).

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.generate_bloom_index(engine: PsycopgEngine, object_id: str, changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], column: str, probability: Optional[float] = None, size: Optional[int] = None)Tuple[int, str]
+

Generates a bloom filter signature for a given column and a given fragment. Bloom filters +can answer queries asking whether an item is definitely not in a given set or possibly can be.

+

The tradeoff is between the probability of a false positive (item said to be in the set when +it actually isn’t) and the size of the filter.

+

Bloom filters also have an extra parameter, k, or the number of bits in the signature that +a certain item flips. This parameter has an optimal value for a given number of distinct items +or a probability and so isn’t explicitly passed by the user.

+
+
Parameters
+
    +
  • engine – Object engine the fragment is cached in.

  • +
  • object_id – Fragment ID

  • +
  • changeset – Optional, if specified, the old column values are included in the index.

  • +
  • column – Column name to generate the index on.

  • +
  • probability – Probability of a false positive. Either this or the size of the filter must +be specified, but not both.

  • +
  • size – Size of the filter, in bytes.

  • +
+
+
Returns
+

Dictionary to be inserted into the index.

+
+
+
+ +
+
+

splitgraph.core.indexing.range module

+
+
+splitgraph.core.indexing.range.extract_min_max_pks(engine: PsycopgEngine, fragments: List[str], table_pks: List[str], table_pk_types: List[str])Any
+

Extract minimum/maximum PK values for given fragments.

+
+
Parameters
+
    +
  • engine – Engine the objects live on

  • +
  • fragments – IDs of objects

  • +
  • table_pks – List of columns forming the table primary key

  • +
  • table_pk_types – List of types for table PK columns

  • +
+
+
Returns
+

List of min/max primary key for every object.

+
+
+
+ +
+
+splitgraph.core.indexing.range.filter_range_index(metadata_engine: PsycopgEngine, object_ids: List[str], quals: Any, column_types: Dict[str, str])List[str]
+
+ +
+
+splitgraph.core.indexing.range.generate_range_index(object_engine: PsycopgEngine, object_id: str, table_schema: TableSchema, changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], columns: Optional[List[str]] = None)Dict[str, Tuple[T, T]]
+

Calculate the minimum/maximum values of every column in the object (including deleted values).

+
+
Parameters
+
    +
  • object_engine – Engine the object is located on

  • +
  • object_id – ID of the object.

  • +
  • table_schema – Schema of the table

  • +
  • changeset – Changeset (old values will be included in the index)

  • +
  • columns – Columns to run the index on (default all)

  • +
+
+
Returns
+

Dictionary of &lbrace;column: [min, max]&rbrace;

+
+
+
+ +
+
+splitgraph.core.indexing.range.quals_to_sql(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], column_types: Dict[str, str])Tuple[psycopg2.sql.Composable, Tuple]
+

Convert a list of qualifiers in CNF to a fragment of a Postgres query +:param quals: Qualifiers in CNF +:param column_types: Dictionary of column names and their types +:return: SQL Composable object and a tuple of arguments to be mogrified into it.

+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.core.mdx b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.core.mdx new file mode 100644 index 00000000..e48cdce6 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.core.mdx @@ -0,0 +1,2021 @@ + + + +export const meta = { + title: "splitgraph.core package", + id: "splitgraph.core package" +}; + +
+

Module contents

+

Core Splitgraph functionality: versioning and sharing tables.

+

The main point of interaction with the Splitgraph API is a splitgraph.core.repository.Repository object +representing a local or a remote Splitgraph repository. Repositories can be created using one of the +following methods:

+
+
    +
  • Directly by invoking Repository(namespace, name, engine) where engine is the engine that the repository +belongs to (that can be gotten with get_engine(engine_name). If the created repository doesn’t actually exist +on the engine, it must first be initialized with repository.init().

  • +
  • By using splitgraph.core.engine.lookup_repository() which will search for the repository on the current +lookup path.

  • +
+
+
+ + +
+

Submodules

+
+
+

splitgraph.core.common module

+

Common internal functions used by Splitgraph commands.

+
+
+class splitgraph.core.common.CallbackList(iterable=(), /)
+

Bases: list

+

Used to pass around and call multiple callbacks at once.

+
+ +
+
+class splitgraph.core.common.Tracer
+

Bases: object

+

Accumulates events and returns the times between them.

+
+
+get_durations()List[Tuple[str, float]]
+

Return all events and durations between them. +:return: List of (event name, time to this event from the previous event (or start))

+
+ +
+
+get_total_time()float
+
+
Returns
+

Time from start to the final logged event.

+
+
+
+ +
+
+log(event: str)None
+

Log an event at the current time +:param event: Event name

+
+ +
+ +
+
+splitgraph.core.common.adapt(value: Any, pg_type: str)Any
+

Coerces a value with a PG type into its Python equivalent.

+
+
Parameters
+
    +
  • value – Value

  • +
  • pg_type – Postgres datatype

  • +
+
+
Returns
+

Coerced value.

+
+
+
+ +
+
+splitgraph.core.common.aggregate_changes(query_result: List[Tuple[int, int]], initial: Optional[Tuple[int, int, int]] = None)Tuple[int, int, int]
+

Add a changeset to the aggregated diff result

+
+ +
+
+splitgraph.core.common.coerce_val_to_json(val: Any)Any
+

Turn a Python value to a string/float that can be stored as JSON.

+
+ +
+
+splitgraph.core.common.ensure_metadata_schema(engine: PsycopgEngine)None
+

Create or migrate the metadata schema splitgraph_meta that stores the hash tree of schema +snapshots (images), tags and tables. +This means we can’t mount anything under the schema splitgraph_meta – much like we can’t have a folder +“.git” under Git version control…

+
+ +
+
+splitgraph.core.common.gather_sync_metadata(target: Repository, source: Repository, overwrite_objects=False, overwrite_tags=False, single_image: Optional[str] = None)Any
+

Inspects two Splitgraph repositories and gathers metadata that is required to bring target up to +date with source.

+
+
Parameters
+
    +
  • target – Target Repository object

  • +
  • source – Source repository object

  • +
  • overwrite_objects – If True, will return metadata for all objects +belonging to new images (or existing image if single_image=True)

  • +
  • single_image – If set, only grab a single image with this hash/tag from the source.

  • +
  • overwrite_tags – If True and single_image is set, will return all tags for that image. +If single_image is not set, will return all tags in the source repository. +If False, will only return tags in the source that don’t exist on the target.

  • +
+
+
Returns
+

Tuple of metadata for new_images, new_tables, object_locations, object_meta, tags

+
+
+
+ +
+
+splitgraph.core.common.get_data_safe(package: str, resource: str)bytes
+
+ +
+
+splitgraph.core.common.get_temporary_table_id()str
+

Generate a random ID for temporary/staging objects that haven’t had their ID calculated yet.

+
+ +
+
+splitgraph.core.common.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.common.manage_audit(func: Callable)Callable
+

A decorator to be put around various Splitgraph commands +that adds/removes audit triggers for new/committed/deleted tables.

+
+ +
+
+splitgraph.core.common.manage_audit_triggers(engine: PostgresEngine, object_engine: Optional[PostgresEngine] = None)None
+

Does bookkeeping on audit triggers / audit table:

+
+
    +
  • Detect tables that are being audited that don’t need to be any more +(e.g. they’ve been unmounted)

  • +
  • Drop audit triggers for those and delete all audit info for them

  • +
  • Set up audit triggers for new tables

  • +
+
+

If the metadata engine isn’t the same as the object engine, this does nothing.

+
+
Parameters
+
    +
  • engine – Metadata engine with information about images and their checkout state

  • +
  • object_engine – Object engine where the checked-out table and the audit triggers are located.

  • +
+
+
+
+ +
+
+splitgraph.core.common.resource_path(relative_path)
+
+ +
+
+splitgraph.core.common.set_head(repository: Repository, image: Optional[str])None
+

Sets the HEAD pointer of a given repository to a given image. Shouldn’t be used directly.

+
+ +
+
+splitgraph.core.common.set_tag(repository: Repository, image_hash: Optional[str], tag: str)None
+

Internal function – add a tag to an image.

+
+ +
+
+splitgraph.core.common.set_tags_batch(repository: Repository, hashes_tags: List[Tuple[str, str]])None
+
+ +
+
+splitgraph.core.common.slow_diff(repository: Repository, table_name: str, image_1: Optional[str], image_2: Optional[str], aggregate: bool)Union[Tuple[int, int, int], List[Tuple[bool, Tuple]]]
+

Materialize both tables and manually diff them

+
+ +
+
+

splitgraph.core.engine module

+

Routines for managing Splitgraph engines, including looking up repositories and managing objects.

+
+
+splitgraph.core.engine.get_current_repositories(engine: PostgresEngine)List[Tuple[Repository, Optional[Image]]]
+

Lists all repositories currently in the engine.

+
+
Parameters
+

engine – Engine

+
+
Returns
+

List of (Repository object, current HEAD image)

+
+
+
+ +
+
+splitgraph.core.engine.init_engine(skip_object_handling: bool = False)None
+

Initializes the engine by:

+
+
    +
  • performing any required engine-custom initialization

  • +
  • creating the metadata tables

  • +
+
+
+
Parameters
+

skip_object_handling – If True, skips installing routines related to +object handling and checkouts (like audit triggers and CStore management).

+
+
+
+ +
+
+splitgraph.core.engine.lookup_repository(name: str, include_local: bool = False)Repository
+

Queries the SG engines on the lookup path to locate one hosting the given repository.

+
+
Parameters
+
    +
  • name – Repository name

  • +
  • include_local – If True, also queries the local engine

  • +
+
+
Returns
+

Local or remote Repository object

+
+
+
+ +
+
+splitgraph.core.engine.repository_exists(repository: Repository)bool
+

Checks if a repository exists on the engine.

+
+
Parameters
+

repository – Repository object

+
+
+
+ +
+
+

splitgraph.core.fdw_checkout module

+
+
+

splitgraph.core.fragment_manager module

+

Routines related to storing tables as fragments.

+
+
+class splitgraph.core.fragment_manager.Digest(shorts: Tuple[int, ])
+

Bases: object

+

Homomorphic hashing similar to LtHash (but limited to being backed by 256-bit hashes). The main property is that +for any rows A, B, LtHash(A) + LtHash(B) = LtHash(A+B). This is done by construction: we simply hash individual +rows and then do bit-wise addition / subtraction of individual hashes to come up with the full table hash.

+

Hence, the content hash of any Splitgraph table fragment is the sum of hashes of its added rows minus the sum +of hashes of its deleted rows (including the old values of the rows that have been updated). This has a very +useful implication: the hash of a full Splitgraph table is equal to the sum of hashes of its individual fragments.

+

This property can be used to simplify deduplication.

+
+
+classmethod empty()splitgraph.core.fragment_manager.Digest
+

Return an empty Digest instance such that for any Digest D, D + empty == D - empty == D

+
+ +
+
+classmethod from_hex(hex_string: str)splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 64-characters (256-bit) hexadecimal string

+
+ +
+
+classmethod from_memoryview(memory: Union[bytes, memoryview])splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 256-bit memoryview/bytearray.

+
+ +
+
+hex()str
+

Convert the hash into a hexadecimal value.

+
+ +
+ +
+
+class splitgraph.core.fragment_manager.FragmentManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.metadata_manager.MetadataManager

+

A storage engine for Splitgraph tables. Each table can be stored as one or more immutable fragments that can +optionally overwrite each other. When a new table is created, it’s split up into multiple base fragments. When +a new version of the table is written, the audit log is inspected and one or more patch fragments are created, +to be based on the fragments the previous version of the table consisted of. Only the top fragments in this stack +are stored in the table metadata: to reconstruct the whole table, the links from the top fragments down to the +base fragments have to be followed.

+

In addition, the fragments engine also supports min-max indexing on fragments: this is used to only fetch fragments +that are required for a given query.

+
+
+calculate_content_hash(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None, chunk_id_col: Optional[str] = None, chunk_id: Optional[int] = None)Tuple[str, int]
+

Calculates the homomorphic hash of table contents.

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Name of the table

  • +
  • table_schema – Schema of the table

  • +
  • chunk_id_col – Column the table is partitioned on

  • +
  • chunk_id – Column value to get rows from

  • +
+
+
Returns
+

A 64-character (256-bit) hexadecimal string with the content hash of the table +and the number of rows in the hash.

+
+
+
+ +
+
+calculate_fragment_insertion_hash_stats(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None)Tuple[splitgraph.core.fragment_manager.Digest, int]
+

Calculate the homomorphic hash of just the rows that a given fragment inserts +:param schema: Schema the fragment is stored in. +:param table: Name of the table the fragment is stored in. +:return: A Digest object and the number of inserted rows

+
+ +
+
+create_base_fragment(source_schema: str, source_table: str, namespace: str, chunk_id_col: Optional[str] = None, chunk_id: Optional[int] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None)str
+
+ +
+
+delete_objects(objects: Union[Set[str], List[str]])None
+

Deletes objects from the Splitgraph cache

+
+
Parameters
+

objects – A sequence of objects to be deleted

+
+
+
+ +
+
+filter_fragments(object_ids: List[str], table: Table, quals: Any)List[str]
+

Performs fuzzy filtering on the given object IDs using the index and a set of qualifiers, discarding +objects that definitely do not match the qualifiers.

+
+
Parameters
+
    +
  • object_ids – List of object IDs to filter.

  • +
  • table – A Table object the objects belong to.

  • +
  • quals

    List of qualifiers in conjunctive normal form that will be matched against the index. +Objects that definitely don’t match these qualifiers will be discarded.

    +

    A list containing [[qual_1, qual_2], [qual_3, qual_4]] will be interpreted as +(qual_1 OR qual_2) AND (qual_3 OR qual_4).

    +

    Each qual is a tuple of (column_name, operator, value) where +operator can be one of >, >=, <, <=, =.

    +

    For unknown operators, it will be assumed that all fragments might match that clause.

    +

  • +
+
+
Returns
+

List of objects that might match the given qualifiers.

+
+
+
+ +
+
+generate_object_index(object_id: str, table_schema: List[splitgraph.core.types.TableColumn], changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None)Dict[str, Any]
+

Queries the max/min values of a given fragment for each column, used to speed up querying.

+
+
Parameters
+
    +
  • object_id – ID of an object

  • +
  • table_schema – Schema of the table the object belongs to.

  • +
  • changeset – Optional, if specified, the old row values are included in the index.

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
Returns
+

Dict containing the object index.

+
+
+
+ +
+
+get_min_max_pks(fragments: List[str], table_pks: List[Tuple[str, str]])List[Tuple[Tuple, Tuple]]
+

Get PK ranges for given fragments using the index (without reading the fragments).

+
+
Parameters
+
    +
  • fragments – List of object IDs (must be registered and with the same schema)

  • +
  • table_pks – List of tuples (column, type) that form the object PK.

  • +
+
+
Returns
+

List of (min, max) PK for every fragment where PK is a tuple. +If a fragment doesn’t exist or doesn’t have a corresponding index entry, +a SplitGraphError is raised.

+
+
+
+ +
+
+record_table_as_base(repository: Repository, table_name: str, image_hash: str, chunk_size: Optional[int] = 10000, source_schema: Optional[str] = None, source_table: Optional[str] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False)List[str]
+

Copies the full table verbatim into one or more new base fragments and registers them.

+
+
Parameters
+
    +
  • repository – Repository

  • +
  • table_name – Table name

  • +
  • image_hash – Hash of the new image

  • +
  • chunk_size – If specified, splits the table into multiple objects with a given number of rows

  • +
  • source_schema – Override the schema the source table is stored in

  • +
  • source_table – Override the name of the table the source is stored in

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Key to sort data inside each chunk by.

  • +
  • overwrite – Overwrite physical objects that already exist.

  • +
+
+
+
+ +
+
+record_table_as_patch(old_table: Table, schema: str, image_hash: str, new_schema_spec: List[splitgraph.core.types.TableColumn] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False)None
+

Flushes the pending changes from the audit table for a given table and records them, +registering the new objects.

+
+
Parameters
+
    +
  • old_table – Table object pointing to the current HEAD table

  • +
  • schema – Schema the table is checked out into.

  • +
  • image_hash – Image hash to store the table under

  • +
  • new_schema_spec – New schema of the table (use the old table’s schema by default).

  • +
  • split_changeset – See Repository.commit for reference

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
+
+ +
+ +
+
+splitgraph.core.fragment_manager.get_chunk_groups(chunks: List[Tuple[str, Any, Any]])List[List[Tuple[str, Any, Any]]]
+

Takes a list of chunks and their boundaries and combines them +into independent groups such that chunks from no two groups +overlap with each other (intervals are assumed to be closed, +e.g. chunk (1,2) overlaps with chunk (2,3)).

+

The original order of chunks is preserved within each group.

+

For example, 4 chunks A, B, C, D that don’t overlap each other +will be grouped into 4 groups [A], [B], [C], [D].

+

If A overlaps B, the result will be [A, B], [C], [D].

+

If in addition B overlaps C (but not A), the result will be [A, B, C], [D].

+

If in addition D overlaps any of A, B or C, the result will be [A, B, C, D] +(despite that D is located before A: it will be last since it was last in the +original list).

+
+
Parameters
+

chunks – List of (chunk_id, start, end)

+
+
Returns
+

List of lists of (chunk_id, start, end)

+
+
+
+ +
+
+

splitgraph.core.image module

+

Image representation and provenance

+
+
+class splitgraph.core.image.Image(image_hash: str, parent_id: Optional[str], created: datetime.datetime, comment: str, provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], repository: Repository)
+

Bases: tuple

+

Represents a Splitgraph image. Should’t be created directly, use Image-loading methods in the +splitgraph.core.repository.Repository class instead.

+
+
+checkout(force: bool = False, layered: bool = False)None
+

Checks the image out, changing the current HEAD pointer. Raises an error +if there are pending changes to its checkout.

+
+
Parameters
+
    +
  • force – Discards all pending changes to the schema.

  • +
  • layered – If True, uses layered querying to check out the image (doesn’t materialize tables +inside of it).

  • +
+
+
+
+ +
+
+property comment
+

Alias for field number 3

+
+ +
+
+property created
+

Alias for field number 2

+
+ +
+
+delete_tag(tag: str)None
+

Deletes a tag from an image.

+
+
Parameters
+

tag – Tag to delete.

+
+
+
+ +
+
+property engine
+
+ +
+
+get_log()List[splitgraph.core.image.Image]
+

Repeatedly gets the parent of a given image until it reaches the bottom.

+
+ +
+
+get_parent_children()Tuple[Optional[str], List[str]]
+

Gets the parent and a list of children of a given image.

+
+ +
+
+get_size()int
+

Get the physical size used by the image’s objects (including those that might be +shared with other images).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of image’s +objects have been downloaded.

+
+
Returns
+

Size of the image in bytes.

+
+
+
+ +
+
+get_table(table_name: str)splitgraph.core.table.Table
+

Returns a Table object representing a version of a given table. +Contains a list of objects that the table is linked to and the table’s schema.

+
+
Parameters
+

table_name – Name of the table

+
+
Returns
+

Table object

+
+
+
+ +
+
+get_tables()List[str]
+

Gets the names of all tables inside of an image.

+
+ +
+
+get_tags()
+

Lists all tags that this image has.

+
+ +
+
+property image_hash
+

Alias for field number 0

+
+ +
+
+property object_engine
+
+ +
+
+property parent_id
+

Alias for field number 1

+
+ +
+
+provenance(reverse=False, engine=None)List[Tuple[Repository, str]]
+

Inspects the image’s parent chain to come up with a set of repositories and their hashes +that it was created from.

+

If reverse is True, returns a list of images that were created _from_ this image. If +this image is on a remote repository, engine can be passed in to override the engine +used for the lookup of dependents.

+
+
Returns
+

List of (repository, image_hash)

+
+
+
+ +
+
+property provenance_data
+

Alias for field number 4

+
+ +
+
+query_schema(wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', commit: bool = True)Iterator[str]
+

Creates a temporary schema with tables in this image mounted as foreign tables that can be accessed via +read-only layered querying. On exit from the context manager, the schema is discarded.

+
+
Returns
+

The name of the schema the image is located in.

+
+
+
+ +
+
+property repository
+

Alias for field number 5

+
+ +
+
+set_provenance(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]])None
+

Sets the image’s provenance. Internal function called by the Splitfile interpreter, shouldn’t +be called directly as it changes the image after it’s been created.

+
+
Parameters
+

provenance_data – List of parsed Splitfile commands and their data.

+
+
+
+ +
+
+tag(tag: str)None
+

Tags a given image. All tags are unique inside of a repository. If a tag already exists, it’s removed +from the previous image and given to the new image.

+
+
Parameters
+

tag – Tag to set. ‘latest’ and ‘HEAD’ are reserved tags.

+
+
+
+ +
+
+to_splitfile(ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None)List[str]
+

Recreate the Splitfile that can be used to reconstruct this image.

+
+
Parameters
+
    +
  • ignore_irreproducible – If True, ignore commands from irreproducible Splitfile lines +(like MOUNT or custom commands) and instead emit a comment (this results in an invalid Splitfile).

  • +
  • source_replacement – A dictionary of repositories and image hashes/tags specifying how to replace the +dependencies of this Splitfile (table imports and FROM commands).

  • +
+
+
Returns
+

A list of Splitfile commands that can be fed back into the executor.

+
+
+
+ +
+ +
+
+splitgraph.core.image.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.image.reconstruct_splitfile(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None)List[str]
+

Recreate the Splitfile that can be used to reconstruct an image.

+
+ +
+
+

splitgraph.core.image_manager module

+
+
+class splitgraph.core.image_manager.ImageManager(repository: Repository)
+

Bases: object

+

Collects various image-related functions.

+
+
+add(parent_id: Optional[str], image: str, created: Optional[datetime.datetime] = None, comment: Optional[str] = None, provenance_data: Optional[List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]] = None)None
+

Registers a new image in the Splitgraph image tree.

+

Internal method used by actual image creation routines (committing, importing or pulling).

+
+
Parameters
+
    +
  • parent_id – Parent of the image

  • +
  • image – Image hash

  • +
  • created – Creation time (defaults to current timestamp)

  • +
  • comment – Comment (defaults to empty)

  • +
  • provenance_data – Provenance data that can be used to reconstruct the image.

  • +
+
+
+
+ +
+
+add_batch(images: List[splitgraph.core.image.Image])None
+

Like add, but registers multiple images at the same time. Used in push/pull +to avoid a roundtrip to the registry for each image +:param images: List of Image objects. Namespace and repository will be patched

+
+

with this repository.

+
+
+ +
+
+by_hash(image_hash: str)splitgraph.core.image.Image
+

Returns an image corresponding to a given (possibly shortened) image hash. If the image hash +is ambiguous, raises an error. If the image does not exist, raises an error or returns None.

+
+
Parameters
+

image_hash – Image hash (can be shortened).

+
+
Returns
+

Image

+
+
+
+ +
+
+by_tag(tag: str, raise_on_none: bool = True)Optional[splitgraph.core.image.Image]
+

Returns an image with a given tag

+
+
Parameters
+
    +
  • tag – Tag. ‘latest’ is a special case: it returns the most recent image in the repository.

  • +
  • raise_on_none – Whether to raise an error or return None if the tag doesn’t exist.

  • +
+
+
+
+ +
+
+delete(images: Sequence[str])None
+

Deletes a set of Splitgraph images from the repository. Note this doesn’t check whether +this will orphan some other images in the repository and can make the state of the repository +invalid.

+

Image deletions won’t be replicated on push/pull (those can only add new images).

+
+
Parameters
+

images – List of image IDs

+
+
+
+ +
+
+get_all_child_images(start_image: str)Set[str]
+

Get all children of start_image of any degree.

+
+ +
+
+get_all_parent_images(start_images: Set[str])Set[str]
+

Get all parents of the ‘start_images’ set of any degree.

+
+ +
+ +
+
+

splitgraph.core.metadata_manager module

+

Classes related to managing table/image/object metadata tables.

+
+
+class splitgraph.core.metadata_manager.MetadataManager(metadata_engine: PsycopgEngine)
+

Bases: object

+

A data access layer for the metadata tables in the splitgraph_meta schema that concerns itself +with image, table and object information.

+
+
+cleanup_metadata()List[str]
+

Go through the current metadata and delete all objects that aren’t required +by any table on the engine.

+
+
Returns
+

List of objects that have been deleted.

+
+
+
+ +
+
+delete_object_meta(object_ids: Sequence[str])
+

Delete metadata for multiple objects (external locations, indexes, hashes). +This doesn’t delete physical objects.

+
+
Parameters
+

object_ids – Object IDs to delete

+
+
+
+ +
+
+get_all_objects()List[str]
+

Gets all objects currently in the Splitgraph tree.

+
+
Returns
+

List of object IDs.

+
+
+
+ +
+
+get_external_object_locations(objects: List[str])List[Tuple[str, str, str]]
+

Gets external locations for objects.

+
+
Parameters
+

objects – List of object IDs stored externally.

+
+
Returns
+

List of (object_id, location, protocol).

+
+
+
+ +
+
+get_new_objects(object_ids: List[str])List[str]
+

Get object IDs from the passed list that don’t exist in the tree.

+
+
Parameters
+

object_ids – List of objects to check

+
+
Returns
+

List of unknown object IDs.

+
+
+
+ +
+
+get_object_meta(objects: List[str])Dict[str, splitgraph.core.metadata_manager.Object]
+

Get metadata for multiple Splitgraph objects from the tree

+
+
Parameters
+

objects – List of objects to get metadata for.

+
+
Returns
+

Dictionary of object_id -> Object

+
+
+
+ +
+
+get_objects_for_repository(repository: Repository, image_hash: Optional[str] = None)List[str]
+
+ +
+
+get_unused_objects(threshold: Optional[int] = None)List[Tuple[str, datetime.datetime]]
+

Get a list of all objects in the metadata that aren’t used by any table and can be +safely deleted.

+
+
Parameters
+

threshold – Only return objects that were created earlier than this (in minutes)

+
+
Returns
+

List of objects and their creation times.

+
+
+
+ +
+
+overwrite_table(repository: Repository, image_hash: str, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+
+ +
+
+register_object_locations(object_locations: List[Tuple[str, str, str]])None
+

Registers external locations (e.g. HTTP or S3) for Splitgraph objects. +Objects must already be registered in the object tree.

+
+
Parameters
+

object_locations – List of (object_id, location, protocol).

+
+
+
+ +
+
+register_objects(objects: List[splitgraph.core.metadata_manager.Object], namespace: Optional[str] = None)None
+

Registers multiple Splitgraph objects in the tree.

+
+
Parameters
+
    +
  • objects – List of Object objects.

  • +
  • namespace – If specified, overrides the original object namespace, required +in the case where the remote repository has a different namespace than the local one.

  • +
+
+
+
+ +
+
+register_tables(repository: Repository, table_meta: List[Tuple[str, str, List[splitgraph.core.types.TableColumn], List[str]]])None
+

Links tables in an image to physical objects that they are stored as. +Objects must already be registered in the object tree.

+
+
Parameters
+
    +
  • repository – Repository that the tables belong to.

  • +
  • table_meta – A list of (image_hash, table_name, table_schema, object_ids).

  • +
+
+
+
+ +
+ +
+
+class splitgraph.core.metadata_manager.Object(object_id: str, format: str, namespace: str, size: int, created: datetime.datetime, insertion_hash: str, deletion_hash: str, object_index: Dict[str, Any], rows_inserted: int, rows_deleted: int)
+

Bases: tuple

+

Represents a Splitgraph object that tables are composed of.

+
+
+property created
+

Alias for field number 4

+
+ +
+
+property deletion_hash
+

Alias for field number 6

+
+ +
+
+property format
+

Alias for field number 1

+
+ +
+
+property insertion_hash
+

Alias for field number 5

+
+ +
+
+property namespace
+

Alias for field number 2

+
+ +
+
+property object_id
+

Alias for field number 0

+
+ +
+
+property object_index
+

Alias for field number 7

+
+ +
+
+property rows_deleted
+

Alias for field number 9

+
+ +
+
+property rows_inserted
+

Alias for field number 8

+
+ +
+
+property size
+

Alias for field number 3

+
+ +
+ +
+
+

splitgraph.core.migration module

+
+
+splitgraph.core.migration.get_installed_version(engine: PsycopgEngine, schema_name: str, version_table: str = 'version')Optional[Tuple[str, datetime.datetime]]
+
+ +
+
+splitgraph.core.migration.get_version_tuples(filenames: List[str])List[Tuple[Optional[str], str]]
+
+ +
+
+splitgraph.core.migration.make_file_list(schema_name: str, migration_path: List[Optional[str]])
+

Construct a list of file names from history of versions and schema name

+
+ +
+
+splitgraph.core.migration.set_installed_version(engine: PsycopgEngine, schema_name: str, version: str, version_table: str = 'version')
+
+ +
+
+splitgraph.core.migration.source_files_to_apply(engine: PsycopgEngine, schema_name: str, schema_files: List[str], version_table: str = 'version', static: bool = False, target_version: Optional[str] = None)Tuple[List[str], str]
+

Get the ordered list of .sql files to apply to the database

+
+ +
+
+

splitgraph.core.object_manager module

+

Functions related to creating, deleting and keeping track of physical Splitgraph objects.

+
+
+class splitgraph.core.object_manager.ObjectManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.fragment_manager.FragmentManager

+

Brings the multiple manager classes together and manages the object cache (downloading and uploading +objects as required in order to fulfill certain queries)

+
+
+cleanup()List[str]
+

Deletes all objects in the object_tree not required by any current repository, including their dependencies and +their remote locations. Also deletes all objects not registered in the object_tree.

+
+ +
+
+download_objects(source: Optional[splitgraph.core.object_manager.ObjectManager], objects_to_fetch: List[str], object_locations: List[Tuple[str, str, str]])List[str]
+

Fetches the required objects from the remote and stores them locally. +Does nothing for objects that already exist.

+
+
Parameters
+
    +
  • source – Remote ObjectManager. If None, will only try to download objects from the external location.

  • +
  • objects_to_fetch – List of object IDs to download.

  • +
  • object_locations – List of custom object locations, encoded as tuples (object_id, object_url, protocol).

  • +
+
+
+
+ +
+
+ensure_objects(table: Optional[Table], objects: Optional[List[str]] = None, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]] = None, defer_release: bool = False, tracer: Optional[splitgraph.core.common.Tracer] = None, upstream_manager: Optional[ObjectManager] = None)Iterator[Union[List[str], Tuple[List[str], splitgraph.core.common.CallbackList]]]
+

Resolves the objects needed to materialize a given table and makes sure they are in the local +splitgraph_meta schema.

+

Whilst inside this manager, the objects are guaranteed to exist. On exit from it, the objects are marked as +unneeded and can be garbage collected.

+
+
Parameters
+
    +
  • table – Table to materialize

  • +
  • objects – List of objects to download: one of table or objects must be specified.

  • +
  • quals – Optional list of qualifiers to be passed to the fragment engine. Fragments that definitely do +not match these qualifiers will be dropped. See the docstring for filter_fragments for the format.

  • +
  • defer_release – If True, won’t release the objects on exit.

  • +
+
+
Returns
+

If defer_release is True: List of table fragments and a callback that the caller must call +when the objects are no longer needed. If defer_release is False: just the list of table fragments.

+
+
+
+ +
+
+get_cache_occupancy()int
+
+
Returns
+

Space occupied by objects cached from external locations, in bytes.

+
+
+
+ +
+
+get_downloaded_objects(limit_to: Optional[List[str]] = None)List[str]
+

Gets a list of objects currently in the Splitgraph cache (i.e. not only existing externally.)

+
+
Parameters
+

limit_to – If specified, only the objects in this list will be returned.

+
+
Returns
+

Set of object IDs.

+
+
+
+ +
+
+get_total_object_size()
+
+
Returns
+

Space occupied by all objects on the engine, in bytes.

+
+
+
+ +
+
+make_objects_external(objects: List[str], handler: str, handler_params: Dict[Any, Any])None
+

Uploads local objects to an external location and marks them as being cached locally (thus making it possible +to evict or swap them out).

+
+
Parameters
+
    +
  • objects – Object IDs to upload. Will do nothing for objects that already exist externally.

  • +
  • handler – Object handler

  • +
  • handler_params – Extra handler parameters

  • +
+
+
+
+ +
+
+run_eviction(keep_objects: List[str], required_space: Optional[int] = None)None
+

Delete enough objects with zero reference count (only those, since we guarantee that whilst refcount is >0, +the object stays alive) to free at least required_space in the cache.

+
+
Parameters
+
    +
  • keep_objects – List of objects (besides those with nonzero refcount) that can’t be deleted.

  • +
  • required_space – Space, in bytes, to free. If the routine can’t free at least this much space, +it shall raise an exception. If None, removes all eligible objects.

  • +
+
+
+
+ +
+
+upload_objects(target: splitgraph.core.object_manager.ObjectManager, objects_to_push: List[str], handler: str = 'DB', handler_params: Optional[Dict[Any, Any]] = None)Sequence[Tuple[str, Optional[str]]]
+

Uploads physical objects to the remote or some other external location.

+
+
Parameters
+
    +
  • target – Target ObjectManager

  • +
  • objects_to_push – List of object IDs to upload.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote, FILE +to store them in a directory that can be accessed from the client and HTTP to upload them to HTTP.

  • +
  • handler_params – For HTTP, a dictionary &lbrace;“username”: username, “password”, password&rbrace;. For FILE, +a dictionary &lbrace;“path”: path&rbrace; specifying the directory where the objects shall be saved.

  • +
+
+
Returns
+

A list of (object_id, url) that specifies all objects were uploaded (skipping objects that +already exist on the remote).

+
+
+
+ +
+ +
+
+

splitgraph.core.output module

+
+
+splitgraph.core.output.conn_string_to_dict(connection: Optional[str])Dict[str, Any]
+
+ +
+
+splitgraph.core.output.parse_date(string: str)datetime.date
+
+ +
+
+splitgraph.core.output.parse_dt(string: str)datetime.datetime
+
+ +
+
+splitgraph.core.output.parse_repo_tag_or_hash(value, default='latest')
+
+ +
+
+splitgraph.core.output.parse_time(string: str)time.struct_time
+
+ +
+
+splitgraph.core.output.pluralise(word: str, number: int)str
+

1 banana, 2 bananas

+
+ +
+
+splitgraph.core.output.pretty_size(size: Union[int, float])str
+

Converts a size in bytes to its string representation (e.g. 1024 -> 1KiB) +:param size: Size in bytes

+
+ +
+
+splitgraph.core.output.slugify(text: str, max_length: int = 50)str
+
+ +
+
+splitgraph.core.output.truncate_line(line: str, length: int = 80)str
+

Truncates a line to a given length, replacing the remainder with …

+
+ +
+
+splitgraph.core.output.truncate_list(items: List[Any], max_entries: int = 10)str
+

Print a list, possibly truncating it to the specified number of entries

+
+ +
+
+

splitgraph.core.registry module

+

Functions for communicating with the remote Splitgraph catalog

+
+
+splitgraph.core.registry.get_info_key(engine: PostgresEngine, key: str)Optional[str]
+

Gets a configuration key from the remote registry, used to notify the client of the registry’s capabilities.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to get

  • +
+
+
+
+ +
+
+splitgraph.core.registry.set_info_key(engine: PostgresEngine, key: str, value: Union[bool, str])None
+

Sets a configuration value on the remote registry.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to set

  • +
  • value – New value for the key

  • +
+
+
+
+ +
+
+splitgraph.core.registry.setup_registry_mode(engine: PostgresEngine)None
+

Set up access policies/RLS:

+
    +
  • Normal users aren’t allowed to create tables/schemata (can’t do checkouts inside of a registry or +upload SG objects directly to it)

  • +
  • Normal users can’t access the splitgraph_meta schema directly: they’re only supposed to be able to +talk to it via stored procedures in splitgraph_api. Those procedures are set up with SECURITY INVOKER +(run with those users’ credentials) and what they can access is further restricted by RLS:

    +
      +
    • images/tables/tags meta tables: can only create/update/delete records where the namespace = user ID

    • +
    • objects/object_location tables: same. An object (piece of data) becomes owned by the user that creates +it and still remains so even if someone else’s image starts using it. Hence, the original owner can delete +or change it (since they control the external location they’ve uploaded it to anyway).

    • +
    +
  • +
+
+ +
+
+

splitgraph.core.repository module

+

Public API for managing images in a Splitgraph repository.

+
+
+class splitgraph.core.repository.Repository(namespace: str, repository: str, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_manager: Optional[splitgraph.core.object_manager.ObjectManager] = None)
+

Bases: object

+

Splitgraph repository API

+
+
+commit(image_hash: Optional[str] = None, comment: Optional[str] = None, snap_only: bool = False, chunk_size: Optional[int] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]]] = None, in_fragment_order: Optional[Dict[str, List[str]]] = None, overwrite: bool = False)splitgraph.core.image.Image
+

Commits all pending changes to a given repository, creating a new image.

+
+
Parameters
+
    +
  • image_hash – Hash of the commit. Chosen by random if unspecified.

  • +
  • comment – Optional comment to add to the commit.

  • +
  • snap_only – If True, will store the table as a full snapshot instead of delta compression

  • +
  • chunk_size – For tables that are stored as snapshots (new tables and where snap_only has been passed, +the table will be split into fragments of this many rows.

  • +
  • split_changeset – If True, splits the changeset into multiple fragments based on +the PK regions spanned by the current table fragments. For example, if the original table +consists of 2 fragments, first spanning rows 1-10000, second spanning rows 10001-20000 and the +change alters rows 1, 10001 and inserts a row with PK 20001, this will record the change as +3 fragments: one inheriting from the first original fragment, one inheriting from the second +and a brand new fragment. This increases the number of fragments in total but means that fewer rows +will need to be scanned to satisfy a query. +If False, the changeset will be stored as a single fragment inheriting from the last fragment in the +table.

  • +
  • extra_indexes – Dictionary of &lbrace;table: index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Dictionary of &lbrace;table: list of columns&rbrace;. If specified, will

  • +
+
+
+

sort the data inside each chunk by this/these key(s) for each table. +:param overwrite: If an object already exists, will force recreate it.

+
+
Returns
+

The newly created Image object.

+
+
+
+ +
+
+commit_engines()None
+

Commit the underlying transactions on both engines that the repository uses.

+
+ +
+
+delete(unregister: bool = True, uncheckout: bool = True)None
+

Discards all changes to a given repository and optionally all of its history, +as well as deleting the Postgres schema that it might be checked out into. +Doesn’t delete any cached physical objects.

+

After performing this operation, this object becomes invalid and must be discarded, +unless init() is called again.

+
+
Parameters
+
    +
  • unregister – Whether to purge repository history/metadata

  • +
  • uncheckout – Whether to delete the actual checked out repo. This has no effect +if the repository is backed by a registry (rather than a local engine).

  • +
+
+
+
+ +
+
+diff(table_name: str, image_1: Union[splitgraph.core.image.Image, str], image_2: Optional[Union[splitgraph.core.image.Image, str]], aggregate: bool = False)Optional[Union[bool, Tuple[int, int, int], List[Tuple[bool, Tuple]]]]
+

Compares the state of a table in different images by materializing both tables into a temporary space +and comparing them row-to-row.

+
+
Parameters
+
    +
  • table_name – Name of the table.

  • +
  • image_1 – First image hash / object. If None, uses the state of the current staging area.

  • +
  • image_2 – Second image hash / object. If None, uses the state of the current staging area.

  • +
  • aggregate – If True, returns a tuple of integers denoting added, removed and updated rows between +the two images.

  • +
+
+
Returns
+

If the table doesn’t exist in one of the images, returns True if it was added and False if it was +removed. If aggregate is True, returns the aggregation of changes as specified before. +Otherwise, returns a list of changes where each change is a tuple of +(True for added, False for removed, row contents).

+
+
+
+ +
+
+dump(stream: _io.TextIOWrapper, exclude_object_contents: bool = False)None
+

Creates an SQL dump with the metadata required for the repository and all of its objects.

+
+
Parameters
+
    +
  • stream – Stream to dump the data into.

  • +
  • exclude_object_contents – Only dump the metadata but not the actual object contents.

  • +
+
+
+
+ +
+
+classmethod from_schema(schema: str)splitgraph.core.repository.Repository
+

Convert a Postgres schema name of the format namespace/repository to a Splitgraph repository object.

+
+ +
+
+classmethod from_template(template: splitgraph.core.repository.Repository, namespace: Optional[str] = None, repository: Optional[str] = None, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None)splitgraph.core.repository.Repository
+

Create a Repository from an existing one replacing some of its attributes.

+
+ +
+
+get_all_hashes_tags()List[Tuple[Optional[str], str]]
+

Gets all tagged images and their hashes in a given repository.

+
+
Returns
+

List of (image_hash, tag)

+
+
+
+ +
+
+get_local_size()int
+

Get the actual size used by this repository’s downloaded objects.

+

This might still be double-counted if the repository shares objects +with other repositores.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+get_size()int
+

Get the physical size used by the repository’s data, counting objects that are used +by multiple images only once. This is calculated from the metadata, the on-disk +footprint might be smaller if not all of repository’s objects have been downloaded.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+has_pending_changes()bool
+

Detects if the repository has any pending changes (schema changes, table additions/deletions, content changes).

+
+ +
+
+property head
+

Return the HEAD image for the repository or None if the repository isn’t checked out.

+
+ +
+
+property head_strict
+

Return the HEAD image for the repository. Raise an exception if the repository +isn’t checked out.

+
+ +
+
+images
+

A splitgraph.core.image.ImageManager instance that performs operations +(checkout, delete etc) on this repository’s images.

+
+ +
+
+import_tables(tables: Sequence[str], source_repository: splitgraph.core.repository.Repository, source_tables: Sequence[str], image_hash: Optional[str] = None, foreign_tables: bool = False, do_checkout: bool = True, target_hash: Optional[str] = None, table_queries: Optional[Sequence[bool]] = None, parent_hash: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', skip_validation: bool = False)str
+

Creates a new commit in target_repository with one or more tables linked to already-existing tables. +After this operation, the HEAD of the target repository moves to the new commit and the new tables are +materialized.

+
+
Parameters
+
    +
  • tables – If not empty, must be the list of the same length as source_tables specifying names to store +them under in the target repository.

  • +
  • source_repository – Repository to import tables from.

  • +
  • source_tables – List of tables to import. If empty, imports all tables.

  • +
  • image_hash – Image hash in the source repository to import tables from. +Uses the current source HEAD by default.

  • +
  • foreign_tables – If True, copies all source tables to create a series of new snapshots instead of +treating them as Splitgraph-versioned tables. This is useful for adding brand new tables +(for example, from an FDW-mounted table).

  • +
  • do_checkout – If False, doesn’t check out the newly created image.

  • +
  • target_hash – Hash of the new image that tables is recorded under. If None, gets chosen at random.

  • +
  • table_queries – If not [], it’s treated as a Boolean mask showing which entries in the tables list are +instead SELECT SQL queries that form the target table. The queries have to be non-schema qualified and work +only against tables in the source repository. Each target table created is the result of the respective SQL +query. This is committed as a new snapshot.

  • +
  • parent_hash – If not None, must be the hash of the image to base the new image on. +Existing tables from the parent image are preserved in the new image. If None, the current repository +HEAD is used.

  • +
  • wrapper – Override the default class for the layered querying foreign data wrapper.

  • +
  • skip_validation – Don’t validate SQL used in import statements (used by the Splitfile executor that pre-formats the SQL).

  • +
+
+
Returns
+

Hash that the new image was stored under.

+
+
+
+ +
+
+init()None
+

Initializes an empty repo with an initial commit (hash 0000…)

+
+ +
+
+materialized_table(table_name: str, image_hash: Optional[str])Iterator[Tuple[str, str]]
+

A context manager that returns a pointer to a read-only materialized table in a given image. +The table is deleted on exit from the context manager.

+
+
Parameters
+
    +
  • table_name – Name of the table

  • +
  • image_hash – Image hash to materialize

  • +
+
+
Returns
+

(schema, table_name) where the materialized table is located.

+
+
+
+ +
+
+objects
+

A splitgraph.core.object_manager.ObjectManager instance that performs operations on +the objects on this repository’s engine (not just objects belonging to this repository).

+
+ +
+
+pull(download_all: Optional[bool] = False, overwrite_objects: bool = False, overwrite_tags: bool = False, single_image: Optional[str] = None)None
+

Synchronizes the state of the local Splitgraph repository with its upstream, optionally downloading all new +objects created on the remote.

+
+
Parameters
+
    +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download +required objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – Limit the download to a single image hash/tag.

  • +
+
+
+
+ +
+
+push(remote_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, reupload_objects: bool = False, overwrite_tags: bool = False, handler: str = 'DB', handler_options: Optional[Dict[str, Any]] = None, single_image: Optional[str] = None)splitgraph.core.repository.Repository
+

Inverse of pull: Pushes all local changes to the remote and uploads new objects.

+
+
Parameters
+
    +
  • remote_repository – Remote repository to push changes to. If not specified, the current +upstream is used.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote or S3 +to store them in an S3 bucket.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the remote repository for existing objects.

  • +
  • reupload_objects – If True, will reupload objects for which metadata is uploaded.

  • +
  • overwrite_tags – If True, will overwrite existing tags on the remote repository.

  • +
  • handler_options – Extra options to pass to the handler. For example, see +splitgraph.hooks.s3.S3ExternalObjectHandler.

  • +
  • single_image – Limit the upload to a single image hash/tag.

  • +
+
+
+
+ +
+
+rollback_engines()None
+

Rollback the underlying transactions on both engines that the repository uses.

+
+ +
+
+run_sql(sql: Union[psycopg2.sql.Composed, str], arguments: Optional[Any] = None, return_shape: splitgraph.engine.ResultShape = <ResultShape.MANY_MANY: 4>)Any
+

Execute an arbitrary SQL statement inside of this repository’s checked out schema.

+
+ +
+
+set_tags(tags: Dict[str, Optional[str]])None
+

Sets tags for multiple images.

+
+
Parameters
+

tags – List of (image_hash, tag)

+
+
+
+ +
+
+to_schema()str
+

Returns the engine schema that this repository gets checked out into.

+
+ +
+
+uncheckout(force: bool = False)None
+

Deletes the schema that the repository is checked out into

+
+
Parameters
+

force – Discards all pending changes to the schema.

+
+
+
+ +
+
+property upstream
+

The remote upstream repository that this local repository tracks.

+
+ +
+ +
+
+splitgraph.core.repository.clone(remote_repository: Union[splitgraph.core.repository.Repository, str], local_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, overwrite_tags: bool = False, download_all: Optional[bool] = False, single_image: Optional[str] = None)splitgraph.core.repository.Repository
+

Clones a remote Splitgraph repository or synchronizes remote changes with the local ones.

+

If the target repository has no set upstream engine, the source repository becomes its upstream.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object to clone or the repository’s name. If a name is passed, +the repository will be looked up on the current lookup path in order to find the engine the repository +belongs to.

  • +
  • local_repository – Local repository to clone into. If None, uses the same name as the remote.

  • +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download required +objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – If set, only get a single image with this hash/tag from the source.

  • +
+
+
Returns
+

A locally cloned Repository object.

+
+
+
+ +
+
+splitgraph.core.repository.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.repository.import_table_from_remote(remote_repository: splitgraph.core.repository.Repository, remote_tables: List[str], remote_image_hash: str, target_repository: splitgraph.core.repository.Repository, target_tables: List[Any], target_hash: Optional[str] = None)None
+

Shorthand for importing one or more tables from a yet-uncloned remote. Here, the remote image hash is required, +as otherwise we aren’t necessarily able to determine what the remote head is.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object

  • +
  • remote_tables – List of remote tables to import

  • +
  • remote_image_hash – Image hash to import the tables from

  • +
  • target_repository – Target repository to import the tables to

  • +
  • target_tables – Target table aliases

  • +
  • target_hash – Hash of the image that’s created with the import. Default random.

  • +
+
+
+
+ +
+
+splitgraph.core.repository.table_exists_at(repository: splitgraph.core.repository.Repository, table_name: str, image: Optional[splitgraph.core.image.Image] = None)bool
+

Determines whether a given table exists in a Splitgraph image without checking it out. If image_hash is None, +determines whether the table exists in the current staging area.

+
+ +
+
+

splitgraph.core.server module

+

Routines that are run inside of the engine, +here so that they can get type- and syntax-checked.

+

When inside of an LQFDW shim, these are called directly by the Splitgraph core code +to avoid a redundant connection to the engine.

+
+
+splitgraph.core.server.delete_object_files(object_id: str)
+
+ +
+
+splitgraph.core.server.download_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.get_object_schema(object_id: str)str
+
+ +
+
+splitgraph.core.server.get_object_size(object_id: str)int
+
+ +
+
+splitgraph.core.server.list_objects()List[str]
+
+ +
+
+splitgraph.core.server.object_exists(object_id: str)bool
+
+ +
+
+splitgraph.core.server.rename_object_files(old_object_id: str, new_object_id: str)
+
+ +
+
+splitgraph.core.server.set_object_schema(object_id: str, schema: str)
+
+ +
+
+splitgraph.core.server.upload_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.verify(url: str)
+
+ +
+
+

splitgraph.core.table module

+

Table metadata-related classes.

+
+
+class splitgraph.core.table.QueryPlan(table: splitgraph.core.table.Table, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str])
+

Bases: object

+

Represents the initial query plan (fragments to query) for given columns and +qualifiers.

+
+ +
+
+class splitgraph.core.table.Table(repository: Repository, image: Image, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+

Bases: object

+

Represents a Splitgraph table in a given image. Shouldn’t be created directly, use Table-loading +methods in the splitgraph.core.image.Image class instead.

+
+
+get_length()int
+

Get the number of rows in this table.

+

This might be smaller than the total number of rows in all objects belonging to this +table as some objects might overwrite each other.

+
+
Returns
+

Number of rows in table

+
+
+
+ +
+
+get_query_plan(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str], use_cache: bool = True)splitgraph.core.table.QueryPlan
+

Start planning a query (preliminary steps before object downloading, +like qualifier filtering).

+
+
Parameters
+
    +
  • quals – Qualifiers in CNF form

  • +
  • columns – List of columns

  • +
  • use_cache – If True, will fetch the plan from the cache for the same qualifiers and columns.

  • +
+
+
Returns
+

QueryPlan

+
+
+
+ +
+
+get_size()int
+

Get the physical size used by the table’s objects (including those shared with other tables).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of table’s +objects have been downloaded.

+
+
Returns
+

Size of the table in bytes.

+
+
+
+ +
+
+materialize(destination: str, destination_schema: Optional[str] = None, lq_server: Optional[str] = None, temporary: bool = False)None
+

Materializes a Splitgraph table in the target schema as a normal Postgres table, potentially downloading all +required objects and using them to reconstruct the table.

+
+
Parameters
+
    +
  • destination – Name of the destination table.

  • +
  • destination_schema – Name of the destination schema.

  • +
  • lq_server – If set, sets up a layered querying FDW for the table instead using this foreign server.

  • +
+
+
+
+ +
+
+query(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])
+

Run a read-only query against this table without materializing it.

+

This is a wrapper around query_lazy() that force evaluates the results which +might mean more fragments being materialized that aren’t needed.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

List of dictionaries of results

+
+
+
+ +
+
+query_indirect(columns: List[str], quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]])Tuple[Iterator[bytes], Callable, splitgraph.core.table.QueryPlan]
+

Run a read-only query against this table without materializing it. Instead of +actual results, this returns a generator of SQL queries that the caller can use +to get the results as well as a callback that the caller has to run after they’re +done consuming the results.

+

In particular, the query generator will prefer returning direct queries to +Splitgraph objects and only when those are exhausted will it start materializing +delta-compressed fragments.

+

This is an advanced method: you probably want to call table.query().

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of queries (bytes), a callback and a query plan object (containing stats +that are fully populated after the callback has been called to end the query).

+
+
+
+ +
+
+query_lazy(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])Iterator[Iterator[Dict[str, Any]]]
+

Run a read-only query against this table without materializing it.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of dictionaries of results.

+
+
+
+ +
+
+reindex(extra_indexes: Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]], raise_on_patch_objects=True)List[str]
+

Run extra indexes on all objects in this table and update their metadata. +This only works on objects that don’t have any deletions or upserts (have a deletion hash of 000000…).

+
+
Parameters
+
    +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • raise_on_patch_objects – If True, will raise an exception if any objects in the table +overwrite any other objects. If False, will log a warning but will reindex all non-patch objects.

  • +
+
+
+

:returns List of objects that were reindexed.

+
+ +
+ +
+
+splitgraph.core.table.merge_index_data(current_index: Dict[str, Any], new_index: Dict[str, Any])
+
+ +
+
+

splitgraph.core.types module

+
+
+class splitgraph.core.types.Comparable
+

Bases: object

+
+ +
+
+class splitgraph.core.types.TableColumn(ordinal, name, pg_type, is_pk, comment)
+

Bases: tuple

+
+
+property comment
+

Alias for field number 4

+
+ +
+
+property is_pk
+

Alias for field number 3

+
+ +
+
+property name
+

Alias for field number 1

+
+ +
+
+property ordinal
+

Alias for field number 0

+
+ +
+
+property pg_type
+

Alias for field number 2

+
+ +
+ +
+
+splitgraph.core.types.dict_to_tableschema(tables: Dict[str, Dict[str, Any]])Dict[str, List[splitgraph.core.types.TableColumn]]
+
+ +
+
+splitgraph.core.types.tableschema_to_dict(tables: Dict[str, List[splitgraph.core.types.TableColumn]])Dict[str, Dict[str, str]]
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.core.sql.mdx b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.core.sql.mdx new file mode 100644 index 00000000..c07302b7 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.core.sql.mdx @@ -0,0 +1,118 @@ + + + +export const meta = { + title: "splitgraph.core.sql package", + id: "splitgraph.core.sql package" +}; + +
+

Module contents

+

Routines for managing SQL statements

+
+
+splitgraph.core.sql.insert(table: str, columns: Sequence[str], schema: str = 'splitgraph_meta')psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to insert as a list of strings.

  • +
  • schema – Schema that contains the table

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query (parameterized)

+
+
+
+ +
+
+splitgraph.core.sql.prepare_splitfile_sql(sql: str, image_mapper: Callable)Tuple[str, str]
+

Transform an SQL query to prepare for it to be used in a Splitfile SQL command and validate it. +The rules are:

+
+
    +
  • Only basic DDL (CREATE/ALTER/DROP table) and DML (SELECT/INSERT/UPDATE/DELETE) are permitted.

  • +
  • All tables must be either non-schema qualified (the statement is run with search_path

  • +
+

set to the single schema that a Splitgraph image is checked out into) or have schemata of +format namespace/repository:hash_or_tag. In the second case, the schema is rewritten to point +at a temporary mount of the Splitgraph image.

+
+
+
Parameters
+
    +
  • sql – SQL query

  • +
  • image_mapper – Takes in an image and gives back the schema it should be rewritten to +(for the purposes of execution) and the canonical form of the image.

  • +
+
+
Returns
+

Transformed form of the SQL with substituted schema shims for Splitfile execution +and the canonical form (with e.g. tags resolved into at-the-time full image hashes)

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+
+splitgraph.core.sql.recover_original_schema_name(sql: str, schema_name: str)str
+

Postgres truncates identifiers to 63 characters at parse time and, as pglast +uses bits of PG to parse queries, image names like noaa/climate:64_chars_of_hash +get truncated which can cause ambiguities and issues in provenance. We can’t +get pglast to give us back the full identifier, but we can try and figure out +what it used to be and patch the AST to have it again.

+
+ +
+
+splitgraph.core.sql.select(table: str, columns: str = '*', where: str = '', schema: str = 'splitgraph_meta', table_args: Optional[str] = None)psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to select as a string. WARN: concatenated directly without any formatting.

  • +
  • where – If specified, added to the query with a “WHERE” keyword. WARN also concatenated directly.

  • +
  • schema – Defaults to SPLITGRAPH_META_SCHEMA.

  • +
  • table_args – If specified, appends to the FROM clause after the table specification, +for example, SELECT * FROM “splitgraph_api”.”get_images” (%s, %s) …

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query.

+
+
+
+ +
+
+splitgraph.core.sql.validate_import_sql(sql: str)str
+

Check an SQL query to see if it can be safely used in an IMPORT statement +(e.g. FROM noaa/climate:latest IMPORT &lbrace;SELECT * FROM rainfall WHERE state = ‘AZ’&rbrace; AS rainfall. +In this case, only a single SELECT statement is supported.

+
+
Parameters
+

sql – SQL query

+
+
Returns
+

Canonical (formatted) form of the SQL statement

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.engine.mdx b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.engine.mdx new file mode 100644 index 00000000..395cb80c --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.engine.mdx @@ -0,0 +1,565 @@ + + + +export const meta = { + title: "splitgraph.engine package", + id: "splitgraph.engine package" +}; + +
+

Module contents

+

Defines the interface for a Splitgraph engine (a backing database), including running basic SQL commands, +tracking tables for changes and uploading/downloading tables to other remote engines.

+

By default, Splitgraph is backed by Postgres: see splitgraph.engine.postgres for an example of how to +implement a different engine.

+
+
+class splitgraph.engine.ChangeEngine
+

Bases: splitgraph.engine.SQLEngine, abc.ABC

+

An SQL engine that can perform change tracking on a set of tables.

+
+
+discard_pending_changes(schema, table=None)
+

Discard recorded pending changes for a tracked table or the whole schema

+
+ +
+
+get_change_key(schema: str, table: str)List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_changed_tables(schema)
+

List tracked tables that have pending changes

+
+
Parameters
+

schema – Schema to check for changes

+
+
Returns
+

List of tables with changed contents

+
+
+
+ +
+
+get_pending_changes(schema, table, aggregate=False)
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: tuple with numbers of (added_rows, removed_rows, updated_rows). +If aggregate is False: A changeset. The changeset is a list of +(pk, action (0 for Insert, 1 for Delete, 2 for Update), action_data) +where action_data is None for Delete and &lbrace;‘c’: [column_names], ‘v’: [column_values]&rbrace; that +have been inserted/updated otherwise.

+
+
+
+ +
+
+get_tracked_tables()
+
+
Returns
+

A list of (table_schema, table_name) that the engine currently tracks for changes

+
+
+
+ +
+
+has_pending_changes(schema)
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables)
+

Start engine-specific change tracking on a list of tables.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+
+untrack_tables(tables)
+

Stop engine-specific change tracking on a list of tables and delete any pending changes.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+ +
+
+class splitgraph.engine.ObjectEngine
+

Bases: object

+

Routines for storing/applying objects as well as sharing them with other engines.

+
+
+apply_fragments(objects, target_schema, target_table, extra_quals=None, extra_qual_args=None, schema_spec=None, progress_every: Optional[int] = None)
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids)
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects, remote_engine)
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id, stream, schema)
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+get_object_schema(object_id)
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id)
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+store_fragment(inserted, deleted, schema, table, source_schema, source_table, source_schema_spec)
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args: Optional[Sequence[Any]], overwrite: bool)
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+upload_objects(objects, remote_engine)
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.ResultShape(value)
+

Bases: enum.Enum

+

Shape that the result of a query will be coerced to

+
+
+MANY_MANY = 4
+
+ +
+
+MANY_ONE = 3
+
+ +
+
+NONE = 0
+
+ +
+
+ONE_MANY = 2
+
+ +
+
+ONE_ONE = 1
+
+ +
+ +
+
+class splitgraph.engine.SQLEngine
+

Bases: abc.ABC

+

Abstraction for a Splitgraph SQL backend. Requires any overriding classes to implement run_sql as well as +a few other functions. Together with the information_schema (part of the SQL standard), this class uses those +functions to implement some basic database management methods like listing, deleting, creating, dumping +and loading tables.

+
+
+close()
+

Commit and close the engine’s backing connection

+
+ +
+
+commit()
+

Commit the engine’s backing connection

+
+ +
+
+copy_table(source_schema: str, source_table: str, target_schema: str, target_table: str, with_pk_constraints: bool = True)None
+

Copy a table in the same engine, optionally applying primary key constraints as well.

+
+ +
+
+create_schema(schema: str)None
+

Create a schema if it doesn’t exist

+
+ +
+
+create_table(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False)None
+

Creates a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
+
+ +
+
+delete_schema(schema: str)None
+

Delete a schema if it exists, including all the tables in it.

+
+ +
+
+delete_table(schema: str, table: str)None
+

Drop a table from a schema if it exists

+
+ +
+
+static dump_table_creation(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False)Tuple[psycopg2.sql.Composed, Tuple]
+

Dumps the DDL for a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
Returns
+

An SQL statement that reconstructs the table schema + args to be mogrified into it.

+
+
+
+ +
+
+dump_table_sql(schema, table_name, stream, columns='*', where='', where_args=None, target_schema=None, target_table=None)
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_all_tables(schema: str)List[str]
+

Get all tables in a given schema.

+
+ +
+
+get_full_table_schema(schema: str, table_name: str)List[splitgraph.core.types.TableColumn]
+

Generates a list of (column ordinal, name, data type, is_pk, column comment), +used to detect schema changes like columns being dropped/added/renamed or type changes.

+

NB this doesn’t work for temporary tables (pg_temp) and returns an empty schema.

+
+ +
+
+get_primary_keys(schema, table)
+

Get a list of (column_name, column_type) denoting the primary keys of a given table.

+
+ +
+
+get_table_type(schema: str, table: str)Optional[str]
+

Get the type of the table (BASE or FOREIGN)

+
+ +
+
+initialize()
+

Does any required initialization of the engine

+
+ +
+
+lock_table(schema, table)
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback()
+

Rollback the engine’s backing connection

+
+ +
+
+run_sql(statement, arguments=None, return_shape=<ResultShape.MANY_MANY: 4>, named=False)
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement, arguments, schema=None)
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+run_sql_in(schema: str, sql: Union[psycopg2.sql.Composed, str], arguments: None = None, return_shape: splitgraph.engine.ResultShape = <ResultShape.MANY_MANY: 4>)Any
+

Executes a non-schema-qualified query against a specific schema.

+
+
Parameters
+
    +
  • schema – Schema to run the query in

  • +
  • sql – Query

  • +
  • arguments – Query arguments

  • +
  • return_shape – ReturnShape to coerce the result into.

  • +
+
+
+
+ +
+
+savepoint(name: str)Iterator[None]
+

At the beginning of this context manager, a savepoint is initialized and any database +error that occurs in run_sql results in a rollback to this savepoint rather than the +rollback of the whole transaction. At exit, the savepoint is released.

+
+ +
+
+schema_exists(schema: str)bool
+

Check if a schema exists on the engine.

+
+
Parameters
+

schema – Schema name

+
+
+
+ +
+
+table_exists(schema: str, table_name: str)bool
+

Check if a table exists on the engine.

+
+
Parameters
+
    +
  • schema – Schema name

  • +
  • table_name – Table name

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.SavepointStack
+

Bases: _thread._local

+
+ +
+
+splitgraph.engine.get_engine(name: Optional[str] = None, use_socket: bool = False, use_fdw_params: bool = False, autocommit: bool = False)PostgresEngine
+

Get the current global engine or a named remote engine

+
+
Parameters
+
    +
  • name – Name of the remote engine as specified in the config. If None, the current global engine +is returned.

  • +
  • use_socket – Use a local UNIX socket instead of PG_HOST, PG_PORT for LOCAL engine connections.

  • +
  • use_fdw_params – Use the _FDW connection parameters (SG_ENGINE_FDW_HOST/PORT). By default, +will infer from the global splitgraph.config.IN_FDW flag.

  • +
  • autocommit – If True, the engine will not open SQL transactions implicitly.

  • +
+
+
+
+ +
+
+splitgraph.engine.set_engine(engine: PostgresEngine)None
+

Switch the global engine to a different one.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.switch_engine(engine: PostgresEngine)Iterator[None]
+

Switch the global engine to a different one. The engine will +get switched back on exit from the context manager.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.validate_type(t: str)str
+
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.engine.postgres.mdx b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.engine.postgres.mdx new file mode 100644 index 00000000..53096b26 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.engine.postgres.mdx @@ -0,0 +1,450 @@ + + + +export const meta = { + title: "splitgraph.engine.postgres package", + id: "splitgraph.engine.postgres package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.engine.postgres.engine module

+

Default Splitgraph engine: uses PostgreSQL to store metadata and actual objects and an audit stored procedure +to track changes, as well as the Postgres FDW interface to upload/download objects to/from other Postgres engines.

+
+
+class splitgraph.engine.postgres.engine.AuditTriggerChangeEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.PsycopgEngine, splitgraph.engine.ChangeEngine

+

Change tracking based on an audit trigger stored procedure

+
+
+discard_pending_changes(schema: str, table: Optional[str] = None)None
+

Discard recorded pending changes for a tracked schema / table

+
+ +
+
+get_changed_tables(schema: str)List[str]
+

Get list of tables that have changed content

+
+ +
+
+get_pending_changes(schema: str, table: str, aggregate: bool = False)Union[List[Tuple[int, int]], List[Tuple[Tuple[str, ], bool, Dict[str, Any], Dict[str, Any]]]]
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: List of tuples of (change_type, number of rows). +If aggregate is False: List of (primary_key, change_type, change_data)

+
+
+
+ +
+
+get_tracked_tables()List[Tuple[str, str]]
+

Return a list of tables that the audit trigger is working on.

+
+ +
+
+has_pending_changes(schema: str)bool
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables: List[Tuple[str, str]])None
+

Install the audit trigger on the required tables

+
+ +
+
+untrack_tables(tables: List[Tuple[str, str]])None
+

Remove triggers from tables and delete their pending changes

+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PostgresEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.AuditTriggerChangeEngine, splitgraph.engine.ObjectEngine

+

An implementation of the Postgres engine for Splitgraph

+
+
+apply_fragments(objects: List[Tuple[str, str]], target_schema: str, target_table: str, extra_quals: Optional[psycopg2.sql.Composed] = None, extra_qual_args: Optional[Tuple[str]] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, progress_every: Optional[int] = None)None
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids: List[str])None
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine)List[str]
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id: str, stream: _io.TextIOWrapper, schema: str)None
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+dump_object_creation(object_id: str, schema: str, table: Optional[str] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, if_not_exists: bool = False)bytes
+

Generate the SQL that remounts a foreign table pointing to a Splitgraph object.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • schema – Schema to create the table in

  • +
  • table – Name of the table to mount

  • +
  • schema_spec – Schema of the table

  • +
  • if_not_exists – Add IF NOT EXISTS to the DDL

  • +
+
+
Returns
+

SQL in bytes format.

+
+
+
+ +
+
+get_change_key(schema: str, table: str)List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_object_schema(object_id: str)List[splitgraph.core.types.TableColumn]
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id: str)int
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+mount_object(object_id: str, table: None = None, schema: str = 'splitgraph_meta', schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None)None
+

Mount an object from local storage as a foreign table.

+
+
Parameters
+
    +
  • object_id – ID of the object

  • +
  • table – Table to mount the object into

  • +
  • schema – Schema to mount the object into

  • +
  • schema_spec – Schema of the object.

  • +
+
+
+
+ +
+
+rename_object(old_object_id: str, new_object_id: str)
+
+ +
+
+store_fragment(inserted: Any, deleted: Any, schema: str, table: str, source_schema: str, source_table: str, source_schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None)None
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args=None, overwrite=False)None
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+sync_object_mounts()None
+

Scan through local object storage and synchronize it with the foreign tables in +splitgraph_meta (unmounting non-existing objects and mounting existing ones).

+
+ +
+
+unmount_objects(object_ids: List[str])None
+

Unmount objects from splitgraph_meta (this doesn’t delete the physical files.

+
+ +
+
+upload_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine)None
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PsycopgEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.SQLEngine

+

Postgres SQL engine backed by a Psycopg connection.

+
+
+close()None
+

Commit and close the engine’s backing connection

+
+ +
+
+close_others()None
+

Close and release all other connections to the connection pool.

+
+ +
+
+commit()None
+

Commit the engine’s backing connection

+
+ +
+
+property connection
+

Engine-internal Psycopg connection.

+
+ +
+
+copy_cursor()
+

Return a cursor that can be used for copy_expert operations

+
+ +
+
+delete_database(database: str)None
+

Helper function to drop a database using the admin connection

+
+
Parameters
+

database – Database name to drop

+
+
+
+ +
+
+dump_table_sql(schema: str, table_name: str, stream: _io.TextIOWrapper, columns: str = '*', where: str = '', where_args: Optional[Union[List[str], Tuple[str, str]]] = None, target_schema: Optional[str] = None, target_table: Optional[str] = None)None
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_primary_keys(schema: str, table: str)List[Tuple[str, str]]
+

Inspects the Postgres information_schema to get the primary keys for a given table.

+
+ +
+
+initialize(skip_object_handling: bool = False, skip_create_database: bool = False)None
+

Create the Splitgraph Postgres database and install the audit trigger

+
+
Parameters
+
    +
  • skip_object_handling – If True, skips installation of +audit triggers and other object management routines for engines +that don’t need change tracking or checkouts.

  • +
  • skip_create_database – Don’t create the Splitgraph database

  • +
+
+
+
+ +
+
+lock_table(schema: str, table: str)None
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback()None
+

Rollback the engine’s backing connection

+
+ +
+
+run_api_call(call: str, *args, schema: str = 'splitgraph_api')Any
+
+ +
+
+run_api_call_batch(call: str, argslist, schema: str = 'splitgraph_api')
+
+ +
+
+run_chunked_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Sequence[Any], return_shape: Optional[splitgraph.engine.ResultShape] = <ResultShape.MANY_MANY: 4>, chunk_size: int = 1000, chunk_position: int = -1)Any
+

Because the Splitgraph API has a request size limitation, certain +SQL calls with variadic arguments are going to be too long to fit that. This function +runs an SQL query against a set of broken up arguments and returns the combined result.

+
+ +
+
+run_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Optional[Sequence[Any]] = None, return_shape: Optional[splitgraph.engine.ResultShape] = <ResultShape.MANY_MANY: 4>, named: bool = False)Any
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement: Union[psycopg2.sql.Composed, str], arguments: Any, schema: Optional[str] = None, max_size=261000)None
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+property splitgraph_version
+

Returns the version of the Splitgraph library installed on the engine +and by association the version of the engine itself.

+
+ +
+ +
+
+splitgraph.engine.postgres.engine.add_ud_flag_column(table_schema: List[splitgraph.core.types.TableColumn])List[splitgraph.core.types.TableColumn]
+
+ +
+
+splitgraph.engine.postgres.engine.chunk(sequence: Sequence[T], chunk_size: int = 1000)Iterator[List[T]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_change_key(schema_spec: List[splitgraph.core.types.TableColumn])List[Tuple[str, str]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_conn_str(conn_params: Dict[str, str])str
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.hooks.data_source.mdx b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.hooks.data_source.mdx new file mode 100644 index 00000000..485aab19 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.hooks.data_source.mdx @@ -0,0 +1,515 @@ + + + +export const meta = { + title: "splitgraph.hooks.data_source package", + id: "splitgraph.hooks.data_source package" +}; + +
+

Module contents

+
+
+splitgraph.hooks.data_source.get_data_source(data_source: str)Type[splitgraph.hooks.data_source.base.DataSource]
+

Returns a class for a given data source

+
+ +
+
+splitgraph.hooks.data_source.get_data_sources()List[str]
+

Returns the names of all registered data sources.

+
+ +
+
+splitgraph.hooks.data_source.register_data_source(name: str, data_source_class: Type[splitgraph.hooks.data_source.base.DataSource])None
+

Returns a data source under a given name.

+
+ +
+ +
+

Submodules

+
+
+

splitgraph.hooks.data_source.base module

+
+
+class splitgraph.hooks.data_source.base.DataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any])
+

Bases: abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+abstract classmethod get_description()str
+
+ +
+
+abstract classmethod get_name()str
+
+ +
+
+abstract introspect()Dict[str, List[splitgraph.core.types.TableColumn]]
+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_load = False
+
+ +
+
+supports_mount = False
+
+ +
+
+supports_sync = False
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.LoadableDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any])
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+load(repository: Repository, tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]] = None)str
+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_load = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.MountableDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any])
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+abstract mount(schema: str, tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]] = None, overwrite: bool = True)
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_mount = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.SyncableDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any])
+

Bases: splitgraph.hooks.data_source.base.LoadableDataSource, splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_load = True
+
+ +
+
+supports_sync = True
+
+ +
+
+sync(repository: Repository, image_hash: Optional[str], tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]] = None)str
+
+ +
+ +
+
+splitgraph.hooks.data_source.base.get_ingestion_state(repository: Repository, image_hash: Optional[str])Optional[Dict[str, Any]]
+
+ +
+
+splitgraph.hooks.data_source.base.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.hooks.data_source.base.prepare_new_image(repository: Repository, hash_or_tag: Optional[str])Tuple[Optional[splitgraph.core.image.Image], str]
+
+ +
+
+

splitgraph.hooks.data_source.fdw module

+
+
+class splitgraph.hooks.data_source.fdw.ElasticSearchDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount an ElasticSearch instance.\n\nMount a set of tables proxying to a remote ElasticSearch index.\n\nThis uses a fork of postgres-elasticsearch-fdw behind the scenes. You can add a column\n`query` to your table and set it as `query_column` to pass advanced ES queries and aggregations.\nFor example:\n\n```\nsgr mount elasticsearch target_schema -c elasticsearch:9200 -o@- <<EOF\n    &lbrace;\n      "tables": &lbrace;\n        "table_1": &lbrace;\n          "schema": &lbrace;\n            "id": "text",\n            "@timestamp": "timestamp",\n            "query": "text",\n            "col_1": "text",\n            "col_2": "boolean"\n          &rbrace;,\n          "options": &lbrace;\n              "index": "index-pattern*",\n              "rowid_column": "id",\n              "query_column": "query"\n          &rbrace;\n        &rbrace;\n      &rbrace;\n    &rbrace;\nEOF\n```\n'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': ['string', 'null']&rbrace;, 'username': &lbrace;'type': ['string', 'null']&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'properties': &lbrace;'index': &lbrace;'description': 'ES index name or pattern to use, for example, "events-*"', 'type': 'string'&rbrace;, 'query_column': &lbrace;'description': 'Name of the column to use to pass queries in', 'type': 'string'&rbrace;, 'score_column': &lbrace;'description': 'Name of the column with the document score', 'type': 'string'&rbrace;, 'scroll_duration': &lbrace;'description': 'How long to hold the scroll context open for, default 10m', 'type': 'string'&rbrace;, 'scroll_size': &lbrace;'description': 'Fetch size, default 1000', 'type': 'integer'&rbrace;, 'type': &lbrace;'description': 'Pre-ES7 doc_type, not required in ES7 or later', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'required': ['host', 'port', 'tables'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.base.MountableDataSource, splitgraph.hooks.data_source.base.LoadableDataSource, abc.ABC

+
+
+commandline_help: str = ''
+
+ +
+
+commandline_kwargs_help: str = ''
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs)splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+abstract get_fdw_name()
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()Mapping[str, str]
+
+ +
+
+get_table_options(table_name: str)Mapping[str, str]
+
+ +
+
+get_table_schema(table_name: str, table_schema: List[splitgraph.core.types.TableColumn])List[splitgraph.core.types.TableColumn]
+
+ +
+
+get_user_options()Mapping[str, str]
+
+ +
+
+introspect()Dict[str, List[splitgraph.core.types.TableColumn]]
+
+ +
+
+mount(schema: str, tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]] = None, overwrite: bool = True)
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+preview(schema: Dict[str, List[splitgraph.core.types.TableColumn]])Dict[str, Union[str, List[Dict[str, Any]]]]
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MongoDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Mongo database.\n\nMounts one or more collections on a remote Mongo database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'tables: A dictionary of form\n```\n&lbrace;\n    "table_name": &lbrace;\n        "schema": &lbrace;"col1": "type1"...&rbrace;,\n        "options": &lbrace;"db": <dbname>, "coll": <collection>&rbrace; \n    &rbrace; \n&rbrace;\n```\n'
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str)
+
+ +
+
+get_table_schema(table_name, table_schema)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'properties': &lbrace;'coll': &lbrace;'type': 'string'&rbrace;, 'db': &lbrace;'type': 'string'&rbrace;, 'required': ['db', 'coll']&rbrace;, 'type': 'object'&rbrace;, 'required': ['options']&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'required': ['host', 'port', 'tables'], 'type': 'object'&rbrace;
+
+ +
+
+tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]]
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MySQLDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a MySQL database.\n\nMounts a schema on a remote MySQL database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'remote_schema: Remote schema name (required)\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n        '
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'remote_schema': &lbrace;'type': 'string'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'required': ['host', 'port', 'remote_schema'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.PostgreSQLDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Postgres database.\n\nMounts a schema on a remote Postgres database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'dbname: Database name (required)\nremote_schema: Remote schema name (required)\nextra_server_args: Dictionary of extra arguments to pass to the foreign server\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n    '
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'description': 'Database name', 'type': 'string'&rbrace;, 'host': &lbrace;'description': 'Remote hostname', 'type': 'string'&rbrace;, 'port': &lbrace;'description': 'Port', 'type': 'integer'&rbrace;, 'remote_schema': &lbrace;'description': 'Remote schema name', 'type': 'string'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname', 'remote_schema'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.hooks.data_source.fdw.create_foreign_table(schema: str, server: str, table_name: str, schema_spec: List[splitgraph.core.types.TableColumn], extra_options: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.hooks.data_source.fdw.init_fdw(engine: PostgresEngine, server_id: str, wrapper: str, server_options: Optional[Mapping[str, Optional[str]]] = None, user_options: Optional[Mapping[str, str]] = None, overwrite: bool = True)None
+

Sets up a foreign data server on the engine.

+
+
Parameters
+
    +
  • engine – PostgresEngine

  • +
  • server_id – Name to call the foreign server, must be unique. Will be deleted if exists.

  • +
  • wrapper – Name of the foreign data wrapper (must be installed as an extension on the engine)

  • +
  • server_options – Dictionary of FDW options

  • +
  • user_options – Dictionary of user options

  • +
  • overwrite – If the server already exists, delete and recreate it.

  • +
+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.hooks.mdx b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.hooks.mdx new file mode 100644 index 00000000..81e40082 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.hooks.mdx @@ -0,0 +1,366 @@ + + + +export const meta = { + title: "splitgraph.hooks package", + id: "splitgraph.hooks package" +}; + +
+

Module contents

+

Various hooks for extending Splitgraph, including:

+
+
    +
  • External object handlers (splitgraph.hooks.external_objects) allowing to download/upload objects +to locations other than the remote Splitgraph engine.

  • +
  • Data sources (splitgraph.hooks.data_sources) that allow to add data to Splitgraph, e.g.

  • +
+
+

using the Postgres engine’s FDW interface to mount other external databases on the engine.

+
+ +
+
+ + +
+

Submodules

+
+
+

splitgraph.hooks.external_objects module

+

Hooks for registering handlers to upload/download objects from external locations into Splitgraph’s cache.

+
+
+class splitgraph.hooks.external_objects.ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: object

+

Framework for allowing to dump objects from the Splitgraph cache to an external location. This allows +the objects to be stored somewhere other than the actual remote engine.

+

External object handlers must extend this class and be registered in the Splitgraph config.

+

For an example of how this can be used, see splitgraph.hooks.s3: it’s a handler allowing objects to be +uploaded to S3/S3-compatible host using the Minio API. It’s registered in the config as follows:

+
[external_handlers]
+S3=splitgraph.hooks.s3.S3ExternalObjectHandler
+
+
+

The protocol and the URLs returned by this handler are stored in splitgraph_meta.external_objects +and used to download the objects back into the Splitgraph cache when they are needed.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine)Sequence[str]
+

Download objects from the external location into the Splitgraph cache.

+
+
Parameters
+
    +
  • objects – List of tuples (object_id, object_url) that this handler had previosly +uploaded the objects to.

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of object IDs that have been successfully downloaded.

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine)Sequence[Tuple[str, str]]
+

Upload objects from the Splitgraph cache to an external location

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of successfully uploaded object IDs and URLs they can be found at.

+
+
+
+ +
+ +
+
+splitgraph.hooks.external_objects.get_external_object_handler(name: str, handler_params: Dict[Any, Any])splitgraph.hooks.external_objects.ExternalObjectHandler
+

Load an external protocol handler by its name, initializing it with optional parameters.

+
+ +
+
+splitgraph.hooks.external_objects.register_upload_download_handler(name: str, handler_class: Callable[[], splitgraph.hooks.external_objects.ExternalObjectHandler])None
+

Register an external protocol handler. See the docstring for get_upload_download_handler for the required +signatures of the handler functions.

+
+ +
+
+

splitgraph.hooks.mount_handlers module

+

Extra wrapper code for mount handlers

+
+
+splitgraph.hooks.mount_handlers.mount(mountpoint: str, mount_handler: str, handler_kwargs: Dict[str, Any], overwrite: bool = True, tables: Optional[TableInfo] = None)None
+

Mounts a foreign database via an FDW (without creating new Splitgraph objects)

+
+
Parameters
+
    +
  • mountpoint – Mountpoint to import the new tables into.

  • +
  • mount_handler – The type of the mounted database.

  • +
  • handler_kwargs – Dictionary of options to pass to the mount handler.

  • +
  • overwrite – Delete the foreign server if it already exists. Used by mount_postgres for data pulls.

  • +
  • tables – List of tables to mount or their schemas

  • +
+
+
+
+ +
+
+splitgraph.hooks.mount_handlers.mount_postgres(mountpoint, **kwargs)None
+

Mount a Postgres database.

+

Mounts a schema on a remote Postgres database as a set of foreign tables locally. +

+
+
Parameters
+
    +
  • mountpoint – Schema to mount the remote into.

  • +
  • server – Database hostname.

  • +
  • port – Port the Postgres server is running on.

  • +
  • username – A read-only user that the database will be accessed as.

  • +
  • password – Password for the read-only user.

  • +
  • dbname – Remote database name.

  • +
  • remote_schema – Remote schema name.

  • +
  • extra_server_args – Dictionary of extra arguments to pass to the foreign server

  • +
  • tables – Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.

  • +
+
+
+

If a dictionary, must have the format &lbrace;“table_name”: &lbrace;“col_1”: “type_1”, …&rbrace;&rbrace;.

+
+ +
+
+

splitgraph.hooks.s3 module

+

Plugin for uploading Splitgraph objects from the cache to an external S3-like object store

+
+
+class splitgraph.hooks.s3.S3ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: splitgraph.hooks.external_objects.ExternalObjectHandler

+

Uploads/downloads the objects to/from S3/S3-compatible host using the Minio client.

+

The handler is “attached” to a given registry which manages issuing pre-signed +GET/PUT URLs.

+

The handler supports a parameter threads specifying the number of threads +used to upload the objects.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine)List[str]
+

Download objects from Minio.

+
+
Parameters
+

objects – List of (object ID, object URL (object ID it’s stored under))

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine)List[Tuple[str, str]]
+

Upload objects to Minio

+
+
Parameters
+
    +
  • remote_engine – Remote Engine class

  • +
  • objects – List of object IDs to upload

  • +
+
+
Returns
+

List of tuples with successfully uploaded objects and their URLs.

+
+
+
+ +
+ +
+
+splitgraph.hooks.s3.get_object_download_urls(remote_engine, remote_object_ids)
+
+ +
+
+splitgraph.hooks.s3.get_object_upload_urls(remote_engine, objects)
+
+ +
+
+

splitgraph.hooks.s3_server module

+

S3 registry-side routines called from the Python stored procedure +that are aware of the actual S3 access creds and generate pre-signed +URLs to upload/download objects.

+
+
+splitgraph.hooks.s3_server.delete_objects(client: minio.api.Minio, object_ids: List[str])None
+

Delete objects stored in Minio

+
+
Parameters
+
    +
  • client – Minio client

  • +
  • object_ids – List of Splitgraph object IDs to delete

  • +
+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_download_urls(s3_host: str, object_ids: List[str])List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_upload_urls(s3_host: str, object_ids: List[str])List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.list_objects(client: minio.api.Minio)List[str]
+

List objects stored in Minio

+
+
Parameters
+

client – Minio client

+
+
Returns
+

List of Splitgraph object IDs

+
+
+
+ +
+
+

splitgraph.hooks.splitfile_commands module

+

A framework for custom Splitfile commands. The execution flow is as follows:

+
+
    +
  • When the Splitfile executor finds an unknown command, it looks for an entry in the config file:

    +
    [commands]
    +RUN=splitgraph.plugins.Run
    +
    +
    +
  • +
  • The command class must extend this class, initialized at every invocation time.

  • +
  • The command’s calc_hash() method is run. The resultant command context hash is combined with the current +image hash to produce the new image hash: if it already exists, then the image is simply checked out.

  • +
  • Otherwise (or if calc_hash is undefined or returns None), execute(), where the actual command should be +implemented, is run. If it returns a hash, this hash is used for the new image. If this hash already exists, +the existing image is checked out instead. If the command returns None, a random hash is generated for the +new image.

  • +
+
+
+
+class splitgraph.hooks.splitfile_commands.PluginCommand
+

Bases: object

+

Base class for custom Splitfile commands.

+
+
+calc_hash(repository, args)
+

Calculates the command context hash for this custom command. If either the command context hash or the +previous image hash has changed, then the image hash produced by this command will change. +Consequently, two commands with the same command context hashes are assumed to have the same effect +on any Splitgraph images.

+

This is supposed to be a lightweight method intended for pre-flight image hash calculations +(without performing the actual transformation). If it returns None, the actual transformation is run anyway.

+

For example, for a command that imports some data from an external URL, this could be the hash of the last +modified timestamp provided by the external data vendor. If the timestamp is unchanged, the data is unchanged +and so actual command won’t be re-executed.

+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits)

+
+
+
+ +
+
+execute(repository, args)
+

Execute the custom command against the target schema, optionally returning the new image hash. The contract +for the command is as follows (though it is not currently enforced by the runtime):

+
+
    +
  • Has to use get_engine().run_sql (or run_sql_batch) to interact with the engine.

  • +
  • Can only write to the schema with the checked-out repository (run_sql runs non-schema-qualified +statements against the correct schema).

  • +
  • Can inspect splitgraph_meta (e.g. to find the current HEAD) for the repository.

  • +
  • Can’t alter the versioning of the repository.

  • +
+
+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits). If calc_hash() had previously returned +a hash, this hash is ignored. If both this command and calc_hash() return None, the hash is randomly +generated.

+
+
+
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.ingestion.csv.mdx b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.ingestion.csv.mdx new file mode 100644 index 00000000..64aae5ec --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.ingestion.csv.mdx @@ -0,0 +1,174 @@ + + + +export const meta = { + title: "splitgraph.ingestion.csv package", + id: "splitgraph.ingestion.csv package" +}; + +
+

Module contents

+
+
+class splitgraph.ingestion.csv.CSVDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount CSV files in S3/HTTP.\n\nIf passed an URL, this will live query a CSV file on an HTTP server. If passed\nS3 access credentials, this will scan a bucket for CSV files, infer their schema\nand make them available to query over SQL.  \n\nFor example:  \n\n\x08\n```\nsgr mount csv target_schema -o@- <<EOF\n  &lbrace;\n    "s3_endpoint": "cdn.mycompany.com:9000",\n    "s3_access_key": "ABCDEF",\n    "s3_secret_key": "GHIJKL",\n    "s3_bucket": "data",\n    "s3_object_prefix": "csv_files/current/",\n    "autodetect_header": true,\n    "autodetect_dialect": true\n  &rbrace;\nEOF\n```\n'
+
+ +
+
+commandline_kwargs_help: str = 's3_access_key:\ns3_secret_key:\ntables: Tables to mount (default all). If a list, will import only these tables. \nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\nurl: HTTP URL to the CSV file.\ns3_endpoint: S3 endpoint (including port if required).\ns3_region: Region of the S3 bucket.\ns3_secure: Whether to use HTTPS for S3 access.\ns3_bucket: Bucket the object is in.\ns3_object_prefix: Prefix for object in S3 bucket.\nautodetect_header: Detect whether the CSV file has a header automatically.\nautodetect_dialect: Detect the CSV file\'s dialect (separator, quoting characters etc) automatically.\nheader: First line of the CSV file is its header.\nseparator: Character used to separate fields in the file.\nquotechar: Character used to quote fields.'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'s3_access_key': &lbrace;'type': 'string'&rbrace;, 's3_secret_key': &lbrace;'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs)splitgraph.ingestion.csv.CSVDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str)Mapping[str, str]
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'autodetect_dialect': &lbrace;'description': "Detect the CSV file's dialect (separator, quoting characters etc) automatically", 'type': 'boolean'&rbrace;, 'autodetect_header': &lbrace;'description': 'Detect whether the CSV file has a header automatically', 'type': 'boolean'&rbrace;, 'header': &lbrace;'description': 'First line of the CSV file is its header', 'type': 'boolean'&rbrace;, 'quotechar': &lbrace;'description': 'Character used to quote fields', 'type': 'string'&rbrace;, 's3_bucket': &lbrace;'description': 'Bucket the object is in', 'type': 'string'&rbrace;, 's3_endpoint': &lbrace;'description': 'S3 endpoint (including port if required)', 'type': 'string'&rbrace;, 's3_object_prefix': &lbrace;'description': 'Prefix for object in S3 bucket', 'type': 'string'&rbrace;, 's3_region': &lbrace;'description': 'Region of the S3 bucket', 'type': 'string'&rbrace;, 's3_secure': &lbrace;'description': 'Whether to use HTTPS for S3 access', 'type': 'boolean'&rbrace;, 'separator': &lbrace;'description': 'Character used to separate fields in the file', 'type': 'string'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;, 'url': &lbrace;'description': 'HTTP URL to the CSV file', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+ +
+
+class splitgraph.ingestion.csv.CSVIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.csv.copy_csv_buffer(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = False, **kwargs)
+

Copy CSV data from a buffer into a given schema/table

+
+ +
+
+splitgraph.ingestion.csv.query_to_csv(engine: PsycopgEngine, query, buffer, schema: Optional[str] = None)
+
+ +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.csv.fdw module

+
+
+class splitgraph.ingestion.csv.fdw.CSVForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+

Foreign data wrapper for CSV files stored in S3 buckets or HTTP

+
+
+can_sort(sortkeys)
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+
+ +
+
+classmethod import_schema(schema, srv_options, options, restriction_type, restricts)
+
+ +
+ +
+
+splitgraph.ingestion.csv.fdw.get_bool(params: Dict[str, str], key: str, default: bool = True)bool
+
+ +
+
+splitgraph.ingestion.csv.fdw.make_csv_reader(response: io.IOBase, autodetect_header: bool = False, autodetect_dialect: bool = False, delimiter: str = ',', quotechar: str = '"', header: bool = True, encoding: str = 'utf-8')
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.ingestion.mdx b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.ingestion.mdx new file mode 100644 index 00000000..94e2f946 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.ingestion.mdx @@ -0,0 +1,197 @@ + + + +export const meta = { + title: "splitgraph.ingestion package", + id: "splitgraph.ingestion package" +}; + +
+

Module contents

+
+ + +
+

Submodules

+
+
+

splitgraph.ingestion.common module

+
+
+class splitgraph.ingestion.common.IngestionAdapter
+

Bases: object

+
+
+abstract create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+abstract data_to_new_table(data, engine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+abstract query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+
+to_data(query: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)
+
+ +
+
+to_table(data, repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True, no_header: bool = False, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.common.build_commandline_help(json_schema)
+
+ +
+
+splitgraph.ingestion.common.dedupe_sg_schema(schema_spec: List[splitgraph.core.types.TableColumn], prefix_len: int = 59)List[splitgraph.core.types.TableColumn]
+

Some foreign schemas have columns that are longer than 63 characters +where the first 63 characters are the same between several columns +(e.g. odn.data.socrata.com). This routine renames columns in a schema +to make sure this can’t happen (by giving duplicates a number suffix).

+
+ +
+
+splitgraph.ingestion.common.merge_tables(engine: splitgraph.engine.postgres.engine.PsycopgEngine, source_schema: str, source_table: str, source_schema_spec: List[splitgraph.core.types.TableColumn], target_schema: str, target_table: str, target_schema_spec: List[splitgraph.core.types.TableColumn])
+
+ +
+
+splitgraph.ingestion.common.schema_compatible(source_schema: List[splitgraph.core.types.TableColumn], target_schema: List[splitgraph.core.types.TableColumn])bool
+

Quick check to see if a dataframe with target_schema can be written into source_schema. +There are some implicit type conversions that SQLAlchemy/Pandas can do so we don’t want to immediately fail +if the column types aren’t exactly the same (eg bigint vs numeric etc). Most errors should be caught by PG itself.

+

Schema is a list of (ordinal, name, type, is_pk).

+
+ +
+
+

splitgraph.ingestion.inference module

+
+
+splitgraph.ingestion.inference.infer_sg_schema(sample: List[Tuple[str, ]], override_types: Optional[Dict[str, Any]], primary_keys: Optional[List[str]] = None)
+
+ +
+
+splitgraph.ingestion.inference.parse_bigint(integer: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_boolean(boolean: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_int(integer: str)
+
+ +
+
+

splitgraph.ingestion.pandas module

+

Routines that ingest/export CSV files to/from Splitgraph images using Pandas

+
+
+class splitgraph.ingestion.pandas.PandasIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.pandas.df_to_table(df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True)None
+

Writes a Pandas DataFrame to a checked-out Splitgraph table. Doesn’t create a new image.

+
+
Parameters
+
    +
  • df – Pandas DataFrame to insert.

  • +
  • repository – Splitgraph Repository object. Must be checked out.

  • +
  • table – Table name.

  • +
  • if_exists – Behaviour if the table already exists: ‘patch’ means that primary keys that already exist in the

  • +
+
+
+

table will be updated and ones that don’t will be inserted. ‘replace’ means that the table will be dropped and +recreated. +:param schema_check: If False, skips checking that the dataframe is compatible with the target schema.

+
+ +
+
+splitgraph.ingestion.pandas.df_to_table_fast(engine: PsycopgEngine, df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], target_schema: str, target_table: str)
+
+ +
+
+splitgraph.ingestion.pandas.sql_to_df(sql: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)pandas.core.frame.DataFrame
+

Executes an SQL query against a Splitgraph image, returning the result.

+

Extra **kwargs are passed to Pandas’ read_sql_query.

+
+
Parameters
+
    +
  • sql – SQL query to execute.

  • +
  • image – Image object, image hash/tag (str) or None (use the currently checked out image).

  • +
  • repository – Repository the image belongs to. Must be set if image is a hash/tag or None.

  • +
  • use_lq – Whether to use layered querying or check out the image if it’s not checked out.

  • +
+
+
Returns
+

A Pandas dataframe.

+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.ingestion.snowflake.mdx b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.ingestion.snowflake.mdx new file mode 100644 index 00000000..e2bb14a7 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.ingestion.snowflake.mdx @@ -0,0 +1,87 @@ + + + +export const meta = { + title: "splitgraph.ingestion.snowflake package", + id: "splitgraph.ingestion.snowflake package" +}; + +
+

Module contents

+
+
+class splitgraph.ingestion.snowflake.SnowflakeDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Snowflake database.\n\nThis will mount a remote Snowflake schema or a table. You can also get a mounted table to point to the result of a subquery that will be executed on the Snowflake instance. For example:\n\n\x08\n```\n$ sgr mount snowflake test_snowflake -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "password": "password",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "schema": "TPCH_SF100"\n    "envvars": &lbrace;"HTTPS_PROXY": "http://proxy.company.com"&rbrace;\n&rbrace;\nEOF\n\x08\n$ sgr mount snowflake test_snowflake_subquery -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "private_key": "MIIEvQIBAD...",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "tables": &lbrace;\n        "balances": &lbrace;\n            "schema": &lbrace;\n                "n_nation": "varchar",\n                "segment": "varchar",\n                "avg_balance": "numeric"\n            &rbrace;,\n            "options": &lbrace;\n                "subquery": "SELECT n_nation AS nation, c_mktsegment AS segment, AVG(c_acctbal) AS avg_balance FROM TPCH_SF100.customer c JOIN TPCH_SF100.nation n ON c_nationkey = n_nationkey"\n            &rbrace;\n        &rbrace;\n    &rbrace;\n&rbrace;\nEOF\n```\n    '
+
+ +
+
+commandline_kwargs_help: str = 'username: Username. Required.\npassword: Password.\naccount: Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html. Required.\nprivate_key: Private key in PEM format.\ntables: Tables to mount (default all). If a list, will import only these tables. \nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\ndatabase: Snowflake database name. Required.\nschema: Snowflake schema.\nwarehouse: Warehouse name.\nrole: Role.\nenvvars: Environment variables to set on the engine side.\nThe schema parameter is required when subquery isn\'t used.'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'oneOf': [&lbrace;'required': ['password']&rbrace;, &lbrace;'required': ['private_key']&rbrace;], 'properties': &lbrace;'account': &lbrace;'description': 'Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html', 'type': 'string'&rbrace;, 'password': &lbrace;'description': 'Password', 'type': 'string'&rbrace;, 'private_key': &lbrace;'description': 'Private key in PEM format', 'type': 'string'&rbrace;, 'username': &lbrace;'description': 'Username', 'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'account'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str)Mapping[str, str]
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'database': &lbrace;'description': 'Snowflake database name', 'type': 'string'&rbrace;, 'envvars': &lbrace;'description': 'Environment variables to set on the engine side', 'type': 'object'&rbrace;, 'role': &lbrace;'description': 'Role', 'type': 'string'&rbrace;, 'schema': &lbrace;'description': 'Snowflake schema', 'type': 'string'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;, 'warehouse': &lbrace;'description': 'Warehouse name', 'type': 'string'&rbrace;&rbrace;, 'required': ['database'], 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.ingestion.socrata.mdx b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.ingestion.socrata.mdx new file mode 100644 index 00000000..871192a6 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.ingestion.socrata.mdx @@ -0,0 +1,175 @@ + + + +export const meta = { + title: "splitgraph.ingestion.socrata package", + id: "splitgraph.ingestion.socrata package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.ingestion.socrata.fdw module

+

Module imported by Multicorn on the Splitgraph engine server: a foreign data wrapper +that communicates to Socrata datasets using sodapy.

+
+
+class splitgraph.ingestion.socrata.fdw.SocrataForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+
+
+can_sort(sortkeys)
+
+
Parameters
+

sortkeys – List of SortKey

+
+
Returns
+

List of SortKey the FDW can sort on

+
+
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+

Method called from the planner to estimate the resulting relation +size for a scan. +It will help the planner in deciding between different types of plans, +according to their costs. +Args:

+
+
+
quals (list): A list of Qual instances describing the filters

applied to this scan.

+
+
+

columns (list): The list of columns that must be returned.

+
+
+
Returns:

A tuple of the form (expected_number_of_rows, avg_row_width (in bytes))

+
+
+
+ +
+
+property table_meta
+
+ +
+ +
+
+splitgraph.ingestion.socrata.fdw.to_json(row, columns, column_map)
+
+ +
+
+

splitgraph.ingestion.socrata.mount module

+

Splitgraph mount handler for Socrata datasets

+
+
+class splitgraph.ingestion.socrata.mount.SocrataDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'app_token': &lbrace;'description': 'Socrata app token, optional', 'type': ['string', 'null']&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs)splitgraph.ingestion.socrata.mount.SocrataDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'description': 'Amount of rows to fetch from Socrata per request (limit parameter). Maximum 50000.', 'type': 'integer'&rbrace;, 'domain': &lbrace;'description': 'Socrata domain, for example, data.albanyny.gov', 'type': 'string'&rbrace;, 'tables': &lbrace;'type': 'object'&rbrace;&rbrace;, 'required': ['domain'], 'type': 'object'&rbrace;
+
+
tables: A dictionary mapping PostgreSQL table names to Socrata table IDs. For example,

&lbrace;“salaries”: “xzkq-xp2w”&rbrace;. If skipped, ALL tables in the Socrata endpoint will be mounted.

+
+
+
+ +
+
+tables: Optional[TableInfo]
+
+ +
+ +
+
+splitgraph.ingestion.socrata.mount.generate_socrata_mount_queries(sought_ids, datasets, mountpoint, server_id, tables)
+
+ +
+
+

splitgraph.ingestion.socrata.querying module

+
+
+splitgraph.ingestion.socrata.querying.cols_to_socrata(cols, column_map: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.ingestion.socrata.querying.estimate_socrata_rows_width(columns, metadata, column_map=None)
+

Estimate number of rows required for a query and each row’s width +from the table metadata.

+
+ +
+
+splitgraph.ingestion.socrata.querying.quals_to_socrata(quals, column_map: Optional[Dict[str, str]] = None)
+

Convert a list of Multicorn quals to a SoQL query

+
+ +
+
+splitgraph.ingestion.socrata.querying.socrata_to_sg_schema(metadata: Dict[str, Any])Tuple[List[splitgraph.core.types.TableColumn], Dict[str, str]]
+
+ +
+
+splitgraph.ingestion.socrata.querying.sortkeys_to_socrata(sortkeys, column_map: Optional[Dict[str, str]] = None)
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.mdx b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.mdx new file mode 100644 index 00000000..1a63dacf --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.mdx @@ -0,0 +1,337 @@ + + + +export const meta = { + title: "splitgraph package", + id: "splitgraph package" +}; + +
+

Module contents

+
+ +
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

splitgraph.exceptions module

+

Exceptions that can be raised by the Splitgraph library.

+
+
+exception splitgraph.exceptions.APICompatibilityError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions related to API incompatibilities

+
+ +
+
+exception splitgraph.exceptions.AuthAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by the Auth API

+
+ +
+
+exception splitgraph.exceptions.CheckoutError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to checking out/committing repositories

+
+ +
+
+exception splitgraph.exceptions.DataSourceError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by mount handlers.

+
+ +
+
+exception splitgraph.exceptions.DockerUnavailableError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Could not connect to the Docker daemon.

+
+ +
+
+exception splitgraph.exceptions.EngineInitializationError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when the engine isn’t initialized (no splitgraph_meta schema or audit triggers)

+
+ +
+
+exception splitgraph.exceptions.EngineSetupError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised on various setup issues with the Splitgraph engine

+
+ +
+
+exception splitgraph.exceptions.ExternalHandlerError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by external object handlers.

+
+ +
+
+exception splitgraph.exceptions.GQLAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

GQL API errors

+
+ +
+
+exception splitgraph.exceptions.GQLRepoDoesntExistError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Repository doesn’t exist

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthenticatedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthenticated (user not logged in)

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthorizedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthorized (e.g. repository isn’t writeable by the user)

+
+ +
+
+exception splitgraph.exceptions.ImageNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph image doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectDownloadError(reason: Optional[BaseException], successful_objects: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during download of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectUploadError(reason: Optional[BaseException], successful_objects: List[str], successful_object_urls: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during upload of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.ObjectCacheError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Issues with the object cache (not enough space)

+
+ +
+
+exception splitgraph.exceptions.ObjectIndexingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to indexing objects

+
+ +
+
+exception splitgraph.exceptions.ObjectMountingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to incompatible objects.

+
+ +
+
+exception splitgraph.exceptions.ObjectNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when a physical object doesn’t exist in the cache.

+
+ +
+
+exception splitgraph.exceptions.RepositoryNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph repository doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.SplitGraphError
+

Bases: Exception

+

A generic Splitgraph exception.

+
+ +
+
+exception splitgraph.exceptions.SplitfileError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Generic error class for Splitfile interpretation/execution errors.

+
+ +
+
+exception splitgraph.exceptions.TableNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A table doesn’t exist in an image

+
+ +
+
+exception splitgraph.exceptions.UnsupportedSQLError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised for unsupported SQL statements, for example, containing schema-qualified tables when the statement +is supposed to be used in an SQL/IMPORT Splitfile command.

+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.splitfile.mdx b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.splitfile.mdx new file mode 100644 index 00000000..39a80266 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.11/splitgraph.splitfile.mdx @@ -0,0 +1,89 @@ + + + +export const meta = { + title: "splitgraph.splitfile package", + id: "splitgraph.splitfile package" +}; + +
+

Module contents

+

Splitfile interpreter: a set of tools on top of the core Splitgraph versioning and image management to give +the user a Dockerfile-like experience for building Splitgraph images (caching, consistent hashing, a declarative +language).

+
+ +
+

Submodules

+
+
+

splitgraph.splitfile.execution module

+

Functions for executing Splitfiles.

+
+
+class splitgraph.splitfile.execution.ImageMapper(object_engine: splitgraph.engine.postgres.engine.PostgresEngine)
+

Bases: object

+
+
+get_provenance_data()Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]
+
+ +
+
+setup_lq_mounts()None
+
+ +
+
+teardown_lq_mounts()None
+
+ +
+ +
+
+splitgraph.splitfile.execution.execute_commands(commands: str, params: Optional[Dict[str, str]] = None, output: Optional[splitgraph.core.repository.Repository] = None, output_base: str = '00000000000000000000000000000000')None
+

Executes a series of Splitfile commands.

+
+
Parameters
+
    +
  • commands – A string with the raw Splitfile.

  • +
  • params – A dictionary of parameters to be applied to the Splitfile ($&lbrace;PARAM&rbrace; is replaced with the specified +parameter value).

  • +
  • output – Output repository to execute the Splitfile against.

  • +
  • output_base – If not None, a revision that gets checked out for all Splitfile actions to be committed +on top of it.

  • +
+
+
+
+ +
+
+splitgraph.splitfile.execution.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.splitfile.execution.prevalidate_imports(table_names: List[str], table_queries: List[bool])List[str]
+
+ +
+
+splitgraph.splitfile.execution.rebuild_image(image: splitgraph.core.image.Image, source_replacement: Dict[splitgraph.core.repository.Repository, str])None
+

Recreates the Splitfile used to create a given image and reruns it, replacing its dependencies with a different +set of versions.

+
+
Parameters
+
    +
  • image – Image object

  • +
  • source_replacement – A map that specifies replacement images/tags for repositories that the image depends on

  • +
+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.12/metadata.json b/content/docs/9500_python-api/9000_versions/v0.2.12/metadata.json new file mode 100644 index 00000000..dcb22d6f --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.12/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.12", + "updated_at": "2022-01-20T00:00:48.316Z", + "release": { + "id": 41069524, + "tag_name": "v0.2.12", + "target_commitish": "9f64e86b1567603749712e4c27ed6ccdc6475af4", + "created_at": "2021-04-07T15:31:09Z", + "published_at": "2021-04-22T13:36:43Z", + "assets": [ + { + "id": 34595301, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/34595301", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-04-07T15:58:00Z", + "updated_at": "2021-04-07T15:58:01Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.12/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.cloud.mdx b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.cloud.mdx new file mode 100644 index 00000000..e250faf0 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.cloud.mdx @@ -0,0 +1,209 @@ + + + +export const meta = { + title: "splitgraph.cloud package", + id: "splitgraph.cloud package" +}; + +
+

Module contents

+

Public API for interacting with the Splitgraph registry

+
+
+class splitgraph.cloud.AuthAPIClient(remote: str)
+

Bases: object

+

Client for the Splitgraph registry auth API that generates tokens to access +other Splitgraph services.

+

Currently incomplete with just enough methods to allow to register and access +the Splitgraph registry via the command line.

+
+
+property access_token
+

Will return an up-to-date access token by either getting it from +the configuration file or contacting the auth service for a new one. +Will write the new access token into the configuration file.

+
+
Returns
+

Access token.

+
+
+
+ +
+
+create_machine_credentials(access_token: str, password: str)requests.models.Response
+

Generate a key and secret that can be used to log into the Splitgraph registry +via a normal Postgres connection. The secret must be stored in the user’s local +configuration file (it’s not stored on Splitgraph servers).

+
+
Parameters
+
    +
  • access_token – Access token

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (key, secret).

+
+
+
+ +
+
+get_access_token(refresh_token: str)requests.models.Response
+

Get a new access token from a refresh token.

+
+
Parameters
+

refresh_token – Refresh token

+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_access_token_from_api(api_key: str, api_secret: str)requests.models.Response
+

Get a new access token from API keys

+
+
Parameters
+
    +
  • api_key – API key

  • +
  • api_secret – API secret

  • +
+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_latest_version()Optional[str]
+
+ +
+
+get_refresh_token(username: str, password: str)requests.models.Response
+

Get a long-lived refresh token and a short-lived access token from the API.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (access_token, refresh_token).

+
+
+
+ +
+
+register(username: str, password: str, email: str, accept_tos: bool)requests.models.Response
+

Register a new Splitgraph user.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
  • email – Email

  • +
  • accept_tos – Accept the Terms of Service if they exist

  • +
+
+
+
+ +
+
+tos()requests.models.Response
+

Get a Terms of Service message from the registry (if accepting ToS is required) +:return: Link to the Terms of Service or None

+
+ +
+ +
+
+class splitgraph.cloud.GQLAPIClient(remote: str)
+

Bases: object

+

Wrapper class for select Splitgraph Registry GQL operations that can be +called from the CLI

+
+
+find_repository(query: str, limit: int = 10)Tuple[int, List[Tuple[str, str, str]]]
+
+ +
+
+upsert_description(namespace: str, repository: str, description: str)
+
+ +
+
+upsert_metadata(*args, **kwargs)
+
+ +
+
+upsert_readme(namespace: str, repository: str, readme: str)
+
+ +
+
+upsert_topics(namespace: str, repository: str, topics: List[str])
+
+ +
+ +
+
+splitgraph.cloud.expect_result(result: List[str], ignore_status_codes: Optional[List[int]] = None)Callable[[Callable[[], requests.models.Response]], Callable[[], Union[str, Tuple[str]]]]
+

A decorator that can be wrapped around a function returning a requests.Response with a JSON body. +If the request has failed, it will extract the “error” from the JSON response and raise an AuthAPIError.

+
+
Parameters
+
    +
  • result – Items to extract. Will raise an AuthAPIError if not all items were fetched.

  • +
  • ignore_status_codes – If one of these status codes is returned (e.g. 404), +it gets ignored and a None is returned instead.

  • +
+
+
Returns
+

Tuple of items enumerated in the result list. If there’s only one item, it will +return just that item.

+
+
+
+ +
+
+splitgraph.cloud.get_headers()
+
+ +
+
+splitgraph.cloud.get_remote_param(remote: str, key: str)str
+
+ +
+
+splitgraph.cloud.get_token_claim(jwt, claim)
+

Extract a claim from a JWT token without validating it.

+
+ +
+
+splitgraph.cloud.handle_gql_errors(func: Callable[[], requests.models.Response])Callable[[], requests.models.Response]
+

A decorator that handles responses from the GQL API, transforming errors into exceptions.

+
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.commandline.mdx b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.commandline.mdx new file mode 100644 index 00000000..58743867 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.commandline.mdx @@ -0,0 +1,365 @@ + + + +export const meta = { + title: "splitgraph.commandline package", + id: "splitgraph.commandline package" +}; + +
+

Module contents

+

Splitgraph command line client

+

Hooks into the API to allow management of Splitgraph repositories and images using sgr.

+
+
+class splitgraph.commandline.ClickHandler(level=0)
+

Bases: logging.Handler

+
+
+emit(record)
+

Do whatever it takes to actually log the specified logging record.

+

This version is intended to be implemented by subclasses and so +raises a NotImplementedError.

+
+ +
+ +
+
+class splitgraph.commandline.WithExceptionHandler(name=None, commands=None, **attrs)
+

Bases: click.core.Group

+
+
+get_command(ctx, cmd_name)
+

Given a context and a command name, this returns a +Command object if it exists or returns None.

+
+ +
+
+invoke(ctx)
+

Given a context, this invokes the attached callback (if it exists) +in the right way.

+
+ +
+ +
+
+splitgraph.commandline.get_exception_name(o)
+
+ +
+ +
+

Submodules

+
+
+

splitgraph.commandline.cloud module

+

Command line routines related to registering/setting up connections to the Splitgraph registry.

+
+
+

splitgraph.commandline.common module

+

Various common functions used by the command line interface.

+
+
+class splitgraph.commandline.common.Color
+

Bases: object

+

An enumeration of console colors

+
+
+BLUE = '\x1b[94m'
+
+ +
+
+BOLD = '\x1b[1m'
+
+ +
+
+CYAN = '\x1b[96m'
+
+ +
+
+DARKCYAN = '\x1b[36m'
+
+ +
+
+END = '\x1b[0m'
+
+ +
+
+GREEN = '\x1b[92m'
+
+ +
+
+PURPLE = '\x1b[95m'
+
+ +
+
+RED = '\x1b[91m'
+
+ +
+
+UNDERLINE = '\x1b[4m'
+
+ +
+
+YELLOW = '\x1b[93m'
+
+ +
+ +
+
+class splitgraph.commandline.common.ImageType(default: Optional[str] = 'latest', repository_exists: bool = False, get_image: bool = False)
+

Bases: click.types.ParamType

+

Parser that extracts the full image specification (repository and hash/tag).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])Tuple[Repository, Optional[Union[Image, str]]]
+

Image specification must have the format [NAMESPACE/]REPOSITORY[:HASH_OR_TAG].

+

The parser returns a tuple of (repository object, tag or hash).

+
+ +
+
+name = 'Image'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.JsonType
+

Bases: click.types.ParamType

+

Parser for Json – a wrapper around json.loads because without specifying +the name Click shows the type for the option/arg as LOADS.

+

Also supports passing JSON files (pass in @filename.json).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Json'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.RepositoryType(exists: bool = False)
+

Bases: click.types.ParamType

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])Repository
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Repository'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.ResettableStream(stream)
+

Bases: io.RawIOBase

+

Stream that supports reading from the underlying stream and resetting the position once.

+

We can’t use fseek() in this case, since we might be reading from a pipe. So, we operate +this stream in two modes. In the first mode, we mirror all reads into a separate buffer +(consuming the input stream). After the user calls reset(), we first output data from the +mirrored copy, then continue consuming the input stream (simulating seek(0).

+
+
+readable()
+

Return whether object was opened for reading.

+

If False, read() will raise OSError.

+
+ +
+
+readinto(b)
+
+ +
+
+reset()
+
+ +
+ +
+
+splitgraph.commandline.common.emit_sql_results(results, use_json=False, show_all=False)
+
+ +
+
+splitgraph.commandline.common.load_json_param(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+
+ +
+
+splitgraph.commandline.common.remote_switch_option(*names, **kwargs)
+

Adds an option to switch global SG_ENGINE for this invocation of sgr.

+

This is useful for e.g. tagging or viewing image information on a remote +registry. This is not used in operations like commit/checkout (even though +nothing is preventing SG_ENGINE switch from working on that if the remote engine +supports this), the user should switch SG_ENGINE envvar themselves in that case.

+
+
Parameters
+
    +
  • names – Names

  • +
  • kwargs – Passed to click.option

  • +
+
+
+
+ +
+
+splitgraph.commandline.common.sql_results_to_str(results: List[Tuple[Any]], use_json: bool = False)str
+
+ +
+
+

splitgraph.commandline.engine module

+
+
+splitgraph.commandline.engine.copy_to_container(container: Container, source_path: str, target_path: str)None
+

Copy a file into a Docker container

+
+
Parameters
+
    +
  • container – Container object

  • +
  • source_path – Source file path

  • +
  • target_path – Target file path (in the container)

  • +
+
+
Returns
+

+
+
+
+ +
+
+splitgraph.commandline.engine.get_docker_client()
+

Wrapper around client.from_env() that also pings the daemon +to make sure it can connect and if not, raises an error.

+
+ +
+
+splitgraph.commandline.engine.inject_config_into_engines(engine_prefix, config_path)
+

Copy the current config into all engines that are managed by sgr engine. This +is so that the engine has the right credentials and settings for when we do +layered querying (a Postgres client queries the engine directly and it +has to download objects etc).

+
+
Parameters
+
    +
  • engine_prefix – Prefix for Docker containers that are considered to be engines

  • +
  • config_path – Path to the config file.

  • +
+
+
+
+ +
+
+splitgraph.commandline.engine.list_engines(prefix, include_all=False, unavailable_ok=True)
+
+ +
+
+splitgraph.commandline.engine.patch_and_save_config(config, patch)
+
+ +
+
+

splitgraph.commandline.example module

+

Command line routines generating example data / Splitfiles

+
+
+splitgraph.commandline.example.alter_table(repository: Repository, table_name: str, rows_added: int, rows_deleted: int, rows_updated: int)None
+

Alters the example table, adding/updating/deleting a certain number of rows.

+
+
Parameters
+
    +
  • repository – Checked-out Repository object.

  • +
  • table_name – Name of the table

  • +
  • rows_added – Number of rows to add

  • +
  • rows_deleted – Number of rows to remove

  • +
  • rows_updated – Number of rows to update

  • +
+
+
+
+ +
+
+splitgraph.commandline.example.generate_table(repository: Repository, table_name: str, size: int)None
+

Creates a table with an integer primary key and a string value.

+
+
Parameters
+
    +
  • repository – Checked-out Repository to create the table in.

  • +
  • table_name – Name of the table to generate

  • +
  • size – Number of rows in the table.

  • +
+
+
+
+ +
+
+

splitgraph.commandline.image_creation module

+

sgr commands related to creating and checking out images

+
+
+

splitgraph.commandline.image_info module

+

sgr commands related to getting information out of / about images

+
+
+

splitgraph.commandline.ingestion module

+

Command line tools for ingesting/exporting Splitgraph images into other formats.

+
+
+

splitgraph.commandline.misc module

+

Miscellaneous image management sgr commands.

+
+
+

splitgraph.commandline.mount module

+

sgr commands related to mounting databases via Postgres FDW

+
+
+

splitgraph.commandline.push_pull module

+

sgr commands related to sharing and downloading images.

+
+
+

splitgraph.commandline.splitfile module

+

sgr commands related to building and rebuilding Splitfiles.

+
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.config.mdx b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.config.mdx new file mode 100644 index 00000000..6f22349f --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.config.mdx @@ -0,0 +1,392 @@ + + + +export const meta = { + title: "splitgraph.config package", + id: "splitgraph.config package" +}; + +
+

Module contents

+

The CONFIG object is created and exported once __at import time__ +Calling CONFIG[“KEY”] directly should be sufficient in most cases, +except when a config value has changed since importing CONFIG. +In that case, create_config_dict() can provide an updated config dict

+

Priority (highest to lowest):

+
+
    +
  1. Command line argument values

  2. +
  3. Environment variable values

  4. +
  5. Config file values in [defaults] section

  6. +
  7. DEFAULTS (see keys.py)

  8. +
+
+
+ +
+

Submodules

+
+
+

splitgraph.config.argument_config module

+
+
+splitgraph.config.argument_config.get_arg_tuples()List[Tuple[str, str]]
+

Get the raw (argN, argN+1) tuples from sys.argv

+

We could also use click to parse the flags ahead of time, and then pass +the parsed flag object into SystemConfigGetters. But this way, we avoid +having to pass down variables from click just to get config values.

+
+ +
+
+splitgraph.config.argument_config.get_argument_config_value(key: str, default_return: Optional[str] = None)Optional[str]
+

Get get the value of an argument, where value is the argument +immediately following the argument matching a key in ARG_KEYS, e.g.:

+
+

SYS_ARGS = [“–namespace”, “foo”] +–> return “foo”

+
+

Otherwise, return default_return

+
+ +
+
+

splitgraph.config.config module

+
+
+splitgraph.config.config.chain_getters(getters: Sequence[Callable[[str], Optional[str]]], key: str, default_return: Optional[str] = None)Optional[str]
+
+ +
+
+splitgraph.config.config.create_config_dict()Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create and return a dict of all known config values

+
+ +
+
+splitgraph.config.config.get_all_in_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str)Dict[str, Union[Dict[str, str], str]]
+

Get all subsections from a config (e.g. config[“data_sources”])

+
+ +
+
+splitgraph.config.config.get_all_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str)Dict[str, str]
+
+ +
+
+splitgraph.config.config.get_from_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, item: str)str
+
+ +
+
+splitgraph.config.config.get_from_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str)str
+

Return a singleton variable from a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.get_singleton(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], item: str)str
+

Return a singleton (not a section) variable from the config.

+
+ +
+
+splitgraph.config.config.lazy_get_config_value(key: str, default_return: Optional[str] = None)Optional[Union[str, Dict[str, Dict[str, str]]]]
+

Get the config value for a key in the following precedence +Otherwise return default_return

+
+ +
+
+splitgraph.config.config.patch_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], patch: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Recursively updates a nested configuration dictionary:

+
+
patch_config(
+
&lbrace;“key_1”: “value_1”,

“dict_1”: &lbrace;“key_1”: “value_1”&rbrace;&rbrace;,

+
+
&lbrace;“key_1”: “value_2”,

“dict_1”: &lbrace;“key_2”: “value_2”&rbrace;&rbrace;) == &lbrace;“key_1”: “value_2”, +“dict_1”: &lbrace;“key_1”: “value_1”, “key_2”: “value_2”&rbrace;&rbrace;

+
+
+
+
+
+
Parameters
+
    +
  • config – Config dictionary

  • +
  • patch – Dictionary with the path

  • +
+
+
Returns
+

New patched dictionary

+
+
+
+ +
+
+splitgraph.config.config.set_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str, value: str)None
+

Set a singleton variable in a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.update_config_dict_from_arguments(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sys.argv +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_env_vars(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading os.environ +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_file(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], sg_config_file: str)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sg_config_file +and overwriting any keys according to the rules in config_file_config

+

Return updated copy of config_dict.

+
+ +
+
+

splitgraph.config.config_file_config module

+
+
+splitgraph.config.config_file_config.accumulate_lists(config_dict: Dict[str, Union[Dict[str, str], str]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Transform a config_dict to “accumulate” objects “nested” via key name

+

Because ConfigParser does not support nesting, we implement our own +syntax via the key names of sections. The ‘:’ character can be used in +section names to specify the left and right key. Example:

+
.ini config             new config_dict
+
+                  ----->
+                    |
+[remote: remote1]   |   &lbrace;
+SG_ENV_VAR=foo      |       **rest_of_config_dict,
+                    |       "remotes": &lbrace;
+[origin: origin1]   |           "remote1": &lbrace;
+SG_ENV_VAR=bar      |               "SG_ENV_VAR": "foo"
+                    |           &rbrace;
+[origin: origin2]   |       &rbrace;,
+SG_ENV_VAR=bax      |       "origins": &lbrace;
+                    |           "origin1": &lbrace;
+                    |               "SG_ENV_VAR": "bar"
+                    |           &rbrace;,
+                    |           "origin2": &lbrace;
+                    |               "SG_ENV_VAR": "bax"
+                    |           &rbrace;
+                    |       &rbrace;
+                    |   &rbrace;
+                    |
+                  ----->
+
+
+

:return a new, updated copy of config_dict

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_config_file(sg_file: str, **kwargs)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create a dict from ConfigParser, apply transformations to it.

+

Return parsed and transformed config_dict.

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_file(sg_file: str, **kwargs)Dict[str, Dict[str, str]]
+
+ +
+
+splitgraph.config.config_file_config.hoist_section(config_dict: Dict[str, Dict[str, str]], section: str = 'defaults')Dict[str, Union[Dict[str, str], str]]
+

If a section exists called <hoist_section>, hoist it to the top level +This is useful for overriding default configs from within a config file

+

Transform config_dict to “hoist” any config values from a section +into the top level (thus, overriding environment variables), +when the name of the section matches hoist_section.

+

Return a new, updated copy of config_dict.

+
+ +
+
+splitgraph.config.config_file_config.transform_config_dict(config_dict: Dict[str, Dict[str, str]], **kwargs)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Apply transformations to the raw ConfigParser.config object

+
+
    +
  1. hoist_section

  2. +
  3. accumulate_lists

  4. +
+
+

Return the a new, updated copy of config_dict.

+
+ +
+
+

splitgraph.config.default_config module

+
+
+splitgraph.config.default_config.get_default_config_value(key: str, default_return: Optional[str] = None)Any
+

Get the hard-coded default value of a config key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.environment_config module

+
+
+splitgraph.config.environment_config.get_environment_config_value(key: str, default_return: Optional[str] = None)Optional[str]
+

Get the environment variable value of the environment variable matching key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.export module

+

Routines for exporting the config back into text.

+
+
+splitgraph.config.export.overwrite_config(new_config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_path: str, include_defaults: bool = False)None
+

Serialize the new config dictionary and overwrite the current config file. +Note: this will delete all comments in the config!

+
+
Parameters
+
    +
  • new_config – Config dictionary.

  • +
  • config_path – Path to the config file.

  • +
  • include_defaults – Whether to include values that are the same +as their defaults.

  • +
+
+
+
+ +
+
+splitgraph.config.export.serialize_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_format: bool, no_shielding: bool, include_defaults: bool = True)str
+

Pretty-print the configuration or print it in the Splitgraph config file format.

+
+
Parameters
+
    +
  • config – Configuration dictionary.

  • +
  • config_format – Output configuration in the Splitgraph config file format.

  • +
  • no_shielding – Don’t replace sensitive values (like passwords) with asterisks

  • +
  • include_defaults – Emit the config variable even if it’s the same as the default.

  • +
+
+
Returns
+

Textual representation of the config.

+
+
+
+ +
+
+splitgraph.config.export.serialize_engine_config(engine_name: str, conn_params: Dict[str, str], no_shielding: bool)str
+

Output the config section with connection parameters for a single engine.

+
+
Parameters
+
    +
  • engine_name – Name of the engine

  • +
  • conn_params – Dictionary of connection parameters

  • +
  • no_shielding – Don’t replace passwords with asterisks

  • +
+
+
+
+ +
+
+

splitgraph.config.keys module

+
+
+splitgraph.config.keys.SENSITIVE_KEY_SUFFIXES = ['_PWD', '_TOKEN']
+

Warning: Every key in DEFAULTS must have a key in ARGUMENT_KEY_MAP +If you add/remove keys from DEFAULTS, make sure to do so here too.

+
+ +
+
+

splitgraph.config.system_config module

+
+
+splitgraph.config.system_config.file_exists(_dir: str, filename: str)bool
+
+ +
+
+splitgraph.config.system_config.get_config_file(default_return: None = None)Optional[str]
+

Get the location of an existing SG_CONFIG_FILE on the system with +a valid name. Do not attempt to parse the config file, just return +its location.

+

Otherwise, return default_return

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_dirs()List[str]
+

Get any explicitly defined config file directories, +which are directories where we should search for files from +VALID_CONFIG_FILE_NAMES.

+

This list is defined similar to $PATH, as a colon (:) delimited +string, either in:

+
+
    +
  • argument flag –config-dirs

  • +
  • or environment key SG_CONFIG_DIRS

  • +
+
+

Or a single directory defined in either

+
+
    +
  • argument flag –config-dir

  • +
  • environment key SG_CONFIG_DIR

  • +
+
+

If both plural and single are defined, join them together.

+

Return a list of valid paths that are set, or an empty list.

+

Print a warning if any paths to not exist.

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_location()Optional[str]
+

Get the explicitly defined location of config file, if defined.

+

The location will either be defined in:

+
+
    +
  • argument flag –config-file

  • +
  • or environment key SG_CONFIG_FILE

  • +
+
+

In keeping with assumptions about priority, argument flag has +higher priority than environment value.

+

If the location is set, and points to an existing file, return location.

+

Otherwise return None

+

Print a warning if location is set but points to non-existing file.

+
+ +
+
+splitgraph.config.system_config.get_system_config_value(key: str, default_return: None = None)Optional[str]
+
+ +
+
+splitgraph.config.system_config.is_file(filename: str)bool
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.core.indexing.mdx b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.core.indexing.mdx new file mode 100644 index 00000000..794d6acf --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.core.indexing.mdx @@ -0,0 +1,141 @@ + + + +export const meta = { + title: "splitgraph.core.indexing package", + id: "splitgraph.core.indexing package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.core.indexing.bloom module

+

Bloom filtering on fragments for equality queries.

+
+
+splitgraph.core.indexing.bloom.describe(index_tuple: Tuple[int, str])str
+

Returns a pretty-printed summary of the bloom filter

+
+
Parameters
+

index_tuple – Tuple of (k, base64-encoded fingerprint) +returned by generate_bloom_index

+
+
Returns
+

String

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.filter_bloom_index(engine: PsycopgEngine, object_ids: List[str], quals: Any)List[str]
+

Runs a bloom filter on given qualifiers using the given objects’ previously-generated +fingerprints.

+
+
Parameters
+
    +
  • engine – Object engine

  • +
  • object_ids – Object IDs

  • +
  • quals – List of qualifiers

  • +
+
+
Returns
+

List of object IDs that might match the qualifiers in quals (including +IDs that don’t have a bloom index).

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.generate_bloom_index(engine: PsycopgEngine, object_id: str, changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], column: str, probability: Optional[float] = None, size: Optional[int] = None)Tuple[int, str]
+

Generates a bloom filter signature for a given column and a given fragment. Bloom filters +can answer queries asking whether an item is definitely not in a given set or possibly can be.

+

The tradeoff is between the probability of a false positive (item said to be in the set when +it actually isn’t) and the size of the filter.

+

Bloom filters also have an extra parameter, k, or the number of bits in the signature that +a certain item flips. This parameter has an optimal value for a given number of distinct items +or a probability and so isn’t explicitly passed by the user.

+
+
Parameters
+
    +
  • engine – Object engine the fragment is cached in.

  • +
  • object_id – Fragment ID

  • +
  • changeset – Optional, if specified, the old column values are included in the index.

  • +
  • column – Column name to generate the index on.

  • +
  • probability – Probability of a false positive. Either this or the size of the filter must +be specified, but not both.

  • +
  • size – Size of the filter, in bytes.

  • +
+
+
Returns
+

Dictionary to be inserted into the index.

+
+
+
+ +
+
+

splitgraph.core.indexing.range module

+
+
+splitgraph.core.indexing.range.extract_min_max_pks(engine: PsycopgEngine, fragments: List[str], table_pks: List[str], table_pk_types: List[str])Any
+

Extract minimum/maximum PK values for given fragments.

+
+
Parameters
+
    +
  • engine – Engine the objects live on

  • +
  • fragments – IDs of objects

  • +
  • table_pks – List of columns forming the table primary key

  • +
  • table_pk_types – List of types for table PK columns

  • +
+
+
Returns
+

List of min/max primary key for every object.

+
+
+
+ +
+
+splitgraph.core.indexing.range.filter_range_index(metadata_engine: PsycopgEngine, object_ids: List[str], quals: Any, column_types: Dict[str, str])List[str]
+
+ +
+
+splitgraph.core.indexing.range.generate_range_index(object_engine: PsycopgEngine, object_id: str, table_schema: TableSchema, changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], columns: Optional[List[str]] = None)Dict[str, Tuple[T, T]]
+

Calculate the minimum/maximum values of every column in the object (including deleted values).

+
+
Parameters
+
    +
  • object_engine – Engine the object is located on

  • +
  • object_id – ID of the object.

  • +
  • table_schema – Schema of the table

  • +
  • changeset – Changeset (old values will be included in the index)

  • +
  • columns – Columns to run the index on (default all)

  • +
+
+
Returns
+

Dictionary of &lbrace;column: [min, max]&rbrace;

+
+
+
+ +
+
+splitgraph.core.indexing.range.quals_to_sql(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], column_types: Dict[str, str])Tuple[psycopg2.sql.Composable, Tuple]
+

Convert a list of qualifiers in CNF to a fragment of a Postgres query +:param quals: Qualifiers in CNF +:param column_types: Dictionary of column names and their types +:return: SQL Composable object and a tuple of arguments to be mogrified into it.

+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.core.mdx b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.core.mdx new file mode 100644 index 00000000..e48cdce6 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.core.mdx @@ -0,0 +1,2021 @@ + + + +export const meta = { + title: "splitgraph.core package", + id: "splitgraph.core package" +}; + +
+

Module contents

+

Core Splitgraph functionality: versioning and sharing tables.

+

The main point of interaction with the Splitgraph API is a splitgraph.core.repository.Repository object +representing a local or a remote Splitgraph repository. Repositories can be created using one of the +following methods:

+
+
    +
  • Directly by invoking Repository(namespace, name, engine) where engine is the engine that the repository +belongs to (that can be gotten with get_engine(engine_name). If the created repository doesn’t actually exist +on the engine, it must first be initialized with repository.init().

  • +
  • By using splitgraph.core.engine.lookup_repository() which will search for the repository on the current +lookup path.

  • +
+
+
+ + +
+

Submodules

+
+
+

splitgraph.core.common module

+

Common internal functions used by Splitgraph commands.

+
+
+class splitgraph.core.common.CallbackList(iterable=(), /)
+

Bases: list

+

Used to pass around and call multiple callbacks at once.

+
+ +
+
+class splitgraph.core.common.Tracer
+

Bases: object

+

Accumulates events and returns the times between them.

+
+
+get_durations()List[Tuple[str, float]]
+

Return all events and durations between them. +:return: List of (event name, time to this event from the previous event (or start))

+
+ +
+
+get_total_time()float
+
+
Returns
+

Time from start to the final logged event.

+
+
+
+ +
+
+log(event: str)None
+

Log an event at the current time +:param event: Event name

+
+ +
+ +
+
+splitgraph.core.common.adapt(value: Any, pg_type: str)Any
+

Coerces a value with a PG type into its Python equivalent.

+
+
Parameters
+
    +
  • value – Value

  • +
  • pg_type – Postgres datatype

  • +
+
+
Returns
+

Coerced value.

+
+
+
+ +
+
+splitgraph.core.common.aggregate_changes(query_result: List[Tuple[int, int]], initial: Optional[Tuple[int, int, int]] = None)Tuple[int, int, int]
+

Add a changeset to the aggregated diff result

+
+ +
+
+splitgraph.core.common.coerce_val_to_json(val: Any)Any
+

Turn a Python value to a string/float that can be stored as JSON.

+
+ +
+
+splitgraph.core.common.ensure_metadata_schema(engine: PsycopgEngine)None
+

Create or migrate the metadata schema splitgraph_meta that stores the hash tree of schema +snapshots (images), tags and tables. +This means we can’t mount anything under the schema splitgraph_meta – much like we can’t have a folder +“.git” under Git version control…

+
+ +
+
+splitgraph.core.common.gather_sync_metadata(target: Repository, source: Repository, overwrite_objects=False, overwrite_tags=False, single_image: Optional[str] = None)Any
+

Inspects two Splitgraph repositories and gathers metadata that is required to bring target up to +date with source.

+
+
Parameters
+
    +
  • target – Target Repository object

  • +
  • source – Source repository object

  • +
  • overwrite_objects – If True, will return metadata for all objects +belonging to new images (or existing image if single_image=True)

  • +
  • single_image – If set, only grab a single image with this hash/tag from the source.

  • +
  • overwrite_tags – If True and single_image is set, will return all tags for that image. +If single_image is not set, will return all tags in the source repository. +If False, will only return tags in the source that don’t exist on the target.

  • +
+
+
Returns
+

Tuple of metadata for new_images, new_tables, object_locations, object_meta, tags

+
+
+
+ +
+
+splitgraph.core.common.get_data_safe(package: str, resource: str)bytes
+
+ +
+
+splitgraph.core.common.get_temporary_table_id()str
+

Generate a random ID for temporary/staging objects that haven’t had their ID calculated yet.

+
+ +
+
+splitgraph.core.common.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.common.manage_audit(func: Callable)Callable
+

A decorator to be put around various Splitgraph commands +that adds/removes audit triggers for new/committed/deleted tables.

+
+ +
+
+splitgraph.core.common.manage_audit_triggers(engine: PostgresEngine, object_engine: Optional[PostgresEngine] = None)None
+

Does bookkeeping on audit triggers / audit table:

+
+
    +
  • Detect tables that are being audited that don’t need to be any more +(e.g. they’ve been unmounted)

  • +
  • Drop audit triggers for those and delete all audit info for them

  • +
  • Set up audit triggers for new tables

  • +
+
+

If the metadata engine isn’t the same as the object engine, this does nothing.

+
+
Parameters
+
    +
  • engine – Metadata engine with information about images and their checkout state

  • +
  • object_engine – Object engine where the checked-out table and the audit triggers are located.

  • +
+
+
+
+ +
+
+splitgraph.core.common.resource_path(relative_path)
+
+ +
+
+splitgraph.core.common.set_head(repository: Repository, image: Optional[str])None
+

Sets the HEAD pointer of a given repository to a given image. Shouldn’t be used directly.

+
+ +
+
+splitgraph.core.common.set_tag(repository: Repository, image_hash: Optional[str], tag: str)None
+

Internal function – add a tag to an image.

+
+ +
+
+splitgraph.core.common.set_tags_batch(repository: Repository, hashes_tags: List[Tuple[str, str]])None
+
+ +
+
+splitgraph.core.common.slow_diff(repository: Repository, table_name: str, image_1: Optional[str], image_2: Optional[str], aggregate: bool)Union[Tuple[int, int, int], List[Tuple[bool, Tuple]]]
+

Materialize both tables and manually diff them

+
+ +
+
+

splitgraph.core.engine module

+

Routines for managing Splitgraph engines, including looking up repositories and managing objects.

+
+
+splitgraph.core.engine.get_current_repositories(engine: PostgresEngine)List[Tuple[Repository, Optional[Image]]]
+

Lists all repositories currently in the engine.

+
+
Parameters
+

engine – Engine

+
+
Returns
+

List of (Repository object, current HEAD image)

+
+
+
+ +
+
+splitgraph.core.engine.init_engine(skip_object_handling: bool = False)None
+

Initializes the engine by:

+
+
    +
  • performing any required engine-custom initialization

  • +
  • creating the metadata tables

  • +
+
+
+
Parameters
+

skip_object_handling – If True, skips installing routines related to +object handling and checkouts (like audit triggers and CStore management).

+
+
+
+ +
+
+splitgraph.core.engine.lookup_repository(name: str, include_local: bool = False)Repository
+

Queries the SG engines on the lookup path to locate one hosting the given repository.

+
+
Parameters
+
    +
  • name – Repository name

  • +
  • include_local – If True, also queries the local engine

  • +
+
+
Returns
+

Local or remote Repository object

+
+
+
+ +
+
+splitgraph.core.engine.repository_exists(repository: Repository)bool
+

Checks if a repository exists on the engine.

+
+
Parameters
+

repository – Repository object

+
+
+
+ +
+
+

splitgraph.core.fdw_checkout module

+
+
+

splitgraph.core.fragment_manager module

+

Routines related to storing tables as fragments.

+
+
+class splitgraph.core.fragment_manager.Digest(shorts: Tuple[int, ])
+

Bases: object

+

Homomorphic hashing similar to LtHash (but limited to being backed by 256-bit hashes). The main property is that +for any rows A, B, LtHash(A) + LtHash(B) = LtHash(A+B). This is done by construction: we simply hash individual +rows and then do bit-wise addition / subtraction of individual hashes to come up with the full table hash.

+

Hence, the content hash of any Splitgraph table fragment is the sum of hashes of its added rows minus the sum +of hashes of its deleted rows (including the old values of the rows that have been updated). This has a very +useful implication: the hash of a full Splitgraph table is equal to the sum of hashes of its individual fragments.

+

This property can be used to simplify deduplication.

+
+
+classmethod empty()splitgraph.core.fragment_manager.Digest
+

Return an empty Digest instance such that for any Digest D, D + empty == D - empty == D

+
+ +
+
+classmethod from_hex(hex_string: str)splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 64-characters (256-bit) hexadecimal string

+
+ +
+
+classmethod from_memoryview(memory: Union[bytes, memoryview])splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 256-bit memoryview/bytearray.

+
+ +
+
+hex()str
+

Convert the hash into a hexadecimal value.

+
+ +
+ +
+
+class splitgraph.core.fragment_manager.FragmentManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.metadata_manager.MetadataManager

+

A storage engine for Splitgraph tables. Each table can be stored as one or more immutable fragments that can +optionally overwrite each other. When a new table is created, it’s split up into multiple base fragments. When +a new version of the table is written, the audit log is inspected and one or more patch fragments are created, +to be based on the fragments the previous version of the table consisted of. Only the top fragments in this stack +are stored in the table metadata: to reconstruct the whole table, the links from the top fragments down to the +base fragments have to be followed.

+

In addition, the fragments engine also supports min-max indexing on fragments: this is used to only fetch fragments +that are required for a given query.

+
+
+calculate_content_hash(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None, chunk_id_col: Optional[str] = None, chunk_id: Optional[int] = None)Tuple[str, int]
+

Calculates the homomorphic hash of table contents.

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Name of the table

  • +
  • table_schema – Schema of the table

  • +
  • chunk_id_col – Column the table is partitioned on

  • +
  • chunk_id – Column value to get rows from

  • +
+
+
Returns
+

A 64-character (256-bit) hexadecimal string with the content hash of the table +and the number of rows in the hash.

+
+
+
+ +
+
+calculate_fragment_insertion_hash_stats(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None)Tuple[splitgraph.core.fragment_manager.Digest, int]
+

Calculate the homomorphic hash of just the rows that a given fragment inserts +:param schema: Schema the fragment is stored in. +:param table: Name of the table the fragment is stored in. +:return: A Digest object and the number of inserted rows

+
+ +
+
+create_base_fragment(source_schema: str, source_table: str, namespace: str, chunk_id_col: Optional[str] = None, chunk_id: Optional[int] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None)str
+
+ +
+
+delete_objects(objects: Union[Set[str], List[str]])None
+

Deletes objects from the Splitgraph cache

+
+
Parameters
+

objects – A sequence of objects to be deleted

+
+
+
+ +
+
+filter_fragments(object_ids: List[str], table: Table, quals: Any)List[str]
+

Performs fuzzy filtering on the given object IDs using the index and a set of qualifiers, discarding +objects that definitely do not match the qualifiers.

+
+
Parameters
+
    +
  • object_ids – List of object IDs to filter.

  • +
  • table – A Table object the objects belong to.

  • +
  • quals

    List of qualifiers in conjunctive normal form that will be matched against the index. +Objects that definitely don’t match these qualifiers will be discarded.

    +

    A list containing [[qual_1, qual_2], [qual_3, qual_4]] will be interpreted as +(qual_1 OR qual_2) AND (qual_3 OR qual_4).

    +

    Each qual is a tuple of (column_name, operator, value) where +operator can be one of >, >=, <, <=, =.

    +

    For unknown operators, it will be assumed that all fragments might match that clause.

    +

  • +
+
+
Returns
+

List of objects that might match the given qualifiers.

+
+
+
+ +
+
+generate_object_index(object_id: str, table_schema: List[splitgraph.core.types.TableColumn], changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None)Dict[str, Any]
+

Queries the max/min values of a given fragment for each column, used to speed up querying.

+
+
Parameters
+
    +
  • object_id – ID of an object

  • +
  • table_schema – Schema of the table the object belongs to.

  • +
  • changeset – Optional, if specified, the old row values are included in the index.

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
Returns
+

Dict containing the object index.

+
+
+
+ +
+
+get_min_max_pks(fragments: List[str], table_pks: List[Tuple[str, str]])List[Tuple[Tuple, Tuple]]
+

Get PK ranges for given fragments using the index (without reading the fragments).

+
+
Parameters
+
    +
  • fragments – List of object IDs (must be registered and with the same schema)

  • +
  • table_pks – List of tuples (column, type) that form the object PK.

  • +
+
+
Returns
+

List of (min, max) PK for every fragment where PK is a tuple. +If a fragment doesn’t exist or doesn’t have a corresponding index entry, +a SplitGraphError is raised.

+
+
+
+ +
+
+record_table_as_base(repository: Repository, table_name: str, image_hash: str, chunk_size: Optional[int] = 10000, source_schema: Optional[str] = None, source_table: Optional[str] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False)List[str]
+

Copies the full table verbatim into one or more new base fragments and registers them.

+
+
Parameters
+
    +
  • repository – Repository

  • +
  • table_name – Table name

  • +
  • image_hash – Hash of the new image

  • +
  • chunk_size – If specified, splits the table into multiple objects with a given number of rows

  • +
  • source_schema – Override the schema the source table is stored in

  • +
  • source_table – Override the name of the table the source is stored in

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Key to sort data inside each chunk by.

  • +
  • overwrite – Overwrite physical objects that already exist.

  • +
+
+
+
+ +
+
+record_table_as_patch(old_table: Table, schema: str, image_hash: str, new_schema_spec: List[splitgraph.core.types.TableColumn] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False)None
+

Flushes the pending changes from the audit table for a given table and records them, +registering the new objects.

+
+
Parameters
+
    +
  • old_table – Table object pointing to the current HEAD table

  • +
  • schema – Schema the table is checked out into.

  • +
  • image_hash – Image hash to store the table under

  • +
  • new_schema_spec – New schema of the table (use the old table’s schema by default).

  • +
  • split_changeset – See Repository.commit for reference

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
+
+ +
+ +
+
+splitgraph.core.fragment_manager.get_chunk_groups(chunks: List[Tuple[str, Any, Any]])List[List[Tuple[str, Any, Any]]]
+

Takes a list of chunks and their boundaries and combines them +into independent groups such that chunks from no two groups +overlap with each other (intervals are assumed to be closed, +e.g. chunk (1,2) overlaps with chunk (2,3)).

+

The original order of chunks is preserved within each group.

+

For example, 4 chunks A, B, C, D that don’t overlap each other +will be grouped into 4 groups [A], [B], [C], [D].

+

If A overlaps B, the result will be [A, B], [C], [D].

+

If in addition B overlaps C (but not A), the result will be [A, B, C], [D].

+

If in addition D overlaps any of A, B or C, the result will be [A, B, C, D] +(despite that D is located before A: it will be last since it was last in the +original list).

+
+
Parameters
+

chunks – List of (chunk_id, start, end)

+
+
Returns
+

List of lists of (chunk_id, start, end)

+
+
+
+ +
+
+

splitgraph.core.image module

+

Image representation and provenance

+
+
+class splitgraph.core.image.Image(image_hash: str, parent_id: Optional[str], created: datetime.datetime, comment: str, provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], repository: Repository)
+

Bases: tuple

+

Represents a Splitgraph image. Should’t be created directly, use Image-loading methods in the +splitgraph.core.repository.Repository class instead.

+
+
+checkout(force: bool = False, layered: bool = False)None
+

Checks the image out, changing the current HEAD pointer. Raises an error +if there are pending changes to its checkout.

+
+
Parameters
+
    +
  • force – Discards all pending changes to the schema.

  • +
  • layered – If True, uses layered querying to check out the image (doesn’t materialize tables +inside of it).

  • +
+
+
+
+ +
+
+property comment
+

Alias for field number 3

+
+ +
+
+property created
+

Alias for field number 2

+
+ +
+
+delete_tag(tag: str)None
+

Deletes a tag from an image.

+
+
Parameters
+

tag – Tag to delete.

+
+
+
+ +
+
+property engine
+
+ +
+
+get_log()List[splitgraph.core.image.Image]
+

Repeatedly gets the parent of a given image until it reaches the bottom.

+
+ +
+
+get_parent_children()Tuple[Optional[str], List[str]]
+

Gets the parent and a list of children of a given image.

+
+ +
+
+get_size()int
+

Get the physical size used by the image’s objects (including those that might be +shared with other images).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of image’s +objects have been downloaded.

+
+
Returns
+

Size of the image in bytes.

+
+
+
+ +
+
+get_table(table_name: str)splitgraph.core.table.Table
+

Returns a Table object representing a version of a given table. +Contains a list of objects that the table is linked to and the table’s schema.

+
+
Parameters
+

table_name – Name of the table

+
+
Returns
+

Table object

+
+
+
+ +
+
+get_tables()List[str]
+

Gets the names of all tables inside of an image.

+
+ +
+
+get_tags()
+

Lists all tags that this image has.

+
+ +
+
+property image_hash
+

Alias for field number 0

+
+ +
+
+property object_engine
+
+ +
+
+property parent_id
+

Alias for field number 1

+
+ +
+
+provenance(reverse=False, engine=None)List[Tuple[Repository, str]]
+

Inspects the image’s parent chain to come up with a set of repositories and their hashes +that it was created from.

+

If reverse is True, returns a list of images that were created _from_ this image. If +this image is on a remote repository, engine can be passed in to override the engine +used for the lookup of dependents.

+
+
Returns
+

List of (repository, image_hash)

+
+
+
+ +
+
+property provenance_data
+

Alias for field number 4

+
+ +
+
+query_schema(wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', commit: bool = True)Iterator[str]
+

Creates a temporary schema with tables in this image mounted as foreign tables that can be accessed via +read-only layered querying. On exit from the context manager, the schema is discarded.

+
+
Returns
+

The name of the schema the image is located in.

+
+
+
+ +
+
+property repository
+

Alias for field number 5

+
+ +
+
+set_provenance(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]])None
+

Sets the image’s provenance. Internal function called by the Splitfile interpreter, shouldn’t +be called directly as it changes the image after it’s been created.

+
+
Parameters
+

provenance_data – List of parsed Splitfile commands and their data.

+
+
+
+ +
+
+tag(tag: str)None
+

Tags a given image. All tags are unique inside of a repository. If a tag already exists, it’s removed +from the previous image and given to the new image.

+
+
Parameters
+

tag – Tag to set. ‘latest’ and ‘HEAD’ are reserved tags.

+
+
+
+ +
+
+to_splitfile(ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None)List[str]
+

Recreate the Splitfile that can be used to reconstruct this image.

+
+
Parameters
+
    +
  • ignore_irreproducible – If True, ignore commands from irreproducible Splitfile lines +(like MOUNT or custom commands) and instead emit a comment (this results in an invalid Splitfile).

  • +
  • source_replacement – A dictionary of repositories and image hashes/tags specifying how to replace the +dependencies of this Splitfile (table imports and FROM commands).

  • +
+
+
Returns
+

A list of Splitfile commands that can be fed back into the executor.

+
+
+
+ +
+ +
+
+splitgraph.core.image.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.image.reconstruct_splitfile(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None)List[str]
+

Recreate the Splitfile that can be used to reconstruct an image.

+
+ +
+
+

splitgraph.core.image_manager module

+
+
+class splitgraph.core.image_manager.ImageManager(repository: Repository)
+

Bases: object

+

Collects various image-related functions.

+
+
+add(parent_id: Optional[str], image: str, created: Optional[datetime.datetime] = None, comment: Optional[str] = None, provenance_data: Optional[List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]] = None)None
+

Registers a new image in the Splitgraph image tree.

+

Internal method used by actual image creation routines (committing, importing or pulling).

+
+
Parameters
+
    +
  • parent_id – Parent of the image

  • +
  • image – Image hash

  • +
  • created – Creation time (defaults to current timestamp)

  • +
  • comment – Comment (defaults to empty)

  • +
  • provenance_data – Provenance data that can be used to reconstruct the image.

  • +
+
+
+
+ +
+
+add_batch(images: List[splitgraph.core.image.Image])None
+

Like add, but registers multiple images at the same time. Used in push/pull +to avoid a roundtrip to the registry for each image +:param images: List of Image objects. Namespace and repository will be patched

+
+

with this repository.

+
+
+ +
+
+by_hash(image_hash: str)splitgraph.core.image.Image
+

Returns an image corresponding to a given (possibly shortened) image hash. If the image hash +is ambiguous, raises an error. If the image does not exist, raises an error or returns None.

+
+
Parameters
+

image_hash – Image hash (can be shortened).

+
+
Returns
+

Image

+
+
+
+ +
+
+by_tag(tag: str, raise_on_none: bool = True)Optional[splitgraph.core.image.Image]
+

Returns an image with a given tag

+
+
Parameters
+
    +
  • tag – Tag. ‘latest’ is a special case: it returns the most recent image in the repository.

  • +
  • raise_on_none – Whether to raise an error or return None if the tag doesn’t exist.

  • +
+
+
+
+ +
+
+delete(images: Sequence[str])None
+

Deletes a set of Splitgraph images from the repository. Note this doesn’t check whether +this will orphan some other images in the repository and can make the state of the repository +invalid.

+

Image deletions won’t be replicated on push/pull (those can only add new images).

+
+
Parameters
+

images – List of image IDs

+
+
+
+ +
+
+get_all_child_images(start_image: str)Set[str]
+

Get all children of start_image of any degree.

+
+ +
+
+get_all_parent_images(start_images: Set[str])Set[str]
+

Get all parents of the ‘start_images’ set of any degree.

+
+ +
+ +
+
+

splitgraph.core.metadata_manager module

+

Classes related to managing table/image/object metadata tables.

+
+
+class splitgraph.core.metadata_manager.MetadataManager(metadata_engine: PsycopgEngine)
+

Bases: object

+

A data access layer for the metadata tables in the splitgraph_meta schema that concerns itself +with image, table and object information.

+
+
+cleanup_metadata()List[str]
+

Go through the current metadata and delete all objects that aren’t required +by any table on the engine.

+
+
Returns
+

List of objects that have been deleted.

+
+
+
+ +
+
+delete_object_meta(object_ids: Sequence[str])
+

Delete metadata for multiple objects (external locations, indexes, hashes). +This doesn’t delete physical objects.

+
+
Parameters
+

object_ids – Object IDs to delete

+
+
+
+ +
+
+get_all_objects()List[str]
+

Gets all objects currently in the Splitgraph tree.

+
+
Returns
+

List of object IDs.

+
+
+
+ +
+
+get_external_object_locations(objects: List[str])List[Tuple[str, str, str]]
+

Gets external locations for objects.

+
+
Parameters
+

objects – List of object IDs stored externally.

+
+
Returns
+

List of (object_id, location, protocol).

+
+
+
+ +
+
+get_new_objects(object_ids: List[str])List[str]
+

Get object IDs from the passed list that don’t exist in the tree.

+
+
Parameters
+

object_ids – List of objects to check

+
+
Returns
+

List of unknown object IDs.

+
+
+
+ +
+
+get_object_meta(objects: List[str])Dict[str, splitgraph.core.metadata_manager.Object]
+

Get metadata for multiple Splitgraph objects from the tree

+
+
Parameters
+

objects – List of objects to get metadata for.

+
+
Returns
+

Dictionary of object_id -> Object

+
+
+
+ +
+
+get_objects_for_repository(repository: Repository, image_hash: Optional[str] = None)List[str]
+
+ +
+
+get_unused_objects(threshold: Optional[int] = None)List[Tuple[str, datetime.datetime]]
+

Get a list of all objects in the metadata that aren’t used by any table and can be +safely deleted.

+
+
Parameters
+

threshold – Only return objects that were created earlier than this (in minutes)

+
+
Returns
+

List of objects and their creation times.

+
+
+
+ +
+
+overwrite_table(repository: Repository, image_hash: str, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+
+ +
+
+register_object_locations(object_locations: List[Tuple[str, str, str]])None
+

Registers external locations (e.g. HTTP or S3) for Splitgraph objects. +Objects must already be registered in the object tree.

+
+
Parameters
+

object_locations – List of (object_id, location, protocol).

+
+
+
+ +
+
+register_objects(objects: List[splitgraph.core.metadata_manager.Object], namespace: Optional[str] = None)None
+

Registers multiple Splitgraph objects in the tree.

+
+
Parameters
+
    +
  • objects – List of Object objects.

  • +
  • namespace – If specified, overrides the original object namespace, required +in the case where the remote repository has a different namespace than the local one.

  • +
+
+
+
+ +
+
+register_tables(repository: Repository, table_meta: List[Tuple[str, str, List[splitgraph.core.types.TableColumn], List[str]]])None
+

Links tables in an image to physical objects that they are stored as. +Objects must already be registered in the object tree.

+
+
Parameters
+
    +
  • repository – Repository that the tables belong to.

  • +
  • table_meta – A list of (image_hash, table_name, table_schema, object_ids).

  • +
+
+
+
+ +
+ +
+
+class splitgraph.core.metadata_manager.Object(object_id: str, format: str, namespace: str, size: int, created: datetime.datetime, insertion_hash: str, deletion_hash: str, object_index: Dict[str, Any], rows_inserted: int, rows_deleted: int)
+

Bases: tuple

+

Represents a Splitgraph object that tables are composed of.

+
+
+property created
+

Alias for field number 4

+
+ +
+
+property deletion_hash
+

Alias for field number 6

+
+ +
+
+property format
+

Alias for field number 1

+
+ +
+
+property insertion_hash
+

Alias for field number 5

+
+ +
+
+property namespace
+

Alias for field number 2

+
+ +
+
+property object_id
+

Alias for field number 0

+
+ +
+
+property object_index
+

Alias for field number 7

+
+ +
+
+property rows_deleted
+

Alias for field number 9

+
+ +
+
+property rows_inserted
+

Alias for field number 8

+
+ +
+
+property size
+

Alias for field number 3

+
+ +
+ +
+
+

splitgraph.core.migration module

+
+
+splitgraph.core.migration.get_installed_version(engine: PsycopgEngine, schema_name: str, version_table: str = 'version')Optional[Tuple[str, datetime.datetime]]
+
+ +
+
+splitgraph.core.migration.get_version_tuples(filenames: List[str])List[Tuple[Optional[str], str]]
+
+ +
+
+splitgraph.core.migration.make_file_list(schema_name: str, migration_path: List[Optional[str]])
+

Construct a list of file names from history of versions and schema name

+
+ +
+
+splitgraph.core.migration.set_installed_version(engine: PsycopgEngine, schema_name: str, version: str, version_table: str = 'version')
+
+ +
+
+splitgraph.core.migration.source_files_to_apply(engine: PsycopgEngine, schema_name: str, schema_files: List[str], version_table: str = 'version', static: bool = False, target_version: Optional[str] = None)Tuple[List[str], str]
+

Get the ordered list of .sql files to apply to the database

+
+ +
+
+

splitgraph.core.object_manager module

+

Functions related to creating, deleting and keeping track of physical Splitgraph objects.

+
+
+class splitgraph.core.object_manager.ObjectManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.fragment_manager.FragmentManager

+

Brings the multiple manager classes together and manages the object cache (downloading and uploading +objects as required in order to fulfill certain queries)

+
+
+cleanup()List[str]
+

Deletes all objects in the object_tree not required by any current repository, including their dependencies and +their remote locations. Also deletes all objects not registered in the object_tree.

+
+ +
+
+download_objects(source: Optional[splitgraph.core.object_manager.ObjectManager], objects_to_fetch: List[str], object_locations: List[Tuple[str, str, str]])List[str]
+

Fetches the required objects from the remote and stores them locally. +Does nothing for objects that already exist.

+
+
Parameters
+
    +
  • source – Remote ObjectManager. If None, will only try to download objects from the external location.

  • +
  • objects_to_fetch – List of object IDs to download.

  • +
  • object_locations – List of custom object locations, encoded as tuples (object_id, object_url, protocol).

  • +
+
+
+
+ +
+
+ensure_objects(table: Optional[Table], objects: Optional[List[str]] = None, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]] = None, defer_release: bool = False, tracer: Optional[splitgraph.core.common.Tracer] = None, upstream_manager: Optional[ObjectManager] = None)Iterator[Union[List[str], Tuple[List[str], splitgraph.core.common.CallbackList]]]
+

Resolves the objects needed to materialize a given table and makes sure they are in the local +splitgraph_meta schema.

+

Whilst inside this manager, the objects are guaranteed to exist. On exit from it, the objects are marked as +unneeded and can be garbage collected.

+
+
Parameters
+
    +
  • table – Table to materialize

  • +
  • objects – List of objects to download: one of table or objects must be specified.

  • +
  • quals – Optional list of qualifiers to be passed to the fragment engine. Fragments that definitely do +not match these qualifiers will be dropped. See the docstring for filter_fragments for the format.

  • +
  • defer_release – If True, won’t release the objects on exit.

  • +
+
+
Returns
+

If defer_release is True: List of table fragments and a callback that the caller must call +when the objects are no longer needed. If defer_release is False: just the list of table fragments.

+
+
+
+ +
+
+get_cache_occupancy()int
+
+
Returns
+

Space occupied by objects cached from external locations, in bytes.

+
+
+
+ +
+
+get_downloaded_objects(limit_to: Optional[List[str]] = None)List[str]
+

Gets a list of objects currently in the Splitgraph cache (i.e. not only existing externally.)

+
+
Parameters
+

limit_to – If specified, only the objects in this list will be returned.

+
+
Returns
+

Set of object IDs.

+
+
+
+ +
+
+get_total_object_size()
+
+
Returns
+

Space occupied by all objects on the engine, in bytes.

+
+
+
+ +
+
+make_objects_external(objects: List[str], handler: str, handler_params: Dict[Any, Any])None
+

Uploads local objects to an external location and marks them as being cached locally (thus making it possible +to evict or swap them out).

+
+
Parameters
+
    +
  • objects – Object IDs to upload. Will do nothing for objects that already exist externally.

  • +
  • handler – Object handler

  • +
  • handler_params – Extra handler parameters

  • +
+
+
+
+ +
+
+run_eviction(keep_objects: List[str], required_space: Optional[int] = None)None
+

Delete enough objects with zero reference count (only those, since we guarantee that whilst refcount is >0, +the object stays alive) to free at least required_space in the cache.

+
+
Parameters
+
    +
  • keep_objects – List of objects (besides those with nonzero refcount) that can’t be deleted.

  • +
  • required_space – Space, in bytes, to free. If the routine can’t free at least this much space, +it shall raise an exception. If None, removes all eligible objects.

  • +
+
+
+
+ +
+
+upload_objects(target: splitgraph.core.object_manager.ObjectManager, objects_to_push: List[str], handler: str = 'DB', handler_params: Optional[Dict[Any, Any]] = None)Sequence[Tuple[str, Optional[str]]]
+

Uploads physical objects to the remote or some other external location.

+
+
Parameters
+
    +
  • target – Target ObjectManager

  • +
  • objects_to_push – List of object IDs to upload.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote, FILE +to store them in a directory that can be accessed from the client and HTTP to upload them to HTTP.

  • +
  • handler_params – For HTTP, a dictionary &lbrace;“username”: username, “password”, password&rbrace;. For FILE, +a dictionary &lbrace;“path”: path&rbrace; specifying the directory where the objects shall be saved.

  • +
+
+
Returns
+

A list of (object_id, url) that specifies all objects were uploaded (skipping objects that +already exist on the remote).

+
+
+
+ +
+ +
+
+

splitgraph.core.output module

+
+
+splitgraph.core.output.conn_string_to_dict(connection: Optional[str])Dict[str, Any]
+
+ +
+
+splitgraph.core.output.parse_date(string: str)datetime.date
+
+ +
+
+splitgraph.core.output.parse_dt(string: str)datetime.datetime
+
+ +
+
+splitgraph.core.output.parse_repo_tag_or_hash(value, default='latest')
+
+ +
+
+splitgraph.core.output.parse_time(string: str)time.struct_time
+
+ +
+
+splitgraph.core.output.pluralise(word: str, number: int)str
+

1 banana, 2 bananas

+
+ +
+
+splitgraph.core.output.pretty_size(size: Union[int, float])str
+

Converts a size in bytes to its string representation (e.g. 1024 -> 1KiB) +:param size: Size in bytes

+
+ +
+
+splitgraph.core.output.slugify(text: str, max_length: int = 50)str
+
+ +
+
+splitgraph.core.output.truncate_line(line: str, length: int = 80)str
+

Truncates a line to a given length, replacing the remainder with …

+
+ +
+
+splitgraph.core.output.truncate_list(items: List[Any], max_entries: int = 10)str
+

Print a list, possibly truncating it to the specified number of entries

+
+ +
+
+

splitgraph.core.registry module

+

Functions for communicating with the remote Splitgraph catalog

+
+
+splitgraph.core.registry.get_info_key(engine: PostgresEngine, key: str)Optional[str]
+

Gets a configuration key from the remote registry, used to notify the client of the registry’s capabilities.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to get

  • +
+
+
+
+ +
+
+splitgraph.core.registry.set_info_key(engine: PostgresEngine, key: str, value: Union[bool, str])None
+

Sets a configuration value on the remote registry.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to set

  • +
  • value – New value for the key

  • +
+
+
+
+ +
+
+splitgraph.core.registry.setup_registry_mode(engine: PostgresEngine)None
+

Set up access policies/RLS:

+
    +
  • Normal users aren’t allowed to create tables/schemata (can’t do checkouts inside of a registry or +upload SG objects directly to it)

  • +
  • Normal users can’t access the splitgraph_meta schema directly: they’re only supposed to be able to +talk to it via stored procedures in splitgraph_api. Those procedures are set up with SECURITY INVOKER +(run with those users’ credentials) and what they can access is further restricted by RLS:

    +
      +
    • images/tables/tags meta tables: can only create/update/delete records where the namespace = user ID

    • +
    • objects/object_location tables: same. An object (piece of data) becomes owned by the user that creates +it and still remains so even if someone else’s image starts using it. Hence, the original owner can delete +or change it (since they control the external location they’ve uploaded it to anyway).

    • +
    +
  • +
+
+ +
+
+

splitgraph.core.repository module

+

Public API for managing images in a Splitgraph repository.

+
+
+class splitgraph.core.repository.Repository(namespace: str, repository: str, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_manager: Optional[splitgraph.core.object_manager.ObjectManager] = None)
+

Bases: object

+

Splitgraph repository API

+
+
+commit(image_hash: Optional[str] = None, comment: Optional[str] = None, snap_only: bool = False, chunk_size: Optional[int] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]]] = None, in_fragment_order: Optional[Dict[str, List[str]]] = None, overwrite: bool = False)splitgraph.core.image.Image
+

Commits all pending changes to a given repository, creating a new image.

+
+
Parameters
+
    +
  • image_hash – Hash of the commit. Chosen by random if unspecified.

  • +
  • comment – Optional comment to add to the commit.

  • +
  • snap_only – If True, will store the table as a full snapshot instead of delta compression

  • +
  • chunk_size – For tables that are stored as snapshots (new tables and where snap_only has been passed, +the table will be split into fragments of this many rows.

  • +
  • split_changeset – If True, splits the changeset into multiple fragments based on +the PK regions spanned by the current table fragments. For example, if the original table +consists of 2 fragments, first spanning rows 1-10000, second spanning rows 10001-20000 and the +change alters rows 1, 10001 and inserts a row with PK 20001, this will record the change as +3 fragments: one inheriting from the first original fragment, one inheriting from the second +and a brand new fragment. This increases the number of fragments in total but means that fewer rows +will need to be scanned to satisfy a query. +If False, the changeset will be stored as a single fragment inheriting from the last fragment in the +table.

  • +
  • extra_indexes – Dictionary of &lbrace;table: index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Dictionary of &lbrace;table: list of columns&rbrace;. If specified, will

  • +
+
+
+

sort the data inside each chunk by this/these key(s) for each table. +:param overwrite: If an object already exists, will force recreate it.

+
+
Returns
+

The newly created Image object.

+
+
+
+ +
+
+commit_engines()None
+

Commit the underlying transactions on both engines that the repository uses.

+
+ +
+
+delete(unregister: bool = True, uncheckout: bool = True)None
+

Discards all changes to a given repository and optionally all of its history, +as well as deleting the Postgres schema that it might be checked out into. +Doesn’t delete any cached physical objects.

+

After performing this operation, this object becomes invalid and must be discarded, +unless init() is called again.

+
+
Parameters
+
    +
  • unregister – Whether to purge repository history/metadata

  • +
  • uncheckout – Whether to delete the actual checked out repo. This has no effect +if the repository is backed by a registry (rather than a local engine).

  • +
+
+
+
+ +
+
+diff(table_name: str, image_1: Union[splitgraph.core.image.Image, str], image_2: Optional[Union[splitgraph.core.image.Image, str]], aggregate: bool = False)Optional[Union[bool, Tuple[int, int, int], List[Tuple[bool, Tuple]]]]
+

Compares the state of a table in different images by materializing both tables into a temporary space +and comparing them row-to-row.

+
+
Parameters
+
    +
  • table_name – Name of the table.

  • +
  • image_1 – First image hash / object. If None, uses the state of the current staging area.

  • +
  • image_2 – Second image hash / object. If None, uses the state of the current staging area.

  • +
  • aggregate – If True, returns a tuple of integers denoting added, removed and updated rows between +the two images.

  • +
+
+
Returns
+

If the table doesn’t exist in one of the images, returns True if it was added and False if it was +removed. If aggregate is True, returns the aggregation of changes as specified before. +Otherwise, returns a list of changes where each change is a tuple of +(True for added, False for removed, row contents).

+
+
+
+ +
+
+dump(stream: _io.TextIOWrapper, exclude_object_contents: bool = False)None
+

Creates an SQL dump with the metadata required for the repository and all of its objects.

+
+
Parameters
+
    +
  • stream – Stream to dump the data into.

  • +
  • exclude_object_contents – Only dump the metadata but not the actual object contents.

  • +
+
+
+
+ +
+
+classmethod from_schema(schema: str)splitgraph.core.repository.Repository
+

Convert a Postgres schema name of the format namespace/repository to a Splitgraph repository object.

+
+ +
+
+classmethod from_template(template: splitgraph.core.repository.Repository, namespace: Optional[str] = None, repository: Optional[str] = None, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None)splitgraph.core.repository.Repository
+

Create a Repository from an existing one replacing some of its attributes.

+
+ +
+
+get_all_hashes_tags()List[Tuple[Optional[str], str]]
+

Gets all tagged images and their hashes in a given repository.

+
+
Returns
+

List of (image_hash, tag)

+
+
+
+ +
+
+get_local_size()int
+

Get the actual size used by this repository’s downloaded objects.

+

This might still be double-counted if the repository shares objects +with other repositores.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+get_size()int
+

Get the physical size used by the repository’s data, counting objects that are used +by multiple images only once. This is calculated from the metadata, the on-disk +footprint might be smaller if not all of repository’s objects have been downloaded.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+has_pending_changes()bool
+

Detects if the repository has any pending changes (schema changes, table additions/deletions, content changes).

+
+ +
+
+property head
+

Return the HEAD image for the repository or None if the repository isn’t checked out.

+
+ +
+
+property head_strict
+

Return the HEAD image for the repository. Raise an exception if the repository +isn’t checked out.

+
+ +
+
+images
+

A splitgraph.core.image.ImageManager instance that performs operations +(checkout, delete etc) on this repository’s images.

+
+ +
+
+import_tables(tables: Sequence[str], source_repository: splitgraph.core.repository.Repository, source_tables: Sequence[str], image_hash: Optional[str] = None, foreign_tables: bool = False, do_checkout: bool = True, target_hash: Optional[str] = None, table_queries: Optional[Sequence[bool]] = None, parent_hash: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', skip_validation: bool = False)str
+

Creates a new commit in target_repository with one or more tables linked to already-existing tables. +After this operation, the HEAD of the target repository moves to the new commit and the new tables are +materialized.

+
+
Parameters
+
    +
  • tables – If not empty, must be the list of the same length as source_tables specifying names to store +them under in the target repository.

  • +
  • source_repository – Repository to import tables from.

  • +
  • source_tables – List of tables to import. If empty, imports all tables.

  • +
  • image_hash – Image hash in the source repository to import tables from. +Uses the current source HEAD by default.

  • +
  • foreign_tables – If True, copies all source tables to create a series of new snapshots instead of +treating them as Splitgraph-versioned tables. This is useful for adding brand new tables +(for example, from an FDW-mounted table).

  • +
  • do_checkout – If False, doesn’t check out the newly created image.

  • +
  • target_hash – Hash of the new image that tables is recorded under. If None, gets chosen at random.

  • +
  • table_queries – If not [], it’s treated as a Boolean mask showing which entries in the tables list are +instead SELECT SQL queries that form the target table. The queries have to be non-schema qualified and work +only against tables in the source repository. Each target table created is the result of the respective SQL +query. This is committed as a new snapshot.

  • +
  • parent_hash – If not None, must be the hash of the image to base the new image on. +Existing tables from the parent image are preserved in the new image. If None, the current repository +HEAD is used.

  • +
  • wrapper – Override the default class for the layered querying foreign data wrapper.

  • +
  • skip_validation – Don’t validate SQL used in import statements (used by the Splitfile executor that pre-formats the SQL).

  • +
+
+
Returns
+

Hash that the new image was stored under.

+
+
+
+ +
+
+init()None
+

Initializes an empty repo with an initial commit (hash 0000…)

+
+ +
+
+materialized_table(table_name: str, image_hash: Optional[str])Iterator[Tuple[str, str]]
+

A context manager that returns a pointer to a read-only materialized table in a given image. +The table is deleted on exit from the context manager.

+
+
Parameters
+
    +
  • table_name – Name of the table

  • +
  • image_hash – Image hash to materialize

  • +
+
+
Returns
+

(schema, table_name) where the materialized table is located.

+
+
+
+ +
+
+objects
+

A splitgraph.core.object_manager.ObjectManager instance that performs operations on +the objects on this repository’s engine (not just objects belonging to this repository).

+
+ +
+
+pull(download_all: Optional[bool] = False, overwrite_objects: bool = False, overwrite_tags: bool = False, single_image: Optional[str] = None)None
+

Synchronizes the state of the local Splitgraph repository with its upstream, optionally downloading all new +objects created on the remote.

+
+
Parameters
+
    +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download +required objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – Limit the download to a single image hash/tag.

  • +
+
+
+
+ +
+
+push(remote_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, reupload_objects: bool = False, overwrite_tags: bool = False, handler: str = 'DB', handler_options: Optional[Dict[str, Any]] = None, single_image: Optional[str] = None)splitgraph.core.repository.Repository
+

Inverse of pull: Pushes all local changes to the remote and uploads new objects.

+
+
Parameters
+
    +
  • remote_repository – Remote repository to push changes to. If not specified, the current +upstream is used.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote or S3 +to store them in an S3 bucket.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the remote repository for existing objects.

  • +
  • reupload_objects – If True, will reupload objects for which metadata is uploaded.

  • +
  • overwrite_tags – If True, will overwrite existing tags on the remote repository.

  • +
  • handler_options – Extra options to pass to the handler. For example, see +splitgraph.hooks.s3.S3ExternalObjectHandler.

  • +
  • single_image – Limit the upload to a single image hash/tag.

  • +
+
+
+
+ +
+
+rollback_engines()None
+

Rollback the underlying transactions on both engines that the repository uses.

+
+ +
+
+run_sql(sql: Union[psycopg2.sql.Composed, str], arguments: Optional[Any] = None, return_shape: splitgraph.engine.ResultShape = <ResultShape.MANY_MANY: 4>)Any
+

Execute an arbitrary SQL statement inside of this repository’s checked out schema.

+
+ +
+
+set_tags(tags: Dict[str, Optional[str]])None
+

Sets tags for multiple images.

+
+
Parameters
+

tags – List of (image_hash, tag)

+
+
+
+ +
+
+to_schema()str
+

Returns the engine schema that this repository gets checked out into.

+
+ +
+
+uncheckout(force: bool = False)None
+

Deletes the schema that the repository is checked out into

+
+
Parameters
+

force – Discards all pending changes to the schema.

+
+
+
+ +
+
+property upstream
+

The remote upstream repository that this local repository tracks.

+
+ +
+ +
+
+splitgraph.core.repository.clone(remote_repository: Union[splitgraph.core.repository.Repository, str], local_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, overwrite_tags: bool = False, download_all: Optional[bool] = False, single_image: Optional[str] = None)splitgraph.core.repository.Repository
+

Clones a remote Splitgraph repository or synchronizes remote changes with the local ones.

+

If the target repository has no set upstream engine, the source repository becomes its upstream.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object to clone or the repository’s name. If a name is passed, +the repository will be looked up on the current lookup path in order to find the engine the repository +belongs to.

  • +
  • local_repository – Local repository to clone into. If None, uses the same name as the remote.

  • +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download required +objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – If set, only get a single image with this hash/tag from the source.

  • +
+
+
Returns
+

A locally cloned Repository object.

+
+
+
+ +
+
+splitgraph.core.repository.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.repository.import_table_from_remote(remote_repository: splitgraph.core.repository.Repository, remote_tables: List[str], remote_image_hash: str, target_repository: splitgraph.core.repository.Repository, target_tables: List[Any], target_hash: Optional[str] = None)None
+

Shorthand for importing one or more tables from a yet-uncloned remote. Here, the remote image hash is required, +as otherwise we aren’t necessarily able to determine what the remote head is.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object

  • +
  • remote_tables – List of remote tables to import

  • +
  • remote_image_hash – Image hash to import the tables from

  • +
  • target_repository – Target repository to import the tables to

  • +
  • target_tables – Target table aliases

  • +
  • target_hash – Hash of the image that’s created with the import. Default random.

  • +
+
+
+
+ +
+
+splitgraph.core.repository.table_exists_at(repository: splitgraph.core.repository.Repository, table_name: str, image: Optional[splitgraph.core.image.Image] = None)bool
+

Determines whether a given table exists in a Splitgraph image without checking it out. If image_hash is None, +determines whether the table exists in the current staging area.

+
+ +
+
+

splitgraph.core.server module

+

Routines that are run inside of the engine, +here so that they can get type- and syntax-checked.

+

When inside of an LQFDW shim, these are called directly by the Splitgraph core code +to avoid a redundant connection to the engine.

+
+
+splitgraph.core.server.delete_object_files(object_id: str)
+
+ +
+
+splitgraph.core.server.download_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.get_object_schema(object_id: str)str
+
+ +
+
+splitgraph.core.server.get_object_size(object_id: str)int
+
+ +
+
+splitgraph.core.server.list_objects()List[str]
+
+ +
+
+splitgraph.core.server.object_exists(object_id: str)bool
+
+ +
+
+splitgraph.core.server.rename_object_files(old_object_id: str, new_object_id: str)
+
+ +
+
+splitgraph.core.server.set_object_schema(object_id: str, schema: str)
+
+ +
+
+splitgraph.core.server.upload_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.verify(url: str)
+
+ +
+
+

splitgraph.core.table module

+

Table metadata-related classes.

+
+
+class splitgraph.core.table.QueryPlan(table: splitgraph.core.table.Table, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str])
+

Bases: object

+

Represents the initial query plan (fragments to query) for given columns and +qualifiers.

+
+ +
+
+class splitgraph.core.table.Table(repository: Repository, image: Image, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+

Bases: object

+

Represents a Splitgraph table in a given image. Shouldn’t be created directly, use Table-loading +methods in the splitgraph.core.image.Image class instead.

+
+
+get_length()int
+

Get the number of rows in this table.

+

This might be smaller than the total number of rows in all objects belonging to this +table as some objects might overwrite each other.

+
+
Returns
+

Number of rows in table

+
+
+
+ +
+
+get_query_plan(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str], use_cache: bool = True)splitgraph.core.table.QueryPlan
+

Start planning a query (preliminary steps before object downloading, +like qualifier filtering).

+
+
Parameters
+
    +
  • quals – Qualifiers in CNF form

  • +
  • columns – List of columns

  • +
  • use_cache – If True, will fetch the plan from the cache for the same qualifiers and columns.

  • +
+
+
Returns
+

QueryPlan

+
+
+
+ +
+
+get_size()int
+

Get the physical size used by the table’s objects (including those shared with other tables).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of table’s +objects have been downloaded.

+
+
Returns
+

Size of the table in bytes.

+
+
+
+ +
+
+materialize(destination: str, destination_schema: Optional[str] = None, lq_server: Optional[str] = None, temporary: bool = False)None
+

Materializes a Splitgraph table in the target schema as a normal Postgres table, potentially downloading all +required objects and using them to reconstruct the table.

+
+
Parameters
+
    +
  • destination – Name of the destination table.

  • +
  • destination_schema – Name of the destination schema.

  • +
  • lq_server – If set, sets up a layered querying FDW for the table instead using this foreign server.

  • +
+
+
+
+ +
+
+query(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])
+

Run a read-only query against this table without materializing it.

+

This is a wrapper around query_lazy() that force evaluates the results which +might mean more fragments being materialized that aren’t needed.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

List of dictionaries of results

+
+
+
+ +
+
+query_indirect(columns: List[str], quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]])Tuple[Iterator[bytes], Callable, splitgraph.core.table.QueryPlan]
+

Run a read-only query against this table without materializing it. Instead of +actual results, this returns a generator of SQL queries that the caller can use +to get the results as well as a callback that the caller has to run after they’re +done consuming the results.

+

In particular, the query generator will prefer returning direct queries to +Splitgraph objects and only when those are exhausted will it start materializing +delta-compressed fragments.

+

This is an advanced method: you probably want to call table.query().

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of queries (bytes), a callback and a query plan object (containing stats +that are fully populated after the callback has been called to end the query).

+
+
+
+ +
+
+query_lazy(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])Iterator[Iterator[Dict[str, Any]]]
+

Run a read-only query against this table without materializing it.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of dictionaries of results.

+
+
+
+ +
+
+reindex(extra_indexes: Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]], raise_on_patch_objects=True)List[str]
+

Run extra indexes on all objects in this table and update their metadata. +This only works on objects that don’t have any deletions or upserts (have a deletion hash of 000000…).

+
+
Parameters
+
    +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • raise_on_patch_objects – If True, will raise an exception if any objects in the table +overwrite any other objects. If False, will log a warning but will reindex all non-patch objects.

  • +
+
+
+

:returns List of objects that were reindexed.

+
+ +
+ +
+
+splitgraph.core.table.merge_index_data(current_index: Dict[str, Any], new_index: Dict[str, Any])
+
+ +
+
+

splitgraph.core.types module

+
+
+class splitgraph.core.types.Comparable
+

Bases: object

+
+ +
+
+class splitgraph.core.types.TableColumn(ordinal, name, pg_type, is_pk, comment)
+

Bases: tuple

+
+
+property comment
+

Alias for field number 4

+
+ +
+
+property is_pk
+

Alias for field number 3

+
+ +
+
+property name
+

Alias for field number 1

+
+ +
+
+property ordinal
+

Alias for field number 0

+
+ +
+
+property pg_type
+

Alias for field number 2

+
+ +
+ +
+
+splitgraph.core.types.dict_to_tableschema(tables: Dict[str, Dict[str, Any]])Dict[str, List[splitgraph.core.types.TableColumn]]
+
+ +
+
+splitgraph.core.types.tableschema_to_dict(tables: Dict[str, List[splitgraph.core.types.TableColumn]])Dict[str, Dict[str, str]]
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.core.sql.mdx b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.core.sql.mdx new file mode 100644 index 00000000..c07302b7 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.core.sql.mdx @@ -0,0 +1,118 @@ + + + +export const meta = { + title: "splitgraph.core.sql package", + id: "splitgraph.core.sql package" +}; + +
+

Module contents

+

Routines for managing SQL statements

+
+
+splitgraph.core.sql.insert(table: str, columns: Sequence[str], schema: str = 'splitgraph_meta')psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to insert as a list of strings.

  • +
  • schema – Schema that contains the table

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query (parameterized)

+
+
+
+ +
+
+splitgraph.core.sql.prepare_splitfile_sql(sql: str, image_mapper: Callable)Tuple[str, str]
+

Transform an SQL query to prepare for it to be used in a Splitfile SQL command and validate it. +The rules are:

+
+
    +
  • Only basic DDL (CREATE/ALTER/DROP table) and DML (SELECT/INSERT/UPDATE/DELETE) are permitted.

  • +
  • All tables must be either non-schema qualified (the statement is run with search_path

  • +
+

set to the single schema that a Splitgraph image is checked out into) or have schemata of +format namespace/repository:hash_or_tag. In the second case, the schema is rewritten to point +at a temporary mount of the Splitgraph image.

+
+
+
Parameters
+
    +
  • sql – SQL query

  • +
  • image_mapper – Takes in an image and gives back the schema it should be rewritten to +(for the purposes of execution) and the canonical form of the image.

  • +
+
+
Returns
+

Transformed form of the SQL with substituted schema shims for Splitfile execution +and the canonical form (with e.g. tags resolved into at-the-time full image hashes)

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+
+splitgraph.core.sql.recover_original_schema_name(sql: str, schema_name: str)str
+

Postgres truncates identifiers to 63 characters at parse time and, as pglast +uses bits of PG to parse queries, image names like noaa/climate:64_chars_of_hash +get truncated which can cause ambiguities and issues in provenance. We can’t +get pglast to give us back the full identifier, but we can try and figure out +what it used to be and patch the AST to have it again.

+
+ +
+
+splitgraph.core.sql.select(table: str, columns: str = '*', where: str = '', schema: str = 'splitgraph_meta', table_args: Optional[str] = None)psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to select as a string. WARN: concatenated directly without any formatting.

  • +
  • where – If specified, added to the query with a “WHERE” keyword. WARN also concatenated directly.

  • +
  • schema – Defaults to SPLITGRAPH_META_SCHEMA.

  • +
  • table_args – If specified, appends to the FROM clause after the table specification, +for example, SELECT * FROM “splitgraph_api”.”get_images” (%s, %s) …

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query.

+
+
+
+ +
+
+splitgraph.core.sql.validate_import_sql(sql: str)str
+

Check an SQL query to see if it can be safely used in an IMPORT statement +(e.g. FROM noaa/climate:latest IMPORT &lbrace;SELECT * FROM rainfall WHERE state = ‘AZ’&rbrace; AS rainfall. +In this case, only a single SELECT statement is supported.

+
+
Parameters
+

sql – SQL query

+
+
Returns
+

Canonical (formatted) form of the SQL statement

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.engine.mdx b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.engine.mdx new file mode 100644 index 00000000..395cb80c --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.engine.mdx @@ -0,0 +1,565 @@ + + + +export const meta = { + title: "splitgraph.engine package", + id: "splitgraph.engine package" +}; + +
+

Module contents

+

Defines the interface for a Splitgraph engine (a backing database), including running basic SQL commands, +tracking tables for changes and uploading/downloading tables to other remote engines.

+

By default, Splitgraph is backed by Postgres: see splitgraph.engine.postgres for an example of how to +implement a different engine.

+
+
+class splitgraph.engine.ChangeEngine
+

Bases: splitgraph.engine.SQLEngine, abc.ABC

+

An SQL engine that can perform change tracking on a set of tables.

+
+
+discard_pending_changes(schema, table=None)
+

Discard recorded pending changes for a tracked table or the whole schema

+
+ +
+
+get_change_key(schema: str, table: str)List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_changed_tables(schema)
+

List tracked tables that have pending changes

+
+
Parameters
+

schema – Schema to check for changes

+
+
Returns
+

List of tables with changed contents

+
+
+
+ +
+
+get_pending_changes(schema, table, aggregate=False)
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: tuple with numbers of (added_rows, removed_rows, updated_rows). +If aggregate is False: A changeset. The changeset is a list of +(pk, action (0 for Insert, 1 for Delete, 2 for Update), action_data) +where action_data is None for Delete and &lbrace;‘c’: [column_names], ‘v’: [column_values]&rbrace; that +have been inserted/updated otherwise.

+
+
+
+ +
+
+get_tracked_tables()
+
+
Returns
+

A list of (table_schema, table_name) that the engine currently tracks for changes

+
+
+
+ +
+
+has_pending_changes(schema)
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables)
+

Start engine-specific change tracking on a list of tables.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+
+untrack_tables(tables)
+

Stop engine-specific change tracking on a list of tables and delete any pending changes.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+ +
+
+class splitgraph.engine.ObjectEngine
+

Bases: object

+

Routines for storing/applying objects as well as sharing them with other engines.

+
+
+apply_fragments(objects, target_schema, target_table, extra_quals=None, extra_qual_args=None, schema_spec=None, progress_every: Optional[int] = None)
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids)
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects, remote_engine)
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id, stream, schema)
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+get_object_schema(object_id)
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id)
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+store_fragment(inserted, deleted, schema, table, source_schema, source_table, source_schema_spec)
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args: Optional[Sequence[Any]], overwrite: bool)
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+upload_objects(objects, remote_engine)
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.ResultShape(value)
+

Bases: enum.Enum

+

Shape that the result of a query will be coerced to

+
+
+MANY_MANY = 4
+
+ +
+
+MANY_ONE = 3
+
+ +
+
+NONE = 0
+
+ +
+
+ONE_MANY = 2
+
+ +
+
+ONE_ONE = 1
+
+ +
+ +
+
+class splitgraph.engine.SQLEngine
+

Bases: abc.ABC

+

Abstraction for a Splitgraph SQL backend. Requires any overriding classes to implement run_sql as well as +a few other functions. Together with the information_schema (part of the SQL standard), this class uses those +functions to implement some basic database management methods like listing, deleting, creating, dumping +and loading tables.

+
+
+close()
+

Commit and close the engine’s backing connection

+
+ +
+
+commit()
+

Commit the engine’s backing connection

+
+ +
+
+copy_table(source_schema: str, source_table: str, target_schema: str, target_table: str, with_pk_constraints: bool = True)None
+

Copy a table in the same engine, optionally applying primary key constraints as well.

+
+ +
+
+create_schema(schema: str)None
+

Create a schema if it doesn’t exist

+
+ +
+
+create_table(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False)None
+

Creates a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
+
+ +
+
+delete_schema(schema: str)None
+

Delete a schema if it exists, including all the tables in it.

+
+ +
+
+delete_table(schema: str, table: str)None
+

Drop a table from a schema if it exists

+
+ +
+
+static dump_table_creation(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False)Tuple[psycopg2.sql.Composed, Tuple]
+

Dumps the DDL for a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
Returns
+

An SQL statement that reconstructs the table schema + args to be mogrified into it.

+
+
+
+ +
+
+dump_table_sql(schema, table_name, stream, columns='*', where='', where_args=None, target_schema=None, target_table=None)
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_all_tables(schema: str)List[str]
+

Get all tables in a given schema.

+
+ +
+
+get_full_table_schema(schema: str, table_name: str)List[splitgraph.core.types.TableColumn]
+

Generates a list of (column ordinal, name, data type, is_pk, column comment), +used to detect schema changes like columns being dropped/added/renamed or type changes.

+

NB this doesn’t work for temporary tables (pg_temp) and returns an empty schema.

+
+ +
+
+get_primary_keys(schema, table)
+

Get a list of (column_name, column_type) denoting the primary keys of a given table.

+
+ +
+
+get_table_type(schema: str, table: str)Optional[str]
+

Get the type of the table (BASE or FOREIGN)

+
+ +
+
+initialize()
+

Does any required initialization of the engine

+
+ +
+
+lock_table(schema, table)
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback()
+

Rollback the engine’s backing connection

+
+ +
+
+run_sql(statement, arguments=None, return_shape=<ResultShape.MANY_MANY: 4>, named=False)
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement, arguments, schema=None)
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+run_sql_in(schema: str, sql: Union[psycopg2.sql.Composed, str], arguments: None = None, return_shape: splitgraph.engine.ResultShape = <ResultShape.MANY_MANY: 4>)Any
+

Executes a non-schema-qualified query against a specific schema.

+
+
Parameters
+
    +
  • schema – Schema to run the query in

  • +
  • sql – Query

  • +
  • arguments – Query arguments

  • +
  • return_shape – ReturnShape to coerce the result into.

  • +
+
+
+
+ +
+
+savepoint(name: str)Iterator[None]
+

At the beginning of this context manager, a savepoint is initialized and any database +error that occurs in run_sql results in a rollback to this savepoint rather than the +rollback of the whole transaction. At exit, the savepoint is released.

+
+ +
+
+schema_exists(schema: str)bool
+

Check if a schema exists on the engine.

+
+
Parameters
+

schema – Schema name

+
+
+
+ +
+
+table_exists(schema: str, table_name: str)bool
+

Check if a table exists on the engine.

+
+
Parameters
+
    +
  • schema – Schema name

  • +
  • table_name – Table name

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.SavepointStack
+

Bases: _thread._local

+
+ +
+
+splitgraph.engine.get_engine(name: Optional[str] = None, use_socket: bool = False, use_fdw_params: bool = False, autocommit: bool = False)PostgresEngine
+

Get the current global engine or a named remote engine

+
+
Parameters
+
    +
  • name – Name of the remote engine as specified in the config. If None, the current global engine +is returned.

  • +
  • use_socket – Use a local UNIX socket instead of PG_HOST, PG_PORT for LOCAL engine connections.

  • +
  • use_fdw_params – Use the _FDW connection parameters (SG_ENGINE_FDW_HOST/PORT). By default, +will infer from the global splitgraph.config.IN_FDW flag.

  • +
  • autocommit – If True, the engine will not open SQL transactions implicitly.

  • +
+
+
+
+ +
+
+splitgraph.engine.set_engine(engine: PostgresEngine)None
+

Switch the global engine to a different one.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.switch_engine(engine: PostgresEngine)Iterator[None]
+

Switch the global engine to a different one. The engine will +get switched back on exit from the context manager.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.validate_type(t: str)str
+
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.engine.postgres.mdx b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.engine.postgres.mdx new file mode 100644 index 00000000..53096b26 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.engine.postgres.mdx @@ -0,0 +1,450 @@ + + + +export const meta = { + title: "splitgraph.engine.postgres package", + id: "splitgraph.engine.postgres package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.engine.postgres.engine module

+

Default Splitgraph engine: uses PostgreSQL to store metadata and actual objects and an audit stored procedure +to track changes, as well as the Postgres FDW interface to upload/download objects to/from other Postgres engines.

+
+
+class splitgraph.engine.postgres.engine.AuditTriggerChangeEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.PsycopgEngine, splitgraph.engine.ChangeEngine

+

Change tracking based on an audit trigger stored procedure

+
+
+discard_pending_changes(schema: str, table: Optional[str] = None)None
+

Discard recorded pending changes for a tracked schema / table

+
+ +
+
+get_changed_tables(schema: str)List[str]
+

Get list of tables that have changed content

+
+ +
+
+get_pending_changes(schema: str, table: str, aggregate: bool = False)Union[List[Tuple[int, int]], List[Tuple[Tuple[str, ], bool, Dict[str, Any], Dict[str, Any]]]]
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: List of tuples of (change_type, number of rows). +If aggregate is False: List of (primary_key, change_type, change_data)

+
+
+
+ +
+
+get_tracked_tables()List[Tuple[str, str]]
+

Return a list of tables that the audit trigger is working on.

+
+ +
+
+has_pending_changes(schema: str)bool
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables: List[Tuple[str, str]])None
+

Install the audit trigger on the required tables

+
+ +
+
+untrack_tables(tables: List[Tuple[str, str]])None
+

Remove triggers from tables and delete their pending changes

+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PostgresEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.AuditTriggerChangeEngine, splitgraph.engine.ObjectEngine

+

An implementation of the Postgres engine for Splitgraph

+
+
+apply_fragments(objects: List[Tuple[str, str]], target_schema: str, target_table: str, extra_quals: Optional[psycopg2.sql.Composed] = None, extra_qual_args: Optional[Tuple[str]] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, progress_every: Optional[int] = None)None
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids: List[str])None
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine)List[str]
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id: str, stream: _io.TextIOWrapper, schema: str)None
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+dump_object_creation(object_id: str, schema: str, table: Optional[str] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, if_not_exists: bool = False)bytes
+

Generate the SQL that remounts a foreign table pointing to a Splitgraph object.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • schema – Schema to create the table in

  • +
  • table – Name of the table to mount

  • +
  • schema_spec – Schema of the table

  • +
  • if_not_exists – Add IF NOT EXISTS to the DDL

  • +
+
+
Returns
+

SQL in bytes format.

+
+
+
+ +
+
+get_change_key(schema: str, table: str)List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_object_schema(object_id: str)List[splitgraph.core.types.TableColumn]
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id: str)int
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+mount_object(object_id: str, table: None = None, schema: str = 'splitgraph_meta', schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None)None
+

Mount an object from local storage as a foreign table.

+
+
Parameters
+
    +
  • object_id – ID of the object

  • +
  • table – Table to mount the object into

  • +
  • schema – Schema to mount the object into

  • +
  • schema_spec – Schema of the object.

  • +
+
+
+
+ +
+
+rename_object(old_object_id: str, new_object_id: str)
+
+ +
+
+store_fragment(inserted: Any, deleted: Any, schema: str, table: str, source_schema: str, source_table: str, source_schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None)None
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args=None, overwrite=False)None
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+sync_object_mounts()None
+

Scan through local object storage and synchronize it with the foreign tables in +splitgraph_meta (unmounting non-existing objects and mounting existing ones).

+
+ +
+
+unmount_objects(object_ids: List[str])None
+

Unmount objects from splitgraph_meta (this doesn’t delete the physical files.

+
+ +
+
+upload_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine)None
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PsycopgEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.SQLEngine

+

Postgres SQL engine backed by a Psycopg connection.

+
+
+close()None
+

Commit and close the engine’s backing connection

+
+ +
+
+close_others()None
+

Close and release all other connections to the connection pool.

+
+ +
+
+commit()None
+

Commit the engine’s backing connection

+
+ +
+
+property connection
+

Engine-internal Psycopg connection.

+
+ +
+
+copy_cursor()
+

Return a cursor that can be used for copy_expert operations

+
+ +
+
+delete_database(database: str)None
+

Helper function to drop a database using the admin connection

+
+
Parameters
+

database – Database name to drop

+
+
+
+ +
+
+dump_table_sql(schema: str, table_name: str, stream: _io.TextIOWrapper, columns: str = '*', where: str = '', where_args: Optional[Union[List[str], Tuple[str, str]]] = None, target_schema: Optional[str] = None, target_table: Optional[str] = None)None
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_primary_keys(schema: str, table: str)List[Tuple[str, str]]
+

Inspects the Postgres information_schema to get the primary keys for a given table.

+
+ +
+
+initialize(skip_object_handling: bool = False, skip_create_database: bool = False)None
+

Create the Splitgraph Postgres database and install the audit trigger

+
+
Parameters
+
    +
  • skip_object_handling – If True, skips installation of +audit triggers and other object management routines for engines +that don’t need change tracking or checkouts.

  • +
  • skip_create_database – Don’t create the Splitgraph database

  • +
+
+
+
+ +
+
+lock_table(schema: str, table: str)None
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback()None
+

Rollback the engine’s backing connection

+
+ +
+
+run_api_call(call: str, *args, schema: str = 'splitgraph_api')Any
+
+ +
+
+run_api_call_batch(call: str, argslist, schema: str = 'splitgraph_api')
+
+ +
+
+run_chunked_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Sequence[Any], return_shape: Optional[splitgraph.engine.ResultShape] = <ResultShape.MANY_MANY: 4>, chunk_size: int = 1000, chunk_position: int = -1)Any
+

Because the Splitgraph API has a request size limitation, certain +SQL calls with variadic arguments are going to be too long to fit that. This function +runs an SQL query against a set of broken up arguments and returns the combined result.

+
+ +
+
+run_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Optional[Sequence[Any]] = None, return_shape: Optional[splitgraph.engine.ResultShape] = <ResultShape.MANY_MANY: 4>, named: bool = False)Any
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement: Union[psycopg2.sql.Composed, str], arguments: Any, schema: Optional[str] = None, max_size=261000)None
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+property splitgraph_version
+

Returns the version of the Splitgraph library installed on the engine +and by association the version of the engine itself.

+
+ +
+ +
+
+splitgraph.engine.postgres.engine.add_ud_flag_column(table_schema: List[splitgraph.core.types.TableColumn])List[splitgraph.core.types.TableColumn]
+
+ +
+
+splitgraph.engine.postgres.engine.chunk(sequence: Sequence[T], chunk_size: int = 1000)Iterator[List[T]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_change_key(schema_spec: List[splitgraph.core.types.TableColumn])List[Tuple[str, str]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_conn_str(conn_params: Dict[str, str])str
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.hooks.data_source.mdx b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.hooks.data_source.mdx new file mode 100644 index 00000000..485aab19 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.hooks.data_source.mdx @@ -0,0 +1,515 @@ + + + +export const meta = { + title: "splitgraph.hooks.data_source package", + id: "splitgraph.hooks.data_source package" +}; + +
+

Module contents

+
+
+splitgraph.hooks.data_source.get_data_source(data_source: str)Type[splitgraph.hooks.data_source.base.DataSource]
+

Returns a class for a given data source

+
+ +
+
+splitgraph.hooks.data_source.get_data_sources()List[str]
+

Returns the names of all registered data sources.

+
+ +
+
+splitgraph.hooks.data_source.register_data_source(name: str, data_source_class: Type[splitgraph.hooks.data_source.base.DataSource])None
+

Returns a data source under a given name.

+
+ +
+ +
+

Submodules

+
+
+

splitgraph.hooks.data_source.base module

+
+
+class splitgraph.hooks.data_source.base.DataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any])
+

Bases: abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+abstract classmethod get_description()str
+
+ +
+
+abstract classmethod get_name()str
+
+ +
+
+abstract introspect()Dict[str, List[splitgraph.core.types.TableColumn]]
+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_load = False
+
+ +
+
+supports_mount = False
+
+ +
+
+supports_sync = False
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.LoadableDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any])
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+load(repository: Repository, tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]] = None)str
+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_load = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.MountableDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any])
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+abstract mount(schema: str, tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]] = None, overwrite: bool = True)
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_mount = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.SyncableDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any])
+

Bases: splitgraph.hooks.data_source.base.LoadableDataSource, splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_load = True
+
+ +
+
+supports_sync = True
+
+ +
+
+sync(repository: Repository, image_hash: Optional[str], tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]] = None)str
+
+ +
+ +
+
+splitgraph.hooks.data_source.base.get_ingestion_state(repository: Repository, image_hash: Optional[str])Optional[Dict[str, Any]]
+
+ +
+
+splitgraph.hooks.data_source.base.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.hooks.data_source.base.prepare_new_image(repository: Repository, hash_or_tag: Optional[str])Tuple[Optional[splitgraph.core.image.Image], str]
+
+ +
+
+

splitgraph.hooks.data_source.fdw module

+
+
+class splitgraph.hooks.data_source.fdw.ElasticSearchDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount an ElasticSearch instance.\n\nMount a set of tables proxying to a remote ElasticSearch index.\n\nThis uses a fork of postgres-elasticsearch-fdw behind the scenes. You can add a column\n`query` to your table and set it as `query_column` to pass advanced ES queries and aggregations.\nFor example:\n\n```\nsgr mount elasticsearch target_schema -c elasticsearch:9200 -o@- <<EOF\n    &lbrace;\n      "tables": &lbrace;\n        "table_1": &lbrace;\n          "schema": &lbrace;\n            "id": "text",\n            "@timestamp": "timestamp",\n            "query": "text",\n            "col_1": "text",\n            "col_2": "boolean"\n          &rbrace;,\n          "options": &lbrace;\n              "index": "index-pattern*",\n              "rowid_column": "id",\n              "query_column": "query"\n          &rbrace;\n        &rbrace;\n      &rbrace;\n    &rbrace;\nEOF\n```\n'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': ['string', 'null']&rbrace;, 'username': &lbrace;'type': ['string', 'null']&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'properties': &lbrace;'index': &lbrace;'description': 'ES index name or pattern to use, for example, "events-*"', 'type': 'string'&rbrace;, 'query_column': &lbrace;'description': 'Name of the column to use to pass queries in', 'type': 'string'&rbrace;, 'score_column': &lbrace;'description': 'Name of the column with the document score', 'type': 'string'&rbrace;, 'scroll_duration': &lbrace;'description': 'How long to hold the scroll context open for, default 10m', 'type': 'string'&rbrace;, 'scroll_size': &lbrace;'description': 'Fetch size, default 1000', 'type': 'integer'&rbrace;, 'type': &lbrace;'description': 'Pre-ES7 doc_type, not required in ES7 or later', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'required': ['host', 'port', 'tables'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.base.MountableDataSource, splitgraph.hooks.data_source.base.LoadableDataSource, abc.ABC

+
+
+commandline_help: str = ''
+
+ +
+
+commandline_kwargs_help: str = ''
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs)splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+abstract get_fdw_name()
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()Mapping[str, str]
+
+ +
+
+get_table_options(table_name: str)Mapping[str, str]
+
+ +
+
+get_table_schema(table_name: str, table_schema: List[splitgraph.core.types.TableColumn])List[splitgraph.core.types.TableColumn]
+
+ +
+
+get_user_options()Mapping[str, str]
+
+ +
+
+introspect()Dict[str, List[splitgraph.core.types.TableColumn]]
+
+ +
+
+mount(schema: str, tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]] = None, overwrite: bool = True)
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+preview(schema: Dict[str, List[splitgraph.core.types.TableColumn]])Dict[str, Union[str, List[Dict[str, Any]]]]
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MongoDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Mongo database.\n\nMounts one or more collections on a remote Mongo database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'tables: A dictionary of form\n```\n&lbrace;\n    "table_name": &lbrace;\n        "schema": &lbrace;"col1": "type1"...&rbrace;,\n        "options": &lbrace;"db": <dbname>, "coll": <collection>&rbrace; \n    &rbrace; \n&rbrace;\n```\n'
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str)
+
+ +
+
+get_table_schema(table_name, table_schema)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'properties': &lbrace;'coll': &lbrace;'type': 'string'&rbrace;, 'db': &lbrace;'type': 'string'&rbrace;, 'required': ['db', 'coll']&rbrace;, 'type': 'object'&rbrace;, 'required': ['options']&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'required': ['host', 'port', 'tables'], 'type': 'object'&rbrace;
+
+ +
+
+tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]]
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MySQLDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a MySQL database.\n\nMounts a schema on a remote MySQL database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'remote_schema: Remote schema name (required)\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n        '
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'remote_schema': &lbrace;'type': 'string'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'required': ['host', 'port', 'remote_schema'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.PostgreSQLDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Postgres database.\n\nMounts a schema on a remote Postgres database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'dbname: Database name (required)\nremote_schema: Remote schema name (required)\nextra_server_args: Dictionary of extra arguments to pass to the foreign server\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n    '
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'description': 'Database name', 'type': 'string'&rbrace;, 'host': &lbrace;'description': 'Remote hostname', 'type': 'string'&rbrace;, 'port': &lbrace;'description': 'Port', 'type': 'integer'&rbrace;, 'remote_schema': &lbrace;'description': 'Remote schema name', 'type': 'string'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname', 'remote_schema'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.hooks.data_source.fdw.create_foreign_table(schema: str, server: str, table_name: str, schema_spec: List[splitgraph.core.types.TableColumn], extra_options: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.hooks.data_source.fdw.init_fdw(engine: PostgresEngine, server_id: str, wrapper: str, server_options: Optional[Mapping[str, Optional[str]]] = None, user_options: Optional[Mapping[str, str]] = None, overwrite: bool = True)None
+

Sets up a foreign data server on the engine.

+
+
Parameters
+
    +
  • engine – PostgresEngine

  • +
  • server_id – Name to call the foreign server, must be unique. Will be deleted if exists.

  • +
  • wrapper – Name of the foreign data wrapper (must be installed as an extension on the engine)

  • +
  • server_options – Dictionary of FDW options

  • +
  • user_options – Dictionary of user options

  • +
  • overwrite – If the server already exists, delete and recreate it.

  • +
+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.hooks.mdx b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.hooks.mdx new file mode 100644 index 00000000..81e40082 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.hooks.mdx @@ -0,0 +1,366 @@ + + + +export const meta = { + title: "splitgraph.hooks package", + id: "splitgraph.hooks package" +}; + +
+

Module contents

+

Various hooks for extending Splitgraph, including:

+
+
    +
  • External object handlers (splitgraph.hooks.external_objects) allowing to download/upload objects +to locations other than the remote Splitgraph engine.

  • +
  • Data sources (splitgraph.hooks.data_sources) that allow to add data to Splitgraph, e.g.

  • +
+
+

using the Postgres engine’s FDW interface to mount other external databases on the engine.

+
+ +
+
+ + +
+

Submodules

+
+
+

splitgraph.hooks.external_objects module

+

Hooks for registering handlers to upload/download objects from external locations into Splitgraph’s cache.

+
+
+class splitgraph.hooks.external_objects.ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: object

+

Framework for allowing to dump objects from the Splitgraph cache to an external location. This allows +the objects to be stored somewhere other than the actual remote engine.

+

External object handlers must extend this class and be registered in the Splitgraph config.

+

For an example of how this can be used, see splitgraph.hooks.s3: it’s a handler allowing objects to be +uploaded to S3/S3-compatible host using the Minio API. It’s registered in the config as follows:

+
[external_handlers]
+S3=splitgraph.hooks.s3.S3ExternalObjectHandler
+
+
+

The protocol and the URLs returned by this handler are stored in splitgraph_meta.external_objects +and used to download the objects back into the Splitgraph cache when they are needed.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine)Sequence[str]
+

Download objects from the external location into the Splitgraph cache.

+
+
Parameters
+
    +
  • objects – List of tuples (object_id, object_url) that this handler had previosly +uploaded the objects to.

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of object IDs that have been successfully downloaded.

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine)Sequence[Tuple[str, str]]
+

Upload objects from the Splitgraph cache to an external location

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of successfully uploaded object IDs and URLs they can be found at.

+
+
+
+ +
+ +
+
+splitgraph.hooks.external_objects.get_external_object_handler(name: str, handler_params: Dict[Any, Any])splitgraph.hooks.external_objects.ExternalObjectHandler
+

Load an external protocol handler by its name, initializing it with optional parameters.

+
+ +
+
+splitgraph.hooks.external_objects.register_upload_download_handler(name: str, handler_class: Callable[[], splitgraph.hooks.external_objects.ExternalObjectHandler])None
+

Register an external protocol handler. See the docstring for get_upload_download_handler for the required +signatures of the handler functions.

+
+ +
+
+

splitgraph.hooks.mount_handlers module

+

Extra wrapper code for mount handlers

+
+
+splitgraph.hooks.mount_handlers.mount(mountpoint: str, mount_handler: str, handler_kwargs: Dict[str, Any], overwrite: bool = True, tables: Optional[TableInfo] = None)None
+

Mounts a foreign database via an FDW (without creating new Splitgraph objects)

+
+
Parameters
+
    +
  • mountpoint – Mountpoint to import the new tables into.

  • +
  • mount_handler – The type of the mounted database.

  • +
  • handler_kwargs – Dictionary of options to pass to the mount handler.

  • +
  • overwrite – Delete the foreign server if it already exists. Used by mount_postgres for data pulls.

  • +
  • tables – List of tables to mount or their schemas

  • +
+
+
+
+ +
+
+splitgraph.hooks.mount_handlers.mount_postgres(mountpoint, **kwargs)None
+

Mount a Postgres database.

+

Mounts a schema on a remote Postgres database as a set of foreign tables locally. +

+
+
Parameters
+
    +
  • mountpoint – Schema to mount the remote into.

  • +
  • server – Database hostname.

  • +
  • port – Port the Postgres server is running on.

  • +
  • username – A read-only user that the database will be accessed as.

  • +
  • password – Password for the read-only user.

  • +
  • dbname – Remote database name.

  • +
  • remote_schema – Remote schema name.

  • +
  • extra_server_args – Dictionary of extra arguments to pass to the foreign server

  • +
  • tables – Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.

  • +
+
+
+

If a dictionary, must have the format &lbrace;“table_name”: &lbrace;“col_1”: “type_1”, …&rbrace;&rbrace;.

+
+ +
+
+

splitgraph.hooks.s3 module

+

Plugin for uploading Splitgraph objects from the cache to an external S3-like object store

+
+
+class splitgraph.hooks.s3.S3ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: splitgraph.hooks.external_objects.ExternalObjectHandler

+

Uploads/downloads the objects to/from S3/S3-compatible host using the Minio client.

+

The handler is “attached” to a given registry which manages issuing pre-signed +GET/PUT URLs.

+

The handler supports a parameter threads specifying the number of threads +used to upload the objects.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine)List[str]
+

Download objects from Minio.

+
+
Parameters
+

objects – List of (object ID, object URL (object ID it’s stored under))

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine)List[Tuple[str, str]]
+

Upload objects to Minio

+
+
Parameters
+
    +
  • remote_engine – Remote Engine class

  • +
  • objects – List of object IDs to upload

  • +
+
+
Returns
+

List of tuples with successfully uploaded objects and their URLs.

+
+
+
+ +
+ +
+
+splitgraph.hooks.s3.get_object_download_urls(remote_engine, remote_object_ids)
+
+ +
+
+splitgraph.hooks.s3.get_object_upload_urls(remote_engine, objects)
+
+ +
+
+

splitgraph.hooks.s3_server module

+

S3 registry-side routines called from the Python stored procedure +that are aware of the actual S3 access creds and generate pre-signed +URLs to upload/download objects.

+
+
+splitgraph.hooks.s3_server.delete_objects(client: minio.api.Minio, object_ids: List[str])None
+

Delete objects stored in Minio

+
+
Parameters
+
    +
  • client – Minio client

  • +
  • object_ids – List of Splitgraph object IDs to delete

  • +
+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_download_urls(s3_host: str, object_ids: List[str])List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_upload_urls(s3_host: str, object_ids: List[str])List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.list_objects(client: minio.api.Minio)List[str]
+

List objects stored in Minio

+
+
Parameters
+

client – Minio client

+
+
Returns
+

List of Splitgraph object IDs

+
+
+
+ +
+
+

splitgraph.hooks.splitfile_commands module

+

A framework for custom Splitfile commands. The execution flow is as follows:

+
+
    +
  • When the Splitfile executor finds an unknown command, it looks for an entry in the config file:

    +
    [commands]
    +RUN=splitgraph.plugins.Run
    +
    +
    +
  • +
  • The command class must extend this class, initialized at every invocation time.

  • +
  • The command’s calc_hash() method is run. The resultant command context hash is combined with the current +image hash to produce the new image hash: if it already exists, then the image is simply checked out.

  • +
  • Otherwise (or if calc_hash is undefined or returns None), execute(), where the actual command should be +implemented, is run. If it returns a hash, this hash is used for the new image. If this hash already exists, +the existing image is checked out instead. If the command returns None, a random hash is generated for the +new image.

  • +
+
+
+
+class splitgraph.hooks.splitfile_commands.PluginCommand
+

Bases: object

+

Base class for custom Splitfile commands.

+
+
+calc_hash(repository, args)
+

Calculates the command context hash for this custom command. If either the command context hash or the +previous image hash has changed, then the image hash produced by this command will change. +Consequently, two commands with the same command context hashes are assumed to have the same effect +on any Splitgraph images.

+

This is supposed to be a lightweight method intended for pre-flight image hash calculations +(without performing the actual transformation). If it returns None, the actual transformation is run anyway.

+

For example, for a command that imports some data from an external URL, this could be the hash of the last +modified timestamp provided by the external data vendor. If the timestamp is unchanged, the data is unchanged +and so actual command won’t be re-executed.

+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits)

+
+
+
+ +
+
+execute(repository, args)
+

Execute the custom command against the target schema, optionally returning the new image hash. The contract +for the command is as follows (though it is not currently enforced by the runtime):

+
+
    +
  • Has to use get_engine().run_sql (or run_sql_batch) to interact with the engine.

  • +
  • Can only write to the schema with the checked-out repository (run_sql runs non-schema-qualified +statements against the correct schema).

  • +
  • Can inspect splitgraph_meta (e.g. to find the current HEAD) for the repository.

  • +
  • Can’t alter the versioning of the repository.

  • +
+
+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits). If calc_hash() had previously returned +a hash, this hash is ignored. If both this command and calc_hash() return None, the hash is randomly +generated.

+
+
+
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.ingestion.csv.mdx b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.ingestion.csv.mdx new file mode 100644 index 00000000..9563db4e --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.ingestion.csv.mdx @@ -0,0 +1,164 @@ + + + +export const meta = { + title: "splitgraph.ingestion.csv package", + id: "splitgraph.ingestion.csv package" +}; + +
+

Module contents

+
+
+class splitgraph.ingestion.csv.CSVDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount CSV files in S3/HTTP.\n\nIf passed an URL, this will live query a CSV file on an HTTP server. If passed\nS3 access credentials, this will scan a bucket for CSV files, infer their schema\nand make them available to query over SQL.  \n\nFor example:  \n\n\x08\n```\nsgr mount csv target_schema -o@- <<EOF\n  &lbrace;\n    "s3_endpoint": "cdn.mycompany.com:9000",\n    "s3_access_key": "ABCDEF",\n    "s3_secret_key": "GHIJKL",\n    "s3_bucket": "data",\n    "s3_object_prefix": "csv_files/current/",\n    "autodetect_header": true,\n    "autodetect_dialect": true,\n    "autodetect_encoding": true\n  &rbrace;\nEOF\n```\n'
+
+ +
+
+commandline_kwargs_help: str = "s3_access_key:\ns3_secret_key:\nurl: HTTP URL to the CSV file.\ns3_endpoint: S3 endpoint (including port if required).\ns3_region: Region of the S3 bucket.\ns3_secure: Whether to use HTTPS for S3 access.\ns3_bucket: Bucket the object is in.\ns3_object_prefix: Prefix for object in S3 bucket.\nautodetect_header: Detect whether the CSV file has a header automatically.\nautodetect_dialect: Detect the CSV file's dialect (separator, quoting characters etc) automatically.\nautodetect_encoding: Detect the CSV file's encoding automatically.\nautodetect_sample_size: Sample size, in bytes, for encoding/dialect/header detection.\nencoding: Encoding of the CSV file.\nheader: First line of the CSV file is its header.\nseparator: Character used to separate fields in the file.\nquotechar: Character used to quote fields."
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'s3_access_key': &lbrace;'type': 'string'&rbrace;, 's3_secret_key': &lbrace;'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs)splitgraph.ingestion.csv.CSVDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str)Mapping[str, str]
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'autodetect_dialect': &lbrace;'description': "Detect the CSV file's dialect (separator, quoting characters etc) automatically", 'type': 'boolean'&rbrace;, 'autodetect_encoding': &lbrace;'description': "Detect the CSV file's encoding automatically", 'type': 'boolean'&rbrace;, 'autodetect_header': &lbrace;'description': 'Detect whether the CSV file has a header automatically', 'type': 'boolean'&rbrace;, 'autodetect_sample_size': &lbrace;'description': 'Sample size, in bytes, for encoding/dialect/header detection', 'type': 'integer'&rbrace;, 'encoding': &lbrace;'description': 'Encoding of the CSV file', 'type': 'string'&rbrace;, 'header': &lbrace;'description': 'First line of the CSV file is its header', 'type': 'boolean'&rbrace;, 'quotechar': &lbrace;'description': 'Character used to quote fields', 'type': 'string'&rbrace;, 's3_bucket': &lbrace;'description': 'Bucket the object is in', 'type': 'string'&rbrace;, 's3_endpoint': &lbrace;'description': 'S3 endpoint (including port if required)', 'type': 'string'&rbrace;, 's3_object_prefix': &lbrace;'description': 'Prefix for object in S3 bucket', 'type': 'string'&rbrace;, 's3_region': &lbrace;'description': 'Region of the S3 bucket', 'type': 'string'&rbrace;, 's3_secure': &lbrace;'description': 'Whether to use HTTPS for S3 access', 'type': 'boolean'&rbrace;, 'separator': &lbrace;'description': 'Character used to separate fields in the file', 'type': 'string'&rbrace;, 'url': &lbrace;'description': 'HTTP URL to the CSV file', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+ +
+
+class splitgraph.ingestion.csv.CSVIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.csv.copy_csv_buffer(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = False, **kwargs)
+

Copy CSV data from a buffer into a given schema/table

+
+ +
+
+splitgraph.ingestion.csv.query_to_csv(engine: PsycopgEngine, query, buffer, schema: Optional[str] = None)
+
+ +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.csv.fdw module

+
+
+class splitgraph.ingestion.csv.fdw.CSVForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+

Foreign data wrapper for CSV files stored in S3 buckets or HTTP

+
+
+can_sort(sortkeys)
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+
+ +
+
+classmethod import_schema(schema, srv_options, options, restriction_type, restricts)
+
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.ingestion.mdx b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.ingestion.mdx new file mode 100644 index 00000000..2455331a --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.ingestion.mdx @@ -0,0 +1,203 @@ + + + +export const meta = { + title: "splitgraph.ingestion package", + id: "splitgraph.ingestion package" +}; + +
+

Module contents

+
+ + +
+

Submodules

+
+
+

splitgraph.ingestion.common module

+
+
+class splitgraph.ingestion.common.IngestionAdapter
+

Bases: object

+
+
+abstract create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+abstract data_to_new_table(data, engine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+abstract query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+
+to_data(query: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)
+
+ +
+
+to_table(data, repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True, no_header: bool = False, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.common.build_commandline_help(json_schema)
+
+ +
+
+splitgraph.ingestion.common.dedupe_sg_schema(schema_spec: List[splitgraph.core.types.TableColumn], prefix_len: int = 59)List[splitgraph.core.types.TableColumn]
+

Some foreign schemas have columns that are longer than 63 characters +where the first 63 characters are the same between several columns +(e.g. odn.data.socrata.com). This routine renames columns in a schema +to make sure this can’t happen (by giving duplicates a number suffix).

+
+ +
+
+splitgraph.ingestion.common.generate_column_names(schema_spec: List[splitgraph.core.types.TableColumn], prefix: str = 'col_')List[splitgraph.core.types.TableColumn]
+

Replace empty column names with autogenerated ones

+
+ +
+
+splitgraph.ingestion.common.merge_tables(engine: splitgraph.engine.postgres.engine.PsycopgEngine, source_schema: str, source_table: str, source_schema_spec: List[splitgraph.core.types.TableColumn], target_schema: str, target_table: str, target_schema_spec: List[splitgraph.core.types.TableColumn])
+
+ +
+
+splitgraph.ingestion.common.schema_compatible(source_schema: List[splitgraph.core.types.TableColumn], target_schema: List[splitgraph.core.types.TableColumn])bool
+

Quick check to see if a dataframe with target_schema can be written into source_schema. +There are some implicit type conversions that SQLAlchemy/Pandas can do so we don’t want to immediately fail +if the column types aren’t exactly the same (eg bigint vs numeric etc). Most errors should be caught by PG itself.

+

Schema is a list of (ordinal, name, type, is_pk).

+
+ +
+
+

splitgraph.ingestion.inference module

+
+
+splitgraph.ingestion.inference.infer_sg_schema(sample: List[Tuple[str, ]], override_types: Optional[Dict[str, str]] = None, primary_keys: Optional[List[str]] = None)
+
+ +
+
+splitgraph.ingestion.inference.parse_bigint(integer: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_boolean(boolean: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_int(integer: str)
+
+ +
+
+

splitgraph.ingestion.pandas module

+

Routines that ingest/export CSV files to/from Splitgraph images using Pandas

+
+
+class splitgraph.ingestion.pandas.PandasIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.pandas.df_to_table(df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True)None
+

Writes a Pandas DataFrame to a checked-out Splitgraph table. Doesn’t create a new image.

+
+
Parameters
+
    +
  • df – Pandas DataFrame to insert.

  • +
  • repository – Splitgraph Repository object. Must be checked out.

  • +
  • table – Table name.

  • +
  • if_exists – Behaviour if the table already exists: ‘patch’ means that primary keys that already exist in the

  • +
+
+
+

table will be updated and ones that don’t will be inserted. ‘replace’ means that the table will be dropped and +recreated. +:param schema_check: If False, skips checking that the dataframe is compatible with the target schema.

+
+ +
+
+splitgraph.ingestion.pandas.df_to_table_fast(engine: PsycopgEngine, df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], target_schema: str, target_table: str)
+
+ +
+
+splitgraph.ingestion.pandas.sql_to_df(sql: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)pandas.core.frame.DataFrame
+

Executes an SQL query against a Splitgraph image, returning the result.

+

Extra **kwargs are passed to Pandas’ read_sql_query.

+
+
Parameters
+
    +
  • sql – SQL query to execute.

  • +
  • image – Image object, image hash/tag (str) or None (use the currently checked out image).

  • +
  • repository – Repository the image belongs to. Must be set if image is a hash/tag or None.

  • +
  • use_lq – Whether to use layered querying or check out the image if it’s not checked out.

  • +
+
+
Returns
+

A Pandas dataframe.

+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.ingestion.snowflake.mdx b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.ingestion.snowflake.mdx new file mode 100644 index 00000000..e2bb14a7 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.ingestion.snowflake.mdx @@ -0,0 +1,87 @@ + + + +export const meta = { + title: "splitgraph.ingestion.snowflake package", + id: "splitgraph.ingestion.snowflake package" +}; + +
+

Module contents

+
+
+class splitgraph.ingestion.snowflake.SnowflakeDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Snowflake database.\n\nThis will mount a remote Snowflake schema or a table. You can also get a mounted table to point to the result of a subquery that will be executed on the Snowflake instance. For example:\n\n\x08\n```\n$ sgr mount snowflake test_snowflake -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "password": "password",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "schema": "TPCH_SF100"\n    "envvars": &lbrace;"HTTPS_PROXY": "http://proxy.company.com"&rbrace;\n&rbrace;\nEOF\n\x08\n$ sgr mount snowflake test_snowflake_subquery -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "private_key": "MIIEvQIBAD...",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "tables": &lbrace;\n        "balances": &lbrace;\n            "schema": &lbrace;\n                "n_nation": "varchar",\n                "segment": "varchar",\n                "avg_balance": "numeric"\n            &rbrace;,\n            "options": &lbrace;\n                "subquery": "SELECT n_nation AS nation, c_mktsegment AS segment, AVG(c_acctbal) AS avg_balance FROM TPCH_SF100.customer c JOIN TPCH_SF100.nation n ON c_nationkey = n_nationkey"\n            &rbrace;\n        &rbrace;\n    &rbrace;\n&rbrace;\nEOF\n```\n    '
+
+ +
+
+commandline_kwargs_help: str = 'username: Username. Required.\npassword: Password.\naccount: Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html. Required.\nprivate_key: Private key in PEM format.\ntables: Tables to mount (default all). If a list, will import only these tables. \nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\ndatabase: Snowflake database name. Required.\nschema: Snowflake schema.\nwarehouse: Warehouse name.\nrole: Role.\nenvvars: Environment variables to set on the engine side.\nThe schema parameter is required when subquery isn\'t used.'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'oneOf': [&lbrace;'required': ['password']&rbrace;, &lbrace;'required': ['private_key']&rbrace;], 'properties': &lbrace;'account': &lbrace;'description': 'Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html', 'type': 'string'&rbrace;, 'password': &lbrace;'description': 'Password', 'type': 'string'&rbrace;, 'private_key': &lbrace;'description': 'Private key in PEM format', 'type': 'string'&rbrace;, 'username': &lbrace;'description': 'Username', 'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'account'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str)Mapping[str, str]
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'database': &lbrace;'description': 'Snowflake database name', 'type': 'string'&rbrace;, 'envvars': &lbrace;'description': 'Environment variables to set on the engine side', 'type': 'object'&rbrace;, 'role': &lbrace;'description': 'Role', 'type': 'string'&rbrace;, 'schema': &lbrace;'description': 'Snowflake schema', 'type': 'string'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;, 'warehouse': &lbrace;'description': 'Warehouse name', 'type': 'string'&rbrace;&rbrace;, 'required': ['database'], 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.ingestion.socrata.mdx b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.ingestion.socrata.mdx new file mode 100644 index 00000000..871192a6 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.ingestion.socrata.mdx @@ -0,0 +1,175 @@ + + + +export const meta = { + title: "splitgraph.ingestion.socrata package", + id: "splitgraph.ingestion.socrata package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.ingestion.socrata.fdw module

+

Module imported by Multicorn on the Splitgraph engine server: a foreign data wrapper +that communicates to Socrata datasets using sodapy.

+
+
+class splitgraph.ingestion.socrata.fdw.SocrataForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+
+
+can_sort(sortkeys)
+
+
Parameters
+

sortkeys – List of SortKey

+
+
Returns
+

List of SortKey the FDW can sort on

+
+
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+

Method called from the planner to estimate the resulting relation +size for a scan. +It will help the planner in deciding between different types of plans, +according to their costs. +Args:

+
+
+
quals (list): A list of Qual instances describing the filters

applied to this scan.

+
+
+

columns (list): The list of columns that must be returned.

+
+
+
Returns:

A tuple of the form (expected_number_of_rows, avg_row_width (in bytes))

+
+
+
+ +
+
+property table_meta
+
+ +
+ +
+
+splitgraph.ingestion.socrata.fdw.to_json(row, columns, column_map)
+
+ +
+
+

splitgraph.ingestion.socrata.mount module

+

Splitgraph mount handler for Socrata datasets

+
+
+class splitgraph.ingestion.socrata.mount.SocrataDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'app_token': &lbrace;'description': 'Socrata app token, optional', 'type': ['string', 'null']&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs)splitgraph.ingestion.socrata.mount.SocrataDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'description': 'Amount of rows to fetch from Socrata per request (limit parameter). Maximum 50000.', 'type': 'integer'&rbrace;, 'domain': &lbrace;'description': 'Socrata domain, for example, data.albanyny.gov', 'type': 'string'&rbrace;, 'tables': &lbrace;'type': 'object'&rbrace;&rbrace;, 'required': ['domain'], 'type': 'object'&rbrace;
+
+
tables: A dictionary mapping PostgreSQL table names to Socrata table IDs. For example,

&lbrace;“salaries”: “xzkq-xp2w”&rbrace;. If skipped, ALL tables in the Socrata endpoint will be mounted.

+
+
+
+ +
+
+tables: Optional[TableInfo]
+
+ +
+ +
+
+splitgraph.ingestion.socrata.mount.generate_socrata_mount_queries(sought_ids, datasets, mountpoint, server_id, tables)
+
+ +
+
+

splitgraph.ingestion.socrata.querying module

+
+
+splitgraph.ingestion.socrata.querying.cols_to_socrata(cols, column_map: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.ingestion.socrata.querying.estimate_socrata_rows_width(columns, metadata, column_map=None)
+

Estimate number of rows required for a query and each row’s width +from the table metadata.

+
+ +
+
+splitgraph.ingestion.socrata.querying.quals_to_socrata(quals, column_map: Optional[Dict[str, str]] = None)
+

Convert a list of Multicorn quals to a SoQL query

+
+ +
+
+splitgraph.ingestion.socrata.querying.socrata_to_sg_schema(metadata: Dict[str, Any])Tuple[List[splitgraph.core.types.TableColumn], Dict[str, str]]
+
+ +
+
+splitgraph.ingestion.socrata.querying.sortkeys_to_socrata(sortkeys, column_map: Optional[Dict[str, str]] = None)
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.mdx b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.mdx new file mode 100644 index 00000000..1a63dacf --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.mdx @@ -0,0 +1,337 @@ + + + +export const meta = { + title: "splitgraph package", + id: "splitgraph package" +}; + +
+

Module contents

+
+ +
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

splitgraph.exceptions module

+

Exceptions that can be raised by the Splitgraph library.

+
+
+exception splitgraph.exceptions.APICompatibilityError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions related to API incompatibilities

+
+ +
+
+exception splitgraph.exceptions.AuthAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by the Auth API

+
+ +
+
+exception splitgraph.exceptions.CheckoutError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to checking out/committing repositories

+
+ +
+
+exception splitgraph.exceptions.DataSourceError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by mount handlers.

+
+ +
+
+exception splitgraph.exceptions.DockerUnavailableError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Could not connect to the Docker daemon.

+
+ +
+
+exception splitgraph.exceptions.EngineInitializationError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when the engine isn’t initialized (no splitgraph_meta schema or audit triggers)

+
+ +
+
+exception splitgraph.exceptions.EngineSetupError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised on various setup issues with the Splitgraph engine

+
+ +
+
+exception splitgraph.exceptions.ExternalHandlerError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by external object handlers.

+
+ +
+
+exception splitgraph.exceptions.GQLAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

GQL API errors

+
+ +
+
+exception splitgraph.exceptions.GQLRepoDoesntExistError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Repository doesn’t exist

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthenticatedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthenticated (user not logged in)

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthorizedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthorized (e.g. repository isn’t writeable by the user)

+
+ +
+
+exception splitgraph.exceptions.ImageNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph image doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectDownloadError(reason: Optional[BaseException], successful_objects: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during download of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectUploadError(reason: Optional[BaseException], successful_objects: List[str], successful_object_urls: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during upload of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.ObjectCacheError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Issues with the object cache (not enough space)

+
+ +
+
+exception splitgraph.exceptions.ObjectIndexingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to indexing objects

+
+ +
+
+exception splitgraph.exceptions.ObjectMountingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to incompatible objects.

+
+ +
+
+exception splitgraph.exceptions.ObjectNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when a physical object doesn’t exist in the cache.

+
+ +
+
+exception splitgraph.exceptions.RepositoryNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph repository doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.SplitGraphError
+

Bases: Exception

+

A generic Splitgraph exception.

+
+ +
+
+exception splitgraph.exceptions.SplitfileError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Generic error class for Splitfile interpretation/execution errors.

+
+ +
+
+exception splitgraph.exceptions.TableNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A table doesn’t exist in an image

+
+ +
+
+exception splitgraph.exceptions.UnsupportedSQLError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised for unsupported SQL statements, for example, containing schema-qualified tables when the statement +is supposed to be used in an SQL/IMPORT Splitfile command.

+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.splitfile.mdx b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.splitfile.mdx new file mode 100644 index 00000000..39a80266 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.12/splitgraph.splitfile.mdx @@ -0,0 +1,89 @@ + + + +export const meta = { + title: "splitgraph.splitfile package", + id: "splitgraph.splitfile package" +}; + +
+

Module contents

+

Splitfile interpreter: a set of tools on top of the core Splitgraph versioning and image management to give +the user a Dockerfile-like experience for building Splitgraph images (caching, consistent hashing, a declarative +language).

+
+ +
+

Submodules

+
+
+

splitgraph.splitfile.execution module

+

Functions for executing Splitfiles.

+
+
+class splitgraph.splitfile.execution.ImageMapper(object_engine: splitgraph.engine.postgres.engine.PostgresEngine)
+

Bases: object

+
+
+get_provenance_data()Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]
+
+ +
+
+setup_lq_mounts()None
+
+ +
+
+teardown_lq_mounts()None
+
+ +
+ +
+
+splitgraph.splitfile.execution.execute_commands(commands: str, params: Optional[Dict[str, str]] = None, output: Optional[splitgraph.core.repository.Repository] = None, output_base: str = '00000000000000000000000000000000')None
+

Executes a series of Splitfile commands.

+
+
Parameters
+
    +
  • commands – A string with the raw Splitfile.

  • +
  • params – A dictionary of parameters to be applied to the Splitfile ($&lbrace;PARAM&rbrace; is replaced with the specified +parameter value).

  • +
  • output – Output repository to execute the Splitfile against.

  • +
  • output_base – If not None, a revision that gets checked out for all Splitfile actions to be committed +on top of it.

  • +
+
+
+
+ +
+
+splitgraph.splitfile.execution.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.splitfile.execution.prevalidate_imports(table_names: List[str], table_queries: List[bool])List[str]
+
+ +
+
+splitgraph.splitfile.execution.rebuild_image(image: splitgraph.core.image.Image, source_replacement: Dict[splitgraph.core.repository.Repository, str])None
+

Recreates the Splitfile used to create a given image and reruns it, replacing its dependencies with a different +set of versions.

+
+
Parameters
+
    +
  • image – Image object

  • +
  • source_replacement – A map that specifies replacement images/tags for repositories that the image depends on

  • +
+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.13/metadata.json b/content/docs/9500_python-api/9000_versions/v0.2.13/metadata.json new file mode 100644 index 00000000..6f9bc25e --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.13/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.13", + "updated_at": "2022-01-20T00:00:46.905Z", + "release": { + "id": 41423565, + "tag_name": "v0.2.13", + "target_commitish": "ef8332b29640230f4eebcbb350a37c67285064b1", + "created_at": "2021-04-14T14:43:01Z", + "published_at": "2021-04-22T13:36:49Z", + "assets": [ + { + "id": 35012171, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/35012171", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-04-14T15:10:32Z", + "updated_at": "2021-04-14T15:10:33Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.13/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.cloud.mdx b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.cloud.mdx new file mode 100644 index 00000000..e250faf0 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.cloud.mdx @@ -0,0 +1,209 @@ + + + +export const meta = { + title: "splitgraph.cloud package", + id: "splitgraph.cloud package" +}; + +
+

Module contents

+

Public API for interacting with the Splitgraph registry

+
+
+class splitgraph.cloud.AuthAPIClient(remote: str)
+

Bases: object

+

Client for the Splitgraph registry auth API that generates tokens to access +other Splitgraph services.

+

Currently incomplete with just enough methods to allow to register and access +the Splitgraph registry via the command line.

+
+
+property access_token
+

Will return an up-to-date access token by either getting it from +the configuration file or contacting the auth service for a new one. +Will write the new access token into the configuration file.

+
+
Returns
+

Access token.

+
+
+
+ +
+
+create_machine_credentials(access_token: str, password: str)requests.models.Response
+

Generate a key and secret that can be used to log into the Splitgraph registry +via a normal Postgres connection. The secret must be stored in the user’s local +configuration file (it’s not stored on Splitgraph servers).

+
+
Parameters
+
    +
  • access_token – Access token

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (key, secret).

+
+
+
+ +
+
+get_access_token(refresh_token: str)requests.models.Response
+

Get a new access token from a refresh token.

+
+
Parameters
+

refresh_token – Refresh token

+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_access_token_from_api(api_key: str, api_secret: str)requests.models.Response
+

Get a new access token from API keys

+
+
Parameters
+
    +
  • api_key – API key

  • +
  • api_secret – API secret

  • +
+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_latest_version()Optional[str]
+
+ +
+
+get_refresh_token(username: str, password: str)requests.models.Response
+

Get a long-lived refresh token and a short-lived access token from the API.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (access_token, refresh_token).

+
+
+
+ +
+
+register(username: str, password: str, email: str, accept_tos: bool)requests.models.Response
+

Register a new Splitgraph user.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
  • email – Email

  • +
  • accept_tos – Accept the Terms of Service if they exist

  • +
+
+
+
+ +
+
+tos()requests.models.Response
+

Get a Terms of Service message from the registry (if accepting ToS is required) +:return: Link to the Terms of Service or None

+
+ +
+ +
+
+class splitgraph.cloud.GQLAPIClient(remote: str)
+

Bases: object

+

Wrapper class for select Splitgraph Registry GQL operations that can be +called from the CLI

+
+
+find_repository(query: str, limit: int = 10)Tuple[int, List[Tuple[str, str, str]]]
+
+ +
+
+upsert_description(namespace: str, repository: str, description: str)
+
+ +
+
+upsert_metadata(*args, **kwargs)
+
+ +
+
+upsert_readme(namespace: str, repository: str, readme: str)
+
+ +
+
+upsert_topics(namespace: str, repository: str, topics: List[str])
+
+ +
+ +
+
+splitgraph.cloud.expect_result(result: List[str], ignore_status_codes: Optional[List[int]] = None)Callable[[Callable[[], requests.models.Response]], Callable[[], Union[str, Tuple[str]]]]
+

A decorator that can be wrapped around a function returning a requests.Response with a JSON body. +If the request has failed, it will extract the “error” from the JSON response and raise an AuthAPIError.

+
+
Parameters
+
    +
  • result – Items to extract. Will raise an AuthAPIError if not all items were fetched.

  • +
  • ignore_status_codes – If one of these status codes is returned (e.g. 404), +it gets ignored and a None is returned instead.

  • +
+
+
Returns
+

Tuple of items enumerated in the result list. If there’s only one item, it will +return just that item.

+
+
+
+ +
+
+splitgraph.cloud.get_headers()
+
+ +
+
+splitgraph.cloud.get_remote_param(remote: str, key: str)str
+
+ +
+
+splitgraph.cloud.get_token_claim(jwt, claim)
+

Extract a claim from a JWT token without validating it.

+
+ +
+
+splitgraph.cloud.handle_gql_errors(func: Callable[[], requests.models.Response])Callable[[], requests.models.Response]
+

A decorator that handles responses from the GQL API, transforming errors into exceptions.

+
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.commandline.mdx b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.commandline.mdx new file mode 100644 index 00000000..b6f548b6 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.commandline.mdx @@ -0,0 +1,360 @@ + + + +export const meta = { + title: "splitgraph.commandline package", + id: "splitgraph.commandline package" +}; + +
+

Module contents

+

Splitgraph command line client

+

Hooks into the API to allow management of Splitgraph repositories and images using sgr.

+
+
+class splitgraph.commandline.ClickHandler(level=0)
+

Bases: logging.Handler

+
+
+emit(record)
+

Do whatever it takes to actually log the specified logging record.

+

This version is intended to be implemented by subclasses and so +raises a NotImplementedError.

+
+ +
+ +
+
+class splitgraph.commandline.WithExceptionHandler(name=None, commands=None, **attrs)
+

Bases: click.core.Group

+
+
+get_command(ctx, cmd_name)
+

Given a context and a command name, this returns a +Command object if it exists or returns None.

+
+ +
+
+invoke(ctx)
+

Given a context, this invokes the attached callback (if it exists) +in the right way.

+
+ +
+ +
+ +
+

Submodules

+
+
+

splitgraph.commandline.cloud module

+

Command line routines related to registering/setting up connections to the Splitgraph registry.

+
+
+

splitgraph.commandline.common module

+

Various common functions used by the command line interface.

+
+
+class splitgraph.commandline.common.Color
+

Bases: object

+

An enumeration of console colors

+
+
+BLUE = '\x1b[94m'
+
+ +
+
+BOLD = '\x1b[1m'
+
+ +
+
+CYAN = '\x1b[96m'
+
+ +
+
+DARKCYAN = '\x1b[36m'
+
+ +
+
+END = '\x1b[0m'
+
+ +
+
+GREEN = '\x1b[92m'
+
+ +
+
+PURPLE = '\x1b[95m'
+
+ +
+
+RED = '\x1b[91m'
+
+ +
+
+UNDERLINE = '\x1b[4m'
+
+ +
+
+YELLOW = '\x1b[93m'
+
+ +
+ +
+
+class splitgraph.commandline.common.ImageType(default: Optional[str] = 'latest', repository_exists: bool = False, get_image: bool = False)
+

Bases: click.types.ParamType

+

Parser that extracts the full image specification (repository and hash/tag).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])Tuple[Repository, Optional[Union[Image, str]]]
+

Image specification must have the format [NAMESPACE/]REPOSITORY[:HASH_OR_TAG].

+

The parser returns a tuple of (repository object, tag or hash).

+
+ +
+
+name = 'Image'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.JsonType
+

Bases: click.types.ParamType

+

Parser for Json – a wrapper around json.loads because without specifying +the name Click shows the type for the option/arg as LOADS.

+

Also supports passing JSON files (pass in @filename.json).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Json'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.RepositoryType(exists: bool = False)
+

Bases: click.types.ParamType

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])Repository
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Repository'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.ResettableStream(stream)
+

Bases: io.RawIOBase

+

Stream that supports reading from the underlying stream and resetting the position once.

+

We can’t use fseek() in this case, since we might be reading from a pipe. So, we operate +this stream in two modes. In the first mode, we mirror all reads into a separate buffer +(consuming the input stream). After the user calls reset(), we first output data from the +mirrored copy, then continue consuming the input stream (simulating seek(0).

+
+
+readable()
+

Return whether object was opened for reading.

+

If False, read() will raise OSError.

+
+ +
+
+readinto(b)
+
+ +
+
+reset()
+
+ +
+ +
+
+splitgraph.commandline.common.emit_sql_results(results, use_json=False, show_all=False)
+
+ +
+
+splitgraph.commandline.common.load_json_param(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+
+ +
+
+splitgraph.commandline.common.remote_switch_option(*names, **kwargs)
+

Adds an option to switch global SG_ENGINE for this invocation of sgr.

+

This is useful for e.g. tagging or viewing image information on a remote +registry. This is not used in operations like commit/checkout (even though +nothing is preventing SG_ENGINE switch from working on that if the remote engine +supports this), the user should switch SG_ENGINE envvar themselves in that case.

+
+
Parameters
+
    +
  • names – Names

  • +
  • kwargs – Passed to click.option

  • +
+
+
+
+ +
+
+splitgraph.commandline.common.sql_results_to_str(results: List[Tuple[Any]], use_json: bool = False)str
+
+ +
+
+

splitgraph.commandline.engine module

+
+
+splitgraph.commandline.engine.copy_to_container(container: Container, source_path: str, target_path: str)None
+

Copy a file into a Docker container

+
+
Parameters
+
    +
  • container – Container object

  • +
  • source_path – Source file path

  • +
  • target_path – Target file path (in the container)

  • +
+
+
Returns
+

+
+
+
+ +
+
+splitgraph.commandline.engine.get_docker_client()
+

Wrapper around client.from_env() that also pings the daemon +to make sure it can connect and if not, raises an error.

+
+ +
+
+splitgraph.commandline.engine.inject_config_into_engines(engine_prefix, config_path)
+

Copy the current config into all engines that are managed by sgr engine. This +is so that the engine has the right credentials and settings for when we do +layered querying (a Postgres client queries the engine directly and it +has to download objects etc).

+
+
Parameters
+
    +
  • engine_prefix – Prefix for Docker containers that are considered to be engines

  • +
  • config_path – Path to the config file.

  • +
+
+
+
+ +
+
+splitgraph.commandline.engine.list_engines(prefix, include_all=False, unavailable_ok=True)
+
+ +
+
+splitgraph.commandline.engine.patch_and_save_config(config, patch)
+
+ +
+
+

splitgraph.commandline.example module

+

Command line routines generating example data / Splitfiles

+
+
+splitgraph.commandline.example.alter_table(repository: Repository, table_name: str, rows_added: int, rows_deleted: int, rows_updated: int)None
+

Alters the example table, adding/updating/deleting a certain number of rows.

+
+
Parameters
+
    +
  • repository – Checked-out Repository object.

  • +
  • table_name – Name of the table

  • +
  • rows_added – Number of rows to add

  • +
  • rows_deleted – Number of rows to remove

  • +
  • rows_updated – Number of rows to update

  • +
+
+
+
+ +
+
+splitgraph.commandline.example.generate_table(repository: Repository, table_name: str, size: int)None
+

Creates a table with an integer primary key and a string value.

+
+
Parameters
+
    +
  • repository – Checked-out Repository to create the table in.

  • +
  • table_name – Name of the table to generate

  • +
  • size – Number of rows in the table.

  • +
+
+
+
+ +
+
+

splitgraph.commandline.image_creation module

+

sgr commands related to creating and checking out images

+
+
+

splitgraph.commandline.image_info module

+

sgr commands related to getting information out of / about images

+
+
+

splitgraph.commandline.ingestion module

+

Command line tools for ingesting/exporting Splitgraph images into other formats.

+
+
+

splitgraph.commandline.misc module

+

Miscellaneous image management sgr commands.

+
+
+

splitgraph.commandline.mount module

+

sgr commands related to mounting databases via Postgres FDW

+
+
+

splitgraph.commandline.push_pull module

+

sgr commands related to sharing and downloading images.

+
+
+

splitgraph.commandline.splitfile module

+

sgr commands related to building and rebuilding Splitfiles.

+
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.config.mdx b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.config.mdx new file mode 100644 index 00000000..6f22349f --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.config.mdx @@ -0,0 +1,392 @@ + + + +export const meta = { + title: "splitgraph.config package", + id: "splitgraph.config package" +}; + +
+

Module contents

+

The CONFIG object is created and exported once __at import time__ +Calling CONFIG[“KEY”] directly should be sufficient in most cases, +except when a config value has changed since importing CONFIG. +In that case, create_config_dict() can provide an updated config dict

+

Priority (highest to lowest):

+
+
    +
  1. Command line argument values

  2. +
  3. Environment variable values

  4. +
  5. Config file values in [defaults] section

  6. +
  7. DEFAULTS (see keys.py)

  8. +
+
+
+ +
+

Submodules

+
+
+

splitgraph.config.argument_config module

+
+
+splitgraph.config.argument_config.get_arg_tuples()List[Tuple[str, str]]
+

Get the raw (argN, argN+1) tuples from sys.argv

+

We could also use click to parse the flags ahead of time, and then pass +the parsed flag object into SystemConfigGetters. But this way, we avoid +having to pass down variables from click just to get config values.

+
+ +
+
+splitgraph.config.argument_config.get_argument_config_value(key: str, default_return: Optional[str] = None)Optional[str]
+

Get get the value of an argument, where value is the argument +immediately following the argument matching a key in ARG_KEYS, e.g.:

+
+

SYS_ARGS = [“–namespace”, “foo”] +–> return “foo”

+
+

Otherwise, return default_return

+
+ +
+
+

splitgraph.config.config module

+
+
+splitgraph.config.config.chain_getters(getters: Sequence[Callable[[str], Optional[str]]], key: str, default_return: Optional[str] = None)Optional[str]
+
+ +
+
+splitgraph.config.config.create_config_dict()Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create and return a dict of all known config values

+
+ +
+
+splitgraph.config.config.get_all_in_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str)Dict[str, Union[Dict[str, str], str]]
+

Get all subsections from a config (e.g. config[“data_sources”])

+
+ +
+
+splitgraph.config.config.get_all_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str)Dict[str, str]
+
+ +
+
+splitgraph.config.config.get_from_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, item: str)str
+
+ +
+
+splitgraph.config.config.get_from_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str)str
+

Return a singleton variable from a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.get_singleton(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], item: str)str
+

Return a singleton (not a section) variable from the config.

+
+ +
+
+splitgraph.config.config.lazy_get_config_value(key: str, default_return: Optional[str] = None)Optional[Union[str, Dict[str, Dict[str, str]]]]
+

Get the config value for a key in the following precedence +Otherwise return default_return

+
+ +
+
+splitgraph.config.config.patch_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], patch: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Recursively updates a nested configuration dictionary:

+
+
patch_config(
+
&lbrace;“key_1”: “value_1”,

“dict_1”: &lbrace;“key_1”: “value_1”&rbrace;&rbrace;,

+
+
&lbrace;“key_1”: “value_2”,

“dict_1”: &lbrace;“key_2”: “value_2”&rbrace;&rbrace;) == &lbrace;“key_1”: “value_2”, +“dict_1”: &lbrace;“key_1”: “value_1”, “key_2”: “value_2”&rbrace;&rbrace;

+
+
+
+
+
+
Parameters
+
    +
  • config – Config dictionary

  • +
  • patch – Dictionary with the path

  • +
+
+
Returns
+

New patched dictionary

+
+
+
+ +
+
+splitgraph.config.config.set_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str, value: str)None
+

Set a singleton variable in a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.update_config_dict_from_arguments(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sys.argv +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_env_vars(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading os.environ +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_file(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], sg_config_file: str)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sg_config_file +and overwriting any keys according to the rules in config_file_config

+

Return updated copy of config_dict.

+
+ +
+
+

splitgraph.config.config_file_config module

+
+
+splitgraph.config.config_file_config.accumulate_lists(config_dict: Dict[str, Union[Dict[str, str], str]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Transform a config_dict to “accumulate” objects “nested” via key name

+

Because ConfigParser does not support nesting, we implement our own +syntax via the key names of sections. The ‘:’ character can be used in +section names to specify the left and right key. Example:

+
.ini config             new config_dict
+
+                  ----->
+                    |
+[remote: remote1]   |   &lbrace;
+SG_ENV_VAR=foo      |       **rest_of_config_dict,
+                    |       "remotes": &lbrace;
+[origin: origin1]   |           "remote1": &lbrace;
+SG_ENV_VAR=bar      |               "SG_ENV_VAR": "foo"
+                    |           &rbrace;
+[origin: origin2]   |       &rbrace;,
+SG_ENV_VAR=bax      |       "origins": &lbrace;
+                    |           "origin1": &lbrace;
+                    |               "SG_ENV_VAR": "bar"
+                    |           &rbrace;,
+                    |           "origin2": &lbrace;
+                    |               "SG_ENV_VAR": "bax"
+                    |           &rbrace;
+                    |       &rbrace;
+                    |   &rbrace;
+                    |
+                  ----->
+
+
+

:return a new, updated copy of config_dict

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_config_file(sg_file: str, **kwargs)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create a dict from ConfigParser, apply transformations to it.

+

Return parsed and transformed config_dict.

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_file(sg_file: str, **kwargs)Dict[str, Dict[str, str]]
+
+ +
+
+splitgraph.config.config_file_config.hoist_section(config_dict: Dict[str, Dict[str, str]], section: str = 'defaults')Dict[str, Union[Dict[str, str], str]]
+

If a section exists called <hoist_section>, hoist it to the top level +This is useful for overriding default configs from within a config file

+

Transform config_dict to “hoist” any config values from a section +into the top level (thus, overriding environment variables), +when the name of the section matches hoist_section.

+

Return a new, updated copy of config_dict.

+
+ +
+
+splitgraph.config.config_file_config.transform_config_dict(config_dict: Dict[str, Dict[str, str]], **kwargs)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Apply transformations to the raw ConfigParser.config object

+
+
    +
  1. hoist_section

  2. +
  3. accumulate_lists

  4. +
+
+

Return the a new, updated copy of config_dict.

+
+ +
+
+

splitgraph.config.default_config module

+
+
+splitgraph.config.default_config.get_default_config_value(key: str, default_return: Optional[str] = None)Any
+

Get the hard-coded default value of a config key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.environment_config module

+
+
+splitgraph.config.environment_config.get_environment_config_value(key: str, default_return: Optional[str] = None)Optional[str]
+

Get the environment variable value of the environment variable matching key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.export module

+

Routines for exporting the config back into text.

+
+
+splitgraph.config.export.overwrite_config(new_config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_path: str, include_defaults: bool = False)None
+

Serialize the new config dictionary and overwrite the current config file. +Note: this will delete all comments in the config!

+
+
Parameters
+
    +
  • new_config – Config dictionary.

  • +
  • config_path – Path to the config file.

  • +
  • include_defaults – Whether to include values that are the same +as their defaults.

  • +
+
+
+
+ +
+
+splitgraph.config.export.serialize_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_format: bool, no_shielding: bool, include_defaults: bool = True)str
+

Pretty-print the configuration or print it in the Splitgraph config file format.

+
+
Parameters
+
    +
  • config – Configuration dictionary.

  • +
  • config_format – Output configuration in the Splitgraph config file format.

  • +
  • no_shielding – Don’t replace sensitive values (like passwords) with asterisks

  • +
  • include_defaults – Emit the config variable even if it’s the same as the default.

  • +
+
+
Returns
+

Textual representation of the config.

+
+
+
+ +
+
+splitgraph.config.export.serialize_engine_config(engine_name: str, conn_params: Dict[str, str], no_shielding: bool)str
+

Output the config section with connection parameters for a single engine.

+
+
Parameters
+
    +
  • engine_name – Name of the engine

  • +
  • conn_params – Dictionary of connection parameters

  • +
  • no_shielding – Don’t replace passwords with asterisks

  • +
+
+
+
+ +
+
+

splitgraph.config.keys module

+
+
+splitgraph.config.keys.SENSITIVE_KEY_SUFFIXES = ['_PWD', '_TOKEN']
+

Warning: Every key in DEFAULTS must have a key in ARGUMENT_KEY_MAP +If you add/remove keys from DEFAULTS, make sure to do so here too.

+
+ +
+
+

splitgraph.config.system_config module

+
+
+splitgraph.config.system_config.file_exists(_dir: str, filename: str)bool
+
+ +
+
+splitgraph.config.system_config.get_config_file(default_return: None = None)Optional[str]
+

Get the location of an existing SG_CONFIG_FILE on the system with +a valid name. Do not attempt to parse the config file, just return +its location.

+

Otherwise, return default_return

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_dirs()List[str]
+

Get any explicitly defined config file directories, +which are directories where we should search for files from +VALID_CONFIG_FILE_NAMES.

+

This list is defined similar to $PATH, as a colon (:) delimited +string, either in:

+
+
    +
  • argument flag –config-dirs

  • +
  • or environment key SG_CONFIG_DIRS

  • +
+
+

Or a single directory defined in either

+
+
    +
  • argument flag –config-dir

  • +
  • environment key SG_CONFIG_DIR

  • +
+
+

If both plural and single are defined, join them together.

+

Return a list of valid paths that are set, or an empty list.

+

Print a warning if any paths to not exist.

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_location()Optional[str]
+

Get the explicitly defined location of config file, if defined.

+

The location will either be defined in:

+
+
    +
  • argument flag –config-file

  • +
  • or environment key SG_CONFIG_FILE

  • +
+
+

In keeping with assumptions about priority, argument flag has +higher priority than environment value.

+

If the location is set, and points to an existing file, return location.

+

Otherwise return None

+

Print a warning if location is set but points to non-existing file.

+
+ +
+
+splitgraph.config.system_config.get_system_config_value(key: str, default_return: None = None)Optional[str]
+
+ +
+
+splitgraph.config.system_config.is_file(filename: str)bool
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.core.indexing.mdx b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.core.indexing.mdx new file mode 100644 index 00000000..794d6acf --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.core.indexing.mdx @@ -0,0 +1,141 @@ + + + +export const meta = { + title: "splitgraph.core.indexing package", + id: "splitgraph.core.indexing package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.core.indexing.bloom module

+

Bloom filtering on fragments for equality queries.

+
+
+splitgraph.core.indexing.bloom.describe(index_tuple: Tuple[int, str])str
+

Returns a pretty-printed summary of the bloom filter

+
+
Parameters
+

index_tuple – Tuple of (k, base64-encoded fingerprint) +returned by generate_bloom_index

+
+
Returns
+

String

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.filter_bloom_index(engine: PsycopgEngine, object_ids: List[str], quals: Any)List[str]
+

Runs a bloom filter on given qualifiers using the given objects’ previously-generated +fingerprints.

+
+
Parameters
+
    +
  • engine – Object engine

  • +
  • object_ids – Object IDs

  • +
  • quals – List of qualifiers

  • +
+
+
Returns
+

List of object IDs that might match the qualifiers in quals (including +IDs that don’t have a bloom index).

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.generate_bloom_index(engine: PsycopgEngine, object_id: str, changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], column: str, probability: Optional[float] = None, size: Optional[int] = None)Tuple[int, str]
+

Generates a bloom filter signature for a given column and a given fragment. Bloom filters +can answer queries asking whether an item is definitely not in a given set or possibly can be.

+

The tradeoff is between the probability of a false positive (item said to be in the set when +it actually isn’t) and the size of the filter.

+

Bloom filters also have an extra parameter, k, or the number of bits in the signature that +a certain item flips. This parameter has an optimal value for a given number of distinct items +or a probability and so isn’t explicitly passed by the user.

+
+
Parameters
+
    +
  • engine – Object engine the fragment is cached in.

  • +
  • object_id – Fragment ID

  • +
  • changeset – Optional, if specified, the old column values are included in the index.

  • +
  • column – Column name to generate the index on.

  • +
  • probability – Probability of a false positive. Either this or the size of the filter must +be specified, but not both.

  • +
  • size – Size of the filter, in bytes.

  • +
+
+
Returns
+

Dictionary to be inserted into the index.

+
+
+
+ +
+
+

splitgraph.core.indexing.range module

+
+
+splitgraph.core.indexing.range.extract_min_max_pks(engine: PsycopgEngine, fragments: List[str], table_pks: List[str], table_pk_types: List[str])Any
+

Extract minimum/maximum PK values for given fragments.

+
+
Parameters
+
    +
  • engine – Engine the objects live on

  • +
  • fragments – IDs of objects

  • +
  • table_pks – List of columns forming the table primary key

  • +
  • table_pk_types – List of types for table PK columns

  • +
+
+
Returns
+

List of min/max primary key for every object.

+
+
+
+ +
+
+splitgraph.core.indexing.range.filter_range_index(metadata_engine: PsycopgEngine, object_ids: List[str], quals: Any, column_types: Dict[str, str])List[str]
+
+ +
+
+splitgraph.core.indexing.range.generate_range_index(object_engine: PsycopgEngine, object_id: str, table_schema: TableSchema, changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], columns: Optional[List[str]] = None)Dict[str, Tuple[T, T]]
+

Calculate the minimum/maximum values of every column in the object (including deleted values).

+
+
Parameters
+
    +
  • object_engine – Engine the object is located on

  • +
  • object_id – ID of the object.

  • +
  • table_schema – Schema of the table

  • +
  • changeset – Changeset (old values will be included in the index)

  • +
  • columns – Columns to run the index on (default all)

  • +
+
+
Returns
+

Dictionary of &lbrace;column: [min, max]&rbrace;

+
+
+
+ +
+
+splitgraph.core.indexing.range.quals_to_sql(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], column_types: Dict[str, str])Tuple[psycopg2.sql.Composable, Tuple]
+

Convert a list of qualifiers in CNF to a fragment of a Postgres query +:param quals: Qualifiers in CNF +:param column_types: Dictionary of column names and their types +:return: SQL Composable object and a tuple of arguments to be mogrified into it.

+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.core.mdx b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.core.mdx new file mode 100644 index 00000000..bd5ffc14 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.core.mdx @@ -0,0 +1,2050 @@ + + + +export const meta = { + title: "splitgraph.core package", + id: "splitgraph.core package" +}; + +
+

Module contents

+

Core Splitgraph functionality: versioning and sharing tables.

+

The main point of interaction with the Splitgraph API is a splitgraph.core.repository.Repository object +representing a local or a remote Splitgraph repository. Repositories can be created using one of the +following methods:

+
+
    +
  • Directly by invoking Repository(namespace, name, engine) where engine is the engine that the repository +belongs to (that can be gotten with get_engine(engine_name). If the created repository doesn’t actually exist +on the engine, it must first be initialized with repository.init().

  • +
  • By using splitgraph.core.engine.lookup_repository() which will search for the repository on the current +lookup path.

  • +
+
+
+ + +
+

Submodules

+
+
+

splitgraph.core.common module

+

Common internal functions used by Splitgraph commands.

+
+
+class splitgraph.core.common.CallbackList(iterable=(), /)
+

Bases: list

+

Used to pass around and call multiple callbacks at once.

+
+ +
+
+class splitgraph.core.common.Tracer
+

Bases: object

+

Accumulates events and returns the times between them.

+
+
+get_durations()List[Tuple[str, float]]
+

Return all events and durations between them. +:return: List of (event name, time to this event from the previous event (or start))

+
+ +
+
+get_total_time()float
+
+
Returns
+

Time from start to the final logged event.

+
+
+
+ +
+
+log(event: str)None
+

Log an event at the current time +:param event: Event name

+
+ +
+ +
+
+splitgraph.core.common.adapt(value: Any, pg_type: str)Any
+

Coerces a value with a PG type into its Python equivalent.

+
+
Parameters
+
    +
  • value – Value

  • +
  • pg_type – Postgres datatype

  • +
+
+
Returns
+

Coerced value.

+
+
+
+ +
+
+splitgraph.core.common.aggregate_changes(query_result: List[Tuple[int, int]], initial: Optional[Tuple[int, int, int]] = None)Tuple[int, int, int]
+

Add a changeset to the aggregated diff result

+
+ +
+
+splitgraph.core.common.coerce_val_to_json(val: Any)Any
+

Turn a Python value to a string/float that can be stored as JSON.

+
+ +
+
+splitgraph.core.common.ensure_metadata_schema(engine: PsycopgEngine)None
+

Create or migrate the metadata schema splitgraph_meta that stores the hash tree of schema +snapshots (images), tags and tables. +This means we can’t mount anything under the schema splitgraph_meta – much like we can’t have a folder +“.git” under Git version control…

+
+ +
+
+splitgraph.core.common.gather_sync_metadata(target: Repository, source: Repository, overwrite_objects=False, overwrite_tags=False, single_image: Optional[str] = None)Any
+

Inspects two Splitgraph repositories and gathers metadata that is required to bring target up to +date with source.

+
+
Parameters
+
    +
  • target – Target Repository object

  • +
  • source – Source repository object

  • +
  • overwrite_objects – If True, will return metadata for all objects +belonging to new images (or existing image if single_image=True)

  • +
  • single_image – If set, only grab a single image with this hash/tag from the source.

  • +
  • overwrite_tags – If True and single_image is set, will return all tags for that image. +If single_image is not set, will return all tags in the source repository. +If False, will only return tags in the source that don’t exist on the target.

  • +
+
+
Returns
+

Tuple of metadata for new_images, new_tables, object_locations, object_meta, tags

+
+
+
+ +
+
+splitgraph.core.common.get_data_safe(package: str, resource: str)bytes
+
+ +
+
+splitgraph.core.common.get_temporary_table_id()str
+

Generate a random ID for temporary/staging objects that haven’t had their ID calculated yet.

+
+ +
+
+splitgraph.core.common.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.common.manage_audit(func: Callable)Callable
+

A decorator to be put around various Splitgraph commands +that adds/removes audit triggers for new/committed/deleted tables.

+
+ +
+
+splitgraph.core.common.manage_audit_triggers(engine: PostgresEngine, object_engine: Optional[PostgresEngine] = None)None
+

Does bookkeeping on audit triggers / audit table:

+
+
    +
  • Detect tables that are being audited that don’t need to be any more +(e.g. they’ve been unmounted)

  • +
  • Drop audit triggers for those and delete all audit info for them

  • +
  • Set up audit triggers for new tables

  • +
+
+

If the metadata engine isn’t the same as the object engine, this does nothing.

+
+
Parameters
+
    +
  • engine – Metadata engine with information about images and their checkout state

  • +
  • object_engine – Object engine where the checked-out table and the audit triggers are located.

  • +
+
+
+
+ +
+
+splitgraph.core.common.resource_path(relative_path)
+
+ +
+
+splitgraph.core.common.set_head(repository: Repository, image: Optional[str])None
+

Sets the HEAD pointer of a given repository to a given image. Shouldn’t be used directly.

+
+ +
+
+splitgraph.core.common.set_tag(repository: Repository, image_hash: Optional[str], tag: str)None
+

Internal function – add a tag to an image.

+
+ +
+
+splitgraph.core.common.set_tags_batch(repository: Repository, hashes_tags: List[Tuple[str, str]])None
+
+ +
+
+splitgraph.core.common.slow_diff(repository: Repository, table_name: str, image_1: Optional[str], image_2: Optional[str], aggregate: bool)Union[Tuple[int, int, int], List[Tuple[bool, Tuple]]]
+

Materialize both tables and manually diff them

+
+ +
+
+

splitgraph.core.engine module

+

Routines for managing Splitgraph engines, including looking up repositories and managing objects.

+
+
+splitgraph.core.engine.get_current_repositories(engine: PostgresEngine)List[Tuple[Repository, Optional[Image]]]
+

Lists all repositories currently in the engine.

+
+
Parameters
+

engine – Engine

+
+
Returns
+

List of (Repository object, current HEAD image)

+
+
+
+ +
+
+splitgraph.core.engine.init_engine(skip_object_handling: bool = False)None
+

Initializes the engine by:

+
+
    +
  • performing any required engine-custom initialization

  • +
  • creating the metadata tables

  • +
+
+
+
Parameters
+

skip_object_handling – If True, skips installing routines related to +object handling and checkouts (like audit triggers and CStore management).

+
+
+
+ +
+
+splitgraph.core.engine.lookup_repository(name: str, include_local: bool = False)Repository
+

Queries the SG engines on the lookup path to locate one hosting the given repository.

+
+
Parameters
+
    +
  • name – Repository name

  • +
  • include_local – If True, also queries the local engine

  • +
+
+
Returns
+

Local or remote Repository object

+
+
+
+ +
+
+splitgraph.core.engine.repository_exists(repository: Repository)bool
+

Checks if a repository exists on the engine.

+
+
Parameters
+

repository – Repository object

+
+
+
+ +
+
+

splitgraph.core.fdw_checkout module

+
+
+

splitgraph.core.fragment_manager module

+

Routines related to storing tables as fragments.

+
+
+class splitgraph.core.fragment_manager.Digest(shorts: Tuple[int, ])
+

Bases: object

+

Homomorphic hashing similar to LtHash (but limited to being backed by 256-bit hashes). The main property is that +for any rows A, B, LtHash(A) + LtHash(B) = LtHash(A+B). This is done by construction: we simply hash individual +rows and then do bit-wise addition / subtraction of individual hashes to come up with the full table hash.

+

Hence, the content hash of any Splitgraph table fragment is the sum of hashes of its added rows minus the sum +of hashes of its deleted rows (including the old values of the rows that have been updated). This has a very +useful implication: the hash of a full Splitgraph table is equal to the sum of hashes of its individual fragments.

+

This property can be used to simplify deduplication.

+
+
+classmethod empty()splitgraph.core.fragment_manager.Digest
+

Return an empty Digest instance such that for any Digest D, D + empty == D - empty == D

+
+ +
+
+classmethod from_hex(hex_string: str)splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 64-characters (256-bit) hexadecimal string

+
+ +
+
+classmethod from_memoryview(memory: Union[bytes, memoryview])splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 256-bit memoryview/bytearray.

+
+ +
+
+hex()str
+

Convert the hash into a hexadecimal value.

+
+ +
+ +
+
+class splitgraph.core.fragment_manager.FragmentManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.metadata_manager.MetadataManager

+

A storage engine for Splitgraph tables. Each table can be stored as one or more immutable fragments that can +optionally overwrite each other. When a new table is created, it’s split up into multiple base fragments. When +a new version of the table is written, the audit log is inspected and one or more patch fragments are created, +to be based on the fragments the previous version of the table consisted of. Only the top fragments in this stack +are stored in the table metadata: to reconstruct the whole table, the links from the top fragments down to the +base fragments have to be followed.

+

In addition, the fragments engine also supports min-max indexing on fragments: this is used to only fetch fragments +that are required for a given query.

+
+
+calculate_content_hash(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None, chunk_id_col: Optional[str] = None, chunk_id: Optional[int] = None)Tuple[str, int]
+

Calculates the homomorphic hash of table contents.

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Name of the table

  • +
  • table_schema – Schema of the table

  • +
  • chunk_id_col – Column the table is partitioned on

  • +
  • chunk_id – Column value to get rows from

  • +
+
+
Returns
+

A 64-character (256-bit) hexadecimal string with the content hash of the table +and the number of rows in the hash.

+
+
+
+ +
+
+calculate_fragment_insertion_hash_stats(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None)Tuple[splitgraph.core.fragment_manager.Digest, int]
+

Calculate the homomorphic hash of just the rows that a given fragment inserts +:param schema: Schema the fragment is stored in. +:param table: Name of the table the fragment is stored in. +:return: A Digest object and the number of inserted rows

+
+ +
+
+create_base_fragment(source_schema: str, source_table: str, namespace: str, chunk_id_col: Optional[str] = None, chunk_id: Optional[int] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None)str
+
+ +
+
+delete_objects(objects: Union[Set[str], List[str]])None
+

Deletes objects from the Splitgraph cache

+
+
Parameters
+

objects – A sequence of objects to be deleted

+
+
+
+ +
+
+filter_fragments(object_ids: List[str], table: Table, quals: Any)List[str]
+

Performs fuzzy filtering on the given object IDs using the index and a set of qualifiers, discarding +objects that definitely do not match the qualifiers.

+
+
Parameters
+
    +
  • object_ids – List of object IDs to filter.

  • +
  • table – A Table object the objects belong to.

  • +
  • quals

    List of qualifiers in conjunctive normal form that will be matched against the index. +Objects that definitely don’t match these qualifiers will be discarded.

    +

    A list containing [[qual_1, qual_2], [qual_3, qual_4]] will be interpreted as +(qual_1 OR qual_2) AND (qual_3 OR qual_4).

    +

    Each qual is a tuple of (column_name, operator, value) where +operator can be one of >, >=, <, <=, =.

    +

    For unknown operators, it will be assumed that all fragments might match that clause.

    +

  • +
+
+
Returns
+

List of objects that might match the given qualifiers.

+
+
+
+ +
+
+generate_object_index(object_id: str, table_schema: List[splitgraph.core.types.TableColumn], changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None)Dict[str, Any]
+

Queries the max/min values of a given fragment for each column, used to speed up querying.

+
+
Parameters
+
    +
  • object_id – ID of an object

  • +
  • table_schema – Schema of the table the object belongs to.

  • +
  • changeset – Optional, if specified, the old row values are included in the index.

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
Returns
+

Dict containing the object index.

+
+
+
+ +
+
+get_min_max_pks(fragments: List[str], table_pks: List[Tuple[str, str]])List[Tuple[Tuple, Tuple]]
+

Get PK ranges for given fragments using the index (without reading the fragments).

+
+
Parameters
+
    +
  • fragments – List of object IDs (must be registered and with the same schema)

  • +
  • table_pks – List of tuples (column, type) that form the object PK.

  • +
+
+
Returns
+

List of (min, max) PK for every fragment where PK is a tuple. +If a fragment doesn’t exist or doesn’t have a corresponding index entry, +a SplitGraphError is raised.

+
+
+
+ +
+
+record_table_as_base(repository: Repository, table_name: str, image_hash: str, chunk_size: Optional[int] = 10000, source_schema: Optional[str] = None, source_table: Optional[str] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False)List[str]
+

Copies the full table verbatim into one or more new base fragments and registers them.

+
+
Parameters
+
    +
  • repository – Repository

  • +
  • table_name – Table name

  • +
  • image_hash – Hash of the new image

  • +
  • chunk_size – If specified, splits the table into multiple objects with a given number of rows

  • +
  • source_schema – Override the schema the source table is stored in

  • +
  • source_table – Override the name of the table the source is stored in

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Key to sort data inside each chunk by.

  • +
  • overwrite – Overwrite physical objects that already exist.

  • +
+
+
+
+ +
+
+record_table_as_patch(old_table: Table, schema: str, image_hash: str, new_schema_spec: List[splitgraph.core.types.TableColumn] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False)None
+

Flushes the pending changes from the audit table for a given table and records them, +registering the new objects.

+
+
Parameters
+
    +
  • old_table – Table object pointing to the current HEAD table

  • +
  • schema – Schema the table is checked out into.

  • +
  • image_hash – Image hash to store the table under

  • +
  • new_schema_spec – New schema of the table (use the old table’s schema by default).

  • +
  • split_changeset – See Repository.commit for reference

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
+
+ +
+ +
+
+splitgraph.core.fragment_manager.get_chunk_groups(chunks: List[Tuple[str, Any, Any]])List[List[Tuple[str, Any, Any]]]
+

Takes a list of chunks and their boundaries and combines them +into independent groups such that chunks from no two groups +overlap with each other (intervals are assumed to be closed, +e.g. chunk (1,2) overlaps with chunk (2,3)).

+

The original order of chunks is preserved within each group.

+

For example, 4 chunks A, B, C, D that don’t overlap each other +will be grouped into 4 groups [A], [B], [C], [D].

+

If A overlaps B, the result will be [A, B], [C], [D].

+

If in addition B overlaps C (but not A), the result will be [A, B, C], [D].

+

If in addition D overlaps any of A, B or C, the result will be [A, B, C, D] +(despite that D is located before A: it will be last since it was last in the +original list).

+
+
Parameters
+

chunks – List of (chunk_id, start, end)

+
+
Returns
+

List of lists of (chunk_id, start, end)

+
+
+
+ +
+
+

splitgraph.core.image module

+

Image representation and provenance

+
+
+class splitgraph.core.image.Image(image_hash: str, parent_id: Optional[str], created: datetime.datetime, comment: str, provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], repository: Repository)
+

Bases: tuple

+

Represents a Splitgraph image. Should’t be created directly, use Image-loading methods in the +splitgraph.core.repository.Repository class instead.

+
+
+checkout(force: bool = False, layered: bool = False)None
+

Checks the image out, changing the current HEAD pointer. Raises an error +if there are pending changes to its checkout.

+
+
Parameters
+
    +
  • force – Discards all pending changes to the schema.

  • +
  • layered – If True, uses layered querying to check out the image (doesn’t materialize tables +inside of it).

  • +
+
+
+
+ +
+
+property comment
+

Alias for field number 3

+
+ +
+
+property created
+

Alias for field number 2

+
+ +
+
+delete_tag(tag: str)None
+

Deletes a tag from an image.

+
+
Parameters
+

tag – Tag to delete.

+
+
+
+ +
+
+property engine
+
+ +
+
+get_log()List[splitgraph.core.image.Image]
+

Repeatedly gets the parent of a given image until it reaches the bottom.

+
+ +
+
+get_parent_children()Tuple[Optional[str], List[str]]
+

Gets the parent and a list of children of a given image.

+
+ +
+
+get_size()int
+

Get the physical size used by the image’s objects (including those that might be +shared with other images).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of image’s +objects have been downloaded.

+
+
Returns
+

Size of the image in bytes.

+
+
+
+ +
+
+get_table(table_name: str)splitgraph.core.table.Table
+

Returns a Table object representing a version of a given table. +Contains a list of objects that the table is linked to and the table’s schema.

+
+
Parameters
+

table_name – Name of the table

+
+
Returns
+

Table object

+
+
+
+ +
+
+get_tables()List[str]
+

Gets the names of all tables inside of an image.

+
+ +
+
+get_tags()
+

Lists all tags that this image has.

+
+ +
+
+property image_hash
+

Alias for field number 0

+
+ +
+
+property object_engine
+
+ +
+
+property parent_id
+

Alias for field number 1

+
+ +
+
+provenance(reverse=False, engine=None)List[Tuple[Repository, str]]
+

Inspects the image’s parent chain to come up with a set of repositories and their hashes +that it was created from.

+

If reverse is True, returns a list of images that were created _from_ this image. If +this image is on a remote repository, engine can be passed in to override the engine +used for the lookup of dependents.

+
+
Returns
+

List of (repository, image_hash)

+
+
+
+ +
+
+property provenance_data
+

Alias for field number 4

+
+ +
+
+query_schema(wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', commit: bool = True)Iterator[str]
+

Creates a temporary schema with tables in this image mounted as foreign tables that can be accessed via +read-only layered querying. On exit from the context manager, the schema is discarded.

+
+
Returns
+

The name of the schema the image is located in.

+
+
+
+ +
+
+property repository
+

Alias for field number 5

+
+ +
+
+set_provenance(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]])None
+

Sets the image’s provenance. Internal function called by the Splitfile interpreter, shouldn’t +be called directly as it changes the image after it’s been created.

+
+
Parameters
+

provenance_data – List of parsed Splitfile commands and their data.

+
+
+
+ +
+
+tag(tag: str)None
+

Tags a given image. All tags are unique inside of a repository. If a tag already exists, it’s removed +from the previous image and given to the new image.

+
+
Parameters
+

tag – Tag to set. ‘latest’ and ‘HEAD’ are reserved tags.

+
+
+
+ +
+
+to_splitfile(ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None)List[str]
+

Recreate the Splitfile that can be used to reconstruct this image.

+
+
Parameters
+
    +
  • ignore_irreproducible – If True, ignore commands from irreproducible Splitfile lines +(like MOUNT or custom commands) and instead emit a comment (this results in an invalid Splitfile).

  • +
  • source_replacement – A dictionary of repositories and image hashes/tags specifying how to replace the +dependencies of this Splitfile (table imports and FROM commands).

  • +
+
+
Returns
+

A list of Splitfile commands that can be fed back into the executor.

+
+
+
+ +
+ +
+
+splitgraph.core.image.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.image.reconstruct_splitfile(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None)List[str]
+

Recreate the Splitfile that can be used to reconstruct an image.

+
+ +
+
+

splitgraph.core.image_manager module

+
+
+class splitgraph.core.image_manager.ImageManager(repository: Repository)
+

Bases: object

+

Collects various image-related functions.

+
+
+add(parent_id: Optional[str], image: str, created: Optional[datetime.datetime] = None, comment: Optional[str] = None, provenance_data: Optional[List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]] = None)None
+

Registers a new image in the Splitgraph image tree.

+

Internal method used by actual image creation routines (committing, importing or pulling).

+
+
Parameters
+
    +
  • parent_id – Parent of the image

  • +
  • image – Image hash

  • +
  • created – Creation time (defaults to current timestamp)

  • +
  • comment – Comment (defaults to empty)

  • +
  • provenance_data – Provenance data that can be used to reconstruct the image.

  • +
+
+
+
+ +
+
+add_batch(images: List[splitgraph.core.image.Image])None
+

Like add, but registers multiple images at the same time. Used in push/pull +to avoid a roundtrip to the registry for each image +:param images: List of Image objects. Namespace and repository will be patched

+
+

with this repository.

+
+
+ +
+
+by_hash(image_hash: str)splitgraph.core.image.Image
+

Returns an image corresponding to a given (possibly shortened) image hash. If the image hash +is ambiguous, raises an error. If the image does not exist, raises an error or returns None.

+
+
Parameters
+

image_hash – Image hash (can be shortened).

+
+
Returns
+

Image

+
+
+
+ +
+
+by_tag(tag: str, raise_on_none: bool = True)Optional[splitgraph.core.image.Image]
+

Returns an image with a given tag

+
+
Parameters
+
    +
  • tag – Tag. ‘latest’ is a special case: it returns the most recent image in the repository.

  • +
  • raise_on_none – Whether to raise an error or return None if the tag doesn’t exist.

  • +
+
+
+
+ +
+
+delete(images: Sequence[str])None
+

Deletes a set of Splitgraph images from the repository. Note this doesn’t check whether +this will orphan some other images in the repository and can make the state of the repository +invalid.

+

Image deletions won’t be replicated on push/pull (those can only add new images).

+
+
Parameters
+

images – List of image IDs

+
+
+
+ +
+
+get_all_child_images(start_image: str)Set[str]
+

Get all children of start_image of any degree.

+
+ +
+
+get_all_parent_images(start_images: Set[str])Set[str]
+

Get all parents of the ‘start_images’ set of any degree.

+
+ +
+ +
+
+

splitgraph.core.metadata_manager module

+

Classes related to managing table/image/object metadata tables.

+
+
+class splitgraph.core.metadata_manager.MetadataManager(metadata_engine: PsycopgEngine)
+

Bases: object

+

A data access layer for the metadata tables in the splitgraph_meta schema that concerns itself +with image, table and object information.

+
+
+cleanup_metadata()List[str]
+

Go through the current metadata and delete all objects that aren’t required +by any table on the engine.

+
+
Returns
+

List of objects that have been deleted.

+
+
+
+ +
+
+delete_object_meta(object_ids: Sequence[str])
+

Delete metadata for multiple objects (external locations, indexes, hashes). +This doesn’t delete physical objects.

+
+
Parameters
+

object_ids – Object IDs to delete

+
+
+
+ +
+
+get_all_objects()List[str]
+

Gets all objects currently in the Splitgraph tree.

+
+
Returns
+

List of object IDs.

+
+
+
+ +
+
+get_external_object_locations(objects: List[str])List[Tuple[str, str, str]]
+

Gets external locations for objects.

+
+
Parameters
+

objects – List of object IDs stored externally.

+
+
Returns
+

List of (object_id, location, protocol).

+
+
+
+ +
+
+get_new_objects(object_ids: List[str])List[str]
+

Get object IDs from the passed list that don’t exist in the tree.

+
+
Parameters
+

object_ids – List of objects to check

+
+
Returns
+

List of unknown object IDs.

+
+
+
+ +
+
+get_object_meta(objects: List[str])Dict[str, splitgraph.core.metadata_manager.Object]
+

Get metadata for multiple Splitgraph objects from the tree

+
+
Parameters
+

objects – List of objects to get metadata for.

+
+
Returns
+

Dictionary of object_id -> Object

+
+
+
+ +
+
+get_objects_for_repository(repository: Repository, image_hash: Optional[str] = None)List[str]
+
+ +
+
+get_unused_objects(threshold: Optional[int] = None)List[Tuple[str, datetime.datetime]]
+

Get a list of all objects in the metadata that aren’t used by any table and can be +safely deleted.

+
+
Parameters
+

threshold – Only return objects that were created earlier than this (in minutes)

+
+
Returns
+

List of objects and their creation times.

+
+
+
+ +
+
+overwrite_table(repository: Repository, image_hash: str, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+
+ +
+
+register_object_locations(object_locations: List[Tuple[str, str, str]])None
+

Registers external locations (e.g. HTTP or S3) for Splitgraph objects. +Objects must already be registered in the object tree.

+
+
Parameters
+

object_locations – List of (object_id, location, protocol).

+
+
+
+ +
+
+register_objects(objects: List[splitgraph.core.metadata_manager.Object], namespace: Optional[str] = None)None
+

Registers multiple Splitgraph objects in the tree.

+
+
Parameters
+
    +
  • objects – List of Object objects.

  • +
  • namespace – If specified, overrides the original object namespace, required +in the case where the remote repository has a different namespace than the local one.

  • +
+
+
+
+ +
+
+register_tables(repository: Repository, table_meta: List[Tuple[str, str, List[splitgraph.core.types.TableColumn], List[str]]])None
+

Links tables in an image to physical objects that they are stored as. +Objects must already be registered in the object tree.

+
+
Parameters
+
    +
  • repository – Repository that the tables belong to.

  • +
  • table_meta – A list of (image_hash, table_name, table_schema, object_ids).

  • +
+
+
+
+ +
+ +
+
+class splitgraph.core.metadata_manager.Object(object_id: str, format: str, namespace: str, size: int, created: datetime.datetime, insertion_hash: str, deletion_hash: str, object_index: Dict[str, Any], rows_inserted: int, rows_deleted: int)
+

Bases: tuple

+

Represents a Splitgraph object that tables are composed of.

+
+
+property created
+

Alias for field number 4

+
+ +
+
+property deletion_hash
+

Alias for field number 6

+
+ +
+
+property format
+

Alias for field number 1

+
+ +
+
+property insertion_hash
+

Alias for field number 5

+
+ +
+
+property namespace
+

Alias for field number 2

+
+ +
+
+property object_id
+

Alias for field number 0

+
+ +
+
+property object_index
+

Alias for field number 7

+
+ +
+
+property rows_deleted
+

Alias for field number 9

+
+ +
+
+property rows_inserted
+

Alias for field number 8

+
+ +
+
+property size
+

Alias for field number 3

+
+ +
+ +
+
+

splitgraph.core.migration module

+
+
+splitgraph.core.migration.get_installed_version(engine: PsycopgEngine, schema_name: str, version_table: str = 'version')Optional[Tuple[str, datetime.datetime]]
+
+ +
+
+splitgraph.core.migration.get_version_tuples(filenames: List[str])List[Tuple[Optional[str], str]]
+
+ +
+
+splitgraph.core.migration.make_file_list(schema_name: str, migration_path: List[Optional[str]])
+

Construct a list of file names from history of versions and schema name

+
+ +
+
+splitgraph.core.migration.set_installed_version(engine: PsycopgEngine, schema_name: str, version: str, version_table: str = 'version')
+
+ +
+
+splitgraph.core.migration.source_files_to_apply(engine: PsycopgEngine, schema_name: str, schema_files: List[str], version_table: str = 'version', static: bool = False, target_version: Optional[str] = None)Tuple[List[str], str]
+

Get the ordered list of .sql files to apply to the database

+
+ +
+
+

splitgraph.core.object_manager module

+

Functions related to creating, deleting and keeping track of physical Splitgraph objects.

+
+
+class splitgraph.core.object_manager.ObjectManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.fragment_manager.FragmentManager

+

Brings the multiple manager classes together and manages the object cache (downloading and uploading +objects as required in order to fulfill certain queries)

+
+
+cleanup()List[str]
+

Deletes all objects in the object_tree not required by any current repository, including their dependencies and +their remote locations. Also deletes all objects not registered in the object_tree.

+
+ +
+
+download_objects(source: Optional[splitgraph.core.object_manager.ObjectManager], objects_to_fetch: List[str], object_locations: List[Tuple[str, str, str]])List[str]
+

Fetches the required objects from the remote and stores them locally. +Does nothing for objects that already exist.

+
+
Parameters
+
    +
  • source – Remote ObjectManager. If None, will only try to download objects from the external location.

  • +
  • objects_to_fetch – List of object IDs to download.

  • +
  • object_locations – List of custom object locations, encoded as tuples (object_id, object_url, protocol).

  • +
+
+
+
+ +
+
+ensure_objects(table: Optional[Table], objects: Optional[List[str]] = None, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]] = None, defer_release: bool = False, tracer: Optional[splitgraph.core.common.Tracer] = None, upstream_manager: Optional[ObjectManager] = None)Iterator[Union[List[str], Tuple[List[str], splitgraph.core.common.CallbackList]]]
+

Resolves the objects needed to materialize a given table and makes sure they are in the local +splitgraph_meta schema.

+

Whilst inside this manager, the objects are guaranteed to exist. On exit from it, the objects are marked as +unneeded and can be garbage collected.

+
+
Parameters
+
    +
  • table – Table to materialize

  • +
  • objects – List of objects to download: one of table or objects must be specified.

  • +
  • quals – Optional list of qualifiers to be passed to the fragment engine. Fragments that definitely do +not match these qualifiers will be dropped. See the docstring for filter_fragments for the format.

  • +
  • defer_release – If True, won’t release the objects on exit.

  • +
+
+
Returns
+

If defer_release is True: List of table fragments and a callback that the caller must call +when the objects are no longer needed. If defer_release is False: just the list of table fragments.

+
+
+
+ +
+
+get_cache_occupancy()int
+
+
Returns
+

Space occupied by objects cached from external locations, in bytes.

+
+
+
+ +
+
+get_downloaded_objects(limit_to: Optional[List[str]] = None)List[str]
+

Gets a list of objects currently in the Splitgraph cache (i.e. not only existing externally.)

+
+
Parameters
+

limit_to – If specified, only the objects in this list will be returned.

+
+
Returns
+

Set of object IDs.

+
+
+
+ +
+
+get_total_object_size()
+
+
Returns
+

Space occupied by all objects on the engine, in bytes.

+
+
+
+ +
+
+make_objects_external(objects: List[str], handler: str, handler_params: Dict[Any, Any])None
+

Uploads local objects to an external location and marks them as being cached locally (thus making it possible +to evict or swap them out).

+
+
Parameters
+
    +
  • objects – Object IDs to upload. Will do nothing for objects that already exist externally.

  • +
  • handler – Object handler

  • +
  • handler_params – Extra handler parameters

  • +
+
+
+
+ +
+
+run_eviction(keep_objects: List[str], required_space: Optional[int] = None)None
+

Delete enough objects with zero reference count (only those, since we guarantee that whilst refcount is >0, +the object stays alive) to free at least required_space in the cache.

+
+
Parameters
+
    +
  • keep_objects – List of objects (besides those with nonzero refcount) that can’t be deleted.

  • +
  • required_space – Space, in bytes, to free. If the routine can’t free at least this much space, +it shall raise an exception. If None, removes all eligible objects.

  • +
+
+
+
+ +
+
+upload_objects(target: splitgraph.core.object_manager.ObjectManager, objects_to_push: List[str], handler: str = 'DB', handler_params: Optional[Dict[Any, Any]] = None)Sequence[Tuple[str, Optional[str]]]
+

Uploads physical objects to the remote or some other external location.

+
+
Parameters
+
    +
  • target – Target ObjectManager

  • +
  • objects_to_push – List of object IDs to upload.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote, FILE +to store them in a directory that can be accessed from the client and HTTP to upload them to HTTP.

  • +
  • handler_params – For HTTP, a dictionary &lbrace;“username”: username, “password”, password&rbrace;. For FILE, +a dictionary &lbrace;“path”: path&rbrace; specifying the directory where the objects shall be saved.

  • +
+
+
Returns
+

A list of (object_id, url) that specifies all objects were uploaded (skipping objects that +already exist on the remote).

+
+
+
+ +
+ +
+
+

splitgraph.core.output module

+
+
+splitgraph.core.output.conn_string_to_dict(connection: Optional[str])Dict[str, Any]
+
+ +
+
+splitgraph.core.output.parse_date(string: str)datetime.date
+
+ +
+
+splitgraph.core.output.parse_dt(string: str)datetime.datetime
+
+ +
+
+splitgraph.core.output.parse_repo_tag_or_hash(value, default='latest')
+
+ +
+
+splitgraph.core.output.parse_time(string: str)time.struct_time
+
+ +
+
+splitgraph.core.output.pluralise(word: str, number: int)str
+

1 banana, 2 bananas

+
+ +
+
+splitgraph.core.output.pretty_size(size: Union[int, float])str
+

Converts a size in bytes to its string representation (e.g. 1024 -> 1KiB) +:param size: Size in bytes

+
+ +
+
+splitgraph.core.output.slugify(text: str, max_length: int = 50)str
+
+ +
+
+splitgraph.core.output.truncate_line(line: str, length: int = 80)str
+

Truncates a line to a given length, replacing the remainder with …

+
+ +
+
+splitgraph.core.output.truncate_list(items: List[Any], max_entries: int = 10)str
+

Print a list, possibly truncating it to the specified number of entries

+
+ +
+
+

splitgraph.core.registry module

+

Functions for communicating with the remote Splitgraph catalog

+
+
+splitgraph.core.registry.get_info_key(engine: PostgresEngine, key: str)Optional[str]
+

Gets a configuration key from the remote registry, used to notify the client of the registry’s capabilities.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to get

  • +
+
+
+
+ +
+
+splitgraph.core.registry.set_info_key(engine: PostgresEngine, key: str, value: Union[bool, str])None
+

Sets a configuration value on the remote registry.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to set

  • +
  • value – New value for the key

  • +
+
+
+
+ +
+
+splitgraph.core.registry.setup_registry_mode(engine: PostgresEngine)None
+

Set up access policies/RLS:

+
    +
  • Normal users aren’t allowed to create tables/schemata (can’t do checkouts inside of a registry or +upload SG objects directly to it)

  • +
  • Normal users can’t access the splitgraph_meta schema directly: they’re only supposed to be able to +talk to it via stored procedures in splitgraph_api. Those procedures are set up with SECURITY INVOKER +(run with those users’ credentials) and what they can access is further restricted by RLS:

    +
      +
    • images/tables/tags meta tables: can only create/update/delete records where the namespace = user ID

    • +
    • objects/object_location tables: same. An object (piece of data) becomes owned by the user that creates +it and still remains so even if someone else’s image starts using it. Hence, the original owner can delete +or change it (since they control the external location they’ve uploaded it to anyway).

    • +
    +
  • +
+
+ +
+
+

splitgraph.core.repository module

+

Public API for managing images in a Splitgraph repository.

+
+
+class splitgraph.core.repository.Repository(namespace: str, repository: str, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_manager: Optional[splitgraph.core.object_manager.ObjectManager] = None)
+

Bases: object

+

Splitgraph repository API

+
+
+commit(image_hash: Optional[str] = None, comment: Optional[str] = None, snap_only: bool = False, chunk_size: Optional[int] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]]] = None, in_fragment_order: Optional[Dict[str, List[str]]] = None, overwrite: bool = False)splitgraph.core.image.Image
+

Commits all pending changes to a given repository, creating a new image.

+
+
Parameters
+
    +
  • image_hash – Hash of the commit. Chosen by random if unspecified.

  • +
  • comment – Optional comment to add to the commit.

  • +
  • snap_only – If True, will store the table as a full snapshot instead of delta compression

  • +
  • chunk_size – For tables that are stored as snapshots (new tables and where snap_only has been passed, +the table will be split into fragments of this many rows.

  • +
  • split_changeset – If True, splits the changeset into multiple fragments based on +the PK regions spanned by the current table fragments. For example, if the original table +consists of 2 fragments, first spanning rows 1-10000, second spanning rows 10001-20000 and the +change alters rows 1, 10001 and inserts a row with PK 20001, this will record the change as +3 fragments: one inheriting from the first original fragment, one inheriting from the second +and a brand new fragment. This increases the number of fragments in total but means that fewer rows +will need to be scanned to satisfy a query. +If False, the changeset will be stored as a single fragment inheriting from the last fragment in the +table.

  • +
  • extra_indexes – Dictionary of &lbrace;table: index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Dictionary of &lbrace;table: list of columns&rbrace;. If specified, will

  • +
+
+
+

sort the data inside each chunk by this/these key(s) for each table. +:param overwrite: If an object already exists, will force recreate it.

+
+
Returns
+

The newly created Image object.

+
+
+
+ +
+
+commit_engines()None
+

Commit the underlying transactions on both engines that the repository uses.

+
+ +
+
+delete(unregister: bool = True, uncheckout: bool = True)None
+

Discards all changes to a given repository and optionally all of its history, +as well as deleting the Postgres schema that it might be checked out into. +Doesn’t delete any cached physical objects.

+

After performing this operation, this object becomes invalid and must be discarded, +unless init() is called again.

+
+
Parameters
+
    +
  • unregister – Whether to purge repository history/metadata

  • +
  • uncheckout – Whether to delete the actual checked out repo. This has no effect +if the repository is backed by a registry (rather than a local engine).

  • +
+
+
+
+ +
+
+diff(table_name: str, image_1: Union[splitgraph.core.image.Image, str], image_2: Optional[Union[splitgraph.core.image.Image, str]], aggregate: bool = False)Optional[Union[bool, Tuple[int, int, int], List[Tuple[bool, Tuple]]]]
+

Compares the state of a table in different images by materializing both tables into a temporary space +and comparing them row-to-row.

+
+
Parameters
+
    +
  • table_name – Name of the table.

  • +
  • image_1 – First image hash / object. If None, uses the state of the current staging area.

  • +
  • image_2 – Second image hash / object. If None, uses the state of the current staging area.

  • +
  • aggregate – If True, returns a tuple of integers denoting added, removed and updated rows between +the two images.

  • +
+
+
Returns
+

If the table doesn’t exist in one of the images, returns True if it was added and False if it was +removed. If aggregate is True, returns the aggregation of changes as specified before. +Otherwise, returns a list of changes where each change is a tuple of +(True for added, False for removed, row contents).

+
+
+
+ +
+
+dump(stream: _io.TextIOWrapper, exclude_object_contents: bool = False)None
+

Creates an SQL dump with the metadata required for the repository and all of its objects.

+
+
Parameters
+
    +
  • stream – Stream to dump the data into.

  • +
  • exclude_object_contents – Only dump the metadata but not the actual object contents.

  • +
+
+
+
+ +
+
+classmethod from_schema(schema: str)splitgraph.core.repository.Repository
+

Convert a Postgres schema name of the format namespace/repository to a Splitgraph repository object.

+
+ +
+
+classmethod from_template(template: splitgraph.core.repository.Repository, namespace: Optional[str] = None, repository: Optional[str] = None, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None)splitgraph.core.repository.Repository
+

Create a Repository from an existing one replacing some of its attributes.

+
+ +
+
+get_all_hashes_tags()List[Tuple[Optional[str], str]]
+

Gets all tagged images and their hashes in a given repository.

+
+
Returns
+

List of (image_hash, tag)

+
+
+
+ +
+
+get_local_size()int
+

Get the actual size used by this repository’s downloaded objects.

+

This might still be double-counted if the repository shares objects +with other repositores.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+get_size()int
+

Get the physical size used by the repository’s data, counting objects that are used +by multiple images only once. This is calculated from the metadata, the on-disk +footprint might be smaller if not all of repository’s objects have been downloaded.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+has_pending_changes()bool
+

Detects if the repository has any pending changes (schema changes, table additions/deletions, content changes).

+
+ +
+
+property head
+

Return the HEAD image for the repository or None if the repository isn’t checked out.

+
+ +
+
+property head_strict
+

Return the HEAD image for the repository. Raise an exception if the repository +isn’t checked out.

+
+ +
+
+images
+

A splitgraph.core.image.ImageManager instance that performs operations +(checkout, delete etc) on this repository’s images.

+
+ +
+
+import_tables(tables: Sequence[str], source_repository: splitgraph.core.repository.Repository, source_tables: Sequence[str], image_hash: Optional[str] = None, foreign_tables: bool = False, do_checkout: bool = True, target_hash: Optional[str] = None, table_queries: Optional[Sequence[bool]] = None, parent_hash: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', skip_validation: bool = False)str
+

Creates a new commit in target_repository with one or more tables linked to already-existing tables. +After this operation, the HEAD of the target repository moves to the new commit and the new tables are +materialized.

+
+
Parameters
+
    +
  • tables – If not empty, must be the list of the same length as source_tables specifying names to store +them under in the target repository.

  • +
  • source_repository – Repository to import tables from.

  • +
  • source_tables – List of tables to import. If empty, imports all tables.

  • +
  • image_hash – Image hash in the source repository to import tables from. +Uses the current source HEAD by default.

  • +
  • foreign_tables – If True, copies all source tables to create a series of new snapshots instead of +treating them as Splitgraph-versioned tables. This is useful for adding brand new tables +(for example, from an FDW-mounted table).

  • +
  • do_checkout – If False, doesn’t check out the newly created image.

  • +
  • target_hash – Hash of the new image that tables is recorded under. If None, gets chosen at random.

  • +
  • table_queries – If not [], it’s treated as a Boolean mask showing which entries in the tables list are +instead SELECT SQL queries that form the target table. The queries have to be non-schema qualified and work +only against tables in the source repository. Each target table created is the result of the respective SQL +query. This is committed as a new snapshot.

  • +
  • parent_hash – If not None, must be the hash of the image to base the new image on. +Existing tables from the parent image are preserved in the new image. If None, the current repository +HEAD is used.

  • +
  • wrapper – Override the default class for the layered querying foreign data wrapper.

  • +
  • skip_validation – Don’t validate SQL used in import statements (used by the Splitfile executor that pre-formats the SQL).

  • +
+
+
Returns
+

Hash that the new image was stored under.

+
+
+
+ +
+
+init()None
+

Initializes an empty repo with an initial commit (hash 0000…)

+
+ +
+
+materialized_table(table_name: str, image_hash: Optional[str])Iterator[Tuple[str, str]]
+

A context manager that returns a pointer to a read-only materialized table in a given image. +The table is deleted on exit from the context manager.

+
+
Parameters
+
    +
  • table_name – Name of the table

  • +
  • image_hash – Image hash to materialize

  • +
+
+
Returns
+

(schema, table_name) where the materialized table is located.

+
+
+
+ +
+
+objects
+

A splitgraph.core.object_manager.ObjectManager instance that performs operations on +the objects on this repository’s engine (not just objects belonging to this repository).

+
+ +
+
+pull(download_all: Optional[bool] = False, overwrite_objects: bool = False, overwrite_tags: bool = False, single_image: Optional[str] = None)None
+

Synchronizes the state of the local Splitgraph repository with its upstream, optionally downloading all new +objects created on the remote.

+
+
Parameters
+
    +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download +required objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – Limit the download to a single image hash/tag.

  • +
+
+
+
+ +
+
+push(remote_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, reupload_objects: bool = False, overwrite_tags: bool = False, handler: str = 'DB', handler_options: Optional[Dict[str, Any]] = None, single_image: Optional[str] = None)splitgraph.core.repository.Repository
+

Inverse of pull: Pushes all local changes to the remote and uploads new objects.

+
+
Parameters
+
    +
  • remote_repository – Remote repository to push changes to. If not specified, the current +upstream is used.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote or S3 +to store them in an S3 bucket.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the remote repository for existing objects.

  • +
  • reupload_objects – If True, will reupload objects for which metadata is uploaded.

  • +
  • overwrite_tags – If True, will overwrite existing tags on the remote repository.

  • +
  • handler_options – Extra options to pass to the handler. For example, see +splitgraph.hooks.s3.S3ExternalObjectHandler.

  • +
  • single_image – Limit the upload to a single image hash/tag.

  • +
+
+
+
+ +
+
+rollback_engines()None
+

Rollback the underlying transactions on both engines that the repository uses.

+
+ +
+
+run_sql(sql: Union[psycopg2.sql.Composed, str], arguments: Optional[Any] = None, return_shape: splitgraph.engine.ResultShape = <ResultShape.MANY_MANY: 4>)Any
+

Execute an arbitrary SQL statement inside of this repository’s checked out schema.

+
+ +
+
+set_tags(tags: Dict[str, Optional[str]])None
+

Sets tags for multiple images.

+
+
Parameters
+

tags – List of (image_hash, tag)

+
+
+
+ +
+
+to_schema()str
+

Returns the engine schema that this repository gets checked out into.

+
+ +
+
+uncheckout(force: bool = False)None
+

Deletes the schema that the repository is checked out into

+
+
Parameters
+

force – Discards all pending changes to the schema.

+
+
+
+ +
+
+property upstream
+

The remote upstream repository that this local repository tracks.

+
+ +
+ +
+
+splitgraph.core.repository.clone(remote_repository: Union[splitgraph.core.repository.Repository, str], local_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, overwrite_tags: bool = False, download_all: Optional[bool] = False, single_image: Optional[str] = None)splitgraph.core.repository.Repository
+

Clones a remote Splitgraph repository or synchronizes remote changes with the local ones.

+

If the target repository has no set upstream engine, the source repository becomes its upstream.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object to clone or the repository’s name. If a name is passed, +the repository will be looked up on the current lookup path in order to find the engine the repository +belongs to.

  • +
  • local_repository – Local repository to clone into. If None, uses the same name as the remote.

  • +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download required +objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – If set, only get a single image with this hash/tag from the source.

  • +
+
+
Returns
+

A locally cloned Repository object.

+
+
+
+ +
+
+splitgraph.core.repository.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.repository.import_table_from_remote(remote_repository: splitgraph.core.repository.Repository, remote_tables: List[str], remote_image_hash: str, target_repository: splitgraph.core.repository.Repository, target_tables: List[Any], target_hash: Optional[str] = None)None
+

Shorthand for importing one or more tables from a yet-uncloned remote. Here, the remote image hash is required, +as otherwise we aren’t necessarily able to determine what the remote head is.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object

  • +
  • remote_tables – List of remote tables to import

  • +
  • remote_image_hash – Image hash to import the tables from

  • +
  • target_repository – Target repository to import the tables to

  • +
  • target_tables – Target table aliases

  • +
  • target_hash – Hash of the image that’s created with the import. Default random.

  • +
+
+
+
+ +
+
+splitgraph.core.repository.table_exists_at(repository: splitgraph.core.repository.Repository, table_name: str, image: Optional[splitgraph.core.image.Image] = None)bool
+

Determines whether a given table exists in a Splitgraph image without checking it out. If image_hash is None, +determines whether the table exists in the current staging area.

+
+ +
+
+

splitgraph.core.server module

+

Routines that are run inside of the engine, +here so that they can get type- and syntax-checked.

+

When inside of an LQFDW shim, these are called directly by the Splitgraph core code +to avoid a redundant connection to the engine.

+
+
+splitgraph.core.server.delete_object_files(object_id: str)
+
+ +
+
+splitgraph.core.server.download_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.get_object_schema(object_id: str)str
+
+ +
+
+splitgraph.core.server.get_object_size(object_id: str)int
+
+ +
+
+splitgraph.core.server.list_objects()List[str]
+
+ +
+
+splitgraph.core.server.object_exists(object_id: str)bool
+
+ +
+
+splitgraph.core.server.rename_object_files(old_object_id: str, new_object_id: str)
+
+ +
+
+splitgraph.core.server.set_object_schema(object_id: str, schema: str)
+
+ +
+
+splitgraph.core.server.upload_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.verify(url: str)
+
+ +
+
+

splitgraph.core.table module

+

Table metadata-related classes.

+
+
+class splitgraph.core.table.QueryPlan(table: splitgraph.core.table.Table, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str])
+

Bases: object

+

Represents the initial query plan (fragments to query) for given columns and +qualifiers.

+
+ +
+
+class splitgraph.core.table.Table(repository: Repository, image: Image, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+

Bases: object

+

Represents a Splitgraph table in a given image. Shouldn’t be created directly, use Table-loading +methods in the splitgraph.core.image.Image class instead.

+
+
+get_length()int
+

Get the number of rows in this table.

+

This might be smaller than the total number of rows in all objects belonging to this +table as some objects might overwrite each other.

+
+
Returns
+

Number of rows in table

+
+
+
+ +
+
+get_query_plan(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str], use_cache: bool = True)splitgraph.core.table.QueryPlan
+

Start planning a query (preliminary steps before object downloading, +like qualifier filtering).

+
+
Parameters
+
    +
  • quals – Qualifiers in CNF form

  • +
  • columns – List of columns

  • +
  • use_cache – If True, will fetch the plan from the cache for the same qualifiers and columns.

  • +
+
+
Returns
+

QueryPlan

+
+
+
+ +
+
+get_size()int
+

Get the physical size used by the table’s objects (including those shared with other tables).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of table’s +objects have been downloaded.

+
+
Returns
+

Size of the table in bytes.

+
+
+
+ +
+
+materialize(destination: str, destination_schema: Optional[str] = None, lq_server: Optional[str] = None, temporary: bool = False)None
+

Materializes a Splitgraph table in the target schema as a normal Postgres table, potentially downloading all +required objects and using them to reconstruct the table.

+
+
Parameters
+
    +
  • destination – Name of the destination table.

  • +
  • destination_schema – Name of the destination schema.

  • +
  • lq_server – If set, sets up a layered querying FDW for the table instead using this foreign server.

  • +
+
+
+
+ +
+
+query(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])
+

Run a read-only query against this table without materializing it.

+

This is a wrapper around query_lazy() that force evaluates the results which +might mean more fragments being materialized that aren’t needed.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

List of dictionaries of results

+
+
+
+ +
+
+query_indirect(columns: List[str], quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]])Tuple[Iterator[bytes], Callable, splitgraph.core.table.QueryPlan]
+

Run a read-only query against this table without materializing it. Instead of +actual results, this returns a generator of SQL queries that the caller can use +to get the results as well as a callback that the caller has to run after they’re +done consuming the results.

+

In particular, the query generator will prefer returning direct queries to +Splitgraph objects and only when those are exhausted will it start materializing +delta-compressed fragments.

+

This is an advanced method: you probably want to call table.query().

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of queries (bytes), a callback and a query plan object (containing stats +that are fully populated after the callback has been called to end the query).

+
+
+
+ +
+
+query_lazy(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])Iterator[Iterator[Dict[str, Any]]]
+

Run a read-only query against this table without materializing it.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of dictionaries of results.

+
+
+
+ +
+
+reindex(extra_indexes: Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]], raise_on_patch_objects=True)List[str]
+

Run extra indexes on all objects in this table and update their metadata. +This only works on objects that don’t have any deletions or upserts (have a deletion hash of 000000…).

+
+
Parameters
+
    +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • raise_on_patch_objects – If True, will raise an exception if any objects in the table +overwrite any other objects. If False, will log a warning but will reindex all non-patch objects.

  • +
+
+
+

:returns List of objects that were reindexed.

+
+ +
+ +
+
+splitgraph.core.table.merge_index_data(current_index: Dict[str, Any], new_index: Dict[str, Any])
+
+ +
+
+

splitgraph.core.types module

+
+
+class splitgraph.core.types.Comparable
+

Bases: object

+
+ +
+
+class splitgraph.core.types.MountError(table_name, error, error_text)
+

Bases: tuple

+
+
+property error
+

Alias for field number 1

+
+ +
+
+property error_text
+

Alias for field number 2

+
+ +
+
+property table_name
+

Alias for field number 0

+
+ +
+ +
+
+class splitgraph.core.types.TableColumn(ordinal, name, pg_type, is_pk, comment)
+

Bases: tuple

+
+
+property comment
+

Alias for field number 4

+
+ +
+
+property is_pk
+

Alias for field number 3

+
+ +
+
+property name
+

Alias for field number 1

+
+ +
+
+property ordinal
+

Alias for field number 0

+
+ +
+
+property pg_type
+

Alias for field number 2

+
+ +
+ +
+
+splitgraph.core.types.dict_to_table_schema_params(tables: Dict[str, Dict[str, Any]])Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]
+
+ +
+
+splitgraph.core.types.table_schema_params_to_dict(tables: Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]])Dict[str, Dict[str, Dict[str, str]]]
+
+ +
+
+splitgraph.core.types.unwrap(result: Dict[str, Union[splitgraph.core.types.MountError, T]])Tuple[Dict[str, T], Dict[str, splitgraph.core.types.MountError]]
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.core.sql.mdx b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.core.sql.mdx new file mode 100644 index 00000000..c07302b7 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.core.sql.mdx @@ -0,0 +1,118 @@ + + + +export const meta = { + title: "splitgraph.core.sql package", + id: "splitgraph.core.sql package" +}; + +
+

Module contents

+

Routines for managing SQL statements

+
+
+splitgraph.core.sql.insert(table: str, columns: Sequence[str], schema: str = 'splitgraph_meta')psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to insert as a list of strings.

  • +
  • schema – Schema that contains the table

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query (parameterized)

+
+
+
+ +
+
+splitgraph.core.sql.prepare_splitfile_sql(sql: str, image_mapper: Callable)Tuple[str, str]
+

Transform an SQL query to prepare for it to be used in a Splitfile SQL command and validate it. +The rules are:

+
+
    +
  • Only basic DDL (CREATE/ALTER/DROP table) and DML (SELECT/INSERT/UPDATE/DELETE) are permitted.

  • +
  • All tables must be either non-schema qualified (the statement is run with search_path

  • +
+

set to the single schema that a Splitgraph image is checked out into) or have schemata of +format namespace/repository:hash_or_tag. In the second case, the schema is rewritten to point +at a temporary mount of the Splitgraph image.

+
+
+
Parameters
+
    +
  • sql – SQL query

  • +
  • image_mapper – Takes in an image and gives back the schema it should be rewritten to +(for the purposes of execution) and the canonical form of the image.

  • +
+
+
Returns
+

Transformed form of the SQL with substituted schema shims for Splitfile execution +and the canonical form (with e.g. tags resolved into at-the-time full image hashes)

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+
+splitgraph.core.sql.recover_original_schema_name(sql: str, schema_name: str)str
+

Postgres truncates identifiers to 63 characters at parse time and, as pglast +uses bits of PG to parse queries, image names like noaa/climate:64_chars_of_hash +get truncated which can cause ambiguities and issues in provenance. We can’t +get pglast to give us back the full identifier, but we can try and figure out +what it used to be and patch the AST to have it again.

+
+ +
+
+splitgraph.core.sql.select(table: str, columns: str = '*', where: str = '', schema: str = 'splitgraph_meta', table_args: Optional[str] = None)psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to select as a string. WARN: concatenated directly without any formatting.

  • +
  • where – If specified, added to the query with a “WHERE” keyword. WARN also concatenated directly.

  • +
  • schema – Defaults to SPLITGRAPH_META_SCHEMA.

  • +
  • table_args – If specified, appends to the FROM clause after the table specification, +for example, SELECT * FROM “splitgraph_api”.”get_images” (%s, %s) …

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query.

+
+
+
+ +
+
+splitgraph.core.sql.validate_import_sql(sql: str)str
+

Check an SQL query to see if it can be safely used in an IMPORT statement +(e.g. FROM noaa/climate:latest IMPORT &lbrace;SELECT * FROM rainfall WHERE state = ‘AZ’&rbrace; AS rainfall. +In this case, only a single SELECT statement is supported.

+
+
Parameters
+

sql – SQL query

+
+
Returns
+

Canonical (formatted) form of the SQL statement

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.engine.mdx b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.engine.mdx new file mode 100644 index 00000000..395cb80c --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.engine.mdx @@ -0,0 +1,565 @@ + + + +export const meta = { + title: "splitgraph.engine package", + id: "splitgraph.engine package" +}; + +
+

Module contents

+

Defines the interface for a Splitgraph engine (a backing database), including running basic SQL commands, +tracking tables for changes and uploading/downloading tables to other remote engines.

+

By default, Splitgraph is backed by Postgres: see splitgraph.engine.postgres for an example of how to +implement a different engine.

+
+
+class splitgraph.engine.ChangeEngine
+

Bases: splitgraph.engine.SQLEngine, abc.ABC

+

An SQL engine that can perform change tracking on a set of tables.

+
+
+discard_pending_changes(schema, table=None)
+

Discard recorded pending changes for a tracked table or the whole schema

+
+ +
+
+get_change_key(schema: str, table: str)List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_changed_tables(schema)
+

List tracked tables that have pending changes

+
+
Parameters
+

schema – Schema to check for changes

+
+
Returns
+

List of tables with changed contents

+
+
+
+ +
+
+get_pending_changes(schema, table, aggregate=False)
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: tuple with numbers of (added_rows, removed_rows, updated_rows). +If aggregate is False: A changeset. The changeset is a list of +(pk, action (0 for Insert, 1 for Delete, 2 for Update), action_data) +where action_data is None for Delete and &lbrace;‘c’: [column_names], ‘v’: [column_values]&rbrace; that +have been inserted/updated otherwise.

+
+
+
+ +
+
+get_tracked_tables()
+
+
Returns
+

A list of (table_schema, table_name) that the engine currently tracks for changes

+
+
+
+ +
+
+has_pending_changes(schema)
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables)
+

Start engine-specific change tracking on a list of tables.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+
+untrack_tables(tables)
+

Stop engine-specific change tracking on a list of tables and delete any pending changes.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+ +
+
+class splitgraph.engine.ObjectEngine
+

Bases: object

+

Routines for storing/applying objects as well as sharing them with other engines.

+
+
+apply_fragments(objects, target_schema, target_table, extra_quals=None, extra_qual_args=None, schema_spec=None, progress_every: Optional[int] = None)
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids)
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects, remote_engine)
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id, stream, schema)
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+get_object_schema(object_id)
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id)
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+store_fragment(inserted, deleted, schema, table, source_schema, source_table, source_schema_spec)
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args: Optional[Sequence[Any]], overwrite: bool)
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+upload_objects(objects, remote_engine)
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.ResultShape(value)
+

Bases: enum.Enum

+

Shape that the result of a query will be coerced to

+
+
+MANY_MANY = 4
+
+ +
+
+MANY_ONE = 3
+
+ +
+
+NONE = 0
+
+ +
+
+ONE_MANY = 2
+
+ +
+
+ONE_ONE = 1
+
+ +
+ +
+
+class splitgraph.engine.SQLEngine
+

Bases: abc.ABC

+

Abstraction for a Splitgraph SQL backend. Requires any overriding classes to implement run_sql as well as +a few other functions. Together with the information_schema (part of the SQL standard), this class uses those +functions to implement some basic database management methods like listing, deleting, creating, dumping +and loading tables.

+
+
+close()
+

Commit and close the engine’s backing connection

+
+ +
+
+commit()
+

Commit the engine’s backing connection

+
+ +
+
+copy_table(source_schema: str, source_table: str, target_schema: str, target_table: str, with_pk_constraints: bool = True)None
+

Copy a table in the same engine, optionally applying primary key constraints as well.

+
+ +
+
+create_schema(schema: str)None
+

Create a schema if it doesn’t exist

+
+ +
+
+create_table(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False)None
+

Creates a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
+
+ +
+
+delete_schema(schema: str)None
+

Delete a schema if it exists, including all the tables in it.

+
+ +
+
+delete_table(schema: str, table: str)None
+

Drop a table from a schema if it exists

+
+ +
+
+static dump_table_creation(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False)Tuple[psycopg2.sql.Composed, Tuple]
+

Dumps the DDL for a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
Returns
+

An SQL statement that reconstructs the table schema + args to be mogrified into it.

+
+
+
+ +
+
+dump_table_sql(schema, table_name, stream, columns='*', where='', where_args=None, target_schema=None, target_table=None)
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_all_tables(schema: str)List[str]
+

Get all tables in a given schema.

+
+ +
+
+get_full_table_schema(schema: str, table_name: str)List[splitgraph.core.types.TableColumn]
+

Generates a list of (column ordinal, name, data type, is_pk, column comment), +used to detect schema changes like columns being dropped/added/renamed or type changes.

+

NB this doesn’t work for temporary tables (pg_temp) and returns an empty schema.

+
+ +
+
+get_primary_keys(schema, table)
+

Get a list of (column_name, column_type) denoting the primary keys of a given table.

+
+ +
+
+get_table_type(schema: str, table: str)Optional[str]
+

Get the type of the table (BASE or FOREIGN)

+
+ +
+
+initialize()
+

Does any required initialization of the engine

+
+ +
+
+lock_table(schema, table)
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback()
+

Rollback the engine’s backing connection

+
+ +
+
+run_sql(statement, arguments=None, return_shape=<ResultShape.MANY_MANY: 4>, named=False)
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement, arguments, schema=None)
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+run_sql_in(schema: str, sql: Union[psycopg2.sql.Composed, str], arguments: None = None, return_shape: splitgraph.engine.ResultShape = <ResultShape.MANY_MANY: 4>)Any
+

Executes a non-schema-qualified query against a specific schema.

+
+
Parameters
+
    +
  • schema – Schema to run the query in

  • +
  • sql – Query

  • +
  • arguments – Query arguments

  • +
  • return_shape – ReturnShape to coerce the result into.

  • +
+
+
+
+ +
+
+savepoint(name: str)Iterator[None]
+

At the beginning of this context manager, a savepoint is initialized and any database +error that occurs in run_sql results in a rollback to this savepoint rather than the +rollback of the whole transaction. At exit, the savepoint is released.

+
+ +
+
+schema_exists(schema: str)bool
+

Check if a schema exists on the engine.

+
+
Parameters
+

schema – Schema name

+
+
+
+ +
+
+table_exists(schema: str, table_name: str)bool
+

Check if a table exists on the engine.

+
+
Parameters
+
    +
  • schema – Schema name

  • +
  • table_name – Table name

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.SavepointStack
+

Bases: _thread._local

+
+ +
+
+splitgraph.engine.get_engine(name: Optional[str] = None, use_socket: bool = False, use_fdw_params: bool = False, autocommit: bool = False)PostgresEngine
+

Get the current global engine or a named remote engine

+
+
Parameters
+
    +
  • name – Name of the remote engine as specified in the config. If None, the current global engine +is returned.

  • +
  • use_socket – Use a local UNIX socket instead of PG_HOST, PG_PORT for LOCAL engine connections.

  • +
  • use_fdw_params – Use the _FDW connection parameters (SG_ENGINE_FDW_HOST/PORT). By default, +will infer from the global splitgraph.config.IN_FDW flag.

  • +
  • autocommit – If True, the engine will not open SQL transactions implicitly.

  • +
+
+
+
+ +
+
+splitgraph.engine.set_engine(engine: PostgresEngine)None
+

Switch the global engine to a different one.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.switch_engine(engine: PostgresEngine)Iterator[None]
+

Switch the global engine to a different one. The engine will +get switched back on exit from the context manager.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.validate_type(t: str)str
+
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.engine.postgres.mdx b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.engine.postgres.mdx new file mode 100644 index 00000000..40133912 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.engine.postgres.mdx @@ -0,0 +1,456 @@ + + + +export const meta = { + title: "splitgraph.engine.postgres package", + id: "splitgraph.engine.postgres package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.engine.postgres.engine module

+

Default Splitgraph engine: uses PostgreSQL to store metadata and actual objects and an audit stored procedure +to track changes, as well as the Postgres FDW interface to upload/download objects to/from other Postgres engines.

+
+
+class splitgraph.engine.postgres.engine.AuditTriggerChangeEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.PsycopgEngine, splitgraph.engine.ChangeEngine

+

Change tracking based on an audit trigger stored procedure

+
+
+discard_pending_changes(schema: str, table: Optional[str] = None)None
+

Discard recorded pending changes for a tracked schema / table

+
+ +
+
+get_changed_tables(schema: str)List[str]
+

Get list of tables that have changed content

+
+ +
+
+get_pending_changes(schema: str, table: str, aggregate: bool = False)Union[List[Tuple[int, int]], List[Tuple[Tuple[str, ], bool, Dict[str, Any], Dict[str, Any]]]]
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: List of tuples of (change_type, number of rows). +If aggregate is False: List of (primary_key, change_type, change_data)

+
+
+
+ +
+
+get_tracked_tables()List[Tuple[str, str]]
+

Return a list of tables that the audit trigger is working on.

+
+ +
+
+has_pending_changes(schema: str)bool
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables: List[Tuple[str, str]])None
+

Install the audit trigger on the required tables

+
+ +
+
+untrack_tables(tables: List[Tuple[str, str]])None
+

Remove triggers from tables and delete their pending changes

+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PostgresEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.AuditTriggerChangeEngine, splitgraph.engine.ObjectEngine

+

An implementation of the Postgres engine for Splitgraph

+
+
+apply_fragments(objects: List[Tuple[str, str]], target_schema: str, target_table: str, extra_quals: Optional[psycopg2.sql.Composed] = None, extra_qual_args: Optional[Tuple[str]] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, progress_every: Optional[int] = None)None
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids: List[str])None
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine)List[str]
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id: str, stream: _io.TextIOWrapper, schema: str)None
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+dump_object_creation(object_id: str, schema: str, table: Optional[str] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, if_not_exists: bool = False)bytes
+

Generate the SQL that remounts a foreign table pointing to a Splitgraph object.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • schema – Schema to create the table in

  • +
  • table – Name of the table to mount

  • +
  • schema_spec – Schema of the table

  • +
  • if_not_exists – Add IF NOT EXISTS to the DDL

  • +
+
+
Returns
+

SQL in bytes format.

+
+
+
+ +
+
+get_change_key(schema: str, table: str)List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_object_schema(object_id: str)List[splitgraph.core.types.TableColumn]
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id: str)int
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+mount_object(object_id: str, table: None = None, schema: str = 'splitgraph_meta', schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None)None
+

Mount an object from local storage as a foreign table.

+
+
Parameters
+
    +
  • object_id – ID of the object

  • +
  • table – Table to mount the object into

  • +
  • schema – Schema to mount the object into

  • +
  • schema_spec – Schema of the object.

  • +
+
+
+
+ +
+
+rename_object(old_object_id: str, new_object_id: str)
+
+ +
+
+store_fragment(inserted: Any, deleted: Any, schema: str, table: str, source_schema: str, source_table: str, source_schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None)None
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args=None, overwrite=False)None
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+sync_object_mounts()None
+

Scan through local object storage and synchronize it with the foreign tables in +splitgraph_meta (unmounting non-existing objects and mounting existing ones).

+
+ +
+
+unmount_objects(object_ids: List[str])None
+

Unmount objects from splitgraph_meta (this doesn’t delete the physical files.

+
+ +
+
+upload_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine)None
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PsycopgEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.SQLEngine

+

Postgres SQL engine backed by a Psycopg connection.

+
+
+close()None
+

Commit and close the engine’s backing connection

+
+ +
+
+close_others()None
+

Close and release all other connections to the connection pool.

+
+ +
+
+commit()None
+

Commit the engine’s backing connection

+
+ +
+
+property connection
+

Engine-internal Psycopg connection.

+
+ +
+
+copy_cursor()
+

Return a cursor that can be used for copy_expert operations

+
+ +
+
+delete_database(database: str)None
+

Helper function to drop a database using the admin connection

+
+
Parameters
+

database – Database name to drop

+
+
+
+ +
+
+dump_table_sql(schema: str, table_name: str, stream: _io.TextIOWrapper, columns: str = '*', where: str = '', where_args: Optional[Union[List[str], Tuple[str, str]]] = None, target_schema: Optional[str] = None, target_table: Optional[str] = None)None
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_primary_keys(schema: str, table: str)List[Tuple[str, str]]
+

Inspects the Postgres information_schema to get the primary keys for a given table.

+
+ +
+
+in_fdw
+

List of notices issued by the server during the previous execution of run_sql.

+
+ +
+
+initialize(skip_object_handling: bool = False, skip_create_database: bool = False)None
+

Create the Splitgraph Postgres database and install the audit trigger

+
+
Parameters
+
    +
  • skip_object_handling – If True, skips installation of +audit triggers and other object management routines for engines +that don’t need change tracking or checkouts.

  • +
  • skip_create_database – Don’t create the Splitgraph database

  • +
+
+
+
+ +
+
+lock_table(schema: str, table: str)None
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback()None
+

Rollback the engine’s backing connection

+
+ +
+
+run_api_call(call: str, *args, schema: str = 'splitgraph_api')Any
+
+ +
+
+run_api_call_batch(call: str, argslist, schema: str = 'splitgraph_api')
+
+ +
+
+run_chunked_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Sequence[Any], return_shape: Optional[splitgraph.engine.ResultShape] = <ResultShape.MANY_MANY: 4>, chunk_size: int = 1000, chunk_position: int = -1)Any
+

Because the Splitgraph API has a request size limitation, certain +SQL calls with variadic arguments are going to be too long to fit that. This function +runs an SQL query against a set of broken up arguments and returns the combined result.

+
+ +
+
+run_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Optional[Sequence[Any]] = None, return_shape: Optional[splitgraph.engine.ResultShape] = <ResultShape.MANY_MANY: 4>, named: bool = False)Any
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement: Union[psycopg2.sql.Composed, str], arguments: Any, schema: Optional[str] = None, max_size=261000)None
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+property splitgraph_version
+

Returns the version of the Splitgraph library installed on the engine +and by association the version of the engine itself.

+
+ +
+ +
+
+splitgraph.engine.postgres.engine.add_ud_flag_column(table_schema: List[splitgraph.core.types.TableColumn])List[splitgraph.core.types.TableColumn]
+
+ +
+
+splitgraph.engine.postgres.engine.chunk(sequence: Sequence[T], chunk_size: int = 1000)Iterator[List[T]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_change_key(schema_spec: List[splitgraph.core.types.TableColumn])List[Tuple[str, str]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_conn_str(conn_params: Dict[str, str])str
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.hooks.data_source.mdx b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.hooks.data_source.mdx new file mode 100644 index 00000000..a76c31a2 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.hooks.data_source.mdx @@ -0,0 +1,565 @@ + + + +export const meta = { + title: "splitgraph.hooks.data_source package", + id: "splitgraph.hooks.data_source package" +}; + +
+

Module contents

+
+
+splitgraph.hooks.data_source.get_data_source(data_source: str)Type[splitgraph.hooks.data_source.base.DataSource]
+

Returns a class for a given data source

+
+ +
+
+splitgraph.hooks.data_source.get_data_sources()List[str]
+

Returns the names of all registered data sources.

+
+ +
+
+splitgraph.hooks.data_source.register_data_source(name: str, data_source_class: Type[splitgraph.hooks.data_source.base.DataSource])None
+

Returns a data source under a given name.

+
+ +
+ +
+

Submodules

+
+
+

splitgraph.hooks.data_source.base module

+
+
+class splitgraph.hooks.data_source.base.DataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)
+

Bases: abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+abstract classmethod get_description()str
+
+ +
+
+abstract classmethod get_name()str
+
+ +
+
+abstract introspect()Dict[str, Union[Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]], splitgraph.core.types.MountError]]
+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_load = False
+
+ +
+
+supports_mount = False
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any]
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.LoadableDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+load(repository: Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)str
+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_load = True
+
+ +
+
+table_params_schema: Dict[str, Any]
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.MountableDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+abstract mount(schema: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None, overwrite: bool = True)Optional[List[splitgraph.core.types.MountError]]
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_mount = True
+
+ +
+
+table_params_schema: Dict[str, Any]
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.SyncableDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.LoadableDataSource, splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_load = True
+
+ +
+
+supports_sync = True
+
+ +
+
+sync(repository: Repository, image_hash: Optional[str], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)str
+
+ +
+
+table_params_schema: Dict[str, Any]
+
+ +
+ +
+
+splitgraph.hooks.data_source.base.get_ingestion_state(repository: Repository, image_hash: Optional[str])Optional[Dict[str, Any]]
+
+ +
+
+splitgraph.hooks.data_source.base.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.hooks.data_source.base.prepare_new_image(repository: Repository, hash_or_tag: Optional[str])Tuple[Optional[splitgraph.core.image.Image], str]
+
+ +
+
+

splitgraph.hooks.data_source.fdw module

+
+
+class splitgraph.hooks.data_source.fdw.ElasticSearchDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount an ElasticSearch instance.\n\nMount a set of tables proxying to a remote ElasticSearch index.\n\nThis uses a fork of postgres-elasticsearch-fdw behind the scenes. You can add a column\n`query` to your table and set it as `query_column` to pass advanced ES queries and aggregations.\nFor example:\n\n```\nsgr mount elasticsearch target_schema -c elasticsearch:9200 -o@- <<EOF\n    &lbrace;\n      "tables": &lbrace;\n        "table_1": &lbrace;\n          "schema": &lbrace;\n            "id": "text",\n            "@timestamp": "timestamp",\n            "query": "text",\n            "col_1": "text",\n            "col_2": "boolean"\n          &rbrace;,\n          "options": &lbrace;\n              "index": "index-pattern*",\n              "rowid_column": "id",\n              "query_column": "query"\n          &rbrace;\n        &rbrace;\n      &rbrace;\n    &rbrace;\nEOF\n```\n'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': ['string', 'null']&rbrace;, 'username': &lbrace;'type': ['string', 'null']&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'index': &lbrace;'description': 'ES index name or pattern to use, for example, "events-*"', 'type': 'string'&rbrace;, 'query_column': &lbrace;'description': 'Name of the column to use to pass queries in', 'type': 'string'&rbrace;, 'score_column': &lbrace;'description': 'Name of the column with the document score', 'type': 'string'&rbrace;, 'scroll_duration': &lbrace;'description': 'How long to hold the scroll context open for, default 10m', 'type': 'string'&rbrace;, 'scroll_size': &lbrace;'description': 'Fetch size, default 1000', 'type': 'integer'&rbrace;, 'type': &lbrace;'description': 'Pre-ES7 doc_type, not required in ES7 or later', 'type': 'string'&rbrace;&rbrace;, 'required': ['index'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.MountableDataSource, splitgraph.hooks.data_source.base.LoadableDataSource, abc.ABC

+
+
+commandline_help: str = ''
+
+ +
+
+commandline_kwargs_help: str = ''
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs)splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+abstract get_fdw_name()
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()Mapping[str, str]
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)Dict[str, str]
+
+ +
+
+get_table_schema(table_name: str, table_schema: List[splitgraph.core.types.TableColumn])List[splitgraph.core.types.TableColumn]
+
+ +
+
+get_user_options()Mapping[str, str]
+
+ +
+
+introspect()Dict[str, Union[Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]], splitgraph.core.types.MountError]]
+
+ +
+
+mount(schema: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None, overwrite: bool = True)Optional[List[splitgraph.core.types.MountError]]
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+preview(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]])Dict[str, Union[splitgraph.core.types.MountError, List[Dict[str, Any]]]]
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MongoDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Mongo database.\n\nMounts one or more collections on a remote Mongo database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'tables: A dictionary of form\n```\n&lbrace;\n    "table_name": &lbrace;\n        "schema": &lbrace;"col1": "type1"...&rbrace;,\n        "options": &lbrace;"database": <dbname>, "collection": <collection>&rbrace; \n    &rbrace; \n&rbrace;\n```\n'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_server_options()
+
+ +
+
+get_table_schema(table_name, table_schema)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'collection': &lbrace;'type': 'string'&rbrace;, 'database': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['database', 'collection'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MySQLDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a MySQL database.\n\nMounts a schema on a remote MySQL database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'dbname: Remote MySQL database name (required)\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n        '
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'type': 'string'&rbrace;, 'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.PostgreSQLDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Postgres database.\n\nMounts a schema on a remote Postgres database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'dbname: Database name (required)\nremote_schema: Remote schema name (required)\nextra_server_args: Dictionary of extra arguments to pass to the foreign server\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n    '
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'description': 'Database name', 'type': 'string'&rbrace;, 'host': &lbrace;'description': 'Remote hostname', 'type': 'string'&rbrace;, 'port': &lbrace;'description': 'Port', 'type': 'integer'&rbrace;, 'remote_schema': &lbrace;'description': 'Remote schema name', 'type': 'string'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname', 'remote_schema'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.hooks.data_source.fdw.create_foreign_table(schema: str, server: str, table_name: str, schema_spec: List[splitgraph.core.types.TableColumn], extra_options: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.hooks.data_source.fdw.import_foreign_schema(engine: PostgresEngine, mountpoint: str, remote_schema: str, server_id: str, tables: List[str], options: Optional[Dict[str, str]] = None)List[splitgraph.core.types.MountError]
+
+ +
+
+splitgraph.hooks.data_source.fdw.init_fdw(engine: PostgresEngine, server_id: str, wrapper: str, server_options: Optional[Mapping[str, Optional[str]]] = None, user_options: Optional[Mapping[str, str]] = None, overwrite: bool = True)None
+

Sets up a foreign data server on the engine.

+
+
Parameters
+
    +
  • engine – PostgresEngine

  • +
  • server_id – Name to call the foreign server, must be unique. Will be deleted if exists.

  • +
  • wrapper – Name of the foreign data wrapper (must be installed as an extension on the engine)

  • +
  • server_options – Dictionary of FDW options

  • +
  • user_options – Dictionary of user options

  • +
  • overwrite – If the server already exists, delete and recreate it.

  • +
+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.hooks.mdx b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.hooks.mdx new file mode 100644 index 00000000..81e40082 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.hooks.mdx @@ -0,0 +1,366 @@ + + + +export const meta = { + title: "splitgraph.hooks package", + id: "splitgraph.hooks package" +}; + +
+

Module contents

+

Various hooks for extending Splitgraph, including:

+
+
    +
  • External object handlers (splitgraph.hooks.external_objects) allowing to download/upload objects +to locations other than the remote Splitgraph engine.

  • +
  • Data sources (splitgraph.hooks.data_sources) that allow to add data to Splitgraph, e.g.

  • +
+
+

using the Postgres engine’s FDW interface to mount other external databases on the engine.

+
+ +
+
+ + +
+

Submodules

+
+
+

splitgraph.hooks.external_objects module

+

Hooks for registering handlers to upload/download objects from external locations into Splitgraph’s cache.

+
+
+class splitgraph.hooks.external_objects.ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: object

+

Framework for allowing to dump objects from the Splitgraph cache to an external location. This allows +the objects to be stored somewhere other than the actual remote engine.

+

External object handlers must extend this class and be registered in the Splitgraph config.

+

For an example of how this can be used, see splitgraph.hooks.s3: it’s a handler allowing objects to be +uploaded to S3/S3-compatible host using the Minio API. It’s registered in the config as follows:

+
[external_handlers]
+S3=splitgraph.hooks.s3.S3ExternalObjectHandler
+
+
+

The protocol and the URLs returned by this handler are stored in splitgraph_meta.external_objects +and used to download the objects back into the Splitgraph cache when they are needed.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine)Sequence[str]
+

Download objects from the external location into the Splitgraph cache.

+
+
Parameters
+
    +
  • objects – List of tuples (object_id, object_url) that this handler had previosly +uploaded the objects to.

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of object IDs that have been successfully downloaded.

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine)Sequence[Tuple[str, str]]
+

Upload objects from the Splitgraph cache to an external location

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of successfully uploaded object IDs and URLs they can be found at.

+
+
+
+ +
+ +
+
+splitgraph.hooks.external_objects.get_external_object_handler(name: str, handler_params: Dict[Any, Any])splitgraph.hooks.external_objects.ExternalObjectHandler
+

Load an external protocol handler by its name, initializing it with optional parameters.

+
+ +
+
+splitgraph.hooks.external_objects.register_upload_download_handler(name: str, handler_class: Callable[[], splitgraph.hooks.external_objects.ExternalObjectHandler])None
+

Register an external protocol handler. See the docstring for get_upload_download_handler for the required +signatures of the handler functions.

+
+ +
+
+

splitgraph.hooks.mount_handlers module

+

Extra wrapper code for mount handlers

+
+
+splitgraph.hooks.mount_handlers.mount(mountpoint: str, mount_handler: str, handler_kwargs: Dict[str, Any], overwrite: bool = True, tables: Optional[TableInfo] = None)None
+

Mounts a foreign database via an FDW (without creating new Splitgraph objects)

+
+
Parameters
+
    +
  • mountpoint – Mountpoint to import the new tables into.

  • +
  • mount_handler – The type of the mounted database.

  • +
  • handler_kwargs – Dictionary of options to pass to the mount handler.

  • +
  • overwrite – Delete the foreign server if it already exists. Used by mount_postgres for data pulls.

  • +
  • tables – List of tables to mount or their schemas

  • +
+
+
+
+ +
+
+splitgraph.hooks.mount_handlers.mount_postgres(mountpoint, **kwargs)None
+

Mount a Postgres database.

+

Mounts a schema on a remote Postgres database as a set of foreign tables locally. +

+
+
Parameters
+
    +
  • mountpoint – Schema to mount the remote into.

  • +
  • server – Database hostname.

  • +
  • port – Port the Postgres server is running on.

  • +
  • username – A read-only user that the database will be accessed as.

  • +
  • password – Password for the read-only user.

  • +
  • dbname – Remote database name.

  • +
  • remote_schema – Remote schema name.

  • +
  • extra_server_args – Dictionary of extra arguments to pass to the foreign server

  • +
  • tables – Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.

  • +
+
+
+

If a dictionary, must have the format &lbrace;“table_name”: &lbrace;“col_1”: “type_1”, …&rbrace;&rbrace;.

+
+ +
+
+

splitgraph.hooks.s3 module

+

Plugin for uploading Splitgraph objects from the cache to an external S3-like object store

+
+
+class splitgraph.hooks.s3.S3ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: splitgraph.hooks.external_objects.ExternalObjectHandler

+

Uploads/downloads the objects to/from S3/S3-compatible host using the Minio client.

+

The handler is “attached” to a given registry which manages issuing pre-signed +GET/PUT URLs.

+

The handler supports a parameter threads specifying the number of threads +used to upload the objects.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine)List[str]
+

Download objects from Minio.

+
+
Parameters
+

objects – List of (object ID, object URL (object ID it’s stored under))

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine)List[Tuple[str, str]]
+

Upload objects to Minio

+
+
Parameters
+
    +
  • remote_engine – Remote Engine class

  • +
  • objects – List of object IDs to upload

  • +
+
+
Returns
+

List of tuples with successfully uploaded objects and their URLs.

+
+
+
+ +
+ +
+
+splitgraph.hooks.s3.get_object_download_urls(remote_engine, remote_object_ids)
+
+ +
+
+splitgraph.hooks.s3.get_object_upload_urls(remote_engine, objects)
+
+ +
+
+

splitgraph.hooks.s3_server module

+

S3 registry-side routines called from the Python stored procedure +that are aware of the actual S3 access creds and generate pre-signed +URLs to upload/download objects.

+
+
+splitgraph.hooks.s3_server.delete_objects(client: minio.api.Minio, object_ids: List[str])None
+

Delete objects stored in Minio

+
+
Parameters
+
    +
  • client – Minio client

  • +
  • object_ids – List of Splitgraph object IDs to delete

  • +
+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_download_urls(s3_host: str, object_ids: List[str])List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_upload_urls(s3_host: str, object_ids: List[str])List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.list_objects(client: minio.api.Minio)List[str]
+

List objects stored in Minio

+
+
Parameters
+

client – Minio client

+
+
Returns
+

List of Splitgraph object IDs

+
+
+
+ +
+
+

splitgraph.hooks.splitfile_commands module

+

A framework for custom Splitfile commands. The execution flow is as follows:

+
+
    +
  • When the Splitfile executor finds an unknown command, it looks for an entry in the config file:

    +
    [commands]
    +RUN=splitgraph.plugins.Run
    +
    +
    +
  • +
  • The command class must extend this class, initialized at every invocation time.

  • +
  • The command’s calc_hash() method is run. The resultant command context hash is combined with the current +image hash to produce the new image hash: if it already exists, then the image is simply checked out.

  • +
  • Otherwise (or if calc_hash is undefined or returns None), execute(), where the actual command should be +implemented, is run. If it returns a hash, this hash is used for the new image. If this hash already exists, +the existing image is checked out instead. If the command returns None, a random hash is generated for the +new image.

  • +
+
+
+
+class splitgraph.hooks.splitfile_commands.PluginCommand
+

Bases: object

+

Base class for custom Splitfile commands.

+
+
+calc_hash(repository, args)
+

Calculates the command context hash for this custom command. If either the command context hash or the +previous image hash has changed, then the image hash produced by this command will change. +Consequently, two commands with the same command context hashes are assumed to have the same effect +on any Splitgraph images.

+

This is supposed to be a lightweight method intended for pre-flight image hash calculations +(without performing the actual transformation). If it returns None, the actual transformation is run anyway.

+

For example, for a command that imports some data from an external URL, this could be the hash of the last +modified timestamp provided by the external data vendor. If the timestamp is unchanged, the data is unchanged +and so actual command won’t be re-executed.

+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits)

+
+
+
+ +
+
+execute(repository, args)
+

Execute the custom command against the target schema, optionally returning the new image hash. The contract +for the command is as follows (though it is not currently enforced by the runtime):

+
+
    +
  • Has to use get_engine().run_sql (or run_sql_batch) to interact with the engine.

  • +
  • Can only write to the schema with the checked-out repository (run_sql runs non-schema-qualified +statements against the correct schema).

  • +
  • Can inspect splitgraph_meta (e.g. to find the current HEAD) for the repository.

  • +
  • Can’t alter the versioning of the repository.

  • +
+
+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits). If calc_hash() had previously returned +a hash, this hash is ignored. If both this command and calc_hash() return None, the hash is randomly +generated.

+
+
+
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.ingestion.csv.mdx b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.ingestion.csv.mdx new file mode 100644 index 00000000..23790cd3 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.ingestion.csv.mdx @@ -0,0 +1,283 @@ + + + +export const meta = { + title: "splitgraph.ingestion.csv package", + id: "splitgraph.ingestion.csv package" +}; + +
+

Module contents

+
+
+class splitgraph.ingestion.csv.CSVDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount CSV files in S3/HTTP.\n\nIf passed an URL, this will live query a CSV file on an HTTP server. If passed\nS3 access credentials, this will scan a bucket for CSV files, infer their schema\nand make them available to query over SQL.  \n\nFor example:  \n\n\x08\n```\nsgr mount csv target_schema -o@- <<EOF\n  &lbrace;\n    "s3_endpoint": "cdn.mycompany.com:9000",\n    "s3_access_key": "ABCDEF",\n    "s3_secret_key": "GHIJKL",\n    "s3_bucket": "data",\n    "s3_object_prefix": "csv_files/current/",\n    "autodetect_header": true,\n    "autodetect_dialect": true,\n    "autodetect_encoding": true\n  &rbrace;\nEOF\n```\n'
+
+ +
+
+commandline_kwargs_help: str = "s3_access_key:\ns3_secret_key:\nurl: HTTP URL to the CSV file.\ns3_endpoint: S3 endpoint (including port if required).\ns3_region: Region of the S3 bucket.\ns3_secure: Whether to use HTTPS for S3 access.\ns3_bucket: Bucket the object is in.\ns3_object: Limit the import to a single object.\ns3_object_prefix: Prefix for object in S3 bucket.\nautodetect_header: Detect whether the CSV file has a header automatically.\nautodetect_dialect: Detect the CSV file's dialect (separator, quoting characters etc) automatically.\nautodetect_encoding: Detect the CSV file's encoding automatically.\nautodetect_sample_size: Sample size, in bytes, for encoding/dialect/header detection.\nschema_inference_rows: Number of rows to use for schema inference.\nencoding: Encoding of the CSV file.\nignore_decode_errors: Ignore errors when decoding the file.\nheader: First line of the CSV file is its header.\ndelimiter: Character used to separate fields in the file.\nquotechar: Character used to quote fields."
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'s3_access_key': &lbrace;'type': 'string'&rbrace;, 's3_secret_key': &lbrace;'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs)splitgraph.ingestion.csv.CSVDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)Dict[str, str]
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'oneOf': [&lbrace;'required': ['url']&rbrace;, &lbrace;'required': ['s3_endpoint', 's3_bucket']&rbrace;], 'properties': &lbrace;'autodetect_dialect': &lbrace;'description': "Detect the CSV file's dialect (separator, quoting characters etc) automatically", 'type': 'boolean'&rbrace;, 'autodetect_encoding': &lbrace;'description': "Detect the CSV file's encoding automatically", 'type': 'boolean'&rbrace;, 'autodetect_header': &lbrace;'description': 'Detect whether the CSV file has a header automatically', 'type': 'boolean'&rbrace;, 'autodetect_sample_size': &lbrace;'description': 'Sample size, in bytes, for encoding/dialect/header detection', 'type': 'integer'&rbrace;, 'delimiter': &lbrace;'description': 'Character used to separate fields in the file', 'type': 'string'&rbrace;, 'encoding': &lbrace;'description': 'Encoding of the CSV file', 'type': 'string'&rbrace;, 'header': &lbrace;'description': 'First line of the CSV file is its header', 'type': 'boolean'&rbrace;, 'ignore_decode_errors': &lbrace;'description': 'Ignore errors when decoding the file', 'type': 'boolean'&rbrace;, 'quotechar': &lbrace;'description': 'Character used to quote fields', 'type': 'string'&rbrace;, 's3_bucket': &lbrace;'description': 'Bucket the object is in', 'type': 'string'&rbrace;, 's3_endpoint': &lbrace;'description': 'S3 endpoint (including port if required)', 'type': 'string'&rbrace;, 's3_object': &lbrace;'description': 'Limit the import to a single object', 'type': 'string'&rbrace;, 's3_object_prefix': &lbrace;'description': 'Prefix for object in S3 bucket', 'type': 'string'&rbrace;, 's3_region': &lbrace;'description': 'Region of the S3 bucket', 'type': 'string'&rbrace;, 's3_secure': &lbrace;'description': 'Whether to use HTTPS for S3 access', 'type': 'boolean'&rbrace;, 'schema_inference_rows': &lbrace;'description': 'Number of rows to use for schema inference', 'type': 'integer'&rbrace;, 'url': &lbrace;'description': 'HTTP URL to the CSV file', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'s3_object': &lbrace;'description': 'S3 object of the CSV file', 'type': 'string'&rbrace;, 'url': &lbrace;'description': 'HTTP URL to the CSV file', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.ingestion.csv.CSVIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.csv.copy_csv_buffer(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = False, **kwargs)
+

Copy CSV data from a buffer into a given schema/table

+
+ +
+
+splitgraph.ingestion.csv.query_to_csv(engine: PsycopgEngine, query, buffer, schema: Optional[str] = None)
+
+ +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.csv.common module

+
+
+class splitgraph.ingestion.csv.common.CSVOptions(autodetect_header, autodetect_dialect, autodetect_encoding, autodetect_sample_size, schema_inference_rows, delimiter, quotechar, header, encoding, ignore_decode_errors)
+

Bases: tuple

+
+
+property autodetect_dialect
+

Alias for field number 1

+
+ +
+
+property autodetect_encoding
+

Alias for field number 2

+
+ +
+
+property autodetect_header
+

Alias for field number 0

+
+ +
+
+property autodetect_sample_size
+

Alias for field number 3

+
+ +
+
+property delimiter
+

Alias for field number 5

+
+ +
+
+property encoding
+

Alias for field number 8

+
+ +
+
+classmethod from_fdw_options(fdw_options)
+
+ +
+
+property header
+

Alias for field number 7

+
+ +
+
+property ignore_decode_errors
+

Alias for field number 9

+
+ +
+
+property quotechar
+

Alias for field number 6

+
+ +
+
+property schema_inference_rows
+

Alias for field number 4

+
+ +
+
+to_csv_kwargs()
+
+ +
+
+to_table_options()
+

Turn this into a dict of table options that can be plugged back into CSVDataSource.

+
+ +
+ +
+
+splitgraph.ingestion.csv.common.autodetect_csv(stream: io.RawIOBase, csv_options: splitgraph.ingestion.csv.common.CSVOptions)splitgraph.ingestion.csv.common.CSVOptions
+

Autodetect the CSV dialect, encoding, header etc.

+
+ +
+
+splitgraph.ingestion.csv.common.bool_to_str(boolean: bool)str
+
+ +
+
+splitgraph.ingestion.csv.common.get_bool(params: Dict[str, Any], key: str, default: bool = True)bool
+
+ +
+
+splitgraph.ingestion.csv.common.make_csv_reader(response: io.IOBase, csv_options: splitgraph.ingestion.csv.common.CSVOptions)Tuple[splitgraph.ingestion.csv.common.CSVOptions, _csv._reader]
+
+ +
+
+

splitgraph.ingestion.csv.fdw module

+
+
+class splitgraph.ingestion.csv.fdw.CSVForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+

Foreign data wrapper for CSV files stored in S3 buckets or HTTP

+
+
+can_sort(sortkeys)
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+
+ +
+
+classmethod import_schema(schema, srv_options, options, restriction_type, restricts)
+
+ +
+ +
+
+splitgraph.ingestion.csv.fdw.report_errors(table_name: str)
+

Context manager that ignores exceptions and serializes them to JSON using PG’s notice +mechanism instead. The data source is meant to load these to report on partial failures +(e.g. failed to load one table, but not others).

+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.ingestion.mdx b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.ingestion.mdx new file mode 100644 index 00000000..5aa00aae --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.ingestion.mdx @@ -0,0 +1,204 @@ + + + +export const meta = { + title: "splitgraph.ingestion package", + id: "splitgraph.ingestion package" +}; + +
+

Module contents

+
+ + +
+

Submodules

+
+
+

splitgraph.ingestion.common module

+
+
+class splitgraph.ingestion.common.IngestionAdapter
+

Bases: object

+
+
+abstract create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+abstract data_to_new_table(data, engine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+abstract query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+
+to_data(query: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)
+
+ +
+
+to_table(data, repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True, no_header: bool = False, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.common.build_commandline_help(json_schema)
+
+ +
+
+splitgraph.ingestion.common.dedupe_sg_schema(schema_spec: List[splitgraph.core.types.TableColumn], prefix_len: int = 59)List[splitgraph.core.types.TableColumn]
+

Some foreign schemas have columns that are longer than 63 characters +where the first 63 characters are the same between several columns +(e.g. odn.data.socrata.com). This routine renames columns in a schema +to make sure this can’t happen (by giving duplicates a number suffix).

+
+ +
+
+splitgraph.ingestion.common.generate_column_names(schema_spec: List[splitgraph.core.types.TableColumn], prefix: str = 'col_')List[splitgraph.core.types.TableColumn]
+

Replace empty column names with autogenerated ones

+
+ +
+
+splitgraph.ingestion.common.merge_tables(engine: splitgraph.engine.postgres.engine.PsycopgEngine, source_schema: str, source_table: str, source_schema_spec: List[splitgraph.core.types.TableColumn], target_schema: str, target_table: str, target_schema_spec: List[splitgraph.core.types.TableColumn])
+
+ +
+
+splitgraph.ingestion.common.schema_compatible(source_schema: List[splitgraph.core.types.TableColumn], target_schema: List[splitgraph.core.types.TableColumn])bool
+

Quick check to see if a dataframe with target_schema can be written into source_schema. +There are some implicit type conversions that SQLAlchemy/Pandas can do so we don’t want to immediately fail +if the column types aren’t exactly the same (eg bigint vs numeric etc). Most errors should be caught by PG itself.

+

Schema is a list of (ordinal, name, type, is_pk).

+
+ +
+
+

splitgraph.ingestion.inference module

+
+
+splitgraph.ingestion.inference.infer_sg_schema(sample: List[Tuple[str, ]], override_types: Optional[Dict[str, str]] = None, primary_keys: Optional[List[str]] = None)
+
+ +
+
+splitgraph.ingestion.inference.parse_bigint(integer: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_boolean(boolean: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_int(integer: str)
+
+ +
+
+

splitgraph.ingestion.pandas module

+

Routines that ingest/export CSV files to/from Splitgraph images using Pandas

+
+
+class splitgraph.ingestion.pandas.PandasIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.pandas.df_to_table(df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True)None
+

Writes a Pandas DataFrame to a checked-out Splitgraph table. Doesn’t create a new image.

+
+
Parameters
+
    +
  • df – Pandas DataFrame to insert.

  • +
  • repository – Splitgraph Repository object. Must be checked out.

  • +
  • table – Table name.

  • +
  • if_exists – Behaviour if the table already exists: ‘patch’ means that primary keys that already exist in the

  • +
+
+
+

table will be updated and ones that don’t will be inserted. ‘replace’ means that the table will be dropped and +recreated. +:param schema_check: If False, skips checking that the dataframe is compatible with the target schema.

+
+ +
+
+splitgraph.ingestion.pandas.df_to_table_fast(engine: PsycopgEngine, df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], target_schema: str, target_table: str)
+
+ +
+
+splitgraph.ingestion.pandas.sql_to_df(sql: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)pandas.core.frame.DataFrame
+

Executes an SQL query against a Splitgraph image, returning the result.

+

Extra **kwargs are passed to Pandas’ read_sql_query.

+
+
Parameters
+
    +
  • sql – SQL query to execute.

  • +
  • image – Image object, image hash/tag (str) or None (use the currently checked out image).

  • +
  • repository – Repository the image belongs to. Must be set if image is a hash/tag or None.

  • +
  • use_lq – Whether to use layered querying or check out the image if it’s not checked out.

  • +
+
+
Returns
+

A Pandas dataframe.

+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.ingestion.snowflake.mdx b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.ingestion.snowflake.mdx new file mode 100644 index 00000000..f66968a1 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.ingestion.snowflake.mdx @@ -0,0 +1,92 @@ + + + +export const meta = { + title: "splitgraph.ingestion.snowflake package", + id: "splitgraph.ingestion.snowflake package" +}; + +
+

Module contents

+
+
+class splitgraph.ingestion.snowflake.SnowflakeDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Snowflake database.\n\nThis will mount a remote Snowflake schema or a table. You can also get a mounted table to point to the result of a subquery that will be executed on the Snowflake instance. For example:\n\n\x08\n```\n$ sgr mount snowflake test_snowflake -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "password": "password",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "schema": "TPCH_SF100"\n    "envvars": &lbrace;"HTTPS_PROXY": "http://proxy.company.com"&rbrace;\n&rbrace;\nEOF\n\x08\n$ sgr mount snowflake test_snowflake_subquery -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "private_key": "MIIEvQIBAD...",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "tables": &lbrace;\n        "balances": &lbrace;\n            "schema": &lbrace;\n                "n_nation": "varchar",\n                "segment": "varchar",\n                "avg_balance": "numeric"\n            &rbrace;,\n            "options": &lbrace;\n                "subquery": "SELECT n_nation AS nation, c_mktsegment AS segment, AVG(c_acctbal) AS avg_balance FROM TPCH_SF100.customer c JOIN TPCH_SF100.nation n ON c_nationkey = n_nationkey"\n            &rbrace;\n        &rbrace;\n    &rbrace;\n&rbrace;\nEOF\n```\n    '
+
+ +
+
+commandline_kwargs_help: str = "username: Username. Required.\npassword: Password.\naccount: Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html. Required.\nprivate_key: Private key in PEM format.\ndatabase: Snowflake database name. Required.\nschema: Snowflake schema.\nwarehouse: Warehouse name.\nrole: Role.\nbatch_size: Default fetch size for remote queries.\nenvvars: Environment variables to set on the engine side.\nThe schema parameter is required when subquery isn't used."
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'oneOf': [&lbrace;'required': ['password']&rbrace;, &lbrace;'required': ['private_key']&rbrace;], 'properties': &lbrace;'account': &lbrace;'description': 'Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html', 'type': 'string'&rbrace;, 'password': &lbrace;'description': 'Password', 'type': 'string'&rbrace;, 'private_key': &lbrace;'description': 'Private key in PEM format', 'type': 'string'&rbrace;, 'username': &lbrace;'description': 'Username', 'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'account'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)Dict[str, str]
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'description': 'Default fetch size for remote queries', 'type': 'integer'&rbrace;, 'database': &lbrace;'description': 'Snowflake database name', 'type': 'string'&rbrace;, 'envvars': &lbrace;'description': 'Environment variables to set on the engine side', 'type': 'object'&rbrace;, 'role': &lbrace;'description': 'Role', 'type': 'string'&rbrace;, 'schema': &lbrace;'description': 'Snowflake schema', 'type': 'string'&rbrace;, 'warehouse': &lbrace;'description': 'Warehouse name', 'type': 'string'&rbrace;&rbrace;, 'required': ['database'], 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'subquery': &lbrace;'description': 'Subquery for this table to run on the server side', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.ingestion.socrata.mdx b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.ingestion.socrata.mdx new file mode 100644 index 00000000..7d398318 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.ingestion.socrata.mdx @@ -0,0 +1,171 @@ + + + +export const meta = { + title: "splitgraph.ingestion.socrata package", + id: "splitgraph.ingestion.socrata package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.ingestion.socrata.fdw module

+

Module imported by Multicorn on the Splitgraph engine server: a foreign data wrapper +that communicates to Socrata datasets using sodapy.

+
+
+class splitgraph.ingestion.socrata.fdw.SocrataForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+
+
+can_sort(sortkeys)
+
+
Parameters
+

sortkeys – List of SortKey

+
+
Returns
+

List of SortKey the FDW can sort on

+
+
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+

Method called from the planner to estimate the resulting relation +size for a scan. +It will help the planner in deciding between different types of plans, +according to their costs. +Args:

+
+
+
quals (list): A list of Qual instances describing the filters

applied to this scan.

+
+
+

columns (list): The list of columns that must be returned.

+
+
+
Returns:

A tuple of the form (expected_number_of_rows, avg_row_width (in bytes))

+
+
+
+ +
+
+property table_meta
+
+ +
+ +
+
+splitgraph.ingestion.socrata.fdw.to_json(row, columns, column_map)
+
+ +
+
+

splitgraph.ingestion.socrata.mount module

+

Splitgraph mount handler for Socrata datasets

+
+
+class splitgraph.ingestion.socrata.mount.SocrataDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'app_token': &lbrace;'description': 'Socrata app token, optional', 'type': ['string', 'null']&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs)splitgraph.ingestion.socrata.mount.SocrataDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'description': 'Amount of rows to fetch from Socrata per request (limit parameter). Maximum 50000.', 'type': 'integer'&rbrace;, 'domain': &lbrace;'description': 'Socrata domain, for example, data.albanyny.gov', 'type': 'string'&rbrace;&rbrace;, 'required': ['domain'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'socrata_id': &lbrace;'description': 'Socrata dataset ID, e.g. xzkq-xp2w', 'type': 'string'&rbrace;&rbrace;, 'required': ['socrata_id'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.ingestion.socrata.mount.generate_socrata_mount_queries(sought_ids, datasets, mountpoint, server_id, tables: Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], Dict[str, Any]]]])
+
+ +
+
+

splitgraph.ingestion.socrata.querying module

+
+
+splitgraph.ingestion.socrata.querying.cols_to_socrata(cols, column_map: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.ingestion.socrata.querying.estimate_socrata_rows_width(columns, metadata, column_map=None)
+

Estimate number of rows required for a query and each row’s width +from the table metadata.

+
+ +
+
+splitgraph.ingestion.socrata.querying.quals_to_socrata(quals, column_map: Optional[Dict[str, str]] = None)
+

Convert a list of Multicorn quals to a SoQL query

+
+ +
+
+splitgraph.ingestion.socrata.querying.socrata_to_sg_schema(metadata: Dict[str, Any])Tuple[List[splitgraph.core.types.TableColumn], Dict[str, str]]
+
+ +
+
+splitgraph.ingestion.socrata.querying.sortkeys_to_socrata(sortkeys, column_map: Optional[Dict[str, str]] = None)
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.mdx b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.mdx new file mode 100644 index 00000000..cc9abd92 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.mdx @@ -0,0 +1,343 @@ + + + +export const meta = { + title: "splitgraph package", + id: "splitgraph package" +}; + +
+

Module contents

+
+ +
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

splitgraph.exceptions module

+

Exceptions that can be raised by the Splitgraph library.

+
+
+exception splitgraph.exceptions.APICompatibilityError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions related to API incompatibilities

+
+ +
+
+exception splitgraph.exceptions.AuthAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by the Auth API

+
+ +
+
+exception splitgraph.exceptions.CheckoutError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to checking out/committing repositories

+
+ +
+
+exception splitgraph.exceptions.DataSourceError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by mount handlers.

+
+ +
+
+exception splitgraph.exceptions.DockerUnavailableError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Could not connect to the Docker daemon.

+
+ +
+
+exception splitgraph.exceptions.EngineInitializationError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when the engine isn’t initialized (no splitgraph_meta schema or audit triggers)

+
+ +
+
+exception splitgraph.exceptions.EngineSetupError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised on various setup issues with the Splitgraph engine

+
+ +
+
+exception splitgraph.exceptions.ExternalHandlerError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by external object handlers.

+
+ +
+
+exception splitgraph.exceptions.GQLAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

GQL API errors

+
+ +
+
+exception splitgraph.exceptions.GQLRepoDoesntExistError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Repository doesn’t exist

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthenticatedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthenticated (user not logged in)

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthorizedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthorized (e.g. repository isn’t writeable by the user)

+
+ +
+
+exception splitgraph.exceptions.ImageNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph image doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectDownloadError(reason: Optional[BaseException], successful_objects: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during download of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectUploadError(reason: Optional[BaseException], successful_objects: List[str], successful_object_urls: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during upload of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.ObjectCacheError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Issues with the object cache (not enough space)

+
+ +
+
+exception splitgraph.exceptions.ObjectIndexingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to indexing objects

+
+ +
+
+exception splitgraph.exceptions.ObjectMountingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to incompatible objects.

+
+ +
+
+exception splitgraph.exceptions.ObjectNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when a physical object doesn’t exist in the cache.

+
+ +
+
+exception splitgraph.exceptions.RepositoryNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph repository doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.SplitGraphError
+

Bases: Exception

+

A generic Splitgraph exception.

+
+ +
+
+exception splitgraph.exceptions.SplitfileError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Generic error class for Splitfile interpretation/execution errors.

+
+ +
+
+exception splitgraph.exceptions.TableNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A table doesn’t exist in an image

+
+ +
+
+exception splitgraph.exceptions.UnsupportedSQLError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised for unsupported SQL statements, for example, containing schema-qualified tables when the statement +is supposed to be used in an SQL/IMPORT Splitfile command.

+
+ +
+
+splitgraph.exceptions.get_exception_name(o)
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.splitfile.mdx b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.splitfile.mdx new file mode 100644 index 00000000..39a80266 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.13/splitgraph.splitfile.mdx @@ -0,0 +1,89 @@ + + + +export const meta = { + title: "splitgraph.splitfile package", + id: "splitgraph.splitfile package" +}; + +
+

Module contents

+

Splitfile interpreter: a set of tools on top of the core Splitgraph versioning and image management to give +the user a Dockerfile-like experience for building Splitgraph images (caching, consistent hashing, a declarative +language).

+
+ +
+

Submodules

+
+
+

splitgraph.splitfile.execution module

+

Functions for executing Splitfiles.

+
+
+class splitgraph.splitfile.execution.ImageMapper(object_engine: splitgraph.engine.postgres.engine.PostgresEngine)
+

Bases: object

+
+
+get_provenance_data()Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]
+
+ +
+
+setup_lq_mounts()None
+
+ +
+
+teardown_lq_mounts()None
+
+ +
+ +
+
+splitgraph.splitfile.execution.execute_commands(commands: str, params: Optional[Dict[str, str]] = None, output: Optional[splitgraph.core.repository.Repository] = None, output_base: str = '00000000000000000000000000000000')None
+

Executes a series of Splitfile commands.

+
+
Parameters
+
    +
  • commands – A string with the raw Splitfile.

  • +
  • params – A dictionary of parameters to be applied to the Splitfile ($&lbrace;PARAM&rbrace; is replaced with the specified +parameter value).

  • +
  • output – Output repository to execute the Splitfile against.

  • +
  • output_base – If not None, a revision that gets checked out for all Splitfile actions to be committed +on top of it.

  • +
+
+
+
+ +
+
+splitgraph.splitfile.execution.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.splitfile.execution.prevalidate_imports(table_names: List[str], table_queries: List[bool])List[str]
+
+ +
+
+splitgraph.splitfile.execution.rebuild_image(image: splitgraph.core.image.Image, source_replacement: Dict[splitgraph.core.repository.Repository, str])None
+

Recreates the Splitfile used to create a given image and reruns it, replacing its dependencies with a different +set of versions.

+
+
Parameters
+
    +
  • image – Image object

  • +
  • source_replacement – A map that specifies replacement images/tags for repositories that the image depends on

  • +
+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.14/metadata.json b/content/docs/9500_python-api/9000_versions/v0.2.14/metadata.json new file mode 100644 index 00000000..638ecd87 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.14/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.14", + "updated_at": "2022-01-20T00:00:45.308Z", + "release": { + "id": 42470070, + "tag_name": "v0.2.14", + "target_commitish": "b6085d0bc345aaff8f9bb1812d783c177a2c1a0e", + "created_at": "2021-05-05T11:12:15Z", + "published_at": "2021-05-05T13:43:59Z", + "assets": [ + { + "id": 36435419, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/36435419", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-05-05T11:39:07Z", + "updated_at": "2021-05-05T11:39:07Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.14/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.cloud.mdx b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.cloud.mdx new file mode 100644 index 00000000..22861992 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.cloud.mdx @@ -0,0 +1,244 @@ + + + +export const meta = { + title: "splitgraph.cloud package", + id: "splitgraph.cloud package" +}; + +
+

Module contents

+

Public API for interacting with the Splitgraph registry

+
+
+splitgraph.cloud.AuthAPIClient(*args, **kwargs)
+
+ +
+
+class splitgraph.cloud.GQLAPIClient(remote: str)
+

Bases: object

+

Wrapper class for select Splitgraph Registry GQL operations that can be +called from the CLI

+
+
+find_repository(query: str, limit: int = 10)Tuple[int, List[Tuple[str, str, str]]]
+
+ +
+
+get_external_metadata(namespace: str, repository: str)Optional[splitgraph.cloud.models.ExternalResponse]
+
+ +
+
+get_metadata(namespace: str, repository: str)Optional[splitgraph.cloud.models.MetadataResponse]
+
+ +
+
+load_all_repositories(limit_to: Optional[List[str]] = None)List[splitgraph.cloud.models.Repository]
+
+ +
+
+upsert_description(namespace: str, repository: str, description: str)
+
+ +
+
+upsert_metadata(namespace: str, repository: str, metadata: splitgraph.cloud.models.Metadata)
+

Update metadata for a single repository.

+
+ +
+
+upsert_readme(namespace: str, repository: str, readme: str)
+
+ +
+
+upsert_topics(namespace: str, repository: str, topics: List[str])
+
+ +
+ +
+
+class splitgraph.cloud.RESTAPIClient(remote: str)
+

Bases: object

+

Client for various Splitgraph Registry REST APIs: auth token generation, external repo setup…

+
+
+property access_token
+

Will return an up-to-date access token by either getting it from +the configuration file or contacting the auth service for a new one. +Will write the new access token into the configuration file.

+
+
Returns
+

Access token.

+
+
+
+ +
+
+create_machine_credentials(access_token: str, password: str)requests.models.Response
+

Generate a key and secret that can be used to log into the Splitgraph registry +via a normal Postgres connection. The secret must be stored in the user’s local +configuration file (it’s not stored on Splitgraph servers).

+
+
Parameters
+
    +
  • access_token – Access token

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (key, secret).

+
+
+
+ +
+
+ensure_external_credential(credential_data: Dict[str, Any], credential_name: str, plugin_name: str)str
+

Store a credential for accessing an external data source +in Splitgraph Cloud and return its ID

+
+ +
+
+get_access_token(refresh_token: str)requests.models.Response
+

Get a new access token from a refresh token.

+
+
Parameters
+

refresh_token – Refresh token

+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_access_token_from_api(api_key: str, api_secret: str)requests.models.Response
+

Get a new access token from API keys

+
+
Parameters
+
    +
  • api_key – API key

  • +
  • api_secret – API secret

  • +
+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_latest_version()Optional[str]
+
+ +
+
+get_refresh_token(username: str, password: str)requests.models.Response
+

Get a long-lived refresh token and a short-lived access token from the API.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (access_token, refresh_token).

+
+
+
+ +
+
+list_external_credentials()splitgraph.cloud.models.ListExternalCredentialsResponse
+
+ +
+
+register(username: str, password: str, email: str, accept_tos: bool)requests.models.Response
+

Register a new Splitgraph user.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
  • email – Email

  • +
  • accept_tos – Accept the Terms of Service if they exist

  • +
+
+
+
+ +
+
+tos()requests.models.Response
+

Get a Terms of Service message from the registry (if accepting ToS is required) +:return: Link to the Terms of Service or None

+
+ +
+
+upsert_external(namespace: str, repository: str, external: splitgraph.cloud.models.External, credentials_map: Optional[Dict[str, str]] = None)
+
+ +
+ +
+
+splitgraph.cloud.expect_result(result: List[str], ignore_status_codes: Optional[List[int]] = None)Callable[[Callable[[], requests.models.Response]], Callable[[], Union[str, Tuple[str]]]]
+

A decorator that can be wrapped around a function returning a requests.Response with a JSON body. +If the request has failed, it will extract the “error” from the JSON response and raise an AuthAPIError.

+
+
Parameters
+
    +
  • result – Items to extract. Will raise an AuthAPIError if not all items were fetched.

  • +
  • ignore_status_codes – If one of these status codes is returned (e.g. 404), +it gets ignored and a None is returned instead.

  • +
+
+
Returns
+

Tuple of items enumerated in the result list. If there’s only one item, it will +return just that item.

+
+
+
+ +
+
+splitgraph.cloud.get_headers()
+
+ +
+
+splitgraph.cloud.get_remote_param(remote: str, key: str)str
+
+ +
+
+splitgraph.cloud.get_token_claim(jwt, claim)
+

Extract a claim from a JWT token without validating it.

+
+ +
+
+splitgraph.cloud.handle_gql_errors(func: Callable[[], requests.models.Response])Callable[[], requests.models.Response]
+

A decorator that handles responses from the GQL API, transforming errors into exceptions.

+
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.commandline.mdx b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.commandline.mdx new file mode 100644 index 00000000..b6f548b6 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.commandline.mdx @@ -0,0 +1,360 @@ + + + +export const meta = { + title: "splitgraph.commandline package", + id: "splitgraph.commandline package" +}; + +
+

Module contents

+

Splitgraph command line client

+

Hooks into the API to allow management of Splitgraph repositories and images using sgr.

+
+
+class splitgraph.commandline.ClickHandler(level=0)
+

Bases: logging.Handler

+
+
+emit(record)
+

Do whatever it takes to actually log the specified logging record.

+

This version is intended to be implemented by subclasses and so +raises a NotImplementedError.

+
+ +
+ +
+
+class splitgraph.commandline.WithExceptionHandler(name=None, commands=None, **attrs)
+

Bases: click.core.Group

+
+
+get_command(ctx, cmd_name)
+

Given a context and a command name, this returns a +Command object if it exists or returns None.

+
+ +
+
+invoke(ctx)
+

Given a context, this invokes the attached callback (if it exists) +in the right way.

+
+ +
+ +
+ +
+

Submodules

+
+
+

splitgraph.commandline.cloud module

+

Command line routines related to registering/setting up connections to the Splitgraph registry.

+
+
+

splitgraph.commandline.common module

+

Various common functions used by the command line interface.

+
+
+class splitgraph.commandline.common.Color
+

Bases: object

+

An enumeration of console colors

+
+
+BLUE = '\x1b[94m'
+
+ +
+
+BOLD = '\x1b[1m'
+
+ +
+
+CYAN = '\x1b[96m'
+
+ +
+
+DARKCYAN = '\x1b[36m'
+
+ +
+
+END = '\x1b[0m'
+
+ +
+
+GREEN = '\x1b[92m'
+
+ +
+
+PURPLE = '\x1b[95m'
+
+ +
+
+RED = '\x1b[91m'
+
+ +
+
+UNDERLINE = '\x1b[4m'
+
+ +
+
+YELLOW = '\x1b[93m'
+
+ +
+ +
+
+class splitgraph.commandline.common.ImageType(default: Optional[str] = 'latest', repository_exists: bool = False, get_image: bool = False)
+

Bases: click.types.ParamType

+

Parser that extracts the full image specification (repository and hash/tag).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])Tuple[Repository, Optional[Union[Image, str]]]
+

Image specification must have the format [NAMESPACE/]REPOSITORY[:HASH_OR_TAG].

+

The parser returns a tuple of (repository object, tag or hash).

+
+ +
+
+name = 'Image'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.JsonType
+

Bases: click.types.ParamType

+

Parser for Json – a wrapper around json.loads because without specifying +the name Click shows the type for the option/arg as LOADS.

+

Also supports passing JSON files (pass in @filename.json).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Json'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.RepositoryType(exists: bool = False)
+

Bases: click.types.ParamType

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])Repository
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Repository'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.ResettableStream(stream)
+

Bases: io.RawIOBase

+

Stream that supports reading from the underlying stream and resetting the position once.

+

We can’t use fseek() in this case, since we might be reading from a pipe. So, we operate +this stream in two modes. In the first mode, we mirror all reads into a separate buffer +(consuming the input stream). After the user calls reset(), we first output data from the +mirrored copy, then continue consuming the input stream (simulating seek(0).

+
+
+readable()
+

Return whether object was opened for reading.

+

If False, read() will raise OSError.

+
+ +
+
+readinto(b)
+
+ +
+
+reset()
+
+ +
+ +
+
+splitgraph.commandline.common.emit_sql_results(results, use_json=False, show_all=False)
+
+ +
+
+splitgraph.commandline.common.load_json_param(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+
+ +
+
+splitgraph.commandline.common.remote_switch_option(*names, **kwargs)
+

Adds an option to switch global SG_ENGINE for this invocation of sgr.

+

This is useful for e.g. tagging or viewing image information on a remote +registry. This is not used in operations like commit/checkout (even though +nothing is preventing SG_ENGINE switch from working on that if the remote engine +supports this), the user should switch SG_ENGINE envvar themselves in that case.

+
+
Parameters
+
    +
  • names – Names

  • +
  • kwargs – Passed to click.option

  • +
+
+
+
+ +
+
+splitgraph.commandline.common.sql_results_to_str(results: List[Tuple[Any]], use_json: bool = False)str
+
+ +
+
+

splitgraph.commandline.engine module

+
+
+splitgraph.commandline.engine.copy_to_container(container: Container, source_path: str, target_path: str)None
+

Copy a file into a Docker container

+
+
Parameters
+
    +
  • container – Container object

  • +
  • source_path – Source file path

  • +
  • target_path – Target file path (in the container)

  • +
+
+
Returns
+

+
+
+
+ +
+
+splitgraph.commandline.engine.get_docker_client()
+

Wrapper around client.from_env() that also pings the daemon +to make sure it can connect and if not, raises an error.

+
+ +
+
+splitgraph.commandline.engine.inject_config_into_engines(engine_prefix, config_path)
+

Copy the current config into all engines that are managed by sgr engine. This +is so that the engine has the right credentials and settings for when we do +layered querying (a Postgres client queries the engine directly and it +has to download objects etc).

+
+
Parameters
+
    +
  • engine_prefix – Prefix for Docker containers that are considered to be engines

  • +
  • config_path – Path to the config file.

  • +
+
+
+
+ +
+
+splitgraph.commandline.engine.list_engines(prefix, include_all=False, unavailable_ok=True)
+
+ +
+
+splitgraph.commandline.engine.patch_and_save_config(config, patch)
+
+ +
+
+

splitgraph.commandline.example module

+

Command line routines generating example data / Splitfiles

+
+
+splitgraph.commandline.example.alter_table(repository: Repository, table_name: str, rows_added: int, rows_deleted: int, rows_updated: int)None
+

Alters the example table, adding/updating/deleting a certain number of rows.

+
+
Parameters
+
    +
  • repository – Checked-out Repository object.

  • +
  • table_name – Name of the table

  • +
  • rows_added – Number of rows to add

  • +
  • rows_deleted – Number of rows to remove

  • +
  • rows_updated – Number of rows to update

  • +
+
+
+
+ +
+
+splitgraph.commandline.example.generate_table(repository: Repository, table_name: str, size: int)None
+

Creates a table with an integer primary key and a string value.

+
+
Parameters
+
    +
  • repository – Checked-out Repository to create the table in.

  • +
  • table_name – Name of the table to generate

  • +
  • size – Number of rows in the table.

  • +
+
+
+
+ +
+
+

splitgraph.commandline.image_creation module

+

sgr commands related to creating and checking out images

+
+
+

splitgraph.commandline.image_info module

+

sgr commands related to getting information out of / about images

+
+
+

splitgraph.commandline.ingestion module

+

Command line tools for ingesting/exporting Splitgraph images into other formats.

+
+
+

splitgraph.commandline.misc module

+

Miscellaneous image management sgr commands.

+
+
+

splitgraph.commandline.mount module

+

sgr commands related to mounting databases via Postgres FDW

+
+
+

splitgraph.commandline.push_pull module

+

sgr commands related to sharing and downloading images.

+
+
+

splitgraph.commandline.splitfile module

+

sgr commands related to building and rebuilding Splitfiles.

+
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.config.mdx b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.config.mdx new file mode 100644 index 00000000..6f22349f --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.config.mdx @@ -0,0 +1,392 @@ + + + +export const meta = { + title: "splitgraph.config package", + id: "splitgraph.config package" +}; + +
+

Module contents

+

The CONFIG object is created and exported once __at import time__ +Calling CONFIG[“KEY”] directly should be sufficient in most cases, +except when a config value has changed since importing CONFIG. +In that case, create_config_dict() can provide an updated config dict

+

Priority (highest to lowest):

+
+
    +
  1. Command line argument values

  2. +
  3. Environment variable values

  4. +
  5. Config file values in [defaults] section

  6. +
  7. DEFAULTS (see keys.py)

  8. +
+
+
+ +
+

Submodules

+
+
+

splitgraph.config.argument_config module

+
+
+splitgraph.config.argument_config.get_arg_tuples()List[Tuple[str, str]]
+

Get the raw (argN, argN+1) tuples from sys.argv

+

We could also use click to parse the flags ahead of time, and then pass +the parsed flag object into SystemConfigGetters. But this way, we avoid +having to pass down variables from click just to get config values.

+
+ +
+
+splitgraph.config.argument_config.get_argument_config_value(key: str, default_return: Optional[str] = None)Optional[str]
+

Get get the value of an argument, where value is the argument +immediately following the argument matching a key in ARG_KEYS, e.g.:

+
+

SYS_ARGS = [“–namespace”, “foo”] +–> return “foo”

+
+

Otherwise, return default_return

+
+ +
+
+

splitgraph.config.config module

+
+
+splitgraph.config.config.chain_getters(getters: Sequence[Callable[[str], Optional[str]]], key: str, default_return: Optional[str] = None)Optional[str]
+
+ +
+
+splitgraph.config.config.create_config_dict()Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create and return a dict of all known config values

+
+ +
+
+splitgraph.config.config.get_all_in_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str)Dict[str, Union[Dict[str, str], str]]
+

Get all subsections from a config (e.g. config[“data_sources”])

+
+ +
+
+splitgraph.config.config.get_all_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str)Dict[str, str]
+
+ +
+
+splitgraph.config.config.get_from_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, item: str)str
+
+ +
+
+splitgraph.config.config.get_from_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str)str
+

Return a singleton variable from a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.get_singleton(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], item: str)str
+

Return a singleton (not a section) variable from the config.

+
+ +
+
+splitgraph.config.config.lazy_get_config_value(key: str, default_return: Optional[str] = None)Optional[Union[str, Dict[str, Dict[str, str]]]]
+

Get the config value for a key in the following precedence +Otherwise return default_return

+
+ +
+
+splitgraph.config.config.patch_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], patch: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Recursively updates a nested configuration dictionary:

+
+
patch_config(
+
&lbrace;“key_1”: “value_1”,

“dict_1”: &lbrace;“key_1”: “value_1”&rbrace;&rbrace;,

+
+
&lbrace;“key_1”: “value_2”,

“dict_1”: &lbrace;“key_2”: “value_2”&rbrace;&rbrace;) == &lbrace;“key_1”: “value_2”, +“dict_1”: &lbrace;“key_1”: “value_1”, “key_2”: “value_2”&rbrace;&rbrace;

+
+
+
+
+
+
Parameters
+
    +
  • config – Config dictionary

  • +
  • patch – Dictionary with the path

  • +
+
+
Returns
+

New patched dictionary

+
+
+
+ +
+
+splitgraph.config.config.set_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str, value: str)None
+

Set a singleton variable in a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.update_config_dict_from_arguments(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sys.argv +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_env_vars(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading os.environ +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_file(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], sg_config_file: str)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sg_config_file +and overwriting any keys according to the rules in config_file_config

+

Return updated copy of config_dict.

+
+ +
+
+

splitgraph.config.config_file_config module

+
+
+splitgraph.config.config_file_config.accumulate_lists(config_dict: Dict[str, Union[Dict[str, str], str]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Transform a config_dict to “accumulate” objects “nested” via key name

+

Because ConfigParser does not support nesting, we implement our own +syntax via the key names of sections. The ‘:’ character can be used in +section names to specify the left and right key. Example:

+
.ini config             new config_dict
+
+                  ----->
+                    |
+[remote: remote1]   |   &lbrace;
+SG_ENV_VAR=foo      |       **rest_of_config_dict,
+                    |       "remotes": &lbrace;
+[origin: origin1]   |           "remote1": &lbrace;
+SG_ENV_VAR=bar      |               "SG_ENV_VAR": "foo"
+                    |           &rbrace;
+[origin: origin2]   |       &rbrace;,
+SG_ENV_VAR=bax      |       "origins": &lbrace;
+                    |           "origin1": &lbrace;
+                    |               "SG_ENV_VAR": "bar"
+                    |           &rbrace;,
+                    |           "origin2": &lbrace;
+                    |               "SG_ENV_VAR": "bax"
+                    |           &rbrace;
+                    |       &rbrace;
+                    |   &rbrace;
+                    |
+                  ----->
+
+
+

:return a new, updated copy of config_dict

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_config_file(sg_file: str, **kwargs)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create a dict from ConfigParser, apply transformations to it.

+

Return parsed and transformed config_dict.

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_file(sg_file: str, **kwargs)Dict[str, Dict[str, str]]
+
+ +
+
+splitgraph.config.config_file_config.hoist_section(config_dict: Dict[str, Dict[str, str]], section: str = 'defaults')Dict[str, Union[Dict[str, str], str]]
+

If a section exists called <hoist_section>, hoist it to the top level +This is useful for overriding default configs from within a config file

+

Transform config_dict to “hoist” any config values from a section +into the top level (thus, overriding environment variables), +when the name of the section matches hoist_section.

+

Return a new, updated copy of config_dict.

+
+ +
+
+splitgraph.config.config_file_config.transform_config_dict(config_dict: Dict[str, Dict[str, str]], **kwargs)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Apply transformations to the raw ConfigParser.config object

+
+
    +
  1. hoist_section

  2. +
  3. accumulate_lists

  4. +
+
+

Return the a new, updated copy of config_dict.

+
+ +
+
+

splitgraph.config.default_config module

+
+
+splitgraph.config.default_config.get_default_config_value(key: str, default_return: Optional[str] = None)Any
+

Get the hard-coded default value of a config key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.environment_config module

+
+
+splitgraph.config.environment_config.get_environment_config_value(key: str, default_return: Optional[str] = None)Optional[str]
+

Get the environment variable value of the environment variable matching key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.export module

+

Routines for exporting the config back into text.

+
+
+splitgraph.config.export.overwrite_config(new_config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_path: str, include_defaults: bool = False)None
+

Serialize the new config dictionary and overwrite the current config file. +Note: this will delete all comments in the config!

+
+
Parameters
+
    +
  • new_config – Config dictionary.

  • +
  • config_path – Path to the config file.

  • +
  • include_defaults – Whether to include values that are the same +as their defaults.

  • +
+
+
+
+ +
+
+splitgraph.config.export.serialize_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_format: bool, no_shielding: bool, include_defaults: bool = True)str
+

Pretty-print the configuration or print it in the Splitgraph config file format.

+
+
Parameters
+
    +
  • config – Configuration dictionary.

  • +
  • config_format – Output configuration in the Splitgraph config file format.

  • +
  • no_shielding – Don’t replace sensitive values (like passwords) with asterisks

  • +
  • include_defaults – Emit the config variable even if it’s the same as the default.

  • +
+
+
Returns
+

Textual representation of the config.

+
+
+
+ +
+
+splitgraph.config.export.serialize_engine_config(engine_name: str, conn_params: Dict[str, str], no_shielding: bool)str
+

Output the config section with connection parameters for a single engine.

+
+
Parameters
+
    +
  • engine_name – Name of the engine

  • +
  • conn_params – Dictionary of connection parameters

  • +
  • no_shielding – Don’t replace passwords with asterisks

  • +
+
+
+
+ +
+
+

splitgraph.config.keys module

+
+
+splitgraph.config.keys.SENSITIVE_KEY_SUFFIXES = ['_PWD', '_TOKEN']
+

Warning: Every key in DEFAULTS must have a key in ARGUMENT_KEY_MAP +If you add/remove keys from DEFAULTS, make sure to do so here too.

+
+ +
+
+

splitgraph.config.system_config module

+
+
+splitgraph.config.system_config.file_exists(_dir: str, filename: str)bool
+
+ +
+
+splitgraph.config.system_config.get_config_file(default_return: None = None)Optional[str]
+

Get the location of an existing SG_CONFIG_FILE on the system with +a valid name. Do not attempt to parse the config file, just return +its location.

+

Otherwise, return default_return

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_dirs()List[str]
+

Get any explicitly defined config file directories, +which are directories where we should search for files from +VALID_CONFIG_FILE_NAMES.

+

This list is defined similar to $PATH, as a colon (:) delimited +string, either in:

+
+
    +
  • argument flag –config-dirs

  • +
  • or environment key SG_CONFIG_DIRS

  • +
+
+

Or a single directory defined in either

+
+
    +
  • argument flag –config-dir

  • +
  • environment key SG_CONFIG_DIR

  • +
+
+

If both plural and single are defined, join them together.

+

Return a list of valid paths that are set, or an empty list.

+

Print a warning if any paths to not exist.

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_location()Optional[str]
+

Get the explicitly defined location of config file, if defined.

+

The location will either be defined in:

+
+
    +
  • argument flag –config-file

  • +
  • or environment key SG_CONFIG_FILE

  • +
+
+

In keeping with assumptions about priority, argument flag has +higher priority than environment value.

+

If the location is set, and points to an existing file, return location.

+

Otherwise return None

+

Print a warning if location is set but points to non-existing file.

+
+ +
+
+splitgraph.config.system_config.get_system_config_value(key: str, default_return: None = None)Optional[str]
+
+ +
+
+splitgraph.config.system_config.is_file(filename: str)bool
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.core.indexing.mdx b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.core.indexing.mdx new file mode 100644 index 00000000..794d6acf --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.core.indexing.mdx @@ -0,0 +1,141 @@ + + + +export const meta = { + title: "splitgraph.core.indexing package", + id: "splitgraph.core.indexing package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.core.indexing.bloom module

+

Bloom filtering on fragments for equality queries.

+
+
+splitgraph.core.indexing.bloom.describe(index_tuple: Tuple[int, str])str
+

Returns a pretty-printed summary of the bloom filter

+
+
Parameters
+

index_tuple – Tuple of (k, base64-encoded fingerprint) +returned by generate_bloom_index

+
+
Returns
+

String

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.filter_bloom_index(engine: PsycopgEngine, object_ids: List[str], quals: Any)List[str]
+

Runs a bloom filter on given qualifiers using the given objects’ previously-generated +fingerprints.

+
+
Parameters
+
    +
  • engine – Object engine

  • +
  • object_ids – Object IDs

  • +
  • quals – List of qualifiers

  • +
+
+
Returns
+

List of object IDs that might match the qualifiers in quals (including +IDs that don’t have a bloom index).

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.generate_bloom_index(engine: PsycopgEngine, object_id: str, changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], column: str, probability: Optional[float] = None, size: Optional[int] = None)Tuple[int, str]
+

Generates a bloom filter signature for a given column and a given fragment. Bloom filters +can answer queries asking whether an item is definitely not in a given set or possibly can be.

+

The tradeoff is between the probability of a false positive (item said to be in the set when +it actually isn’t) and the size of the filter.

+

Bloom filters also have an extra parameter, k, or the number of bits in the signature that +a certain item flips. This parameter has an optimal value for a given number of distinct items +or a probability and so isn’t explicitly passed by the user.

+
+
Parameters
+
    +
  • engine – Object engine the fragment is cached in.

  • +
  • object_id – Fragment ID

  • +
  • changeset – Optional, if specified, the old column values are included in the index.

  • +
  • column – Column name to generate the index on.

  • +
  • probability – Probability of a false positive. Either this or the size of the filter must +be specified, but not both.

  • +
  • size – Size of the filter, in bytes.

  • +
+
+
Returns
+

Dictionary to be inserted into the index.

+
+
+
+ +
+
+

splitgraph.core.indexing.range module

+
+
+splitgraph.core.indexing.range.extract_min_max_pks(engine: PsycopgEngine, fragments: List[str], table_pks: List[str], table_pk_types: List[str])Any
+

Extract minimum/maximum PK values for given fragments.

+
+
Parameters
+
    +
  • engine – Engine the objects live on

  • +
  • fragments – IDs of objects

  • +
  • table_pks – List of columns forming the table primary key

  • +
  • table_pk_types – List of types for table PK columns

  • +
+
+
Returns
+

List of min/max primary key for every object.

+
+
+
+ +
+
+splitgraph.core.indexing.range.filter_range_index(metadata_engine: PsycopgEngine, object_ids: List[str], quals: Any, column_types: Dict[str, str])List[str]
+
+ +
+
+splitgraph.core.indexing.range.generate_range_index(object_engine: PsycopgEngine, object_id: str, table_schema: TableSchema, changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], columns: Optional[List[str]] = None)Dict[str, Tuple[T, T]]
+

Calculate the minimum/maximum values of every column in the object (including deleted values).

+
+
Parameters
+
    +
  • object_engine – Engine the object is located on

  • +
  • object_id – ID of the object.

  • +
  • table_schema – Schema of the table

  • +
  • changeset – Changeset (old values will be included in the index)

  • +
  • columns – Columns to run the index on (default all)

  • +
+
+
Returns
+

Dictionary of &lbrace;column: [min, max]&rbrace;

+
+
+
+ +
+
+splitgraph.core.indexing.range.quals_to_sql(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], column_types: Dict[str, str])Tuple[psycopg2.sql.Composable, Tuple]
+

Convert a list of qualifiers in CNF to a fragment of a Postgres query +:param quals: Qualifiers in CNF +:param column_types: Dictionary of column names and their types +:return: SQL Composable object and a tuple of arguments to be mogrified into it.

+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.core.mdx b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.core.mdx new file mode 100644 index 00000000..26b0ee18 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.core.mdx @@ -0,0 +1,2050 @@ + + + +export const meta = { + title: "splitgraph.core package", + id: "splitgraph.core package" +}; + +
+

Module contents

+

Core Splitgraph functionality: versioning and sharing tables.

+

The main point of interaction with the Splitgraph API is a splitgraph.core.repository.Repository object +representing a local or a remote Splitgraph repository. Repositories can be created using one of the +following methods:

+
+
    +
  • Directly by invoking Repository(namespace, name, engine) where engine is the engine that the repository +belongs to (that can be gotten with get_engine(engine_name). If the created repository doesn’t actually exist +on the engine, it must first be initialized with repository.init().

  • +
  • By using splitgraph.core.engine.lookup_repository() which will search for the repository on the current +lookup path.

  • +
+
+
+ + +
+

Submodules

+
+
+

splitgraph.core.common module

+

Common internal functions used by Splitgraph commands.

+
+
+class splitgraph.core.common.CallbackList(iterable=(), /)
+

Bases: list

+

Used to pass around and call multiple callbacks at once.

+
+ +
+
+class splitgraph.core.common.Tracer
+

Bases: object

+

Accumulates events and returns the times between them.

+
+
+get_durations()List[Tuple[str, float]]
+

Return all events and durations between them. +:return: List of (event name, time to this event from the previous event (or start))

+
+ +
+
+get_total_time()float
+
+
Returns
+

Time from start to the final logged event.

+
+
+
+ +
+
+log(event: str)None
+

Log an event at the current time +:param event: Event name

+
+ +
+ +
+
+splitgraph.core.common.adapt(value: Any, pg_type: str)Any
+

Coerces a value with a PG type into its Python equivalent.

+
+
Parameters
+
    +
  • value – Value

  • +
  • pg_type – Postgres datatype

  • +
+
+
Returns
+

Coerced value.

+
+
+
+ +
+
+splitgraph.core.common.aggregate_changes(query_result: List[Tuple[int, int]], initial: Optional[Tuple[int, int, int]] = None)Tuple[int, int, int]
+

Add a changeset to the aggregated diff result

+
+ +
+
+splitgraph.core.common.coerce_val_to_json(val: Any)Any
+

Turn a Python value to a string/float that can be stored as JSON.

+
+ +
+
+splitgraph.core.common.ensure_metadata_schema(engine: PsycopgEngine)None
+

Create or migrate the metadata schema splitgraph_meta that stores the hash tree of schema +snapshots (images), tags and tables. +This means we can’t mount anything under the schema splitgraph_meta – much like we can’t have a folder +“.git” under Git version control…

+
+ +
+
+splitgraph.core.common.gather_sync_metadata(target: Repository, source: Repository, overwrite_objects=False, overwrite_tags=False, single_image: Optional[str] = None)Any
+

Inspects two Splitgraph repositories and gathers metadata that is required to bring target up to +date with source.

+
+
Parameters
+
    +
  • target – Target Repository object

  • +
  • source – Source repository object

  • +
  • overwrite_objects – If True, will return metadata for all objects +belonging to new images (or existing image if single_image=True)

  • +
  • single_image – If set, only grab a single image with this hash/tag from the source.

  • +
  • overwrite_tags – If True and single_image is set, will return all tags for that image. +If single_image is not set, will return all tags in the source repository. +If False, will only return tags in the source that don’t exist on the target.

  • +
+
+
Returns
+

Tuple of metadata for new_images, new_tables, object_locations, object_meta, tags

+
+
+
+ +
+
+splitgraph.core.common.get_data_safe(package: str, resource: str)bytes
+
+ +
+
+splitgraph.core.common.get_temporary_table_id()str
+

Generate a random ID for temporary/staging objects that haven’t had their ID calculated yet.

+
+ +
+
+splitgraph.core.common.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.common.manage_audit(func: Callable)Callable
+

A decorator to be put around various Splitgraph commands +that adds/removes audit triggers for new/committed/deleted tables.

+
+ +
+
+splitgraph.core.common.manage_audit_triggers(engine: PostgresEngine, object_engine: Optional[PostgresEngine] = None)None
+

Does bookkeeping on audit triggers / audit table:

+
+
    +
  • Detect tables that are being audited that don’t need to be any more +(e.g. they’ve been unmounted)

  • +
  • Drop audit triggers for those and delete all audit info for them

  • +
  • Set up audit triggers for new tables

  • +
+
+

If the metadata engine isn’t the same as the object engine, this does nothing.

+
+
Parameters
+
    +
  • engine – Metadata engine with information about images and their checkout state

  • +
  • object_engine – Object engine where the checked-out table and the audit triggers are located.

  • +
+
+
+
+ +
+
+splitgraph.core.common.resource_path(relative_path)
+
+ +
+
+splitgraph.core.common.set_head(repository: Repository, image: Optional[str])None
+

Sets the HEAD pointer of a given repository to a given image. Shouldn’t be used directly.

+
+ +
+
+splitgraph.core.common.set_tag(repository: Repository, image_hash: Optional[str], tag: str)None
+

Internal function – add a tag to an image.

+
+ +
+
+splitgraph.core.common.set_tags_batch(repository: Repository, hashes_tags: List[Tuple[str, str]])None
+
+ +
+
+splitgraph.core.common.slow_diff(repository: Repository, table_name: str, image_1: Optional[str], image_2: Optional[str], aggregate: bool)Union[Tuple[int, int, int], List[Tuple[bool, Tuple]]]
+

Materialize both tables and manually diff them

+
+ +
+
+

splitgraph.core.engine module

+

Routines for managing Splitgraph engines, including looking up repositories and managing objects.

+
+
+splitgraph.core.engine.get_current_repositories(engine: PostgresEngine)List[Tuple[Repository, Optional[Image]]]
+

Lists all repositories currently in the engine.

+
+
Parameters
+

engine – Engine

+
+
Returns
+

List of (Repository object, current HEAD image)

+
+
+
+ +
+
+splitgraph.core.engine.init_engine(skip_object_handling: bool = False)None
+

Initializes the engine by:

+
+
    +
  • performing any required engine-custom initialization

  • +
  • creating the metadata tables

  • +
+
+
+
Parameters
+

skip_object_handling – If True, skips installing routines related to +object handling and checkouts (like audit triggers and CStore management).

+
+
+
+ +
+
+splitgraph.core.engine.lookup_repository(name: str, include_local: bool = False)Repository
+

Queries the SG engines on the lookup path to locate one hosting the given repository.

+
+
Parameters
+
    +
  • name – Repository name

  • +
  • include_local – If True, also queries the local engine

  • +
+
+
Returns
+

Local or remote Repository object

+
+
+
+ +
+
+splitgraph.core.engine.repository_exists(repository: Repository)bool
+

Checks if a repository exists on the engine.

+
+
Parameters
+

repository – Repository object

+
+
+
+ +
+
+

splitgraph.core.fdw_checkout module

+
+
+

splitgraph.core.fragment_manager module

+

Routines related to storing tables as fragments.

+
+
+class splitgraph.core.fragment_manager.Digest(shorts: Tuple[int, ])
+

Bases: object

+

Homomorphic hashing similar to LtHash (but limited to being backed by 256-bit hashes). The main property is that +for any rows A, B, LtHash(A) + LtHash(B) = LtHash(A+B). This is done by construction: we simply hash individual +rows and then do bit-wise addition / subtraction of individual hashes to come up with the full table hash.

+

Hence, the content hash of any Splitgraph table fragment is the sum of hashes of its added rows minus the sum +of hashes of its deleted rows (including the old values of the rows that have been updated). This has a very +useful implication: the hash of a full Splitgraph table is equal to the sum of hashes of its individual fragments.

+

This property can be used to simplify deduplication.

+
+
+classmethod empty()splitgraph.core.fragment_manager.Digest
+

Return an empty Digest instance such that for any Digest D, D + empty == D - empty == D

+
+ +
+
+classmethod from_hex(hex_string: str)splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 64-characters (256-bit) hexadecimal string

+
+ +
+
+classmethod from_memoryview(memory: Union[bytes, memoryview])splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 256-bit memoryview/bytearray.

+
+ +
+
+hex()str
+

Convert the hash into a hexadecimal value.

+
+ +
+ +
+
+class splitgraph.core.fragment_manager.FragmentManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.metadata_manager.MetadataManager

+

A storage engine for Splitgraph tables. Each table can be stored as one or more immutable fragments that can +optionally overwrite each other. When a new table is created, it’s split up into multiple base fragments. When +a new version of the table is written, the audit log is inspected and one or more patch fragments are created, +to be based on the fragments the previous version of the table consisted of. Only the top fragments in this stack +are stored in the table metadata: to reconstruct the whole table, the links from the top fragments down to the +base fragments have to be followed.

+

In addition, the fragments engine also supports min-max indexing on fragments: this is used to only fetch fragments +that are required for a given query.

+
+
+calculate_content_hash(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None, chunk_id_col: Optional[str] = None, chunk_id: Optional[int] = None)Tuple[str, int]
+

Calculates the homomorphic hash of table contents.

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Name of the table

  • +
  • table_schema – Schema of the table

  • +
  • chunk_id_col – Column the table is partitioned on

  • +
  • chunk_id – Column value to get rows from

  • +
+
+
Returns
+

A 64-character (256-bit) hexadecimal string with the content hash of the table +and the number of rows in the hash.

+
+
+
+ +
+
+calculate_fragment_insertion_hash_stats(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None)Tuple[splitgraph.core.fragment_manager.Digest, int]
+

Calculate the homomorphic hash of just the rows that a given fragment inserts +:param schema: Schema the fragment is stored in. +:param table: Name of the table the fragment is stored in. +:return: A Digest object and the number of inserted rows

+
+ +
+
+create_base_fragment(source_schema: str, source_table: str, namespace: str, chunk_id_col: Optional[str] = None, chunk_id: Optional[int] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None)str
+
+ +
+
+delete_objects(objects: Union[Set[str], List[str]])None
+

Deletes objects from the Splitgraph cache

+
+
Parameters
+

objects – A sequence of objects to be deleted

+
+
+
+ +
+
+filter_fragments(object_ids: List[str], table: Table, quals: Any)List[str]
+

Performs fuzzy filtering on the given object IDs using the index and a set of qualifiers, discarding +objects that definitely do not match the qualifiers.

+
+
Parameters
+
    +
  • object_ids – List of object IDs to filter.

  • +
  • table – A Table object the objects belong to.

  • +
  • quals

    List of qualifiers in conjunctive normal form that will be matched against the index. +Objects that definitely don’t match these qualifiers will be discarded.

    +

    A list containing [[qual_1, qual_2], [qual_3, qual_4]] will be interpreted as +(qual_1 OR qual_2) AND (qual_3 OR qual_4).

    +

    Each qual is a tuple of (column_name, operator, value) where +operator can be one of >, >=, <, <=, =.

    +

    For unknown operators, it will be assumed that all fragments might match that clause.

    +

  • +
+
+
Returns
+

List of objects that might match the given qualifiers.

+
+
+
+ +
+
+generate_object_index(object_id: str, table_schema: List[splitgraph.core.types.TableColumn], changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None)Dict[str, Any]
+

Queries the max/min values of a given fragment for each column, used to speed up querying.

+
+
Parameters
+
    +
  • object_id – ID of an object

  • +
  • table_schema – Schema of the table the object belongs to.

  • +
  • changeset – Optional, if specified, the old row values are included in the index.

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
Returns
+

Dict containing the object index.

+
+
+
+ +
+
+get_min_max_pks(fragments: List[str], table_pks: List[Tuple[str, str]])List[Tuple[Tuple, Tuple]]
+

Get PK ranges for given fragments using the index (without reading the fragments).

+
+
Parameters
+
    +
  • fragments – List of object IDs (must be registered and with the same schema)

  • +
  • table_pks – List of tuples (column, type) that form the object PK.

  • +
+
+
Returns
+

List of (min, max) PK for every fragment where PK is a tuple. +If a fragment doesn’t exist or doesn’t have a corresponding index entry, +a SplitGraphError is raised.

+
+
+
+ +
+
+record_table_as_base(repository: Repository, table_name: str, image_hash: str, chunk_size: Optional[int] = 10000, source_schema: Optional[str] = None, source_table: Optional[str] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False)List[str]
+

Copies the full table verbatim into one or more new base fragments and registers them.

+
+
Parameters
+
    +
  • repository – Repository

  • +
  • table_name – Table name

  • +
  • image_hash – Hash of the new image

  • +
  • chunk_size – If specified, splits the table into multiple objects with a given number of rows

  • +
  • source_schema – Override the schema the source table is stored in

  • +
  • source_table – Override the name of the table the source is stored in

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Key to sort data inside each chunk by.

  • +
  • overwrite – Overwrite physical objects that already exist.

  • +
+
+
+
+ +
+
+record_table_as_patch(old_table: Table, schema: str, image_hash: str, new_schema_spec: List[splitgraph.core.types.TableColumn] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False)None
+

Flushes the pending changes from the audit table for a given table and records them, +registering the new objects.

+
+
Parameters
+
    +
  • old_table – Table object pointing to the current HEAD table

  • +
  • schema – Schema the table is checked out into.

  • +
  • image_hash – Image hash to store the table under

  • +
  • new_schema_spec – New schema of the table (use the old table’s schema by default).

  • +
  • split_changeset – See Repository.commit for reference

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
+
+ +
+ +
+
+splitgraph.core.fragment_manager.get_chunk_groups(chunks: List[Tuple[str, Any, Any]])List[List[Tuple[str, Any, Any]]]
+

Takes a list of chunks and their boundaries and combines them +into independent groups such that chunks from no two groups +overlap with each other (intervals are assumed to be closed, +e.g. chunk (1,2) overlaps with chunk (2,3)).

+

The original order of chunks is preserved within each group.

+

For example, 4 chunks A, B, C, D that don’t overlap each other +will be grouped into 4 groups [A], [B], [C], [D].

+

If A overlaps B, the result will be [A, B], [C], [D].

+

If in addition B overlaps C (but not A), the result will be [A, B, C], [D].

+

If in addition D overlaps any of A, B or C, the result will be [A, B, C, D] +(despite that D is located before A: it will be last since it was last in the +original list).

+
+
Parameters
+

chunks – List of (chunk_id, start, end)

+
+
Returns
+

List of lists of (chunk_id, start, end)

+
+
+
+ +
+
+

splitgraph.core.image module

+

Image representation and provenance

+
+
+class splitgraph.core.image.Image(image_hash: str, parent_id: Optional[str], created: datetime.datetime, comment: str, provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], repository: Repository)
+

Bases: tuple

+

Represents a Splitgraph image. Should’t be created directly, use Image-loading methods in the +splitgraph.core.repository.Repository class instead.

+
+
+checkout(force: bool = False, layered: bool = False)None
+

Checks the image out, changing the current HEAD pointer. Raises an error +if there are pending changes to its checkout.

+
+
Parameters
+
    +
  • force – Discards all pending changes to the schema.

  • +
  • layered – If True, uses layered querying to check out the image (doesn’t materialize tables +inside of it).

  • +
+
+
+
+ +
+
+property comment
+

Alias for field number 3

+
+ +
+
+property created
+

Alias for field number 2

+
+ +
+
+delete_tag(tag: str)None
+

Deletes a tag from an image.

+
+
Parameters
+

tag – Tag to delete.

+
+
+
+ +
+
+property engine
+
+ +
+
+get_log()List[splitgraph.core.image.Image]
+

Repeatedly gets the parent of a given image until it reaches the bottom.

+
+ +
+
+get_parent_children()Tuple[Optional[str], List[str]]
+

Gets the parent and a list of children of a given image.

+
+ +
+
+get_size()int
+

Get the physical size used by the image’s objects (including those that might be +shared with other images).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of image’s +objects have been downloaded.

+
+
Returns
+

Size of the image in bytes.

+
+
+
+ +
+
+get_table(table_name: str)splitgraph.core.table.Table
+

Returns a Table object representing a version of a given table. +Contains a list of objects that the table is linked to and the table’s schema.

+
+
Parameters
+

table_name – Name of the table

+
+
Returns
+

Table object

+
+
+
+ +
+
+get_tables()List[str]
+

Gets the names of all tables inside of an image.

+
+ +
+
+get_tags()
+

Lists all tags that this image has.

+
+ +
+
+property image_hash
+

Alias for field number 0

+
+ +
+
+property object_engine
+
+ +
+
+property parent_id
+

Alias for field number 1

+
+ +
+
+provenance(reverse=False, engine=None)List[Tuple[Repository, str]]
+

Inspects the image’s parent chain to come up with a set of repositories and their hashes +that it was created from.

+

If reverse is True, returns a list of images that were created _from_ this image. If +this image is on a remote repository, engine can be passed in to override the engine +used for the lookup of dependents.

+
+
Returns
+

List of (repository, image_hash)

+
+
+
+ +
+
+property provenance_data
+

Alias for field number 4

+
+ +
+
+query_schema(wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', commit: bool = True)Iterator[str]
+

Creates a temporary schema with tables in this image mounted as foreign tables that can be accessed via +read-only layered querying. On exit from the context manager, the schema is discarded.

+
+
Returns
+

The name of the schema the image is located in.

+
+
+
+ +
+
+property repository
+

Alias for field number 5

+
+ +
+
+set_provenance(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]])None
+

Sets the image’s provenance. Internal function called by the Splitfile interpreter, shouldn’t +be called directly as it changes the image after it’s been created.

+
+
Parameters
+

provenance_data – List of parsed Splitfile commands and their data.

+
+
+
+ +
+
+tag(tag: str)None
+

Tags a given image. All tags are unique inside of a repository. If a tag already exists, it’s removed +from the previous image and given to the new image.

+
+
Parameters
+

tag – Tag to set. ‘latest’ and ‘HEAD’ are reserved tags.

+
+
+
+ +
+
+to_splitfile(ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None)List[str]
+

Recreate the Splitfile that can be used to reconstruct this image.

+
+
Parameters
+
    +
  • ignore_irreproducible – If True, ignore commands from irreproducible Splitfile lines +(like MOUNT or custom commands) and instead emit a comment (this results in an invalid Splitfile).

  • +
  • source_replacement – A dictionary of repositories and image hashes/tags specifying how to replace the +dependencies of this Splitfile (table imports and FROM commands).

  • +
+
+
Returns
+

A list of Splitfile commands that can be fed back into the executor.

+
+
+
+ +
+ +
+
+splitgraph.core.image.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.image.reconstruct_splitfile(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None)List[str]
+

Recreate the Splitfile that can be used to reconstruct an image.

+
+ +
+
+

splitgraph.core.image_manager module

+
+
+class splitgraph.core.image_manager.ImageManager(repository: Repository)
+

Bases: object

+

Collects various image-related functions.

+
+
+add(parent_id: Optional[str], image: str, created: Optional[datetime.datetime] = None, comment: Optional[str] = None, provenance_data: Optional[List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]] = None)None
+

Registers a new image in the Splitgraph image tree.

+

Internal method used by actual image creation routines (committing, importing or pulling).

+
+
Parameters
+
    +
  • parent_id – Parent of the image

  • +
  • image – Image hash

  • +
  • created – Creation time (defaults to current timestamp)

  • +
  • comment – Comment (defaults to empty)

  • +
  • provenance_data – Provenance data that can be used to reconstruct the image.

  • +
+
+
+
+ +
+
+add_batch(images: List[splitgraph.core.image.Image])None
+

Like add, but registers multiple images at the same time. Used in push/pull +to avoid a roundtrip to the registry for each image +:param images: List of Image objects. Namespace and repository will be patched

+
+

with this repository.

+
+
+ +
+
+by_hash(image_hash: str)splitgraph.core.image.Image
+

Returns an image corresponding to a given (possibly shortened) image hash. If the image hash +is ambiguous, raises an error. If the image does not exist, raises an error or returns None.

+
+
Parameters
+

image_hash – Image hash (can be shortened).

+
+
Returns
+

Image

+
+
+
+ +
+
+by_tag(tag: str, raise_on_none: bool = True)Optional[splitgraph.core.image.Image]
+

Returns an image with a given tag

+
+
Parameters
+
    +
  • tag – Tag. ‘latest’ is a special case: it returns the most recent image in the repository.

  • +
  • raise_on_none – Whether to raise an error or return None if the tag doesn’t exist.

  • +
+
+
+
+ +
+
+delete(images: Sequence[str])None
+

Deletes a set of Splitgraph images from the repository. Note this doesn’t check whether +this will orphan some other images in the repository and can make the state of the repository +invalid.

+

Image deletions won’t be replicated on push/pull (those can only add new images).

+
+
Parameters
+

images – List of image IDs

+
+
+
+ +
+
+get_all_child_images(start_image: str)Set[str]
+

Get all children of start_image of any degree.

+
+ +
+
+get_all_parent_images(start_images: Set[str])Set[str]
+

Get all parents of the ‘start_images’ set of any degree.

+
+ +
+ +
+
+

splitgraph.core.metadata_manager module

+

Classes related to managing table/image/object metadata tables.

+
+
+class splitgraph.core.metadata_manager.MetadataManager(metadata_engine: PsycopgEngine)
+

Bases: object

+

A data access layer for the metadata tables in the splitgraph_meta schema that concerns itself +with image, table and object information.

+
+
+cleanup_metadata()List[str]
+

Go through the current metadata and delete all objects that aren’t required +by any table on the engine.

+
+
Returns
+

List of objects that have been deleted.

+
+
+
+ +
+
+delete_object_meta(object_ids: Sequence[str])
+

Delete metadata for multiple objects (external locations, indexes, hashes). +This doesn’t delete physical objects.

+
+
Parameters
+

object_ids – Object IDs to delete

+
+
+
+ +
+
+get_all_objects()List[str]
+

Gets all objects currently in the Splitgraph tree.

+
+
Returns
+

List of object IDs.

+
+
+
+ +
+
+get_external_object_locations(objects: List[str])List[Tuple[str, str, str]]
+

Gets external locations for objects.

+
+
Parameters
+

objects – List of object IDs stored externally.

+
+
Returns
+

List of (object_id, location, protocol).

+
+
+
+ +
+
+get_new_objects(object_ids: List[str])List[str]
+

Get object IDs from the passed list that don’t exist in the tree.

+
+
Parameters
+

object_ids – List of objects to check

+
+
Returns
+

List of unknown object IDs.

+
+
+
+ +
+
+get_object_meta(objects: List[str])Dict[str, splitgraph.core.metadata_manager.Object]
+

Get metadata for multiple Splitgraph objects from the tree

+
+
Parameters
+

objects – List of objects to get metadata for.

+
+
Returns
+

Dictionary of object_id -> Object

+
+
+
+ +
+
+get_objects_for_repository(repository: Repository, image_hash: Optional[str] = None)List[str]
+
+ +
+
+get_unused_objects(threshold: Optional[int] = None)List[Tuple[str, datetime.datetime]]
+

Get a list of all objects in the metadata that aren’t used by any table and can be +safely deleted.

+
+
Parameters
+

threshold – Only return objects that were created earlier than this (in minutes)

+
+
Returns
+

List of objects and their creation times.

+
+
+
+ +
+
+overwrite_table(repository: Repository, image_hash: str, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+
+ +
+
+register_object_locations(object_locations: List[Tuple[str, str, str]])None
+

Registers external locations (e.g. HTTP or S3) for Splitgraph objects. +Objects must already be registered in the object tree.

+
+
Parameters
+

object_locations – List of (object_id, location, protocol).

+
+
+
+ +
+
+register_objects(objects: List[splitgraph.core.metadata_manager.Object], namespace: Optional[str] = None)None
+

Registers multiple Splitgraph objects in the tree.

+
+
Parameters
+
    +
  • objects – List of Object objects.

  • +
  • namespace – If specified, overrides the original object namespace, required +in the case where the remote repository has a different namespace than the local one.

  • +
+
+
+
+ +
+
+register_tables(repository: Repository, table_meta: List[Tuple[str, str, List[splitgraph.core.types.TableColumn], List[str]]])None
+

Links tables in an image to physical objects that they are stored as. +Objects must already be registered in the object tree.

+
+
Parameters
+
    +
  • repository – Repository that the tables belong to.

  • +
  • table_meta – A list of (image_hash, table_name, table_schema, object_ids).

  • +
+
+
+
+ +
+ +
+
+class splitgraph.core.metadata_manager.Object(object_id: str, format: str, namespace: str, size: int, created: datetime.datetime, insertion_hash: str, deletion_hash: str, object_index: Dict[str, Any], rows_inserted: int, rows_deleted: int)
+

Bases: tuple

+

Represents a Splitgraph object that tables are composed of.

+
+
+property created
+

Alias for field number 4

+
+ +
+
+property deletion_hash
+

Alias for field number 6

+
+ +
+
+property format
+

Alias for field number 1

+
+ +
+
+property insertion_hash
+

Alias for field number 5

+
+ +
+
+property namespace
+

Alias for field number 2

+
+ +
+
+property object_id
+

Alias for field number 0

+
+ +
+
+property object_index
+

Alias for field number 7

+
+ +
+
+property rows_deleted
+

Alias for field number 9

+
+ +
+
+property rows_inserted
+

Alias for field number 8

+
+ +
+
+property size
+

Alias for field number 3

+
+ +
+ +
+
+

splitgraph.core.migration module

+
+
+splitgraph.core.migration.get_installed_version(engine: PsycopgEngine, schema_name: str, version_table: str = 'version')Optional[Tuple[str, datetime.datetime]]
+
+ +
+
+splitgraph.core.migration.get_version_tuples(filenames: List[str])List[Tuple[Optional[str], str]]
+
+ +
+
+splitgraph.core.migration.make_file_list(schema_name: str, migration_path: List[Optional[str]])
+

Construct a list of file names from history of versions and schema name

+
+ +
+
+splitgraph.core.migration.set_installed_version(engine: PsycopgEngine, schema_name: str, version: str, version_table: str = 'version')
+
+ +
+
+splitgraph.core.migration.source_files_to_apply(engine: PsycopgEngine, schema_name: str, schema_files: List[str], version_table: str = 'version', static: bool = False, target_version: Optional[str] = None)Tuple[List[str], str]
+

Get the ordered list of .sql files to apply to the database

+
+ +
+
+

splitgraph.core.object_manager module

+

Functions related to creating, deleting and keeping track of physical Splitgraph objects.

+
+
+class splitgraph.core.object_manager.ObjectManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.fragment_manager.FragmentManager

+

Brings the multiple manager classes together and manages the object cache (downloading and uploading +objects as required in order to fulfill certain queries)

+
+
+cleanup()List[str]
+

Deletes all objects in the object_tree not required by any current repository, including their dependencies and +their remote locations. Also deletes all objects not registered in the object_tree.

+
+ +
+
+download_objects(source: Optional[splitgraph.core.object_manager.ObjectManager], objects_to_fetch: List[str], object_locations: List[Tuple[str, str, str]])List[str]
+

Fetches the required objects from the remote and stores them locally. +Does nothing for objects that already exist.

+
+
Parameters
+
    +
  • source – Remote ObjectManager. If None, will only try to download objects from the external location.

  • +
  • objects_to_fetch – List of object IDs to download.

  • +
  • object_locations – List of custom object locations, encoded as tuples (object_id, object_url, protocol).

  • +
+
+
+
+ +
+
+ensure_objects(table: Optional[Table], objects: Optional[List[str]] = None, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]] = None, defer_release: bool = False, tracer: Optional[splitgraph.core.common.Tracer] = None, upstream_manager: Optional[ObjectManager] = None)Iterator[Union[List[str], Tuple[List[str], splitgraph.core.common.CallbackList]]]
+

Resolves the objects needed to materialize a given table and makes sure they are in the local +splitgraph_meta schema.

+

Whilst inside this manager, the objects are guaranteed to exist. On exit from it, the objects are marked as +unneeded and can be garbage collected.

+
+
Parameters
+
    +
  • table – Table to materialize

  • +
  • objects – List of objects to download: one of table or objects must be specified.

  • +
  • quals – Optional list of qualifiers to be passed to the fragment engine. Fragments that definitely do +not match these qualifiers will be dropped. See the docstring for filter_fragments for the format.

  • +
  • defer_release – If True, won’t release the objects on exit.

  • +
+
+
Returns
+

If defer_release is True: List of table fragments and a callback that the caller must call +when the objects are no longer needed. If defer_release is False: just the list of table fragments.

+
+
+
+ +
+
+get_cache_occupancy()int
+
+
Returns
+

Space occupied by objects cached from external locations, in bytes.

+
+
+
+ +
+
+get_downloaded_objects(limit_to: Optional[List[str]] = None)List[str]
+

Gets a list of objects currently in the Splitgraph cache (i.e. not only existing externally.)

+
+
Parameters
+

limit_to – If specified, only the objects in this list will be returned.

+
+
Returns
+

Set of object IDs.

+
+
+
+ +
+
+get_total_object_size()
+
+
Returns
+

Space occupied by all objects on the engine, in bytes.

+
+
+
+ +
+
+make_objects_external(objects: List[str], handler: str, handler_params: Dict[Any, Any])None
+

Uploads local objects to an external location and marks them as being cached locally (thus making it possible +to evict or swap them out).

+
+
Parameters
+
    +
  • objects – Object IDs to upload. Will do nothing for objects that already exist externally.

  • +
  • handler – Object handler

  • +
  • handler_params – Extra handler parameters

  • +
+
+
+
+ +
+
+run_eviction(keep_objects: List[str], required_space: Optional[int] = None)None
+

Delete enough objects with zero reference count (only those, since we guarantee that whilst refcount is >0, +the object stays alive) to free at least required_space in the cache.

+
+
Parameters
+
    +
  • keep_objects – List of objects (besides those with nonzero refcount) that can’t be deleted.

  • +
  • required_space – Space, in bytes, to free. If the routine can’t free at least this much space, +it shall raise an exception. If None, removes all eligible objects.

  • +
+
+
+
+ +
+
+upload_objects(target: splitgraph.core.object_manager.ObjectManager, objects_to_push: List[str], handler: str = 'DB', handler_params: Optional[Dict[Any, Any]] = None)Sequence[Tuple[str, Optional[str]]]
+

Uploads physical objects to the remote or some other external location.

+
+
Parameters
+
    +
  • target – Target ObjectManager

  • +
  • objects_to_push – List of object IDs to upload.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote, FILE +to store them in a directory that can be accessed from the client and HTTP to upload them to HTTP.

  • +
  • handler_params – For HTTP, a dictionary &lbrace;“username”: username, “password”, password&rbrace;. For FILE, +a dictionary &lbrace;“path”: path&rbrace; specifying the directory where the objects shall be saved.

  • +
+
+
Returns
+

A list of (object_id, url) that specifies all objects were uploaded (skipping objects that +already exist on the remote).

+
+
+
+ +
+ +
+
+

splitgraph.core.output module

+
+
+splitgraph.core.output.conn_string_to_dict(connection: Optional[str])Dict[str, Any]
+
+ +
+
+splitgraph.core.output.parse_date(string: str)datetime.date
+
+ +
+
+splitgraph.core.output.parse_dt(string: str)datetime.datetime
+
+ +
+
+splitgraph.core.output.parse_repo_tag_or_hash(value, default='latest')
+
+ +
+
+splitgraph.core.output.parse_time(string: str)time.struct_time
+
+ +
+
+splitgraph.core.output.pluralise(word: str, number: int)str
+

1 banana, 2 bananas

+
+ +
+
+splitgraph.core.output.pretty_size(size: Union[int, float])str
+

Converts a size in bytes to its string representation (e.g. 1024 -> 1KiB) +:param size: Size in bytes

+
+ +
+
+splitgraph.core.output.slugify(text: str, max_length: int = 50)str
+
+ +
+
+splitgraph.core.output.truncate_line(line: str, length: int = 80)str
+

Truncates a line to a given length, replacing the remainder with …

+
+ +
+
+splitgraph.core.output.truncate_list(items: List[Any], max_entries: int = 10)str
+

Print a list, possibly truncating it to the specified number of entries

+
+ +
+
+

splitgraph.core.registry module

+

Functions for communicating with the remote Splitgraph catalog

+
+
+splitgraph.core.registry.get_info_key(engine: PostgresEngine, key: str)Optional[str]
+

Gets a configuration key from the remote registry, used to notify the client of the registry’s capabilities.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to get

  • +
+
+
+
+ +
+
+splitgraph.core.registry.set_info_key(engine: PostgresEngine, key: str, value: Union[bool, str])None
+

Sets a configuration value on the remote registry.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to set

  • +
  • value – New value for the key

  • +
+
+
+
+ +
+
+splitgraph.core.registry.setup_registry_mode(engine: PostgresEngine)None
+

Set up access policies/RLS:

+
    +
  • Normal users aren’t allowed to create tables/schemata (can’t do checkouts inside of a registry or +upload SG objects directly to it)

  • +
  • Normal users can’t access the splitgraph_meta schema directly: they’re only supposed to be able to +talk to it via stored procedures in splitgraph_api. Those procedures are set up with SECURITY INVOKER +(run with those users’ credentials) and what they can access is further restricted by RLS:

    +
      +
    • images/tables/tags meta tables: can only create/update/delete records where the namespace = user ID

    • +
    • objects/object_location tables: same. An object (piece of data) becomes owned by the user that creates +it and still remains so even if someone else’s image starts using it. Hence, the original owner can delete +or change it (since they control the external location they’ve uploaded it to anyway).

    • +
    +
  • +
+
+ +
+
+

splitgraph.core.repository module

+

Public API for managing images in a Splitgraph repository.

+
+
+class splitgraph.core.repository.Repository(namespace: str, repository: str, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_manager: Optional[splitgraph.core.object_manager.ObjectManager] = None)
+

Bases: object

+

Splitgraph repository API

+
+
+commit(image_hash: Optional[str] = None, comment: Optional[str] = None, snap_only: bool = False, chunk_size: Optional[int] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]]] = None, in_fragment_order: Optional[Dict[str, List[str]]] = None, overwrite: bool = False)splitgraph.core.image.Image
+

Commits all pending changes to a given repository, creating a new image.

+
+
Parameters
+
    +
  • image_hash – Hash of the commit. Chosen by random if unspecified.

  • +
  • comment – Optional comment to add to the commit.

  • +
  • snap_only – If True, will store the table as a full snapshot instead of delta compression

  • +
  • chunk_size – For tables that are stored as snapshots (new tables and where snap_only has been passed, +the table will be split into fragments of this many rows.

  • +
  • split_changeset – If True, splits the changeset into multiple fragments based on +the PK regions spanned by the current table fragments. For example, if the original table +consists of 2 fragments, first spanning rows 1-10000, second spanning rows 10001-20000 and the +change alters rows 1, 10001 and inserts a row with PK 20001, this will record the change as +3 fragments: one inheriting from the first original fragment, one inheriting from the second +and a brand new fragment. This increases the number of fragments in total but means that fewer rows +will need to be scanned to satisfy a query. +If False, the changeset will be stored as a single fragment inheriting from the last fragment in the +table.

  • +
  • extra_indexes – Dictionary of &lbrace;table: index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Dictionary of &lbrace;table: list of columns&rbrace;. If specified, will

  • +
+
+
+

sort the data inside each chunk by this/these key(s) for each table. +:param overwrite: If an object already exists, will force recreate it.

+
+
Returns
+

The newly created Image object.

+
+
+
+ +
+
+commit_engines()None
+

Commit the underlying transactions on both engines that the repository uses.

+
+ +
+
+delete(unregister: bool = True, uncheckout: bool = True)None
+

Discards all changes to a given repository and optionally all of its history, +as well as deleting the Postgres schema that it might be checked out into. +Doesn’t delete any cached physical objects.

+

After performing this operation, this object becomes invalid and must be discarded, +unless init() is called again.

+
+
Parameters
+
    +
  • unregister – Whether to purge repository history/metadata

  • +
  • uncheckout – Whether to delete the actual checked out repo. This has no effect +if the repository is backed by a registry (rather than a local engine).

  • +
+
+
+
+ +
+
+diff(table_name: str, image_1: Union[splitgraph.core.image.Image, str], image_2: Optional[Union[splitgraph.core.image.Image, str]], aggregate: bool = False)Optional[Union[bool, Tuple[int, int, int], List[Tuple[bool, Tuple]]]]
+

Compares the state of a table in different images by materializing both tables into a temporary space +and comparing them row-to-row.

+
+
Parameters
+
    +
  • table_name – Name of the table.

  • +
  • image_1 – First image hash / object. If None, uses the state of the current staging area.

  • +
  • image_2 – Second image hash / object. If None, uses the state of the current staging area.

  • +
  • aggregate – If True, returns a tuple of integers denoting added, removed and updated rows between +the two images.

  • +
+
+
Returns
+

If the table doesn’t exist in one of the images, returns True if it was added and False if it was +removed. If aggregate is True, returns the aggregation of changes as specified before. +Otherwise, returns a list of changes where each change is a tuple of +(True for added, False for removed, row contents).

+
+
+
+ +
+
+dump(stream: _io.TextIOWrapper, exclude_object_contents: bool = False)None
+

Creates an SQL dump with the metadata required for the repository and all of its objects.

+
+
Parameters
+
    +
  • stream – Stream to dump the data into.

  • +
  • exclude_object_contents – Only dump the metadata but not the actual object contents.

  • +
+
+
+
+ +
+
+classmethod from_schema(schema: str)splitgraph.core.repository.Repository
+

Convert a Postgres schema name of the format namespace/repository to a Splitgraph repository object.

+
+ +
+
+classmethod from_template(template: splitgraph.core.repository.Repository, namespace: Optional[str] = None, repository: Optional[str] = None, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None)splitgraph.core.repository.Repository
+

Create a Repository from an existing one replacing some of its attributes.

+
+ +
+
+get_all_hashes_tags()List[Tuple[Optional[str], str]]
+

Gets all tagged images and their hashes in a given repository.

+
+
Returns
+

List of (image_hash, tag)

+
+
+
+ +
+
+get_local_size()int
+

Get the actual size used by this repository’s downloaded objects.

+

This might still be double-counted if the repository shares objects +with other repositores.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+get_size()int
+

Get the physical size used by the repository’s data, counting objects that are used +by multiple images only once. This is calculated from the metadata, the on-disk +footprint might be smaller if not all of repository’s objects have been downloaded.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+has_pending_changes()bool
+

Detects if the repository has any pending changes (schema changes, table additions/deletions, content changes).

+
+ +
+
+property head
+

Return the HEAD image for the repository or None if the repository isn’t checked out.

+
+ +
+
+property head_strict
+

Return the HEAD image for the repository. Raise an exception if the repository +isn’t checked out.

+
+ +
+
+images
+

A splitgraph.core.image.ImageManager instance that performs operations +(checkout, delete etc) on this repository’s images.

+
+ +
+
+import_tables(tables: Sequence[str], source_repository: splitgraph.core.repository.Repository, source_tables: Sequence[str], image_hash: Optional[str] = None, foreign_tables: bool = False, do_checkout: bool = True, target_hash: Optional[str] = None, table_queries: Optional[Sequence[bool]] = None, parent_hash: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', skip_validation: bool = False)str
+

Creates a new commit in target_repository with one or more tables linked to already-existing tables. +After this operation, the HEAD of the target repository moves to the new commit and the new tables are +materialized.

+
+
Parameters
+
    +
  • tables – If not empty, must be the list of the same length as source_tables specifying names to store +them under in the target repository.

  • +
  • source_repository – Repository to import tables from.

  • +
  • source_tables – List of tables to import. If empty, imports all tables.

  • +
  • image_hash – Image hash in the source repository to import tables from. +Uses the current source HEAD by default.

  • +
  • foreign_tables – If True, copies all source tables to create a series of new snapshots instead of +treating them as Splitgraph-versioned tables. This is useful for adding brand new tables +(for example, from an FDW-mounted table).

  • +
  • do_checkout – If False, doesn’t check out the newly created image.

  • +
  • target_hash – Hash of the new image that tables is recorded under. If None, gets chosen at random.

  • +
  • table_queries – If not [], it’s treated as a Boolean mask showing which entries in the tables list are +instead SELECT SQL queries that form the target table. The queries have to be non-schema qualified and work +only against tables in the source repository. Each target table created is the result of the respective SQL +query. This is committed as a new snapshot.

  • +
  • parent_hash – If not None, must be the hash of the image to base the new image on. +Existing tables from the parent image are preserved in the new image. If None, the current repository +HEAD is used.

  • +
  • wrapper – Override the default class for the layered querying foreign data wrapper.

  • +
  • skip_validation – Don’t validate SQL used in import statements (used by the Splitfile executor that pre-formats the SQL).

  • +
+
+
Returns
+

Hash that the new image was stored under.

+
+
+
+ +
+
+init()None
+

Initializes an empty repo with an initial commit (hash 0000…)

+
+ +
+
+materialized_table(table_name: str, image_hash: Optional[str])Iterator[Tuple[str, str]]
+

A context manager that returns a pointer to a read-only materialized table in a given image. +The table is deleted on exit from the context manager.

+
+
Parameters
+
    +
  • table_name – Name of the table

  • +
  • image_hash – Image hash to materialize

  • +
+
+
Returns
+

(schema, table_name) where the materialized table is located.

+
+
+
+ +
+
+objects
+

A splitgraph.core.object_manager.ObjectManager instance that performs operations on +the objects on this repository’s engine (not just objects belonging to this repository).

+
+ +
+
+pull(download_all: Optional[bool] = False, overwrite_objects: bool = False, overwrite_tags: bool = False, single_image: Optional[str] = None)None
+

Synchronizes the state of the local Splitgraph repository with its upstream, optionally downloading all new +objects created on the remote.

+
+
Parameters
+
    +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download +required objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – Limit the download to a single image hash/tag.

  • +
+
+
+
+ +
+
+push(remote_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, reupload_objects: bool = False, overwrite_tags: bool = False, handler: str = 'DB', handler_options: Optional[Dict[str, Any]] = None, single_image: Optional[str] = None)splitgraph.core.repository.Repository
+

Inverse of pull: Pushes all local changes to the remote and uploads new objects.

+
+
Parameters
+
    +
  • remote_repository – Remote repository to push changes to. If not specified, the current +upstream is used.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote or S3 +to store them in an S3 bucket.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the remote repository for existing objects.

  • +
  • reupload_objects – If True, will reupload objects for which metadata is uploaded.

  • +
  • overwrite_tags – If True, will overwrite existing tags on the remote repository.

  • +
  • handler_options – Extra options to pass to the handler. For example, see +splitgraph.hooks.s3.S3ExternalObjectHandler.

  • +
  • single_image – Limit the upload to a single image hash/tag.

  • +
+
+
+
+ +
+
+rollback_engines()None
+

Rollback the underlying transactions on both engines that the repository uses.

+
+ +
+
+run_sql(sql: Union[psycopg2.sql.Composed, str], arguments: Optional[Any] = None, return_shape: splitgraph.engine.ResultShape = <ResultShape.MANY_MANY: 4>)Any
+

Execute an arbitrary SQL statement inside of this repository’s checked out schema.

+
+ +
+
+set_tags(tags: Dict[str, Optional[str]])None
+

Sets tags for multiple images.

+
+
Parameters
+

tags – List of (image_hash, tag)

+
+
+
+ +
+
+to_schema()str
+

Returns the engine schema that this repository gets checked out into.

+
+ +
+
+uncheckout(force: bool = False)None
+

Deletes the schema that the repository is checked out into

+
+
Parameters
+

force – Discards all pending changes to the schema.

+
+
+
+ +
+
+property upstream
+

The remote upstream repository that this local repository tracks.

+
+ +
+ +
+
+splitgraph.core.repository.clone(remote_repository: Union[splitgraph.core.repository.Repository, str], local_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, overwrite_tags: bool = False, download_all: Optional[bool] = False, single_image: Optional[str] = None)splitgraph.core.repository.Repository
+

Clones a remote Splitgraph repository or synchronizes remote changes with the local ones.

+

If the target repository has no set upstream engine, the source repository becomes its upstream.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object to clone or the repository’s name. If a name is passed, +the repository will be looked up on the current lookup path in order to find the engine the repository +belongs to.

  • +
  • local_repository – Local repository to clone into. If None, uses the same name as the remote.

  • +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download required +objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – If set, only get a single image with this hash/tag from the source.

  • +
+
+
Returns
+

A locally cloned Repository object.

+
+
+
+ +
+
+splitgraph.core.repository.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.repository.import_table_from_remote(remote_repository: splitgraph.core.repository.Repository, remote_tables: List[str], remote_image_hash: str, target_repository: splitgraph.core.repository.Repository, target_tables: List[Any], target_hash: Optional[str] = None)None
+

Shorthand for importing one or more tables from a yet-uncloned remote. Here, the remote image hash is required, +as otherwise we aren’t necessarily able to determine what the remote head is.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object

  • +
  • remote_tables – List of remote tables to import

  • +
  • remote_image_hash – Image hash to import the tables from

  • +
  • target_repository – Target repository to import the tables to

  • +
  • target_tables – Target table aliases

  • +
  • target_hash – Hash of the image that’s created with the import. Default random.

  • +
+
+
+
+ +
+
+splitgraph.core.repository.table_exists_at(repository: splitgraph.core.repository.Repository, table_name: str, image: Optional[splitgraph.core.image.Image] = None)bool
+

Determines whether a given table exists in a Splitgraph image without checking it out. If image_hash is None, +determines whether the table exists in the current staging area.

+
+ +
+
+

splitgraph.core.server module

+

Routines that are run inside of the engine, +here so that they can get type- and syntax-checked.

+

When inside of an LQFDW shim, these are called directly by the Splitgraph core code +to avoid a redundant connection to the engine.

+
+
+splitgraph.core.server.delete_object_files(object_id: str)
+
+ +
+
+splitgraph.core.server.download_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.get_object_schema(object_id: str)str
+
+ +
+
+splitgraph.core.server.get_object_size(object_id: str)int
+
+ +
+
+splitgraph.core.server.list_objects()List[str]
+
+ +
+
+splitgraph.core.server.object_exists(object_id: str)bool
+
+ +
+
+splitgraph.core.server.rename_object_files(old_object_id: str, new_object_id: str)
+
+ +
+
+splitgraph.core.server.set_object_schema(object_id: str, schema: str)
+
+ +
+
+splitgraph.core.server.upload_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.verify(url: str)
+
+ +
+
+

splitgraph.core.table module

+

Table metadata-related classes.

+
+
+class splitgraph.core.table.QueryPlan(table: splitgraph.core.table.Table, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str])
+

Bases: object

+

Represents the initial query plan (fragments to query) for given columns and +qualifiers.

+
+ +
+
+class splitgraph.core.table.Table(repository: Repository, image: Image, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+

Bases: object

+

Represents a Splitgraph table in a given image. Shouldn’t be created directly, use Table-loading +methods in the splitgraph.core.image.Image class instead.

+
+
+get_length()int
+

Get the number of rows in this table.

+

This might be smaller than the total number of rows in all objects belonging to this +table as some objects might overwrite each other.

+
+
Returns
+

Number of rows in table

+
+
+
+ +
+
+get_query_plan(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str], use_cache: bool = True)splitgraph.core.table.QueryPlan
+

Start planning a query (preliminary steps before object downloading, +like qualifier filtering).

+
+
Parameters
+
    +
  • quals – Qualifiers in CNF form

  • +
  • columns – List of columns

  • +
  • use_cache – If True, will fetch the plan from the cache for the same qualifiers and columns.

  • +
+
+
Returns
+

QueryPlan

+
+
+
+ +
+
+get_size()int
+

Get the physical size used by the table’s objects (including those shared with other tables).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of table’s +objects have been downloaded.

+
+
Returns
+

Size of the table in bytes.

+
+
+
+ +
+
+materialize(destination: str, destination_schema: Optional[str] = None, lq_server: Optional[str] = None, temporary: bool = False)None
+

Materializes a Splitgraph table in the target schema as a normal Postgres table, potentially downloading all +required objects and using them to reconstruct the table.

+
+
Parameters
+
    +
  • destination – Name of the destination table.

  • +
  • destination_schema – Name of the destination schema.

  • +
  • lq_server – If set, sets up a layered querying FDW for the table instead using this foreign server.

  • +
+
+
+
+ +
+
+query(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])
+

Run a read-only query against this table without materializing it.

+

This is a wrapper around query_lazy() that force evaluates the results which +might mean more fragments being materialized that aren’t needed.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

List of dictionaries of results

+
+
+
+ +
+
+query_indirect(columns: List[str], quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]])Tuple[Iterator[bytes], Callable, splitgraph.core.table.QueryPlan]
+

Run a read-only query against this table without materializing it. Instead of +actual results, this returns a generator of SQL queries that the caller can use +to get the results as well as a callback that the caller has to run after they’re +done consuming the results.

+

In particular, the query generator will prefer returning direct queries to +Splitgraph objects and only when those are exhausted will it start materializing +delta-compressed fragments.

+

This is an advanced method: you probably want to call table.query().

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of queries (bytes), a callback and a query plan object (containing stats +that are fully populated after the callback has been called to end the query).

+
+
+
+ +
+
+query_lazy(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])Iterator[Iterator[Dict[str, Any]]]
+

Run a read-only query against this table without materializing it.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of dictionaries of results.

+
+
+
+ +
+
+reindex(extra_indexes: Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]], raise_on_patch_objects=True)List[str]
+

Run extra indexes on all objects in this table and update their metadata. +This only works on objects that don’t have any deletions or upserts (have a deletion hash of 000000…).

+
+
Parameters
+
    +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • raise_on_patch_objects – If True, will raise an exception if any objects in the table +overwrite any other objects. If False, will log a warning but will reindex all non-patch objects.

  • +
+
+
+

:returns List of objects that were reindexed.

+
+ +
+ +
+
+splitgraph.core.table.merge_index_data(current_index: Dict[str, Any], new_index: Dict[str, Any])
+
+ +
+
+

splitgraph.core.types module

+
+
+class splitgraph.core.types.Comparable
+

Bases: object

+
+ +
+
+class splitgraph.core.types.MountError(table_name, error, error_text)
+

Bases: tuple

+
+
+property error
+

Alias for field number 1

+
+ +
+
+property error_text
+

Alias for field number 2

+
+ +
+
+property table_name
+

Alias for field number 0

+
+ +
+ +
+
+class splitgraph.core.types.TableColumn(ordinal, name, pg_type, is_pk, comment)
+

Bases: tuple

+
+
+property comment
+

Alias for field number 4

+
+ +
+
+property is_pk
+

Alias for field number 3

+
+ +
+
+property name
+

Alias for field number 1

+
+ +
+
+property ordinal
+

Alias for field number 0

+
+ +
+
+property pg_type
+

Alias for field number 2

+
+ +
+ +
+
+splitgraph.core.types.dict_to_table_schema_params(tables: Dict[str, ExternalTableRequest])Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]
+
+ +
+
+splitgraph.core.types.table_schema_params_to_dict(tables: Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]])Dict[str, Dict[str, Dict[str, str]]]
+
+ +
+
+splitgraph.core.types.unwrap(result: Dict[str, Union[splitgraph.core.types.MountError, T]])Tuple[Dict[str, T], Dict[str, splitgraph.core.types.MountError]]
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.core.sql.mdx b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.core.sql.mdx new file mode 100644 index 00000000..c07302b7 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.core.sql.mdx @@ -0,0 +1,118 @@ + + + +export const meta = { + title: "splitgraph.core.sql package", + id: "splitgraph.core.sql package" +}; + +
+

Module contents

+

Routines for managing SQL statements

+
+
+splitgraph.core.sql.insert(table: str, columns: Sequence[str], schema: str = 'splitgraph_meta')psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to insert as a list of strings.

  • +
  • schema – Schema that contains the table

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query (parameterized)

+
+
+
+ +
+
+splitgraph.core.sql.prepare_splitfile_sql(sql: str, image_mapper: Callable)Tuple[str, str]
+

Transform an SQL query to prepare for it to be used in a Splitfile SQL command and validate it. +The rules are:

+
+
    +
  • Only basic DDL (CREATE/ALTER/DROP table) and DML (SELECT/INSERT/UPDATE/DELETE) are permitted.

  • +
  • All tables must be either non-schema qualified (the statement is run with search_path

  • +
+

set to the single schema that a Splitgraph image is checked out into) or have schemata of +format namespace/repository:hash_or_tag. In the second case, the schema is rewritten to point +at a temporary mount of the Splitgraph image.

+
+
+
Parameters
+
    +
  • sql – SQL query

  • +
  • image_mapper – Takes in an image and gives back the schema it should be rewritten to +(for the purposes of execution) and the canonical form of the image.

  • +
+
+
Returns
+

Transformed form of the SQL with substituted schema shims for Splitfile execution +and the canonical form (with e.g. tags resolved into at-the-time full image hashes)

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+
+splitgraph.core.sql.recover_original_schema_name(sql: str, schema_name: str)str
+

Postgres truncates identifiers to 63 characters at parse time and, as pglast +uses bits of PG to parse queries, image names like noaa/climate:64_chars_of_hash +get truncated which can cause ambiguities and issues in provenance. We can’t +get pglast to give us back the full identifier, but we can try and figure out +what it used to be and patch the AST to have it again.

+
+ +
+
+splitgraph.core.sql.select(table: str, columns: str = '*', where: str = '', schema: str = 'splitgraph_meta', table_args: Optional[str] = None)psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to select as a string. WARN: concatenated directly without any formatting.

  • +
  • where – If specified, added to the query with a “WHERE” keyword. WARN also concatenated directly.

  • +
  • schema – Defaults to SPLITGRAPH_META_SCHEMA.

  • +
  • table_args – If specified, appends to the FROM clause after the table specification, +for example, SELECT * FROM “splitgraph_api”.”get_images” (%s, %s) …

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query.

+
+
+
+ +
+
+splitgraph.core.sql.validate_import_sql(sql: str)str
+

Check an SQL query to see if it can be safely used in an IMPORT statement +(e.g. FROM noaa/climate:latest IMPORT &lbrace;SELECT * FROM rainfall WHERE state = ‘AZ’&rbrace; AS rainfall. +In this case, only a single SELECT statement is supported.

+
+
Parameters
+

sql – SQL query

+
+
Returns
+

Canonical (formatted) form of the SQL statement

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.engine.mdx b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.engine.mdx new file mode 100644 index 00000000..395cb80c --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.engine.mdx @@ -0,0 +1,565 @@ + + + +export const meta = { + title: "splitgraph.engine package", + id: "splitgraph.engine package" +}; + +
+

Module contents

+

Defines the interface for a Splitgraph engine (a backing database), including running basic SQL commands, +tracking tables for changes and uploading/downloading tables to other remote engines.

+

By default, Splitgraph is backed by Postgres: see splitgraph.engine.postgres for an example of how to +implement a different engine.

+
+
+class splitgraph.engine.ChangeEngine
+

Bases: splitgraph.engine.SQLEngine, abc.ABC

+

An SQL engine that can perform change tracking on a set of tables.

+
+
+discard_pending_changes(schema, table=None)
+

Discard recorded pending changes for a tracked table or the whole schema

+
+ +
+
+get_change_key(schema: str, table: str)List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_changed_tables(schema)
+

List tracked tables that have pending changes

+
+
Parameters
+

schema – Schema to check for changes

+
+
Returns
+

List of tables with changed contents

+
+
+
+ +
+
+get_pending_changes(schema, table, aggregate=False)
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: tuple with numbers of (added_rows, removed_rows, updated_rows). +If aggregate is False: A changeset. The changeset is a list of +(pk, action (0 for Insert, 1 for Delete, 2 for Update), action_data) +where action_data is None for Delete and &lbrace;‘c’: [column_names], ‘v’: [column_values]&rbrace; that +have been inserted/updated otherwise.

+
+
+
+ +
+
+get_tracked_tables()
+
+
Returns
+

A list of (table_schema, table_name) that the engine currently tracks for changes

+
+
+
+ +
+
+has_pending_changes(schema)
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables)
+

Start engine-specific change tracking on a list of tables.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+
+untrack_tables(tables)
+

Stop engine-specific change tracking on a list of tables and delete any pending changes.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+ +
+
+class splitgraph.engine.ObjectEngine
+

Bases: object

+

Routines for storing/applying objects as well as sharing them with other engines.

+
+
+apply_fragments(objects, target_schema, target_table, extra_quals=None, extra_qual_args=None, schema_spec=None, progress_every: Optional[int] = None)
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids)
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects, remote_engine)
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id, stream, schema)
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+get_object_schema(object_id)
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id)
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+store_fragment(inserted, deleted, schema, table, source_schema, source_table, source_schema_spec)
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args: Optional[Sequence[Any]], overwrite: bool)
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+upload_objects(objects, remote_engine)
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.ResultShape(value)
+

Bases: enum.Enum

+

Shape that the result of a query will be coerced to

+
+
+MANY_MANY = 4
+
+ +
+
+MANY_ONE = 3
+
+ +
+
+NONE = 0
+
+ +
+
+ONE_MANY = 2
+
+ +
+
+ONE_ONE = 1
+
+ +
+ +
+
+class splitgraph.engine.SQLEngine
+

Bases: abc.ABC

+

Abstraction for a Splitgraph SQL backend. Requires any overriding classes to implement run_sql as well as +a few other functions. Together with the information_schema (part of the SQL standard), this class uses those +functions to implement some basic database management methods like listing, deleting, creating, dumping +and loading tables.

+
+
+close()
+

Commit and close the engine’s backing connection

+
+ +
+
+commit()
+

Commit the engine’s backing connection

+
+ +
+
+copy_table(source_schema: str, source_table: str, target_schema: str, target_table: str, with_pk_constraints: bool = True)None
+

Copy a table in the same engine, optionally applying primary key constraints as well.

+
+ +
+
+create_schema(schema: str)None
+

Create a schema if it doesn’t exist

+
+ +
+
+create_table(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False)None
+

Creates a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
+
+ +
+
+delete_schema(schema: str)None
+

Delete a schema if it exists, including all the tables in it.

+
+ +
+
+delete_table(schema: str, table: str)None
+

Drop a table from a schema if it exists

+
+ +
+
+static dump_table_creation(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False)Tuple[psycopg2.sql.Composed, Tuple]
+

Dumps the DDL for a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
Returns
+

An SQL statement that reconstructs the table schema + args to be mogrified into it.

+
+
+
+ +
+
+dump_table_sql(schema, table_name, stream, columns='*', where='', where_args=None, target_schema=None, target_table=None)
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_all_tables(schema: str)List[str]
+

Get all tables in a given schema.

+
+ +
+
+get_full_table_schema(schema: str, table_name: str)List[splitgraph.core.types.TableColumn]
+

Generates a list of (column ordinal, name, data type, is_pk, column comment), +used to detect schema changes like columns being dropped/added/renamed or type changes.

+

NB this doesn’t work for temporary tables (pg_temp) and returns an empty schema.

+
+ +
+
+get_primary_keys(schema, table)
+

Get a list of (column_name, column_type) denoting the primary keys of a given table.

+
+ +
+
+get_table_type(schema: str, table: str)Optional[str]
+

Get the type of the table (BASE or FOREIGN)

+
+ +
+
+initialize()
+

Does any required initialization of the engine

+
+ +
+
+lock_table(schema, table)
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback()
+

Rollback the engine’s backing connection

+
+ +
+
+run_sql(statement, arguments=None, return_shape=<ResultShape.MANY_MANY: 4>, named=False)
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement, arguments, schema=None)
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+run_sql_in(schema: str, sql: Union[psycopg2.sql.Composed, str], arguments: None = None, return_shape: splitgraph.engine.ResultShape = <ResultShape.MANY_MANY: 4>)Any
+

Executes a non-schema-qualified query against a specific schema.

+
+
Parameters
+
    +
  • schema – Schema to run the query in

  • +
  • sql – Query

  • +
  • arguments – Query arguments

  • +
  • return_shape – ReturnShape to coerce the result into.

  • +
+
+
+
+ +
+
+savepoint(name: str)Iterator[None]
+

At the beginning of this context manager, a savepoint is initialized and any database +error that occurs in run_sql results in a rollback to this savepoint rather than the +rollback of the whole transaction. At exit, the savepoint is released.

+
+ +
+
+schema_exists(schema: str)bool
+

Check if a schema exists on the engine.

+
+
Parameters
+

schema – Schema name

+
+
+
+ +
+
+table_exists(schema: str, table_name: str)bool
+

Check if a table exists on the engine.

+
+
Parameters
+
    +
  • schema – Schema name

  • +
  • table_name – Table name

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.SavepointStack
+

Bases: _thread._local

+
+ +
+
+splitgraph.engine.get_engine(name: Optional[str] = None, use_socket: bool = False, use_fdw_params: bool = False, autocommit: bool = False)PostgresEngine
+

Get the current global engine or a named remote engine

+
+
Parameters
+
    +
  • name – Name of the remote engine as specified in the config. If None, the current global engine +is returned.

  • +
  • use_socket – Use a local UNIX socket instead of PG_HOST, PG_PORT for LOCAL engine connections.

  • +
  • use_fdw_params – Use the _FDW connection parameters (SG_ENGINE_FDW_HOST/PORT). By default, +will infer from the global splitgraph.config.IN_FDW flag.

  • +
  • autocommit – If True, the engine will not open SQL transactions implicitly.

  • +
+
+
+
+ +
+
+splitgraph.engine.set_engine(engine: PostgresEngine)None
+

Switch the global engine to a different one.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.switch_engine(engine: PostgresEngine)Iterator[None]
+

Switch the global engine to a different one. The engine will +get switched back on exit from the context manager.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.validate_type(t: str)str
+
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.engine.postgres.mdx b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.engine.postgres.mdx new file mode 100644 index 00000000..40133912 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.engine.postgres.mdx @@ -0,0 +1,456 @@ + + + +export const meta = { + title: "splitgraph.engine.postgres package", + id: "splitgraph.engine.postgres package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.engine.postgres.engine module

+

Default Splitgraph engine: uses PostgreSQL to store metadata and actual objects and an audit stored procedure +to track changes, as well as the Postgres FDW interface to upload/download objects to/from other Postgres engines.

+
+
+class splitgraph.engine.postgres.engine.AuditTriggerChangeEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.PsycopgEngine, splitgraph.engine.ChangeEngine

+

Change tracking based on an audit trigger stored procedure

+
+
+discard_pending_changes(schema: str, table: Optional[str] = None)None
+

Discard recorded pending changes for a tracked schema / table

+
+ +
+
+get_changed_tables(schema: str)List[str]
+

Get list of tables that have changed content

+
+ +
+
+get_pending_changes(schema: str, table: str, aggregate: bool = False)Union[List[Tuple[int, int]], List[Tuple[Tuple[str, ], bool, Dict[str, Any], Dict[str, Any]]]]
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: List of tuples of (change_type, number of rows). +If aggregate is False: List of (primary_key, change_type, change_data)

+
+
+
+ +
+
+get_tracked_tables()List[Tuple[str, str]]
+

Return a list of tables that the audit trigger is working on.

+
+ +
+
+has_pending_changes(schema: str)bool
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables: List[Tuple[str, str]])None
+

Install the audit trigger on the required tables

+
+ +
+
+untrack_tables(tables: List[Tuple[str, str]])None
+

Remove triggers from tables and delete their pending changes

+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PostgresEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.AuditTriggerChangeEngine, splitgraph.engine.ObjectEngine

+

An implementation of the Postgres engine for Splitgraph

+
+
+apply_fragments(objects: List[Tuple[str, str]], target_schema: str, target_table: str, extra_quals: Optional[psycopg2.sql.Composed] = None, extra_qual_args: Optional[Tuple[str]] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, progress_every: Optional[int] = None)None
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids: List[str])None
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine)List[str]
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id: str, stream: _io.TextIOWrapper, schema: str)None
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+dump_object_creation(object_id: str, schema: str, table: Optional[str] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, if_not_exists: bool = False)bytes
+

Generate the SQL that remounts a foreign table pointing to a Splitgraph object.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • schema – Schema to create the table in

  • +
  • table – Name of the table to mount

  • +
  • schema_spec – Schema of the table

  • +
  • if_not_exists – Add IF NOT EXISTS to the DDL

  • +
+
+
Returns
+

SQL in bytes format.

+
+
+
+ +
+
+get_change_key(schema: str, table: str)List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_object_schema(object_id: str)List[splitgraph.core.types.TableColumn]
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id: str)int
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+mount_object(object_id: str, table: None = None, schema: str = 'splitgraph_meta', schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None)None
+

Mount an object from local storage as a foreign table.

+
+
Parameters
+
    +
  • object_id – ID of the object

  • +
  • table – Table to mount the object into

  • +
  • schema – Schema to mount the object into

  • +
  • schema_spec – Schema of the object.

  • +
+
+
+
+ +
+
+rename_object(old_object_id: str, new_object_id: str)
+
+ +
+
+store_fragment(inserted: Any, deleted: Any, schema: str, table: str, source_schema: str, source_table: str, source_schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None)None
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args=None, overwrite=False)None
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+sync_object_mounts()None
+

Scan through local object storage and synchronize it with the foreign tables in +splitgraph_meta (unmounting non-existing objects and mounting existing ones).

+
+ +
+
+unmount_objects(object_ids: List[str])None
+

Unmount objects from splitgraph_meta (this doesn’t delete the physical files.

+
+ +
+
+upload_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine)None
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PsycopgEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.SQLEngine

+

Postgres SQL engine backed by a Psycopg connection.

+
+
+close()None
+

Commit and close the engine’s backing connection

+
+ +
+
+close_others()None
+

Close and release all other connections to the connection pool.

+
+ +
+
+commit()None
+

Commit the engine’s backing connection

+
+ +
+
+property connection
+

Engine-internal Psycopg connection.

+
+ +
+
+copy_cursor()
+

Return a cursor that can be used for copy_expert operations

+
+ +
+
+delete_database(database: str)None
+

Helper function to drop a database using the admin connection

+
+
Parameters
+

database – Database name to drop

+
+
+
+ +
+
+dump_table_sql(schema: str, table_name: str, stream: _io.TextIOWrapper, columns: str = '*', where: str = '', where_args: Optional[Union[List[str], Tuple[str, str]]] = None, target_schema: Optional[str] = None, target_table: Optional[str] = None)None
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_primary_keys(schema: str, table: str)List[Tuple[str, str]]
+

Inspects the Postgres information_schema to get the primary keys for a given table.

+
+ +
+
+in_fdw
+

List of notices issued by the server during the previous execution of run_sql.

+
+ +
+
+initialize(skip_object_handling: bool = False, skip_create_database: bool = False)None
+

Create the Splitgraph Postgres database and install the audit trigger

+
+
Parameters
+
    +
  • skip_object_handling – If True, skips installation of +audit triggers and other object management routines for engines +that don’t need change tracking or checkouts.

  • +
  • skip_create_database – Don’t create the Splitgraph database

  • +
+
+
+
+ +
+
+lock_table(schema: str, table: str)None
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback()None
+

Rollback the engine’s backing connection

+
+ +
+
+run_api_call(call: str, *args, schema: str = 'splitgraph_api')Any
+
+ +
+
+run_api_call_batch(call: str, argslist, schema: str = 'splitgraph_api')
+
+ +
+
+run_chunked_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Sequence[Any], return_shape: Optional[splitgraph.engine.ResultShape] = <ResultShape.MANY_MANY: 4>, chunk_size: int = 1000, chunk_position: int = -1)Any
+

Because the Splitgraph API has a request size limitation, certain +SQL calls with variadic arguments are going to be too long to fit that. This function +runs an SQL query against a set of broken up arguments and returns the combined result.

+
+ +
+
+run_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Optional[Sequence[Any]] = None, return_shape: Optional[splitgraph.engine.ResultShape] = <ResultShape.MANY_MANY: 4>, named: bool = False)Any
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement: Union[psycopg2.sql.Composed, str], arguments: Any, schema: Optional[str] = None, max_size=261000)None
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+property splitgraph_version
+

Returns the version of the Splitgraph library installed on the engine +and by association the version of the engine itself.

+
+ +
+ +
+
+splitgraph.engine.postgres.engine.add_ud_flag_column(table_schema: List[splitgraph.core.types.TableColumn])List[splitgraph.core.types.TableColumn]
+
+ +
+
+splitgraph.engine.postgres.engine.chunk(sequence: Sequence[T], chunk_size: int = 1000)Iterator[List[T]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_change_key(schema_spec: List[splitgraph.core.types.TableColumn])List[Tuple[str, str]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_conn_str(conn_params: Dict[str, str])str
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.hooks.data_source.mdx b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.hooks.data_source.mdx new file mode 100644 index 00000000..9a7959f6 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.hooks.data_source.mdx @@ -0,0 +1,565 @@ + + + +export const meta = { + title: "splitgraph.hooks.data_source package", + id: "splitgraph.hooks.data_source package" +}; + +
+

Module contents

+
+
+splitgraph.hooks.data_source.get_data_source(data_source: str)Type[splitgraph.hooks.data_source.base.DataSource]
+

Returns a class for a given data source

+
+ +
+
+splitgraph.hooks.data_source.get_data_sources()List[str]
+

Returns the names of all registered data sources.

+
+ +
+
+splitgraph.hooks.data_source.register_data_source(name: str, data_source_class: Type[splitgraph.hooks.data_source.base.DataSource])None
+

Returns a data source under a given name.

+
+ +
+ +
+

Submodules

+
+
+

splitgraph.hooks.data_source.base module

+
+
+class splitgraph.hooks.data_source.base.DataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+abstract classmethod get_description()str
+
+ +
+
+abstract classmethod get_name()str
+
+ +
+
+abstract introspect()IntrospectionResult
+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_load = False
+
+ +
+
+supports_mount = False
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any]
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.LoadableDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+load(repository: Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)str
+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_load = True
+
+ +
+
+table_params_schema: Dict[str, Any]
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.MountableDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+abstract mount(schema: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, overwrite: bool = True)Optional[List[splitgraph.core.types.MountError]]
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_mount = True
+
+ +
+
+table_params_schema: Dict[str, Any]
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.SyncableDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.LoadableDataSource, splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+supports_load = True
+
+ +
+
+supports_sync = True
+
+ +
+
+sync(repository: Repository, image_hash: Optional[str], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)str
+
+ +
+
+table_params_schema: Dict[str, Any]
+
+ +
+ +
+
+splitgraph.hooks.data_source.base.get_ingestion_state(repository: Repository, image_hash: Optional[str])Optional[SyncState]
+
+ +
+
+splitgraph.hooks.data_source.base.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.hooks.data_source.base.prepare_new_image(repository: Repository, hash_or_tag: Optional[str])Tuple[Optional[splitgraph.core.image.Image], str]
+
+ +
+
+

splitgraph.hooks.data_source.fdw module

+
+
+class splitgraph.hooks.data_source.fdw.ElasticSearchDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount an ElasticSearch instance.\n\nMount a set of tables proxying to a remote ElasticSearch index.\n\nThis uses a fork of postgres-elasticsearch-fdw behind the scenes. You can add a column\n`query` to your table and set it as `query_column` to pass advanced ES queries and aggregations.\nFor example:\n\n```\nsgr mount elasticsearch target_schema -c elasticsearch:9200 -o@- <<EOF\n    &lbrace;\n      "tables": &lbrace;\n        "table_1": &lbrace;\n          "schema": &lbrace;\n            "id": "text",\n            "@timestamp": "timestamp",\n            "query": "text",\n            "col_1": "text",\n            "col_2": "boolean"\n          &rbrace;,\n          "options": &lbrace;\n              "index": "index-pattern*",\n              "rowid_column": "id",\n              "query_column": "query"\n          &rbrace;\n        &rbrace;\n      &rbrace;\n    &rbrace;\nEOF\n```\n'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': ['string', 'null']&rbrace;, 'username': &lbrace;'type': ['string', 'null']&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'index': &lbrace;'description': 'ES index name or pattern to use, for example, "events-*"', 'type': 'string'&rbrace;, 'query_column': &lbrace;'description': 'Name of the column to use to pass queries in', 'type': 'string'&rbrace;, 'score_column': &lbrace;'description': 'Name of the column with the document score', 'type': 'string'&rbrace;, 'scroll_duration': &lbrace;'description': 'How long to hold the scroll context open for, default 10m', 'type': 'string'&rbrace;, 'scroll_size': &lbrace;'description': 'Fetch size, default 1000', 'type': 'integer'&rbrace;, 'type': &lbrace;'description': 'Pre-ES7 doc_type, not required in ES7 or later', 'type': 'string'&rbrace;&rbrace;, 'required': ['index'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.MountableDataSource, splitgraph.hooks.data_source.base.LoadableDataSource, abc.ABC

+
+
+commandline_help: str = ''
+
+ +
+
+commandline_kwargs_help: str = ''
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs)splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+abstract get_fdw_name()
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()Mapping[str, str]
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)Dict[str, str]
+
+ +
+
+get_table_schema(table_name: str, table_schema: List[splitgraph.core.types.TableColumn])List[splitgraph.core.types.TableColumn]
+
+ +
+
+get_user_options()Mapping[str, str]
+
+ +
+
+introspect()IntrospectionResult
+
+ +
+
+mount(schema: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, overwrite: bool = True)Optional[List[splitgraph.core.types.MountError]]
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+preview(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]])PreviewResult
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MongoDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Mongo database.\n\nMounts one or more collections on a remote Mongo database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'tables: A dictionary of form\n```\n&lbrace;\n    "table_name": &lbrace;\n        "schema": &lbrace;"col1": "type1"...&rbrace;,\n        "options": &lbrace;"database": <dbname>, "collection": <collection>&rbrace; \n    &rbrace; \n&rbrace;\n```\n'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_server_options()
+
+ +
+
+get_table_schema(table_name, table_schema)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'collection': &lbrace;'type': 'string'&rbrace;, 'database': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['database', 'collection'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MySQLDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a MySQL database.\n\nMounts a schema on a remote MySQL database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'dbname: Remote MySQL database name (required)\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n        '
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'type': 'string'&rbrace;, 'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.PostgreSQLDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Postgres database.\n\nMounts a schema on a remote Postgres database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'dbname: Database name (required)\nremote_schema: Remote schema name (required)\nextra_server_args: Dictionary of extra arguments to pass to the foreign server\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n    '
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'description': 'Database name', 'type': 'string'&rbrace;, 'host': &lbrace;'description': 'Remote hostname', 'type': 'string'&rbrace;, 'port': &lbrace;'description': 'Port', 'type': 'integer'&rbrace;, 'remote_schema': &lbrace;'description': 'Remote schema name', 'type': 'string'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname', 'remote_schema'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.hooks.data_source.fdw.create_foreign_table(schema: str, server: str, table_name: str, schema_spec: List[splitgraph.core.types.TableColumn], extra_options: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.hooks.data_source.fdw.import_foreign_schema(engine: PostgresEngine, mountpoint: str, remote_schema: str, server_id: str, tables: List[str], options: Optional[Dict[str, str]] = None)List[splitgraph.core.types.MountError]
+
+ +
+
+splitgraph.hooks.data_source.fdw.init_fdw(engine: PostgresEngine, server_id: str, wrapper: str, server_options: Optional[Mapping[str, Optional[str]]] = None, user_options: Optional[Mapping[str, str]] = None, overwrite: bool = True)None
+

Sets up a foreign data server on the engine.

+
+
Parameters
+
    +
  • engine – PostgresEngine

  • +
  • server_id – Name to call the foreign server, must be unique. Will be deleted if exists.

  • +
  • wrapper – Name of the foreign data wrapper (must be installed as an extension on the engine)

  • +
  • server_options – Dictionary of FDW options

  • +
  • user_options – Dictionary of user options

  • +
  • overwrite – If the server already exists, delete and recreate it.

  • +
+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.hooks.mdx b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.hooks.mdx new file mode 100644 index 00000000..81e40082 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.hooks.mdx @@ -0,0 +1,366 @@ + + + +export const meta = { + title: "splitgraph.hooks package", + id: "splitgraph.hooks package" +}; + +
+

Module contents

+

Various hooks for extending Splitgraph, including:

+
+
    +
  • External object handlers (splitgraph.hooks.external_objects) allowing to download/upload objects +to locations other than the remote Splitgraph engine.

  • +
  • Data sources (splitgraph.hooks.data_sources) that allow to add data to Splitgraph, e.g.

  • +
+
+

using the Postgres engine’s FDW interface to mount other external databases on the engine.

+
+ +
+
+ + +
+

Submodules

+
+
+

splitgraph.hooks.external_objects module

+

Hooks for registering handlers to upload/download objects from external locations into Splitgraph’s cache.

+
+
+class splitgraph.hooks.external_objects.ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: object

+

Framework for allowing to dump objects from the Splitgraph cache to an external location. This allows +the objects to be stored somewhere other than the actual remote engine.

+

External object handlers must extend this class and be registered in the Splitgraph config.

+

For an example of how this can be used, see splitgraph.hooks.s3: it’s a handler allowing objects to be +uploaded to S3/S3-compatible host using the Minio API. It’s registered in the config as follows:

+
[external_handlers]
+S3=splitgraph.hooks.s3.S3ExternalObjectHandler
+
+
+

The protocol and the URLs returned by this handler are stored in splitgraph_meta.external_objects +and used to download the objects back into the Splitgraph cache when they are needed.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine)Sequence[str]
+

Download objects from the external location into the Splitgraph cache.

+
+
Parameters
+
    +
  • objects – List of tuples (object_id, object_url) that this handler had previosly +uploaded the objects to.

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of object IDs that have been successfully downloaded.

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine)Sequence[Tuple[str, str]]
+

Upload objects from the Splitgraph cache to an external location

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of successfully uploaded object IDs and URLs they can be found at.

+
+
+
+ +
+ +
+
+splitgraph.hooks.external_objects.get_external_object_handler(name: str, handler_params: Dict[Any, Any])splitgraph.hooks.external_objects.ExternalObjectHandler
+

Load an external protocol handler by its name, initializing it with optional parameters.

+
+ +
+
+splitgraph.hooks.external_objects.register_upload_download_handler(name: str, handler_class: Callable[[], splitgraph.hooks.external_objects.ExternalObjectHandler])None
+

Register an external protocol handler. See the docstring for get_upload_download_handler for the required +signatures of the handler functions.

+
+ +
+
+

splitgraph.hooks.mount_handlers module

+

Extra wrapper code for mount handlers

+
+
+splitgraph.hooks.mount_handlers.mount(mountpoint: str, mount_handler: str, handler_kwargs: Dict[str, Any], overwrite: bool = True, tables: Optional[TableInfo] = None)None
+

Mounts a foreign database via an FDW (without creating new Splitgraph objects)

+
+
Parameters
+
    +
  • mountpoint – Mountpoint to import the new tables into.

  • +
  • mount_handler – The type of the mounted database.

  • +
  • handler_kwargs – Dictionary of options to pass to the mount handler.

  • +
  • overwrite – Delete the foreign server if it already exists. Used by mount_postgres for data pulls.

  • +
  • tables – List of tables to mount or their schemas

  • +
+
+
+
+ +
+
+splitgraph.hooks.mount_handlers.mount_postgres(mountpoint, **kwargs)None
+

Mount a Postgres database.

+

Mounts a schema on a remote Postgres database as a set of foreign tables locally. +

+
+
Parameters
+
    +
  • mountpoint – Schema to mount the remote into.

  • +
  • server – Database hostname.

  • +
  • port – Port the Postgres server is running on.

  • +
  • username – A read-only user that the database will be accessed as.

  • +
  • password – Password for the read-only user.

  • +
  • dbname – Remote database name.

  • +
  • remote_schema – Remote schema name.

  • +
  • extra_server_args – Dictionary of extra arguments to pass to the foreign server

  • +
  • tables – Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.

  • +
+
+
+

If a dictionary, must have the format &lbrace;“table_name”: &lbrace;“col_1”: “type_1”, …&rbrace;&rbrace;.

+
+ +
+
+

splitgraph.hooks.s3 module

+

Plugin for uploading Splitgraph objects from the cache to an external S3-like object store

+
+
+class splitgraph.hooks.s3.S3ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: splitgraph.hooks.external_objects.ExternalObjectHandler

+

Uploads/downloads the objects to/from S3/S3-compatible host using the Minio client.

+

The handler is “attached” to a given registry which manages issuing pre-signed +GET/PUT URLs.

+

The handler supports a parameter threads specifying the number of threads +used to upload the objects.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine)List[str]
+

Download objects from Minio.

+
+
Parameters
+

objects – List of (object ID, object URL (object ID it’s stored under))

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine)List[Tuple[str, str]]
+

Upload objects to Minio

+
+
Parameters
+
    +
  • remote_engine – Remote Engine class

  • +
  • objects – List of object IDs to upload

  • +
+
+
Returns
+

List of tuples with successfully uploaded objects and their URLs.

+
+
+
+ +
+ +
+
+splitgraph.hooks.s3.get_object_download_urls(remote_engine, remote_object_ids)
+
+ +
+
+splitgraph.hooks.s3.get_object_upload_urls(remote_engine, objects)
+
+ +
+
+

splitgraph.hooks.s3_server module

+

S3 registry-side routines called from the Python stored procedure +that are aware of the actual S3 access creds and generate pre-signed +URLs to upload/download objects.

+
+
+splitgraph.hooks.s3_server.delete_objects(client: minio.api.Minio, object_ids: List[str])None
+

Delete objects stored in Minio

+
+
Parameters
+
    +
  • client – Minio client

  • +
  • object_ids – List of Splitgraph object IDs to delete

  • +
+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_download_urls(s3_host: str, object_ids: List[str])List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_upload_urls(s3_host: str, object_ids: List[str])List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.list_objects(client: minio.api.Minio)List[str]
+

List objects stored in Minio

+
+
Parameters
+

client – Minio client

+
+
Returns
+

List of Splitgraph object IDs

+
+
+
+ +
+
+

splitgraph.hooks.splitfile_commands module

+

A framework for custom Splitfile commands. The execution flow is as follows:

+
+
    +
  • When the Splitfile executor finds an unknown command, it looks for an entry in the config file:

    +
    [commands]
    +RUN=splitgraph.plugins.Run
    +
    +
    +
  • +
  • The command class must extend this class, initialized at every invocation time.

  • +
  • The command’s calc_hash() method is run. The resultant command context hash is combined with the current +image hash to produce the new image hash: if it already exists, then the image is simply checked out.

  • +
  • Otherwise (or if calc_hash is undefined or returns None), execute(), where the actual command should be +implemented, is run. If it returns a hash, this hash is used for the new image. If this hash already exists, +the existing image is checked out instead. If the command returns None, a random hash is generated for the +new image.

  • +
+
+
+
+class splitgraph.hooks.splitfile_commands.PluginCommand
+

Bases: object

+

Base class for custom Splitfile commands.

+
+
+calc_hash(repository, args)
+

Calculates the command context hash for this custom command. If either the command context hash or the +previous image hash has changed, then the image hash produced by this command will change. +Consequently, two commands with the same command context hashes are assumed to have the same effect +on any Splitgraph images.

+

This is supposed to be a lightweight method intended for pre-flight image hash calculations +(without performing the actual transformation). If it returns None, the actual transformation is run anyway.

+

For example, for a command that imports some data from an external URL, this could be the hash of the last +modified timestamp provided by the external data vendor. If the timestamp is unchanged, the data is unchanged +and so actual command won’t be re-executed.

+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits)

+
+
+
+ +
+
+execute(repository, args)
+

Execute the custom command against the target schema, optionally returning the new image hash. The contract +for the command is as follows (though it is not currently enforced by the runtime):

+
+
    +
  • Has to use get_engine().run_sql (or run_sql_batch) to interact with the engine.

  • +
  • Can only write to the schema with the checked-out repository (run_sql runs non-schema-qualified +statements against the correct schema).

  • +
  • Can inspect splitgraph_meta (e.g. to find the current HEAD) for the repository.

  • +
  • Can’t alter the versioning of the repository.

  • +
+
+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits). If calc_hash() had previously returned +a hash, this hash is ignored. If both this command and calc_hash() return None, the hash is randomly +generated.

+
+
+
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.ingestion.csv.mdx b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.ingestion.csv.mdx new file mode 100644 index 00000000..dc17b79e --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.ingestion.csv.mdx @@ -0,0 +1,283 @@ + + + +export const meta = { + title: "splitgraph.ingestion.csv package", + id: "splitgraph.ingestion.csv package" +}; + +
+

Module contents

+
+
+class splitgraph.ingestion.csv.CSVDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount CSV files in S3/HTTP.\n\nIf passed an URL, this will live query a CSV file on an HTTP server. If passed\nS3 access credentials, this will scan a bucket for CSV files, infer their schema\nand make them available to query over SQL.  \n\nFor example:  \n\n\x08\n```\nsgr mount csv target_schema -o@- <<EOF\n  &lbrace;\n    "s3_endpoint": "cdn.mycompany.com:9000",\n    "s3_access_key": "ABCDEF",\n    "s3_secret_key": "GHIJKL",\n    "s3_bucket": "data",\n    "s3_object_prefix": "csv_files/current/",\n    "autodetect_header": true,\n    "autodetect_dialect": true,\n    "autodetect_encoding": true\n  &rbrace;\nEOF\n```\n'
+
+ +
+
+commandline_kwargs_help: str = "s3_access_key:\ns3_secret_key:\nurl: HTTP URL to the CSV file.\ns3_endpoint: S3 endpoint (including port if required).\ns3_region: Region of the S3 bucket.\ns3_secure: Whether to use HTTPS for S3 access.\ns3_bucket: Bucket the object is in.\ns3_object: Limit the import to a single object.\ns3_object_prefix: Prefix for object in S3 bucket.\nautodetect_header: Detect whether the CSV file has a header automatically.\nautodetect_dialect: Detect the CSV file's dialect (separator, quoting characters etc) automatically.\nautodetect_encoding: Detect the CSV file's encoding automatically.\nautodetect_sample_size: Sample size, in bytes, for encoding/dialect/header detection.\nschema_inference_rows: Number of rows to use for schema inference.\nencoding: Encoding of the CSV file.\nignore_decode_errors: Ignore errors when decoding the file.\nheader: First line of the CSV file is its header.\ndelimiter: Character used to separate fields in the file.\nquotechar: Character used to quote fields."
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'s3_access_key': &lbrace;'type': 'string'&rbrace;, 's3_secret_key': &lbrace;'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs)splitgraph.ingestion.csv.CSVDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)Dict[str, str]
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'oneOf': [&lbrace;'required': ['url']&rbrace;, &lbrace;'required': ['s3_endpoint', 's3_bucket']&rbrace;], 'properties': &lbrace;'autodetect_dialect': &lbrace;'description': "Detect the CSV file's dialect (separator, quoting characters etc) automatically", 'type': 'boolean'&rbrace;, 'autodetect_encoding': &lbrace;'description': "Detect the CSV file's encoding automatically", 'type': 'boolean'&rbrace;, 'autodetect_header': &lbrace;'description': 'Detect whether the CSV file has a header automatically', 'type': 'boolean'&rbrace;, 'autodetect_sample_size': &lbrace;'description': 'Sample size, in bytes, for encoding/dialect/header detection', 'type': 'integer'&rbrace;, 'delimiter': &lbrace;'description': 'Character used to separate fields in the file', 'type': 'string'&rbrace;, 'encoding': &lbrace;'description': 'Encoding of the CSV file', 'type': 'string'&rbrace;, 'header': &lbrace;'description': 'First line of the CSV file is its header', 'type': 'boolean'&rbrace;, 'ignore_decode_errors': &lbrace;'description': 'Ignore errors when decoding the file', 'type': 'boolean'&rbrace;, 'quotechar': &lbrace;'description': 'Character used to quote fields', 'type': 'string'&rbrace;, 's3_bucket': &lbrace;'description': 'Bucket the object is in', 'type': 'string'&rbrace;, 's3_endpoint': &lbrace;'description': 'S3 endpoint (including port if required)', 'type': 'string'&rbrace;, 's3_object': &lbrace;'description': 'Limit the import to a single object', 'type': 'string'&rbrace;, 's3_object_prefix': &lbrace;'description': 'Prefix for object in S3 bucket', 'type': 'string'&rbrace;, 's3_region': &lbrace;'description': 'Region of the S3 bucket', 'type': 'string'&rbrace;, 's3_secure': &lbrace;'description': 'Whether to use HTTPS for S3 access', 'type': 'boolean'&rbrace;, 'schema_inference_rows': &lbrace;'description': 'Number of rows to use for schema inference', 'type': 'integer'&rbrace;, 'url': &lbrace;'description': 'HTTP URL to the CSV file', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'s3_object': &lbrace;'description': 'S3 object of the CSV file', 'type': 'string'&rbrace;, 'url': &lbrace;'description': 'HTTP URL to the CSV file', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.ingestion.csv.CSVIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.csv.copy_csv_buffer(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = False, **kwargs)
+

Copy CSV data from a buffer into a given schema/table

+
+ +
+
+splitgraph.ingestion.csv.query_to_csv(engine: PsycopgEngine, query, buffer, schema: Optional[str] = None)
+
+ +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.csv.common module

+
+
+class splitgraph.ingestion.csv.common.CSVOptions(autodetect_header, autodetect_dialect, autodetect_encoding, autodetect_sample_size, schema_inference_rows, delimiter, quotechar, header, encoding, ignore_decode_errors)
+

Bases: tuple

+
+
+property autodetect_dialect
+

Alias for field number 1

+
+ +
+
+property autodetect_encoding
+

Alias for field number 2

+
+ +
+
+property autodetect_header
+

Alias for field number 0

+
+ +
+
+property autodetect_sample_size
+

Alias for field number 3

+
+ +
+
+property delimiter
+

Alias for field number 5

+
+ +
+
+property encoding
+

Alias for field number 8

+
+ +
+
+classmethod from_fdw_options(fdw_options)
+
+ +
+
+property header
+

Alias for field number 7

+
+ +
+
+property ignore_decode_errors
+

Alias for field number 9

+
+ +
+
+property quotechar
+

Alias for field number 6

+
+ +
+
+property schema_inference_rows
+

Alias for field number 4

+
+ +
+
+to_csv_kwargs()
+
+ +
+
+to_table_options()
+

Turn this into a dict of table options that can be plugged back into CSVDataSource.

+
+ +
+ +
+
+splitgraph.ingestion.csv.common.autodetect_csv(stream: io.RawIOBase, csv_options: splitgraph.ingestion.csv.common.CSVOptions)splitgraph.ingestion.csv.common.CSVOptions
+

Autodetect the CSV dialect, encoding, header etc.

+
+ +
+
+splitgraph.ingestion.csv.common.bool_to_str(boolean: bool)str
+
+ +
+
+splitgraph.ingestion.csv.common.get_bool(params: Dict[str, Any], key: str, default: bool = True)bool
+
+ +
+
+splitgraph.ingestion.csv.common.make_csv_reader(response: io.IOBase, csv_options: splitgraph.ingestion.csv.common.CSVOptions)Tuple[splitgraph.ingestion.csv.common.CSVOptions, _csv._reader]
+
+ +
+
+

splitgraph.ingestion.csv.fdw module

+
+
+class splitgraph.ingestion.csv.fdw.CSVForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+

Foreign data wrapper for CSV files stored in S3 buckets or HTTP

+
+
+can_sort(sortkeys)
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+
+ +
+
+classmethod import_schema(schema, srv_options, options, restriction_type, restricts)
+
+ +
+ +
+
+splitgraph.ingestion.csv.fdw.report_errors(table_name: str)
+

Context manager that ignores exceptions and serializes them to JSON using PG’s notice +mechanism instead. The data source is meant to load these to report on partial failures +(e.g. failed to load one table, but not others).

+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.ingestion.mdx b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.ingestion.mdx new file mode 100644 index 00000000..5aa00aae --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.ingestion.mdx @@ -0,0 +1,204 @@ + + + +export const meta = { + title: "splitgraph.ingestion package", + id: "splitgraph.ingestion package" +}; + +
+

Module contents

+
+ + +
+

Submodules

+
+
+

splitgraph.ingestion.common module

+
+
+class splitgraph.ingestion.common.IngestionAdapter
+

Bases: object

+
+
+abstract create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+abstract data_to_new_table(data, engine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+abstract query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+
+to_data(query: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)
+
+ +
+
+to_table(data, repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True, no_header: bool = False, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.common.build_commandline_help(json_schema)
+
+ +
+
+splitgraph.ingestion.common.dedupe_sg_schema(schema_spec: List[splitgraph.core.types.TableColumn], prefix_len: int = 59)List[splitgraph.core.types.TableColumn]
+

Some foreign schemas have columns that are longer than 63 characters +where the first 63 characters are the same between several columns +(e.g. odn.data.socrata.com). This routine renames columns in a schema +to make sure this can’t happen (by giving duplicates a number suffix).

+
+ +
+
+splitgraph.ingestion.common.generate_column_names(schema_spec: List[splitgraph.core.types.TableColumn], prefix: str = 'col_')List[splitgraph.core.types.TableColumn]
+

Replace empty column names with autogenerated ones

+
+ +
+
+splitgraph.ingestion.common.merge_tables(engine: splitgraph.engine.postgres.engine.PsycopgEngine, source_schema: str, source_table: str, source_schema_spec: List[splitgraph.core.types.TableColumn], target_schema: str, target_table: str, target_schema_spec: List[splitgraph.core.types.TableColumn])
+
+ +
+
+splitgraph.ingestion.common.schema_compatible(source_schema: List[splitgraph.core.types.TableColumn], target_schema: List[splitgraph.core.types.TableColumn])bool
+

Quick check to see if a dataframe with target_schema can be written into source_schema. +There are some implicit type conversions that SQLAlchemy/Pandas can do so we don’t want to immediately fail +if the column types aren’t exactly the same (eg bigint vs numeric etc). Most errors should be caught by PG itself.

+

Schema is a list of (ordinal, name, type, is_pk).

+
+ +
+
+

splitgraph.ingestion.inference module

+
+
+splitgraph.ingestion.inference.infer_sg_schema(sample: List[Tuple[str, ]], override_types: Optional[Dict[str, str]] = None, primary_keys: Optional[List[str]] = None)
+
+ +
+
+splitgraph.ingestion.inference.parse_bigint(integer: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_boolean(boolean: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_int(integer: str)
+
+ +
+
+

splitgraph.ingestion.pandas module

+

Routines that ingest/export CSV files to/from Splitgraph images using Pandas

+
+
+class splitgraph.ingestion.pandas.PandasIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.pandas.df_to_table(df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True)None
+

Writes a Pandas DataFrame to a checked-out Splitgraph table. Doesn’t create a new image.

+
+
Parameters
+
    +
  • df – Pandas DataFrame to insert.

  • +
  • repository – Splitgraph Repository object. Must be checked out.

  • +
  • table – Table name.

  • +
  • if_exists – Behaviour if the table already exists: ‘patch’ means that primary keys that already exist in the

  • +
+
+
+

table will be updated and ones that don’t will be inserted. ‘replace’ means that the table will be dropped and +recreated. +:param schema_check: If False, skips checking that the dataframe is compatible with the target schema.

+
+ +
+
+splitgraph.ingestion.pandas.df_to_table_fast(engine: PsycopgEngine, df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], target_schema: str, target_table: str)
+
+ +
+
+splitgraph.ingestion.pandas.sql_to_df(sql: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)pandas.core.frame.DataFrame
+

Executes an SQL query against a Splitgraph image, returning the result.

+

Extra **kwargs are passed to Pandas’ read_sql_query.

+
+
Parameters
+
    +
  • sql – SQL query to execute.

  • +
  • image – Image object, image hash/tag (str) or None (use the currently checked out image).

  • +
  • repository – Repository the image belongs to. Must be set if image is a hash/tag or None.

  • +
  • use_lq – Whether to use layered querying or check out the image if it’s not checked out.

  • +
+
+
Returns
+

A Pandas dataframe.

+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.ingestion.snowflake.mdx b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.ingestion.snowflake.mdx new file mode 100644 index 00000000..77ee90be --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.ingestion.snowflake.mdx @@ -0,0 +1,92 @@ + + + +export const meta = { + title: "splitgraph.ingestion.snowflake package", + id: "splitgraph.ingestion.snowflake package" +}; + +
+

Module contents

+
+
+class splitgraph.ingestion.snowflake.SnowflakeDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Snowflake database.\n\nThis will mount a remote Snowflake schema or a table. You can also get a mounted table to point to the result of a subquery that will be executed on the Snowflake instance. For example:\n\n\x08\n```\n$ sgr mount snowflake test_snowflake -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "password": "password",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "schema": "TPCH_SF100"\n    "envvars": &lbrace;"HTTPS_PROXY": "http://proxy.company.com"&rbrace;\n&rbrace;\nEOF\n\x08\n$ sgr mount snowflake test_snowflake_subquery -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "private_key": "MIIEvQIBAD...",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "tables": &lbrace;\n        "balances": &lbrace;\n            "schema": &lbrace;\n                "n_nation": "varchar",\n                "segment": "varchar",\n                "avg_balance": "numeric"\n            &rbrace;,\n            "options": &lbrace;\n                "subquery": "SELECT n_nation AS nation, c_mktsegment AS segment, AVG(c_acctbal) AS avg_balance FROM TPCH_SF100.customer c JOIN TPCH_SF100.nation n ON c_nationkey = n_nationkey"\n            &rbrace;\n        &rbrace;\n    &rbrace;\n&rbrace;\nEOF\n```\n    '
+
+ +
+
+commandline_kwargs_help: str = "username: Username. Required.\npassword: Password.\naccount: Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html. Required.\nprivate_key: Private key in PEM format.\ndatabase: Snowflake database name. Required.\nschema: Snowflake schema.\nwarehouse: Warehouse name.\nrole: Role.\nbatch_size: Default fetch size for remote queries.\nenvvars: Environment variables to set on the engine side.\nThe schema parameter is required when subquery isn't used."
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'oneOf': [&lbrace;'required': ['password']&rbrace;, &lbrace;'required': ['private_key']&rbrace;], 'properties': &lbrace;'account': &lbrace;'description': 'Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html', 'type': 'string'&rbrace;, 'password': &lbrace;'description': 'Password', 'type': 'string'&rbrace;, 'private_key': &lbrace;'description': 'Private key in PEM format', 'type': 'string'&rbrace;, 'username': &lbrace;'description': 'Username', 'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'account'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_remote_schema_name()str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)Dict[str, str]
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'description': 'Default fetch size for remote queries', 'type': 'integer'&rbrace;, 'database': &lbrace;'description': 'Snowflake database name', 'type': 'string'&rbrace;, 'envvars': &lbrace;'description': 'Environment variables to set on the engine side', 'type': 'object'&rbrace;, 'role': &lbrace;'description': 'Role', 'type': 'string'&rbrace;, 'schema': &lbrace;'description': 'Snowflake schema', 'type': 'string'&rbrace;, 'warehouse': &lbrace;'description': 'Warehouse name', 'type': 'string'&rbrace;&rbrace;, 'required': ['database'], 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'subquery': &lbrace;'description': 'Subquery for this table to run on the server side', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.ingestion.socrata.mdx b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.ingestion.socrata.mdx new file mode 100644 index 00000000..895858bf --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.ingestion.socrata.mdx @@ -0,0 +1,171 @@ + + + +export const meta = { + title: "splitgraph.ingestion.socrata package", + id: "splitgraph.ingestion.socrata package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.ingestion.socrata.fdw module

+

Module imported by Multicorn on the Splitgraph engine server: a foreign data wrapper +that communicates to Socrata datasets using sodapy.

+
+
+class splitgraph.ingestion.socrata.fdw.SocrataForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+
+
+can_sort(sortkeys)
+
+
Parameters
+

sortkeys – List of SortKey

+
+
Returns
+

List of SortKey the FDW can sort on

+
+
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+

Method called from the planner to estimate the resulting relation +size for a scan. +It will help the planner in deciding between different types of plans, +according to their costs. +Args:

+
+
+
quals (list): A list of Qual instances describing the filters

applied to this scan.

+
+
+

columns (list): The list of columns that must be returned.

+
+
+
Returns:

A tuple of the form (expected_number_of_rows, avg_row_width (in bytes))

+
+
+
+ +
+
+property table_meta
+
+ +
+ +
+
+splitgraph.ingestion.socrata.fdw.to_json(row, columns, column_map)
+
+ +
+
+

splitgraph.ingestion.socrata.mount module

+

Splitgraph mount handler for Socrata datasets

+
+
+class splitgraph.ingestion.socrata.mount.SocrataDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'app_token': &lbrace;'description': 'Socrata app token, optional', 'type': ['string', 'null']&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs)splitgraph.ingestion.socrata.mount.SocrataDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description()str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name()str
+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'description': 'Amount of rows to fetch from Socrata per request (limit parameter). Maximum 50000.', 'type': 'integer'&rbrace;, 'domain': &lbrace;'description': 'Socrata domain, for example, data.albanyny.gov', 'type': 'string'&rbrace;&rbrace;, 'required': ['domain'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'socrata_id': &lbrace;'description': 'Socrata dataset ID, e.g. xzkq-xp2w', 'type': 'string'&rbrace;&rbrace;, 'required': ['socrata_id'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.ingestion.socrata.mount.generate_socrata_mount_queries(sought_ids, datasets, mountpoint, server_id, tables: Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]])
+
+ +
+
+

splitgraph.ingestion.socrata.querying module

+
+
+splitgraph.ingestion.socrata.querying.cols_to_socrata(cols, column_map: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.ingestion.socrata.querying.estimate_socrata_rows_width(columns, metadata, column_map=None)
+

Estimate number of rows required for a query and each row’s width +from the table metadata.

+
+ +
+
+splitgraph.ingestion.socrata.querying.quals_to_socrata(quals, column_map: Optional[Dict[str, str]] = None)
+

Convert a list of Multicorn quals to a SoQL query

+
+ +
+
+splitgraph.ingestion.socrata.querying.socrata_to_sg_schema(metadata: Dict[str, Any])Tuple[List[splitgraph.core.types.TableColumn], Dict[str, str]]
+
+ +
+
+splitgraph.ingestion.socrata.querying.sortkeys_to_socrata(sortkeys, column_map: Optional[Dict[str, str]] = None)
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.mdx b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.mdx new file mode 100644 index 00000000..cc9abd92 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.mdx @@ -0,0 +1,343 @@ + + + +export const meta = { + title: "splitgraph package", + id: "splitgraph package" +}; + +
+

Module contents

+
+ +
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

splitgraph.exceptions module

+

Exceptions that can be raised by the Splitgraph library.

+
+
+exception splitgraph.exceptions.APICompatibilityError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions related to API incompatibilities

+
+ +
+
+exception splitgraph.exceptions.AuthAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by the Auth API

+
+ +
+
+exception splitgraph.exceptions.CheckoutError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to checking out/committing repositories

+
+ +
+
+exception splitgraph.exceptions.DataSourceError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by mount handlers.

+
+ +
+
+exception splitgraph.exceptions.DockerUnavailableError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Could not connect to the Docker daemon.

+
+ +
+
+exception splitgraph.exceptions.EngineInitializationError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when the engine isn’t initialized (no splitgraph_meta schema or audit triggers)

+
+ +
+
+exception splitgraph.exceptions.EngineSetupError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised on various setup issues with the Splitgraph engine

+
+ +
+
+exception splitgraph.exceptions.ExternalHandlerError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by external object handlers.

+
+ +
+
+exception splitgraph.exceptions.GQLAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

GQL API errors

+
+ +
+
+exception splitgraph.exceptions.GQLRepoDoesntExistError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Repository doesn’t exist

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthenticatedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthenticated (user not logged in)

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthorizedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthorized (e.g. repository isn’t writeable by the user)

+
+ +
+
+exception splitgraph.exceptions.ImageNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph image doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectDownloadError(reason: Optional[BaseException], successful_objects: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during download of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectUploadError(reason: Optional[BaseException], successful_objects: List[str], successful_object_urls: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during upload of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.ObjectCacheError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Issues with the object cache (not enough space)

+
+ +
+
+exception splitgraph.exceptions.ObjectIndexingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to indexing objects

+
+ +
+
+exception splitgraph.exceptions.ObjectMountingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to incompatible objects.

+
+ +
+
+exception splitgraph.exceptions.ObjectNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when a physical object doesn’t exist in the cache.

+
+ +
+
+exception splitgraph.exceptions.RepositoryNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph repository doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.SplitGraphError
+

Bases: Exception

+

A generic Splitgraph exception.

+
+ +
+
+exception splitgraph.exceptions.SplitfileError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Generic error class for Splitfile interpretation/execution errors.

+
+ +
+
+exception splitgraph.exceptions.TableNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A table doesn’t exist in an image

+
+ +
+
+exception splitgraph.exceptions.UnsupportedSQLError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised for unsupported SQL statements, for example, containing schema-qualified tables when the statement +is supposed to be used in an SQL/IMPORT Splitfile command.

+
+ +
+
+splitgraph.exceptions.get_exception_name(o)
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.splitfile.mdx b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.splitfile.mdx new file mode 100644 index 00000000..39a80266 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.14/splitgraph.splitfile.mdx @@ -0,0 +1,89 @@ + + + +export const meta = { + title: "splitgraph.splitfile package", + id: "splitgraph.splitfile package" +}; + +
+

Module contents

+

Splitfile interpreter: a set of tools on top of the core Splitgraph versioning and image management to give +the user a Dockerfile-like experience for building Splitgraph images (caching, consistent hashing, a declarative +language).

+
+ +
+

Submodules

+
+
+

splitgraph.splitfile.execution module

+

Functions for executing Splitfiles.

+
+
+class splitgraph.splitfile.execution.ImageMapper(object_engine: splitgraph.engine.postgres.engine.PostgresEngine)
+

Bases: object

+
+
+get_provenance_data()Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]
+
+ +
+
+setup_lq_mounts()None
+
+ +
+
+teardown_lq_mounts()None
+
+ +
+ +
+
+splitgraph.splitfile.execution.execute_commands(commands: str, params: Optional[Dict[str, str]] = None, output: Optional[splitgraph.core.repository.Repository] = None, output_base: str = '00000000000000000000000000000000')None
+

Executes a series of Splitfile commands.

+
+
Parameters
+
    +
  • commands – A string with the raw Splitfile.

  • +
  • params – A dictionary of parameters to be applied to the Splitfile ($&lbrace;PARAM&rbrace; is replaced with the specified +parameter value).

  • +
  • output – Output repository to execute the Splitfile against.

  • +
  • output_base – If not None, a revision that gets checked out for all Splitfile actions to be committed +on top of it.

  • +
+
+
+
+ +
+
+splitgraph.splitfile.execution.getrandbits(k)x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.splitfile.execution.prevalidate_imports(table_names: List[str], table_queries: List[bool])List[str]
+
+ +
+
+splitgraph.splitfile.execution.rebuild_image(image: splitgraph.core.image.Image, source_replacement: Dict[splitgraph.core.repository.Repository, str])None
+

Recreates the Splitfile used to create a given image and reruns it, replacing its dependencies with a different +set of versions.

+
+
Parameters
+
    +
  • image – Image object

  • +
  • source_replacement – A map that specifies replacement images/tags for repositories that the image depends on

  • +
+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/metadata.json b/content/docs/9500_python-api/9000_versions/v0.2.15/metadata.json new file mode 100644 index 00000000..fbb0bf03 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.15", + "updated_at": "2022-01-20T00:00:43.777Z", + "release": { + "id": 46757318, + "tag_name": "v0.2.15", + "target_commitish": "443e9cf2d61db94fcb0dec8d674c2f79c58e01e5", + "created_at": "2021-07-26T09:25:14Z", + "published_at": "2021-07-26T09:58:34Z", + "assets": [ + { + "id": 41030652, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/41030652", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-07-26T09:56:59Z", + "updated_at": "2021-07-26T09:57:00Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.15/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/modules.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/modules.mdx new file mode 100644 index 00000000..c3aa0a36 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/modules.mdx @@ -0,0 +1,118 @@ + + + +export const meta = { + title: "splitgraph", + id: "splitgraph" +}; + +
+ +
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.cloud.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.cloud.mdx new file mode 100644 index 00000000..aee0ed28 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.cloud.mdx @@ -0,0 +1,870 @@ + + + +export const meta = { + title: "splitgraph.cloud package", + id: "splitgraph.cloud package" +}; + +
+

Module contents

+

Public API for interacting with the Splitgraph registry

+
+
+splitgraph.cloud.AuthAPIClient(*args, **kwargs)
+
+ +
+
+class splitgraph.cloud.GQLAPIClient(remote: Optional[str], endpoint: Optional[str] = None, access_token: Optional[str] = None)
+

Bases: object

+

Wrapper class for select Splitgraph Registry GQL operations that can be +called from the CLI

+
+
+property access_token: Optional[str]
+
+ +
+
+bulk_upsert_metadata(namespace_list: List[str], repository_list: List[str], metadata_list: List[splitgraph.cloud.models.Metadata])
+
+ +
+
+find_repository(query: str, limit: int = 10) Tuple[int, List[Tuple[str, str, str]]]
+
+ +
+
+get_external_metadata(namespace: str, repository: str) Optional[splitgraph.cloud.models.ExternalResponse]
+
+ +
+
+get_metadata(namespace: str, repository: str) Optional[splitgraph.cloud.models.MetadataResponse]
+
+ +
+
+load_all_repositories(limit_to: Optional[List[str]] = None) List[splitgraph.cloud.models.Repository]
+
+ +
+
+upsert_description(namespace: str, repository: str, description: str)
+
+ +
+
+upsert_metadata(namespace: str, repository: str, metadata: splitgraph.cloud.models.Metadata)
+

Update metadata for a single repository.

+
+ +
+
+upsert_readme(namespace: str, repository: str, readme: str)
+
+ +
+
+upsert_topics(namespace: str, repository: str, topics: List[str])
+
+ +
+ +
+
+class splitgraph.cloud.RESTAPIClient(remote: str)
+

Bases: object

+

Client for various Splitgraph Registry REST APIs: auth token generation, external repo setup…

+
+
+property access_token: str
+

Will return an up-to-date access token by either getting it from +the configuration file or contacting the auth service for a new one. +Will write the new access token into the configuration file.

+
+
Returns
+

Access token.

+
+
+
+ +
+
+bulk_upsert_external(repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest])
+
+ +
+
+create_machine_credentials(access_token: str, password: str) requests.models.Response
+

Generate a key and secret that can be used to log into the Splitgraph registry +via a normal Postgres connection. The secret must be stored in the user’s local +configuration file (it’s not stored on Splitgraph servers).

+
+
Parameters
+
    +
  • access_token – Access token

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (key, secret).

+
+
+
+ +
+
+ensure_external_credential(credential_data: Dict[str, Any], credential_name: str, plugin_name: str) str
+

Store a credential for accessing an external data source +in Splitgraph Cloud and return its ID

+
+ +
+
+get_access_token(refresh_token: str) requests.models.Response
+

Get a new access token from a refresh token.

+
+
Parameters
+

refresh_token – Refresh token

+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_access_token_from_api(api_key: str, api_secret: str) requests.models.Response
+

Get a new access token from API keys

+
+
Parameters
+
    +
  • api_key – API key

  • +
  • api_secret – API secret

  • +
+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_latest_version() Optional[str]
+
+ +
+
+get_refresh_token(username: str, password: str) requests.models.Response
+

Get a long-lived refresh token and a short-lived access token from the API.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (access_token, refresh_token).

+
+
+
+ +
+
+list_external_credentials() splitgraph.cloud.models.ListExternalCredentialsResponse
+
+ +
+
+register(username: str, password: str, email: str, accept_tos: bool) requests.models.Response
+

Register a new Splitgraph user.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
  • email – Email

  • +
  • accept_tos – Accept the Terms of Service if they exist

  • +
+
+
+
+ +
+
+tos() requests.models.Response
+

Get a Terms of Service message from the registry (if accepting ToS is required) +:return: Link to the Terms of Service or None

+
+ +
+ +
+
+splitgraph.cloud.expect_result(result: List[str], ignore_status_codes: Optional[List[int]] = None) Callable[[Callable[[...], requests.models.Response]], Callable[[...], Union[str, Tuple[str]]]]
+

A decorator that can be wrapped around a function returning a requests.Response with a JSON body. +If the request has failed, it will extract the “error” from the JSON response and raise an AuthAPIError.

+
+
Parameters
+
    +
  • result – Items to extract. Will raise an AuthAPIError if not all items were fetched.

  • +
  • ignore_status_codes – If one of these status codes is returned (e.g. 404), +it gets ignored and a None is returned instead.

  • +
+
+
Returns
+

Tuple of items enumerated in the result list. If there’s only one item, it will +return just that item.

+
+
+
+ +
+
+splitgraph.cloud.get_headers()
+
+ +
+
+splitgraph.cloud.get_remote_param(remote: str, key: str) str
+
+ +
+
+splitgraph.cloud.get_token_claim(jwt, claim)
+

Extract a claim from a JWT token without validating it.

+
+ +
+
+splitgraph.cloud.handle_gql_errors(func: Callable[[...], requests.models.Response]) Callable[[...], requests.models.Response]
+

A decorator that handles responses from the GQL API, transforming errors into exceptions.

+
+ +
+ +
+

Submodules

+
+
+

splitgraph.cloud.models module

+

Definitions for the repositories.yml format that’s used to batch-populate a Splitgraph catalog +with repositories and their metadata.

+
+
+class splitgraph.cloud.models.AddExternalCredentialRequest(*, credential_name: str, credential_data: Dict[str, Any], plugin_name: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_data: Dict[str, Any]
+
+ +
+
+credential_name: str
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+class splitgraph.cloud.models.AddExternalRepositoriesRequest(*, repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest])
+

Bases: pydantic.main.BaseModel

+
+
+repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest]
+
+ +
+ +
+
+class splitgraph.cloud.models.AddExternalRepositoryRequest(*, namespace: str, repository: str, plugin_name: str, params: Params, is_live: bool, tables: Dict[str, splitgraph.cloud.models.ExternalTableRequest] = None, credential_id: str = None, schedule: splitgraph.cloud.models.IngestionSchedule = None)
+

Bases: pydantic.main.BaseModel

+
+
+credential_id: Optional[str]
+
+ +
+
+classmethod from_external(namespace: str, repository: str, external: splitgraph.cloud.models.External, credential_map: Optional[Dict[str, str]] = None)
+
+ +
+
+is_live: bool
+
+ +
+
+namespace: str
+
+ +
+
+params: Params
+
+ +
+
+plugin_name: str
+
+ +
+
+repository: str
+
+ +
+
+schedule: Optional[splitgraph.cloud.models.IngestionSchedule]
+
+ +
+
+tables: Optional[Dict[str, splitgraph.cloud.models.ExternalTableRequest]]
+
+ +
+ +
+
+class splitgraph.cloud.models.Credential(*, plugin: str, data: Dict[str, Any])
+

Bases: pydantic.main.BaseModel

+
+
+data: Dict[str, Any]
+
+ +
+
+plugin: str
+
+ +
+ +
+
+class splitgraph.cloud.models.External(*, credential_id: str = None, credential: str = None, plugin: str, params: Dict[str, Any], tables: Dict[str, splitgraph.cloud.models.Table], schedule: splitgraph.cloud.models.IngestionSchedule = None)
+

Bases: pydantic.main.BaseModel

+
+
+credential: Optional[str]
+
+ +
+
+credential_id: Optional[str]
+
+ +
+
+params: Dict[str, Any]
+
+ +
+
+plugin: str
+
+ +
+
+schedule: Optional[splitgraph.cloud.models.IngestionSchedule]
+
+ +
+
+tables: Dict[str, splitgraph.cloud.models.Table]
+
+ +
+ +
+
+class splitgraph.cloud.models.ExternalResponse(*, namespace: str, repository: str, credentialId: str = None, dataSource: str, params: Dict[str, Any], tableParams: Dict[str, Any], externalImageByNamespaceAndRepository: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class ExternalImageResponse(*, imageByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class ImageResponse(*, tablesByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class TablesResponse(*, nodes: List[splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse.Node])
+

Bases: pydantic.main.BaseModel

+
+
+class Node(*, tableName: str, tableSchema: List[splitgraph.core.types.TableColumn])
+

Bases: pydantic.main.BaseModel

+
+
+tableName: str
+
+ +
+
+tableSchema: List[splitgraph.core.types.TableColumn]
+
+ +
+ +
+
+nodes: List[splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse.Node]
+
+ +
+ +
+
+tablesByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse
+
+ +
+ +
+
+imageByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse
+
+ +
+ +
+
+credentialId: Optional[str]
+
+ +
+
+dataSource: str
+
+ +
+
+externalImageByNamespaceAndRepository: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse
+
+ +
+
+classmethod from_response(response) List[splitgraph.cloud.models.ExternalResponse]
+
+ +
+
+namespace: str
+
+ +
+
+params: Dict[str, Any]
+
+ +
+
+repository: str
+
+ +
+
+tableParams: Dict[str, Any]
+
+ +
+
+to_external() splitgraph.cloud.models.External
+
+ +
+ +
+
+class splitgraph.cloud.models.ExternalTableRequest(*, options: Dict[str, Any] = &lbrace;&rbrace;, schema: Dict[str, str] = None)
+

Bases: pydantic.main.BaseModel

+
+
+options: Dict[str, Any]
+
+ +
+
+schema_: Optional[Dict[str, str]]
+
+ +
+ +
+
+class splitgraph.cloud.models.IngestionSchedule(*, schedule: str, enabled: bool = True)
+

Bases: pydantic.main.BaseModel

+
+
+schedule: str
+
+ +
+ +
+
+class splitgraph.cloud.models.ListExternalCredentialsResponse(*, credentials: List[splitgraph.cloud.models.ListExternalCredentialsResponse.ExternalCredential])
+

Bases: pydantic.main.BaseModel

+
+
+class ExternalCredential(*, plugin_name: str, credential_name: str, credential_id: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_id: str
+
+ +
+
+credential_name: str
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+credentials: List[splitgraph.cloud.models.ListExternalCredentialsResponse.ExternalCredential]
+
+ +
+ +
+
+class splitgraph.cloud.models.Metadata(*, readme: Optional[Union[str, splitgraph.cloud.models.Metadata.Readme]] = None, description: str = None, topics: List[str] = None, sources: List[splitgraph.cloud.models.Source] = None, license: str = None, extra_metadata: Dict[str, Any] = None)
+

Bases: pydantic.main.BaseModel

+
+
+class Readme(*, file: str = None, text: str = None)
+

Bases: pydantic.main.BaseModel

+
+
+file: Optional[str]
+
+ +
+
+text: Optional[str]
+
+ +
+ +
+
+description: Optional[str]
+
+ +
+
+extra_metadata: Optional[Dict[str, Any]]
+
+ +
+
+license: Optional[str]
+
+ +
+
+readme: Optional[Union[str, splitgraph.cloud.models.Metadata.Readme]]
+
+ +
+
+sources: Optional[List[splitgraph.cloud.models.Source]]
+
+ +
+
+topics: Optional[List[str]]
+
+ +
+ +
+
+class splitgraph.cloud.models.MetadataResponse(*, namespace: str, repository: str, repoTopicsByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse, repoProfileByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class RepoProfileResponse(*, readme: str = None, description: str = None, topics: List[str] = None, sources: List[splitgraph.cloud.models.Source] = None, license: str = None, metadata: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse.MetadataResponse = None)
+

Bases: pydantic.main.BaseModel

+
+
+class MetadataResponse(*, created_at: str = None, updated_at: str = None, upstream_metadata: Dict[str, Any])
+

Bases: pydantic.main.BaseModel

+
+
+created_at: Optional[str]
+
+ +
+
+updated_at: Optional[str]
+
+ +
+
+upstream_metadata: Dict[str, Any]
+
+ +
+ +
+
+description: Optional[str]
+
+ +
+
+license: Optional[str]
+
+ +
+
+metadata: Optional[splitgraph.cloud.models.MetadataResponse.RepoProfileResponse.MetadataResponse]
+
+ +
+
+readme: Optional[str]
+
+ +
+
+sources: Optional[List[splitgraph.cloud.models.Source]]
+
+ +
+
+topics: Optional[List[str]]
+
+ +
+ +
+
+class RepoTopicsResponse(*, nodes: List[splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse.RepositoryTopics])
+

Bases: pydantic.main.BaseModel

+
+
+class RepositoryTopics(*, topics: List[str])
+

Bases: pydantic.main.BaseModel

+
+
+topics: List[str]
+
+ +
+ +
+
+nodes: List[splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse.RepositoryTopics]
+
+ +
+ +
+
+classmethod from_response(response) List[splitgraph.cloud.models.MetadataResponse]
+
+ +
+
+namespace: str
+
+ +
+
+repoProfileByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse
+
+ +
+
+repoTopicsByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse
+
+ +
+
+repository: str
+
+ +
+
+to_metadata() splitgraph.cloud.models.Metadata
+
+ +
+ +
+
+class splitgraph.cloud.models.RepositoriesYAML(*, repositories: List[splitgraph.cloud.models.Repository], credentials: Dict[str, splitgraph.cloud.models.Credential] = None)
+

Bases: pydantic.main.BaseModel

+
+
+credentials: Optional[Dict[str, splitgraph.cloud.models.Credential]]
+
+ +
+
+repositories: List[splitgraph.cloud.models.Repository]
+
+ +
+ +
+
+class splitgraph.cloud.models.Repository(*, namespace: str, repository: str, metadata: splitgraph.cloud.models.Metadata = None, external: splitgraph.cloud.models.External = None)
+

Bases: pydantic.main.BaseModel

+
+
+external: Optional[splitgraph.cloud.models.External]
+
+ +
+
+metadata: Optional[splitgraph.cloud.models.Metadata]
+
+ +
+
+namespace: str
+
+ +
+
+repository: str
+
+ +
+ +
+
+class splitgraph.cloud.models.Source(*, anchor: str, href: str, isCreator: bool = None, isSameAs: bool = None)
+

Bases: pydantic.main.BaseModel

+
+
+anchor: str
+
+ +
+
+href: str
+
+ +
+
+isCreator: Optional[bool]
+
+ +
+
+isSameAs: Optional[bool]
+
+ +
+ +
+
+class splitgraph.cloud.models.Table(*, options: Dict[str, Any], schema: List[splitgraph.cloud.models.Table.Column])
+

Bases: pydantic.main.BaseModel

+
+
+class Column(*, name: str, type: str, comment: str = None)
+

Bases: pydantic.main.BaseModel

+
+
+comment: Optional[str]
+
+ +
+
+name: str
+
+ +
+
+pg_type: str
+
+ +
+ +
+
+options: Dict[str, Any]
+
+ +
+
+schema_: List[splitgraph.cloud.models.Table.Column]
+
+ +
+ +
+
+class splitgraph.cloud.models.UpdateExternalCredentialRequest(*, credential_id: str, credential_name: str, credential_data: Dict[str, Any], plugin_name: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_data: Dict[str, Any]
+
+ +
+
+credential_id: str
+
+ +
+
+credential_name: str
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+class splitgraph.cloud.models.UpdateExternalCredentialResponse(*, credential_id: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_id: str
+
+ +
+ +
+
+splitgraph.cloud.models.make_repositories(metadata_responses: List[splitgraph.cloud.models.MetadataResponse], external_responses: List[splitgraph.cloud.models.ExternalResponse]) List[splitgraph.cloud.models.Repository]
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.commandline.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.commandline.mdx new file mode 100644 index 00000000..52f62035 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.commandline.mdx @@ -0,0 +1,335 @@ + + + +export const meta = { + title: "splitgraph.commandline package", + id: "splitgraph.commandline package" +}; + +
+

Module contents

+

Splitgraph command line client

+

Hooks into the API to allow management of Splitgraph repositories and images using sgr.

+
+
+class splitgraph.commandline.ClickHandler(level=0)
+

Bases: logging.Handler

+
+
+emit(record)
+

Do whatever it takes to actually log the specified logging record.

+

This version is intended to be implemented by subclasses and so +raises a NotImplementedError.

+
+ +
+ +
+
+class splitgraph.commandline.WithExceptionHandler(name=None, commands=None, **attrs)
+

Bases: click.core.Group

+
+
+get_command(ctx, cmd_name)
+

Given a context and a command name, this returns a +Command object if it exists or returns None.

+
+ +
+
+invoke(ctx)
+

Given a context, this invokes the attached callback (if it exists) +in the right way.

+
+ +
+ +
+ +
+

Submodules

+
+
+

splitgraph.commandline.cloud module

+

Command line routines related to registering/setting up connections to the Splitgraph registry.

+
+
+

splitgraph.commandline.common module

+

Various common functions used by the command line interface.

+
+
+class splitgraph.commandline.common.Color
+

Bases: object

+

An enumeration of console colors

+
+
+BLUE = '\x1b[94m'
+
+ +
+
+BOLD = '\x1b[1m'
+
+ +
+
+CYAN = '\x1b[96m'
+
+ +
+
+DARKCYAN = '\x1b[36m'
+
+ +
+
+END = '\x1b[0m'
+
+ +
+
+GREEN = '\x1b[92m'
+
+ +
+
+PURPLE = '\x1b[95m'
+
+ +
+
+RED = '\x1b[91m'
+
+ +
+
+UNDERLINE = '\x1b[4m'
+
+ +
+
+YELLOW = '\x1b[93m'
+
+ +
+ +
+
+class splitgraph.commandline.common.ImageType(default: Optional[str] = 'latest', repository_exists: bool = False, get_image: bool = False)
+

Bases: click.types.ParamType

+

Parser that extracts the full image specification (repository and hash/tag).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context]) Tuple[Repository, Optional[Union[Image, str]]]
+

Image specification must have the format [NAMESPACE/]REPOSITORY[:HASH_OR_TAG].

+

The parser returns a tuple of (repository object, tag or hash).

+
+ +
+
+name = 'Image'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.JsonType
+

Bases: click.types.ParamType

+

Parser for Json – a wrapper around json.loads because without specifying +the name Click shows the type for the option/arg as LOADS.

+

Also supports passing JSON files (pass in @filename.json).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Json'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.RepositoryType(exists: bool = False)
+

Bases: click.types.ParamType

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context]) Repository
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Repository'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.ResettableStream(stream)
+

Bases: io.RawIOBase

+

Stream that supports reading from the underlying stream and resetting the position once.

+

We can’t use fseek() in this case, since we might be reading from a pipe. So, we operate +this stream in two modes. In the first mode, we mirror all reads into a separate buffer +(consuming the input stream). After the user calls reset(), we first output data from the +mirrored copy, then continue consuming the input stream (simulating seek(0).

+
+
+readable()
+

Return whether object was opened for reading.

+

If False, read() will raise OSError.

+
+ +
+
+readinto(b)
+
+ +
+
+reset()
+
+ +
+ +
+
+splitgraph.commandline.common.emit_sql_results(results, use_json=False, show_all=False)
+
+ +
+
+splitgraph.commandline.common.load_json_param(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+
+ +
+
+splitgraph.commandline.common.remote_switch_option(*names, **kwargs)
+

Adds an option to switch global SG_ENGINE for this invocation of sgr.

+

This is useful for e.g. tagging or viewing image information on a remote +registry. This is not used in operations like commit/checkout (even though +nothing is preventing SG_ENGINE switch from working on that if the remote engine +supports this), the user should switch SG_ENGINE envvar themselves in that case.

+
+
Parameters
+
    +
  • names – Names

  • +
  • kwargs – Passed to click.option

  • +
+
+
+
+ +
+
+splitgraph.commandline.common.sql_results_to_str(results: List[Tuple[Any]], use_json: bool = False) str
+
+ +
+
+

splitgraph.commandline.engine module

+
+
+splitgraph.commandline.engine.inject_config_into_engines(engine_prefix, config_path)
+

Copy the current config into all engines that are managed by sgr engine. This +is so that the engine has the right credentials and settings for when we do +layered querying (a Postgres client queries the engine directly and it +has to download objects etc).

+
+
Parameters
+
    +
  • engine_prefix – Prefix for Docker containers that are considered to be engines

  • +
  • config_path – Path to the config file.

  • +
+
+
+
+ +
+
+splitgraph.commandline.engine.list_engines(prefix, include_all=False, unavailable_ok=True)
+
+ +
+
+splitgraph.commandline.engine.patch_and_save_config(config, patch)
+
+ +
+
+

splitgraph.commandline.example module

+

Command line routines generating example data / Splitfiles

+
+
+splitgraph.commandline.example.alter_table(repository: Repository, table_name: str, rows_added: int, rows_deleted: int, rows_updated: int) None
+

Alters the example table, adding/updating/deleting a certain number of rows.

+
+
Parameters
+
    +
  • repository – Checked-out Repository object.

  • +
  • table_name – Name of the table

  • +
  • rows_added – Number of rows to add

  • +
  • rows_deleted – Number of rows to remove

  • +
  • rows_updated – Number of rows to update

  • +
+
+
+
+ +
+
+splitgraph.commandline.example.generate_table(repository: Repository, table_name: str, size: int) None
+

Creates a table with an integer primary key and a string value.

+
+
Parameters
+
    +
  • repository – Checked-out Repository to create the table in.

  • +
  • table_name – Name of the table to generate

  • +
  • size – Number of rows in the table.

  • +
+
+
+
+ +
+
+

splitgraph.commandline.image_creation module

+

sgr commands related to creating and checking out images

+
+
+

splitgraph.commandline.image_info module

+

sgr commands related to getting information out of / about images

+
+
+

splitgraph.commandline.ingestion module

+

Command line tools for ingesting/exporting Splitgraph images into other formats.

+
+
+

splitgraph.commandline.misc module

+

Miscellaneous image management sgr commands.

+
+
+

splitgraph.commandline.mount module

+

sgr commands related to mounting databases via Postgres FDW

+
+
+

splitgraph.commandline.push_pull module

+

sgr commands related to sharing and downloading images.

+
+
+

splitgraph.commandline.splitfile module

+

sgr commands related to building and rebuilding Splitfiles.

+
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.config.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.config.mdx new file mode 100644 index 00000000..48403b69 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.config.mdx @@ -0,0 +1,392 @@ + + + +export const meta = { + title: "splitgraph.config package", + id: "splitgraph.config package" +}; + +
+

Module contents

+

The CONFIG object is created and exported once __at import time__ +Calling CONFIG[“KEY”] directly should be sufficient in most cases, +except when a config value has changed since importing CONFIG. +In that case, create_config_dict() can provide an updated config dict

+

Priority (highest to lowest):

+
+
    +
  1. Command line argument values

  2. +
  3. Environment variable values

  4. +
  5. Config file values in [defaults] section

  6. +
  7. DEFAULTS (see keys.py)

  8. +
+
+
+ +
+

Submodules

+
+
+

splitgraph.config.argument_config module

+
+
+splitgraph.config.argument_config.get_arg_tuples() List[Tuple[str, str]]
+

Get the raw (argN, argN+1) tuples from sys.argv

+

We could also use click to parse the flags ahead of time, and then pass +the parsed flag object into SystemConfigGetters. But this way, we avoid +having to pass down variables from click just to get config values.

+
+ +
+
+splitgraph.config.argument_config.get_argument_config_value(key: str, default_return: Optional[str] = None) Optional[str]
+

Get get the value of an argument, where value is the argument +immediately following the argument matching a key in ARG_KEYS, e.g.:

+
+

SYS_ARGS = [“–namespace”, “foo”] +–> return “foo”

+
+

Otherwise, return default_return

+
+ +
+
+

splitgraph.config.config module

+
+
+splitgraph.config.config.chain_getters(getters: Sequence[Callable[[str], Optional[str]]], key: str, default_return: Optional[str] = None) Optional[str]
+
+ +
+
+splitgraph.config.config.create_config_dict() Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create and return a dict of all known config values

+
+ +
+
+splitgraph.config.config.get_all_in_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str) Dict[str, Union[Dict[str, str], str]]
+

Get all subsections from a config (e.g. config[“data_sources”])

+
+ +
+
+splitgraph.config.config.get_all_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str) Dict[str, str]
+
+ +
+
+splitgraph.config.config.get_from_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, item: str) str
+
+ +
+
+splitgraph.config.config.get_from_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str) str
+

Return a singleton variable from a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.get_singleton(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], item: str) str
+

Return a singleton (not a section) variable from the config.

+
+ +
+
+splitgraph.config.config.lazy_get_config_value(key: str, default_return: Optional[str] = None) Optional[Union[str, Dict[str, Dict[str, str]]]]
+

Get the config value for a key in the following precedence +Otherwise return default_return

+
+ +
+
+splitgraph.config.config.patch_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], patch: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Recursively updates a nested configuration dictionary:

+
+
patch_config(
+
&lbrace;“key_1”: “value_1”,

“dict_1”: &lbrace;“key_1”: “value_1”&rbrace;&rbrace;,

+
+
&lbrace;“key_1”: “value_2”,

“dict_1”: &lbrace;“key_2”: “value_2”&rbrace;&rbrace;) == &lbrace;“key_1”: “value_2”, +“dict_1”: &lbrace;“key_1”: “value_1”, “key_2”: “value_2”&rbrace;&rbrace;

+
+
+
+
+
+
Parameters
+
    +
  • config – Config dictionary

  • +
  • patch – Dictionary with the path

  • +
+
+
Returns
+

New patched dictionary

+
+
+
+ +
+
+splitgraph.config.config.set_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str, value: str) None
+

Set a singleton variable in a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.update_config_dict_from_arguments(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sys.argv +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_env_vars(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading os.environ +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_file(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], sg_config_file: str) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sg_config_file +and overwriting any keys according to the rules in config_file_config

+

Return updated copy of config_dict.

+
+ +
+
+

splitgraph.config.config_file_config module

+
+
+splitgraph.config.config_file_config.accumulate_lists(config_dict: Dict[str, Union[Dict[str, str], str]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Transform a config_dict to “accumulate” objects “nested” via key name

+

Because ConfigParser does not support nesting, we implement our own +syntax via the key names of sections. The ‘:’ character can be used in +section names to specify the left and right key. Example:

+
.ini config             new config_dict
+
+                  ----->
+                    |
+[remote: remote1]   |   &lbrace;
+SG_ENV_VAR=foo      |       **rest_of_config_dict,
+                    |       "remotes": &lbrace;
+[origin: origin1]   |           "remote1": &lbrace;
+SG_ENV_VAR=bar      |               "SG_ENV_VAR": "foo"
+                    |           &rbrace;
+[origin: origin2]   |       &rbrace;,
+SG_ENV_VAR=bax      |       "origins": &lbrace;
+                    |           "origin1": &lbrace;
+                    |               "SG_ENV_VAR": "bar"
+                    |           &rbrace;,
+                    |           "origin2": &lbrace;
+                    |               "SG_ENV_VAR": "bax"
+                    |           &rbrace;
+                    |       &rbrace;
+                    |   &rbrace;
+                    |
+                  ----->
+
+
+

:return a new, updated copy of config_dict

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_config_file(sg_file: str, **kwargs) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create a dict from ConfigParser, apply transformations to it.

+

Return parsed and transformed config_dict.

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_file(sg_file: str, **kwargs) Dict[str, Dict[str, str]]
+
+ +
+
+splitgraph.config.config_file_config.hoist_section(config_dict: Dict[str, Dict[str, str]], section: str = 'defaults') Dict[str, Union[Dict[str, str], str]]
+

If a section exists called <hoist_section>, hoist it to the top level +This is useful for overriding default configs from within a config file

+

Transform config_dict to “hoist” any config values from a section +into the top level (thus, overriding environment variables), +when the name of the section matches hoist_section.

+

Return a new, updated copy of config_dict.

+
+ +
+
+splitgraph.config.config_file_config.transform_config_dict(config_dict: Dict[str, Dict[str, str]], **kwargs) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Apply transformations to the raw ConfigParser.config object

+
+
    +
  1. hoist_section

  2. +
  3. accumulate_lists

  4. +
+
+

Return the a new, updated copy of config_dict.

+
+ +
+
+

splitgraph.config.default_config module

+
+
+splitgraph.config.default_config.get_default_config_value(key: str, default_return: Optional[str] = None) Any
+

Get the hard-coded default value of a config key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.environment_config module

+
+
+splitgraph.config.environment_config.get_environment_config_value(key: str, default_return: Optional[str] = None) Optional[str]
+

Get the environment variable value of the environment variable matching key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.export module

+

Routines for exporting the config back into text.

+
+
+splitgraph.config.export.overwrite_config(new_config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_path: str, include_defaults: bool = False) None
+

Serialize the new config dictionary and overwrite the current config file. +Note: this will delete all comments in the config!

+
+
Parameters
+
    +
  • new_config – Config dictionary.

  • +
  • config_path – Path to the config file.

  • +
  • include_defaults – Whether to include values that are the same +as their defaults.

  • +
+
+
+
+ +
+
+splitgraph.config.export.serialize_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_format: bool, no_shielding: bool, include_defaults: bool = True) str
+

Pretty-print the configuration or print it in the Splitgraph config file format.

+
+
Parameters
+
    +
  • config – Configuration dictionary.

  • +
  • config_format – Output configuration in the Splitgraph config file format.

  • +
  • no_shielding – Don’t replace sensitive values (like passwords) with asterisks

  • +
  • include_defaults – Emit the config variable even if it’s the same as the default.

  • +
+
+
Returns
+

Textual representation of the config.

+
+
+
+ +
+
+splitgraph.config.export.serialize_engine_config(engine_name: str, conn_params: Dict[str, str], no_shielding: bool) str
+

Output the config section with connection parameters for a single engine.

+
+
Parameters
+
    +
  • engine_name – Name of the engine

  • +
  • conn_params – Dictionary of connection parameters

  • +
  • no_shielding – Don’t replace passwords with asterisks

  • +
+
+
+
+ +
+
+

splitgraph.config.keys module

+
+
+splitgraph.config.keys.SENSITIVE_KEY_SUFFIXES = ['_PWD', '_TOKEN']
+

Warning: Every key in DEFAULTS must have a key in ARGUMENT_KEY_MAP +If you add/remove keys from DEFAULTS, make sure to do so here too.

+
+ +
+
+

splitgraph.config.system_config module

+
+
+splitgraph.config.system_config.file_exists(_dir: str, filename: str) bool
+
+ +
+
+splitgraph.config.system_config.get_config_file(default_return: None = None) Optional[str]
+

Get the location of an existing SG_CONFIG_FILE on the system with +a valid name. Do not attempt to parse the config file, just return +its location.

+

Otherwise, return default_return

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_dirs() List[str]
+

Get any explicitly defined config file directories, +which are directories where we should search for files from +VALID_CONFIG_FILE_NAMES.

+

This list is defined similar to $PATH, as a colon (:) delimited +string, either in:

+
+
    +
  • argument flag –config-dirs

  • +
  • or environment key SG_CONFIG_DIRS

  • +
+
+

Or a single directory defined in either

+
+
    +
  • argument flag –config-dir

  • +
  • environment key SG_CONFIG_DIR

  • +
+
+

If both plural and single are defined, join them together.

+

Return a list of valid paths that are set, or an empty list.

+

Print a warning if any paths to not exist.

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_location() Optional[str]
+

Get the explicitly defined location of config file, if defined.

+

The location will either be defined in:

+
+
    +
  • argument flag –config-file

  • +
  • or environment key SG_CONFIG_FILE

  • +
+
+

In keeping with assumptions about priority, argument flag has +higher priority than environment value.

+

If the location is set, and points to an existing file, return location.

+

Otherwise return None

+

Print a warning if location is set but points to non-existing file.

+
+ +
+
+splitgraph.config.system_config.get_system_config_value(key: str, default_return: None = None) Optional[str]
+
+ +
+
+splitgraph.config.system_config.is_file(filename: str) bool
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.core.indexing.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.core.indexing.mdx new file mode 100644 index 00000000..5b79c382 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.core.indexing.mdx @@ -0,0 +1,141 @@ + + + +export const meta = { + title: "splitgraph.core.indexing package", + id: "splitgraph.core.indexing package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.core.indexing.bloom module

+

Bloom filtering on fragments for equality queries.

+
+
+splitgraph.core.indexing.bloom.describe(index_tuple: Tuple[int, str]) str
+

Returns a pretty-printed summary of the bloom filter

+
+
Parameters
+

index_tuple – Tuple of (k, base64-encoded fingerprint) +returned by generate_bloom_index

+
+
Returns
+

String

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.filter_bloom_index(engine: PsycopgEngine, object_ids: List[str], quals: Any) List[str]
+

Runs a bloom filter on given qualifiers using the given objects’ previously-generated +fingerprints.

+
+
Parameters
+
    +
  • engine – Object engine

  • +
  • object_ids – Object IDs

  • +
  • quals – List of qualifiers

  • +
+
+
Returns
+

List of object IDs that might match the qualifiers in quals (including +IDs that don’t have a bloom index).

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.generate_bloom_index(engine: PsycopgEngine, object_id: str, changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], column: str, probability: Optional[float] = None, size: Optional[int] = None) Tuple[int, str]
+

Generates a bloom filter signature for a given column and a given fragment. Bloom filters +can answer queries asking whether an item is definitely not in a given set or possibly can be.

+

The tradeoff is between the probability of a false positive (item said to be in the set when +it actually isn’t) and the size of the filter.

+

Bloom filters also have an extra parameter, k, or the number of bits in the signature that +a certain item flips. This parameter has an optimal value for a given number of distinct items +or a probability and so isn’t explicitly passed by the user.

+
+
Parameters
+
    +
  • engine – Object engine the fragment is cached in.

  • +
  • object_id – Fragment ID

  • +
  • changeset – Optional, if specified, the old column values are included in the index.

  • +
  • column – Column name to generate the index on.

  • +
  • probability – Probability of a false positive. Either this or the size of the filter must +be specified, but not both.

  • +
  • size – Size of the filter, in bytes.

  • +
+
+
Returns
+

Dictionary to be inserted into the index.

+
+
+
+ +
+
+

splitgraph.core.indexing.range module

+
+
+splitgraph.core.indexing.range.extract_min_max_pks(engine: PsycopgEngine, fragments: List[str], table_pks: List[str], table_pk_types: List[str]) Any
+

Extract minimum/maximum PK values for given fragments.

+
+
Parameters
+
    +
  • engine – Engine the objects live on

  • +
  • fragments – IDs of objects

  • +
  • table_pks – List of columns forming the table primary key

  • +
  • table_pk_types – List of types for table PK columns

  • +
+
+
Returns
+

List of min/max primary key for every object.

+
+
+
+ +
+
+splitgraph.core.indexing.range.filter_range_index(metadata_engine: PsycopgEngine, object_ids: List[str], quals: Any, column_types: Dict[str, str]) List[str]
+
+ +
+
+splitgraph.core.indexing.range.generate_range_index(object_engine: PsycopgEngine, object_id: str, table_schema: TableSchema, changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], columns: Optional[List[str]] = None) Dict[str, Tuple[splitgraph.core.indexing.range.T, splitgraph.core.indexing.range.T]]
+

Calculate the minimum/maximum values of every column in the object (including deleted values).

+
+
Parameters
+
    +
  • object_engine – Engine the object is located on

  • +
  • object_id – ID of the object.

  • +
  • table_schema – Schema of the table

  • +
  • changeset – Changeset (old values will be included in the index)

  • +
  • columns – Columns to run the index on (default all)

  • +
+
+
Returns
+

Dictionary of &lbrace;column: [min, max]&rbrace;

+
+
+
+ +
+
+splitgraph.core.indexing.range.quals_to_sql(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], column_types: Dict[str, str]) Tuple[psycopg2.sql.Composable, Tuple]
+

Convert a list of qualifiers in CNF to a fragment of a Postgres query +:param quals: Qualifiers in CNF +:param column_types: Dictionary of column names and their types +:return: SQL Composable object and a tuple of arguments to be mogrified into it.

+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.core.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.core.mdx new file mode 100644 index 00000000..52f0f65c --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.core.mdx @@ -0,0 +1,2067 @@ + + + +export const meta = { + title: "splitgraph.core package", + id: "splitgraph.core package" +}; + +
+

Module contents

+

Core Splitgraph functionality: versioning and sharing tables.

+

The main point of interaction with the Splitgraph API is a splitgraph.core.repository.Repository object +representing a local or a remote Splitgraph repository. Repositories can be created using one of the +following methods:

+
+
    +
  • Directly by invoking Repository(namespace, name, engine) where engine is the engine that the repository +belongs to (that can be gotten with get_engine(engine_name). If the created repository doesn’t actually exist +on the engine, it must first be initialized with repository.init().

  • +
  • By using splitgraph.core.engine.lookup_repository() which will search for the repository on the current +lookup path.

  • +
+
+
+ + +
+

Submodules

+
+
+

splitgraph.core.common module

+

Common internal functions used by Splitgraph commands.

+
+
+class splitgraph.core.common.CallbackList(iterable=(), /)
+

Bases: list

+

Used to pass around and call multiple callbacks at once.

+
+ +
+
+class splitgraph.core.common.Tracer
+

Bases: object

+

Accumulates events and returns the times between them.

+
+
+get_durations() List[Tuple[str, float]]
+

Return all events and durations between them. +:return: List of (event name, time to this event from the previous event (or start))

+
+ +
+
+get_total_time() float
+
+
Returns
+

Time from start to the final logged event.

+
+
+
+ +
+
+log(event: str) None
+

Log an event at the current time +:param event: Event name

+
+ +
+ +
+
+splitgraph.core.common.adapt(value: Any, pg_type: str) Any
+

Coerces a value with a PG type into its Python equivalent.

+
+
Parameters
+
    +
  • value – Value

  • +
  • pg_type – Postgres datatype

  • +
+
+
Returns
+

Coerced value.

+
+
+
+ +
+
+splitgraph.core.common.aggregate_changes(query_result: List[Tuple[int, int]], initial: Optional[Tuple[int, int, int]] = None) Tuple[int, int, int]
+

Add a changeset to the aggregated diff result

+
+ +
+
+splitgraph.core.common.coerce_val_to_json(val: Any) Any
+

Turn a Python value to a string/float that can be stored as JSON.

+
+ +
+
+splitgraph.core.common.ensure_metadata_schema(engine: PsycopgEngine) None
+

Create or migrate the metadata schema splitgraph_meta that stores the hash tree of schema +snapshots (images), tags and tables. +This means we can’t mount anything under the schema splitgraph_meta – much like we can’t have a folder +“.git” under Git version control…

+
+ +
+
+splitgraph.core.common.gather_sync_metadata(target: Repository, source: Repository, overwrite_objects=False, overwrite_tags=False, single_image: Optional[str] = None) Any
+

Inspects two Splitgraph repositories and gathers metadata that is required to bring target up to +date with source.

+
+
Parameters
+
    +
  • target – Target Repository object

  • +
  • source – Source repository object

  • +
  • overwrite_objects – If True, will return metadata for all objects +belonging to new images (or existing image if single_image=True)

  • +
  • single_image – If set, only grab a single image with this hash/tag from the source.

  • +
  • overwrite_tags – If True and single_image is set, will return all tags for that image. +If single_image is not set, will return all tags in the source repository. +If False, will only return tags in the source that don’t exist on the target.

  • +
+
+
Returns
+

Tuple of metadata for new_images, new_tables, object_locations, object_meta, tags

+
+
+
+ +
+
+splitgraph.core.common.get_data_safe(package: str, resource: str) bytes
+
+ +
+
+splitgraph.core.common.get_temporary_table_id() str
+

Generate a random ID for temporary/staging objects that haven’t had their ID calculated yet.

+
+ +
+
+splitgraph.core.common.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.common.manage_audit(func: Callable) Callable
+

A decorator to be put around various Splitgraph commands +that adds/removes audit triggers for new/committed/deleted tables.

+
+ +
+
+splitgraph.core.common.manage_audit_triggers(engine: PostgresEngine, object_engine: Optional[PostgresEngine] = None) None
+

Does bookkeeping on audit triggers / audit table:

+
+
    +
  • Detect tables that are being audited that don’t need to be any more +(e.g. they’ve been unmounted)

  • +
  • Drop audit triggers for those and delete all audit info for them

  • +
  • Set up audit triggers for new tables

  • +
+
+

If the metadata engine isn’t the same as the object engine, this does nothing.

+
+
Parameters
+
    +
  • engine – Metadata engine with information about images and their checkout state

  • +
  • object_engine – Object engine where the checked-out table and the audit triggers are located.

  • +
+
+
+
+ +
+
+splitgraph.core.common.resource_path(relative_path)
+
+ +
+
+splitgraph.core.common.set_head(repository: Repository, image: Optional[str]) None
+

Sets the HEAD pointer of a given repository to a given image. Shouldn’t be used directly.

+
+ +
+
+splitgraph.core.common.set_tag(repository: Repository, image_hash: Optional[str], tag: str) None
+

Internal function – add a tag to an image.

+
+ +
+
+splitgraph.core.common.set_tags_batch(repository: Repository, hashes_tags: List[Tuple[str, str]]) None
+
+ +
+
+splitgraph.core.common.slow_diff(repository: Repository, table_name: str, image_1: Optional[str], image_2: Optional[str], aggregate: bool) Union[Tuple[int, int, int], List[Tuple[bool, Tuple]]]
+

Materialize both tables and manually diff them

+
+ +
+
+

splitgraph.core.engine module

+

Routines for managing Splitgraph engines, including looking up repositories and managing objects.

+
+
+splitgraph.core.engine.get_current_repositories(engine: PostgresEngine) List[Tuple[Repository, Optional[Image]]]
+

Lists all repositories currently in the engine.

+
+
Parameters
+

engine – Engine

+
+
Returns
+

List of (Repository object, current HEAD image)

+
+
+
+ +
+
+splitgraph.core.engine.init_engine(skip_object_handling: bool = False) None
+

Initializes the engine by:

+
+
    +
  • performing any required engine-custom initialization

  • +
  • creating the metadata tables

  • +
+
+
+
Parameters
+

skip_object_handling – If True, skips installing routines related to +object handling and checkouts (like audit triggers and CStore management).

+
+
+
+ +
+
+splitgraph.core.engine.lookup_repository(name: str, include_local: bool = False) Repository
+

Queries the SG engines on the lookup path to locate one hosting the given repository.

+
+
Parameters
+
    +
  • name – Repository name

  • +
  • include_local – If True, also queries the local engine

  • +
+
+
Returns
+

Local or remote Repository object

+
+
+
+ +
+
+splitgraph.core.engine.repository_exists(repository: Repository) bool
+

Checks if a repository exists on the engine.

+
+
Parameters
+

repository – Repository object

+
+
+
+ +
+
+

splitgraph.core.fdw_checkout module

+
+
+

splitgraph.core.fragment_manager module

+

Routines related to storing tables as fragments.

+
+
+class splitgraph.core.fragment_manager.Digest(shorts: Tuple[int, ...])
+

Bases: object

+

Homomorphic hashing similar to LtHash (but limited to being backed by 256-bit hashes). The main property is that +for any rows A, B, LtHash(A) + LtHash(B) = LtHash(A+B). This is done by construction: we simply hash individual +rows and then do bit-wise addition / subtraction of individual hashes to come up with the full table hash.

+

Hence, the content hash of any Splitgraph table fragment is the sum of hashes of its added rows minus the sum +of hashes of its deleted rows (including the old values of the rows that have been updated). This has a very +useful implication: the hash of a full Splitgraph table is equal to the sum of hashes of its individual fragments.

+

This property can be used to simplify deduplication.

+
+
+classmethod empty() splitgraph.core.fragment_manager.Digest
+

Return an empty Digest instance such that for any Digest D, D + empty == D - empty == D

+
+ +
+
+classmethod from_hex(hex_string: str) splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 64-characters (256-bit) hexadecimal string

+
+ +
+
+classmethod from_memoryview(memory: Union[bytes, memoryview]) splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 256-bit memoryview/bytearray.

+
+ +
+
+hex() str
+

Convert the hash into a hexadecimal value.

+
+ +
+ +
+
+class splitgraph.core.fragment_manager.FragmentManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.metadata_manager.MetadataManager

+

A storage engine for Splitgraph tables. Each table can be stored as one or more immutable fragments that can +optionally overwrite each other. When a new table is created, it’s split up into multiple base fragments. When +a new version of the table is written, the audit log is inspected and one or more patch fragments are created, +to be based on the fragments the previous version of the table consisted of. Only the top fragments in this stack +are stored in the table metadata: to reconstruct the whole table, the links from the top fragments down to the +base fragments have to be followed.

+

In addition, the fragments engine also supports min-max indexing on fragments: this is used to only fetch fragments +that are required for a given query.

+
+
+calculate_content_hash(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None, chunk_id_col: Optional[str] = None, chunk_id: Optional[int] = None) Tuple[str, int]
+

Calculates the homomorphic hash of table contents.

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Name of the table

  • +
  • table_schema – Schema of the table

  • +
  • chunk_id_col – Column the table is partitioned on

  • +
  • chunk_id – Column value to get rows from

  • +
+
+
Returns
+

A 64-character (256-bit) hexadecimal string with the content hash of the table +and the number of rows in the hash.

+
+
+
+ +
+
+calculate_fragment_insertion_hash_stats(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None) Tuple[splitgraph.core.fragment_manager.Digest, int]
+

Calculate the homomorphic hash of just the rows that a given fragment inserts +:param schema: Schema the fragment is stored in. +:param table: Name of the table the fragment is stored in. +:return: A Digest object and the number of inserted rows

+
+ +
+
+create_base_fragment(source_schema: str, source_table: str, namespace: str, chunk_id_col: Optional[str] = None, chunk_id: Optional[int] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None) str
+
+ +
+
+delete_objects(objects: Union[Set[str], List[str]]) None
+

Deletes objects from the Splitgraph cache

+
+
Parameters
+

objects – A sequence of objects to be deleted

+
+
+
+ +
+
+filter_fragments(object_ids: List[str], table: Table, quals: Any) List[str]
+

Performs fuzzy filtering on the given object IDs using the index and a set of qualifiers, discarding +objects that definitely do not match the qualifiers.

+
+
Parameters
+
    +
  • object_ids – List of object IDs to filter.

  • +
  • table – A Table object the objects belong to.

  • +
  • quals

    List of qualifiers in conjunctive normal form that will be matched against the index. +Objects that definitely don’t match these qualifiers will be discarded.

    +

    A list containing [[qual_1, qual_2], [qual_3, qual_4]] will be interpreted as +(qual_1 OR qual_2) AND (qual_3 OR qual_4).

    +

    Each qual is a tuple of (column_name, operator, value) where +operator can be one of >, >=, <, <=, =.

    +

    For unknown operators, it will be assumed that all fragments might match that clause.

    +

  • +
+
+
Returns
+

List of objects that might match the given qualifiers.

+
+
+
+ +
+
+generate_object_index(object_id: str, table_schema: List[splitgraph.core.types.TableColumn], changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None) Dict[str, Any]
+

Queries the max/min values of a given fragment for each column, used to speed up querying.

+
+
Parameters
+
    +
  • object_id – ID of an object

  • +
  • table_schema – Schema of the table the object belongs to.

  • +
  • changeset – Optional, if specified, the old row values are included in the index.

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
Returns
+

Dict containing the object index.

+
+
+
+ +
+
+get_min_max_pks(fragments: List[str], table_pks: List[Tuple[str, str]]) List[Tuple[Tuple, Tuple]]
+

Get PK ranges for given fragments using the index (without reading the fragments).

+
+
Parameters
+
    +
  • fragments – List of object IDs (must be registered and with the same schema)

  • +
  • table_pks – List of tuples (column, type) that form the object PK.

  • +
+
+
Returns
+

List of (min, max) PK for every fragment where PK is a tuple. +If a fragment doesn’t exist or doesn’t have a corresponding index entry, +a SplitGraphError is raised.

+
+
+
+ +
+
+record_table_as_base(repository: Repository, table_name: str, image_hash: str, chunk_size: Optional[int] = 10000, source_schema: Optional[str] = None, source_table: Optional[str] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False) List[str]
+

Copies the full table verbatim into one or more new base fragments and registers them.

+
+
Parameters
+
    +
  • repository – Repository

  • +
  • table_name – Table name

  • +
  • image_hash – Hash of the new image

  • +
  • chunk_size – If specified, splits the table into multiple objects with a given number of rows

  • +
  • source_schema – Override the schema the source table is stored in

  • +
  • source_table – Override the name of the table the source is stored in

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Key to sort data inside each chunk by.

  • +
  • overwrite – Overwrite physical objects that already exist.

  • +
+
+
+
+ +
+
+record_table_as_patch(old_table: Table, schema: str, image_hash: str, new_schema_spec: List[splitgraph.core.types.TableColumn] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False) None
+

Flushes the pending changes from the audit table for a given table and records them, +registering the new objects.

+
+
Parameters
+
    +
  • old_table – Table object pointing to the current HEAD table

  • +
  • schema – Schema the table is checked out into.

  • +
  • image_hash – Image hash to store the table under

  • +
  • new_schema_spec – New schema of the table (use the old table’s schema by default).

  • +
  • split_changeset – See Repository.commit for reference

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
+
+ +
+
+split_changeset_boundaries(changeset, change_key, objects)
+
+ +
+ +
+
+splitgraph.core.fragment_manager.get_chunk_groups(chunks: List[Tuple[str, Any, Any]]) List[List[Tuple[str, Any, Any]]]
+

Takes a list of chunks and their boundaries and combines them +into independent groups such that chunks from no two groups +overlap with each other (intervals are assumed to be closed, +e.g. chunk (1,2) overlaps with chunk (2,3)).

+

The original order of chunks is preserved within each group.

+

For example, 4 chunks A, B, C, D that don’t overlap each other +will be grouped into 4 groups [A], [B], [C], [D].

+

If A overlaps B, the result will be [A, B], [C], [D].

+

If in addition B overlaps C (but not A), the result will be [A, B, C], [D].

+

If in addition D overlaps any of A, B or C, the result will be [A, B, C, D] +(despite that D is located before A: it will be last since it was last in the +original list).

+
+
Parameters
+

chunks – List of (chunk_id, start, end)

+
+
Returns
+

List of lists of (chunk_id, start, end)

+
+
+
+ +
+
+

splitgraph.core.image module

+

Image representation and provenance

+
+
+class splitgraph.core.image.Image(image_hash: str, parent_id: Optional[str], created: datetime.datetime, comment: str, provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], repository: Repository)
+

Bases: tuple

+

Represents a Splitgraph image. Should’t be created directly, use Image-loading methods in the +splitgraph.core.repository.Repository class instead.

+
+
+checkout(force: bool = False, layered: bool = False) None
+

Checks the image out, changing the current HEAD pointer. Raises an error +if there are pending changes to its checkout.

+
+
Parameters
+
    +
  • force – Discards all pending changes to the schema.

  • +
  • layered – If True, uses layered querying to check out the image (doesn’t materialize tables +inside of it).

  • +
+
+
+
+ +
+
+comment: str
+

Alias for field number 3

+
+ +
+
+created: datetime.datetime
+

Alias for field number 2

+
+ +
+
+delete_tag(tag: str) None
+

Deletes a tag from an image.

+
+
Parameters
+

tag – Tag to delete.

+
+
+
+ +
+
+property engine
+
+ +
+
+get_log() List[splitgraph.core.image.Image]
+

Repeatedly gets the parent of a given image until it reaches the bottom.

+
+ +
+
+get_parent_children() Tuple[Optional[str], List[str]]
+

Gets the parent and a list of children of a given image.

+
+ +
+
+get_size() int
+

Get the physical size used by the image’s objects (including those that might be +shared with other images).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of image’s +objects have been downloaded.

+
+
Returns
+

Size of the image in bytes.

+
+
+
+ +
+
+get_table(table_name: str) splitgraph.core.table.Table
+

Returns a Table object representing a version of a given table. +Contains a list of objects that the table is linked to and the table’s schema.

+
+
Parameters
+

table_name – Name of the table

+
+
Returns
+

Table object

+
+
+
+ +
+
+get_tables() List[str]
+

Gets the names of all tables inside of an image.

+
+ +
+
+get_tags()
+

Lists all tags that this image has.

+
+ +
+
+image_hash: str
+

Alias for field number 0

+
+ +
+
+lq_checkout(target_schema: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', only_tables: Optional[List[str]] = None) None
+

Intended to be run on the sgr side. Initializes the FDW for all tables in a given image, +allowing to query them directly without materializing the tables.

+
+ +
+
+property object_engine
+
+ +
+
+parent_id: Optional[str]
+

Alias for field number 1

+
+ +
+
+provenance(reverse=False, engine=None) List[Tuple[Repository, str]]
+

Inspects the image’s parent chain to come up with a set of repositories and their hashes +that it was created from.

+

If reverse is True, returns a list of images that were created _from_ this image. If +this image is on a remote repository, engine can be passed in to override the engine +used for the lookup of dependents.

+
+
Returns
+

List of (repository, image_hash)

+
+
+
+ +
+
+provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]
+

Alias for field number 4

+
+ +
+
+query_schema(wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', commit: bool = True) Iterator[str]
+

Creates a temporary schema with tables in this image mounted as foreign tables that can be accessed via +read-only layered querying. On exit from the context manager, the schema is discarded.

+
+
Returns
+

The name of the schema the image is located in.

+
+
+
+ +
+
+repository: Repository
+

Alias for field number 5

+
+ +
+
+set_provenance(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]) None
+

Sets the image’s provenance. Internal function called by the Splitfile interpreter, shouldn’t +be called directly as it changes the image after it’s been created.

+
+
Parameters
+

provenance_data – List of parsed Splitfile commands and their data.

+
+
+
+ +
+
+tag(tag: str) None
+

Tags a given image. All tags are unique inside of a repository. If a tag already exists, it’s removed +from the previous image and given to the new image.

+
+
Parameters
+

tag – Tag to set. ‘latest’ and ‘HEAD’ are reserved tags.

+
+
+
+ +
+
+to_splitfile(ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None) List[str]
+

Recreate the Splitfile that can be used to reconstruct this image.

+
+
Parameters
+
    +
  • ignore_irreproducible – If True, ignore commands from irreproducible Splitfile lines +(like MOUNT or custom commands) and instead emit a comment (this results in an invalid Splitfile).

  • +
  • source_replacement – A dictionary of repositories and image hashes/tags specifying how to replace the +dependencies of this Splitfile (table imports and FROM commands).

  • +
+
+
Returns
+

A list of Splitfile commands that can be fed back into the executor.

+
+
+
+ +
+ +
+
+splitgraph.core.image.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.image.reconstruct_splitfile(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None) List[str]
+

Recreate the Splitfile that can be used to reconstruct an image.

+
+ +
+
+

splitgraph.core.image_manager module

+
+
+class splitgraph.core.image_manager.ImageManager(repository: Repository)
+

Bases: object

+

Collects various image-related functions.

+
+
+add(parent_id: Optional[str], image: str, created: Optional[datetime.datetime] = None, comment: Optional[str] = None, provenance_data: Optional[List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]] = None) None
+

Registers a new image in the Splitgraph image tree.

+

Internal method used by actual image creation routines (committing, importing or pulling).

+
+
Parameters
+
    +
  • parent_id – Parent of the image

  • +
  • image – Image hash

  • +
  • created – Creation time (defaults to current timestamp)

  • +
  • comment – Comment (defaults to empty)

  • +
  • provenance_data – Provenance data that can be used to reconstruct the image.

  • +
+
+
+
+ +
+
+add_batch(images: List[splitgraph.core.image.Image]) None
+

Like add, but registers multiple images at the same time. Used in push/pull +to avoid a roundtrip to the registry for each image +:param images: List of Image objects. Namespace and repository will be patched

+
+

with this repository.

+
+
+ +
+
+by_hash(image_hash: str) splitgraph.core.image.Image
+

Returns an image corresponding to a given (possibly shortened) image hash. If the image hash +is ambiguous, raises an error. If the image does not exist, raises an error or returns None.

+
+
Parameters
+

image_hash – Image hash (can be shortened).

+
+
Returns
+

Image

+
+
+
+ +
+
+by_tag(tag: str, raise_on_none: bool = True) Optional[splitgraph.core.image.Image]
+

Returns an image with a given tag

+
+
Parameters
+
    +
  • tag – Tag. ‘latest’ is a special case: it returns the most recent image in the repository.

  • +
  • raise_on_none – Whether to raise an error or return None if the tag doesn’t exist.

  • +
+
+
+
+ +
+
+delete(images: Iterable[str]) None
+

Deletes a set of Splitgraph images from the repository. Note this doesn’t check whether +this will orphan some other images in the repository and can make the state of the repository +invalid.

+

Image deletions won’t be replicated on push/pull (those can only add new images).

+
+
Parameters
+

images – List of image IDs

+
+
+
+ +
+
+get_all_child_images(start_image: str) Set[str]
+

Get all children of start_image of any degree.

+
+ +
+
+get_all_parent_images(start_images: Set[str]) Set[str]
+

Get all parents of the ‘start_images’ set of any degree.

+
+ +
+ +
+
+

splitgraph.core.metadata_manager module

+

Classes related to managing table/image/object metadata tables.

+
+
+class splitgraph.core.metadata_manager.MetadataManager(metadata_engine: PsycopgEngine)
+

Bases: object

+

A data access layer for the metadata tables in the splitgraph_meta schema that concerns itself +with image, table and object information.

+
+
+cleanup_metadata() List[str]
+

Go through the current metadata and delete all objects that aren’t required +by any table on the engine.

+
+
Returns
+

List of objects that have been deleted.

+
+
+
+ +
+
+delete_object_meta(object_ids: Sequence[str])
+

Delete metadata for multiple objects (external locations, indexes, hashes). +This doesn’t delete physical objects.

+
+
Parameters
+

object_ids – Object IDs to delete

+
+
+
+ +
+
+get_all_objects() List[str]
+

Gets all objects currently in the Splitgraph tree.

+
+
Returns
+

List of object IDs.

+
+
+
+ +
+
+get_external_object_locations(objects: List[str]) List[Tuple[str, str, str]]
+

Gets external locations for objects.

+
+
Parameters
+

objects – List of object IDs stored externally.

+
+
Returns
+

List of (object_id, location, protocol).

+
+
+
+ +
+
+get_new_objects(object_ids: List[str]) List[str]
+

Get object IDs from the passed list that don’t exist in the tree.

+
+
Parameters
+

object_ids – List of objects to check

+
+
Returns
+

List of unknown object IDs.

+
+
+
+ +
+
+get_object_meta(objects: List[str]) Dict[str, splitgraph.core.metadata_manager.Object]
+

Get metadata for multiple Splitgraph objects from the tree

+
+
Parameters
+

objects – List of objects to get metadata for.

+
+
Returns
+

Dictionary of object_id -> Object

+
+
+
+ +
+
+get_objects_for_repository(repository: Repository, image_hash: Optional[str] = None) List[str]
+
+ +
+
+get_unused_objects(threshold: Optional[int] = None) List[Tuple[str, datetime.datetime]]
+

Get a list of all objects in the metadata that aren’t used by any table and can be +safely deleted.

+
+
Parameters
+

threshold – Only return objects that were created earlier than this (in minutes)

+
+
Returns
+

List of objects and their creation times.

+
+
+
+ +
+
+overwrite_table(repository: Repository, image_hash: str, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+
+ +
+
+register_object_locations(object_locations: List[Tuple[str, str, str]]) None
+

Registers external locations (e.g. HTTP or S3) for Splitgraph objects. +Objects must already be registered in the object tree.

+
+
Parameters
+

object_locations – List of (object_id, location, protocol).

+
+
+
+ +
+
+register_objects(objects: List[splitgraph.core.metadata_manager.Object], namespace: Optional[str] = None) None
+

Registers multiple Splitgraph objects in the tree.

+
+
Parameters
+
    +
  • objects – List of Object objects.

  • +
  • namespace – If specified, overrides the original object namespace, required +in the case where the remote repository has a different namespace than the local one.

  • +
+
+
+
+ +
+
+register_tables(repository: Repository, table_meta: List[Tuple[str, str, List[splitgraph.core.types.TableColumn], List[str]]]) None
+

Links tables in an image to physical objects that they are stored as. +Objects must already be registered in the object tree.

+
+
Parameters
+
    +
  • repository – Repository that the tables belong to.

  • +
  • table_meta – A list of (image_hash, table_name, table_schema, object_ids).

  • +
+
+
+
+ +
+ +
+
+class splitgraph.core.metadata_manager.Object(object_id: str, format: str, namespace: str, size: int, created: datetime.datetime, insertion_hash: str, deletion_hash: str, object_index: Dict[str, Any], rows_inserted: int, rows_deleted: int)
+

Bases: tuple

+

Represents a Splitgraph object that tables are composed of.

+
+
+created: datetime.datetime
+

Alias for field number 4

+
+ +
+
+deletion_hash: str
+

Alias for field number 6

+
+ +
+
+format: str
+

Alias for field number 1

+
+ +
+
+insertion_hash: str
+

Alias for field number 5

+
+ +
+
+namespace: str
+

Alias for field number 2

+
+ +
+
+object_id: str
+

Alias for field number 0

+
+ +
+
+object_index: Dict[str, Any]
+

Alias for field number 7

+
+ +
+
+rows_deleted: int
+

Alias for field number 9

+
+ +
+
+rows_inserted: int
+

Alias for field number 8

+
+ +
+
+size: int
+

Alias for field number 3

+
+ +
+ +
+
+

splitgraph.core.migration module

+
+
+splitgraph.core.migration.get_installed_version(engine: PsycopgEngine, schema_name: str, version_table: str = 'version') Optional[Tuple[str, datetime.datetime]]
+
+ +
+
+splitgraph.core.migration.get_version_tuples(filenames: List[str]) List[Tuple[Optional[str], str]]
+
+ +
+
+splitgraph.core.migration.make_file_list(schema_name: str, migration_path: List[Optional[str]])
+

Construct a list of file names from history of versions and schema name

+
+ +
+
+splitgraph.core.migration.set_installed_version(engine: PsycopgEngine, schema_name: str, version: str, version_table: str = 'version')
+
+ +
+
+splitgraph.core.migration.source_files_to_apply(engine: PsycopgEngine, schema_name: str, schema_files: List[str], version_table: str = 'version', static: bool = False, target_version: Optional[str] = None) Tuple[List[str], str]
+

Get the ordered list of .sql files to apply to the database

+
+ +
+
+

splitgraph.core.object_manager module

+

Functions related to creating, deleting and keeping track of physical Splitgraph objects.

+
+
+class splitgraph.core.object_manager.ObjectManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.fragment_manager.FragmentManager

+

Brings the multiple manager classes together and manages the object cache (downloading and uploading +objects as required in order to fulfill certain queries)

+
+
+cleanup() List[str]
+

Deletes all objects in the object_tree not required by any current repository, including their dependencies and +their remote locations. Also deletes all objects not registered in the object_tree.

+
+ +
+
+download_objects(source: Optional[splitgraph.core.object_manager.ObjectManager], objects_to_fetch: List[str], object_locations: List[Tuple[str, str, str]]) List[str]
+

Fetches the required objects from the remote and stores them locally. +Does nothing for objects that already exist.

+
+
Parameters
+
    +
  • source – Remote ObjectManager. If None, will only try to download objects from the external location.

  • +
  • objects_to_fetch – List of object IDs to download.

  • +
  • object_locations – List of custom object locations, encoded as tuples (object_id, object_url, protocol).

  • +
+
+
+
+ +
+
+ensure_objects(table: Optional[Table], objects: Optional[List[str]] = None, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]] = None, defer_release: bool = False, tracer: Optional[splitgraph.core.common.Tracer] = None, upstream_manager: Optional[ObjectManager] = None) Iterator[Union[List[str], Tuple[List[str], splitgraph.core.common.CallbackList]]]
+

Resolves the objects needed to materialize a given table and makes sure they are in the local +splitgraph_meta schema.

+

Whilst inside this manager, the objects are guaranteed to exist. On exit from it, the objects are marked as +unneeded and can be garbage collected.

+
+
Parameters
+
    +
  • table – Table to materialize

  • +
  • objects – List of objects to download: one of table or objects must be specified.

  • +
  • quals – Optional list of qualifiers to be passed to the fragment engine. Fragments that definitely do +not match these qualifiers will be dropped. See the docstring for filter_fragments for the format.

  • +
  • defer_release – If True, won’t release the objects on exit.

  • +
+
+
Returns
+

If defer_release is True: List of table fragments and a callback that the caller must call +when the objects are no longer needed. If defer_release is False: just the list of table fragments.

+
+
+
+ +
+
+get_cache_occupancy() int
+
+
Returns
+

Space occupied by objects cached from external locations, in bytes.

+
+
+
+ +
+
+get_downloaded_objects(limit_to: Optional[List[str]] = None) List[str]
+

Gets a list of objects currently in the Splitgraph cache (i.e. not only existing externally.)

+
+
Parameters
+

limit_to – If specified, only the objects in this list will be returned.

+
+
Returns
+

Set of object IDs.

+
+
+
+ +
+
+get_total_object_size()
+
+
Returns
+

Space occupied by all objects on the engine, in bytes.

+
+
+
+ +
+
+make_objects_external(objects: List[str], handler: str, handler_params: Dict[Any, Any]) None
+

Uploads local objects to an external location and marks them as being cached locally (thus making it possible +to evict or swap them out).

+
+
Parameters
+
    +
  • objects – Object IDs to upload. Will do nothing for objects that already exist externally.

  • +
  • handler – Object handler

  • +
  • handler_params – Extra handler parameters

  • +
+
+
+
+ +
+
+run_eviction(keep_objects: List[str], required_space: Optional[int] = None) None
+

Delete enough objects with zero reference count (only those, since we guarantee that whilst refcount is >0, +the object stays alive) to free at least required_space in the cache.

+
+
Parameters
+
    +
  • keep_objects – List of objects (besides those with nonzero refcount) that can’t be deleted.

  • +
  • required_space – Space, in bytes, to free. If the routine can’t free at least this much space, +it shall raise an exception. If None, removes all eligible objects.

  • +
+
+
+
+ +
+
+upload_objects(target: splitgraph.core.object_manager.ObjectManager, objects_to_push: List[str], handler: str = 'DB', handler_params: Optional[Dict[Any, Any]] = None) Sequence[Tuple[str, Optional[str]]]
+

Uploads physical objects to the remote or some other external location.

+
+
Parameters
+
    +
  • target – Target ObjectManager

  • +
  • objects_to_push – List of object IDs to upload.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote, FILE +to store them in a directory that can be accessed from the client and HTTP to upload them to HTTP.

  • +
  • handler_params – For HTTP, a dictionary &lbrace;“username”: username, “password”, password&rbrace;. For FILE, +a dictionary &lbrace;“path”: path&rbrace; specifying the directory where the objects shall be saved.

  • +
+
+
Returns
+

A list of (object_id, url) that specifies all objects were uploaded (skipping objects that +already exist on the remote).

+
+
+
+ +
+ +
+
+

splitgraph.core.output module

+
+
+splitgraph.core.output.conn_string_to_dict(connection: Optional[str]) Dict[str, Any]
+
+ +
+
+splitgraph.core.output.parse_date(string: str) datetime.date
+
+ +
+
+splitgraph.core.output.parse_dt(string: str) datetime.datetime
+
+ +
+
+splitgraph.core.output.parse_repo_tag_or_hash(value, default='latest')
+
+ +
+
+splitgraph.core.output.parse_time(string: str) time.struct_time
+
+ +
+
+splitgraph.core.output.pluralise(word: str, number: int) str
+

1 banana, 2 bananas

+
+ +
+
+splitgraph.core.output.pretty_size(size: Union[int, float]) str
+

Converts a size in bytes to its string representation (e.g. 1024 -> 1KiB) +:param size: Size in bytes

+
+ +
+
+splitgraph.core.output.slugify(text: str, max_length: int = 50) str
+
+ +
+
+splitgraph.core.output.truncate_line(line: str, length: int = 80) str
+

Truncates a line to a given length, replacing the remainder with …

+
+ +
+
+splitgraph.core.output.truncate_list(items: List[Any], max_entries: int = 10) str
+

Print a list, possibly truncating it to the specified number of entries

+
+ +
+
+

splitgraph.core.registry module

+

Functions for communicating with the remote Splitgraph catalog

+
+
+splitgraph.core.registry.get_info_key(engine: PostgresEngine, key: str) Optional[str]
+

Gets a configuration key from the remote registry, used to notify the client of the registry’s capabilities.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to get

  • +
+
+
+
+ +
+
+splitgraph.core.registry.set_info_key(engine: PostgresEngine, key: str, value: Union[bool, str]) None
+

Sets a configuration value on the remote registry.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to set

  • +
  • value – New value for the key

  • +
+
+
+
+ +
+
+splitgraph.core.registry.setup_registry_mode(engine: PostgresEngine) None
+

Set up access policies/RLS:

+
    +
  • Normal users aren’t allowed to create tables/schemata (can’t do checkouts inside of a registry or +upload SG objects directly to it)

  • +
  • Normal users can’t access the splitgraph_meta schema directly: they’re only supposed to be able to +talk to it via stored procedures in splitgraph_api. Those procedures are set up with SECURITY INVOKER +(run with those users’ credentials) and what they can access is further restricted by RLS:

    +
      +
    • images/tables/tags meta tables: can only create/update/delete records where the namespace = user ID

    • +
    • objects/object_location tables: same. An object (piece of data) becomes owned by the user that creates +it and still remains so even if someone else’s image starts using it. Hence, the original owner can delete +or change it (since they control the external location they’ve uploaded it to anyway).

    • +
    +
  • +
+
+ +
+
+

splitgraph.core.repository module

+

Public API for managing images in a Splitgraph repository.

+
+
+class splitgraph.core.repository.Repository(namespace: str, repository: str, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_manager: Optional[splitgraph.core.object_manager.ObjectManager] = None)
+

Bases: object

+

Splitgraph repository API

+
+
+commit(image_hash: Optional[str] = None, comment: Optional[str] = None, snap_only: bool = False, chunk_size: Optional[int] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]]] = None, in_fragment_order: Optional[Dict[str, List[str]]] = None, overwrite: bool = False) splitgraph.core.image.Image
+

Commits all pending changes to a given repository, creating a new image.

+
+
Parameters
+
    +
  • image_hash – Hash of the commit. Chosen by random if unspecified.

  • +
  • comment – Optional comment to add to the commit.

  • +
  • snap_only – If True, will store the table as a full snapshot instead of delta compression

  • +
  • chunk_size – For tables that are stored as snapshots (new tables and where snap_only has been passed, +the table will be split into fragments of this many rows.

  • +
  • split_changeset – If True, splits the changeset into multiple fragments based on +the PK regions spanned by the current table fragments. For example, if the original table +consists of 2 fragments, first spanning rows 1-10000, second spanning rows 10001-20000 and the +change alters rows 1, 10001 and inserts a row with PK 20001, this will record the change as +3 fragments: one inheriting from the first original fragment, one inheriting from the second +and a brand new fragment. This increases the number of fragments in total but means that fewer rows +will need to be scanned to satisfy a query. +If False, the changeset will be stored as a single fragment inheriting from the last fragment in the +table.

  • +
  • extra_indexes – Dictionary of &lbrace;table: index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Dictionary of &lbrace;table: list of columns&rbrace;. If specified, will

  • +
+
+
+

sort the data inside each chunk by this/these key(s) for each table. +:param overwrite: If an object already exists, will force recreate it.

+
+
Returns
+

The newly created Image object.

+
+
+
+ +
+
+commit_engines() None
+

Commit the underlying transactions on both engines that the repository uses.

+
+ +
+
+delete(unregister: bool = True, uncheckout: bool = True) None
+

Discards all changes to a given repository and optionally all of its history, +as well as deleting the Postgres schema that it might be checked out into. +Doesn’t delete any cached physical objects.

+

After performing this operation, this object becomes invalid and must be discarded, +unless init() is called again.

+
+
Parameters
+
    +
  • unregister – Whether to purge repository history/metadata

  • +
  • uncheckout – Whether to delete the actual checked out repo. This has no effect +if the repository is backed by a registry (rather than a local engine).

  • +
+
+
+
+ +
+
+diff(table_name: str, image_1: Union[splitgraph.core.image.Image, str], image_2: Optional[Union[splitgraph.core.image.Image, str]], aggregate: bool = False) Optional[Union[bool, Tuple[int, int, int], List[Tuple[bool, Tuple]]]]
+

Compares the state of a table in different images by materializing both tables into a temporary space +and comparing them row-to-row.

+
+
Parameters
+
    +
  • table_name – Name of the table.

  • +
  • image_1 – First image hash / object. If None, uses the state of the current staging area.

  • +
  • image_2 – Second image hash / object. If None, uses the state of the current staging area.

  • +
  • aggregate – If True, returns a tuple of integers denoting added, removed and updated rows between +the two images.

  • +
+
+
Returns
+

If the table doesn’t exist in one of the images, returns True if it was added and False if it was +removed. If aggregate is True, returns the aggregation of changes as specified before. +Otherwise, returns a list of changes where each change is a tuple of +(True for added, False for removed, row contents).

+
+
+
+ +
+
+dump(stream: _io.TextIOWrapper, exclude_object_contents: bool = False) None
+

Creates an SQL dump with the metadata required for the repository and all of its objects.

+
+
Parameters
+
    +
  • stream – Stream to dump the data into.

  • +
  • exclude_object_contents – Only dump the metadata but not the actual object contents.

  • +
+
+
+
+ +
+
+classmethod from_schema(schema: str) splitgraph.core.repository.Repository
+

Convert a Postgres schema name of the format namespace/repository to a Splitgraph repository object.

+
+ +
+
+classmethod from_template(template: splitgraph.core.repository.Repository, namespace: Optional[str] = None, repository: Optional[str] = None, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None) splitgraph.core.repository.Repository
+

Create a Repository from an existing one replacing some of its attributes.

+
+ +
+
+get_all_hashes_tags() List[Tuple[Optional[str], str]]
+

Gets all tagged images and their hashes in a given repository.

+
+
Returns
+

List of (image_hash, tag)

+
+
+
+ +
+
+get_local_size() int
+

Get the actual size used by this repository’s downloaded objects.

+

This might still be double-counted if the repository shares objects +with other repositores.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+get_size() int
+

Get the physical size used by the repository’s data, counting objects that are used +by multiple images only once. This is calculated from the metadata, the on-disk +footprint might be smaller if not all of repository’s objects have been downloaded.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+has_pending_changes() bool
+

Detects if the repository has any pending changes (schema changes, table additions/deletions, content changes).

+
+ +
+
+property head: Optional[splitgraph.core.image.Image]
+

Return the HEAD image for the repository or None if the repository isn’t checked out.

+
+ +
+
+property head_strict: splitgraph.core.image.Image
+

Return the HEAD image for the repository. Raise an exception if the repository +isn’t checked out.

+
+ +
+
+images
+

A splitgraph.core.image.ImageManager instance that performs operations +(checkout, delete etc) on this repository’s images.

+
+ +
+
+import_tables(tables: Sequence[str], source_repository: splitgraph.core.repository.Repository, source_tables: Sequence[str], image_hash: Optional[str] = None, foreign_tables: bool = False, do_checkout: bool = True, target_hash: Optional[str] = None, table_queries: Optional[Sequence[bool]] = None, parent_hash: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', skip_validation: bool = False) str
+

Creates a new commit in target_repository with one or more tables linked to already-existing tables. +After this operation, the HEAD of the target repository moves to the new commit and the new tables are +materialized.

+
+
Parameters
+
    +
  • tables – If not empty, must be the list of the same length as source_tables specifying names to store +them under in the target repository.

  • +
  • source_repository – Repository to import tables from.

  • +
  • source_tables – List of tables to import. If empty, imports all tables.

  • +
  • image_hash – Image hash in the source repository to import tables from. +Uses the current source HEAD by default.

  • +
  • foreign_tables – If True, copies all source tables to create a series of new snapshots instead of +treating them as Splitgraph-versioned tables. This is useful for adding brand new tables +(for example, from an FDW-mounted table).

  • +
  • do_checkout – If False, doesn’t check out the newly created image.

  • +
  • target_hash – Hash of the new image that tables is recorded under. If None, gets chosen at random.

  • +
  • table_queries – If not [], it’s treated as a Boolean mask showing which entries in the tables list are +instead SELECT SQL queries that form the target table. The queries have to be non-schema qualified and work +only against tables in the source repository. Each target table created is the result of the respective SQL +query. This is committed as a new snapshot.

  • +
  • parent_hash – If not None, must be the hash of the image to base the new image on. +Existing tables from the parent image are preserved in the new image. If None, the current repository +HEAD is used.

  • +
  • wrapper – Override the default class for the layered querying foreign data wrapper.

  • +
  • skip_validation – Don’t validate SQL used in import statements (used by the Splitfile executor that pre-formats the SQL).

  • +
+
+
Returns
+

Hash that the new image was stored under.

+
+
+
+ +
+
+init() None
+

Initializes an empty repo with an initial commit (hash 0000…)

+
+ +
+
+materialized_table(table_name: str, image_hash: Optional[str]) Iterator[Tuple[str, str]]
+

A context manager that returns a pointer to a read-only materialized table in a given image. +The table is deleted on exit from the context manager.

+
+
Parameters
+
    +
  • table_name – Name of the table

  • +
  • image_hash – Image hash to materialize

  • +
+
+
Returns
+

(schema, table_name) where the materialized table is located.

+
+
+
+ +
+
+objects
+

A splitgraph.core.object_manager.ObjectManager instance that performs operations on +the objects on this repository’s engine (not just objects belonging to this repository).

+
+ +
+
+pull(download_all: Optional[bool] = False, overwrite_objects: bool = False, overwrite_tags: bool = False, single_image: Optional[str] = None) None
+

Synchronizes the state of the local Splitgraph repository with its upstream, optionally downloading all new +objects created on the remote.

+
+
Parameters
+
    +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download +required objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – Limit the download to a single image hash/tag.

  • +
+
+
+
+ +
+
+push(remote_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, reupload_objects: bool = False, overwrite_tags: bool = False, handler: str = 'DB', handler_options: Optional[Dict[str, Any]] = None, single_image: Optional[str] = None) splitgraph.core.repository.Repository
+

Inverse of pull: Pushes all local changes to the remote and uploads new objects.

+
+
Parameters
+
    +
  • remote_repository – Remote repository to push changes to. If not specified, the current +upstream is used.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote or S3 +to store them in an S3 bucket.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the remote repository for existing objects.

  • +
  • reupload_objects – If True, will reupload objects for which metadata is uploaded.

  • +
  • overwrite_tags – If True, will overwrite existing tags on the remote repository.

  • +
  • handler_options – Extra options to pass to the handler. For example, see +splitgraph.hooks.s3.S3ExternalObjectHandler.

  • +
  • single_image – Limit the upload to a single image hash/tag.

  • +
+
+
+
+ +
+
+rollback_engines() None
+

Rollback the underlying transactions on both engines that the repository uses.

+
+ +
+
+run_sql(sql: Union[psycopg2.sql.Composed, str], arguments: Optional[Any] = None, return_shape: splitgraph.engine.ResultShape = ResultShape.MANY_MANY) Any
+

Execute an arbitrary SQL statement inside of this repository’s checked out schema.

+
+ +
+
+set_tags(tags: Dict[str, Optional[str]]) None
+

Sets tags for multiple images.

+
+
Parameters
+

tags – List of (image_hash, tag)

+
+
+
+ +
+
+to_schema() str
+

Returns the engine schema that this repository gets checked out into.

+
+ +
+
+uncheckout(force: bool = False) None
+

Deletes the schema that the repository is checked out into

+
+
Parameters
+

force – Discards all pending changes to the schema.

+
+
+
+ +
+
+property upstream
+

The remote upstream repository that this local repository tracks.

+
+ +
+ +
+
+splitgraph.core.repository.clone(remote_repository: Union[splitgraph.core.repository.Repository, str], local_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, overwrite_tags: bool = False, download_all: Optional[bool] = False, single_image: Optional[str] = None) splitgraph.core.repository.Repository
+

Clones a remote Splitgraph repository or synchronizes remote changes with the local ones.

+

If the target repository has no set upstream engine, the source repository becomes its upstream.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object to clone or the repository’s name. If a name is passed, +the repository will be looked up on the current lookup path in order to find the engine the repository +belongs to.

  • +
  • local_repository – Local repository to clone into. If None, uses the same name as the remote.

  • +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download required +objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – If set, only get a single image with this hash/tag from the source.

  • +
+
+
Returns
+

A locally cloned Repository object.

+
+
+
+ +
+
+splitgraph.core.repository.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.repository.import_table_from_remote(remote_repository: splitgraph.core.repository.Repository, remote_tables: List[str], remote_image_hash: str, target_repository: splitgraph.core.repository.Repository, target_tables: List[Any], target_hash: Optional[str] = None) None
+

Shorthand for importing one or more tables from a yet-uncloned remote. Here, the remote image hash is required, +as otherwise we aren’t necessarily able to determine what the remote head is.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object

  • +
  • remote_tables – List of remote tables to import

  • +
  • remote_image_hash – Image hash to import the tables from

  • +
  • target_repository – Target repository to import the tables to

  • +
  • target_tables – Target table aliases

  • +
  • target_hash – Hash of the image that’s created with the import. Default random.

  • +
+
+
+
+ +
+
+splitgraph.core.repository.table_exists_at(repository: splitgraph.core.repository.Repository, table_name: str, image: Optional[splitgraph.core.image.Image] = None) bool
+

Determines whether a given table exists in a Splitgraph image without checking it out. If image_hash is None, +determines whether the table exists in the current staging area.

+
+ +
+
+

splitgraph.core.server module

+

Routines that are run inside of the engine, +here so that they can get type- and syntax-checked.

+

When inside of an LQFDW shim, these are called directly by the Splitgraph core code +to avoid a redundant connection to the engine.

+
+
+splitgraph.core.server.delete_object_files(object_id: str)
+
+ +
+
+splitgraph.core.server.download_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.get_object_schema(object_id: str) str
+
+ +
+
+splitgraph.core.server.get_object_size(object_id: str) int
+
+ +
+
+splitgraph.core.server.list_objects() List[str]
+
+ +
+
+splitgraph.core.server.object_exists(object_id: str) bool
+
+ +
+
+splitgraph.core.server.rename_object_files(old_object_id: str, new_object_id: str)
+
+ +
+
+splitgraph.core.server.set_object_schema(object_id: str, schema: str)
+
+ +
+
+splitgraph.core.server.upload_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.verify(url: str)
+
+ +
+
+

splitgraph.core.table module

+

Table metadata-related classes.

+
+
+class splitgraph.core.table.QueryPlan(table: splitgraph.core.table.Table, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str])
+

Bases: object

+

Represents the initial query plan (fragments to query) for given columns and +qualifiers.

+
+ +
+
+class splitgraph.core.table.Table(repository: Repository, image: Image, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+

Bases: object

+

Represents a Splitgraph table in a given image. Shouldn’t be created directly, use Table-loading +methods in the splitgraph.core.image.Image class instead.

+
+
+get_length() int
+

Get the number of rows in this table.

+

This might be smaller than the total number of rows in all objects belonging to this +table as some objects might overwrite each other.

+
+
Returns
+

Number of rows in table

+
+
+
+ +
+
+get_query_plan(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str], use_cache: bool = True) splitgraph.core.table.QueryPlan
+

Start planning a query (preliminary steps before object downloading, +like qualifier filtering).

+
+
Parameters
+
    +
  • quals – Qualifiers in CNF form

  • +
  • columns – List of columns

  • +
  • use_cache – If True, will fetch the plan from the cache for the same qualifiers and columns.

  • +
+
+
Returns
+

QueryPlan

+
+
+
+ +
+
+get_size() int
+

Get the physical size used by the table’s objects (including those shared with other tables).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of table’s +objects have been downloaded.

+
+
Returns
+

Size of the table in bytes.

+
+
+
+ +
+
+materialize(destination: str, destination_schema: Optional[str] = None, lq_server: Optional[str] = None, temporary: bool = False) None
+

Materializes a Splitgraph table in the target schema as a normal Postgres table, potentially downloading all +required objects and using them to reconstruct the table.

+
+
Parameters
+
    +
  • destination – Name of the destination table.

  • +
  • destination_schema – Name of the destination schema.

  • +
  • lq_server – If set, sets up a layered querying FDW for the table instead using this foreign server.

  • +
+
+
+
+ +
+
+query(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])
+

Run a read-only query against this table without materializing it.

+

This is a wrapper around query_lazy() that force evaluates the results which +might mean more fragments being materialized that aren’t needed.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

List of dictionaries of results

+
+
+
+ +
+
+query_indirect(columns: List[str], quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]]) Tuple[Iterator[bytes], Callable, splitgraph.core.table.QueryPlan]
+

Run a read-only query against this table without materializing it. Instead of +actual results, this returns a generator of SQL queries that the caller can use +to get the results as well as a callback that the caller has to run after they’re +done consuming the results.

+

In particular, the query generator will prefer returning direct queries to +Splitgraph objects and only when those are exhausted will it start materializing +delta-compressed fragments.

+

This is an advanced method: you probably want to call table.query().

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of queries (bytes), a callback and a query plan object (containing stats +that are fully populated after the callback has been called to end the query).

+
+
+
+ +
+
+query_lazy(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]]) Iterator[Iterator[Dict[str, Any]]]
+

Run a read-only query against this table without materializing it.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of dictionaries of results.

+
+
+
+ +
+
+reindex(extra_indexes: Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]], raise_on_patch_objects=True) List[str]
+

Run extra indexes on all objects in this table and update their metadata. +This only works on objects that don’t have any deletions or upserts (have a deletion hash of 000000…).

+
+
Parameters
+
    +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • raise_on_patch_objects – If True, will raise an exception if any objects in the table +overwrite any other objects. If False, will log a warning but will reindex all non-patch objects.

  • +
+
+
+

:returns List of objects that were reindexed.

+
+ +
+ +
+
+splitgraph.core.table.merge_index_data(current_index: Dict[str, Any], new_index: Dict[str, Any])
+
+ +
+
+

splitgraph.core.types module

+
+
+class splitgraph.core.types.Comparable
+

Bases: object

+
+ +
+
+class splitgraph.core.types.MountError(table_name, error, error_text)
+

Bases: tuple

+
+
+error: str
+

Alias for field number 1

+
+ +
+
+error_text: str
+

Alias for field number 2

+
+ +
+
+table_name: str
+

Alias for field number 0

+
+ +
+ +
+
+class splitgraph.core.types.TableColumn(ordinal, name, pg_type, is_pk, comment)
+

Bases: tuple

+
+
+comment: Optional[str]
+

Alias for field number 4

+
+ +
+
+is_pk: bool
+

Alias for field number 3

+
+ +
+
+name: str
+

Alias for field number 1

+
+ +
+
+ordinal: int
+

Alias for field number 0

+
+ +
+
+pg_type: str
+

Alias for field number 2

+
+ +
+ +
+
+splitgraph.core.types.dict_to_table_schema_params(tables: Dict[str, ExternalTableRequest]) Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]
+
+ +
+
+splitgraph.core.types.get_table_params(table_info: Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]], table_name: str) TableParams
+
+ +
+
+splitgraph.core.types.table_schema_params_to_dict(tables: Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]) Dict[str, Dict[str, Dict[str, Any]]]
+
+ +
+
+splitgraph.core.types.unwrap(result: Dict[str, Union[splitgraph.core.types.MountError, splitgraph.core.types.T]]) Tuple[Dict[str, splitgraph.core.types.T], Dict[str, splitgraph.core.types.MountError]]
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.core.sql.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.core.sql.mdx new file mode 100644 index 00000000..52a7c8fa --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.core.sql.mdx @@ -0,0 +1,118 @@ + + + +export const meta = { + title: "splitgraph.core.sql package", + id: "splitgraph.core.sql package" +}; + +
+

Module contents

+

Routines for managing SQL statements

+
+
+splitgraph.core.sql.insert(table: str, columns: Sequence[str], schema: str = 'splitgraph_meta') psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to insert as a list of strings.

  • +
  • schema – Schema that contains the table

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query (parameterized)

+
+
+
+ +
+
+splitgraph.core.sql.prepare_splitfile_sql(sql: str, image_mapper: Callable) Tuple[str, str]
+

Transform an SQL query to prepare for it to be used in a Splitfile SQL command and validate it. +The rules are:

+
+
    +
  • Only basic DDL (CREATE/ALTER/DROP table) and DML (SELECT/INSERT/UPDATE/DELETE) are permitted.

  • +
  • All tables must be either non-schema qualified (the statement is run with search_path

  • +
+

set to the single schema that a Splitgraph image is checked out into) or have schemata of +format namespace/repository:hash_or_tag. In the second case, the schema is rewritten to point +at a temporary mount of the Splitgraph image.

+
+
+
Parameters
+
    +
  • sql – SQL query

  • +
  • image_mapper – Takes in an image and gives back the schema it should be rewritten to +(for the purposes of execution) and the canonical form of the image.

  • +
+
+
Returns
+

Transformed form of the SQL with substituted schema shims for Splitfile execution +and the canonical form (with e.g. tags resolved into at-the-time full image hashes)

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+
+splitgraph.core.sql.recover_original_schema_name(sql: str, schema_name: str) str
+

Postgres truncates identifiers to 63 characters at parse time and, as pglast +uses bits of PG to parse queries, image names like noaa/climate:64_chars_of_hash +get truncated which can cause ambiguities and issues in provenance. We can’t +get pglast to give us back the full identifier, but we can try and figure out +what it used to be and patch the AST to have it again.

+
+ +
+
+splitgraph.core.sql.select(table: str, columns: str = '*', where: str = '', schema: str = 'splitgraph_meta', table_args: Optional[str] = None) psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to select as a string. WARN: concatenated directly without any formatting.

  • +
  • where – If specified, added to the query with a “WHERE” keyword. WARN also concatenated directly.

  • +
  • schema – Defaults to SPLITGRAPH_META_SCHEMA.

  • +
  • table_args – If specified, appends to the FROM clause after the table specification, +for example, SELECT * FROM “splitgraph_api”.”get_images” (%s, %s) …

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query.

+
+
+
+ +
+
+splitgraph.core.sql.validate_import_sql(sql: str) str
+

Check an SQL query to see if it can be safely used in an IMPORT statement +(e.g. FROM noaa/climate:latest IMPORT &lbrace;SELECT * FROM rainfall WHERE state = ‘AZ’&rbrace; AS rainfall. +In this case, only a single SELECT statement is supported.

+
+
Parameters
+

sql – SQL query

+
+
Returns
+

Canonical (formatted) form of the SQL statement

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.engine.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.engine.mdx new file mode 100644 index 00000000..9585c2cd --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.engine.mdx @@ -0,0 +1,565 @@ + + + +export const meta = { + title: "splitgraph.engine package", + id: "splitgraph.engine package" +}; + +
+

Module contents

+

Defines the interface for a Splitgraph engine (a backing database), including running basic SQL commands, +tracking tables for changes and uploading/downloading tables to other remote engines.

+

By default, Splitgraph is backed by Postgres: see splitgraph.engine.postgres for an example of how to +implement a different engine.

+
+
+class splitgraph.engine.ChangeEngine
+

Bases: splitgraph.engine.SQLEngine, abc.ABC

+

An SQL engine that can perform change tracking on a set of tables.

+
+
+discard_pending_changes(schema, table=None)
+

Discard recorded pending changes for a tracked table or the whole schema

+
+ +
+
+get_change_key(schema: str, table: str) List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_changed_tables(schema)
+

List tracked tables that have pending changes

+
+
Parameters
+

schema – Schema to check for changes

+
+
Returns
+

List of tables with changed contents

+
+
+
+ +
+
+get_pending_changes(schema, table, aggregate=False)
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: tuple with numbers of (added_rows, removed_rows, updated_rows). +If aggregate is False: A changeset. The changeset is a list of +(pk, action (0 for Insert, 1 for Delete, 2 for Update), action_data) +where action_data is None for Delete and &lbrace;‘c’: [column_names], ‘v’: [column_values]&rbrace; that +have been inserted/updated otherwise.

+
+
+
+ +
+
+get_tracked_tables()
+
+
Returns
+

A list of (table_schema, table_name) that the engine currently tracks for changes

+
+
+
+ +
+
+has_pending_changes(schema)
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables)
+

Start engine-specific change tracking on a list of tables.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+
+untrack_tables(tables)
+

Stop engine-specific change tracking on a list of tables and delete any pending changes.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+ +
+
+class splitgraph.engine.ObjectEngine
+

Bases: object

+

Routines for storing/applying objects as well as sharing them with other engines.

+
+
+apply_fragments(objects, target_schema, target_table, extra_quals=None, extra_qual_args=None, schema_spec=None, progress_every: Optional[int] = None)
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids)
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects, remote_engine)
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id, stream, schema)
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+get_object_schema(object_id)
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id)
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+store_fragment(inserted, deleted, schema, table, source_schema, source_table, source_schema_spec)
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args: Optional[Sequence[Any]], overwrite: bool)
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+upload_objects(objects, remote_engine)
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.ResultShape(value)
+

Bases: enum.Enum

+

Shape that the result of a query will be coerced to

+
+
+MANY_MANY = 4
+
+ +
+
+MANY_ONE = 3
+
+ +
+
+NONE = 0
+
+ +
+
+ONE_MANY = 2
+
+ +
+
+ONE_ONE = 1
+
+ +
+ +
+
+class splitgraph.engine.SQLEngine
+

Bases: abc.ABC

+

Abstraction for a Splitgraph SQL backend. Requires any overriding classes to implement run_sql as well as +a few other functions. Together with the information_schema (part of the SQL standard), this class uses those +functions to implement some basic database management methods like listing, deleting, creating, dumping +and loading tables.

+
+
+close()
+

Commit and close the engine’s backing connection

+
+ +
+
+commit()
+

Commit the engine’s backing connection

+
+ +
+
+copy_table(source_schema: str, source_table: str, target_schema: str, target_table: str, with_pk_constraints: bool = True) None
+

Copy a table in the same engine, optionally applying primary key constraints as well.

+
+ +
+
+create_schema(schema: str) None
+

Create a schema if it doesn’t exist

+
+ +
+
+create_table(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False) None
+

Creates a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
+
+ +
+
+delete_schema(schema: str) None
+

Delete a schema if it exists, including all the tables in it.

+
+ +
+
+delete_table(schema: str, table: str) None
+

Drop a table from a schema if it exists

+
+ +
+
+static dump_table_creation(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False) Tuple[psycopg2.sql.Composed, Tuple]
+

Dumps the DDL for a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
Returns
+

An SQL statement that reconstructs the table schema + args to be mogrified into it.

+
+
+
+ +
+
+dump_table_sql(schema, table_name, stream, columns='*', where='', where_args=None, target_schema=None, target_table=None)
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_all_tables(schema: str) List[str]
+

Get all tables in a given schema.

+
+ +
+
+get_full_table_schema(schema: str, table_name: str) List[splitgraph.core.types.TableColumn]
+

Generates a list of (column ordinal, name, data type, is_pk, column comment), +used to detect schema changes like columns being dropped/added/renamed or type changes.

+

NB this doesn’t work for temporary tables (pg_temp) and returns an empty schema.

+
+ +
+
+get_primary_keys(schema, table)
+

Get a list of (column_name, column_type) denoting the primary keys of a given table.

+
+ +
+
+get_table_type(schema: str, table: str) Optional[str]
+

Get the type of the table (BASE or FOREIGN)

+
+ +
+
+initialize()
+

Does any required initialization of the engine

+
+ +
+
+lock_table(schema, table)
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback()
+

Rollback the engine’s backing connection

+
+ +
+
+run_sql(statement, arguments=None, return_shape=ResultShape.MANY_MANY, named=False)
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement, arguments, schema=None)
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+run_sql_in(schema: str, sql: Union[psycopg2.sql.Composed, str], arguments: None = None, return_shape: splitgraph.engine.ResultShape = ResultShape.MANY_MANY) Any
+

Executes a non-schema-qualified query against a specific schema.

+
+
Parameters
+
    +
  • schema – Schema to run the query in

  • +
  • sql – Query

  • +
  • arguments – Query arguments

  • +
  • return_shape – ReturnShape to coerce the result into.

  • +
+
+
+
+ +
+
+savepoint(name: str) Iterator[None]
+

At the beginning of this context manager, a savepoint is initialized and any database +error that occurs in run_sql results in a rollback to this savepoint rather than the +rollback of the whole transaction. At exit, the savepoint is released.

+
+ +
+
+schema_exists(schema: str) bool
+

Check if a schema exists on the engine.

+
+
Parameters
+

schema – Schema name

+
+
+
+ +
+
+table_exists(schema: str, table_name: str) bool
+

Check if a table exists on the engine.

+
+
Parameters
+
    +
  • schema – Schema name

  • +
  • table_name – Table name

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.SavepointStack
+

Bases: _thread._local

+
+ +
+
+splitgraph.engine.get_engine(name: Optional[str] = None, use_socket: bool = False, use_fdw_params: bool = False, autocommit: bool = False) PostgresEngine
+

Get the current global engine or a named remote engine

+
+
Parameters
+
    +
  • name – Name of the remote engine as specified in the config. If None, the current global engine +is returned.

  • +
  • use_socket – Use a local UNIX socket instead of PG_HOST, PG_PORT for LOCAL engine connections.

  • +
  • use_fdw_params – Use the _FDW connection parameters (SG_ENGINE_FDW_HOST/PORT). By default, +will infer from the global splitgraph.config.IN_FDW flag.

  • +
  • autocommit – If True, the engine will not open SQL transactions implicitly.

  • +
+
+
+
+ +
+
+splitgraph.engine.set_engine(engine: PostgresEngine) None
+

Switch the global engine to a different one.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.switch_engine(engine: PostgresEngine) Iterator[None]
+

Switch the global engine to a different one. The engine will +get switched back on exit from the context manager.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.validate_type(t: str) str
+
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.engine.postgres.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.engine.postgres.mdx new file mode 100644 index 00000000..4ebeea1f --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.engine.postgres.mdx @@ -0,0 +1,456 @@ + + + +export const meta = { + title: "splitgraph.engine.postgres package", + id: "splitgraph.engine.postgres package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.engine.postgres.engine module

+

Default Splitgraph engine: uses PostgreSQL to store metadata and actual objects and an audit stored procedure +to track changes, as well as the Postgres FDW interface to upload/download objects to/from other Postgres engines.

+
+
+class splitgraph.engine.postgres.engine.AuditTriggerChangeEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.PsycopgEngine, splitgraph.engine.ChangeEngine

+

Change tracking based on an audit trigger stored procedure

+
+
+discard_pending_changes(schema: str, table: Optional[str] = None) None
+

Discard recorded pending changes for a tracked schema / table

+
+ +
+
+get_changed_tables(schema: str) List[str]
+

Get list of tables that have changed content

+
+ +
+
+get_pending_changes(schema: str, table: str, aggregate: bool = False) Union[List[Tuple[int, int]], List[Tuple[Tuple[str, ...], bool, Dict[str, Any], Dict[str, Any]]]]
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: List of tuples of (change_type, number of rows). +If aggregate is False: List of (primary_key, change_type, change_data)

+
+
+
+ +
+
+get_tracked_tables() List[Tuple[str, str]]
+

Return a list of tables that the audit trigger is working on.

+
+ +
+
+has_pending_changes(schema: str) bool
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables: List[Tuple[str, str]]) None
+

Install the audit trigger on the required tables

+
+ +
+
+untrack_tables(tables: List[Tuple[str, str]]) None
+

Remove triggers from tables and delete their pending changes

+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PostgresEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.AuditTriggerChangeEngine, splitgraph.engine.ObjectEngine

+

An implementation of the Postgres engine for Splitgraph

+
+
+apply_fragments(objects: List[Tuple[str, str]], target_schema: str, target_table: str, extra_quals: Optional[psycopg2.sql.Composed] = None, extra_qual_args: Optional[Tuple[Any, ...]] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, progress_every: Optional[int] = None) None
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids: List[str]) None
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine) List[str]
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id: str, stream: _io.TextIOWrapper, schema: str) None
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+dump_object_creation(object_id: str, schema: str, table: Optional[str] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, if_not_exists: bool = False) bytes
+

Generate the SQL that remounts a foreign table pointing to a Splitgraph object.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • schema – Schema to create the table in

  • +
  • table – Name of the table to mount

  • +
  • schema_spec – Schema of the table

  • +
  • if_not_exists – Add IF NOT EXISTS to the DDL

  • +
+
+
Returns
+

SQL in bytes format.

+
+
+
+ +
+
+get_change_key(schema: str, table: str) List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_object_schema(object_id: str) List[splitgraph.core.types.TableColumn]
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id: str) int
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+mount_object(object_id: str, table: None = None, schema: str = 'splitgraph_meta', schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None) None
+

Mount an object from local storage as a foreign table.

+
+
Parameters
+
    +
  • object_id – ID of the object

  • +
  • table – Table to mount the object into

  • +
  • schema – Schema to mount the object into

  • +
  • schema_spec – Schema of the object.

  • +
+
+
+
+ +
+
+rename_object(old_object_id: str, new_object_id: str)
+
+ +
+
+store_fragment(inserted: Any, deleted: Any, schema: str, table: str, source_schema: str, source_table: str, source_schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None) None
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args=None, overwrite=False) None
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+sync_object_mounts() None
+

Scan through local object storage and synchronize it with the foreign tables in +splitgraph_meta (unmounting non-existing objects and mounting existing ones).

+
+ +
+
+unmount_objects(object_ids: List[str]) None
+

Unmount objects from splitgraph_meta (this doesn’t delete the physical files.

+
+ +
+
+upload_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine) None
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PsycopgEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.SQLEngine

+

Postgres SQL engine backed by a Psycopg connection.

+
+
+close() None
+

Commit and close the engine’s backing connection

+
+ +
+
+close_others() None
+

Close and release all other connections to the connection pool.

+
+ +
+
+commit() None
+

Commit the engine’s backing connection

+
+ +
+
+property connection: Connection
+

Engine-internal Psycopg connection.

+
+ +
+
+copy_cursor()
+

Return a cursor that can be used for copy_expert operations

+
+ +
+
+delete_database(database: str) None
+

Helper function to drop a database using the admin connection

+
+
Parameters
+

database – Database name to drop

+
+
+
+ +
+
+dump_table_sql(schema: str, table_name: str, stream: _io.TextIOWrapper, columns: str = '*', where: str = '', where_args: Optional[Union[List[str], Tuple[str, str]]] = None, target_schema: Optional[str] = None, target_table: Optional[str] = None) None
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_primary_keys(schema: str, table: str) List[Tuple[str, str]]
+

Inspects the Postgres information_schema to get the primary keys for a given table.

+
+ +
+
+in_fdw
+

List of notices issued by the server during the previous execution of run_sql.

+
+ +
+
+initialize(skip_object_handling: bool = False, skip_create_database: bool = False) None
+

Create the Splitgraph Postgres database and install the audit trigger

+
+
Parameters
+
    +
  • skip_object_handling – If True, skips installation of +audit triggers and other object management routines for engines +that don’t need change tracking or checkouts.

  • +
  • skip_create_database – Don’t create the Splitgraph database

  • +
+
+
+
+ +
+
+lock_table(schema: str, table: str) None
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback() None
+

Rollback the engine’s backing connection

+
+ +
+
+run_api_call(call: str, *args, schema: str = 'splitgraph_api') Any
+
+ +
+
+run_api_call_batch(call: str, argslist, schema: str = 'splitgraph_api')
+
+ +
+
+run_chunked_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Sequence[Any], return_shape: Optional[splitgraph.engine.ResultShape] = ResultShape.MANY_MANY, chunk_size: int = 1000, chunk_position: int = - 1) Any
+

Because the Splitgraph API has a request size limitation, certain +SQL calls with variadic arguments are going to be too long to fit that. This function +runs an SQL query against a set of broken up arguments and returns the combined result.

+
+ +
+
+run_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Optional[Sequence[Any]] = None, return_shape: Optional[splitgraph.engine.ResultShape] = ResultShape.MANY_MANY, named: bool = False) Any
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement: Union[psycopg2.sql.Composed, str], arguments: Any, schema: Optional[str] = None, max_size=261000) None
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+property splitgraph_version: Optional[str]
+

Returns the version of the Splitgraph library installed on the engine +and by association the version of the engine itself.

+
+ +
+ +
+
+splitgraph.engine.postgres.engine.add_ud_flag_column(table_schema: List[splitgraph.core.types.TableColumn]) List[splitgraph.core.types.TableColumn]
+
+ +
+
+splitgraph.engine.postgres.engine.chunk(sequence: Sequence[splitgraph.engine.postgres.engine.T], chunk_size: int = 1000) Iterator[List[splitgraph.engine.postgres.engine.T]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_change_key(schema_spec: List[splitgraph.core.types.TableColumn]) List[Tuple[str, str]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_conn_str(conn_params: Dict[str, Optional[str]]) str
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.hooks.data_source.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.hooks.data_source.mdx new file mode 100644 index 00000000..061ae116 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.hooks.data_source.mdx @@ -0,0 +1,531 @@ + + + +export const meta = { + title: "splitgraph.hooks.data_source package", + id: "splitgraph.hooks.data_source package" +}; + +
+

Module contents

+
+
+splitgraph.hooks.data_source.get_data_source(data_source: str) Type[splitgraph.hooks.data_source.base.DataSource]
+

Returns a class for a given data source

+
+ +
+
+splitgraph.hooks.data_source.get_data_sources() List[str]
+

Returns the names of all registered data sources.

+
+ +
+
+splitgraph.hooks.data_source.register_data_source(name: str, data_source_class: Type[splitgraph.hooks.data_source.base.DataSource]) None
+

Returns a data source under a given name.

+
+ +
+ +
+

Submodules

+
+
+

splitgraph.hooks.data_source.base module

+
+
+class splitgraph.hooks.data_source.base.DataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: abc.ABC

+
+
+credentials_schema: Dict[str, Any] = &lbrace;&rbrace;
+
+ +
+
+abstract classmethod get_description() str
+
+ +
+
+abstract classmethod get_name() str
+
+ +
+
+get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
+

Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

+
+ +
+
+abstract introspect() IntrospectionResult
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;&rbrace;
+
+ +
+
+supports_load = False
+
+ +
+
+supports_mount = False
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.LoadableDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+load(repository: Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+
+supports_load = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.MountableDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+abstract mount(schema: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, overwrite: bool = True) Optional[List[splitgraph.core.types.MountError]]
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+supports_mount = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.SyncableDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.LoadableDataSource, splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+supports_load = True
+
+ +
+
+supports_sync = True
+
+ +
+
+sync(repository: Repository, image_hash: Optional[str], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+ +
+
+splitgraph.hooks.data_source.base.get_ingestion_state(repository: Repository, image_hash: Optional[str]) Optional[SyncState]
+
+ +
+
+splitgraph.hooks.data_source.base.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.hooks.data_source.base.prepare_new_image(repository: Repository, hash_or_tag: Optional[str], comment: str = 'Singer tap ingestion') Tuple[Optional[splitgraph.core.image.Image], str]
+
+ +
+
+

splitgraph.hooks.data_source.fdw module

+
+
+class splitgraph.hooks.data_source.fdw.ElasticSearchDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount an ElasticSearch instance.\n\nMount a set of tables proxying to a remote ElasticSearch index.\n\nThis uses a fork of postgres-elasticsearch-fdw behind the scenes. You can add a column\n`query` to your table and set it as `query_column` to pass advanced ES queries and aggregations.\nFor example:\n\n```\nsgr mount elasticsearch target_schema -c elasticsearch:9200 -o@- <<EOF\n    &lbrace;\n      "tables": &lbrace;\n        "table_1": &lbrace;\n          "schema": &lbrace;\n            "id": "text",\n            "@timestamp": "timestamp",\n            "query": "text",\n            "col_1": "text",\n            "col_2": "boolean"\n          &rbrace;,\n          "options": &lbrace;\n              "index": "index-pattern*",\n              "rowid_column": "id",\n              "query_column": "query"\n          &rbrace;\n        &rbrace;\n      &rbrace;\n    &rbrace;\nEOF\n```\n'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': ['string', 'null']&rbrace;, 'username': &lbrace;'type': ['string', 'null']&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'index': &lbrace;'description': 'ES index name or pattern to use, for example, "events-*"', 'type': 'string'&rbrace;, 'query_column': &lbrace;'description': 'Name of the column to use to pass queries in', 'type': 'string'&rbrace;, 'score_column': &lbrace;'description': 'Name of the column with the document score', 'type': 'string'&rbrace;, 'scroll_duration': &lbrace;'description': 'How long to hold the scroll context open for, default 10m', 'type': 'string'&rbrace;, 'scroll_size': &lbrace;'description': 'Fetch size, default 1000', 'type': 'integer'&rbrace;, 'type': &lbrace;'description': 'Pre-ES7 doc_type, not required in ES7 or later', 'type': 'string'&rbrace;&rbrace;, 'required': ['index'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.MountableDataSource, splitgraph.hooks.data_source.base.LoadableDataSource, abc.ABC

+
+
+commandline_help: str = ''
+
+ +
+
+commandline_kwargs_help: str = ''
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs) splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+abstract get_fdw_name()
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options() Mapping[str, str]
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
+
+ +
+
+get_table_schema(table_name: str, table_schema: List[splitgraph.core.types.TableColumn]) List[splitgraph.core.types.TableColumn]
+
+ +
+
+get_user_options() Mapping[str, str]
+
+ +
+
+introspect() IntrospectionResult
+
+ +
+
+mount(schema: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, overwrite: bool = True) Optional[List[splitgraph.core.types.MountError]]
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+preview(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]]) PreviewResult
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MongoDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Mongo database.\n\nMounts one or more collections on a remote Mongo database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'tables: A dictionary of form\n```\n&lbrace;\n    "table_name": &lbrace;\n        "schema": &lbrace;"col1": "type1"...&rbrace;,\n        "options": &lbrace;"database": <dbname>, "collection": <collection>&rbrace; \n    &rbrace; \n&rbrace;\n```\n'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_server_options()
+
+ +
+
+get_table_schema(table_name, table_schema)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'collection': &lbrace;'type': 'string'&rbrace;, 'database': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['database', 'collection'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MySQLDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a MySQL database.\n\nMounts a schema on a remote MySQL database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'dbname: Remote MySQL database name (required)\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n        '
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'type': 'string'&rbrace;, 'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.PostgreSQLDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Postgres database.\n\nMounts a schema on a remote Postgres database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'dbname: Database name (required)\nremote_schema: Remote schema name (required)\nextra_server_args: Dictionary of extra arguments to pass to the foreign server\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n    '
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'description': 'Database name', 'type': 'string'&rbrace;, 'host': &lbrace;'description': 'Remote hostname', 'type': 'string'&rbrace;, 'port': &lbrace;'description': 'Port', 'type': 'integer'&rbrace;, 'remote_schema': &lbrace;'description': 'Remote schema name', 'type': 'string'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname', 'remote_schema'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.hooks.data_source.fdw.create_foreign_table(schema: str, server: str, table_name: str, schema_spec: List[splitgraph.core.types.TableColumn], extra_options: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.hooks.data_source.fdw.import_foreign_schema(engine: PostgresEngine, mountpoint: str, remote_schema: str, server_id: str, tables: List[str], options: Optional[Dict[str, str]] = None) List[splitgraph.core.types.MountError]
+
+ +
+
+splitgraph.hooks.data_source.fdw.init_fdw(engine: PostgresEngine, server_id: str, wrapper: str, server_options: Optional[Mapping[str, Optional[str]]] = None, user_options: Optional[Mapping[str, str]] = None, overwrite: bool = True) None
+

Sets up a foreign data server on the engine.

+
+
Parameters
+
    +
  • engine – PostgresEngine

  • +
  • server_id – Name to call the foreign server, must be unique. Will be deleted if exists.

  • +
  • wrapper – Name of the foreign data wrapper (must be installed as an extension on the engine)

  • +
  • server_options – Dictionary of FDW options

  • +
  • user_options – Dictionary of user options

  • +
  • overwrite – If the server already exists, delete and recreate it.

  • +
+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.hooks.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.hooks.mdx new file mode 100644 index 00000000..36a0539f --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.hooks.mdx @@ -0,0 +1,366 @@ + + + +export const meta = { + title: "splitgraph.hooks package", + id: "splitgraph.hooks package" +}; + +
+

Module contents

+

Various hooks for extending Splitgraph, including:

+
+
    +
  • External object handlers (splitgraph.hooks.external_objects) allowing to download/upload objects +to locations other than the remote Splitgraph engine.

  • +
  • Data sources (splitgraph.hooks.data_sources) that allow to add data to Splitgraph, e.g.

  • +
+
+

using the Postgres engine’s FDW interface to mount other external databases on the engine.

+
+ +
+
+ + +
+

Submodules

+
+
+

splitgraph.hooks.external_objects module

+

Hooks for registering handlers to upload/download objects from external locations into Splitgraph’s cache.

+
+
+class splitgraph.hooks.external_objects.ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: object

+

Framework for allowing to dump objects from the Splitgraph cache to an external location. This allows +the objects to be stored somewhere other than the actual remote engine.

+

External object handlers must extend this class and be registered in the Splitgraph config.

+

For an example of how this can be used, see splitgraph.hooks.s3: it’s a handler allowing objects to be +uploaded to S3/S3-compatible host using the Minio API. It’s registered in the config as follows:

+
[external_handlers]
+S3=splitgraph.hooks.s3.S3ExternalObjectHandler
+
+
+

The protocol and the URLs returned by this handler are stored in splitgraph_meta.external_objects +and used to download the objects back into the Splitgraph cache when they are needed.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine) Sequence[str]
+

Download objects from the external location into the Splitgraph cache.

+
+
Parameters
+
    +
  • objects – List of tuples (object_id, object_url) that this handler had previosly +uploaded the objects to.

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of object IDs that have been successfully downloaded.

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine) Sequence[Tuple[str, str]]
+

Upload objects from the Splitgraph cache to an external location

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of successfully uploaded object IDs and URLs they can be found at.

+
+
+
+ +
+ +
+
+splitgraph.hooks.external_objects.get_external_object_handler(name: str, handler_params: Dict[Any, Any]) splitgraph.hooks.external_objects.ExternalObjectHandler
+

Load an external protocol handler by its name, initializing it with optional parameters.

+
+ +
+
+splitgraph.hooks.external_objects.register_upload_download_handler(name: str, handler_class: Callable[[...], splitgraph.hooks.external_objects.ExternalObjectHandler]) None
+

Register an external protocol handler. See the docstring for get_upload_download_handler for the required +signatures of the handler functions.

+
+ +
+
+

splitgraph.hooks.mount_handlers module

+

Extra wrapper code for mount handlers

+
+
+splitgraph.hooks.mount_handlers.mount(mountpoint: str, mount_handler: str, handler_kwargs: Dict[str, Any], overwrite: bool = True, tables: Optional[TableInfo] = None) None
+

Mounts a foreign database via an FDW (without creating new Splitgraph objects)

+
+
Parameters
+
    +
  • mountpoint – Mountpoint to import the new tables into.

  • +
  • mount_handler – The type of the mounted database.

  • +
  • handler_kwargs – Dictionary of options to pass to the mount handler.

  • +
  • overwrite – Delete the foreign server if it already exists. Used by mount_postgres for data pulls.

  • +
  • tables – List of tables to mount or their schemas

  • +
+
+
+
+ +
+
+splitgraph.hooks.mount_handlers.mount_postgres(mountpoint, **kwargs) None
+

Mount a Postgres database.

+

Mounts a schema on a remote Postgres database as a set of foreign tables locally. +

+
+
Parameters
+
    +
  • mountpoint – Schema to mount the remote into.

  • +
  • server – Database hostname.

  • +
  • port – Port the Postgres server is running on.

  • +
  • username – A read-only user that the database will be accessed as.

  • +
  • password – Password for the read-only user.

  • +
  • dbname – Remote database name.

  • +
  • remote_schema – Remote schema name.

  • +
  • extra_server_args – Dictionary of extra arguments to pass to the foreign server

  • +
  • tables – Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.

  • +
+
+
+

If a dictionary, must have the format &lbrace;“table_name”: &lbrace;“col_1”: “type_1”, …&rbrace;&rbrace;.

+
+ +
+
+

splitgraph.hooks.s3 module

+

Plugin for uploading Splitgraph objects from the cache to an external S3-like object store

+
+
+class splitgraph.hooks.s3.S3ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: splitgraph.hooks.external_objects.ExternalObjectHandler

+

Uploads/downloads the objects to/from S3/S3-compatible host using the Minio client.

+

The handler is “attached” to a given registry which manages issuing pre-signed +GET/PUT URLs.

+

The handler supports a parameter threads specifying the number of threads +used to upload the objects.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine) List[str]
+

Download objects from Minio.

+
+
Parameters
+

objects – List of (object ID, object URL (object ID it’s stored under))

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine) List[Tuple[str, str]]
+

Upload objects to Minio

+
+
Parameters
+
    +
  • remote_engine – Remote Engine class

  • +
  • objects – List of object IDs to upload

  • +
+
+
Returns
+

List of tuples with successfully uploaded objects and their URLs.

+
+
+
+ +
+ +
+
+splitgraph.hooks.s3.get_object_download_urls(remote_engine, remote_object_ids)
+
+ +
+
+splitgraph.hooks.s3.get_object_upload_urls(remote_engine, objects)
+
+ +
+
+

splitgraph.hooks.s3_server module

+

S3 registry-side routines called from the Python stored procedure +that are aware of the actual S3 access creds and generate pre-signed +URLs to upload/download objects.

+
+
+splitgraph.hooks.s3_server.delete_objects(client: minio.api.Minio, object_ids: List[str]) None
+

Delete objects stored in Minio

+
+
Parameters
+
    +
  • client – Minio client

  • +
  • object_ids – List of Splitgraph object IDs to delete

  • +
+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_download_urls(s3_host: str, object_ids: List[str]) List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_upload_urls(s3_host: str, object_ids: List[str]) List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.list_objects(client: minio.api.Minio) List[str]
+

List objects stored in Minio

+
+
Parameters
+

client – Minio client

+
+
Returns
+

List of Splitgraph object IDs

+
+
+
+ +
+
+

splitgraph.hooks.splitfile_commands module

+

A framework for custom Splitfile commands. The execution flow is as follows:

+
+
    +
  • When the Splitfile executor finds an unknown command, it looks for an entry in the config file:

    +
    [commands]
    +RUN=splitgraph.plugins.Run
    +
    +
    +
  • +
  • The command class must extend this class, initialized at every invocation time.

  • +
  • The command’s calc_hash() method is run. The resultant command context hash is combined with the current +image hash to produce the new image hash: if it already exists, then the image is simply checked out.

  • +
  • Otherwise (or if calc_hash is undefined or returns None), execute(), where the actual command should be +implemented, is run. If it returns a hash, this hash is used for the new image. If this hash already exists, +the existing image is checked out instead. If the command returns None, a random hash is generated for the +new image.

  • +
+
+
+
+class splitgraph.hooks.splitfile_commands.PluginCommand
+

Bases: object

+

Base class for custom Splitfile commands.

+
+
+calc_hash(repository, args)
+

Calculates the command context hash for this custom command. If either the command context hash or the +previous image hash has changed, then the image hash produced by this command will change. +Consequently, two commands with the same command context hashes are assumed to have the same effect +on any Splitgraph images.

+

This is supposed to be a lightweight method intended for pre-flight image hash calculations +(without performing the actual transformation). If it returns None, the actual transformation is run anyway.

+

For example, for a command that imports some data from an external URL, this could be the hash of the last +modified timestamp provided by the external data vendor. If the timestamp is unchanged, the data is unchanged +and so actual command won’t be re-executed.

+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits)

+
+
+
+ +
+
+execute(repository, args)
+

Execute the custom command against the target schema, optionally returning the new image hash. The contract +for the command is as follows (though it is not currently enforced by the runtime):

+
+
    +
  • Has to use get_engine().run_sql (or run_sql_batch) to interact with the engine.

  • +
  • Can only write to the schema with the checked-out repository (run_sql runs non-schema-qualified +statements against the correct schema).

  • +
  • Can inspect splitgraph_meta (e.g. to find the current HEAD) for the repository.

  • +
  • Can’t alter the versioning of the repository.

  • +
+
+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits). If calc_hash() had previously returned +a hash, this hash is ignored. If both this command and calc_hash() return None, the hash is randomly +generated.

+
+
+
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.airbyte.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.airbyte.mdx new file mode 100644 index 00000000..a7f933af --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.airbyte.mdx @@ -0,0 +1,652 @@ + + + +export const meta = { + title: "splitgraph.ingestion.airbyte package", + id: "splitgraph.ingestion.airbyte package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.ingestion.airbyte.data_source module

+
+
+class splitgraph.ingestion.airbyte.data_source.AirbyteDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.SyncableDataSource, abc.ABC

+

Generic data source for Airbyte-compliant sources. +We run ingestion by combining an Airbyte source and the Airbyte Postgres destination.

+
+
+airbyte_name: Optional[str] = None
+
+ +
+
+cursor_overrides: Optional[Dict[str, List[str]]] = None
+
+ +
+
+docker_environment: Optional[Dict[str, str]] = None
+
+ +
+
+docker_image: Optional[str] = None
+
+ +
+
+get_airbyte_config() Dict[str, Any]
+
+ +
+
+introspect() IntrospectionResult
+
+ +
+
+load(repository: splitgraph.core.repository.Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+
+normalization_image = 'airbyte/normalization:0.1.36'
+
+ +
+
+primary_key_overrides: Optional[Dict[str, List[str]]] = None
+
+ +
+
+receiver_image = 'airbyte/destination-postgres:latest'
+
+ +
+
+sync(repository: splitgraph.core.repository.Repository, image_hash: Optional[str] = None, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_state: bool = True) str
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'airbyte_cursor_fields': &lbrace;'description': "Fields in this stream to be used as a cursor for incremental replication (overrides Airbyte configuration's cursor_field)", 'items': &lbrace;'type': 'string'&rbrace;, 'type': 'array'&rbrace;, 'airbyte_primary_key_fields': &lbrace;'description': "Fields in this stream to be used as a primary key for deduplication (overrides Airbyte configuration's primary_key)", 'items': &lbrace;'type': 'string'&rbrace;, 'type': 'array'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.ingestion.airbyte.data_source.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+

splitgraph.ingestion.airbyte.docker_utils module

+
+
+exception splitgraph.ingestion.airbyte.docker_utils.SubprocessError
+

Bases: splitgraph.exceptions.SplitGraphError

+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.add_files(container: docker.models.containers.Container, files: List[Tuple[str, str]]) None
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.build_command(files: List[Tuple[str, Any]]) List[str]
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.detect_network_mode(client: docker.client.DockerClient) str
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.remove_at_end(container: docker.models.containers.Container) docker.models.containers.Container
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.wait_not_failed(container: docker.models.containers.Container, mirror_logs: bool = False) None
+

Block until a Docker container exits.

+

:raises SubprocessError if the container exited with a non-zero code.

+
+ +
+
+

splitgraph.ingestion.airbyte.models module

+
+
+class splitgraph.ingestion.airbyte.models.AirbyteCatalog(*, streams: List[splitgraph.ingestion.airbyte.models.AirbyteStream], **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+streams: List[splitgraph.ingestion.airbyte.models.AirbyteStream]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus(*, status: splitgraph.ingestion.airbyte.models.Status, message: str = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+message: Optional[str]
+
+ +
+
+status: splitgraph.ingestion.airbyte.models.Status
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteLogMessage(*, level: splitgraph.ingestion.airbyte.models.Level, message: str, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+level: splitgraph.ingestion.airbyte.models.Level
+
+ +
+
+message: str
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteMessage(*, type: splitgraph.ingestion.airbyte.models.Type, log: splitgraph.ingestion.airbyte.models.AirbyteLogMessage = None, spec: splitgraph.ingestion.airbyte.models.ConnectorSpecification = None, connectionStatus: splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus = None, catalog: splitgraph.ingestion.airbyte.models.AirbyteCatalog = None, record: splitgraph.ingestion.airbyte.models.AirbyteRecordMessage = None, state: splitgraph.ingestion.airbyte.models.AirbyteStateMessage = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+catalog: Optional[splitgraph.ingestion.airbyte.models.AirbyteCatalog]
+
+ +
+
+connectionStatus: Optional[splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus]
+
+ +
+
+log: Optional[splitgraph.ingestion.airbyte.models.AirbyteLogMessage]
+
+ +
+
+record: Optional[splitgraph.ingestion.airbyte.models.AirbyteRecordMessage]
+
+ +
+
+spec: Optional[splitgraph.ingestion.airbyte.models.ConnectorSpecification]
+
+ +
+
+state: Optional[splitgraph.ingestion.airbyte.models.AirbyteStateMessage]
+
+ +
+
+type: splitgraph.ingestion.airbyte.models.Type
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteProtocol(*, airbyte_message: splitgraph.ingestion.airbyte.models.AirbyteMessage = None, configured_airbyte_catalog: splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog = None)
+

Bases: pydantic.main.BaseModel

+
+
+airbyte_message: Optional[splitgraph.ingestion.airbyte.models.AirbyteMessage]
+
+ +
+
+configured_airbyte_catalog: Optional[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteRecordMessage(*, stream: str, data: Dict[str, Any], emitted_at: int, namespace: str = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+data: Dict[str, Any]
+
+ +
+
+emitted_at: int
+
+ +
+
+namespace: Optional[str]
+
+ +
+
+stream: str
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteStateMessage(*, data: Dict[str, Any], **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+data: Dict[str, Any]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteStream(*, name: str, json_schema: Dict[str, Any], supported_sync_modes: List[splitgraph.ingestion.airbyte.models.SyncMode] = None, source_defined_cursor: bool = None, default_cursor_field: List[str] = None, source_defined_primary_key: List[List[str]] = None, namespace: str = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+default_cursor_field: Optional[List[str]]
+
+ +
+
+json_schema: Dict[str, Any]
+
+ +
+
+name: str
+
+ +
+
+namespace: Optional[str]
+
+ +
+
+source_defined_cursor: Optional[bool]
+
+ +
+
+source_defined_primary_key: Optional[List[List[str]]]
+
+ +
+
+supported_sync_modes: Optional[List[splitgraph.ingestion.airbyte.models.SyncMode]]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog(*, streams: List[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream], **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+streams: List[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream(*, stream: splitgraph.ingestion.airbyte.models.AirbyteStream, sync_mode: splitgraph.ingestion.airbyte.models.SyncMode, cursor_field: List[str] = None, destination_sync_mode: splitgraph.ingestion.airbyte.models.DestinationSyncMode, primary_key: List[List[str]] = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+cursor_field: Optional[List[str]]
+
+ +
+
+destination_sync_mode: splitgraph.ingestion.airbyte.models.DestinationSyncMode
+
+ +
+
+primary_key: Optional[List[List[str]]]
+
+ +
+
+stream: splitgraph.ingestion.airbyte.models.AirbyteStream
+
+ +
+
+sync_mode: splitgraph.ingestion.airbyte.models.SyncMode
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.ConnectorSpecification(*, documentationUrl: pydantic.networks.AnyUrl = None, changelogUrl: pydantic.networks.AnyUrl = None, connectionSpecification: Dict[str, Any], supportsIncremental: bool = None, supportsNormalization: bool = False, supportsDBT: bool = False, supported_destination_sync_modes: List[splitgraph.ingestion.airbyte.models.DestinationSyncMode] = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+changelogUrl: Optional[pydantic.networks.AnyUrl]
+
+ +
+
+connectionSpecification: Dict[str, Any]
+
+ +
+
+documentationUrl: Optional[pydantic.networks.AnyUrl]
+
+ +
+
+supported_destination_sync_modes: Optional[List[splitgraph.ingestion.airbyte.models.DestinationSyncMode]]
+
+ +
+
+supportsDBT: Optional[bool]
+
+ +
+
+supportsIncremental: Optional[bool]
+
+ +
+
+supportsNormalization: Optional[bool]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.DestinationSyncMode(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+append = 'append'
+
+ +
+
+append_dedup = 'append_dedup'
+
+ +
+
+overwrite = 'overwrite'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.Level(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+DEBUG = 'DEBUG'
+
+ +
+
+ERROR = 'ERROR'
+
+ +
+
+FATAL = 'FATAL'
+
+ +
+
+INFO = 'INFO'
+
+ +
+
+TRACE = 'TRACE'
+
+ +
+
+WARN = 'WARN'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.Status(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+FAILED = 'FAILED'
+
+ +
+
+SUCCEEDED = 'SUCCEEDED'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.SyncMode(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+full_refresh = 'full_refresh'
+
+ +
+
+incremental = 'incremental'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.Type(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+CATALOG = 'CATALOG'
+
+ +
+
+CONNECTION_STATUS = 'CONNECTION_STATUS'
+
+ +
+
+LOG = 'LOG'
+
+ +
+
+RECORD = 'RECORD'
+
+ +
+
+SPEC = 'SPEC'
+
+ +
+
+STATE = 'STATE'
+
+ +
+ +
+
+

splitgraph.ingestion.airbyte.utils module

+
+
+splitgraph.ingestion.airbyte.utils.get_pk_cursor_fields(stream: splitgraph.ingestion.airbyte.models.AirbyteStream, table_params: TableParams, cursor_overrides: Optional[Dict[str, List[str]]] = None, primary_key_overrides: Optional[Dict[str, List[str]]] = None) Tuple[Optional[List[str]], Optional[List[List[str]]]]
+
+ +
+
+splitgraph.ingestion.airbyte.utils.get_sg_schema(stream: splitgraph.ingestion.airbyte.models.AirbyteStream) List[splitgraph.core.types.TableColumn]
+
+ +
+
+splitgraph.ingestion.airbyte.utils.select_streams(catalog: splitgraph.ingestion.airbyte.models.AirbyteCatalog, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]], sync: bool = False, cursor_overrides: Optional[Dict[str, List[str]]] = None, primary_key_overrides: Optional[Dict[str, List[str]]] = None) splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.csv.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.csv.mdx new file mode 100644 index 00000000..d658a2be --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.csv.mdx @@ -0,0 +1,299 @@ + + + +export const meta = { + title: "splitgraph.ingestion.csv package", + id: "splitgraph.ingestion.csv package" +}; + +
+

Module contents

+
+
+class splitgraph.ingestion.csv.CSVDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount CSV files in S3/HTTP.\n\nIf passed an URL, this will live query a CSV file on an HTTP server. If passed\nS3 access credentials, this will scan a bucket for CSV files, infer their schema\nand make them available to query over SQL.  \n\nFor example:  \n\n\x08\n```\nsgr mount csv target_schema -o@- <<EOF\n  &lbrace;\n    "s3_endpoint": "cdn.mycompany.com:9000",\n    "s3_access_key": "ABCDEF",\n    "s3_secret_key": "GHIJKL",\n    "s3_bucket": "data",\n    "s3_object_prefix": "csv_files/current/",\n    "autodetect_header": true,\n    "autodetect_dialect": true,\n    "autodetect_encoding": true\n  &rbrace;\nEOF\n```\n'
+
+ +
+
+commandline_kwargs_help: str = "s3_access_key:\ns3_secret_key:\nurl: HTTP URL to the CSV file.\ns3_endpoint: S3 endpoint (including port if required).\ns3_region: Region of the S3 bucket.\ns3_secure: Whether to use HTTPS for S3 access.\ns3_bucket: Bucket the object is in.\ns3_object: Limit the import to a single object.\ns3_object_prefix: Prefix for object in S3 bucket.\nautodetect_header: Detect whether the CSV file has a header automatically.\nautodetect_dialect: Detect the CSV file's dialect (separator, quoting characters etc) automatically.\nautodetect_encoding: Detect the CSV file's encoding automatically.\nautodetect_sample_size: Sample size, in bytes, for encoding/dialect/header detection.\nschema_inference_rows: Number of rows to use for schema inference.\nencoding: Encoding of the CSV file.\nignore_decode_errors: Ignore errors when decoding the file.\nheader: First line of the CSV file is its header.\ndelimiter: Character used to separate fields in the file.\nquotechar: Character used to quote fields."
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'s3_access_key': &lbrace;'type': 'string'&rbrace;, 's3_secret_key': &lbrace;'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs) splitgraph.ingestion.csv.CSVDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
+

Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'oneOf': [&lbrace;'required': ['url']&rbrace;, &lbrace;'required': ['s3_endpoint', 's3_bucket']&rbrace;], 'properties': &lbrace;'autodetect_dialect': &lbrace;'description': "Detect the CSV file's dialect (separator, quoting characters etc) automatically", 'type': 'boolean'&rbrace;, 'autodetect_encoding': &lbrace;'description': "Detect the CSV file's encoding automatically", 'type': 'boolean'&rbrace;, 'autodetect_header': &lbrace;'description': 'Detect whether the CSV file has a header automatically', 'type': 'boolean'&rbrace;, 'autodetect_sample_size': &lbrace;'description': 'Sample size, in bytes, for encoding/dialect/header detection', 'type': 'integer'&rbrace;, 'delimiter': &lbrace;'description': 'Character used to separate fields in the file', 'type': 'string'&rbrace;, 'encoding': &lbrace;'description': 'Encoding of the CSV file', 'type': 'string'&rbrace;, 'header': &lbrace;'description': 'First line of the CSV file is its header', 'type': 'boolean'&rbrace;, 'ignore_decode_errors': &lbrace;'description': 'Ignore errors when decoding the file', 'type': 'boolean'&rbrace;, 'quotechar': &lbrace;'description': 'Character used to quote fields', 'type': 'string'&rbrace;, 's3_bucket': &lbrace;'description': 'Bucket the object is in', 'type': 'string'&rbrace;, 's3_endpoint': &lbrace;'description': 'S3 endpoint (including port if required)', 'type': 'string'&rbrace;, 's3_object': &lbrace;'description': 'Limit the import to a single object', 'type': 'string'&rbrace;, 's3_object_prefix': &lbrace;'description': 'Prefix for object in S3 bucket', 'type': 'string'&rbrace;, 's3_region': &lbrace;'description': 'Region of the S3 bucket', 'type': 'string'&rbrace;, 's3_secure': &lbrace;'description': 'Whether to use HTTPS for S3 access', 'type': 'boolean'&rbrace;, 'schema_inference_rows': &lbrace;'description': 'Number of rows to use for schema inference', 'type': 'integer'&rbrace;, 'url': &lbrace;'description': 'HTTP URL to the CSV file', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'s3_object': &lbrace;'description': 'S3 object of the CSV file', 'type': 'string'&rbrace;, 'url': &lbrace;'description': 'HTTP URL to the CSV file', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.ingestion.csv.CSVIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.csv.copy_csv_buffer(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = False, **kwargs)
+

Copy CSV data from a buffer into a given schema/table

+
+ +
+
+splitgraph.ingestion.csv.query_to_csv(engine: PsycopgEngine, query, buffer, schema: Optional[str] = None)
+
+ +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.csv.common module

+
+
+class splitgraph.ingestion.csv.common.CSVOptions(autodetect_header, autodetect_dialect, autodetect_encoding, autodetect_sample_size, schema_inference_rows, delimiter, quotechar, header, encoding, ignore_decode_errors)
+

Bases: tuple

+
+
+autodetect_dialect: bool
+

Alias for field number 1

+
+ +
+
+autodetect_encoding: bool
+

Alias for field number 2

+
+ +
+
+autodetect_header: bool
+

Alias for field number 0

+
+ +
+
+autodetect_sample_size: int
+

Alias for field number 3

+
+ +
+
+delimiter: str
+

Alias for field number 5

+
+ +
+
+encoding: str
+

Alias for field number 8

+
+ +
+
+classmethod from_fdw_options(fdw_options)
+
+ +
+
+header: bool
+

Alias for field number 7

+
+ +
+
+ignore_decode_errors: bool
+

Alias for field number 9

+
+ +
+
+quotechar: str
+

Alias for field number 6

+
+ +
+
+schema_inference_rows: int
+

Alias for field number 4

+
+ +
+
+to_csv_kwargs()
+
+ +
+
+to_table_options()
+

Turn this into a dict of table options that can be plugged back into CSVDataSource.

+
+ +
+ +
+
+splitgraph.ingestion.csv.common.autodetect_csv(stream: io.RawIOBase, csv_options: splitgraph.ingestion.csv.common.CSVOptions) splitgraph.ingestion.csv.common.CSVOptions
+

Autodetect the CSV dialect, encoding, header etc.

+
+ +
+
+splitgraph.ingestion.csv.common.bool_to_str(boolean: bool) str
+
+ +
+
+splitgraph.ingestion.csv.common.get_bool(params: Dict[str, Any], key: str, default: bool = True) bool
+
+ +
+
+splitgraph.ingestion.csv.common.get_s3_params(fdw_options: Dict[str, Any]) Tuple[minio.api.Minio, str, str]
+
+ +
+
+splitgraph.ingestion.csv.common.make_csv_reader(response: io.IOBase, csv_options: splitgraph.ingestion.csv.common.CSVOptions) Tuple[splitgraph.ingestion.csv.common.CSVOptions, _csv._reader]
+
+ +
+
+

splitgraph.ingestion.csv.fdw module

+
+
+class splitgraph.ingestion.csv.fdw.CSVForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+

Foreign data wrapper for CSV files stored in S3 buckets or HTTP

+
+
+can_sort(sortkeys)
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+
+ +
+
+classmethod import_schema(schema, srv_options, options, restriction_type, restricts)
+
+ +
+ +
+
+splitgraph.ingestion.csv.fdw.report_errors(table_name: str)
+

Context manager that ignores exceptions and serializes them to JSON using PG’s notice +mechanism instead. The data source is meant to load these to report on partial failures +(e.g. failed to load one table, but not others).

+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.mdx new file mode 100644 index 00000000..f6c6988a --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.mdx @@ -0,0 +1,222 @@ + + + +export const meta = { + title: "splitgraph.ingestion package", + id: "splitgraph.ingestion package" +}; + +
+

Module contents

+
+ + +
+

Submodules

+
+
+

splitgraph.ingestion.common module

+
+
+class splitgraph.ingestion.common.IngestionAdapter
+

Bases: object

+
+
+abstract create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+abstract data_to_new_table(data, engine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+abstract query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+
+to_data(query: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)
+
+ +
+
+to_table(data, repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True, no_header: bool = False, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.common.build_commandline_help(json_schema)
+
+ +
+
+splitgraph.ingestion.common.dedupe_sg_schema(schema_spec: List[splitgraph.core.types.TableColumn], prefix_len: int = 59) List[splitgraph.core.types.TableColumn]
+

Some foreign schemas have columns that are longer than 63 characters +where the first 63 characters are the same between several columns +(e.g. odn.data.socrata.com). This routine renames columns in a schema +to make sure this can’t happen (by giving duplicates a number suffix).

+
+ +
+
+splitgraph.ingestion.common.generate_column_names(schema_spec: List[splitgraph.core.types.TableColumn], prefix: str = 'col_') List[splitgraph.core.types.TableColumn]
+

Replace empty column names with autogenerated ones

+
+ +
+
+splitgraph.ingestion.common.merge_tables(engine: splitgraph.engine.postgres.engine.PsycopgEngine, source_schema: str, source_table: str, source_schema_spec: List[splitgraph.core.types.TableColumn], target_schema: str, target_table: str, target_schema_spec: List[splitgraph.core.types.TableColumn])
+
+ +
+
+splitgraph.ingestion.common.schema_compatible(source_schema: List[splitgraph.core.types.TableColumn], target_schema: List[splitgraph.core.types.TableColumn]) bool
+

Quick check to see if a dataframe with target_schema can be written into source_schema. +There are some implicit type conversions that SQLAlchemy/Pandas can do so we don’t want to immediately fail +if the column types aren’t exactly the same (eg bigint vs numeric etc). Most errors should be caught by PG itself.

+

Schema is a list of (ordinal, name, type, is_pk).

+
+ +
+
+

splitgraph.ingestion.inference module

+
+
+splitgraph.ingestion.inference.infer_sg_schema(sample: Sequence[Sequence[str]], override_types: Optional[Dict[str, str]] = None, primary_keys: Optional[List[str]] = None)
+
+ +
+
+splitgraph.ingestion.inference.parse_bigint(integer: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_boolean(boolean: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_int(integer: str)
+
+ +
+
+

splitgraph.ingestion.pandas module

+

Routines that ingest/export CSV files to/from Splitgraph images using Pandas

+
+
+class splitgraph.ingestion.pandas.PandasIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.pandas.df_to_table(df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True) None
+

Writes a Pandas DataFrame to a checked-out Splitgraph table. Doesn’t create a new image.

+
+
Parameters
+
    +
  • df – Pandas DataFrame to insert.

  • +
  • repository – Splitgraph Repository object. Must be checked out.

  • +
  • table – Table name.

  • +
  • if_exists – Behaviour if the table already exists: ‘patch’ means that primary keys that already exist in the

  • +
+
+
+

table will be updated and ones that don’t will be inserted. ‘replace’ means that the table will be dropped and +recreated. +:param schema_check: If False, skips checking that the dataframe is compatible with the target schema.

+
+ +
+
+splitgraph.ingestion.pandas.df_to_table_fast(engine: PsycopgEngine, df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], target_schema: str, target_table: str)
+
+ +
+
+splitgraph.ingestion.pandas.sql_to_df(sql: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs) pandas.core.frame.DataFrame
+

Executes an SQL query against a Splitgraph image, returning the result.

+

Extra **kwargs are passed to Pandas’ read_sql_query.

+
+
Parameters
+
    +
  • sql – SQL query to execute.

  • +
  • image – Image object, image hash/tag (str) or None (use the currently checked out image).

  • +
  • repository – Repository the image belongs to. Must be set if image is a hash/tag or None.

  • +
  • use_lq – Whether to use layered querying or check out the image if it’s not checked out.

  • +
+
+
Returns
+

A Pandas dataframe.

+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.singer.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.singer.mdx new file mode 100644 index 00000000..1a73e5ee --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.singer.mdx @@ -0,0 +1,243 @@ + + + +export const meta = { + title: "splitgraph.ingestion.singer package", + id: "splitgraph.ingestion.singer package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.ingestion.singer.commandline module

+

Command line tools for building Splitgraph images from Singer taps, including using Splitgraph as a Singer target.

+
+
+

splitgraph.ingestion.singer.common module

+
+
+splitgraph.ingestion.singer.common.add_timestamp_tags(repository: splitgraph.core.repository.Repository, image_hash: str)
+
+ +
+
+splitgraph.ingestion.singer.common.log_exception(f)
+

Emit exceptions with full traceback instead of just the error text

+
+ +
+
+splitgraph.ingestion.singer.common.rollback_at_end(func: collections.abc.Callable) collections.abc.Callable
+
+ +
+
+splitgraph.ingestion.singer.common.store_ingestion_state(repository: splitgraph.core.repository.Repository, image_hash: str, current_state: Optional[Dict[str, Any]], new_state: str)
+
+ +
+
+

splitgraph.ingestion.singer.data_source module

+
+
+class splitgraph.ingestion.singer.data_source.GenericSingerDataSource(*args, **kwargs)
+

Bases: splitgraph.ingestion.singer.data_source.SingerDataSource

+
+
+credentials_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_singer_executable()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'tap_path': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['tap_path'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.ingestion.singer.data_source.MySQLSingerDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.ingestion.singer.data_source.SingerDataSource

+
+
+build_singer_catalog(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'user': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['user', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_singer_executable()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'replication_method': &lbrace;'enum': ['INCREMENTAL', 'LOG_BASED', 'FULL TABLE'], 'type': 'string'&rbrace;&rbrace;, 'required': ['host', 'port', 'replication_method'], 'type': 'object'&rbrace;
+
+ +
+
+use_legacy_stream_selection = False
+
+ +
+
+use_properties = True
+
+ +
+ +
+
+class splitgraph.ingestion.singer.data_source.SingerDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.SyncableDataSource, abc.ABC

+
+
+build_singer_catalog(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, Any]
+
+ +
+
+get_singer_config()
+
+ +
+
+abstract get_singer_executable()
+
+ +
+
+introspect() IntrospectionResult
+
+ +
+
+load(repository: splitgraph.core.repository.Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+
+sync(repository: splitgraph.core.repository.Repository, image_hash: Optional[str] = None, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_state: bool = True) str
+
+ +
+
+use_legacy_stream_selection = False
+
+ +
+
+use_properties = False
+
+ +
+ +
+
+splitgraph.ingestion.singer.data_source.select_streams(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_legacy_stream_selection=False) Dict[str, Any]
+
+ +
+
+

splitgraph.ingestion.singer.db_sync module

+
+
+class splitgraph.ingestion.singer.db_sync.DbSyncProxy(*args, **kwargs)
+

Bases: target_postgres.db_sync.DbSync

+
+
+create_indices(stream)
+
+ +
+
+create_schema_if_not_exists(table_columns_cache=None)
+
+ +
+
+delete_rows(stream)
+
+ +
+
+load_csv(file, count, size_bytes)
+
+ +
+
+sync_table()
+
+ +
+ +
+
+splitgraph.ingestion.singer.db_sync.db_sync_wrapper(image: splitgraph.core.image.Image, staging_schema: str)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.get_key_properties(stream_message)
+

Extract the PK from a stream message. Supports both legacy (“key_properties”) and +new (“metadata”) Singer taps.

+
+ +
+
+splitgraph.ingestion.singer.db_sync.get_sg_schema(stream_schema_message, flattening_max_level=0)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.get_table_name(stream_schema_message)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.run_patched_sync(repository: splitgraph.core.repository.Repository, base_image: Optional[splitgraph.core.image.Image], new_image_hash: str, delete_old: bool, failure: str, input_stream: Optional[BinaryIO] = None, output_stream: Optional[TextIO] = None)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.select_breadcrumb(stream_message, breadcrumb)
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.snowflake.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.snowflake.mdx new file mode 100644 index 00000000..d92bf9c2 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.snowflake.mdx @@ -0,0 +1,92 @@ + + + +export const meta = { + title: "splitgraph.ingestion.snowflake package", + id: "splitgraph.ingestion.snowflake package" +}; + +
+

Module contents

+
+
+class splitgraph.ingestion.snowflake.SnowflakeDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Snowflake database.\n\nThis will mount a remote Snowflake schema or a table. You can also get a mounted table to point to the result of a subquery that will be executed on the Snowflake instance. For example:\n\n\x08\n```\n$ sgr mount snowflake test_snowflake -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "password": "password",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "schema": "TPCH_SF100"\n    "envvars": &lbrace;"HTTPS_PROXY": "http://proxy.company.com"&rbrace;\n&rbrace;\nEOF\n\x08\n$ sgr mount snowflake test_snowflake_subquery -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "private_key": "MIIEvQIBAD...",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "tables": &lbrace;\n        "balances": &lbrace;\n            "schema": &lbrace;\n                "n_nation": "varchar",\n                "segment": "varchar",\n                "avg_balance": "numeric"\n            &rbrace;,\n            "options": &lbrace;\n                "subquery": "SELECT n_nation AS nation, c_mktsegment AS segment, AVG(c_acctbal) AS avg_balance FROM TPCH_SF100.customer c JOIN TPCH_SF100.nation n ON c_nationkey = n_nationkey"\n            &rbrace;\n        &rbrace;\n    &rbrace;\n&rbrace;\nEOF\n```\n    '
+
+ +
+
+commandline_kwargs_help: str = "username: Username. Required.\npassword: Password.\naccount: Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html. Required.\nprivate_key: Private key in PEM format.\ndatabase: Snowflake database name. Required.\nschema: Snowflake schema.\nwarehouse: Warehouse name.\nrole: Role.\nbatch_size: Default fetch size for remote queries.\nenvvars: Environment variables to set on the engine side.\nThe schema parameter is required when subquery isn't used."
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'oneOf': [&lbrace;'required': ['password']&rbrace;, &lbrace;'required': ['private_key']&rbrace;], 'properties': &lbrace;'account': &lbrace;'description': 'Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html', 'type': 'string'&rbrace;, 'password': &lbrace;'description': 'Password', 'type': 'string'&rbrace;, 'private_key': &lbrace;'description': 'Private key in PEM format', 'type': 'string'&rbrace;, 'username': &lbrace;'description': 'Username', 'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'account'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'description': 'Default fetch size for remote queries', 'type': 'integer'&rbrace;, 'database': &lbrace;'description': 'Snowflake database name', 'type': 'string'&rbrace;, 'envvars': &lbrace;'description': 'Environment variables to set on the engine side', 'type': 'object'&rbrace;, 'role': &lbrace;'description': 'Role', 'type': 'string'&rbrace;, 'schema': &lbrace;'description': 'Snowflake schema', 'type': 'string'&rbrace;, 'warehouse': &lbrace;'description': 'Warehouse name', 'type': 'string'&rbrace;&rbrace;, 'required': ['database'], 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'subquery': &lbrace;'description': 'Subquery for this table to run on the server side', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.socrata.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.socrata.mdx new file mode 100644 index 00000000..5268940d --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.ingestion.socrata.mdx @@ -0,0 +1,182 @@ + + + +export const meta = { + title: "splitgraph.ingestion.socrata package", + id: "splitgraph.ingestion.socrata package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.ingestion.socrata.fdw module

+

Module imported by Multicorn on the Splitgraph engine server: a foreign data wrapper +that communicates to Socrata datasets using sodapy.

+
+
+class splitgraph.ingestion.socrata.fdw.SocrataForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+
+
+can_sort(sortkeys)
+
+
Parameters
+

sortkeys – List of SortKey

+
+
Returns
+

List of SortKey the FDW can sort on

+
+
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+

Method called from the planner to estimate the resulting relation +size for a scan. +It will help the planner in deciding between different types of plans, +according to their costs. +Args:

+
+
+
quals (list): A list of Qual instances describing the filters

applied to this scan.

+
+
+

columns (list): The list of columns that must be returned.

+
+
+
Returns:

A tuple of the form (expected_number_of_rows, avg_row_width (in bytes))

+
+
+
+ +
+
+property table_meta
+
+ +
+ +
+
+splitgraph.ingestion.socrata.fdw.to_json(row, columns, column_map)
+
+ +
+
+

splitgraph.ingestion.socrata.mount module

+

Splitgraph mount handler for Socrata datasets

+
+
+class splitgraph.ingestion.socrata.mount.SocrataDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'app_token': &lbrace;'description': 'Socrata app token, optional', 'type': ['string', 'null']&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs) splitgraph.ingestion.socrata.mount.SocrataDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
+

Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'description': 'Amount of rows to fetch from Socrata per request (limit parameter). Maximum 50000.', 'type': 'integer'&rbrace;, 'domain': &lbrace;'description': 'Socrata domain, for example, data.albanyny.gov', 'type': 'string'&rbrace;&rbrace;, 'required': ['domain'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'socrata_id': &lbrace;'description': 'Socrata dataset ID, e.g. xzkq-xp2w', 'type': 'string'&rbrace;&rbrace;, 'required': ['socrata_id'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.ingestion.socrata.mount.generate_socrata_mount_queries(sought_ids, datasets, mountpoint, server_id, tables: Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]])
+
+ +
+
+

splitgraph.ingestion.socrata.querying module

+
+
+splitgraph.ingestion.socrata.querying.cols_to_socrata(cols, column_map: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.ingestion.socrata.querying.estimate_socrata_rows_width(columns, metadata, column_map=None)
+

Estimate number of rows required for a query and each row’s width +from the table metadata.

+
+ +
+
+splitgraph.ingestion.socrata.querying.quals_to_socrata(quals, column_map: Optional[Dict[str, str]] = None)
+

Convert a list of Multicorn quals to a SoQL query

+
+ +
+
+splitgraph.ingestion.socrata.querying.socrata_to_sg_schema(metadata: Dict[str, Any]) Tuple[List[splitgraph.core.types.TableColumn], Dict[str, str]]
+
+ +
+
+splitgraph.ingestion.socrata.querying.sortkeys_to_socrata(sortkeys, column_map: Optional[Dict[str, str]] = None)
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.mdx new file mode 100644 index 00000000..fedd47da --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.mdx @@ -0,0 +1,369 @@ + + + +export const meta = { + title: "splitgraph package", + id: "splitgraph package" +}; + +
+

Module contents

+
+ +
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

splitgraph.exceptions module

+

Exceptions that can be raised by the Splitgraph library.

+
+
+exception splitgraph.exceptions.APICompatibilityError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions related to API incompatibilities

+
+ +
+
+exception splitgraph.exceptions.AuthAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by the Auth API

+
+ +
+
+exception splitgraph.exceptions.CheckoutError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to checking out/committing repositories

+
+ +
+
+exception splitgraph.exceptions.DataSourceError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by mount handlers.

+
+ +
+
+exception splitgraph.exceptions.DockerUnavailableError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Could not connect to the Docker daemon.

+
+ +
+
+exception splitgraph.exceptions.EngineInitializationError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when the engine isn’t initialized (no splitgraph_meta schema or audit triggers)

+
+ +
+
+exception splitgraph.exceptions.EngineSetupError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised on various setup issues with the Splitgraph engine

+
+ +
+
+exception splitgraph.exceptions.ExternalHandlerError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by external object handlers.

+
+ +
+
+exception splitgraph.exceptions.GQLAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

GQL API errors

+
+ +
+
+exception splitgraph.exceptions.GQLRepoDoesntExistError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Repository doesn’t exist

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthenticatedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthenticated (user not logged in)

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthorizedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthorized (e.g. repository isn’t writeable by the user)

+
+ +
+
+exception splitgraph.exceptions.ImageNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph image doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectDownloadError(reason: Optional[BaseException], successful_objects: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during download of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectUploadError(reason: Optional[BaseException], successful_objects: List[str], successful_object_urls: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during upload of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.ObjectCacheError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Issues with the object cache (not enough space)

+
+ +
+
+exception splitgraph.exceptions.ObjectIndexingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to indexing objects

+
+ +
+
+exception splitgraph.exceptions.ObjectMountingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to incompatible objects.

+
+ +
+
+exception splitgraph.exceptions.ObjectNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when a physical object doesn’t exist in the cache.

+
+ +
+
+exception splitgraph.exceptions.RepositoryNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph repository doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.SplitGraphError
+

Bases: Exception

+

A generic Splitgraph exception.

+
+ +
+
+exception splitgraph.exceptions.SplitfileError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Generic error class for Splitfile interpretation/execution errors.

+
+ +
+
+exception splitgraph.exceptions.TableNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A table doesn’t exist in an image

+
+ +
+
+exception splitgraph.exceptions.UnsupportedSQLError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised for unsupported SQL statements, for example, containing schema-qualified tables when the statement +is supposed to be used in an SQL/IMPORT Splitfile command.

+
+ +
+
+splitgraph.exceptions.get_exception_name(o)
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.splitfile.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.splitfile.mdx new file mode 100644 index 00000000..aa5c8716 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.splitfile.mdx @@ -0,0 +1,89 @@ + + + +export const meta = { + title: "splitgraph.splitfile package", + id: "splitgraph.splitfile package" +}; + +
+

Module contents

+

Splitfile interpreter: a set of tools on top of the core Splitgraph versioning and image management to give +the user a Dockerfile-like experience for building Splitgraph images (caching, consistent hashing, a declarative +language).

+
+ +
+

Submodules

+
+
+

splitgraph.splitfile.execution module

+

Functions for executing Splitfiles.

+
+
+class splitgraph.splitfile.execution.ImageMapper(object_engine: splitgraph.engine.postgres.engine.PostgresEngine)
+

Bases: object

+
+
+get_provenance_data() Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]
+
+ +
+
+setup_lq_mounts() None
+
+ +
+
+teardown_lq_mounts() None
+
+ +
+ +
+
+splitgraph.splitfile.execution.execute_commands(commands: str, params: Optional[Dict[str, str]] = None, output: Optional[splitgraph.core.repository.Repository] = None, output_base: str = '00000000000000000000000000000000') None
+

Executes a series of Splitfile commands.

+
+
Parameters
+
    +
  • commands – A string with the raw Splitfile.

  • +
  • params – A dictionary of parameters to be applied to the Splitfile ($&lbrace;PARAM&rbrace; is replaced with the specified +parameter value).

  • +
  • output – Output repository to execute the Splitfile against.

  • +
  • output_base – If not None, a revision that gets checked out for all Splitfile actions to be committed +on top of it.

  • +
+
+
+
+ +
+
+splitgraph.splitfile.execution.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.splitfile.execution.prevalidate_imports(table_names: List[str], table_queries: List[bool]) List[str]
+
+ +
+
+splitgraph.splitfile.execution.rebuild_image(image: splitgraph.core.image.Image, source_replacement: Dict[splitgraph.core.repository.Repository, str]) None
+

Recreates the Splitfile used to create a given image and reruns it, replacing its dependencies with a different +set of versions.

+
+
Parameters
+
    +
  • image – Image object

  • +
  • source_replacement – A map that specifies replacement images/tags for repositories that the image depends on

  • +
+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.utils.mdx b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.utils.mdx new file mode 100644 index 00000000..9fb976e3 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.15/splitgraph.utils.mdx @@ -0,0 +1,46 @@ + + + +export const meta = { + title: "splitgraph.utils package", + id: "splitgraph.utils package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.utils.docker module

+
+
+splitgraph.utils.docker.copy_to_container(container: Container, source_path: Optional[str], target_path: str, data: Optional[bytes] = None) None
+

Copy a file into a Docker container

+
+
Parameters
+
    +
  • container – Container object

  • +
  • source_path – Source file path

  • +
  • target_path – Target file path (in the container)

  • +
+
+
Returns
+

+
+
+
+ +
+
+splitgraph.utils.docker.get_docker_client()
+

Wrapper around client.from_env() that also pings the daemon +to make sure it can connect and if not, raises an error.

+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/metadata.json b/content/docs/9500_python-api/9000_versions/v0.2.16/metadata.json new file mode 100644 index 00000000..dfab661f --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.16", + "updated_at": "2022-01-20T00:00:41.035Z", + "release": { + "id": 48066336, + "tag_name": "v0.2.16", + "target_commitish": "e7553fcf76b6a34ac0d396e407f122d7cd2a6e59", + "created_at": "2021-08-18T17:39:35Z", + "published_at": "2021-08-18T19:13:55Z", + "assets": [ + { + "id": 42751073, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/42751073", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-08-18T18:52:44Z", + "updated_at": "2021-08-18T18:52:45Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.16/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/modules.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/modules.mdx new file mode 100644 index 00000000..c3aa0a36 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/modules.mdx @@ -0,0 +1,118 @@ + + + +export const meta = { + title: "splitgraph", + id: "splitgraph" +}; + +
+ +
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.cloud.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.cloud.mdx new file mode 100644 index 00000000..e1e0c66c --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.cloud.mdx @@ -0,0 +1,875 @@ + + + +export const meta = { + title: "splitgraph.cloud package", + id: "splitgraph.cloud package" +}; + +
+

Module contents

+

Public API for interacting with the Splitgraph registry

+
+
+splitgraph.cloud.AuthAPIClient(*args, **kwargs)
+
+ +
+
+class splitgraph.cloud.GQLAPIClient(remote: Optional[str], endpoint: Optional[str] = None, access_token: Optional[str] = None)
+

Bases: object

+

Wrapper class for select Splitgraph Registry GQL operations that can be +called from the CLI

+
+
+property access_token: Optional[str]
+
+ +
+
+bulk_upsert_metadata(namespace_list: List[str], repository_list: List[str], metadata_list: List[splitgraph.cloud.models.Metadata])
+
+ +
+
+find_repository(query: str, limit: int = 10) Tuple[int, List[Tuple[str, str, str]]]
+
+ +
+
+get_external_metadata(namespace: str, repository: str) Optional[splitgraph.cloud.models.ExternalResponse]
+
+ +
+
+get_metadata(namespace: str, repository: str) Optional[splitgraph.cloud.models.MetadataResponse]
+
+ +
+
+load_all_repositories(limit_to: Optional[List[str]] = None) List[splitgraph.cloud.models.Repository]
+
+ +
+
+upsert_description(namespace: str, repository: str, description: str)
+
+ +
+
+upsert_metadata(namespace: str, repository: str, metadata: splitgraph.cloud.models.Metadata)
+

Update metadata for a single repository.

+
+ +
+
+upsert_readme(namespace: str, repository: str, readme: str)
+
+ +
+
+upsert_topics(namespace: str, repository: str, topics: List[str])
+
+ +
+ +
+
+class splitgraph.cloud.RESTAPIClient(remote: str)
+

Bases: object

+

Client for various Splitgraph Registry REST APIs: auth token generation, external repo setup…

+
+
+property access_token: str
+

Will return an up-to-date access token by either getting it from +the configuration file or contacting the auth service for a new one. +Will write the new access token into the configuration file.

+
+
Returns
+

Access token.

+
+
+
+ +
+
+bulk_upsert_external(repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest])
+
+ +
+
+create_machine_credentials(access_token: str, password: str) requests.models.Response
+

Generate a key and secret that can be used to log into the Splitgraph registry +via a normal Postgres connection. The secret must be stored in the user’s local +configuration file (it’s not stored on Splitgraph servers).

+
+
Parameters
+
    +
  • access_token – Access token

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (key, secret).

+
+
+
+ +
+
+ensure_external_credential(credential_data: Dict[str, Any], credential_name: str, plugin_name: str) str
+

Store a credential for accessing an external data source +in Splitgraph Cloud and return its ID

+
+ +
+
+get_access_token(refresh_token: str) requests.models.Response
+

Get a new access token from a refresh token.

+
+
Parameters
+

refresh_token – Refresh token

+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_access_token_from_api(api_key: str, api_secret: str) requests.models.Response
+

Get a new access token from API keys

+
+
Parameters
+
    +
  • api_key – API key

  • +
  • api_secret – API secret

  • +
+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_latest_version() Optional[str]
+
+ +
+
+get_refresh_token(username: str, password: str) requests.models.Response
+

Get a long-lived refresh token and a short-lived access token from the API.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (access_token, refresh_token).

+
+
+
+ +
+
+list_external_credentials() splitgraph.cloud.models.ListExternalCredentialsResponse
+
+ +
+
+register(username: str, password: str, email: str, accept_tos: bool) requests.models.Response
+

Register a new Splitgraph user.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
  • email – Email

  • +
  • accept_tos – Accept the Terms of Service if they exist

  • +
+
+
+
+ +
+
+tos() requests.models.Response
+

Get a Terms of Service message from the registry (if accepting ToS is required) +:return: Link to the Terms of Service or None

+
+ +
+ +
+
+splitgraph.cloud.expect_result(result: List[str], ignore_status_codes: Optional[List[int]] = None) Callable[[Callable[[...], requests.models.Response]], Callable[[...], Union[str, Tuple[str]]]]
+

A decorator that can be wrapped around a function returning a requests.Response with a JSON body. +If the request has failed, it will extract the “error” from the JSON response and raise an AuthAPIError.

+
+
Parameters
+
    +
  • result – Items to extract. Will raise an AuthAPIError if not all items were fetched.

  • +
  • ignore_status_codes – If one of these status codes is returned (e.g. 404), +it gets ignored and a None is returned instead.

  • +
+
+
Returns
+

Tuple of items enumerated in the result list. If there’s only one item, it will +return just that item.

+
+
+
+ +
+
+splitgraph.cloud.get_headers()
+
+ +
+
+splitgraph.cloud.get_remote_param(remote: str, key: str) str
+
+ +
+
+splitgraph.cloud.get_token_claim(jwt, claim)
+

Extract a claim from a JWT token without validating it.

+
+ +
+
+splitgraph.cloud.handle_gql_errors(func: Callable[[...], requests.models.Response]) Callable[[...], requests.models.Response]
+

A decorator that handles responses from the GQL API, transforming errors into exceptions.

+
+ +
+ +
+

Submodules

+
+
+

splitgraph.cloud.models module

+

Definitions for the repositories.yml format that’s used to batch-populate a Splitgraph catalog +with repositories and their metadata.

+
+
+class splitgraph.cloud.models.AddExternalCredentialRequest(*, credential_name: str, credential_data: Dict[str, Any], plugin_name: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_data: Dict[str, Any]
+
+ +
+
+credential_name: str
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+class splitgraph.cloud.models.AddExternalRepositoriesRequest(*, repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest])
+

Bases: pydantic.main.BaseModel

+
+
+repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest]
+
+ +
+ +
+
+class splitgraph.cloud.models.AddExternalRepositoryRequest(*, namespace: str, repository: str, plugin_name: str, params: Params, is_live: bool, tables: Dict[str, splitgraph.cloud.models.ExternalTableRequest] = None, credential_id: str = None, schedule: splitgraph.cloud.models.IngestionSchedule = None)
+

Bases: pydantic.main.BaseModel

+
+
+credential_id: Optional[str]
+
+ +
+
+classmethod from_external(namespace: str, repository: str, external: splitgraph.cloud.models.External, credential_map: Optional[Dict[str, str]] = None)
+
+ +
+
+is_live: bool
+
+ +
+
+namespace: str
+
+ +
+
+params: Params
+
+ +
+
+plugin_name: str
+
+ +
+
+repository: str
+
+ +
+
+schedule: Optional[splitgraph.cloud.models.IngestionSchedule]
+
+ +
+
+tables: Optional[Dict[str, splitgraph.cloud.models.ExternalTableRequest]]
+
+ +
+ +
+
+class splitgraph.cloud.models.Credential(*, plugin: str, data: Dict[str, Any])
+

Bases: pydantic.main.BaseModel

+
+
+data: Dict[str, Any]
+
+ +
+
+plugin: str
+
+ +
+ +
+
+class splitgraph.cloud.models.External(*, credential_id: str = None, credential: str = None, plugin: str, params: Dict[str, Any], tables: Dict[str, splitgraph.cloud.models.Table], is_live: bool = True, schedule: splitgraph.cloud.models.IngestionSchedule = None)
+

Bases: pydantic.main.BaseModel

+
+
+credential: Optional[str]
+
+ +
+
+credential_id: Optional[str]
+
+ +
+
+is_live: bool
+
+ +
+
+params: Dict[str, Any]
+
+ +
+
+plugin: str
+
+ +
+
+schedule: Optional[splitgraph.cloud.models.IngestionSchedule]
+
+ +
+
+tables: Dict[str, splitgraph.cloud.models.Table]
+
+ +
+ +
+
+class splitgraph.cloud.models.ExternalResponse(*, namespace: str, repository: str, credentialId: str = None, dataSource: str, params: Dict[str, Any], tableParams: Dict[str, Any], externalImageByNamespaceAndRepository: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class ExternalImageResponse(*, imageByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class ImageResponse(*, tablesByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class TablesResponse(*, nodes: List[splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse.Node])
+

Bases: pydantic.main.BaseModel

+
+
+class Node(*, tableName: str, tableSchema: List[splitgraph.core.types.TableColumn])
+

Bases: pydantic.main.BaseModel

+
+
+tableName: str
+
+ +
+
+tableSchema: List[splitgraph.core.types.TableColumn]
+
+ +
+ +
+
+nodes: List[splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse.Node]
+
+ +
+ +
+
+tablesByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse
+
+ +
+ +
+
+imageByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse
+
+ +
+ +
+
+credentialId: Optional[str]
+
+ +
+
+dataSource: str
+
+ +
+
+externalImageByNamespaceAndRepository: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse
+
+ +
+
+classmethod from_response(response) List[splitgraph.cloud.models.ExternalResponse]
+
+ +
+
+namespace: str
+
+ +
+
+params: Dict[str, Any]
+
+ +
+
+repository: str
+
+ +
+
+tableParams: Dict[str, Any]
+
+ +
+
+to_external() splitgraph.cloud.models.External
+
+ +
+ +
+
+class splitgraph.cloud.models.ExternalTableRequest(*, options: Dict[str, Any] = &lbrace;&rbrace;, schema: Dict[str, str] = None)
+

Bases: pydantic.main.BaseModel

+
+
+options: Dict[str, Any]
+
+ +
+
+schema_: Optional[Dict[str, str]]
+
+ +
+ +
+
+class splitgraph.cloud.models.IngestionSchedule(*, schedule: str, enabled: bool = True)
+

Bases: pydantic.main.BaseModel

+
+
+schedule: str
+
+ +
+ +
+
+class splitgraph.cloud.models.ListExternalCredentialsResponse(*, credentials: List[splitgraph.cloud.models.ListExternalCredentialsResponse.ExternalCredential])
+

Bases: pydantic.main.BaseModel

+
+
+class ExternalCredential(*, plugin_name: str, credential_name: str = None, credential_id: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_id: str
+
+ +
+
+credential_name: Optional[str]
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+credentials: List[splitgraph.cloud.models.ListExternalCredentialsResponse.ExternalCredential]
+
+ +
+ +
+
+class splitgraph.cloud.models.Metadata(*, readme: Optional[Union[str, splitgraph.cloud.models.Metadata.Readme]] = None, description: str = None, topics: List[str] = None, sources: List[splitgraph.cloud.models.Source] = None, license: str = None, extra_metadata: Dict[str, Any] = None)
+

Bases: pydantic.main.BaseModel

+
+
+class Readme(*, file: str = None, text: str = None)
+

Bases: pydantic.main.BaseModel

+
+
+file: Optional[str]
+
+ +
+
+text: Optional[str]
+
+ +
+ +
+
+description: Optional[str]
+
+ +
+
+extra_metadata: Optional[Dict[str, Any]]
+
+ +
+
+license: Optional[str]
+
+ +
+
+readme: Optional[Union[str, splitgraph.cloud.models.Metadata.Readme]]
+
+ +
+
+sources: Optional[List[splitgraph.cloud.models.Source]]
+
+ +
+
+topics: Optional[List[str]]
+
+ +
+ +
+
+class splitgraph.cloud.models.MetadataResponse(*, namespace: str, repository: str, repoTopicsByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse, repoProfileByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class RepoProfileResponse(*, readme: str = None, description: str = None, topics: List[str] = None, sources: List[splitgraph.cloud.models.Source] = None, license: str = None, metadata: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse.MetadataResponse = None)
+

Bases: pydantic.main.BaseModel

+
+
+class MetadataResponse(*, created_at: str = None, updated_at: str = None, upstream_metadata: Dict[str, Any])
+

Bases: pydantic.main.BaseModel

+
+
+created_at: Optional[str]
+
+ +
+
+updated_at: Optional[str]
+
+ +
+
+upstream_metadata: Dict[str, Any]
+
+ +
+ +
+
+description: Optional[str]
+
+ +
+
+license: Optional[str]
+
+ +
+
+metadata: Optional[splitgraph.cloud.models.MetadataResponse.RepoProfileResponse.MetadataResponse]
+
+ +
+
+readme: Optional[str]
+
+ +
+
+sources: Optional[List[splitgraph.cloud.models.Source]]
+
+ +
+
+topics: Optional[List[str]]
+
+ +
+ +
+
+class RepoTopicsResponse(*, nodes: List[splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse.RepositoryTopics])
+

Bases: pydantic.main.BaseModel

+
+
+class RepositoryTopics(*, topic: str)
+

Bases: pydantic.main.BaseModel

+
+
+topic: str
+
+ +
+ +
+
+nodes: List[splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse.RepositoryTopics]
+
+ +
+ +
+
+classmethod from_response(response) List[splitgraph.cloud.models.MetadataResponse]
+
+ +
+
+namespace: str
+
+ +
+
+repoProfileByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse
+
+ +
+
+repoTopicsByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse
+
+ +
+
+repository: str
+
+ +
+
+to_metadata() splitgraph.cloud.models.Metadata
+
+ +
+ +
+
+class splitgraph.cloud.models.RepositoriesYAML(*, repositories: List[splitgraph.cloud.models.Repository], credentials: Dict[str, splitgraph.cloud.models.Credential] = None)
+

Bases: pydantic.main.BaseModel

+
+
+credentials: Optional[Dict[str, splitgraph.cloud.models.Credential]]
+
+ +
+
+repositories: List[splitgraph.cloud.models.Repository]
+
+ +
+ +
+
+class splitgraph.cloud.models.Repository(*, namespace: str, repository: str, metadata: splitgraph.cloud.models.Metadata = None, external: splitgraph.cloud.models.External = None)
+

Bases: pydantic.main.BaseModel

+
+
+external: Optional[splitgraph.cloud.models.External]
+
+ +
+
+metadata: Optional[splitgraph.cloud.models.Metadata]
+
+ +
+
+namespace: str
+
+ +
+
+repository: str
+
+ +
+ +
+
+class splitgraph.cloud.models.Source(*, anchor: str, href: str, isCreator: bool = None, isSameAs: bool = None)
+

Bases: pydantic.main.BaseModel

+
+
+anchor: str
+
+ +
+
+href: str
+
+ +
+
+isCreator: Optional[bool]
+
+ +
+
+isSameAs: Optional[bool]
+
+ +
+ +
+
+class splitgraph.cloud.models.Table(*, options: Dict[str, Any], schema: List[splitgraph.cloud.models.Table.Column])
+

Bases: pydantic.main.BaseModel

+
+
+class Column(*, name: str, type: str, comment: str = None)
+

Bases: pydantic.main.BaseModel

+
+
+comment: Optional[str]
+
+ +
+
+name: str
+
+ +
+
+pg_type: str
+
+ +
+ +
+
+options: Dict[str, Any]
+
+ +
+
+schema_: List[splitgraph.cloud.models.Table.Column]
+
+ +
+ +
+
+class splitgraph.cloud.models.UpdateExternalCredentialRequest(*, credential_id: str, credential_name: str, credential_data: Dict[str, Any], plugin_name: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_data: Dict[str, Any]
+
+ +
+
+credential_id: str
+
+ +
+
+credential_name: str
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+class splitgraph.cloud.models.UpdateExternalCredentialResponse(*, credential_id: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_id: str
+
+ +
+ +
+
+splitgraph.cloud.models.make_repositories(metadata_responses: List[splitgraph.cloud.models.MetadataResponse], external_responses: List[splitgraph.cloud.models.ExternalResponse]) List[splitgraph.cloud.models.Repository]
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.commandline.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.commandline.mdx new file mode 100644 index 00000000..52f62035 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.commandline.mdx @@ -0,0 +1,335 @@ + + + +export const meta = { + title: "splitgraph.commandline package", + id: "splitgraph.commandline package" +}; + +
+

Module contents

+

Splitgraph command line client

+

Hooks into the API to allow management of Splitgraph repositories and images using sgr.

+
+
+class splitgraph.commandline.ClickHandler(level=0)
+

Bases: logging.Handler

+
+
+emit(record)
+

Do whatever it takes to actually log the specified logging record.

+

This version is intended to be implemented by subclasses and so +raises a NotImplementedError.

+
+ +
+ +
+
+class splitgraph.commandline.WithExceptionHandler(name=None, commands=None, **attrs)
+

Bases: click.core.Group

+
+
+get_command(ctx, cmd_name)
+

Given a context and a command name, this returns a +Command object if it exists or returns None.

+
+ +
+
+invoke(ctx)
+

Given a context, this invokes the attached callback (if it exists) +in the right way.

+
+ +
+ +
+ +
+

Submodules

+
+
+

splitgraph.commandline.cloud module

+

Command line routines related to registering/setting up connections to the Splitgraph registry.

+
+
+

splitgraph.commandline.common module

+

Various common functions used by the command line interface.

+
+
+class splitgraph.commandline.common.Color
+

Bases: object

+

An enumeration of console colors

+
+
+BLUE = '\x1b[94m'
+
+ +
+
+BOLD = '\x1b[1m'
+
+ +
+
+CYAN = '\x1b[96m'
+
+ +
+
+DARKCYAN = '\x1b[36m'
+
+ +
+
+END = '\x1b[0m'
+
+ +
+
+GREEN = '\x1b[92m'
+
+ +
+
+PURPLE = '\x1b[95m'
+
+ +
+
+RED = '\x1b[91m'
+
+ +
+
+UNDERLINE = '\x1b[4m'
+
+ +
+
+YELLOW = '\x1b[93m'
+
+ +
+ +
+
+class splitgraph.commandline.common.ImageType(default: Optional[str] = 'latest', repository_exists: bool = False, get_image: bool = False)
+

Bases: click.types.ParamType

+

Parser that extracts the full image specification (repository and hash/tag).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context]) Tuple[Repository, Optional[Union[Image, str]]]
+

Image specification must have the format [NAMESPACE/]REPOSITORY[:HASH_OR_TAG].

+

The parser returns a tuple of (repository object, tag or hash).

+
+ +
+
+name = 'Image'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.JsonType
+

Bases: click.types.ParamType

+

Parser for Json – a wrapper around json.loads because without specifying +the name Click shows the type for the option/arg as LOADS.

+

Also supports passing JSON files (pass in @filename.json).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Json'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.RepositoryType(exists: bool = False)
+

Bases: click.types.ParamType

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context]) Repository
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Repository'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.ResettableStream(stream)
+

Bases: io.RawIOBase

+

Stream that supports reading from the underlying stream and resetting the position once.

+

We can’t use fseek() in this case, since we might be reading from a pipe. So, we operate +this stream in two modes. In the first mode, we mirror all reads into a separate buffer +(consuming the input stream). After the user calls reset(), we first output data from the +mirrored copy, then continue consuming the input stream (simulating seek(0).

+
+
+readable()
+

Return whether object was opened for reading.

+

If False, read() will raise OSError.

+
+ +
+
+readinto(b)
+
+ +
+
+reset()
+
+ +
+ +
+
+splitgraph.commandline.common.emit_sql_results(results, use_json=False, show_all=False)
+
+ +
+
+splitgraph.commandline.common.load_json_param(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+
+ +
+
+splitgraph.commandline.common.remote_switch_option(*names, **kwargs)
+

Adds an option to switch global SG_ENGINE for this invocation of sgr.

+

This is useful for e.g. tagging or viewing image information on a remote +registry. This is not used in operations like commit/checkout (even though +nothing is preventing SG_ENGINE switch from working on that if the remote engine +supports this), the user should switch SG_ENGINE envvar themselves in that case.

+
+
Parameters
+
    +
  • names – Names

  • +
  • kwargs – Passed to click.option

  • +
+
+
+
+ +
+
+splitgraph.commandline.common.sql_results_to_str(results: List[Tuple[Any]], use_json: bool = False) str
+
+ +
+
+

splitgraph.commandline.engine module

+
+
+splitgraph.commandline.engine.inject_config_into_engines(engine_prefix, config_path)
+

Copy the current config into all engines that are managed by sgr engine. This +is so that the engine has the right credentials and settings for when we do +layered querying (a Postgres client queries the engine directly and it +has to download objects etc).

+
+
Parameters
+
    +
  • engine_prefix – Prefix for Docker containers that are considered to be engines

  • +
  • config_path – Path to the config file.

  • +
+
+
+
+ +
+
+splitgraph.commandline.engine.list_engines(prefix, include_all=False, unavailable_ok=True)
+
+ +
+
+splitgraph.commandline.engine.patch_and_save_config(config, patch)
+
+ +
+
+

splitgraph.commandline.example module

+

Command line routines generating example data / Splitfiles

+
+
+splitgraph.commandline.example.alter_table(repository: Repository, table_name: str, rows_added: int, rows_deleted: int, rows_updated: int) None
+

Alters the example table, adding/updating/deleting a certain number of rows.

+
+
Parameters
+
    +
  • repository – Checked-out Repository object.

  • +
  • table_name – Name of the table

  • +
  • rows_added – Number of rows to add

  • +
  • rows_deleted – Number of rows to remove

  • +
  • rows_updated – Number of rows to update

  • +
+
+
+
+ +
+
+splitgraph.commandline.example.generate_table(repository: Repository, table_name: str, size: int) None
+

Creates a table with an integer primary key and a string value.

+
+
Parameters
+
    +
  • repository – Checked-out Repository to create the table in.

  • +
  • table_name – Name of the table to generate

  • +
  • size – Number of rows in the table.

  • +
+
+
+
+ +
+
+

splitgraph.commandline.image_creation module

+

sgr commands related to creating and checking out images

+
+
+

splitgraph.commandline.image_info module

+

sgr commands related to getting information out of / about images

+
+
+

splitgraph.commandline.ingestion module

+

Command line tools for ingesting/exporting Splitgraph images into other formats.

+
+
+

splitgraph.commandline.misc module

+

Miscellaneous image management sgr commands.

+
+
+

splitgraph.commandline.mount module

+

sgr commands related to mounting databases via Postgres FDW

+
+
+

splitgraph.commandline.push_pull module

+

sgr commands related to sharing and downloading images.

+
+
+

splitgraph.commandline.splitfile module

+

sgr commands related to building and rebuilding Splitfiles.

+
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.config.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.config.mdx new file mode 100644 index 00000000..48403b69 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.config.mdx @@ -0,0 +1,392 @@ + + + +export const meta = { + title: "splitgraph.config package", + id: "splitgraph.config package" +}; + +
+

Module contents

+

The CONFIG object is created and exported once __at import time__ +Calling CONFIG[“KEY”] directly should be sufficient in most cases, +except when a config value has changed since importing CONFIG. +In that case, create_config_dict() can provide an updated config dict

+

Priority (highest to lowest):

+
+
    +
  1. Command line argument values

  2. +
  3. Environment variable values

  4. +
  5. Config file values in [defaults] section

  6. +
  7. DEFAULTS (see keys.py)

  8. +
+
+
+ +
+

Submodules

+
+
+

splitgraph.config.argument_config module

+
+
+splitgraph.config.argument_config.get_arg_tuples() List[Tuple[str, str]]
+

Get the raw (argN, argN+1) tuples from sys.argv

+

We could also use click to parse the flags ahead of time, and then pass +the parsed flag object into SystemConfigGetters. But this way, we avoid +having to pass down variables from click just to get config values.

+
+ +
+
+splitgraph.config.argument_config.get_argument_config_value(key: str, default_return: Optional[str] = None) Optional[str]
+

Get get the value of an argument, where value is the argument +immediately following the argument matching a key in ARG_KEYS, e.g.:

+
+

SYS_ARGS = [“–namespace”, “foo”] +–> return “foo”

+
+

Otherwise, return default_return

+
+ +
+
+

splitgraph.config.config module

+
+
+splitgraph.config.config.chain_getters(getters: Sequence[Callable[[str], Optional[str]]], key: str, default_return: Optional[str] = None) Optional[str]
+
+ +
+
+splitgraph.config.config.create_config_dict() Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create and return a dict of all known config values

+
+ +
+
+splitgraph.config.config.get_all_in_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str) Dict[str, Union[Dict[str, str], str]]
+

Get all subsections from a config (e.g. config[“data_sources”])

+
+ +
+
+splitgraph.config.config.get_all_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str) Dict[str, str]
+
+ +
+
+splitgraph.config.config.get_from_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, item: str) str
+
+ +
+
+splitgraph.config.config.get_from_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str) str
+

Return a singleton variable from a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.get_singleton(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], item: str) str
+

Return a singleton (not a section) variable from the config.

+
+ +
+
+splitgraph.config.config.lazy_get_config_value(key: str, default_return: Optional[str] = None) Optional[Union[str, Dict[str, Dict[str, str]]]]
+

Get the config value for a key in the following precedence +Otherwise return default_return

+
+ +
+
+splitgraph.config.config.patch_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], patch: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Recursively updates a nested configuration dictionary:

+
+
patch_config(
+
&lbrace;“key_1”: “value_1”,

“dict_1”: &lbrace;“key_1”: “value_1”&rbrace;&rbrace;,

+
+
&lbrace;“key_1”: “value_2”,

“dict_1”: &lbrace;“key_2”: “value_2”&rbrace;&rbrace;) == &lbrace;“key_1”: “value_2”, +“dict_1”: &lbrace;“key_1”: “value_1”, “key_2”: “value_2”&rbrace;&rbrace;

+
+
+
+
+
+
Parameters
+
    +
  • config – Config dictionary

  • +
  • patch – Dictionary with the path

  • +
+
+
Returns
+

New patched dictionary

+
+
+
+ +
+
+splitgraph.config.config.set_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str, value: str) None
+

Set a singleton variable in a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.update_config_dict_from_arguments(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sys.argv +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_env_vars(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading os.environ +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_file(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], sg_config_file: str) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sg_config_file +and overwriting any keys according to the rules in config_file_config

+

Return updated copy of config_dict.

+
+ +
+
+

splitgraph.config.config_file_config module

+
+
+splitgraph.config.config_file_config.accumulate_lists(config_dict: Dict[str, Union[Dict[str, str], str]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Transform a config_dict to “accumulate” objects “nested” via key name

+

Because ConfigParser does not support nesting, we implement our own +syntax via the key names of sections. The ‘:’ character can be used in +section names to specify the left and right key. Example:

+
.ini config             new config_dict
+
+                  ----->
+                    |
+[remote: remote1]   |   &lbrace;
+SG_ENV_VAR=foo      |       **rest_of_config_dict,
+                    |       "remotes": &lbrace;
+[origin: origin1]   |           "remote1": &lbrace;
+SG_ENV_VAR=bar      |               "SG_ENV_VAR": "foo"
+                    |           &rbrace;
+[origin: origin2]   |       &rbrace;,
+SG_ENV_VAR=bax      |       "origins": &lbrace;
+                    |           "origin1": &lbrace;
+                    |               "SG_ENV_VAR": "bar"
+                    |           &rbrace;,
+                    |           "origin2": &lbrace;
+                    |               "SG_ENV_VAR": "bax"
+                    |           &rbrace;
+                    |       &rbrace;
+                    |   &rbrace;
+                    |
+                  ----->
+
+
+

:return a new, updated copy of config_dict

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_config_file(sg_file: str, **kwargs) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create a dict from ConfigParser, apply transformations to it.

+

Return parsed and transformed config_dict.

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_file(sg_file: str, **kwargs) Dict[str, Dict[str, str]]
+
+ +
+
+splitgraph.config.config_file_config.hoist_section(config_dict: Dict[str, Dict[str, str]], section: str = 'defaults') Dict[str, Union[Dict[str, str], str]]
+

If a section exists called <hoist_section>, hoist it to the top level +This is useful for overriding default configs from within a config file

+

Transform config_dict to “hoist” any config values from a section +into the top level (thus, overriding environment variables), +when the name of the section matches hoist_section.

+

Return a new, updated copy of config_dict.

+
+ +
+
+splitgraph.config.config_file_config.transform_config_dict(config_dict: Dict[str, Dict[str, str]], **kwargs) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Apply transformations to the raw ConfigParser.config object

+
+
    +
  1. hoist_section

  2. +
  3. accumulate_lists

  4. +
+
+

Return the a new, updated copy of config_dict.

+
+ +
+
+

splitgraph.config.default_config module

+
+
+splitgraph.config.default_config.get_default_config_value(key: str, default_return: Optional[str] = None) Any
+

Get the hard-coded default value of a config key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.environment_config module

+
+
+splitgraph.config.environment_config.get_environment_config_value(key: str, default_return: Optional[str] = None) Optional[str]
+

Get the environment variable value of the environment variable matching key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.export module

+

Routines for exporting the config back into text.

+
+
+splitgraph.config.export.overwrite_config(new_config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_path: str, include_defaults: bool = False) None
+

Serialize the new config dictionary and overwrite the current config file. +Note: this will delete all comments in the config!

+
+
Parameters
+
    +
  • new_config – Config dictionary.

  • +
  • config_path – Path to the config file.

  • +
  • include_defaults – Whether to include values that are the same +as their defaults.

  • +
+
+
+
+ +
+
+splitgraph.config.export.serialize_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_format: bool, no_shielding: bool, include_defaults: bool = True) str
+

Pretty-print the configuration or print it in the Splitgraph config file format.

+
+
Parameters
+
    +
  • config – Configuration dictionary.

  • +
  • config_format – Output configuration in the Splitgraph config file format.

  • +
  • no_shielding – Don’t replace sensitive values (like passwords) with asterisks

  • +
  • include_defaults – Emit the config variable even if it’s the same as the default.

  • +
+
+
Returns
+

Textual representation of the config.

+
+
+
+ +
+
+splitgraph.config.export.serialize_engine_config(engine_name: str, conn_params: Dict[str, str], no_shielding: bool) str
+

Output the config section with connection parameters for a single engine.

+
+
Parameters
+
    +
  • engine_name – Name of the engine

  • +
  • conn_params – Dictionary of connection parameters

  • +
  • no_shielding – Don’t replace passwords with asterisks

  • +
+
+
+
+ +
+
+

splitgraph.config.keys module

+
+
+splitgraph.config.keys.SENSITIVE_KEY_SUFFIXES = ['_PWD', '_TOKEN']
+

Warning: Every key in DEFAULTS must have a key in ARGUMENT_KEY_MAP +If you add/remove keys from DEFAULTS, make sure to do so here too.

+
+ +
+
+

splitgraph.config.system_config module

+
+
+splitgraph.config.system_config.file_exists(_dir: str, filename: str) bool
+
+ +
+
+splitgraph.config.system_config.get_config_file(default_return: None = None) Optional[str]
+

Get the location of an existing SG_CONFIG_FILE on the system with +a valid name. Do not attempt to parse the config file, just return +its location.

+

Otherwise, return default_return

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_dirs() List[str]
+

Get any explicitly defined config file directories, +which are directories where we should search for files from +VALID_CONFIG_FILE_NAMES.

+

This list is defined similar to $PATH, as a colon (:) delimited +string, either in:

+
+
    +
  • argument flag –config-dirs

  • +
  • or environment key SG_CONFIG_DIRS

  • +
+
+

Or a single directory defined in either

+
+
    +
  • argument flag –config-dir

  • +
  • environment key SG_CONFIG_DIR

  • +
+
+

If both plural and single are defined, join them together.

+

Return a list of valid paths that are set, or an empty list.

+

Print a warning if any paths to not exist.

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_location() Optional[str]
+

Get the explicitly defined location of config file, if defined.

+

The location will either be defined in:

+
+
    +
  • argument flag –config-file

  • +
  • or environment key SG_CONFIG_FILE

  • +
+
+

In keeping with assumptions about priority, argument flag has +higher priority than environment value.

+

If the location is set, and points to an existing file, return location.

+

Otherwise return None

+

Print a warning if location is set but points to non-existing file.

+
+ +
+
+splitgraph.config.system_config.get_system_config_value(key: str, default_return: None = None) Optional[str]
+
+ +
+
+splitgraph.config.system_config.is_file(filename: str) bool
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.core.indexing.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.core.indexing.mdx new file mode 100644 index 00000000..5b79c382 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.core.indexing.mdx @@ -0,0 +1,141 @@ + + + +export const meta = { + title: "splitgraph.core.indexing package", + id: "splitgraph.core.indexing package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.core.indexing.bloom module

+

Bloom filtering on fragments for equality queries.

+
+
+splitgraph.core.indexing.bloom.describe(index_tuple: Tuple[int, str]) str
+

Returns a pretty-printed summary of the bloom filter

+
+
Parameters
+

index_tuple – Tuple of (k, base64-encoded fingerprint) +returned by generate_bloom_index

+
+
Returns
+

String

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.filter_bloom_index(engine: PsycopgEngine, object_ids: List[str], quals: Any) List[str]
+

Runs a bloom filter on given qualifiers using the given objects’ previously-generated +fingerprints.

+
+
Parameters
+
    +
  • engine – Object engine

  • +
  • object_ids – Object IDs

  • +
  • quals – List of qualifiers

  • +
+
+
Returns
+

List of object IDs that might match the qualifiers in quals (including +IDs that don’t have a bloom index).

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.generate_bloom_index(engine: PsycopgEngine, object_id: str, changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], column: str, probability: Optional[float] = None, size: Optional[int] = None) Tuple[int, str]
+

Generates a bloom filter signature for a given column and a given fragment. Bloom filters +can answer queries asking whether an item is definitely not in a given set or possibly can be.

+

The tradeoff is between the probability of a false positive (item said to be in the set when +it actually isn’t) and the size of the filter.

+

Bloom filters also have an extra parameter, k, or the number of bits in the signature that +a certain item flips. This parameter has an optimal value for a given number of distinct items +or a probability and so isn’t explicitly passed by the user.

+
+
Parameters
+
    +
  • engine – Object engine the fragment is cached in.

  • +
  • object_id – Fragment ID

  • +
  • changeset – Optional, if specified, the old column values are included in the index.

  • +
  • column – Column name to generate the index on.

  • +
  • probability – Probability of a false positive. Either this or the size of the filter must +be specified, but not both.

  • +
  • size – Size of the filter, in bytes.

  • +
+
+
Returns
+

Dictionary to be inserted into the index.

+
+
+
+ +
+
+

splitgraph.core.indexing.range module

+
+
+splitgraph.core.indexing.range.extract_min_max_pks(engine: PsycopgEngine, fragments: List[str], table_pks: List[str], table_pk_types: List[str]) Any
+

Extract minimum/maximum PK values for given fragments.

+
+
Parameters
+
    +
  • engine – Engine the objects live on

  • +
  • fragments – IDs of objects

  • +
  • table_pks – List of columns forming the table primary key

  • +
  • table_pk_types – List of types for table PK columns

  • +
+
+
Returns
+

List of min/max primary key for every object.

+
+
+
+ +
+
+splitgraph.core.indexing.range.filter_range_index(metadata_engine: PsycopgEngine, object_ids: List[str], quals: Any, column_types: Dict[str, str]) List[str]
+
+ +
+
+splitgraph.core.indexing.range.generate_range_index(object_engine: PsycopgEngine, object_id: str, table_schema: TableSchema, changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], columns: Optional[List[str]] = None) Dict[str, Tuple[splitgraph.core.indexing.range.T, splitgraph.core.indexing.range.T]]
+

Calculate the minimum/maximum values of every column in the object (including deleted values).

+
+
Parameters
+
    +
  • object_engine – Engine the object is located on

  • +
  • object_id – ID of the object.

  • +
  • table_schema – Schema of the table

  • +
  • changeset – Changeset (old values will be included in the index)

  • +
  • columns – Columns to run the index on (default all)

  • +
+
+
Returns
+

Dictionary of &lbrace;column: [min, max]&rbrace;

+
+
+
+ +
+
+splitgraph.core.indexing.range.quals_to_sql(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], column_types: Dict[str, str]) Tuple[psycopg2.sql.Composable, Tuple]
+

Convert a list of qualifiers in CNF to a fragment of a Postgres query +:param quals: Qualifiers in CNF +:param column_types: Dictionary of column names and their types +:return: SQL Composable object and a tuple of arguments to be mogrified into it.

+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.core.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.core.mdx new file mode 100644 index 00000000..9cb25779 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.core.mdx @@ -0,0 +1,2060 @@ + + + +export const meta = { + title: "splitgraph.core package", + id: "splitgraph.core package" +}; + +
+

Module contents

+

Core Splitgraph functionality: versioning and sharing tables.

+

The main point of interaction with the Splitgraph API is a splitgraph.core.repository.Repository object +representing a local or a remote Splitgraph repository. Repositories can be created using one of the +following methods:

+
+
    +
  • Directly by invoking Repository(namespace, name, engine) where engine is the engine that the repository +belongs to (that can be gotten with get_engine(engine_name). If the created repository doesn’t actually exist +on the engine, it must first be initialized with repository.init().

  • +
  • By using splitgraph.core.engine.lookup_repository() which will search for the repository on the current +lookup path.

  • +
+
+
+ + +
+

Submodules

+
+
+

splitgraph.core.common module

+

Common internal functions used by Splitgraph commands.

+
+
+class splitgraph.core.common.CallbackList(iterable=(), /)
+

Bases: list

+

Used to pass around and call multiple callbacks at once.

+
+ +
+
+class splitgraph.core.common.Tracer
+

Bases: object

+

Accumulates events and returns the times between them.

+
+
+get_durations() List[Tuple[str, float]]
+

Return all events and durations between them. +:return: List of (event name, time to this event from the previous event (or start))

+
+ +
+
+get_total_time() float
+
+
Returns
+

Time from start to the final logged event.

+
+
+
+ +
+
+log(event: str) None
+

Log an event at the current time +:param event: Event name

+
+ +
+ +
+
+splitgraph.core.common.adapt(value: Any, pg_type: str) Any
+

Coerces a value with a PG type into its Python equivalent.

+
+
Parameters
+
    +
  • value – Value

  • +
  • pg_type – Postgres datatype

  • +
+
+
Returns
+

Coerced value.

+
+
+
+ +
+
+splitgraph.core.common.aggregate_changes(query_result: List[Tuple[int, int]], initial: Optional[Tuple[int, int, int]] = None) Tuple[int, int, int]
+

Add a changeset to the aggregated diff result

+
+ +
+
+splitgraph.core.common.coerce_val_to_json(val: Any) Any
+

Turn a Python value to a string/float that can be stored as JSON.

+
+ +
+
+splitgraph.core.common.ensure_metadata_schema(engine: PsycopgEngine) None
+

Create or migrate the metadata schema splitgraph_meta that stores the hash tree of schema +snapshots (images), tags and tables. +This means we can’t mount anything under the schema splitgraph_meta – much like we can’t have a folder +“.git” under Git version control…

+
+ +
+
+splitgraph.core.common.gather_sync_metadata(target: Repository, source: Repository, overwrite_objects=False, overwrite_tags=False, single_image: Optional[str] = None) Any
+

Inspects two Splitgraph repositories and gathers metadata that is required to bring target up to +date with source.

+
+
Parameters
+
    +
  • target – Target Repository object

  • +
  • source – Source repository object

  • +
  • overwrite_objects – If True, will return metadata for all objects +belonging to new images (or existing image if single_image=True)

  • +
  • single_image – If set, only grab a single image with this hash/tag from the source.

  • +
  • overwrite_tags – If True and single_image is set, will return all tags for that image. +If single_image is not set, will return all tags in the source repository. +If False, will only return tags in the source that don’t exist on the target.

  • +
+
+
Returns
+

Tuple of metadata for new_images, new_tables, object_locations, object_meta, tags

+
+
+
+ +
+
+splitgraph.core.common.get_temporary_table_id() str
+

Generate a random ID for temporary/staging objects that haven’t had their ID calculated yet.

+
+ +
+
+splitgraph.core.common.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.common.manage_audit(func: Callable) Callable
+

A decorator to be put around various Splitgraph commands +that adds/removes audit triggers for new/committed/deleted tables.

+
+ +
+
+splitgraph.core.common.manage_audit_triggers(engine: PostgresEngine, object_engine: Optional[PostgresEngine] = None) None
+

Does bookkeeping on audit triggers / audit table:

+
+
    +
  • Detect tables that are being audited that don’t need to be any more +(e.g. they’ve been unmounted)

  • +
  • Drop audit triggers for those and delete all audit info for them

  • +
  • Set up audit triggers for new tables

  • +
+
+

If the metadata engine isn’t the same as the object engine, this does nothing.

+
+
Parameters
+
    +
  • engine – Metadata engine with information about images and their checkout state

  • +
  • object_engine – Object engine where the checked-out table and the audit triggers are located.

  • +
+
+
+
+ +
+
+splitgraph.core.common.set_head(repository: Repository, image: Optional[str]) None
+

Sets the HEAD pointer of a given repository to a given image. Shouldn’t be used directly.

+
+ +
+
+splitgraph.core.common.set_tag(repository: Repository, image_hash: Optional[str], tag: str) None
+

Internal function – add a tag to an image.

+
+ +
+
+splitgraph.core.common.set_tags_batch(repository: Repository, hashes_tags: List[Tuple[str, str]]) None
+
+ +
+
+splitgraph.core.common.slow_diff(repository: Repository, table_name: str, image_1: Optional[str], image_2: Optional[str], aggregate: bool) Union[Tuple[int, int, int], List[Tuple[bool, Tuple]]]
+

Materialize both tables and manually diff them

+
+ +
+
+

splitgraph.core.engine module

+

Routines for managing Splitgraph engines, including looking up repositories and managing objects.

+
+
+splitgraph.core.engine.get_current_repositories(engine: PostgresEngine) List[Tuple[Repository, Optional[Image]]]
+

Lists all repositories currently in the engine.

+
+
Parameters
+

engine – Engine

+
+
Returns
+

List of (Repository object, current HEAD image)

+
+
+
+ +
+
+splitgraph.core.engine.init_engine(skip_object_handling: bool = False) None
+

Initializes the engine by:

+
+
    +
  • performing any required engine-custom initialization

  • +
  • creating the metadata tables

  • +
+
+
+
Parameters
+

skip_object_handling – If True, skips installing routines related to +object handling and checkouts (like audit triggers and CStore management).

+
+
+
+ +
+
+splitgraph.core.engine.lookup_repository(name: str, include_local: bool = False) Repository
+

Queries the SG engines on the lookup path to locate one hosting the given repository.

+
+
Parameters
+
    +
  • name – Repository name

  • +
  • include_local – If True, also queries the local engine

  • +
+
+
Returns
+

Local or remote Repository object

+
+
+
+ +
+
+splitgraph.core.engine.repository_exists(repository: Repository) bool
+

Checks if a repository exists on the engine.

+
+
Parameters
+

repository – Repository object

+
+
+
+ +
+
+

splitgraph.core.fdw_checkout module

+
+
+

splitgraph.core.fragment_manager module

+

Routines related to storing tables as fragments.

+
+
+class splitgraph.core.fragment_manager.Digest(shorts: Tuple[int, ...])
+

Bases: object

+

Homomorphic hashing similar to LtHash (but limited to being backed by 256-bit hashes). The main property is that +for any rows A, B, LtHash(A) + LtHash(B) = LtHash(A+B). This is done by construction: we simply hash individual +rows and then do bit-wise addition / subtraction of individual hashes to come up with the full table hash.

+

Hence, the content hash of any Splitgraph table fragment is the sum of hashes of its added rows minus the sum +of hashes of its deleted rows (including the old values of the rows that have been updated). This has a very +useful implication: the hash of a full Splitgraph table is equal to the sum of hashes of its individual fragments.

+

This property can be used to simplify deduplication.

+
+
+classmethod empty() splitgraph.core.fragment_manager.Digest
+

Return an empty Digest instance such that for any Digest D, D + empty == D - empty == D

+
+ +
+
+classmethod from_hex(hex_string: str) splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 64-characters (256-bit) hexadecimal string

+
+ +
+
+classmethod from_memoryview(memory: Union[bytes, memoryview]) splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 256-bit memoryview/bytearray.

+
+ +
+
+hex() str
+

Convert the hash into a hexadecimal value.

+
+ +
+ +
+
+class splitgraph.core.fragment_manager.FragmentManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.metadata_manager.MetadataManager

+

A storage engine for Splitgraph tables. Each table can be stored as one or more immutable fragments that can +optionally overwrite each other. When a new table is created, it’s split up into multiple base fragments. When +a new version of the table is written, the audit log is inspected and one or more patch fragments are created, +to be based on the fragments the previous version of the table consisted of. Only the top fragments in this stack +are stored in the table metadata: to reconstruct the whole table, the links from the top fragments down to the +base fragments have to be followed.

+

In addition, the fragments engine also supports min-max indexing on fragments: this is used to only fetch fragments +that are required for a given query.

+
+
+calculate_content_hash(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None, chunk_condition_sql: Optional[psycopg2.sql.Composable] = None, chunk_condition_args: Optional[List[Any]] = None) Tuple[str, int]
+

Calculates the homomorphic hash of table contents.

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Name of the table

  • +
  • table_schema – Schema of the table

  • +
  • chunk_condition_sql – Column the table is partitioned on

  • +
  • chunk_condition_args – Column value to get rows from

  • +
+
+
Returns
+

A 64-character (256-bit) hexadecimal string with the content hash of the table +and the number of rows in the hash.

+
+
+
+ +
+
+calculate_fragment_insertion_hash_stats(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None) Tuple[splitgraph.core.fragment_manager.Digest, int]
+

Calculate the homomorphic hash of just the rows that a given fragment inserts +:param schema: Schema the fragment is stored in. +:param table: Name of the table the fragment is stored in. +:return: A Digest object and the number of inserted rows

+
+ +
+
+create_base_fragment(source_schema: str, source_table: str, namespace: str, chunk_condition_sql: Optional[psycopg2.sql.Composable] = None, chunk_condition_args: Optional[List[Any]] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None) str
+
+ +
+
+delete_objects(objects: Union[Set[str], List[str]]) None
+

Deletes objects from the Splitgraph cache

+
+
Parameters
+

objects – A sequence of objects to be deleted

+
+
+
+ +
+
+filter_fragments(object_ids: List[str], table: Table, quals: Any) List[str]
+

Performs fuzzy filtering on the given object IDs using the index and a set of qualifiers, discarding +objects that definitely do not match the qualifiers.

+
+
Parameters
+
    +
  • object_ids – List of object IDs to filter.

  • +
  • table – A Table object the objects belong to.

  • +
  • quals

    List of qualifiers in conjunctive normal form that will be matched against the index. +Objects that definitely don’t match these qualifiers will be discarded.

    +

    A list containing [[qual_1, qual_2], [qual_3, qual_4]] will be interpreted as +(qual_1 OR qual_2) AND (qual_3 OR qual_4).

    +

    Each qual is a tuple of (column_name, operator, value) where +operator can be one of >, >=, <, <=, =.

    +

    For unknown operators, it will be assumed that all fragments might match that clause.

    +

  • +
+
+
Returns
+

List of objects that might match the given qualifiers.

+
+
+
+ +
+
+generate_object_index(object_id: str, table_schema: List[splitgraph.core.types.TableColumn], changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None) Dict[str, Any]
+

Queries the max/min values of a given fragment for each column, used to speed up querying.

+
+
Parameters
+
    +
  • object_id – ID of an object

  • +
  • table_schema – Schema of the table the object belongs to.

  • +
  • changeset – Optional, if specified, the old row values are included in the index.

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
Returns
+

Dict containing the object index.

+
+
+
+ +
+
+get_min_max_pks(fragments: List[str], table_pks: List[Tuple[str, str]]) List[Tuple[Tuple, Tuple]]
+

Get PK ranges for given fragments using the index (without reading the fragments).

+
+
Parameters
+
    +
  • fragments – List of object IDs (must be registered and with the same schema)

  • +
  • table_pks – List of tuples (column, type) that form the object PK.

  • +
+
+
Returns
+

List of (min, max) PK for every fragment where PK is a tuple. +If a fragment doesn’t exist or doesn’t have a corresponding index entry, +a SplitGraphError is raised.

+
+
+
+ +
+
+record_table_as_base(repository: Repository, table_name: str, image_hash: str, chunk_size: Optional[int] = 10000, source_schema: Optional[str] = None, source_table: Optional[str] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None) List[str]
+

Copies the full table verbatim into one or more new base fragments and registers them.

+
+
Parameters
+
    +
  • repository – Repository

  • +
  • table_name – Table name

  • +
  • image_hash – Hash of the new image

  • +
  • chunk_size – If specified, splits the table into multiple objects with a given number of rows

  • +
  • source_schema – Override the schema the source table is stored in

  • +
  • source_table – Override the name of the table the source is stored in

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Key to sort data inside each chunk by.

  • +
  • overwrite – Overwrite physical objects that already exist.

  • +
  • table_schema – Override the columns that will be picked from the original table +(e.g. to change their order or primary keys). Note that the schema must be a subset +of the original schema and this method doesn’t verify PK constraints.

  • +
+
+
+
+ +
+
+record_table_as_patch(old_table: Table, schema: str, image_hash: str, new_schema_spec: List[splitgraph.core.types.TableColumn] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False) None
+

Flushes the pending changes from the audit table for a given table and records them, +registering the new objects.

+
+
Parameters
+
    +
  • old_table – Table object pointing to the current HEAD table

  • +
  • schema – Schema the table is checked out into.

  • +
  • image_hash – Image hash to store the table under

  • +
  • new_schema_spec – New schema of the table (use the old table’s schema by default).

  • +
  • split_changeset – See Repository.commit for reference

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
+
+ +
+
+split_changeset_boundaries(changeset, change_key, objects)
+
+ +
+ +
+
+splitgraph.core.fragment_manager.get_chunk_groups(chunks: List[Tuple[str, Any, Any]]) List[List[Tuple[str, Any, Any]]]
+

Takes a list of chunks and their boundaries and combines them +into independent groups such that chunks from no two groups +overlap with each other (intervals are assumed to be closed, +e.g. chunk (1,2) overlaps with chunk (2,3)).

+

The original order of chunks is preserved within each group.

+

For example, 4 chunks A, B, C, D that don’t overlap each other +will be grouped into 4 groups [A], [B], [C], [D].

+

If A overlaps B, the result will be [A, B], [C], [D].

+

If in addition B overlaps C (but not A), the result will be [A, B, C], [D].

+

If in addition D overlaps any of A, B or C, the result will be [A, B, C, D] +(despite that D is located before A: it will be last since it was last in the +original list).

+
+
Parameters
+

chunks – List of (chunk_id, start, end)

+
+
Returns
+

List of lists of (chunk_id, start, end)

+
+
+
+ +
+
+

splitgraph.core.image module

+

Image representation and provenance

+
+
+class splitgraph.core.image.Image(image_hash: str, parent_id: Optional[str], created: datetime.datetime, comment: str, provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], repository: Repository)
+

Bases: tuple

+

Represents a Splitgraph image. Should’t be created directly, use Image-loading methods in the +splitgraph.core.repository.Repository class instead.

+
+
+checkout(force: bool = False, layered: bool = False) None
+

Checks the image out, changing the current HEAD pointer. Raises an error +if there are pending changes to its checkout.

+
+
Parameters
+
    +
  • force – Discards all pending changes to the schema.

  • +
  • layered – If True, uses layered querying to check out the image (doesn’t materialize tables +inside of it).

  • +
+
+
+
+ +
+
+comment: str
+

Alias for field number 3

+
+ +
+
+created: datetime.datetime
+

Alias for field number 2

+
+ +
+
+delete_tag(tag: str) None
+

Deletes a tag from an image.

+
+
Parameters
+

tag – Tag to delete.

+
+
+
+ +
+
+property engine
+
+ +
+
+get_log() List[splitgraph.core.image.Image]
+

Repeatedly gets the parent of a given image until it reaches the bottom.

+
+ +
+
+get_parent_children() Tuple[Optional[str], List[str]]
+

Gets the parent and a list of children of a given image.

+
+ +
+
+get_size() int
+

Get the physical size used by the image’s objects (including those that might be +shared with other images).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of image’s +objects have been downloaded.

+
+
Returns
+

Size of the image in bytes.

+
+
+
+ +
+
+get_table(table_name: str) splitgraph.core.table.Table
+

Returns a Table object representing a version of a given table. +Contains a list of objects that the table is linked to and the table’s schema.

+
+
Parameters
+

table_name – Name of the table

+
+
Returns
+

Table object

+
+
+
+ +
+
+get_tables() List[str]
+

Gets the names of all tables inside of an image.

+
+ +
+
+get_tags()
+

Lists all tags that this image has.

+
+ +
+
+image_hash: str
+

Alias for field number 0

+
+ +
+
+lq_checkout(target_schema: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', only_tables: Optional[List[str]] = None) None
+

Intended to be run on the sgr side. Initializes the FDW for all tables in a given image, +allowing to query them directly without materializing the tables.

+
+ +
+
+property object_engine
+
+ +
+
+parent_id: Optional[str]
+

Alias for field number 1

+
+ +
+
+provenance(reverse=False, engine=None) List[Tuple[Repository, str]]
+

Inspects the image’s parent chain to come up with a set of repositories and their hashes +that it was created from.

+

If reverse is True, returns a list of images that were created _from_ this image. If +this image is on a remote repository, engine can be passed in to override the engine +used for the lookup of dependents.

+
+
Returns
+

List of (repository, image_hash)

+
+
+
+ +
+
+provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]
+

Alias for field number 4

+
+ +
+
+query_schema(wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', commit: bool = True) Iterator[str]
+

Creates a temporary schema with tables in this image mounted as foreign tables that can be accessed via +read-only layered querying. On exit from the context manager, the schema is discarded.

+
+
Returns
+

The name of the schema the image is located in.

+
+
+
+ +
+
+repository: Repository
+

Alias for field number 5

+
+ +
+
+set_provenance(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]) None
+

Sets the image’s provenance. Internal function called by the Splitfile interpreter, shouldn’t +be called directly as it changes the image after it’s been created.

+
+
Parameters
+

provenance_data – List of parsed Splitfile commands and their data.

+
+
+
+ +
+
+tag(tag: str) None
+

Tags a given image. All tags are unique inside of a repository. If a tag already exists, it’s removed +from the previous image and given to the new image.

+
+
Parameters
+

tag – Tag to set. ‘latest’ and ‘HEAD’ are reserved tags.

+
+
+
+ +
+
+to_splitfile(ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None) List[str]
+

Recreate the Splitfile that can be used to reconstruct this image.

+
+
Parameters
+
    +
  • ignore_irreproducible – If True, ignore commands from irreproducible Splitfile lines +(like MOUNT or custom commands) and instead emit a comment (this results in an invalid Splitfile).

  • +
  • source_replacement – A dictionary of repositories and image hashes/tags specifying how to replace the +dependencies of this Splitfile (table imports and FROM commands).

  • +
+
+
Returns
+

A list of Splitfile commands that can be fed back into the executor.

+
+
+
+ +
+ +
+
+splitgraph.core.image.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.image.reconstruct_splitfile(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None) List[str]
+

Recreate the Splitfile that can be used to reconstruct an image.

+
+ +
+
+

splitgraph.core.image_manager module

+
+
+class splitgraph.core.image_manager.ImageManager(repository: Repository)
+

Bases: object

+

Collects various image-related functions.

+
+
+add(parent_id: Optional[str], image: str, created: Optional[datetime.datetime] = None, comment: Optional[str] = None, provenance_data: Optional[List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]] = None) None
+

Registers a new image in the Splitgraph image tree.

+

Internal method used by actual image creation routines (committing, importing or pulling).

+
+
Parameters
+
    +
  • parent_id – Parent of the image

  • +
  • image – Image hash

  • +
  • created – Creation time (defaults to current timestamp)

  • +
  • comment – Comment (defaults to empty)

  • +
  • provenance_data – Provenance data that can be used to reconstruct the image.

  • +
+
+
+
+ +
+
+add_batch(images: List[splitgraph.core.image.Image]) None
+

Like add, but registers multiple images at the same time. Used in push/pull +to avoid a roundtrip to the registry for each image +:param images: List of Image objects. Namespace and repository will be patched

+
+

with this repository.

+
+
+ +
+
+by_hash(image_hash: str) splitgraph.core.image.Image
+

Returns an image corresponding to a given (possibly shortened) image hash. If the image hash +is ambiguous, raises an error. If the image does not exist, raises an error or returns None.

+
+
Parameters
+

image_hash – Image hash (can be shortened).

+
+
Returns
+

Image

+
+
+
+ +
+
+by_tag(tag: str, raise_on_none: bool = True) Optional[splitgraph.core.image.Image]
+

Returns an image with a given tag

+
+
Parameters
+
    +
  • tag – Tag. ‘latest’ is a special case: it returns the most recent image in the repository.

  • +
  • raise_on_none – Whether to raise an error or return None if the tag doesn’t exist.

  • +
+
+
+
+ +
+
+delete(images: Iterable[str]) None
+

Deletes a set of Splitgraph images from the repository. Note this doesn’t check whether +this will orphan some other images in the repository and can make the state of the repository +invalid.

+

Image deletions won’t be replicated on push/pull (those can only add new images).

+
+
Parameters
+

images – List of image IDs

+
+
+
+ +
+
+get_all_child_images(start_image: str) Set[str]
+

Get all children of start_image of any degree.

+
+ +
+
+get_all_parent_images(start_images: Set[str]) Set[str]
+

Get all parents of the ‘start_images’ set of any degree.

+
+ +
+ +
+
+

splitgraph.core.metadata_manager module

+

Classes related to managing table/image/object metadata tables.

+
+
+class splitgraph.core.metadata_manager.MetadataManager(metadata_engine: PsycopgEngine)
+

Bases: object

+

A data access layer for the metadata tables in the splitgraph_meta schema that concerns itself +with image, table and object information.

+
+
+cleanup_metadata() List[str]
+

Go through the current metadata and delete all objects that aren’t required +by any table on the engine.

+
+
Returns
+

List of objects that have been deleted.

+
+
+
+ +
+
+delete_object_meta(object_ids: Sequence[str])
+

Delete metadata for multiple objects (external locations, indexes, hashes). +This doesn’t delete physical objects.

+
+
Parameters
+

object_ids – Object IDs to delete

+
+
+
+ +
+
+get_all_objects() List[str]
+

Gets all objects currently in the Splitgraph tree.

+
+
Returns
+

List of object IDs.

+
+
+
+ +
+
+get_external_object_locations(objects: List[str]) List[Tuple[str, str, str]]
+

Gets external locations for objects.

+
+
Parameters
+

objects – List of object IDs stored externally.

+
+
Returns
+

List of (object_id, location, protocol).

+
+
+
+ +
+
+get_new_objects(object_ids: List[str]) List[str]
+

Get object IDs from the passed list that don’t exist in the tree.

+
+
Parameters
+

object_ids – List of objects to check

+
+
Returns
+

List of unknown object IDs.

+
+
+
+ +
+
+get_object_meta(objects: List[str]) Dict[str, splitgraph.core.metadata_manager.Object]
+

Get metadata for multiple Splitgraph objects from the tree

+
+
Parameters
+

objects – List of objects to get metadata for.

+
+
Returns
+

Dictionary of object_id -> Object

+
+
+
+ +
+
+get_objects_for_repository(repository: Repository, image_hash: Optional[str] = None) List[str]
+
+ +
+
+get_unused_objects(threshold: Optional[int] = None) List[Tuple[str, datetime.datetime]]
+

Get a list of all objects in the metadata that aren’t used by any table and can be +safely deleted.

+
+
Parameters
+

threshold – Only return objects that were created earlier than this (in minutes)

+
+
Returns
+

List of objects and their creation times.

+
+
+
+ +
+
+overwrite_table(repository: Repository, image_hash: str, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+
+ +
+
+register_object_locations(object_locations: List[Tuple[str, str, str]]) None
+

Registers external locations (e.g. HTTP or S3) for Splitgraph objects. +Objects must already be registered in the object tree.

+
+
Parameters
+

object_locations – List of (object_id, location, protocol).

+
+
+
+ +
+
+register_objects(objects: List[splitgraph.core.metadata_manager.Object], namespace: Optional[str] = None) None
+

Registers multiple Splitgraph objects in the tree.

+
+
Parameters
+
    +
  • objects – List of Object objects.

  • +
  • namespace – If specified, overrides the original object namespace, required +in the case where the remote repository has a different namespace than the local one.

  • +
+
+
+
+ +
+
+register_tables(repository: Repository, table_meta: List[Tuple[str, str, List[splitgraph.core.types.TableColumn], List[str]]]) None
+

Links tables in an image to physical objects that they are stored as. +Objects must already be registered in the object tree.

+
+
Parameters
+
    +
  • repository – Repository that the tables belong to.

  • +
  • table_meta – A list of (image_hash, table_name, table_schema, object_ids).

  • +
+
+
+
+ +
+ +
+
+class splitgraph.core.metadata_manager.Object(object_id: str, format: str, namespace: str, size: int, created: datetime.datetime, insertion_hash: str, deletion_hash: str, object_index: Dict[str, Any], rows_inserted: int, rows_deleted: int)
+

Bases: tuple

+

Represents a Splitgraph object that tables are composed of.

+
+
+created: datetime.datetime
+

Alias for field number 4

+
+ +
+
+deletion_hash: str
+

Alias for field number 6

+
+ +
+
+format: str
+

Alias for field number 1

+
+ +
+
+insertion_hash: str
+

Alias for field number 5

+
+ +
+
+namespace: str
+

Alias for field number 2

+
+ +
+
+object_id: str
+

Alias for field number 0

+
+ +
+
+object_index: Dict[str, Any]
+

Alias for field number 7

+
+ +
+
+rows_deleted: int
+

Alias for field number 9

+
+ +
+
+rows_inserted: int
+

Alias for field number 8

+
+ +
+
+size: int
+

Alias for field number 3

+
+ +
+ +
+
+

splitgraph.core.migration module

+
+
+splitgraph.core.migration.get_installed_version(engine: PsycopgEngine, schema_name: str, version_table: str = 'version') Optional[Tuple[str, datetime.datetime]]
+
+ +
+
+splitgraph.core.migration.get_version_tuples(filenames: List[str]) List[Tuple[Optional[str], str]]
+
+ +
+
+splitgraph.core.migration.make_file_list(schema_name: str, migration_path: List[Optional[str]])
+

Construct a list of file names from history of versions and schema name

+
+ +
+
+splitgraph.core.migration.set_installed_version(engine: PsycopgEngine, schema_name: str, version: str, version_table: str = 'version')
+
+ +
+
+splitgraph.core.migration.source_files_to_apply(engine: PsycopgEngine, schema_name: str, schema_files: List[str], version_table: str = 'version', static: bool = False, target_version: Optional[str] = None) Tuple[List[str], str]
+

Get the ordered list of .sql files to apply to the database

+
+ +
+
+

splitgraph.core.object_manager module

+

Functions related to creating, deleting and keeping track of physical Splitgraph objects.

+
+
+class splitgraph.core.object_manager.ObjectManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.fragment_manager.FragmentManager

+

Brings the multiple manager classes together and manages the object cache (downloading and uploading +objects as required in order to fulfill certain queries)

+
+
+cleanup() List[str]
+

Deletes all objects in the object_tree not required by any current repository, including their dependencies and +their remote locations. Also deletes all objects not registered in the object_tree.

+
+ +
+
+download_objects(source: Optional[splitgraph.core.object_manager.ObjectManager], objects_to_fetch: List[str], object_locations: List[Tuple[str, str, str]]) List[str]
+

Fetches the required objects from the remote and stores them locally. +Does nothing for objects that already exist.

+
+
Parameters
+
    +
  • source – Remote ObjectManager. If None, will only try to download objects from the external location.

  • +
  • objects_to_fetch – List of object IDs to download.

  • +
  • object_locations – List of custom object locations, encoded as tuples (object_id, object_url, protocol).

  • +
+
+
+
+ +
+
+ensure_objects(table: Optional[Table], objects: Optional[List[str]] = None, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]] = None, defer_release: bool = False, tracer: Optional[splitgraph.core.common.Tracer] = None, upstream_manager: Optional[ObjectManager] = None) Iterator[Union[List[str], Tuple[List[str], splitgraph.core.common.CallbackList]]]
+

Resolves the objects needed to materialize a given table and makes sure they are in the local +splitgraph_meta schema.

+

Whilst inside this manager, the objects are guaranteed to exist. On exit from it, the objects are marked as +unneeded and can be garbage collected.

+
+
Parameters
+
    +
  • table – Table to materialize

  • +
  • objects – List of objects to download: one of table or objects must be specified.

  • +
  • quals – Optional list of qualifiers to be passed to the fragment engine. Fragments that definitely do +not match these qualifiers will be dropped. See the docstring for filter_fragments for the format.

  • +
  • defer_release – If True, won’t release the objects on exit.

  • +
+
+
Returns
+

If defer_release is True: List of table fragments and a callback that the caller must call +when the objects are no longer needed. If defer_release is False: just the list of table fragments.

+
+
+
+ +
+
+get_cache_occupancy() int
+
+
Returns
+

Space occupied by objects cached from external locations, in bytes.

+
+
+
+ +
+
+get_downloaded_objects(limit_to: Optional[List[str]] = None) List[str]
+

Gets a list of objects currently in the Splitgraph cache (i.e. not only existing externally.)

+
+
Parameters
+

limit_to – If specified, only the objects in this list will be returned.

+
+
Returns
+

Set of object IDs.

+
+
+
+ +
+
+get_total_object_size()
+
+
Returns
+

Space occupied by all objects on the engine, in bytes.

+
+
+
+ +
+
+make_objects_external(objects: List[str], handler: str, handler_params: Dict[Any, Any]) None
+

Uploads local objects to an external location and marks them as being cached locally (thus making it possible +to evict or swap them out).

+
+
Parameters
+
    +
  • objects – Object IDs to upload. Will do nothing for objects that already exist externally.

  • +
  • handler – Object handler

  • +
  • handler_params – Extra handler parameters

  • +
+
+
+
+ +
+
+run_eviction(keep_objects: List[str], required_space: Optional[int] = None) None
+

Delete enough objects with zero reference count (only those, since we guarantee that whilst refcount is >0, +the object stays alive) to free at least required_space in the cache.

+
+
Parameters
+
    +
  • keep_objects – List of objects (besides those with nonzero refcount) that can’t be deleted.

  • +
  • required_space – Space, in bytes, to free. If the routine can’t free at least this much space, +it shall raise an exception. If None, removes all eligible objects.

  • +
+
+
+
+ +
+
+upload_objects(target: splitgraph.core.object_manager.ObjectManager, objects_to_push: List[str], handler: str = 'DB', handler_params: Optional[Dict[Any, Any]] = None) Sequence[Tuple[str, Optional[str]]]
+

Uploads physical objects to the remote or some other external location.

+
+
Parameters
+
    +
  • target – Target ObjectManager

  • +
  • objects_to_push – List of object IDs to upload.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote, FILE +to store them in a directory that can be accessed from the client and HTTP to upload them to HTTP.

  • +
  • handler_params – For HTTP, a dictionary &lbrace;“username”: username, “password”, password&rbrace;. For FILE, +a dictionary &lbrace;“path”: path&rbrace; specifying the directory where the objects shall be saved.

  • +
+
+
Returns
+

A list of (object_id, url) that specifies all objects were uploaded (skipping objects that +already exist on the remote).

+
+
+
+ +
+ +
+
+

splitgraph.core.output module

+
+
+splitgraph.core.output.conn_string_to_dict(connection: Optional[str]) Dict[str, Any]
+
+ +
+
+splitgraph.core.output.parse_date(string: str) datetime.date
+
+ +
+
+splitgraph.core.output.parse_dt(string: str) datetime.datetime
+
+ +
+
+splitgraph.core.output.parse_repo_tag_or_hash(value, default='latest')
+
+ +
+
+splitgraph.core.output.parse_time(string: str) time.struct_time
+
+ +
+
+splitgraph.core.output.pluralise(word: str, number: int) str
+

1 banana, 2 bananas

+
+ +
+
+splitgraph.core.output.pretty_size(size: Union[int, float]) str
+

Converts a size in bytes to its string representation (e.g. 1024 -> 1KiB) +:param size: Size in bytes

+
+ +
+
+splitgraph.core.output.slugify(text: str, max_length: int = 50) str
+
+ +
+
+splitgraph.core.output.truncate_line(line: str, length: int = 80) str
+

Truncates a line to a given length, replacing the remainder with …

+
+ +
+
+splitgraph.core.output.truncate_list(items: List[Any], max_entries: int = 10) str
+

Print a list, possibly truncating it to the specified number of entries

+
+ +
+
+

splitgraph.core.registry module

+

Functions for communicating with the remote Splitgraph catalog

+
+
+splitgraph.core.registry.get_info_key(engine: PostgresEngine, key: str) Optional[str]
+

Gets a configuration key from the remote registry, used to notify the client of the registry’s capabilities.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to get

  • +
+
+
+
+ +
+
+splitgraph.core.registry.set_info_key(engine: PostgresEngine, key: str, value: Union[bool, str]) None
+

Sets a configuration value on the remote registry.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to set

  • +
  • value – New value for the key

  • +
+
+
+
+ +
+
+splitgraph.core.registry.setup_registry_mode(engine: PostgresEngine) None
+

Set up access policies/RLS:

+
    +
  • Normal users aren’t allowed to create tables/schemata (can’t do checkouts inside of a registry or +upload SG objects directly to it)

  • +
  • Normal users can’t access the splitgraph_meta schema directly: they’re only supposed to be able to +talk to it via stored procedures in splitgraph_api. Those procedures are set up with SECURITY INVOKER +(run with those users’ credentials) and what they can access is further restricted by RLS:

    +
      +
    • images/tables/tags meta tables: can only create/update/delete records where the namespace = user ID

    • +
    • objects/object_location tables: same. An object (piece of data) becomes owned by the user that creates +it and still remains so even if someone else’s image starts using it. Hence, the original owner can delete +or change it (since they control the external location they’ve uploaded it to anyway).

    • +
    +
  • +
+
+ +
+
+

splitgraph.core.repository module

+

Public API for managing images in a Splitgraph repository.

+
+
+class splitgraph.core.repository.Repository(namespace: str, repository: str, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_manager: Optional[splitgraph.core.object_manager.ObjectManager] = None)
+

Bases: object

+

Splitgraph repository API

+
+
+commit(image_hash: Optional[str] = None, comment: Optional[str] = None, snap_only: bool = False, chunk_size: Optional[int] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]]] = None, in_fragment_order: Optional[Dict[str, List[str]]] = None, overwrite: bool = False) splitgraph.core.image.Image
+

Commits all pending changes to a given repository, creating a new image.

+
+
Parameters
+
    +
  • image_hash – Hash of the commit. Chosen by random if unspecified.

  • +
  • comment – Optional comment to add to the commit.

  • +
  • snap_only – If True, will store the table as a full snapshot instead of delta compression

  • +
  • chunk_size – For tables that are stored as snapshots (new tables and where snap_only has been passed, +the table will be split into fragments of this many rows.

  • +
  • split_changeset – If True, splits the changeset into multiple fragments based on +the PK regions spanned by the current table fragments. For example, if the original table +consists of 2 fragments, first spanning rows 1-10000, second spanning rows 10001-20000 and the +change alters rows 1, 10001 and inserts a row with PK 20001, this will record the change as +3 fragments: one inheriting from the first original fragment, one inheriting from the second +and a brand new fragment. This increases the number of fragments in total but means that fewer rows +will need to be scanned to satisfy a query. +If False, the changeset will be stored as a single fragment inheriting from the last fragment in the +table.

  • +
  • extra_indexes – Dictionary of &lbrace;table: index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Dictionary of &lbrace;table: list of columns&rbrace;. If specified, will

  • +
+
+
+

sort the data inside each chunk by this/these key(s) for each table. +:param overwrite: If an object already exists, will force recreate it.

+
+
Returns
+

The newly created Image object.

+
+
+
+ +
+
+commit_engines() None
+

Commit the underlying transactions on both engines that the repository uses.

+
+ +
+
+delete(unregister: bool = True, uncheckout: bool = True) None
+

Discards all changes to a given repository and optionally all of its history, +as well as deleting the Postgres schema that it might be checked out into. +Doesn’t delete any cached physical objects.

+

After performing this operation, this object becomes invalid and must be discarded, +unless init() is called again.

+
+
Parameters
+
    +
  • unregister – Whether to purge repository history/metadata

  • +
  • uncheckout – Whether to delete the actual checked out repo. This has no effect +if the repository is backed by a registry (rather than a local engine).

  • +
+
+
+
+ +
+
+diff(table_name: str, image_1: Union[splitgraph.core.image.Image, str], image_2: Optional[Union[splitgraph.core.image.Image, str]], aggregate: bool = False) Optional[Union[bool, Tuple[int, int, int], List[Tuple[bool, Tuple]]]]
+

Compares the state of a table in different images by materializing both tables into a temporary space +and comparing them row-to-row.

+
+
Parameters
+
    +
  • table_name – Name of the table.

  • +
  • image_1 – First image hash / object. If None, uses the state of the current staging area.

  • +
  • image_2 – Second image hash / object. If None, uses the state of the current staging area.

  • +
  • aggregate – If True, returns a tuple of integers denoting added, removed and updated rows between +the two images.

  • +
+
+
Returns
+

If the table doesn’t exist in one of the images, returns True if it was added and False if it was +removed. If aggregate is True, returns the aggregation of changes as specified before. +Otherwise, returns a list of changes where each change is a tuple of +(True for added, False for removed, row contents).

+
+
+
+ +
+
+dump(stream: _io.TextIOWrapper, exclude_object_contents: bool = False) None
+

Creates an SQL dump with the metadata required for the repository and all of its objects.

+
+
Parameters
+
    +
  • stream – Stream to dump the data into.

  • +
  • exclude_object_contents – Only dump the metadata but not the actual object contents.

  • +
+
+
+
+ +
+
+classmethod from_schema(schema: str) splitgraph.core.repository.Repository
+

Convert a Postgres schema name of the format namespace/repository to a Splitgraph repository object.

+
+ +
+
+classmethod from_template(template: splitgraph.core.repository.Repository, namespace: Optional[str] = None, repository: Optional[str] = None, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None) splitgraph.core.repository.Repository
+

Create a Repository from an existing one replacing some of its attributes.

+
+ +
+
+get_all_hashes_tags() List[Tuple[Optional[str], str]]
+

Gets all tagged images and their hashes in a given repository.

+
+
Returns
+

List of (image_hash, tag)

+
+
+
+ +
+
+get_local_size() int
+

Get the actual size used by this repository’s downloaded objects.

+

This might still be double-counted if the repository shares objects +with other repositores.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+get_size() int
+

Get the physical size used by the repository’s data, counting objects that are used +by multiple images only once. This is calculated from the metadata, the on-disk +footprint might be smaller if not all of repository’s objects have been downloaded.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+has_pending_changes() bool
+

Detects if the repository has any pending changes (schema changes, table additions/deletions, content changes).

+
+ +
+
+property head: Optional[splitgraph.core.image.Image]
+

Return the HEAD image for the repository or None if the repository isn’t checked out.

+
+ +
+
+property head_strict: splitgraph.core.image.Image
+

Return the HEAD image for the repository. Raise an exception if the repository +isn’t checked out.

+
+ +
+
+images
+

A splitgraph.core.image.ImageManager instance that performs operations +(checkout, delete etc) on this repository’s images.

+
+ +
+
+import_tables(tables: Sequence[str], source_repository: splitgraph.core.repository.Repository, source_tables: Sequence[str], image_hash: Optional[str] = None, foreign_tables: bool = False, do_checkout: bool = True, target_hash: Optional[str] = None, table_queries: Optional[Sequence[bool]] = None, parent_hash: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', skip_validation: bool = False) str
+

Creates a new commit in target_repository with one or more tables linked to already-existing tables. +After this operation, the HEAD of the target repository moves to the new commit and the new tables are +materialized.

+
+
Parameters
+
    +
  • tables – If not empty, must be the list of the same length as source_tables specifying names to store +them under in the target repository.

  • +
  • source_repository – Repository to import tables from.

  • +
  • source_tables – List of tables to import. If empty, imports all tables.

  • +
  • image_hash – Image hash in the source repository to import tables from. +Uses the current source HEAD by default.

  • +
  • foreign_tables – If True, copies all source tables to create a series of new snapshots instead of +treating them as Splitgraph-versioned tables. This is useful for adding brand new tables +(for example, from an FDW-mounted table).

  • +
  • do_checkout – If False, doesn’t check out the newly created image.

  • +
  • target_hash – Hash of the new image that tables is recorded under. If None, gets chosen at random.

  • +
  • table_queries – If not [], it’s treated as a Boolean mask showing which entries in the tables list are +instead SELECT SQL queries that form the target table. The queries have to be non-schema qualified and work +only against tables in the source repository. Each target table created is the result of the respective SQL +query. This is committed as a new snapshot.

  • +
  • parent_hash – If not None, must be the hash of the image to base the new image on. +Existing tables from the parent image are preserved in the new image. If None, the current repository +HEAD is used.

  • +
  • wrapper – Override the default class for the layered querying foreign data wrapper.

  • +
  • skip_validation – Don’t validate SQL used in import statements (used by the Splitfile executor that pre-formats the SQL).

  • +
+
+
Returns
+

Hash that the new image was stored under.

+
+
+
+ +
+
+init() None
+

Initializes an empty repo with an initial commit (hash 0000…)

+
+ +
+
+materialized_table(table_name: str, image_hash: Optional[str]) Iterator[Tuple[str, str]]
+

A context manager that returns a pointer to a read-only materialized table in a given image. +The table is deleted on exit from the context manager.

+
+
Parameters
+
    +
  • table_name – Name of the table

  • +
  • image_hash – Image hash to materialize

  • +
+
+
Returns
+

(schema, table_name) where the materialized table is located.

+
+
+
+ +
+
+objects
+

A splitgraph.core.object_manager.ObjectManager instance that performs operations on +the objects on this repository’s engine (not just objects belonging to this repository).

+
+ +
+
+pull(download_all: Optional[bool] = False, overwrite_objects: bool = False, overwrite_tags: bool = False, single_image: Optional[str] = None) None
+

Synchronizes the state of the local Splitgraph repository with its upstream, optionally downloading all new +objects created on the remote.

+
+
Parameters
+
    +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download +required objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – Limit the download to a single image hash/tag.

  • +
+
+
+
+ +
+
+push(remote_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, reupload_objects: bool = False, overwrite_tags: bool = False, handler: str = 'DB', handler_options: Optional[Dict[str, Any]] = None, single_image: Optional[str] = None) splitgraph.core.repository.Repository
+

Inverse of pull: Pushes all local changes to the remote and uploads new objects.

+
+
Parameters
+
    +
  • remote_repository – Remote repository to push changes to. If not specified, the current +upstream is used.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote or S3 +to store them in an S3 bucket.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the remote repository for existing objects.

  • +
  • reupload_objects – If True, will reupload objects for which metadata is uploaded.

  • +
  • overwrite_tags – If True, will overwrite existing tags on the remote repository.

  • +
  • handler_options – Extra options to pass to the handler. For example, see +splitgraph.hooks.s3.S3ExternalObjectHandler.

  • +
  • single_image – Limit the upload to a single image hash/tag.

  • +
+
+
+
+ +
+
+rollback_engines() None
+

Rollback the underlying transactions on both engines that the repository uses.

+
+ +
+
+run_sql(sql: Union[psycopg2.sql.Composed, str], arguments: Optional[Any] = None, return_shape: splitgraph.engine.ResultShape = ResultShape.MANY_MANY) Any
+

Execute an arbitrary SQL statement inside of this repository’s checked out schema.

+
+ +
+
+set_tags(tags: Dict[str, Optional[str]]) None
+

Sets tags for multiple images.

+
+
Parameters
+

tags – List of (image_hash, tag)

+
+
+
+ +
+
+to_schema() str
+

Returns the engine schema that this repository gets checked out into.

+
+ +
+
+uncheckout(force: bool = False) None
+

Deletes the schema that the repository is checked out into

+
+
Parameters
+

force – Discards all pending changes to the schema.

+
+
+
+ +
+
+property upstream
+

The remote upstream repository that this local repository tracks.

+
+ +
+ +
+
+splitgraph.core.repository.clone(remote_repository: Union[splitgraph.core.repository.Repository, str], local_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, overwrite_tags: bool = False, download_all: Optional[bool] = False, single_image: Optional[str] = None) splitgraph.core.repository.Repository
+

Clones a remote Splitgraph repository or synchronizes remote changes with the local ones.

+

If the target repository has no set upstream engine, the source repository becomes its upstream.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object to clone or the repository’s name. If a name is passed, +the repository will be looked up on the current lookup path in order to find the engine the repository +belongs to.

  • +
  • local_repository – Local repository to clone into. If None, uses the same name as the remote.

  • +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download required +objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – If set, only get a single image with this hash/tag from the source.

  • +
+
+
Returns
+

A locally cloned Repository object.

+
+
+
+ +
+
+splitgraph.core.repository.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.repository.import_table_from_remote(remote_repository: splitgraph.core.repository.Repository, remote_tables: List[str], remote_image_hash: str, target_repository: splitgraph.core.repository.Repository, target_tables: List[Any], target_hash: Optional[str] = None) None
+

Shorthand for importing one or more tables from a yet-uncloned remote. Here, the remote image hash is required, +as otherwise we aren’t necessarily able to determine what the remote head is.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object

  • +
  • remote_tables – List of remote tables to import

  • +
  • remote_image_hash – Image hash to import the tables from

  • +
  • target_repository – Target repository to import the tables to

  • +
  • target_tables – Target table aliases

  • +
  • target_hash – Hash of the image that’s created with the import. Default random.

  • +
+
+
+
+ +
+
+splitgraph.core.repository.table_exists_at(repository: splitgraph.core.repository.Repository, table_name: str, image: Optional[splitgraph.core.image.Image] = None) bool
+

Determines whether a given table exists in a Splitgraph image without checking it out. If image_hash is None, +determines whether the table exists in the current staging area.

+
+ +
+
+

splitgraph.core.server module

+

Routines that are run inside of the engine, +here so that they can get type- and syntax-checked.

+

When inside of an LQFDW shim, these are called directly by the Splitgraph core code +to avoid a redundant connection to the engine.

+
+
+splitgraph.core.server.delete_object_files(object_id: str)
+
+ +
+
+splitgraph.core.server.download_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.get_object_schema(object_id: str) str
+
+ +
+
+splitgraph.core.server.get_object_size(object_id: str) int
+
+ +
+
+splitgraph.core.server.list_objects() List[str]
+
+ +
+
+splitgraph.core.server.object_exists(object_id: str) bool
+
+ +
+
+splitgraph.core.server.rename_object_files(old_object_id: str, new_object_id: str)
+
+ +
+
+splitgraph.core.server.set_object_schema(object_id: str, schema: str)
+
+ +
+
+splitgraph.core.server.upload_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.verify(url: str)
+
+ +
+
+

splitgraph.core.table module

+

Table metadata-related classes.

+
+
+class splitgraph.core.table.QueryPlan(table: splitgraph.core.table.Table, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str])
+

Bases: object

+

Represents the initial query plan (fragments to query) for given columns and +qualifiers.

+
+ +
+
+class splitgraph.core.table.Table(repository: Repository, image: Image, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+

Bases: object

+

Represents a Splitgraph table in a given image. Shouldn’t be created directly, use Table-loading +methods in the splitgraph.core.image.Image class instead.

+
+
+get_length() int
+

Get the number of rows in this table.

+

This might be smaller than the total number of rows in all objects belonging to this +table as some objects might overwrite each other.

+
+
Returns
+

Number of rows in table

+
+
+
+ +
+
+get_query_plan(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str], use_cache: bool = True) splitgraph.core.table.QueryPlan
+

Start planning a query (preliminary steps before object downloading, +like qualifier filtering).

+
+
Parameters
+
    +
  • quals – Qualifiers in CNF form

  • +
  • columns – List of columns

  • +
  • use_cache – If True, will fetch the plan from the cache for the same qualifiers and columns.

  • +
+
+
Returns
+

QueryPlan

+
+
+
+ +
+
+get_size() int
+

Get the physical size used by the table’s objects (including those shared with other tables).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of table’s +objects have been downloaded.

+
+
Returns
+

Size of the table in bytes.

+
+
+
+ +
+
+materialize(destination: str, destination_schema: Optional[str] = None, lq_server: Optional[str] = None, temporary: bool = False) None
+

Materializes a Splitgraph table in the target schema as a normal Postgres table, potentially downloading all +required objects and using them to reconstruct the table.

+
+
Parameters
+
    +
  • destination – Name of the destination table.

  • +
  • destination_schema – Name of the destination schema.

  • +
  • lq_server – If set, sets up a layered querying FDW for the table instead using this foreign server.

  • +
+
+
+
+ +
+
+query(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])
+

Run a read-only query against this table without materializing it.

+

This is a wrapper around query_lazy() that force evaluates the results which +might mean more fragments being materialized that aren’t needed.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

List of dictionaries of results

+
+
+
+ +
+
+query_indirect(columns: List[str], quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]]) Tuple[Iterator[bytes], Callable, splitgraph.core.table.QueryPlan]
+

Run a read-only query against this table without materializing it. Instead of +actual results, this returns a generator of SQL queries that the caller can use +to get the results as well as a callback that the caller has to run after they’re +done consuming the results.

+

In particular, the query generator will prefer returning direct queries to +Splitgraph objects and only when those are exhausted will it start materializing +delta-compressed fragments.

+

This is an advanced method: you probably want to call table.query().

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of queries (bytes), a callback and a query plan object (containing stats +that are fully populated after the callback has been called to end the query).

+
+
+
+ +
+
+query_lazy(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]]) Iterator[Iterator[Dict[str, Any]]]
+

Run a read-only query against this table without materializing it.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of dictionaries of results.

+
+
+
+ +
+
+reindex(extra_indexes: Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]], raise_on_patch_objects=True) List[str]
+

Run extra indexes on all objects in this table and update their metadata. +This only works on objects that don’t have any deletions or upserts (have a deletion hash of 000000…).

+
+
Parameters
+
    +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • raise_on_patch_objects – If True, will raise an exception if any objects in the table +overwrite any other objects. If False, will log a warning but will reindex all non-patch objects.

  • +
+
+
+

:returns List of objects that were reindexed.

+
+ +
+ +
+
+splitgraph.core.table.merge_index_data(current_index: Dict[str, Any], new_index: Dict[str, Any])
+
+ +
+
+

splitgraph.core.types module

+
+
+class splitgraph.core.types.Comparable
+

Bases: object

+
+ +
+
+class splitgraph.core.types.MountError(table_name, error, error_text)
+

Bases: tuple

+
+
+error: str
+

Alias for field number 1

+
+ +
+
+error_text: str
+

Alias for field number 2

+
+ +
+
+table_name: str
+

Alias for field number 0

+
+ +
+ +
+
+class splitgraph.core.types.TableColumn(ordinal, name, pg_type, is_pk, comment)
+

Bases: tuple

+
+
+comment: Optional[str]
+

Alias for field number 4

+
+ +
+
+is_pk: bool
+

Alias for field number 3

+
+ +
+
+name: str
+

Alias for field number 1

+
+ +
+
+ordinal: int
+

Alias for field number 0

+
+ +
+
+pg_type: str
+

Alias for field number 2

+
+ +
+ +
+
+splitgraph.core.types.dict_to_table_schema_params(tables: Dict[str, ExternalTableRequest]) Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]
+
+ +
+
+splitgraph.core.types.get_table_params(table_info: Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]], table_name: str) TableParams
+
+ +
+
+splitgraph.core.types.table_schema_params_to_dict(tables: Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]) Dict[str, Dict[str, Dict[str, Any]]]
+
+ +
+
+splitgraph.core.types.unwrap(result: Dict[str, Union[splitgraph.core.types.MountError, splitgraph.core.types.T]]) Tuple[Dict[str, splitgraph.core.types.T], Dict[str, splitgraph.core.types.MountError]]
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.core.sql.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.core.sql.mdx new file mode 100644 index 00000000..52a7c8fa --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.core.sql.mdx @@ -0,0 +1,118 @@ + + + +export const meta = { + title: "splitgraph.core.sql package", + id: "splitgraph.core.sql package" +}; + +
+

Module contents

+

Routines for managing SQL statements

+
+
+splitgraph.core.sql.insert(table: str, columns: Sequence[str], schema: str = 'splitgraph_meta') psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to insert as a list of strings.

  • +
  • schema – Schema that contains the table

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query (parameterized)

+
+
+
+ +
+
+splitgraph.core.sql.prepare_splitfile_sql(sql: str, image_mapper: Callable) Tuple[str, str]
+

Transform an SQL query to prepare for it to be used in a Splitfile SQL command and validate it. +The rules are:

+
+
    +
  • Only basic DDL (CREATE/ALTER/DROP table) and DML (SELECT/INSERT/UPDATE/DELETE) are permitted.

  • +
  • All tables must be either non-schema qualified (the statement is run with search_path

  • +
+

set to the single schema that a Splitgraph image is checked out into) or have schemata of +format namespace/repository:hash_or_tag. In the second case, the schema is rewritten to point +at a temporary mount of the Splitgraph image.

+
+
+
Parameters
+
    +
  • sql – SQL query

  • +
  • image_mapper – Takes in an image and gives back the schema it should be rewritten to +(for the purposes of execution) and the canonical form of the image.

  • +
+
+
Returns
+

Transformed form of the SQL with substituted schema shims for Splitfile execution +and the canonical form (with e.g. tags resolved into at-the-time full image hashes)

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+
+splitgraph.core.sql.recover_original_schema_name(sql: str, schema_name: str) str
+

Postgres truncates identifiers to 63 characters at parse time and, as pglast +uses bits of PG to parse queries, image names like noaa/climate:64_chars_of_hash +get truncated which can cause ambiguities and issues in provenance. We can’t +get pglast to give us back the full identifier, but we can try and figure out +what it used to be and patch the AST to have it again.

+
+ +
+
+splitgraph.core.sql.select(table: str, columns: str = '*', where: str = '', schema: str = 'splitgraph_meta', table_args: Optional[str] = None) psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to select as a string. WARN: concatenated directly without any formatting.

  • +
  • where – If specified, added to the query with a “WHERE” keyword. WARN also concatenated directly.

  • +
  • schema – Defaults to SPLITGRAPH_META_SCHEMA.

  • +
  • table_args – If specified, appends to the FROM clause after the table specification, +for example, SELECT * FROM “splitgraph_api”.”get_images” (%s, %s) …

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query.

+
+
+
+ +
+
+splitgraph.core.sql.validate_import_sql(sql: str) str
+

Check an SQL query to see if it can be safely used in an IMPORT statement +(e.g. FROM noaa/climate:latest IMPORT &lbrace;SELECT * FROM rainfall WHERE state = ‘AZ’&rbrace; AS rainfall. +In this case, only a single SELECT statement is supported.

+
+
Parameters
+

sql – SQL query

+
+
Returns
+

Canonical (formatted) form of the SQL statement

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.engine.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.engine.mdx new file mode 100644 index 00000000..9585c2cd --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.engine.mdx @@ -0,0 +1,565 @@ + + + +export const meta = { + title: "splitgraph.engine package", + id: "splitgraph.engine package" +}; + +
+

Module contents

+

Defines the interface for a Splitgraph engine (a backing database), including running basic SQL commands, +tracking tables for changes and uploading/downloading tables to other remote engines.

+

By default, Splitgraph is backed by Postgres: see splitgraph.engine.postgres for an example of how to +implement a different engine.

+
+
+class splitgraph.engine.ChangeEngine
+

Bases: splitgraph.engine.SQLEngine, abc.ABC

+

An SQL engine that can perform change tracking on a set of tables.

+
+
+discard_pending_changes(schema, table=None)
+

Discard recorded pending changes for a tracked table or the whole schema

+
+ +
+
+get_change_key(schema: str, table: str) List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_changed_tables(schema)
+

List tracked tables that have pending changes

+
+
Parameters
+

schema – Schema to check for changes

+
+
Returns
+

List of tables with changed contents

+
+
+
+ +
+
+get_pending_changes(schema, table, aggregate=False)
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: tuple with numbers of (added_rows, removed_rows, updated_rows). +If aggregate is False: A changeset. The changeset is a list of +(pk, action (0 for Insert, 1 for Delete, 2 for Update), action_data) +where action_data is None for Delete and &lbrace;‘c’: [column_names], ‘v’: [column_values]&rbrace; that +have been inserted/updated otherwise.

+
+
+
+ +
+
+get_tracked_tables()
+
+
Returns
+

A list of (table_schema, table_name) that the engine currently tracks for changes

+
+
+
+ +
+
+has_pending_changes(schema)
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables)
+

Start engine-specific change tracking on a list of tables.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+
+untrack_tables(tables)
+

Stop engine-specific change tracking on a list of tables and delete any pending changes.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+ +
+
+class splitgraph.engine.ObjectEngine
+

Bases: object

+

Routines for storing/applying objects as well as sharing them with other engines.

+
+
+apply_fragments(objects, target_schema, target_table, extra_quals=None, extra_qual_args=None, schema_spec=None, progress_every: Optional[int] = None)
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids)
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects, remote_engine)
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id, stream, schema)
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+get_object_schema(object_id)
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id)
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+store_fragment(inserted, deleted, schema, table, source_schema, source_table, source_schema_spec)
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args: Optional[Sequence[Any]], overwrite: bool)
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+upload_objects(objects, remote_engine)
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.ResultShape(value)
+

Bases: enum.Enum

+

Shape that the result of a query will be coerced to

+
+
+MANY_MANY = 4
+
+ +
+
+MANY_ONE = 3
+
+ +
+
+NONE = 0
+
+ +
+
+ONE_MANY = 2
+
+ +
+
+ONE_ONE = 1
+
+ +
+ +
+
+class splitgraph.engine.SQLEngine
+

Bases: abc.ABC

+

Abstraction for a Splitgraph SQL backend. Requires any overriding classes to implement run_sql as well as +a few other functions. Together with the information_schema (part of the SQL standard), this class uses those +functions to implement some basic database management methods like listing, deleting, creating, dumping +and loading tables.

+
+
+close()
+

Commit and close the engine’s backing connection

+
+ +
+
+commit()
+

Commit the engine’s backing connection

+
+ +
+
+copy_table(source_schema: str, source_table: str, target_schema: str, target_table: str, with_pk_constraints: bool = True) None
+

Copy a table in the same engine, optionally applying primary key constraints as well.

+
+ +
+
+create_schema(schema: str) None
+

Create a schema if it doesn’t exist

+
+ +
+
+create_table(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False) None
+

Creates a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
+
+ +
+
+delete_schema(schema: str) None
+

Delete a schema if it exists, including all the tables in it.

+
+ +
+
+delete_table(schema: str, table: str) None
+

Drop a table from a schema if it exists

+
+ +
+
+static dump_table_creation(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False) Tuple[psycopg2.sql.Composed, Tuple]
+

Dumps the DDL for a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
Returns
+

An SQL statement that reconstructs the table schema + args to be mogrified into it.

+
+
+
+ +
+
+dump_table_sql(schema, table_name, stream, columns='*', where='', where_args=None, target_schema=None, target_table=None)
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_all_tables(schema: str) List[str]
+

Get all tables in a given schema.

+
+ +
+
+get_full_table_schema(schema: str, table_name: str) List[splitgraph.core.types.TableColumn]
+

Generates a list of (column ordinal, name, data type, is_pk, column comment), +used to detect schema changes like columns being dropped/added/renamed or type changes.

+

NB this doesn’t work for temporary tables (pg_temp) and returns an empty schema.

+
+ +
+
+get_primary_keys(schema, table)
+

Get a list of (column_name, column_type) denoting the primary keys of a given table.

+
+ +
+
+get_table_type(schema: str, table: str) Optional[str]
+

Get the type of the table (BASE or FOREIGN)

+
+ +
+
+initialize()
+

Does any required initialization of the engine

+
+ +
+
+lock_table(schema, table)
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback()
+

Rollback the engine’s backing connection

+
+ +
+
+run_sql(statement, arguments=None, return_shape=ResultShape.MANY_MANY, named=False)
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement, arguments, schema=None)
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+run_sql_in(schema: str, sql: Union[psycopg2.sql.Composed, str], arguments: None = None, return_shape: splitgraph.engine.ResultShape = ResultShape.MANY_MANY) Any
+

Executes a non-schema-qualified query against a specific schema.

+
+
Parameters
+
    +
  • schema – Schema to run the query in

  • +
  • sql – Query

  • +
  • arguments – Query arguments

  • +
  • return_shape – ReturnShape to coerce the result into.

  • +
+
+
+
+ +
+
+savepoint(name: str) Iterator[None]
+

At the beginning of this context manager, a savepoint is initialized and any database +error that occurs in run_sql results in a rollback to this savepoint rather than the +rollback of the whole transaction. At exit, the savepoint is released.

+
+ +
+
+schema_exists(schema: str) bool
+

Check if a schema exists on the engine.

+
+
Parameters
+

schema – Schema name

+
+
+
+ +
+
+table_exists(schema: str, table_name: str) bool
+

Check if a table exists on the engine.

+
+
Parameters
+
    +
  • schema – Schema name

  • +
  • table_name – Table name

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.SavepointStack
+

Bases: _thread._local

+
+ +
+
+splitgraph.engine.get_engine(name: Optional[str] = None, use_socket: bool = False, use_fdw_params: bool = False, autocommit: bool = False) PostgresEngine
+

Get the current global engine or a named remote engine

+
+
Parameters
+
    +
  • name – Name of the remote engine as specified in the config. If None, the current global engine +is returned.

  • +
  • use_socket – Use a local UNIX socket instead of PG_HOST, PG_PORT for LOCAL engine connections.

  • +
  • use_fdw_params – Use the _FDW connection parameters (SG_ENGINE_FDW_HOST/PORT). By default, +will infer from the global splitgraph.config.IN_FDW flag.

  • +
  • autocommit – If True, the engine will not open SQL transactions implicitly.

  • +
+
+
+
+ +
+
+splitgraph.engine.set_engine(engine: PostgresEngine) None
+

Switch the global engine to a different one.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.switch_engine(engine: PostgresEngine) Iterator[None]
+

Switch the global engine to a different one. The engine will +get switched back on exit from the context manager.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.validate_type(t: str) str
+
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.engine.postgres.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.engine.postgres.mdx new file mode 100644 index 00000000..4ebeea1f --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.engine.postgres.mdx @@ -0,0 +1,456 @@ + + + +export const meta = { + title: "splitgraph.engine.postgres package", + id: "splitgraph.engine.postgres package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.engine.postgres.engine module

+

Default Splitgraph engine: uses PostgreSQL to store metadata and actual objects and an audit stored procedure +to track changes, as well as the Postgres FDW interface to upload/download objects to/from other Postgres engines.

+
+
+class splitgraph.engine.postgres.engine.AuditTriggerChangeEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.PsycopgEngine, splitgraph.engine.ChangeEngine

+

Change tracking based on an audit trigger stored procedure

+
+
+discard_pending_changes(schema: str, table: Optional[str] = None) None
+

Discard recorded pending changes for a tracked schema / table

+
+ +
+
+get_changed_tables(schema: str) List[str]
+

Get list of tables that have changed content

+
+ +
+
+get_pending_changes(schema: str, table: str, aggregate: bool = False) Union[List[Tuple[int, int]], List[Tuple[Tuple[str, ...], bool, Dict[str, Any], Dict[str, Any]]]]
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: List of tuples of (change_type, number of rows). +If aggregate is False: List of (primary_key, change_type, change_data)

+
+
+
+ +
+
+get_tracked_tables() List[Tuple[str, str]]
+

Return a list of tables that the audit trigger is working on.

+
+ +
+
+has_pending_changes(schema: str) bool
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables: List[Tuple[str, str]]) None
+

Install the audit trigger on the required tables

+
+ +
+
+untrack_tables(tables: List[Tuple[str, str]]) None
+

Remove triggers from tables and delete their pending changes

+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PostgresEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.AuditTriggerChangeEngine, splitgraph.engine.ObjectEngine

+

An implementation of the Postgres engine for Splitgraph

+
+
+apply_fragments(objects: List[Tuple[str, str]], target_schema: str, target_table: str, extra_quals: Optional[psycopg2.sql.Composed] = None, extra_qual_args: Optional[Tuple[Any, ...]] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, progress_every: Optional[int] = None) None
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids: List[str]) None
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine) List[str]
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id: str, stream: _io.TextIOWrapper, schema: str) None
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+dump_object_creation(object_id: str, schema: str, table: Optional[str] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, if_not_exists: bool = False) bytes
+

Generate the SQL that remounts a foreign table pointing to a Splitgraph object.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • schema – Schema to create the table in

  • +
  • table – Name of the table to mount

  • +
  • schema_spec – Schema of the table

  • +
  • if_not_exists – Add IF NOT EXISTS to the DDL

  • +
+
+
Returns
+

SQL in bytes format.

+
+
+
+ +
+
+get_change_key(schema: str, table: str) List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_object_schema(object_id: str) List[splitgraph.core.types.TableColumn]
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id: str) int
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+mount_object(object_id: str, table: None = None, schema: str = 'splitgraph_meta', schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None) None
+

Mount an object from local storage as a foreign table.

+
+
Parameters
+
    +
  • object_id – ID of the object

  • +
  • table – Table to mount the object into

  • +
  • schema – Schema to mount the object into

  • +
  • schema_spec – Schema of the object.

  • +
+
+
+
+ +
+
+rename_object(old_object_id: str, new_object_id: str)
+
+ +
+
+store_fragment(inserted: Any, deleted: Any, schema: str, table: str, source_schema: str, source_table: str, source_schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None) None
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args=None, overwrite=False) None
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+sync_object_mounts() None
+

Scan through local object storage and synchronize it with the foreign tables in +splitgraph_meta (unmounting non-existing objects and mounting existing ones).

+
+ +
+
+unmount_objects(object_ids: List[str]) None
+

Unmount objects from splitgraph_meta (this doesn’t delete the physical files.

+
+ +
+
+upload_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine) None
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PsycopgEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.SQLEngine

+

Postgres SQL engine backed by a Psycopg connection.

+
+
+close() None
+

Commit and close the engine’s backing connection

+
+ +
+
+close_others() None
+

Close and release all other connections to the connection pool.

+
+ +
+
+commit() None
+

Commit the engine’s backing connection

+
+ +
+
+property connection: Connection
+

Engine-internal Psycopg connection.

+
+ +
+
+copy_cursor()
+

Return a cursor that can be used for copy_expert operations

+
+ +
+
+delete_database(database: str) None
+

Helper function to drop a database using the admin connection

+
+
Parameters
+

database – Database name to drop

+
+
+
+ +
+
+dump_table_sql(schema: str, table_name: str, stream: _io.TextIOWrapper, columns: str = '*', where: str = '', where_args: Optional[Union[List[str], Tuple[str, str]]] = None, target_schema: Optional[str] = None, target_table: Optional[str] = None) None
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_primary_keys(schema: str, table: str) List[Tuple[str, str]]
+

Inspects the Postgres information_schema to get the primary keys for a given table.

+
+ +
+
+in_fdw
+

List of notices issued by the server during the previous execution of run_sql.

+
+ +
+
+initialize(skip_object_handling: bool = False, skip_create_database: bool = False) None
+

Create the Splitgraph Postgres database and install the audit trigger

+
+
Parameters
+
    +
  • skip_object_handling – If True, skips installation of +audit triggers and other object management routines for engines +that don’t need change tracking or checkouts.

  • +
  • skip_create_database – Don’t create the Splitgraph database

  • +
+
+
+
+ +
+
+lock_table(schema: str, table: str) None
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback() None
+

Rollback the engine’s backing connection

+
+ +
+
+run_api_call(call: str, *args, schema: str = 'splitgraph_api') Any
+
+ +
+
+run_api_call_batch(call: str, argslist, schema: str = 'splitgraph_api')
+
+ +
+
+run_chunked_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Sequence[Any], return_shape: Optional[splitgraph.engine.ResultShape] = ResultShape.MANY_MANY, chunk_size: int = 1000, chunk_position: int = - 1) Any
+

Because the Splitgraph API has a request size limitation, certain +SQL calls with variadic arguments are going to be too long to fit that. This function +runs an SQL query against a set of broken up arguments and returns the combined result.

+
+ +
+
+run_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Optional[Sequence[Any]] = None, return_shape: Optional[splitgraph.engine.ResultShape] = ResultShape.MANY_MANY, named: bool = False) Any
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement: Union[psycopg2.sql.Composed, str], arguments: Any, schema: Optional[str] = None, max_size=261000) None
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+property splitgraph_version: Optional[str]
+

Returns the version of the Splitgraph library installed on the engine +and by association the version of the engine itself.

+
+ +
+ +
+
+splitgraph.engine.postgres.engine.add_ud_flag_column(table_schema: List[splitgraph.core.types.TableColumn]) List[splitgraph.core.types.TableColumn]
+
+ +
+
+splitgraph.engine.postgres.engine.chunk(sequence: Sequence[splitgraph.engine.postgres.engine.T], chunk_size: int = 1000) Iterator[List[splitgraph.engine.postgres.engine.T]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_change_key(schema_spec: List[splitgraph.core.types.TableColumn]) List[Tuple[str, str]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_conn_str(conn_params: Dict[str, Optional[str]]) str
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.hooks.data_source.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.hooks.data_source.mdx new file mode 100644 index 00000000..127525b5 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.hooks.data_source.mdx @@ -0,0 +1,536 @@ + + + +export const meta = { + title: "splitgraph.hooks.data_source package", + id: "splitgraph.hooks.data_source package" +}; + +
+

Module contents

+
+
+splitgraph.hooks.data_source.get_data_source(data_source: str) Type[splitgraph.hooks.data_source.base.DataSource]
+

Returns a class for a given data source

+
+ +
+
+splitgraph.hooks.data_source.get_data_sources() List[str]
+

Returns the names of all registered data sources.

+
+ +
+
+splitgraph.hooks.data_source.merge_jsonschema(left: Dict[str, Any], right: Dict[str, Any]) Dict[str, Any]
+
+ +
+
+splitgraph.hooks.data_source.register_data_source(name: str, data_source_class: Type[splitgraph.hooks.data_source.base.DataSource]) None
+

Returns a data source under a given name.

+
+ +
+ +
+

Submodules

+
+
+

splitgraph.hooks.data_source.base module

+
+
+class splitgraph.hooks.data_source.base.DataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: abc.ABC

+
+
+credentials_schema: Dict[str, Any] = &lbrace;&rbrace;
+
+ +
+
+abstract classmethod get_description() str
+
+ +
+
+abstract classmethod get_name() str
+
+ +
+
+get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
+

Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

+
+ +
+
+abstract introspect() IntrospectionResult
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;&rbrace;
+
+ +
+
+supports_load = False
+
+ +
+
+supports_mount = False
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.LoadableDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+load(repository: Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+
+supports_load = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.MountableDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+abstract mount(schema: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, overwrite: bool = True) Optional[List[splitgraph.core.types.MountError]]
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+supports_mount = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.SyncableDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.LoadableDataSource, splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+supports_load = True
+
+ +
+
+supports_sync = True
+
+ +
+
+sync(repository: Repository, image_hash: Optional[str], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+ +
+
+splitgraph.hooks.data_source.base.get_ingestion_state(repository: Repository, image_hash: Optional[str]) Optional[SyncState]
+
+ +
+
+splitgraph.hooks.data_source.base.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.hooks.data_source.base.prepare_new_image(repository: Repository, hash_or_tag: Optional[str], comment: str = 'Singer tap ingestion') Tuple[Optional[splitgraph.core.image.Image], str]
+
+ +
+
+

splitgraph.hooks.data_source.fdw module

+
+
+class splitgraph.hooks.data_source.fdw.ElasticSearchDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount an ElasticSearch instance.\n\nMount a set of tables proxying to a remote ElasticSearch index.\n\nThis uses a fork of postgres-elasticsearch-fdw behind the scenes. You can add a column\n`query` to your table and set it as `query_column` to pass advanced ES queries and aggregations.\nFor example:\n\n```\nsgr mount elasticsearch target_schema -c elasticsearch:9200 -o@- <<EOF\n    &lbrace;\n      "tables": &lbrace;\n        "table_1": &lbrace;\n          "schema": &lbrace;\n            "id": "text",\n            "@timestamp": "timestamp",\n            "query": "text",\n            "col_1": "text",\n            "col_2": "boolean"\n          &rbrace;,\n          "options": &lbrace;\n              "index": "index-pattern*",\n              "rowid_column": "id",\n              "query_column": "query"\n          &rbrace;\n        &rbrace;\n      &rbrace;\n    &rbrace;\nEOF\n```\n'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': ['string', 'null']&rbrace;, 'username': &lbrace;'type': ['string', 'null']&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'index': &lbrace;'description': 'ES index name or pattern to use, for example, "events-*"', 'type': 'string'&rbrace;, 'query_column': &lbrace;'description': 'Name of the column to use to pass queries in', 'type': 'string'&rbrace;, 'score_column': &lbrace;'description': 'Name of the column with the document score', 'type': 'string'&rbrace;, 'scroll_duration': &lbrace;'description': 'How long to hold the scroll context open for, default 10m', 'type': 'string'&rbrace;, 'scroll_size': &lbrace;'description': 'Fetch size, default 1000', 'type': 'integer'&rbrace;, 'type': &lbrace;'description': 'Pre-ES7 doc_type, not required in ES7 or later', 'type': 'string'&rbrace;&rbrace;, 'required': ['index'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.MountableDataSource, splitgraph.hooks.data_source.base.LoadableDataSource, abc.ABC

+
+
+commandline_help: str = ''
+
+ +
+
+commandline_kwargs_help: str = ''
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs) splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+abstract get_fdw_name()
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options() Mapping[str, str]
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
+
+ +
+
+get_table_schema(table_name: str, table_schema: List[splitgraph.core.types.TableColumn]) List[splitgraph.core.types.TableColumn]
+
+ +
+
+get_user_options() Mapping[str, str]
+
+ +
+
+introspect() IntrospectionResult
+
+ +
+
+mount(schema: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, overwrite: bool = True) Optional[List[splitgraph.core.types.MountError]]
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+preview(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]]) PreviewResult
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MongoDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Mongo database.\n\nMounts one or more collections on a remote Mongo database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'tables: A dictionary of form\n```\n&lbrace;\n    "table_name": &lbrace;\n        "schema": &lbrace;"col1": "type1"...&rbrace;,\n        "options": &lbrace;"database": <dbname>, "collection": <collection>&rbrace; \n    &rbrace; \n&rbrace;\n```\n'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_server_options()
+
+ +
+
+get_table_schema(table_name, table_schema)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'collection': &lbrace;'type': 'string'&rbrace;, 'database': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['database', 'collection'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MySQLDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a MySQL database.\n\nMounts a schema on a remote MySQL database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'dbname: Remote MySQL database name (required)\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n        '
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'type': 'string'&rbrace;, 'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.PostgreSQLDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Postgres database.\n\nMounts a schema on a remote Postgres database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'dbname: Database name (required)\nremote_schema: Remote schema name (required)\nextra_server_args: Dictionary of extra arguments to pass to the foreign server\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n    '
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'description': 'Database name', 'type': 'string'&rbrace;, 'host': &lbrace;'description': 'Remote hostname', 'type': 'string'&rbrace;, 'port': &lbrace;'description': 'Port', 'type': 'integer'&rbrace;, 'remote_schema': &lbrace;'description': 'Remote schema name', 'type': 'string'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname', 'remote_schema'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.hooks.data_source.fdw.create_foreign_table(schema: str, server: str, table_name: str, schema_spec: List[splitgraph.core.types.TableColumn], extra_options: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.hooks.data_source.fdw.import_foreign_schema(engine: PostgresEngine, mountpoint: str, remote_schema: str, server_id: str, tables: List[str], options: Optional[Dict[str, str]] = None) List[splitgraph.core.types.MountError]
+
+ +
+
+splitgraph.hooks.data_source.fdw.init_fdw(engine: PostgresEngine, server_id: str, wrapper: str, server_options: Optional[Mapping[str, Optional[str]]] = None, user_options: Optional[Mapping[str, str]] = None, overwrite: bool = True) None
+

Sets up a foreign data server on the engine.

+
+
Parameters
+
    +
  • engine – PostgresEngine

  • +
  • server_id – Name to call the foreign server, must be unique. Will be deleted if exists.

  • +
  • wrapper – Name of the foreign data wrapper (must be installed as an extension on the engine)

  • +
  • server_options – Dictionary of FDW options

  • +
  • user_options – Dictionary of user options

  • +
  • overwrite – If the server already exists, delete and recreate it.

  • +
+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.hooks.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.hooks.mdx new file mode 100644 index 00000000..36a0539f --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.hooks.mdx @@ -0,0 +1,366 @@ + + + +export const meta = { + title: "splitgraph.hooks package", + id: "splitgraph.hooks package" +}; + +
+

Module contents

+

Various hooks for extending Splitgraph, including:

+
+
    +
  • External object handlers (splitgraph.hooks.external_objects) allowing to download/upload objects +to locations other than the remote Splitgraph engine.

  • +
  • Data sources (splitgraph.hooks.data_sources) that allow to add data to Splitgraph, e.g.

  • +
+
+

using the Postgres engine’s FDW interface to mount other external databases on the engine.

+
+ +
+
+ + +
+

Submodules

+
+
+

splitgraph.hooks.external_objects module

+

Hooks for registering handlers to upload/download objects from external locations into Splitgraph’s cache.

+
+
+class splitgraph.hooks.external_objects.ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: object

+

Framework for allowing to dump objects from the Splitgraph cache to an external location. This allows +the objects to be stored somewhere other than the actual remote engine.

+

External object handlers must extend this class and be registered in the Splitgraph config.

+

For an example of how this can be used, see splitgraph.hooks.s3: it’s a handler allowing objects to be +uploaded to S3/S3-compatible host using the Minio API. It’s registered in the config as follows:

+
[external_handlers]
+S3=splitgraph.hooks.s3.S3ExternalObjectHandler
+
+
+

The protocol and the URLs returned by this handler are stored in splitgraph_meta.external_objects +and used to download the objects back into the Splitgraph cache when they are needed.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine) Sequence[str]
+

Download objects from the external location into the Splitgraph cache.

+
+
Parameters
+
    +
  • objects – List of tuples (object_id, object_url) that this handler had previosly +uploaded the objects to.

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of object IDs that have been successfully downloaded.

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine) Sequence[Tuple[str, str]]
+

Upload objects from the Splitgraph cache to an external location

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of successfully uploaded object IDs and URLs they can be found at.

+
+
+
+ +
+ +
+
+splitgraph.hooks.external_objects.get_external_object_handler(name: str, handler_params: Dict[Any, Any]) splitgraph.hooks.external_objects.ExternalObjectHandler
+

Load an external protocol handler by its name, initializing it with optional parameters.

+
+ +
+
+splitgraph.hooks.external_objects.register_upload_download_handler(name: str, handler_class: Callable[[...], splitgraph.hooks.external_objects.ExternalObjectHandler]) None
+

Register an external protocol handler. See the docstring for get_upload_download_handler for the required +signatures of the handler functions.

+
+ +
+
+

splitgraph.hooks.mount_handlers module

+

Extra wrapper code for mount handlers

+
+
+splitgraph.hooks.mount_handlers.mount(mountpoint: str, mount_handler: str, handler_kwargs: Dict[str, Any], overwrite: bool = True, tables: Optional[TableInfo] = None) None
+

Mounts a foreign database via an FDW (without creating new Splitgraph objects)

+
+
Parameters
+
    +
  • mountpoint – Mountpoint to import the new tables into.

  • +
  • mount_handler – The type of the mounted database.

  • +
  • handler_kwargs – Dictionary of options to pass to the mount handler.

  • +
  • overwrite – Delete the foreign server if it already exists. Used by mount_postgres for data pulls.

  • +
  • tables – List of tables to mount or their schemas

  • +
+
+
+
+ +
+
+splitgraph.hooks.mount_handlers.mount_postgres(mountpoint, **kwargs) None
+

Mount a Postgres database.

+

Mounts a schema on a remote Postgres database as a set of foreign tables locally. +

+
+
Parameters
+
    +
  • mountpoint – Schema to mount the remote into.

  • +
  • server – Database hostname.

  • +
  • port – Port the Postgres server is running on.

  • +
  • username – A read-only user that the database will be accessed as.

  • +
  • password – Password for the read-only user.

  • +
  • dbname – Remote database name.

  • +
  • remote_schema – Remote schema name.

  • +
  • extra_server_args – Dictionary of extra arguments to pass to the foreign server

  • +
  • tables – Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.

  • +
+
+
+

If a dictionary, must have the format &lbrace;“table_name”: &lbrace;“col_1”: “type_1”, …&rbrace;&rbrace;.

+
+ +
+
+

splitgraph.hooks.s3 module

+

Plugin for uploading Splitgraph objects from the cache to an external S3-like object store

+
+
+class splitgraph.hooks.s3.S3ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: splitgraph.hooks.external_objects.ExternalObjectHandler

+

Uploads/downloads the objects to/from S3/S3-compatible host using the Minio client.

+

The handler is “attached” to a given registry which manages issuing pre-signed +GET/PUT URLs.

+

The handler supports a parameter threads specifying the number of threads +used to upload the objects.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine) List[str]
+

Download objects from Minio.

+
+
Parameters
+

objects – List of (object ID, object URL (object ID it’s stored under))

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine) List[Tuple[str, str]]
+

Upload objects to Minio

+
+
Parameters
+
    +
  • remote_engine – Remote Engine class

  • +
  • objects – List of object IDs to upload

  • +
+
+
Returns
+

List of tuples with successfully uploaded objects and their URLs.

+
+
+
+ +
+ +
+
+splitgraph.hooks.s3.get_object_download_urls(remote_engine, remote_object_ids)
+
+ +
+
+splitgraph.hooks.s3.get_object_upload_urls(remote_engine, objects)
+
+ +
+
+

splitgraph.hooks.s3_server module

+

S3 registry-side routines called from the Python stored procedure +that are aware of the actual S3 access creds and generate pre-signed +URLs to upload/download objects.

+
+
+splitgraph.hooks.s3_server.delete_objects(client: minio.api.Minio, object_ids: List[str]) None
+

Delete objects stored in Minio

+
+
Parameters
+
    +
  • client – Minio client

  • +
  • object_ids – List of Splitgraph object IDs to delete

  • +
+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_download_urls(s3_host: str, object_ids: List[str]) List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_upload_urls(s3_host: str, object_ids: List[str]) List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.list_objects(client: minio.api.Minio) List[str]
+

List objects stored in Minio

+
+
Parameters
+

client – Minio client

+
+
Returns
+

List of Splitgraph object IDs

+
+
+
+ +
+
+

splitgraph.hooks.splitfile_commands module

+

A framework for custom Splitfile commands. The execution flow is as follows:

+
+
    +
  • When the Splitfile executor finds an unknown command, it looks for an entry in the config file:

    +
    [commands]
    +RUN=splitgraph.plugins.Run
    +
    +
    +
  • +
  • The command class must extend this class, initialized at every invocation time.

  • +
  • The command’s calc_hash() method is run. The resultant command context hash is combined with the current +image hash to produce the new image hash: if it already exists, then the image is simply checked out.

  • +
  • Otherwise (or if calc_hash is undefined or returns None), execute(), where the actual command should be +implemented, is run. If it returns a hash, this hash is used for the new image. If this hash already exists, +the existing image is checked out instead. If the command returns None, a random hash is generated for the +new image.

  • +
+
+
+
+class splitgraph.hooks.splitfile_commands.PluginCommand
+

Bases: object

+

Base class for custom Splitfile commands.

+
+
+calc_hash(repository, args)
+

Calculates the command context hash for this custom command. If either the command context hash or the +previous image hash has changed, then the image hash produced by this command will change. +Consequently, two commands with the same command context hashes are assumed to have the same effect +on any Splitgraph images.

+

This is supposed to be a lightweight method intended for pre-flight image hash calculations +(without performing the actual transformation). If it returns None, the actual transformation is run anyway.

+

For example, for a command that imports some data from an external URL, this could be the hash of the last +modified timestamp provided by the external data vendor. If the timestamp is unchanged, the data is unchanged +and so actual command won’t be re-executed.

+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits)

+
+
+
+ +
+
+execute(repository, args)
+

Execute the custom command against the target schema, optionally returning the new image hash. The contract +for the command is as follows (though it is not currently enforced by the runtime):

+
+
    +
  • Has to use get_engine().run_sql (or run_sql_batch) to interact with the engine.

  • +
  • Can only write to the schema with the checked-out repository (run_sql runs non-schema-qualified +statements against the correct schema).

  • +
  • Can inspect splitgraph_meta (e.g. to find the current HEAD) for the repository.

  • +
  • Can’t alter the versioning of the repository.

  • +
+
+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits). If calc_hash() had previously returned +a hash, this hash is ignored. If both this command and calc_hash() return None, the hash is randomly +generated.

+
+
+
+ +
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.airbyte.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.airbyte.mdx new file mode 100644 index 00000000..d5509590 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.airbyte.mdx @@ -0,0 +1,667 @@ + + + +export const meta = { + title: "splitgraph.ingestion.airbyte package", + id: "splitgraph.ingestion.airbyte package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.ingestion.airbyte.data_source module

+
+
+class splitgraph.ingestion.airbyte.data_source.AirbyteDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.SyncableDataSource, abc.ABC

+

Generic data source for Airbyte-compliant sources. +We run ingestion by combining an Airbyte source and the Airbyte Postgres destination.

+
+
+airbyte_name: Optional[str] = None
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'normalization_git_url': &lbrace;'description': 'For `custom` normalization, a URL to the Git repo with the dbt project, for example,`https://uname:pass_or_token@github.com/organisation/repository.git`.', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+cursor_overrides: Optional[Dict[str, List[str]]] = None
+
+ +
+
+docker_environment: Optional[Dict[str, str]] = None
+
+ +
+
+docker_image: Optional[str] = None
+
+ +
+
+get_airbyte_config() Dict[str, Any]
+
+ +
+
+introspect() IntrospectionResult
+
+ +
+
+load(repository: splitgraph.core.repository.Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+
+normalization_image = 'airbyte/normalization:0.1.36'
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'normalization_git_branch': &lbrace;'default': 'master', 'description': 'Branch or commit hash to use for the normalization dbt project.', 'type': 'string'&rbrace;, 'normalization_mode': &lbrace;'default': ['basic'], 'description': "Whether to normalize raw Airbyte tables. `none` is no normalization, `basic` is Airbyte's basic normalization, `custom` is a custom dbt transformation on the data.", 'enum': ['none', 'basic', 'custom'], 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+primary_key_overrides: Optional[Dict[str, List[str]]] = None
+
+ +
+
+receiver_image = 'airbyte/destination-postgres:latest'
+
+ +
+
+sync(repository: splitgraph.core.repository.Repository, image_hash: Optional[str] = None, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_state: bool = True) str
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'airbyte_cursor_fields': &lbrace;'description': "Fields in this stream to be used as a cursor for incremental replication (overrides Airbyte configuration's cursor_field)", 'items': &lbrace;'type': 'string'&rbrace;, 'type': 'array'&rbrace;, 'airbyte_primary_key_fields': &lbrace;'description': "Fields in this stream to be used as a primary key for deduplication (overrides Airbyte configuration's primary_key)", 'items': &lbrace;'type': 'string'&rbrace;, 'type': 'array'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.ingestion.airbyte.data_source.delete_schema_at_end(engine: splitgraph.engine.postgres.engine.PostgresEngine, schema: str) Generator
+
+ +
+
+splitgraph.ingestion.airbyte.data_source.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+

splitgraph.ingestion.airbyte.docker_utils module

+
+
+exception splitgraph.ingestion.airbyte.docker_utils.SubprocessError
+

Bases: splitgraph.exceptions.SplitGraphError

+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.add_files(container: docker.models.containers.Container, files: List[Tuple[str, str]]) None
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.build_command(files: List[Tuple[str, Any]]) List[str]
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.detect_network_mode(client: docker.client.DockerClient) str
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.remove_at_end(container: docker.models.containers.Container) docker.models.containers.Container
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.wait_not_failed(container: docker.models.containers.Container, mirror_logs: bool = False) None
+

Block until a Docker container exits.

+

:raises SubprocessError if the container exited with a non-zero code.

+
+ +
+
+

splitgraph.ingestion.airbyte.models module

+
+
+class splitgraph.ingestion.airbyte.models.AirbyteCatalog(*, streams: List[splitgraph.ingestion.airbyte.models.AirbyteStream], **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+streams: List[splitgraph.ingestion.airbyte.models.AirbyteStream]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus(*, status: splitgraph.ingestion.airbyte.models.Status, message: str = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+message: Optional[str]
+
+ +
+
+status: splitgraph.ingestion.airbyte.models.Status
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteLogMessage(*, level: splitgraph.ingestion.airbyte.models.Level, message: str, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+level: splitgraph.ingestion.airbyte.models.Level
+
+ +
+
+message: str
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteMessage(*, type: splitgraph.ingestion.airbyte.models.Type, log: splitgraph.ingestion.airbyte.models.AirbyteLogMessage = None, spec: splitgraph.ingestion.airbyte.models.ConnectorSpecification = None, connectionStatus: splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus = None, catalog: splitgraph.ingestion.airbyte.models.AirbyteCatalog = None, record: splitgraph.ingestion.airbyte.models.AirbyteRecordMessage = None, state: splitgraph.ingestion.airbyte.models.AirbyteStateMessage = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+catalog: Optional[splitgraph.ingestion.airbyte.models.AirbyteCatalog]
+
+ +
+
+connectionStatus: Optional[splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus]
+
+ +
+
+log: Optional[splitgraph.ingestion.airbyte.models.AirbyteLogMessage]
+
+ +
+
+record: Optional[splitgraph.ingestion.airbyte.models.AirbyteRecordMessage]
+
+ +
+
+spec: Optional[splitgraph.ingestion.airbyte.models.ConnectorSpecification]
+
+ +
+
+state: Optional[splitgraph.ingestion.airbyte.models.AirbyteStateMessage]
+
+ +
+
+type: splitgraph.ingestion.airbyte.models.Type
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteProtocol(*, airbyte_message: splitgraph.ingestion.airbyte.models.AirbyteMessage = None, configured_airbyte_catalog: splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog = None)
+

Bases: pydantic.main.BaseModel

+
+
+airbyte_message: Optional[splitgraph.ingestion.airbyte.models.AirbyteMessage]
+
+ +
+
+configured_airbyte_catalog: Optional[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteRecordMessage(*, stream: str, data: Dict[str, Any], emitted_at: int, namespace: str = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+data: Dict[str, Any]
+
+ +
+
+emitted_at: int
+
+ +
+
+namespace: Optional[str]
+
+ +
+
+stream: str
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteStateMessage(*, data: Dict[str, Any], **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+data: Dict[str, Any]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteStream(*, name: str, json_schema: Dict[str, Any], supported_sync_modes: List[splitgraph.ingestion.airbyte.models.SyncMode] = None, source_defined_cursor: bool = None, default_cursor_field: List[str] = None, source_defined_primary_key: List[List[str]] = None, namespace: str = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+default_cursor_field: Optional[List[str]]
+
+ +
+
+json_schema: Dict[str, Any]
+
+ +
+
+name: str
+
+ +
+
+namespace: Optional[str]
+
+ +
+
+source_defined_cursor: Optional[bool]
+
+ +
+
+source_defined_primary_key: Optional[List[List[str]]]
+
+ +
+
+supported_sync_modes: Optional[List[splitgraph.ingestion.airbyte.models.SyncMode]]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog(*, streams: List[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream], **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+streams: List[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream(*, stream: splitgraph.ingestion.airbyte.models.AirbyteStream, sync_mode: splitgraph.ingestion.airbyte.models.SyncMode, cursor_field: List[str] = None, destination_sync_mode: splitgraph.ingestion.airbyte.models.DestinationSyncMode, primary_key: List[List[str]] = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+cursor_field: Optional[List[str]]
+
+ +
+
+destination_sync_mode: splitgraph.ingestion.airbyte.models.DestinationSyncMode
+
+ +
+
+primary_key: Optional[List[List[str]]]
+
+ +
+
+stream: splitgraph.ingestion.airbyte.models.AirbyteStream
+
+ +
+
+sync_mode: splitgraph.ingestion.airbyte.models.SyncMode
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.ConnectorSpecification(*, documentationUrl: pydantic.networks.AnyUrl = None, changelogUrl: pydantic.networks.AnyUrl = None, connectionSpecification: Dict[str, Any], supportsIncremental: bool = None, supportsNormalization: bool = False, supportsDBT: bool = False, supported_destination_sync_modes: List[splitgraph.ingestion.airbyte.models.DestinationSyncMode] = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+changelogUrl: Optional[pydantic.networks.AnyUrl]
+
+ +
+
+connectionSpecification: Dict[str, Any]
+
+ +
+
+documentationUrl: Optional[pydantic.networks.AnyUrl]
+
+ +
+
+supported_destination_sync_modes: Optional[List[splitgraph.ingestion.airbyte.models.DestinationSyncMode]]
+
+ +
+
+supportsDBT: Optional[bool]
+
+ +
+
+supportsIncremental: Optional[bool]
+
+ +
+
+supportsNormalization: Optional[bool]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.DestinationSyncMode(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+append = 'append'
+
+ +
+
+append_dedup = 'append_dedup'
+
+ +
+
+overwrite = 'overwrite'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.Level(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+DEBUG = 'DEBUG'
+
+ +
+
+ERROR = 'ERROR'
+
+ +
+
+FATAL = 'FATAL'
+
+ +
+
+INFO = 'INFO'
+
+ +
+
+TRACE = 'TRACE'
+
+ +
+
+WARN = 'WARN'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.Status(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+FAILED = 'FAILED'
+
+ +
+
+SUCCEEDED = 'SUCCEEDED'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.SyncMode(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+full_refresh = 'full_refresh'
+
+ +
+
+incremental = 'incremental'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.Type(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+CATALOG = 'CATALOG'
+
+ +
+
+CONNECTION_STATUS = 'CONNECTION_STATUS'
+
+ +
+
+LOG = 'LOG'
+
+ +
+
+RECORD = 'RECORD'
+
+ +
+
+SPEC = 'SPEC'
+
+ +
+
+STATE = 'STATE'
+
+ +
+ +
+
+

splitgraph.ingestion.airbyte.utils module

+
+
+splitgraph.ingestion.airbyte.utils.get_pk_cursor_fields(stream: splitgraph.ingestion.airbyte.models.AirbyteStream, table_params: TableParams, cursor_overrides: Optional[Dict[str, List[str]]] = None, primary_key_overrides: Optional[Dict[str, List[str]]] = None) Tuple[Optional[List[str]], Optional[List[List[str]]]]
+
+ +
+
+splitgraph.ingestion.airbyte.utils.get_sg_schema(stream: splitgraph.ingestion.airbyte.models.AirbyteStream) List[splitgraph.core.types.TableColumn]
+
+ +
+
+splitgraph.ingestion.airbyte.utils.select_streams(catalog: splitgraph.ingestion.airbyte.models.AirbyteCatalog, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]], sync: bool = False, cursor_overrides: Optional[Dict[str, List[str]]] = None, primary_key_overrides: Optional[Dict[str, List[str]]] = None) splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.csv.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.csv.mdx new file mode 100644 index 00000000..d658a2be --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.csv.mdx @@ -0,0 +1,299 @@ + + + +export const meta = { + title: "splitgraph.ingestion.csv package", + id: "splitgraph.ingestion.csv package" +}; + +
+

Module contents

+
+
+class splitgraph.ingestion.csv.CSVDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount CSV files in S3/HTTP.\n\nIf passed an URL, this will live query a CSV file on an HTTP server. If passed\nS3 access credentials, this will scan a bucket for CSV files, infer their schema\nand make them available to query over SQL.  \n\nFor example:  \n\n\x08\n```\nsgr mount csv target_schema -o@- <<EOF\n  &lbrace;\n    "s3_endpoint": "cdn.mycompany.com:9000",\n    "s3_access_key": "ABCDEF",\n    "s3_secret_key": "GHIJKL",\n    "s3_bucket": "data",\n    "s3_object_prefix": "csv_files/current/",\n    "autodetect_header": true,\n    "autodetect_dialect": true,\n    "autodetect_encoding": true\n  &rbrace;\nEOF\n```\n'
+
+ +
+
+commandline_kwargs_help: str = "s3_access_key:\ns3_secret_key:\nurl: HTTP URL to the CSV file.\ns3_endpoint: S3 endpoint (including port if required).\ns3_region: Region of the S3 bucket.\ns3_secure: Whether to use HTTPS for S3 access.\ns3_bucket: Bucket the object is in.\ns3_object: Limit the import to a single object.\ns3_object_prefix: Prefix for object in S3 bucket.\nautodetect_header: Detect whether the CSV file has a header automatically.\nautodetect_dialect: Detect the CSV file's dialect (separator, quoting characters etc) automatically.\nautodetect_encoding: Detect the CSV file's encoding automatically.\nautodetect_sample_size: Sample size, in bytes, for encoding/dialect/header detection.\nschema_inference_rows: Number of rows to use for schema inference.\nencoding: Encoding of the CSV file.\nignore_decode_errors: Ignore errors when decoding the file.\nheader: First line of the CSV file is its header.\ndelimiter: Character used to separate fields in the file.\nquotechar: Character used to quote fields."
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'s3_access_key': &lbrace;'type': 'string'&rbrace;, 's3_secret_key': &lbrace;'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs) splitgraph.ingestion.csv.CSVDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
+

Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'oneOf': [&lbrace;'required': ['url']&rbrace;, &lbrace;'required': ['s3_endpoint', 's3_bucket']&rbrace;], 'properties': &lbrace;'autodetect_dialect': &lbrace;'description': "Detect the CSV file's dialect (separator, quoting characters etc) automatically", 'type': 'boolean'&rbrace;, 'autodetect_encoding': &lbrace;'description': "Detect the CSV file's encoding automatically", 'type': 'boolean'&rbrace;, 'autodetect_header': &lbrace;'description': 'Detect whether the CSV file has a header automatically', 'type': 'boolean'&rbrace;, 'autodetect_sample_size': &lbrace;'description': 'Sample size, in bytes, for encoding/dialect/header detection', 'type': 'integer'&rbrace;, 'delimiter': &lbrace;'description': 'Character used to separate fields in the file', 'type': 'string'&rbrace;, 'encoding': &lbrace;'description': 'Encoding of the CSV file', 'type': 'string'&rbrace;, 'header': &lbrace;'description': 'First line of the CSV file is its header', 'type': 'boolean'&rbrace;, 'ignore_decode_errors': &lbrace;'description': 'Ignore errors when decoding the file', 'type': 'boolean'&rbrace;, 'quotechar': &lbrace;'description': 'Character used to quote fields', 'type': 'string'&rbrace;, 's3_bucket': &lbrace;'description': 'Bucket the object is in', 'type': 'string'&rbrace;, 's3_endpoint': &lbrace;'description': 'S3 endpoint (including port if required)', 'type': 'string'&rbrace;, 's3_object': &lbrace;'description': 'Limit the import to a single object', 'type': 'string'&rbrace;, 's3_object_prefix': &lbrace;'description': 'Prefix for object in S3 bucket', 'type': 'string'&rbrace;, 's3_region': &lbrace;'description': 'Region of the S3 bucket', 'type': 'string'&rbrace;, 's3_secure': &lbrace;'description': 'Whether to use HTTPS for S3 access', 'type': 'boolean'&rbrace;, 'schema_inference_rows': &lbrace;'description': 'Number of rows to use for schema inference', 'type': 'integer'&rbrace;, 'url': &lbrace;'description': 'HTTP URL to the CSV file', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'s3_object': &lbrace;'description': 'S3 object of the CSV file', 'type': 'string'&rbrace;, 'url': &lbrace;'description': 'HTTP URL to the CSV file', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.ingestion.csv.CSVIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.csv.copy_csv_buffer(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = False, **kwargs)
+

Copy CSV data from a buffer into a given schema/table

+
+ +
+
+splitgraph.ingestion.csv.query_to_csv(engine: PsycopgEngine, query, buffer, schema: Optional[str] = None)
+
+ +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.csv.common module

+
+
+class splitgraph.ingestion.csv.common.CSVOptions(autodetect_header, autodetect_dialect, autodetect_encoding, autodetect_sample_size, schema_inference_rows, delimiter, quotechar, header, encoding, ignore_decode_errors)
+

Bases: tuple

+
+
+autodetect_dialect: bool
+

Alias for field number 1

+
+ +
+
+autodetect_encoding: bool
+

Alias for field number 2

+
+ +
+
+autodetect_header: bool
+

Alias for field number 0

+
+ +
+
+autodetect_sample_size: int
+

Alias for field number 3

+
+ +
+
+delimiter: str
+

Alias for field number 5

+
+ +
+
+encoding: str
+

Alias for field number 8

+
+ +
+
+classmethod from_fdw_options(fdw_options)
+
+ +
+
+header: bool
+

Alias for field number 7

+
+ +
+
+ignore_decode_errors: bool
+

Alias for field number 9

+
+ +
+
+quotechar: str
+

Alias for field number 6

+
+ +
+
+schema_inference_rows: int
+

Alias for field number 4

+
+ +
+
+to_csv_kwargs()
+
+ +
+
+to_table_options()
+

Turn this into a dict of table options that can be plugged back into CSVDataSource.

+
+ +
+ +
+
+splitgraph.ingestion.csv.common.autodetect_csv(stream: io.RawIOBase, csv_options: splitgraph.ingestion.csv.common.CSVOptions) splitgraph.ingestion.csv.common.CSVOptions
+

Autodetect the CSV dialect, encoding, header etc.

+
+ +
+
+splitgraph.ingestion.csv.common.bool_to_str(boolean: bool) str
+
+ +
+
+splitgraph.ingestion.csv.common.get_bool(params: Dict[str, Any], key: str, default: bool = True) bool
+
+ +
+
+splitgraph.ingestion.csv.common.get_s3_params(fdw_options: Dict[str, Any]) Tuple[minio.api.Minio, str, str]
+
+ +
+
+splitgraph.ingestion.csv.common.make_csv_reader(response: io.IOBase, csv_options: splitgraph.ingestion.csv.common.CSVOptions) Tuple[splitgraph.ingestion.csv.common.CSVOptions, _csv._reader]
+
+ +
+
+

splitgraph.ingestion.csv.fdw module

+
+
+class splitgraph.ingestion.csv.fdw.CSVForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+

Foreign data wrapper for CSV files stored in S3 buckets or HTTP

+
+
+can_sort(sortkeys)
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+
+ +
+
+classmethod import_schema(schema, srv_options, options, restriction_type, restricts)
+
+ +
+ +
+
+splitgraph.ingestion.csv.fdw.report_errors(table_name: str)
+

Context manager that ignores exceptions and serializes them to JSON using PG’s notice +mechanism instead. The data source is meant to load these to report on partial failures +(e.g. failed to load one table, but not others).

+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.mdx new file mode 100644 index 00000000..f6c6988a --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.mdx @@ -0,0 +1,222 @@ + + + +export const meta = { + title: "splitgraph.ingestion package", + id: "splitgraph.ingestion package" +}; + +
+

Module contents

+
+ + +
+

Submodules

+
+
+

splitgraph.ingestion.common module

+
+
+class splitgraph.ingestion.common.IngestionAdapter
+

Bases: object

+
+
+abstract create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+abstract data_to_new_table(data, engine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+abstract query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+
+to_data(query: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)
+
+ +
+
+to_table(data, repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True, no_header: bool = False, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.common.build_commandline_help(json_schema)
+
+ +
+
+splitgraph.ingestion.common.dedupe_sg_schema(schema_spec: List[splitgraph.core.types.TableColumn], prefix_len: int = 59) List[splitgraph.core.types.TableColumn]
+

Some foreign schemas have columns that are longer than 63 characters +where the first 63 characters are the same between several columns +(e.g. odn.data.socrata.com). This routine renames columns in a schema +to make sure this can’t happen (by giving duplicates a number suffix).

+
+ +
+
+splitgraph.ingestion.common.generate_column_names(schema_spec: List[splitgraph.core.types.TableColumn], prefix: str = 'col_') List[splitgraph.core.types.TableColumn]
+

Replace empty column names with autogenerated ones

+
+ +
+
+splitgraph.ingestion.common.merge_tables(engine: splitgraph.engine.postgres.engine.PsycopgEngine, source_schema: str, source_table: str, source_schema_spec: List[splitgraph.core.types.TableColumn], target_schema: str, target_table: str, target_schema_spec: List[splitgraph.core.types.TableColumn])
+
+ +
+
+splitgraph.ingestion.common.schema_compatible(source_schema: List[splitgraph.core.types.TableColumn], target_schema: List[splitgraph.core.types.TableColumn]) bool
+

Quick check to see if a dataframe with target_schema can be written into source_schema. +There are some implicit type conversions that SQLAlchemy/Pandas can do so we don’t want to immediately fail +if the column types aren’t exactly the same (eg bigint vs numeric etc). Most errors should be caught by PG itself.

+

Schema is a list of (ordinal, name, type, is_pk).

+
+ +
+
+

splitgraph.ingestion.inference module

+
+
+splitgraph.ingestion.inference.infer_sg_schema(sample: Sequence[Sequence[str]], override_types: Optional[Dict[str, str]] = None, primary_keys: Optional[List[str]] = None)
+
+ +
+
+splitgraph.ingestion.inference.parse_bigint(integer: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_boolean(boolean: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_int(integer: str)
+
+ +
+
+

splitgraph.ingestion.pandas module

+

Routines that ingest/export CSV files to/from Splitgraph images using Pandas

+
+
+class splitgraph.ingestion.pandas.PandasIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.pandas.df_to_table(df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True) None
+

Writes a Pandas DataFrame to a checked-out Splitgraph table. Doesn’t create a new image.

+
+
Parameters
+
    +
  • df – Pandas DataFrame to insert.

  • +
  • repository – Splitgraph Repository object. Must be checked out.

  • +
  • table – Table name.

  • +
  • if_exists – Behaviour if the table already exists: ‘patch’ means that primary keys that already exist in the

  • +
+
+
+

table will be updated and ones that don’t will be inserted. ‘replace’ means that the table will be dropped and +recreated. +:param schema_check: If False, skips checking that the dataframe is compatible with the target schema.

+
+ +
+
+splitgraph.ingestion.pandas.df_to_table_fast(engine: PsycopgEngine, df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], target_schema: str, target_table: str)
+
+ +
+
+splitgraph.ingestion.pandas.sql_to_df(sql: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs) pandas.core.frame.DataFrame
+

Executes an SQL query against a Splitgraph image, returning the result.

+

Extra **kwargs are passed to Pandas’ read_sql_query.

+
+
Parameters
+
    +
  • sql – SQL query to execute.

  • +
  • image – Image object, image hash/tag (str) or None (use the currently checked out image).

  • +
  • repository – Repository the image belongs to. Must be set if image is a hash/tag or None.

  • +
  • use_lq – Whether to use layered querying or check out the image if it’s not checked out.

  • +
+
+
Returns
+

A Pandas dataframe.

+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.singer.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.singer.mdx new file mode 100644 index 00000000..1a73e5ee --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.singer.mdx @@ -0,0 +1,243 @@ + + + +export const meta = { + title: "splitgraph.ingestion.singer package", + id: "splitgraph.ingestion.singer package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.ingestion.singer.commandline module

+

Command line tools for building Splitgraph images from Singer taps, including using Splitgraph as a Singer target.

+
+
+

splitgraph.ingestion.singer.common module

+
+
+splitgraph.ingestion.singer.common.add_timestamp_tags(repository: splitgraph.core.repository.Repository, image_hash: str)
+
+ +
+
+splitgraph.ingestion.singer.common.log_exception(f)
+

Emit exceptions with full traceback instead of just the error text

+
+ +
+
+splitgraph.ingestion.singer.common.rollback_at_end(func: collections.abc.Callable) collections.abc.Callable
+
+ +
+
+splitgraph.ingestion.singer.common.store_ingestion_state(repository: splitgraph.core.repository.Repository, image_hash: str, current_state: Optional[Dict[str, Any]], new_state: str)
+
+ +
+
+

splitgraph.ingestion.singer.data_source module

+
+
+class splitgraph.ingestion.singer.data_source.GenericSingerDataSource(*args, **kwargs)
+

Bases: splitgraph.ingestion.singer.data_source.SingerDataSource

+
+
+credentials_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_singer_executable()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'tap_path': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['tap_path'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.ingestion.singer.data_source.MySQLSingerDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.ingestion.singer.data_source.SingerDataSource

+
+
+build_singer_catalog(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'user': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['user', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_singer_executable()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'replication_method': &lbrace;'enum': ['INCREMENTAL', 'LOG_BASED', 'FULL TABLE'], 'type': 'string'&rbrace;&rbrace;, 'required': ['host', 'port', 'replication_method'], 'type': 'object'&rbrace;
+
+ +
+
+use_legacy_stream_selection = False
+
+ +
+
+use_properties = True
+
+ +
+ +
+
+class splitgraph.ingestion.singer.data_source.SingerDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.SyncableDataSource, abc.ABC

+
+
+build_singer_catalog(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, Any]
+
+ +
+
+get_singer_config()
+
+ +
+
+abstract get_singer_executable()
+
+ +
+
+introspect() IntrospectionResult
+
+ +
+
+load(repository: splitgraph.core.repository.Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+
+sync(repository: splitgraph.core.repository.Repository, image_hash: Optional[str] = None, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_state: bool = True) str
+
+ +
+
+use_legacy_stream_selection = False
+
+ +
+
+use_properties = False
+
+ +
+ +
+
+splitgraph.ingestion.singer.data_source.select_streams(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_legacy_stream_selection=False) Dict[str, Any]
+
+ +
+
+

splitgraph.ingestion.singer.db_sync module

+
+
+class splitgraph.ingestion.singer.db_sync.DbSyncProxy(*args, **kwargs)
+

Bases: target_postgres.db_sync.DbSync

+
+
+create_indices(stream)
+
+ +
+
+create_schema_if_not_exists(table_columns_cache=None)
+
+ +
+
+delete_rows(stream)
+
+ +
+
+load_csv(file, count, size_bytes)
+
+ +
+
+sync_table()
+
+ +
+ +
+
+splitgraph.ingestion.singer.db_sync.db_sync_wrapper(image: splitgraph.core.image.Image, staging_schema: str)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.get_key_properties(stream_message)
+

Extract the PK from a stream message. Supports both legacy (“key_properties”) and +new (“metadata”) Singer taps.

+
+ +
+
+splitgraph.ingestion.singer.db_sync.get_sg_schema(stream_schema_message, flattening_max_level=0)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.get_table_name(stream_schema_message)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.run_patched_sync(repository: splitgraph.core.repository.Repository, base_image: Optional[splitgraph.core.image.Image], new_image_hash: str, delete_old: bool, failure: str, input_stream: Optional[BinaryIO] = None, output_stream: Optional[TextIO] = None)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.select_breadcrumb(stream_message, breadcrumb)
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.snowflake.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.snowflake.mdx new file mode 100644 index 00000000..d92bf9c2 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.snowflake.mdx @@ -0,0 +1,92 @@ + + + +export const meta = { + title: "splitgraph.ingestion.snowflake package", + id: "splitgraph.ingestion.snowflake package" +}; + +
+

Module contents

+
+
+class splitgraph.ingestion.snowflake.SnowflakeDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Snowflake database.\n\nThis will mount a remote Snowflake schema or a table. You can also get a mounted table to point to the result of a subquery that will be executed on the Snowflake instance. For example:\n\n\x08\n```\n$ sgr mount snowflake test_snowflake -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "password": "password",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "schema": "TPCH_SF100"\n    "envvars": &lbrace;"HTTPS_PROXY": "http://proxy.company.com"&rbrace;\n&rbrace;\nEOF\n\x08\n$ sgr mount snowflake test_snowflake_subquery -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "private_key": "MIIEvQIBAD...",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "tables": &lbrace;\n        "balances": &lbrace;\n            "schema": &lbrace;\n                "n_nation": "varchar",\n                "segment": "varchar",\n                "avg_balance": "numeric"\n            &rbrace;,\n            "options": &lbrace;\n                "subquery": "SELECT n_nation AS nation, c_mktsegment AS segment, AVG(c_acctbal) AS avg_balance FROM TPCH_SF100.customer c JOIN TPCH_SF100.nation n ON c_nationkey = n_nationkey"\n            &rbrace;\n        &rbrace;\n    &rbrace;\n&rbrace;\nEOF\n```\n    '
+
+ +
+
+commandline_kwargs_help: str = "username: Username. Required.\npassword: Password.\naccount: Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html. Required.\nprivate_key: Private key in PEM format.\ndatabase: Snowflake database name. Required.\nschema: Snowflake schema.\nwarehouse: Warehouse name.\nrole: Role.\nbatch_size: Default fetch size for remote queries.\nenvvars: Environment variables to set on the engine side.\nThe schema parameter is required when subquery isn't used."
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'oneOf': [&lbrace;'required': ['password']&rbrace;, &lbrace;'required': ['private_key']&rbrace;], 'properties': &lbrace;'account': &lbrace;'description': 'Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html', 'type': 'string'&rbrace;, 'password': &lbrace;'description': 'Password', 'type': 'string'&rbrace;, 'private_key': &lbrace;'description': 'Private key in PEM format', 'type': 'string'&rbrace;, 'username': &lbrace;'description': 'Username', 'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'account'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'description': 'Default fetch size for remote queries', 'type': 'integer'&rbrace;, 'database': &lbrace;'description': 'Snowflake database name', 'type': 'string'&rbrace;, 'envvars': &lbrace;'description': 'Environment variables to set on the engine side', 'type': 'object'&rbrace;, 'role': &lbrace;'description': 'Role', 'type': 'string'&rbrace;, 'schema': &lbrace;'description': 'Snowflake schema', 'type': 'string'&rbrace;, 'warehouse': &lbrace;'description': 'Warehouse name', 'type': 'string'&rbrace;&rbrace;, 'required': ['database'], 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'subquery': &lbrace;'description': 'Subquery for this table to run on the server side', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+ + +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.socrata.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.socrata.mdx new file mode 100644 index 00000000..5268940d --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.ingestion.socrata.mdx @@ -0,0 +1,182 @@ + + + +export const meta = { + title: "splitgraph.ingestion.socrata package", + id: "splitgraph.ingestion.socrata package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.ingestion.socrata.fdw module

+

Module imported by Multicorn on the Splitgraph engine server: a foreign data wrapper +that communicates to Socrata datasets using sodapy.

+
+
+class splitgraph.ingestion.socrata.fdw.SocrataForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+
+
+can_sort(sortkeys)
+
+
Parameters
+

sortkeys – List of SortKey

+
+
Returns
+

List of SortKey the FDW can sort on

+
+
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+

Method called from the planner to estimate the resulting relation +size for a scan. +It will help the planner in deciding between different types of plans, +according to their costs. +Args:

+
+
+
quals (list): A list of Qual instances describing the filters

applied to this scan.

+
+
+

columns (list): The list of columns that must be returned.

+
+
+
Returns:

A tuple of the form (expected_number_of_rows, avg_row_width (in bytes))

+
+
+
+ +
+
+property table_meta
+
+ +
+ +
+
+splitgraph.ingestion.socrata.fdw.to_json(row, columns, column_map)
+
+ +
+
+

splitgraph.ingestion.socrata.mount module

+

Splitgraph mount handler for Socrata datasets

+
+
+class splitgraph.ingestion.socrata.mount.SocrataDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'app_token': &lbrace;'description': 'Socrata app token, optional', 'type': ['string', 'null']&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs) splitgraph.ingestion.socrata.mount.SocrataDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
+

Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'description': 'Amount of rows to fetch from Socrata per request (limit parameter). Maximum 50000.', 'type': 'integer'&rbrace;, 'domain': &lbrace;'description': 'Socrata domain, for example, data.albanyny.gov', 'type': 'string'&rbrace;&rbrace;, 'required': ['domain'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'socrata_id': &lbrace;'description': 'Socrata dataset ID, e.g. xzkq-xp2w', 'type': 'string'&rbrace;&rbrace;, 'required': ['socrata_id'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.ingestion.socrata.mount.generate_socrata_mount_queries(sought_ids, datasets, mountpoint, server_id, tables: Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]])
+
+ +
+
+

splitgraph.ingestion.socrata.querying module

+
+
+splitgraph.ingestion.socrata.querying.cols_to_socrata(cols, column_map: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.ingestion.socrata.querying.estimate_socrata_rows_width(columns, metadata, column_map=None)
+

Estimate number of rows required for a query and each row’s width +from the table metadata.

+
+ +
+
+splitgraph.ingestion.socrata.querying.quals_to_socrata(quals, column_map: Optional[Dict[str, str]] = None)
+

Convert a list of Multicorn quals to a SoQL query

+
+ +
+
+splitgraph.ingestion.socrata.querying.socrata_to_sg_schema(metadata: Dict[str, Any]) Tuple[List[splitgraph.core.types.TableColumn], Dict[str, str]]
+
+ +
+
+splitgraph.ingestion.socrata.querying.sortkeys_to_socrata(sortkeys, column_map: Optional[Dict[str, str]] = None)
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.mdx new file mode 100644 index 00000000..fedd47da --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.mdx @@ -0,0 +1,369 @@ + + + +export const meta = { + title: "splitgraph package", + id: "splitgraph package" +}; + +
+

Module contents

+
+ +
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

splitgraph.exceptions module

+

Exceptions that can be raised by the Splitgraph library.

+
+
+exception splitgraph.exceptions.APICompatibilityError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions related to API incompatibilities

+
+ +
+
+exception splitgraph.exceptions.AuthAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by the Auth API

+
+ +
+
+exception splitgraph.exceptions.CheckoutError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to checking out/committing repositories

+
+ +
+
+exception splitgraph.exceptions.DataSourceError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by mount handlers.

+
+ +
+
+exception splitgraph.exceptions.DockerUnavailableError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Could not connect to the Docker daemon.

+
+ +
+
+exception splitgraph.exceptions.EngineInitializationError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when the engine isn’t initialized (no splitgraph_meta schema or audit triggers)

+
+ +
+
+exception splitgraph.exceptions.EngineSetupError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised on various setup issues with the Splitgraph engine

+
+ +
+
+exception splitgraph.exceptions.ExternalHandlerError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by external object handlers.

+
+ +
+
+exception splitgraph.exceptions.GQLAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

GQL API errors

+
+ +
+
+exception splitgraph.exceptions.GQLRepoDoesntExistError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Repository doesn’t exist

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthenticatedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthenticated (user not logged in)

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthorizedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthorized (e.g. repository isn’t writeable by the user)

+
+ +
+
+exception splitgraph.exceptions.ImageNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph image doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectDownloadError(reason: Optional[BaseException], successful_objects: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during download of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectUploadError(reason: Optional[BaseException], successful_objects: List[str], successful_object_urls: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during upload of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.ObjectCacheError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Issues with the object cache (not enough space)

+
+ +
+
+exception splitgraph.exceptions.ObjectIndexingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to indexing objects

+
+ +
+
+exception splitgraph.exceptions.ObjectMountingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to incompatible objects.

+
+ +
+
+exception splitgraph.exceptions.ObjectNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when a physical object doesn’t exist in the cache.

+
+ +
+
+exception splitgraph.exceptions.RepositoryNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph repository doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.SplitGraphError
+

Bases: Exception

+

A generic Splitgraph exception.

+
+ +
+
+exception splitgraph.exceptions.SplitfileError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Generic error class for Splitfile interpretation/execution errors.

+
+ +
+
+exception splitgraph.exceptions.TableNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A table doesn’t exist in an image

+
+ +
+
+exception splitgraph.exceptions.UnsupportedSQLError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised for unsupported SQL statements, for example, containing schema-qualified tables when the statement +is supposed to be used in an SQL/IMPORT Splitfile command.

+
+ +
+
+splitgraph.exceptions.get_exception_name(o)
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.splitfile.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.splitfile.mdx new file mode 100644 index 00000000..aa5c8716 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.splitfile.mdx @@ -0,0 +1,89 @@ + + + +export const meta = { + title: "splitgraph.splitfile package", + id: "splitgraph.splitfile package" +}; + +
+

Module contents

+

Splitfile interpreter: a set of tools on top of the core Splitgraph versioning and image management to give +the user a Dockerfile-like experience for building Splitgraph images (caching, consistent hashing, a declarative +language).

+
+ +
+

Submodules

+
+
+

splitgraph.splitfile.execution module

+

Functions for executing Splitfiles.

+
+
+class splitgraph.splitfile.execution.ImageMapper(object_engine: splitgraph.engine.postgres.engine.PostgresEngine)
+

Bases: object

+
+
+get_provenance_data() Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]
+
+ +
+
+setup_lq_mounts() None
+
+ +
+
+teardown_lq_mounts() None
+
+ +
+ +
+
+splitgraph.splitfile.execution.execute_commands(commands: str, params: Optional[Dict[str, str]] = None, output: Optional[splitgraph.core.repository.Repository] = None, output_base: str = '00000000000000000000000000000000') None
+

Executes a series of Splitfile commands.

+
+
Parameters
+
    +
  • commands – A string with the raw Splitfile.

  • +
  • params – A dictionary of parameters to be applied to the Splitfile ($&lbrace;PARAM&rbrace; is replaced with the specified +parameter value).

  • +
  • output – Output repository to execute the Splitfile against.

  • +
  • output_base – If not None, a revision that gets checked out for all Splitfile actions to be committed +on top of it.

  • +
+
+
+
+ +
+
+splitgraph.splitfile.execution.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.splitfile.execution.prevalidate_imports(table_names: List[str], table_queries: List[bool]) List[str]
+
+ +
+
+splitgraph.splitfile.execution.rebuild_image(image: splitgraph.core.image.Image, source_replacement: Dict[splitgraph.core.repository.Repository, str]) None
+

Recreates the Splitfile used to create a given image and reruns it, replacing its dependencies with a different +set of versions.

+
+
Parameters
+
    +
  • image – Image object

  • +
  • source_replacement – A map that specifies replacement images/tags for repositories that the image depends on

  • +
+
+
+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.utils.mdx b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.utils.mdx new file mode 100644 index 00000000..336f6f49 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.16/splitgraph.utils.mdx @@ -0,0 +1,51 @@ + + + +export const meta = { + title: "splitgraph.utils package", + id: "splitgraph.utils package" +}; + +
+

Module contents

+
+ +
+

Submodules

+
+
+

splitgraph.utils.docker module

+
+
+splitgraph.utils.docker.copy_dir_to_container(container: Container, source_path: str, target_path: str, exclude_names: Optional[List[str]] = None) None
+
+ +
+
+splitgraph.utils.docker.copy_to_container(container: Container, source_path: Optional[str], target_path: str, data: Optional[bytes] = None) None
+

Copy a file into a Docker container

+
+
Parameters
+
    +
  • container – Container object

  • +
  • source_path – Source file path

  • +
  • target_path – Target file path (in the container)

  • +
+
+
Returns
+

+
+
+
+ +
+
+splitgraph.utils.docker.get_docker_client()
+

Wrapper around client.from_env() that also pings the daemon +to make sure it can connect and if not, raises an error.

+
+ +
+ +
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/metadata.json b/content/docs/9500_python-api/9000_versions/v0.2.17/metadata.json new file mode 100644 index 00000000..befb1c89 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.17", + "updated_at": "2022-01-20T00:00:38.118Z", + "release": { + "id": 51394754, + "tag_name": "v0.2.17", + "target_commitish": "69e2e396e41b3f9f3a7437bfb69189720d8c8b66", + "created_at": "2021-10-14T21:11:31Z", + "published_at": "2021-10-14T21:51:29Z", + "assets": [ + { + "id": 47011063, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/47011063", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-10-14T21:44:15Z", + "updated_at": "2021-10-14T21:44:15Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.17/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/modules.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/modules.mdx new file mode 100644 index 00000000..d68b1054 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/modules.mdx @@ -0,0 +1,118 @@ + + + +export const meta = { + title: "splitgraph", + id: "splitgraph" +}; + +
+ +
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.cloud.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.cloud.mdx new file mode 100644 index 00000000..4905bbbe --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.cloud.mdx @@ -0,0 +1,885 @@ + + + +export const meta = { + title: "splitgraph.cloud package", + id: "splitgraph.cloud package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.cloud.models module

+

Definitions for the repositories.yml format that’s used to batch-populate a Splitgraph catalog +with repositories and their metadata.

+
+
+class splitgraph.cloud.models.AddExternalCredentialRequest(*, credential_name: str, credential_data: Dict[str, Any], plugin_name: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_data: Dict[str, Any]
+
+ +
+
+credential_name: str
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+class splitgraph.cloud.models.AddExternalRepositoriesRequest(*, repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest])
+

Bases: pydantic.main.BaseModel

+
+
+repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest]
+
+ +
+ +
+
+class splitgraph.cloud.models.AddExternalRepositoryRequest(*, namespace: str, repository: str, plugin_name: str, params: Params, is_live: bool, tables: Dict[str, splitgraph.cloud.models.ExternalTableRequest] = None, credential_id: str = None, credential_name: str = None, credential_data: Dict[str, Any] = None, schedule: splitgraph.cloud.models.IngestionSchedule = None)
+

Bases: pydantic.main.BaseModel

+
+
+credential_data: Optional[Dict[str, Any]]
+
+ +
+
+credential_id: Optional[str]
+
+ +
+
+credential_name: Optional[str]
+
+ +
+
+classmethod from_external(namespace: str, repository: str, external: splitgraph.cloud.models.External, credential_map: Optional[Dict[str, str]] = None)
+
+ +
+
+is_live: bool
+
+ +
+
+namespace: str
+
+ +
+
+params: Params
+
+ +
+
+plugin_name: str
+
+ +
+
+repository: str
+
+ +
+
+schedule: Optional[splitgraph.cloud.models.IngestionSchedule]
+
+ +
+
+tables: Optional[Dict[str, splitgraph.cloud.models.ExternalTableRequest]]
+
+ +
+ +
+
+class splitgraph.cloud.models.Credential(*, plugin: str, data: Dict[str, Any])
+

Bases: pydantic.main.BaseModel

+
+
+data: Dict[str, Any]
+
+ +
+
+plugin: str
+
+ +
+ +
+
+class splitgraph.cloud.models.External(*, credential_id: str = None, credential: str = None, plugin: str, params: Dict[str, Any], tables: Dict[str, splitgraph.cloud.models.Table], is_live: bool = True, schedule: splitgraph.cloud.models.IngestionSchedule = None)
+

Bases: pydantic.main.BaseModel

+
+
+credential: Optional[str]
+
+ +
+
+credential_id: Optional[str]
+
+ +
+
+is_live: bool
+
+ +
+
+params: Dict[str, Any]
+
+ +
+
+plugin: str
+
+ +
+
+schedule: Optional[splitgraph.cloud.models.IngestionSchedule]
+
+ +
+
+tables: Dict[str, splitgraph.cloud.models.Table]
+
+ +
+ +
+
+class splitgraph.cloud.models.ExternalResponse(*, namespace: str, repository: str, credentialId: str = None, dataSource: str, params: Dict[str, Any], tableParams: Dict[str, Any], externalImageByNamespaceAndRepository: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class ExternalImageResponse(*, imageByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class ImageResponse(*, tablesByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class TablesResponse(*, nodes: List[splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse.Node])
+

Bases: pydantic.main.BaseModel

+
+
+class Node(*, tableName: str, tableSchema: List[splitgraph.core.types.TableColumn])
+

Bases: pydantic.main.BaseModel

+
+
+tableName: str
+
+ +
+
+tableSchema: List[splitgraph.core.types.TableColumn]
+
+ +
+ +
+
+nodes: List[splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse.Node]
+
+ +
+ +
+
+tablesByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse
+
+ +
+ +
+
+imageByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse
+
+ +
+ +
+
+credentialId: Optional[str]
+
+ +
+
+dataSource: str
+
+ +
+
+externalImageByNamespaceAndRepository: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse
+
+ +
+
+classmethod from_response(response) List[splitgraph.cloud.models.ExternalResponse]
+
+ +
+
+namespace: str
+
+ +
+
+params: Dict[str, Any]
+
+ +
+
+repository: str
+
+ +
+
+tableParams: Dict[str, Any]
+
+ +
+
+to_external() splitgraph.cloud.models.External
+
+ +
+ +
+
+class splitgraph.cloud.models.ExternalTableRequest(*, options: Dict[str, Any] = &lbrace;&rbrace;, schema: Dict[str, str] = None)
+

Bases: pydantic.main.BaseModel

+
+
+options: Dict[str, Any]
+
+ +
+
+schema_: Optional[Dict[str, str]]
+
+ +
+ +
+
+class splitgraph.cloud.models.IngestionSchedule(*, schedule: str, enabled: bool = True)
+

Bases: pydantic.main.BaseModel

+
+
+schedule: str
+
+ +
+ +
+
+class splitgraph.cloud.models.ListExternalCredentialsResponse(*, credentials: List[splitgraph.cloud.models.ListExternalCredentialsResponse.ExternalCredential])
+

Bases: pydantic.main.BaseModel

+
+
+class ExternalCredential(*, plugin_name: str, credential_name: str = None, credential_id: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_id: str
+
+ +
+
+credential_name: Optional[str]
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+credentials: List[splitgraph.cloud.models.ListExternalCredentialsResponse.ExternalCredential]
+
+ +
+ +
+
+class splitgraph.cloud.models.Metadata(*, readme: Optional[Union[str, splitgraph.cloud.models.Metadata.Readme]] = None, description: str = None, topics: List[str] = None, sources: List[splitgraph.cloud.models.Source] = None, license: str = None, extra_metadata: Dict[str, Any] = None)
+

Bases: pydantic.main.BaseModel

+
+
+class Readme(*, file: str = None, text: str = None)
+

Bases: pydantic.main.BaseModel

+
+
+file: Optional[str]
+
+ +
+
+text: Optional[str]
+
+ +
+ +
+
+description: Optional[str]
+
+ +
+
+extra_metadata: Optional[Dict[str, Any]]
+
+ +
+
+license: Optional[str]
+
+ +
+
+readme: Optional[Union[str, splitgraph.cloud.models.Metadata.Readme]]
+
+ +
+
+sources: Optional[List[splitgraph.cloud.models.Source]]
+
+ +
+
+topics: Optional[List[str]]
+
+ +
+ +
+
+class splitgraph.cloud.models.MetadataResponse(*, namespace: str, repository: str, repoTopicsByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse, repoProfileByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class RepoProfileResponse(*, readme: str = None, description: str = None, topics: List[str] = None, sources: List[splitgraph.cloud.models.Source] = None, license: str = None, metadata: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse.MetadataResponse = None)
+

Bases: pydantic.main.BaseModel

+
+
+class MetadataResponse(*, created_at: str = None, updated_at: str = None, upstream_metadata: Dict[str, Any])
+

Bases: pydantic.main.BaseModel

+
+
+created_at: Optional[str]
+
+ +
+
+updated_at: Optional[str]
+
+ +
+
+upstream_metadata: Dict[str, Any]
+
+ +
+ +
+
+description: Optional[str]
+
+ +
+
+license: Optional[str]
+
+ +
+
+metadata: Optional[splitgraph.cloud.models.MetadataResponse.RepoProfileResponse.MetadataResponse]
+
+ +
+
+readme: Optional[str]
+
+ +
+
+sources: Optional[List[splitgraph.cloud.models.Source]]
+
+ +
+
+topics: Optional[List[str]]
+
+ +
+ +
+
+class RepoTopicsResponse(*, nodes: List[splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse.RepositoryTopics])
+

Bases: pydantic.main.BaseModel

+
+
+class RepositoryTopics(*, topic: str)
+

Bases: pydantic.main.BaseModel

+
+
+topic: str
+
+ +
+ +
+
+nodes: List[splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse.RepositoryTopics]
+
+ +
+ +
+
+classmethod from_response(response) List[splitgraph.cloud.models.MetadataResponse]
+
+ +
+
+namespace: str
+
+ +
+
+repoProfileByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse
+
+ +
+
+repoTopicsByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse
+
+ +
+
+repository: str
+
+ +
+
+to_metadata() splitgraph.cloud.models.Metadata
+
+ +
+ +
+
+class splitgraph.cloud.models.RepositoriesYAML(*, repositories: List[splitgraph.cloud.models.Repository], credentials: Dict[str, splitgraph.cloud.models.Credential] = None)
+

Bases: pydantic.main.BaseModel

+
+
+credentials: Optional[Dict[str, splitgraph.cloud.models.Credential]]
+
+ +
+
+repositories: List[splitgraph.cloud.models.Repository]
+
+ +
+ +
+
+class splitgraph.cloud.models.Repository(*, namespace: str, repository: str, metadata: splitgraph.cloud.models.Metadata = None, external: splitgraph.cloud.models.External = None)
+

Bases: pydantic.main.BaseModel

+
+
+external: Optional[splitgraph.cloud.models.External]
+
+ +
+
+metadata: Optional[splitgraph.cloud.models.Metadata]
+
+ +
+
+namespace: str
+
+ +
+
+repository: str
+
+ +
+ +
+
+class splitgraph.cloud.models.Source(*, anchor: str, href: str, isCreator: bool = None, isSameAs: bool = None)
+

Bases: pydantic.main.BaseModel

+
+
+anchor: str
+
+ +
+
+href: str
+
+ +
+
+isCreator: Optional[bool]
+
+ +
+
+isSameAs: Optional[bool]
+
+ +
+ +
+
+class splitgraph.cloud.models.Table(*, options: Dict[str, Any], schema: List[splitgraph.cloud.models.Table.Column])
+

Bases: pydantic.main.BaseModel

+
+
+class Column(*, name: str, type: str, comment: str = None)
+

Bases: pydantic.main.BaseModel

+
+
+comment: Optional[str]
+
+ +
+
+name: str
+
+ +
+
+pg_type: str
+
+ +
+ +
+
+options: Dict[str, Any]
+
+ +
+
+schema_: List[splitgraph.cloud.models.Table.Column]
+
+ +
+ +
+
+class splitgraph.cloud.models.UpdateExternalCredentialRequest(*, credential_id: str, credential_name: str, credential_data: Dict[str, Any], plugin_name: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_data: Dict[str, Any]
+
+ +
+
+credential_id: str
+
+ +
+
+credential_name: str
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+class splitgraph.cloud.models.UpdateExternalCredentialResponse(*, credential_id: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_id: str
+
+ +
+ +
+
+splitgraph.cloud.models.make_repositories(metadata_responses: List[splitgraph.cloud.models.MetadataResponse], external_responses: List[splitgraph.cloud.models.ExternalResponse]) List[splitgraph.cloud.models.Repository]
+
+ +
+
+

Module contents

+

Public API for interacting with the Splitgraph registry

+
+
+splitgraph.cloud.AuthAPIClient(*args, **kwargs)
+
+ +
+
+class splitgraph.cloud.GQLAPIClient(remote: Optional[str], endpoint: Optional[str] = None, access_token: Optional[str] = None)
+

Bases: object

+

Wrapper class for select Splitgraph Registry GQL operations that can be +called from the CLI

+
+
+property access_token: Optional[str]
+
+ +
+
+bulk_upsert_metadata(namespace_list: List[str], repository_list: List[str], metadata_list: List[splitgraph.cloud.models.Metadata])
+
+ +
+
+find_repository(query: str, limit: int = 10) Tuple[int, List[Tuple[str, str, str]]]
+
+ +
+
+get_external_metadata(namespace: str, repository: str) Optional[splitgraph.cloud.models.ExternalResponse]
+
+ +
+
+get_metadata(namespace: str, repository: str) Optional[splitgraph.cloud.models.MetadataResponse]
+
+ +
+
+load_all_repositories(limit_to: Optional[List[str]] = None) List[splitgraph.cloud.models.Repository]
+
+ +
+
+upsert_description(namespace: str, repository: str, description: str)
+
+ +
+
+upsert_metadata(namespace: str, repository: str, metadata: splitgraph.cloud.models.Metadata)
+

Update metadata for a single repository.

+
+ +
+
+upsert_readme(namespace: str, repository: str, readme: str)
+
+ +
+
+upsert_topics(namespace: str, repository: str, topics: List[str])
+
+ +
+ +
+
+class splitgraph.cloud.RESTAPIClient(remote: str)
+

Bases: object

+

Client for various Splitgraph Registry REST APIs: auth token generation, external repo setup…

+
+
+property access_token: str
+

Will return an up-to-date access token by either getting it from +the configuration file or contacting the auth service for a new one. +Will write the new access token into the configuration file.

+
+
Returns
+

Access token.

+
+
+
+ +
+
+bulk_upsert_external(repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest])
+
+ +
+
+create_machine_credentials(access_token: str, password: str) requests.models.Response
+

Generate a key and secret that can be used to log into the Splitgraph registry +via a normal Postgres connection. The secret must be stored in the user’s local +configuration file (it’s not stored on Splitgraph servers).

+
+
Parameters
+
    +
  • access_token – Access token

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (key, secret).

+
+
+
+ +
+
+ensure_external_credential(credential_data: Dict[str, Any], credential_name: str, plugin_name: str) str
+

Store a credential for accessing an external data source +in Splitgraph Cloud and return its ID

+
+ +
+
+get_access_token(refresh_token: str) requests.models.Response
+

Get a new access token from a refresh token.

+
+
Parameters
+

refresh_token – Refresh token

+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_access_token_from_api(api_key: str, api_secret: str) requests.models.Response
+

Get a new access token from API keys

+
+
Parameters
+
    +
  • api_key – API key

  • +
  • api_secret – API secret

  • +
+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_latest_version() Optional[str]
+
+ +
+
+get_refresh_token(username: str, password: str) requests.models.Response
+

Get a long-lived refresh token and a short-lived access token from the API.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (access_token, refresh_token).

+
+
+
+ +
+
+list_external_credentials() splitgraph.cloud.models.ListExternalCredentialsResponse
+
+ +
+
+register(username: str, password: str, email: str, accept_tos: bool) requests.models.Response
+

Register a new Splitgraph user.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
  • email – Email

  • +
  • accept_tos – Accept the Terms of Service if they exist

  • +
+
+
+
+ +
+
+tos() requests.models.Response
+

Get a Terms of Service message from the registry (if accepting ToS is required) +:return: Link to the Terms of Service or None

+
+ +
+ +
+
+splitgraph.cloud.expect_result(result: List[str], ignore_status_codes: Optional[List[int]] = None) Callable[[Callable[[...], requests.models.Response]], Callable[[...], Union[str, Tuple[str]]]]
+

A decorator that can be wrapped around a function returning a requests.Response with a JSON body. +If the request has failed, it will extract the “error” from the JSON response and raise an AuthAPIError.

+
+
Parameters
+
    +
  • result – Items to extract. Will raise an AuthAPIError if not all items were fetched.

  • +
  • ignore_status_codes – If one of these status codes is returned (e.g. 404), +it gets ignored and a None is returned instead.

  • +
+
+
Returns
+

Tuple of items enumerated in the result list. If there’s only one item, it will +return just that item.

+
+
+
+ +
+
+splitgraph.cloud.get_headers()
+
+ +
+
+splitgraph.cloud.get_remote_param(remote: str, key: str) str
+
+ +
+
+splitgraph.cloud.get_token_claim(jwt, claim)
+

Extract a claim from a JWT token without validating it.

+
+ +
+
+splitgraph.cloud.handle_gql_errors(func: Callable[[...], requests.models.Response]) Callable[[...], requests.models.Response]
+

A decorator that handles responses from the GQL API, transforming errors into exceptions.

+
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.commandline.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.commandline.mdx new file mode 100644 index 00000000..f73384ea --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.commandline.mdx @@ -0,0 +1,245 @@ + + + +export const meta = { + title: "splitgraph.commandline package", + id: "splitgraph.commandline package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.commandline.cloud module

+

Command line routines related to registering/setting up connections to the Splitgraph registry.

+
+
+

splitgraph.commandline.common module

+

Various common functions used by the command line interface.

+
+
+class splitgraph.commandline.common.ImageType(default: Optional[str] = 'latest', repository_exists: bool = False, get_image: bool = False)
+

Bases: click.types.ParamType

+

Parser that extracts the full image specification (repository and hash/tag).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context]) Tuple[Repository, Optional[Union[Image, str]]]
+

Image specification must have the format [NAMESPACE/]REPOSITORY[:HASH_OR_TAG].

+

The parser returns a tuple of (repository object, tag or hash).

+
+ +
+
+name = 'Image'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.JsonType
+

Bases: click.types.ParamType

+

Parser for Json – a wrapper around json.loads because without specifying +the name Click shows the type for the option/arg as LOADS.

+

Also supports passing JSON files (pass in @filename.json).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Json'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.RepositoryType(exists: bool = False)
+

Bases: click.types.ParamType

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context]) Repository
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Repository'
+

the descriptive name of this type

+
+ +
+ +
+
+splitgraph.commandline.common.emit_sql_results(results, use_json=False, show_all=False)
+
+ +
+
+splitgraph.commandline.common.load_json_param(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+
+ +
+
+splitgraph.commandline.common.remote_switch_option(*names, **kwargs)
+

Adds an option to switch global SG_ENGINE for this invocation of sgr.

+

This is useful for e.g. tagging or viewing image information on a remote +registry. This is not used in operations like commit/checkout (even though +nothing is preventing SG_ENGINE switch from working on that if the remote engine +supports this), the user should switch SG_ENGINE envvar themselves in that case.

+
+
Parameters
+
    +
  • names – Names

  • +
  • kwargs – Passed to click.option

  • +
+
+
+
+ +
+
+splitgraph.commandline.common.sql_results_to_str(results: List[Tuple[Any]], use_json: bool = False) str
+
+ +
+
+

splitgraph.commandline.engine module

+
+
+splitgraph.commandline.engine.inject_config_into_engines(engine_prefix, config_path)
+

Copy the current config into all engines that are managed by sgr engine. This +is so that the engine has the right credentials and settings for when we do +layered querying (a Postgres client queries the engine directly and it +has to download objects etc).

+
+
Parameters
+
    +
  • engine_prefix – Prefix for Docker containers that are considered to be engines

  • +
  • config_path – Path to the config file.

  • +
+
+
+
+ +
+
+splitgraph.commandline.engine.list_engines(prefix, include_all=False, unavailable_ok=True)
+
+ +
+
+

splitgraph.commandline.example module

+

Command line routines generating example data / Splitfiles

+
+
+splitgraph.commandline.example.alter_table(repository: Repository, table_name: str, rows_added: int, rows_deleted: int, rows_updated: int) None
+

Alters the example table, adding/updating/deleting a certain number of rows.

+
+
Parameters
+
    +
  • repository – Checked-out Repository object.

  • +
  • table_name – Name of the table

  • +
  • rows_added – Number of rows to add

  • +
  • rows_deleted – Number of rows to remove

  • +
  • rows_updated – Number of rows to update

  • +
+
+
+
+ +
+
+splitgraph.commandline.example.generate_table(repository: Repository, table_name: str, size: int) None
+

Creates a table with an integer primary key and a string value.

+
+
Parameters
+
    +
  • repository – Checked-out Repository to create the table in.

  • +
  • table_name – Name of the table to generate

  • +
  • size – Number of rows in the table.

  • +
+
+
+
+ +
+
+

splitgraph.commandline.image_creation module

+

sgr commands related to creating and checking out images

+
+
+

splitgraph.commandline.image_info module

+

sgr commands related to getting information out of / about images

+
+
+

splitgraph.commandline.ingestion module

+

Command line tools for ingesting/exporting Splitgraph images into other formats.

+
+
+

splitgraph.commandline.misc module

+

Miscellaneous image management sgr commands.

+
+
+

splitgraph.commandline.mount module

+

sgr commands related to mounting databases via Postgres FDW

+
+
+

splitgraph.commandline.push_pull module

+

sgr commands related to sharing and downloading images.

+
+
+

splitgraph.commandline.splitfile module

+

sgr commands related to building and rebuilding Splitfiles.

+
+
+

Module contents

+

Splitgraph command line client

+

Hooks into the API to allow management of Splitgraph repositories and images using sgr.

+
+
+class splitgraph.commandline.ClickHandler(level=0)
+

Bases: logging.Handler

+
+
+emit(record)
+

Do whatever it takes to actually log the specified logging record.

+

This version is intended to be implemented by subclasses and so +raises a NotImplementedError.

+
+ +
+ +
+
+class splitgraph.commandline.WithExceptionHandler(name=None, commands=None, **attrs)
+

Bases: click.core.Group

+
+
+get_command(ctx, cmd_name)
+

Given a context and a command name, this returns a +Command object if it exists or returns None.

+
+ +
+
+invoke(ctx)
+

Given a context, this invokes the attached callback (if it exists) +in the right way.

+
+ +
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.config.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.config.mdx new file mode 100644 index 00000000..15ecff65 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.config.mdx @@ -0,0 +1,392 @@ + + + +export const meta = { + title: "splitgraph.config package", + id: "splitgraph.config package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.config.argument_config module

+
+
+splitgraph.config.argument_config.get_arg_tuples() List[Tuple[str, str]]
+

Get the raw (argN, argN+1) tuples from sys.argv

+

We could also use click to parse the flags ahead of time, and then pass +the parsed flag object into SystemConfigGetters. But this way, we avoid +having to pass down variables from click just to get config values.

+
+ +
+
+splitgraph.config.argument_config.get_argument_config_value(key: str, default_return: Optional[str] = None) Optional[str]
+

Get get the value of an argument, where value is the argument +immediately following the argument matching a key in ARG_KEYS, e.g.:

+
+

SYS_ARGS = [”–namespace”, “foo”] +–> return “foo”

+
+

Otherwise, return default_return

+
+ +
+
+

splitgraph.config.config module

+
+
+splitgraph.config.config.chain_getters(getters: Sequence[Callable[[str], Optional[str]]], key: str, default_return: Optional[str] = None) Optional[str]
+
+ +
+
+splitgraph.config.config.create_config_dict() Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create and return a dict of all known config values

+
+ +
+
+splitgraph.config.config.get_all_in_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str) Dict[str, Union[Dict[str, str], str]]
+

Get all subsections from a config (e.g. config[“data_sources”])

+
+ +
+
+splitgraph.config.config.get_all_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str) Dict[str, str]
+
+ +
+
+splitgraph.config.config.get_from_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, item: str) str
+
+ +
+
+splitgraph.config.config.get_from_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str) str
+

Return a singleton variable from a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.get_singleton(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], item: str) str
+

Return a singleton (not a section) variable from the config.

+
+ +
+
+splitgraph.config.config.lazy_get_config_value(key: str, default_return: Optional[str] = None) Optional[Union[str, Dict[str, Dict[str, str]]]]
+

Get the config value for a key in the following precedence +Otherwise return default_return

+
+ +
+
+splitgraph.config.config.patch_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], patch: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Recursively updates a nested configuration dictionary:

+
+
patch_config(
+
&lbrace;“key_1”: “value_1”,

“dict_1”: &lbrace;“key_1”: “value_1”&rbrace;&rbrace;,

+
+
&lbrace;“key_1”: “value_2”,

“dict_1”: &lbrace;“key_2”: “value_2”&rbrace;&rbrace;) == &lbrace;“key_1”: “value_2”, +“dict_1”: &lbrace;“key_1”: “value_1”, “key_2”: “value_2”&rbrace;&rbrace;

+
+
+
+
+
+
Parameters
+
    +
  • config – Config dictionary

  • +
  • patch – Dictionary with the path

  • +
+
+
Returns
+

New patched dictionary

+
+
+
+ +
+
+splitgraph.config.config.set_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str, value: str) None
+

Set a singleton variable in a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.update_config_dict_from_arguments(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sys.argv +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_env_vars(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading os.environ +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_file(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], sg_config_file: str) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sg_config_file +and overwriting any keys according to the rules in config_file_config

+

Return updated copy of config_dict.

+
+ +
+
+

splitgraph.config.config_file_config module

+
+
+splitgraph.config.config_file_config.accumulate_lists(config_dict: Dict[str, Union[Dict[str, str], str]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Transform a config_dict to “accumulate” objects “nested” via key name

+

Because ConfigParser does not support nesting, we implement our own +syntax via the key names of sections. The ‘:’ character can be used in +section names to specify the left and right key. Example:

+
.ini config             new config_dict
+
+                  ----->
+                    |
+[remote: remote1]   |   &lbrace;
+SG_ENV_VAR=foo      |       **rest_of_config_dict,
+                    |       "remotes": &lbrace;
+[origin: origin1]   |           "remote1": &lbrace;
+SG_ENV_VAR=bar      |               "SG_ENV_VAR": "foo"
+                    |           &rbrace;
+[origin: origin2]   |       &rbrace;,
+SG_ENV_VAR=bax      |       "origins": &lbrace;
+                    |           "origin1": &lbrace;
+                    |               "SG_ENV_VAR": "bar"
+                    |           &rbrace;,
+                    |           "origin2": &lbrace;
+                    |               "SG_ENV_VAR": "bax"
+                    |           &rbrace;
+                    |       &rbrace;
+                    |   &rbrace;
+                    |
+                  ----->
+
+
+

:return a new, updated copy of config_dict

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_config_file(sg_file: str, **kwargs) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create a dict from ConfigParser, apply transformations to it.

+

Return parsed and transformed config_dict.

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_file(sg_file: str, **kwargs) Dict[str, Dict[str, str]]
+
+ +
+
+splitgraph.config.config_file_config.hoist_section(config_dict: Dict[str, Dict[str, str]], section: str = 'defaults') Dict[str, Union[Dict[str, str], str]]
+

If a section exists called <hoist_section>, hoist it to the top level +This is useful for overriding default configs from within a config file

+

Transform config_dict to “hoist” any config values from a section +into the top level (thus, overriding environment variables), +when the name of the section matches hoist_section.

+

Return a new, updated copy of config_dict.

+
+ +
+
+splitgraph.config.config_file_config.transform_config_dict(config_dict: Dict[str, Dict[str, str]], **kwargs) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Apply transformations to the raw ConfigParser.config object

+
+
    +
  1. hoist_section

  2. +
  3. accumulate_lists

  4. +
+
+

Return the a new, updated copy of config_dict.

+
+ +
+
+

splitgraph.config.default_config module

+
+
+splitgraph.config.default_config.get_default_config_value(key: str, default_return: Optional[str] = None) Any
+

Get the hard-coded default value of a config key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.environment_config module

+
+
+splitgraph.config.environment_config.get_environment_config_value(key: str, default_return: Optional[str] = None) Optional[str]
+

Get the environment variable value of the environment variable matching key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.export module

+

Routines for exporting the config back into text.

+
+
+splitgraph.config.export.overwrite_config(new_config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_path: str, include_defaults: bool = False) None
+

Serialize the new config dictionary and overwrite the current config file. +Note: this will delete all comments in the config!

+
+
Parameters
+
    +
  • new_config – Config dictionary.

  • +
  • config_path – Path to the config file.

  • +
  • include_defaults – Whether to include values that are the same +as their defaults.

  • +
+
+
+
+ +
+
+splitgraph.config.export.serialize_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_format: bool, no_shielding: bool, include_defaults: bool = True) str
+

Pretty-print the configuration or print it in the Splitgraph config file format.

+
+
Parameters
+
    +
  • config – Configuration dictionary.

  • +
  • config_format – Output configuration in the Splitgraph config file format.

  • +
  • no_shielding – Don’t replace sensitive values (like passwords) with asterisks

  • +
  • include_defaults – Emit the config variable even if it’s the same as the default.

  • +
+
+
Returns
+

Textual representation of the config.

+
+
+
+ +
+
+splitgraph.config.export.serialize_engine_config(engine_name: str, conn_params: Dict[str, str], no_shielding: bool) str
+

Output the config section with connection parameters for a single engine.

+
+
Parameters
+
    +
  • engine_name – Name of the engine

  • +
  • conn_params – Dictionary of connection parameters

  • +
  • no_shielding – Don’t replace passwords with asterisks

  • +
+
+
+
+ +
+
+

splitgraph.config.keys module

+
+
+splitgraph.config.keys.SENSITIVE_KEY_SUFFIXES = ['_PWD', '_TOKEN']
+

Warning: Every key in DEFAULTS must have a key in ARGUMENT_KEY_MAP +If you add/remove keys from DEFAULTS, make sure to do so here too.

+
+ +
+
+

splitgraph.config.system_config module

+
+
+splitgraph.config.system_config.file_exists(_dir: str, filename: str) bool
+
+ +
+
+splitgraph.config.system_config.get_config_file(default_return: None = None) Optional[str]
+

Get the location of an existing SG_CONFIG_FILE on the system with +a valid name. Do not attempt to parse the config file, just return +its location.

+

Otherwise, return default_return

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_dirs() List[str]
+

Get any explicitly defined config file directories, +which are directories where we should search for files from +VALID_CONFIG_FILE_NAMES.

+

This list is defined similar to $PATH, as a colon (:) delimited +string, either in:

+
+
    +
  • argument flag –config-dirs

  • +
  • or environment key SG_CONFIG_DIRS

  • +
+
+

Or a single directory defined in either

+
+
    +
  • argument flag –config-dir

  • +
  • environment key SG_CONFIG_DIR

  • +
+
+

If both plural and single are defined, join them together.

+

Return a list of valid paths that are set, or an empty list.

+

Print a warning if any paths to not exist.

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_location() Optional[str]
+

Get the explicitly defined location of config file, if defined.

+

The location will either be defined in:

+
+
    +
  • argument flag –config-file

  • +
  • or environment key SG_CONFIG_FILE

  • +
+
+

In keeping with assumptions about priority, argument flag has +higher priority than environment value.

+

If the location is set, and points to an existing file, return location.

+

Otherwise return None

+

Print a warning if location is set but points to non-existing file.

+
+ +
+
+splitgraph.config.system_config.get_system_config_value(key: str, default_return: None = None) Optional[str]
+
+ +
+
+splitgraph.config.system_config.is_file(filename: str) bool
+
+ +
+
+

Module contents

+

The CONFIG object is created and exported once __at import time__ +Calling CONFIG[“KEY”] directly should be sufficient in most cases, +except when a config value has changed since importing CONFIG. +In that case, create_config_dict() can provide an updated config dict

+

Priority (highest to lowest):

+
+
    +
  1. Command line argument values

  2. +
  3. Environment variable values

  4. +
  5. Config file values in [defaults] section

  6. +
  7. DEFAULTS (see keys.py)

  8. +
+
+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.core.indexing.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.core.indexing.mdx new file mode 100644 index 00000000..257fcc54 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.core.indexing.mdx @@ -0,0 +1,141 @@ + + + +export const meta = { + title: "splitgraph.core.indexing package", + id: "splitgraph.core.indexing package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.core.indexing.bloom module

+

Bloom filtering on fragments for equality queries.

+
+
+splitgraph.core.indexing.bloom.describe(index_tuple: Tuple[int, str]) str
+

Returns a pretty-printed summary of the bloom filter

+
+
Parameters
+

index_tuple – Tuple of (k, base64-encoded fingerprint) +returned by generate_bloom_index

+
+
Returns
+

String

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.filter_bloom_index(engine: PsycopgEngine, object_ids: List[str], quals: Any) List[str]
+

Runs a bloom filter on given qualifiers using the given objects’ previously-generated +fingerprints.

+
+
Parameters
+
    +
  • engine – Object engine

  • +
  • object_ids – Object IDs

  • +
  • quals – List of qualifiers

  • +
+
+
Returns
+

List of object IDs that might match the qualifiers in quals (including +IDs that don’t have a bloom index).

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.generate_bloom_index(engine: PsycopgEngine, object_id: str, changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], column: str, probability: Optional[float] = None, size: Optional[int] = None) Tuple[int, str]
+

Generates a bloom filter signature for a given column and a given fragment. Bloom filters +can answer queries asking whether an item is definitely not in a given set or possibly can be.

+

The tradeoff is between the probability of a false positive (item said to be in the set when +it actually isn’t) and the size of the filter.

+

Bloom filters also have an extra parameter, k, or the number of bits in the signature that +a certain item flips. This parameter has an optimal value for a given number of distinct items +or a probability and so isn’t explicitly passed by the user.

+
+
Parameters
+
    +
  • engine – Object engine the fragment is cached in.

  • +
  • object_id – Fragment ID

  • +
  • changeset – Optional, if specified, the old column values are included in the index.

  • +
  • column – Column name to generate the index on.

  • +
  • probability – Probability of a false positive. Either this or the size of the filter must +be specified, but not both.

  • +
  • size – Size of the filter, in bytes.

  • +
+
+
Returns
+

Dictionary to be inserted into the index.

+
+
+
+ +
+
+

splitgraph.core.indexing.range module

+
+
+splitgraph.core.indexing.range.extract_min_max_pks(engine: PsycopgEngine, fragments: List[str], table_pks: List[str], table_pk_types: List[str]) Any
+

Extract minimum/maximum PK values for given fragments.

+
+
Parameters
+
    +
  • engine – Engine the objects live on

  • +
  • fragments – IDs of objects

  • +
  • table_pks – List of columns forming the table primary key

  • +
  • table_pk_types – List of types for table PK columns

  • +
+
+
Returns
+

List of min/max primary key for every object.

+
+
+
+ +
+
+splitgraph.core.indexing.range.filter_range_index(metadata_engine: PsycopgEngine, object_ids: List[str], quals: Any, column_types: Dict[str, str]) List[str]
+
+ +
+
+splitgraph.core.indexing.range.generate_range_index(object_engine: PsycopgEngine, object_id: str, table_schema: TableSchema, changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], columns: Optional[List[str]] = None) Dict[str, Tuple[splitgraph.core.indexing.range.T, splitgraph.core.indexing.range.T]]
+

Calculate the minimum/maximum values of every column in the object (including deleted values).

+
+
Parameters
+
    +
  • object_engine – Engine the object is located on

  • +
  • object_id – ID of the object.

  • +
  • table_schema – Schema of the table

  • +
  • changeset – Changeset (old values will be included in the index)

  • +
  • columns – Columns to run the index on (default all)

  • +
+
+
Returns
+

Dictionary of &lbrace;column: [min, max]&rbrace;

+
+
+
+ +
+
+splitgraph.core.indexing.range.quals_to_sql(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], column_types: Dict[str, str]) Tuple[psycopg2.sql.Composable, Tuple]
+

Convert a list of qualifiers in CNF to a fragment of a Postgres query +:param quals: Qualifiers in CNF +:param column_types: Dictionary of column names and their types +:return: SQL Composable object and a tuple of arguments to be mogrified into it.

+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.core.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.core.mdx new file mode 100644 index 00000000..fcc651d1 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.core.mdx @@ -0,0 +1,2142 @@ + + + +export const meta = { + title: "splitgraph.core package", + id: "splitgraph.core package" +}; + +
+ +
+

Subpackages

+ +
+
+

Submodules

+
+
+

splitgraph.core.common module

+

Common internal functions used by Splitgraph commands.

+
+
+class splitgraph.core.common.CallbackList(iterable=(), /)
+

Bases: list

+

Used to pass around and call multiple callbacks at once.

+
+ +
+
+class splitgraph.core.common.Tracer
+

Bases: object

+

Accumulates events and returns the times between them.

+
+
+get_durations() List[Tuple[str, float]]
+

Return all events and durations between them. +:return: List of (event name, time to this event from the previous event (or start))

+
+ +
+
+get_total_time() float
+
+
Returns
+

Time from start to the final logged event.

+
+
+
+ +
+
+log(event: str) None
+

Log an event at the current time +:param event: Event name

+
+ +
+ +
+
+splitgraph.core.common.adapt(value: Any, pg_type: str) Any
+

Coerces a value with a PG type into its Python equivalent.

+
+
Parameters
+
    +
  • value – Value

  • +
  • pg_type – Postgres datatype

  • +
+
+
Returns
+

Coerced value.

+
+
+
+ +
+
+splitgraph.core.common.aggregate_changes(query_result: List[Tuple[int, int]], initial: Optional[Tuple[int, int, int]] = None) Tuple[int, int, int]
+

Add a changeset to the aggregated diff result

+
+ +
+
+splitgraph.core.common.coerce_val_to_json(val: Any) Any
+

Turn a Python value to a string/float that can be stored as JSON.

+
+ +
+
+splitgraph.core.common.ensure_metadata_schema(engine: PsycopgEngine) None
+

Create or migrate the metadata schema splitgraph_meta that stores the hash tree of schema +snapshots (images), tags and tables. +This means we can’t mount anything under the schema splitgraph_meta – much like we can’t have a folder +“.git” under Git version control…

+
+ +
+
+splitgraph.core.common.gather_sync_metadata(target: Repository, source: Repository, overwrite_objects=False, overwrite_tags=False, single_image: Optional[str] = None) Any
+

Inspects two Splitgraph repositories and gathers metadata that is required to bring target up to +date with source.

+
+
Parameters
+
    +
  • target – Target Repository object

  • +
  • source – Source repository object

  • +
  • overwrite_objects – If True, will return metadata for all objects +belonging to new images (or existing image if single_image=True)

  • +
  • single_image – If set, only grab a single image with this hash/tag from the source.

  • +
  • overwrite_tags – If True and single_image is set, will return all tags for that image. +If single_image is not set, will return all tags in the source repository. +If False, will only return tags in the source that don’t exist on the target.

  • +
+
+
Returns
+

Tuple of metadata for new_images, new_tables, object_locations, object_meta, tags

+
+
+
+ +
+
+splitgraph.core.common.get_temporary_table_id() str
+

Generate a random ID for temporary/staging objects that haven’t had their ID calculated yet.

+
+ +
+
+splitgraph.core.common.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.common.manage_audit(func: Callable) Callable
+

A decorator to be put around various Splitgraph commands +that adds/removes audit triggers for new/committed/deleted tables.

+
+ +
+
+splitgraph.core.common.manage_audit_triggers(engine: PostgresEngine, object_engine: Optional[PostgresEngine] = None) None
+

Does bookkeeping on audit triggers / audit table:

+
+
    +
  • Detect tables that are being audited that don’t need to be any more +(e.g. they’ve been unmounted)

  • +
  • Drop audit triggers for those and delete all audit info for them

  • +
  • Set up audit triggers for new tables

  • +
+
+

If the metadata engine isn’t the same as the object engine, this does nothing.

+
+
Parameters
+
    +
  • engine – Metadata engine with information about images and their checkout state

  • +
  • object_engine – Object engine where the checked-out table and the audit triggers are located.

  • +
+
+
+
+ +
+
+splitgraph.core.common.set_head(repository: Repository, image: Optional[str]) None
+

Sets the HEAD pointer of a given repository to a given image. Shouldn’t be used directly.

+
+ +
+
+splitgraph.core.common.set_tag(repository: Repository, image_hash: Optional[str], tag: str) None
+

Internal function – add a tag to an image.

+
+ +
+
+splitgraph.core.common.set_tags_batch(repository: Repository, hashes_tags: List[Tuple[str, str]]) None
+
+ +
+
+splitgraph.core.common.slow_diff(repository: Repository, table_name: str, image_1: Optional[str], image_2: Optional[str], aggregate: bool) Union[Tuple[int, int, int], List[Tuple[bool, Tuple]]]
+

Materialize both tables and manually diff them

+
+ +
+
+

splitgraph.core.engine module

+

Routines for managing Splitgraph engines, including looking up repositories and managing objects.

+
+
+splitgraph.core.engine.get_current_repositories(engine: PostgresEngine) List[Tuple[Repository, Optional[Image]]]
+

Lists all repositories currently in the engine.

+
+
Parameters
+

engine – Engine

+
+
Returns
+

List of (Repository object, current HEAD image)

+
+
+
+ +
+
+splitgraph.core.engine.init_engine(skip_object_handling: bool = False) None
+

Initializes the engine by:

+
+
    +
  • performing any required engine-custom initialization

  • +
  • creating the metadata tables

  • +
+
+
+
Parameters
+

skip_object_handling – If True, skips installing routines related to +object handling and checkouts (like audit triggers and CStore management).

+
+
+
+ +
+
+splitgraph.core.engine.lookup_repository(name: str, include_local: bool = False) Repository
+

Queries the SG engines on the lookup path to locate one hosting the given repository.

+
+
Parameters
+
    +
  • name – Repository name

  • +
  • include_local – If True, also queries the local engine

  • +
+
+
Returns
+

Local or remote Repository object

+
+
+
+ +
+
+splitgraph.core.engine.repository_exists(repository: Repository) bool
+

Checks if a repository exists on the engine.

+
+
Parameters
+

repository – Repository object

+
+
+
+ +
+
+

splitgraph.core.fdw_checkout module

+
+
+

splitgraph.core.fragment_manager module

+

Routines related to storing tables as fragments.

+
+
+class splitgraph.core.fragment_manager.Digest(shorts: Tuple[int, ...])
+

Bases: object

+

Homomorphic hashing similar to LtHash (but limited to being backed by 256-bit hashes). The main property is that +for any rows A, B, LtHash(A) + LtHash(B) = LtHash(A+B). This is done by construction: we simply hash individual +rows and then do bit-wise addition / subtraction of individual hashes to come up with the full table hash.

+

Hence, the content hash of any Splitgraph table fragment is the sum of hashes of its added rows minus the sum +of hashes of its deleted rows (including the old values of the rows that have been updated). This has a very +useful implication: the hash of a full Splitgraph table is equal to the sum of hashes of its individual fragments.

+

This property can be used to simplify deduplication.

+
+
+classmethod empty() splitgraph.core.fragment_manager.Digest
+

Return an empty Digest instance such that for any Digest D, D + empty == D - empty == D

+
+ +
+
+classmethod from_hex(hex_string: str) splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 64-characters (256-bit) hexadecimal string

+
+ +
+
+classmethod from_memoryview(memory: Union[bytes, memoryview]) splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 256-bit memoryview/bytearray.

+
+ +
+
+hex() str
+

Convert the hash into a hexadecimal value.

+
+ +
+ +
+
+class splitgraph.core.fragment_manager.FragmentManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.metadata_manager.MetadataManager

+

A storage engine for Splitgraph tables. Each table can be stored as one or more immutable fragments that can +optionally overwrite each other. When a new table is created, it’s split up into multiple base fragments. When +a new version of the table is written, the audit log is inspected and one or more patch fragments are created, +to be based on the fragments the previous version of the table consisted of. Only the top fragments in this stack +are stored in the table metadata: to reconstruct the whole table, the links from the top fragments down to the +base fragments have to be followed.

+

In addition, the fragments engine also supports min-max indexing on fragments: this is used to only fetch fragments +that are required for a given query.

+
+
+calculate_content_hash(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None, chunk_condition_sql: Optional[psycopg2.sql.Composable] = None, chunk_condition_args: Optional[List[Any]] = None) Tuple[str, int]
+

Calculates the homomorphic hash of table contents.

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Name of the table

  • +
  • table_schema – Schema of the table

  • +
  • chunk_condition_sql – Column the table is partitioned on

  • +
  • chunk_condition_args – Column value to get rows from

  • +
+
+
Returns
+

A 64-character (256-bit) hexadecimal string with the content hash of the table +and the number of rows in the hash.

+
+
+
+ +
+
+calculate_fragment_insertion_hash_stats(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None) Tuple[splitgraph.core.fragment_manager.Digest, int]
+

Calculate the homomorphic hash of just the rows that a given fragment inserts +:param schema: Schema the fragment is stored in. +:param table: Name of the table the fragment is stored in. +:return: A Digest object and the number of inserted rows

+
+ +
+
+create_base_fragment(source_schema: str, source_table: str, namespace: str, chunk_condition_sql: Optional[psycopg2.sql.Composable] = None, chunk_condition_args: Optional[List[Any]] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None) str
+
+ +
+
+delete_objects(objects: Union[Set[str], List[str]]) None
+

Deletes objects from the Splitgraph cache

+
+
Parameters
+

objects – A sequence of objects to be deleted

+
+
+
+ +
+
+filter_fragments(object_ids: List[str], table: Table, quals: Any) List[str]
+

Performs fuzzy filtering on the given object IDs using the index and a set of qualifiers, discarding +objects that definitely do not match the qualifiers.

+
+
Parameters
+
    +
  • object_ids – List of object IDs to filter.

  • +
  • table – A Table object the objects belong to.

  • +
  • quals

    List of qualifiers in conjunctive normal form that will be matched against the index. +Objects that definitely don’t match these qualifiers will be discarded.

    +

    A list containing [[qual_1, qual_2], [qual_3, qual_4]] will be interpreted as +(qual_1 OR qual_2) AND (qual_3 OR qual_4).

    +

    Each qual is a tuple of (column_name, operator, value) where +operator can be one of >, >=, <, <=, =.

    +

    For unknown operators, it will be assumed that all fragments might match that clause.

    +

  • +
+
+
Returns
+

List of objects that might match the given qualifiers.

+
+
+
+ +
+
+generate_object_index(object_id: str, table_schema: List[splitgraph.core.types.TableColumn], changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None) Dict[str, Any]
+

Queries the max/min values of a given fragment for each column, used to speed up querying.

+
+
Parameters
+
    +
  • object_id – ID of an object

  • +
  • table_schema – Schema of the table the object belongs to.

  • +
  • changeset – Optional, if specified, the old row values are included in the index.

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
Returns
+

Dict containing the object index.

+
+
+
+ +
+
+get_min_max_pks(fragments: List[str], table_pks: List[Tuple[str, str]]) List[Tuple[Tuple, Tuple]]
+

Get PK ranges for given fragments using the index (without reading the fragments).

+
+
Parameters
+
    +
  • fragments – List of object IDs (must be registered and with the same schema)

  • +
  • table_pks – List of tuples (column, type) that form the object PK.

  • +
+
+
Returns
+

List of (min, max) PK for every fragment where PK is a tuple. +If a fragment doesn’t exist or doesn’t have a corresponding index entry, +a SplitGraphError is raised.

+
+
+
+ +
+
+record_table_as_base(repository: Repository, table_name: str, image_hash: str, chunk_size: Optional[int] = 10000, source_schema: Optional[str] = None, source_table: Optional[str] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None) List[str]
+

Copies the full table verbatim into one or more new base fragments and registers them.

+
+
Parameters
+
    +
  • repository – Repository

  • +
  • table_name – Table name

  • +
  • image_hash – Hash of the new image

  • +
  • chunk_size – If specified, splits the table into multiple objects with a given number of rows

  • +
  • source_schema – Override the schema the source table is stored in

  • +
  • source_table – Override the name of the table the source is stored in

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Key to sort data inside each chunk by.

  • +
  • overwrite – Overwrite physical objects that already exist.

  • +
  • table_schema – Override the columns that will be picked from the original table +(e.g. to change their order or primary keys). Note that the schema must be a subset +of the original schema and this method doesn’t verify PK constraints.

  • +
+
+
+
+ +
+
+record_table_as_patch(old_table: Table, schema: str, image_hash: str, new_schema_spec: List[splitgraph.core.types.TableColumn] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False) None
+

Flushes the pending changes from the audit table for a given table and records them, +registering the new objects.

+
+
Parameters
+
    +
  • old_table – Table object pointing to the current HEAD table

  • +
  • schema – Schema the table is checked out into.

  • +
  • image_hash – Image hash to store the table under

  • +
  • new_schema_spec – New schema of the table (use the old table’s schema by default).

  • +
  • split_changeset – See Repository.commit for reference

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
+
+ +
+
+split_changeset_boundaries(changeset, change_key, objects)
+
+ +
+ +
+
+splitgraph.core.fragment_manager.get_chunk_groups(chunks: List[Tuple[str, Any, Any]]) List[List[Tuple[str, Any, Any]]]
+

Takes a list of chunks and their boundaries and combines them +into independent groups such that chunks from no two groups +overlap with each other (intervals are assumed to be closed, +e.g. chunk (1,2) overlaps with chunk (2,3)).

+

The original order of chunks is preserved within each group.

+

For example, 4 chunks A, B, C, D that don’t overlap each other +will be grouped into 4 groups [A], [B], [C], [D].

+

If A overlaps B, the result will be [A, B], [C], [D].

+

If in addition B overlaps C (but not A), the result will be [A, B, C], [D].

+

If in addition D overlaps any of A, B or C, the result will be [A, B, C, D] +(despite that D is located before A: it will be last since it was last in the +original list).

+
+
Parameters
+

chunks – List of (chunk_id, start, end)

+
+
Returns
+

List of lists of (chunk_id, start, end)

+
+
+
+ +
+
+

splitgraph.core.image module

+

Image representation and provenance

+
+
+class splitgraph.core.image.Image(image_hash: str, parent_id: Optional[str], created: datetime.datetime, comment: str, provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], repository: Repository)
+

Bases: tuple

+

Represents a Splitgraph image. Should’t be created directly, use Image-loading methods in the +splitgraph.core.repository.Repository class instead.

+
+
+checkout(force: bool = False, layered: bool = False) None
+

Checks the image out, changing the current HEAD pointer. Raises an error +if there are pending changes to its checkout.

+
+
Parameters
+
    +
  • force – Discards all pending changes to the schema.

  • +
  • layered – If True, uses layered querying to check out the image (doesn’t materialize tables +inside of it).

  • +
+
+
+
+ +
+
+comment: str
+

Alias for field number 3

+
+ +
+
+created: datetime.datetime
+

Alias for field number 2

+
+ +
+
+delete_tag(tag: str) None
+

Deletes a tag from an image.

+
+
Parameters
+

tag – Tag to delete.

+
+
+
+ +
+
+property engine
+
+ +
+
+get_log() List[splitgraph.core.image.Image]
+

Repeatedly gets the parent of a given image until it reaches the bottom.

+
+ +
+
+get_parent_children() Tuple[Optional[str], List[str]]
+

Gets the parent and a list of children of a given image.

+
+ +
+
+get_size() int
+

Get the physical size used by the image’s objects (including those that might be +shared with other images).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of image’s +objects have been downloaded.

+
+
Returns
+

Size of the image in bytes.

+
+
+
+ +
+
+get_table(table_name: str) splitgraph.core.table.Table
+

Returns a Table object representing a version of a given table. +Contains a list of objects that the table is linked to and the table’s schema.

+
+
Parameters
+

table_name – Name of the table

+
+
Returns
+

Table object

+
+
+
+ +
+
+get_tables() List[str]
+

Gets the names of all tables inside of an image.

+
+ +
+
+get_tags()
+

Lists all tags that this image has.

+
+ +
+
+image_hash: str
+

Alias for field number 0

+
+ +
+
+lq_checkout(target_schema: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', only_tables: Optional[List[str]] = None) None
+

Intended to be run on the sgr side. Initializes the FDW for all tables in a given image, +allowing to query them directly without materializing the tables.

+
+ +
+
+property object_engine
+
+ +
+
+parent_id: Optional[str]
+

Alias for field number 1

+
+ +
+
+provenance(reverse=False, engine=None) List[Tuple[Repository, str]]
+

Inspects the image’s parent chain to come up with a set of repositories and their hashes +that it was created from.

+

If reverse is True, returns a list of images that were created _from_ this image. If +this image is on a remote repository, engine can be passed in to override the engine +used for the lookup of dependents.

+
+
Returns
+

List of (repository, image_hash)

+
+
+
+ +
+
+provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]
+

Alias for field number 4

+
+ +
+
+query_schema(wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', commit: bool = True) Iterator[str]
+

Creates a temporary schema with tables in this image mounted as foreign tables that can be accessed via +read-only layered querying. On exit from the context manager, the schema is discarded.

+
+
Returns
+

The name of the schema the image is located in.

+
+
+
+ +
+
+repository: Repository
+

Alias for field number 5

+
+ +
+
+set_provenance(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]) None
+

Sets the image’s provenance. Internal function called by the Splitfile interpreter, shouldn’t +be called directly as it changes the image after it’s been created.

+
+
Parameters
+

provenance_data – List of parsed Splitfile commands and their data.

+
+
+
+ +
+
+tag(tag: str) None
+

Tags a given image. All tags are unique inside of a repository. If a tag already exists, it’s removed +from the previous image and given to the new image.

+
+
Parameters
+

tag – Tag to set. ‘latest’ and ‘HEAD’ are reserved tags.

+
+
+
+ +
+
+to_splitfile(ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None) List[str]
+

Recreate the Splitfile that can be used to reconstruct this image.

+
+
Parameters
+
    +
  • ignore_irreproducible – If True, ignore commands from irreproducible Splitfile lines +(like MOUNT or custom commands) and instead emit a comment (this results in an invalid Splitfile).

  • +
  • source_replacement – A dictionary of repositories and image hashes/tags specifying how to replace the +dependencies of this Splitfile (table imports and FROM commands).

  • +
+
+
Returns
+

A list of Splitfile commands that can be fed back into the executor.

+
+
+
+ +
+ +
+
+splitgraph.core.image.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.image.reconstruct_splitfile(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None) List[str]
+

Recreate the Splitfile that can be used to reconstruct an image.

+
+ +
+
+

splitgraph.core.image_manager module

+
+
+class splitgraph.core.image_manager.ImageManager(repository: Repository)
+

Bases: object

+

Collects various image-related functions.

+
+
+add(parent_id: Optional[str], image: str, created: Optional[datetime.datetime] = None, comment: Optional[str] = None, provenance_data: Optional[List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]] = None) None
+

Registers a new image in the Splitgraph image tree.

+

Internal method used by actual image creation routines (committing, importing or pulling).

+
+
Parameters
+
    +
  • parent_id – Parent of the image

  • +
  • image – Image hash

  • +
  • created – Creation time (defaults to current timestamp)

  • +
  • comment – Comment (defaults to empty)

  • +
  • provenance_data – Provenance data that can be used to reconstruct the image.

  • +
+
+
+
+ +
+
+add_batch(images: List[splitgraph.core.image.Image]) None
+

Like add, but registers multiple images at the same time. Used in push/pull +to avoid a roundtrip to the registry for each image +:param images: List of Image objects. Namespace and repository will be patched

+
+

with this repository.

+
+
+ +
+
+by_hash(image_hash: str) splitgraph.core.image.Image
+

Returns an image corresponding to a given (possibly shortened) image hash. If the image hash +is ambiguous, raises an error. If the image does not exist, raises an error or returns None.

+
+
Parameters
+

image_hash – Image hash (can be shortened).

+
+
Returns
+

Image

+
+
+
+ +
+
+by_tag(tag: str, raise_on_none: bool = True) Optional[splitgraph.core.image.Image]
+

Returns an image with a given tag

+
+
Parameters
+
    +
  • tag – Tag. ‘latest’ is a special case: it returns the most recent image in the repository.

  • +
  • raise_on_none – Whether to raise an error or return None if the tag doesn’t exist.

  • +
+
+
+
+ +
+
+delete(images: Iterable[str]) None
+

Deletes a set of Splitgraph images from the repository. Note this doesn’t check whether +this will orphan some other images in the repository and can make the state of the repository +invalid.

+

Image deletions won’t be replicated on push/pull (those can only add new images).

+
+
Parameters
+

images – List of image IDs

+
+
+
+ +
+
+get_all_child_images(start_image: str) Set[str]
+

Get all children of start_image of any degree.

+
+ +
+
+get_all_parent_images(start_images: Set[str]) Set[str]
+

Get all parents of the ‘start_images’ set of any degree.

+
+ +
+ +
+
+

splitgraph.core.metadata_manager module

+

Classes related to managing table/image/object metadata tables.

+
+
+class splitgraph.core.metadata_manager.MetadataManager(metadata_engine: PsycopgEngine)
+

Bases: object

+

A data access layer for the metadata tables in the splitgraph_meta schema that concerns itself +with image, table and object information.

+
+
+cleanup_metadata() List[str]
+

Go through the current metadata and delete all objects that aren’t required +by any table on the engine.

+
+
Returns
+

List of objects that have been deleted.

+
+
+
+ +
+
+delete_object_meta(object_ids: Sequence[str])
+

Delete metadata for multiple objects (external locations, indexes, hashes). +This doesn’t delete physical objects.

+
+
Parameters
+

object_ids – Object IDs to delete

+
+
+
+ +
+
+get_all_objects() List[str]
+

Gets all objects currently in the Splitgraph tree.

+
+
Returns
+

List of object IDs.

+
+
+
+ +
+
+get_external_object_locations(objects: List[str]) List[Tuple[str, str, str]]
+

Gets external locations for objects.

+
+
Parameters
+

objects – List of object IDs stored externally.

+
+
Returns
+

List of (object_id, location, protocol).

+
+
+
+ +
+
+get_new_objects(object_ids: List[str]) List[str]
+

Get object IDs from the passed list that don’t exist in the tree.

+
+
Parameters
+

object_ids – List of objects to check

+
+
Returns
+

List of unknown object IDs.

+
+
+
+ +
+
+get_object_meta(objects: List[str]) Dict[str, splitgraph.core.metadata_manager.Object]
+

Get metadata for multiple Splitgraph objects from the tree

+
+
Parameters
+

objects – List of objects to get metadata for.

+
+
Returns
+

Dictionary of object_id -> Object

+
+
+
+ +
+
+get_objects_for_repository(repository: Repository, image_hash: Optional[str] = None) List[str]
+
+ +
+
+get_unused_objects(threshold: Optional[int] = None) List[Tuple[str, datetime.datetime]]
+

Get a list of all objects in the metadata that aren’t used by any table and can be +safely deleted.

+
+
Parameters
+

threshold – Only return objects that were created earlier than this (in minutes)

+
+
Returns
+

List of objects and their creation times.

+
+
+
+ +
+
+overwrite_table(repository: Repository, image_hash: str, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+
+ +
+
+register_object_locations(object_locations: List[Tuple[str, str, str]]) None
+

Registers external locations (e.g. HTTP or S3) for Splitgraph objects. +Objects must already be registered in the object tree.

+
+
Parameters
+

object_locations – List of (object_id, location, protocol).

+
+
+
+ +
+
+register_objects(objects: List[splitgraph.core.metadata_manager.Object], namespace: Optional[str] = None) None
+

Registers multiple Splitgraph objects in the tree.

+
+
Parameters
+
    +
  • objects – List of Object objects.

  • +
  • namespace – If specified, overrides the original object namespace, required +in the case where the remote repository has a different namespace than the local one.

  • +
+
+
+
+ +
+
+register_tables(repository: Repository, table_meta: List[Tuple[str, str, List[splitgraph.core.types.TableColumn], List[str]]]) None
+

Links tables in an image to physical objects that they are stored as. +Objects must already be registered in the object tree.

+
+
Parameters
+
    +
  • repository – Repository that the tables belong to.

  • +
  • table_meta – A list of (image_hash, table_name, table_schema, object_ids).

  • +
+
+
+
+ +
+ +
+
+class splitgraph.core.metadata_manager.Object(object_id: str, format: str, namespace: str, size: int, created: datetime.datetime, insertion_hash: str, deletion_hash: str, object_index: Dict[str, Any], rows_inserted: int, rows_deleted: int)
+

Bases: tuple

+

Represents a Splitgraph object that tables are composed of.

+
+
+created: datetime.datetime
+

Alias for field number 4

+
+ +
+
+deletion_hash: str
+

Alias for field number 6

+
+ +
+
+format: str
+

Alias for field number 1

+
+ +
+
+insertion_hash: str
+

Alias for field number 5

+
+ +
+
+namespace: str
+

Alias for field number 2

+
+ +
+
+object_id: str
+

Alias for field number 0

+
+ +
+
+object_index: Dict[str, Any]
+

Alias for field number 7

+
+ +
+
+rows_deleted: int
+

Alias for field number 9

+
+ +
+
+rows_inserted: int
+

Alias for field number 8

+
+ +
+
+size: int
+

Alias for field number 3

+
+ +
+ +
+
+

splitgraph.core.migration module

+
+
+splitgraph.core.migration.get_installed_version(engine: PsycopgEngine, schema_name: str, version_table: str = 'version') Optional[Tuple[str, datetime.datetime]]
+
+ +
+
+splitgraph.core.migration.get_version_tuples(filenames: List[str]) List[Tuple[Optional[str], str]]
+
+ +
+
+splitgraph.core.migration.make_file_list(schema_name: str, migration_path: List[Optional[str]])
+

Construct a list of file names from history of versions and schema name

+
+ +
+
+splitgraph.core.migration.set_installed_version(engine: PsycopgEngine, schema_name: str, version: str, version_table: str = 'version')
+
+ +
+
+splitgraph.core.migration.source_files_to_apply(engine: PsycopgEngine, schema_name: str, schema_files: List[str], version_table: str = 'version', static: bool = False, target_version: Optional[str] = None) Tuple[List[str], str]
+

Get the ordered list of .sql files to apply to the database

+
+ +
+
+

splitgraph.core.object_manager module

+

Functions related to creating, deleting and keeping track of physical Splitgraph objects.

+
+
+class splitgraph.core.object_manager.ObjectManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.fragment_manager.FragmentManager

+

Brings the multiple manager classes together and manages the object cache (downloading and uploading +objects as required in order to fulfill certain queries)

+
+
+cleanup() List[str]
+

Deletes all objects in the object_tree not required by any current repository, including their dependencies and +their remote locations. Also deletes all objects not registered in the object_tree.

+
+ +
+
+download_objects(source: Optional[splitgraph.core.object_manager.ObjectManager], objects_to_fetch: List[str], object_locations: List[Tuple[str, str, str]]) List[str]
+

Fetches the required objects from the remote and stores them locally. +Does nothing for objects that already exist.

+
+
Parameters
+
    +
  • source – Remote ObjectManager. If None, will only try to download objects from the external location.

  • +
  • objects_to_fetch – List of object IDs to download.

  • +
  • object_locations – List of custom object locations, encoded as tuples (object_id, object_url, protocol).

  • +
+
+
+
+ +
+
+ensure_objects(table: Optional[Table], objects: Optional[List[str]] = None, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]] = None, defer_release: bool = False, tracer: Optional[splitgraph.core.common.Tracer] = None, upstream_manager: Optional[ObjectManager] = None) Iterator[Union[List[str], Tuple[List[str], splitgraph.core.common.CallbackList]]]
+

Resolves the objects needed to materialize a given table and makes sure they are in the local +splitgraph_meta schema.

+

Whilst inside this manager, the objects are guaranteed to exist. On exit from it, the objects are marked as +unneeded and can be garbage collected.

+
+
Parameters
+
    +
  • table – Table to materialize

  • +
  • objects – List of objects to download: one of table or objects must be specified.

  • +
  • quals – Optional list of qualifiers to be passed to the fragment engine. Fragments that definitely do +not match these qualifiers will be dropped. See the docstring for filter_fragments for the format.

  • +
  • defer_release – If True, won’t release the objects on exit.

  • +
+
+
Returns
+

If defer_release is True: List of table fragments and a callback that the caller must call +when the objects are no longer needed. If defer_release is False: just the list of table fragments.

+
+
+
+ +
+
+get_cache_occupancy() int
+
+
Returns
+

Space occupied by objects cached from external locations, in bytes.

+
+
+
+ +
+
+get_downloaded_objects(limit_to: Optional[List[str]] = None) List[str]
+

Gets a list of objects currently in the Splitgraph cache (i.e. not only existing externally.)

+
+
Parameters
+

limit_to – If specified, only the objects in this list will be returned.

+
+
Returns
+

Set of object IDs.

+
+
+
+ +
+
+get_total_object_size()
+
+
Returns
+

Space occupied by all objects on the engine, in bytes.

+
+
+
+ +
+
+make_objects_external(objects: List[str], handler: str, handler_params: Dict[Any, Any]) None
+

Uploads local objects to an external location and marks them as being cached locally (thus making it possible +to evict or swap them out).

+
+
Parameters
+
    +
  • objects – Object IDs to upload. Will do nothing for objects that already exist externally.

  • +
  • handler – Object handler

  • +
  • handler_params – Extra handler parameters

  • +
+
+
+
+ +
+
+run_eviction(keep_objects: List[str], required_space: Optional[int] = None) None
+

Delete enough objects with zero reference count (only those, since we guarantee that whilst refcount is >0, +the object stays alive) to free at least required_space in the cache.

+
+
Parameters
+
    +
  • keep_objects – List of objects (besides those with nonzero refcount) that can’t be deleted.

  • +
  • required_space – Space, in bytes, to free. If the routine can’t free at least this much space, +it shall raise an exception. If None, removes all eligible objects.

  • +
+
+
+
+ +
+
+upload_objects(target: splitgraph.core.object_manager.ObjectManager, objects_to_push: List[str], handler: str = 'DB', handler_params: Optional[Dict[Any, Any]] = None) Sequence[Tuple[str, Optional[str]]]
+

Uploads physical objects to the remote or some other external location.

+
+
Parameters
+
    +
  • target – Target ObjectManager

  • +
  • objects_to_push – List of object IDs to upload.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote, FILE +to store them in a directory that can be accessed from the client and HTTP to upload them to HTTP.

  • +
  • handler_params – For HTTP, a dictionary &lbrace;“username”: username, “password”, password&rbrace;. For FILE, +a dictionary &lbrace;“path”: path&rbrace; specifying the directory where the objects shall be saved.

  • +
+
+
Returns
+

A list of (object_id, url) that specifies all objects were uploaded (skipping objects that +already exist on the remote).

+
+
+
+ +
+ +
+
+

splitgraph.core.output module

+
+
+class splitgraph.core.output.Color
+

Bases: object

+

An enumeration of console colors

+
+
+BLUE = '\x1b[94m'
+
+ +
+
+BOLD = '\x1b[1m'
+
+ +
+
+CYAN = '\x1b[96m'
+
+ +
+
+DARKCYAN = '\x1b[36m'
+
+ +
+
+END = '\x1b[0m'
+
+ +
+
+GREEN = '\x1b[92m'
+
+ +
+
+PURPLE = '\x1b[95m'
+
+ +
+
+RED = '\x1b[91m'
+
+ +
+
+UNDERLINE = '\x1b[4m'
+
+ +
+
+YELLOW = '\x1b[93m'
+
+ +
+ +
+
+class splitgraph.core.output.ResettableStream(stream)
+

Bases: io.RawIOBase

+

Stream that supports reading from the underlying stream and resetting the position once.

+

We can’t use fseek() in this case, since we might be reading from a pipe. So, we operate +this stream in two modes. In the first mode, we mirror all reads into a separate buffer +(consuming the input stream). After the user calls reset(), we first output data from the +mirrored copy, then continue consuming the input stream (simulating seek(0).

+
+
+readable()
+

Return whether object was opened for reading.

+

If False, read() will raise OSError.

+
+ +
+
+readinto(b)
+
+ +
+
+reset()
+
+ +
+ +
+
+splitgraph.core.output.conn_string_to_dict(connection: Optional[str]) Dict[str, Any]
+
+ +
+
+splitgraph.core.output.parse_date(string: str) datetime.date
+
+ +
+
+splitgraph.core.output.parse_dt(string: str) datetime.datetime
+
+ +
+
+splitgraph.core.output.parse_repo_tag_or_hash(value, default='latest')
+
+ +
+
+splitgraph.core.output.parse_time(string: str) time.struct_time
+
+ +
+
+splitgraph.core.output.pluralise(word: str, number: int) str
+

1 banana, 2 bananas

+
+ +
+
+splitgraph.core.output.pretty_size(size: Union[int, float]) str
+

Converts a size in bytes to its string representation (e.g. 1024 -> 1KiB) +:param size: Size in bytes

+
+ +
+
+splitgraph.core.output.slugify(text: str, max_length: int = 50) str
+
+ +
+
+splitgraph.core.output.truncate_line(line: str, length: int = 80) str
+

Truncates a line to a given length, replacing the remainder with …

+
+ +
+
+splitgraph.core.output.truncate_list(items: List[Any], max_entries: int = 10) str
+

Print a list, possibly truncating it to the specified number of entries

+
+ +
+
+

splitgraph.core.registry module

+

Functions for communicating with the remote Splitgraph catalog

+
+
+splitgraph.core.registry.get_info_key(engine: PostgresEngine, key: str) Optional[str]
+

Gets a configuration key from the remote registry, used to notify the client of the registry’s capabilities.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to get

  • +
+
+
+
+ +
+
+splitgraph.core.registry.set_info_key(engine: PostgresEngine, key: str, value: Union[bool, str]) None
+

Sets a configuration value on the remote registry.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to set

  • +
  • value – New value for the key

  • +
+
+
+
+ +
+
+splitgraph.core.registry.setup_registry_mode(engine: PostgresEngine) None
+

Set up access policies/RLS:

+
    +
  • Normal users aren’t allowed to create tables/schemata (can’t do checkouts inside of a registry or +upload SG objects directly to it)

  • +
  • Normal users can’t access the splitgraph_meta schema directly: they’re only supposed to be able to +talk to it via stored procedures in splitgraph_api. Those procedures are set up with SECURITY INVOKER +(run with those users’ credentials) and what they can access is further restricted by RLS:

    +
      +
    • images/tables/tags meta tables: can only create/update/delete records where the namespace = user ID

    • +
    • objects/object_location tables: same. An object (piece of data) becomes owned by the user that creates +it and still remains so even if someone else’s image starts using it. Hence, the original owner can delete +or change it (since they control the external location they’ve uploaded it to anyway).

    • +
    +
  • +
+
+ +
+
+

splitgraph.core.repository module

+

Public API for managing images in a Splitgraph repository.

+
+
+class splitgraph.core.repository.Repository(namespace: str, repository: str, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_manager: Optional[splitgraph.core.object_manager.ObjectManager] = None)
+

Bases: object

+

Splitgraph repository API

+
+
+commit(image_hash: Optional[str] = None, comment: Optional[str] = None, snap_only: bool = False, chunk_size: Optional[int] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]]] = None, in_fragment_order: Optional[Dict[str, List[str]]] = None, overwrite: bool = False) splitgraph.core.image.Image
+

Commits all pending changes to a given repository, creating a new image.

+
+
Parameters
+
    +
  • image_hash – Hash of the commit. Chosen by random if unspecified.

  • +
  • comment – Optional comment to add to the commit.

  • +
  • snap_only – If True, will store the table as a full snapshot instead of delta compression

  • +
  • chunk_size – For tables that are stored as snapshots (new tables and where snap_only has been passed, +the table will be split into fragments of this many rows.

  • +
  • split_changeset – If True, splits the changeset into multiple fragments based on +the PK regions spanned by the current table fragments. For example, if the original table +consists of 2 fragments, first spanning rows 1-10000, second spanning rows 10001-20000 and the +change alters rows 1, 10001 and inserts a row with PK 20001, this will record the change as +3 fragments: one inheriting from the first original fragment, one inheriting from the second +and a brand new fragment. This increases the number of fragments in total but means that fewer rows +will need to be scanned to satisfy a query. +If False, the changeset will be stored as a single fragment inheriting from the last fragment in the +table.

  • +
  • extra_indexes – Dictionary of &lbrace;table: index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Dictionary of &lbrace;table: list of columns&rbrace;. If specified, will

  • +
+
+
+

sort the data inside each chunk by this/these key(s) for each table. +:param overwrite: If an object already exists, will force recreate it.

+
+
Returns
+

The newly created Image object.

+
+
+
+ +
+
+commit_engines() None
+

Commit the underlying transactions on both engines that the repository uses.

+
+ +
+
+delete(unregister: bool = True, uncheckout: bool = True) None
+

Discards all changes to a given repository and optionally all of its history, +as well as deleting the Postgres schema that it might be checked out into. +Doesn’t delete any cached physical objects.

+

After performing this operation, this object becomes invalid and must be discarded, +unless init() is called again.

+
+
Parameters
+
    +
  • unregister – Whether to purge repository history/metadata

  • +
  • uncheckout – Whether to delete the actual checked out repo. This has no effect +if the repository is backed by a registry (rather than a local engine).

  • +
+
+
+
+ +
+
+diff(table_name: str, image_1: Union[splitgraph.core.image.Image, str], image_2: Optional[Union[splitgraph.core.image.Image, str]], aggregate: bool = False) Optional[Union[bool, Tuple[int, int, int], List[Tuple[bool, Tuple]]]]
+

Compares the state of a table in different images by materializing both tables into a temporary space +and comparing them row-to-row.

+
+
Parameters
+
    +
  • table_name – Name of the table.

  • +
  • image_1 – First image hash / object. If None, uses the state of the current staging area.

  • +
  • image_2 – Second image hash / object. If None, uses the state of the current staging area.

  • +
  • aggregate – If True, returns a tuple of integers denoting added, removed and updated rows between +the two images.

  • +
+
+
Returns
+

If the table doesn’t exist in one of the images, returns True if it was added and False if it was +removed. If aggregate is True, returns the aggregation of changes as specified before. +Otherwise, returns a list of changes where each change is a tuple of +(True for added, False for removed, row contents).

+
+
+
+ +
+
+dump(stream: _io.TextIOWrapper, exclude_object_contents: bool = False) None
+

Creates an SQL dump with the metadata required for the repository and all of its objects.

+
+
Parameters
+
    +
  • stream – Stream to dump the data into.

  • +
  • exclude_object_contents – Only dump the metadata but not the actual object contents.

  • +
+
+
+
+ +
+
+classmethod from_schema(schema: str) splitgraph.core.repository.Repository
+

Convert a Postgres schema name of the format namespace/repository to a Splitgraph repository object.

+
+ +
+
+classmethod from_template(template: splitgraph.core.repository.Repository, namespace: Optional[str] = None, repository: Optional[str] = None, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None) splitgraph.core.repository.Repository
+

Create a Repository from an existing one replacing some of its attributes.

+
+ +
+
+get_all_hashes_tags() List[Tuple[Optional[str], str]]
+

Gets all tagged images and their hashes in a given repository.

+
+
Returns
+

List of (image_hash, tag)

+
+
+
+ +
+
+get_local_size() int
+

Get the actual size used by this repository’s downloaded objects.

+

This might still be double-counted if the repository shares objects +with other repositores.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+get_size() int
+

Get the physical size used by the repository’s data, counting objects that are used +by multiple images only once. This is calculated from the metadata, the on-disk +footprint might be smaller if not all of repository’s objects have been downloaded.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+has_pending_changes() bool
+

Detects if the repository has any pending changes (schema changes, table additions/deletions, content changes).

+
+ +
+
+property head: Optional[splitgraph.core.image.Image]
+

Return the HEAD image for the repository or None if the repository isn’t checked out.

+
+ +
+
+property head_strict: splitgraph.core.image.Image
+

Return the HEAD image for the repository. Raise an exception if the repository +isn’t checked out.

+
+ +
+
+images
+

A splitgraph.core.image.ImageManager instance that performs operations +(checkout, delete etc) on this repository’s images.

+
+ +
+
+import_tables(tables: Sequence[str], source_repository: splitgraph.core.repository.Repository, source_tables: Sequence[str], image_hash: Optional[str] = None, foreign_tables: bool = False, do_checkout: bool = True, target_hash: Optional[str] = None, table_queries: Optional[Sequence[bool]] = None, parent_hash: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', skip_validation: bool = False) str
+

Creates a new commit in target_repository with one or more tables linked to already-existing tables. +After this operation, the HEAD of the target repository moves to the new commit and the new tables are +materialized.

+
+
Parameters
+
    +
  • tables – If not empty, must be the list of the same length as source_tables specifying names to store +them under in the target repository.

  • +
  • source_repository – Repository to import tables from.

  • +
  • source_tables – List of tables to import. If empty, imports all tables.

  • +
  • image_hash – Image hash in the source repository to import tables from. +Uses the current source HEAD by default.

  • +
  • foreign_tables – If True, copies all source tables to create a series of new snapshots instead of +treating them as Splitgraph-versioned tables. This is useful for adding brand new tables +(for example, from an FDW-mounted table).

  • +
  • do_checkout – If False, doesn’t check out the newly created image.

  • +
  • target_hash – Hash of the new image that tables is recorded under. If None, gets chosen at random.

  • +
  • table_queries – If not [], it’s treated as a Boolean mask showing which entries in the tables list are +instead SELECT SQL queries that form the target table. The queries have to be non-schema qualified and work +only against tables in the source repository. Each target table created is the result of the respective SQL +query. This is committed as a new snapshot.

  • +
  • parent_hash – If not None, must be the hash of the image to base the new image on. +Existing tables from the parent image are preserved in the new image. If None, the current repository +HEAD is used.

  • +
  • wrapper – Override the default class for the layered querying foreign data wrapper.

  • +
  • skip_validation – Don’t validate SQL used in import statements (used by the Splitfile executor that pre-formats the SQL).

  • +
+
+
Returns
+

Hash that the new image was stored under.

+
+
+
+ +
+
+init() None
+

Initializes an empty repo with an initial commit (hash 0000…)

+
+ +
+
+materialized_table(table_name: str, image_hash: Optional[str]) Iterator[Tuple[str, str]]
+

A context manager that returns a pointer to a read-only materialized table in a given image. +The table is deleted on exit from the context manager.

+
+
Parameters
+
    +
  • table_name – Name of the table

  • +
  • image_hash – Image hash to materialize

  • +
+
+
Returns
+

(schema, table_name) where the materialized table is located.

+
+
+
+ +
+
+objects
+

A splitgraph.core.object_manager.ObjectManager instance that performs operations on +the objects on this repository’s engine (not just objects belonging to this repository).

+
+ +
+
+pull(download_all: Optional[bool] = False, overwrite_objects: bool = False, overwrite_tags: bool = False, single_image: Optional[str] = None) None
+

Synchronizes the state of the local Splitgraph repository with its upstream, optionally downloading all new +objects created on the remote.

+
+
Parameters
+
    +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download +required objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – Limit the download to a single image hash/tag.

  • +
+
+
+
+ +
+
+push(remote_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, reupload_objects: bool = False, overwrite_tags: bool = False, handler: str = 'DB', handler_options: Optional[Dict[str, Any]] = None, single_image: Optional[str] = None) splitgraph.core.repository.Repository
+

Inverse of pull: Pushes all local changes to the remote and uploads new objects.

+
+
Parameters
+
    +
  • remote_repository – Remote repository to push changes to. If not specified, the current +upstream is used.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote or S3 +to store them in an S3 bucket.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the remote repository for existing objects.

  • +
  • reupload_objects – If True, will reupload objects for which metadata is uploaded.

  • +
  • overwrite_tags – If True, will overwrite existing tags on the remote repository.

  • +
  • handler_options – Extra options to pass to the handler. For example, see +splitgraph.hooks.s3.S3ExternalObjectHandler.

  • +
  • single_image – Limit the upload to a single image hash/tag.

  • +
+
+
+
+ +
+
+rollback_engines() None
+

Rollback the underlying transactions on both engines that the repository uses.

+
+ +
+
+run_sql(sql: Union[psycopg2.sql.Composed, str], arguments: Optional[Any] = None, return_shape: splitgraph.engine.ResultShape = ResultShape.MANY_MANY) Any
+

Execute an arbitrary SQL statement inside of this repository’s checked out schema.

+
+ +
+
+set_tags(tags: Dict[str, Optional[str]]) None
+

Sets tags for multiple images.

+
+
Parameters
+

tags – List of (image_hash, tag)

+
+
+
+ +
+
+to_schema() str
+

Returns the engine schema that this repository gets checked out into.

+
+ +
+
+uncheckout(force: bool = False) None
+

Deletes the schema that the repository is checked out into

+
+
Parameters
+

force – Discards all pending changes to the schema.

+
+
+
+ +
+
+property upstream
+

The remote upstream repository that this local repository tracks.

+
+ +
+ +
+
+splitgraph.core.repository.clone(remote_repository: Union[splitgraph.core.repository.Repository, str], local_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, overwrite_tags: bool = False, download_all: Optional[bool] = False, single_image: Optional[str] = None) splitgraph.core.repository.Repository
+

Clones a remote Splitgraph repository or synchronizes remote changes with the local ones.

+

If the target repository has no set upstream engine, the source repository becomes its upstream.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object to clone or the repository’s name. If a name is passed, +the repository will be looked up on the current lookup path in order to find the engine the repository +belongs to.

  • +
  • local_repository – Local repository to clone into. If None, uses the same name as the remote.

  • +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download required +objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – If set, only get a single image with this hash/tag from the source.

  • +
+
+
Returns
+

A locally cloned Repository object.

+
+
+
+ +
+
+splitgraph.core.repository.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.repository.import_table_from_remote(remote_repository: splitgraph.core.repository.Repository, remote_tables: List[str], remote_image_hash: str, target_repository: splitgraph.core.repository.Repository, target_tables: List[Any], target_hash: Optional[str] = None) None
+

Shorthand for importing one or more tables from a yet-uncloned remote. Here, the remote image hash is required, +as otherwise we aren’t necessarily able to determine what the remote head is.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object

  • +
  • remote_tables – List of remote tables to import

  • +
  • remote_image_hash – Image hash to import the tables from

  • +
  • target_repository – Target repository to import the tables to

  • +
  • target_tables – Target table aliases

  • +
  • target_hash – Hash of the image that’s created with the import. Default random.

  • +
+
+
+
+ +
+
+splitgraph.core.repository.table_exists_at(repository: splitgraph.core.repository.Repository, table_name: str, image: Optional[splitgraph.core.image.Image] = None) bool
+

Determines whether a given table exists in a Splitgraph image without checking it out. If image_hash is None, +determines whether the table exists in the current staging area.

+
+ +
+
+

splitgraph.core.server module

+

Routines that are run inside of the engine, +here so that they can get type- and syntax-checked.

+

When inside of an LQFDW shim, these are called directly by the Splitgraph core code +to avoid a redundant connection to the engine.

+
+
+splitgraph.core.server.delete_object_files(object_id: str)
+
+ +
+
+splitgraph.core.server.download_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.get_object_schema(object_id: str) str
+
+ +
+
+splitgraph.core.server.get_object_size(object_id: str) int
+
+ +
+
+splitgraph.core.server.list_objects() List[str]
+
+ +
+
+splitgraph.core.server.object_exists(object_id: str) bool
+
+ +
+
+splitgraph.core.server.rename_object_files(old_object_id: str, new_object_id: str)
+
+ +
+
+splitgraph.core.server.set_object_schema(object_id: str, schema: str)
+
+ +
+
+splitgraph.core.server.upload_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.verify(url: str)
+
+ +
+
+

splitgraph.core.table module

+

Table metadata-related classes.

+
+
+class splitgraph.core.table.QueryPlan(table: splitgraph.core.table.Table, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str])
+

Bases: object

+

Represents the initial query plan (fragments to query) for given columns and +qualifiers.

+
+ +
+
+class splitgraph.core.table.Table(repository: Repository, image: Image, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+

Bases: object

+

Represents a Splitgraph table in a given image. Shouldn’t be created directly, use Table-loading +methods in the splitgraph.core.image.Image class instead.

+
+
+get_length() int
+

Get the number of rows in this table.

+

This might be smaller than the total number of rows in all objects belonging to this +table as some objects might overwrite each other.

+
+
Returns
+

Number of rows in table

+
+
+
+ +
+
+get_query_plan(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str], use_cache: bool = True) splitgraph.core.table.QueryPlan
+

Start planning a query (preliminary steps before object downloading, +like qualifier filtering).

+
+
Parameters
+
    +
  • quals – Qualifiers in CNF form

  • +
  • columns – List of columns

  • +
  • use_cache – If True, will fetch the plan from the cache for the same qualifiers and columns.

  • +
+
+
Returns
+

QueryPlan

+
+
+
+ +
+
+get_size() int
+

Get the physical size used by the table’s objects (including those shared with other tables).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of table’s +objects have been downloaded.

+
+
Returns
+

Size of the table in bytes.

+
+
+
+ +
+
+materialize(destination: str, destination_schema: Optional[str] = None, lq_server: Optional[str] = None, temporary: bool = False) None
+

Materializes a Splitgraph table in the target schema as a normal Postgres table, potentially downloading all +required objects and using them to reconstruct the table.

+
+
Parameters
+
    +
  • destination – Name of the destination table.

  • +
  • destination_schema – Name of the destination schema.

  • +
  • lq_server – If set, sets up a layered querying FDW for the table instead using this foreign server.

  • +
+
+
+
+ +
+
+query(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])
+

Run a read-only query against this table without materializing it.

+

This is a wrapper around query_lazy() that force evaluates the results which +might mean more fragments being materialized that aren’t needed.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

List of dictionaries of results

+
+
+
+ +
+
+query_indirect(columns: List[str], quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]]) Tuple[Iterator[bytes], Callable, splitgraph.core.table.QueryPlan]
+

Run a read-only query against this table without materializing it. Instead of +actual results, this returns a generator of SQL queries that the caller can use +to get the results as well as a callback that the caller has to run after they’re +done consuming the results.

+

In particular, the query generator will prefer returning direct queries to +Splitgraph objects and only when those are exhausted will it start materializing +delta-compressed fragments.

+

This is an advanced method: you probably want to call table.query().

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of queries (bytes), a callback and a query plan object (containing stats +that are fully populated after the callback has been called to end the query).

+
+
+
+ +
+
+query_lazy(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]]) Iterator[Iterator[Dict[str, Any]]]
+

Run a read-only query against this table without materializing it.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of dictionaries of results.

+
+
+
+ +
+
+reindex(extra_indexes: Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]], raise_on_patch_objects=True) List[str]
+

Run extra indexes on all objects in this table and update their metadata. +This only works on objects that don’t have any deletions or upserts (have a deletion hash of 000000…).

+
+
Parameters
+
    +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • raise_on_patch_objects – If True, will raise an exception if any objects in the table +overwrite any other objects. If False, will log a warning but will reindex all non-patch objects.

  • +
+
+
+

:returns List of objects that were reindexed.

+
+ +
+ +
+
+splitgraph.core.table.merge_index_data(current_index: Dict[str, Any], new_index: Dict[str, Any])
+
+ +
+
+

splitgraph.core.types module

+
+
+class splitgraph.core.types.Comparable
+

Bases: object

+
+ +
+
+class splitgraph.core.types.MountError(*, table_name: str, error: str, error_text: str)
+

Bases: pydantic.main.BaseModel

+
+
+error: str
+
+ +
+
+error_text: str
+
+ +
+
+table_name: str
+
+ +
+ +
+
+class splitgraph.core.types.TableColumn(ordinal, name, pg_type, is_pk, comment)
+

Bases: tuple

+
+
+comment: Optional[str]
+

Alias for field number 4

+
+ +
+
+is_pk: bool
+

Alias for field number 3

+
+ +
+
+name: str
+

Alias for field number 1

+
+ +
+
+ordinal: int
+

Alias for field number 0

+
+ +
+
+pg_type: str
+

Alias for field number 2

+
+ +
+ +
+
+splitgraph.core.types.dict_to_table_schema_params(tables: Dict[str, ExternalTableRequest]) Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]
+
+ +
+
+splitgraph.core.types.get_table_params(table_info: Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]], table_name: str) TableParams
+
+ +
+
+splitgraph.core.types.table_schema_params_to_dict(tables: Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]) Dict[str, Dict[str, Dict[str, Any]]]
+
+ +
+
+splitgraph.core.types.unwrap(result: Dict[str, Union[splitgraph.core.types.MountError, splitgraph.core.types.T]]) Tuple[Dict[str, splitgraph.core.types.T], Dict[str, splitgraph.core.types.MountError]]
+
+ +
+
+

Module contents

+

Core Splitgraph functionality: versioning and sharing tables.

+

The main point of interaction with the Splitgraph API is a splitgraph.core.repository.Repository object +representing a local or a remote Splitgraph repository. Repositories can be created using one of the +following methods:

+
+
    +
  • Directly by invoking Repository(namespace, name, engine) where engine is the engine that the repository +belongs to (that can be gotten with get_engine(engine_name). If the created repository doesn’t actually exist +on the engine, it must first be initialized with repository.init().

  • +
  • By using splitgraph.core.engine.lookup_repository() which will search for the repository on the current +lookup path.

  • +
+
+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.core.sql.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.core.sql.mdx new file mode 100644 index 00000000..b92be4a2 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.core.sql.mdx @@ -0,0 +1,118 @@ + + + +export const meta = { + title: "splitgraph.core.sql package", + id: "splitgraph.core.sql package" +}; + +
+ +
+

Module contents

+

Routines for managing SQL statements

+
+
+splitgraph.core.sql.insert(table: str, columns: Sequence[str], schema: str = 'splitgraph_meta') psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to insert as a list of strings.

  • +
  • schema – Schema that contains the table

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query (parameterized)

+
+
+
+ +
+
+splitgraph.core.sql.prepare_splitfile_sql(sql: str, image_mapper: Callable) Tuple[str, str]
+

Transform an SQL query to prepare for it to be used in a Splitfile SQL command and validate it. +The rules are:

+
+
    +
  • Only basic DDL (CREATE/ALTER/DROP table) and DML (SELECT/INSERT/UPDATE/DELETE) are permitted.

  • +
  • All tables must be either non-schema qualified (the statement is run with search_path

  • +
+

set to the single schema that a Splitgraph image is checked out into) or have schemata of +format namespace/repository:hash_or_tag. In the second case, the schema is rewritten to point +at a temporary mount of the Splitgraph image.

+
+
+
Parameters
+
    +
  • sql – SQL query

  • +
  • image_mapper – Takes in an image and gives back the schema it should be rewritten to +(for the purposes of execution) and the canonical form of the image.

  • +
+
+
Returns
+

Transformed form of the SQL with substituted schema shims for Splitfile execution +and the canonical form (with e.g. tags resolved into at-the-time full image hashes)

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+
+splitgraph.core.sql.recover_original_schema_name(sql: str, schema_name: str) str
+

Postgres truncates identifiers to 63 characters at parse time and, as pglast +uses bits of PG to parse queries, image names like noaa/climate:64_chars_of_hash +get truncated which can cause ambiguities and issues in provenance. We can’t +get pglast to give us back the full identifier, but we can try and figure out +what it used to be and patch the AST to have it again.

+
+ +
+
+splitgraph.core.sql.select(table: str, columns: str = '*', where: str = '', schema: str = 'splitgraph_meta', table_args: Optional[str] = None) psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to select as a string. WARN: concatenated directly without any formatting.

  • +
  • where – If specified, added to the query with a “WHERE” keyword. WARN also concatenated directly.

  • +
  • schema – Defaults to SPLITGRAPH_META_SCHEMA.

  • +
  • table_args – If specified, appends to the FROM clause after the table specification, +for example, SELECT * FROM “splitgraph_api”.”get_images” (%s, %s) …

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query.

+
+
+
+ +
+
+splitgraph.core.sql.validate_import_sql(sql: str) str
+

Check an SQL query to see if it can be safely used in an IMPORT statement +(e.g. FROM noaa/climate:latest IMPORT &lbrace;SELECT * FROM rainfall WHERE state = ‘AZ’&rbrace; AS rainfall. +In this case, only a single SELECT statement is supported.

+
+
Parameters
+

sql – SQL query

+
+
Returns
+

Canonical (formatted) form of the SQL statement

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.engine.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.engine.mdx new file mode 100644 index 00000000..7d5d6f6c --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.engine.mdx @@ -0,0 +1,565 @@ + + + +export const meta = { + title: "splitgraph.engine package", + id: "splitgraph.engine package" +}; + +
+ +
+

Subpackages

+ +
+
+

Module contents

+

Defines the interface for a Splitgraph engine (a backing database), including running basic SQL commands, +tracking tables for changes and uploading/downloading tables to other remote engines.

+

By default, Splitgraph is backed by Postgres: see splitgraph.engine.postgres for an example of how to +implement a different engine.

+
+
+class splitgraph.engine.ChangeEngine
+

Bases: splitgraph.engine.SQLEngine, abc.ABC

+

An SQL engine that can perform change tracking on a set of tables.

+
+
+discard_pending_changes(schema, table=None)
+

Discard recorded pending changes for a tracked table or the whole schema

+
+ +
+
+get_change_key(schema: str, table: str) List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_changed_tables(schema)
+

List tracked tables that have pending changes

+
+
Parameters
+

schema – Schema to check for changes

+
+
Returns
+

List of tables with changed contents

+
+
+
+ +
+
+get_pending_changes(schema, table, aggregate=False)
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: tuple with numbers of (added_rows, removed_rows, updated_rows). +If aggregate is False: A changeset. The changeset is a list of +(pk, action (0 for Insert, 1 for Delete, 2 for Update), action_data) +where action_data is None for Delete and &lbrace;‘c’: [column_names], ‘v’: [column_values]&rbrace; that +have been inserted/updated otherwise.

+
+
+
+ +
+
+get_tracked_tables()
+
+
Returns
+

A list of (table_schema, table_name) that the engine currently tracks for changes

+
+
+
+ +
+
+has_pending_changes(schema)
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables)
+

Start engine-specific change tracking on a list of tables.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+
+untrack_tables(tables)
+

Stop engine-specific change tracking on a list of tables and delete any pending changes.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+ +
+
+class splitgraph.engine.ObjectEngine
+

Bases: object

+

Routines for storing/applying objects as well as sharing them with other engines.

+
+
+apply_fragments(objects, target_schema, target_table, extra_quals=None, extra_qual_args=None, schema_spec=None, progress_every: Optional[int] = None)
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids)
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects, remote_engine)
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id, stream, schema)
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+get_object_schema(object_id)
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id)
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+store_fragment(inserted, deleted, schema, table, source_schema, source_table, source_schema_spec)
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args: Optional[Sequence[Any]], overwrite: bool)
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+upload_objects(objects, remote_engine)
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.ResultShape(value)
+

Bases: enum.Enum

+

Shape that the result of a query will be coerced to

+
+
+MANY_MANY = 4
+
+ +
+
+MANY_ONE = 3
+
+ +
+
+NONE = 0
+
+ +
+
+ONE_MANY = 2
+
+ +
+
+ONE_ONE = 1
+
+ +
+ +
+
+class splitgraph.engine.SQLEngine
+

Bases: abc.ABC

+

Abstraction for a Splitgraph SQL backend. Requires any overriding classes to implement run_sql as well as +a few other functions. Together with the information_schema (part of the SQL standard), this class uses those +functions to implement some basic database management methods like listing, deleting, creating, dumping +and loading tables.

+
+
+close()
+

Commit and close the engine’s backing connection

+
+ +
+
+commit()
+

Commit the engine’s backing connection

+
+ +
+
+copy_table(source_schema: str, source_table: str, target_schema: str, target_table: str, with_pk_constraints: bool = True) None
+

Copy a table in the same engine, optionally applying primary key constraints as well.

+
+ +
+
+create_schema(schema: str) None
+

Create a schema if it doesn’t exist

+
+ +
+
+create_table(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False) None
+

Creates a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
+
+ +
+
+delete_schema(schema: str) None
+

Delete a schema if it exists, including all the tables in it.

+
+ +
+
+delete_table(schema: str, table: str) None
+

Drop a table from a schema if it exists

+
+ +
+
+static dump_table_creation(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False) Tuple[psycopg2.sql.Composed, Tuple]
+

Dumps the DDL for a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
Returns
+

An SQL statement that reconstructs the table schema + args to be mogrified into it.

+
+
+
+ +
+
+dump_table_sql(schema, table_name, stream, columns='*', where='', where_args=None, target_schema=None, target_table=None)
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_all_tables(schema: str) List[str]
+

Get all tables in a given schema.

+
+ +
+
+get_full_table_schema(schema: str, table_name: str) List[splitgraph.core.types.TableColumn]
+

Generates a list of (column ordinal, name, data type, is_pk, column comment), +used to detect schema changes like columns being dropped/added/renamed or type changes.

+

NB this doesn’t work for temporary tables (pg_temp) and returns an empty schema.

+
+ +
+
+get_primary_keys(schema, table)
+

Get a list of (column_name, column_type) denoting the primary keys of a given table.

+
+ +
+
+get_table_type(schema: str, table: str) Optional[str]
+

Get the type of the table (BASE or FOREIGN)

+
+ +
+
+initialize()
+

Does any required initialization of the engine

+
+ +
+
+lock_table(schema, table)
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback()
+

Rollback the engine’s backing connection

+
+ +
+
+run_sql(statement, arguments=None, return_shape=ResultShape.MANY_MANY, named=False)
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement, arguments, schema=None)
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+run_sql_in(schema: str, sql: Union[psycopg2.sql.Composed, str], arguments: None = None, return_shape: splitgraph.engine.ResultShape = ResultShape.MANY_MANY) Any
+

Executes a non-schema-qualified query against a specific schema.

+
+
Parameters
+
    +
  • schema – Schema to run the query in

  • +
  • sql – Query

  • +
  • arguments – Query arguments

  • +
  • return_shape – ReturnShape to coerce the result into.

  • +
+
+
+
+ +
+
+savepoint(name: str) Iterator[None]
+

At the beginning of this context manager, a savepoint is initialized and any database +error that occurs in run_sql results in a rollback to this savepoint rather than the +rollback of the whole transaction. At exit, the savepoint is released.

+
+ +
+
+schema_exists(schema: str) bool
+

Check if a schema exists on the engine.

+
+
Parameters
+

schema – Schema name

+
+
+
+ +
+
+table_exists(schema: str, table_name: str) bool
+

Check if a table exists on the engine.

+
+
Parameters
+
    +
  • schema – Schema name

  • +
  • table_name – Table name

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.SavepointStack
+

Bases: _thread._local

+
+ +
+
+splitgraph.engine.get_engine(name: Optional[str] = None, use_socket: bool = False, use_fdw_params: bool = False, autocommit: bool = False) PostgresEngine
+

Get the current global engine or a named remote engine

+
+
Parameters
+
    +
  • name – Name of the remote engine as specified in the config. If None, the current global engine +is returned.

  • +
  • use_socket – Use a local UNIX socket instead of PG_HOST, PG_PORT for LOCAL engine connections.

  • +
  • use_fdw_params – Use the _FDW connection parameters (SG_ENGINE_FDW_HOST/PORT). By default, +will infer from the global splitgraph.config.IN_FDW flag.

  • +
  • autocommit – If True, the engine will not open SQL transactions implicitly.

  • +
+
+
+
+ +
+
+splitgraph.engine.set_engine(engine: PostgresEngine) None
+

Switch the global engine to a different one.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.switch_engine(engine: PostgresEngine) Iterator[None]
+

Switch the global engine to a different one. The engine will +get switched back on exit from the context manager.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.validate_type(t: str) str
+
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.engine.postgres.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.engine.postgres.mdx new file mode 100644 index 00000000..c4ed7b67 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.engine.postgres.mdx @@ -0,0 +1,456 @@ + + + +export const meta = { + title: "splitgraph.engine.postgres package", + id: "splitgraph.engine.postgres package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.engine.postgres.engine module

+

Default Splitgraph engine: uses PostgreSQL to store metadata and actual objects and an audit stored procedure +to track changes, as well as the Postgres FDW interface to upload/download objects to/from other Postgres engines.

+
+
+class splitgraph.engine.postgres.engine.AuditTriggerChangeEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.PsycopgEngine, splitgraph.engine.ChangeEngine

+

Change tracking based on an audit trigger stored procedure

+
+
+discard_pending_changes(schema: str, table: Optional[str] = None) None
+

Discard recorded pending changes for a tracked schema / table

+
+ +
+
+get_changed_tables(schema: str) List[str]
+

Get list of tables that have changed content

+
+ +
+
+get_pending_changes(schema: str, table: str, aggregate: bool = False) Union[List[Tuple[int, int]], List[Tuple[Tuple[str, ...], bool, Dict[str, Any], Dict[str, Any]]]]
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: List of tuples of (change_type, number of rows). +If aggregate is False: List of (primary_key, change_type, change_data)

+
+
+
+ +
+
+get_tracked_tables() List[Tuple[str, str]]
+

Return a list of tables that the audit trigger is working on.

+
+ +
+
+has_pending_changes(schema: str) bool
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables: List[Tuple[str, str]]) None
+

Install the audit trigger on the required tables

+
+ +
+
+untrack_tables(tables: List[Tuple[str, str]]) None
+

Remove triggers from tables and delete their pending changes

+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PostgresEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.AuditTriggerChangeEngine, splitgraph.engine.ObjectEngine

+

An implementation of the Postgres engine for Splitgraph

+
+
+apply_fragments(objects: List[Tuple[str, str]], target_schema: str, target_table: str, extra_quals: Optional[psycopg2.sql.Composed] = None, extra_qual_args: Optional[Tuple[Any, ...]] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, progress_every: Optional[int] = None) None
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids: List[str]) None
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine) List[str]
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id: str, stream: _io.TextIOWrapper, schema: str) None
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+dump_object_creation(object_id: str, schema: str, table: Optional[str] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, if_not_exists: bool = False) bytes
+

Generate the SQL that remounts a foreign table pointing to a Splitgraph object.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • schema – Schema to create the table in

  • +
  • table – Name of the table to mount

  • +
  • schema_spec – Schema of the table

  • +
  • if_not_exists – Add IF NOT EXISTS to the DDL

  • +
+
+
Returns
+

SQL in bytes format.

+
+
+
+ +
+
+get_change_key(schema: str, table: str) List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_object_schema(object_id: str) List[splitgraph.core.types.TableColumn]
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id: str) int
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+mount_object(object_id: str, table: None = None, schema: str = 'splitgraph_meta', schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None) None
+

Mount an object from local storage as a foreign table.

+
+
Parameters
+
    +
  • object_id – ID of the object

  • +
  • table – Table to mount the object into

  • +
  • schema – Schema to mount the object into

  • +
  • schema_spec – Schema of the object.

  • +
+
+
+
+ +
+
+rename_object(old_object_id: str, new_object_id: str)
+
+ +
+
+store_fragment(inserted: Any, deleted: Any, schema: str, table: str, source_schema: str, source_table: str, source_schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None) None
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args=None, overwrite=False) None
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+sync_object_mounts() None
+

Scan through local object storage and synchronize it with the foreign tables in +splitgraph_meta (unmounting non-existing objects and mounting existing ones).

+
+ +
+
+unmount_objects(object_ids: List[str]) None
+

Unmount objects from splitgraph_meta (this doesn’t delete the physical files.

+
+ +
+
+upload_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine) None
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PsycopgEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.SQLEngine

+

Postgres SQL engine backed by a Psycopg connection.

+
+
+close() None
+

Commit and close the engine’s backing connection

+
+ +
+
+close_others() None
+

Close and release all other connections to the connection pool.

+
+ +
+
+commit() None
+

Commit the engine’s backing connection

+
+ +
+
+property connection: Connection
+

Engine-internal Psycopg connection.

+
+ +
+
+copy_cursor()
+

Return a cursor that can be used for copy_expert operations

+
+ +
+
+delete_database(database: str) None
+

Helper function to drop a database using the admin connection

+
+
Parameters
+

database – Database name to drop

+
+
+
+ +
+
+dump_table_sql(schema: str, table_name: str, stream: _io.TextIOWrapper, columns: str = '*', where: str = '', where_args: Optional[Union[List[str], Tuple[str, str]]] = None, target_schema: Optional[str] = None, target_table: Optional[str] = None) None
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_primary_keys(schema: str, table: str) List[Tuple[str, str]]
+

Inspects the Postgres information_schema to get the primary keys for a given table.

+
+ +
+
+in_fdw
+

List of notices issued by the server during the previous execution of run_sql.

+
+ +
+
+initialize(skip_object_handling: bool = False, skip_create_database: bool = False) None
+

Create the Splitgraph Postgres database and install the audit trigger

+
+
Parameters
+
    +
  • skip_object_handling – If True, skips installation of +audit triggers and other object management routines for engines +that don’t need change tracking or checkouts.

  • +
  • skip_create_database – Don’t create the Splitgraph database

  • +
+
+
+
+ +
+
+lock_table(schema: str, table: str) None
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback() None
+

Rollback the engine’s backing connection

+
+ +
+
+run_api_call(call: str, *args, schema: str = 'splitgraph_api') Any
+
+ +
+
+run_api_call_batch(call: str, argslist, schema: str = 'splitgraph_api')
+
+ +
+
+run_chunked_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Sequence[Any], return_shape: Optional[splitgraph.engine.ResultShape] = ResultShape.MANY_MANY, chunk_size: int = 1000, chunk_position: int = - 1) Any
+

Because the Splitgraph API has a request size limitation, certain +SQL calls with variadic arguments are going to be too long to fit that. This function +runs an SQL query against a set of broken up arguments and returns the combined result.

+
+ +
+
+run_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Optional[Sequence[Any]] = None, return_shape: Optional[splitgraph.engine.ResultShape] = ResultShape.MANY_MANY, named: bool = False) Any
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement: Union[psycopg2.sql.Composed, str], arguments: Any, schema: Optional[str] = None, max_size=261000) None
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+property splitgraph_version: Optional[str]
+

Returns the version of the Splitgraph library installed on the engine +and by association the version of the engine itself.

+
+ +
+ +
+
+splitgraph.engine.postgres.engine.add_ud_flag_column(table_schema: List[splitgraph.core.types.TableColumn]) List[splitgraph.core.types.TableColumn]
+
+ +
+
+splitgraph.engine.postgres.engine.chunk(sequence: Sequence[splitgraph.engine.postgres.engine.T], chunk_size: int = 1000) Iterator[List[splitgraph.engine.postgres.engine.T]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_change_key(schema_spec: List[splitgraph.core.types.TableColumn]) List[Tuple[str, str]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_conn_str(conn_params: Dict[str, Optional[str]]) str
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.hooks.data_source.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.hooks.data_source.mdx new file mode 100644 index 00000000..d029fb11 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.hooks.data_source.mdx @@ -0,0 +1,537 @@ + + + +export const meta = { + title: "splitgraph.hooks.data_source package", + id: "splitgraph.hooks.data_source package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.hooks.data_source.base module

+
+
+class splitgraph.hooks.data_source.base.DataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: abc.ABC

+
+
+credentials_schema: Dict[str, Any] = &lbrace;&rbrace;
+
+ +
+
+abstract classmethod get_description() str
+
+ +
+
+abstract classmethod get_name() str
+
+ +
+
+get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
+

Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

+
+ +
+
+abstract introspect() IntrospectionResult
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;&rbrace;
+
+ +
+
+supports_load = False
+
+ +
+
+supports_mount = False
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.LoadableDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+load(repository: Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+
+supports_load = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.MountableDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+abstract mount(schema: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, overwrite: bool = True) Optional[List[splitgraph.core.types.MountError]]
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+supports_mount = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.SyncableDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.LoadableDataSource, splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+supports_load = True
+
+ +
+
+supports_sync = True
+
+ +
+
+sync(repository: Repository, image_hash: Optional[str], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+ +
+
+splitgraph.hooks.data_source.base.get_ingestion_state(repository: Repository, image_hash: Optional[str]) Optional[SyncState]
+
+ +
+
+splitgraph.hooks.data_source.base.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.hooks.data_source.base.prepare_new_image(repository: Repository, hash_or_tag: Optional[str], comment: str = 'Singer tap ingestion') Tuple[Optional[splitgraph.core.image.Image], str]
+
+ +
+
+

splitgraph.hooks.data_source.fdw module

+
+
+class splitgraph.hooks.data_source.fdw.ElasticSearchDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount an ElasticSearch instance.\n\nMount a set of tables proxying to a remote ElasticSearch index.\n\nThis uses a fork of postgres-elasticsearch-fdw behind the scenes. You can add a column\n`query` to your table and set it as `query_column` to pass advanced ES queries and aggregations.\nFor example:\n\n```\nsgr mount elasticsearch target_schema -c elasticsearch:9200 -o@- <<EOF\n    &lbrace;\n      "tables": &lbrace;\n        "table_1": &lbrace;\n          "schema": &lbrace;\n            "id": "text",\n            "@timestamp": "timestamp",\n            "query": "text",\n            "col_1": "text",\n            "col_2": "boolean"\n          &rbrace;,\n          "options": &lbrace;\n              "index": "index-pattern*",\n              "rowid_column": "id",\n              "query_column": "query"\n          &rbrace;\n        &rbrace;\n      &rbrace;\n    &rbrace;\nEOF\n```\n'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': ['string', 'null']&rbrace;, 'username': &lbrace;'type': ['string', 'null']&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'index': &lbrace;'description': 'ES index name or pattern to use, for example, "events-*"', 'type': 'string'&rbrace;, 'query_column': &lbrace;'description': 'Name of the column to use to pass queries in', 'type': 'string'&rbrace;, 'score_column': &lbrace;'description': 'Name of the column with the document score', 'type': 'string'&rbrace;, 'scroll_duration': &lbrace;'description': 'How long to hold the scroll context open for, default 10m', 'type': 'string'&rbrace;, 'scroll_size': &lbrace;'description': 'Fetch size, default 1000', 'type': 'integer'&rbrace;, 'type': &lbrace;'description': 'Pre-ES7 doc_type, not required in ES7 or later', 'type': 'string'&rbrace;&rbrace;, 'required': ['index'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.MountableDataSource, splitgraph.hooks.data_source.base.LoadableDataSource, abc.ABC

+
+
+commandline_help: str = ''
+
+ +
+
+commandline_kwargs_help: str = ''
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs) splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+abstract get_fdw_name()
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options() Mapping[str, str]
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
+
+ +
+
+get_table_schema(table_name: str, table_schema: List[splitgraph.core.types.TableColumn]) List[splitgraph.core.types.TableColumn]
+
+ +
+
+get_user_options() Mapping[str, str]
+
+ +
+
+introspect() IntrospectionResult
+
+ +
+
+mount(schema: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, overwrite: bool = True) Optional[List[splitgraph.core.types.MountError]]
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+preview(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]]) PreviewResult
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MongoDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Mongo database.\n\nMounts one or more collections on a remote Mongo database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'tables: A dictionary of form\n```\n&lbrace;\n    "table_name": &lbrace;\n        "schema": &lbrace;"col1": "type1"...&rbrace;,\n        "options": &lbrace;"database": <dbname>, "collection": <collection>&rbrace;\n    &rbrace;\n&rbrace;\n```\n'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_server_options()
+
+ +
+
+get_table_schema(table_name, table_schema)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'collection': &lbrace;'type': 'string'&rbrace;, 'database': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['database', 'collection'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MySQLDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a MySQL database.\n\nMounts a schema on a remote MySQL database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'dbname: Remote MySQL database name (required)\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n        '
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'type': 'string'&rbrace;, 'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.PostgreSQLDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Postgres database.\n\nMounts a schema on a remote Postgres database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'dbname: Database name (required)\nremote_schema: Remote schema name (required)\nextra_server_args: Dictionary of extra arguments to pass to the foreign server\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n    '
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'description': 'Database name', 'type': 'string'&rbrace;, 'host': &lbrace;'description': 'Remote hostname', 'type': 'string'&rbrace;, 'port': &lbrace;'description': 'Port', 'type': 'integer'&rbrace;, 'remote_schema': &lbrace;'description': 'Remote schema name', 'type': 'string'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname', 'remote_schema'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.hooks.data_source.fdw.create_foreign_table(schema: str, server: str, table_name: str, schema_spec: List[splitgraph.core.types.TableColumn], extra_options: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.hooks.data_source.fdw.import_foreign_schema(engine: PsycopgEngine, mountpoint: str, remote_schema: str, server_id: str, tables: List[str], options: Optional[Dict[str, str]] = None) List[splitgraph.core.types.MountError]
+
+ +
+
+splitgraph.hooks.data_source.fdw.init_fdw(engine: PsycopgEngine, server_id: str, wrapper: str, server_options: Optional[Mapping[str, Optional[str]]] = None, user_options: Optional[Mapping[str, str]] = None, role: Optional[str] = None, overwrite: bool = True) None
+

Sets up a foreign data server on the engine.

+
+
Parameters
+
    +
  • engine – PostgresEngine

  • +
  • server_id – Name to call the foreign server, must be unique. Will be deleted if exists.

  • +
  • wrapper – Name of the foreign data wrapper (must be installed as an extension on the engine)

  • +
  • server_options – Dictionary of FDW options

  • +
  • user_options – Dictionary of user options

  • +
  • role – The name of the role for which the user mapping is created; defaults to public.

  • +
  • overwrite – If the server already exists, delete and recreate it.

  • +
+
+
+
+ +
+
+

Module contents

+
+
+splitgraph.hooks.data_source.get_data_source(data_source: str) Type[splitgraph.hooks.data_source.base.DataSource]
+

Returns a class for a given data source

+
+ +
+
+splitgraph.hooks.data_source.get_data_sources() List[str]
+

Returns the names of all registered data sources.

+
+ +
+
+splitgraph.hooks.data_source.merge_jsonschema(left: Dict[str, Any], right: Dict[str, Any]) Dict[str, Any]
+
+ +
+
+splitgraph.hooks.data_source.register_data_source(name: str, data_source_class: Type[splitgraph.hooks.data_source.base.DataSource]) None
+

Returns a data source under a given name.

+
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.hooks.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.hooks.mdx new file mode 100644 index 00000000..b377c06c --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.hooks.mdx @@ -0,0 +1,366 @@ + + + +export const meta = { + title: "splitgraph.hooks package", + id: "splitgraph.hooks package" +}; + +
+ +
+

Subpackages

+ +
+
+

Submodules

+
+
+

splitgraph.hooks.external_objects module

+

Hooks for registering handlers to upload/download objects from external locations into Splitgraph’s cache.

+
+
+class splitgraph.hooks.external_objects.ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: object

+

Framework for allowing to dump objects from the Splitgraph cache to an external location. This allows +the objects to be stored somewhere other than the actual remote engine.

+

External object handlers must extend this class and be registered in the Splitgraph config.

+

For an example of how this can be used, see splitgraph.hooks.s3: it’s a handler allowing objects to be +uploaded to S3/S3-compatible host using the Minio API. It’s registered in the config as follows:

+
[external_handlers]
+S3=splitgraph.hooks.s3.S3ExternalObjectHandler
+
+
+

The protocol and the URLs returned by this handler are stored in splitgraph_meta.external_objects +and used to download the objects back into the Splitgraph cache when they are needed.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine) Sequence[str]
+

Download objects from the external location into the Splitgraph cache.

+
+
Parameters
+
    +
  • objects – List of tuples (object_id, object_url) that this handler had previosly +uploaded the objects to.

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of object IDs that have been successfully downloaded.

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine) Sequence[Tuple[str, str]]
+

Upload objects from the Splitgraph cache to an external location

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of successfully uploaded object IDs and URLs they can be found at.

+
+
+
+ +
+ +
+
+splitgraph.hooks.external_objects.get_external_object_handler(name: str, handler_params: Dict[Any, Any]) splitgraph.hooks.external_objects.ExternalObjectHandler
+

Load an external protocol handler by its name, initializing it with optional parameters.

+
+ +
+
+splitgraph.hooks.external_objects.register_upload_download_handler(name: str, handler_class: Callable[[...], splitgraph.hooks.external_objects.ExternalObjectHandler]) None
+

Register an external protocol handler. See the docstring for get_upload_download_handler for the required +signatures of the handler functions.

+
+ +
+
+

splitgraph.hooks.mount_handlers module

+

Extra wrapper code for mount handlers

+
+
+splitgraph.hooks.mount_handlers.mount(mountpoint: str, mount_handler: str, handler_kwargs: Dict[str, Any], overwrite: bool = True, tables: Optional[TableInfo] = None) None
+

Mounts a foreign database via an FDW (without creating new Splitgraph objects)

+
+
Parameters
+
    +
  • mountpoint – Mountpoint to import the new tables into.

  • +
  • mount_handler – The type of the mounted database.

  • +
  • handler_kwargs – Dictionary of options to pass to the mount handler.

  • +
  • overwrite – Delete the foreign server if it already exists. Used by mount_postgres for data pulls.

  • +
  • tables – List of tables to mount or their schemas

  • +
+
+
+
+ +
+
+splitgraph.hooks.mount_handlers.mount_postgres(mountpoint, **kwargs) None
+

Mount a Postgres database.

+

Mounts a schema on a remote Postgres database as a set of foreign tables locally. +

+
+
Parameters
+
    +
  • mountpoint – Schema to mount the remote into.

  • +
  • server – Database hostname.

  • +
  • port – Port the Postgres server is running on.

  • +
  • username – A read-only user that the database will be accessed as.

  • +
  • password – Password for the read-only user.

  • +
  • dbname – Remote database name.

  • +
  • remote_schema – Remote schema name.

  • +
  • extra_server_args – Dictionary of extra arguments to pass to the foreign server

  • +
  • tables – Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.

  • +
+
+
+

If a dictionary, must have the format &lbrace;“table_name”: &lbrace;“col_1”: “type_1”, …&rbrace;&rbrace;.

+
+ +
+
+

splitgraph.hooks.s3 module

+

Plugin for uploading Splitgraph objects from the cache to an external S3-like object store

+
+
+class splitgraph.hooks.s3.S3ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: splitgraph.hooks.external_objects.ExternalObjectHandler

+

Uploads/downloads the objects to/from S3/S3-compatible host using the Minio client.

+

The handler is “attached” to a given registry which manages issuing pre-signed +GET/PUT URLs.

+

The handler supports a parameter threads specifying the number of threads +used to upload the objects.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine) List[str]
+

Download objects from Minio.

+
+
Parameters
+

objects – List of (object ID, object URL (object ID it’s stored under))

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine) List[Tuple[str, str]]
+

Upload objects to Minio

+
+
Parameters
+
    +
  • remote_engine – Remote Engine class

  • +
  • objects – List of object IDs to upload

  • +
+
+
Returns
+

List of tuples with successfully uploaded objects and their URLs.

+
+
+
+ +
+ +
+
+splitgraph.hooks.s3.get_object_download_urls(remote_engine, remote_object_ids)
+
+ +
+
+splitgraph.hooks.s3.get_object_upload_urls(remote_engine, objects)
+
+ +
+
+

splitgraph.hooks.s3_server module

+

S3 registry-side routines called from the Python stored procedure +that are aware of the actual S3 access creds and generate pre-signed +URLs to upload/download objects.

+
+
+splitgraph.hooks.s3_server.delete_objects(client: minio.api.Minio, object_ids: List[str]) None
+

Delete objects stored in Minio

+
+
Parameters
+
    +
  • client – Minio client

  • +
  • object_ids – List of Splitgraph object IDs to delete

  • +
+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_download_urls(s3_host: str, object_ids: List[str]) List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_upload_urls(s3_host: str, object_ids: List[str]) List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.list_objects(client: minio.api.Minio) List[str]
+

List objects stored in Minio

+
+
Parameters
+

client – Minio client

+
+
Returns
+

List of Splitgraph object IDs

+
+
+
+ +
+
+

splitgraph.hooks.splitfile_commands module

+

A framework for custom Splitfile commands. The execution flow is as follows:

+
+
    +
  • When the Splitfile executor finds an unknown command, it looks for an entry in the config file:

    +
    [commands]
    +RUN=splitgraph.plugins.Run
    +
    +
    +
  • +
  • The command class must extend this class, initialized at every invocation time.

  • +
  • The command’s calc_hash() method is run. The resultant command context hash is combined with the current +image hash to produce the new image hash: if it already exists, then the image is simply checked out.

  • +
  • Otherwise (or if calc_hash is undefined or returns None), execute(), where the actual command should be +implemented, is run. If it returns a hash, this hash is used for the new image. If this hash already exists, +the existing image is checked out instead. If the command returns None, a random hash is generated for the +new image.

  • +
+
+
+
+class splitgraph.hooks.splitfile_commands.PluginCommand
+

Bases: object

+

Base class for custom Splitfile commands.

+
+
+calc_hash(repository, args)
+

Calculates the command context hash for this custom command. If either the command context hash or the +previous image hash has changed, then the image hash produced by this command will change. +Consequently, two commands with the same command context hashes are assumed to have the same effect +on any Splitgraph images.

+

This is supposed to be a lightweight method intended for pre-flight image hash calculations +(without performing the actual transformation). If it returns None, the actual transformation is run anyway.

+

For example, for a command that imports some data from an external URL, this could be the hash of the last +modified timestamp provided by the external data vendor. If the timestamp is unchanged, the data is unchanged +and so actual command won’t be re-executed.

+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits)

+
+
+
+ +
+
+execute(repository, args)
+

Execute the custom command against the target schema, optionally returning the new image hash. The contract +for the command is as follows (though it is not currently enforced by the runtime):

+
+
    +
  • Has to use get_engine().run_sql (or run_sql_batch) to interact with the engine.

  • +
  • Can only write to the schema with the checked-out repository (run_sql runs non-schema-qualified +statements against the correct schema).

  • +
  • Can inspect splitgraph_meta (e.g. to find the current HEAD) for the repository.

  • +
  • Can’t alter the versioning of the repository.

  • +
+
+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits). If calc_hash() had previously returned +a hash, this hash is ignored. If both this command and calc_hash() return None, the hash is randomly +generated.

+
+
+
+ +
+ +
+
+

Module contents

+

Various hooks for extending Splitgraph, including:

+
+
    +
  • External object handlers (splitgraph.hooks.external_objects) allowing to download/upload objects +to locations other than the remote Splitgraph engine.

  • +
  • Data sources (splitgraph.hooks.data_sources) that allow to add data to Splitgraph, e.g.

  • +
+
+

using the Postgres engine’s FDW interface to mount other external databases on the engine.

+
+ +
+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.airbyte.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.airbyte.mdx new file mode 100644 index 00000000..83f523fa --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.airbyte.mdx @@ -0,0 +1,667 @@ + + + +export const meta = { + title: "splitgraph.ingestion.airbyte package", + id: "splitgraph.ingestion.airbyte package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.airbyte.data_source module

+
+
+class splitgraph.ingestion.airbyte.data_source.AirbyteDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.SyncableDataSource, abc.ABC

+

Generic data source for Airbyte-compliant sources. +We run ingestion by combining an Airbyte source and the Airbyte Postgres destination.

+
+
+airbyte_name: Optional[str] = None
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'normalization_git_url': &lbrace;'description': 'For `custom` normalization, a URL to the Git repo with the dbt project, for example,`https://uname:pass_or_token@github.com/organisation/repository.git`.', 'title': 'dbt model Git URL', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+cursor_overrides: Optional[Dict[str, List[str]]] = None
+
+ +
+
+docker_environment: Optional[Dict[str, str]] = None
+
+ +
+
+docker_image: Optional[str] = None
+
+ +
+
+get_airbyte_config() Dict[str, Any]
+
+ +
+
+introspect() IntrospectionResult
+
+ +
+
+load(repository: splitgraph.core.repository.Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+
+normalization_image = 'airbyte/normalization:0.1.36'
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'normalization_git_branch': &lbrace;'default': 'master', 'description': 'Branch or commit hash to use for the normalization dbt project.', 'title': 'dbt model Git branch', 'type': 'string'&rbrace;, 'normalization_mode': &lbrace;'default': ['basic'], 'description': "Whether to normalize raw Airbyte tables. `none` is no normalization, `basic` is Airbyte's basic normalization, `custom` is a custom dbt transformation on the data.", 'enum': ['none', 'basic', 'custom'], 'title': 'Post-ingestion normalization', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+primary_key_overrides: Optional[Dict[str, List[str]]] = None
+
+ +
+
+receiver_image = 'airbyte/destination-postgres:latest'
+
+ +
+
+sync(repository: splitgraph.core.repository.Repository, image_hash: Optional[str] = None, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_state: bool = True) str
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'airbyte_cursor_fields': &lbrace;'description': "Fields in this stream to be used as a cursor for incremental replication (overrides Airbyte configuration's cursor_field)", 'items': &lbrace;'type': 'string'&rbrace;, 'title': 'Cursor field(s)', 'type': 'array'&rbrace;, 'airbyte_primary_key_fields': &lbrace;'description': "Fields in this stream to be used as a primary key for deduplication (overrides Airbyte configuration's primary_key)", 'items': &lbrace;'type': 'string'&rbrace;, 'title': 'Primary key field(s)', 'type': 'array'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.ingestion.airbyte.data_source.delete_schema_at_end(engine: splitgraph.engine.postgres.engine.PostgresEngine, schema: str) Generator
+
+ +
+
+splitgraph.ingestion.airbyte.data_source.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+

splitgraph.ingestion.airbyte.docker_utils module

+
+
+exception splitgraph.ingestion.airbyte.docker_utils.SubprocessError
+

Bases: splitgraph.exceptions.SplitGraphError

+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.add_files(container: docker.models.containers.Container, files: List[Tuple[str, str]]) None
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.build_command(files: List[Tuple[str, Any]]) List[str]
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.detect_network_mode(client: docker.client.DockerClient) str
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.remove_at_end(container: docker.models.containers.Container) docker.models.containers.Container
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.wait_not_failed(container: docker.models.containers.Container, mirror_logs: bool = False) None
+

Block until a Docker container exits.

+

:raises SubprocessError if the container exited with a non-zero code.

+
+ +
+
+

splitgraph.ingestion.airbyte.models module

+
+
+class splitgraph.ingestion.airbyte.models.AirbyteCatalog(*, streams: List[splitgraph.ingestion.airbyte.models.AirbyteStream], **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+streams: List[splitgraph.ingestion.airbyte.models.AirbyteStream]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus(*, status: splitgraph.ingestion.airbyte.models.Status, message: str = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+message: Optional[str]
+
+ +
+
+status: splitgraph.ingestion.airbyte.models.Status
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteLogMessage(*, level: splitgraph.ingestion.airbyte.models.Level, message: str, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+level: splitgraph.ingestion.airbyte.models.Level
+
+ +
+
+message: str
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteMessage(*, type: splitgraph.ingestion.airbyte.models.Type, log: splitgraph.ingestion.airbyte.models.AirbyteLogMessage = None, spec: splitgraph.ingestion.airbyte.models.ConnectorSpecification = None, connectionStatus: splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus = None, catalog: splitgraph.ingestion.airbyte.models.AirbyteCatalog = None, record: splitgraph.ingestion.airbyte.models.AirbyteRecordMessage = None, state: splitgraph.ingestion.airbyte.models.AirbyteStateMessage = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+catalog: Optional[splitgraph.ingestion.airbyte.models.AirbyteCatalog]
+
+ +
+
+connectionStatus: Optional[splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus]
+
+ +
+
+log: Optional[splitgraph.ingestion.airbyte.models.AirbyteLogMessage]
+
+ +
+
+record: Optional[splitgraph.ingestion.airbyte.models.AirbyteRecordMessage]
+
+ +
+
+spec: Optional[splitgraph.ingestion.airbyte.models.ConnectorSpecification]
+
+ +
+
+state: Optional[splitgraph.ingestion.airbyte.models.AirbyteStateMessage]
+
+ +
+
+type: splitgraph.ingestion.airbyte.models.Type
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteProtocol(*, airbyte_message: splitgraph.ingestion.airbyte.models.AirbyteMessage = None, configured_airbyte_catalog: splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog = None)
+

Bases: pydantic.main.BaseModel

+
+
+airbyte_message: Optional[splitgraph.ingestion.airbyte.models.AirbyteMessage]
+
+ +
+
+configured_airbyte_catalog: Optional[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteRecordMessage(*, stream: str, data: Dict[str, Any], emitted_at: int, namespace: str = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+data: Dict[str, Any]
+
+ +
+
+emitted_at: int
+
+ +
+
+namespace: Optional[str]
+
+ +
+
+stream: str
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteStateMessage(*, data: Dict[str, Any], **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+data: Dict[str, Any]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteStream(*, name: str, json_schema: Dict[str, Any], supported_sync_modes: List[splitgraph.ingestion.airbyte.models.SyncMode] = None, source_defined_cursor: bool = None, default_cursor_field: List[str] = None, source_defined_primary_key: List[List[str]] = None, namespace: str = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+default_cursor_field: Optional[List[str]]
+
+ +
+
+json_schema: Dict[str, Any]
+
+ +
+
+name: str
+
+ +
+
+namespace: Optional[str]
+
+ +
+
+source_defined_cursor: Optional[bool]
+
+ +
+
+source_defined_primary_key: Optional[List[List[str]]]
+
+ +
+
+supported_sync_modes: Optional[List[splitgraph.ingestion.airbyte.models.SyncMode]]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog(*, streams: List[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream], **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+streams: List[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream(*, stream: splitgraph.ingestion.airbyte.models.AirbyteStream, sync_mode: splitgraph.ingestion.airbyte.models.SyncMode, cursor_field: List[str] = None, destination_sync_mode: splitgraph.ingestion.airbyte.models.DestinationSyncMode, primary_key: List[List[str]] = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+cursor_field: Optional[List[str]]
+
+ +
+
+destination_sync_mode: splitgraph.ingestion.airbyte.models.DestinationSyncMode
+
+ +
+
+primary_key: Optional[List[List[str]]]
+
+ +
+
+stream: splitgraph.ingestion.airbyte.models.AirbyteStream
+
+ +
+
+sync_mode: splitgraph.ingestion.airbyte.models.SyncMode
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.ConnectorSpecification(*, documentationUrl: pydantic.networks.AnyUrl = None, changelogUrl: pydantic.networks.AnyUrl = None, connectionSpecification: Dict[str, Any], supportsIncremental: bool = None, supportsNormalization: bool = False, supportsDBT: bool = False, supported_destination_sync_modes: List[splitgraph.ingestion.airbyte.models.DestinationSyncMode] = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+changelogUrl: Optional[pydantic.networks.AnyUrl]
+
+ +
+
+connectionSpecification: Dict[str, Any]
+
+ +
+
+documentationUrl: Optional[pydantic.networks.AnyUrl]
+
+ +
+
+supported_destination_sync_modes: Optional[List[splitgraph.ingestion.airbyte.models.DestinationSyncMode]]
+
+ +
+
+supportsDBT: Optional[bool]
+
+ +
+
+supportsIncremental: Optional[bool]
+
+ +
+
+supportsNormalization: Optional[bool]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.DestinationSyncMode(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+append = 'append'
+
+ +
+
+append_dedup = 'append_dedup'
+
+ +
+
+overwrite = 'overwrite'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.Level(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+DEBUG = 'DEBUG'
+
+ +
+
+ERROR = 'ERROR'
+
+ +
+
+FATAL = 'FATAL'
+
+ +
+
+INFO = 'INFO'
+
+ +
+
+TRACE = 'TRACE'
+
+ +
+
+WARN = 'WARN'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.Status(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+FAILED = 'FAILED'
+
+ +
+
+SUCCEEDED = 'SUCCEEDED'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.SyncMode(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+full_refresh = 'full_refresh'
+
+ +
+
+incremental = 'incremental'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.Type(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+CATALOG = 'CATALOG'
+
+ +
+
+CONNECTION_STATUS = 'CONNECTION_STATUS'
+
+ +
+
+LOG = 'LOG'
+
+ +
+
+RECORD = 'RECORD'
+
+ +
+
+SPEC = 'SPEC'
+
+ +
+
+STATE = 'STATE'
+
+ +
+ +
+
+

splitgraph.ingestion.airbyte.utils module

+
+
+splitgraph.ingestion.airbyte.utils.get_pk_cursor_fields(stream: splitgraph.ingestion.airbyte.models.AirbyteStream, table_params: TableParams, cursor_overrides: Optional[Dict[str, List[str]]] = None, primary_key_overrides: Optional[Dict[str, List[str]]] = None) Tuple[Optional[List[str]], Optional[List[List[str]]]]
+
+ +
+
+splitgraph.ingestion.airbyte.utils.get_sg_schema(stream: splitgraph.ingestion.airbyte.models.AirbyteStream) List[splitgraph.core.types.TableColumn]
+
+ +
+
+splitgraph.ingestion.airbyte.utils.select_streams(catalog: splitgraph.ingestion.airbyte.models.AirbyteCatalog, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]], sync: bool = False, cursor_overrides: Optional[Dict[str, List[str]]] = None, primary_key_overrides: Optional[Dict[str, List[str]]] = None) splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.csv.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.csv.mdx new file mode 100644 index 00000000..89e1a5ed --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.csv.mdx @@ -0,0 +1,303 @@ + + + +export const meta = { + title: "splitgraph.ingestion.csv package", + id: "splitgraph.ingestion.csv package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.csv.common module

+
+
+class splitgraph.ingestion.csv.common.CSVOptions(autodetect_header, autodetect_dialect, autodetect_encoding, autodetect_sample_size, schema_inference_rows, delimiter, quotechar, header, encoding, ignore_decode_errors)
+

Bases: tuple

+
+
+autodetect_dialect: bool
+

Alias for field number 1

+
+ +
+
+autodetect_encoding: bool
+

Alias for field number 2

+
+ +
+
+autodetect_header: bool
+

Alias for field number 0

+
+ +
+
+autodetect_sample_size: int
+

Alias for field number 3

+
+ +
+
+delimiter: str
+

Alias for field number 5

+
+ +
+
+encoding: str
+

Alias for field number 8

+
+ +
+
+classmethod from_fdw_options(fdw_options)
+
+ +
+
+header: bool
+

Alias for field number 7

+
+ +
+
+ignore_decode_errors: bool
+

Alias for field number 9

+
+ +
+
+quotechar: str
+

Alias for field number 6

+
+ +
+
+schema_inference_rows: int
+

Alias for field number 4

+
+ +
+
+to_csv_kwargs()
+
+ +
+
+to_table_options()
+

Turn this into a dict of table options that can be plugged back into CSVDataSource.

+
+ +
+ +
+
+splitgraph.ingestion.csv.common.autodetect_csv(stream: io.RawIOBase, csv_options: splitgraph.ingestion.csv.common.CSVOptions) splitgraph.ingestion.csv.common.CSVOptions
+

Autodetect the CSV dialect, encoding, header etc.

+
+ +
+
+splitgraph.ingestion.csv.common.bool_to_str(boolean: bool) str
+
+ +
+
+splitgraph.ingestion.csv.common.get_bool(params: Dict[str, Any], key: str, default: bool = True) bool
+
+ +
+
+splitgraph.ingestion.csv.common.get_s3_params(fdw_options: Dict[str, Any]) Tuple[minio.api.Minio, str, str]
+
+ +
+
+splitgraph.ingestion.csv.common.make_csv_reader(response: io.IOBase, csv_options: splitgraph.ingestion.csv.common.CSVOptions) Tuple[splitgraph.ingestion.csv.common.CSVOptions, _csv._reader]
+
+ +
+
+

splitgraph.ingestion.csv.fdw module

+
+
+class splitgraph.ingestion.csv.fdw.CSVForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+

Foreign data wrapper for CSV files stored in S3 buckets or HTTP

+
+
+can_sort(sortkeys)
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+
+ +
+
+classmethod import_schema(schema, srv_options, options, restriction_type, restricts)
+
+ +
+ +
+
+splitgraph.ingestion.csv.fdw.report_errors(table_name: str)
+

Context manager that ignores exceptions and serializes them to JSON using PG’s notice +mechanism instead. The data source is meant to load these to report on partial failures +(e.g. failed to load one table, but not others).

+
+ +
+
+

Module contents

+
+
+class splitgraph.ingestion.csv.CSVDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount CSV files in S3/HTTP.\n\nIf passed an URL, this will live query a CSV file on an HTTP server. If passed\nS3 access credentials, this will scan a bucket for CSV files, infer their schema\nand make them available to query over SQL.  \n\nFor example:  \n\n\x08\n```\nsgr mount csv target_schema -o@- <<EOF\n  &lbrace;\n    "s3_endpoint": "cdn.mycompany.com:9000",\n    "s3_access_key": "ABCDEF",\n    "s3_secret_key": "GHIJKL",\n    "s3_bucket": "data",\n    "s3_object_prefix": "csv_files/current/",\n    "autodetect_header": true,\n    "autodetect_dialect": true,\n    "autodetect_encoding": true\n  &rbrace;\nEOF\n```\n'
+
+ +
+
+commandline_kwargs_help: str = "s3_access_key:\ns3_secret_key:\nconnection:\nautodetect_header: Detect whether the CSV file has a header automatically.\nautodetect_dialect: Detect the CSV file's dialect (separator, quoting characters etc) automatically.\nautodetect_encoding: Detect the CSV file's encoding automatically.\nautodetect_sample_size: Sample size, in bytes, for encoding/dialect/header detection.\nschema_inference_rows: Number of rows to use for schema inference.\nencoding: Encoding of the CSV file.\nignore_decode_errors: Ignore errors when decoding the file.\nheader: First line of the CSV file is its header.\ndelimiter: Character used to separate fields in the file.\nquotechar: Character used to quote fields."
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'s3_access_key': &lbrace;'type': 'string'&rbrace;, 's3_secret_key': &lbrace;'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs) splitgraph.ingestion.csv.CSVDataSource
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
+

Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
+
+ +
+
+classmethod migrate_params(params: Params) Params
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'autodetect_dialect': &lbrace;'description': "Detect the CSV file's dialect (separator, quoting characters etc) automatically", 'type': 'boolean'&rbrace;, 'autodetect_encoding': &lbrace;'description': "Detect the CSV file's encoding automatically", 'type': 'boolean'&rbrace;, 'autodetect_header': &lbrace;'description': 'Detect whether the CSV file has a header automatically', 'type': 'boolean'&rbrace;, 'autodetect_sample_size': &lbrace;'description': 'Sample size, in bytes, for encoding/dialect/header detection', 'type': 'integer'&rbrace;, 'connection': &lbrace;'oneOf': [&lbrace;'type': 'object', 'required': ['connection_type', 'url'], 'properties': &lbrace;'connection_type': &lbrace;'type': 'string', 'const': 'http'&rbrace;, 'url': &lbrace;'type': 'string', 'description': 'HTTP URL to the CSV file'&rbrace;&rbrace;&rbrace;, &lbrace;'type': 'object', 'required': ['connection_type', 's3_endpoint', 's3_bucket'], 'properties': &lbrace;'connection_type': &lbrace;'type': 'string', 'const': 's3'&rbrace;, 's3_endpoint': &lbrace;'type': 'string', 'description': 'S3 endpoint (including port if required)'&rbrace;, 's3_region': &lbrace;'type': 'string', 'description': 'Region of the S3 bucket'&rbrace;, 's3_secure': &lbrace;'type': 'boolean', 'description': 'Whether to use HTTPS for S3 access'&rbrace;, 's3_bucket': &lbrace;'type': 'string', 'description': 'Bucket the object is in'&rbrace;, 's3_object': &lbrace;'type': 'string', 'description': 'Limit the import to a single object'&rbrace;, 's3_object_prefix': &lbrace;'type': 'string', 'description': 'Prefix for object in S3 bucket'&rbrace;&rbrace;&rbrace;], 'type': 'object'&rbrace;, 'delimiter': &lbrace;'description': 'Character used to separate fields in the file', 'type': 'string'&rbrace;, 'encoding': &lbrace;'description': 'Encoding of the CSV file', 'type': 'string'&rbrace;, 'header': &lbrace;'description': 'First line of the CSV file is its header', 'type': 'boolean'&rbrace;, 'ignore_decode_errors': &lbrace;'description': 'Ignore errors when decoding the file', 'type': 'boolean'&rbrace;, 'quotechar': &lbrace;'description': 'Character used to quote fields', 'type': 'string'&rbrace;, 'schema_inference_rows': &lbrace;'description': 'Number of rows to use for schema inference', 'type': 'integer'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'s3_object': &lbrace;'description': 'S3 object of the CSV file', 'type': 'string'&rbrace;, 'url': &lbrace;'description': 'HTTP URL to the CSV file', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.ingestion.csv.CSVIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.csv.copy_csv_buffer(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = False, **kwargs)
+

Copy CSV data from a buffer into a given schema/table

+
+ +
+
+splitgraph.ingestion.csv.query_to_csv(engine: PsycopgEngine, query, buffer, schema: Optional[str] = None)
+
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.mdx new file mode 100644 index 00000000..c75bca8a --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.mdx @@ -0,0 +1,227 @@ + + + +export const meta = { + title: "splitgraph.ingestion package", + id: "splitgraph.ingestion package" +}; + +
+ +
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

splitgraph.ingestion.common module

+
+
+class splitgraph.ingestion.common.IngestionAdapter
+

Bases: object

+
+
+abstract create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+abstract data_to_new_table(data, engine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+abstract query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+
+to_data(query: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)
+
+ +
+
+to_table(data, repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True, no_header: bool = False, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.common.add_timestamp_tags(repository: splitgraph.core.repository.Repository, image_hash: str)
+
+ +
+
+splitgraph.ingestion.common.build_commandline_help(json_schema)
+
+ +
+
+splitgraph.ingestion.common.dedupe_sg_schema(schema_spec: List[splitgraph.core.types.TableColumn], prefix_len: int = 59) List[splitgraph.core.types.TableColumn]
+

Some foreign schemas have columns that are longer than 63 characters +where the first 63 characters are the same between several columns +(e.g. odn.data.socrata.com). This routine renames columns in a schema +to make sure this can’t happen (by giving duplicates a number suffix).

+
+ +
+
+splitgraph.ingestion.common.generate_column_names(schema_spec: List[splitgraph.core.types.TableColumn], prefix: str = 'col_') List[splitgraph.core.types.TableColumn]
+

Replace empty column names with autogenerated ones

+
+ +
+
+splitgraph.ingestion.common.merge_tables(engine: splitgraph.engine.postgres.engine.PsycopgEngine, source_schema: str, source_table: str, source_schema_spec: List[splitgraph.core.types.TableColumn], target_schema: str, target_table: str, target_schema_spec: List[splitgraph.core.types.TableColumn])
+
+ +
+
+splitgraph.ingestion.common.schema_compatible(source_schema: List[splitgraph.core.types.TableColumn], target_schema: List[splitgraph.core.types.TableColumn]) bool
+

Quick check to see if a dataframe with target_schema can be written into source_schema. +There are some implicit type conversions that SQLAlchemy/Pandas can do so we don’t want to immediately fail +if the column types aren’t exactly the same (eg bigint vs numeric etc). Most errors should be caught by PG itself.

+

Schema is a list of (ordinal, name, type, is_pk).

+
+ +
+
+

splitgraph.ingestion.inference module

+
+
+splitgraph.ingestion.inference.infer_sg_schema(sample: Sequence[Sequence[str]], override_types: Optional[Dict[str, str]] = None, primary_keys: Optional[List[str]] = None)
+
+ +
+
+splitgraph.ingestion.inference.parse_bigint(integer: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_boolean(boolean: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_int(integer: str)
+
+ +
+
+

splitgraph.ingestion.pandas module

+

Routines that ingest/export CSV files to/from Splitgraph images using Pandas

+
+
+class splitgraph.ingestion.pandas.PandasIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.pandas.df_to_table(df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True) None
+

Writes a Pandas DataFrame to a checked-out Splitgraph table. Doesn’t create a new image.

+
+
Parameters
+
    +
  • df – Pandas DataFrame to insert.

  • +
  • repository – Splitgraph Repository object. Must be checked out.

  • +
  • table – Table name.

  • +
  • if_exists – Behaviour if the table already exists: ‘patch’ means that primary keys that already exist in the

  • +
+
+
+

table will be updated and ones that don’t will be inserted. ‘replace’ means that the table will be dropped and +recreated. +:param schema_check: If False, skips checking that the dataframe is compatible with the target schema.

+
+ +
+
+splitgraph.ingestion.pandas.df_to_table_fast(engine: PsycopgEngine, df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], target_schema: str, target_table: str)
+
+ +
+
+splitgraph.ingestion.pandas.sql_to_df(sql: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs) pandas.core.frame.DataFrame
+

Executes an SQL query against a Splitgraph image, returning the result.

+

Extra **kwargs are passed to Pandas’ read_sql_query.

+
+
Parameters
+
    +
  • sql – SQL query to execute.

  • +
  • image – Image object, image hash/tag (str) or None (use the currently checked out image).

  • +
  • repository – Repository the image belongs to. Must be set if image is a hash/tag or None.

  • +
  • use_lq – Whether to use layered querying or check out the image if it’s not checked out.

  • +
+
+
Returns
+

A Pandas dataframe.

+
+
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.singer.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.singer.mdx new file mode 100644 index 00000000..89b18c62 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.singer.mdx @@ -0,0 +1,238 @@ + + + +export const meta = { + title: "splitgraph.ingestion.singer package", + id: "splitgraph.ingestion.singer package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.singer.commandline module

+

Command line tools for building Splitgraph images from Singer taps, including using Splitgraph as a Singer target.

+
+
+

splitgraph.ingestion.singer.common module

+
+
+splitgraph.ingestion.singer.common.log_exception(f)
+

Emit exceptions with full traceback instead of just the error text

+
+ +
+
+splitgraph.ingestion.singer.common.rollback_at_end(func: collections.abc.Callable) collections.abc.Callable
+
+ +
+
+splitgraph.ingestion.singer.common.store_ingestion_state(repository: splitgraph.core.repository.Repository, image_hash: str, current_state: Optional[Dict[str, Any]], new_state: str)
+
+ +
+
+

splitgraph.ingestion.singer.data_source module

+
+
+class splitgraph.ingestion.singer.data_source.GenericSingerDataSource(*args, **kwargs)
+

Bases: splitgraph.ingestion.singer.data_source.SingerDataSource

+
+
+credentials_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_singer_executable()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'tap_path': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['tap_path'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.ingestion.singer.data_source.MySQLSingerDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.ingestion.singer.data_source.SingerDataSource

+
+
+build_singer_catalog(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'user': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['user', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_singer_executable()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'replication_method': &lbrace;'enum': ['INCREMENTAL', 'LOG_BASED', 'FULL TABLE'], 'type': 'string'&rbrace;&rbrace;, 'required': ['host', 'port', 'replication_method'], 'type': 'object'&rbrace;
+
+ +
+
+use_legacy_stream_selection = False
+
+ +
+
+use_properties = True
+
+ +
+ +
+
+class splitgraph.ingestion.singer.data_source.SingerDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.SyncableDataSource, abc.ABC

+
+
+build_singer_catalog(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, Any]
+
+ +
+
+get_singer_config()
+
+ +
+
+abstract get_singer_executable()
+
+ +
+
+introspect() IntrospectionResult
+
+ +
+
+load(repository: splitgraph.core.repository.Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+
+sync(repository: splitgraph.core.repository.Repository, image_hash: Optional[str] = None, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_state: bool = True) str
+
+ +
+
+use_legacy_stream_selection = False
+
+ +
+
+use_properties = False
+
+ +
+ +
+
+splitgraph.ingestion.singer.data_source.select_streams(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_legacy_stream_selection=False) Dict[str, Any]
+
+ +
+
+

splitgraph.ingestion.singer.db_sync module

+
+
+class splitgraph.ingestion.singer.db_sync.DbSyncProxy(*args, **kwargs)
+

Bases: target_postgres.db_sync.DbSync

+
+
+create_indices(stream)
+
+ +
+
+create_schema_if_not_exists(table_columns_cache=None)
+
+ +
+
+delete_rows(stream)
+
+ +
+
+load_csv(file, count, size_bytes)
+
+ +
+
+sync_table()
+
+ +
+ +
+
+splitgraph.ingestion.singer.db_sync.db_sync_wrapper(image: splitgraph.core.image.Image, staging_schema: str)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.get_key_properties(stream_message)
+

Extract the PK from a stream message. Supports both legacy (“key_properties”) and +new (“metadata”) Singer taps.

+
+ +
+
+splitgraph.ingestion.singer.db_sync.get_sg_schema(stream_schema_message, flattening_max_level=0)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.get_table_name(stream_schema_message)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.run_patched_sync(repository: splitgraph.core.repository.Repository, base_image: Optional[splitgraph.core.image.Image], new_image_hash: str, delete_old: bool, failure: str, input_stream: Optional[BinaryIO] = None, output_stream: Optional[TextIO] = None)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.select_breadcrumb(stream_message, breadcrumb)
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.snowflake.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.snowflake.mdx new file mode 100644 index 00000000..3e0f4172 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.snowflake.mdx @@ -0,0 +1,97 @@ + + + +export const meta = { + title: "splitgraph.ingestion.snowflake package", + id: "splitgraph.ingestion.snowflake package" +}; + +
+ +
+

Module contents

+
+
+class splitgraph.ingestion.snowflake.SnowflakeDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Snowflake database.\n\nThis will mount a remote Snowflake schema or a table. You can also get a mounted table to point to the result of a subquery that will be executed on the Snowflake instance. For example:\n\n\x08\n```\n$ sgr mount snowflake test_snowflake -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "password": "password",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "schema": "TPCH_SF100"\n    "envvars": &lbrace;"HTTPS_PROXY": "http://proxy.company.com"&rbrace;\n&rbrace;\nEOF\n\x08\n$ sgr mount snowflake test_snowflake_subquery -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "private_key": "MIIEvQIBAD...",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "tables": &lbrace;\n        "balances": &lbrace;\n            "schema": &lbrace;\n                "n_nation": "varchar",\n                "segment": "varchar",\n                "avg_balance": "numeric"\n            &rbrace;,\n            "options": &lbrace;\n                "subquery": "SELECT n_nation AS nation, c_mktsegment AS segment, AVG(c_acctbal) AS avg_balance FROM TPCH_SF100.customer c JOIN TPCH_SF100.nation n ON c_nationkey = n_nationkey"\n            &rbrace;\n        &rbrace;\n    &rbrace;\n&rbrace;\nEOF\n```\n    '
+
+ +
+
+commandline_kwargs_help: str = "username: Username. Required.\nsecret:\naccount: Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html. Required.\ndatabase: Snowflake database name. Required.\nschema: Snowflake schema.\nwarehouse: Warehouse name.\nrole: Role.\nbatch_size: Default fetch size for remote queries.\nenvvars: Environment variables to set on the engine side.\nThe schema parameter is required when subquery isn't used."
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'account': &lbrace;'description': 'Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html', 'type': 'string'&rbrace;, 'secret': &lbrace;'oneOf': [&lbrace;'type': 'object', 'required': ['secret_type', 'password'], 'properties': &lbrace;'secret_type': &lbrace;'type': 'string', 'const': 'password'&rbrace;, 'password': &lbrace;'type': 'string', 'description': 'Password'&rbrace;&rbrace;&rbrace;, &lbrace;'type': 'object', 'required': ['secret_type', 'private_key'], 'properties': &lbrace;'secret_type': &lbrace;'type': 'string', 'const': 'private_key'&rbrace;, 'private_key': &lbrace;'type': 'string', 'description': 'Private key in PEM format'&rbrace;&rbrace;&rbrace;], 'type': 'object'&rbrace;, 'username': &lbrace;'description': 'Username', 'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'account'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
+
+ +
+
+classmethod migrate_credentials(credentials: Credentials) Credentials
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'description': 'Default fetch size for remote queries', 'type': 'integer'&rbrace;, 'database': &lbrace;'description': 'Snowflake database name', 'type': 'string'&rbrace;, 'envvars': &lbrace;'description': 'Environment variables to set on the engine side', 'type': 'object'&rbrace;, 'role': &lbrace;'description': 'Role', 'type': 'string'&rbrace;, 'schema': &lbrace;'description': 'Snowflake schema', 'type': 'string'&rbrace;, 'warehouse': &lbrace;'description': 'Warehouse name', 'type': 'string'&rbrace;&rbrace;, 'required': ['database'], 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'subquery': &lbrace;'description': 'Subquery for this table to run on the server side', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.socrata.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.socrata.mdx new file mode 100644 index 00000000..2f958282 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.ingestion.socrata.mdx @@ -0,0 +1,181 @@ + + + +export const meta = { + title: "splitgraph.ingestion.socrata package", + id: "splitgraph.ingestion.socrata package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.socrata.fdw module

+

Module imported by Multicorn on the Splitgraph engine server: a foreign data wrapper +that communicates to Socrata datasets using sodapy.

+
+
+class splitgraph.ingestion.socrata.fdw.SocrataForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+
+
+can_sort(sortkeys)
+
+
Parameters
+

sortkeys – List of SortKey

+
+
Returns
+

List of SortKey the FDW can sort on

+
+
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+

Method called from the planner to estimate the resulting relation +size for a scan. +It will help the planner in deciding between different types of plans, +according to their costs. +Args:

+
+
+
quals (list): A list of Qual instances describing the filters

applied to this scan.

+
+
+

columns (list): The list of columns that must be returned.

+
+
+
Returns:

A tuple of the form (expected_number_of_rows, avg_row_width (in bytes))

+
+
+
+ +
+
+property table_meta
+
+ +
+ +
+
+splitgraph.ingestion.socrata.fdw.to_json(row, columns, column_map)
+
+ +
+
+

splitgraph.ingestion.socrata.mount module

+

Splitgraph mount handler for Socrata datasets

+
+
+class splitgraph.ingestion.socrata.mount.SocrataDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'app_token': &lbrace;'description': 'Socrata app token', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs) splitgraph.ingestion.socrata.mount.SocrataDataSource
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
+

Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'default': 1000, 'description': 'Amount of rows to fetch from Socrata per request (limit parameter)', 'maximum': 50000, 'minimum': 1, 'type': 'integer'&rbrace;, 'domain': &lbrace;'description': 'Socrata domain, for example, data.albanyny.gov', 'type': 'string'&rbrace;&rbrace;, 'required': ['domain'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'socrata_id': &lbrace;'description': 'Socrata dataset ID, e.g. xzkq-xp2w', 'type': 'string'&rbrace;&rbrace;, 'required': ['socrata_id'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.ingestion.socrata.mount.generate_socrata_mount_queries(sought_ids, datasets, mountpoint, server_id, tables: Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]])
+
+ +
+
+

splitgraph.ingestion.socrata.querying module

+
+
+splitgraph.ingestion.socrata.querying.cols_to_socrata(cols, column_map: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.ingestion.socrata.querying.estimate_socrata_rows_width(columns, metadata, column_map=None)
+

Estimate number of rows required for a query and each row’s width +from the table metadata.

+
+ +
+
+splitgraph.ingestion.socrata.querying.quals_to_socrata(quals, column_map: Optional[Dict[str, str]] = None)
+

Convert a list of Multicorn quals to a SoQL query

+
+ +
+
+splitgraph.ingestion.socrata.querying.socrata_to_sg_schema(metadata: Dict[str, Any]) Tuple[List[splitgraph.core.types.TableColumn], Dict[str, str]]
+
+ +
+
+splitgraph.ingestion.socrata.querying.sortkeys_to_socrata(sortkeys, column_map: Optional[Dict[str, str]] = None)
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.mdx new file mode 100644 index 00000000..160c7aed --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.mdx @@ -0,0 +1,369 @@ + + + +export const meta = { + title: "splitgraph package", + id: "splitgraph package" +}; + +
+ +
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

splitgraph.exceptions module

+

Exceptions that can be raised by the Splitgraph library.

+
+
+exception splitgraph.exceptions.APICompatibilityError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions related to API incompatibilities

+
+ +
+
+exception splitgraph.exceptions.AuthAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by the Auth API

+
+ +
+
+exception splitgraph.exceptions.CheckoutError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to checking out/committing repositories

+
+ +
+
+exception splitgraph.exceptions.DataSourceError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by mount handlers.

+
+ +
+
+exception splitgraph.exceptions.DockerUnavailableError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Could not connect to the Docker daemon.

+
+ +
+
+exception splitgraph.exceptions.EngineInitializationError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when the engine isn’t initialized (no splitgraph_meta schema or audit triggers)

+
+ +
+
+exception splitgraph.exceptions.EngineSetupError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised on various setup issues with the Splitgraph engine

+
+ +
+
+exception splitgraph.exceptions.ExternalHandlerError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by external object handlers.

+
+ +
+
+exception splitgraph.exceptions.GQLAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

GQL API errors

+
+ +
+
+exception splitgraph.exceptions.GQLRepoDoesntExistError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Repository doesn’t exist

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthenticatedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthenticated (user not logged in)

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthorizedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthorized (e.g. repository isn’t writeable by the user)

+
+ +
+
+exception splitgraph.exceptions.ImageNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph image doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectDownloadError(reason: Optional[BaseException], successful_objects: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during download of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectUploadError(reason: Optional[BaseException], successful_objects: List[str], successful_object_urls: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during upload of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.ObjectCacheError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Issues with the object cache (not enough space)

+
+ +
+
+exception splitgraph.exceptions.ObjectIndexingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to indexing objects

+
+ +
+
+exception splitgraph.exceptions.ObjectMountingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to incompatible objects.

+
+ +
+
+exception splitgraph.exceptions.ObjectNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when a physical object doesn’t exist in the cache.

+
+ +
+
+exception splitgraph.exceptions.RepositoryNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph repository doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.SplitGraphError
+

Bases: Exception

+

A generic Splitgraph exception.

+
+ +
+
+exception splitgraph.exceptions.SplitfileError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Generic error class for Splitfile interpretation/execution errors.

+
+ +
+
+exception splitgraph.exceptions.TableNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A table doesn’t exist in an image

+
+ +
+
+exception splitgraph.exceptions.UnsupportedSQLError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised for unsupported SQL statements, for example, containing schema-qualified tables when the statement +is supposed to be used in an SQL/IMPORT Splitfile command.

+
+ +
+
+splitgraph.exceptions.get_exception_name(o)
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.splitfile.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.splitfile.mdx new file mode 100644 index 00000000..15e01443 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.splitfile.mdx @@ -0,0 +1,89 @@ + + + +export const meta = { + title: "splitgraph.splitfile package", + id: "splitgraph.splitfile package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.splitfile.execution module

+

Functions for executing Splitfiles.

+
+
+class splitgraph.splitfile.execution.ImageMapper(object_engine: splitgraph.engine.postgres.engine.PostgresEngine)
+

Bases: object

+
+
+get_provenance_data() Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]
+
+ +
+
+setup_lq_mounts() None
+
+ +
+
+teardown_lq_mounts() None
+
+ +
+ +
+
+splitgraph.splitfile.execution.execute_commands(commands: str, params: Optional[Dict[str, str]] = None, output: Optional[splitgraph.core.repository.Repository] = None, output_base: str = '00000000000000000000000000000000') None
+

Executes a series of Splitfile commands.

+
+
Parameters
+
    +
  • commands – A string with the raw Splitfile.

  • +
  • params – A dictionary of parameters to be applied to the Splitfile ($&lbrace;PARAM&rbrace; is replaced with the specified +parameter value).

  • +
  • output – Output repository to execute the Splitfile against.

  • +
  • output_base – If not None, a revision that gets checked out for all Splitfile actions to be committed +on top of it.

  • +
+
+
+
+ +
+
+splitgraph.splitfile.execution.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.splitfile.execution.prevalidate_imports(table_names: List[str], table_queries: List[bool]) List[str]
+
+ +
+
+splitgraph.splitfile.execution.rebuild_image(image: splitgraph.core.image.Image, source_replacement: Dict[splitgraph.core.repository.Repository, str]) None
+

Recreates the Splitfile used to create a given image and reruns it, replacing its dependencies with a different +set of versions.

+
+
Parameters
+
    +
  • image – Image object

  • +
  • source_replacement – A map that specifies replacement images/tags for repositories that the image depends on

  • +
+
+
+
+ +
+
+

Module contents

+

Splitfile interpreter: a set of tools on top of the core Splitgraph versioning and image management to give +the user a Dockerfile-like experience for building Splitgraph images (caching, consistent hashing, a declarative +language).

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.utils.mdx b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.utils.mdx new file mode 100644 index 00000000..7a3a4006 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.17/splitgraph.utils.mdx @@ -0,0 +1,51 @@ + + + +export const meta = { + title: "splitgraph.utils package", + id: "splitgraph.utils package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.utils.docker module

+
+
+splitgraph.utils.docker.copy_dir_to_container(container: Container, source_path: str, target_path: str, exclude_names: Optional[List[str]] = None) None
+
+ +
+
+splitgraph.utils.docker.copy_to_container(container: Container, source_path: Optional[str], target_path: str, data: Optional[bytes] = None) None
+

Copy a file into a Docker container

+
+
Parameters
+
    +
  • container – Container object

  • +
  • source_path – Source file path

  • +
  • target_path – Target file path (in the container)

  • +
+
+
Returns
+

+
+
+
+ +
+
+splitgraph.utils.docker.get_docker_client()
+

Wrapper around client.from_env() that also pings the daemon +to make sure it can connect and if not, raises an error.

+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/metadata.json b/content/docs/9500_python-api/9000_versions/v0.2.18/metadata.json new file mode 100644 index 00000000..a9c416b3 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.2.18", + "updated_at": "2022-01-20T00:00:36.586Z", + "release": { + "id": 53567785, + "tag_name": "v0.2.18", + "target_commitish": "cc98bd8a87b1252d69f31a8f066818e2a4b7bb70", + "created_at": "2021-11-17T15:11:01Z", + "published_at": "2021-11-17T15:51:54Z", + "assets": [ + { + "id": 49679059, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/49679059", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-11-17T15:39:42Z", + "updated_at": "2021-11-17T15:39:43Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.18/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/modules.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/modules.mdx new file mode 100644 index 00000000..d68b1054 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/modules.mdx @@ -0,0 +1,118 @@ + + + +export const meta = { + title: "splitgraph", + id: "splitgraph" +}; + +
+ +
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.cloud.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.cloud.mdx new file mode 100644 index 00000000..285db807 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.cloud.mdx @@ -0,0 +1,885 @@ + + + +export const meta = { + title: "splitgraph.cloud package", + id: "splitgraph.cloud package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.cloud.models module

+

Definitions for the repositories.yml format that’s used to batch-populate a Splitgraph catalog +with repositories and their metadata.

+
+
+class splitgraph.cloud.models.AddExternalCredentialRequest(*, credential_name: str, credential_data: Dict[str, Any], plugin_name: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_data: Dict[str, Any]
+
+ +
+
+credential_name: str
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+class splitgraph.cloud.models.AddExternalRepositoriesRequest(*, repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest])
+

Bases: pydantic.main.BaseModel

+
+
+repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest]
+
+ +
+ +
+
+class splitgraph.cloud.models.AddExternalRepositoryRequest(*, namespace: str, repository: str, plugin_name: str, params: Params, is_live: bool, tables: Dict[str, splitgraph.cloud.models.ExternalTableRequest] = None, credential_id: str = None, credential_name: str = None, credential_data: Dict[str, Any] = None, schedule: splitgraph.cloud.models.IngestionSchedule = None)
+

Bases: pydantic.main.BaseModel

+
+
+credential_data: Optional[Dict[str, Any]]
+
+ +
+
+credential_id: Optional[str]
+
+ +
+
+credential_name: Optional[str]
+
+ +
+
+classmethod from_external(namespace: str, repository: str, external: splitgraph.cloud.models.External, credential_map: Optional[Dict[str, str]] = None)
+
+ +
+
+is_live: bool
+
+ +
+
+namespace: str
+
+ +
+
+params: Params
+
+ +
+
+plugin_name: str
+
+ +
+
+repository: str
+
+ +
+
+schedule: Optional[splitgraph.cloud.models.IngestionSchedule]
+
+ +
+
+tables: Optional[Dict[str, splitgraph.cloud.models.ExternalTableRequest]]
+
+ +
+ +
+
+class splitgraph.cloud.models.Credential(*, plugin: str, data: Dict[str, Any])
+

Bases: pydantic.main.BaseModel

+
+
+data: Dict[str, Any]
+
+ +
+
+plugin: str
+
+ +
+ +
+
+class splitgraph.cloud.models.External(*, credential_id: str = None, credential: str = None, plugin: str, params: Dict[str, Any], tables: Dict[str, splitgraph.cloud.models.Table], is_live: bool = True, schedule: splitgraph.cloud.models.IngestionSchedule = None)
+

Bases: pydantic.main.BaseModel

+
+
+credential: Optional[str]
+
+ +
+
+credential_id: Optional[str]
+
+ +
+
+is_live: bool
+
+ +
+
+params: Dict[str, Any]
+
+ +
+
+plugin: str
+
+ +
+
+schedule: Optional[splitgraph.cloud.models.IngestionSchedule]
+
+ +
+
+tables: Dict[str, splitgraph.cloud.models.Table]
+
+ +
+ +
+
+class splitgraph.cloud.models.ExternalResponse(*, namespace: str, repository: str, credentialId: str = None, dataSource: str, params: Dict[str, Any], tableParams: Dict[str, Any], externalImageByNamespaceAndRepository: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class ExternalImageResponse(*, imageByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class ImageResponse(*, tablesByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class TablesResponse(*, nodes: List[splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse.Node])
+

Bases: pydantic.main.BaseModel

+
+
+class Node(*, tableName: str, tableSchema: List[splitgraph.core.types.TableColumn])
+

Bases: pydantic.main.BaseModel

+
+
+tableName: str
+
+ +
+
+tableSchema: List[splitgraph.core.types.TableColumn]
+
+ +
+ +
+
+nodes: List[splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse.Node]
+
+ +
+ +
+
+tablesByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse
+
+ +
+ +
+
+imageByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse
+
+ +
+ +
+
+credentialId: Optional[str]
+
+ +
+
+dataSource: str
+
+ +
+
+externalImageByNamespaceAndRepository: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse
+
+ +
+
+classmethod from_response(response) List[splitgraph.cloud.models.ExternalResponse]
+
+ +
+
+namespace: str
+
+ +
+
+params: Dict[str, Any]
+
+ +
+
+repository: str
+
+ +
+
+tableParams: Dict[str, Any]
+
+ +
+
+to_external() splitgraph.cloud.models.External
+
+ +
+ +
+
+class splitgraph.cloud.models.ExternalTableRequest(*, options: Dict[str, Any] = &lbrace;&rbrace;, schema: Dict[str, str] = None)
+

Bases: pydantic.main.BaseModel

+
+
+options: Dict[str, Any]
+
+ +
+
+schema_: Optional[Dict[str, str]]
+
+ +
+ +
+
+class splitgraph.cloud.models.IngestionSchedule(*, schedule: str, enabled: bool = True)
+

Bases: pydantic.main.BaseModel

+
+
+schedule: str
+
+ +
+ +
+
+class splitgraph.cloud.models.ListExternalCredentialsResponse(*, credentials: List[splitgraph.cloud.models.ListExternalCredentialsResponse.ExternalCredential])
+

Bases: pydantic.main.BaseModel

+
+
+class ExternalCredential(*, plugin_name: str, credential_name: str = None, credential_id: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_id: str
+
+ +
+
+credential_name: Optional[str]
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+credentials: List[splitgraph.cloud.models.ListExternalCredentialsResponse.ExternalCredential]
+
+ +
+ +
+
+class splitgraph.cloud.models.Metadata(*, readme: Optional[Union[str, splitgraph.cloud.models.Metadata.Readme]] = None, description: str = None, topics: List[str] = None, sources: List[splitgraph.cloud.models.Source] = None, license: str = None, extra_metadata: Dict[str, Any] = None)
+

Bases: pydantic.main.BaseModel

+
+
+class Readme(*, file: str = None, text: str = None)
+

Bases: pydantic.main.BaseModel

+
+
+file: Optional[str]
+
+ +
+
+text: Optional[str]
+
+ +
+ +
+
+description: Optional[str]
+
+ +
+
+extra_metadata: Optional[Dict[str, Any]]
+
+ +
+
+license: Optional[str]
+
+ +
+
+readme: Optional[Union[str, splitgraph.cloud.models.Metadata.Readme]]
+
+ +
+
+sources: Optional[List[splitgraph.cloud.models.Source]]
+
+ +
+
+topics: Optional[List[str]]
+
+ +
+ +
+
+class splitgraph.cloud.models.MetadataResponse(*, namespace: str, repository: str, repoTopicsByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse, repoProfileByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class RepoProfileResponse(*, readme: str = None, description: str = None, topics: List[str] = None, sources: List[splitgraph.cloud.models.Source] = None, license: str = None, metadata: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse.MetadataResponse = None)
+

Bases: pydantic.main.BaseModel

+
+
+class MetadataResponse(*, created_at: str = None, updated_at: str = None, upstream_metadata: Dict[str, Any])
+

Bases: pydantic.main.BaseModel

+
+
+created_at: Optional[str]
+
+ +
+
+updated_at: Optional[str]
+
+ +
+
+upstream_metadata: Dict[str, Any]
+
+ +
+ +
+
+description: Optional[str]
+
+ +
+
+license: Optional[str]
+
+ +
+
+metadata: Optional[splitgraph.cloud.models.MetadataResponse.RepoProfileResponse.MetadataResponse]
+
+ +
+
+readme: Optional[str]
+
+ +
+
+sources: Optional[List[splitgraph.cloud.models.Source]]
+
+ +
+
+topics: Optional[List[str]]
+
+ +
+ +
+
+class RepoTopicsResponse(*, nodes: List[splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse.RepositoryTopics])
+

Bases: pydantic.main.BaseModel

+
+
+class RepositoryTopics(*, topic: str)
+

Bases: pydantic.main.BaseModel

+
+
+topic: str
+
+ +
+ +
+
+nodes: List[splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse.RepositoryTopics]
+
+ +
+ +
+
+classmethod from_response(response) List[splitgraph.cloud.models.MetadataResponse]
+
+ +
+
+namespace: str
+
+ +
+
+repoProfileByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse
+
+ +
+
+repoTopicsByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse
+
+ +
+
+repository: str
+
+ +
+
+to_metadata() splitgraph.cloud.models.Metadata
+
+ +
+ +
+
+class splitgraph.cloud.models.RepositoriesYAML(*, repositories: List[splitgraph.cloud.models.Repository], credentials: Dict[str, splitgraph.cloud.models.Credential] = None)
+

Bases: pydantic.main.BaseModel

+
+
+credentials: Optional[Dict[str, splitgraph.cloud.models.Credential]]
+
+ +
+
+repositories: List[splitgraph.cloud.models.Repository]
+
+ +
+ +
+
+class splitgraph.cloud.models.Repository(*, namespace: str, repository: str, metadata: splitgraph.cloud.models.Metadata = None, external: splitgraph.cloud.models.External = None)
+

Bases: pydantic.main.BaseModel

+
+
+external: Optional[splitgraph.cloud.models.External]
+
+ +
+
+metadata: Optional[splitgraph.cloud.models.Metadata]
+
+ +
+
+namespace: str
+
+ +
+
+repository: str
+
+ +
+ +
+
+class splitgraph.cloud.models.Source(*, anchor: str, href: str, isCreator: bool = None, isSameAs: bool = None)
+

Bases: pydantic.main.BaseModel

+
+
+anchor: str
+
+ +
+
+href: str
+
+ +
+
+isCreator: Optional[bool]
+
+ +
+
+isSameAs: Optional[bool]
+
+ +
+ +
+
+class splitgraph.cloud.models.Table(*, options: Dict[str, Any], schema: List[splitgraph.cloud.models.Table.Column])
+

Bases: pydantic.main.BaseModel

+
+
+class Column(*, name: str, type: str, comment: str = None)
+

Bases: pydantic.main.BaseModel

+
+
+comment: Optional[str]
+
+ +
+
+name: str
+
+ +
+
+pg_type: str
+
+ +
+ +
+
+options: Dict[str, Any]
+
+ +
+
+schema_: List[splitgraph.cloud.models.Table.Column]
+
+ +
+ +
+
+class splitgraph.cloud.models.UpdateExternalCredentialRequest(*, credential_id: str, credential_name: str, credential_data: Dict[str, Any], plugin_name: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_data: Dict[str, Any]
+
+ +
+
+credential_id: str
+
+ +
+
+credential_name: str
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+class splitgraph.cloud.models.UpdateExternalCredentialResponse(*, credential_id: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_id: str
+
+ +
+ +
+
+splitgraph.cloud.models.make_repositories(metadata_responses: List[splitgraph.cloud.models.MetadataResponse], external_responses: List[splitgraph.cloud.models.ExternalResponse]) List[splitgraph.cloud.models.Repository]
+
+ +
+
+

Module contents

+

Public API for interacting with the Splitgraph registry

+
+
+splitgraph.cloud.AuthAPIClient(*args, **kwargs)
+
+ +
+
+class splitgraph.cloud.GQLAPIClient(remote: Optional[str], endpoint: Optional[str] = None, access_token: Optional[str] = None)
+

Bases: object

+

Wrapper class for select Splitgraph Registry GQL operations that can be +called from the CLI

+
+
+property access_token: Optional[str]
+
+ +
+
+bulk_upsert_metadata(namespace_list: List[str], repository_list: List[str], metadata_list: List[splitgraph.cloud.models.Metadata])
+
+ +
+
+find_repository(query: str, limit: int = 10) Tuple[int, List[Tuple[str, str, str]]]
+
+ +
+
+get_external_metadata(namespace: str, repository: str) Optional[splitgraph.cloud.models.ExternalResponse]
+
+ +
+
+get_metadata(namespace: str, repository: str) Optional[splitgraph.cloud.models.MetadataResponse]
+
+ +
+
+load_all_repositories(limit_to: Optional[List[str]] = None) List[splitgraph.cloud.models.Repository]
+
+ +
+
+upsert_description(namespace: str, repository: str, description: str)
+
+ +
+
+upsert_metadata(namespace: str, repository: str, metadata: splitgraph.cloud.models.Metadata)
+

Update metadata for a single repository.

+
+ +
+
+upsert_readme(namespace: str, repository: str, readme: str)
+
+ +
+
+upsert_topics(namespace: str, repository: str, topics: List[str])
+
+ +
+ +
+
+class splitgraph.cloud.RESTAPIClient(remote: str)
+

Bases: object

+

Client for various Splitgraph Registry REST APIs: auth token generation, external repo setup…

+
+
+property access_token: str
+

Will return an up-to-date access token by either getting it from +the configuration file or contacting the auth service for a new one. +Will write the new access token into the configuration file.

+
+
Returns
+

Access token.

+
+
+
+ +
+
+bulk_upsert_external(repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest])
+
+ +
+
+create_machine_credentials(access_token: str, password: str) requests.models.Response
+

Generate a key and secret that can be used to log into the Splitgraph registry +via a normal Postgres connection. The secret must be stored in the user’s local +configuration file (it’s not stored on Splitgraph servers).

+
+
Parameters
+
    +
  • access_token – Access token

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (key, secret).

+
+
+
+ +
+
+ensure_external_credential(credential_data: Dict[str, Any], credential_name: str, plugin_name: str) str
+

Store a credential for accessing an external data source +in Splitgraph Cloud and return its ID

+
+ +
+
+get_access_token(refresh_token: str) requests.models.Response
+

Get a new access token from a refresh token.

+
+
Parameters
+

refresh_token – Refresh token

+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_access_token_from_api(api_key: str, api_secret: str) requests.models.Response
+

Get a new access token from API keys

+
+
Parameters
+
    +
  • api_key – API key

  • +
  • api_secret – API secret

  • +
+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_latest_version() Optional[str]
+
+ +
+
+get_refresh_token(username: str, password: str) requests.models.Response
+

Get a long-lived refresh token and a short-lived access token from the API.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (access_token, refresh_token).

+
+
+
+ +
+
+list_external_credentials() splitgraph.cloud.models.ListExternalCredentialsResponse
+
+ +
+
+register(username: str, password: str, email: str, accept_tos: bool) requests.models.Response
+

Register a new Splitgraph user.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
  • email – Email

  • +
  • accept_tos – Accept the Terms of Service if they exist

  • +
+
+
+
+ +
+
+tos() requests.models.Response
+

Get a Terms of Service message from the registry (if accepting ToS is required) +:return: Link to the Terms of Service or None

+
+ +
+ +
+
+splitgraph.cloud.expect_result(result: List[str], ignore_status_codes: Optional[List[int]] = None) Callable[[Callable[[...], requests.models.Response]], Callable[[...], Union[str, Tuple[str]]]]
+

A decorator that can be wrapped around a function returning a requests.Response with a JSON body. +If the request has failed, it will extract the “error” from the JSON response and raise an AuthAPIError.

+
+
Parameters
+
    +
  • result – Items to extract. Will raise an AuthAPIError if not all items were fetched.

  • +
  • ignore_status_codes – If one of these status codes is returned (e.g. 404), +it gets ignored and a None is returned instead.

  • +
+
+
Returns
+

Tuple of items enumerated in the result list. If there’s only one item, it will +return just that item.

+
+
+
+ +
+
+splitgraph.cloud.get_headers()
+
+ +
+
+splitgraph.cloud.get_remote_param(remote: str, key: str) str
+
+ +
+
+splitgraph.cloud.get_token_claim(jwt, claim)
+

Extract a claim from a JWT token without validating it.

+
+ +
+
+splitgraph.cloud.handle_gql_errors(func: Callable[[...], requests.models.Response]) Callable[[...], requests.models.Response]
+

A decorator that handles responses from the GQL API, transforming errors into exceptions.

+
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.commandline.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.commandline.mdx new file mode 100644 index 00000000..2884d556 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.commandline.mdx @@ -0,0 +1,245 @@ + + + +export const meta = { + title: "splitgraph.commandline package", + id: "splitgraph.commandline package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.commandline.cloud module

+

Command line routines related to registering/setting up connections to the Splitgraph registry.

+
+
+

splitgraph.commandline.common module

+

Various common functions used by the command line interface.

+
+
+class splitgraph.commandline.common.ImageType(default: Optional[str] = 'latest', repository_exists: bool = False, get_image: bool = False)
+

Bases: click.types.ParamType

+

Parser that extracts the full image specification (repository and hash/tag).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context]) Tuple[Repository, Optional[Union[Image, str]]]
+

Image specification must have the format [NAMESPACE/]REPOSITORY[:HASH_OR_TAG].

+

The parser returns a tuple of (repository object, tag or hash).

+
+ +
+
+name = 'Image'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.JsonType
+

Bases: click.types.ParamType

+

Parser for Json – a wrapper around json.loads because without specifying +the name Click shows the type for the option/arg as LOADS.

+

Also supports passing JSON files (pass in @filename.json).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Json'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.RepositoryType(exists: bool = False)
+

Bases: click.types.ParamType

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context]) Repository
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Repository'
+

the descriptive name of this type

+
+ +
+ +
+
+splitgraph.commandline.common.emit_sql_results(results, use_json=False, show_all=False)
+
+ +
+
+splitgraph.commandline.common.load_json_param(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+
+ +
+
+splitgraph.commandline.common.remote_switch_option(*names, **kwargs)
+

Adds an option to switch global SG_ENGINE for this invocation of sgr.

+

This is useful for e.g. tagging or viewing image information on a remote +registry. This is not used in operations like commit/checkout (even though +nothing is preventing SG_ENGINE switch from working on that if the remote engine +supports this), the user should switch SG_ENGINE envvar themselves in that case.

+
+
Parameters
+
    +
  • names – Names

  • +
  • kwargs – Passed to click.option

  • +
+
+
+
+ +
+
+splitgraph.commandline.common.sql_results_to_str(results: List[Tuple[Any]], use_json: bool = False) str
+
+ +
+
+

splitgraph.commandline.engine module

+
+
+splitgraph.commandline.engine.inject_config_into_engines(engine_prefix, config_path)
+

Copy the current config into all engines that are managed by sgr engine. This +is so that the engine has the right credentials and settings for when we do +layered querying (a Postgres client queries the engine directly and it +has to download objects etc).

+
+
Parameters
+
    +
  • engine_prefix – Prefix for Docker containers that are considered to be engines

  • +
  • config_path – Path to the config file.

  • +
+
+
+
+ +
+
+splitgraph.commandline.engine.list_engines(prefix, include_all=False, unavailable_ok=True)
+
+ +
+
+

splitgraph.commandline.example module

+

Command line routines generating example data / Splitfiles

+
+
+splitgraph.commandline.example.alter_table(repository: Repository, table_name: str, rows_added: int, rows_deleted: int, rows_updated: int) None
+

Alters the example table, adding/updating/deleting a certain number of rows.

+
+
Parameters
+
    +
  • repository – Checked-out Repository object.

  • +
  • table_name – Name of the table

  • +
  • rows_added – Number of rows to add

  • +
  • rows_deleted – Number of rows to remove

  • +
  • rows_updated – Number of rows to update

  • +
+
+
+
+ +
+
+splitgraph.commandline.example.generate_table(repository: Repository, table_name: str, size: int) None
+

Creates a table with an integer primary key and a string value.

+
+
Parameters
+
    +
  • repository – Checked-out Repository to create the table in.

  • +
  • table_name – Name of the table to generate

  • +
  • size – Number of rows in the table.

  • +
+
+
+
+ +
+
+

splitgraph.commandline.image_creation module

+

sgr commands related to creating and checking out images

+
+
+

splitgraph.commandline.image_info module

+

sgr commands related to getting information out of / about images

+
+
+

splitgraph.commandline.ingestion module

+

Command line tools for ingesting/exporting Splitgraph images into other formats.

+
+
+

splitgraph.commandline.misc module

+

Miscellaneous image management sgr commands.

+
+
+

splitgraph.commandline.mount module

+

sgr commands related to mounting databases via Postgres FDW

+
+
+

splitgraph.commandline.push_pull module

+

sgr commands related to sharing and downloading images.

+
+
+

splitgraph.commandline.splitfile module

+

sgr commands related to building and rebuilding Splitfiles.

+
+
+

Module contents

+

Splitgraph command line client

+

Hooks into the API to allow management of Splitgraph repositories and images using sgr.

+
+
+class splitgraph.commandline.ClickHandler(level=0)
+

Bases: logging.Handler

+
+
+emit(record)
+

Do whatever it takes to actually log the specified logging record.

+

This version is intended to be implemented by subclasses and so +raises a NotImplementedError.

+
+ +
+ +
+
+class splitgraph.commandline.WithExceptionHandler(name=None, commands=None, **attrs)
+

Bases: click.core.Group

+
+
+get_command(ctx, cmd_name)
+

Given a context and a command name, this returns a +Command object if it exists or returns None.

+
+ +
+
+invoke(ctx)
+

Given a context, this invokes the attached callback (if it exists) +in the right way.

+
+ +
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.config.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.config.mdx new file mode 100644 index 00000000..4f9c6ed0 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.config.mdx @@ -0,0 +1,392 @@ + + + +export const meta = { + title: "splitgraph.config package", + id: "splitgraph.config package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.config.argument_config module

+
+
+splitgraph.config.argument_config.get_arg_tuples() List[Tuple[str, str]]
+

Get the raw (argN, argN+1) tuples from sys.argv

+

We could also use click to parse the flags ahead of time, and then pass +the parsed flag object into SystemConfigGetters. But this way, we avoid +having to pass down variables from click just to get config values.

+
+ +
+
+splitgraph.config.argument_config.get_argument_config_value(key: str, default_return: Optional[str] = None) Optional[str]
+

Get get the value of an argument, where value is the argument +immediately following the argument matching a key in ARG_KEYS, e.g.:

+
+

SYS_ARGS = [”–namespace”, “foo”] +–> return “foo”

+
+

Otherwise, return default_return

+
+ +
+
+

splitgraph.config.config module

+
+
+splitgraph.config.config.chain_getters(getters: Sequence[Callable[[str], Optional[str]]], key: str, default_return: Optional[str] = None) Optional[str]
+
+ +
+
+splitgraph.config.config.create_config_dict() Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create and return a dict of all known config values

+
+ +
+
+splitgraph.config.config.get_all_in_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str) Dict[str, Union[Dict[str, str], str]]
+

Get all subsections from a config (e.g. config[“data_sources”])

+
+ +
+
+splitgraph.config.config.get_all_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str) Dict[str, str]
+
+ +
+
+splitgraph.config.config.get_from_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, item: str) str
+
+ +
+
+splitgraph.config.config.get_from_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str) str
+

Return a singleton variable from a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.get_singleton(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], item: str) str
+

Return a singleton (not a section) variable from the config.

+
+ +
+
+splitgraph.config.config.lazy_get_config_value(key: str, default_return: Optional[str] = None) Optional[Union[str, Dict[str, Dict[str, str]]]]
+

Get the config value for a key in the following precedence +Otherwise return default_return

+
+ +
+
+splitgraph.config.config.patch_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], patch: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Recursively updates a nested configuration dictionary:

+
+
patch_config(
+
&lbrace;“key_1”: “value_1”,

“dict_1”: &lbrace;“key_1”: “value_1”&rbrace;&rbrace;,

+
+
&lbrace;“key_1”: “value_2”,

“dict_1”: &lbrace;“key_2”: “value_2”&rbrace;&rbrace;) == &lbrace;“key_1”: “value_2”, +“dict_1”: &lbrace;“key_1”: “value_1”, “key_2”: “value_2”&rbrace;&rbrace;

+
+
+
+
+
+
Parameters
+
    +
  • config – Config dictionary

  • +
  • patch – Dictionary with the path

  • +
+
+
Returns
+

New patched dictionary

+
+
+
+ +
+
+splitgraph.config.config.set_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str, value: str) None
+

Set a singleton variable in a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.update_config_dict_from_arguments(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sys.argv +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_env_vars(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading os.environ +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_file(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], sg_config_file: str) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sg_config_file +and overwriting any keys according to the rules in config_file_config

+

Return updated copy of config_dict.

+
+ +
+
+

splitgraph.config.config_file_config module

+
+
+splitgraph.config.config_file_config.accumulate_lists(config_dict: Dict[str, Union[Dict[str, str], str]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Transform a config_dict to “accumulate” objects “nested” via key name

+

Because ConfigParser does not support nesting, we implement our own +syntax via the key names of sections. The ‘:’ character can be used in +section names to specify the left and right key. Example:

+
.ini config             new config_dict
+
+                  ----->
+                    |
+[remote: remote1]   |   &lbrace;
+SG_ENV_VAR=foo      |       **rest_of_config_dict,
+                    |       "remotes": &lbrace;
+[origin: origin1]   |           "remote1": &lbrace;
+SG_ENV_VAR=bar      |               "SG_ENV_VAR": "foo"
+                    |           &rbrace;
+[origin: origin2]   |       &rbrace;,
+SG_ENV_VAR=bax      |       "origins": &lbrace;
+                    |           "origin1": &lbrace;
+                    |               "SG_ENV_VAR": "bar"
+                    |           &rbrace;,
+                    |           "origin2": &lbrace;
+                    |               "SG_ENV_VAR": "bax"
+                    |           &rbrace;
+                    |       &rbrace;
+                    |   &rbrace;
+                    |
+                  ----->
+
+
+

:return a new, updated copy of config_dict

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_config_file(sg_file: str, **kwargs) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create a dict from ConfigParser, apply transformations to it.

+

Return parsed and transformed config_dict.

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_file(sg_file: str, **kwargs) Dict[str, Dict[str, str]]
+
+ +
+
+splitgraph.config.config_file_config.hoist_section(config_dict: Dict[str, Dict[str, str]], section: str = 'defaults') Dict[str, Union[Dict[str, str], str]]
+

If a section exists called <hoist_section>, hoist it to the top level +This is useful for overriding default configs from within a config file

+

Transform config_dict to “hoist” any config values from a section +into the top level (thus, overriding environment variables), +when the name of the section matches hoist_section.

+

Return a new, updated copy of config_dict.

+
+ +
+
+splitgraph.config.config_file_config.transform_config_dict(config_dict: Dict[str, Dict[str, str]], **kwargs) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Apply transformations to the raw ConfigParser.config object

+
+
    +
  1. hoist_section

  2. +
  3. accumulate_lists

  4. +
+
+

Return the a new, updated copy of config_dict.

+
+ +
+
+

splitgraph.config.default_config module

+
+
+splitgraph.config.default_config.get_default_config_value(key: str, default_return: Optional[str] = None) Any
+

Get the hard-coded default value of a config key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.environment_config module

+
+
+splitgraph.config.environment_config.get_environment_config_value(key: str, default_return: Optional[str] = None) Optional[str]
+

Get the environment variable value of the environment variable matching key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.export module

+

Routines for exporting the config back into text.

+
+
+splitgraph.config.export.overwrite_config(new_config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_path: str, include_defaults: bool = False) None
+

Serialize the new config dictionary and overwrite the current config file. +Note: this will delete all comments in the config!

+
+
Parameters
+
    +
  • new_config – Config dictionary.

  • +
  • config_path – Path to the config file.

  • +
  • include_defaults – Whether to include values that are the same +as their defaults.

  • +
+
+
+
+ +
+
+splitgraph.config.export.serialize_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_format: bool, no_shielding: bool, include_defaults: bool = True) str
+

Pretty-print the configuration or print it in the Splitgraph config file format.

+
+
Parameters
+
    +
  • config – Configuration dictionary.

  • +
  • config_format – Output configuration in the Splitgraph config file format.

  • +
  • no_shielding – Don’t replace sensitive values (like passwords) with asterisks

  • +
  • include_defaults – Emit the config variable even if it’s the same as the default.

  • +
+
+
Returns
+

Textual representation of the config.

+
+
+
+ +
+
+splitgraph.config.export.serialize_engine_config(engine_name: str, conn_params: Dict[str, str], no_shielding: bool) str
+

Output the config section with connection parameters for a single engine.

+
+
Parameters
+
    +
  • engine_name – Name of the engine

  • +
  • conn_params – Dictionary of connection parameters

  • +
  • no_shielding – Don’t replace passwords with asterisks

  • +
+
+
+
+ +
+
+

splitgraph.config.keys module

+
+
+splitgraph.config.keys.SENSITIVE_KEY_SUFFIXES = ['_PWD', '_TOKEN']
+

Warning: Every key in DEFAULTS must have a key in ARGUMENT_KEY_MAP +If you add/remove keys from DEFAULTS, make sure to do so here too.

+
+ +
+
+

splitgraph.config.system_config module

+
+
+splitgraph.config.system_config.file_exists(_dir: str, filename: str) bool
+
+ +
+
+splitgraph.config.system_config.get_config_file(default_return: None = None) Optional[str]
+

Get the location of an existing SG_CONFIG_FILE on the system with +a valid name. Do not attempt to parse the config file, just return +its location.

+

Otherwise, return default_return

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_dirs() List[str]
+

Get any explicitly defined config file directories, +which are directories where we should search for files from +VALID_CONFIG_FILE_NAMES.

+

This list is defined similar to $PATH, as a colon (:) delimited +string, either in:

+
+
    +
  • argument flag –config-dirs

  • +
  • or environment key SG_CONFIG_DIRS

  • +
+
+

Or a single directory defined in either

+
+
    +
  • argument flag –config-dir

  • +
  • environment key SG_CONFIG_DIR

  • +
+
+

If both plural and single are defined, join them together.

+

Return a list of valid paths that are set, or an empty list.

+

Print a warning if any paths to not exist.

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_location() Optional[str]
+

Get the explicitly defined location of config file, if defined.

+

The location will either be defined in:

+
+
    +
  • argument flag –config-file

  • +
  • or environment key SG_CONFIG_FILE

  • +
+
+

In keeping with assumptions about priority, argument flag has +higher priority than environment value.

+

If the location is set, and points to an existing file, return location.

+

Otherwise return None

+

Print a warning if location is set but points to non-existing file.

+
+ +
+
+splitgraph.config.system_config.get_system_config_value(key: str, default_return: None = None) Optional[str]
+
+ +
+
+splitgraph.config.system_config.is_file(filename: str) bool
+
+ +
+
+

Module contents

+

The CONFIG object is created and exported once __at import time__ +Calling CONFIG[“KEY”] directly should be sufficient in most cases, +except when a config value has changed since importing CONFIG. +In that case, create_config_dict() can provide an updated config dict

+

Priority (highest to lowest):

+
+
    +
  1. Command line argument values

  2. +
  3. Environment variable values

  4. +
  5. Config file values in [defaults] section

  6. +
  7. DEFAULTS (see keys.py)

  8. +
+
+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.core.indexing.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.core.indexing.mdx new file mode 100644 index 00000000..170c28b2 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.core.indexing.mdx @@ -0,0 +1,141 @@ + + + +export const meta = { + title: "splitgraph.core.indexing package", + id: "splitgraph.core.indexing package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.core.indexing.bloom module

+

Bloom filtering on fragments for equality queries.

+
+
+splitgraph.core.indexing.bloom.describe(index_tuple: Tuple[int, str]) str
+

Returns a pretty-printed summary of the bloom filter

+
+
Parameters
+

index_tuple – Tuple of (k, base64-encoded fingerprint) +returned by generate_bloom_index

+
+
Returns
+

String

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.filter_bloom_index(engine: PsycopgEngine, object_ids: List[str], quals: Any) List[str]
+

Runs a bloom filter on given qualifiers using the given objects’ previously-generated +fingerprints.

+
+
Parameters
+
    +
  • engine – Object engine

  • +
  • object_ids – Object IDs

  • +
  • quals – List of qualifiers

  • +
+
+
Returns
+

List of object IDs that might match the qualifiers in quals (including +IDs that don’t have a bloom index).

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.generate_bloom_index(engine: PsycopgEngine, object_id: str, changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], column: str, probability: Optional[float] = None, size: Optional[int] = None) Tuple[int, str]
+

Generates a bloom filter signature for a given column and a given fragment. Bloom filters +can answer queries asking whether an item is definitely not in a given set or possibly can be.

+

The tradeoff is between the probability of a false positive (item said to be in the set when +it actually isn’t) and the size of the filter.

+

Bloom filters also have an extra parameter, k, or the number of bits in the signature that +a certain item flips. This parameter has an optimal value for a given number of distinct items +or a probability and so isn’t explicitly passed by the user.

+
+
Parameters
+
    +
  • engine – Object engine the fragment is cached in.

  • +
  • object_id – Fragment ID

  • +
  • changeset – Optional, if specified, the old column values are included in the index.

  • +
  • column – Column name to generate the index on.

  • +
  • probability – Probability of a false positive. Either this or the size of the filter must +be specified, but not both.

  • +
  • size – Size of the filter, in bytes.

  • +
+
+
Returns
+

Dictionary to be inserted into the index.

+
+
+
+ +
+
+

splitgraph.core.indexing.range module

+
+
+splitgraph.core.indexing.range.extract_min_max_pks(engine: PsycopgEngine, fragments: List[str], table_pks: List[str], table_pk_types: List[str]) Any
+

Extract minimum/maximum PK values for given fragments.

+
+
Parameters
+
    +
  • engine – Engine the objects live on

  • +
  • fragments – IDs of objects

  • +
  • table_pks – List of columns forming the table primary key

  • +
  • table_pk_types – List of types for table PK columns

  • +
+
+
Returns
+

List of min/max primary key for every object.

+
+
+
+ +
+
+splitgraph.core.indexing.range.filter_range_index(metadata_engine: PsycopgEngine, object_ids: List[str], quals: Any, column_types: Dict[str, str]) List[str]
+
+ +
+
+splitgraph.core.indexing.range.generate_range_index(object_engine: PsycopgEngine, object_id: str, table_schema: TableSchema, changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], columns: Optional[List[str]] = None) Dict[str, Tuple[splitgraph.core.indexing.range.T, splitgraph.core.indexing.range.T]]
+

Calculate the minimum/maximum values of every column in the object (including deleted values).

+
+
Parameters
+
    +
  • object_engine – Engine the object is located on

  • +
  • object_id – ID of the object.

  • +
  • table_schema – Schema of the table

  • +
  • changeset – Changeset (old values will be included in the index)

  • +
  • columns – Columns to run the index on (default all)

  • +
+
+
Returns
+

Dictionary of &lbrace;column: [min, max]&rbrace;

+
+
+
+ +
+
+splitgraph.core.indexing.range.quals_to_sql(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], column_types: Dict[str, str]) Tuple[psycopg2.sql.Composable, Tuple]
+

Convert a list of qualifiers in CNF to a fragment of a Postgres query +:param quals: Qualifiers in CNF +:param column_types: Dictionary of column names and their types +:return: SQL Composable object and a tuple of arguments to be mogrified into it.

+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.core.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.core.mdx new file mode 100644 index 00000000..37226fcd --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.core.mdx @@ -0,0 +1,2156 @@ + + + +export const meta = { + title: "splitgraph.core package", + id: "splitgraph.core package" +}; + +
+ +
+

Subpackages

+ +
+
+

Submodules

+
+
+

splitgraph.core.common module

+

Common internal functions used by Splitgraph commands.

+
+
+class splitgraph.core.common.CallbackList(iterable=(), /)
+

Bases: list

+

Used to pass around and call multiple callbacks at once.

+
+ +
+
+class splitgraph.core.common.Tracer
+

Bases: object

+

Accumulates events and returns the times between them.

+
+
+get_durations() List[Tuple[str, float]]
+

Return all events and durations between them. +:return: List of (event name, time to this event from the previous event (or start))

+
+ +
+
+get_total_time() float
+
+
Returns
+

Time from start to the final logged event.

+
+
+
+ +
+
+log(event: str) None
+

Log an event at the current time +:param event: Event name

+
+ +
+ +
+
+splitgraph.core.common.adapt(value: Any, pg_type: str) Any
+

Coerces a value with a PG type into its Python equivalent.

+
+
Parameters
+
    +
  • value – Value

  • +
  • pg_type – Postgres datatype

  • +
+
+
Returns
+

Coerced value.

+
+
+
+ +
+
+splitgraph.core.common.aggregate_changes(query_result: List[Tuple[int, int]], initial: Optional[Tuple[int, int, int]] = None) Tuple[int, int, int]
+

Add a changeset to the aggregated diff result

+
+ +
+
+splitgraph.core.common.coerce_val_to_json(val: Any) Any
+

Turn a Python value to a string/float that can be stored as JSON.

+
+ +
+
+splitgraph.core.common.ensure_metadata_schema(engine: PsycopgEngine) None
+

Create or migrate the metadata schema splitgraph_meta that stores the hash tree of schema +snapshots (images), tags and tables. +This means we can’t mount anything under the schema splitgraph_meta – much like we can’t have a folder +“.git” under Git version control…

+
+ +
+
+splitgraph.core.common.gather_sync_metadata(target: Repository, source: Repository, overwrite_objects=False, overwrite_tags=False, single_image: Optional[str] = None) Any
+

Inspects two Splitgraph repositories and gathers metadata that is required to bring target up to +date with source.

+
+
Parameters
+
    +
  • target – Target Repository object

  • +
  • source – Source repository object

  • +
  • overwrite_objects – If True, will return metadata for all objects +belonging to new images (or existing image if single_image=True)

  • +
  • single_image – If set, only grab a single image with this hash/tag from the source.

  • +
  • overwrite_tags – If True and single_image is set, will return all tags for that image. +If single_image is not set, will return all tags in the source repository. +If False, will only return tags in the source that don’t exist on the target.

  • +
+
+
Returns
+

Tuple of metadata for new_images, new_tables, object_locations, object_meta, tags

+
+
+
+ +
+
+splitgraph.core.common.get_temporary_table_id() str
+

Generate a random ID for temporary/staging objects that haven’t had their ID calculated yet.

+
+ +
+
+splitgraph.core.common.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.common.manage_audit(func: Callable) Callable
+

A decorator to be put around various Splitgraph commands +that adds/removes audit triggers for new/committed/deleted tables.

+
+ +
+
+splitgraph.core.common.manage_audit_triggers(engine: PostgresEngine, object_engine: Optional[PostgresEngine] = None) None
+

Does bookkeeping on audit triggers / audit table:

+
+
    +
  • Detect tables that are being audited that don’t need to be any more +(e.g. they’ve been unmounted)

  • +
  • Drop audit triggers for those and delete all audit info for them

  • +
  • Set up audit triggers for new tables

  • +
+
+

If the metadata engine isn’t the same as the object engine, this does nothing.

+
+
Parameters
+
    +
  • engine – Metadata engine with information about images and their checkout state

  • +
  • object_engine – Object engine where the checked-out table and the audit triggers are located.

  • +
+
+
+
+ +
+
+splitgraph.core.common.set_head(repository: Repository, image: Optional[str]) None
+

Sets the HEAD pointer of a given repository to a given image. Shouldn’t be used directly.

+
+ +
+
+splitgraph.core.common.set_tag(repository: Repository, image_hash: Optional[str], tag: str) None
+

Internal function – add a tag to an image.

+
+ +
+
+splitgraph.core.common.set_tags_batch(repository: Repository, hashes_tags: List[Tuple[str, str]]) None
+
+ +
+
+splitgraph.core.common.slow_diff(repository: Repository, table_name: str, image_1: Optional[str], image_2: Optional[str], aggregate: bool) Union[Tuple[int, int, int], List[Tuple[bool, Tuple]]]
+

Materialize both tables and manually diff them

+
+ +
+
+

splitgraph.core.engine module

+

Routines for managing Splitgraph engines, including looking up repositories and managing objects.

+
+
+splitgraph.core.engine.get_current_repositories(engine: PostgresEngine) List[Tuple[Repository, Optional[Image]]]
+

Lists all repositories currently in the engine.

+
+
Parameters
+

engine – Engine

+
+
Returns
+

List of (Repository object, current HEAD image)

+
+
+
+ +
+
+splitgraph.core.engine.init_engine(skip_object_handling: bool = False) None
+

Initializes the engine by:

+
+
    +
  • performing any required engine-custom initialization

  • +
  • creating the metadata tables

  • +
+
+
+
Parameters
+

skip_object_handling – If True, skips installing routines related to +object handling and checkouts (like audit triggers and CStore management).

+
+
+
+ +
+
+splitgraph.core.engine.lookup_repository(name: str, include_local: bool = False) Repository
+

Queries the SG engines on the lookup path to locate one hosting the given repository.

+
+
Parameters
+
    +
  • name – Repository name

  • +
  • include_local – If True, also queries the local engine

  • +
+
+
Returns
+

Local or remote Repository object

+
+
+
+ +
+
+splitgraph.core.engine.repository_exists(repository: Repository) bool
+

Checks if a repository exists on the engine.

+
+
Parameters
+

repository – Repository object

+
+
+
+ +
+
+

splitgraph.core.fdw_checkout module

+
+
+

splitgraph.core.fragment_manager module

+

Routines related to storing tables as fragments.

+
+
+class splitgraph.core.fragment_manager.Digest(shorts: Tuple[int, ...])
+

Bases: object

+

Homomorphic hashing similar to LtHash (but limited to being backed by 256-bit hashes). The main property is that +for any rows A, B, LtHash(A) + LtHash(B) = LtHash(A+B). This is done by construction: we simply hash individual +rows and then do bit-wise addition / subtraction of individual hashes to come up with the full table hash.

+

Hence, the content hash of any Splitgraph table fragment is the sum of hashes of its added rows minus the sum +of hashes of its deleted rows (including the old values of the rows that have been updated). This has a very +useful implication: the hash of a full Splitgraph table is equal to the sum of hashes of its individual fragments.

+

This property can be used to simplify deduplication.

+
+
+classmethod empty() splitgraph.core.fragment_manager.Digest
+

Return an empty Digest instance such that for any Digest D, D + empty == D - empty == D

+
+ +
+
+classmethod from_hex(hex_string: str) splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 64-characters (256-bit) hexadecimal string

+
+ +
+
+classmethod from_memoryview(memory: Union[bytes, memoryview]) splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 256-bit memoryview/bytearray.

+
+ +
+
+hex() str
+

Convert the hash into a hexadecimal value.

+
+ +
+ +
+
+class splitgraph.core.fragment_manager.FragmentManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.metadata_manager.MetadataManager

+

A storage engine for Splitgraph tables. Each table can be stored as one or more immutable fragments that can +optionally overwrite each other. When a new table is created, it’s split up into multiple base fragments. When +a new version of the table is written, the audit log is inspected and one or more patch fragments are created, +to be based on the fragments the previous version of the table consisted of. Only the top fragments in this stack +are stored in the table metadata: to reconstruct the whole table, the links from the top fragments down to the +base fragments have to be followed.

+

In addition, the fragments engine also supports min-max indexing on fragments: this is used to only fetch fragments +that are required for a given query.

+
+
+calculate_content_hash(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None, chunk_condition_sql: Optional[psycopg2.sql.Composable] = None, chunk_condition_args: Optional[List[Any]] = None) Tuple[str, int]
+

Calculates the homomorphic hash of table contents.

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Name of the table

  • +
  • table_schema – Schema of the table

  • +
  • chunk_condition_sql – Column the table is partitioned on

  • +
  • chunk_condition_args – Column value to get rows from

  • +
+
+
Returns
+

A 64-character (256-bit) hexadecimal string with the content hash of the table +and the number of rows in the hash.

+
+
+
+ +
+
+calculate_fragment_insertion_hash_stats(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None) Tuple[splitgraph.core.fragment_manager.Digest, int]
+

Calculate the homomorphic hash of just the rows that a given fragment inserts +:param schema: Schema the fragment is stored in. +:param table: Name of the table the fragment is stored in. +:return: A Digest object and the number of inserted rows

+
+ +
+
+create_base_fragment(source_schema: str, source_table: str, namespace: str, chunk_condition_sql: Optional[psycopg2.sql.Composable] = None, chunk_condition_args: Optional[List[Any]] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None) str
+
+ +
+
+delete_objects(objects: Union[Set[str], List[str]]) None
+

Deletes objects from the Splitgraph cache

+
+
Parameters
+

objects – A sequence of objects to be deleted

+
+
+
+ +
+
+filter_fragments(object_ids: List[str], table: Table, quals: Any) List[str]
+

Performs fuzzy filtering on the given object IDs using the index and a set of qualifiers, discarding +objects that definitely do not match the qualifiers.

+
+
Parameters
+
    +
  • object_ids – List of object IDs to filter.

  • +
  • table – A Table object the objects belong to.

  • +
  • quals

    List of qualifiers in conjunctive normal form that will be matched against the index. +Objects that definitely don’t match these qualifiers will be discarded.

    +

    A list containing [[qual_1, qual_2], [qual_3, qual_4]] will be interpreted as +(qual_1 OR qual_2) AND (qual_3 OR qual_4).

    +

    Each qual is a tuple of (column_name, operator, value) where +operator can be one of >, >=, <, <=, =.

    +

    For unknown operators, it will be assumed that all fragments might match that clause.

    +

  • +
+
+
Returns
+

List of objects that might match the given qualifiers.

+
+
+
+ +
+
+generate_object_index(object_id: str, table_schema: List[splitgraph.core.types.TableColumn], changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None) Dict[str, Any]
+

Queries the max/min values of a given fragment for each column, used to speed up querying.

+
+
Parameters
+
    +
  • object_id – ID of an object

  • +
  • table_schema – Schema of the table the object belongs to.

  • +
  • changeset – Optional, if specified, the old row values are included in the index.

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
Returns
+

Dict containing the object index.

+
+
+
+ +
+
+generate_surrogate_pk(table: Table, object_pks: List[Tuple[Any, Any]]) List[Tuple[Any, Any]]
+

When partitioning data, if the table doesn’t have a primary key, we use a “surrogate” +primary key by concatenating the whole row as a string on the PG side (this is because +the whole row can sometimes contain NULLs which we can’t compare in PG).

+

We need to mimic this when calculating if the objects we’re about to scan through +overlap: e.g. using string comparison, “(some_country, 100)” < “(some_country, 20)”, +whereas using typed comparison, (some_country, 100) > (some_country, 20).

+

To do this, we use a similar hack from when calculating changeset hashes: to avoid having +to reproduce how PG’s ::text works, we give it back the rows and get it to cast them +to text for us.

+
+ +
+
+get_min_max_pks(fragments: List[str], table_pks: List[Tuple[str, str]]) List[Tuple[Tuple, Tuple]]
+

Get PK ranges for given fragments using the index (without reading the fragments).

+
+
Parameters
+
    +
  • fragments – List of object IDs (must be registered and with the same schema)

  • +
  • table_pks – List of tuples (column, type) that form the object PK.

  • +
+
+
Returns
+

List of (min, max) PK for every fragment where PK is a tuple. +If a fragment doesn’t exist or doesn’t have a corresponding index entry, +a SplitGraphError is raised.

+
+
+
+ +
+
+record_table_as_base(repository: Repository, table_name: str, image_hash: str, chunk_size: Optional[int] = 10000, source_schema: Optional[str] = None, source_table: Optional[str] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None) List[str]
+

Copies the full table verbatim into one or more new base fragments and registers them.

+
+
Parameters
+
    +
  • repository – Repository

  • +
  • table_name – Table name

  • +
  • image_hash – Hash of the new image

  • +
  • chunk_size – If specified, splits the table into multiple objects with a given number of rows

  • +
  • source_schema – Override the schema the source table is stored in

  • +
  • source_table – Override the name of the table the source is stored in

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Key to sort data inside each chunk by.

  • +
  • overwrite – Overwrite physical objects that already exist.

  • +
  • table_schema – Override the columns that will be picked from the original table +(e.g. to change their order or primary keys). Note that the schema must be a subset +of the original schema and this method doesn’t verify PK constraints.

  • +
+
+
+
+ +
+
+record_table_as_patch(old_table: Table, schema: str, image_hash: str, new_schema_spec: List[splitgraph.core.types.TableColumn] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False) None
+

Flushes the pending changes from the audit table for a given table and records them, +registering the new objects.

+
+
Parameters
+
    +
  • old_table – Table object pointing to the current HEAD table

  • +
  • schema – Schema the table is checked out into.

  • +
  • image_hash – Image hash to store the table under

  • +
  • new_schema_spec – New schema of the table (use the old table’s schema by default).

  • +
  • split_changeset – See Repository.commit for reference

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
+
+ +
+
+split_changeset_boundaries(changeset, change_key, objects)
+
+ +
+ +
+
+splitgraph.core.fragment_manager.get_chunk_groups(chunks: List[Tuple[str, Any, Any]]) List[List[Tuple[str, Any, Any]]]
+

Takes a list of chunks and their boundaries and combines them +into independent groups such that chunks from no two groups +overlap with each other (intervals are assumed to be closed, +e.g. chunk (1,2) overlaps with chunk (2,3)).

+

The original order of chunks is preserved within each group.

+

For example, 4 chunks A, B, C, D that don’t overlap each other +will be grouped into 4 groups [A], [B], [C], [D].

+

If A overlaps B, the result will be [A, B], [C], [D].

+

If in addition B overlaps C (but not A), the result will be [A, B, C], [D].

+

If in addition D overlaps any of A, B or C, the result will be [A, B, C, D] +(despite that D is located before A: it will be last since it was last in the +original list).

+
+
Parameters
+

chunks – List of (chunk_id, start, end)

+
+
Returns
+

List of lists of (chunk_id, start, end)

+
+
+
+ +
+
+

splitgraph.core.image module

+

Image representation and provenance

+
+
+class splitgraph.core.image.Image(image_hash: str, parent_id: Optional[str], created: datetime.datetime, comment: str, provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], repository: Repository)
+

Bases: tuple

+

Represents a Splitgraph image. Should’t be created directly, use Image-loading methods in the +splitgraph.core.repository.Repository class instead.

+
+
+checkout(force: bool = False, layered: bool = False) None
+

Checks the image out, changing the current HEAD pointer. Raises an error +if there are pending changes to its checkout.

+
+
Parameters
+
    +
  • force – Discards all pending changes to the schema.

  • +
  • layered – If True, uses layered querying to check out the image (doesn’t materialize tables +inside of it).

  • +
+
+
+
+ +
+
+comment: str
+

Alias for field number 3

+
+ +
+
+created: datetime.datetime
+

Alias for field number 2

+
+ +
+
+delete_tag(tag: str) None
+

Deletes a tag from an image.

+
+
Parameters
+

tag – Tag to delete.

+
+
+
+ +
+
+property engine
+
+ +
+
+get_log() List[splitgraph.core.image.Image]
+

Repeatedly gets the parent of a given image until it reaches the bottom.

+
+ +
+
+get_parent_children() Tuple[Optional[str], List[str]]
+

Gets the parent and a list of children of a given image.

+
+ +
+
+get_size() int
+

Get the physical size used by the image’s objects (including those that might be +shared with other images).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of image’s +objects have been downloaded.

+
+
Returns
+

Size of the image in bytes.

+
+
+
+ +
+
+get_table(table_name: str) splitgraph.core.table.Table
+

Returns a Table object representing a version of a given table. +Contains a list of objects that the table is linked to and the table’s schema.

+
+
Parameters
+

table_name – Name of the table

+
+
Returns
+

Table object

+
+
+
+ +
+
+get_tables() List[str]
+

Gets the names of all tables inside of an image.

+
+ +
+
+get_tags()
+

Lists all tags that this image has.

+
+ +
+
+image_hash: str
+

Alias for field number 0

+
+ +
+
+lq_checkout(target_schema: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', only_tables: Optional[List[str]] = None) None
+

Intended to be run on the sgr side. Initializes the FDW for all tables in a given image, +allowing to query them directly without materializing the tables.

+
+ +
+
+property object_engine
+
+ +
+
+parent_id: Optional[str]
+

Alias for field number 1

+
+ +
+
+provenance(reverse=False, engine=None) List[Tuple[Repository, str]]
+

Inspects the image’s parent chain to come up with a set of repositories and their hashes +that it was created from.

+

If reverse is True, returns a list of images that were created _from_ this image. If +this image is on a remote repository, engine can be passed in to override the engine +used for the lookup of dependents.

+
+
Returns
+

List of (repository, image_hash)

+
+
+
+ +
+
+provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]
+

Alias for field number 4

+
+ +
+
+query_schema(wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', commit: bool = True) Iterator[str]
+

Creates a temporary schema with tables in this image mounted as foreign tables that can be accessed via +read-only layered querying. On exit from the context manager, the schema is discarded.

+
+
Returns
+

The name of the schema the image is located in.

+
+
+
+ +
+
+repository: Repository
+

Alias for field number 5

+
+ +
+
+set_provenance(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]) None
+

Sets the image’s provenance. Internal function called by the Splitfile interpreter, shouldn’t +be called directly as it changes the image after it’s been created.

+
+
Parameters
+

provenance_data – List of parsed Splitfile commands and their data.

+
+
+
+ +
+
+tag(tag: str) None
+

Tags a given image. All tags are unique inside of a repository. If a tag already exists, it’s removed +from the previous image and given to the new image.

+
+
Parameters
+

tag – Tag to set. ‘latest’ and ‘HEAD’ are reserved tags.

+
+
+
+ +
+
+to_splitfile(ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None) List[str]
+

Recreate the Splitfile that can be used to reconstruct this image.

+
+
Parameters
+
    +
  • ignore_irreproducible – If True, ignore commands from irreproducible Splitfile lines +(like MOUNT or custom commands) and instead emit a comment (this results in an invalid Splitfile).

  • +
  • source_replacement – A dictionary of repositories and image hashes/tags specifying how to replace the +dependencies of this Splitfile (table imports and FROM commands).

  • +
+
+
Returns
+

A list of Splitfile commands that can be fed back into the executor.

+
+
+
+ +
+ +
+
+splitgraph.core.image.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.image.reconstruct_splitfile(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None) List[str]
+

Recreate the Splitfile that can be used to reconstruct an image.

+
+ +
+
+

splitgraph.core.image_manager module

+
+
+class splitgraph.core.image_manager.ImageManager(repository: Repository)
+

Bases: object

+

Collects various image-related functions.

+
+
+add(parent_id: Optional[str], image: str, created: Optional[datetime.datetime] = None, comment: Optional[str] = None, provenance_data: Optional[List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]] = None) None
+

Registers a new image in the Splitgraph image tree.

+

Internal method used by actual image creation routines (committing, importing or pulling).

+
+
Parameters
+
    +
  • parent_id – Parent of the image

  • +
  • image – Image hash

  • +
  • created – Creation time (defaults to current timestamp)

  • +
  • comment – Comment (defaults to empty)

  • +
  • provenance_data – Provenance data that can be used to reconstruct the image.

  • +
+
+
+
+ +
+
+add_batch(images: List[splitgraph.core.image.Image]) None
+

Like add, but registers multiple images at the same time. Used in push/pull +to avoid a roundtrip to the registry for each image +:param images: List of Image objects. Namespace and repository will be patched

+
+

with this repository.

+
+
+ +
+
+by_hash(image_hash: str) splitgraph.core.image.Image
+

Returns an image corresponding to a given (possibly shortened) image hash. If the image hash +is ambiguous, raises an error. If the image does not exist, raises an error or returns None.

+
+
Parameters
+

image_hash – Image hash (can be shortened).

+
+
Returns
+

Image

+
+
+
+ +
+
+by_tag(tag: str, raise_on_none: bool = True) Optional[splitgraph.core.image.Image]
+

Returns an image with a given tag

+
+
Parameters
+
    +
  • tag – Tag. ‘latest’ is a special case: it returns the most recent image in the repository.

  • +
  • raise_on_none – Whether to raise an error or return None if the tag doesn’t exist.

  • +
+
+
+
+ +
+
+delete(images: Iterable[str]) None
+

Deletes a set of Splitgraph images from the repository. Note this doesn’t check whether +this will orphan some other images in the repository and can make the state of the repository +invalid.

+

Image deletions won’t be replicated on push/pull (those can only add new images).

+
+
Parameters
+

images – List of image IDs

+
+
+
+ +
+
+get_all_child_images(start_image: str) Set[str]
+

Get all children of start_image of any degree.

+
+ +
+
+get_all_parent_images(start_images: Set[str]) Set[str]
+

Get all parents of the ‘start_images’ set of any degree.

+
+ +
+ +
+
+

splitgraph.core.metadata_manager module

+

Classes related to managing table/image/object metadata tables.

+
+
+class splitgraph.core.metadata_manager.MetadataManager(metadata_engine: PsycopgEngine)
+

Bases: object

+

A data access layer for the metadata tables in the splitgraph_meta schema that concerns itself +with image, table and object information.

+
+
+cleanup_metadata() List[str]
+

Go through the current metadata and delete all objects that aren’t required +by any table on the engine.

+
+
Returns
+

List of objects that have been deleted.

+
+
+
+ +
+
+delete_object_meta(object_ids: Sequence[str])
+

Delete metadata for multiple objects (external locations, indexes, hashes). +This doesn’t delete physical objects.

+
+
Parameters
+

object_ids – Object IDs to delete

+
+
+
+ +
+
+get_all_objects() List[str]
+

Gets all objects currently in the Splitgraph tree.

+
+
Returns
+

List of object IDs.

+
+
+
+ +
+
+get_external_object_locations(objects: List[str]) List[Tuple[str, str, str]]
+

Gets external locations for objects.

+
+
Parameters
+

objects – List of object IDs stored externally.

+
+
Returns
+

List of (object_id, location, protocol).

+
+
+
+ +
+
+get_new_objects(object_ids: List[str]) List[str]
+

Get object IDs from the passed list that don’t exist in the tree.

+
+
Parameters
+

object_ids – List of objects to check

+
+
Returns
+

List of unknown object IDs.

+
+
+
+ +
+
+get_object_meta(objects: List[str]) Dict[str, splitgraph.core.metadata_manager.Object]
+

Get metadata for multiple Splitgraph objects from the tree

+
+
Parameters
+

objects – List of objects to get metadata for.

+
+
Returns
+

Dictionary of object_id -> Object

+
+
+
+ +
+
+get_objects_for_repository(repository: Repository, image_hash: Optional[str] = None) List[str]
+
+ +
+
+get_unused_objects(threshold: Optional[int] = None) List[Tuple[str, datetime.datetime]]
+

Get a list of all objects in the metadata that aren’t used by any table and can be +safely deleted.

+
+
Parameters
+

threshold – Only return objects that were created earlier than this (in minutes)

+
+
Returns
+

List of objects and their creation times.

+
+
+
+ +
+
+overwrite_table(repository: Repository, image_hash: str, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+
+ +
+
+register_object_locations(object_locations: List[Tuple[str, str, str]]) None
+

Registers external locations (e.g. HTTP or S3) for Splitgraph objects. +Objects must already be registered in the object tree.

+
+
Parameters
+

object_locations – List of (object_id, location, protocol).

+
+
+
+ +
+
+register_objects(objects: List[splitgraph.core.metadata_manager.Object], namespace: Optional[str] = None) None
+

Registers multiple Splitgraph objects in the tree.

+
+
Parameters
+
    +
  • objects – List of Object objects.

  • +
  • namespace – If specified, overrides the original object namespace, required +in the case where the remote repository has a different namespace than the local one.

  • +
+
+
+
+ +
+
+register_tables(repository: Repository, table_meta: List[Tuple[str, str, List[splitgraph.core.types.TableColumn], List[str]]]) None
+

Links tables in an image to physical objects that they are stored as. +Objects must already be registered in the object tree.

+
+
Parameters
+
    +
  • repository – Repository that the tables belong to.

  • +
  • table_meta – A list of (image_hash, table_name, table_schema, object_ids).

  • +
+
+
+
+ +
+ +
+
+class splitgraph.core.metadata_manager.Object(object_id: str, format: str, namespace: str, size: int, created: datetime.datetime, insertion_hash: str, deletion_hash: str, object_index: Dict[str, Any], rows_inserted: int, rows_deleted: int)
+

Bases: tuple

+

Represents a Splitgraph object that tables are composed of.

+
+
+created: datetime.datetime
+

Alias for field number 4

+
+ +
+
+deletion_hash: str
+

Alias for field number 6

+
+ +
+
+format: str
+

Alias for field number 1

+
+ +
+
+insertion_hash: str
+

Alias for field number 5

+
+ +
+
+namespace: str
+

Alias for field number 2

+
+ +
+
+object_id: str
+

Alias for field number 0

+
+ +
+
+object_index: Dict[str, Any]
+

Alias for field number 7

+
+ +
+
+rows_deleted: int
+

Alias for field number 9

+
+ +
+
+rows_inserted: int
+

Alias for field number 8

+
+ +
+
+size: int
+

Alias for field number 3

+
+ +
+ +
+
+

splitgraph.core.migration module

+
+
+splitgraph.core.migration.get_installed_version(engine: PsycopgEngine, schema_name: str, version_table: str = 'version') Optional[Tuple[str, datetime.datetime]]
+
+ +
+
+splitgraph.core.migration.get_version_tuples(filenames: List[str]) List[Tuple[Optional[str], str]]
+
+ +
+
+splitgraph.core.migration.make_file_list(schema_name: str, migration_path: List[Optional[str]])
+

Construct a list of file names from history of versions and schema name

+
+ +
+
+splitgraph.core.migration.set_installed_version(engine: PsycopgEngine, schema_name: str, version: str, version_table: str = 'version')
+
+ +
+
+splitgraph.core.migration.source_files_to_apply(engine: PsycopgEngine, schema_name: str, schema_files: List[str], version_table: str = 'version', static: bool = False, target_version: Optional[str] = None) Tuple[List[str], str]
+

Get the ordered list of .sql files to apply to the database

+
+ +
+
+

splitgraph.core.object_manager module

+

Functions related to creating, deleting and keeping track of physical Splitgraph objects.

+
+
+class splitgraph.core.object_manager.ObjectManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.fragment_manager.FragmentManager

+

Brings the multiple manager classes together and manages the object cache (downloading and uploading +objects as required in order to fulfill certain queries)

+
+
+cleanup() List[str]
+

Deletes all objects in the object_tree not required by any current repository, including their dependencies and +their remote locations. Also deletes all objects not registered in the object_tree.

+
+ +
+
+download_objects(source: Optional[splitgraph.core.object_manager.ObjectManager], objects_to_fetch: List[str], object_locations: List[Tuple[str, str, str]]) List[str]
+

Fetches the required objects from the remote and stores them locally. +Does nothing for objects that already exist.

+
+
Parameters
+
    +
  • source – Remote ObjectManager. If None, will only try to download objects from the external location.

  • +
  • objects_to_fetch – List of object IDs to download.

  • +
  • object_locations – List of custom object locations, encoded as tuples (object_id, object_url, protocol).

  • +
+
+
+
+ +
+
+ensure_objects(table: Optional[Table], objects: Optional[List[str]] = None, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]] = None, defer_release: bool = False, tracer: Optional[splitgraph.core.common.Tracer] = None, upstream_manager: Optional[ObjectManager] = None) Iterator[Union[List[str], Tuple[List[str], splitgraph.core.common.CallbackList]]]
+

Resolves the objects needed to materialize a given table and makes sure they are in the local +splitgraph_meta schema.

+

Whilst inside this manager, the objects are guaranteed to exist. On exit from it, the objects are marked as +unneeded and can be garbage collected.

+
+
Parameters
+
    +
  • table – Table to materialize

  • +
  • objects – List of objects to download: one of table or objects must be specified.

  • +
  • quals – Optional list of qualifiers to be passed to the fragment engine. Fragments that definitely do +not match these qualifiers will be dropped. See the docstring for filter_fragments for the format.

  • +
  • defer_release – If True, won’t release the objects on exit.

  • +
+
+
Returns
+

If defer_release is True: List of table fragments and a callback that the caller must call +when the objects are no longer needed. If defer_release is False: just the list of table fragments.

+
+
+
+ +
+
+get_cache_occupancy() int
+
+
Returns
+

Space occupied by objects cached from external locations, in bytes.

+
+
+
+ +
+
+get_downloaded_objects(limit_to: Optional[List[str]] = None) List[str]
+

Gets a list of objects currently in the Splitgraph cache (i.e. not only existing externally.)

+
+
Parameters
+

limit_to – If specified, only the objects in this list will be returned.

+
+
Returns
+

Set of object IDs.

+
+
+
+ +
+
+get_total_object_size()
+
+
Returns
+

Space occupied by all objects on the engine, in bytes.

+
+
+
+ +
+
+make_objects_external(objects: List[str], handler: str, handler_params: Dict[Any, Any]) None
+

Uploads local objects to an external location and marks them as being cached locally (thus making it possible +to evict or swap them out).

+
+
Parameters
+
    +
  • objects – Object IDs to upload. Will do nothing for objects that already exist externally.

  • +
  • handler – Object handler

  • +
  • handler_params – Extra handler parameters

  • +
+
+
+
+ +
+
+run_eviction(keep_objects: List[str], required_space: Optional[int] = None) None
+

Delete enough objects with zero reference count (only those, since we guarantee that whilst refcount is >0, +the object stays alive) to free at least required_space in the cache.

+
+
Parameters
+
    +
  • keep_objects – List of objects (besides those with nonzero refcount) that can’t be deleted.

  • +
  • required_space – Space, in bytes, to free. If the routine can’t free at least this much space, +it shall raise an exception. If None, removes all eligible objects.

  • +
+
+
+
+ +
+
+upload_objects(target: splitgraph.core.object_manager.ObjectManager, objects_to_push: List[str], handler: str = 'DB', handler_params: Optional[Dict[Any, Any]] = None) Sequence[Tuple[str, Optional[str]]]
+

Uploads physical objects to the remote or some other external location.

+
+
Parameters
+
    +
  • target – Target ObjectManager

  • +
  • objects_to_push – List of object IDs to upload.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote, FILE +to store them in a directory that can be accessed from the client and HTTP to upload them to HTTP.

  • +
  • handler_params – For HTTP, a dictionary &lbrace;“username”: username, “password”, password&rbrace;. For FILE, +a dictionary &lbrace;“path”: path&rbrace; specifying the directory where the objects shall be saved.

  • +
+
+
Returns
+

A list of (object_id, url) that specifies all objects were uploaded (skipping objects that +already exist on the remote).

+
+
+
+ +
+ +
+
+

splitgraph.core.output module

+
+
+class splitgraph.core.output.Color
+

Bases: object

+

An enumeration of console colors

+
+
+BLUE = '\x1b[94m'
+
+ +
+
+BOLD = '\x1b[1m'
+
+ +
+
+CYAN = '\x1b[96m'
+
+ +
+
+DARKCYAN = '\x1b[36m'
+
+ +
+
+END = '\x1b[0m'
+
+ +
+
+GREEN = '\x1b[92m'
+
+ +
+
+PURPLE = '\x1b[95m'
+
+ +
+
+RED = '\x1b[91m'
+
+ +
+
+UNDERLINE = '\x1b[4m'
+
+ +
+
+YELLOW = '\x1b[93m'
+
+ +
+ +
+
+class splitgraph.core.output.ResettableStream(stream)
+

Bases: io.RawIOBase

+

Stream that supports reading from the underlying stream and resetting the position once.

+

We can’t use fseek() in this case, since we might be reading from a pipe. So, we operate +this stream in two modes. In the first mode, we mirror all reads into a separate buffer +(consuming the input stream). After the user calls reset(), we first output data from the +mirrored copy, then continue consuming the input stream (simulating seek(0).

+
+
+readable()
+

Return whether object was opened for reading.

+

If False, read() will raise OSError.

+
+ +
+
+readinto(b)
+
+ +
+
+reset()
+
+ +
+ +
+
+splitgraph.core.output.conn_string_to_dict(connection: Optional[str]) Dict[str, Any]
+
+ +
+
+splitgraph.core.output.parse_date(string: str) datetime.date
+
+ +
+
+splitgraph.core.output.parse_dt(string: str) datetime.datetime
+
+ +
+
+splitgraph.core.output.parse_repo_tag_or_hash(value, default='latest')
+
+ +
+
+splitgraph.core.output.parse_time(string: str) time.struct_time
+
+ +
+
+splitgraph.core.output.pluralise(word: str, number: int) str
+

1 banana, 2 bananas

+
+ +
+
+splitgraph.core.output.pretty_size(size: Union[int, float]) str
+

Converts a size in bytes to its string representation (e.g. 1024 -> 1KiB) +:param size: Size in bytes

+
+ +
+
+splitgraph.core.output.slugify(text: str, max_length: int = 50) str
+
+ +
+
+splitgraph.core.output.truncate_line(line: str, length: int = 80) str
+

Truncates a line to a given length, replacing the remainder with …

+
+ +
+
+splitgraph.core.output.truncate_list(items: List[Any], max_entries: int = 10) str
+

Print a list, possibly truncating it to the specified number of entries

+
+ +
+
+

splitgraph.core.registry module

+

Functions for communicating with the remote Splitgraph catalog

+
+
+splitgraph.core.registry.get_info_key(engine: PostgresEngine, key: str) Optional[str]
+

Gets a configuration key from the remote registry, used to notify the client of the registry’s capabilities.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to get

  • +
+
+
+
+ +
+
+splitgraph.core.registry.set_info_key(engine: PostgresEngine, key: str, value: Union[bool, str]) None
+

Sets a configuration value on the remote registry.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to set

  • +
  • value – New value for the key

  • +
+
+
+
+ +
+
+splitgraph.core.registry.setup_registry_mode(engine: PostgresEngine) None
+

Set up access policies/RLS:

+
    +
  • Normal users aren’t allowed to create tables/schemata (can’t do checkouts inside of a registry or +upload SG objects directly to it)

  • +
  • Normal users can’t access the splitgraph_meta schema directly: they’re only supposed to be able to +talk to it via stored procedures in splitgraph_api. Those procedures are set up with SECURITY INVOKER +(run with those users’ credentials) and what they can access is further restricted by RLS:

    +
      +
    • images/tables/tags meta tables: can only create/update/delete records where the namespace = user ID

    • +
    • objects/object_location tables: same. An object (piece of data) becomes owned by the user that creates +it and still remains so even if someone else’s image starts using it. Hence, the original owner can delete +or change it (since they control the external location they’ve uploaded it to anyway).

    • +
    +
  • +
+
+ +
+
+

splitgraph.core.repository module

+

Public API for managing images in a Splitgraph repository.

+
+
+class splitgraph.core.repository.Repository(namespace: str, repository: str, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_manager: Optional[splitgraph.core.object_manager.ObjectManager] = None)
+

Bases: object

+

Splitgraph repository API

+
+
+commit(image_hash: Optional[str] = None, comment: Optional[str] = None, snap_only: bool = False, chunk_size: Optional[int] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]]] = None, in_fragment_order: Optional[Dict[str, List[str]]] = None, overwrite: bool = False) splitgraph.core.image.Image
+

Commits all pending changes to a given repository, creating a new image.

+
+
Parameters
+
    +
  • image_hash – Hash of the commit. Chosen by random if unspecified.

  • +
  • comment – Optional comment to add to the commit.

  • +
  • snap_only – If True, will store the table as a full snapshot instead of delta compression

  • +
  • chunk_size – For tables that are stored as snapshots (new tables and where snap_only has been passed, +the table will be split into fragments of this many rows.

  • +
  • split_changeset – If True, splits the changeset into multiple fragments based on +the PK regions spanned by the current table fragments. For example, if the original table +consists of 2 fragments, first spanning rows 1-10000, second spanning rows 10001-20000 and the +change alters rows 1, 10001 and inserts a row with PK 20001, this will record the change as +3 fragments: one inheriting from the first original fragment, one inheriting from the second +and a brand new fragment. This increases the number of fragments in total but means that fewer rows +will need to be scanned to satisfy a query. +If False, the changeset will be stored as a single fragment inheriting from the last fragment in the +table.

  • +
  • extra_indexes – Dictionary of &lbrace;table: index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Dictionary of &lbrace;table: list of columns&rbrace;. If specified, will

  • +
+
+
+

sort the data inside each chunk by this/these key(s) for each table. +:param overwrite: If an object already exists, will force recreate it.

+
+
Returns
+

The newly created Image object.

+
+
+
+ +
+
+commit_engines() None
+

Commit the underlying transactions on both engines that the repository uses.

+
+ +
+
+delete(unregister: bool = True, uncheckout: bool = True) None
+

Discards all changes to a given repository and optionally all of its history, +as well as deleting the Postgres schema that it might be checked out into. +Doesn’t delete any cached physical objects.

+

After performing this operation, this object becomes invalid and must be discarded, +unless init() is called again.

+
+
Parameters
+
    +
  • unregister – Whether to purge repository history/metadata

  • +
  • uncheckout – Whether to delete the actual checked out repo. This has no effect +if the repository is backed by a registry (rather than a local engine).

  • +
+
+
+
+ +
+
+diff(table_name: str, image_1: Union[splitgraph.core.image.Image, str], image_2: Optional[Union[splitgraph.core.image.Image, str]], aggregate: bool = False) Optional[Union[bool, Tuple[int, int, int], List[Tuple[bool, Tuple]]]]
+

Compares the state of a table in different images by materializing both tables into a temporary space +and comparing them row-to-row.

+
+
Parameters
+
    +
  • table_name – Name of the table.

  • +
  • image_1 – First image hash / object. If None, uses the state of the current staging area.

  • +
  • image_2 – Second image hash / object. If None, uses the state of the current staging area.

  • +
  • aggregate – If True, returns a tuple of integers denoting added, removed and updated rows between +the two images.

  • +
+
+
Returns
+

If the table doesn’t exist in one of the images, returns True if it was added and False if it was +removed. If aggregate is True, returns the aggregation of changes as specified before. +Otherwise, returns a list of changes where each change is a tuple of +(True for added, False for removed, row contents).

+
+
+
+ +
+
+dump(stream: _io.TextIOWrapper, exclude_object_contents: bool = False) None
+

Creates an SQL dump with the metadata required for the repository and all of its objects.

+
+
Parameters
+
    +
  • stream – Stream to dump the data into.

  • +
  • exclude_object_contents – Only dump the metadata but not the actual object contents.

  • +
+
+
+
+ +
+
+classmethod from_schema(schema: str) splitgraph.core.repository.Repository
+

Convert a Postgres schema name of the format namespace/repository to a Splitgraph repository object.

+
+ +
+
+classmethod from_template(template: splitgraph.core.repository.Repository, namespace: Optional[str] = None, repository: Optional[str] = None, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None) splitgraph.core.repository.Repository
+

Create a Repository from an existing one replacing some of its attributes.

+
+ +
+
+get_all_hashes_tags() List[Tuple[Optional[str], str]]
+

Gets all tagged images and their hashes in a given repository.

+
+
Returns
+

List of (image_hash, tag)

+
+
+
+ +
+
+get_local_size() int
+

Get the actual size used by this repository’s downloaded objects.

+

This might still be double-counted if the repository shares objects +with other repositores.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+get_size() int
+

Get the physical size used by the repository’s data, counting objects that are used +by multiple images only once. This is calculated from the metadata, the on-disk +footprint might be smaller if not all of repository’s objects have been downloaded.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+has_pending_changes() bool
+

Detects if the repository has any pending changes (schema changes, table additions/deletions, content changes).

+
+ +
+
+property head: Optional[splitgraph.core.image.Image]
+

Return the HEAD image for the repository or None if the repository isn’t checked out.

+
+ +
+
+property head_strict: splitgraph.core.image.Image
+

Return the HEAD image for the repository. Raise an exception if the repository +isn’t checked out.

+
+ +
+
+images
+

A splitgraph.core.image.ImageManager instance that performs operations +(checkout, delete etc) on this repository’s images.

+
+ +
+
+import_tables(tables: Sequence[str], source_repository: splitgraph.core.repository.Repository, source_tables: Sequence[str], image_hash: Optional[str] = None, foreign_tables: bool = False, do_checkout: bool = True, target_hash: Optional[str] = None, table_queries: Optional[Sequence[bool]] = None, parent_hash: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', skip_validation: bool = False) str
+

Creates a new commit in target_repository with one or more tables linked to already-existing tables. +After this operation, the HEAD of the target repository moves to the new commit and the new tables are +materialized.

+
+
Parameters
+
    +
  • tables – If not empty, must be the list of the same length as source_tables specifying names to store +them under in the target repository.

  • +
  • source_repository – Repository to import tables from.

  • +
  • source_tables – List of tables to import. If empty, imports all tables.

  • +
  • image_hash – Image hash in the source repository to import tables from. +Uses the current source HEAD by default.

  • +
  • foreign_tables – If True, copies all source tables to create a series of new snapshots instead of +treating them as Splitgraph-versioned tables. This is useful for adding brand new tables +(for example, from an FDW-mounted table).

  • +
  • do_checkout – If False, doesn’t check out the newly created image.

  • +
  • target_hash – Hash of the new image that tables is recorded under. If None, gets chosen at random.

  • +
  • table_queries – If not [], it’s treated as a Boolean mask showing which entries in the tables list are +instead SELECT SQL queries that form the target table. The queries have to be non-schema qualified and work +only against tables in the source repository. Each target table created is the result of the respective SQL +query. This is committed as a new snapshot.

  • +
  • parent_hash – If not None, must be the hash of the image to base the new image on. +Existing tables from the parent image are preserved in the new image. If None, the current repository +HEAD is used.

  • +
  • wrapper – Override the default class for the layered querying foreign data wrapper.

  • +
  • skip_validation – Don’t validate SQL used in import statements (used by the Splitfile executor that pre-formats the SQL).

  • +
+
+
Returns
+

Hash that the new image was stored under.

+
+
+
+ +
+
+init() None
+

Initializes an empty repo with an initial commit (hash 0000…)

+
+ +
+
+materialized_table(table_name: str, image_hash: Optional[str]) Iterator[Tuple[str, str]]
+

A context manager that returns a pointer to a read-only materialized table in a given image. +The table is deleted on exit from the context manager.

+
+
Parameters
+
    +
  • table_name – Name of the table

  • +
  • image_hash – Image hash to materialize

  • +
+
+
Returns
+

(schema, table_name) where the materialized table is located.

+
+
+
+ +
+
+objects
+

A splitgraph.core.object_manager.ObjectManager instance that performs operations on +the objects on this repository’s engine (not just objects belonging to this repository).

+
+ +
+
+pull(download_all: Optional[bool] = False, overwrite_objects: bool = False, overwrite_tags: bool = False, single_image: Optional[str] = None) None
+

Synchronizes the state of the local Splitgraph repository with its upstream, optionally downloading all new +objects created on the remote.

+
+
Parameters
+
    +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download +required objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – Limit the download to a single image hash/tag.

  • +
+
+
+
+ +
+
+push(remote_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, reupload_objects: bool = False, overwrite_tags: bool = False, handler: str = 'DB', handler_options: Optional[Dict[str, Any]] = None, single_image: Optional[str] = None) splitgraph.core.repository.Repository
+

Inverse of pull: Pushes all local changes to the remote and uploads new objects.

+
+
Parameters
+
    +
  • remote_repository – Remote repository to push changes to. If not specified, the current +upstream is used.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote or S3 +to store them in an S3 bucket.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the remote repository for existing objects.

  • +
  • reupload_objects – If True, will reupload objects for which metadata is uploaded.

  • +
  • overwrite_tags – If True, will overwrite existing tags on the remote repository.

  • +
  • handler_options – Extra options to pass to the handler. For example, see +splitgraph.hooks.s3.S3ExternalObjectHandler.

  • +
  • single_image – Limit the upload to a single image hash/tag.

  • +
+
+
+
+ +
+
+rollback_engines() None
+

Rollback the underlying transactions on both engines that the repository uses.

+
+ +
+
+run_sql(sql: Union[psycopg2.sql.Composed, str], arguments: Optional[Any] = None, return_shape: splitgraph.engine.ResultShape = ResultShape.MANY_MANY) Any
+

Execute an arbitrary SQL statement inside of this repository’s checked out schema.

+
+ +
+
+set_tags(tags: Dict[str, Optional[str]]) None
+

Sets tags for multiple images.

+
+
Parameters
+

tags – List of (image_hash, tag)

+
+
+
+ +
+
+to_schema() str
+

Returns the engine schema that this repository gets checked out into.

+
+ +
+
+uncheckout(force: bool = False) None
+

Deletes the schema that the repository is checked out into

+
+
Parameters
+

force – Discards all pending changes to the schema.

+
+
+
+ +
+
+property upstream
+

The remote upstream repository that this local repository tracks.

+
+ +
+ +
+
+splitgraph.core.repository.clone(remote_repository: Union[splitgraph.core.repository.Repository, str], local_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, overwrite_tags: bool = False, download_all: Optional[bool] = False, single_image: Optional[str] = None) splitgraph.core.repository.Repository
+

Clones a remote Splitgraph repository or synchronizes remote changes with the local ones.

+

If the target repository has no set upstream engine, the source repository becomes its upstream.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object to clone or the repository’s name. If a name is passed, +the repository will be looked up on the current lookup path in order to find the engine the repository +belongs to.

  • +
  • local_repository – Local repository to clone into. If None, uses the same name as the remote.

  • +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download required +objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – If set, only get a single image with this hash/tag from the source.

  • +
+
+
Returns
+

A locally cloned Repository object.

+
+
+
+ +
+
+splitgraph.core.repository.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.repository.import_table_from_remote(remote_repository: splitgraph.core.repository.Repository, remote_tables: List[str], remote_image_hash: str, target_repository: splitgraph.core.repository.Repository, target_tables: List[Any], target_hash: Optional[str] = None) None
+

Shorthand for importing one or more tables from a yet-uncloned remote. Here, the remote image hash is required, +as otherwise we aren’t necessarily able to determine what the remote head is.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object

  • +
  • remote_tables – List of remote tables to import

  • +
  • remote_image_hash – Image hash to import the tables from

  • +
  • target_repository – Target repository to import the tables to

  • +
  • target_tables – Target table aliases

  • +
  • target_hash – Hash of the image that’s created with the import. Default random.

  • +
+
+
+
+ +
+
+splitgraph.core.repository.table_exists_at(repository: splitgraph.core.repository.Repository, table_name: str, image: Optional[splitgraph.core.image.Image] = None) bool
+

Determines whether a given table exists in a Splitgraph image without checking it out. If image_hash is None, +determines whether the table exists in the current staging area.

+
+ +
+
+

splitgraph.core.server module

+

Routines that are run inside of the engine, +here so that they can get type- and syntax-checked.

+

When inside of an LQFDW shim, these are called directly by the Splitgraph core code +to avoid a redundant connection to the engine.

+
+
+splitgraph.core.server.delete_object_files(object_id: str)
+
+ +
+
+splitgraph.core.server.download_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.get_object_schema(object_id: str) str
+
+ +
+
+splitgraph.core.server.get_object_size(object_id: str) int
+
+ +
+
+splitgraph.core.server.list_objects() List[str]
+
+ +
+
+splitgraph.core.server.object_exists(object_id: str) bool
+
+ +
+
+splitgraph.core.server.rename_object_files(old_object_id: str, new_object_id: str)
+
+ +
+
+splitgraph.core.server.set_object_schema(object_id: str, schema: str)
+
+ +
+
+splitgraph.core.server.upload_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.verify(url: str)
+
+ +
+
+

splitgraph.core.table module

+

Table metadata-related classes.

+
+
+class splitgraph.core.table.QueryPlan(table: splitgraph.core.table.Table, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str])
+

Bases: object

+

Represents the initial query plan (fragments to query) for given columns and +qualifiers.

+
+ +
+
+class splitgraph.core.table.Table(repository: Repository, image: Image, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+

Bases: object

+

Represents a Splitgraph table in a given image. Shouldn’t be created directly, use Table-loading +methods in the splitgraph.core.image.Image class instead.

+
+
+get_length() int
+

Get the number of rows in this table.

+

This might be smaller than the total number of rows in all objects belonging to this +table as some objects might overwrite each other.

+
+
Returns
+

Number of rows in table

+
+
+
+ +
+
+get_query_plan(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str], use_cache: bool = True) splitgraph.core.table.QueryPlan
+

Start planning a query (preliminary steps before object downloading, +like qualifier filtering).

+
+
Parameters
+
    +
  • quals – Qualifiers in CNF form

  • +
  • columns – List of columns

  • +
  • use_cache – If True, will fetch the plan from the cache for the same qualifiers and columns.

  • +
+
+
Returns
+

QueryPlan

+
+
+
+ +
+
+get_size() int
+

Get the physical size used by the table’s objects (including those shared with other tables).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of table’s +objects have been downloaded.

+
+
Returns
+

Size of the table in bytes.

+
+
+
+ +
+
+materialize(destination: str, destination_schema: Optional[str] = None, lq_server: Optional[str] = None, temporary: bool = False) None
+

Materializes a Splitgraph table in the target schema as a normal Postgres table, potentially downloading all +required objects and using them to reconstruct the table.

+
+
Parameters
+
    +
  • destination – Name of the destination table.

  • +
  • destination_schema – Name of the destination schema.

  • +
  • lq_server – If set, sets up a layered querying FDW for the table instead using this foreign server.

  • +
+
+
+
+ +
+
+query(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])
+

Run a read-only query against this table without materializing it.

+

This is a wrapper around query_lazy() that force evaluates the results which +might mean more fragments being materialized that aren’t needed.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

List of dictionaries of results

+
+
+
+ +
+
+query_indirect(columns: List[str], quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]]) Tuple[Iterator[bytes], Callable, splitgraph.core.table.QueryPlan]
+

Run a read-only query against this table without materializing it. Instead of +actual results, this returns a generator of SQL queries that the caller can use +to get the results as well as a callback that the caller has to run after they’re +done consuming the results.

+

In particular, the query generator will prefer returning direct queries to +Splitgraph objects and only when those are exhausted will it start materializing +delta-compressed fragments.

+

This is an advanced method: you probably want to call table.query().

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of queries (bytes), a callback and a query plan object (containing stats +that are fully populated after the callback has been called to end the query).

+
+
+
+ +
+
+query_lazy(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]]) Iterator[Iterator[Dict[str, Any]]]
+

Run a read-only query against this table without materializing it.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of dictionaries of results.

+
+
+
+ +
+
+reindex(extra_indexes: Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]], raise_on_patch_objects=True) List[str]
+

Run extra indexes on all objects in this table and update their metadata. +This only works on objects that don’t have any deletions or upserts (have a deletion hash of 000000…).

+
+
Parameters
+
    +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • raise_on_patch_objects – If True, will raise an exception if any objects in the table +overwrite any other objects. If False, will log a warning but will reindex all non-patch objects.

  • +
+
+
+

:returns List of objects that were reindexed.

+
+ +
+ +
+
+splitgraph.core.table.merge_index_data(current_index: Dict[str, Any], new_index: Dict[str, Any])
+
+ +
+
+

splitgraph.core.types module

+
+
+class splitgraph.core.types.Comparable
+

Bases: object

+
+ +
+
+class splitgraph.core.types.MountError(*, table_name: str, error: str, error_text: str)
+

Bases: pydantic.main.BaseModel

+
+
+error: str
+
+ +
+
+error_text: str
+
+ +
+
+table_name: str
+
+ +
+ +
+
+class splitgraph.core.types.TableColumn(ordinal, name, pg_type, is_pk, comment)
+

Bases: tuple

+
+
+comment: Optional[str]
+

Alias for field number 4

+
+ +
+
+is_pk: bool
+

Alias for field number 3

+
+ +
+
+name: str
+

Alias for field number 1

+
+ +
+
+ordinal: int
+

Alias for field number 0

+
+ +
+
+pg_type: str
+

Alias for field number 2

+
+ +
+ +
+
+splitgraph.core.types.dict_to_table_schema_params(tables: Dict[str, ExternalTableRequest]) Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]
+
+ +
+
+splitgraph.core.types.get_table_params(table_info: Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]], table_name: str) TableParams
+
+ +
+
+splitgraph.core.types.table_schema_params_to_dict(tables: Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]) Dict[str, Dict[str, Dict[str, Any]]]
+
+ +
+
+splitgraph.core.types.unwrap(result: Dict[str, Union[splitgraph.core.types.MountError, splitgraph.core.types.T]]) Tuple[Dict[str, splitgraph.core.types.T], Dict[str, splitgraph.core.types.MountError]]
+
+ +
+
+

Module contents

+

Core Splitgraph functionality: versioning and sharing tables.

+

The main point of interaction with the Splitgraph API is a splitgraph.core.repository.Repository object +representing a local or a remote Splitgraph repository. Repositories can be created using one of the +following methods:

+
+
    +
  • Directly by invoking Repository(namespace, name, engine) where engine is the engine that the repository +belongs to (that can be gotten with get_engine(engine_name). If the created repository doesn’t actually exist +on the engine, it must first be initialized with repository.init().

  • +
  • By using splitgraph.core.engine.lookup_repository() which will search for the repository on the current +lookup path.

  • +
+
+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.core.sql.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.core.sql.mdx new file mode 100644 index 00000000..c715fd22 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.core.sql.mdx @@ -0,0 +1,118 @@ + + + +export const meta = { + title: "splitgraph.core.sql package", + id: "splitgraph.core.sql package" +}; + +
+ +
+

Module contents

+

Routines for managing SQL statements

+
+
+splitgraph.core.sql.insert(table: str, columns: Sequence[str], schema: str = 'splitgraph_meta') psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to insert as a list of strings.

  • +
  • schema – Schema that contains the table

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query (parameterized)

+
+
+
+ +
+
+splitgraph.core.sql.prepare_splitfile_sql(sql: str, image_mapper: Callable) Tuple[str, str]
+

Transform an SQL query to prepare for it to be used in a Splitfile SQL command and validate it. +The rules are:

+
+
    +
  • Only basic DDL (CREATE/ALTER/DROP table) and DML (SELECT/INSERT/UPDATE/DELETE) are permitted.

  • +
  • All tables must be either non-schema qualified (the statement is run with search_path

  • +
+

set to the single schema that a Splitgraph image is checked out into) or have schemata of +format namespace/repository:hash_or_tag. In the second case, the schema is rewritten to point +at a temporary mount of the Splitgraph image.

+
+
+
Parameters
+
    +
  • sql – SQL query

  • +
  • image_mapper – Takes in an image and gives back the schema it should be rewritten to +(for the purposes of execution) and the canonical form of the image.

  • +
+
+
Returns
+

Transformed form of the SQL with substituted schema shims for Splitfile execution +and the canonical form (with e.g. tags resolved into at-the-time full image hashes)

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+
+splitgraph.core.sql.recover_original_schema_name(sql: str, schema_name: str) str
+

Postgres truncates identifiers to 63 characters at parse time and, as pglast +uses bits of PG to parse queries, image names like noaa/climate:64_chars_of_hash +get truncated which can cause ambiguities and issues in provenance. We can’t +get pglast to give us back the full identifier, but we can try and figure out +what it used to be and patch the AST to have it again.

+
+ +
+
+splitgraph.core.sql.select(table: str, columns: str = '*', where: str = '', schema: str = 'splitgraph_meta', table_args: Optional[str] = None) psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to select as a string. WARN: concatenated directly without any formatting.

  • +
  • where – If specified, added to the query with a “WHERE” keyword. WARN also concatenated directly.

  • +
  • schema – Defaults to SPLITGRAPH_META_SCHEMA.

  • +
  • table_args – If specified, appends to the FROM clause after the table specification, +for example, SELECT * FROM “splitgraph_api”.”get_images” (%s, %s) …

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query.

+
+
+
+ +
+
+splitgraph.core.sql.validate_import_sql(sql: str) str
+

Check an SQL query to see if it can be safely used in an IMPORT statement +(e.g. FROM noaa/climate:latest IMPORT &lbrace;SELECT * FROM rainfall WHERE state = ‘AZ’&rbrace; AS rainfall. +In this case, only a single SELECT statement is supported.

+
+
Parameters
+

sql – SQL query

+
+
Returns
+

Canonical (formatted) form of the SQL statement

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.engine.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.engine.mdx new file mode 100644 index 00000000..df53c5d4 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.engine.mdx @@ -0,0 +1,565 @@ + + + +export const meta = { + title: "splitgraph.engine package", + id: "splitgraph.engine package" +}; + +
+ +
+

Subpackages

+ +
+
+

Module contents

+

Defines the interface for a Splitgraph engine (a backing database), including running basic SQL commands, +tracking tables for changes and uploading/downloading tables to other remote engines.

+

By default, Splitgraph is backed by Postgres: see splitgraph.engine.postgres for an example of how to +implement a different engine.

+
+
+class splitgraph.engine.ChangeEngine
+

Bases: splitgraph.engine.SQLEngine, abc.ABC

+

An SQL engine that can perform change tracking on a set of tables.

+
+
+discard_pending_changes(schema, table=None)
+

Discard recorded pending changes for a tracked table or the whole schema

+
+ +
+
+get_change_key(schema: str, table: str) List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_changed_tables(schema)
+

List tracked tables that have pending changes

+
+
Parameters
+

schema – Schema to check for changes

+
+
Returns
+

List of tables with changed contents

+
+
+
+ +
+
+get_pending_changes(schema, table, aggregate=False)
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: tuple with numbers of (added_rows, removed_rows, updated_rows). +If aggregate is False: A changeset. The changeset is a list of +(pk, action (0 for Insert, 1 for Delete, 2 for Update), action_data) +where action_data is None for Delete and &lbrace;‘c’: [column_names], ‘v’: [column_values]&rbrace; that +have been inserted/updated otherwise.

+
+
+
+ +
+
+get_tracked_tables()
+
+
Returns
+

A list of (table_schema, table_name) that the engine currently tracks for changes

+
+
+
+ +
+
+has_pending_changes(schema)
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables)
+

Start engine-specific change tracking on a list of tables.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+
+untrack_tables(tables)
+

Stop engine-specific change tracking on a list of tables and delete any pending changes.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+ +
+
+class splitgraph.engine.ObjectEngine
+

Bases: object

+

Routines for storing/applying objects as well as sharing them with other engines.

+
+
+apply_fragments(objects, target_schema, target_table, extra_quals=None, extra_qual_args=None, schema_spec=None, progress_every: Optional[int] = None)
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids)
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects, remote_engine)
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id, stream, schema)
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+get_object_schema(object_id)
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id)
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+store_fragment(inserted, deleted, schema, table, source_schema, source_table, source_schema_spec)
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args: Optional[Sequence[Any]], overwrite: bool)
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+upload_objects(objects, remote_engine)
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.ResultShape(value)
+

Bases: enum.Enum

+

Shape that the result of a query will be coerced to

+
+
+MANY_MANY = 4
+
+ +
+
+MANY_ONE = 3
+
+ +
+
+NONE = 0
+
+ +
+
+ONE_MANY = 2
+
+ +
+
+ONE_ONE = 1
+
+ +
+ +
+
+class splitgraph.engine.SQLEngine
+

Bases: abc.ABC

+

Abstraction for a Splitgraph SQL backend. Requires any overriding classes to implement run_sql as well as +a few other functions. Together with the information_schema (part of the SQL standard), this class uses those +functions to implement some basic database management methods like listing, deleting, creating, dumping +and loading tables.

+
+
+close()
+

Commit and close the engine’s backing connection

+
+ +
+
+commit()
+

Commit the engine’s backing connection

+
+ +
+
+copy_table(source_schema: str, source_table: str, target_schema: str, target_table: str, with_pk_constraints: bool = True) None
+

Copy a table in the same engine, optionally applying primary key constraints as well.

+
+ +
+
+create_schema(schema: str) None
+

Create a schema if it doesn’t exist

+
+ +
+
+create_table(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False) None
+

Creates a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
+
+ +
+
+delete_schema(schema: str) None
+

Delete a schema if it exists, including all the tables in it.

+
+ +
+
+delete_table(schema: str, table: str) None
+

Drop a table from a schema if it exists

+
+ +
+
+static dump_table_creation(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False) Tuple[psycopg2.sql.Composed, Tuple]
+

Dumps the DDL for a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
Returns
+

An SQL statement that reconstructs the table schema + args to be mogrified into it.

+
+
+
+ +
+
+dump_table_sql(schema, table_name, stream, columns='*', where='', where_args=None, target_schema=None, target_table=None)
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_all_tables(schema: str) List[str]
+

Get all tables in a given schema.

+
+ +
+
+get_full_table_schema(schema: str, table_name: str) List[splitgraph.core.types.TableColumn]
+

Generates a list of (column ordinal, name, data type, is_pk, column comment), +used to detect schema changes like columns being dropped/added/renamed or type changes.

+

NB this doesn’t work for temporary tables (pg_temp) and returns an empty schema.

+
+ +
+
+get_primary_keys(schema, table)
+

Get a list of (column_name, column_type) denoting the primary keys of a given table.

+
+ +
+
+get_table_type(schema: str, table: str) Optional[str]
+

Get the type of the table (BASE or FOREIGN)

+
+ +
+
+initialize()
+

Does any required initialization of the engine

+
+ +
+
+lock_table(schema, table)
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback()
+

Rollback the engine’s backing connection

+
+ +
+
+run_sql(statement, arguments=None, return_shape=ResultShape.MANY_MANY, named=False)
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement, arguments, schema=None)
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+run_sql_in(schema: str, sql: Union[psycopg2.sql.Composed, str], arguments: None = None, return_shape: splitgraph.engine.ResultShape = ResultShape.MANY_MANY) Any
+

Executes a non-schema-qualified query against a specific schema.

+
+
Parameters
+
    +
  • schema – Schema to run the query in

  • +
  • sql – Query

  • +
  • arguments – Query arguments

  • +
  • return_shape – ReturnShape to coerce the result into.

  • +
+
+
+
+ +
+
+savepoint(name: str) Iterator[None]
+

At the beginning of this context manager, a savepoint is initialized and any database +error that occurs in run_sql results in a rollback to this savepoint rather than the +rollback of the whole transaction. At exit, the savepoint is released.

+
+ +
+
+schema_exists(schema: str) bool
+

Check if a schema exists on the engine.

+
+
Parameters
+

schema – Schema name

+
+
+
+ +
+
+table_exists(schema: str, table_name: str) bool
+

Check if a table exists on the engine.

+
+
Parameters
+
    +
  • schema – Schema name

  • +
  • table_name – Table name

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.SavepointStack
+

Bases: _thread._local

+
+ +
+
+splitgraph.engine.get_engine(name: Optional[str] = None, use_socket: bool = False, use_fdw_params: bool = False, autocommit: bool = False) PostgresEngine
+

Get the current global engine or a named remote engine

+
+
Parameters
+
    +
  • name – Name of the remote engine as specified in the config. If None, the current global engine +is returned.

  • +
  • use_socket – Use a local UNIX socket instead of PG_HOST, PG_PORT for LOCAL engine connections.

  • +
  • use_fdw_params – Use the _FDW connection parameters (SG_ENGINE_FDW_HOST/PORT). By default, +will infer from the global splitgraph.config.IN_FDW flag.

  • +
  • autocommit – If True, the engine will not open SQL transactions implicitly.

  • +
+
+
+
+ +
+
+splitgraph.engine.set_engine(engine: PostgresEngine) None
+

Switch the global engine to a different one.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.switch_engine(engine: PostgresEngine) Iterator[None]
+

Switch the global engine to a different one. The engine will +get switched back on exit from the context manager.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.validate_type(t: str) str
+
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.engine.postgres.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.engine.postgres.mdx new file mode 100644 index 00000000..53f561ca --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.engine.postgres.mdx @@ -0,0 +1,456 @@ + + + +export const meta = { + title: "splitgraph.engine.postgres package", + id: "splitgraph.engine.postgres package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.engine.postgres.engine module

+

Default Splitgraph engine: uses PostgreSQL to store metadata and actual objects and an audit stored procedure +to track changes, as well as the Postgres FDW interface to upload/download objects to/from other Postgres engines.

+
+
+class splitgraph.engine.postgres.engine.AuditTriggerChangeEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.PsycopgEngine, splitgraph.engine.ChangeEngine

+

Change tracking based on an audit trigger stored procedure

+
+
+discard_pending_changes(schema: str, table: Optional[str] = None) None
+

Discard recorded pending changes for a tracked schema / table

+
+ +
+
+get_changed_tables(schema: str) List[str]
+

Get list of tables that have changed content

+
+ +
+
+get_pending_changes(schema: str, table: str, aggregate: bool = False) Union[List[Tuple[int, int]], List[Tuple[Tuple[str, ...], bool, Dict[str, Any], Dict[str, Any]]]]
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: List of tuples of (change_type, number of rows). +If aggregate is False: List of (primary_key, change_type, change_data)

+
+
+
+ +
+
+get_tracked_tables() List[Tuple[str, str]]
+

Return a list of tables that the audit trigger is working on.

+
+ +
+
+has_pending_changes(schema: str) bool
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables: List[Tuple[str, str]]) None
+

Install the audit trigger on the required tables

+
+ +
+
+untrack_tables(tables: List[Tuple[str, str]]) None
+

Remove triggers from tables and delete their pending changes

+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PostgresEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.AuditTriggerChangeEngine, splitgraph.engine.ObjectEngine

+

An implementation of the Postgres engine for Splitgraph

+
+
+apply_fragments(objects: List[Tuple[str, str]], target_schema: str, target_table: str, extra_quals: Optional[psycopg2.sql.Composed] = None, extra_qual_args: Optional[Tuple[Any, ...]] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, progress_every: Optional[int] = None) None
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids: List[str]) None
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine) List[str]
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id: str, stream: _io.TextIOWrapper, schema: str) None
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+dump_object_creation(object_id: str, schema: str, table: Optional[str] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, if_not_exists: bool = False) bytes
+

Generate the SQL that remounts a foreign table pointing to a Splitgraph object.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • schema – Schema to create the table in

  • +
  • table – Name of the table to mount

  • +
  • schema_spec – Schema of the table

  • +
  • if_not_exists – Add IF NOT EXISTS to the DDL

  • +
+
+
Returns
+

SQL in bytes format.

+
+
+
+ +
+
+get_change_key(schema: str, table: str) List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_object_schema(object_id: str) List[splitgraph.core.types.TableColumn]
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id: str) int
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+mount_object(object_id: str, table: None = None, schema: str = 'splitgraph_meta', schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None) None
+

Mount an object from local storage as a foreign table.

+
+
Parameters
+
    +
  • object_id – ID of the object

  • +
  • table – Table to mount the object into

  • +
  • schema – Schema to mount the object into

  • +
  • schema_spec – Schema of the object.

  • +
+
+
+
+ +
+
+rename_object(old_object_id: str, new_object_id: str)
+
+ +
+
+store_fragment(inserted: Any, deleted: Any, schema: str, table: str, source_schema: str, source_table: str, source_schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None) None
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args=None, overwrite=False) None
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+sync_object_mounts() None
+

Scan through local object storage and synchronize it with the foreign tables in +splitgraph_meta (unmounting non-existing objects and mounting existing ones).

+
+ +
+
+unmount_objects(object_ids: List[str]) None
+

Unmount objects from splitgraph_meta (this doesn’t delete the physical files.

+
+ +
+
+upload_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine) None
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PsycopgEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.SQLEngine

+

Postgres SQL engine backed by a Psycopg connection.

+
+
+close() None
+

Commit and close the engine’s backing connection

+
+ +
+
+close_others() None
+

Close and release all other connections to the connection pool.

+
+ +
+
+commit() None
+

Commit the engine’s backing connection

+
+ +
+
+property connection: Connection
+

Engine-internal Psycopg connection.

+
+ +
+
+copy_cursor()
+

Return a cursor that can be used for copy_expert operations

+
+ +
+
+delete_database(database: str) None
+

Helper function to drop a database using the admin connection

+
+
Parameters
+

database – Database name to drop

+
+
+
+ +
+
+dump_table_sql(schema: str, table_name: str, stream: _io.TextIOWrapper, columns: str = '*', where: str = '', where_args: Optional[Union[List[str], Tuple[str, str]]] = None, target_schema: Optional[str] = None, target_table: Optional[str] = None) None
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_primary_keys(schema: str, table: str) List[Tuple[str, str]]
+

Inspects the Postgres information_schema to get the primary keys for a given table.

+
+ +
+
+in_fdw
+

List of notices issued by the server during the previous execution of run_sql.

+
+ +
+
+initialize(skip_object_handling: bool = False, skip_create_database: bool = False) None
+

Create the Splitgraph Postgres database and install the audit trigger

+
+
Parameters
+
    +
  • skip_object_handling – If True, skips installation of +audit triggers and other object management routines for engines +that don’t need change tracking or checkouts.

  • +
  • skip_create_database – Don’t create the Splitgraph database

  • +
+
+
+
+ +
+
+lock_table(schema: str, table: str) None
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback() None
+

Rollback the engine’s backing connection

+
+ +
+
+run_api_call(call: str, *args, schema: str = 'splitgraph_api') Any
+
+ +
+
+run_api_call_batch(call: str, argslist, schema: str = 'splitgraph_api')
+
+ +
+
+run_chunked_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Sequence[Any], return_shape: Optional[splitgraph.engine.ResultShape] = ResultShape.MANY_MANY, chunk_size: int = 100, chunk_position: int = - 1) Any
+

Because the Splitgraph API has a request size limitation, certain +SQL calls with variadic arguments are going to be too long to fit that. This function +runs an SQL query against a set of broken up arguments and returns the combined result.

+
+ +
+
+run_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Optional[Sequence[Any]] = None, return_shape: Optional[splitgraph.engine.ResultShape] = ResultShape.MANY_MANY, named: bool = False) Any
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement: Union[psycopg2.sql.Composed, str], arguments: Any, schema: Optional[str] = None, max_size=261000) None
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+property splitgraph_version: Optional[str]
+

Returns the version of the Splitgraph library installed on the engine +and by association the version of the engine itself.

+
+ +
+ +
+
+splitgraph.engine.postgres.engine.add_ud_flag_column(table_schema: List[splitgraph.core.types.TableColumn]) List[splitgraph.core.types.TableColumn]
+
+ +
+
+splitgraph.engine.postgres.engine.chunk(sequence: Sequence[splitgraph.engine.postgres.engine.T], chunk_size: int = 100) Iterator[List[splitgraph.engine.postgres.engine.T]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_change_key(schema_spec: List[splitgraph.core.types.TableColumn]) List[Tuple[str, str]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_conn_str(conn_params: Dict[str, Optional[str]]) str
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.hooks.data_source.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.hooks.data_source.mdx new file mode 100644 index 00000000..0d9004bf --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.hooks.data_source.mdx @@ -0,0 +1,537 @@ + + + +export const meta = { + title: "splitgraph.hooks.data_source package", + id: "splitgraph.hooks.data_source package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.hooks.data_source.base module

+
+
+class splitgraph.hooks.data_source.base.DataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: abc.ABC

+
+
+credentials_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+abstract classmethod get_description() str
+
+ +
+
+abstract classmethod get_name() str
+
+ +
+
+get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
+

Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

+
+ +
+
+abstract introspect() IntrospectionResult
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+supports_load = False
+
+ +
+
+supports_mount = False
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.LoadableDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+load(repository: Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+
+supports_load = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.MountableDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+abstract mount(schema: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, overwrite: bool = True) Optional[List[splitgraph.core.types.MountError]]
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+supports_mount = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.SyncableDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.LoadableDataSource, splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+supports_load = True
+
+ +
+
+supports_sync = True
+
+ +
+
+sync(repository: Repository, image_hash: Optional[str], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+ +
+
+splitgraph.hooks.data_source.base.get_ingestion_state(repository: Repository, image_hash: Optional[str]) Optional[SyncState]
+
+ +
+
+splitgraph.hooks.data_source.base.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.hooks.data_source.base.prepare_new_image(repository: Repository, hash_or_tag: Optional[str], comment: str = 'Singer tap ingestion') Tuple[Optional[splitgraph.core.image.Image], str]
+
+ +
+
+

splitgraph.hooks.data_source.fdw module

+
+
+class splitgraph.hooks.data_source.fdw.ElasticSearchDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount an ElasticSearch instance.\n\nMount a set of tables proxying to a remote ElasticSearch index.\n\nThis uses a fork of postgres-elasticsearch-fdw behind the scenes. You can add a column\n`query` to your table and set it as `query_column` to pass advanced ES queries and aggregations.\nFor example:\n\n```\nsgr mount elasticsearch target_schema -c elasticsearch:9200 -o@- <<EOF\n    &lbrace;\n      "tables": &lbrace;\n        "table_1": &lbrace;\n          "schema": &lbrace;\n            "id": "text",\n            "@timestamp": "timestamp",\n            "query": "text",\n            "col_1": "text",\n            "col_2": "boolean"\n          &rbrace;,\n          "options": &lbrace;\n              "index": "index-pattern*",\n              "rowid_column": "id",\n              "query_column": "query"\n          &rbrace;\n        &rbrace;\n      &rbrace;\n    &rbrace;\nEOF\n```\n'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'index': &lbrace;'description': 'ES index name or pattern to use, for example, "events-*"', 'type': 'string'&rbrace;, 'query_column': &lbrace;'description': 'Name of the column to use to pass queries in', 'type': 'string'&rbrace;, 'score_column': &lbrace;'description': 'Name of the column with the document score', 'type': 'string'&rbrace;, 'scroll_duration': &lbrace;'description': 'How long to hold the scroll context open for, default 10m', 'type': 'string'&rbrace;, 'scroll_size': &lbrace;'description': 'Fetch size, default 1000', 'type': 'integer'&rbrace;, 'type': &lbrace;'description': 'Pre-ES7 doc_type, not required in ES7 or later', 'type': 'string'&rbrace;&rbrace;, 'required': ['index'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.MountableDataSource, splitgraph.hooks.data_source.base.LoadableDataSource, abc.ABC

+
+
+commandline_help: str = ''
+
+ +
+
+commandline_kwargs_help: str = ''
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs) splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+abstract get_fdw_name()
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options() Mapping[str, str]
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
+
+ +
+
+get_table_schema(table_name: str, table_schema: List[splitgraph.core.types.TableColumn]) List[splitgraph.core.types.TableColumn]
+
+ +
+
+get_user_options() Mapping[str, str]
+
+ +
+
+introspect() IntrospectionResult
+
+ +
+
+mount(schema: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, overwrite: bool = True) Optional[List[splitgraph.core.types.MountError]]
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+preview(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]]) PreviewResult
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MongoDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Mongo database.\n\nMounts one or more collections on a remote Mongo database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'tables: A dictionary of form\n```\n&lbrace;\n    "table_name": &lbrace;\n        "schema": &lbrace;"col1": "type1"...&rbrace;,\n        "options": &lbrace;"database": <dbname>, "collection": <collection>&rbrace;\n    &rbrace;\n&rbrace;\n```\n'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_server_options()
+
+ +
+
+get_table_schema(table_name, table_schema)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'collection': &lbrace;'type': 'string'&rbrace;, 'database': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['database', 'collection'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MySQLDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a MySQL database.\n\nMounts a schema on a remote MySQL database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'dbname: Remote MySQL database name (required)\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n        '
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'type': 'string'&rbrace;, 'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.PostgreSQLDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Postgres database.\n\nMounts a schema on a remote Postgres database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'dbname: Database name (required)\nremote_schema: Remote schema name (required)\nextra_server_args: Dictionary of extra arguments to pass to the foreign server\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n    '
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'description': 'Database name', 'type': 'string'&rbrace;, 'host': &lbrace;'description': 'Remote hostname', 'type': 'string'&rbrace;, 'port': &lbrace;'description': 'Port', 'type': 'integer'&rbrace;, 'remote_schema': &lbrace;'description': 'Remote schema name', 'type': 'string'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname', 'remote_schema'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.hooks.data_source.fdw.create_foreign_table(schema: str, server: str, table_name: str, schema_spec: List[splitgraph.core.types.TableColumn], extra_options: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.hooks.data_source.fdw.import_foreign_schema(engine: PsycopgEngine, mountpoint: str, remote_schema: str, server_id: str, tables: List[str], options: Optional[Dict[str, str]] = None) List[splitgraph.core.types.MountError]
+
+ +
+
+splitgraph.hooks.data_source.fdw.init_fdw(engine: PsycopgEngine, server_id: str, wrapper: str, server_options: Optional[Mapping[str, Optional[str]]] = None, user_options: Optional[Mapping[str, str]] = None, role: Optional[str] = None, overwrite: bool = True) None
+

Sets up a foreign data server on the engine.

+
+
Parameters
+
    +
  • engine – PostgresEngine

  • +
  • server_id – Name to call the foreign server, must be unique. Will be deleted if exists.

  • +
  • wrapper – Name of the foreign data wrapper (must be installed as an extension on the engine)

  • +
  • server_options – Dictionary of FDW options

  • +
  • user_options – Dictionary of user options

  • +
  • role – The name of the role for which the user mapping is created; defaults to public.

  • +
  • overwrite – If the server already exists, delete and recreate it.

  • +
+
+
+
+ +
+
+

Module contents

+
+
+splitgraph.hooks.data_source.get_data_source(data_source: str) Type[splitgraph.hooks.data_source.base.DataSource]
+

Returns a class for a given data source

+
+ +
+
+splitgraph.hooks.data_source.get_data_sources() List[str]
+

Returns the names of all registered data sources.

+
+ +
+
+splitgraph.hooks.data_source.merge_jsonschema(left: Dict[str, Any], right: Dict[str, Any]) Dict[str, Any]
+
+ +
+
+splitgraph.hooks.data_source.register_data_source(name: str, data_source_class: Type[splitgraph.hooks.data_source.base.DataSource]) None
+

Returns a data source under a given name.

+
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.hooks.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.hooks.mdx new file mode 100644 index 00000000..bcf19eb3 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.hooks.mdx @@ -0,0 +1,366 @@ + + + +export const meta = { + title: "splitgraph.hooks package", + id: "splitgraph.hooks package" +}; + +
+ +
+

Subpackages

+ +
+
+

Submodules

+
+
+

splitgraph.hooks.external_objects module

+

Hooks for registering handlers to upload/download objects from external locations into Splitgraph’s cache.

+
+
+class splitgraph.hooks.external_objects.ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: object

+

Framework for allowing to dump objects from the Splitgraph cache to an external location. This allows +the objects to be stored somewhere other than the actual remote engine.

+

External object handlers must extend this class and be registered in the Splitgraph config.

+

For an example of how this can be used, see splitgraph.hooks.s3: it’s a handler allowing objects to be +uploaded to S3/S3-compatible host using the Minio API. It’s registered in the config as follows:

+
[external_handlers]
+S3=splitgraph.hooks.s3.S3ExternalObjectHandler
+
+
+

The protocol and the URLs returned by this handler are stored in splitgraph_meta.external_objects +and used to download the objects back into the Splitgraph cache when they are needed.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine) Sequence[str]
+

Download objects from the external location into the Splitgraph cache.

+
+
Parameters
+
    +
  • objects – List of tuples (object_id, object_url) that this handler had previosly +uploaded the objects to.

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of object IDs that have been successfully downloaded.

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine) Sequence[Tuple[str, str]]
+

Upload objects from the Splitgraph cache to an external location

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of successfully uploaded object IDs and URLs they can be found at.

+
+
+
+ +
+ +
+
+splitgraph.hooks.external_objects.get_external_object_handler(name: str, handler_params: Dict[Any, Any]) splitgraph.hooks.external_objects.ExternalObjectHandler
+

Load an external protocol handler by its name, initializing it with optional parameters.

+
+ +
+
+splitgraph.hooks.external_objects.register_upload_download_handler(name: str, handler_class: Callable[[...], splitgraph.hooks.external_objects.ExternalObjectHandler]) None
+

Register an external protocol handler. See the docstring for get_upload_download_handler for the required +signatures of the handler functions.

+
+ +
+
+

splitgraph.hooks.mount_handlers module

+

Extra wrapper code for mount handlers

+
+
+splitgraph.hooks.mount_handlers.mount(mountpoint: str, mount_handler: str, handler_kwargs: Dict[str, Any], overwrite: bool = True, tables: Optional[TableInfo] = None) None
+

Mounts a foreign database via an FDW (without creating new Splitgraph objects)

+
+
Parameters
+
    +
  • mountpoint – Mountpoint to import the new tables into.

  • +
  • mount_handler – The type of the mounted database.

  • +
  • handler_kwargs – Dictionary of options to pass to the mount handler.

  • +
  • overwrite – Delete the foreign server if it already exists. Used by mount_postgres for data pulls.

  • +
  • tables – List of tables to mount or their schemas

  • +
+
+
+
+ +
+
+splitgraph.hooks.mount_handlers.mount_postgres(mountpoint, **kwargs) None
+

Mount a Postgres database.

+

Mounts a schema on a remote Postgres database as a set of foreign tables locally. +

+
+
Parameters
+
    +
  • mountpoint – Schema to mount the remote into.

  • +
  • server – Database hostname.

  • +
  • port – Port the Postgres server is running on.

  • +
  • username – A read-only user that the database will be accessed as.

  • +
  • password – Password for the read-only user.

  • +
  • dbname – Remote database name.

  • +
  • remote_schema – Remote schema name.

  • +
  • extra_server_args – Dictionary of extra arguments to pass to the foreign server

  • +
  • tables – Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.

  • +
+
+
+

If a dictionary, must have the format &lbrace;“table_name”: &lbrace;“col_1”: “type_1”, …&rbrace;&rbrace;.

+
+ +
+
+

splitgraph.hooks.s3 module

+

Plugin for uploading Splitgraph objects from the cache to an external S3-like object store

+
+
+class splitgraph.hooks.s3.S3ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: splitgraph.hooks.external_objects.ExternalObjectHandler

+

Uploads/downloads the objects to/from S3/S3-compatible host using the Minio client.

+

The handler is “attached” to a given registry which manages issuing pre-signed +GET/PUT URLs.

+

The handler supports a parameter threads specifying the number of threads +used to upload the objects.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine) List[str]
+

Download objects from Minio.

+
+
Parameters
+

objects – List of (object ID, object URL (object ID it’s stored under))

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine) List[Tuple[str, str]]
+

Upload objects to Minio

+
+
Parameters
+
    +
  • remote_engine – Remote Engine class

  • +
  • objects – List of object IDs to upload

  • +
+
+
Returns
+

List of tuples with successfully uploaded objects and their URLs.

+
+
+
+ +
+ +
+
+splitgraph.hooks.s3.get_object_download_urls(remote_engine, remote_object_ids)
+
+ +
+
+splitgraph.hooks.s3.get_object_upload_urls(remote_engine, objects)
+
+ +
+
+

splitgraph.hooks.s3_server module

+

S3 registry-side routines called from the Python stored procedure +that are aware of the actual S3 access creds and generate pre-signed +URLs to upload/download objects.

+
+
+splitgraph.hooks.s3_server.delete_objects(client: minio.api.Minio, object_ids: List[str]) None
+

Delete objects stored in Minio

+
+
Parameters
+
    +
  • client – Minio client

  • +
  • object_ids – List of Splitgraph object IDs to delete

  • +
+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_download_urls(s3_host: str, object_ids: List[str]) List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_upload_urls(s3_host: str, object_ids: List[str]) List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.list_objects(client: minio.api.Minio) List[str]
+

List objects stored in Minio

+
+
Parameters
+

client – Minio client

+
+
Returns
+

List of Splitgraph object IDs

+
+
+
+ +
+
+

splitgraph.hooks.splitfile_commands module

+

A framework for custom Splitfile commands. The execution flow is as follows:

+
+
    +
  • When the Splitfile executor finds an unknown command, it looks for an entry in the config file:

    +
    [commands]
    +RUN=splitgraph.plugins.Run
    +
    +
    +
  • +
  • The command class must extend this class, initialized at every invocation time.

  • +
  • The command’s calc_hash() method is run. The resultant command context hash is combined with the current +image hash to produce the new image hash: if it already exists, then the image is simply checked out.

  • +
  • Otherwise (or if calc_hash is undefined or returns None), execute(), where the actual command should be +implemented, is run. If it returns a hash, this hash is used for the new image. If this hash already exists, +the existing image is checked out instead. If the command returns None, a random hash is generated for the +new image.

  • +
+
+
+
+class splitgraph.hooks.splitfile_commands.PluginCommand
+

Bases: object

+

Base class for custom Splitfile commands.

+
+
+calc_hash(repository, args)
+

Calculates the command context hash for this custom command. If either the command context hash or the +previous image hash has changed, then the image hash produced by this command will change. +Consequently, two commands with the same command context hashes are assumed to have the same effect +on any Splitgraph images.

+

This is supposed to be a lightweight method intended for pre-flight image hash calculations +(without performing the actual transformation). If it returns None, the actual transformation is run anyway.

+

For example, for a command that imports some data from an external URL, this could be the hash of the last +modified timestamp provided by the external data vendor. If the timestamp is unchanged, the data is unchanged +and so actual command won’t be re-executed.

+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits)

+
+
+
+ +
+
+execute(repository, args)
+

Execute the custom command against the target schema, optionally returning the new image hash. The contract +for the command is as follows (though it is not currently enforced by the runtime):

+
+
    +
  • Has to use get_engine().run_sql (or run_sql_batch) to interact with the engine.

  • +
  • Can only write to the schema with the checked-out repository (run_sql runs non-schema-qualified +statements against the correct schema).

  • +
  • Can inspect splitgraph_meta (e.g. to find the current HEAD) for the repository.

  • +
  • Can’t alter the versioning of the repository.

  • +
+
+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits). If calc_hash() had previously returned +a hash, this hash is ignored. If both this command and calc_hash() return None, the hash is randomly +generated.

+
+
+
+ +
+ +
+
+

Module contents

+

Various hooks for extending Splitgraph, including:

+
+
    +
  • External object handlers (splitgraph.hooks.external_objects) allowing to download/upload objects +to locations other than the remote Splitgraph engine.

  • +
  • Data sources (splitgraph.hooks.data_sources) that allow to add data to Splitgraph, e.g.

  • +
+
+

using the Postgres engine’s FDW interface to mount other external databases on the engine.

+
+ +
+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.airbyte.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.airbyte.mdx new file mode 100644 index 00000000..bcac84f7 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.airbyte.mdx @@ -0,0 +1,667 @@ + + + +export const meta = { + title: "splitgraph.ingestion.airbyte package", + id: "splitgraph.ingestion.airbyte package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.airbyte.data_source module

+
+
+class splitgraph.ingestion.airbyte.data_source.AirbyteDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.SyncableDataSource, abc.ABC

+

Generic data source for Airbyte-compliant sources. +We run ingestion by combining an Airbyte source and the Airbyte Postgres destination.

+
+
+airbyte_name: Optional[str] = None
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'normalization_git_url': &lbrace;'description': 'For `custom` normalization, a URL to the Git repo with the dbt project, for example,`https://uname:pass_or_token@github.com/organisation/repository.git`.', 'title': 'dbt model Git URL', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+cursor_overrides: Optional[Dict[str, List[str]]] = None
+
+ +
+
+docker_environment: Optional[Dict[str, str]] = None
+
+ +
+
+docker_image: Optional[str] = None
+
+ +
+
+get_airbyte_config() Dict[str, Any]
+
+ +
+
+introspect() IntrospectionResult
+
+ +
+
+load(repository: splitgraph.core.repository.Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+
+normalization_image = 'airbyte/normalization:0.1.59'
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'normalization_git_branch': &lbrace;'default': 'master', 'description': 'Branch or commit hash to use for the normalization dbt project.', 'title': 'dbt model Git branch', 'type': 'string'&rbrace;, 'normalization_mode': &lbrace;'default': ['basic'], 'description': "Whether to normalize raw Airbyte tables. `none` is no normalization, `basic` is Airbyte's basic normalization, `custom` is a custom dbt transformation on the data.", 'enum': ['none', 'basic', 'custom'], 'title': 'Post-ingestion normalization', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+primary_key_overrides: Optional[Dict[str, List[str]]] = None
+
+ +
+
+receiver_image = 'airbyte/destination-postgres:0.3.12'
+
+ +
+
+sync(repository: splitgraph.core.repository.Repository, image_hash: Optional[str] = None, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_state: bool = True) str
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'airbyte_cursor_fields': &lbrace;'description': "Fields in this stream to be used as a cursor for incremental replication (overrides Airbyte configuration's cursor_field)", 'items': &lbrace;'type': 'string'&rbrace;, 'title': 'Cursor field(s)', 'type': 'array'&rbrace;, 'airbyte_primary_key_fields': &lbrace;'description': "Fields in this stream to be used as a primary key for deduplication (overrides Airbyte configuration's primary_key)", 'items': &lbrace;'type': 'string'&rbrace;, 'title': 'Primary key field(s)', 'type': 'array'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.ingestion.airbyte.data_source.delete_schema_at_end(engine: splitgraph.engine.postgres.engine.PostgresEngine, schema: str) Generator
+
+ +
+
+splitgraph.ingestion.airbyte.data_source.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+

splitgraph.ingestion.airbyte.docker_utils module

+
+
+exception splitgraph.ingestion.airbyte.docker_utils.SubprocessError
+

Bases: splitgraph.exceptions.SplitGraphError

+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.add_files(container: docker.models.containers.Container, files: List[Tuple[str, str]]) None
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.build_command(files: List[Tuple[str, Any]]) List[str]
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.detect_network_mode(client: docker.client.DockerClient) str
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.remove_at_end(container: docker.models.containers.Container) docker.models.containers.Container
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.wait_not_failed(container: docker.models.containers.Container, mirror_logs: bool = False) None
+

Block until a Docker container exits.

+

:raises SubprocessError if the container exited with a non-zero code.

+
+ +
+
+

splitgraph.ingestion.airbyte.models module

+
+
+class splitgraph.ingestion.airbyte.models.AirbyteCatalog(*, streams: List[splitgraph.ingestion.airbyte.models.AirbyteStream], **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+streams: List[splitgraph.ingestion.airbyte.models.AirbyteStream]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus(*, status: splitgraph.ingestion.airbyte.models.Status, message: str = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+message: Optional[str]
+
+ +
+
+status: splitgraph.ingestion.airbyte.models.Status
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteLogMessage(*, level: splitgraph.ingestion.airbyte.models.Level, message: str, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+level: splitgraph.ingestion.airbyte.models.Level
+
+ +
+
+message: str
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteMessage(*, type: splitgraph.ingestion.airbyte.models.Type, log: splitgraph.ingestion.airbyte.models.AirbyteLogMessage = None, spec: splitgraph.ingestion.airbyte.models.ConnectorSpecification = None, connectionStatus: splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus = None, catalog: splitgraph.ingestion.airbyte.models.AirbyteCatalog = None, record: splitgraph.ingestion.airbyte.models.AirbyteRecordMessage = None, state: splitgraph.ingestion.airbyte.models.AirbyteStateMessage = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+catalog: Optional[splitgraph.ingestion.airbyte.models.AirbyteCatalog]
+
+ +
+
+connectionStatus: Optional[splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus]
+
+ +
+
+log: Optional[splitgraph.ingestion.airbyte.models.AirbyteLogMessage]
+
+ +
+
+record: Optional[splitgraph.ingestion.airbyte.models.AirbyteRecordMessage]
+
+ +
+
+spec: Optional[splitgraph.ingestion.airbyte.models.ConnectorSpecification]
+
+ +
+
+state: Optional[splitgraph.ingestion.airbyte.models.AirbyteStateMessage]
+
+ +
+
+type: splitgraph.ingestion.airbyte.models.Type
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteProtocol(*, airbyte_message: splitgraph.ingestion.airbyte.models.AirbyteMessage = None, configured_airbyte_catalog: splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog = None)
+

Bases: pydantic.main.BaseModel

+
+
+airbyte_message: Optional[splitgraph.ingestion.airbyte.models.AirbyteMessage]
+
+ +
+
+configured_airbyte_catalog: Optional[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteRecordMessage(*, stream: str, data: Dict[str, Any], emitted_at: int, namespace: str = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+data: Dict[str, Any]
+
+ +
+
+emitted_at: int
+
+ +
+
+namespace: Optional[str]
+
+ +
+
+stream: str
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteStateMessage(*, data: Dict[str, Any], **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+data: Dict[str, Any]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteStream(*, name: str, json_schema: Dict[str, Any], supported_sync_modes: List[splitgraph.ingestion.airbyte.models.SyncMode] = None, source_defined_cursor: bool = None, default_cursor_field: List[str] = None, source_defined_primary_key: List[List[str]] = None, namespace: str = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+default_cursor_field: Optional[List[str]]
+
+ +
+
+json_schema: Dict[str, Any]
+
+ +
+
+name: str
+
+ +
+
+namespace: Optional[str]
+
+ +
+
+source_defined_cursor: Optional[bool]
+
+ +
+
+source_defined_primary_key: Optional[List[List[str]]]
+
+ +
+
+supported_sync_modes: Optional[List[splitgraph.ingestion.airbyte.models.SyncMode]]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog(*, streams: List[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream], **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+streams: List[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream(*, stream: splitgraph.ingestion.airbyte.models.AirbyteStream, sync_mode: splitgraph.ingestion.airbyte.models.SyncMode, cursor_field: List[str] = None, destination_sync_mode: splitgraph.ingestion.airbyte.models.DestinationSyncMode, primary_key: List[List[str]] = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+cursor_field: Optional[List[str]]
+
+ +
+
+destination_sync_mode: splitgraph.ingestion.airbyte.models.DestinationSyncMode
+
+ +
+
+primary_key: Optional[List[List[str]]]
+
+ +
+
+stream: splitgraph.ingestion.airbyte.models.AirbyteStream
+
+ +
+
+sync_mode: splitgraph.ingestion.airbyte.models.SyncMode
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.ConnectorSpecification(*, documentationUrl: pydantic.networks.AnyUrl = None, changelogUrl: pydantic.networks.AnyUrl = None, connectionSpecification: Dict[str, Any], supportsIncremental: bool = None, supportsNormalization: bool = False, supportsDBT: bool = False, supported_destination_sync_modes: List[splitgraph.ingestion.airbyte.models.DestinationSyncMode] = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+changelogUrl: Optional[pydantic.networks.AnyUrl]
+
+ +
+
+connectionSpecification: Dict[str, Any]
+
+ +
+
+documentationUrl: Optional[pydantic.networks.AnyUrl]
+
+ +
+
+supported_destination_sync_modes: Optional[List[splitgraph.ingestion.airbyte.models.DestinationSyncMode]]
+
+ +
+
+supportsDBT: Optional[bool]
+
+ +
+
+supportsIncremental: Optional[bool]
+
+ +
+
+supportsNormalization: Optional[bool]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.DestinationSyncMode(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+append = 'append'
+
+ +
+
+append_dedup = 'append_dedup'
+
+ +
+
+overwrite = 'overwrite'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.Level(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+DEBUG = 'DEBUG'
+
+ +
+
+ERROR = 'ERROR'
+
+ +
+
+FATAL = 'FATAL'
+
+ +
+
+INFO = 'INFO'
+
+ +
+
+TRACE = 'TRACE'
+
+ +
+
+WARN = 'WARN'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.Status(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+FAILED = 'FAILED'
+
+ +
+
+SUCCEEDED = 'SUCCEEDED'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.SyncMode(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+full_refresh = 'full_refresh'
+
+ +
+
+incremental = 'incremental'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.Type(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+CATALOG = 'CATALOG'
+
+ +
+
+CONNECTION_STATUS = 'CONNECTION_STATUS'
+
+ +
+
+LOG = 'LOG'
+
+ +
+
+RECORD = 'RECORD'
+
+ +
+
+SPEC = 'SPEC'
+
+ +
+
+STATE = 'STATE'
+
+ +
+ +
+
+

splitgraph.ingestion.airbyte.utils module

+
+
+splitgraph.ingestion.airbyte.utils.get_pk_cursor_fields(stream: splitgraph.ingestion.airbyte.models.AirbyteStream, table_params: TableParams, cursor_overrides: Optional[Dict[str, List[str]]] = None, primary_key_overrides: Optional[Dict[str, List[str]]] = None) Tuple[Optional[List[str]], Optional[List[List[str]]]]
+
+ +
+
+splitgraph.ingestion.airbyte.utils.get_sg_schema(stream: splitgraph.ingestion.airbyte.models.AirbyteStream) List[splitgraph.core.types.TableColumn]
+
+ +
+
+splitgraph.ingestion.airbyte.utils.select_streams(catalog: splitgraph.ingestion.airbyte.models.AirbyteCatalog, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]], sync: bool = False, cursor_overrides: Optional[Dict[str, List[str]]] = None, primary_key_overrides: Optional[Dict[str, List[str]]] = None) splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.csv.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.csv.mdx new file mode 100644 index 00000000..aedb65c0 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.csv.mdx @@ -0,0 +1,320 @@ + + + +export const meta = { + title: "splitgraph.ingestion.csv package", + id: "splitgraph.ingestion.csv package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.csv.common module

+
+
+class splitgraph.ingestion.csv.common.CSVOptions(autodetect_header, autodetect_dialect, autodetect_encoding, autodetect_sample_size, schema_inference_rows, delimiter, quotechar, header, encoding, ignore_decode_errors)
+

Bases: tuple

+
+
+autodetect_dialect: bool
+

Alias for field number 1

+
+ +
+
+autodetect_encoding: bool
+

Alias for field number 2

+
+ +
+
+autodetect_header: bool
+

Alias for field number 0

+
+ +
+
+autodetect_sample_size: int
+

Alias for field number 3

+
+ +
+
+delimiter: str
+

Alias for field number 5

+
+ +
+
+encoding: str
+

Alias for field number 8

+
+ +
+
+classmethod from_fdw_options(fdw_options)
+
+ +
+
+header: bool
+

Alias for field number 7

+
+ +
+
+ignore_decode_errors: bool
+

Alias for field number 9

+
+ +
+
+quotechar: str
+

Alias for field number 6

+
+ +
+
+schema_inference_rows: int
+

Alias for field number 4

+
+ +
+
+to_csv_kwargs()
+
+ +
+
+to_table_options()
+

Turn this into a dict of table options that can be plugged back into CSVDataSource.

+
+ +
+ +
+
+splitgraph.ingestion.csv.common.autodetect_csv(stream: io.RawIOBase, csv_options: splitgraph.ingestion.csv.common.CSVOptions) splitgraph.ingestion.csv.common.CSVOptions
+

Autodetect the CSV dialect, encoding, header etc.

+
+ +
+
+splitgraph.ingestion.csv.common.bool_to_str(boolean: bool) str
+
+ +
+
+splitgraph.ingestion.csv.common.get_bool(params: Dict[str, Any], key: str, default: bool = True) bool
+
+ +
+
+splitgraph.ingestion.csv.common.get_s3_params(fdw_options: Dict[str, Any]) Tuple[minio.api.Minio, str, str]
+
+ +
+
+splitgraph.ingestion.csv.common.log_to_postgres(*args, **kwargs)
+
+ +
+
+splitgraph.ingestion.csv.common.make_csv_reader(response: io.IOBase, csv_options: splitgraph.ingestion.csv.common.CSVOptions) Tuple[splitgraph.ingestion.csv.common.CSVOptions, _csv._reader]
+
+ +
+
+splitgraph.ingestion.csv.common.pad_csv_row(row: List[str], num_cols: int, row_number: int) List[str]
+

Preprocess a CSV file row to make the parser more robust.

+
+ +
+
+

splitgraph.ingestion.csv.fdw module

+
+
+class splitgraph.ingestion.csv.fdw.CSVForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+

Foreign data wrapper for CSV files stored in S3 buckets or HTTP

+
+
+can_sort(sortkeys)
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+
+ +
+
+classmethod import_schema(schema, srv_options, options, restriction_type, restricts)
+
+ +
+ +
+
+splitgraph.ingestion.csv.fdw.log_to_postgres(*args, **kwargs)
+
+ +
+
+splitgraph.ingestion.csv.fdw.report_errors(table_name: str)
+

Context manager that ignores exceptions and serializes them to JSON using PG’s notice +mechanism instead. The data source is meant to load these to report on partial failures +(e.g. failed to load one table, but not others).

+
+ +
+
+

Module contents

+
+
+class splitgraph.ingestion.csv.CSVDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount CSV files in S3/HTTP.\n\nIf passed an URL, this will live query a CSV file on an HTTP server. If passed\nS3 access credentials, this will scan a bucket for CSV files, infer their schema\nand make them available to query over SQL.  \n\nFor example:  \n\n\x08\n```\nsgr mount csv target_schema -o@- <<EOF\n  &lbrace;\n    "s3_endpoint": "cdn.mycompany.com:9000",\n    "s3_access_key": "ABCDEF",\n    "s3_secret_key": "GHIJKL",\n    "s3_bucket": "data",\n    "s3_object_prefix": "csv_files/current/",\n    "autodetect_header": true,\n    "autodetect_dialect": true,\n    "autodetect_encoding": true\n  &rbrace;\nEOF\n```\n'
+
+ +
+
+commandline_kwargs_help: str = "s3_access_key:\ns3_secret_key:\nconnection:\nautodetect_header: Detect whether the CSV file has a header automatically.\nautodetect_dialect: Detect the CSV file's dialect (separator, quoting characters etc) automatically.\nautodetect_encoding: Detect the CSV file's encoding automatically.\nautodetect_sample_size: Sample size, in bytes, for encoding/dialect/header detection.\nschema_inference_rows: Number of rows to use for schema inference.\nencoding: Encoding of the CSV file.\nignore_decode_errors: Ignore errors when decoding the file.\nheader: First line of the CSV file is its header.\ndelimiter: Character used to separate fields in the file.\nquotechar: Character used to quote fields."
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'s3_access_key': &lbrace;'type': 'string'&rbrace;, 's3_secret_key': &lbrace;'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs) splitgraph.ingestion.csv.CSVDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
+

Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
+
+ +
+
+classmethod migrate_params(params: Params) Params
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'autodetect_dialect': &lbrace;'default': True, 'description': "Detect the CSV file's dialect (separator, quoting characters etc) automatically", 'type': 'boolean'&rbrace;, 'autodetect_encoding': &lbrace;'default': True, 'description': "Detect the CSV file's encoding automatically", 'type': 'boolean'&rbrace;, 'autodetect_header': &lbrace;'default': True, 'description': 'Detect whether the CSV file has a header automatically', 'type': 'boolean'&rbrace;, 'autodetect_sample_size': &lbrace;'default': 65536, 'description': 'Sample size, in bytes, for encoding/dialect/header detection', 'type': 'integer'&rbrace;, 'connection': &lbrace;'oneOf': [&lbrace;'type': 'object', 'required': ['connection_type', 'url'], 'properties': &lbrace;'connection_type': &lbrace;'type': 'string', 'const': 'http'&rbrace;, 'url': &lbrace;'type': 'string', 'description': 'HTTP URL to the CSV file'&rbrace;&rbrace;&rbrace;, &lbrace;'type': 'object', 'required': ['connection_type', 's3_endpoint', 's3_bucket'], 'properties': &lbrace;'connection_type': &lbrace;'type': 'string', 'const': 's3'&rbrace;, 's3_endpoint': &lbrace;'type': 'string', 'description': 'S3 endpoint (including port if required)'&rbrace;, 's3_region': &lbrace;'type': 'string', 'description': 'Region of the S3 bucket'&rbrace;, 's3_secure': &lbrace;'type': 'boolean', 'description': 'Whether to use HTTPS for S3 access'&rbrace;, 's3_bucket': &lbrace;'type': 'string', 'description': 'Bucket the object is in'&rbrace;, 's3_object': &lbrace;'type': 'string', 'description': 'Limit the import to a single object'&rbrace;, 's3_object_prefix': &lbrace;'type': 'string', 'description': 'Prefix for object in S3 bucket'&rbrace;&rbrace;&rbrace;], 'type': 'object'&rbrace;, 'delimiter': &lbrace;'default': ',', 'description': 'Character used to separate fields in the file', 'type': 'string'&rbrace;, 'encoding': &lbrace;'default': 'utf-8', 'description': 'Encoding of the CSV file', 'type': 'string'&rbrace;, 'header': &lbrace;'default': True, 'description': 'First line of the CSV file is its header', 'type': 'boolean'&rbrace;, 'ignore_decode_errors': &lbrace;'default': False, 'description': 'Ignore errors when decoding the file', 'type': 'boolean'&rbrace;, 'quotechar': &lbrace;'default': '"', 'description': 'Character used to quote fields', 'type': 'string'&rbrace;, 'schema_inference_rows': &lbrace;'default': 100000, 'description': 'Number of rows to use for schema inference', 'type': 'integer'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'autodetect_dialect': &lbrace;'default': True, 'description': "Detect the CSV file's dialect (separator, quoting characters etc) automatically", 'type': 'boolean'&rbrace;, 'autodetect_encoding': &lbrace;'default': True, 'description': "Detect the CSV file's encoding automatically", 'type': 'boolean'&rbrace;, 'autodetect_header': &lbrace;'default': True, 'description': 'Detect whether the CSV file has a header automatically', 'type': 'boolean'&rbrace;, 'autodetect_sample_size': &lbrace;'default': 65536, 'description': 'Sample size, in bytes, for encoding/dialect/header detection', 'type': 'integer'&rbrace;, 'delimiter': &lbrace;'default': ',', 'description': 'Character used to separate fields in the file', 'type': 'string'&rbrace;, 'encoding': &lbrace;'default': 'utf-8', 'description': 'Encoding of the CSV file', 'type': 'string'&rbrace;, 'header': &lbrace;'default': True, 'description': 'First line of the CSV file is its header', 'type': 'boolean'&rbrace;, 'ignore_decode_errors': &lbrace;'default': False, 'description': 'Ignore errors when decoding the file', 'type': 'boolean'&rbrace;, 'quotechar': &lbrace;'default': '"', 'description': 'Character used to quote fields', 'type': 'string'&rbrace;, 's3_object': &lbrace;'description': 'S3 object of the CSV file', 'type': 'string'&rbrace;, 'schema_inference_rows': &lbrace;'default': 100000, 'description': 'Number of rows to use for schema inference', 'type': 'integer'&rbrace;, 'url': &lbrace;'description': 'HTTP URL to the CSV file', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.ingestion.csv.CSVIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.csv.copy_csv_buffer(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = False, **kwargs)
+

Copy CSV data from a buffer into a given schema/table

+
+ +
+
+splitgraph.ingestion.csv.query_to_csv(engine: PsycopgEngine, query, buffer, schema: Optional[str] = None)
+
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.mdx new file mode 100644 index 00000000..9ec641d4 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.mdx @@ -0,0 +1,232 @@ + + + +export const meta = { + title: "splitgraph.ingestion package", + id: "splitgraph.ingestion package" +}; + +
+ +
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

splitgraph.ingestion.common module

+
+
+class splitgraph.ingestion.common.IngestionAdapter
+

Bases: object

+
+
+abstract create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+abstract data_to_new_table(data, engine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+abstract query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+
+to_data(query: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)
+
+ +
+
+to_table(data, repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True, no_header: bool = False, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.common.add_timestamp_tags(repository: splitgraph.core.repository.Repository, image_hash: str)
+
+ +
+
+splitgraph.ingestion.common.build_commandline_help(json_schema)
+
+ +
+
+splitgraph.ingestion.common.dedupe_sg_schema(schema_spec: List[splitgraph.core.types.TableColumn], prefix_len: int = 59) List[splitgraph.core.types.TableColumn]
+

Some foreign schemas have columns that are longer than 63 characters +where the first 63 characters are the same between several columns +(e.g. odn.data.socrata.com). This routine renames columns in a schema +to make sure this can’t happen (by giving duplicates a number suffix).

+
+ +
+
+splitgraph.ingestion.common.generate_column_names(schema_spec: List[splitgraph.core.types.TableColumn], prefix: str = 'col_') List[splitgraph.core.types.TableColumn]
+

Replace empty column names with autogenerated ones

+
+ +
+
+splitgraph.ingestion.common.merge_tables(engine: splitgraph.engine.postgres.engine.PsycopgEngine, source_schema: str, source_table: str, source_schema_spec: List[splitgraph.core.types.TableColumn], target_schema: str, target_table: str, target_schema_spec: List[splitgraph.core.types.TableColumn])
+
+ +
+
+splitgraph.ingestion.common.schema_compatible(source_schema: List[splitgraph.core.types.TableColumn], target_schema: List[splitgraph.core.types.TableColumn]) bool
+

Quick check to see if a dataframe with target_schema can be written into source_schema. +There are some implicit type conversions that SQLAlchemy/Pandas can do so we don’t want to immediately fail +if the column types aren’t exactly the same (eg bigint vs numeric etc). Most errors should be caught by PG itself.

+

Schema is a list of (ordinal, name, type, is_pk).

+
+ +
+
+

splitgraph.ingestion.inference module

+
+
+splitgraph.ingestion.inference.infer_sg_schema(sample: Sequence[List[str]], override_types: Optional[Dict[str, str]] = None, primary_keys: Optional[List[str]] = None)
+
+ +
+
+splitgraph.ingestion.inference.parse_bigint(integer: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_boolean(boolean: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_int(integer: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_json(json_s: str)
+
+ +
+
+

splitgraph.ingestion.pandas module

+

Routines that ingest/export CSV files to/from Splitgraph images using Pandas

+
+
+class splitgraph.ingestion.pandas.PandasIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.pandas.df_to_table(df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True) None
+

Writes a Pandas DataFrame to a checked-out Splitgraph table. Doesn’t create a new image.

+
+
Parameters
+
    +
  • df – Pandas DataFrame to insert.

  • +
  • repository – Splitgraph Repository object. Must be checked out.

  • +
  • table – Table name.

  • +
  • if_exists – Behaviour if the table already exists: ‘patch’ means that primary keys that already exist in the

  • +
+
+
+

table will be updated and ones that don’t will be inserted. ‘replace’ means that the table will be dropped and +recreated. +:param schema_check: If False, skips checking that the dataframe is compatible with the target schema.

+
+ +
+
+splitgraph.ingestion.pandas.df_to_table_fast(engine: PsycopgEngine, df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], target_schema: str, target_table: str)
+
+ +
+
+splitgraph.ingestion.pandas.sql_to_df(sql: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs) pandas.core.frame.DataFrame
+

Executes an SQL query against a Splitgraph image, returning the result.

+

Extra **kwargs are passed to Pandas’ read_sql_query.

+
+
Parameters
+
    +
  • sql – SQL query to execute.

  • +
  • image – Image object, image hash/tag (str) or None (use the currently checked out image).

  • +
  • repository – Repository the image belongs to. Must be set if image is a hash/tag or None.

  • +
  • use_lq – Whether to use layered querying or check out the image if it’s not checked out.

  • +
+
+
Returns
+

A Pandas dataframe.

+
+
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.singer.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.singer.mdx new file mode 100644 index 00000000..95a42e9a --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.singer.mdx @@ -0,0 +1,238 @@ + + + +export const meta = { + title: "splitgraph.ingestion.singer package", + id: "splitgraph.ingestion.singer package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.singer.commandline module

+

Command line tools for building Splitgraph images from Singer taps, including using Splitgraph as a Singer target.

+
+
+

splitgraph.ingestion.singer.common module

+
+
+splitgraph.ingestion.singer.common.log_exception(f)
+

Emit exceptions with full traceback instead of just the error text

+
+ +
+
+splitgraph.ingestion.singer.common.rollback_at_end(func: collections.abc.Callable) collections.abc.Callable
+
+ +
+
+splitgraph.ingestion.singer.common.store_ingestion_state(repository: splitgraph.core.repository.Repository, image_hash: str, current_state: Optional[Dict[str, Any]], new_state: str)
+
+ +
+
+

splitgraph.ingestion.singer.data_source module

+
+
+class splitgraph.ingestion.singer.data_source.GenericSingerDataSource(*args, **kwargs)
+

Bases: splitgraph.ingestion.singer.data_source.SingerDataSource

+
+
+credentials_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_singer_executable()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'tap_path': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['tap_path'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.ingestion.singer.data_source.MySQLSingerDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.ingestion.singer.data_source.SingerDataSource

+
+
+build_singer_catalog(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'user': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['user', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_singer_executable()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'replication_method': &lbrace;'enum': ['INCREMENTAL', 'LOG_BASED', 'FULL TABLE'], 'type': 'string'&rbrace;&rbrace;, 'required': ['host', 'port', 'replication_method'], 'type': 'object'&rbrace;
+
+ +
+
+use_legacy_stream_selection = False
+
+ +
+
+use_properties = True
+
+ +
+ +
+
+class splitgraph.ingestion.singer.data_source.SingerDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.SyncableDataSource, abc.ABC

+
+
+build_singer_catalog(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, Any]
+
+ +
+
+get_singer_config()
+
+ +
+
+abstract get_singer_executable()
+
+ +
+
+introspect() IntrospectionResult
+
+ +
+
+load(repository: splitgraph.core.repository.Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+
+sync(repository: splitgraph.core.repository.Repository, image_hash: Optional[str] = None, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_state: bool = True) str
+
+ +
+
+use_legacy_stream_selection = False
+
+ +
+
+use_properties = False
+
+ +
+ +
+
+splitgraph.ingestion.singer.data_source.select_streams(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_legacy_stream_selection=False) Dict[str, Any]
+
+ +
+
+

splitgraph.ingestion.singer.db_sync module

+
+
+class splitgraph.ingestion.singer.db_sync.DbSyncProxy(*args, **kwargs)
+

Bases: target_postgres.db_sync.DbSync

+
+
+create_indices(stream)
+
+ +
+
+create_schema_if_not_exists(table_columns_cache=None)
+
+ +
+
+delete_rows(stream)
+
+ +
+
+load_csv(file, count, size_bytes)
+
+ +
+
+sync_table()
+
+ +
+ +
+
+splitgraph.ingestion.singer.db_sync.db_sync_wrapper(image: splitgraph.core.image.Image, staging_schema: str)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.get_key_properties(stream_message)
+

Extract the PK from a stream message. Supports both legacy (“key_properties”) and +new (“metadata”) Singer taps.

+
+ +
+
+splitgraph.ingestion.singer.db_sync.get_sg_schema(stream_schema_message, flattening_max_level=0)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.get_table_name(stream_schema_message)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.run_patched_sync(repository: splitgraph.core.repository.Repository, base_image: Optional[splitgraph.core.image.Image], new_image_hash: str, delete_old: bool, failure: str, input_stream: Optional[BinaryIO] = None, output_stream: Optional[TextIO] = None)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.select_breadcrumb(stream_message, breadcrumb)
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.snowflake.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.snowflake.mdx new file mode 100644 index 00000000..4ff91954 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.snowflake.mdx @@ -0,0 +1,97 @@ + + + +export const meta = { + title: "splitgraph.ingestion.snowflake package", + id: "splitgraph.ingestion.snowflake package" +}; + +
+ +
+

Module contents

+
+
+class splitgraph.ingestion.snowflake.SnowflakeDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Snowflake database.\n\nThis will mount a remote Snowflake schema or a table. You can also get a mounted table to point to the result of a subquery that will be executed on the Snowflake instance. For example:\n\n\x08\n```\n$ sgr mount snowflake test_snowflake -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "password": "password",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "schema": "TPCH_SF100"\n    "envvars": &lbrace;"HTTPS_PROXY": "http://proxy.company.com"&rbrace;\n&rbrace;\nEOF\n\x08\n$ sgr mount snowflake test_snowflake_subquery -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "private_key": "MIIEvQIBAD...",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "tables": &lbrace;\n        "balances": &lbrace;\n            "schema": &lbrace;\n                "n_nation": "varchar",\n                "segment": "varchar",\n                "avg_balance": "numeric"\n            &rbrace;,\n            "options": &lbrace;\n                "subquery": "SELECT n_nation AS nation, c_mktsegment AS segment, AVG(c_acctbal) AS avg_balance FROM TPCH_SF100.customer c JOIN TPCH_SF100.nation n ON c_nationkey = n_nationkey"\n            &rbrace;\n        &rbrace;\n    &rbrace;\n&rbrace;\nEOF\n```\n    '
+
+ +
+
+commandline_kwargs_help: str = "username: Username. Required.\nsecret:\naccount: Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html. Required.\ndatabase: Snowflake database name. Required.\nschema: Snowflake schema.\nwarehouse: Warehouse name.\nrole: Role.\nbatch_size: Default fetch size for remote queries.\nenvvars: Environment variables to set on the engine side.\nThe schema parameter is required when subquery isn't used."
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'account': &lbrace;'description': 'Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html', 'type': 'string'&rbrace;, 'secret': &lbrace;'oneOf': [&lbrace;'type': 'object', 'required': ['secret_type', 'password'], 'properties': &lbrace;'secret_type': &lbrace;'type': 'string', 'const': 'password'&rbrace;, 'password': &lbrace;'type': 'string', 'description': 'Password'&rbrace;&rbrace;&rbrace;, &lbrace;'type': 'object', 'required': ['secret_type', 'private_key'], 'properties': &lbrace;'secret_type': &lbrace;'type': 'string', 'const': 'private_key'&rbrace;, 'private_key': &lbrace;'type': 'string', 'description': 'Private key in PEM format'&rbrace;&rbrace;&rbrace;], 'type': 'object'&rbrace;, 'username': &lbrace;'description': 'Username', 'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'account'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
+
+ +
+
+classmethod migrate_credentials(credentials: Credentials) Credentials
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'description': 'Default fetch size for remote queries', 'type': 'integer'&rbrace;, 'database': &lbrace;'description': 'Snowflake database name', 'type': 'string'&rbrace;, 'envvars': &lbrace;'description': 'Environment variables to set on the engine side', 'type': 'object'&rbrace;, 'role': &lbrace;'description': 'Role', 'type': 'string'&rbrace;, 'schema': &lbrace;'description': 'Snowflake schema', 'type': 'string'&rbrace;, 'warehouse': &lbrace;'description': 'Warehouse name', 'type': 'string'&rbrace;&rbrace;, 'required': ['database'], 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'subquery': &lbrace;'description': 'Subquery for this table to run on the server side', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.socrata.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.socrata.mdx new file mode 100644 index 00000000..4d796f57 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.ingestion.socrata.mdx @@ -0,0 +1,182 @@ + + + +export const meta = { + title: "splitgraph.ingestion.socrata package", + id: "splitgraph.ingestion.socrata package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.socrata.fdw module

+

Module imported by Multicorn on the Splitgraph engine server: a foreign data wrapper +that communicates to Socrata datasets using sodapy.

+
+
+class splitgraph.ingestion.socrata.fdw.SocrataForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+
+
+can_sort(sortkeys)
+
+
Parameters
+

sortkeys – List of SortKey

+
+
Returns
+

List of SortKey the FDW can sort on

+
+
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+

Method called from the planner to estimate the resulting relation +size for a scan. +It will help the planner in deciding between different types of plans, +according to their costs. +Args:

+
+
+
quals (list): A list of Qual instances describing the filters

applied to this scan.

+
+
+

columns (list): The list of columns that must be returned.

+
+
+
Returns:

A tuple of the form (expected_number_of_rows, avg_row_width (in bytes))

+
+
+
+ +
+
+property table_meta
+
+ +
+ +
+
+splitgraph.ingestion.socrata.fdw.to_json(row, columns, column_map)
+
+ +
+
+

splitgraph.ingestion.socrata.mount module

+

Splitgraph mount handler for Socrata datasets

+
+
+class splitgraph.ingestion.socrata.mount.SocrataDataSource(engine: PsycopgEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'app_token': &lbrace;'description': 'Socrata app token', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs) splitgraph.ingestion.socrata.mount.SocrataDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
+

Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'default': 1000, 'description': 'Amount of rows to fetch from Socrata per request (limit parameter)', 'maximum': 50000, 'minimum': 1, 'type': 'integer'&rbrace;, 'domain': &lbrace;'description': 'Socrata domain, for example, data.albanyny.gov', 'type': 'string'&rbrace;&rbrace;, 'required': ['domain'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'socrata_id': &lbrace;'description': 'Socrata dataset ID, e.g. xzkq-xp2w', 'type': 'string'&rbrace;&rbrace;, 'required': ['socrata_id'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.ingestion.socrata.mount.generate_socrata_mount_queries(sought_ids, datasets, mountpoint, server_id, tables: Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]])
+
+ +
+
+

splitgraph.ingestion.socrata.querying module

+
+
+splitgraph.ingestion.socrata.querying.cols_to_socrata(cols, column_map: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.ingestion.socrata.querying.estimate_socrata_rows_width(columns, metadata, column_map=None)
+

Estimate number of rows required for a query and each row’s width +from the table metadata.

+
+ +
+
+splitgraph.ingestion.socrata.querying.quals_to_socrata(quals, column_map: Optional[Dict[str, str]] = None)
+

Convert a list of Multicorn quals to a SoQL query

+
+ +
+
+splitgraph.ingestion.socrata.querying.socrata_to_sg_schema(metadata: Dict[str, Any]) Tuple[List[splitgraph.core.types.TableColumn], Dict[str, str]]
+
+ +
+
+splitgraph.ingestion.socrata.querying.sortkeys_to_socrata(sortkeys, column_map: Optional[Dict[str, str]] = None)
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.mdx new file mode 100644 index 00000000..f72f46e9 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.mdx @@ -0,0 +1,369 @@ + + + +export const meta = { + title: "splitgraph package", + id: "splitgraph package" +}; + +
+ +
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

splitgraph.exceptions module

+

Exceptions that can be raised by the Splitgraph library.

+
+
+exception splitgraph.exceptions.APICompatibilityError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions related to API incompatibilities

+
+ +
+
+exception splitgraph.exceptions.AuthAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by the Auth API

+
+ +
+
+exception splitgraph.exceptions.CheckoutError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to checking out/committing repositories

+
+ +
+
+exception splitgraph.exceptions.DataSourceError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by mount handlers.

+
+ +
+
+exception splitgraph.exceptions.DockerUnavailableError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Could not connect to the Docker daemon.

+
+ +
+
+exception splitgraph.exceptions.EngineInitializationError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when the engine isn’t initialized (no splitgraph_meta schema or audit triggers)

+
+ +
+
+exception splitgraph.exceptions.EngineSetupError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised on various setup issues with the Splitgraph engine

+
+ +
+
+exception splitgraph.exceptions.ExternalHandlerError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by external object handlers.

+
+ +
+
+exception splitgraph.exceptions.GQLAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

GQL API errors

+
+ +
+
+exception splitgraph.exceptions.GQLRepoDoesntExistError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Repository doesn’t exist

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthenticatedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthenticated (user not logged in)

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthorizedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthorized (e.g. repository isn’t writeable by the user)

+
+ +
+
+exception splitgraph.exceptions.ImageNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph image doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectDownloadError(reason: Optional[BaseException], successful_objects: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during download of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectUploadError(reason: Optional[BaseException], successful_objects: List[str], successful_object_urls: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during upload of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.ObjectCacheError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Issues with the object cache (not enough space)

+
+ +
+
+exception splitgraph.exceptions.ObjectIndexingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to indexing objects

+
+ +
+
+exception splitgraph.exceptions.ObjectMountingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to incompatible objects.

+
+ +
+
+exception splitgraph.exceptions.ObjectNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when a physical object doesn’t exist in the cache.

+
+ +
+
+exception splitgraph.exceptions.RepositoryNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph repository doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.SplitGraphError
+

Bases: Exception

+

A generic Splitgraph exception.

+
+ +
+
+exception splitgraph.exceptions.SplitfileError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Generic error class for Splitfile interpretation/execution errors.

+
+ +
+
+exception splitgraph.exceptions.TableNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A table doesn’t exist in an image

+
+ +
+
+exception splitgraph.exceptions.UnsupportedSQLError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised for unsupported SQL statements, for example, containing schema-qualified tables when the statement +is supposed to be used in an SQL/IMPORT Splitfile command.

+
+ +
+
+splitgraph.exceptions.get_exception_name(o)
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.splitfile.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.splitfile.mdx new file mode 100644 index 00000000..591d9290 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.splitfile.mdx @@ -0,0 +1,94 @@ + + + +export const meta = { + title: "splitgraph.splitfile package", + id: "splitgraph.splitfile package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.splitfile.execution module

+

Functions for executing Splitfiles.

+
+
+class splitgraph.splitfile.execution.ImageMapper(object_engine: splitgraph.engine.postgres.engine.PostgresEngine)
+

Bases: object

+
+
+get_provenance_data() Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]
+
+ +
+
+setup_lq_mounts() None
+
+ +
+
+teardown_lq_mounts() None
+
+ +
+ +
+
+splitgraph.splitfile.execution.checkout_if_changed(repository: splitgraph.core.repository.Repository, image_hash: str) None
+
+ +
+
+splitgraph.splitfile.execution.execute_commands(commands: str, params: Optional[Dict[str, str]] = None, output: Optional[splitgraph.core.repository.Repository] = None, output_base: str = '00000000000000000000000000000000') None
+

Executes a series of Splitfile commands.

+
+
Parameters
+
    +
  • commands – A string with the raw Splitfile.

  • +
  • params – A dictionary of parameters to be applied to the Splitfile ($&lbrace;PARAM&rbrace; is replaced with the specified +parameter value).

  • +
  • output – Output repository to execute the Splitfile against.

  • +
  • output_base – If not None, a revision that gets checked out for all Splitfile actions to be committed +on top of it.

  • +
+
+
+
+ +
+
+splitgraph.splitfile.execution.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.splitfile.execution.prevalidate_imports(table_names: List[str], table_queries: List[bool]) List[str]
+
+ +
+
+splitgraph.splitfile.execution.rebuild_image(image: splitgraph.core.image.Image, source_replacement: Dict[splitgraph.core.repository.Repository, str]) None
+

Recreates the Splitfile used to create a given image and reruns it, replacing its dependencies with a different +set of versions.

+
+
Parameters
+
    +
  • image – Image object

  • +
  • source_replacement – A map that specifies replacement images/tags for repositories that the image depends on

  • +
+
+
+
+ +
+
+

Module contents

+

Splitfile interpreter: a set of tools on top of the core Splitgraph versioning and image management to give +the user a Dockerfile-like experience for building Splitgraph images (caching, consistent hashing, a declarative +language).

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.utils.mdx b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.utils.mdx new file mode 100644 index 00000000..3050ea58 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.2.18/splitgraph.utils.mdx @@ -0,0 +1,51 @@ + + + +export const meta = { + title: "splitgraph.utils package", + id: "splitgraph.utils package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.utils.docker module

+
+
+splitgraph.utils.docker.copy_dir_to_container(container: Container, source_path: str, target_path: str, exclude_names: Optional[List[str]] = None) None
+
+ +
+
+splitgraph.utils.docker.copy_to_container(container: Container, source_path: Optional[str], target_path: str, data: Optional[bytes] = None) None
+

Copy a file into a Docker container

+
+
Parameters
+
    +
  • container – Container object

  • +
  • source_path – Source file path

  • +
  • target_path – Target file path (in the container)

  • +
+
+
Returns
+

+
+
+
+ +
+
+splitgraph.utils.docker.get_docker_client()
+

Wrapper around client.from_env() that also pings the daemon +to make sure it can connect and if not, raises an error.

+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/metadata.json b/content/docs/9500_python-api/9000_versions/v0.3.0/metadata.json new file mode 100644 index 00000000..4f00220f --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/metadata.json @@ -0,0 +1,23 @@ +{ + "title": "v0.3.0", + "updated_at": "2022-01-20T00:00:34.865Z", + "release": { + "id": 55571256, + "tag_name": "v0.3.0", + "target_commitish": "fb8bbc616bda9717cd77db3597381a9cbe26d488", + "created_at": "2021-12-17T19:30:50Z", + "published_at": "2021-12-17T19:49:27Z", + "assets": [ + { + "id": 52039025, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/52039025", + "name": "sgr-docs-bin.tar.gz", + "label": "", + "created_at": "2021-12-17T19:49:15Z", + "updated_at": "2021-12-17T19:49:16Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.3.0/sgr-docs-bin.tar.gz" + } + ] + }, + "isLatest": false +} diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/modules.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/modules.mdx new file mode 100644 index 00000000..493f105b --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/modules.mdx @@ -0,0 +1,123 @@ + + + +export const meta = { + title: "splitgraph", + id: "splitgraph" +}; + +
+ +
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.cloud.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.cloud.mdx new file mode 100644 index 00000000..8f40bbd1 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.cloud.mdx @@ -0,0 +1,921 @@ + + + +export const meta = { + title: "splitgraph.cloud package", + id: "splitgraph.cloud package" +}; + +
+ +
+

Subpackages

+
+
+
+
+

Submodules

+
+
+

splitgraph.cloud.models module

+

Definitions for responses from the cloud GQL/REST APIs

+
+
+class splitgraph.cloud.models.AddExternalCredentialRequest(*, credential_name: str, credential_data: Dict[str, Any], plugin_name: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_data: Dict[str, Any]
+
+ +
+
+credential_name: str
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+class splitgraph.cloud.models.AddExternalRepositoriesRequest(*, repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest])
+

Bases: pydantic.main.BaseModel

+
+
+repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest]
+
+ +
+ +
+
+class splitgraph.cloud.models.AddExternalRepositoryRequest(*, namespace: str, repository: str, plugin_name: str, params: Params, is_live: bool, tables: Dict[str, splitgraph.cloud.models.ExternalTableRequest] = None, credential_id: str = None, credential_name: str = None, credential_data: Dict[str, Any] = None, schedule: splitgraph.cloud.project.models.IngestionSchedule = None, initial_private: bool = False)
+

Bases: pydantic.main.BaseModel

+
+
+credential_data: Optional[Dict[str, Any]]
+
+ +
+
+credential_id: Optional[str]
+
+ +
+
+credential_name: Optional[str]
+
+ +
+
+classmethod from_external(namespace: str, repository: str, external: splitgraph.cloud.project.models.External, credential_map: Optional[Dict[str, str]] = None, initial_private: bool = False)
+
+ +
+
+initial_private: bool
+
+ +
+
+is_live: bool
+
+ +
+
+namespace: str
+
+ +
+
+params: Params
+
+ +
+
+plugin_name: str
+
+ +
+
+repository: str
+
+ +
+
+schedule: Optional[splitgraph.cloud.project.models.IngestionSchedule]
+
+ +
+
+tables: Optional[Dict[str, splitgraph.cloud.models.ExternalTableRequest]]
+
+ +
+ +
+
+class splitgraph.cloud.models.ExportJobStatus(*, task_id: str, started: datetime.datetime, finished: datetime.datetime = None, status: str = None, user_id: str = None, export_format: str, output: Dict[str, Any] = None)
+

Bases: splitgraph.cloud.models.JobStatus

+
+
+export_format: str
+
+ +
+
+output: Optional[Dict[str, Any]]
+
+ +
+
+user_id: Optional[str]
+
+ +
+ +
+
+class splitgraph.cloud.models.ExternalResponse(*, namespace: str, repository: str, credentialId: str = None, dataSource: str, params: Dict[str, Any], tableParams: Dict[str, Any], externalImageByNamespaceAndRepository: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse = None, ingestionScheduleByNamespaceAndRepository: splitgraph.cloud.models.ExternalResponse.IngestionScheduleResponse = None)
+

Bases: pydantic.main.BaseModel

+
+
+class ExternalImageResponse(*, imageByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class ImageResponse(*, tablesByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class TablesResponse(*, nodes: List[splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse.Node])
+

Bases: pydantic.main.BaseModel

+
+
+class Node(*, tableName: str, tableSchema: List[splitgraph.core.types.TableColumn])
+

Bases: pydantic.main.BaseModel

+
+
+tableName: str
+
+ +
+
+tableSchema: List[splitgraph.core.types.TableColumn]
+
+ +
+ +
+
+nodes: List[splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse.Node]
+
+ +
+ +
+
+tablesByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse
+
+ +
+ +
+
+imageByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse
+
+ +
+ +
+
+class IngestionScheduleResponse(*, schedule: str, schema: Dict[str, List[splitgraph.core.types.TableColumn]], enabled: bool = True)
+

Bases: pydantic.main.BaseModel

+
+
+schedule: str
+
+ +
+
+schema_: Dict[str, List[splitgraph.core.types.TableColumn]]
+
+ +
+ +
+
+credentialId: Optional[str]
+
+ +
+
+dataSource: str
+
+ +
+
+externalImageByNamespaceAndRepository: Optional[splitgraph.cloud.models.ExternalResponse.ExternalImageResponse]
+
+ +
+
+classmethod from_response(response) List[splitgraph.cloud.models.ExternalResponse]
+
+ +
+
+ingestionScheduleByNamespaceAndRepository: Optional[splitgraph.cloud.models.ExternalResponse.IngestionScheduleResponse]
+
+ +
+
+namespace: str
+
+ +
+
+params: Dict[str, Any]
+
+ +
+
+repository: str
+
+ +
+
+tableParams: Dict[str, Any]
+
+ +
+
+to_external() splitgraph.cloud.project.models.External
+
+ +
+ +
+
+class splitgraph.cloud.models.ExternalTableRequest(*, options: Dict[str, Any] = &lbrace;&rbrace;, schema: Dict[str, str] = None)
+

Bases: pydantic.main.BaseModel

+
+
+options: Dict[str, Any]
+
+ +
+
+schema_: Optional[Dict[str, str]]
+
+ +
+ +
+
+class splitgraph.cloud.models.IngestionJobStatus(*, task_id: str, started: datetime.datetime, finished: datetime.datetime = None, status: str = None, is_manual: bool)
+

Bases: splitgraph.cloud.models.JobStatus

+
+
+is_manual: bool
+
+ +
+ +
+
+class splitgraph.cloud.models.JobStatus(*, task_id: str, started: datetime.datetime, finished: datetime.datetime = None, status: str = None)
+

Bases: pydantic.main.BaseModel

+
+
+finished: Optional[datetime.datetime]
+
+ +
+
+started: datetime.datetime
+
+ +
+
+status: Optional[str]
+
+ +
+
+task_id: str
+
+ +
+ +
+
+class splitgraph.cloud.models.ListExternalCredentialsResponse(*, credentials: List[splitgraph.cloud.models.ListExternalCredentialsResponse.ExternalCredential])
+

Bases: pydantic.main.BaseModel

+
+
+class ExternalCredential(*, plugin_name: str, credential_name: str = None, credential_id: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_id: str
+
+ +
+
+credential_name: Optional[str]
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+credentials: List[splitgraph.cloud.models.ListExternalCredentialsResponse.ExternalCredential]
+
+ +
+ +
+
+class splitgraph.cloud.models.MetadataResponse(*, namespace: str, repository: str, repoTopicsByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse, repoProfileByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class RepoProfileResponse(*, readme: str = None, description: str = None, topics: List[str] = None, sources: List[splitgraph.cloud.project.models.Source] = None, license: str = None, metadata: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse.MetadataResponse = None)
+

Bases: pydantic.main.BaseModel

+
+
+class MetadataResponse(*, created_at: str = None, updated_at: str = None, upstream_metadata: Dict[str, Any])
+

Bases: pydantic.main.BaseModel

+
+
+created_at: Optional[str]
+
+ +
+
+updated_at: Optional[str]
+
+ +
+
+upstream_metadata: Dict[str, Any]
+
+ +
+ +
+
+description: Optional[str]
+
+ +
+
+license: Optional[str]
+
+ +
+
+metadata: Optional[splitgraph.cloud.models.MetadataResponse.RepoProfileResponse.MetadataResponse]
+
+ +
+
+readme: Optional[str]
+
+ +
+
+sources: Optional[List[splitgraph.cloud.project.models.Source]]
+
+ +
+
+topics: Optional[List[str]]
+
+ +
+ +
+
+class RepoTopicsResponse(*, nodes: List[splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse.RepositoryTopics])
+

Bases: pydantic.main.BaseModel

+
+
+class RepositoryTopics(*, topic: str)
+

Bases: pydantic.main.BaseModel

+
+
+topic: str
+
+ +
+ +
+
+nodes: List[splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse.RepositoryTopics]
+
+ +
+ +
+
+classmethod from_response(response) List[splitgraph.cloud.models.MetadataResponse]
+
+ +
+
+namespace: str
+
+ +
+
+repoProfileByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse
+
+ +
+
+repoTopicsByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse
+
+ +
+
+repository: str
+
+ +
+
+to_metadata() splitgraph.cloud.project.models.Metadata
+
+ +
+ +
+
+class splitgraph.cloud.models.Plugin(*, plugin_name: str, credentials_schema: Dict[str, Any], params_schema: Dict[str, Any], table_params_schema: Dict[str, Any], name: str, description: str, supports_mount: bool, supports_load: bool, supports_sync: bool)
+

Bases: pydantic.main.BaseModel

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+description: str
+
+ +
+
+name: str
+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+plugin_name: str
+
+ +
+
+supports_load: bool
+
+ +
+
+supports_mount: bool
+
+ +
+
+supports_sync: bool
+
+ +
+
+table_params_schema: Dict[str, Any]
+
+ +
+ +
+
+class splitgraph.cloud.models.RepositoryIngestionJobStatusResponse(*, repositoryIngestionJobStatus: splitgraph.cloud.models.RepositoryIngestionJobStatusResponse.RepositoryIngestionJobStatus)
+

Bases: pydantic.main.BaseModel

+
+
+class RepositoryIngestionJobStatus(*, nodes: List[splitgraph.cloud.models.RepositoryIngestionJobStatusResponse.RepositoryIngestionJobStatus.Node])
+

Bases: pydantic.main.BaseModel

+
+
+class Node(*, taskId: str, started: datetime.datetime, finished: datetime.datetime = None, isManual: bool, status: str = None)
+

Bases: pydantic.main.BaseModel

+
+
+finished: Optional[datetime.datetime]
+
+ +
+
+isManual: bool
+
+ +
+
+started: datetime.datetime
+
+ +
+
+status: Optional[str]
+
+ +
+
+taskId: str
+
+ +
+ +
+
+nodes: List[splitgraph.cloud.models.RepositoryIngestionJobStatusResponse.RepositoryIngestionJobStatus.Node]
+
+ +
+ +
+
+classmethod from_response(response) splitgraph.cloud.models.RepositoryIngestionJobStatusResponse
+
+ +
+
+repositoryIngestionJobStatus: splitgraph.cloud.models.RepositoryIngestionJobStatusResponse.RepositoryIngestionJobStatus
+
+ +
+ +
+
+class splitgraph.cloud.models.UpdateExternalCredentialRequest(*, credential_id: str, credential_name: str, credential_data: Dict[str, Any], plugin_name: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_data: Dict[str, Any]
+
+ +
+
+credential_id: str
+
+ +
+
+credential_name: str
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+class splitgraph.cloud.models.UpdateExternalCredentialResponse(*, credential_id: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_id: str
+
+ +
+ +
+
+splitgraph.cloud.models.make_repositories(metadata_responses: List[splitgraph.cloud.models.MetadataResponse], external_responses: List[splitgraph.cloud.models.ExternalResponse]) List[splitgraph.cloud.project.models.Repository]
+
+ +
+
+

splitgraph.cloud.queries module

+
+
+

Module contents

+

Public API for interacting with the Splitgraph registry

+
+
+splitgraph.cloud.AuthAPIClient(*args, **kwargs)
+
+ +
+
+class splitgraph.cloud.GQLAPIClient(remote: Optional[str], endpoint: Optional[str] = None, access_token: Optional[str] = None)
+

Bases: object

+

Wrapper class for select Splitgraph Registry GQL operations that can be +called from the CLI

+
+
+property access_token: Optional[str]
+
+ +
+
+bulk_upsert_metadata(namespace_list: List[str], repository_list: List[str], metadata_list: List[splitgraph.cloud.project.models.Metadata])
+
+ +
+
+find_repository(query: str, limit: int = 10) Tuple[int, List[Tuple[str, str, str]]]
+
+ +
+
+get_all_plugins() List[splitgraph.cloud.models.Plugin]
+
+ +
+
+get_csv_upload_download_urls() Tuple[str, str]
+
+ +
+
+get_export_job_status(task_id: str) Optional[splitgraph.cloud.models.ExportJobStatus]
+
+ +
+
+get_external_metadata(namespace: str, repository: str) Optional[splitgraph.cloud.models.ExternalResponse]
+
+ +
+
+get_ingestion_job_logs(namespace: str, repository: str, task_id: str) str
+
+ +
+
+get_latest_ingestion_job_status(namespace: str, repository: str) Optional[splitgraph.cloud.models.IngestionJobStatus]
+
+ +
+
+get_metadata(namespace: str, repository: str) Optional[splitgraph.cloud.models.MetadataResponse]
+
+ +
+
+get_plugin(plugin_name: str) Optional[splitgraph.cloud.models.Plugin]
+
+ +
+
+load_all_repositories(limit_to: Optional[List[str]] = None) List[splitgraph.cloud.project.models.Repository]
+
+ +
+
+property maybe_access_token: Optional[str]
+
+ +
+
+start_csv_load(namespace: str, repository: str, download_urls: List[str], table_names: List[str]) str
+
+ +
+
+start_export(query: str) str
+
+ +
+
+start_load_existing(namespace: str, repository: str, sync: bool = True) str
+
+ +
+
+start_load_params(namespace: str, repository: str, external: splitgraph.cloud.project.models.External, sync: bool = True, credential_data: Optional[Dict[str, Any]] = None, initial_private: bool = False) str
+
+ +
+
+upsert_description(namespace: str, repository: str, description: str)
+
+ +
+
+upsert_metadata(namespace: str, repository: str, metadata: splitgraph.cloud.project.models.Metadata)
+

Update metadata for a single repository.

+
+ +
+
+upsert_readme(namespace: str, repository: str, readme: str)
+
+ +
+
+upsert_topics(namespace: str, repository: str, topics: List[str])
+
+ +
+ +
+
+class splitgraph.cloud.RESTAPIClient(remote: str)
+

Bases: object

+

Client for various Splitgraph Registry REST APIs: auth token generation, external repo setup…

+
+
+property access_token: str
+

Will return an up-to-date access token by either getting it from +the configuration file or contacting the auth service for a new one. +Will write the new access token into the configuration file.

+
+
Returns
+

Access token.

+
+
+
+ +
+
+bulk_upsert_external(repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest])
+
+ +
+
+create_machine_credentials(access_token: str, password: str) requests.models.Response
+

Generate a key and secret that can be used to log into the Splitgraph registry +via a normal Postgres connection. The secret must be stored in the user’s local +configuration file (it’s not stored on Splitgraph servers).

+
+
Parameters
+
    +
  • access_token – Access token

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (key, secret).

+
+
+
+ +
+
+ensure_external_credential(credential_data: Dict[str, Any], credential_name: str, plugin_name: str) str
+

Store a credential for accessing an external data source +in Splitgraph Cloud and return its ID

+
+ +
+
+get_access_token(refresh_token: str) requests.models.Response
+

Get a new access token from a refresh token.

+
+
Parameters
+

refresh_token – Refresh token

+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_access_token_from_api(api_key: str, api_secret: str) requests.models.Response
+

Get a new access token from API keys

+
+
Parameters
+
    +
  • api_key – API key

  • +
  • api_secret – API secret

  • +
+
+
Returns
+

New access token.

+
+
+
+ +
+
+get_latest_version() Optional[str]
+
+ +
+
+get_refresh_token(username: str, password: str) requests.models.Response
+

Get a long-lived refresh token and a short-lived access token from the API.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
+
+
Returns
+

Tuple of (access_token, refresh_token).

+
+
+
+ +
+
+list_external_credentials() splitgraph.cloud.models.ListExternalCredentialsResponse
+
+ +
+
+property maybe_access_token: Optional[str]
+

Like access_token but returns None if the user isn’t logged in.

+
+ +
+
+register(username: str, password: str, email: str, accept_tos: bool) requests.models.Response
+

Register a new Splitgraph user.

+
+
Parameters
+
    +
  • username – Username

  • +
  • password – Password

  • +
  • email – Email

  • +
  • accept_tos – Accept the Terms of Service if they exist

  • +
+
+
+
+ +
+
+tos() requests.models.Response
+

Get a Terms of Service message from the registry (if accepting ToS is required) +:return: Link to the Terms of Service or None

+
+ +
+ +
+
+splitgraph.cloud.expect_result(result: List[str], ignore_status_codes: Optional[List[int]] = None) Callable[[Callable[[...], requests.models.Response]], Callable[[...], Union[str, Tuple[str]]]]
+

A decorator that can be wrapped around a function returning a requests.Response with a JSON body. +If the request has failed, it will extract the “error” from the JSON response and raise an AuthAPIError.

+
+
Parameters
+
    +
  • result – Items to extract. Will raise an AuthAPIError if not all items were fetched.

  • +
  • ignore_status_codes – If one of these status codes is returned (e.g. 404), +it gets ignored and a None is returned instead.

  • +
+
+
Returns
+

Tuple of items enumerated in the result list. If there’s only one item, it will +return just that item.

+
+
+
+ +
+
+splitgraph.cloud.get_headers()
+
+ +
+
+splitgraph.cloud.get_remote_param(remote: str, key: str) str
+
+ +
+
+splitgraph.cloud.get_token_claim(jwt, claim)
+

Extract a claim from a JWT token without validating it.

+
+ +
+
+splitgraph.cloud.handle_gql_errors(func: Callable[[...], requests.models.Response]) Callable[[...], requests.models.Response]
+

A decorator that handles responses from the GQL API, transforming errors into exceptions.

+
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.commandline.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.commandline.mdx new file mode 100644 index 00000000..3a9f970d --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.commandline.mdx @@ -0,0 +1,289 @@ + + + +export const meta = { + title: "splitgraph.commandline package", + id: "splitgraph.commandline package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.commandline.cloud module

+

Command line routines related to registering/setting up connections to the Splitgraph registry.

+
+
+splitgraph.commandline.cloud.wait_for_download(client: GQLAPIClient, task_id: str) str
+
+ +
+
+splitgraph.commandline.cloud.wait_for_load(client: GQLAPIClient, namespace: str, repository: str, task_id: str) None
+
+ +
+
+

splitgraph.commandline.common module

+

Various common functions used by the command line interface.

+
+
+class splitgraph.commandline.common.ImageType(default: Optional[str] = 'latest', repository_exists: bool = False, get_image: bool = False)
+

Bases: click.types.ParamType

+

Parser that extracts the full image specification (repository and hash/tag).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context]) Tuple[Repository, Optional[Union[Image, str]]]
+

Image specification must have the format [NAMESPACE/]REPOSITORY[:HASH_OR_TAG].

+

The parser returns a tuple of (repository object, tag or hash).

+
+ +
+
+name = 'Image'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.JsonType
+

Bases: click.types.ParamType

+

Parser for Json – a wrapper around json.loads because without specifying +the name Click shows the type for the option/arg as LOADS.

+

Also supports passing JSON files (pass in @filename.json).

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Json'
+

the descriptive name of this type

+
+ +
+ +
+
+class splitgraph.commandline.common.RepositoryType(exists: bool = False)
+

Bases: click.types.ParamType

+
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context]) Repository
+

Converts the value. This is not invoked for values that are +None (the missing value).

+
+ +
+
+name = 'Repository'
+

the descriptive name of this type

+
+ +
+ +
+
+splitgraph.commandline.common.download_file(url: str, filename: Optional[str]) None
+

Download a file with a tqdm progress bar

+
+ +
+
+splitgraph.commandline.common.emit_sql_results(results, use_json=False, show_all=False)
+
+ +
+
+splitgraph.commandline.common.get_spinner_settings() Tuple[Iterator[str], int]
+
+ +
+
+splitgraph.commandline.common.load_json_param(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+
+ +
+
+splitgraph.commandline.common.remote_switch_option(*names, **kwargs)
+

Adds an option to switch global SG_ENGINE for this invocation of sgr.

+

This is useful for e.g. tagging or viewing image information on a remote +registry. This is not used in operations like commit/checkout (even though +nothing is preventing SG_ENGINE switch from working on that if the remote engine +supports this), the user should switch SG_ENGINE envvar themselves in that case.

+
+
Parameters
+
    +
  • names – Names

  • +
  • kwargs – Passed to click.option

  • +
+
+
+
+ +
+
+splitgraph.commandline.common.sql_results_to_str(results: List[Tuple[Any]], use_json: bool = False) str
+
+ +
+
+splitgraph.commandline.common.upload_file(file: IO, upload_url: str) None
+

Upload a file to a presigned URL with a tqdm progress bar

+
+ +
+
+splitgraph.commandline.common.wait_for_job(task_id: str, status_callback: Callable[[], Optional[splitgraph.commandline.common.S]]) splitgraph.commandline.common.S
+

Wait for a job to complete (with a CLI spinner) and return its final result.

+
+
Parameters
+
    +
  • task_id – ID of the task (used for display)

  • +
  • status_callback – Callback that returns a JobStatus

  • +
+
+
Returns
+

Final JobStatus

+
+
+
+ +
+
+

splitgraph.commandline.engine module

+
+
+splitgraph.commandline.engine.inject_config_into_engines(engine_prefix, config_path)
+

Copy the current config into all engines that are managed by sgr engine. This +is so that the engine has the right credentials and settings for when we do +layered querying (a Postgres client queries the engine directly and it +has to download objects etc).

+
+
Parameters
+
    +
  • engine_prefix – Prefix for Docker containers that are considered to be engines

  • +
  • config_path – Path to the config file.

  • +
+
+
+
+ +
+
+splitgraph.commandline.engine.list_engines(prefix, include_all=False, unavailable_ok=True)
+
+ +
+
+

splitgraph.commandline.example module

+

Command line routines generating example data / Splitfiles

+
+
+splitgraph.commandline.example.alter_table(repository: Repository, table_name: str, rows_added: int, rows_deleted: int, rows_updated: int) None
+

Alters the example table, adding/updating/deleting a certain number of rows.

+
+
Parameters
+
    +
  • repository – Checked-out Repository object.

  • +
  • table_name – Name of the table

  • +
  • rows_added – Number of rows to add

  • +
  • rows_deleted – Number of rows to remove

  • +
  • rows_updated – Number of rows to update

  • +
+
+
+
+ +
+
+splitgraph.commandline.example.generate_table(repository: Repository, table_name: str, size: int) None
+

Creates a table with an integer primary key and a string value.

+
+
Parameters
+
    +
  • repository – Checked-out Repository to create the table in.

  • +
  • table_name – Name of the table to generate

  • +
  • size – Number of rows in the table.

  • +
+
+
+
+ +
+
+

splitgraph.commandline.image_creation module

+

sgr commands related to creating and checking out images

+
+
+

splitgraph.commandline.image_info module

+

sgr commands related to getting information out of / about images

+
+
+

splitgraph.commandline.ingestion module

+

Command line tools for ingesting/exporting Splitgraph images into other formats.

+
+
+

splitgraph.commandline.misc module

+

Miscellaneous image management sgr commands.

+
+
+

splitgraph.commandline.mount module

+

sgr commands related to mounting databases via Postgres FDW

+
+
+

splitgraph.commandline.push_pull module

+

sgr commands related to sharing and downloading images.

+
+
+

splitgraph.commandline.splitfile module

+

sgr commands related to building and rebuilding Splitfiles.

+
+
+

Module contents

+

Splitgraph command line client

+

Hooks into the API to allow management of Splitgraph repositories and images using sgr.

+
+
+class splitgraph.commandline.ClickHandler(level=0)
+

Bases: logging.Handler

+
+
+emit(record)
+

Do whatever it takes to actually log the specified logging record.

+

This version is intended to be implemented by subclasses and so +raises a NotImplementedError.

+
+ +
+ +
+
+class splitgraph.commandline.WithExceptionHandler(name=None, commands=None, **attrs)
+

Bases: click.core.Group

+
+
+get_command(ctx, cmd_name)
+

Given a context and a command name, this returns a +Command object if it exists or returns None.

+
+ +
+
+invoke(ctx)
+

Given a context, this invokes the attached callback (if it exists) +in the right way.

+
+ +
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.config.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.config.mdx new file mode 100644 index 00000000..dcf61151 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.config.mdx @@ -0,0 +1,400 @@ + + + +export const meta = { + title: "splitgraph.config package", + id: "splitgraph.config package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.config.argument_config module

+
+
+splitgraph.config.argument_config.get_arg_tuples() List[Tuple[str, str]]
+

Get the raw (argN, argN+1) tuples from sys.argv

+

We could also use click to parse the flags ahead of time, and then pass +the parsed flag object into SystemConfigGetters. But this way, we avoid +having to pass down variables from click just to get config values.

+
+ +
+
+splitgraph.config.argument_config.get_argument_config_value(key: str, default_return: Optional[str] = None) Optional[str]
+

Get get the value of an argument, where value is the argument +immediately following the argument matching a key in ARG_KEYS, e.g.:

+
+

SYS_ARGS = [”–namespace”, “foo”] +–> return “foo”

+
+

Otherwise, return default_return

+
+ +
+
+

splitgraph.config.config module

+
+
+splitgraph.config.config.chain_getters(getters: Sequence[Callable[[str], Optional[str]]], key: str, default_return: Optional[str] = None) Optional[str]
+
+ +
+
+splitgraph.config.config.create_config_dict() Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create and return a dict of all known config values

+
+ +
+
+splitgraph.config.config.get_all_in_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str) Dict[str, Union[Dict[str, str], str]]
+

Get all subsections from a config (e.g. config[“data_sources”])

+
+ +
+
+splitgraph.config.config.get_all_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str) Dict[str, str]
+
+ +
+
+splitgraph.config.config.get_from_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, item: str) str
+
+ +
+
+splitgraph.config.config.get_from_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str) str
+

Return a singleton variable from a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.get_singleton(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], item: str) str
+

Return a singleton (not a section) variable from the config.

+
+ +
+
+splitgraph.config.config.lazy_get_config_value(key: str, default_return: Optional[str] = None) Optional[Union[str, Dict[str, Dict[str, str]]]]
+

Get the config value for a key in the following precedence +Otherwise return default_return

+
+ +
+
+splitgraph.config.config.patch_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], patch: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Recursively updates a nested configuration dictionary:

+
+
patch_config(
+
&lbrace;“key_1”: “value_1”,

“dict_1”: &lbrace;“key_1”: “value_1”&rbrace;&rbrace;,

+
+
&lbrace;“key_1”: “value_2”,

“dict_1”: &lbrace;“key_2”: “value_2”&rbrace;&rbrace;) == &lbrace;“key_1”: “value_2”, +“dict_1”: &lbrace;“key_1”: “value_1”, “key_2”: “value_2”&rbrace;&rbrace;

+
+
+
+
+
+
Parameters
+
    +
  • config – Config dictionary

  • +
  • patch – Dictionary with the path

  • +
+
+
Returns
+

New patched dictionary

+
+
+
+ +
+
+splitgraph.config.config.set_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str, value: str) None
+

Set a singleton variable in a subsection of the config, +e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

+
+ +
+
+splitgraph.config.config.update_config_dict_from_arguments(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sys.argv +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_env_vars(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading os.environ +and overwriting any keys.

+

Return updated copy of config_dict.

+
+ +
+
+splitgraph.config.config.update_config_dict_from_file(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], sg_config_file: str) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Given an existing config_dict, update after reading sg_config_file +and overwriting any keys according to the rules in config_file_config

+

Return updated copy of config_dict.

+
+ +
+
+

splitgraph.config.config_file_config module

+
+
+splitgraph.config.config_file_config.accumulate_lists(config_dict: Dict[str, Union[Dict[str, str], str]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Transform a config_dict to “accumulate” objects “nested” via key name

+

Because ConfigParser does not support nesting, we implement our own +syntax via the key names of sections. The ‘:’ character can be used in +section names to specify the left and right key. Example:

+
.ini config             new config_dict
+
+                  ----->
+                    |
+[remote: remote1]   |   &lbrace;
+SG_ENV_VAR=foo      |       **rest_of_config_dict,
+                    |       "remotes": &lbrace;
+[origin: origin1]   |           "remote1": &lbrace;
+SG_ENV_VAR=bar      |               "SG_ENV_VAR": "foo"
+                    |           &rbrace;
+[origin: origin2]   |       &rbrace;,
+SG_ENV_VAR=bax      |       "origins": &lbrace;
+                    |           "origin1": &lbrace;
+                    |               "SG_ENV_VAR": "bar"
+                    |           &rbrace;,
+                    |           "origin2": &lbrace;
+                    |               "SG_ENV_VAR": "bax"
+                    |           &rbrace;
+                    |       &rbrace;
+                    |   &rbrace;
+                    |
+                  ----->
+
+
+

:return a new, updated copy of config_dict

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_config_file(sg_file: str, **kwargs) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Create a dict from ConfigParser, apply transformations to it.

+

Return parsed and transformed config_dict.

+
+ +
+
+splitgraph.config.config_file_config.get_config_dict_from_file(sg_file: str, **kwargs) Dict[str, Dict[str, str]]
+
+ +
+
+splitgraph.config.config_file_config.hoist_section(config_dict: Dict[str, Dict[str, str]], section: str = 'defaults') Dict[str, Union[Dict[str, str], str]]
+

If a section exists called <hoist_section>, hoist it to the top level +This is useful for overriding default configs from within a config file

+

Transform config_dict to “hoist” any config values from a section +into the top level (thus, overriding environment variables), +when the name of the section matches hoist_section.

+

Return a new, updated copy of config_dict.

+
+ +
+
+splitgraph.config.config_file_config.transform_config_dict(config_dict: Dict[str, Dict[str, str]], **kwargs) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+

Apply transformations to the raw ConfigParser.config object

+
+
    +
  1. hoist_section

  2. +
  3. accumulate_lists

  4. +
+
+

Return the a new, updated copy of config_dict.

+
+ +
+
+

splitgraph.config.default_config module

+
+
+splitgraph.config.default_config.get_default_config_value(key: str, default_return: Optional[str] = None) Any
+

Get the hard-coded default value of a config key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.environment_config module

+
+
+splitgraph.config.environment_config.get_environment_config_value(key: str, default_return: Optional[str] = None) Optional[str]
+

Get the environment variable value of the environment variable matching key. +Otherwise return default_return.

+
+ +
+
+

splitgraph.config.export module

+

Routines for exporting the config back into text.

+
+
+splitgraph.config.export.overwrite_config(new_config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_path: str, include_defaults: bool = False) None
+

Serialize the new config dictionary and overwrite the current config file. +Note: this will delete all comments in the config!

+
+
Parameters
+
    +
  • new_config – Config dictionary.

  • +
  • config_path – Path to the config file.

  • +
  • include_defaults – Whether to include values that are the same +as their defaults.

  • +
+
+
+
+ +
+
+splitgraph.config.export.serialize_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_format: bool, no_shielding: bool, include_defaults: bool = True) str
+

Pretty-print the configuration or print it in the Splitgraph config file format.

+
+
Parameters
+
    +
  • config – Configuration dictionary.

  • +
  • config_format – Output configuration in the Splitgraph config file format.

  • +
  • no_shielding – Don’t replace sensitive values (like passwords) with asterisks

  • +
  • include_defaults – Emit the config variable even if it’s the same as the default.

  • +
+
+
Returns
+

Textual representation of the config.

+
+
+
+ +
+
+splitgraph.config.export.serialize_engine_config(engine_name: str, conn_params: Dict[str, str], no_shielding: bool) str
+

Output the config section with connection parameters for a single engine.

+
+
Parameters
+
    +
  • engine_name – Name of the engine

  • +
  • conn_params – Dictionary of connection parameters

  • +
  • no_shielding – Don’t replace passwords with asterisks

  • +
+
+
+
+ +
+
+

splitgraph.config.keys module

+
+
+splitgraph.config.keys.SENSITIVE_KEY_SUFFIXES = ['_PWD', '_TOKEN']
+

Warning: Every key in DEFAULTS must have a key in ARGUMENT_KEY_MAP +If you add/remove keys from DEFAULTS, make sure to do so here too.

+
+ +
+
+

splitgraph.config.management module

+
+
+splitgraph.config.management.patch_and_save_config(config, patch)
+
+ +
+
+

splitgraph.config.system_config module

+
+
+splitgraph.config.system_config.file_exists(_dir: str, filename: str) bool
+
+ +
+
+splitgraph.config.system_config.get_config_file(default_return: None = None) Optional[str]
+

Get the location of an existing SG_CONFIG_FILE on the system with +a valid name. Do not attempt to parse the config file, just return +its location.

+

Otherwise, return default_return

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_dirs() List[str]
+

Get any explicitly defined config file directories, +which are directories where we should search for files from +VALID_CONFIG_FILE_NAMES.

+

This list is defined similar to $PATH, as a colon (:) delimited +string, either in:

+
+
    +
  • argument flag –config-dirs

  • +
  • or environment key SG_CONFIG_DIRS

  • +
+
+

Or a single directory defined in either

+
+
    +
  • argument flag –config-dir

  • +
  • environment key SG_CONFIG_DIR

  • +
+
+

If both plural and single are defined, join them together.

+

Return a list of valid paths that are set, or an empty list.

+

Print a warning if any paths to not exist.

+
+ +
+
+splitgraph.config.system_config.get_explicit_config_file_location() Optional[str]
+

Get the explicitly defined location of config file, if defined.

+

The location will either be defined in:

+
+
    +
  • argument flag –config-file

  • +
  • or environment key SG_CONFIG_FILE

  • +
+
+

In keeping with assumptions about priority, argument flag has +higher priority than environment value.

+

If the location is set, and points to an existing file, return location.

+

Otherwise return None

+

Print a warning if location is set but points to non-existing file.

+
+ +
+
+splitgraph.config.system_config.get_system_config_value(key: str, default_return: None = None) Optional[str]
+
+ +
+
+splitgraph.config.system_config.is_file(filename: str) bool
+
+ +
+
+

Module contents

+

The CONFIG object is created and exported once __at import time__ +Calling CONFIG[“KEY”] directly should be sufficient in most cases, +except when a config value has changed since importing CONFIG. +In that case, create_config_dict() can provide an updated config dict

+

Priority (highest to lowest):

+
+
    +
  1. Command line argument values

  2. +
  3. Environment variable values

  4. +
  5. Config file values in [defaults] section

  6. +
  7. DEFAULTS (see keys.py)

  8. +
+
+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.core.indexing.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.core.indexing.mdx new file mode 100644 index 00000000..170c28b2 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.core.indexing.mdx @@ -0,0 +1,141 @@ + + + +export const meta = { + title: "splitgraph.core.indexing package", + id: "splitgraph.core.indexing package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.core.indexing.bloom module

+

Bloom filtering on fragments for equality queries.

+
+
+splitgraph.core.indexing.bloom.describe(index_tuple: Tuple[int, str]) str
+

Returns a pretty-printed summary of the bloom filter

+
+
Parameters
+

index_tuple – Tuple of (k, base64-encoded fingerprint) +returned by generate_bloom_index

+
+
Returns
+

String

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.filter_bloom_index(engine: PsycopgEngine, object_ids: List[str], quals: Any) List[str]
+

Runs a bloom filter on given qualifiers using the given objects’ previously-generated +fingerprints.

+
+
Parameters
+
    +
  • engine – Object engine

  • +
  • object_ids – Object IDs

  • +
  • quals – List of qualifiers

  • +
+
+
Returns
+

List of object IDs that might match the qualifiers in quals (including +IDs that don’t have a bloom index).

+
+
+
+ +
+
+splitgraph.core.indexing.bloom.generate_bloom_index(engine: PsycopgEngine, object_id: str, changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], column: str, probability: Optional[float] = None, size: Optional[int] = None) Tuple[int, str]
+

Generates a bloom filter signature for a given column and a given fragment. Bloom filters +can answer queries asking whether an item is definitely not in a given set or possibly can be.

+

The tradeoff is between the probability of a false positive (item said to be in the set when +it actually isn’t) and the size of the filter.

+

Bloom filters also have an extra parameter, k, or the number of bits in the signature that +a certain item flips. This parameter has an optimal value for a given number of distinct items +or a probability and so isn’t explicitly passed by the user.

+
+
Parameters
+
    +
  • engine – Object engine the fragment is cached in.

  • +
  • object_id – Fragment ID

  • +
  • changeset – Optional, if specified, the old column values are included in the index.

  • +
  • column – Column name to generate the index on.

  • +
  • probability – Probability of a false positive. Either this or the size of the filter must +be specified, but not both.

  • +
  • size – Size of the filter, in bytes.

  • +
+
+
Returns
+

Dictionary to be inserted into the index.

+
+
+
+ +
+
+

splitgraph.core.indexing.range module

+
+
+splitgraph.core.indexing.range.extract_min_max_pks(engine: PsycopgEngine, fragments: List[str], table_pks: List[str], table_pk_types: List[str]) Any
+

Extract minimum/maximum PK values for given fragments.

+
+
Parameters
+
    +
  • engine – Engine the objects live on

  • +
  • fragments – IDs of objects

  • +
  • table_pks – List of columns forming the table primary key

  • +
  • table_pk_types – List of types for table PK columns

  • +
+
+
Returns
+

List of min/max primary key for every object.

+
+
+
+ +
+
+splitgraph.core.indexing.range.filter_range_index(metadata_engine: PsycopgEngine, object_ids: List[str], quals: Any, column_types: Dict[str, str]) List[str]
+
+ +
+
+splitgraph.core.indexing.range.generate_range_index(object_engine: PsycopgEngine, object_id: str, table_schema: TableSchema, changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], columns: Optional[List[str]] = None) Dict[str, Tuple[splitgraph.core.indexing.range.T, splitgraph.core.indexing.range.T]]
+

Calculate the minimum/maximum values of every column in the object (including deleted values).

+
+
Parameters
+
    +
  • object_engine – Engine the object is located on

  • +
  • object_id – ID of the object.

  • +
  • table_schema – Schema of the table

  • +
  • changeset – Changeset (old values will be included in the index)

  • +
  • columns – Columns to run the index on (default all)

  • +
+
+
Returns
+

Dictionary of &lbrace;column: [min, max]&rbrace;

+
+
+
+ +
+
+splitgraph.core.indexing.range.quals_to_sql(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], column_types: Dict[str, str]) Tuple[psycopg2.sql.Composable, Tuple]
+

Convert a list of qualifiers in CNF to a fragment of a Postgres query +:param quals: Qualifiers in CNF +:param column_types: Dictionary of column names and their types +:return: SQL Composable object and a tuple of arguments to be mogrified into it.

+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.core.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.core.mdx new file mode 100644 index 00000000..d1cb350d --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.core.mdx @@ -0,0 +1,2230 @@ + + + +export const meta = { + title: "splitgraph.core package", + id: "splitgraph.core package" +}; + +
+ +
+

Subpackages

+ +
+
+

Submodules

+
+
+

splitgraph.core.common module

+

Common internal functions used by Splitgraph commands.

+
+
+class splitgraph.core.common.CallbackList(iterable=(), /)
+

Bases: list

+

Used to pass around and call multiple callbacks at once.

+
+ +
+
+class splitgraph.core.common.Tracer
+

Bases: object

+

Accumulates events and returns the times between them.

+
+
+get_durations() List[Tuple[str, float]]
+

Return all events and durations between them. +:return: List of (event name, time to this event from the previous event (or start))

+
+ +
+
+get_total_time() float
+
+
Returns
+

Time from start to the final logged event.

+
+
+
+ +
+
+log(event: str) None
+

Log an event at the current time +:param event: Event name

+
+ +
+ +
+
+splitgraph.core.common.adapt(value: Any, pg_type: str) Any
+

Coerces a value with a PG type into its Python equivalent.

+
+
Parameters
+
    +
  • value – Value

  • +
  • pg_type – Postgres datatype

  • +
+
+
Returns
+

Coerced value.

+
+
+
+ +
+
+splitgraph.core.common.aggregate_changes(query_result: List[Tuple[int, int]], initial: Optional[Tuple[int, int, int]] = None) Tuple[int, int, int]
+

Add a changeset to the aggregated diff result

+
+ +
+
+splitgraph.core.common.coerce_val_to_json(val: Any) Any
+

Turn a Python value to a string/float that can be stored as JSON.

+
+ +
+
+splitgraph.core.common.ensure_metadata_schema(engine: PsycopgEngine) None
+

Create or migrate the metadata schema splitgraph_meta that stores the hash tree of schema +snapshots (images), tags and tables. +This means we can’t mount anything under the schema splitgraph_meta – much like we can’t have a folder +“.git” under Git version control…

+
+ +
+
+splitgraph.core.common.gather_sync_metadata(target: Repository, source: Repository, overwrite_objects=False, overwrite_tags=False, single_image: Optional[str] = None) Any
+

Inspects two Splitgraph repositories and gathers metadata that is required to bring target up to +date with source.

+
+
Parameters
+
    +
  • target – Target Repository object

  • +
  • source – Source repository object

  • +
  • overwrite_objects – If True, will return metadata for all objects +belonging to new images (or existing image if single_image=True)

  • +
  • single_image – If set, only grab a single image with this hash/tag from the source.

  • +
  • overwrite_tags – If True and single_image is set, will return all tags for that image. +If single_image is not set, will return all tags in the source repository. +If False, will only return tags in the source that don’t exist on the target.

  • +
+
+
Returns
+

Tuple of metadata for new_images, new_tables, object_locations, object_meta, tags

+
+
+
+ +
+
+splitgraph.core.common.get_temporary_table_id() str
+

Generate a random ID for temporary/staging objects that haven’t had their ID calculated yet.

+
+ +
+
+splitgraph.core.common.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.common.manage_audit(func: Callable) Callable
+

A decorator to be put around various Splitgraph commands +that adds/removes audit triggers for new/committed/deleted tables.

+
+ +
+
+splitgraph.core.common.manage_audit_triggers(engine: PostgresEngine, object_engine: Optional[PostgresEngine] = None) None
+

Does bookkeeping on audit triggers / audit table:

+
+
    +
  • Detect tables that are being audited that don’t need to be any more +(e.g. they’ve been unmounted)

  • +
  • Drop audit triggers for those and delete all audit info for them

  • +
  • Set up audit triggers for new tables

  • +
+
+

If the metadata engine isn’t the same as the object engine, this does nothing.

+
+
Parameters
+
    +
  • engine – Metadata engine with information about images and their checkout state

  • +
  • object_engine – Object engine where the checked-out table and the audit triggers are located.

  • +
+
+
+
+ +
+
+splitgraph.core.common.set_head(repository: Repository, image: Optional[str]) None
+

Sets the HEAD pointer of a given repository to a given image. Shouldn’t be used directly.

+
+ +
+
+splitgraph.core.common.set_tag(repository: Repository, image_hash: Optional[str], tag: str) None
+

Internal function – add a tag to an image.

+
+ +
+
+splitgraph.core.common.set_tags_batch(repository: Repository, hashes_tags: List[Tuple[str, str]]) None
+
+ +
+
+splitgraph.core.common.slow_diff(repository: Repository, table_name: str, image_1: Optional[str], image_2: Optional[str], aggregate: bool) Union[Tuple[int, int, int], List[Tuple[bool, Tuple]]]
+

Materialize both tables and manually diff them

+
+ +
+
+splitgraph.core.common.unmount_schema(engine: PsycopgEngine, schema: str) None
+
+ +
+
+

splitgraph.core.engine module

+

Routines for managing Splitgraph engines, including looking up repositories and managing objects.

+
+
+splitgraph.core.engine.get_current_repositories(engine: PostgresEngine) List[Tuple[Repository, Optional[Image]]]
+

Lists all repositories currently in the engine.

+
+
Parameters
+

engine – Engine

+
+
Returns
+

List of (Repository object, current HEAD image)

+
+
+
+ +
+
+splitgraph.core.engine.init_engine(skip_object_handling: bool = False) None
+

Initializes the engine by:

+
+
    +
  • performing any required engine-custom initialization

  • +
  • creating the metadata tables

  • +
+
+
+
Parameters
+

skip_object_handling – If True, skips installing routines related to +object handling and checkouts (like audit triggers and CStore management).

+
+
+
+ +
+
+splitgraph.core.engine.lookup_repository(name: str, include_local: bool = False) Repository
+

Queries the SG engines on the lookup path to locate one hosting the given repository.

+
+
Parameters
+
    +
  • name – Repository name

  • +
  • include_local – If True, also queries the local engine

  • +
+
+
Returns
+

Local or remote Repository object

+
+
+
+ +
+
+splitgraph.core.engine.repository_exists(repository: Repository) bool
+

Checks if a repository exists on the engine.

+
+
Parameters
+

repository – Repository object

+
+
+
+ +
+
+

splitgraph.core.fdw_checkout module

+
+
+

splitgraph.core.fragment_manager module

+

Routines related to storing tables as fragments.

+
+
+class splitgraph.core.fragment_manager.Digest(shorts: Tuple[int, ...])
+

Bases: object

+

Homomorphic hashing similar to LtHash (but limited to being backed by 256-bit hashes). The main property is that +for any rows A, B, LtHash(A) + LtHash(B) = LtHash(A+B). This is done by construction: we simply hash individual +rows and then do bit-wise addition / subtraction of individual hashes to come up with the full table hash.

+

Hence, the content hash of any Splitgraph table fragment is the sum of hashes of its added rows minus the sum +of hashes of its deleted rows (including the old values of the rows that have been updated). This has a very +useful implication: the hash of a full Splitgraph table is equal to the sum of hashes of its individual fragments.

+

This property can be used to simplify deduplication.

+
+
+classmethod empty() splitgraph.core.fragment_manager.Digest
+

Return an empty Digest instance such that for any Digest D, D + empty == D - empty == D

+
+ +
+
+classmethod from_hex(hex_string: str) splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 64-characters (256-bit) hexadecimal string

+
+ +
+
+classmethod from_memoryview(memory: Union[bytes, memoryview]) splitgraph.core.fragment_manager.Digest
+

Create a Digest from a 256-bit memoryview/bytearray.

+
+ +
+
+hex() str
+

Convert the hash into a hexadecimal value.

+
+ +
+ +
+
+class splitgraph.core.fragment_manager.FragmentManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.metadata_manager.MetadataManager

+

A storage engine for Splitgraph tables. Each table can be stored as one or more immutable fragments that can +optionally overwrite each other. When a new table is created, it’s split up into multiple base fragments. When +a new version of the table is written, the audit log is inspected and one or more patch fragments are created, +to be based on the fragments the previous version of the table consisted of. Only the top fragments in this stack +are stored in the table metadata: to reconstruct the whole table, the links from the top fragments down to the +base fragments have to be followed.

+

In addition, the fragments engine also supports min-max indexing on fragments: this is used to only fetch fragments +that are required for a given query.

+
+
+calculate_content_hash(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None, chunk_condition_sql: Optional[psycopg2.sql.Composable] = None, chunk_condition_args: Optional[List[Any]] = None) Tuple[str, int]
+

Calculates the homomorphic hash of table contents.

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Name of the table

  • +
  • table_schema – Schema of the table

  • +
  • chunk_condition_sql – Column the table is partitioned on

  • +
  • chunk_condition_args – Column value to get rows from

  • +
+
+
Returns
+

A 64-character (256-bit) hexadecimal string with the content hash of the table +and the number of rows in the hash.

+
+
+
+ +
+
+calculate_fragment_insertion_hash_stats(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None) Tuple[splitgraph.core.fragment_manager.Digest, int]
+

Calculate the homomorphic hash of just the rows that a given fragment inserts +:param schema: Schema the fragment is stored in. +:param table: Name of the table the fragment is stored in. +:return: A Digest object and the number of inserted rows

+
+ +
+
+create_base_fragment(source_schema: str, source_table: str, namespace: str, chunk_condition_sql: Optional[psycopg2.sql.Composable] = None, chunk_condition_args: Optional[List[Any]] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None) str
+
+ +
+
+delete_objects(objects: Union[Set[str], List[str]]) None
+

Deletes objects from the Splitgraph cache

+
+
Parameters
+

objects – A sequence of objects to be deleted

+
+
+
+ +
+
+filter_fragments(object_ids: List[str], table: Table, quals: Any) List[str]
+

Performs fuzzy filtering on the given object IDs using the index and a set of qualifiers, discarding +objects that definitely do not match the qualifiers.

+
+
Parameters
+
    +
  • object_ids – List of object IDs to filter.

  • +
  • table – A Table object the objects belong to.

  • +
  • quals

    List of qualifiers in conjunctive normal form that will be matched against the index. +Objects that definitely don’t match these qualifiers will be discarded.

    +

    A list containing [[qual_1, qual_2], [qual_3, qual_4]] will be interpreted as +(qual_1 OR qual_2) AND (qual_3 OR qual_4).

    +

    Each qual is a tuple of (column_name, operator, value) where +operator can be one of >, >=, <, <=, =.

    +

    For unknown operators, it will be assumed that all fragments might match that clause.

    +

  • +
+
+
Returns
+

List of objects that might match the given qualifiers.

+
+
+
+ +
+
+generate_object_index(object_id: str, table_schema: List[splitgraph.core.types.TableColumn], changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None) Dict[str, Any]
+

Queries the max/min values of a given fragment for each column, used to speed up querying.

+
+
Parameters
+
    +
  • object_id – ID of an object

  • +
  • table_schema – Schema of the table the object belongs to.

  • +
  • changeset – Optional, if specified, the old row values are included in the index.

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
Returns
+

Dict containing the object index.

+
+
+
+ +
+
+generate_surrogate_pk(table: Table, object_pks: List[Tuple[Any, Any]]) List[Tuple[Any, Any]]
+

When partitioning data, if the table doesn’t have a primary key, we use a “surrogate” +primary key by concatenating the whole row as a string on the PG side (this is because +the whole row can sometimes contain NULLs which we can’t compare in PG).

+

We need to mimic this when calculating if the objects we’re about to scan through +overlap: e.g. using string comparison, “(some_country, 100)” < “(some_country, 20)”, +whereas using typed comparison, (some_country, 100) > (some_country, 20).

+

To do this, we use a similar hack from when calculating changeset hashes: to avoid having +to reproduce how PG’s ::text works, we give it back the rows and get it to cast them +to text for us.

+
+ +
+
+get_min_max_pks(fragments: List[str], table_pks: List[Tuple[str, str]]) List[Tuple[Tuple, Tuple]]
+

Get PK ranges for given fragments using the index (without reading the fragments).

+
+
Parameters
+
    +
  • fragments – List of object IDs (must be registered and with the same schema)

  • +
  • table_pks – List of tuples (column, type) that form the object PK.

  • +
+
+
Returns
+

List of (min, max) PK for every fragment where PK is a tuple. +If a fragment doesn’t exist or doesn’t have a corresponding index entry, +a SplitGraphError is raised.

+
+
+
+ +
+
+record_table_as_base(repository: Repository, table_name: str, image_hash: str, chunk_size: Optional[int] = 10000, source_schema: Optional[str] = None, source_table: Optional[str] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None) List[str]
+

Copies the full table verbatim into one or more new base fragments and registers them.

+
+
Parameters
+
    +
  • repository – Repository

  • +
  • table_name – Table name

  • +
  • image_hash – Hash of the new image

  • +
  • chunk_size – If specified, splits the table into multiple objects with a given number of rows

  • +
  • source_schema – Override the schema the source table is stored in

  • +
  • source_table – Override the name of the table the source is stored in

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Key to sort data inside each chunk by.

  • +
  • overwrite – Overwrite physical objects that already exist.

  • +
  • table_schema – Override the columns that will be picked from the original table +(e.g. to change their order or primary keys). Note that the schema must be a subset +of the original schema and this method doesn’t verify PK constraints.

  • +
+
+
+
+ +
+
+record_table_as_patch(old_table: Table, schema: str, image_hash: str, new_schema_spec: List[splitgraph.core.types.TableColumn] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False) None
+

Flushes the pending changes from the audit table for a given table and records them, +registering the new objects.

+
+
Parameters
+
    +
  • old_table – Table object pointing to the current HEAD table

  • +
  • schema – Schema the table is checked out into.

  • +
  • image_hash – Image hash to store the table under

  • +
  • new_schema_spec – New schema of the table (use the old table’s schema by default).

  • +
  • split_changeset – See Repository.commit for reference

  • +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
+
+
+
+ +
+
+split_changeset_boundaries(changeset, change_key, objects)
+
+ +
+ +
+
+splitgraph.core.fragment_manager.get_chunk_groups(chunks: List[Tuple[str, Any, Any]]) List[List[Tuple[str, Any, Any]]]
+

Takes a list of chunks and their boundaries and combines them +into independent groups such that chunks from no two groups +overlap with each other (intervals are assumed to be closed, +e.g. chunk (1,2) overlaps with chunk (2,3)).

+

The original order of chunks is preserved within each group.

+

For example, 4 chunks A, B, C, D that don’t overlap each other +will be grouped into 4 groups [A], [B], [C], [D].

+

If A overlaps B, the result will be [A, B], [C], [D].

+

If in addition B overlaps C (but not A), the result will be [A, B, C], [D].

+

If in addition D overlaps any of A, B or C, the result will be [A, B, C, D] +(despite that D is located before A: it will be last since it was last in the +original list).

+
+
Parameters
+

chunks – List of (chunk_id, start, end)

+
+
Returns
+

List of lists of (chunk_id, start, end)

+
+
+
+ +
+
+

splitgraph.core.image module

+

Image representation and provenance

+
+
+class splitgraph.core.image.Image(image_hash: str, parent_id: Optional[str], created: datetime.datetime, comment: str, provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], repository: Repository)
+

Bases: tuple

+

Represents a Splitgraph image. Should’t be created directly, use Image-loading methods in the +splitgraph.core.repository.Repository class instead.

+
+
+checkout(force: bool = False, layered: bool = False) None
+

Checks the image out, changing the current HEAD pointer. Raises an error +if there are pending changes to its checkout.

+
+
Parameters
+
    +
  • force – Discards all pending changes to the schema.

  • +
  • layered – If True, uses layered querying to check out the image (doesn’t materialize tables +inside of it).

  • +
+
+
+
+ +
+
+comment: str
+

Alias for field number 3

+
+ +
+
+created: datetime.datetime
+

Alias for field number 2

+
+ +
+
+delete_tag(tag: str) None
+

Deletes a tag from an image.

+
+
Parameters
+

tag – Tag to delete.

+
+
+
+ +
+
+property engine
+
+ +
+
+get_log() List[splitgraph.core.image.Image]
+

Repeatedly gets the parent of a given image until it reaches the bottom.

+
+ +
+
+get_parent_children() Tuple[Optional[str], List[str]]
+

Gets the parent and a list of children of a given image.

+
+ +
+
+get_size() int
+

Get the physical size used by the image’s objects (including those that might be +shared with other images).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of image’s +objects have been downloaded.

+
+
Returns
+

Size of the image in bytes.

+
+
+
+ +
+
+get_table(table_name: str) splitgraph.core.table.Table
+

Returns a Table object representing a version of a given table. +Contains a list of objects that the table is linked to and the table’s schema.

+
+
Parameters
+

table_name – Name of the table

+
+
Returns
+

Table object

+
+
+
+ +
+
+get_tables() List[str]
+

Gets the names of all tables inside of an image.

+
+ +
+
+get_tags()
+

Lists all tags that this image has.

+
+ +
+
+image_hash: str
+

Alias for field number 0

+
+ +
+
+lq_checkout(target_schema: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', only_tables: Optional[List[str]] = None) None
+

Intended to be run on the sgr side. Initializes the FDW for all tables in a given image, +allowing to query them directly without materializing the tables.

+
+ +
+
+property object_engine
+
+ +
+
+parent_id: Optional[str]
+

Alias for field number 1

+
+ +
+
+provenance(reverse=False, engine=None) List[Tuple[Repository, str]]
+

Inspects the image’s parent chain to come up with a set of repositories and their hashes +that it was created from.

+

If reverse is True, returns a list of images that were created _from_ this image. If +this image is on a remote repository, engine can be passed in to override the engine +used for the lookup of dependents.

+
+
Returns
+

List of (repository, image_hash)

+
+
+
+ +
+
+provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]
+

Alias for field number 4

+
+ +
+
+query_schema(wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', commit: bool = True) Iterator[str]
+

Creates a temporary schema with tables in this image mounted as foreign tables that can be accessed via +read-only layered querying. On exit from the context manager, the schema is discarded.

+
+
Returns
+

The name of the schema the image is located in.

+
+
+
+ +
+
+repository: Repository
+

Alias for field number 5

+
+ +
+
+set_provenance(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]) None
+

Sets the image’s provenance. Internal function called by the Splitfile interpreter, shouldn’t +be called directly as it changes the image after it’s been created.

+
+
Parameters
+

provenance_data – List of parsed Splitfile commands and their data.

+
+
+
+ +
+
+tag(tag: str) None
+

Tags a given image. All tags are unique inside of a repository. If a tag already exists, it’s removed +from the previous image and given to the new image.

+
+
Parameters
+

tag – Tag to set. ‘latest’ and ‘HEAD’ are reserved tags.

+
+
+
+ +
+
+to_splitfile(ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None) List[str]
+

Recreate the Splitfile that can be used to reconstruct this image.

+
+
Parameters
+
    +
  • ignore_irreproducible – If True, ignore commands from irreproducible Splitfile lines +(like MOUNT or custom commands) and instead emit a comment (this results in an invalid Splitfile).

  • +
  • source_replacement – A dictionary of repositories and image hashes/tags specifying how to replace the +dependencies of this Splitfile (table imports and FROM commands).

  • +
+
+
Returns
+

A list of Splitfile commands that can be fed back into the executor.

+
+
+
+ +
+ +
+
+splitgraph.core.image.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.image.reconstruct_splitfile(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None) List[str]
+

Recreate the Splitfile that can be used to reconstruct an image.

+
+ +
+
+

splitgraph.core.image_manager module

+
+
+class splitgraph.core.image_manager.ImageManager(repository: Repository)
+

Bases: object

+

Collects various image-related functions.

+
+
+add(parent_id: Optional[str], image: str, created: Optional[datetime.datetime] = None, comment: Optional[str] = None, provenance_data: Optional[List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]] = None) None
+

Registers a new image in the Splitgraph image tree.

+

Internal method used by actual image creation routines (committing, importing or pulling).

+
+
Parameters
+
    +
  • parent_id – Parent of the image

  • +
  • image – Image hash

  • +
  • created – Creation time (defaults to current timestamp)

  • +
  • comment – Comment (defaults to empty)

  • +
  • provenance_data – Provenance data that can be used to reconstruct the image.

  • +
+
+
+
+ +
+
+add_batch(images: List[splitgraph.core.image.Image]) None
+

Like add, but registers multiple images at the same time. Used in push/pull +to avoid a roundtrip to the registry for each image +:param images: List of Image objects. Namespace and repository will be patched

+
+

with this repository.

+
+
+ +
+
+by_hash(image_hash: str) splitgraph.core.image.Image
+

Returns an image corresponding to a given (possibly shortened) image hash. If the image hash +is ambiguous, raises an error. If the image does not exist, raises an error or returns None.

+
+
Parameters
+

image_hash – Image hash (can be shortened).

+
+
Returns
+

Image

+
+
+
+ +
+
+by_tag(tag: str, raise_on_none: bool = True) Optional[splitgraph.core.image.Image]
+

Returns an image with a given tag

+
+
Parameters
+
    +
  • tag – Tag. ‘latest’ is a special case: it returns the most recent image in the repository.

  • +
  • raise_on_none – Whether to raise an error or return None if the tag doesn’t exist.

  • +
+
+
+
+ +
+
+delete(images: Iterable[str]) None
+

Deletes a set of Splitgraph images from the repository. Note this doesn’t check whether +this will orphan some other images in the repository and can make the state of the repository +invalid.

+

Image deletions won’t be replicated on push/pull (those can only add new images).

+
+
Parameters
+

images – List of image IDs

+
+
+
+ +
+
+get_all_child_images(start_image: str) Set[str]
+

Get all children of start_image of any degree.

+
+ +
+
+get_all_parent_images(start_images: Set[str]) Set[str]
+

Get all parents of the ‘start_images’ set of any degree.

+
+ +
+ +
+
+

splitgraph.core.image_mounting module

+
+
+class splitgraph.core.image_mounting.DefaultImageMounter(engine: PostgresEngine)
+

Bases: splitgraph.core.image_mounting.ImageMounter

+
+
+mount(images: List[Tuple[str, str, str]]) Dict[Tuple[str, str, str], str]
+

Mount images into arbitrary schemas and return the image -> schema map

+
+ +
+
+unmount() None
+

Unmount the previously mounted images

+
+ +
+ +
+
+class splitgraph.core.image_mounting.ImageMapper(object_engine: PostgresEngine)
+

Bases: object

+

Image “mapper” used in Splitfile execution that returns the canonical form of an image +and where it’s mounted.

+
+
+get_provenance_data() Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]
+
+ +
+
+setup_lq_mounts() None
+
+ +
+
+teardown_lq_mounts() None
+
+ +
+ +
+
+class splitgraph.core.image_mounting.ImageMounter
+

Bases: abc.ABC

+

Image “mounter” that’s used for non-Splitfile transformation jobs (data source plugins that +implement TransformingDataSource)

+
+
+abstract mount(images: List[Tuple[str, str, str]]) Dict[Tuple[str, str, str], str]
+

Mount images into arbitrary schemas and return the image -> schema map

+
+ +
+
+abstract unmount() None
+

Unmount the previously mounted images

+
+ +
+ +
+
+

splitgraph.core.metadata_manager module

+

Classes related to managing table/image/object metadata tables.

+
+
+class splitgraph.core.metadata_manager.MetadataManager(metadata_engine: PsycopgEngine)
+

Bases: object

+

A data access layer for the metadata tables in the splitgraph_meta schema that concerns itself +with image, table and object information.

+
+
+cleanup_metadata() List[str]
+

Go through the current metadata and delete all objects that aren’t required +by any table on the engine.

+
+
Returns
+

List of objects that have been deleted.

+
+
+
+ +
+
+delete_object_meta(object_ids: Sequence[str])
+

Delete metadata for multiple objects (external locations, indexes, hashes). +This doesn’t delete physical objects.

+
+
Parameters
+

object_ids – Object IDs to delete

+
+
+
+ +
+
+get_all_objects() List[str]
+

Gets all objects currently in the Splitgraph tree.

+
+
Returns
+

List of object IDs.

+
+
+
+ +
+
+get_external_object_locations(objects: List[str]) List[Tuple[str, str, str]]
+

Gets external locations for objects.

+
+
Parameters
+

objects – List of object IDs stored externally.

+
+
Returns
+

List of (object_id, location, protocol).

+
+
+
+ +
+
+get_new_objects(object_ids: List[str]) List[str]
+

Get object IDs from the passed list that don’t exist in the tree.

+
+
Parameters
+

object_ids – List of objects to check

+
+
Returns
+

List of unknown object IDs.

+
+
+
+ +
+
+get_object_meta(objects: List[str]) Dict[str, splitgraph.core.metadata_manager.Object]
+

Get metadata for multiple Splitgraph objects from the tree

+
+
Parameters
+

objects – List of objects to get metadata for.

+
+
Returns
+

Dictionary of object_id -> Object

+
+
+
+ +
+
+get_objects_for_repository(repository: Repository, image_hash: Optional[str] = None) List[str]
+
+ +
+
+get_unused_objects(threshold: Optional[int] = None) List[Tuple[str, datetime.datetime]]
+

Get a list of all objects in the metadata that aren’t used by any table and can be +safely deleted.

+
+
Parameters
+

threshold – Only return objects that were created earlier than this (in minutes)

+
+
Returns
+

List of objects and their creation times.

+
+
+
+ +
+
+overwrite_table(repository: Repository, image_hash: str, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+
+ +
+
+register_object_locations(object_locations: List[Tuple[str, str, str]]) None
+

Registers external locations (e.g. HTTP or S3) for Splitgraph objects. +Objects must already be registered in the object tree.

+
+
Parameters
+

object_locations – List of (object_id, location, protocol).

+
+
+
+ +
+
+register_objects(objects: List[splitgraph.core.metadata_manager.Object], namespace: Optional[str] = None) None
+

Registers multiple Splitgraph objects in the tree.

+
+
Parameters
+
    +
  • objects – List of Object objects.

  • +
  • namespace – If specified, overrides the original object namespace, required +in the case where the remote repository has a different namespace than the local one.

  • +
+
+
+
+ +
+
+register_tables(repository: Repository, table_meta: List[Tuple[str, str, List[splitgraph.core.types.TableColumn], List[str]]]) None
+

Links tables in an image to physical objects that they are stored as. +Objects must already be registered in the object tree.

+
+
Parameters
+
    +
  • repository – Repository that the tables belong to.

  • +
  • table_meta – A list of (image_hash, table_name, table_schema, object_ids).

  • +
+
+
+
+ +
+ +
+
+class splitgraph.core.metadata_manager.Object(object_id: str, format: str, namespace: str, size: int, created: datetime.datetime, insertion_hash: str, deletion_hash: str, object_index: Dict[str, Any], rows_inserted: int, rows_deleted: int)
+

Bases: tuple

+

Represents a Splitgraph object that tables are composed of.

+
+
+created: datetime.datetime
+

Alias for field number 4

+
+ +
+
+deletion_hash: str
+

Alias for field number 6

+
+ +
+
+format: str
+

Alias for field number 1

+
+ +
+
+insertion_hash: str
+

Alias for field number 5

+
+ +
+
+namespace: str
+

Alias for field number 2

+
+ +
+
+object_id: str
+

Alias for field number 0

+
+ +
+
+object_index: Dict[str, Any]
+

Alias for field number 7

+
+ +
+
+rows_deleted: int
+

Alias for field number 9

+
+ +
+
+rows_inserted: int
+

Alias for field number 8

+
+ +
+
+size: int
+

Alias for field number 3

+
+ +
+ +
+
+

splitgraph.core.migration module

+
+
+splitgraph.core.migration.get_installed_version(engine: PsycopgEngine, schema_name: str, version_table: str = 'version') Optional[Tuple[str, datetime.datetime]]
+
+ +
+
+splitgraph.core.migration.get_version_tuples(filenames: List[str]) List[Tuple[Optional[str], str]]
+
+ +
+
+splitgraph.core.migration.make_file_list(schema_name: str, migration_path: List[Optional[str]])
+

Construct a list of file names from history of versions and schema name

+
+ +
+
+splitgraph.core.migration.set_installed_version(engine: PsycopgEngine, schema_name: str, version: str, version_table: str = 'version')
+
+ +
+
+splitgraph.core.migration.source_files_to_apply(engine: PsycopgEngine, schema_name: str, schema_files: List[str], version_table: str = 'version', static: bool = False, target_version: Optional[str] = None) Tuple[List[str], str]
+

Get the ordered list of .sql files to apply to the database

+
+ +
+
+

splitgraph.core.object_manager module

+

Functions related to creating, deleting and keeping track of physical Splitgraph objects.

+
+
+class splitgraph.core.object_manager.ObjectManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+

Bases: splitgraph.core.fragment_manager.FragmentManager

+

Brings the multiple manager classes together and manages the object cache (downloading and uploading +objects as required in order to fulfill certain queries)

+
+
+cleanup() List[str]
+

Deletes all objects in the object_tree not required by any current repository, including their dependencies and +their remote locations. Also deletes all objects not registered in the object_tree.

+
+ +
+
+download_objects(source: Optional[splitgraph.core.object_manager.ObjectManager], objects_to_fetch: List[str], object_locations: List[Tuple[str, str, str]]) List[str]
+

Fetches the required objects from the remote and stores them locally. +Does nothing for objects that already exist.

+
+
Parameters
+
    +
  • source – Remote ObjectManager. If None, will only try to download objects from the external location.

  • +
  • objects_to_fetch – List of object IDs to download.

  • +
  • object_locations – List of custom object locations, encoded as tuples (object_id, object_url, protocol).

  • +
+
+
+
+ +
+
+ensure_objects(table: Optional[Table], objects: Optional[List[str]] = None, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]] = None, defer_release: bool = False, tracer: Optional[splitgraph.core.common.Tracer] = None, upstream_manager: Optional[ObjectManager] = None) Iterator[Union[List[str], Tuple[List[str], splitgraph.core.common.CallbackList]]]
+

Resolves the objects needed to materialize a given table and makes sure they are in the local +splitgraph_meta schema.

+

Whilst inside this manager, the objects are guaranteed to exist. On exit from it, the objects are marked as +unneeded and can be garbage collected.

+
+
Parameters
+
    +
  • table – Table to materialize

  • +
  • objects – List of objects to download: one of table or objects must be specified.

  • +
  • quals – Optional list of qualifiers to be passed to the fragment engine. Fragments that definitely do +not match these qualifiers will be dropped. See the docstring for filter_fragments for the format.

  • +
  • defer_release – If True, won’t release the objects on exit.

  • +
+
+
Returns
+

If defer_release is True: List of table fragments and a callback that the caller must call +when the objects are no longer needed. If defer_release is False: just the list of table fragments.

+
+
+
+ +
+
+get_cache_occupancy() int
+
+
Returns
+

Space occupied by objects cached from external locations, in bytes.

+
+
+
+ +
+
+get_downloaded_objects(limit_to: Optional[List[str]] = None) List[str]
+

Gets a list of objects currently in the Splitgraph cache (i.e. not only existing externally.)

+
+
Parameters
+

limit_to – If specified, only the objects in this list will be returned.

+
+
Returns
+

Set of object IDs.

+
+
+
+ +
+
+get_total_object_size()
+
+
Returns
+

Space occupied by all objects on the engine, in bytes.

+
+
+
+ +
+
+make_objects_external(objects: List[str], handler: str, handler_params: Dict[Any, Any]) None
+

Uploads local objects to an external location and marks them as being cached locally (thus making it possible +to evict or swap them out).

+
+
Parameters
+
    +
  • objects – Object IDs to upload. Will do nothing for objects that already exist externally.

  • +
  • handler – Object handler

  • +
  • handler_params – Extra handler parameters

  • +
+
+
+
+ +
+
+run_eviction(keep_objects: List[str], required_space: Optional[int] = None) None
+

Delete enough objects with zero reference count (only those, since we guarantee that whilst refcount is >0, +the object stays alive) to free at least required_space in the cache.

+
+
Parameters
+
    +
  • keep_objects – List of objects (besides those with nonzero refcount) that can’t be deleted.

  • +
  • required_space – Space, in bytes, to free. If the routine can’t free at least this much space, +it shall raise an exception. If None, removes all eligible objects.

  • +
+
+
+
+ +
+
+upload_objects(target: splitgraph.core.object_manager.ObjectManager, objects_to_push: List[str], handler: str = 'DB', handler_params: Optional[Dict[Any, Any]] = None) Sequence[Tuple[str, Optional[str]]]
+

Uploads physical objects to the remote or some other external location.

+
+
Parameters
+
    +
  • target – Target ObjectManager

  • +
  • objects_to_push – List of object IDs to upload.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote, FILE +to store them in a directory that can be accessed from the client and HTTP to upload them to HTTP.

  • +
  • handler_params – For HTTP, a dictionary &lbrace;“username”: username, “password”, password&rbrace;. For FILE, +a dictionary &lbrace;“path”: path&rbrace; specifying the directory where the objects shall be saved.

  • +
+
+
Returns
+

A list of (object_id, url) that specifies all objects were uploaded (skipping objects that +already exist on the remote).

+
+
+
+ +
+ +
+
+

splitgraph.core.output module

+
+
+class splitgraph.core.output.Color
+

Bases: object

+

An enumeration of console colors

+
+
+BLUE = '\x1b[94m'
+
+ +
+
+BOLD = '\x1b[1m'
+
+ +
+
+CYAN = '\x1b[96m'
+
+ +
+
+DARKCYAN = '\x1b[36m'
+
+ +
+
+END = '\x1b[0m'
+
+ +
+
+GREEN = '\x1b[92m'
+
+ +
+
+PURPLE = '\x1b[95m'
+
+ +
+
+RED = '\x1b[91m'
+
+ +
+
+UNDERLINE = '\x1b[4m'
+
+ +
+
+YELLOW = '\x1b[93m'
+
+ +
+ +
+
+class splitgraph.core.output.ResettableStream(stream)
+

Bases: io.RawIOBase

+

Stream that supports reading from the underlying stream and resetting the position once.

+

We can’t use fseek() in this case, since we might be reading from a pipe. So, we operate +this stream in two modes. In the first mode, we mirror all reads into a separate buffer +(consuming the input stream). After the user calls reset(), we first output data from the +mirrored copy, then continue consuming the input stream (simulating seek(0).

+
+
+readable()
+

Return whether object was opened for reading.

+

If False, read() will raise OSError.

+
+ +
+
+readinto(b)
+
+ +
+
+reset()
+
+ +
+ +
+
+splitgraph.core.output.conn_string_to_dict(connection: Optional[str]) Dict[str, Any]
+
+ +
+
+splitgraph.core.output.parse_date(string: str) datetime.date
+
+ +
+
+splitgraph.core.output.parse_dt(string: str) datetime.datetime
+
+ +
+
+splitgraph.core.output.parse_repo_tag_or_hash(value, default='latest')
+
+ +
+
+splitgraph.core.output.parse_time(string: str) time.struct_time
+
+ +
+
+splitgraph.core.output.pluralise(word: str, number: int) str
+

1 banana, 2 bananas

+
+ +
+
+splitgraph.core.output.pretty_size(size: Union[int, float]) str
+

Converts a size in bytes to its string representation (e.g. 1024 -> 1KiB) +:param size: Size in bytes

+
+ +
+
+splitgraph.core.output.slugify(text: str, max_length: int = 50) str
+
+ +
+
+splitgraph.core.output.truncate_line(line: str, length: int = 80) str
+

Truncates a line to a given length, replacing the remainder with …

+
+ +
+
+splitgraph.core.output.truncate_list(items: List[Any], max_entries: int = 10) str
+

Print a list, possibly truncating it to the specified number of entries

+
+ +
+
+

splitgraph.core.registry module

+

Functions for communicating with the remote Splitgraph catalog

+
+
+splitgraph.core.registry.get_info_key(engine: PostgresEngine, key: str) Optional[str]
+

Gets a configuration key from the remote registry, used to notify the client of the registry’s capabilities.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to get

  • +
+
+
+
+ +
+
+splitgraph.core.registry.set_info_key(engine: PostgresEngine, key: str, value: Union[bool, str]) None
+

Sets a configuration value on the remote registry.

+
+
Parameters
+
    +
  • engine – Engine

  • +
  • key – Key to set

  • +
  • value – New value for the key

  • +
+
+
+
+ +
+
+splitgraph.core.registry.setup_registry_mode(engine: PostgresEngine) None
+

Set up access policies/RLS:

+
    +
  • Normal users aren’t allowed to create tables/schemata (can’t do checkouts inside of a registry or +upload SG objects directly to it)

  • +
  • Normal users can’t access the splitgraph_meta schema directly: they’re only supposed to be able to +talk to it via stored procedures in splitgraph_api. Those procedures are set up with SECURITY INVOKER +(run with those users’ credentials) and what they can access is further restricted by RLS:

    +
      +
    • images/tables/tags meta tables: can only create/update/delete records where the namespace = user ID

    • +
    • objects/object_location tables: same. An object (piece of data) becomes owned by the user that creates +it and still remains so even if someone else’s image starts using it. Hence, the original owner can delete +or change it (since they control the external location they’ve uploaded it to anyway).

    • +
    +
  • +
+
+ +
+
+

splitgraph.core.repository module

+

Public API for managing images in a Splitgraph repository.

+
+
+class splitgraph.core.repository.Repository(namespace: str, repository: str, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_manager: Optional[splitgraph.core.object_manager.ObjectManager] = None)
+

Bases: object

+

Splitgraph repository API

+
+
+commit(image_hash: Optional[str] = None, comment: Optional[str] = None, snap_only: bool = False, chunk_size: Optional[int] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]]] = None, in_fragment_order: Optional[Dict[str, List[str]]] = None, overwrite: bool = False) splitgraph.core.image.Image
+

Commits all pending changes to a given repository, creating a new image.

+
+
Parameters
+
    +
  • image_hash – Hash of the commit. Chosen by random if unspecified.

  • +
  • comment – Optional comment to add to the commit.

  • +
  • snap_only – If True, will store the table as a full snapshot instead of delta compression

  • +
  • chunk_size – For tables that are stored as snapshots (new tables and where snap_only has been passed, +the table will be split into fragments of this many rows.

  • +
  • split_changeset – If True, splits the changeset into multiple fragments based on +the PK regions spanned by the current table fragments. For example, if the original table +consists of 2 fragments, first spanning rows 1-10000, second spanning rows 10001-20000 and the +change alters rows 1, 10001 and inserts a row with PK 20001, this will record the change as +3 fragments: one inheriting from the first original fragment, one inheriting from the second +and a brand new fragment. This increases the number of fragments in total but means that fewer rows +will need to be scanned to satisfy a query. +If False, the changeset will be stored as a single fragment inheriting from the last fragment in the +table.

  • +
  • extra_indexes – Dictionary of &lbrace;table: index_type: column: index_specific_kwargs&rbrace;.

  • +
  • in_fragment_order – Dictionary of &lbrace;table: list of columns&rbrace;. If specified, will

  • +
+
+
+

sort the data inside each chunk by this/these key(s) for each table. +:param overwrite: If an object already exists, will force recreate it.

+
+
Returns
+

The newly created Image object.

+
+
+
+ +
+
+commit_engines() None
+

Commit the underlying transactions on both engines that the repository uses.

+
+ +
+
+delete(unregister: bool = True, uncheckout: bool = True) None
+

Discards all changes to a given repository and optionally all of its history, +as well as deleting the Postgres schema that it might be checked out into. +Doesn’t delete any cached physical objects.

+

After performing this operation, this object becomes invalid and must be discarded, +unless init() is called again.

+
+
Parameters
+
    +
  • unregister – Whether to purge repository history/metadata

  • +
  • uncheckout – Whether to delete the actual checked out repo. This has no effect +if the repository is backed by a registry (rather than a local engine).

  • +
+
+
+
+ +
+
+diff(table_name: str, image_1: Union[splitgraph.core.image.Image, str], image_2: Optional[Union[splitgraph.core.image.Image, str]], aggregate: bool = False) Optional[Union[bool, Tuple[int, int, int], List[Tuple[bool, Tuple]]]]
+

Compares the state of a table in different images by materializing both tables into a temporary space +and comparing them row-to-row.

+
+
Parameters
+
    +
  • table_name – Name of the table.

  • +
  • image_1 – First image hash / object. If None, uses the state of the current staging area.

  • +
  • image_2 – Second image hash / object. If None, uses the state of the current staging area.

  • +
  • aggregate – If True, returns a tuple of integers denoting added, removed and updated rows between +the two images.

  • +
+
+
Returns
+

If the table doesn’t exist in one of the images, returns True if it was added and False if it was +removed. If aggregate is True, returns the aggregation of changes as specified before. +Otherwise, returns a list of changes where each change is a tuple of +(True for added, False for removed, row contents).

+
+
+
+ +
+
+dump(stream: _io.TextIOWrapper, exclude_object_contents: bool = False) None
+

Creates an SQL dump with the metadata required for the repository and all of its objects.

+
+
Parameters
+
    +
  • stream – Stream to dump the data into.

  • +
  • exclude_object_contents – Only dump the metadata but not the actual object contents.

  • +
+
+
+
+ +
+
+classmethod from_schema(schema: str) splitgraph.core.repository.Repository
+

Convert a Postgres schema name of the format namespace/repository to a Splitgraph repository object.

+
+ +
+
+classmethod from_template(template: splitgraph.core.repository.Repository, namespace: Optional[str] = None, repository: Optional[str] = None, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None) splitgraph.core.repository.Repository
+

Create a Repository from an existing one replacing some of its attributes.

+
+ +
+
+get_all_hashes_tags() List[Tuple[Optional[str], str]]
+

Gets all tagged images and their hashes in a given repository.

+
+
Returns
+

List of (image_hash, tag)

+
+
+
+ +
+
+get_local_size() int
+

Get the actual size used by this repository’s downloaded objects.

+

This might still be double-counted if the repository shares objects +with other repositores.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+get_size() int
+

Get the physical size used by the repository’s data, counting objects that are used +by multiple images only once. This is calculated from the metadata, the on-disk +footprint might be smaller if not all of repository’s objects have been downloaded.

+
+
Returns
+

Size of the repository in bytes.

+
+
+
+ +
+
+has_pending_changes() bool
+

Detects if the repository has any pending changes (schema changes, table additions/deletions, content changes).

+
+ +
+
+property head: Optional[splitgraph.core.image.Image]
+

Return the HEAD image for the repository or None if the repository isn’t checked out.

+
+ +
+
+property head_strict: splitgraph.core.image.Image
+

Return the HEAD image for the repository. Raise an exception if the repository +isn’t checked out.

+
+ +
+
+images
+

A splitgraph.core.image.ImageManager instance that performs operations +(checkout, delete etc) on this repository’s images.

+
+ +
+
+import_tables(tables: Sequence[str], source_repository: splitgraph.core.repository.Repository, source_tables: Sequence[str], image_hash: Optional[str] = None, foreign_tables: bool = False, do_checkout: bool = True, target_hash: Optional[str] = None, table_queries: Optional[Sequence[bool]] = None, parent_hash: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', skip_validation: bool = False) str
+

Creates a new commit in target_repository with one or more tables linked to already-existing tables. +After this operation, the HEAD of the target repository moves to the new commit and the new tables are +materialized.

+
+
Parameters
+
    +
  • tables – If not empty, must be the list of the same length as source_tables specifying names to store +them under in the target repository.

  • +
  • source_repository – Repository to import tables from.

  • +
  • source_tables – List of tables to import. If empty, imports all tables.

  • +
  • image_hash – Image hash in the source repository to import tables from. +Uses the current source HEAD by default.

  • +
  • foreign_tables – If True, copies all source tables to create a series of new snapshots instead of +treating them as Splitgraph-versioned tables. This is useful for adding brand new tables +(for example, from an FDW-mounted table).

  • +
  • do_checkout – If False, doesn’t check out the newly created image.

  • +
  • target_hash – Hash of the new image that tables is recorded under. If None, gets chosen at random.

  • +
  • table_queries – If not [], it’s treated as a Boolean mask showing which entries in the tables list are +instead SELECT SQL queries that form the target table. The queries have to be non-schema qualified and work +only against tables in the source repository. Each target table created is the result of the respective SQL +query. This is committed as a new snapshot.

  • +
  • parent_hash – If not None, must be the hash of the image to base the new image on. +Existing tables from the parent image are preserved in the new image. If None, the current repository +HEAD is used.

  • +
  • wrapper – Override the default class for the layered querying foreign data wrapper.

  • +
  • skip_validation – Don’t validate SQL used in import statements (used by the Splitfile executor that pre-formats the SQL).

  • +
+
+
Returns
+

Hash that the new image was stored under.

+
+
+
+ +
+
+init() None
+

Initializes an empty repo with an initial commit (hash 0000…)

+
+ +
+
+materialized_table(table_name: str, image_hash: Optional[str]) Iterator[Tuple[str, str]]
+

A context manager that returns a pointer to a read-only materialized table in a given image. +The table is deleted on exit from the context manager.

+
+
Parameters
+
    +
  • table_name – Name of the table

  • +
  • image_hash – Image hash to materialize

  • +
+
+
Returns
+

(schema, table_name) where the materialized table is located.

+
+
+
+ +
+
+objects
+

A splitgraph.core.object_manager.ObjectManager instance that performs operations on +the objects on this repository’s engine (not just objects belonging to this repository).

+
+ +
+
+pull(download_all: Optional[bool] = False, overwrite_objects: bool = False, overwrite_tags: bool = False, single_image: Optional[str] = None) None
+

Synchronizes the state of the local Splitgraph repository with its upstream, optionally downloading all new +objects created on the remote.

+
+
Parameters
+
    +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download +required objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – Limit the download to a single image hash/tag.

  • +
+
+
+
+ +
+
+push(remote_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, reupload_objects: bool = False, overwrite_tags: bool = False, handler: str = 'DB', handler_options: Optional[Dict[str, Any]] = None, single_image: Optional[str] = None) splitgraph.core.repository.Repository
+

Inverse of pull: Pushes all local changes to the remote and uploads new objects.

+
+
Parameters
+
    +
  • remote_repository – Remote repository to push changes to. If not specified, the current +upstream is used.

  • +
  • handler – Name of the handler to use to upload objects. Use DB to push them to the remote or S3 +to store them in an S3 bucket.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the remote repository for existing objects.

  • +
  • reupload_objects – If True, will reupload objects for which metadata is uploaded.

  • +
  • overwrite_tags – If True, will overwrite existing tags on the remote repository.

  • +
  • handler_options – Extra options to pass to the handler. For example, see +splitgraph.hooks.s3.S3ExternalObjectHandler.

  • +
  • single_image – Limit the upload to a single image hash/tag.

  • +
+
+
+
+ +
+
+rollback_engines() None
+

Rollback the underlying transactions on both engines that the repository uses.

+
+ +
+
+run_sql(sql: Union[psycopg2.sql.Composed, str], arguments: Optional[Any] = None, return_shape: splitgraph.engine.ResultShape = ResultShape.MANY_MANY) Any
+

Execute an arbitrary SQL statement inside of this repository’s checked out schema.

+
+ +
+
+set_tags(tags: Dict[str, Optional[str]]) None
+

Sets tags for multiple images.

+
+
Parameters
+

tags – List of (image_hash, tag)

+
+
+
+ +
+
+to_schema() str
+

Returns the engine schema that this repository gets checked out into.

+
+ +
+
+uncheckout(force: bool = False) None
+

Deletes the schema that the repository is checked out into

+
+
Parameters
+

force – Discards all pending changes to the schema.

+
+
+
+ +
+
+property upstream
+

The remote upstream repository that this local repository tracks.

+
+ +
+ +
+
+splitgraph.core.repository.clone(remote_repository: Union[splitgraph.core.repository.Repository, str], local_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, overwrite_tags: bool = False, download_all: Optional[bool] = False, single_image: Optional[str] = None) splitgraph.core.repository.Repository
+

Clones a remote Splitgraph repository or synchronizes remote changes with the local ones.

+

If the target repository has no set upstream engine, the source repository becomes its upstream.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object to clone or the repository’s name. If a name is passed, +the repository will be looked up on the current lookup path in order to find the engine the repository +belongs to.

  • +
  • local_repository – Local repository to clone into. If None, uses the same name as the remote.

  • +
  • download_all – If True, downloads all objects and stores them locally. Otherwise, will only download required +objects when a table is checked out.

  • +
  • overwrite_objects – If True, will overwrite object metadata on the local repository for existing objects.

  • +
  • overwrite_tags – If True, will overwrite existing tags.

  • +
  • single_image – If set, only get a single image with this hash/tag from the source.

  • +
+
+
Returns
+

A locally cloned Repository object.

+
+
+
+ +
+
+splitgraph.core.repository.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.core.repository.import_table_from_remote(remote_repository: splitgraph.core.repository.Repository, remote_tables: List[str], remote_image_hash: str, target_repository: splitgraph.core.repository.Repository, target_tables: List[Any], target_hash: Optional[str] = None) None
+

Shorthand for importing one or more tables from a yet-uncloned remote. Here, the remote image hash is required, +as otherwise we aren’t necessarily able to determine what the remote head is.

+
+
Parameters
+
    +
  • remote_repository – Remote Repository object

  • +
  • remote_tables – List of remote tables to import

  • +
  • remote_image_hash – Image hash to import the tables from

  • +
  • target_repository – Target repository to import the tables to

  • +
  • target_tables – Target table aliases

  • +
  • target_hash – Hash of the image that’s created with the import. Default random.

  • +
+
+
+
+ +
+
+splitgraph.core.repository.table_exists_at(repository: splitgraph.core.repository.Repository, table_name: str, image: Optional[splitgraph.core.image.Image] = None) bool
+

Determines whether a given table exists in a Splitgraph image without checking it out. If image_hash is None, +determines whether the table exists in the current staging area.

+
+ +
+
+

splitgraph.core.server module

+

Routines that are run inside of the engine, +here so that they can get type- and syntax-checked.

+

When inside of an LQFDW shim, these are called directly by the Splitgraph core code +to avoid a redundant connection to the engine.

+
+
+splitgraph.core.server.delete_object_files(object_id: str)
+
+ +
+
+splitgraph.core.server.download_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.get_object_schema(object_id: str) str
+
+ +
+
+splitgraph.core.server.get_object_size(object_id: str) int
+
+ +
+
+splitgraph.core.server.list_objects() List[str]
+
+ +
+
+splitgraph.core.server.object_exists(object_id: str) bool
+
+ +
+
+splitgraph.core.server.rename_object_files(old_object_id: str, new_object_id: str)
+
+ +
+
+splitgraph.core.server.set_object_schema(object_id: str, schema: str)
+
+ +
+
+splitgraph.core.server.upload_object(object_id: str, urls: Tuple[str, str, str])
+
+ +
+
+splitgraph.core.server.verify(url: str)
+
+ +
+
+

splitgraph.core.table module

+

Table metadata-related classes.

+
+
+class splitgraph.core.table.QueryPlan(table: splitgraph.core.table.Table, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str])
+

Bases: object

+

Represents the initial query plan (fragments to query) for given columns and +qualifiers.

+
+ +
+
+class splitgraph.core.table.Table(repository: Repository, image: Image, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
+

Bases: object

+

Represents a Splitgraph table in a given image. Shouldn’t be created directly, use Table-loading +methods in the splitgraph.core.image.Image class instead.

+
+
+get_length() int
+

Get the number of rows in this table.

+

This might be smaller than the total number of rows in all objects belonging to this +table as some objects might overwrite each other.

+
+
Returns
+

Number of rows in table

+
+
+
+ +
+
+get_query_plan(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str], use_cache: bool = True) splitgraph.core.table.QueryPlan
+

Start planning a query (preliminary steps before object downloading, +like qualifier filtering).

+
+
Parameters
+
    +
  • quals – Qualifiers in CNF form

  • +
  • columns – List of columns

  • +
  • use_cache – If True, will fetch the plan from the cache for the same qualifiers and columns.

  • +
+
+
Returns
+

QueryPlan

+
+
+
+ +
+
+get_size() int
+

Get the physical size used by the table’s objects (including those shared with other tables).

+

This is calculated from the metadata, the on-disk footprint might be smaller if not all of table’s +objects have been downloaded.

+
+
Returns
+

Size of the table in bytes.

+
+
+
+ +
+
+materialize(destination: str, destination_schema: Optional[str] = None, lq_server: Optional[str] = None, temporary: bool = False) None
+

Materializes a Splitgraph table in the target schema as a normal Postgres table, potentially downloading all +required objects and using them to reconstruct the table.

+
+
Parameters
+
    +
  • destination – Name of the destination table.

  • +
  • destination_schema – Name of the destination schema.

  • +
  • lq_server – If set, sets up a layered querying FDW for the table instead using this foreign server.

  • +
+
+
+
+ +
+
+query(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])
+

Run a read-only query against this table without materializing it.

+

This is a wrapper around query_lazy() that force evaluates the results which +might mean more fragments being materialized that aren’t needed.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

List of dictionaries of results

+
+
+
+ +
+
+query_indirect(columns: List[str], quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]]) Tuple[Iterator[bytes], Callable, splitgraph.core.table.QueryPlan]
+

Run a read-only query against this table without materializing it. Instead of +actual results, this returns a generator of SQL queries that the caller can use +to get the results as well as a callback that the caller has to run after they’re +done consuming the results.

+

In particular, the query generator will prefer returning direct queries to +Splitgraph objects and only when those are exhausted will it start materializing +delta-compressed fragments.

+

This is an advanced method: you probably want to call table.query().

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of queries (bytes), a callback and a query plan object (containing stats +that are fully populated after the callback has been called to end the query).

+
+
+
+ +
+
+query_lazy(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]]) Iterator[Iterator[Dict[str, Any]]]
+

Run a read-only query against this table without materializing it.

+
+
Parameters
+
    +
  • columns – List of columns from this table to fetch

  • +
  • quals – List of qualifiers in conjunctive normal form. See the documentation for +FragmentManager.filter_fragments for the actual format.

  • +
+
+
Returns
+

Generator of dictionaries of results.

+
+
+
+ +
+
+reindex(extra_indexes: Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]], raise_on_patch_objects=True) List[str]
+

Run extra indexes on all objects in this table and update their metadata. +This only works on objects that don’t have any deletions or upserts (have a deletion hash of 000000…).

+
+
Parameters
+
    +
  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • +
  • raise_on_patch_objects – If True, will raise an exception if any objects in the table +overwrite any other objects. If False, will log a warning but will reindex all non-patch objects.

  • +
+
+
+

:returns List of objects that were reindexed.

+
+ +
+ +
+
+splitgraph.core.table.merge_index_data(current_index: Dict[str, Any], new_index: Dict[str, Any])
+
+ +
+
+

splitgraph.core.types module

+
+
+class splitgraph.core.types.Comparable
+

Bases: object

+
+ +
+
+class splitgraph.core.types.MountError(*, table_name: str, error: str, error_text: str)
+

Bases: pydantic.main.BaseModel

+
+
+error: str
+
+ +
+
+error_text: str
+
+ +
+
+table_name: str
+
+ +
+ +
+
+class splitgraph.core.types.TableColumn(ordinal, name, pg_type, is_pk, comment)
+

Bases: tuple

+
+
+comment: Optional[str]
+

Alias for field number 4

+
+ +
+
+is_pk: bool
+

Alias for field number 3

+
+ +
+
+name: str
+

Alias for field number 1

+
+ +
+
+ordinal: int
+

Alias for field number 0

+
+ +
+
+pg_type: str
+

Alias for field number 2

+
+ +
+ +
+
+splitgraph.core.types.dict_to_table_schema_params(tables: Dict[str, ExternalTableRequest]) Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]
+
+ +
+
+splitgraph.core.types.get_table_list(table_info: Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]) List[str]
+
+ +
+
+splitgraph.core.types.get_table_params(table_info: Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]], table_name: str) TableParams
+
+ +
+
+splitgraph.core.types.table_schema_params_to_dict(tables: Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]) Dict[str, Dict[str, Dict[str, Any]]]
+
+ +
+
+splitgraph.core.types.unwrap(result: Dict[str, Union[splitgraph.core.types.MountError, splitgraph.core.types.T]]) Tuple[Dict[str, splitgraph.core.types.T], Dict[str, splitgraph.core.types.MountError]]
+
+ +
+
+

Module contents

+

Core Splitgraph functionality: versioning and sharing tables.

+

The main point of interaction with the Splitgraph API is a splitgraph.core.repository.Repository object +representing a local or a remote Splitgraph repository. Repositories can be created using one of the +following methods:

+
+
    +
  • Directly by invoking Repository(namespace, name, engine) where engine is the engine that the repository +belongs to (that can be gotten with get_engine(engine_name). If the created repository doesn’t actually exist +on the engine, it must first be initialized with repository.init().

  • +
  • By using splitgraph.core.engine.lookup_repository() which will search for the repository on the current +lookup path.

  • +
+
+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.core.sql.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.core.sql.mdx new file mode 100644 index 00000000..c715fd22 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.core.sql.mdx @@ -0,0 +1,118 @@ + + + +export const meta = { + title: "splitgraph.core.sql package", + id: "splitgraph.core.sql package" +}; + +
+ +
+

Module contents

+

Routines for managing SQL statements

+
+
+splitgraph.core.sql.insert(table: str, columns: Sequence[str], schema: str = 'splitgraph_meta') psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to insert as a list of strings.

  • +
  • schema – Schema that contains the table

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query (parameterized)

+
+
+
+ +
+
+splitgraph.core.sql.prepare_splitfile_sql(sql: str, image_mapper: Callable) Tuple[str, str]
+

Transform an SQL query to prepare for it to be used in a Splitfile SQL command and validate it. +The rules are:

+
+
    +
  • Only basic DDL (CREATE/ALTER/DROP table) and DML (SELECT/INSERT/UPDATE/DELETE) are permitted.

  • +
  • All tables must be either non-schema qualified (the statement is run with search_path

  • +
+

set to the single schema that a Splitgraph image is checked out into) or have schemata of +format namespace/repository:hash_or_tag. In the second case, the schema is rewritten to point +at a temporary mount of the Splitgraph image.

+
+
+
Parameters
+
    +
  • sql – SQL query

  • +
  • image_mapper – Takes in an image and gives back the schema it should be rewritten to +(for the purposes of execution) and the canonical form of the image.

  • +
+
+
Returns
+

Transformed form of the SQL with substituted schema shims for Splitfile execution +and the canonical form (with e.g. tags resolved into at-the-time full image hashes)

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+
+splitgraph.core.sql.recover_original_schema_name(sql: str, schema_name: str) str
+

Postgres truncates identifiers to 63 characters at parse time and, as pglast +uses bits of PG to parse queries, image names like noaa/climate:64_chars_of_hash +get truncated which can cause ambiguities and issues in provenance. We can’t +get pglast to give us back the full identifier, but we can try and figure out +what it used to be and patch the AST to have it again.

+
+ +
+
+splitgraph.core.sql.select(table: str, columns: str = '*', where: str = '', schema: str = 'splitgraph_meta', table_args: Optional[str] = None) psycopg2.sql.Composed
+

A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same +identifiers everywhere.

+
+
Parameters
+
    +
  • table – Table to select from.

  • +
  • columns – Columns to select as a string. WARN: concatenated directly without any formatting.

  • +
  • where – If specified, added to the query with a “WHERE” keyword. WARN also concatenated directly.

  • +
  • schema – Defaults to SPLITGRAPH_META_SCHEMA.

  • +
  • table_args – If specified, appends to the FROM clause after the table specification, +for example, SELECT * FROM “splitgraph_api”.”get_images” (%s, %s) …

  • +
+
+
Returns
+

A psycopg2.sql.SQL object with the query.

+
+
+
+ +
+
+splitgraph.core.sql.validate_import_sql(sql: str) str
+

Check an SQL query to see if it can be safely used in an IMPORT statement +(e.g. FROM noaa/climate:latest IMPORT &lbrace;SELECT * FROM rainfall WHERE state = ‘AZ’&rbrace; AS rainfall. +In this case, only a single SELECT statement is supported.

+
+
Parameters
+

sql – SQL query

+
+
Returns
+

Canonical (formatted) form of the SQL statement

+
+
Raises
+

UnsupportedSQLException if validation failed

+
+
+
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.engine.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.engine.mdx new file mode 100644 index 00000000..df53c5d4 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.engine.mdx @@ -0,0 +1,565 @@ + + + +export const meta = { + title: "splitgraph.engine package", + id: "splitgraph.engine package" +}; + +
+ +
+

Subpackages

+ +
+
+

Module contents

+

Defines the interface for a Splitgraph engine (a backing database), including running basic SQL commands, +tracking tables for changes and uploading/downloading tables to other remote engines.

+

By default, Splitgraph is backed by Postgres: see splitgraph.engine.postgres for an example of how to +implement a different engine.

+
+
+class splitgraph.engine.ChangeEngine
+

Bases: splitgraph.engine.SQLEngine, abc.ABC

+

An SQL engine that can perform change tracking on a set of tables.

+
+
+discard_pending_changes(schema, table=None)
+

Discard recorded pending changes for a tracked table or the whole schema

+
+ +
+
+get_change_key(schema: str, table: str) List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_changed_tables(schema)
+

List tracked tables that have pending changes

+
+
Parameters
+

schema – Schema to check for changes

+
+
Returns
+

List of tables with changed contents

+
+
+
+ +
+
+get_pending_changes(schema, table, aggregate=False)
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: tuple with numbers of (added_rows, removed_rows, updated_rows). +If aggregate is False: A changeset. The changeset is a list of +(pk, action (0 for Insert, 1 for Delete, 2 for Update), action_data) +where action_data is None for Delete and &lbrace;‘c’: [column_names], ‘v’: [column_values]&rbrace; that +have been inserted/updated otherwise.

+
+
+
+ +
+
+get_tracked_tables()
+
+
Returns
+

A list of (table_schema, table_name) that the engine currently tracks for changes

+
+
+
+ +
+
+has_pending_changes(schema)
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables)
+

Start engine-specific change tracking on a list of tables.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+
+untrack_tables(tables)
+

Stop engine-specific change tracking on a list of tables and delete any pending changes.

+
+
Parameters
+

tables – List of (table_schema, table_name) to start tracking

+
+
+
+ +
+ +
+
+class splitgraph.engine.ObjectEngine
+

Bases: object

+

Routines for storing/applying objects as well as sharing them with other engines.

+
+
+apply_fragments(objects, target_schema, target_table, extra_quals=None, extra_qual_args=None, schema_spec=None, progress_every: Optional[int] = None)
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids)
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects, remote_engine)
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id, stream, schema)
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+get_object_schema(object_id)
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id)
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+store_fragment(inserted, deleted, schema, table, source_schema, source_table, source_schema_spec)
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args: Optional[Sequence[Any]], overwrite: bool)
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+upload_objects(objects, remote_engine)
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.ResultShape(value)
+

Bases: enum.Enum

+

Shape that the result of a query will be coerced to

+
+
+MANY_MANY = 4
+
+ +
+
+MANY_ONE = 3
+
+ +
+
+NONE = 0
+
+ +
+
+ONE_MANY = 2
+
+ +
+
+ONE_ONE = 1
+
+ +
+ +
+
+class splitgraph.engine.SQLEngine
+

Bases: abc.ABC

+

Abstraction for a Splitgraph SQL backend. Requires any overriding classes to implement run_sql as well as +a few other functions. Together with the information_schema (part of the SQL standard), this class uses those +functions to implement some basic database management methods like listing, deleting, creating, dumping +and loading tables.

+
+
+close()
+

Commit and close the engine’s backing connection

+
+ +
+
+commit()
+

Commit the engine’s backing connection

+
+ +
+
+copy_table(source_schema: str, source_table: str, target_schema: str, target_table: str, with_pk_constraints: bool = True) None
+

Copy a table in the same engine, optionally applying primary key constraints as well.

+
+ +
+
+create_schema(schema: str) None
+

Create a schema if it doesn’t exist

+
+ +
+
+create_table(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False) None
+

Creates a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
+
+ +
+
+delete_schema(schema: str) None
+

Delete a schema if it exists, including all the tables in it.

+
+ +
+
+delete_table(schema: str, table: str) None
+

Drop a table from a schema if it exists

+
+ +
+
+static dump_table_creation(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False) Tuple[psycopg2.sql.Composed, Tuple]
+

Dumps the DDL for a table using a previously-dumped table schema spec

+
+
Parameters
+
    +
  • schema – Schema to create the table in

  • +
  • table – Table name to create

  • +
  • schema_spec – TableSchema

  • +
  • unlogged – If True, the table won’t be reflected in the WAL or scanned by the analyzer/autovacuum.

  • +
  • temporary – If True, a temporary table is created (the schema parameter is ignored)

  • +
  • include_comments – If True, also adds COMMENT statements for columns that have them.

  • +
+
+
Returns
+

An SQL statement that reconstructs the table schema + args to be mogrified into it.

+
+
+
+ +
+
+dump_table_sql(schema, table_name, stream, columns='*', where='', where_args=None, target_schema=None, target_table=None)
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_all_tables(schema: str) List[str]
+

Get all tables in a given schema.

+
+ +
+
+get_full_table_schema(schema: str, table_name: str) List[splitgraph.core.types.TableColumn]
+

Generates a list of (column ordinal, name, data type, is_pk, column comment), +used to detect schema changes like columns being dropped/added/renamed or type changes.

+

NB this doesn’t work for temporary tables (pg_temp) and returns an empty schema.

+
+ +
+
+get_primary_keys(schema, table)
+

Get a list of (column_name, column_type) denoting the primary keys of a given table.

+
+ +
+
+get_table_type(schema: str, table: str) Optional[str]
+

Get the type of the table (BASE or FOREIGN)

+
+ +
+
+initialize()
+

Does any required initialization of the engine

+
+ +
+
+lock_table(schema, table)
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback()
+

Rollback the engine’s backing connection

+
+ +
+
+run_sql(statement, arguments=None, return_shape=ResultShape.MANY_MANY, named=False)
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement, arguments, schema=None)
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+run_sql_in(schema: str, sql: Union[psycopg2.sql.Composed, str], arguments: None = None, return_shape: splitgraph.engine.ResultShape = ResultShape.MANY_MANY) Any
+

Executes a non-schema-qualified query against a specific schema.

+
+
Parameters
+
    +
  • schema – Schema to run the query in

  • +
  • sql – Query

  • +
  • arguments – Query arguments

  • +
  • return_shape – ReturnShape to coerce the result into.

  • +
+
+
+
+ +
+
+savepoint(name: str) Iterator[None]
+

At the beginning of this context manager, a savepoint is initialized and any database +error that occurs in run_sql results in a rollback to this savepoint rather than the +rollback of the whole transaction. At exit, the savepoint is released.

+
+ +
+
+schema_exists(schema: str) bool
+

Check if a schema exists on the engine.

+
+
Parameters
+

schema – Schema name

+
+
+
+ +
+
+table_exists(schema: str, table_name: str) bool
+

Check if a table exists on the engine.

+
+
Parameters
+
    +
  • schema – Schema name

  • +
  • table_name – Table name

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.SavepointStack
+

Bases: _thread._local

+
+ +
+
+splitgraph.engine.get_engine(name: Optional[str] = None, use_socket: bool = False, use_fdw_params: bool = False, autocommit: bool = False) PostgresEngine
+

Get the current global engine or a named remote engine

+
+
Parameters
+
    +
  • name – Name of the remote engine as specified in the config. If None, the current global engine +is returned.

  • +
  • use_socket – Use a local UNIX socket instead of PG_HOST, PG_PORT for LOCAL engine connections.

  • +
  • use_fdw_params – Use the _FDW connection parameters (SG_ENGINE_FDW_HOST/PORT). By default, +will infer from the global splitgraph.config.IN_FDW flag.

  • +
  • autocommit – If True, the engine will not open SQL transactions implicitly.

  • +
+
+
+
+ +
+
+splitgraph.engine.set_engine(engine: PostgresEngine) None
+

Switch the global engine to a different one.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.switch_engine(engine: PostgresEngine) Iterator[None]
+

Switch the global engine to a different one. The engine will +get switched back on exit from the context manager.

+
+
Parameters
+

engine – Engine

+
+
+
+ +
+
+splitgraph.engine.validate_type(t: str) str
+
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.engine.postgres.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.engine.postgres.mdx new file mode 100644 index 00000000..53f561ca --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.engine.postgres.mdx @@ -0,0 +1,456 @@ + + + +export const meta = { + title: "splitgraph.engine.postgres package", + id: "splitgraph.engine.postgres package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.engine.postgres.engine module

+

Default Splitgraph engine: uses PostgreSQL to store metadata and actual objects and an audit stored procedure +to track changes, as well as the Postgres FDW interface to upload/download objects to/from other Postgres engines.

+
+
+class splitgraph.engine.postgres.engine.AuditTriggerChangeEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.PsycopgEngine, splitgraph.engine.ChangeEngine

+

Change tracking based on an audit trigger stored procedure

+
+
+discard_pending_changes(schema: str, table: Optional[str] = None) None
+

Discard recorded pending changes for a tracked schema / table

+
+ +
+
+get_changed_tables(schema: str) List[str]
+

Get list of tables that have changed content

+
+ +
+
+get_pending_changes(schema: str, table: str, aggregate: bool = False) Union[List[Tuple[int, int]], List[Tuple[Tuple[str, ...], bool, Dict[str, Any], Dict[str, Any]]]]
+

Return pending changes for a given tracked table

+
+
Parameters
+
    +
  • schema – Schema the table belongs to

  • +
  • table – Table to return changes for

  • +
  • aggregate – Whether to aggregate changes or return them completely

  • +
+
+
Returns
+

If aggregate is True: List of tuples of (change_type, number of rows). +If aggregate is False: List of (primary_key, change_type, change_data)

+
+
+
+ +
+
+get_tracked_tables() List[Tuple[str, str]]
+

Return a list of tables that the audit trigger is working on.

+
+ +
+
+has_pending_changes(schema: str) bool
+

Return True if the tracked schema has pending changes and False if it doesn’t.

+
+ +
+
+track_tables(tables: List[Tuple[str, str]]) None
+

Install the audit trigger on the required tables

+
+ +
+
+untrack_tables(tables: List[Tuple[str, str]]) None
+

Remove triggers from tables and delete their pending changes

+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PostgresEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.postgres.engine.AuditTriggerChangeEngine, splitgraph.engine.ObjectEngine

+

An implementation of the Postgres engine for Splitgraph

+
+
+apply_fragments(objects: List[Tuple[str, str]], target_schema: str, target_table: str, extra_quals: Optional[psycopg2.sql.Composed] = None, extra_qual_args: Optional[Tuple[Any, ...]] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, progress_every: Optional[int] = None) None
+

Apply multiple fragments to a target table as a single-query batch operation.

+
+
Parameters
+
    +
  • objects – List of tuples (object_schema, object_table) that the objects are stored in.

  • +
  • target_schema – Schema to apply the fragment to

  • +
  • target_table – Table to apply the fragment to

  • +
  • extra_quals – Optional, extra SQL (Composable) clauses to filter new rows in the fragment on +(e.g. SQL(“a = %s”))

  • +
  • extra_qual_args – Optional, a tuple of arguments to use with extra_quals

  • +
  • schema_spec – Optional, list of (ordinal, column_name, column_type, is_pk). +If not specified, uses the schema of target_table.

  • +
  • progress_every – If set, will report the materialization progress via +tqdm every progress_every objects.

  • +
+
+
+
+ +
+
+delete_objects(object_ids: List[str]) None
+

Delete one or more objects from the engine.

+
+
Parameters
+

object_ids – IDs of objects to delete

+
+
+
+ +
+
+download_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine) List[str]
+

Download objects from the remote engine to the local cache

+
+
Parameters
+
    +
  • objects – List of object IDs to download

  • +
  • remote_engine – A remote ObjectEngine to download the objects from.

  • +
+
+
+

:return List of object IDs that were downloaded.

+
+ +
+
+dump_object(object_id: str, stream: _io.TextIOWrapper, schema: str) None
+

Dump an object into a series of SQL statements

+
+
Parameters
+
    +
  • object_id – Object ID

  • +
  • stream – Text stream to dump the object into

  • +
  • schema – Schema the object lives in

  • +
+
+
+
+ +
+
+dump_object_creation(object_id: str, schema: str, table: Optional[str] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, if_not_exists: bool = False) bytes
+

Generate the SQL that remounts a foreign table pointing to a Splitgraph object.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • schema – Schema to create the table in

  • +
  • table – Name of the table to mount

  • +
  • schema_spec – Schema of the table

  • +
  • if_not_exists – Add IF NOT EXISTS to the DDL

  • +
+
+
Returns
+

SQL in bytes format.

+
+
+
+ +
+
+get_change_key(schema: str, table: str) List[Tuple[str, str]]
+

Returns the key used to identify a row in a change (list of column name, column type). +If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

+
+ +
+
+get_object_schema(object_id: str) List[splitgraph.core.types.TableColumn]
+

Get the schema of a given object, returned as a list of +(ordinal, column_name, column_type, is_pk).

+
+
Parameters
+

object_id – ID of the object

+
+
+
+ +
+
+get_object_size(object_id: str) int
+

Return the on-disk footprint of this object, in bytes +:param object_id: ID of the object

+
+ +
+
+mount_object(object_id: str, table: None = None, schema: str = 'splitgraph_meta', schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None) None
+

Mount an object from local storage as a foreign table.

+
+
Parameters
+
    +
  • object_id – ID of the object

  • +
  • table – Table to mount the object into

  • +
  • schema – Schema to mount the object into

  • +
  • schema_spec – Schema of the object.

  • +
+
+
+
+ +
+
+rename_object(old_object_id: str, new_object_id: str)
+
+ +
+
+store_fragment(inserted: Any, deleted: Any, schema: str, table: str, source_schema: str, source_table: str, source_schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None) None
+

Store a fragment of a changed table in another table

+
+
Parameters
+
    +
  • inserted – List of PKs that have been updated/inserted

  • +
  • deleted – List of PKs that have been deleted

  • +
  • schema – Schema to store the change in

  • +
  • table – Table to store the change in

  • +
  • source_schema – Schema the source table is located in

  • +
  • source_table – Name of the source table

  • +
  • source_schema_spec – Schema of the source table (optional)

  • +
+
+
+
+ +
+
+store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args=None, overwrite=False) None
+

Stores a Splitgraph object using a source query in the actual format +implemented by this engine.

+
+
Parameters
+
    +
  • object_id – Name of the object

  • +
  • source_query – SELECT query that produces data required by the object

  • +
  • schema_spec – Schema of the source table

  • +
  • source_query_args – Arguments to mogrify into the source query.

  • +
  • overwrite – If True, will overwrite the object if it already exists.

  • +
+
+
+
+ +
+
+sync_object_mounts() None
+

Scan through local object storage and synchronize it with the foreign tables in +splitgraph_meta (unmounting non-existing objects and mounting existing ones).

+
+ +
+
+unmount_objects(object_ids: List[str]) None
+

Unmount objects from splitgraph_meta (this doesn’t delete the physical files.

+
+ +
+
+upload_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine) None
+

Upload objects from the local cache to the remote engine

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – A remote ObjectEngine to upload the objects to.

  • +
+
+
+
+ +
+ +
+
+class splitgraph.engine.postgres.engine.PsycopgEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
+

Bases: splitgraph.engine.SQLEngine

+

Postgres SQL engine backed by a Psycopg connection.

+
+
+close() None
+

Commit and close the engine’s backing connection

+
+ +
+
+close_others() None
+

Close and release all other connections to the connection pool.

+
+ +
+
+commit() None
+

Commit the engine’s backing connection

+
+ +
+
+property connection: Connection
+

Engine-internal Psycopg connection.

+
+ +
+
+copy_cursor()
+

Return a cursor that can be used for copy_expert operations

+
+ +
+
+delete_database(database: str) None
+

Helper function to drop a database using the admin connection

+
+
Parameters
+

database – Database name to drop

+
+
+
+ +
+
+dump_table_sql(schema: str, table_name: str, stream: _io.TextIOWrapper, columns: str = '*', where: str = '', where_args: Optional[Union[List[str], Tuple[str, str]]] = None, target_schema: Optional[str] = None, target_table: Optional[str] = None) None
+

Dump the table contents in the SQL format +:param schema: Schema the table is located in +:param table_name: Name of the table +:param stream: A file-like object to write the result into. +:param columns: SQL column spec. Default ‘*’. +:param where: Optional, an SQL WHERE clause +:param where_args: Arguments for the optional WHERE clause. +:param target_schema: Schema to create the table in (default same as schema) +:param target_table: Name of the table to insert data into (default same as table_name)

+
+ +
+
+get_primary_keys(schema: str, table: str) List[Tuple[str, str]]
+

Inspects the Postgres information_schema to get the primary keys for a given table.

+
+ +
+
+in_fdw
+

List of notices issued by the server during the previous execution of run_sql.

+
+ +
+
+initialize(skip_object_handling: bool = False, skip_create_database: bool = False) None
+

Create the Splitgraph Postgres database and install the audit trigger

+
+
Parameters
+
    +
  • skip_object_handling – If True, skips installation of +audit triggers and other object management routines for engines +that don’t need change tracking or checkouts.

  • +
  • skip_create_database – Don’t create the Splitgraph database

  • +
+
+
+
+ +
+
+lock_table(schema: str, table: str) None
+

Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

+
+ +
+
+rollback() None
+

Rollback the engine’s backing connection

+
+ +
+
+run_api_call(call: str, *args, schema: str = 'splitgraph_api') Any
+
+ +
+
+run_api_call_batch(call: str, argslist, schema: str = 'splitgraph_api')
+
+ +
+
+run_chunked_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Sequence[Any], return_shape: Optional[splitgraph.engine.ResultShape] = ResultShape.MANY_MANY, chunk_size: int = 100, chunk_position: int = - 1) Any
+

Because the Splitgraph API has a request size limitation, certain +SQL calls with variadic arguments are going to be too long to fit that. This function +runs an SQL query against a set of broken up arguments and returns the combined result.

+
+ +
+
+run_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Optional[Sequence[Any]] = None, return_shape: Optional[splitgraph.engine.ResultShape] = ResultShape.MANY_MANY, named: bool = False) Any
+

Run an arbitrary SQL statement with some arguments, return an iterator of results. +If the statement doesn’t return any results, return None. If named=True, return named +tuples when possible.

+
+ +
+
+run_sql_batch(statement: Union[psycopg2.sql.Composed, str], arguments: Any, schema: Optional[str] = None, max_size=261000) None
+

Run a parameterized SQL statement against multiple sets of arguments.

+
+
Parameters
+
    +
  • statement – Statement to run

  • +
  • arguments – Query arguments

  • +
  • schema – Schema to run the statement in

  • +
+
+
+
+ +
+
+property splitgraph_version: Optional[str]
+

Returns the version of the Splitgraph library installed on the engine +and by association the version of the engine itself.

+
+ +
+ +
+
+splitgraph.engine.postgres.engine.add_ud_flag_column(table_schema: List[splitgraph.core.types.TableColumn]) List[splitgraph.core.types.TableColumn]
+
+ +
+
+splitgraph.engine.postgres.engine.chunk(sequence: Sequence[splitgraph.engine.postgres.engine.T], chunk_size: int = 100) Iterator[List[splitgraph.engine.postgres.engine.T]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_change_key(schema_spec: List[splitgraph.core.types.TableColumn]) List[Tuple[str, str]]
+
+ +
+
+splitgraph.engine.postgres.engine.get_conn_str(conn_params: Dict[str, Optional[str]]) str
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.hooks.data_source.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.hooks.data_source.mdx new file mode 100644 index 00000000..a84364c9 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.hooks.data_source.mdx @@ -0,0 +1,565 @@ + + + +export const meta = { + title: "splitgraph.hooks.data_source package", + id: "splitgraph.hooks.data_source package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.hooks.data_source.base module

+
+
+class splitgraph.hooks.data_source.base.DataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: abc.ABC

+
+
+credentials_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+abstract classmethod get_description() str
+
+ +
+
+classmethod get_icon() Optional[bytes]
+
+ +
+
+abstract classmethod get_name() str
+
+ +
+
+get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
+

Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

+
+ +
+
+abstract introspect() IntrospectionResult
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+supports_load = False
+
+ +
+
+supports_mount = False
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.LoadableDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+load(repository: splitgraph.core.repository.Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+
+supports_load = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.MountableDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+abstract mount(schema: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, overwrite: bool = True) Optional[List[splitgraph.core.types.MountError]]
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+supports_mount = True
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.SyncableDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.LoadableDataSource, splitgraph.hooks.data_source.base.DataSource, abc.ABC

+
+
+supports_load = True
+
+ +
+
+supports_sync = True
+
+ +
+
+sync(repository: splitgraph.core.repository.Repository, image_hash: Optional[str], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+ +
+
+class splitgraph.hooks.data_source.base.TransformingDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, image_mounter: Optional[splitgraph.core.image_mounting.ImageMounter] = None)
+

Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

+

Data source that runs transformations between Splitgraph images. Takes in an extra +parameter, an ImageMounter instance to manage temporary image checkouts.

+
+
+abstract get_required_images() List[Tuple[str, str, str]]
+

Get images required by this data source. +:returns List of tuples (namespace, repository, hash_or_tag)

+
+ +
+
+mount_required_images() Generator[Dict[Tuple[str, str, str], str], None, None]
+

Mount all images required by this data source into temporary schemas. On exit from this +context manager, unmounts them. +:return: Map of (namespace, repository, hash_or_tag) -> schema where the image is mounted.

+
+ +
+ +
+
+splitgraph.hooks.data_source.base.get_ingestion_state(repository: splitgraph.core.repository.Repository, image_hash: Optional[str]) Optional[SyncState]
+
+ +
+
+splitgraph.hooks.data_source.base.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.hooks.data_source.base.prepare_new_image(repository: splitgraph.core.repository.Repository, hash_or_tag: Optional[str], comment: str = 'Singer tap ingestion') Tuple[Optional[splitgraph.core.image.Image], str]
+
+ +
+
+

splitgraph.hooks.data_source.fdw module

+
+
+class splitgraph.hooks.data_source.fdw.ElasticSearchDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount an ElasticSearch instance.\n\nMount a set of tables proxying to a remote ElasticSearch index.\n\nThis uses a fork of postgres-elasticsearch-fdw behind the scenes. You can add a column\n`query` to your table and set it as `query_column` to pass advanced ES queries and aggregations.\nFor example:\n\n\x08\n```\n$ sgr mount elasticsearch target_schema -c elasticsearch:9200 -o@- <<EOF\n    &lbrace;\n      "tables": &lbrace;\n        "table_1": &lbrace;\n          "schema": &lbrace;\n            "id": "text",\n            "@timestamp": "timestamp",\n            "query": "text",\n            "col_1": "text",\n            "col_2": "boolean"\n          &rbrace;,\n          "options": &lbrace;\n              "index": "index-pattern*",\n              "rowid_column": "id",\n              "query_column": "query"\n          &rbrace;\n        &rbrace;\n      &rbrace;\n    &rbrace;\nEOF\n\x08\n```\n'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'index': &lbrace;'description': 'ES index name or pattern to use, for example, "events-*"', 'type': 'string'&rbrace;, 'query_column': &lbrace;'description': 'Name of the column to use to pass queries in', 'type': 'string'&rbrace;, 'score_column': &lbrace;'description': 'Name of the column with the document score', 'type': 'string'&rbrace;, 'scroll_duration': &lbrace;'description': 'How long to hold the scroll context open for, default 10m', 'type': 'string'&rbrace;, 'scroll_size': &lbrace;'description': 'Fetch size, default 1000', 'type': 'integer'&rbrace;, 'type': &lbrace;'description': 'Pre-ES7 doc_type, not required in ES7 or later', 'type': 'string'&rbrace;&rbrace;, 'required': ['index'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.MountableDataSource, splitgraph.hooks.data_source.base.LoadableDataSource, abc.ABC

+
+
+commandline_help: str = ''
+
+ +
+
+commandline_kwargs_help: str = ''
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs) splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+abstract get_fdw_name()
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options() Mapping[str, str]
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
+
+ +
+
+get_table_schema(table_name: str, table_schema: List[splitgraph.core.types.TableColumn]) List[splitgraph.core.types.TableColumn]
+
+ +
+
+get_user_options() Mapping[str, str]
+
+ +
+
+introspect() IntrospectionResult
+
+ +
+
+mount(schema: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, overwrite: bool = True) Optional[List[splitgraph.core.types.MountError]]
+

Instantiate the data source as foreign tables in a schema

+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+preview(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]]) PreviewResult
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MongoDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Mongo database.\n\nMounts one or more collections on a remote Mongo database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'tables: A dictionary of form\n```\n&lbrace;\n    "table_name": &lbrace;\n        "schema": &lbrace;"col1": "type1"...&rbrace;,\n        "options": &lbrace;"database": <dbname>, "collection": <collection>&rbrace;\n    &rbrace;\n&rbrace;\n```\n'
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_server_options()
+
+ +
+
+get_table_schema(table_name, table_schema)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'collection': &lbrace;'type': 'string'&rbrace;, 'database': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['database', 'collection'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.MySQLDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a MySQL database.\n\nMounts a schema on a remote MySQL database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'dbname: Remote MySQL database name (required)\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n        '
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'type': 'string'&rbrace;, 'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.hooks.data_source.fdw.PostgreSQLDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Postgres database.\n\nMounts a schema on a remote Postgres database as a set of foreign tables locally.'
+
+ +
+
+commandline_kwargs_help: str = 'dbname: Database name (required)\nremote_schema: Remote schema name (required)\nextra_server_args: Dictionary of extra arguments to pass to the foreign server\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n    '
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+
+ +
+
+get_user_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'description': 'Database name', 'type': 'string'&rbrace;, 'host': &lbrace;'description': 'Remote hostname', 'type': 'string'&rbrace;, 'port': &lbrace;'description': 'Port', 'type': 'integer'&rbrace;, 'remote_schema': &lbrace;'description': 'Remote schema name', 'type': 'string'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname', 'remote_schema'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.hooks.data_source.fdw.create_foreign_table(schema: str, server: str, table_name: str, schema_spec: List[splitgraph.core.types.TableColumn], extra_options: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.hooks.data_source.fdw.import_foreign_schema(engine: PsycopgEngine, mountpoint: str, remote_schema: str, server_id: str, tables: List[str], options: Optional[Dict[str, str]] = None) List[splitgraph.core.types.MountError]
+
+ +
+
+splitgraph.hooks.data_source.fdw.init_fdw(engine: PsycopgEngine, server_id: str, wrapper: str, server_options: Optional[Mapping[str, Optional[str]]] = None, user_options: Optional[Mapping[str, str]] = None, role: Optional[str] = None, overwrite: bool = True) None
+

Sets up a foreign data server on the engine.

+
+
Parameters
+
    +
  • engine – PostgresEngine

  • +
  • server_id – Name to call the foreign server, must be unique. Will be deleted if exists.

  • +
  • wrapper – Name of the foreign data wrapper (must be installed as an extension on the engine)

  • +
  • server_options – Dictionary of FDW options

  • +
  • user_options – Dictionary of user options

  • +
  • role – The name of the role for which the user mapping is created; defaults to public.

  • +
  • overwrite – If the server already exists, delete and recreate it.

  • +
+
+
+
+ +
+
+

Module contents

+
+
+splitgraph.hooks.data_source.get_data_source(data_source: str) Type[splitgraph.hooks.data_source.base.DataSource]
+

Returns a class for a given data source

+
+ +
+
+splitgraph.hooks.data_source.get_data_sources() List[str]
+

Returns the names of all registered data sources.

+
+ +
+
+splitgraph.hooks.data_source.merge_jsonschema(left: Dict[str, Any], right: Dict[str, Any]) Dict[str, Any]
+
+ +
+
+splitgraph.hooks.data_source.register_data_source(name: str, data_source_class: Type[splitgraph.hooks.data_source.base.DataSource]) None
+

Returns a data source under a given name.

+
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.hooks.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.hooks.mdx new file mode 100644 index 00000000..bcf19eb3 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.hooks.mdx @@ -0,0 +1,366 @@ + + + +export const meta = { + title: "splitgraph.hooks package", + id: "splitgraph.hooks package" +}; + +
+ +
+

Subpackages

+ +
+
+

Submodules

+
+
+

splitgraph.hooks.external_objects module

+

Hooks for registering handlers to upload/download objects from external locations into Splitgraph’s cache.

+
+
+class splitgraph.hooks.external_objects.ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: object

+

Framework for allowing to dump objects from the Splitgraph cache to an external location. This allows +the objects to be stored somewhere other than the actual remote engine.

+

External object handlers must extend this class and be registered in the Splitgraph config.

+

For an example of how this can be used, see splitgraph.hooks.s3: it’s a handler allowing objects to be +uploaded to S3/S3-compatible host using the Minio API. It’s registered in the config as follows:

+
[external_handlers]
+S3=splitgraph.hooks.s3.S3ExternalObjectHandler
+
+
+

The protocol and the URLs returned by this handler are stored in splitgraph_meta.external_objects +and used to download the objects back into the Splitgraph cache when they are needed.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine) Sequence[str]
+

Download objects from the external location into the Splitgraph cache.

+
+
Parameters
+
    +
  • objects – List of tuples (object_id, object_url) that this handler had previosly +uploaded the objects to.

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of object IDs that have been successfully downloaded.

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine) Sequence[Tuple[str, str]]
+

Upload objects from the Splitgraph cache to an external location

+
+
Parameters
+
    +
  • objects – List of object IDs to upload

  • +
  • remote_engine – An instance of Engine class that the objects will be registered on

  • +
+
+
Returns
+

A list of successfully uploaded object IDs and URLs they can be found at.

+
+
+
+ +
+ +
+
+splitgraph.hooks.external_objects.get_external_object_handler(name: str, handler_params: Dict[Any, Any]) splitgraph.hooks.external_objects.ExternalObjectHandler
+

Load an external protocol handler by its name, initializing it with optional parameters.

+
+ +
+
+splitgraph.hooks.external_objects.register_upload_download_handler(name: str, handler_class: Callable[[...], splitgraph.hooks.external_objects.ExternalObjectHandler]) None
+

Register an external protocol handler. See the docstring for get_upload_download_handler for the required +signatures of the handler functions.

+
+ +
+
+

splitgraph.hooks.mount_handlers module

+

Extra wrapper code for mount handlers

+
+
+splitgraph.hooks.mount_handlers.mount(mountpoint: str, mount_handler: str, handler_kwargs: Dict[str, Any], overwrite: bool = True, tables: Optional[TableInfo] = None) None
+

Mounts a foreign database via an FDW (without creating new Splitgraph objects)

+
+
Parameters
+
    +
  • mountpoint – Mountpoint to import the new tables into.

  • +
  • mount_handler – The type of the mounted database.

  • +
  • handler_kwargs – Dictionary of options to pass to the mount handler.

  • +
  • overwrite – Delete the foreign server if it already exists. Used by mount_postgres for data pulls.

  • +
  • tables – List of tables to mount or their schemas

  • +
+
+
+
+ +
+
+splitgraph.hooks.mount_handlers.mount_postgres(mountpoint, **kwargs) None
+

Mount a Postgres database.

+

Mounts a schema on a remote Postgres database as a set of foreign tables locally. +

+
+
Parameters
+
    +
  • mountpoint – Schema to mount the remote into.

  • +
  • server – Database hostname.

  • +
  • port – Port the Postgres server is running on.

  • +
  • username – A read-only user that the database will be accessed as.

  • +
  • password – Password for the read-only user.

  • +
  • dbname – Remote database name.

  • +
  • remote_schema – Remote schema name.

  • +
  • extra_server_args – Dictionary of extra arguments to pass to the foreign server

  • +
  • tables – Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.

  • +
+
+
+

If a dictionary, must have the format &lbrace;“table_name”: &lbrace;“col_1”: “type_1”, …&rbrace;&rbrace;.

+
+ +
+
+

splitgraph.hooks.s3 module

+

Plugin for uploading Splitgraph objects from the cache to an external S3-like object store

+
+
+class splitgraph.hooks.s3.S3ExternalObjectHandler(params: Dict[Any, Any])
+

Bases: splitgraph.hooks.external_objects.ExternalObjectHandler

+

Uploads/downloads the objects to/from S3/S3-compatible host using the Minio client.

+

The handler is “attached” to a given registry which manages issuing pre-signed +GET/PUT URLs.

+

The handler supports a parameter threads specifying the number of threads +used to upload the objects.

+
+
+download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine) List[str]
+

Download objects from Minio.

+
+
Parameters
+

objects – List of (object ID, object URL (object ID it’s stored under))

+
+
+
+ +
+
+upload_objects(objects: List[str], remote_engine: PsycopgEngine) List[Tuple[str, str]]
+

Upload objects to Minio

+
+
Parameters
+
    +
  • remote_engine – Remote Engine class

  • +
  • objects – List of object IDs to upload

  • +
+
+
Returns
+

List of tuples with successfully uploaded objects and their URLs.

+
+
+
+ +
+ +
+
+splitgraph.hooks.s3.get_object_download_urls(remote_engine, remote_object_ids)
+
+ +
+
+splitgraph.hooks.s3.get_object_upload_urls(remote_engine, objects)
+
+ +
+
+

splitgraph.hooks.s3_server module

+

S3 registry-side routines called from the Python stored procedure +that are aware of the actual S3 access creds and generate pre-signed +URLs to upload/download objects.

+
+
+splitgraph.hooks.s3_server.delete_objects(client: minio.api.Minio, object_ids: List[str]) None
+

Delete objects stored in Minio

+
+
Parameters
+
    +
  • client – Minio client

  • +
  • object_ids – List of Splitgraph object IDs to delete

  • +
+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_download_urls(s3_host: str, object_ids: List[str]) List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.get_object_upload_urls(s3_host: str, object_ids: List[str]) List[List[str]]
+

Return a list of pre-signed URLs that each part of an object can be downloaded from.

+
+
Parameters
+
    +
  • s3_host – S3 host that the objects are stored on

  • +
  • object_ids – List of object IDs

  • +
+
+
Returns
+

A list of lists [(object URL, object footer URL, object schema URL)]

+
+
+
+ +
+
+splitgraph.hooks.s3_server.list_objects(client: minio.api.Minio) List[str]
+

List objects stored in Minio

+
+
Parameters
+

client – Minio client

+
+
Returns
+

List of Splitgraph object IDs

+
+
+
+ +
+
+

splitgraph.hooks.splitfile_commands module

+

A framework for custom Splitfile commands. The execution flow is as follows:

+
+
    +
  • When the Splitfile executor finds an unknown command, it looks for an entry in the config file:

    +
    [commands]
    +RUN=splitgraph.plugins.Run
    +
    +
    +
  • +
  • The command class must extend this class, initialized at every invocation time.

  • +
  • The command’s calc_hash() method is run. The resultant command context hash is combined with the current +image hash to produce the new image hash: if it already exists, then the image is simply checked out.

  • +
  • Otherwise (or if calc_hash is undefined or returns None), execute(), where the actual command should be +implemented, is run. If it returns a hash, this hash is used for the new image. If this hash already exists, +the existing image is checked out instead. If the command returns None, a random hash is generated for the +new image.

  • +
+
+
+
+class splitgraph.hooks.splitfile_commands.PluginCommand
+

Bases: object

+

Base class for custom Splitfile commands.

+
+
+calc_hash(repository, args)
+

Calculates the command context hash for this custom command. If either the command context hash or the +previous image hash has changed, then the image hash produced by this command will change. +Consequently, two commands with the same command context hashes are assumed to have the same effect +on any Splitgraph images.

+

This is supposed to be a lightweight method intended for pre-flight image hash calculations +(without performing the actual transformation). If it returns None, the actual transformation is run anyway.

+

For example, for a command that imports some data from an external URL, this could be the hash of the last +modified timestamp provided by the external data vendor. If the timestamp is unchanged, the data is unchanged +and so actual command won’t be re-executed.

+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits)

+
+
+
+ +
+
+execute(repository, args)
+

Execute the custom command against the target schema, optionally returning the new image hash. The contract +for the command is as follows (though it is not currently enforced by the runtime):

+
+
    +
  • Has to use get_engine().run_sql (or run_sql_batch) to interact with the engine.

  • +
  • Can only write to the schema with the checked-out repository (run_sql runs non-schema-qualified +statements against the correct schema).

  • +
  • Can inspect splitgraph_meta (e.g. to find the current HEAD) for the repository.

  • +
  • Can’t alter the versioning of the repository.

  • +
+
+
+
Parameters
+
    +
  • repository – SG Repository object pointed to a schema with the checked out image +the command is being run against.

  • +
  • args – Positional arguments to the command

  • +
+
+
Returns
+

Command context hash (a string of 64 hexadecimal digits). If calc_hash() had previously returned +a hash, this hash is ignored. If both this command and calc_hash() return None, the hash is randomly +generated.

+
+
+
+ +
+ +
+
+

Module contents

+

Various hooks for extending Splitgraph, including:

+
+
    +
  • External object handlers (splitgraph.hooks.external_objects) allowing to download/upload objects +to locations other than the remote Splitgraph engine.

  • +
  • Data sources (splitgraph.hooks.data_sources) that allow to add data to Splitgraph, e.g.

  • +
+
+

using the Postgres engine’s FDW interface to mount other external databases on the engine.

+
+ +
+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.airbyte.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.airbyte.mdx new file mode 100644 index 00000000..c13f4832 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.airbyte.mdx @@ -0,0 +1,667 @@ + + + +export const meta = { + title: "splitgraph.ingestion.airbyte package", + id: "splitgraph.ingestion.airbyte package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.airbyte.data_source module

+
+
+class splitgraph.ingestion.airbyte.data_source.AirbyteDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.SyncableDataSource, abc.ABC

+

Generic data source for Airbyte-compliant sources. +We run ingestion by combining an Airbyte source and the Airbyte Postgres destination.

+
+
+airbyte_name: Optional[str] = None
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'normalization_git_url': &lbrace;'description': 'For `custom` normalization, a URL to the Git repo with the dbt project, for example,`https://uname:pass_or_token@github.com/organisation/repository.git`.', 'title': 'dbt model Git URL', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+cursor_overrides: Optional[Dict[str, List[str]]] = None
+
+ +
+
+docker_environment: Optional[Dict[str, str]] = None
+
+ +
+
+docker_image: Optional[str] = None
+
+ +
+
+get_airbyte_config() Dict[str, Any]
+
+ +
+
+introspect() IntrospectionResult
+
+ +
+
+load(repository: splitgraph.core.repository.Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+
+normalization_image = 'airbyte/normalization:0.1.59'
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'normalization_git_branch': &lbrace;'default': 'master', 'description': 'Branch or commit hash to use for the normalization dbt project.', 'title': 'dbt model Git branch', 'type': 'string'&rbrace;, 'normalization_mode': &lbrace;'default': 'basic', 'description': "Whether to normalize raw Airbyte tables. `none` is no normalization, `basic` is Airbyte's basic normalization, `custom` is a custom dbt transformation on the data.", 'enum': ['none', 'basic', 'custom'], 'title': 'Post-ingestion normalization', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+primary_key_overrides: Optional[Dict[str, List[str]]] = None
+
+ +
+
+receiver_image = 'airbyte/destination-postgres:0.3.12'
+
+ +
+
+sync(repository: splitgraph.core.repository.Repository, image_hash: Optional[str] = None, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_state: bool = True) str
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'airbyte_cursor_fields': &lbrace;'description': "Fields in this stream to be used as a cursor for incremental replication (overrides Airbyte configuration's cursor_field)", 'items': &lbrace;'type': 'string'&rbrace;, 'title': 'Cursor field(s)', 'type': 'array'&rbrace;, 'airbyte_primary_key_fields': &lbrace;'description': "Fields in this stream to be used as a primary key for deduplication (overrides Airbyte configuration's primary_key)", 'items': &lbrace;'type': 'string'&rbrace;, 'title': 'Primary key field(s)', 'type': 'array'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.ingestion.airbyte.data_source.delete_schema_at_end(engine: splitgraph.engine.postgres.engine.PostgresEngine, schema: str) Generator
+
+ +
+
+splitgraph.ingestion.airbyte.data_source.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+

splitgraph.ingestion.airbyte.docker_utils module

+
+
+exception splitgraph.ingestion.airbyte.docker_utils.SubprocessError
+

Bases: splitgraph.exceptions.SplitGraphError

+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.add_files(container: docker.models.containers.Container, files: List[Tuple[str, str]]) None
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.build_command(files: List[Tuple[str, Any]]) List[str]
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.detect_network_mode() str
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.remove_at_end(container: docker.models.containers.Container) docker.models.containers.Container
+
+ +
+
+splitgraph.ingestion.airbyte.docker_utils.wait_not_failed(container: docker.models.containers.Container, mirror_logs: bool = False) None
+

Block until a Docker container exits.

+

:raises SubprocessError if the container exited with a non-zero code.

+
+ +
+
+

splitgraph.ingestion.airbyte.models module

+
+
+class splitgraph.ingestion.airbyte.models.AirbyteCatalog(*, streams: List[splitgraph.ingestion.airbyte.models.AirbyteStream], **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+streams: List[splitgraph.ingestion.airbyte.models.AirbyteStream]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus(*, status: splitgraph.ingestion.airbyte.models.Status, message: str = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+message: Optional[str]
+
+ +
+
+status: splitgraph.ingestion.airbyte.models.Status
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteLogMessage(*, level: splitgraph.ingestion.airbyte.models.Level, message: str, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+level: splitgraph.ingestion.airbyte.models.Level
+
+ +
+
+message: str
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteMessage(*, type: splitgraph.ingestion.airbyte.models.Type, log: splitgraph.ingestion.airbyte.models.AirbyteLogMessage = None, spec: splitgraph.ingestion.airbyte.models.ConnectorSpecification = None, connectionStatus: splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus = None, catalog: splitgraph.ingestion.airbyte.models.AirbyteCatalog = None, record: splitgraph.ingestion.airbyte.models.AirbyteRecordMessage = None, state: splitgraph.ingestion.airbyte.models.AirbyteStateMessage = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+catalog: Optional[splitgraph.ingestion.airbyte.models.AirbyteCatalog]
+
+ +
+
+connectionStatus: Optional[splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus]
+
+ +
+
+log: Optional[splitgraph.ingestion.airbyte.models.AirbyteLogMessage]
+
+ +
+
+record: Optional[splitgraph.ingestion.airbyte.models.AirbyteRecordMessage]
+
+ +
+
+spec: Optional[splitgraph.ingestion.airbyte.models.ConnectorSpecification]
+
+ +
+
+state: Optional[splitgraph.ingestion.airbyte.models.AirbyteStateMessage]
+
+ +
+
+type: splitgraph.ingestion.airbyte.models.Type
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteProtocol(*, airbyte_message: splitgraph.ingestion.airbyte.models.AirbyteMessage = None, configured_airbyte_catalog: splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog = None)
+

Bases: pydantic.main.BaseModel

+
+
+airbyte_message: Optional[splitgraph.ingestion.airbyte.models.AirbyteMessage]
+
+ +
+
+configured_airbyte_catalog: Optional[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteRecordMessage(*, stream: str, data: Dict[str, Any], emitted_at: int, namespace: str = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+data: Dict[str, Any]
+
+ +
+
+emitted_at: int
+
+ +
+
+namespace: Optional[str]
+
+ +
+
+stream: str
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteStateMessage(*, data: Dict[str, Any], **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+data: Dict[str, Any]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.AirbyteStream(*, name: str, json_schema: Dict[str, Any], supported_sync_modes: List[splitgraph.ingestion.airbyte.models.SyncMode] = None, source_defined_cursor: bool = None, default_cursor_field: List[str] = None, source_defined_primary_key: List[List[str]] = None, namespace: str = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+default_cursor_field: Optional[List[str]]
+
+ +
+
+json_schema: Dict[str, Any]
+
+ +
+
+name: str
+
+ +
+
+namespace: Optional[str]
+
+ +
+
+source_defined_cursor: Optional[bool]
+
+ +
+
+source_defined_primary_key: Optional[List[List[str]]]
+
+ +
+
+supported_sync_modes: Optional[List[splitgraph.ingestion.airbyte.models.SyncMode]]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog(*, streams: List[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream], **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+streams: List[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream(*, stream: splitgraph.ingestion.airbyte.models.AirbyteStream, sync_mode: splitgraph.ingestion.airbyte.models.SyncMode, cursor_field: List[str] = None, destination_sync_mode: splitgraph.ingestion.airbyte.models.DestinationSyncMode, primary_key: List[List[str]] = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+cursor_field: Optional[List[str]]
+
+ +
+
+destination_sync_mode: splitgraph.ingestion.airbyte.models.DestinationSyncMode
+
+ +
+
+primary_key: Optional[List[List[str]]]
+
+ +
+
+stream: splitgraph.ingestion.airbyte.models.AirbyteStream
+
+ +
+
+sync_mode: splitgraph.ingestion.airbyte.models.SyncMode
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.ConnectorSpecification(*, documentationUrl: pydantic.networks.AnyUrl = None, changelogUrl: pydantic.networks.AnyUrl = None, connectionSpecification: Dict[str, Any], supportsIncremental: bool = None, supportsNormalization: bool = False, supportsDBT: bool = False, supported_destination_sync_modes: List[splitgraph.ingestion.airbyte.models.DestinationSyncMode] = None, **extra_data: Any)
+

Bases: pydantic.main.BaseModel

+
+
+class Config
+

Bases: object

+
+
+extra = 'allow'
+
+ +
+ +
+
+changelogUrl: Optional[pydantic.networks.AnyUrl]
+
+ +
+
+connectionSpecification: Dict[str, Any]
+
+ +
+
+documentationUrl: Optional[pydantic.networks.AnyUrl]
+
+ +
+
+supported_destination_sync_modes: Optional[List[splitgraph.ingestion.airbyte.models.DestinationSyncMode]]
+
+ +
+
+supportsDBT: Optional[bool]
+
+ +
+
+supportsIncremental: Optional[bool]
+
+ +
+
+supportsNormalization: Optional[bool]
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.DestinationSyncMode(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+append = 'append'
+
+ +
+
+append_dedup = 'append_dedup'
+
+ +
+
+overwrite = 'overwrite'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.Level(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+DEBUG = 'DEBUG'
+
+ +
+
+ERROR = 'ERROR'
+
+ +
+
+FATAL = 'FATAL'
+
+ +
+
+INFO = 'INFO'
+
+ +
+
+TRACE = 'TRACE'
+
+ +
+
+WARN = 'WARN'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.Status(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+FAILED = 'FAILED'
+
+ +
+
+SUCCEEDED = 'SUCCEEDED'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.SyncMode(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+full_refresh = 'full_refresh'
+
+ +
+
+incremental = 'incremental'
+
+ +
+ +
+
+class splitgraph.ingestion.airbyte.models.Type(value)
+

Bases: enum.Enum

+

An enumeration.

+
+
+CATALOG = 'CATALOG'
+
+ +
+
+CONNECTION_STATUS = 'CONNECTION_STATUS'
+
+ +
+
+LOG = 'LOG'
+
+ +
+
+RECORD = 'RECORD'
+
+ +
+
+SPEC = 'SPEC'
+
+ +
+
+STATE = 'STATE'
+
+ +
+ +
+
+

splitgraph.ingestion.airbyte.utils module

+
+
+splitgraph.ingestion.airbyte.utils.get_pk_cursor_fields(stream: splitgraph.ingestion.airbyte.models.AirbyteStream, table_params: TableParams, cursor_overrides: Optional[Dict[str, List[str]]] = None, primary_key_overrides: Optional[Dict[str, List[str]]] = None) Tuple[Optional[List[str]], Optional[List[List[str]]]]
+
+ +
+
+splitgraph.ingestion.airbyte.utils.get_sg_schema(stream: splitgraph.ingestion.airbyte.models.AirbyteStream) List[splitgraph.core.types.TableColumn]
+
+ +
+
+splitgraph.ingestion.airbyte.utils.select_streams(catalog: splitgraph.ingestion.airbyte.models.AirbyteCatalog, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]], sync: bool = False, cursor_overrides: Optional[Dict[str, List[str]]] = None, primary_key_overrides: Optional[Dict[str, List[str]]] = None) splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.csv.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.csv.mdx new file mode 100644 index 00000000..a9f1d4d7 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.csv.mdx @@ -0,0 +1,320 @@ + + + +export const meta = { + title: "splitgraph.ingestion.csv package", + id: "splitgraph.ingestion.csv package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.csv.common module

+
+
+class splitgraph.ingestion.csv.common.CSVOptions(autodetect_header, autodetect_dialect, autodetect_encoding, autodetect_sample_size, schema_inference_rows, delimiter, quotechar, header, encoding, ignore_decode_errors)
+

Bases: tuple

+
+
+autodetect_dialect: bool
+

Alias for field number 1

+
+ +
+
+autodetect_encoding: bool
+

Alias for field number 2

+
+ +
+
+autodetect_header: bool
+

Alias for field number 0

+
+ +
+
+autodetect_sample_size: int
+

Alias for field number 3

+
+ +
+
+delimiter: str
+

Alias for field number 5

+
+ +
+
+encoding: str
+

Alias for field number 8

+
+ +
+
+classmethod from_fdw_options(fdw_options)
+
+ +
+
+header: bool
+

Alias for field number 7

+
+ +
+
+ignore_decode_errors: bool
+

Alias for field number 9

+
+ +
+
+quotechar: str
+

Alias for field number 6

+
+ +
+
+schema_inference_rows: int
+

Alias for field number 4

+
+ +
+
+to_csv_kwargs()
+
+ +
+
+to_table_options()
+

Turn this into a dict of table options that can be plugged back into CSVDataSource.

+
+ +
+ +
+
+splitgraph.ingestion.csv.common.autodetect_csv(stream: io.RawIOBase, csv_options: splitgraph.ingestion.csv.common.CSVOptions) splitgraph.ingestion.csv.common.CSVOptions
+

Autodetect the CSV dialect, encoding, header etc.

+
+ +
+
+splitgraph.ingestion.csv.common.dump_options(options: Dict[str, Any]) Dict[str, str]
+
+ +
+
+splitgraph.ingestion.csv.common.get_s3_params(fdw_options: Dict[str, Any]) Tuple[minio.api.Minio, str, str]
+
+ +
+
+splitgraph.ingestion.csv.common.load_options(options: Dict[str, str]) Dict[str, Any]
+
+ +
+
+splitgraph.ingestion.csv.common.log_to_postgres(*args, **kwargs)
+
+ +
+
+splitgraph.ingestion.csv.common.make_csv_reader(response: io.IOBase, csv_options: splitgraph.ingestion.csv.common.CSVOptions) Tuple[splitgraph.ingestion.csv.common.CSVOptions, _csv._reader]
+
+ +
+
+splitgraph.ingestion.csv.common.pad_csv_row(row: List[str], num_cols: int, row_number: int) List[str]
+

Preprocess a CSV file row to make the parser more robust.

+
+ +
+
+

splitgraph.ingestion.csv.fdw module

+
+
+class splitgraph.ingestion.csv.fdw.CSVForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+

Foreign data wrapper for CSV files stored in S3 buckets or HTTP

+
+
+can_sort(sortkeys)
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+
+ +
+
+classmethod import_schema(schema, srv_options, options, restriction_type, restricts)
+
+ +
+ +
+
+splitgraph.ingestion.csv.fdw.log_to_postgres(*args, **kwargs)
+
+ +
+
+splitgraph.ingestion.csv.fdw.report_errors(table_name: str)
+

Context manager that ignores exceptions and serializes them to JSON using PG’s notice +mechanism instead. The data source is meant to load these to report on partial failures +(e.g. failed to load one table, but not others).

+
+ +
+
+

Module contents

+
+
+class splitgraph.ingestion.csv.CSVDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount CSV files in S3/HTTP.\n\nIf passed an URL, this will live query a CSV file on an HTTP server. If passed\nS3 access credentials, this will scan a bucket for CSV files, infer their schema\nand make them available to query over SQL.  \n\nFor example:  \n\n\x08\n```\nsgr mount csv target_schema -o@- <<EOF\n  &lbrace;\n    "s3_endpoint": "cdn.mycompany.com:9000",\n    "s3_access_key": "ABCDEF",\n    "s3_secret_key": "GHIJKL",\n    "s3_bucket": "data",\n    "s3_object_prefix": "csv_files/current/",\n    "autodetect_header": true,\n    "autodetect_dialect": true,\n    "autodetect_encoding": true\n  &rbrace;\nEOF\n```\n'
+
+ +
+
+commandline_kwargs_help: str = "s3_access_key:\ns3_secret_key:\nconnection:\nautodetect_header: Detect whether the CSV file has a header automatically.\nautodetect_dialect: Detect the CSV file's dialect (separator, quoting characters etc) automatically.\nautodetect_encoding: Detect the CSV file's encoding automatically.\nautodetect_sample_size: Sample size, in bytes, for encoding/dialect/header detection.\nschema_inference_rows: Number of rows to use for schema inference.\nencoding: Encoding of the CSV file.\nignore_decode_errors: Ignore errors when decoding the file.\nheader: First line of the CSV file is its header.\ndelimiter: Character used to separate fields in the file.\nquotechar: Character used to quote fields."
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'s3_access_key': &lbrace;'type': 'string'&rbrace;, 's3_secret_key': &lbrace;'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs) splitgraph.ingestion.csv.CSVDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
+

Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
+
+ +
+
+classmethod migrate_params(params: Params) Params
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'autodetect_dialect': &lbrace;'default': True, 'description': "Detect the CSV file's dialect (separator, quoting characters etc) automatically", 'type': 'boolean'&rbrace;, 'autodetect_encoding': &lbrace;'default': True, 'description': "Detect the CSV file's encoding automatically", 'type': 'boolean'&rbrace;, 'autodetect_header': &lbrace;'default': True, 'description': 'Detect whether the CSV file has a header automatically', 'type': 'boolean'&rbrace;, 'autodetect_sample_size': &lbrace;'default': 65536, 'description': 'Sample size, in bytes, for encoding/dialect/header detection', 'type': 'integer'&rbrace;, 'connection': &lbrace;'oneOf': [&lbrace;'type': 'object', 'required': ['connection_type', 'url'], 'properties': &lbrace;'connection_type': &lbrace;'type': 'string', 'const': 'http'&rbrace;, 'url': &lbrace;'type': 'string', 'description': 'HTTP URL to the CSV file'&rbrace;&rbrace;&rbrace;, &lbrace;'type': 'object', 'required': ['connection_type', 's3_endpoint', 's3_bucket'], 'properties': &lbrace;'connection_type': &lbrace;'type': 'string', 'const': 's3'&rbrace;, 's3_endpoint': &lbrace;'type': 'string', 'description': 'S3 endpoint (including port if required)'&rbrace;, 's3_region': &lbrace;'type': 'string', 'description': 'Region of the S3 bucket'&rbrace;, 's3_secure': &lbrace;'type': 'boolean', 'description': 'Whether to use HTTPS for S3 access'&rbrace;, 's3_bucket': &lbrace;'type': 'string', 'description': 'Bucket the object is in'&rbrace;, 's3_object': &lbrace;'type': 'string', 'description': 'Limit the import to a single object'&rbrace;, 's3_object_prefix': &lbrace;'type': 'string', 'description': 'Prefix for object in S3 bucket'&rbrace;&rbrace;&rbrace;], 'type': 'object'&rbrace;, 'delimiter': &lbrace;'default': ',', 'description': 'Character used to separate fields in the file', 'type': 'string'&rbrace;, 'encoding': &lbrace;'default': 'utf-8', 'description': 'Encoding of the CSV file', 'type': 'string'&rbrace;, 'header': &lbrace;'default': True, 'description': 'First line of the CSV file is its header', 'type': 'boolean'&rbrace;, 'ignore_decode_errors': &lbrace;'default': False, 'description': 'Ignore errors when decoding the file', 'type': 'boolean'&rbrace;, 'quotechar': &lbrace;'default': '"', 'description': 'Character used to quote fields', 'type': 'string'&rbrace;, 'schema_inference_rows': &lbrace;'default': 100000, 'description': 'Number of rows to use for schema inference', 'type': 'integer'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'autodetect_dialect': &lbrace;'default': True, 'description': "Detect the CSV file's dialect (separator, quoting characters etc) automatically", 'type': 'boolean'&rbrace;, 'autodetect_encoding': &lbrace;'default': True, 'description': "Detect the CSV file's encoding automatically", 'type': 'boolean'&rbrace;, 'autodetect_header': &lbrace;'default': True, 'description': 'Detect whether the CSV file has a header automatically', 'type': 'boolean'&rbrace;, 'autodetect_sample_size': &lbrace;'default': 65536, 'description': 'Sample size, in bytes, for encoding/dialect/header detection', 'type': 'integer'&rbrace;, 'delimiter': &lbrace;'default': ',', 'description': 'Character used to separate fields in the file', 'type': 'string'&rbrace;, 'encoding': &lbrace;'default': 'utf-8', 'description': 'Encoding of the CSV file', 'type': 'string'&rbrace;, 'header': &lbrace;'default': True, 'description': 'First line of the CSV file is its header', 'type': 'boolean'&rbrace;, 'ignore_decode_errors': &lbrace;'default': False, 'description': 'Ignore errors when decoding the file', 'type': 'boolean'&rbrace;, 'quotechar': &lbrace;'default': '"', 'description': 'Character used to quote fields', 'type': 'string'&rbrace;, 's3_object': &lbrace;'description': 'S3 object of the CSV file', 'type': 'string'&rbrace;, 'schema_inference_rows': &lbrace;'default': 100000, 'description': 'Number of rows to use for schema inference', 'type': 'integer'&rbrace;, 'url': &lbrace;'description': 'HTTP URL to the CSV file', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.ingestion.csv.CSVIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PostgresEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.csv.copy_csv_buffer(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = False, **kwargs)
+

Copy CSV data from a buffer into a given schema/table

+
+ +
+
+splitgraph.ingestion.csv.query_to_csv(engine: PsycopgEngine, query, buffer, schema: Optional[str] = None)
+
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.mdx new file mode 100644 index 00000000..f8d6fb10 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.mdx @@ -0,0 +1,234 @@ + + + +export const meta = { + title: "splitgraph.ingestion package", + id: "splitgraph.ingestion package" +}; + +
+ +
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

splitgraph.ingestion.common module

+
+
+class splitgraph.ingestion.common.IngestionAdapter
+

Bases: object

+
+
+abstract create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+abstract data_to_new_table(data, engine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+abstract query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+
+to_data(query: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)
+
+ +
+
+to_table(data, repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True, no_header: bool = False, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.common.add_timestamp_tags(repository: splitgraph.core.repository.Repository, image_hash: str)
+
+ +
+
+splitgraph.ingestion.common.build_commandline_help(json_schema)
+
+ +
+
+splitgraph.ingestion.common.dedupe_sg_schema(schema_spec: List[splitgraph.core.types.TableColumn], prefix_len: int = 59) List[splitgraph.core.types.TableColumn]
+

Some foreign schemas have columns that are longer than 63 characters +where the first 63 characters are the same between several columns +(e.g. odn.data.socrata.com). This routine renames columns in a schema +to make sure this can’t happen (by giving duplicates a number suffix).

+
+ +
+
+splitgraph.ingestion.common.generate_column_names(schema_spec: List[splitgraph.core.types.TableColumn], prefix: str = 'col_') List[splitgraph.core.types.TableColumn]
+

Replace empty column names with autogenerated ones

+
+ +
+
+splitgraph.ingestion.common.merge_tables(engine: splitgraph.engine.postgres.engine.PsycopgEngine, source_schema: str, source_table: str, source_schema_spec: List[splitgraph.core.types.TableColumn], target_schema: str, target_table: str, target_schema_spec: List[splitgraph.core.types.TableColumn])
+
+ +
+
+splitgraph.ingestion.common.schema_compatible(source_schema: List[splitgraph.core.types.TableColumn], target_schema: List[splitgraph.core.types.TableColumn]) bool
+

Quick check to see if a dataframe with target_schema can be written into source_schema. +There are some implicit type conversions that SQLAlchemy/Pandas can do so we don’t want to immediately fail +if the column types aren’t exactly the same (eg bigint vs numeric etc). Most errors should be caught by PG itself.

+

Schema is a list of (ordinal, name, type, is_pk).

+
+ +
+
+

splitgraph.ingestion.inference module

+
+
+splitgraph.ingestion.inference.infer_sg_schema(sample: Sequence[List[str]], override_types: Optional[Dict[str, str]] = None, primary_keys: Optional[List[str]] = None)
+
+ +
+
+splitgraph.ingestion.inference.parse_bigint(integer: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_boolean(boolean: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_int(integer: str)
+
+ +
+
+splitgraph.ingestion.inference.parse_json(json_s: str)
+
+ +
+
+

splitgraph.ingestion.pandas module

+

Routines that ingest/export CSV files to/from Splitgraph images using Pandas

+
+
+class splitgraph.ingestion.pandas.PandasIngestionAdapter
+

Bases: splitgraph.ingestion.common.IngestionAdapter

+
+
+static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
+
+ +
+
+static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
+
+ +
+
+static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
+
+ +
+ +
+
+splitgraph.ingestion.pandas.df_to_table(df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True) None
+

Writes a Pandas DataFrame to a checked-out Splitgraph table. Doesn’t create a new image.

+
+
Parameters
+
    +
  • df – Pandas DataFrame to insert.

  • +
  • repository – Splitgraph Repository object. Must be checked out.

  • +
  • table – Table name.

  • +
  • if_exists – Behaviour if the table already exists: ‘patch’ means that primary keys that already exist in the

  • +
+
+
+

table will be updated and ones that don’t will be inserted. ‘replace’ means that the table will be dropped and +recreated. +:param schema_check: If False, skips checking that the dataframe is compatible with the target schema.

+
+ +
+
+splitgraph.ingestion.pandas.df_to_table_fast(engine: PsycopgEngine, df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], target_schema: str, target_table: str)
+
+ +
+
+splitgraph.ingestion.pandas.sql_to_df(sql: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs) pandas.core.frame.DataFrame
+

Executes an SQL query against a Splitgraph image, returning the result.

+

Extra **kwargs are passed to Pandas’ read_sql_query.

+
+
Parameters
+
    +
  • sql – SQL query to execute.

  • +
  • image – Image object, image hash/tag (str) or None (use the currently checked out image).

  • +
  • repository – Repository the image belongs to. Must be set if image is a hash/tag or None.

  • +
  • use_lq – Whether to use layered querying or check out the image if it’s not checked out.

  • +
+
+
Returns
+

A Pandas dataframe.

+
+
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.singer.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.singer.mdx new file mode 100644 index 00000000..da6e99fe --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.singer.mdx @@ -0,0 +1,239 @@ + + + +export const meta = { + title: "splitgraph.ingestion.singer package", + id: "splitgraph.ingestion.singer package" +}; + +
+ +
+

Subpackages

+
+
+
+
+

Submodules

+
+
+

splitgraph.ingestion.singer.common module

+
+
+splitgraph.ingestion.singer.common.log_exception(f)
+

Emit exceptions with full traceback instead of just the error text

+
+ +
+
+splitgraph.ingestion.singer.common.rollback_at_end(func: collections.abc.Callable) collections.abc.Callable
+
+ +
+
+splitgraph.ingestion.singer.common.store_ingestion_state(repository: splitgraph.core.repository.Repository, image_hash: str, current_state: Optional[Dict[str, Any]], new_state: str)
+
+ +
+
+

splitgraph.ingestion.singer.data_source module

+
+
+class splitgraph.ingestion.singer.data_source.GenericSingerDataSource(*args, **kwargs)
+

Bases: splitgraph.ingestion.singer.data_source.SingerDataSource

+
+
+credentials_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_singer_executable()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'tap_path': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['tap_path'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+class splitgraph.ingestion.singer.data_source.MySQLSingerDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.ingestion.singer.data_source.SingerDataSource

+
+
+build_singer_catalog(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'user': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['user', 'password'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_singer_executable()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'replication_method': &lbrace;'enum': ['INCREMENTAL', 'LOG_BASED', 'FULL TABLE'], 'type': 'string'&rbrace;&rbrace;, 'required': ['host', 'port', 'replication_method'], 'type': 'object'&rbrace;
+
+ +
+
+use_legacy_stream_selection = False
+
+ +
+
+use_properties = True
+
+ +
+ +
+
+class splitgraph.ingestion.singer.data_source.SingerDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.base.SyncableDataSource, abc.ABC

+
+
+build_singer_catalog(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, Any]
+
+ +
+
+get_singer_config()
+
+ +
+
+abstract get_singer_executable()
+
+ +
+
+introspect() IntrospectionResult
+
+ +
+
+load(repository: splitgraph.core.repository.Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
+
+ +
+
+sync(repository: splitgraph.core.repository.Repository, image_hash: Optional[str] = None, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_state: bool = True) str
+
+ +
+
+use_legacy_stream_selection = False
+
+ +
+
+use_properties = False
+
+ +
+ +
+
+splitgraph.ingestion.singer.data_source.select_streams(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_legacy_stream_selection=False) Dict[str, Any]
+
+ +
+
+

splitgraph.ingestion.singer.db_sync module

+
+
+class splitgraph.ingestion.singer.db_sync.DbSyncProxy(*args, **kwargs)
+

Bases: target_postgres.db_sync.DbSync

+
+
+create_indices(stream)
+
+ +
+
+create_schema_if_not_exists(table_columns_cache=None)
+
+ +
+
+delete_rows(stream)
+
+ +
+
+load_csv(file, count, size_bytes)
+
+ +
+
+sync_table()
+
+ +
+ +
+
+splitgraph.ingestion.singer.db_sync.db_sync_wrapper(image: splitgraph.core.image.Image, staging_schema: str)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.get_key_properties(stream_message)
+

Extract the PK from a stream message. Supports both legacy (“key_properties”) and +new (“metadata”) Singer taps.

+
+ +
+
+splitgraph.ingestion.singer.db_sync.get_sg_schema(stream_schema_message, flattening_max_level=0)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.get_table_name(stream_schema_message)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.run_patched_sync(repository: splitgraph.core.repository.Repository, base_image: Optional[splitgraph.core.image.Image], new_image_hash: str, delete_old: bool, failure: str, input_stream: Optional[BinaryIO] = None, output_stream: Optional[TextIO] = None)
+
+ +
+
+splitgraph.ingestion.singer.db_sync.select_breadcrumb(stream_message, breadcrumb)
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.snowflake.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.snowflake.mdx new file mode 100644 index 00000000..51f2b179 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.snowflake.mdx @@ -0,0 +1,97 @@ + + + +export const meta = { + title: "splitgraph.ingestion.snowflake package", + id: "splitgraph.ingestion.snowflake package" +}; + +
+ +
+

Module contents

+
+
+class splitgraph.ingestion.snowflake.SnowflakeDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+commandline_help: str = 'Mount a Snowflake database.\n\nThis will mount a remote Snowflake schema or a table. You can also get a mounted table to point to the result of a subquery that will be executed on the Snowflake instance. For example:\n\n\x08\n```\n$ sgr mount snowflake test_snowflake -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "password": "password",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "schema": "TPCH_SF100"\n    "envvars": &lbrace;"HTTPS_PROXY": "http://proxy.company.com"&rbrace;\n&rbrace;\nEOF\n\x08\n$ sgr mount snowflake test_snowflake_subquery -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "private_key": "MIIEvQIBAD...",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "tables": &lbrace;\n        "balances": &lbrace;\n            "schema": &lbrace;\n                "n_nation": "varchar",\n                "segment": "varchar",\n                "avg_balance": "numeric"\n            &rbrace;,\n            "options": &lbrace;\n                "subquery": "SELECT n_nation AS nation, c_mktsegment AS segment, AVG(c_acctbal) AS avg_balance FROM TPCH_SF100.customer c JOIN TPCH_SF100.nation n ON c_nationkey = n_nationkey"\n            &rbrace;\n        &rbrace;\n    &rbrace;\n&rbrace;\nEOF\n```\n    '
+
+ +
+
+commandline_kwargs_help: str = "username: Username. Required.\nsecret:\naccount: Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html. Required.\ndatabase: Snowflake database name. Required.\nschema: Snowflake schema.\nwarehouse: Warehouse name.\nrole: Role.\nbatch_size: Default fetch size for remote queries.\nenvvars: Environment variables to set on the engine side.\nThe schema parameter is required when subquery isn't used."
+
+ +
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'account': &lbrace;'description': 'Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html', 'type': 'string'&rbrace;, 'secret': &lbrace;'oneOf': [&lbrace;'type': 'object', 'required': ['secret_type', 'password'], 'properties': &lbrace;'secret_type': &lbrace;'type': 'string', 'const': 'password'&rbrace;, 'password': &lbrace;'type': 'string', 'description': 'Password'&rbrace;&rbrace;&rbrace;, &lbrace;'type': 'object', 'required': ['secret_type', 'private_key'], 'properties': &lbrace;'secret_type': &lbrace;'type': 'string', 'const': 'private_key'&rbrace;, 'private_key': &lbrace;'type': 'string', 'description': 'Private key in PEM format'&rbrace;&rbrace;&rbrace;], 'type': 'object'&rbrace;, 'username': &lbrace;'description': 'Username', 'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'account'], 'type': 'object'&rbrace;
+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_remote_schema_name() str
+

Override this if the FDW supports IMPORT FOREIGN SCHEMA

+
+ +
+
+get_server_options()
+
+ +
+
+get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
+
+ +
+
+classmethod migrate_credentials(credentials: Credentials) Credentials
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'description': 'Default fetch size for remote queries', 'type': 'integer'&rbrace;, 'database': &lbrace;'description': 'Snowflake database name', 'type': 'string'&rbrace;, 'envvars': &lbrace;'description': 'Environment variables to set on the engine side', 'type': 'object'&rbrace;, 'role': &lbrace;'description': 'Role', 'type': 'string'&rbrace;, 'schema': &lbrace;'description': 'Snowflake schema', 'type': 'string'&rbrace;, 'warehouse': &lbrace;'description': 'Warehouse name', 'type': 'string'&rbrace;&rbrace;, 'required': ['database'], 'type': 'object'&rbrace;
+
+ +
+
+supports_load = True
+
+ +
+
+supports_mount = True
+
+ +
+
+supports_sync = False
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'subquery': &lbrace;'description': 'Subquery for this table to run on the server side', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.socrata.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.socrata.mdx new file mode 100644 index 00000000..73e0dce0 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.ingestion.socrata.mdx @@ -0,0 +1,182 @@ + + + +export const meta = { + title: "splitgraph.ingestion.socrata package", + id: "splitgraph.ingestion.socrata package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.ingestion.socrata.fdw module

+

Module imported by Multicorn on the Splitgraph engine server: a foreign data wrapper +that communicates to Socrata datasets using sodapy.

+
+
+class splitgraph.ingestion.socrata.fdw.SocrataForeignDataWrapper(fdw_options, fdw_columns)
+

Bases: object

+
+
+can_sort(sortkeys)
+
+
Parameters
+

sortkeys – List of SortKey

+
+
Returns
+

List of SortKey the FDW can sort on

+
+
+
+ +
+
+execute(quals, columns, sortkeys=None)
+

Main Multicorn entry point.

+
+ +
+
+explain(quals, columns, sortkeys=None, verbose=False)
+
+ +
+
+get_rel_size(quals, columns)
+

Method called from the planner to estimate the resulting relation +size for a scan. +It will help the planner in deciding between different types of plans, +according to their costs. +Args:

+
+
+
quals (list): A list of Qual instances describing the filters

applied to this scan.

+
+
+

columns (list): The list of columns that must be returned.

+
+
+
Returns:

A tuple of the form (expected_number_of_rows, avg_row_width (in bytes))

+
+
+
+ +
+
+property table_meta
+
+ +
+ +
+
+splitgraph.ingestion.socrata.fdw.to_json(row, columns, column_map)
+
+ +
+
+

splitgraph.ingestion.socrata.mount module

+

Splitgraph mount handler for Socrata datasets

+
+
+class splitgraph.ingestion.socrata.mount.SocrataDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
+

Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

+
+
+credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'app_token': &lbrace;'description': 'Socrata app token', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
+
+ +
+
+classmethod from_commandline(engine, commandline_kwargs) splitgraph.ingestion.socrata.mount.SocrataDataSource
+

Instantiate an FDW data source from commandline arguments.

+
+ +
+
+classmethod get_description() str
+
+ +
+
+get_fdw_name()
+
+ +
+
+classmethod get_name() str
+
+ +
+
+get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
+

Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

+
+ +
+
+get_server_options()
+
+ +
+
+params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'default': 1000, 'description': 'Amount of rows to fetch from Socrata per request (limit parameter)', 'maximum': 50000, 'minimum': 1, 'type': 'integer'&rbrace;, 'domain': &lbrace;'description': 'Socrata domain, for example, data.albanyny.gov', 'type': 'string'&rbrace;&rbrace;, 'required': ['domain'], 'type': 'object'&rbrace;
+
+ +
+
+table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'socrata_id': &lbrace;'description': 'Socrata dataset ID, e.g. xzkq-xp2w', 'type': 'string'&rbrace;&rbrace;, 'required': ['socrata_id'], 'type': 'object'&rbrace;
+
+ +
+ +
+
+splitgraph.ingestion.socrata.mount.generate_socrata_mount_queries(sought_ids, datasets, mountpoint, server_id, tables: Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]])
+
+ +
+
+

splitgraph.ingestion.socrata.querying module

+
+
+splitgraph.ingestion.socrata.querying.cols_to_socrata(cols, column_map: Optional[Dict[str, str]] = None)
+
+ +
+
+splitgraph.ingestion.socrata.querying.estimate_socrata_rows_width(columns, metadata, column_map=None)
+

Estimate number of rows required for a query and each row’s width +from the table metadata.

+
+ +
+
+splitgraph.ingestion.socrata.querying.quals_to_socrata(quals, column_map: Optional[Dict[str, str]] = None)
+

Convert a list of Multicorn quals to a SoQL query

+
+ +
+
+splitgraph.ingestion.socrata.querying.socrata_to_sg_schema(metadata: Dict[str, Any]) Tuple[List[splitgraph.core.types.TableColumn], Dict[str, str]]
+
+ +
+
+splitgraph.ingestion.socrata.querying.sortkeys_to_socrata(sortkeys, column_map: Optional[Dict[str, str]] = None)
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.mdx new file mode 100644 index 00000000..3bfcb3c5 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.mdx @@ -0,0 +1,383 @@ + + + +export const meta = { + title: "splitgraph package", + id: "splitgraph package" +}; + +
+ +
+

Subpackages

+
+ +
+
+
+

Submodules

+
+
+

splitgraph.exceptions module

+

Exceptions that can be raised by the Splitgraph library.

+
+
+exception splitgraph.exceptions.APICompatibilityError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions related to API incompatibilities

+
+ +
+
+exception splitgraph.exceptions.AuthAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by the Auth API

+
+ +
+
+exception splitgraph.exceptions.CheckoutError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to checking out/committing repositories

+
+ +
+
+exception splitgraph.exceptions.DataSourceError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by mount handlers.

+
+ +
+
+exception splitgraph.exceptions.DockerUnavailableError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Could not connect to the Docker daemon.

+
+ +
+
+exception splitgraph.exceptions.EngineInitializationError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when the engine isn’t initialized (no splitgraph_meta schema or audit triggers)

+
+ +
+
+exception splitgraph.exceptions.EngineSetupError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised on various setup issues with the Splitgraph engine

+
+ +
+
+exception splitgraph.exceptions.ExternalHandlerError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Exceptions raised by external object handlers.

+
+ +
+
+exception splitgraph.exceptions.GQLAPIError
+

Bases: splitgraph.exceptions.SplitGraphError

+

GQL API errors

+
+ +
+
+exception splitgraph.exceptions.GQLRepoDoesntExistError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Repository doesn’t exist

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthenticatedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthenticated (user not logged in)

+
+ +
+
+exception splitgraph.exceptions.GQLUnauthorizedError
+

Bases: splitgraph.exceptions.GQLAPIError

+

Unauthorized (e.g. repository isn’t writeable by the user)

+
+ +
+
+exception splitgraph.exceptions.ImageNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph image doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectDownloadError(reason: Optional[BaseException], successful_objects: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during download of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.IncompleteObjectUploadError(reason: Optional[BaseException], successful_objects: List[str], successful_object_urls: List[str])
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when an error is encountered during upload of multiple objects. +The handler is supposed to perform any necessary +cleanup and reraise reason at the earliest opportunity.

+
+ +
+
+exception splitgraph.exceptions.JSONSchemaValidationError(message: str)
+

Bases: splitgraph.exceptions.SplitGraphError

+

Error validating the remote schema

+
+ +
+
+exception splitgraph.exceptions.ObjectCacheError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Issues with the object cache (not enough space)

+
+ +
+
+exception splitgraph.exceptions.ObjectIndexingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to indexing objects

+
+ +
+
+exception splitgraph.exceptions.ObjectMountingError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Errors related to incompatible objects.

+
+ +
+
+exception splitgraph.exceptions.ObjectNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised when a physical object doesn’t exist in the cache.

+
+ +
+
+exception splitgraph.exceptions.RepositoryNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A Splitgraph repository doesn’t exist.

+
+ +
+
+exception splitgraph.exceptions.SplitGraphError
+

Bases: Exception

+

A generic Splitgraph exception.

+
+ +
+
+exception splitgraph.exceptions.SplitfileError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Generic error class for Splitfile interpretation/execution errors.

+
+ +
+
+exception splitgraph.exceptions.TableNotFoundError
+

Bases: splitgraph.exceptions.SplitGraphError

+

A table doesn’t exist in an image

+
+ +
+
+exception splitgraph.exceptions.UnsupportedSQLError
+

Bases: splitgraph.exceptions.SplitGraphError

+

Raised for unsupported SQL statements, for example, containing schema-qualified tables when the statement +is supposed to be used in an SQL/IMPORT Splitfile command.

+
+ +
+
+splitgraph.exceptions.get_exception_name(o)
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.splitfile.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.splitfile.mdx new file mode 100644 index 00000000..4fc847a2 --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.splitfile.mdx @@ -0,0 +1,73 @@ + + + +export const meta = { + title: "splitgraph.splitfile package", + id: "splitgraph.splitfile package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.splitfile.execution module

+

Functions for executing Splitfiles.

+
+
+splitgraph.splitfile.execution.checkout_if_changed(repository: splitgraph.core.repository.Repository, image_hash: str) None
+
+ +
+
+splitgraph.splitfile.execution.execute_commands(commands: str, params: Optional[Dict[str, str]] = None, output: Optional[splitgraph.core.repository.Repository] = None, output_base: str = '00000000000000000000000000000000') None
+

Executes a series of Splitfile commands.

+
+
Parameters
+
    +
  • commands – A string with the raw Splitfile.

  • +
  • params – A dictionary of parameters to be applied to the Splitfile ($&lbrace;PARAM&rbrace; is replaced with the specified +parameter value).

  • +
  • output – Output repository to execute the Splitfile against.

  • +
  • output_base – If not None, a revision that gets checked out for all Splitfile actions to be committed +on top of it.

  • +
+
+
+
+ +
+
+splitgraph.splitfile.execution.getrandbits(k) x.  Generates an int with k random bits.
+
+ +
+
+splitgraph.splitfile.execution.prevalidate_imports(table_names: List[str], table_queries: List[bool]) List[str]
+
+ +
+
+splitgraph.splitfile.execution.rebuild_image(image: splitgraph.core.image.Image, source_replacement: Dict[splitgraph.core.repository.Repository, str]) None
+

Recreates the Splitfile used to create a given image and reruns it, replacing its dependencies with a different +set of versions.

+
+
Parameters
+
    +
  • image – Image object

  • +
  • source_replacement – A map that specifies replacement images/tags for repositories that the image depends on

  • +
+
+
+
+ +
+
+

Module contents

+

Splitfile interpreter: a set of tools on top of the core Splitgraph versioning and image management to give +the user a Dockerfile-like experience for building Splitgraph images (caching, consistent hashing, a declarative +language).

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.utils.mdx b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.utils.mdx new file mode 100644 index 00000000..991e61bb --- /dev/null +++ b/content/docs/9500_python-api/9000_versions/v0.3.0/splitgraph.utils.mdx @@ -0,0 +1,69 @@ + + + +export const meta = { + title: "splitgraph.utils package", + id: "splitgraph.utils package" +}; + +
+ +
+

Submodules

+
+
+

splitgraph.utils.docker module

+
+
+splitgraph.utils.docker.copy_dir_to_container(container: Container, source_path: str, target_path: str, exclude_names: Optional[List[str]] = None) None
+
+ +
+
+splitgraph.utils.docker.copy_to_container(container: Container, source_path: Optional[str], target_path: str, data: Optional[bytes] = None) None
+

Copy a file into a Docker container

+
+
Parameters
+
    +
  • container – Container object

  • +
  • source_path – Source file path

  • +
  • target_path – Target file path (in the container)

  • +
+
+
Returns
+

+
+
+
+ +
+
+splitgraph.utils.docker.get_docker_client()
+

Wrapper around client.from_env() that also pings the daemon +to make sure it can connect and if not, raises an error.

+
+ +
+
+splitgraph.utils.docker.get_file_from_container(container: Container, source_path: str) IO[bytes]
+
+ +
+
+

splitgraph.utils.yaml module

+
+
+splitgraph.utils.yaml.safe_dump(obj: Any, stream, **kwargs) None
+
+ +
+
+splitgraph.utils.yaml.safe_load(stream) Any
+
+ +
+
+

Module contents

+
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/metadata.json b/content/docs/9500_python-api/metadata.json index acc078bd..3545429c 100644 --- a/content/docs/9500_python-api/metadata.json +++ b/content/docs/9500_python-api/metadata.json @@ -1,21 +1,21 @@ { "title": "Python API", - "updated_at": "2021-03-15T13:06:04.567Z", + "updated_at": "2022-01-20T00:00:51.202Z", "release": { - "id": 39731301, - "tag_name": "v0.2.9", - "target_commitish": "5ec79cf97df336a93503ee0c48f168f79158d548", - "created_at": "2021-03-12T17:37:06Z", - "published_at": "2021-03-12T18:17:05Z", + "id": 55571256, + "tag_name": "v0.3.0", + "target_commitish": "fb8bbc616bda9717cd77db3597381a9cbe26d488", + "created_at": "2021-12-17T19:30:50Z", + "published_at": "2021-12-17T19:49:27Z", "assets": [ { - "id": 33389368, - "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/33389368", + "id": 52039025, + "url": "https://api.github.com/repos/splitgraph/splitgraph/releases/assets/52039025", "name": "sgr-docs-bin.tar.gz", "label": "", - "created_at": "2021-03-12T18:01:59Z", - "updated_at": "2021-03-12T18:01:59Z", - "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.2.9/sgr-docs-bin.tar.gz" + "created_at": "2021-12-17T19:49:15Z", + "updated_at": "2021-12-17T19:49:16Z", + "browser_download_url": "https://github.com/splitgraph/splitgraph/releases/download/v0.3.0/sgr-docs-bin.tar.gz" } ] }, diff --git a/content/docs/9500_python-api/modules.mdx b/content/docs/9500_python-api/modules.mdx new file mode 100644 index 00000000..493f105b --- /dev/null +++ b/content/docs/9500_python-api/modules.mdx @@ -0,0 +1,123 @@ + + + +export const meta = { + title: "splitgraph", + id: "splitgraph" +}; + +
+ +
+ +
+
+
\ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.cloud.mdx b/content/docs/9500_python-api/splitgraph.cloud.mdx index 09a8da3d..8f40bbd1 100644 --- a/content/docs/9500_python-api/splitgraph.cloud.mdx +++ b/content/docs/9500_python-api/splitgraph.cloud.mdx @@ -6,20 +6,744 @@ export const meta = { id: "splitgraph.cloud package" }; -
-

Module contents

+
+ +
+

Subpackages

+
+
+
+
+

Submodules

+
+
+

splitgraph.cloud.models module

+

Definitions for responses from the cloud GQL/REST APIs

+
+
+class splitgraph.cloud.models.AddExternalCredentialRequest(*, credential_name: str, credential_data: Dict[str, Any], plugin_name: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_data: Dict[str, Any]
+
+ +
+
+credential_name: str
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+class splitgraph.cloud.models.AddExternalRepositoriesRequest(*, repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest])
+

Bases: pydantic.main.BaseModel

+
+
+repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest]
+
+ +
+ +
+
+class splitgraph.cloud.models.AddExternalRepositoryRequest(*, namespace: str, repository: str, plugin_name: str, params: Params, is_live: bool, tables: Dict[str, splitgraph.cloud.models.ExternalTableRequest] = None, credential_id: str = None, credential_name: str = None, credential_data: Dict[str, Any] = None, schedule: splitgraph.cloud.project.models.IngestionSchedule = None, initial_private: bool = False)
+

Bases: pydantic.main.BaseModel

+
+
+credential_data: Optional[Dict[str, Any]]
+
+ +
+
+credential_id: Optional[str]
+
+ +
+
+credential_name: Optional[str]
+
+ +
+
+classmethod from_external(namespace: str, repository: str, external: splitgraph.cloud.project.models.External, credential_map: Optional[Dict[str, str]] = None, initial_private: bool = False)
+
+ +
+
+initial_private: bool
+
+ +
+
+is_live: bool
+
+ +
+
+namespace: str
+
+ +
+
+params: Params
+
+ +
+
+plugin_name: str
+
+ +
+
+repository: str
+
+ +
+
+schedule: Optional[splitgraph.cloud.project.models.IngestionSchedule]
+
+ +
+
+tables: Optional[Dict[str, splitgraph.cloud.models.ExternalTableRequest]]
+
+ +
+ +
+
+class splitgraph.cloud.models.ExportJobStatus(*, task_id: str, started: datetime.datetime, finished: datetime.datetime = None, status: str = None, user_id: str = None, export_format: str, output: Dict[str, Any] = None)
+

Bases: splitgraph.cloud.models.JobStatus

+
+
+export_format: str
+
+ +
+
+output: Optional[Dict[str, Any]]
+
+ +
+
+user_id: Optional[str]
+
+ +
+ +
+
+class splitgraph.cloud.models.ExternalResponse(*, namespace: str, repository: str, credentialId: str = None, dataSource: str, params: Dict[str, Any], tableParams: Dict[str, Any], externalImageByNamespaceAndRepository: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse = None, ingestionScheduleByNamespaceAndRepository: splitgraph.cloud.models.ExternalResponse.IngestionScheduleResponse = None)
+

Bases: pydantic.main.BaseModel

+
+
+class ExternalImageResponse(*, imageByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class ImageResponse(*, tablesByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class TablesResponse(*, nodes: List[splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse.Node])
+

Bases: pydantic.main.BaseModel

+
+
+class Node(*, tableName: str, tableSchema: List[splitgraph.core.types.TableColumn])
+

Bases: pydantic.main.BaseModel

+
+
+tableName: str
+
+ +
+
+tableSchema: List[splitgraph.core.types.TableColumn]
+
+ +
+ +
+
+nodes: List[splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse.Node]
+
+ +
+ +
+
+tablesByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse.TablesResponse
+
+ +
+ +
+
+imageByNamespaceAndRepositoryAndImageHash: splitgraph.cloud.models.ExternalResponse.ExternalImageResponse.ImageResponse
+
+ +
+ +
+
+class IngestionScheduleResponse(*, schedule: str, schema: Dict[str, List[splitgraph.core.types.TableColumn]], enabled: bool = True)
+

Bases: pydantic.main.BaseModel

+
+
+schedule: str
+
+ +
+
+schema_: Dict[str, List[splitgraph.core.types.TableColumn]]
+
+ +
+ +
+
+credentialId: Optional[str]
+
+ +
+
+dataSource: str
+
+ +
+
+externalImageByNamespaceAndRepository: Optional[splitgraph.cloud.models.ExternalResponse.ExternalImageResponse]
+
+ +
+
+classmethod from_response(response) List[splitgraph.cloud.models.ExternalResponse]
+
+ +
+
+ingestionScheduleByNamespaceAndRepository: Optional[splitgraph.cloud.models.ExternalResponse.IngestionScheduleResponse]
+
+ +
+
+namespace: str
+
+ +
+
+params: Dict[str, Any]
+
+ +
+
+repository: str
+
+ +
+
+tableParams: Dict[str, Any]
+
+ +
+
+to_external() splitgraph.cloud.project.models.External
+
+ +
+ +
+
+class splitgraph.cloud.models.ExternalTableRequest(*, options: Dict[str, Any] = &lbrace;&rbrace;, schema: Dict[str, str] = None)
+

Bases: pydantic.main.BaseModel

+
+
+options: Dict[str, Any]
+
+ +
+
+schema_: Optional[Dict[str, str]]
+
+ +
+ +
+
+class splitgraph.cloud.models.IngestionJobStatus(*, task_id: str, started: datetime.datetime, finished: datetime.datetime = None, status: str = None, is_manual: bool)
+

Bases: splitgraph.cloud.models.JobStatus

+
+
+is_manual: bool
+
+ +
+ +
+
+class splitgraph.cloud.models.JobStatus(*, task_id: str, started: datetime.datetime, finished: datetime.datetime = None, status: str = None)
+

Bases: pydantic.main.BaseModel

+
+
+finished: Optional[datetime.datetime]
+
+ +
+
+started: datetime.datetime
+
+ +
+
+status: Optional[str]
+
+ +
+
+task_id: str
+
+ +
+ +
+
+class splitgraph.cloud.models.ListExternalCredentialsResponse(*, credentials: List[splitgraph.cloud.models.ListExternalCredentialsResponse.ExternalCredential])
+

Bases: pydantic.main.BaseModel

+
+
+class ExternalCredential(*, plugin_name: str, credential_name: str = None, credential_id: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_id: str
+
+ +
+
+credential_name: Optional[str]
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+credentials: List[splitgraph.cloud.models.ListExternalCredentialsResponse.ExternalCredential]
+
+ +
+ +
+
+class splitgraph.cloud.models.MetadataResponse(*, namespace: str, repository: str, repoTopicsByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse, repoProfileByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse)
+

Bases: pydantic.main.BaseModel

+
+
+class RepoProfileResponse(*, readme: str = None, description: str = None, topics: List[str] = None, sources: List[splitgraph.cloud.project.models.Source] = None, license: str = None, metadata: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse.MetadataResponse = None)
+

Bases: pydantic.main.BaseModel

+
+
+class MetadataResponse(*, created_at: str = None, updated_at: str = None, upstream_metadata: Dict[str, Any])
+

Bases: pydantic.main.BaseModel

+
+
+created_at: Optional[str]
+
+ +
+
+updated_at: Optional[str]
+
+ +
+
+upstream_metadata: Dict[str, Any]
+
+ +
+ +
+
+description: Optional[str]
+
+ +
+
+license: Optional[str]
+
+ +
+
+metadata: Optional[splitgraph.cloud.models.MetadataResponse.RepoProfileResponse.MetadataResponse]
+
+ +
+
+readme: Optional[str]
+
+ +
+
+sources: Optional[List[splitgraph.cloud.project.models.Source]]
+
+ +
+
+topics: Optional[List[str]]
+
+ +
+ +
+
+class RepoTopicsResponse(*, nodes: List[splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse.RepositoryTopics])
+

Bases: pydantic.main.BaseModel

+
+
+class RepositoryTopics(*, topic: str)
+

Bases: pydantic.main.BaseModel

+
+
+topic: str
+
+ +
+ +
+
+nodes: List[splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse.RepositoryTopics]
+
+ +
+ +
+
+classmethod from_response(response) List[splitgraph.cloud.models.MetadataResponse]
+
+ +
+
+namespace: str
+
+ +
+
+repoProfileByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoProfileResponse
+
+ +
+
+repoTopicsByNamespaceAndRepository: splitgraph.cloud.models.MetadataResponse.RepoTopicsResponse
+
+ +
+
+repository: str
+
+ +
+
+to_metadata() splitgraph.cloud.project.models.Metadata
+
+ +
+ +
+
+class splitgraph.cloud.models.Plugin(*, plugin_name: str, credentials_schema: Dict[str, Any], params_schema: Dict[str, Any], table_params_schema: Dict[str, Any], name: str, description: str, supports_mount: bool, supports_load: bool, supports_sync: bool)
+

Bases: pydantic.main.BaseModel

+
+
+credentials_schema: Dict[str, Any]
+
+ +
+
+description: str
+
+ +
+
+name: str
+
+ +
+
+params_schema: Dict[str, Any]
+
+ +
+
+plugin_name: str
+
+ +
+
+supports_load: bool
+
+ +
+
+supports_mount: bool
+
+ +
+
+supports_sync: bool
+
+ +
+
+table_params_schema: Dict[str, Any]
+
+ +
+ +
+
+class splitgraph.cloud.models.RepositoryIngestionJobStatusResponse(*, repositoryIngestionJobStatus: splitgraph.cloud.models.RepositoryIngestionJobStatusResponse.RepositoryIngestionJobStatus)
+

Bases: pydantic.main.BaseModel

+
+
+class RepositoryIngestionJobStatus(*, nodes: List[splitgraph.cloud.models.RepositoryIngestionJobStatusResponse.RepositoryIngestionJobStatus.Node])
+

Bases: pydantic.main.BaseModel

+
+
+class Node(*, taskId: str, started: datetime.datetime, finished: datetime.datetime = None, isManual: bool, status: str = None)
+

Bases: pydantic.main.BaseModel

+
+
+finished: Optional[datetime.datetime]
+
+ +
+
+isManual: bool
+
+ +
+
+started: datetime.datetime
+
+ +
+
+status: Optional[str]
+
+ +
+
+taskId: str
+
+ +
+ +
+
+nodes: List[splitgraph.cloud.models.RepositoryIngestionJobStatusResponse.RepositoryIngestionJobStatus.Node]
+
+ +
+ +
+
+classmethod from_response(response) splitgraph.cloud.models.RepositoryIngestionJobStatusResponse
+
+ +
+
+repositoryIngestionJobStatus: splitgraph.cloud.models.RepositoryIngestionJobStatusResponse.RepositoryIngestionJobStatus
+
+ +
+ +
+
+class splitgraph.cloud.models.UpdateExternalCredentialRequest(*, credential_id: str, credential_name: str, credential_data: Dict[str, Any], plugin_name: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_data: Dict[str, Any]
+
+ +
+
+credential_id: str
+
+ +
+
+credential_name: str
+
+ +
+
+plugin_name: str
+
+ +
+ +
+
+class splitgraph.cloud.models.UpdateExternalCredentialResponse(*, credential_id: str)
+

Bases: pydantic.main.BaseModel

+
+
+credential_id: str
+
+ +
+ +
+
+splitgraph.cloud.models.make_repositories(metadata_responses: List[splitgraph.cloud.models.MetadataResponse], external_responses: List[splitgraph.cloud.models.ExternalResponse]) List[splitgraph.cloud.project.models.Repository]
+
+ +
+
+

splitgraph.cloud.queries module

+
+
+

Module contents

Public API for interacting with the Splitgraph registry

+
+
+splitgraph.cloud.AuthAPIClient(*args, **kwargs)
+
+
-
-class splitgraph.cloud.AuthAPIClient(remote: str)
+
+class splitgraph.cloud.GQLAPIClient(remote: Optional[str], endpoint: Optional[str] = None, access_token: Optional[str] = None)

Bases: object

-

Client for the Splitgraph registry auth API that generates tokens to access -other Splitgraph services.

-

Currently incomplete with just enough methods to allow to register and access -the Splitgraph registry via the command line.

+

Wrapper class for select Splitgraph Registry GQL operations that can be +called from the CLI

+
+
+property access_token: Optional[str]
+
+
-
-property access_token
+
+bulk_upsert_metadata(namespace_list: List[str], repository_list: List[str], metadata_list: List[splitgraph.cloud.project.models.Metadata])
+
+ +
+
+find_repository(query: str, limit: int = 10) Tuple[int, List[Tuple[str, str, str]]]
+
+ +
+
+get_all_plugins() List[splitgraph.cloud.models.Plugin]
+
+ +
+
+get_csv_upload_download_urls() Tuple[str, str]
+
+ +
+
+get_export_job_status(task_id: str) Optional[splitgraph.cloud.models.ExportJobStatus]
+
+ +
+
+get_external_metadata(namespace: str, repository: str) Optional[splitgraph.cloud.models.ExternalResponse]
+
+ +
+
+get_ingestion_job_logs(namespace: str, repository: str, task_id: str) str
+
+ +
+
+get_latest_ingestion_job_status(namespace: str, repository: str) Optional[splitgraph.cloud.models.IngestionJobStatus]
+
+ +
+
+get_metadata(namespace: str, repository: str) Optional[splitgraph.cloud.models.MetadataResponse]
+
+ +
+
+get_plugin(plugin_name: str) Optional[splitgraph.cloud.models.Plugin]
+
+ +
+
+load_all_repositories(limit_to: Optional[List[str]] = None) List[splitgraph.cloud.project.models.Repository]
+
+ +
+
+property maybe_access_token: Optional[str]
+
+ +
+
+start_csv_load(namespace: str, repository: str, download_urls: List[str], table_names: List[str]) str
+
+ +
+
+start_export(query: str) str
+
+ +
+
+start_load_existing(namespace: str, repository: str, sync: bool = True) str
+
+ +
+
+start_load_params(namespace: str, repository: str, external: splitgraph.cloud.project.models.External, sync: bool = True, credential_data: Optional[Dict[str, Any]] = None, initial_private: bool = False) str
+
+ +
+
+upsert_description(namespace: str, repository: str, description: str)
+
+ +
+
+upsert_metadata(namespace: str, repository: str, metadata: splitgraph.cloud.project.models.Metadata)
+

Update metadata for a single repository.

+
+ +
+
+upsert_readme(namespace: str, repository: str, readme: str)
+
+ +
+
+upsert_topics(namespace: str, repository: str, topics: List[str])
+
+ +
+ +
+
+class splitgraph.cloud.RESTAPIClient(remote: str)
+

Bases: object

+

Client for various Splitgraph Registry REST APIs: auth token generation, external repo setup…

+
+
+property access_token: str

Will return an up-to-date access token by either getting it from the configuration file or contacting the auth service for a new one. Will write the new access token into the configuration file.

@@ -31,8 +755,13 @@ Will write the new access token into the configuration file.

-
-create_machine_credentials(access_token: str, password: str)requests.models.Response
+
+bulk_upsert_external(repositories: List[splitgraph.cloud.models.AddExternalRepositoryRequest])
+
+ +
+
+create_machine_credentials(access_token: str, password: str) requests.models.Response

Generate a key and secret that can be used to log into the Splitgraph registry via a normal Postgres connection. The secret must be stored in the user’s local configuration file (it’s not stored on Splitgraph servers).

@@ -50,8 +779,15 @@ configuration file (it’s not stored on Splitgraph servers).

-
-get_access_token(refresh_token: str)requests.models.Response
+
+ensure_external_credential(credential_data: Dict[str, Any], credential_name: str, plugin_name: str) str
+

Store a credential for accessing an external data source +in Splitgraph Cloud and return its ID

+
+ +
+
+get_access_token(refresh_token: str) requests.models.Response

Get a new access token from a refresh token.

Parameters
@@ -64,8 +800,8 @@ configuration file (it’s not stored on Splitgraph servers).

-
-get_access_token_from_api(api_key: str, api_secret: str)requests.models.Response
+
+get_access_token_from_api(api_key: str, api_secret: str) requests.models.Response

Get a new access token from API keys

Parameters
@@ -81,13 +817,13 @@ configuration file (it’s not stored on Splitgraph servers).

-
-get_latest_version()Optional[str]
+
+get_latest_version() Optional[str]
-
-get_refresh_token(username: str, password: str)requests.models.Response
+
+get_refresh_token(username: str, password: str) requests.models.Response

Get a long-lived refresh token and a short-lived access token from the API.

Parameters
@@ -103,8 +839,19 @@ configuration file (it’s not stored on Splitgraph servers).

-
-register(username: str, password: str, email: str, accept_tos: bool)requests.models.Response
+
+list_external_credentials() splitgraph.cloud.models.ListExternalCredentialsResponse
+
+ +
+
+property maybe_access_token: Optional[str]
+

Like access_token but returns None if the user isn’t logged in.

+
+ +
+
+register(username: str, password: str, email: str, accept_tos: bool) requests.models.Response

Register a new Splitgraph user.

Parameters
@@ -119,50 +866,17 @@ configuration file (it’s not stored on Splitgraph servers).

-
-tos()requests.models.Response
+
+tos() requests.models.Response

Get a Terms of Service message from the registry (if accepting ToS is required) :return: Link to the Terms of Service or None

-
-
-class splitgraph.cloud.GQLAPIClient(remote: str)
-

Bases: object

-

Wrapper class for select Splitgraph Registry GQL operations that can be -called from the CLI

-
-
-find_repository(query: str, limit: int = 10)Tuple[int, List[Tuple[str, str, str]]]
-
- -
-
-upsert_description(namespace: str, repository: str, description: str)
-
- -
-
-upsert_metadata(*args, **kwargs)
-
- -
-
-upsert_readme(namespace: str, repository: str, readme: str)
-
- -
-
-upsert_topics(namespace: str, repository: str, topics: List[str])
-
- -
-
-
-splitgraph.cloud.expect_result(result: List[str], ignore_status_codes: Optional[List[int]] = None)Callable[[Callable[[], requests.models.Response]], Callable[[], Union[str, Tuple[str]]]]
+
+splitgraph.cloud.expect_result(result: List[str], ignore_status_codes: Optional[List[int]] = None) Callable[[Callable[[...], requests.models.Response]], Callable[[...], Union[str, Tuple[str]]]]

A decorator that can be wrapped around a function returning a requests.Response with a JSON body. If the request has failed, it will extract the “error” from the JSON response and raise an AuthAPIError.

@@ -181,29 +895,27 @@ return just that item.

-
-splitgraph.cloud.get_headers()
+
+splitgraph.cloud.get_headers()
-
-splitgraph.cloud.get_remote_param(remote: str, key: str)str
+
+splitgraph.cloud.get_remote_param(remote: str, key: str) str
-
-splitgraph.cloud.get_token_claim(jwt, claim)
+
+splitgraph.cloud.get_token_claim(jwt, claim)

Extract a claim from a JWT token without validating it.

-
-splitgraph.cloud.handle_gql_errors(func: Callable[[], requests.models.Response])Callable[[], requests.models.Response]
+
+splitgraph.cloud.handle_gql_errors(func: Callable[[...], requests.models.Response]) Callable[[...], requests.models.Response]

A decorator that handles responses from the GQL API, transforming errors into exceptions.

-
- - -
-
+ + +
\ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.commandline.mdx b/content/docs/9500_python-api/splitgraph.commandline.mdx index 5e6c6b39..3a9f970d 100644 --- a/content/docs/9500_python-api/splitgraph.commandline.mdx +++ b/content/docs/9500_python-api/splitgraph.commandline.mdx @@ -6,220 +6,113 @@ export const meta = { id: "splitgraph.commandline package" }; -
-

Module contents

-

Splitgraph command line client

-

Hooks into the API to allow management of Splitgraph repositories and images using sgr.

-
-
-class splitgraph.commandline.ClickHandler(level=0)
-

Bases: logging.Handler

-
-
-emit(record)
-

Do whatever it takes to actually log the specified logging record.

-

This version is intended to be implemented by subclasses and so -raises a NotImplementedError.

-
- -
+
-
-
-class splitgraph.commandline.WithExceptionHandler(name=None, commands=None, **attrs)
-

Bases: click.core.Group

-
-
-get_command(ctx, cmd_name)
-

Given a context and a command name, this returns a -Command object if it exists or returns None.

-
- -
-
-invoke(ctx)
-

Given a context, this invokes the attached callback (if it exists) -in the right way.

-
- -
- -
-
-splitgraph.commandline.get_exception_name(o)
-
- -
- -
-

Submodules

-
-
-

splitgraph.commandline.cloud module

+
+

Submodules

+
+
+

splitgraph.commandline.cloud module

Command line routines related to registering/setting up connections to the Splitgraph registry.

-
-
-

splitgraph.commandline.common module

-

Various common functions used by the command line interface.

-
-
-class splitgraph.commandline.common.Color
-

Bases: object

-

An enumeration of console colors

-
-
-BLUE = '\x1b[94m'
-
- -
-
-BOLD = '\x1b[1m'
-
- -
-
-CYAN = '\x1b[96m'
-
- -
-
-DARKCYAN = '\x1b[36m'
-
- -
-
-END = '\x1b[0m'
-
- -
-
-GREEN = '\x1b[92m'
-
- -
-
-PURPLE = '\x1b[95m'
-
- -
-
-RED = '\x1b[91m'
-
- -
-
-UNDERLINE = '\x1b[4m'
+
+
+splitgraph.commandline.cloud.wait_for_download(client: GQLAPIClient, task_id: str) str
-
-
-YELLOW = '\x1b[93m'
+
+
+splitgraph.commandline.cloud.wait_for_load(client: GQLAPIClient, namespace: str, repository: str, task_id: str) None
-
- + +
+

splitgraph.commandline.common module

+

Various common functions used by the command line interface.

-
-class splitgraph.commandline.common.ImageType(default: Optional[str] = 'latest', repository_exists: bool = False, get_image: bool = False)
+
+class splitgraph.commandline.common.ImageType(default: Optional[str] = 'latest', repository_exists: bool = False, get_image: bool = False)

Bases: click.types.ParamType

Parser that extracts the full image specification (repository and hash/tag).

-
-convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])Tuple[Repository, Optional[Union[Image, str]]]
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context]) Tuple[Repository, Optional[Union[Image, str]]]

Image specification must have the format [NAMESPACE/]REPOSITORY[:HASH_OR_TAG].

The parser returns a tuple of (repository object, tag or hash).

-
-name = 'Image'
+
+name = 'Image'

the descriptive name of this type

-
-class splitgraph.commandline.common.JsonType
+
+class splitgraph.commandline.common.JsonType

Bases: click.types.ParamType

Parser for Json – a wrapper around json.loads because without specifying the name Click shows the type for the option/arg as LOADS.

Also supports passing JSON files (pass in @filename.json).

-
-convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])

Converts the value. This is not invoked for values that are None (the missing value).

-
-name = 'Json'
+
+name = 'Json'

the descriptive name of this type

-
-class splitgraph.commandline.common.RepositoryType(exists: bool = False)
+
+class splitgraph.commandline.common.RepositoryType(exists: bool = False)

Bases: click.types.ParamType

-
-convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])Repository
+
+convert(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context]) Repository

Converts the value. This is not invoked for values that are None (the missing value).

-
-name = 'Repository'
+
+name = 'Repository'

the descriptive name of this type

-
-
-class splitgraph.commandline.common.ResettableStream(stream)
-

Bases: io.RawIOBase

-

Stream that supports reading from the underlying stream and resetting the position once.

-

We can’t use fseek() in this case, since we might be reading from a pipe. So, we operate -this stream in two modes. In the first mode, we mirror all reads into a separate buffer -(consuming the input stream). After the user calls reset(), we first output data from the -mirrored copy, then continue consuming the input stream (simulating seek(0).

-
-
-readable()
-

Return whether object was opened for reading.

-

If False, read() will raise OSError.

+
+
+splitgraph.commandline.common.download_file(url: str, filename: Optional[str]) None
+

Download a file with a tqdm progress bar

-
-
-readinto(b)
-
- -
-
-reset()
+
+
+splitgraph.commandline.common.emit_sql_results(results, use_json=False, show_all=False)
-
-
-
-splitgraph.commandline.common.emit_sql_results(results, use_json=False, show_all=False)
+
+splitgraph.commandline.common.get_spinner_settings() Tuple[Iterator[str], int]
-
-splitgraph.commandline.common.load_json_param(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
+
+splitgraph.commandline.common.load_json_param(value: str, param: Optional[click.core.Parameter], ctx: Optional[click.core.Context])
-
-splitgraph.commandline.common.remote_switch_option(*names, **kwargs)
+
+splitgraph.commandline.common.remote_switch_option(*names, **kwargs)

Adds an option to switch global SG_ENGINE for this invocation of sgr.

This is useful for e.g. tagging or viewing image information on a remote registry. This is not used in operations like commit/checkout (even though @@ -236,41 +129,39 @@ supports this), the user should switch SG_ENGINE envvar themselves in that case.

-
-splitgraph.commandline.common.sql_results_to_str(results: List[Tuple[Any]], use_json: bool = False)str
+
+splitgraph.commandline.common.sql_results_to_str(results: List[Tuple[Any]], use_json: bool = False) str
-
-
-

splitgraph.commandline.engine module

-
-splitgraph.commandline.engine.copy_to_container(container: Container, source_path: str, target_path: str)None
-

Copy a file into a Docker container

+
+splitgraph.commandline.common.upload_file(file: IO, upload_url: str) None
+

Upload a file to a presigned URL with a tqdm progress bar

+
+ +
+
+splitgraph.commandline.common.wait_for_job(task_id: str, status_callback: Callable[[], Optional[splitgraph.commandline.common.S]]) splitgraph.commandline.common.S
+

Wait for a job to complete (with a CLI spinner) and return its final result.

Parameters
    -
  • container – Container object

  • -
  • source_path – Source file path

  • -
  • target_path – Target file path (in the container)

  • +
  • task_id – ID of the task (used for display)

  • +
  • status_callback – Callback that returns a JobStatus

Returns
-

+

Final JobStatus

+ +
+

splitgraph.commandline.engine module

-
-splitgraph.commandline.engine.get_docker_client()
-

Wrapper around client.from_env() that also pings the daemon -to make sure it can connect and if not, raises an error.

-
- -
-
-splitgraph.commandline.engine.inject_config_into_engines(engine_prefix, config_path)
+
+splitgraph.commandline.engine.inject_config_into_engines(engine_prefix, config_path)

Copy the current config into all engines that are managed by sgr engine. This is so that the engine has the right credentials and settings for when we do layered querying (a Postgres client queries the engine directly and it @@ -286,22 +177,17 @@ has to download objects etc).

-
-splitgraph.commandline.engine.list_engines(prefix, include_all=False, unavailable_ok=True)
+
+splitgraph.commandline.engine.list_engines(prefix, include_all=False, unavailable_ok=True)
-
-
-splitgraph.commandline.engine.patch_and_save_config(config, patch)
-
- -
-
-

splitgraph.commandline.example module

+ +
+

splitgraph.commandline.example module

Command line routines generating example data / Splitfiles

-
-splitgraph.commandline.example.alter_table(repository: Repository, table_name: str, rows_added: int, rows_deleted: int, rows_updated: int)None
+
+splitgraph.commandline.example.alter_table(repository: Repository, table_name: str, rows_added: int, rows_deleted: int, rows_updated: int) None

Alters the example table, adding/updating/deleting a certain number of rows.

Parameters
@@ -317,8 +203,8 @@ has to download objects etc).

-
-splitgraph.commandline.example.generate_table(repository: Repository, table_name: str, size: int)None
+
+splitgraph.commandline.example.generate_table(repository: Repository, table_name: str, size: int) None

Creates a table with an integer primary key and a string value.

Parameters
@@ -331,35 +217,73 @@ has to download objects etc).

-
-
-

splitgraph.commandline.image_creation module

+ +
+

splitgraph.commandline.image_creation module

sgr commands related to creating and checking out images

-
-
-

splitgraph.commandline.image_info module

+ +
+

splitgraph.commandline.image_info module

sgr commands related to getting information out of / about images

-
-
-

splitgraph.commandline.ingestion module

+ +
+

splitgraph.commandline.ingestion module

Command line tools for ingesting/exporting Splitgraph images into other formats.

-
-
-

splitgraph.commandline.misc module

+ +
+

splitgraph.commandline.misc module

Miscellaneous image management sgr commands.

-
-
-

splitgraph.commandline.mount module

+ +
+

splitgraph.commandline.mount module

sgr commands related to mounting databases via Postgres FDW

-
-
-

splitgraph.commandline.push_pull module

+ +
+

splitgraph.commandline.push_pull module

sgr commands related to sharing and downloading images.

-
-
-

splitgraph.commandline.splitfile module

+ +
+

splitgraph.commandline.splitfile module

sgr commands related to building and rebuilding Splitfiles.

-
+ +
+

Module contents

+

Splitgraph command line client

+

Hooks into the API to allow management of Splitgraph repositories and images using sgr.

+
+
+class splitgraph.commandline.ClickHandler(level=0)
+

Bases: logging.Handler

+
+
+emit(record)
+

Do whatever it takes to actually log the specified logging record.

+

This version is intended to be implemented by subclasses and so +raises a NotImplementedError.

+
+ +
+ +
+
+class splitgraph.commandline.WithExceptionHandler(name=None, commands=None, **attrs)
+

Bases: click.core.Group

+
+
+get_command(ctx, cmd_name)
+

Given a context and a command name, this returns a +Command object if it exists or returns None.

+
+ +
+
+invoke(ctx)
+

Given a context, this invokes the attached callback (if it exists) +in the right way.

+
+ +
-
-
+ + +
\ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.config.mdx b/content/docs/9500_python-api/splitgraph.config.mdx index 7669ed03..dcf61151 100644 --- a/content/docs/9500_python-api/splitgraph.config.mdx +++ b/content/docs/9500_python-api/splitgraph.config.mdx @@ -6,31 +6,16 @@ export const meta = { id: "splitgraph.config package" }; -
-

Module contents

-

The CONFIG object is created and exported once __at import time__ -Calling CONFIG[“KEY”] directly should be sufficient in most cases, -except when a config value has changed since importing CONFIG. -In that case, create_config_dict() can provide an updated config dict

-

Priority (highest to lowest):

-
-
    -
  1. Command line argument values

  2. -
  3. Environment variable values

  4. -
  5. Config file values in [defaults] section

  6. -
  7. DEFAULTS (see keys.py)

  8. -
-
-
+
-
-

Submodules

-
-
-

splitgraph.config.argument_config module

+
+

Submodules

+
+
+

splitgraph.config.argument_config module

-
-splitgraph.config.argument_config.get_arg_tuples()List[Tuple[str, str]]
+
+splitgraph.config.argument_config.get_arg_tuples() List[Tuple[str, str]]

Get the raw (argN, argN+1) tuples from sys.argv

We could also use click to parse the flags ahead of time, and then pass the parsed flag object into SystemConfigGetters. But this way, we avoid @@ -38,70 +23,70 @@ having to pass down variables from click just to get config values.

-
-splitgraph.config.argument_config.get_argument_config_value(key: str, default_return: Optional[str] = None)Optional[str]
+
+splitgraph.config.argument_config.get_argument_config_value(key: str, default_return: Optional[str] = None) Optional[str]

Get get the value of an argument, where value is the argument immediately following the argument matching a key in ARG_KEYS, e.g.:

-

SYS_ARGS = [“–namespace”, “foo”] +

SYS_ARGS = [”–namespace”, “foo”] –> return “foo”

Otherwise, return default_return

-
-
-

splitgraph.config.config module

+
+
+

splitgraph.config.config module

-
-splitgraph.config.config.chain_getters(getters: Sequence[Callable[[str], Optional[str]]], key: str, default_return: Optional[str] = None)Optional[str]
+
+splitgraph.config.config.chain_getters(getters: Sequence[Callable[[str], Optional[str]]], key: str, default_return: Optional[str] = None) Optional[str]
-
-splitgraph.config.config.create_config_dict()Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+
+splitgraph.config.config.create_config_dict() Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]

Create and return a dict of all known config values

-
-splitgraph.config.config.get_all_in_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str)Dict[str, Union[Dict[str, str], str]]
+
+splitgraph.config.config.get_all_in_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str) Dict[str, Union[Dict[str, str], str]]

Get all subsections from a config (e.g. config[“data_sources”])

-
-splitgraph.config.config.get_all_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str)Dict[str, str]
+
+splitgraph.config.config.get_all_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str) Dict[str, str]
-
-splitgraph.config.config.get_from_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, item: str)str
+
+splitgraph.config.config.get_from_section(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, item: str) str
-
-splitgraph.config.config.get_from_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str)str
+
+splitgraph.config.config.get_from_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str) str

Return a singleton variable from a subsection of the config, e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

-
-splitgraph.config.config.get_singleton(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], item: str)str
+
+splitgraph.config.config.get_singleton(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], item: str) str

Return a singleton (not a section) variable from the config.

-
-splitgraph.config.config.lazy_get_config_value(key: str, default_return: Optional[str] = None)Optional[Union[str, Dict[str, Dict[str, str]]]]
+
+splitgraph.config.config.lazy_get_config_value(key: str, default_return: Optional[str] = None) Optional[Union[str, Dict[str, Dict[str, str]]]]

Get the config value for a key in the following precedence Otherwise return default_return

-
-splitgraph.config.config.patch_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], patch: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+
+splitgraph.config.config.patch_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], patch: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]

Recursively updates a nested configuration dictionary:

patch_config(
@@ -127,42 +112,42 @@ Otherwise return default_return

-
-splitgraph.config.config.set_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str, value: str)None
+
+splitgraph.config.config.set_in_subsection(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], section: str, subsection: str, item: str, value: str) None

Set a singleton variable in a subsection of the config, e.g. config[“remotes”][“data.splitgraph.com”][“SG_ENGINE_HOST”]

-
-splitgraph.config.config.update_config_dict_from_arguments(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+
+splitgraph.config.config.update_config_dict_from_arguments(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]

Given an existing config_dict, update after reading sys.argv and overwriting any keys.

Return updated copy of config_dict.

-
-splitgraph.config.config.update_config_dict_from_env_vars(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+
+splitgraph.config.config.update_config_dict_from_env_vars(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]

Given an existing config_dict, update after reading os.environ and overwriting any keys.

Return updated copy of config_dict.

-
-splitgraph.config.config.update_config_dict_from_file(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], sg_config_file: str)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+
+splitgraph.config.config.update_config_dict_from_file(config_dict: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], sg_config_file: str) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]

Given an existing config_dict, update after reading sg_config_file and overwriting any keys according to the rules in config_file_config

Return updated copy of config_dict.

-
-
-

splitgraph.config.config_file_config module

+ +
+

splitgraph.config.config_file_config module

-
-splitgraph.config.config_file_config.accumulate_lists(config_dict: Dict[str, Union[Dict[str, str], str]])Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+
+splitgraph.config.config_file_config.accumulate_lists(config_dict: Dict[str, Union[Dict[str, str], str]]) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]

Transform a config_dict to “accumulate” objects “nested” via key name

Because ConfigParser does not support nesting, we implement our own syntax via the key names of sections. The ‘:’ character can be used in @@ -195,20 +180,20 @@ section names to specify the left and right key. Example:

-
-splitgraph.config.config_file_config.get_config_dict_from_config_file(sg_file: str, **kwargs)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+
+splitgraph.config.config_file_config.get_config_dict_from_config_file(sg_file: str, **kwargs) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]

Create a dict from ConfigParser, apply transformations to it.

Return parsed and transformed config_dict.

-
-splitgraph.config.config_file_config.get_config_dict_from_file(sg_file: str, **kwargs)Dict[str, Dict[str, str]]
+
+splitgraph.config.config_file_config.get_config_dict_from_file(sg_file: str, **kwargs) Dict[str, Dict[str, str]]
-
-splitgraph.config.config_file_config.hoist_section(config_dict: Dict[str, Dict[str, str]], section: str = 'defaults')Dict[str, Union[Dict[str, str], str]]
+
+splitgraph.config.config_file_config.hoist_section(config_dict: Dict[str, Dict[str, str]], section: str = 'defaults') Dict[str, Union[Dict[str, str], str]]

If a section exists called <hoist_section>, hoist it to the top level This is useful for overriding default configs from within a config file

Transform config_dict to “hoist” any config values from a section @@ -218,8 +203,8 @@ when the name of the section matches hoist_section.

-
-splitgraph.config.config_file_config.transform_config_dict(config_dict: Dict[str, Dict[str, str]], **kwargs)Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]
+
+splitgraph.config.config_file_config.transform_config_dict(config_dict: Dict[str, Dict[str, str]], **kwargs) Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]]

Apply transformations to the raw ConfigParser.config object

    @@ -230,33 +215,33 @@ when the name of the section matches hoist_section.

    Return the a new, updated copy of config_dict.

-
-
-

splitgraph.config.default_config module

+ +
+

splitgraph.config.default_config module

-
-splitgraph.config.default_config.get_default_config_value(key: str, default_return: Optional[str] = None)Any
+
+splitgraph.config.default_config.get_default_config_value(key: str, default_return: Optional[str] = None) Any

Get the hard-coded default value of a config key. Otherwise return default_return.

-
-
-

splitgraph.config.environment_config module

+ +
+

splitgraph.config.environment_config module

-
-splitgraph.config.environment_config.get_environment_config_value(key: str, default_return: Optional[str] = None)Optional[str]
+
+splitgraph.config.environment_config.get_environment_config_value(key: str, default_return: Optional[str] = None) Optional[str]

Get the environment variable value of the environment variable matching key. Otherwise return default_return.

-
-
-

splitgraph.config.export module

+ +
+

splitgraph.config.export module

Routines for exporting the config back into text.

-
-splitgraph.config.export.overwrite_config(new_config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_path: str, include_defaults: bool = False)None
+
+splitgraph.config.export.overwrite_config(new_config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_path: str, include_defaults: bool = False) None

Serialize the new config dictionary and overwrite the current config file. Note: this will delete all comments in the config!

@@ -272,8 +257,8 @@ as their defaults.

-
-splitgraph.config.export.serialize_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_format: bool, no_shielding: bool, include_defaults: bool = True)str
+
+splitgraph.config.export.serialize_config(config: Dict[str, Union[str, Dict[str, str], Dict[str, Dict[str, str]]]], config_format: bool, no_shielding: bool, include_defaults: bool = True) str

Pretty-print the configuration or print it in the Splitgraph config file format.

Parameters
@@ -291,8 +276,8 @@ as their defaults.

-
-splitgraph.config.export.serialize_engine_config(engine_name: str, conn_params: Dict[str, str], no_shielding: bool)str
+
+splitgraph.config.export.serialize_engine_config(engine_name: str, conn_params: Dict[str, str], no_shielding: bool) str

Output the config section with connection parameters for a single engine.

Parameters
@@ -305,27 +290,35 @@ as their defaults.

-
-
-

splitgraph.config.keys module

+ +
+

splitgraph.config.keys module

-
-splitgraph.config.keys.SENSITIVE_KEY_SUFFIXES = ['_PWD', '_TOKEN']
+
+splitgraph.config.keys.SENSITIVE_KEY_SUFFIXES = ['_PWD', '_TOKEN']

Warning: Every key in DEFAULTS must have a key in ARGUMENT_KEY_MAP If you add/remove keys from DEFAULTS, make sure to do so here too.

-
-
-

splitgraph.config.system_config module

+ +
+

splitgraph.config.management module

-
-splitgraph.config.system_config.file_exists(_dir: str, filename: str)bool
+
+splitgraph.config.management.patch_and_save_config(config, patch)
+
+
+

splitgraph.config.system_config module

-
-splitgraph.config.system_config.get_config_file(default_return: None = None)Optional[str]
+
+splitgraph.config.system_config.file_exists(_dir: str, filename: str) bool
+
+ +
+
+splitgraph.config.system_config.get_config_file(default_return: None = None) Optional[str]

Get the location of an existing SG_CONFIG_FILE on the system with a valid name. Do not attempt to parse the config file, just return its location.

@@ -333,8 +326,8 @@ its location.

-
-splitgraph.config.system_config.get_explicit_config_file_dirs()List[str]
+
+splitgraph.config.system_config.get_explicit_config_file_dirs() List[str]

Get any explicitly defined config file directories, which are directories where we should search for files from VALID_CONFIG_FILE_NAMES.

@@ -359,8 +352,8 @@ string, either in:

-
-splitgraph.config.system_config.get_explicit_config_file_location()Optional[str]
+
+splitgraph.config.system_config.get_explicit_config_file_location() Optional[str]

Get the explicitly defined location of config file, if defined.

The location will either be defined in:

@@ -377,16 +370,31 @@ higher priority than environment value.

-
-splitgraph.config.system_config.get_system_config_value(key: str, default_return: None = None)Optional[str]
+
+splitgraph.config.system_config.get_system_config_value(key: str, default_return: None = None) Optional[str]
-
-splitgraph.config.system_config.is_file(filename: str)bool
+
+splitgraph.config.system_config.is_file(filename: str) bool
-
- -
-
+ +
+

Module contents

+

The CONFIG object is created and exported once __at import time__ +Calling CONFIG[“KEY”] directly should be sufficient in most cases, +except when a config value has changed since importing CONFIG. +In that case, create_config_dict() can provide an updated config dict

+

Priority (highest to lowest):

+
+
    +
  1. Command line argument values

  2. +
  3. Environment variable values

  4. +
  5. Config file values in [defaults] section

  6. +
  7. DEFAULTS (see keys.py)

  8. +
+
+
+ + \ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.core.indexing.mdx b/content/docs/9500_python-api/splitgraph.core.indexing.mdx index 5552775b..170c28b2 100644 --- a/content/docs/9500_python-api/splitgraph.core.indexing.mdx +++ b/content/docs/9500_python-api/splitgraph.core.indexing.mdx @@ -6,19 +6,17 @@ export const meta = { id: "splitgraph.core.indexing package" }; -
-

Module contents

-
+
-
-

Submodules

-
-
-

splitgraph.core.indexing.bloom module

+
+

Submodules

+
+
+

splitgraph.core.indexing.bloom module

Bloom filtering on fragments for equality queries.

-
-splitgraph.core.indexing.bloom.describe(index_tuple: Tuple[int, str])str
+
+splitgraph.core.indexing.bloom.describe(index_tuple: Tuple[int, str]) str

Returns a pretty-printed summary of the bloom filter

Parameters
@@ -32,8 +30,8 @@ returned by generate_bloom_index

-
-splitgraph.core.indexing.bloom.filter_bloom_index(engine: PsycopgEngine, object_ids: List[str], quals: Any)List[str]
+
+splitgraph.core.indexing.bloom.filter_bloom_index(engine: PsycopgEngine, object_ids: List[str], quals: Any) List[str]

Runs a bloom filter on given qualifiers using the given objects’ previously-generated fingerprints.

@@ -52,8 +50,8 @@ IDs that don’t have a bloom index).

-
-splitgraph.core.indexing.bloom.generate_bloom_index(engine: PsycopgEngine, object_id: str, changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], column: str, probability: Optional[float] = None, size: Optional[int] = None)Tuple[int, str]
+
+splitgraph.core.indexing.bloom.generate_bloom_index(engine: PsycopgEngine, object_id: str, changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], column: str, probability: Optional[float] = None, size: Optional[int] = None) Tuple[int, str]

Generates a bloom filter signature for a given column and a given fragment. Bloom filters can answer queries asking whether an item is definitely not in a given set or possibly can be.

The tradeoff is between the probability of a false positive (item said to be in the set when @@ -79,12 +77,12 @@ be specified, but not both.

-
-
-

splitgraph.core.indexing.range module

+
+
+

splitgraph.core.indexing.range module

-
-splitgraph.core.indexing.range.extract_min_max_pks(engine: PsycopgEngine, fragments: List[str], table_pks: List[str], table_pk_types: List[str])Any
+
+splitgraph.core.indexing.range.extract_min_max_pks(engine: PsycopgEngine, fragments: List[str], table_pks: List[str], table_pk_types: List[str]) Any

Extract minimum/maximum PK values for given fragments.

Parameters
@@ -102,13 +100,13 @@ be specified, but not both.

-
-splitgraph.core.indexing.range.filter_range_index(metadata_engine: PsycopgEngine, object_ids: List[str], quals: Any, column_types: Dict[str, str])List[str]
+
+splitgraph.core.indexing.range.filter_range_index(metadata_engine: PsycopgEngine, object_ids: List[str], quals: Any, column_types: Dict[str, str]) List[str]
-
-splitgraph.core.indexing.range.generate_range_index(object_engine: PsycopgEngine, object_id: str, table_schema: TableSchema, changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], columns: Optional[List[str]] = None)Dict[str, Tuple[T, T]]
+
+splitgraph.core.indexing.range.generate_range_index(object_engine: PsycopgEngine, object_id: str, table_schema: TableSchema, changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]], columns: Optional[List[str]] = None) Dict[str, Tuple[splitgraph.core.indexing.range.T, splitgraph.core.indexing.range.T]]

Calculate the minimum/maximum values of every column in the object (including deleted values).

Parameters
@@ -127,15 +125,17 @@ be specified, but not both.

-
-splitgraph.core.indexing.range.quals_to_sql(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], column_types: Dict[str, str])Tuple[psycopg2.sql.Composable, Tuple]
+
+splitgraph.core.indexing.range.quals_to_sql(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], column_types: Dict[str, str]) Tuple[psycopg2.sql.Composable, Tuple]

Convert a list of qualifiers in CNF to a fragment of a Postgres query :param quals: Qualifiers in CNF :param column_types: Dictionary of column names and their types :return: SQL Composable object and a tuple of arguments to be mogrified into it.

-
- -
-
+ +
+

Module contents

+
+ + \ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.core.mdx b/content/docs/9500_python-api/splitgraph.core.mdx index a512c265..d1cb350d 100644 --- a/content/docs/9500_python-api/splitgraph.core.mdx +++ b/content/docs/9500_python-api/splitgraph.core.mdx @@ -6,25 +6,10 @@ export const meta = { id: "splitgraph.core package" }; -
-

Module contents

-

Core Splitgraph functionality: versioning and sharing tables.

-

The main point of interaction with the Splitgraph API is a splitgraph.core.repository.Repository object -representing a local or a remote Splitgraph repository. Repositories can be created using one of the -following methods:

-
-
    -
  • Directly by invoking Repository(namespace, name, engine) where engine is the engine that the repository -belongs to (that can be gotten with get_engine(engine_name). If the created repository doesn’t actually exist -on the engine, it must first be initialized with repository.init().

  • -
  • By using splitgraph.core.engine.lookup_repository() which will search for the repository on the current -lookup path.

  • -
-
-
+
-
-

Subpackages

+
+

Subpackages

-
-
-

Submodules

-
-
-

splitgraph.core.common module

+
+
+

Submodules

+
+
+

splitgraph.core.common module

Common internal functions used by Splitgraph commands.

-
-class splitgraph.core.common.CallbackList(iterable=(), /)
+
+class splitgraph.core.common.CallbackList(iterable=(), /)

Bases: list

Used to pass around and call multiple callbacks at once.

-
-class splitgraph.core.common.Tracer
+
+class splitgraph.core.common.Tracer

Bases: object

Accumulates events and returns the times between them.

-
-get_durations()List[Tuple[str, float]]
+
+get_durations() List[Tuple[str, float]]

Return all events and durations between them. :return: List of (event name, time to this event from the previous event (or start))

-
-get_total_time()float
+
+get_total_time() float
Returns

Time from start to the final logged event.

@@ -77,8 +62,8 @@ lookup path.

-
-log(event: str)None
+
+log(event: str) None

Log an event at the current time :param event: Event name

@@ -86,8 +71,8 @@ lookup path.

-
-splitgraph.core.common.adapt(value: Any, pg_type: str)Any
+
+splitgraph.core.common.adapt(value: Any, pg_type: str) Any

Coerces a value with a PG type into its Python equivalent.

Parameters
@@ -103,20 +88,20 @@ lookup path.

-
-splitgraph.core.common.aggregate_changes(query_result: List[Tuple[int, int]], initial: Optional[Tuple[int, int, int]] = None)Tuple[int, int, int]
+
+splitgraph.core.common.aggregate_changes(query_result: List[Tuple[int, int]], initial: Optional[Tuple[int, int, int]] = None) Tuple[int, int, int]

Add a changeset to the aggregated diff result

-
-splitgraph.core.common.coerce_val_to_json(val: Any)Any
+
+splitgraph.core.common.coerce_val_to_json(val: Any) Any

Turn a Python value to a string/float that can be stored as JSON.

-
-splitgraph.core.common.ensure_metadata_schema(engine: PsycopgEngine)None
+
+splitgraph.core.common.ensure_metadata_schema(engine: PsycopgEngine) None

Create or migrate the metadata schema splitgraph_meta that stores the hash tree of schema snapshots (images), tags and tables. This means we can’t mount anything under the schema splitgraph_meta – much like we can’t have a folder @@ -124,8 +109,8 @@ This means we can’t mount anything under the schema splitgraph_meta – much l

-
-splitgraph.core.common.gather_sync_metadata(target: Repository, source: Repository, overwrite_objects=False, overwrite_tags=False, single_image: Optional[str] = None)Any
+
+splitgraph.core.common.gather_sync_metadata(target: Repository, source: Repository, overwrite_objects=False, overwrite_tags=False, single_image: Optional[str] = None) Any

Inspects two Splitgraph repositories and gathers metadata that is required to bring target up to date with source.

@@ -148,31 +133,26 @@ If False, will only return tags in the source that don’t exist on the target.<
-
-splitgraph.core.common.get_data_safe(package: str, resource: str)bytes
-
- -
-
-splitgraph.core.common.get_temporary_table_id()str
+
+splitgraph.core.common.get_temporary_table_id() str

Generate a random ID for temporary/staging objects that haven’t had their ID calculated yet.

-
-splitgraph.core.common.getrandbits(k)x.  Generates an int with k random bits.
+
+splitgraph.core.common.getrandbits(k) x.  Generates an int with k random bits.
-
-splitgraph.core.common.manage_audit(func: Callable)Callable
+
+splitgraph.core.common.manage_audit(func: Callable) Callable

A decorator to be put around various Splitgraph commands that adds/removes audit triggers for new/committed/deleted tables.

-
-splitgraph.core.common.manage_audit_triggers(engine: PostgresEngine, object_engine: Optional[PostgresEngine] = None)None
+
+splitgraph.core.common.manage_audit_triggers(engine: PostgresEngine, object_engine: Optional[PostgresEngine] = None) None

Does bookkeeping on audit triggers / audit table:

    @@ -194,40 +174,40 @@ that adds/removes audit triggers for new/committed/deleted tables.

-
-splitgraph.core.common.resource_path(relative_path)
-
- -
-
-splitgraph.core.common.set_head(repository: Repository, image: Optional[str])None
+
+splitgraph.core.common.set_head(repository: Repository, image: Optional[str]) None

Sets the HEAD pointer of a given repository to a given image. Shouldn’t be used directly.

-
-splitgraph.core.common.set_tag(repository: Repository, image_hash: Optional[str], tag: str)None
+
+splitgraph.core.common.set_tag(repository: Repository, image_hash: Optional[str], tag: str) None

Internal function – add a tag to an image.

-
-splitgraph.core.common.set_tags_batch(repository: Repository, hashes_tags: List[Tuple[str, str]])None
+
+splitgraph.core.common.set_tags_batch(repository: Repository, hashes_tags: List[Tuple[str, str]]) None
-
-splitgraph.core.common.slow_diff(repository: Repository, table_name: str, image_1: Optional[str], image_2: Optional[str], aggregate: bool)Union[Tuple[int, int, int], List[Tuple[bool, Tuple]]]
+
+splitgraph.core.common.slow_diff(repository: Repository, table_name: str, image_1: Optional[str], image_2: Optional[str], aggregate: bool) Union[Tuple[int, int, int], List[Tuple[bool, Tuple]]]

Materialize both tables and manually diff them

-
-
-

splitgraph.core.engine module

+
+
+splitgraph.core.common.unmount_schema(engine: PsycopgEngine, schema: str) None
+
+ + +
+

splitgraph.core.engine module

Routines for managing Splitgraph engines, including looking up repositories and managing objects.

-
-splitgraph.core.engine.get_current_repositories(engine: PostgresEngine)List[Tuple[Repository, Optional[Image]]]
+
+splitgraph.core.engine.get_current_repositories(engine: PostgresEngine) List[Tuple[Repository, Optional[Image]]]

Lists all repositories currently in the engine.

Parameters
@@ -240,8 +220,8 @@ that adds/removes audit triggers for new/committed/deleted tables.

-
-splitgraph.core.engine.init_engine(skip_object_handling: bool = False)None
+
+splitgraph.core.engine.init_engine(skip_object_handling: bool = False) None

Initializes the engine by:

    @@ -258,8 +238,8 @@ object handling and checkouts (like audit triggers and CStore management).

-
-splitgraph.core.engine.lookup_repository(name: str, include_local: bool = False)Repository
+
+splitgraph.core.engine.lookup_repository(name: str, include_local: bool = False) Repository

Queries the SG engines on the lookup path to locate one hosting the given repository.

Parameters
@@ -275,8 +255,8 @@ object handling and checkouts (like audit triggers and CStore management).

-
-splitgraph.core.engine.repository_exists(repository: Repository)bool
+
+splitgraph.core.engine.repository_exists(repository: Repository) bool

Checks if a repository exists on the engine.

Parameters
@@ -285,16 +265,16 @@ object handling and checkouts (like audit triggers and CStore management).

-
-
-

splitgraph.core.fdw_checkout module

-
-
-

splitgraph.core.fragment_manager module

+ +
+

splitgraph.core.fdw_checkout module

+
+
+

splitgraph.core.fragment_manager module

Routines related to storing tables as fragments.

-
-class splitgraph.core.fragment_manager.Digest(shorts: Tuple[int, ])
+
+class splitgraph.core.fragment_manager.Digest(shorts: Tuple[int, ...])

Bases: object

Homomorphic hashing similar to LtHash (but limited to being backed by 256-bit hashes). The main property is that for any rows A, B, LtHash(A) + LtHash(B) = LtHash(A+B). This is done by construction: we simply hash individual @@ -304,34 +284,34 @@ of hashes of its deleted rows (including the old values of the rows that have be useful implication: the hash of a full Splitgraph table is equal to the sum of hashes of its individual fragments.

This property can be used to simplify deduplication.

-
-classmethod empty()splitgraph.core.fragment_manager.Digest
+
+classmethod empty() splitgraph.core.fragment_manager.Digest

Return an empty Digest instance such that for any Digest D, D + empty == D - empty == D

-
-classmethod from_hex(hex_string: str)splitgraph.core.fragment_manager.Digest
+
+classmethod from_hex(hex_string: str) splitgraph.core.fragment_manager.Digest

Create a Digest from a 64-characters (256-bit) hexadecimal string

-
-classmethod from_memoryview(memory: Union[bytes, memoryview])splitgraph.core.fragment_manager.Digest
+
+classmethod from_memoryview(memory: Union[bytes, memoryview]) splitgraph.core.fragment_manager.Digest

Create a Digest from a 256-bit memoryview/bytearray.

-
-hex()str
+
+hex() str

Convert the hash into a hexadecimal value.

-
-class splitgraph.core.fragment_manager.FragmentManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
+
+class splitgraph.core.fragment_manager.FragmentManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)

Bases: splitgraph.core.metadata_manager.MetadataManager

A storage engine for Splitgraph tables. Each table can be stored as one or more immutable fragments that can optionally overwrite each other. When a new table is created, it’s split up into multiple base fragments. When @@ -342,8 +322,8 @@ base fragments have to be followed.

In addition, the fragments engine also supports min-max indexing on fragments: this is used to only fetch fragments that are required for a given query.

-
-calculate_content_hash(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None, chunk_id_col: Optional[str] = None, chunk_id: Optional[int] = None)Tuple[str, int]
+
+calculate_content_hash(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None, chunk_condition_sql: Optional[psycopg2.sql.Composable] = None, chunk_condition_args: Optional[List[Any]] = None) Tuple[str, int]

Calculates the homomorphic hash of table contents.

Parameters
@@ -351,8 +331,8 @@ that are required for a given query.

  • schema – Schema the table belongs to

  • table – Name of the table

  • table_schema – Schema of the table

  • -
  • chunk_id_col – Column the table is partitioned on

  • -
  • chunk_id – Column value to get rows from

  • +
  • chunk_condition_sql – Column the table is partitioned on

  • +
  • chunk_condition_args – Column value to get rows from

  • Returns
    @@ -363,8 +343,8 @@ and the number of rows in the hash.

    -
    -calculate_fragment_insertion_hash_stats(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None)Tuple[splitgraph.core.fragment_manager.Digest, int]
    +
    +calculate_fragment_insertion_hash_stats(schema: str, table: str, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None) Tuple[splitgraph.core.fragment_manager.Digest, int]

    Calculate the homomorphic hash of just the rows that a given fragment inserts :param schema: Schema the fragment is stored in. :param table: Name of the table the fragment is stored in. @@ -372,13 +352,13 @@ and the number of rows in the hash.

    -
    -create_base_fragment(source_schema: str, source_table: str, namespace: str, chunk_id_col: Optional[str] = None, chunk_id: Optional[int] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None)str
    +
    +create_base_fragment(source_schema: str, source_table: str, namespace: str, chunk_condition_sql: Optional[psycopg2.sql.Composable] = None, chunk_condition_args: Optional[List[Any]] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None) str
    -
    -delete_objects(objects: Union[Set[str], List[str]])None
    +
    +delete_objects(objects: Union[Set[str], List[str]]) None

    Deletes objects from the Splitgraph cache

    Parameters
    @@ -388,8 +368,8 @@ and the number of rows in the hash.

    -
    -filter_fragments(object_ids: List[str], table: Table, quals: Any)List[str]
    +
    +filter_fragments(object_ids: List[str], table: Table, quals: Any) List[str]

    Performs fuzzy filtering on the given object IDs using the index and a set of qualifiers, discarding objects that definitely do not match the qualifiers.

    @@ -414,8 +394,8 @@ Objects that definitely don’t match these qualifiers will be discarded.

    -
    -generate_object_index(object_id: str, table_schema: List[splitgraph.core.types.TableColumn], changeset: Optional[Dict[Tuple[str, ], Tuple[bool, Dict[str, Any], Dict[str, Any]]]] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None)Dict[str, Any]
    +
    +generate_object_index(object_id: str, table_schema: List[splitgraph.core.types.TableColumn], changeset: Optional[Dict[Tuple[str, ...], Tuple[bool, Dict[str, Any], Dict[str, Any]]]] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None) Dict[str, Any]

    Queries the max/min values of a given fragment for each column, used to speed up querying.

    Parameters
    @@ -433,8 +413,22 @@ Objects that definitely don’t match these qualifiers will be discarded.

    -
    -get_min_max_pks(fragments: List[str], table_pks: List[Tuple[str, str]])List[Tuple[Tuple, Tuple]]
    +
    +generate_surrogate_pk(table: Table, object_pks: List[Tuple[Any, Any]]) List[Tuple[Any, Any]]
    +

    When partitioning data, if the table doesn’t have a primary key, we use a “surrogate” +primary key by concatenating the whole row as a string on the PG side (this is because +the whole row can sometimes contain NULLs which we can’t compare in PG).

    +

    We need to mimic this when calculating if the objects we’re about to scan through +overlap: e.g. using string comparison, “(some_country, 100)” < “(some_country, 20)”, +whereas using typed comparison, (some_country, 100) > (some_country, 20).

    +

    To do this, we use a similar hack from when calculating changeset hashes: to avoid having +to reproduce how PG’s ::text works, we give it back the rows and get it to cast them +to text for us.

    +
    + +
    +
    +get_min_max_pks(fragments: List[str], table_pks: List[Tuple[str, str]]) List[Tuple[Tuple, Tuple]]

    Get PK ranges for given fragments using the index (without reading the fragments).

    Parameters
    @@ -452,8 +446,8 @@ a SplitGraphError is raised.

    -
    -record_table_as_base(repository: Repository, table_name: str, image_hash: str, chunk_size: Optional[int] = 10000, source_schema: Optional[str] = None, source_table: Optional[str] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False)List[str]
    +
    +record_table_as_base(repository: Repository, table_name: str, image_hash: str, chunk_size: Optional[int] = 10000, source_schema: Optional[str] = None, source_table: Optional[str] = None, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False, table_schema: Optional[List[splitgraph.core.types.TableColumn]] = None) List[str]

    Copies the full table verbatim into one or more new base fragments and registers them.

    Parameters
    @@ -467,14 +461,17 @@ a SplitGraphError is raised.

  • extra_indexes – Dictionary of &lbrace;index_type: column: index_specific_kwargs&rbrace;.

  • in_fragment_order – Key to sort data inside each chunk by.

  • overwrite – Overwrite physical objects that already exist.

  • +
  • table_schema – Override the columns that will be picked from the original table +(e.g. to change their order or primary keys). Note that the schema must be a subset +of the original schema and this method doesn’t verify PK constraints.

  • -
    -record_table_as_patch(old_table: Table, schema: str, image_hash: str, new_schema_spec: List[splitgraph.core.types.TableColumn] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False)None
    +
    +record_table_as_patch(old_table: Table, schema: str, image_hash: str, new_schema_spec: List[splitgraph.core.types.TableColumn] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]] = None, in_fragment_order: Optional[List[str]] = None, overwrite: bool = False) None

    Flushes the pending changes from the audit table for a given table and records them, registering the new objects.

    @@ -491,11 +488,16 @@ registering the new objects.

    +
    +
    +split_changeset_boundaries(changeset, change_key, objects)
    +
    +
    -
    -splitgraph.core.fragment_manager.get_chunk_groups(chunks: List[Tuple[str, Any, Any]])List[List[Tuple[str, Any, Any]]]
    +
    +splitgraph.core.fragment_manager.get_chunk_groups(chunks: List[Tuple[str, Any, Any]]) List[List[Tuple[str, Any, Any]]]

    Takes a list of chunks and their boundaries and combines them into independent groups such that chunks from no two groups overlap with each other (intervals are assumed to be closed, @@ -518,19 +520,19 @@ original list).

    -
    -
    -

    splitgraph.core.image module

    + +
    +

    splitgraph.core.image module

    Image representation and provenance

    -
    -class splitgraph.core.image.Image(image_hash: str, parent_id: Optional[str], created: datetime.datetime, comment: str, provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], repository: Repository)
    +
    +class splitgraph.core.image.Image(image_hash: str, parent_id: Optional[str], created: datetime.datetime, comment: str, provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], repository: Repository)

    Bases: tuple

    Represents a Splitgraph image. Should’t be created directly, use Image-loading methods in the splitgraph.core.repository.Repository class instead.

    -
    -checkout(force: bool = False, layered: bool = False)None
    +
    +checkout(force: bool = False, layered: bool = False) None

    Checks the image out, changing the current HEAD pointer. Raises an error if there are pending changes to its checkout.

    @@ -544,21 +546,21 @@ inside of it).

    -
    -
    -property comment
    +
    +
    +comment: str

    Alias for field number 3

    -
    -
    -property created
    +
    +
    +created: datetime.datetime

    Alias for field number 2

    -
    -delete_tag(tag: str)None
    +
    +delete_tag(tag: str) None

    Deletes a tag from an image.

    Parameters
    @@ -567,26 +569,26 @@ inside of it).

    -
    -
    -property engine
    +
    +
    +property engine
    -
    -get_log()List[splitgraph.core.image.Image]
    +
    +get_log() List[splitgraph.core.image.Image]

    Repeatedly gets the parent of a given image until it reaches the bottom.

    -
    -get_parent_children()Tuple[Optional[str], List[str]]
    +
    +get_parent_children() Tuple[Optional[str], List[str]]

    Gets the parent and a list of children of a given image.

    -
    -get_size()int
    +
    +get_size() int

    Get the physical size used by the image’s objects (including those that might be shared with other images).

    This is calculated from the metadata, the on-disk footprint might be smaller if not all of image’s @@ -599,8 +601,8 @@ objects have been downloaded.

    -
    -get_table(table_name: str)splitgraph.core.table.Table
    +
    +get_table(table_name: str) splitgraph.core.table.Table

    Returns a Table object representing a version of a given table. Contains a list of objects that the table is linked to and the table’s schema.

    @@ -614,37 +616,44 @@ Contains a list of objects that the table is linked to and the table’s schema.
    -
    -get_tables()List[str]
    +
    +get_tables() List[str]

    Gets the names of all tables inside of an image.

    -
    -get_tags()
    +
    +get_tags()

    Lists all tags that this image has.

    -
    -
    -property image_hash
    +
    +
    +image_hash: str

    Alias for field number 0

    -
    -property object_engine
    +
    +lq_checkout(target_schema: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', only_tables: Optional[List[str]] = None) None
    +

    Intended to be run on the sgr side. Initializes the FDW for all tables in a given image, +allowing to query them directly without materializing the tables.

    +
    + +
    +
    +property object_engine
    -
    -
    -property parent_id
    +
    +
    +parent_id: Optional[str]

    Alias for field number 1

    -
    -provenance(reverse=False, engine=None)List[Tuple[Repository, str]]
    +
    +provenance(reverse=False, engine=None) List[Tuple[Repository, str]]

    Inspects the image’s parent chain to come up with a set of repositories and their hashes that it was created from.

    If reverse is True, returns a list of images that were created _from_ this image. If @@ -657,15 +666,15 @@ used for the lookup of dependents.

    -
    -
    -property provenance_data
    +
    +
    +provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]

    Alias for field number 4

    -
    -query_schema(wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', commit: bool = True)Iterator[str]
    +
    +query_schema(wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', commit: bool = True) Iterator[str]

    Creates a temporary schema with tables in this image mounted as foreign tables that can be accessed via read-only layered querying. On exit from the context manager, the schema is discarded.

    @@ -675,15 +684,15 @@ read-only layered querying. On exit from the context manager, the schema is disc
    -
    -
    -property repository
    +
    +
    +repository: Repository

    Alias for field number 5

    -
    -set_provenance(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]])None
    +
    +set_provenance(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]) None

    Sets the image’s provenance. Internal function called by the Splitfile interpreter, shouldn’t be called directly as it changes the image after it’s been created.

    @@ -694,8 +703,8 @@ be called directly as it changes the image after it’s been created.

    -
    -tag(tag: str)None
    +
    +tag(tag: str) None

    Tags a given image. All tags are unique inside of a repository. If a tag already exists, it’s removed from the previous image and given to the new image.

    @@ -706,8 +715,8 @@ from the previous image and given to the new image.

    -
    -to_splitfile(ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None)List[str]
    +
    +to_splitfile(ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None) List[str]

    Recreate the Splitfile that can be used to reconstruct this image.

    Parameters
    @@ -727,27 +736,27 @@ dependencies of this Splitfile (table imports and FROM commands).

    -
    -splitgraph.core.image.getrandbits(k)x.  Generates an int with k random bits.
    +
    +splitgraph.core.image.getrandbits(k) x.  Generates an int with k random bits.
    -
    -splitgraph.core.image.reconstruct_splitfile(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None)List[str]
    +
    +splitgraph.core.image.reconstruct_splitfile(provenance_data: List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]], ignore_irreproducible: bool = False, source_replacement: Optional[Dict[Repository, str]] = None) List[str]

    Recreate the Splitfile that can be used to reconstruct an image.

    -
    -
    -

    splitgraph.core.image_manager module

    + +
    +

    splitgraph.core.image_manager module

    -
    -class splitgraph.core.image_manager.ImageManager(repository: Repository)
    +
    +class splitgraph.core.image_manager.ImageManager(repository: Repository)

    Bases: object

    Collects various image-related functions.

    -
    -add(parent_id: Optional[str], image: str, created: Optional[datetime.datetime] = None, comment: Optional[str] = None, provenance_data: Optional[List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]] = None)None
    +
    +add(parent_id: Optional[str], image: str, created: Optional[datetime.datetime] = None, comment: Optional[str] = None, provenance_data: Optional[List[Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]]] = None) None

    Registers a new image in the Splitgraph image tree.

    Internal method used by actual image creation routines (committing, importing or pulling).

    @@ -764,8 +773,8 @@ dependencies of this Splitfile (table imports and FROM commands).

    -
    -add_batch(images: List[splitgraph.core.image.Image])None
    +
    +add_batch(images: List[splitgraph.core.image.Image]) None

    Like add, but registers multiple images at the same time. Used in push/pull to avoid a roundtrip to the registry for each image :param images: List of Image objects. Namespace and repository will be patched

    @@ -775,8 +784,8 @@ to avoid a roundtrip to the registry for each image
    -
    -by_hash(image_hash: str)splitgraph.core.image.Image
    +
    +by_hash(image_hash: str) splitgraph.core.image.Image

    Returns an image corresponding to a given (possibly shortened) image hash. If the image hash is ambiguous, raises an error. If the image does not exist, raises an error or returns None.

    @@ -790,8 +799,8 @@ is ambiguous, raises an error. If the image does not exist, raises an error or r
    -
    -by_tag(tag: str, raise_on_none: bool = True)Optional[splitgraph.core.image.Image]
    +
    +by_tag(tag: str, raise_on_none: bool = True) Optional[splitgraph.core.image.Image]

    Returns an image with a given tag

    Parameters
    @@ -804,8 +813,8 @@ is ambiguous, raises an error. If the image does not exist, raises an error or r
    -
    -delete(images: Sequence[str])None
    +
    +delete(images: Iterable[str]) None

    Deletes a set of Splitgraph images from the repository. Note this doesn’t check whether this will orphan some other images in the repository and can make the state of the repository invalid.

    @@ -818,32 +827,96 @@ invalid.

    -
    -get_all_child_images(start_image: str)Set[str]
    +
    +get_all_child_images(start_image: str) Set[str]

    Get all children of start_image of any degree.

    -
    -get_all_parent_images(start_images: Set[str])Set[str]
    +
    +get_all_parent_images(start_images: Set[str]) Set[str]

    Get all parents of the ‘start_images’ set of any degree.

    -
    -
    -

    splitgraph.core.metadata_manager module

    + +
    +

    splitgraph.core.image_mounting module

    +
    +
    +class splitgraph.core.image_mounting.DefaultImageMounter(engine: PostgresEngine)
    +

    Bases: splitgraph.core.image_mounting.ImageMounter

    +
    +
    +mount(images: List[Tuple[str, str, str]]) Dict[Tuple[str, str, str], str]
    +

    Mount images into arbitrary schemas and return the image -> schema map

    +
    + +
    +
    +unmount() None
    +

    Unmount the previously mounted images

    +
    + +
    + +
    +
    +class splitgraph.core.image_mounting.ImageMapper(object_engine: PostgresEngine)
    +

    Bases: object

    +

    Image “mapper” used in Splitfile execution that returns the canonical form of an image +and where it’s mounted.

    +
    +
    +get_provenance_data() Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]
    +
    + +
    +
    +setup_lq_mounts() None
    +
    + +
    +
    +teardown_lq_mounts() None
    +
    + +
    + +
    +
    +class splitgraph.core.image_mounting.ImageMounter
    +

    Bases: abc.ABC

    +

    Image “mounter” that’s used for non-Splitfile transformation jobs (data source plugins that +implement TransformingDataSource)

    +
    +
    +abstract mount(images: List[Tuple[str, str, str]]) Dict[Tuple[str, str, str], str]
    +

    Mount images into arbitrary schemas and return the image -> schema map

    +
    + +
    +
    +abstract unmount() None
    +

    Unmount the previously mounted images

    +
    + +
    + +
    +
    +

    splitgraph.core.metadata_manager module

    Classes related to managing table/image/object metadata tables.

    -
    -class splitgraph.core.metadata_manager.MetadataManager(metadata_engine: PsycopgEngine)
    +
    +class splitgraph.core.metadata_manager.MetadataManager(metadata_engine: PsycopgEngine)

    Bases: object

    A data access layer for the metadata tables in the splitgraph_meta schema that concerns itself with image, table and object information.

    -
    -cleanup_metadata()List[str]
    +
    +cleanup_metadata() List[str]

    Go through the current metadata and delete all objects that aren’t required by any table on the engine.

    @@ -854,8 +927,8 @@ by any table on the engine.

    -
    -delete_object_meta(object_ids: Sequence[str])
    +
    +delete_object_meta(object_ids: Sequence[str])

    Delete metadata for multiple objects (external locations, indexes, hashes). This doesn’t delete physical objects.

    @@ -866,8 +939,8 @@ This doesn’t delete physical objects.

    -
    -get_all_objects()List[str]
    +
    +get_all_objects() List[str]

    Gets all objects currently in the Splitgraph tree.

    Returns
    @@ -877,8 +950,8 @@ This doesn’t delete physical objects.

    -
    -get_external_object_locations(objects: List[str])List[Tuple[str, str, str]]
    +
    +get_external_object_locations(objects: List[str]) List[Tuple[str, str, str]]

    Gets external locations for objects.

    Parameters
    @@ -891,8 +964,8 @@ This doesn’t delete physical objects.

    -
    -get_new_objects(object_ids: List[str])List[str]
    +
    +get_new_objects(object_ids: List[str]) List[str]

    Get object IDs from the passed list that don’t exist in the tree.

    Parameters
    @@ -905,8 +978,8 @@ This doesn’t delete physical objects.

    -
    -get_object_meta(objects: List[str])Dict[str, splitgraph.core.metadata_manager.Object]
    +
    +get_object_meta(objects: List[str]) Dict[str, splitgraph.core.metadata_manager.Object]

    Get metadata for multiple Splitgraph objects from the tree

    Parameters
    @@ -919,13 +992,13 @@ This doesn’t delete physical objects.

    -
    -get_objects_for_repository(repository: Repository, image_hash: Optional[str] = None)List[str]
    +
    +get_objects_for_repository(repository: Repository, image_hash: Optional[str] = None) List[str]
    -
    -get_unused_objects(threshold: Optional[int] = None)List[Tuple[str, datetime.datetime]]
    +
    +get_unused_objects(threshold: Optional[int] = None) List[Tuple[str, datetime.datetime]]

    Get a list of all objects in the metadata that aren’t used by any table and can be safely deleted.

    @@ -939,13 +1012,13 @@ safely deleted.

    -
    -overwrite_table(repository: Repository, image_hash: str, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
    +
    +overwrite_table(repository: Repository, image_hash: str, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
    -
    -register_object_locations(object_locations: List[Tuple[str, str, str]])None
    +
    +register_object_locations(object_locations: List[Tuple[str, str, str]]) None

    Registers external locations (e.g. HTTP or S3) for Splitgraph objects. Objects must already be registered in the object tree.

    @@ -956,8 +1029,8 @@ Objects must already be registered in the object tree.

    -
    -register_objects(objects: List[splitgraph.core.metadata_manager.Object], namespace: Optional[str] = None)None
    +
    +register_objects(objects: List[splitgraph.core.metadata_manager.Object], namespace: Optional[str] = None) None

    Registers multiple Splitgraph objects in the tree.

    Parameters
    @@ -971,8 +1044,8 @@ in the case where the remote repository has a different namespace than the local
    -
    -register_tables(repository: Repository, table_meta: List[Tuple[str, str, List[splitgraph.core.types.TableColumn], List[str]]])None
    +
    +register_tables(repository: Repository, table_meta: List[Tuple[str, str, List[splitgraph.core.types.TableColumn], List[str]]]) None

    Links tables in an image to physical objects that they are stored as. Objects must already be registered in the object tree.

    @@ -988,117 +1061,122 @@ Objects must already be registered in the object tree.

    -
    -class splitgraph.core.metadata_manager.Object(object_id: str, format: str, namespace: str, size: int, created: datetime.datetime, insertion_hash: str, deletion_hash: str, object_index: Dict[str, Any], rows_inserted: int, rows_deleted: int)
    +
    +class splitgraph.core.metadata_manager.Object(object_id: str, format: str, namespace: str, size: int, created: datetime.datetime, insertion_hash: str, deletion_hash: str, object_index: Dict[str, Any], rows_inserted: int, rows_deleted: int)

    Bases: tuple

    Represents a Splitgraph object that tables are composed of.

    -
    -
    -property created
    +
    +
    +created: datetime.datetime

    Alias for field number 4

    -
    -
    -property deletion_hash
    +
    +
    +deletion_hash: str

    Alias for field number 6

    -
    -
    -property format
    +
    +
    +format: str

    Alias for field number 1

    -
    -
    -property insertion_hash
    +
    +
    +insertion_hash: str

    Alias for field number 5

    -
    -
    -property namespace
    +
    +
    +namespace: str

    Alias for field number 2

    -
    -
    -property object_id
    +
    +
    +object_id: str

    Alias for field number 0

    -
    -
    -property object_index
    +
    +
    +object_index: Dict[str, Any]

    Alias for field number 7

    -
    -
    -property rows_deleted
    +
    +
    +rows_deleted: int

    Alias for field number 9

    -
    -
    -property rows_inserted
    +
    +
    +rows_inserted: int

    Alias for field number 8

    -
    -
    -property size
    +
    +
    +size: int

    Alias for field number 3

    -
    -
    -

    splitgraph.core.migration module

    + +
    +

    splitgraph.core.migration module

    +
    +
    +splitgraph.core.migration.get_installed_version(engine: PsycopgEngine, schema_name: str, version_table: str = 'version') Optional[Tuple[str, datetime.datetime]]
    +
    +
    -
    -splitgraph.core.migration.get_installed_version(engine: PsycopgEngine, schema_name: str, version_table: str = 'version')Optional[Tuple[str, datetime.datetime]]
    +
    +splitgraph.core.migration.get_version_tuples(filenames: List[str]) List[Tuple[Optional[str], str]]
    -
    -splitgraph.core.migration.make_file_list(schema_name: str, migration_path: List[Optional[str]])
    +
    +splitgraph.core.migration.make_file_list(schema_name: str, migration_path: List[Optional[str]])

    Construct a list of file names from history of versions and schema name

    -
    -splitgraph.core.migration.set_installed_version(engine: PsycopgEngine, schema_name: str, version: str, version_table: str = 'version')
    +
    +splitgraph.core.migration.set_installed_version(engine: PsycopgEngine, schema_name: str, version: str, version_table: str = 'version')
    -
    -splitgraph.core.migration.source_files_to_apply(engine: PsycopgEngine, schema_name: str, schema_files: List[str], version_table: str = 'version', static: bool = False, target_version: Optional[str] = None)Tuple[List[str], str]
    +
    +splitgraph.core.migration.source_files_to_apply(engine: PsycopgEngine, schema_name: str, schema_files: List[str], version_table: str = 'version', static: bool = False, target_version: Optional[str] = None) Tuple[List[str], str]

    Get the ordered list of .sql files to apply to the database

    -
    -
    -

    splitgraph.core.object_manager module

    + +
    +

    splitgraph.core.object_manager module

    Functions related to creating, deleting and keeping track of physical Splitgraph objects.

    -
    -class splitgraph.core.object_manager.ObjectManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)
    +
    +class splitgraph.core.object_manager.ObjectManager(object_engine: PostgresEngine, metadata_engine: Optional[PostgresEngine] = None)

    Bases: splitgraph.core.fragment_manager.FragmentManager

    Brings the multiple manager classes together and manages the object cache (downloading and uploading objects as required in order to fulfill certain queries)

    -
    -cleanup()List[str]
    +
    +cleanup() List[str]

    Deletes all objects in the object_tree not required by any current repository, including their dependencies and their remote locations. Also deletes all objects not registered in the object_tree.

    -
    -download_objects(source: Optional[splitgraph.core.object_manager.ObjectManager], objects_to_fetch: List[str], object_locations: List[Tuple[str, str, str]])List[str]
    +
    +download_objects(source: Optional[splitgraph.core.object_manager.ObjectManager], objects_to_fetch: List[str], object_locations: List[Tuple[str, str, str]]) List[str]

    Fetches the required objects from the remote and stores them locally. Does nothing for objects that already exist.

    @@ -1113,8 +1191,8 @@ Does nothing for objects that already exist.

    -
    -ensure_objects(table: Optional[Table], objects: Optional[List[str]] = None, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]] = None, defer_release: bool = False, tracer: Optional[splitgraph.core.common.Tracer] = None, upstream_manager: Optional[ObjectManager] = None)Iterator[Union[List[str], Tuple[List[str], splitgraph.core.common.CallbackList]]]
    +
    +ensure_objects(table: Optional[Table], objects: Optional[List[str]] = None, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]] = None, defer_release: bool = False, tracer: Optional[splitgraph.core.common.Tracer] = None, upstream_manager: Optional[ObjectManager] = None) Iterator[Union[List[str], Tuple[List[str], splitgraph.core.common.CallbackList]]]

    Resolves the objects needed to materialize a given table and makes sure they are in the local splitgraph_meta schema.

    Whilst inside this manager, the objects are guaranteed to exist. On exit from it, the objects are marked as @@ -1137,8 +1215,8 @@ when the objects are no longer needed. If defer_release is False: just the list

    -
    -get_cache_occupancy()int
    +
    +get_cache_occupancy() int
    Returns

    Space occupied by objects cached from external locations, in bytes.

    @@ -1147,8 +1225,8 @@ when the objects are no longer needed. If defer_release is False: just the list
    -
    -get_downloaded_objects(limit_to: Optional[List[str]] = None)List[str]
    +
    +get_downloaded_objects(limit_to: Optional[List[str]] = None) List[str]

    Gets a list of objects currently in the Splitgraph cache (i.e. not only existing externally.)

    Parameters
    @@ -1161,8 +1239,8 @@ when the objects are no longer needed. If defer_release is False: just the list
    -
    -get_total_object_size()
    +
    +get_total_object_size()
    Returns

    Space occupied by all objects on the engine, in bytes.

    @@ -1171,8 +1249,8 @@ when the objects are no longer needed. If defer_release is False: just the list
    -
    -make_objects_external(objects: List[str], handler: str, handler_params: Dict[Any, Any])None
    +
    +make_objects_external(objects: List[str], handler: str, handler_params: Dict[Any, Any]) None

    Uploads local objects to an external location and marks them as being cached locally (thus making it possible to evict or swap them out).

    @@ -1187,8 +1265,8 @@ to evict or swap them out).

    -
    -run_eviction(keep_objects: List[str], required_space: Optional[int] = None)None
    +
    +run_eviction(keep_objects: List[str], required_space: Optional[int] = None) None

    Delete enough objects with zero reference count (only those, since we guarantee that whilst refcount is >0, the object stays alive) to free at least required_space in the cache.

    @@ -1203,8 +1281,8 @@ it shall raise an exception. If None, removes all eligible objects.

    -
    -upload_objects(target: splitgraph.core.object_manager.ObjectManager, objects_to_push: List[str], handler: str = 'DB', handler_params: Optional[Dict[Any, Any]] = None)Sequence[Tuple[str, Optional[str]]]
    +
    +upload_objects(target: splitgraph.core.object_manager.ObjectManager, objects_to_push: List[str], handler: str = 'DB', handler_params: Optional[Dict[Any, Any]] = None) Sequence[Tuple[str, Optional[str]]]

    Uploads physical objects to the remote or some other external location.

    Parameters
    @@ -1226,71 +1304,156 @@ already exist on the remote).

    -
    -
    -

    splitgraph.core.output module

    + +
    +

    splitgraph.core.output module

    +
    +
    +class splitgraph.core.output.Color
    +

    Bases: object

    +

    An enumeration of console colors

    +
    +
    +BLUE = '\x1b[94m'
    +
    + +
    +
    +BOLD = '\x1b[1m'
    +
    + +
    +
    +CYAN = '\x1b[96m'
    +
    + +
    +
    +DARKCYAN = '\x1b[36m'
    +
    + +
    +
    +END = '\x1b[0m'
    +
    + +
    +
    +GREEN = '\x1b[92m'
    +
    + +
    +
    +PURPLE = '\x1b[95m'
    +
    + +
    +
    +RED = '\x1b[91m'
    +
    + +
    +
    +UNDERLINE = '\x1b[4m'
    +
    + +
    +
    +YELLOW = '\x1b[93m'
    +
    + +
    + +
    +
    +class splitgraph.core.output.ResettableStream(stream)
    +

    Bases: io.RawIOBase

    +

    Stream that supports reading from the underlying stream and resetting the position once.

    +

    We can’t use fseek() in this case, since we might be reading from a pipe. So, we operate +this stream in two modes. In the first mode, we mirror all reads into a separate buffer +(consuming the input stream). After the user calls reset(), we first output data from the +mirrored copy, then continue consuming the input stream (simulating seek(0).

    +
    +
    +readable()
    +

    Return whether object was opened for reading.

    +

    If False, read() will raise OSError.

    +
    + +
    +
    +readinto(b)
    +
    + +
    +
    +reset()
    +
    + +
    +
    -
    -splitgraph.core.output.conn_string_to_dict(connection: Optional[str])Dict[str, Any]
    +
    +splitgraph.core.output.conn_string_to_dict(connection: Optional[str]) Dict[str, Any]
    -
    -splitgraph.core.output.parse_date(string: str)datetime.date
    +
    +splitgraph.core.output.parse_date(string: str) datetime.date
    -
    -splitgraph.core.output.parse_dt(string: str)datetime.datetime
    +
    +splitgraph.core.output.parse_dt(string: str) datetime.datetime
    -
    -splitgraph.core.output.parse_repo_tag_or_hash(value, default='latest')
    +
    +splitgraph.core.output.parse_repo_tag_or_hash(value, default='latest')
    -
    -splitgraph.core.output.parse_time(string: str)time.struct_time
    +
    +splitgraph.core.output.parse_time(string: str) time.struct_time
    -
    -splitgraph.core.output.pluralise(word: str, number: int)str
    +
    +splitgraph.core.output.pluralise(word: str, number: int) str

    1 banana, 2 bananas

    -
    -splitgraph.core.output.pretty_size(size: Union[int, float])str
    +
    +splitgraph.core.output.pretty_size(size: Union[int, float]) str

    Converts a size in bytes to its string representation (e.g. 1024 -> 1KiB) :param size: Size in bytes

    -
    -splitgraph.core.output.slugify(text: str, max_length: int = 50)str
    +
    +splitgraph.core.output.slugify(text: str, max_length: int = 50) str
    -
    -splitgraph.core.output.truncate_line(line: str, length: int = 80)str
    +
    +splitgraph.core.output.truncate_line(line: str, length: int = 80) str

    Truncates a line to a given length, replacing the remainder with …

    -
    -splitgraph.core.output.truncate_list(items: List[Any], max_entries: int = 10)str
    +
    +splitgraph.core.output.truncate_list(items: List[Any], max_entries: int = 10) str

    Print a list, possibly truncating it to the specified number of entries

    -
    -
    -

    splitgraph.core.registry module

    + +
    +

    splitgraph.core.registry module

    Functions for communicating with the remote Splitgraph catalog

    -
    -splitgraph.core.registry.get_info_key(engine: PostgresEngine, key: str)Optional[str]
    +
    +splitgraph.core.registry.get_info_key(engine: PostgresEngine, key: str) Optional[str]

    Gets a configuration key from the remote registry, used to notify the client of the registry’s capabilities.

    Parameters
    @@ -1303,8 +1466,8 @@ already exist on the remote).

    -
    -splitgraph.core.registry.set_info_key(engine: PostgresEngine, key: str, value: Union[bool, str])None
    +
    +splitgraph.core.registry.set_info_key(engine: PostgresEngine, key: str, value: Union[bool, str]) None

    Sets a configuration value on the remote registry.

    Parameters
    @@ -1318,8 +1481,8 @@ already exist on the remote).

    -
    -splitgraph.core.registry.setup_registry_mode(engine: PostgresEngine)None
    +
    +splitgraph.core.registry.setup_registry_mode(engine: PostgresEngine) None

    Set up access policies/RLS:

    • Normal users aren’t allowed to create tables/schemata (can’t do checkouts inside of a registry or @@ -1337,18 +1500,18 @@ or change it (since they control the external location they’ve uploaded it to

    -
    -
    -

    splitgraph.core.repository module

    + +
    +

    splitgraph.core.repository module

    Public API for managing images in a Splitgraph repository.

    -
    -class splitgraph.core.repository.Repository(namespace: str, repository: str, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_manager: Optional[splitgraph.core.object_manager.ObjectManager] = None)
    +
    +class splitgraph.core.repository.Repository(namespace: str, repository: str, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_manager: Optional[splitgraph.core.object_manager.ObjectManager] = None)

    Bases: object

    Splitgraph repository API

    -
    -commit(image_hash: Optional[str] = None, comment: Optional[str] = None, snap_only: bool = False, chunk_size: Optional[int] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]]] = None, in_fragment_order: Optional[Dict[str, List[str]]] = None, overwrite: bool = False)splitgraph.core.image.Image
    +
    +commit(image_hash: Optional[str] = None, comment: Optional[str] = None, snap_only: bool = False, chunk_size: Optional[int] = None, split_changeset: bool = False, extra_indexes: Optional[Dict[str, Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]]]] = None, in_fragment_order: Optional[Dict[str, List[str]]] = None, overwrite: bool = False) splitgraph.core.image.Image

    Commits all pending changes to a given repository, creating a new image.

    Parameters
    @@ -1382,14 +1545,14 @@ table.

    -
    -commit_engines()None
    +
    +commit_engines() None

    Commit the underlying transactions on both engines that the repository uses.

    -
    -delete(unregister: bool = True, uncheckout: bool = True)None
    +
    +delete(unregister: bool = True, uncheckout: bool = True) None

    Discards all changes to a given repository and optionally all of its history, as well as deleting the Postgres schema that it might be checked out into. Doesn’t delete any cached physical objects.

    @@ -1407,8 +1570,8 @@ if the repository is backed by a registry (rather than a local engine).

    -
    -diff(table_name: str, image_1: Union[splitgraph.core.image.Image, str], image_2: Optional[Union[splitgraph.core.image.Image, str]], aggregate: bool = False)Optional[Union[bool, Tuple[int, int, int], List[Tuple[bool, Tuple]]]]
    +
    +diff(table_name: str, image_1: Union[splitgraph.core.image.Image, str], image_2: Optional[Union[splitgraph.core.image.Image, str]], aggregate: bool = False) Optional[Union[bool, Tuple[int, int, int], List[Tuple[bool, Tuple]]]]

    Compares the state of a table in different images by materializing both tables into a temporary space and comparing them row-to-row.

    @@ -1431,8 +1594,8 @@ Otherwise, returns a list of changes where each change is a tuple of
    -
    -dump(stream: _io.TextIOWrapper, exclude_object_contents: bool = False)None
    +
    +dump(stream: _io.TextIOWrapper, exclude_object_contents: bool = False) None

    Creates an SQL dump with the metadata required for the repository and all of its objects.

    Parameters
    @@ -1445,20 +1608,20 @@ Otherwise, returns a list of changes where each change is a tuple of
    -
    -classmethod from_schema(schema: str)splitgraph.core.repository.Repository
    +
    +classmethod from_schema(schema: str) splitgraph.core.repository.Repository

    Convert a Postgres schema name of the format namespace/repository to a Splitgraph repository object.

    -
    -classmethod from_template(template: splitgraph.core.repository.Repository, namespace: Optional[str] = None, repository: Optional[str] = None, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None)splitgraph.core.repository.Repository
    +
    +classmethod from_template(template: splitgraph.core.repository.Repository, namespace: Optional[str] = None, repository: Optional[str] = None, engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None, object_engine: Optional[splitgraph.engine.postgres.engine.PostgresEngine] = None) splitgraph.core.repository.Repository

    Create a Repository from an existing one replacing some of its attributes.

    -
    -get_all_hashes_tags()List[Tuple[Optional[str], str]]
    +
    +get_all_hashes_tags() List[Tuple[Optional[str], str]]

    Gets all tagged images and their hashes in a given repository.

    Returns
    @@ -1468,8 +1631,8 @@ Otherwise, returns a list of changes where each change is a tuple of
    -
    -get_local_size()int
    +
    +get_local_size() int

    Get the actual size used by this repository’s downloaded objects.

    This might still be double-counted if the repository shares objects with other repositores.

    @@ -1481,8 +1644,8 @@ with other repositores.

    -
    -get_size()int
    +
    +get_size() int

    Get the physical size used by the repository’s data, counting objects that are used by multiple images only once. This is calculated from the metadata, the on-disk footprint might be smaller if not all of repository’s objects have been downloaded.

    @@ -1494,34 +1657,34 @@ footprint might be smaller if not all of repository’s objects have been downlo
    -
    -has_pending_changes()bool
    +
    +has_pending_changes() bool

    Detects if the repository has any pending changes (schema changes, table additions/deletions, content changes).

    -
    -
    -property head
    +
    +
    +property head: Optional[splitgraph.core.image.Image]

    Return the HEAD image for the repository or None if the repository isn’t checked out.

    -
    -
    -property head_strict
    +
    +
    +property head_strict: splitgraph.core.image.Image

    Return the HEAD image for the repository. Raise an exception if the repository isn’t checked out.

    -
    -images
    -

    A splitgraph.core.image.ImageManager instance that performs operations +

    +images
    +

    A splitgraph.core.image.ImageManager instance that performs operations (checkout, delete etc) on this repository’s images.

    -
    -import_tables(tables: Sequence[str], source_repository: splitgraph.core.repository.Repository, source_tables: Sequence[str], image_hash: Optional[str] = None, foreign_tables: bool = False, do_checkout: bool = True, target_hash: Optional[str] = None, table_queries: Optional[Sequence[bool]] = None, parent_hash: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', skip_validation: bool = False)str
    +
    +import_tables(tables: Sequence[str], source_repository: splitgraph.core.repository.Repository, source_tables: Sequence[str], image_hash: Optional[str] = None, foreign_tables: bool = False, do_checkout: bool = True, target_hash: Optional[str] = None, table_queries: Optional[Sequence[bool]] = None, parent_hash: Optional[str] = None, wrapper: Optional[str] = 'splitgraph.core.fdw_checkout.QueryingForeignDataWrapper', skip_validation: bool = False) str

    Creates a new commit in target_repository with one or more tables linked to already-existing tables. After this operation, the HEAD of the target repository moves to the new commit and the new tables are materialized.

    @@ -1557,14 +1720,14 @@ HEAD is used.

    -
    -init()None
    +
    +init() None

    Initializes an empty repo with an initial commit (hash 0000…)

    -
    -materialized_table(table_name: str, image_hash: Optional[str])Iterator[Tuple[str, str]]
    +
    +materialized_table(table_name: str, image_hash: Optional[str]) Iterator[Tuple[str, str]]

    A context manager that returns a pointer to a read-only materialized table in a given image. The table is deleted on exit from the context manager.

    @@ -1581,15 +1744,15 @@ The table is deleted on exit from the context manager.

    -
    -objects
    +
    +objects

    A splitgraph.core.object_manager.ObjectManager instance that performs operations on the objects on this repository’s engine (not just objects belonging to this repository).

    -
    -pull(download_all: Optional[bool] = False, overwrite_objects: bool = False, overwrite_tags: bool = False, single_image: Optional[str] = None)None
    +
    +pull(download_all: Optional[bool] = False, overwrite_objects: bool = False, overwrite_tags: bool = False, single_image: Optional[str] = None) None

    Synchronizes the state of the local Splitgraph repository with its upstream, optionally downloading all new objects created on the remote.

    @@ -1606,8 +1769,8 @@ required objects when a table is checked out.

    -
    -push(remote_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, reupload_objects: bool = False, overwrite_tags: bool = False, handler: str = 'DB', handler_options: Optional[Dict[str, Any]] = None, single_image: Optional[str] = None)splitgraph.core.repository.Repository
    +
    +push(remote_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, reupload_objects: bool = False, overwrite_tags: bool = False, handler: str = 'DB', handler_options: Optional[Dict[str, Any]] = None, single_image: Optional[str] = None) splitgraph.core.repository.Repository

    Inverse of pull: Pushes all local changes to the remote and uploads new objects.

    Parameters
    @@ -1628,20 +1791,20 @@ to store them in an S3 bucket.

    -
    -rollback_engines()None
    +
    +rollback_engines() None

    Rollback the underlying transactions on both engines that the repository uses.

    -
    -run_sql(sql: Union[psycopg2.sql.Composed, str], arguments: Optional[Any] = None, return_shape: splitgraph.engine.ResultShape = <ResultShape.MANY_MANY: 4>)Any
    +
    +run_sql(sql: Union[psycopg2.sql.Composed, str], arguments: Optional[Any] = None, return_shape: splitgraph.engine.ResultShape = ResultShape.MANY_MANY) Any

    Execute an arbitrary SQL statement inside of this repository’s checked out schema.

    -
    -set_tags(tags: Dict[str, Optional[str]])None
    +
    +set_tags(tags: Dict[str, Optional[str]]) None

    Sets tags for multiple images.

    Parameters
    @@ -1651,14 +1814,14 @@ to store them in an S3 bucket.

    -
    -to_schema()str
    +
    +to_schema() str

    Returns the engine schema that this repository gets checked out into.

    -
    -uncheckout(force: bool = False)None
    +
    +uncheckout(force: bool = False) None

    Deletes the schema that the repository is checked out into

    Parameters
    @@ -1667,17 +1830,17 @@ to store them in an S3 bucket.

    -
    -
    -property upstream
    +
    +
    +property upstream

    The remote upstream repository that this local repository tracks.

    -
    -splitgraph.core.repository.clone(remote_repository: Union[splitgraph.core.repository.Repository, str], local_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, overwrite_tags: bool = False, download_all: Optional[bool] = False, single_image: Optional[str] = None)splitgraph.core.repository.Repository
    +
    +splitgraph.core.repository.clone(remote_repository: Union[splitgraph.core.repository.Repository, str], local_repository: Optional[splitgraph.core.repository.Repository] = None, overwrite_objects: bool = False, overwrite_tags: bool = False, download_all: Optional[bool] = False, single_image: Optional[str] = None) splitgraph.core.repository.Repository

    Clones a remote Splitgraph repository or synchronizes remote changes with the local ones.

    If the target repository has no set upstream engine, the source repository becomes its upstream.

    @@ -1701,13 +1864,13 @@ objects when a table is checked out.

    -
    -splitgraph.core.repository.getrandbits(k)x.  Generates an int with k random bits.
    +
    +splitgraph.core.repository.getrandbits(k) x.  Generates an int with k random bits.
    -
    -splitgraph.core.repository.import_table_from_remote(remote_repository: splitgraph.core.repository.Repository, remote_tables: List[str], remote_image_hash: str, target_repository: splitgraph.core.repository.Repository, target_tables: List[Any], target_hash: Optional[str] = None)None
    +
    +splitgraph.core.repository.import_table_from_remote(remote_repository: splitgraph.core.repository.Repository, remote_tables: List[str], remote_image_hash: str, target_repository: splitgraph.core.repository.Repository, target_tables: List[Any], target_hash: Optional[str] = None) None

    Shorthand for importing one or more tables from a yet-uncloned remote. Here, the remote image hash is required, as otherwise we aren’t necessarily able to determine what the remote head is.

    @@ -1725,90 +1888,90 @@ as otherwise we aren’t necessarily able to determine what the remote head is.<
    -
    -splitgraph.core.repository.table_exists_at(repository: splitgraph.core.repository.Repository, table_name: str, image: Optional[splitgraph.core.image.Image] = None)bool
    +
    +splitgraph.core.repository.table_exists_at(repository: splitgraph.core.repository.Repository, table_name: str, image: Optional[splitgraph.core.image.Image] = None) bool

    Determines whether a given table exists in a Splitgraph image without checking it out. If image_hash is None, determines whether the table exists in the current staging area.

    -
    -
    -

    splitgraph.core.server module

    + +
    +

    splitgraph.core.server module

    Routines that are run inside of the engine, here so that they can get type- and syntax-checked.

    When inside of an LQFDW shim, these are called directly by the Splitgraph core code to avoid a redundant connection to the engine.

    -
    -splitgraph.core.server.delete_object_files(object_id: str)
    +
    +splitgraph.core.server.delete_object_files(object_id: str)
    -
    -splitgraph.core.server.download_object(object_id: str, urls: Tuple[str, str, str])
    +
    +splitgraph.core.server.download_object(object_id: str, urls: Tuple[str, str, str])
    -
    -splitgraph.core.server.get_object_schema(object_id: str)str
    +
    +splitgraph.core.server.get_object_schema(object_id: str) str
    -
    -splitgraph.core.server.get_object_size(object_id: str)int
    +
    +splitgraph.core.server.get_object_size(object_id: str) int
    -
    -splitgraph.core.server.list_objects()List[str]
    +
    +splitgraph.core.server.list_objects() List[str]
    -
    -splitgraph.core.server.object_exists(object_id: str)bool
    +
    +splitgraph.core.server.object_exists(object_id: str) bool
    -
    -splitgraph.core.server.rename_object_files(old_object_id: str, new_object_id: str)
    +
    +splitgraph.core.server.rename_object_files(old_object_id: str, new_object_id: str)
    -
    -splitgraph.core.server.set_object_schema(object_id: str, schema: str)
    +
    +splitgraph.core.server.set_object_schema(object_id: str, schema: str)
    -
    -splitgraph.core.server.upload_object(object_id: str, urls: Tuple[str, str, str])
    +
    +splitgraph.core.server.upload_object(object_id: str, urls: Tuple[str, str, str])
    -
    -splitgraph.core.server.verify(url: str)
    +
    +splitgraph.core.server.verify(url: str)
    -
    -
    -

    splitgraph.core.table module

    + +
    +

    splitgraph.core.table module

    Table metadata-related classes.

    -
    -class splitgraph.core.table.QueryPlan(table: splitgraph.core.table.Table, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str])
    +
    +class splitgraph.core.table.QueryPlan(table: splitgraph.core.table.Table, quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str])

    Bases: object

    Represents the initial query plan (fragments to query) for given columns and qualifiers.

    -
    -class splitgraph.core.table.Table(repository: Repository, image: Image, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])
    +
    +class splitgraph.core.table.Table(repository: Repository, image: Image, table_name: str, table_schema: List[splitgraph.core.types.TableColumn], objects: List[str])

    Bases: object

    Represents a Splitgraph table in a given image. Shouldn’t be created directly, use Table-loading methods in the splitgraph.core.image.Image class instead.

    -
    -get_length()int
    +
    +get_length() int

    Get the number of rows in this table.

    This might be smaller than the total number of rows in all objects belonging to this table as some objects might overwrite each other.

    @@ -1820,8 +1983,8 @@ table as some objects might overwrite each other.

    -
    -get_query_plan(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str], use_cache: bool = True)splitgraph.core.table.QueryPlan
    +
    +get_query_plan(quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]], columns: Sequence[str], use_cache: bool = True) splitgraph.core.table.QueryPlan

    Start planning a query (preliminary steps before object downloading, like qualifier filtering).

    @@ -1839,8 +2002,8 @@ like qualifier filtering).

    -
    -get_size()int
    +
    +get_size() int

    Get the physical size used by the table’s objects (including those shared with other tables).

    This is calculated from the metadata, the on-disk footprint might be smaller if not all of table’s objects have been downloaded.

    @@ -1852,8 +2015,8 @@ objects have been downloaded.

    -
    -materialize(destination: str, destination_schema: Optional[str] = None, lq_server: Optional[str] = None, temporary: bool = False)None
    +
    +materialize(destination: str, destination_schema: Optional[str] = None, lq_server: Optional[str] = None, temporary: bool = False) None

    Materializes a Splitgraph table in the target schema as a normal Postgres table, potentially downloading all required objects and using them to reconstruct the table.

    @@ -1868,8 +2031,8 @@ required objects and using them to reconstruct the table.

    -
    -query(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])
    +
    +query(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])

    Run a read-only query against this table without materializing it.

    This is a wrapper around query_lazy() that force evaluates the results which might mean more fragments being materialized that aren’t needed.

    @@ -1888,8 +2051,8 @@ FragmentManager.filter_fragments for the actual format.

    -
    -query_indirect(columns: List[str], quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]])Tuple[Iterator[bytes], Callable, splitgraph.core.table.QueryPlan]
    +
    +query_indirect(columns: List[str], quals: Optional[Sequence[Sequence[Tuple[str, str, Any]]]]) Tuple[Iterator[bytes], Callable, splitgraph.core.table.QueryPlan]

    Run a read-only query against this table without materializing it. Instead of actual results, this returns a generator of SQL queries that the caller can use to get the results as well as a callback that the caller has to run after they’re @@ -1914,8 +2077,8 @@ that are fully populated after the callback has been called to end the query).

    -
    -query_lazy(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]])Iterator[Iterator[Dict[str, Any]]]
    +
    +query_lazy(columns: List[str], quals: Sequence[Sequence[Tuple[str, str, Any]]]) Iterator[Iterator[Dict[str, Any]]]

    Run a read-only query against this table without materializing it.

    Parameters
    @@ -1932,8 +2095,8 @@ FragmentManager.filter_fragments for the actual format.

    -
    -reindex(extra_indexes: Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]], raise_on_patch_objects=True)List[str]
    +
    +reindex(extra_indexes: Dict[str, Union[List[str], Dict[str, Dict[str, Any]]]], raise_on_patch_objects=True) List[str]

    Run extra indexes on all objects in this table and update their metadata. This only works on objects that don’t have any deletions or upserts (have a deletion hash of 000000…).

    @@ -1951,66 +2114,117 @@ overwrite any other objects. If False, will log a warning but will reindex all n
    -
    -splitgraph.core.table.merge_index_data(current_index: Dict[str, Any], new_index: Dict[str, Any])
    +
    +splitgraph.core.table.merge_index_data(current_index: Dict[str, Any], new_index: Dict[str, Any])
    -
    -
    -

    splitgraph.core.types module

    + +
    +

    splitgraph.core.types module

    -
    -class splitgraph.core.types.Comparable
    +
    +class splitgraph.core.types.Comparable

    Bases: object

    -
    -class splitgraph.core.types.TableColumn(ordinal, name, pg_type, is_pk, comment)
    +
    +class splitgraph.core.types.MountError(*, table_name: str, error: str, error_text: str)
    +

    Bases: pydantic.main.BaseModel

    +
    +
    +error: str
    +
    + +
    +
    +error_text: str
    +
    + +
    +
    +table_name: str
    +
    + +
    + +
    +
    +class splitgraph.core.types.TableColumn(ordinal, name, pg_type, is_pk, comment)

    Bases: tuple

    -
    -
    -property comment
    +
    +
    +comment: Optional[str]

    Alias for field number 4

    -
    -
    -property is_pk
    +
    +
    +is_pk: bool

    Alias for field number 3

    -
    -
    -property name
    +
    +
    +name: str

    Alias for field number 1

    -
    -
    -property ordinal
    +
    +
    +ordinal: int

    Alias for field number 0

    -
    -
    -property pg_type
    +
    +
    +pg_type: str

    Alias for field number 2

    -
    -splitgraph.core.types.dict_to_tableschema(tables: Dict[str, Dict[str, Any]])Dict[str, List[splitgraph.core.types.TableColumn]]
    +
    +splitgraph.core.types.dict_to_table_schema_params(tables: Dict[str, ExternalTableRequest]) Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]
    -
    -splitgraph.core.types.tableschema_to_dict(tables: Dict[str, List[splitgraph.core.types.TableColumn]])Dict[str, Dict[str, str]]
    +
    +splitgraph.core.types.get_table_list(table_info: Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]) List[str]
    -
    +
    +
    +splitgraph.core.types.get_table_params(table_info: Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]], table_name: str) TableParams
    +
    -
    -
    +
    +
    +splitgraph.core.types.table_schema_params_to_dict(tables: Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]) Dict[str, Dict[str, Dict[str, Any]]]
    +
    + +
    +
    +splitgraph.core.types.unwrap(result: Dict[str, Union[splitgraph.core.types.MountError, splitgraph.core.types.T]]) Tuple[Dict[str, splitgraph.core.types.T], Dict[str, splitgraph.core.types.MountError]]
    +
    + + +
    +

    Module contents

    +

    Core Splitgraph functionality: versioning and sharing tables.

    +

    The main point of interaction with the Splitgraph API is a splitgraph.core.repository.Repository object +representing a local or a remote Splitgraph repository. Repositories can be created using one of the +following methods:

    +
    +
      +
    • Directly by invoking Repository(namespace, name, engine) where engine is the engine that the repository +belongs to (that can be gotten with get_engine(engine_name). If the created repository doesn’t actually exist +on the engine, it must first be initialized with repository.init().

    • +
    • By using splitgraph.core.engine.lookup_repository() which will search for the repository on the current +lookup path.

    • +
    +
    +
    + + \ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.core.sql.mdx b/content/docs/9500_python-api/splitgraph.core.sql.mdx index b718c0da..c715fd22 100644 --- a/content/docs/9500_python-api/splitgraph.core.sql.mdx +++ b/content/docs/9500_python-api/splitgraph.core.sql.mdx @@ -6,12 +6,14 @@ export const meta = { id: "splitgraph.core.sql package" }; -
    -

    Module contents

    +
    + +
    +

    Module contents

    Routines for managing SQL statements

    -
    -splitgraph.core.sql.insert(table: str, columns: Sequence[str], schema: str = 'splitgraph_meta')psycopg2.sql.Composed
    +
    +splitgraph.core.sql.insert(table: str, columns: Sequence[str], schema: str = 'splitgraph_meta') psycopg2.sql.Composed

    A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same identifiers everywhere.

    @@ -29,8 +31,8 @@ identifiers everywhere.

    -
    -splitgraph.core.sql.prepare_splitfile_sql(sql: str, image_mapper: Callable)Tuple[str, str]
    +
    +splitgraph.core.sql.prepare_splitfile_sql(sql: str, image_mapper: Callable) Tuple[str, str]

    Transform an SQL query to prepare for it to be used in a Splitfile SQL command and validate it. The rules are:

    @@ -40,8 +42,7 @@ The rules are:

    set to the single schema that a Splitgraph image is checked out into) or have schemata of format namespace/repository:hash_or_tag. In the second case, the schema is rewritten to point -at a temporary mount of the Splitgraph image. -* Function invocations are forbidden.

    +at a temporary mount of the Splitgraph image.

    Parameters
    @@ -49,7 +50,6 @@ at a temporary mount of the Splitgraph image.
  • sql – SQL query

  • image_mapper – Takes in an image and gives back the schema it should be rewritten to (for the purposes of execution) and the canonical form of the image.

  • -
  • schema – Schema to add to all non-qualified tables

  • Returns
    @@ -63,8 +63,8 @@ and the canonical form (with e.g. tags resolved into at-the-time full image hash
    -
    -splitgraph.core.sql.recover_original_schema_name(sql: str, schema_name: str)str
    +
    +splitgraph.core.sql.recover_original_schema_name(sql: str, schema_name: str) str

    Postgres truncates identifiers to 63 characters at parse time and, as pglast uses bits of PG to parse queries, image names like noaa/climate:64_chars_of_hash get truncated which can cause ambiguities and issues in provenance. We can’t @@ -73,8 +73,8 @@ what it used to be and patch the AST to have it again.

    -
    -splitgraph.core.sql.select(table: str, columns: str = '*', where: str = '', schema: str = 'splitgraph_meta', table_args: Optional[str] = None)psycopg2.sql.Composed
    +
    +splitgraph.core.sql.select(table: str, columns: str = '*', where: str = '', schema: str = 'splitgraph_meta', table_args: Optional[str] = None) psycopg2.sql.Composed

    A generic SQL SELECT constructor to simplify metadata access queries so that we don’t have to repeat the same identifiers everywhere.

    @@ -95,8 +95,8 @@ for example, SELECT * FROM “splitgraph_api”.”get_images” (%s, %s) …

    -
    -splitgraph.core.sql.validate_import_sql(sql: str)str
    +
    +splitgraph.core.sql.validate_import_sql(sql: str) str

    Check an SQL query to see if it can be safely used in an IMPORT statement (e.g. FROM noaa/climate:latest IMPORT &lbrace;SELECT * FROM rainfall WHERE state = ‘AZ’&rbrace; AS rainfall. In this case, only a single SELECT statement is supported.

    @@ -113,8 +113,6 @@ In this case, only a single SELECT statement is supported.

    -
    - - -
    -
    + + + \ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.engine.mdx b/content/docs/9500_python-api/splitgraph.engine.mdx index f5c6dd76..df53c5d4 100644 --- a/content/docs/9500_python-api/splitgraph.engine.mdx +++ b/content/docs/9500_python-api/splitgraph.engine.mdx @@ -6,33 +6,48 @@ export const meta = { id: "splitgraph.engine package" }; -
    -

    Module contents

    +
    + +
    +

    Subpackages

    + +
    +
    +

    Module contents

    Defines the interface for a Splitgraph engine (a backing database), including running basic SQL commands, tracking tables for changes and uploading/downloading tables to other remote engines.

    By default, Splitgraph is backed by Postgres: see splitgraph.engine.postgres for an example of how to implement a different engine.

    -
    -class splitgraph.engine.ChangeEngine
    +
    +class splitgraph.engine.ChangeEngine

    Bases: splitgraph.engine.SQLEngine, abc.ABC

    An SQL engine that can perform change tracking on a set of tables.

    -
    -discard_pending_changes(schema, table=None)
    +
    +discard_pending_changes(schema, table=None)

    Discard recorded pending changes for a tracked table or the whole schema

    -
    -get_change_key(schema: str, table: str)List[Tuple[str, str]]
    +
    +get_change_key(schema: str, table: str) List[Tuple[str, str]]

    Returns the key used to identify a row in a change (list of column name, column type). If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

    -
    -get_changed_tables(schema)
    +
    +get_changed_tables(schema)

    List tracked tables that have pending changes

    Parameters
    @@ -45,8 +60,8 @@ If the tracked table has a PK, we use that; if it doesn’t, the whole row is us
    -
    -get_pending_changes(schema, table, aggregate=False)
    +
    +get_pending_changes(schema, table, aggregate=False)

    Return pending changes for a given tracked table

    Parameters
    @@ -67,8 +82,8 @@ have been inserted/updated otherwise.

    -
    -get_tracked_tables()
    +
    +get_tracked_tables()
    Returns

    A list of (table_schema, table_name) that the engine currently tracks for changes

    @@ -77,14 +92,14 @@ have been inserted/updated otherwise.

    -
    -has_pending_changes(schema)
    +
    +has_pending_changes(schema)

    Return True if the tracked schema has pending changes and False if it doesn’t.

    -
    -track_tables(tables)
    +
    +track_tables(tables)

    Start engine-specific change tracking on a list of tables.

    Parameters
    @@ -94,8 +109,8 @@ have been inserted/updated otherwise.

    -
    -untrack_tables(tables)
    +
    +untrack_tables(tables)

    Stop engine-specific change tracking on a list of tables and delete any pending changes.

    Parameters
    @@ -107,13 +122,13 @@ have been inserted/updated otherwise.

    -
    -class splitgraph.engine.ObjectEngine
    +
    +class splitgraph.engine.ObjectEngine

    Bases: object

    Routines for storing/applying objects as well as sharing them with other engines.

    -
    -apply_fragments(objects, target_schema, target_table, extra_quals=None, extra_qual_args=None, schema_spec=None, progress_every: Optional[int] = None)
    +
    +apply_fragments(objects, target_schema, target_table, extra_quals=None, extra_qual_args=None, schema_spec=None, progress_every: Optional[int] = None)

    Apply multiple fragments to a target table as a single-query batch operation.

    Parameters
    @@ -134,8 +149,8 @@ tqdm every progress_every objects.

    -
    -delete_objects(object_ids)
    +
    +delete_objects(object_ids)

    Delete one or more objects from the engine.

    Parameters
    @@ -145,8 +160,8 @@ tqdm every progress_every objects.

    -
    -download_objects(objects, remote_engine)
    +
    +download_objects(objects, remote_engine)

    Download objects from the remote engine to the local cache

    Parameters
    @@ -160,8 +175,8 @@ tqdm every progress_every objects.

    -
    -dump_object(object_id, stream, schema)
    +
    +dump_object(object_id, stream, schema)

    Dump an object into a series of SQL statements

    Parameters
    @@ -175,8 +190,8 @@ tqdm every progress_every objects.

    -
    -get_object_schema(object_id)
    +
    +get_object_schema(object_id)

    Get the schema of a given object, returned as a list of (ordinal, column_name, column_type, is_pk).

    @@ -187,15 +202,15 @@ tqdm every progress_every objects.

    -
    -get_object_size(object_id)
    +
    +get_object_size(object_id)

    Return the on-disk footprint of this object, in bytes :param object_id: ID of the object

    -
    -store_fragment(inserted, deleted, schema, table, source_schema, source_table, source_schema_spec)
    +
    +store_fragment(inserted, deleted, schema, table, source_schema, source_table, source_schema_spec)

    Store a fragment of a changed table in another table

    Parameters
    @@ -213,8 +228,8 @@ tqdm every progress_every objects.

    -
    -store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args: Optional[Sequence[Any]], overwrite: bool)
    +
    +store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args: Optional[Sequence[Any]], overwrite: bool)

    Stores a Splitgraph object using a source query in the actual format implemented by this engine.

    @@ -231,8 +246,8 @@ implemented by this engine.

    -
    -upload_objects(objects, remote_engine)
    +
    +upload_objects(objects, remote_engine)

    Upload objects from the local cache to the remote engine

    Parameters
    @@ -247,72 +262,72 @@ implemented by this engine.

    -
    -class splitgraph.engine.ResultShape(value)
    +
    +class splitgraph.engine.ResultShape(value)

    Bases: enum.Enum

    Shape that the result of a query will be coerced to

    -
    -MANY_MANY = 4
    +
    +MANY_MANY = 4
    -
    -MANY_ONE = 3
    +
    +MANY_ONE = 3
    -
    -NONE = 0
    +
    +NONE = 0
    -
    -ONE_MANY = 2
    +
    +ONE_MANY = 2
    -
    -ONE_ONE = 1
    +
    +ONE_ONE = 1
    -
    -class splitgraph.engine.SQLEngine
    +
    +class splitgraph.engine.SQLEngine

    Bases: abc.ABC

    Abstraction for a Splitgraph SQL backend. Requires any overriding classes to implement run_sql as well as a few other functions. Together with the information_schema (part of the SQL standard), this class uses those functions to implement some basic database management methods like listing, deleting, creating, dumping and loading tables.

    -
    -close()
    +
    +close()

    Commit and close the engine’s backing connection

    -
    -commit()
    +
    +commit()

    Commit the engine’s backing connection

    -
    -copy_table(source_schema: str, source_table: str, target_schema: str, target_table: str, with_pk_constraints: bool = True)None
    +
    +copy_table(source_schema: str, source_table: str, target_schema: str, target_table: str, with_pk_constraints: bool = True) None

    Copy a table in the same engine, optionally applying primary key constraints as well.

    -
    -create_schema(schema: str)None
    +
    +create_schema(schema: str) None

    Create a schema if it doesn’t exist

    -
    -create_table(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False)None
    +
    +create_table(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False) None

    Creates a table using a previously-dumped table schema spec

    Parameters
    @@ -329,20 +344,20 @@ and loading tables.

    -
    -delete_schema(schema: str)None
    +
    +delete_schema(schema: str) None

    Delete a schema if it exists, including all the tables in it.

    -
    -delete_table(schema: str, table: str)None
    +
    +delete_table(schema: str, table: str) None

    Drop a table from a schema if it exists

    -
    -static dump_table_creation(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False)Tuple[psycopg2.sql.Composed, Tuple]
    +
    +static dump_table_creation(schema: Optional[str], table: str, schema_spec: List[splitgraph.core.types.TableColumn], unlogged: bool = False, temporary: bool = False, include_comments: bool = False) Tuple[psycopg2.sql.Composed, Tuple]

    Dumps the DDL for a table using a previously-dumped table schema spec

    Parameters
    @@ -362,8 +377,8 @@ and loading tables.

    -
    -dump_table_sql(schema, table_name, stream, columns='*', where='', where_args=None, target_schema=None, target_table=None)
    +
    +dump_table_sql(schema, table_name, stream, columns='*', where='', where_args=None, target_schema=None, target_table=None)

    Dump the table contents in the SQL format :param schema: Schema the table is located in :param table_name: Name of the table @@ -376,60 +391,60 @@ and loading tables.

    -
    -get_all_tables(schema: str)List[str]
    +
    +get_all_tables(schema: str) List[str]

    Get all tables in a given schema.

    -
    -get_full_table_schema(schema: str, table_name: str)List[splitgraph.core.types.TableColumn]
    +
    +get_full_table_schema(schema: str, table_name: str) List[splitgraph.core.types.TableColumn]

    Generates a list of (column ordinal, name, data type, is_pk, column comment), used to detect schema changes like columns being dropped/added/renamed or type changes.

    NB this doesn’t work for temporary tables (pg_temp) and returns an empty schema.

    -
    -get_primary_keys(schema, table)
    +
    +get_primary_keys(schema, table)

    Get a list of (column_name, column_type) denoting the primary keys of a given table.

    -
    -get_table_type(schema: str, table: str)Optional[str]
    +
    +get_table_type(schema: str, table: str) Optional[str]

    Get the type of the table (BASE or FOREIGN)

    -
    -initialize()
    +
    +initialize()

    Does any required initialization of the engine

    -
    -lock_table(schema, table)
    +
    +lock_table(schema, table)

    Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

    -
    -rollback()
    +
    +rollback()

    Rollback the engine’s backing connection

    -
    -run_sql(statement, arguments=None, return_shape=<ResultShape.MANY_MANY: 4>, named=False)
    +
    +run_sql(statement, arguments=None, return_shape=ResultShape.MANY_MANY, named=False)

    Run an arbitrary SQL statement with some arguments, return an iterator of results. If the statement doesn’t return any results, return None. If named=True, return named tuples when possible.

    -
    -run_sql_batch(statement, arguments, schema=None)
    +
    +run_sql_batch(statement, arguments, schema=None)

    Run a parameterized SQL statement against multiple sets of arguments.

    Parameters
    @@ -443,8 +458,8 @@ tuples when possible.

    -
    -run_sql_in(schema: str, sql: Union[psycopg2.sql.Composed, str], arguments: None = None, return_shape: splitgraph.engine.ResultShape = <ResultShape.MANY_MANY: 4>)Any
    +
    +run_sql_in(schema: str, sql: Union[psycopg2.sql.Composed, str], arguments: None = None, return_shape: splitgraph.engine.ResultShape = ResultShape.MANY_MANY) Any

    Executes a non-schema-qualified query against a specific schema.

    Parameters
    @@ -459,16 +474,16 @@ tuples when possible.

    -
    -savepoint(name: str)Iterator[None]
    +
    +savepoint(name: str) Iterator[None]

    At the beginning of this context manager, a savepoint is initialized and any database error that occurs in run_sql results in a rollback to this savepoint rather than the rollback of the whole transaction. At exit, the savepoint is released.

    -
    -schema_exists(schema: str)bool
    +
    +schema_exists(schema: str) bool

    Check if a schema exists on the engine.

    Parameters
    @@ -478,8 +493,8 @@ rollback of the whole transaction. At exit, the savepoint is released.

    -
    -table_exists(schema: str, table_name: str)bool
    +
    +table_exists(schema: str, table_name: str) bool

    Check if a table exists on the engine.

    Parameters
    @@ -494,14 +509,14 @@ rollback of the whole transaction. At exit, the savepoint is released.

    -
    -class splitgraph.engine.SavepointStack
    +
    +class splitgraph.engine.SavepointStack

    Bases: _thread._local

    -
    -splitgraph.engine.get_engine(name: Optional[str] = None, use_socket: bool = False, use_fdw_params: bool = False, autocommit: bool = False)PostgresEngine
    +
    +splitgraph.engine.get_engine(name: Optional[str] = None, use_socket: bool = False, use_fdw_params: bool = False, autocommit: bool = False) PostgresEngine

    Get the current global engine or a named remote engine

    Parameters
    @@ -518,8 +533,8 @@ will infer from the global splitgraph.config.IN_FDW flag.

    -
    -splitgraph.engine.set_engine(engine: PostgresEngine)None
    +
    +splitgraph.engine.set_engine(engine: PostgresEngine) None

    Switch the global engine to a different one.

    Parameters
    @@ -529,8 +544,8 @@ will infer from the global splitgraph.config.IN_FDW flag.

    -
    -splitgraph.engine.switch_engine(engine: PostgresEngine)Iterator[None]
    +
    +splitgraph.engine.switch_engine(engine: PostgresEngine) Iterator[None]

    Switch the global engine to a different one. The engine will get switched back on exit from the context manager.

    @@ -541,25 +556,10 @@ get switched back on exit from the context manager.

    -
    -splitgraph.engine.validate_type(t: str)str
    +
    +splitgraph.engine.validate_type(t: str) str
    -
    -
    + + +
    \ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.engine.postgres.mdx b/content/docs/9500_python-api/splitgraph.engine.postgres.mdx index ec3c6a90..53f561ca 100644 --- a/content/docs/9500_python-api/splitgraph.engine.postgres.mdx +++ b/content/docs/9500_python-api/splitgraph.engine.postgres.mdx @@ -6,37 +6,35 @@ export const meta = { id: "splitgraph.engine.postgres package" }; -
    -

    Module contents

    -
    - -
    -

    Submodules

    -
    -
    -

    splitgraph.engine.postgres.engine module

    +
    + +
    +

    Submodules

    +
    +
    +

    splitgraph.engine.postgres.engine module

    Default Splitgraph engine: uses PostgreSQL to store metadata and actual objects and an audit stored procedure to track changes, as well as the Postgres FDW interface to upload/download objects to/from other Postgres engines.

    -
    -class splitgraph.engine.postgres.engine.AuditTriggerChangeEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
    +
    +class splitgraph.engine.postgres.engine.AuditTriggerChangeEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)

    Bases: splitgraph.engine.postgres.engine.PsycopgEngine, splitgraph.engine.ChangeEngine

    Change tracking based on an audit trigger stored procedure

    -
    -discard_pending_changes(schema: str, table: Optional[str] = None)None
    +
    +discard_pending_changes(schema: str, table: Optional[str] = None) None

    Discard recorded pending changes for a tracked schema / table

    -
    -get_changed_tables(schema: str)List[str]
    +
    +get_changed_tables(schema: str) List[str]

    Get list of tables that have changed content

    -
    -get_pending_changes(schema: str, table: str, aggregate: bool = False)Union[List[Tuple[int, int]], List[Tuple[Tuple[str, ], bool, Dict[str, Any], Dict[str, Any]]]]
    +
    +get_pending_changes(schema: str, table: str, aggregate: bool = False) Union[List[Tuple[int, int]], List[Tuple[Tuple[str, ...], bool, Dict[str, Any], Dict[str, Any]]]]

    Return pending changes for a given tracked table

    Parameters
    @@ -54,39 +52,39 @@ If aggregate is False: List of (primary_key, change_type, change_data)

    -
    -get_tracked_tables()List[Tuple[str, str]]
    +
    +get_tracked_tables() List[Tuple[str, str]]

    Return a list of tables that the audit trigger is working on.

    -
    -has_pending_changes(schema: str)bool
    +
    +has_pending_changes(schema: str) bool

    Return True if the tracked schema has pending changes and False if it doesn’t.

    -
    -track_tables(tables: List[Tuple[str, str]])None
    +
    +track_tables(tables: List[Tuple[str, str]]) None

    Install the audit trigger on the required tables

    -
    -untrack_tables(tables: List[Tuple[str, str]])None
    +
    +untrack_tables(tables: List[Tuple[str, str]]) None

    Remove triggers from tables and delete their pending changes

    -
    -class splitgraph.engine.postgres.engine.PostgresEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
    +
    +class splitgraph.engine.postgres.engine.PostgresEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)

    Bases: splitgraph.engine.postgres.engine.AuditTriggerChangeEngine, splitgraph.engine.ObjectEngine

    An implementation of the Postgres engine for Splitgraph

    -
    -apply_fragments(objects: List[Tuple[str, str]], target_schema: str, target_table: str, extra_quals: Optional[psycopg2.sql.Composed] = None, extra_qual_args: Optional[Tuple[str]] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, progress_every: Optional[int] = None)None
    +
    +apply_fragments(objects: List[Tuple[str, str]], target_schema: str, target_table: str, extra_quals: Optional[psycopg2.sql.Composed] = None, extra_qual_args: Optional[Tuple[Any, ...]] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, progress_every: Optional[int] = None) None

    Apply multiple fragments to a target table as a single-query batch operation.

    Parameters
    @@ -107,8 +105,8 @@ tqdm every progress_every objects.

    -
    -delete_objects(object_ids: List[str])None
    +
    +delete_objects(object_ids: List[str]) None

    Delete one or more objects from the engine.

    Parameters
    @@ -118,8 +116,8 @@ tqdm every progress_every objects.

    -
    -download_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine)List[str]
    +
    +download_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine) List[str]

    Download objects from the remote engine to the local cache

    Parameters
    @@ -133,8 +131,8 @@ tqdm every progress_every objects.

    -
    -dump_object(object_id: str, stream: _io.TextIOWrapper, schema: str)None
    +
    +dump_object(object_id: str, stream: _io.TextIOWrapper, schema: str) None

    Dump an object into a series of SQL statements

    Parameters
    @@ -148,8 +146,8 @@ tqdm every progress_every objects.

    -
    -dump_object_creation(object_id: str, schema: str, table: Optional[str] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, if_not_exists: bool = False)bytes
    +
    +dump_object_creation(object_id: str, schema: str, table: Optional[str] = None, schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None, if_not_exists: bool = False) bytes

    Generate the SQL that remounts a foreign table pointing to a Splitgraph object.

    Parameters
    @@ -168,15 +166,15 @@ tqdm every progress_every objects.

    -
    -get_change_key(schema: str, table: str)List[Tuple[str, str]]
    +
    +get_change_key(schema: str, table: str) List[Tuple[str, str]]

    Returns the key used to identify a row in a change (list of column name, column type). If the tracked table has a PK, we use that; if it doesn’t, the whole row is used.

    -
    -get_object_schema(object_id: str)List[splitgraph.core.types.TableColumn]
    +
    +get_object_schema(object_id: str) List[splitgraph.core.types.TableColumn]

    Get the schema of a given object, returned as a list of (ordinal, column_name, column_type, is_pk).

    @@ -187,15 +185,15 @@ If the tracked table has a PK, we use that; if it doesn’t, the whole row is us
    -
    -get_object_size(object_id: str)int
    +
    +get_object_size(object_id: str) int

    Return the on-disk footprint of this object, in bytes :param object_id: ID of the object

    -
    -mount_object(object_id: str, table: None = None, schema: str = 'splitgraph_meta', schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None)None
    +
    +mount_object(object_id: str, table: None = None, schema: str = 'splitgraph_meta', schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None) None

    Mount an object from local storage as a foreign table.

    Parameters
    @@ -210,13 +208,13 @@ If the tracked table has a PK, we use that; if it doesn’t, the whole row is us
    -
    -rename_object(old_object_id: str, new_object_id: str)
    +
    +rename_object(old_object_id: str, new_object_id: str)
    -
    -store_fragment(inserted: Any, deleted: Any, schema: str, table: str, source_schema: str, source_table: str, source_schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None)None
    +
    +store_fragment(inserted: Any, deleted: Any, schema: str, table: str, source_schema: str, source_table: str, source_schema_spec: Optional[List[splitgraph.core.types.TableColumn]] = None) None

    Store a fragment of a changed table in another table

    Parameters
    @@ -234,8 +232,8 @@ If the tracked table has a PK, we use that; if it doesn’t, the whole row is us
    -
    -store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args=None, overwrite=False)None
    +
    +store_object(object_id: str, source_query: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], schema_spec: List[splitgraph.core.types.TableColumn], source_query_args=None, overwrite=False) None

    Stores a Splitgraph object using a source query in the actual format implemented by this engine.

    @@ -252,21 +250,21 @@ implemented by this engine.

    -
    -sync_object_mounts()None
    +
    +sync_object_mounts() None

    Scan through local object storage and synchronize it with the foreign tables in splitgraph_meta (unmounting non-existing objects and mounting existing ones).

    -
    -unmount_objects(object_ids: List[str])None
    +
    +unmount_objects(object_ids: List[str]) None

    Unmount objects from splitgraph_meta (this doesn’t delete the physical files.

    -
    -upload_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine)None
    +
    +upload_objects(objects: List[str], remote_engine: splitgraph.engine.postgres.engine.PostgresEngine) None

    Upload objects from the local cache to the remote engine

    Parameters
    @@ -281,43 +279,43 @@ splitgraph_meta (unmounting non-existing objects and mounting existing ones).

    -
    -class splitgraph.engine.postgres.engine.PsycopgEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)
    +
    +class splitgraph.engine.postgres.engine.PsycopgEngine(name: Optional[str], conn_params: Optional[Dict[str, Optional[str]]] = None, pool: Optional[psycopg2.pool.AbstractConnectionPool] = None, autocommit: bool = False, registry: bool = False, in_fdw: bool = False, check_version: bool = True)

    Bases: splitgraph.engine.SQLEngine

    Postgres SQL engine backed by a Psycopg connection.

    -
    -close()None
    +
    +close() None

    Commit and close the engine’s backing connection

    -
    -close_others()None
    +
    +close_others() None

    Close and release all other connections to the connection pool.

    -
    -commit()None
    +
    +commit() None

    Commit the engine’s backing connection

    -
    -
    -property connection
    +
    +
    +property connection: Connection

    Engine-internal Psycopg connection.

    -
    -copy_cursor()
    +
    +copy_cursor()

    Return a cursor that can be used for copy_expert operations

    -
    -delete_database(database: str)None
    +
    +delete_database(database: str) None

    Helper function to drop a database using the admin connection

    Parameters
    @@ -327,8 +325,8 @@ splitgraph_meta (unmounting non-existing objects and mounting existing ones).

    -
    -dump_table_sql(schema: str, table_name: str, stream: _io.TextIOWrapper, columns: str = '*', where: str = '', where_args: Optional[Union[List[str], Tuple[str, str]]] = None, target_schema: Optional[str] = None, target_table: Optional[str] = None)None
    +
    +dump_table_sql(schema: str, table_name: str, stream: _io.TextIOWrapper, columns: str = '*', where: str = '', where_args: Optional[Union[List[str], Tuple[str, str]]] = None, target_schema: Optional[str] = None, target_table: Optional[str] = None) None

    Dump the table contents in the SQL format :param schema: Schema the table is located in :param table_name: Name of the table @@ -341,14 +339,20 @@ splitgraph_meta (unmounting non-existing objects and mounting existing ones).

    -
    -get_primary_keys(schema: str, table: str)List[Tuple[str, str]]
    +
    +get_primary_keys(schema: str, table: str) List[Tuple[str, str]]

    Inspects the Postgres information_schema to get the primary keys for a given table.

    +
    +
    +in_fdw
    +

    List of notices issued by the server during the previous execution of run_sql.

    +
    +
    -
    -initialize(skip_object_handling: bool = False, skip_create_database: bool = False)None
    +
    +initialize(skip_object_handling: bool = False, skip_create_database: bool = False) None

    Create the Splitgraph Postgres database and install the audit trigger

    Parameters
    @@ -363,46 +367,46 @@ that don’t need change tracking or checkouts.

    -
    -lock_table(schema: str, table: str)None
    +
    +lock_table(schema: str, table: str) None

    Acquire an exclusive lock on a given table, released when the transaction commits / rolls back.

    -
    -rollback()None
    +
    +rollback() None

    Rollback the engine’s backing connection

    -
    -run_api_call(call: str, *args, schema: str = 'splitgraph_api')Any
    +
    +run_api_call(call: str, *args, schema: str = 'splitgraph_api') Any
    -
    -run_api_call_batch(call: str, argslist, schema: str = 'splitgraph_api')
    +
    +run_api_call_batch(call: str, argslist, schema: str = 'splitgraph_api')
    -
    -run_chunked_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Sequence[Any], return_shape: Optional[splitgraph.engine.ResultShape] = <ResultShape.MANY_MANY: 4>, chunk_size: int = 1000, chunk_position: int = -1)Any
    +
    +run_chunked_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Sequence[Any], return_shape: Optional[splitgraph.engine.ResultShape] = ResultShape.MANY_MANY, chunk_size: int = 100, chunk_position: int = - 1) Any

    Because the Splitgraph API has a request size limitation, certain SQL calls with variadic arguments are going to be too long to fit that. This function runs an SQL query against a set of broken up arguments and returns the combined result.

    -
    -run_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Optional[Sequence[Any]] = None, return_shape: Optional[splitgraph.engine.ResultShape] = <ResultShape.MANY_MANY: 4>, named: bool = False)Any
    +
    +run_sql(statement: Union[bytes, psycopg2.sql.Composed, str, psycopg2.sql.SQL], arguments: Optional[Sequence[Any]] = None, return_shape: Optional[splitgraph.engine.ResultShape] = ResultShape.MANY_MANY, named: bool = False) Any

    Run an arbitrary SQL statement with some arguments, return an iterator of results. If the statement doesn’t return any results, return None. If named=True, return named tuples when possible.

    -
    -run_sql_batch(statement: Union[psycopg2.sql.Composed, str], arguments: Any, schema: Optional[str] = None, max_size=261000)None
    +
    +run_sql_batch(statement: Union[psycopg2.sql.Composed, str], arguments: Any, schema: Optional[str] = None, max_size=261000) None

    Run a parameterized SQL statement against multiple sets of arguments.

    Parameters
    @@ -415,9 +419,9 @@ tuples when possible.

    -
    -
    -property splitgraph_version
    +
    +
    +property splitgraph_version: Optional[str]

    Returns the version of the Splitgraph library installed on the engine and by association the version of the engine itself.

    @@ -425,26 +429,28 @@ and by association the version of the engine itself.

    -
    -splitgraph.engine.postgres.engine.add_ud_flag_column(table_schema: List[splitgraph.core.types.TableColumn])List[splitgraph.core.types.TableColumn]
    +
    +splitgraph.engine.postgres.engine.add_ud_flag_column(table_schema: List[splitgraph.core.types.TableColumn]) List[splitgraph.core.types.TableColumn]
    -
    -splitgraph.engine.postgres.engine.chunk(sequence: Sequence[T], chunk_size: int = 1000)Iterator[List[T]]
    +
    +splitgraph.engine.postgres.engine.chunk(sequence: Sequence[splitgraph.engine.postgres.engine.T], chunk_size: int = 100) Iterator[List[splitgraph.engine.postgres.engine.T]]
    -
    -splitgraph.engine.postgres.engine.get_change_key(schema_spec: List[splitgraph.core.types.TableColumn])List[Tuple[str, str]]
    +
    +splitgraph.engine.postgres.engine.get_change_key(schema_spec: List[splitgraph.core.types.TableColumn]) List[Tuple[str, str]]
    -
    -splitgraph.engine.postgres.engine.get_conn_str(conn_params: Dict[str, str])str
    +
    +splitgraph.engine.postgres.engine.get_conn_str(conn_params: Dict[str, Optional[str]]) str
    -
    - -
    -
    + +
    +

    Module contents

    +
    + +
    \ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.hooks.data_source.mdx b/content/docs/9500_python-api/splitgraph.hooks.data_source.mdx index 2d209a22..a84364c9 100644 --- a/content/docs/9500_python-api/splitgraph.hooks.data_source.mdx +++ b/content/docs/9500_python-api/splitgraph.hooks.data_source.mdx @@ -6,494 +6,518 @@ export const meta = { id: "splitgraph.hooks.data_source package" }; -
    -

    Module contents

    -
    -
    -splitgraph.hooks.data_source.get_data_source(data_source: str)Type[splitgraph.hooks.data_source.base.DataSource]
    -

    Returns a class for a given data source

    -
    - -
    -
    -splitgraph.hooks.data_source.get_data_sources()List[str]
    -

    Returns the names of all registered data sources.

    -
    - -
    -
    -splitgraph.hooks.data_source.register_data_source(name: str, data_source_class: Type[splitgraph.hooks.data_source.base.DataSource])None
    -

    Returns a data source under a given name.

    -
    - -
    +
    -
    -

    Submodules

    -
    -
    -

    splitgraph.hooks.data_source.base module

    +
    +

    Submodules

    +
    +
    +

    splitgraph.hooks.data_source.base module

    -
    -class splitgraph.hooks.data_source.base.DataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any])
    +
    +class splitgraph.hooks.data_source.base.DataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)

    Bases: abc.ABC

    -
    -credentials_schema: Dict[str, Any]
    +
    +credentials_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
    +
    + +
    +
    +abstract classmethod get_description() str
    -
    -abstract classmethod get_description()str
    +
    +classmethod get_icon() Optional[bytes]
    -
    -abstract classmethod get_name()str
    +
    +abstract classmethod get_name() str
    -
    -abstract introspect()Dict[str, List[splitgraph.core.types.TableColumn]]
    +
    +get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
    +

    Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

    +
    + +
    +
    +abstract introspect() IntrospectionResult
    +
    + +
    +
    +params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
    -
    -params_schema: Dict[str, Any]
    +
    +supports_load = False
    -
    -supports_load = False
    +
    +supports_mount = False
    -
    -supports_mount = False
    +
    +supports_sync = False
    -
    -supports_sync = False
    +
    +table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
    -
    -class splitgraph.hooks.data_source.base.LoadableDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any])
    +
    +class splitgraph.hooks.data_source.base.LoadableDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)

    Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

    -
    -
    -credentials_schema: Dict[str, Any]
    -
    -
    -
    -load(repository: Repository, tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]] = None)str
    -
    - -
    -
    -params_schema: Dict[str, Any]
    +
    +load(repository: splitgraph.core.repository.Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
    -
    -supports_load = True
    +
    +supports_load = True
    -
    -class splitgraph.hooks.data_source.base.MountableDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any])
    +
    +class splitgraph.hooks.data_source.base.MountableDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)

    Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

    -
    -
    -credentials_schema: Dict[str, Any]
    -
    -
    -
    -abstract mount(schema: str, tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]] = None, overwrite: bool = True)
    +
    +abstract mount(schema: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, overwrite: bool = True) Optional[List[splitgraph.core.types.MountError]]

    Instantiate the data source as foreign tables in a schema

    -
    -params_schema: Dict[str, Any]
    -
    - -
    -
    -supports_mount = True
    +
    +supports_mount = True
    -
    -class splitgraph.hooks.data_source.base.SyncableDataSource(engine: PostgresEngine, credentials: Dict[str, Any], params: Dict[str, Any])
    +
    +class splitgraph.hooks.data_source.base.SyncableDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)

    Bases: splitgraph.hooks.data_source.base.LoadableDataSource, splitgraph.hooks.data_source.base.DataSource, abc.ABC

    -
    -credentials_schema: Dict[str, Any]
    +
    +supports_load = True
    -
    -params_schema: Dict[str, Any]
    +
    +supports_sync = True
    -
    -
    -supports_load = True
    +
    +
    +sync(repository: splitgraph.core.repository.Repository, image_hash: Optional[str], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
    -
    -
    -supports_sync = True
    -
    +
    +
    +
    +class splitgraph.hooks.data_source.base.TransformingDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, image_mounter: Optional[splitgraph.core.image_mounting.ImageMounter] = None)
    +

    Bases: splitgraph.hooks.data_source.base.DataSource, abc.ABC

    +

    Data source that runs transformations between Splitgraph images. Takes in an extra +parameter, an ImageMounter instance to manage temporary image checkouts.

    -
    -sync(repository: Repository, image_hash: Optional[str], tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]] = None)str
    -
    +
    +abstract get_required_images() List[Tuple[str, str, str]]
    +

    Get images required by this data source. +:returns List of tuples (namespace, repository, hash_or_tag)

    +
    + +
    +
    +mount_required_images() Generator[Dict[Tuple[str, str, str], str], None, None]
    +

    Mount all images required by this data source into temporary schemas. On exit from this +context manager, unmounts them. +:return: Map of (namespace, repository, hash_or_tag) -> schema where the image is mounted.

    +
    -
    -splitgraph.hooks.data_source.base.get_ingestion_state(repository: Repository, image_hash: Optional[str])Optional[Dict[str, Any]]
    +
    +splitgraph.hooks.data_source.base.get_ingestion_state(repository: splitgraph.core.repository.Repository, image_hash: Optional[str]) Optional[SyncState]
    -
    -splitgraph.hooks.data_source.base.getrandbits(k)x.  Generates an int with k random bits.
    +
    +splitgraph.hooks.data_source.base.getrandbits(k) x.  Generates an int with k random bits.
    -
    -splitgraph.hooks.data_source.base.prepare_new_image(repository: Repository, hash_or_tag: Optional[str])Tuple[Optional[splitgraph.core.image.Image], str]
    +
    +splitgraph.hooks.data_source.base.prepare_new_image(repository: splitgraph.core.repository.Repository, hash_or_tag: Optional[str], comment: str = 'Singer tap ingestion') Tuple[Optional[splitgraph.core.image.Image], str]
    -
    -
    -

    splitgraph.hooks.data_source.fdw module

    +
    +
    +

    splitgraph.hooks.data_source.fdw module

    -
    -class splitgraph.hooks.data_source.fdw.ElasticSearchDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
    +
    +class splitgraph.hooks.data_source.fdw.ElasticSearchDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)

    Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

    -
    -commandline_help: str = 'Mount an ElasticSearch instance.\n\nMount a set of tables proxying to a remote ElasticSearch index.\n\nThis uses a fork of postgres-elasticsearch-fdw behind the scenes. You can add a column\n`query` to your table and set it as `query_column` to pass advanced ES queries and aggregations.\nFor example:\n\n```\nsgr mount elasticsearch target_schema -c elasticsearch:9200 -o@- <<EOF\n    &lbrace;\n      "tables": &lbrace;\n        "table_1": &lbrace;\n          "schema": &lbrace;\n            "id": "text",\n            "@timestamp": "timestamp",\n            "query": "text",\n            "col_1": "text",\n            "col_2": "boolean"\n          &rbrace;,\n          "options": &lbrace;\n              "index": "index-pattern*",\n              "rowid_column": "id",\n              "query_column": "query"\n          &rbrace;\n        &rbrace;\n      &rbrace;\n    &rbrace;\nEOF\n```\n'
    +
    +commandline_help: str = 'Mount an ElasticSearch instance.\n\nMount a set of tables proxying to a remote ElasticSearch index.\n\nThis uses a fork of postgres-elasticsearch-fdw behind the scenes. You can add a column\n`query` to your table and set it as `query_column` to pass advanced ES queries and aggregations.\nFor example:\n\n\x08\n```\n$ sgr mount elasticsearch target_schema -c elasticsearch:9200 -o@- <<EOF\n    &lbrace;\n      "tables": &lbrace;\n        "table_1": &lbrace;\n          "schema": &lbrace;\n            "id": "text",\n            "@timestamp": "timestamp",\n            "query": "text",\n            "col_1": "text",\n            "col_2": "boolean"\n          &rbrace;,\n          "options": &lbrace;\n              "index": "index-pattern*",\n              "rowid_column": "id",\n              "query_column": "query"\n          &rbrace;\n        &rbrace;\n      &rbrace;\n    &rbrace;\nEOF\n\x08\n```\n'
    -
    -credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': ['string', 'null']&rbrace;, 'username': &lbrace;'type': ['string', 'null']&rbrace;&rbrace;, 'type': 'object'&rbrace;
    +
    +credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
    -
    -classmethod get_description()str
    +
    +classmethod get_description() str
    -
    -get_fdw_name()
    +
    +get_fdw_name()
    -
    -classmethod get_name()str
    +
    +classmethod get_name() str
    -
    -get_server_options()
    +
    +get_server_options()
    -
    -params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'properties': &lbrace;'index': &lbrace;'description': 'ES index name or pattern to use, for example, "events-*"', 'type': 'string'&rbrace;, 'query_column': &lbrace;'description': 'Name of the column to use to pass queries in', 'type': 'string'&rbrace;, 'score_column': &lbrace;'description': 'Name of the column with the document score', 'type': 'string'&rbrace;, 'scroll_duration': &lbrace;'description': 'How long to hold the scroll context open for, default 10m', 'type': 'string'&rbrace;, 'scroll_size': &lbrace;'description': 'Fetch size, default 1000', 'type': 'integer'&rbrace;, 'type': &lbrace;'description': 'Pre-ES7 doc_type, not required in ES7 or later', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'required': ['host', 'port', 'tables'], 'type': 'object'&rbrace;
    +
    +params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port'], 'type': 'object'&rbrace;
    +
    + +
    +
    +table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'index': &lbrace;'description': 'ES index name or pattern to use, for example, "events-*"', 'type': 'string'&rbrace;, 'query_column': &lbrace;'description': 'Name of the column to use to pass queries in', 'type': 'string'&rbrace;, 'score_column': &lbrace;'description': 'Name of the column with the document score', 'type': 'string'&rbrace;, 'scroll_duration': &lbrace;'description': 'How long to hold the scroll context open for, default 10m', 'type': 'string'&rbrace;, 'scroll_size': &lbrace;'description': 'Fetch size, default 1000', 'type': 'integer'&rbrace;, 'type': &lbrace;'description': 'Pre-ES7 doc_type, not required in ES7 or later', 'type': 'string'&rbrace;&rbrace;, 'required': ['index'], 'type': 'object'&rbrace;
    -
    -class splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
    +
    +class splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)

    Bases: splitgraph.hooks.data_source.base.MountableDataSource, splitgraph.hooks.data_source.base.LoadableDataSource, abc.ABC

    -
    -commandline_help: str = ''
    +
    +commandline_help: str = ''
    -
    -commandline_kwargs_help: str = ''
    +
    +commandline_kwargs_help: str = ''
    -
    -credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
    +
    +credentials_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
    -
    -classmethod from_commandline(engine, commandline_kwargs)splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource
    +
    +classmethod from_commandline(engine, commandline_kwargs) splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

    Instantiate an FDW data source from commandline arguments.

    -
    -abstract get_fdw_name()
    +
    +abstract get_fdw_name()
    -
    -get_remote_schema_name()str
    +
    +get_remote_schema_name() str

    Override this if the FDW supports IMPORT FOREIGN SCHEMA

    -
    -get_server_options()Mapping[str, str]
    +
    +get_server_options() Mapping[str, str]
    -
    -get_table_options(table_name: str)Mapping[str, str]
    +
    +get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
    -
    -get_table_schema(table_name: str, table_schema: List[splitgraph.core.types.TableColumn])List[splitgraph.core.types.TableColumn]
    +
    +get_table_schema(table_name: str, table_schema: List[splitgraph.core.types.TableColumn]) List[splitgraph.core.types.TableColumn]
    -
    -get_user_options()Mapping[str, str]
    +
    +get_user_options() Mapping[str, str]
    -
    -introspect()Dict[str, List[splitgraph.core.types.TableColumn]]
    +
    +introspect() IntrospectionResult
    -
    -mount(schema: str, tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]] = None, overwrite: bool = True)
    +
    +mount(schema: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, overwrite: bool = True) Optional[List[splitgraph.core.types.MountError]]

    Instantiate the data source as foreign tables in a schema

    -
    -params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;
    +
    +params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
    -
    -preview(schema: Dict[str, List[splitgraph.core.types.TableColumn]])Dict[str, Union[str, List[Dict[str, Any]]]]
    +
    +preview(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]]) PreviewResult
    +
    + +
    +
    +supports_load = True
    -
    -supports_load = True
    +
    +supports_mount = True
    -
    -supports_mount = True
    +
    +table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
    -
    -class splitgraph.hooks.data_source.fdw.MongoDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
    +
    +class splitgraph.hooks.data_source.fdw.MongoDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)

    Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

    -
    -commandline_help: str = 'Mount a Mongo database.\n\nMounts one or more collections on a remote Mongo database as a set of foreign tables locally.'
    +
    +commandline_help: str = 'Mount a Mongo database.\n\nMounts one or more collections on a remote Mongo database as a set of foreign tables locally.'
    -
    -commandline_kwargs_help: str = 'tables: A dictionary of form\n```\n&lbrace;\n    "table_name": &lbrace;\n        "schema": &lbrace;"col1": "type1"...&rbrace;,\n        "options": &lbrace;"db": <dbname>, "coll": <collection>&rbrace; \n    &rbrace; \n&rbrace;\n```\n'
    +
    +commandline_kwargs_help: str = 'tables: A dictionary of form\n```\n&lbrace;\n    "table_name": &lbrace;\n        "schema": &lbrace;"col1": "type1"...&rbrace;,\n        "options": &lbrace;"database": <dbname>, "collection": <collection>&rbrace;\n    &rbrace;\n&rbrace;\n```\n'
    -
    -
    -classmethod get_description()str
    +
    +
    +credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
    -
    -get_fdw_name()
    +
    +classmethod get_description() str
    -
    -classmethod get_name()str
    +
    +get_fdw_name()
    -
    -get_server_options()
    +
    +classmethod get_name() str
    -
    -get_table_options(table_name: str)
    +
    +get_server_options()
    -
    -get_table_schema(table_name, table_schema)
    +
    +get_table_schema(table_name, table_schema)
    -
    -get_user_options()
    +
    +get_user_options()
    -
    -params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'properties': &lbrace;'coll': &lbrace;'type': 'string'&rbrace;, 'db': &lbrace;'type': 'string'&rbrace;, 'required': ['db', 'coll']&rbrace;, 'type': 'object'&rbrace;, 'required': ['options']&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'required': ['host', 'port', 'tables'], 'type': 'object'&rbrace;
    +
    +params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port'], 'type': 'object'&rbrace;
    -
    -tables: Optional[Union[List[str], Dict[str, List[splitgraph.core.types.TableColumn]]]]
    +
    +table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'collection': &lbrace;'type': 'string'&rbrace;, 'database': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['database', 'collection'], 'type': 'object'&rbrace;
    -
    -class splitgraph.hooks.data_source.fdw.MySQLDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
    +
    +class splitgraph.hooks.data_source.fdw.MySQLDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)

    Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

    -
    -commandline_help: str = 'Mount a MySQL database.\n\nMounts a schema on a remote MySQL database as a set of foreign tables locally.'
    +
    +commandline_help: str = 'Mount a MySQL database.\n\nMounts a schema on a remote MySQL database as a set of foreign tables locally.'
    +
    + +
    +
    +commandline_kwargs_help: str = 'dbname: Remote MySQL database name (required)\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n        '
    -
    -commandline_kwargs_help: str = 'remote_schema: Remote schema name (required)\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n        '
    +
    +credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
    -
    -classmethod get_description()str
    +
    +classmethod get_description() str
    -
    -get_fdw_name()
    +
    +get_fdw_name()
    -
    -classmethod get_name()str
    +
    +classmethod get_name() str
    -
    -get_remote_schema_name()str
    +
    +get_remote_schema_name() str

    Override this if the FDW supports IMPORT FOREIGN SCHEMA

    -
    -get_server_options()
    +
    +get_server_options()
    -
    -get_table_options(table_name: str)
    +
    +get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
    -
    -get_user_options()
    +
    +get_user_options()
    -
    -params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'remote_schema': &lbrace;'type': 'string'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'required': ['host', 'port', 'remote_schema'], 'type': 'object'&rbrace;
    +
    +params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'type': 'string'&rbrace;, 'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname'], 'type': 'object'&rbrace;
    -
    -class splitgraph.hooks.data_source.fdw.PostgreSQLDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
    +
    +class splitgraph.hooks.data_source.fdw.PostgreSQLDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)

    Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

    -
    -commandline_help: str = 'Mount a Postgres database.\n\nMounts a schema on a remote Postgres database as a set of foreign tables locally.'
    +
    +commandline_help: str = 'Mount a Postgres database.\n\nMounts a schema on a remote Postgres database as a set of foreign tables locally.'
    -
    -commandline_kwargs_help: str = 'dbname: Database name (required)\nremote_schema: Remote schema name (required)\nextra_server_args: Dictionary of extra arguments to pass to the foreign server\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n    '
    +
    +commandline_kwargs_help: str = 'dbname: Database name (required)\nremote_schema: Remote schema name (required)\nextra_server_args: Dictionary of extra arguments to pass to the foreign server\ntables: Tables to mount (default all). If a list, then will use IMPORT FOREIGN SCHEMA.\nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\n    '
    +
    + +
    +
    +credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'username': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password'], 'type': 'object'&rbrace;
    -
    -classmethod get_description()str
    +
    +classmethod get_description() str
    -
    -get_fdw_name()
    +
    +get_fdw_name()
    -
    -classmethod get_name()str
    +
    +classmethod get_name() str
    -
    -get_remote_schema_name()str
    +
    +get_remote_schema_name() str

    Override this if the FDW supports IMPORT FOREIGN SCHEMA

    -
    -get_server_options()
    +
    +get_server_options()
    -
    -get_table_options(table_name: str)
    +
    +get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
    -
    -get_user_options()
    +
    +get_user_options()
    -
    -params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'description': 'Database name', 'type': 'string'&rbrace;, 'host': &lbrace;'description': 'Remote hostname', 'type': 'string'&rbrace;, 'port': &lbrace;'description': 'Port', 'type': 'integer'&rbrace;, 'remote_schema': &lbrace;'description': 'Remote schema name', 'type': 'string'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname', 'remote_schema'], 'type': 'object'&rbrace;
    +
    +params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'dbname': &lbrace;'description': 'Database name', 'type': 'string'&rbrace;, 'host': &lbrace;'description': 'Remote hostname', 'type': 'string'&rbrace;, 'port': &lbrace;'description': 'Port', 'type': 'integer'&rbrace;, 'remote_schema': &lbrace;'description': 'Remote schema name', 'type': 'string'&rbrace;&rbrace;, 'required': ['host', 'port', 'dbname', 'remote_schema'], 'type': 'object'&rbrace;
    +
    + +
    +
    +table_params_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
    -
    -splitgraph.hooks.data_source.fdw.create_foreign_table(schema: str, server: str, table_name: str, schema_spec: List[splitgraph.core.types.TableColumn], extra_options: Optional[Dict[str, str]] = None)
    +
    +splitgraph.hooks.data_source.fdw.create_foreign_table(schema: str, server: str, table_name: str, schema_spec: List[splitgraph.core.types.TableColumn], extra_options: Optional[Dict[str, str]] = None)
    +
    + +
    +
    +splitgraph.hooks.data_source.fdw.import_foreign_schema(engine: PsycopgEngine, mountpoint: str, remote_schema: str, server_id: str, tables: List[str], options: Optional[Dict[str, str]] = None) List[splitgraph.core.types.MountError]
    -
    -splitgraph.hooks.data_source.fdw.init_fdw(engine: PostgresEngine, server_id: str, wrapper: str, server_options: Optional[Mapping[str, Optional[str]]] = None, user_options: Optional[Mapping[str, str]] = None, overwrite: bool = True)None
    +
    +splitgraph.hooks.data_source.fdw.init_fdw(engine: PsycopgEngine, server_id: str, wrapper: str, server_options: Optional[Mapping[str, Optional[str]]] = None, user_options: Optional[Mapping[str, str]] = None, role: Optional[str] = None, overwrite: bool = True) None

    Sets up a foreign data server on the engine.

    Parameters
    @@ -503,13 +527,39 @@ export const meta = {
  • wrapper – Name of the foreign data wrapper (must be installed as an extension on the engine)

  • server_options – Dictionary of FDW options

  • user_options – Dictionary of user options

  • +
  • role – The name of the role for which the user mapping is created; defaults to public.

  • overwrite – If the server already exists, delete and recreate it.

  • -
    + +
    +

    Module contents

    +
    +
    +splitgraph.hooks.data_source.get_data_source(data_source: str) Type[splitgraph.hooks.data_source.base.DataSource]
    +

    Returns a class for a given data source

    +
    + +
    +
    +splitgraph.hooks.data_source.get_data_sources() List[str]
    +

    Returns the names of all registered data sources.

    +
    + +
    +
    +splitgraph.hooks.data_source.merge_jsonschema(left: Dict[str, Any], right: Dict[str, Any]) Dict[str, Any]
    +
    + +
    +
    +splitgraph.hooks.data_source.register_data_source(name: str, data_source_class: Type[splitgraph.hooks.data_source.base.DataSource]) None
    +

    Returns a data source under a given name.

    +
    -
    -
    + + + \ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.hooks.mdx b/content/docs/9500_python-api/splitgraph.hooks.mdx index f62b1602..bcf19eb3 100644 --- a/content/docs/9500_python-api/splitgraph.hooks.mdx +++ b/content/docs/9500_python-api/splitgraph.hooks.mdx @@ -6,27 +6,10 @@ export const meta = { id: "splitgraph.hooks package" }; -
    -

    Module contents

    -

    Various hooks for extending Splitgraph, including:

    -
    -
      -
    • External object handlers (splitgraph.hooks.external_objects) allowing to download/upload objects -to locations other than the remote Splitgraph engine.

    • -
    • Data sources (splitgraph.hooks.data_sources) that allow to add data to Splitgraph, e.g.

    • -
    -
    -

    using the Postgres engine’s FDW interface to mount other external databases on the engine.

    -
    - -
    -
    +
    -
    -

    Subpackages

    +
    +

    Subpackages

    -
    -
    -

    Submodules

    -
    -
    -

    splitgraph.hooks.external_objects module

    +
    +
    +

    Submodules

    +
    +
    +

    splitgraph.hooks.external_objects module

    Hooks for registering handlers to upload/download objects from external locations into Splitgraph’s cache.

    -
    -class splitgraph.hooks.external_objects.ExternalObjectHandler(params: Dict[Any, Any])
    +
    +class splitgraph.hooks.external_objects.ExternalObjectHandler(params: Dict[Any, Any])

    Bases: object

    Framework for allowing to dump objects from the Splitgraph cache to an external location. This allows the objects to be stored somewhere other than the actual remote engine.

    @@ -61,8 +44,8 @@ uploaded to S3/S3-compatible host using the Minio API. It’s registered in the

    The protocol and the URLs returned by this handler are stored in splitgraph_meta.external_objects and used to download the objects back into the Splitgraph cache when they are needed.

    -
    -download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine)Sequence[str]
    +
    +download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine) Sequence[str]

    Download objects from the external location into the Splitgraph cache.

    Parameters
    @@ -79,8 +62,8 @@ uploaded the objects to.

    -
    -upload_objects(objects: List[str], remote_engine: PsycopgEngine)Sequence[Tuple[str, str]]
    +
    +upload_objects(objects: List[str], remote_engine: PsycopgEngine) Sequence[Tuple[str, str]]

    Upload objects from the Splitgraph cache to an external location

    Parameters
    @@ -98,25 +81,25 @@ uploaded the objects to.

    -
    -splitgraph.hooks.external_objects.get_external_object_handler(name: str, handler_params: Dict[Any, Any])splitgraph.hooks.external_objects.ExternalObjectHandler
    +
    +splitgraph.hooks.external_objects.get_external_object_handler(name: str, handler_params: Dict[Any, Any]) splitgraph.hooks.external_objects.ExternalObjectHandler

    Load an external protocol handler by its name, initializing it with optional parameters.

    -
    -splitgraph.hooks.external_objects.register_upload_download_handler(name: str, handler_class: Callable[[], splitgraph.hooks.external_objects.ExternalObjectHandler])None
    +
    +splitgraph.hooks.external_objects.register_upload_download_handler(name: str, handler_class: Callable[[...], splitgraph.hooks.external_objects.ExternalObjectHandler]) None

    Register an external protocol handler. See the docstring for get_upload_download_handler for the required signatures of the handler functions.

    -
    -
    -

    splitgraph.hooks.mount_handlers module

    + +
    +

    splitgraph.hooks.mount_handlers module

    Extra wrapper code for mount handlers

    -
    -splitgraph.hooks.mount_handlers.mount(mountpoint: str, mount_handler: str, handler_kwargs: Dict[str, Any], overwrite: bool = True, tables: Optional[TableInfo] = None)None
    +
    +splitgraph.hooks.mount_handlers.mount(mountpoint: str, mount_handler: str, handler_kwargs: Dict[str, Any], overwrite: bool = True, tables: Optional[TableInfo] = None) None

    Mounts a foreign database via an FDW (without creating new Splitgraph objects)

    Parameters
    @@ -132,8 +115,8 @@ signatures of the handler functions.

    -
    -splitgraph.hooks.mount_handlers.mount_postgres(mountpoint, **kwargs)None
    +
    +splitgraph.hooks.mount_handlers.mount_postgres(mountpoint, **kwargs) None

    Mount a Postgres database.

    Mounts a schema on a remote Postgres database as a set of foreign tables locally. 

    @@ -155,13 +138,13 @@ signatures of the handler functions.

    If a dictionary, must have the format &lbrace;“table_name”: &lbrace;“col_1”: “type_1”, …&rbrace;&rbrace;.

    -
    -
    -

    splitgraph.hooks.s3 module

    + +
    +

    splitgraph.hooks.s3 module

    Plugin for uploading Splitgraph objects from the cache to an external S3-like object store

    -
    -class splitgraph.hooks.s3.S3ExternalObjectHandler(params: Dict[Any, Any])
    +
    +class splitgraph.hooks.s3.S3ExternalObjectHandler(params: Dict[Any, Any])

    Bases: splitgraph.hooks.external_objects.ExternalObjectHandler

    Uploads/downloads the objects to/from S3/S3-compatible host using the Minio client.

    The handler is “attached” to a given registry which manages issuing pre-signed @@ -169,8 +152,8 @@ GET/PUT URLs.

    The handler supports a parameter threads specifying the number of threads used to upload the objects.

    -
    -download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine)List[str]
    +
    +download_objects(objects: List[Tuple[str, str]], remote_engine: PsycopgEngine) List[str]

    Download objects from Minio.

    Parameters
    @@ -180,8 +163,8 @@ used to upload the objects.

    -
    -upload_objects(objects: List[str], remote_engine: PsycopgEngine)List[Tuple[str, str]]
    +
    +upload_objects(objects: List[str], remote_engine: PsycopgEngine) List[Tuple[str, str]]

    Upload objects to Minio

    Parameters
    @@ -199,24 +182,24 @@ used to upload the objects.

    -
    -splitgraph.hooks.s3.get_object_download_urls(remote_engine, remote_object_ids)
    +
    +splitgraph.hooks.s3.get_object_download_urls(remote_engine, remote_object_ids)
    -
    -splitgraph.hooks.s3.get_object_upload_urls(remote_engine, objects)
    +
    +splitgraph.hooks.s3.get_object_upload_urls(remote_engine, objects)
    -
    -
    -

    splitgraph.hooks.s3_server module

    + +
    +

    splitgraph.hooks.s3_server module

    S3 registry-side routines called from the Python stored procedure that are aware of the actual S3 access creds and generate pre-signed URLs to upload/download objects.

    -
    -splitgraph.hooks.s3_server.delete_objects(client: minio.api.Minio, object_ids: List[str])None
    +
    +splitgraph.hooks.s3_server.delete_objects(client: minio.api.Minio, object_ids: List[str]) None

    Delete objects stored in Minio

    Parameters
    @@ -229,8 +212,8 @@ URLs to upload/download objects.

    -
    -splitgraph.hooks.s3_server.get_object_download_urls(s3_host: str, object_ids: List[str])List[List[str]]
    +
    +splitgraph.hooks.s3_server.get_object_download_urls(s3_host: str, object_ids: List[str]) List[List[str]]

    Return a list of pre-signed URLs that each part of an object can be downloaded from.

    Parameters
    @@ -246,8 +229,8 @@ URLs to upload/download objects.

    -
    -splitgraph.hooks.s3_server.get_object_upload_urls(s3_host: str, object_ids: List[str])List[List[str]]
    +
    +splitgraph.hooks.s3_server.get_object_upload_urls(s3_host: str, object_ids: List[str]) List[List[str]]

    Return a list of pre-signed URLs that each part of an object can be downloaded from.

    Parameters
    @@ -263,8 +246,8 @@ URLs to upload/download objects.

    -
    -splitgraph.hooks.s3_server.list_objects(client: minio.api.Minio)List[str]
    +
    +splitgraph.hooks.s3_server.list_objects(client: minio.api.Minio) List[str]

    List objects stored in Minio

    Parameters
    @@ -276,9 +259,9 @@ URLs to upload/download objects.

    -
    -
    -

    splitgraph.hooks.splitfile_commands module

    + +
    +

    splitgraph.hooks.splitfile_commands module

    A framework for custom Splitfile commands. The execution flow is as follows:

      @@ -298,13 +281,13 @@ new image.

    -
    -class splitgraph.hooks.splitfile_commands.PluginCommand
    +
    +class splitgraph.hooks.splitfile_commands.PluginCommand

    Bases: object

    Base class for custom Splitfile commands.

    -
    -calc_hash(repository, args)
    +
    +calc_hash(repository, args)

    Calculates the command context hash for this custom command. If either the command context hash or the previous image hash has changed, then the image hash produced by this command will change. Consequently, two commands with the same command context hashes are assumed to have the same effect @@ -329,8 +312,8 @@ the command is being run against.

    -
    -execute(repository, args)
    +
    +execute(repository, args)

    Execute the custom command against the target schema, optionally returning the new image hash. The contract for the command is as follows (though it is not currently enforced by the runtime):

    @@ -360,7 +343,24 @@ generated.

    -
    - -
    -
    + +
    +

    Module contents

    +

    Various hooks for extending Splitgraph, including:

    +
    +
      +
    • External object handlers (splitgraph.hooks.external_objects) allowing to download/upload objects +to locations other than the remote Splitgraph engine.

    • +
    • Data sources (splitgraph.hooks.data_sources) that allow to add data to Splitgraph, e.g.

    • +
    +
    +

    using the Postgres engine’s FDW interface to mount other external databases on the engine.

    +
    + +
    +
    + + \ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.ingestion.airbyte.mdx b/content/docs/9500_python-api/splitgraph.ingestion.airbyte.mdx new file mode 100644 index 00000000..c13f4832 --- /dev/null +++ b/content/docs/9500_python-api/splitgraph.ingestion.airbyte.mdx @@ -0,0 +1,667 @@ + + + +export const meta = { + title: "splitgraph.ingestion.airbyte package", + id: "splitgraph.ingestion.airbyte package" +}; + +
    + +
    +

    Submodules

    +
    +
    +

    splitgraph.ingestion.airbyte.data_source module

    +
    +
    +class splitgraph.ingestion.airbyte.data_source.AirbyteDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
    +

    Bases: splitgraph.hooks.data_source.base.SyncableDataSource, abc.ABC

    +

    Generic data source for Airbyte-compliant sources. +We run ingestion by combining an Airbyte source and the Airbyte Postgres destination.

    +
    +
    +airbyte_name: Optional[str] = None
    +
    + +
    +
    +credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'normalization_git_url': &lbrace;'description': 'For `custom` normalization, a URL to the Git repo with the dbt project, for example,`https://uname:pass_or_token@github.com/organisation/repository.git`.', 'title': 'dbt model Git URL', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
    +
    + +
    +
    +cursor_overrides: Optional[Dict[str, List[str]]] = None
    +
    + +
    +
    +docker_environment: Optional[Dict[str, str]] = None
    +
    + +
    +
    +docker_image: Optional[str] = None
    +
    + +
    +
    +get_airbyte_config() Dict[str, Any]
    +
    + +
    +
    +introspect() IntrospectionResult
    +
    + +
    +
    +load(repository: splitgraph.core.repository.Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
    +
    + +
    +
    +normalization_image = 'airbyte/normalization:0.1.59'
    +
    + +
    +
    +params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'normalization_git_branch': &lbrace;'default': 'master', 'description': 'Branch or commit hash to use for the normalization dbt project.', 'title': 'dbt model Git branch', 'type': 'string'&rbrace;, 'normalization_mode': &lbrace;'default': 'basic', 'description': "Whether to normalize raw Airbyte tables. `none` is no normalization, `basic` is Airbyte's basic normalization, `custom` is a custom dbt transformation on the data.", 'enum': ['none', 'basic', 'custom'], 'title': 'Post-ingestion normalization', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
    +
    + +
    +
    +primary_key_overrides: Optional[Dict[str, List[str]]] = None
    +
    + +
    +
    +receiver_image = 'airbyte/destination-postgres:0.3.12'
    +
    + +
    +
    +sync(repository: splitgraph.core.repository.Repository, image_hash: Optional[str] = None, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_state: bool = True) str
    +
    + +
    +
    +table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'airbyte_cursor_fields': &lbrace;'description': "Fields in this stream to be used as a cursor for incremental replication (overrides Airbyte configuration's cursor_field)", 'items': &lbrace;'type': 'string'&rbrace;, 'title': 'Cursor field(s)', 'type': 'array'&rbrace;, 'airbyte_primary_key_fields': &lbrace;'description': "Fields in this stream to be used as a primary key for deduplication (overrides Airbyte configuration's primary_key)", 'items': &lbrace;'type': 'string'&rbrace;, 'title': 'Primary key field(s)', 'type': 'array'&rbrace;&rbrace;, 'type': 'object'&rbrace;
    +
    + +
    + +
    +
    +splitgraph.ingestion.airbyte.data_source.delete_schema_at_end(engine: splitgraph.engine.postgres.engine.PostgresEngine, schema: str) Generator
    +
    + +
    +
    +splitgraph.ingestion.airbyte.data_source.getrandbits(k) x.  Generates an int with k random bits.
    +
    + +
    +
    +

    splitgraph.ingestion.airbyte.docker_utils module

    +
    +
    +exception splitgraph.ingestion.airbyte.docker_utils.SubprocessError
    +

    Bases: splitgraph.exceptions.SplitGraphError

    +
    + +
    +
    +splitgraph.ingestion.airbyte.docker_utils.add_files(container: docker.models.containers.Container, files: List[Tuple[str, str]]) None
    +
    + +
    +
    +splitgraph.ingestion.airbyte.docker_utils.build_command(files: List[Tuple[str, Any]]) List[str]
    +
    + +
    +
    +splitgraph.ingestion.airbyte.docker_utils.detect_network_mode() str
    +
    + +
    +
    +splitgraph.ingestion.airbyte.docker_utils.remove_at_end(container: docker.models.containers.Container) docker.models.containers.Container
    +
    + +
    +
    +splitgraph.ingestion.airbyte.docker_utils.wait_not_failed(container: docker.models.containers.Container, mirror_logs: bool = False) None
    +

    Block until a Docker container exits.

    +

    :raises SubprocessError if the container exited with a non-zero code.

    +
    + +
    +
    +

    splitgraph.ingestion.airbyte.models module

    +
    +
    +class splitgraph.ingestion.airbyte.models.AirbyteCatalog(*, streams: List[splitgraph.ingestion.airbyte.models.AirbyteStream], **extra_data: Any)
    +

    Bases: pydantic.main.BaseModel

    +
    +
    +class Config
    +

    Bases: object

    +
    +
    +extra = 'allow'
    +
    + +
    + +
    +
    +streams: List[splitgraph.ingestion.airbyte.models.AirbyteStream]
    +
    + +
    + +
    +
    +class splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus(*, status: splitgraph.ingestion.airbyte.models.Status, message: str = None, **extra_data: Any)
    +

    Bases: pydantic.main.BaseModel

    +
    +
    +class Config
    +

    Bases: object

    +
    +
    +extra = 'allow'
    +
    + +
    + +
    +
    +message: Optional[str]
    +
    + +
    +
    +status: splitgraph.ingestion.airbyte.models.Status
    +
    + +
    + +
    +
    +class splitgraph.ingestion.airbyte.models.AirbyteLogMessage(*, level: splitgraph.ingestion.airbyte.models.Level, message: str, **extra_data: Any)
    +

    Bases: pydantic.main.BaseModel

    +
    +
    +class Config
    +

    Bases: object

    +
    +
    +extra = 'allow'
    +
    + +
    + +
    +
    +level: splitgraph.ingestion.airbyte.models.Level
    +
    + +
    +
    +message: str
    +
    + +
    + +
    +
    +class splitgraph.ingestion.airbyte.models.AirbyteMessage(*, type: splitgraph.ingestion.airbyte.models.Type, log: splitgraph.ingestion.airbyte.models.AirbyteLogMessage = None, spec: splitgraph.ingestion.airbyte.models.ConnectorSpecification = None, connectionStatus: splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus = None, catalog: splitgraph.ingestion.airbyte.models.AirbyteCatalog = None, record: splitgraph.ingestion.airbyte.models.AirbyteRecordMessage = None, state: splitgraph.ingestion.airbyte.models.AirbyteStateMessage = None, **extra_data: Any)
    +

    Bases: pydantic.main.BaseModel

    +
    +
    +class Config
    +

    Bases: object

    +
    +
    +extra = 'allow'
    +
    + +
    + +
    +
    +catalog: Optional[splitgraph.ingestion.airbyte.models.AirbyteCatalog]
    +
    + +
    +
    +connectionStatus: Optional[splitgraph.ingestion.airbyte.models.AirbyteConnectionStatus]
    +
    + +
    +
    +log: Optional[splitgraph.ingestion.airbyte.models.AirbyteLogMessage]
    +
    + +
    +
    +record: Optional[splitgraph.ingestion.airbyte.models.AirbyteRecordMessage]
    +
    + +
    +
    +spec: Optional[splitgraph.ingestion.airbyte.models.ConnectorSpecification]
    +
    + +
    +
    +state: Optional[splitgraph.ingestion.airbyte.models.AirbyteStateMessage]
    +
    + +
    +
    +type: splitgraph.ingestion.airbyte.models.Type
    +
    + +
    + +
    +
    +class splitgraph.ingestion.airbyte.models.AirbyteProtocol(*, airbyte_message: splitgraph.ingestion.airbyte.models.AirbyteMessage = None, configured_airbyte_catalog: splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog = None)
    +

    Bases: pydantic.main.BaseModel

    +
    +
    +airbyte_message: Optional[splitgraph.ingestion.airbyte.models.AirbyteMessage]
    +
    + +
    +
    +configured_airbyte_catalog: Optional[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog]
    +
    + +
    + +
    +
    +class splitgraph.ingestion.airbyte.models.AirbyteRecordMessage(*, stream: str, data: Dict[str, Any], emitted_at: int, namespace: str = None, **extra_data: Any)
    +

    Bases: pydantic.main.BaseModel

    +
    +
    +class Config
    +

    Bases: object

    +
    +
    +extra = 'allow'
    +
    + +
    + +
    +
    +data: Dict[str, Any]
    +
    + +
    +
    +emitted_at: int
    +
    + +
    +
    +namespace: Optional[str]
    +
    + +
    +
    +stream: str
    +
    + +
    + +
    +
    +class splitgraph.ingestion.airbyte.models.AirbyteStateMessage(*, data: Dict[str, Any], **extra_data: Any)
    +

    Bases: pydantic.main.BaseModel

    +
    +
    +class Config
    +

    Bases: object

    +
    +
    +extra = 'allow'
    +
    + +
    + +
    +
    +data: Dict[str, Any]
    +
    + +
    + +
    +
    +class splitgraph.ingestion.airbyte.models.AirbyteStream(*, name: str, json_schema: Dict[str, Any], supported_sync_modes: List[splitgraph.ingestion.airbyte.models.SyncMode] = None, source_defined_cursor: bool = None, default_cursor_field: List[str] = None, source_defined_primary_key: List[List[str]] = None, namespace: str = None, **extra_data: Any)
    +

    Bases: pydantic.main.BaseModel

    +
    +
    +class Config
    +

    Bases: object

    +
    +
    +extra = 'allow'
    +
    + +
    + +
    +
    +default_cursor_field: Optional[List[str]]
    +
    + +
    +
    +json_schema: Dict[str, Any]
    +
    + +
    +
    +name: str
    +
    + +
    +
    +namespace: Optional[str]
    +
    + +
    +
    +source_defined_cursor: Optional[bool]
    +
    + +
    +
    +source_defined_primary_key: Optional[List[List[str]]]
    +
    + +
    +
    +supported_sync_modes: Optional[List[splitgraph.ingestion.airbyte.models.SyncMode]]
    +
    + +
    + +
    +
    +class splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog(*, streams: List[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream], **extra_data: Any)
    +

    Bases: pydantic.main.BaseModel

    +
    +
    +class Config
    +

    Bases: object

    +
    +
    +extra = 'allow'
    +
    + +
    + +
    +
    +streams: List[splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream]
    +
    + +
    + +
    +
    +class splitgraph.ingestion.airbyte.models.ConfiguredAirbyteStream(*, stream: splitgraph.ingestion.airbyte.models.AirbyteStream, sync_mode: splitgraph.ingestion.airbyte.models.SyncMode, cursor_field: List[str] = None, destination_sync_mode: splitgraph.ingestion.airbyte.models.DestinationSyncMode, primary_key: List[List[str]] = None, **extra_data: Any)
    +

    Bases: pydantic.main.BaseModel

    +
    +
    +class Config
    +

    Bases: object

    +
    +
    +extra = 'allow'
    +
    + +
    + +
    +
    +cursor_field: Optional[List[str]]
    +
    + +
    +
    +destination_sync_mode: splitgraph.ingestion.airbyte.models.DestinationSyncMode
    +
    + +
    +
    +primary_key: Optional[List[List[str]]]
    +
    + +
    +
    +stream: splitgraph.ingestion.airbyte.models.AirbyteStream
    +
    + +
    +
    +sync_mode: splitgraph.ingestion.airbyte.models.SyncMode
    +
    + +
    + +
    +
    +class splitgraph.ingestion.airbyte.models.ConnectorSpecification(*, documentationUrl: pydantic.networks.AnyUrl = None, changelogUrl: pydantic.networks.AnyUrl = None, connectionSpecification: Dict[str, Any], supportsIncremental: bool = None, supportsNormalization: bool = False, supportsDBT: bool = False, supported_destination_sync_modes: List[splitgraph.ingestion.airbyte.models.DestinationSyncMode] = None, **extra_data: Any)
    +

    Bases: pydantic.main.BaseModel

    +
    +
    +class Config
    +

    Bases: object

    +
    +
    +extra = 'allow'
    +
    + +
    + +
    +
    +changelogUrl: Optional[pydantic.networks.AnyUrl]
    +
    + +
    +
    +connectionSpecification: Dict[str, Any]
    +
    + +
    +
    +documentationUrl: Optional[pydantic.networks.AnyUrl]
    +
    + +
    +
    +supported_destination_sync_modes: Optional[List[splitgraph.ingestion.airbyte.models.DestinationSyncMode]]
    +
    + +
    +
    +supportsDBT: Optional[bool]
    +
    + +
    +
    +supportsIncremental: Optional[bool]
    +
    + +
    +
    +supportsNormalization: Optional[bool]
    +
    + +
    + +
    +
    +class splitgraph.ingestion.airbyte.models.DestinationSyncMode(value)
    +

    Bases: enum.Enum

    +

    An enumeration.

    +
    +
    +append = 'append'
    +
    + +
    +
    +append_dedup = 'append_dedup'
    +
    + +
    +
    +overwrite = 'overwrite'
    +
    + +
    + +
    +
    +class splitgraph.ingestion.airbyte.models.Level(value)
    +

    Bases: enum.Enum

    +

    An enumeration.

    +
    +
    +DEBUG = 'DEBUG'
    +
    + +
    +
    +ERROR = 'ERROR'
    +
    + +
    +
    +FATAL = 'FATAL'
    +
    + +
    +
    +INFO = 'INFO'
    +
    + +
    +
    +TRACE = 'TRACE'
    +
    + +
    +
    +WARN = 'WARN'
    +
    + +
    + +
    +
    +class splitgraph.ingestion.airbyte.models.Status(value)
    +

    Bases: enum.Enum

    +

    An enumeration.

    +
    +
    +FAILED = 'FAILED'
    +
    + +
    +
    +SUCCEEDED = 'SUCCEEDED'
    +
    + +
    + +
    +
    +class splitgraph.ingestion.airbyte.models.SyncMode(value)
    +

    Bases: enum.Enum

    +

    An enumeration.

    +
    +
    +full_refresh = 'full_refresh'
    +
    + +
    +
    +incremental = 'incremental'
    +
    + +
    + +
    +
    +class splitgraph.ingestion.airbyte.models.Type(value)
    +

    Bases: enum.Enum

    +

    An enumeration.

    +
    +
    +CATALOG = 'CATALOG'
    +
    + +
    +
    +CONNECTION_STATUS = 'CONNECTION_STATUS'
    +
    + +
    +
    +LOG = 'LOG'
    +
    + +
    +
    +RECORD = 'RECORD'
    +
    + +
    +
    +SPEC = 'SPEC'
    +
    + +
    +
    +STATE = 'STATE'
    +
    + +
    + +
    +
    +

    splitgraph.ingestion.airbyte.utils module

    +
    +
    +splitgraph.ingestion.airbyte.utils.get_pk_cursor_fields(stream: splitgraph.ingestion.airbyte.models.AirbyteStream, table_params: TableParams, cursor_overrides: Optional[Dict[str, List[str]]] = None, primary_key_overrides: Optional[Dict[str, List[str]]] = None) Tuple[Optional[List[str]], Optional[List[List[str]]]]
    +
    + +
    +
    +splitgraph.ingestion.airbyte.utils.get_sg_schema(stream: splitgraph.ingestion.airbyte.models.AirbyteStream) List[splitgraph.core.types.TableColumn]
    +
    + +
    +
    +splitgraph.ingestion.airbyte.utils.select_streams(catalog: splitgraph.ingestion.airbyte.models.AirbyteCatalog, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]], sync: bool = False, cursor_overrides: Optional[Dict[str, List[str]]] = None, primary_key_overrides: Optional[Dict[str, List[str]]] = None) splitgraph.ingestion.airbyte.models.ConfiguredAirbyteCatalog
    +
    + +
    +
    +

    Module contents

    +
    +
    +
    \ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.ingestion.csv.mdx b/content/docs/9500_python-api/splitgraph.ingestion.csv.mdx index 3f5022ad..a9f1d4d7 100644 --- a/content/docs/9500_python-api/splitgraph.ingestion.csv.mdx +++ b/content/docs/9500_python-api/splitgraph.ingestion.csv.mdx @@ -6,169 +6,315 @@ export const meta = { id: "splitgraph.ingestion.csv package" }; -
    -

    Module contents

    +
    + +
    +

    Submodules

    +
    +
    +

    splitgraph.ingestion.csv.common module

    -
    -class splitgraph.ingestion.csv.CSVDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
    -

    Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

    +
    +class splitgraph.ingestion.csv.common.CSVOptions(autodetect_header, autodetect_dialect, autodetect_encoding, autodetect_sample_size, schema_inference_rows, delimiter, quotechar, header, encoding, ignore_decode_errors)
    +

    Bases: tuple

    -
    -commandline_help: str = 'Mount CSV files in S3/HTTP.\n\nIf passed an URL, this will live query a CSV file on an HTTP server. If passed\nS3 access credentials, this will scan a bucket for CSV files, infer their schema\nand make them available to query over SQL.  \n\nFor example:  \n\n\x08\n```\nsgr mount csv target_schema -o@- <<EOF\n  &lbrace;\n    "s3_endpoint": "cdn.mycompany.com:9000",\n    "s3_access_key": "ABCDEF",\n    "s3_secret_key": "GHIJKL",\n    "s3_bucket": "data",\n    "s3_object_prefix": "csv_files/current/",\n    "autodetect_header": true,\n    "autodetect_dialect": true\n  &rbrace;\nEOF\n```\n'
    -
    +
    +autodetect_dialect: bool
    +

    Alias for field number 1

    +
    -
    -commandline_kwargs_help: str = 's3_access_key:\ns3_secret_key:\ntables: Tables to mount (default all). If a list, will import only these tables. \nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\nurl: HTTP URL to the CSV file.\ns3_endpoint: S3 endpoint (including port if required).\ns3_region: Region of the S3 bucket.\ns3_secure: Whether to use HTTPS for S3 access.\ns3_bucket: Bucket the object is in.\ns3_object_prefix: Prefix for object in S3 bucket.\nautodetect_header: Detect whether the CSV file has a header automatically.\nautodetect_dialect: Detect the CSV file\'s dialect (separator, quoting characters etc) automatically.\nheader: First line of the CSV file is its header.\nseparator: Character used to separate fields in the file.\nquotechar: Character used to quote fields.'
    -
    +
    +autodetect_encoding: bool
    +

    Alias for field number 2

    +
    -
    -credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'s3_access_key': &lbrace;'type': 'string'&rbrace;, 's3_secret_key': &lbrace;'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
    -
    +
    +autodetect_header: bool
    +

    Alias for field number 0

    +
    + +
    +
    +autodetect_sample_size: int
    +

    Alias for field number 3

    +
    + +
    +
    +delimiter: str
    +

    Alias for field number 5

    +
    + +
    +
    +encoding: str
    +

    Alias for field number 8

    +
    -
    -classmethod from_commandline(engine, commandline_kwargs)splitgraph.ingestion.csv.CSVDataSource
    -

    Instantiate an FDW data source from commandline arguments.

    +
    +classmethod from_fdw_options(fdw_options)
    +
    + +
    +
    +header: bool
    +

    Alias for field number 7

    +
    + +
    +
    +ignore_decode_errors: bool
    +

    Alias for field number 9

    +
    + +
    +
    +quotechar: str
    +

    Alias for field number 6

    +
    + +
    +
    +schema_inference_rows: int
    +

    Alias for field number 4

    -
    -classmethod get_description()str
    +
    +to_csv_kwargs()
    -
    -get_fdw_name()
    +
    +to_table_options()
    +

    Turn this into a dict of table options that can be plugged back into CSVDataSource.

    +
    + + + +
    +
    +splitgraph.ingestion.csv.common.autodetect_csv(stream: io.RawIOBase, csv_options: splitgraph.ingestion.csv.common.CSVOptions) splitgraph.ingestion.csv.common.CSVOptions
    +

    Autodetect the CSV dialect, encoding, header etc.

    +
    + +
    +
    +splitgraph.ingestion.csv.common.dump_options(options: Dict[str, Any]) Dict[str, str]
    +
    +
    +splitgraph.ingestion.csv.common.get_s3_params(fdw_options: Dict[str, Any]) Tuple[minio.api.Minio, str, str]
    +
    + +
    +
    +splitgraph.ingestion.csv.common.load_options(options: Dict[str, str]) Dict[str, Any]
    +
    + +
    +
    +splitgraph.ingestion.csv.common.log_to_postgres(*args, **kwargs)
    +
    + +
    +
    +splitgraph.ingestion.csv.common.make_csv_reader(response: io.IOBase, csv_options: splitgraph.ingestion.csv.common.CSVOptions) Tuple[splitgraph.ingestion.csv.common.CSVOptions, _csv._reader]
    +
    + +
    +
    +splitgraph.ingestion.csv.common.pad_csv_row(row: List[str], num_cols: int, row_number: int) List[str]
    +

    Preprocess a CSV file row to make the parser more robust.

    +
    + +
    +
    +

    splitgraph.ingestion.csv.fdw module

    +
    +
    +class splitgraph.ingestion.csv.fdw.CSVForeignDataWrapper(fdw_options, fdw_columns)
    +

    Bases: object

    +

    Foreign data wrapper for CSV files stored in S3 buckets or HTTP

    -
    -classmethod get_name()str
    +
    +can_sort(sortkeys)
    -
    -get_remote_schema_name()str
    -

    Override this if the FDW supports IMPORT FOREIGN SCHEMA

    +
    +execute(quals, columns, sortkeys=None)
    +

    Main Multicorn entry point.

    -
    -get_server_options()
    +
    +explain(quals, columns, sortkeys=None, verbose=False)
    -
    -get_table_options(table_name: str)Mapping[str, str]
    +
    +get_rel_size(quals, columns)
    -
    -
    -params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'autodetect_dialect': &lbrace;'description': "Detect the CSV file's dialect (separator, quoting characters etc) automatically", 'type': 'boolean'&rbrace;, 'autodetect_header': &lbrace;'description': 'Detect whether the CSV file has a header automatically', 'type': 'boolean'&rbrace;, 'header': &lbrace;'description': 'First line of the CSV file is its header', 'type': 'boolean'&rbrace;, 'quotechar': &lbrace;'description': 'Character used to quote fields', 'type': 'string'&rbrace;, 's3_bucket': &lbrace;'description': 'Bucket the object is in', 'type': 'string'&rbrace;, 's3_endpoint': &lbrace;'description': 'S3 endpoint (including port if required)', 'type': 'string'&rbrace;, 's3_object_prefix': &lbrace;'description': 'Prefix for object in S3 bucket', 'type': 'string'&rbrace;, 's3_region': &lbrace;'description': 'Region of the S3 bucket', 'type': 'string'&rbrace;, 's3_secure': &lbrace;'description': 'Whether to use HTTPS for S3 access', 'type': 'boolean'&rbrace;, 'separator': &lbrace;'description': 'Character used to separate fields in the file', 'type': 'string'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;, 'url': &lbrace;'description': 'HTTP URL to the CSV file', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
    +
    +
    +classmethod import_schema(schema, srv_options, options, restriction_type, restricts)
    +
    + +
    + +
    +
    +splitgraph.ingestion.csv.fdw.log_to_postgres(*args, **kwargs)
    +
    +
    +splitgraph.ingestion.csv.fdw.report_errors(table_name: str)
    +

    Context manager that ignores exceptions and serializes them to JSON using PG’s notice +mechanism instead. The data source is meant to load these to report on partial failures +(e.g. failed to load one table, but not others).

    +
    + +
    +
    +

    Module contents

    +
    +
    +class splitgraph.ingestion.csv.CSVDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
    +

    Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

    -
    -supports_load = True
    +
    +commandline_help: str = 'Mount CSV files in S3/HTTP.\n\nIf passed an URL, this will live query a CSV file on an HTTP server. If passed\nS3 access credentials, this will scan a bucket for CSV files, infer their schema\nand make them available to query over SQL.  \n\nFor example:  \n\n\x08\n```\nsgr mount csv target_schema -o@- <<EOF\n  &lbrace;\n    "s3_endpoint": "cdn.mycompany.com:9000",\n    "s3_access_key": "ABCDEF",\n    "s3_secret_key": "GHIJKL",\n    "s3_bucket": "data",\n    "s3_object_prefix": "csv_files/current/",\n    "autodetect_header": true,\n    "autodetect_dialect": true,\n    "autodetect_encoding": true\n  &rbrace;\nEOF\n```\n'
    -
    -supports_mount = True
    +
    +commandline_kwargs_help: str = "s3_access_key:\ns3_secret_key:\nconnection:\nautodetect_header: Detect whether the CSV file has a header automatically.\nautodetect_dialect: Detect the CSV file's dialect (separator, quoting characters etc) automatically.\nautodetect_encoding: Detect the CSV file's encoding automatically.\nautodetect_sample_size: Sample size, in bytes, for encoding/dialect/header detection.\nschema_inference_rows: Number of rows to use for schema inference.\nencoding: Encoding of the CSV file.\nignore_decode_errors: Ignore errors when decoding the file.\nheader: First line of the CSV file is its header.\ndelimiter: Character used to separate fields in the file.\nquotechar: Character used to quote fields."
    -
    -supports_sync = False
    +
    +credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'s3_access_key': &lbrace;'type': 'string'&rbrace;, 's3_secret_key': &lbrace;'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
    +
    +
    +classmethod from_commandline(engine, commandline_kwargs) splitgraph.ingestion.csv.CSVDataSource
    +

    Instantiate an FDW data source from commandline arguments.

    -
    -
    -class splitgraph.ingestion.csv.CSVIngestionAdapter
    -

    Bases: splitgraph.ingestion.common.IngestionAdapter

    -
    -static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
    +
    +classmethod get_description() str
    -
    -static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
    +
    +get_fdw_name()
    -
    -static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
    +
    +classmethod get_name() str
    +
    +
    +get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
    +

    Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

    -
    -
    -splitgraph.ingestion.csv.copy_csv_buffer(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = False, **kwargs)
    -

    Copy CSV data from a buffer into a given schema/table

    +
    +
    +get_remote_schema_name() str
    +

    Override this if the FDW supports IMPORT FOREIGN SCHEMA

    -
    -
    -splitgraph.ingestion.csv.query_to_csv(engine: PsycopgEngine, query, buffer, schema: Optional[str] = None)
    +
    +
    +get_server_options()
    -
    - -
    -

    Submodules

    -
    -
    -

    splitgraph.ingestion.csv.fdw module

    -
    -
    -class splitgraph.ingestion.csv.fdw.CSVForeignDataWrapper(fdw_options, fdw_columns)
    -

    Bases: object

    -

    Foreign data wrapper for CSV files stored in S3 buckets or HTTP

    -
    -can_sort(sortkeys)
    +
    +get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
    -
    -execute(quals, columns, sortkeys=None)
    -

    Main Multicorn entry point.

    +
    +classmethod migrate_params(params: Params) Params
    +
    + +
    +
    +params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'autodetect_dialect': &lbrace;'default': True, 'description': "Detect the CSV file's dialect (separator, quoting characters etc) automatically", 'type': 'boolean'&rbrace;, 'autodetect_encoding': &lbrace;'default': True, 'description': "Detect the CSV file's encoding automatically", 'type': 'boolean'&rbrace;, 'autodetect_header': &lbrace;'default': True, 'description': 'Detect whether the CSV file has a header automatically', 'type': 'boolean'&rbrace;, 'autodetect_sample_size': &lbrace;'default': 65536, 'description': 'Sample size, in bytes, for encoding/dialect/header detection', 'type': 'integer'&rbrace;, 'connection': &lbrace;'oneOf': [&lbrace;'type': 'object', 'required': ['connection_type', 'url'], 'properties': &lbrace;'connection_type': &lbrace;'type': 'string', 'const': 'http'&rbrace;, 'url': &lbrace;'type': 'string', 'description': 'HTTP URL to the CSV file'&rbrace;&rbrace;&rbrace;, &lbrace;'type': 'object', 'required': ['connection_type', 's3_endpoint', 's3_bucket'], 'properties': &lbrace;'connection_type': &lbrace;'type': 'string', 'const': 's3'&rbrace;, 's3_endpoint': &lbrace;'type': 'string', 'description': 'S3 endpoint (including port if required)'&rbrace;, 's3_region': &lbrace;'type': 'string', 'description': 'Region of the S3 bucket'&rbrace;, 's3_secure': &lbrace;'type': 'boolean', 'description': 'Whether to use HTTPS for S3 access'&rbrace;, 's3_bucket': &lbrace;'type': 'string', 'description': 'Bucket the object is in'&rbrace;, 's3_object': &lbrace;'type': 'string', 'description': 'Limit the import to a single object'&rbrace;, 's3_object_prefix': &lbrace;'type': 'string', 'description': 'Prefix for object in S3 bucket'&rbrace;&rbrace;&rbrace;], 'type': 'object'&rbrace;, 'delimiter': &lbrace;'default': ',', 'description': 'Character used to separate fields in the file', 'type': 'string'&rbrace;, 'encoding': &lbrace;'default': 'utf-8', 'description': 'Encoding of the CSV file', 'type': 'string'&rbrace;, 'header': &lbrace;'default': True, 'description': 'First line of the CSV file is its header', 'type': 'boolean'&rbrace;, 'ignore_decode_errors': &lbrace;'default': False, 'description': 'Ignore errors when decoding the file', 'type': 'boolean'&rbrace;, 'quotechar': &lbrace;'default': '"', 'description': 'Character used to quote fields', 'type': 'string'&rbrace;, 'schema_inference_rows': &lbrace;'default': 100000, 'description': 'Number of rows to use for schema inference', 'type': 'integer'&rbrace;&rbrace;, 'type': 'object'&rbrace;
    +
    + +
    +
    +supports_load = True
    +
    + +
    +
    +supports_mount = True
    +
    + +
    +
    +supports_sync = False
    +
    + +
    +
    +table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'autodetect_dialect': &lbrace;'default': True, 'description': "Detect the CSV file's dialect (separator, quoting characters etc) automatically", 'type': 'boolean'&rbrace;, 'autodetect_encoding': &lbrace;'default': True, 'description': "Detect the CSV file's encoding automatically", 'type': 'boolean'&rbrace;, 'autodetect_header': &lbrace;'default': True, 'description': 'Detect whether the CSV file has a header automatically', 'type': 'boolean'&rbrace;, 'autodetect_sample_size': &lbrace;'default': 65536, 'description': 'Sample size, in bytes, for encoding/dialect/header detection', 'type': 'integer'&rbrace;, 'delimiter': &lbrace;'default': ',', 'description': 'Character used to separate fields in the file', 'type': 'string'&rbrace;, 'encoding': &lbrace;'default': 'utf-8', 'description': 'Encoding of the CSV file', 'type': 'string'&rbrace;, 'header': &lbrace;'default': True, 'description': 'First line of the CSV file is its header', 'type': 'boolean'&rbrace;, 'ignore_decode_errors': &lbrace;'default': False, 'description': 'Ignore errors when decoding the file', 'type': 'boolean'&rbrace;, 'quotechar': &lbrace;'default': '"', 'description': 'Character used to quote fields', 'type': 'string'&rbrace;, 's3_object': &lbrace;'description': 'S3 object of the CSV file', 'type': 'string'&rbrace;, 'schema_inference_rows': &lbrace;'default': 100000, 'description': 'Number of rows to use for schema inference', 'type': 'integer'&rbrace;, 'url': &lbrace;'description': 'HTTP URL to the CSV file', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
    +
    +
    +
    +
    +class splitgraph.ingestion.csv.CSVIngestionAdapter
    +

    Bases: splitgraph.ingestion.common.IngestionAdapter

    -
    -explain(quals, columns, sortkeys=None, verbose=False)
    +
    +static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
    -
    -get_rel_size(quals, columns)
    +
    +static data_to_new_table(data, engine: PostgresEngine, schema: str, table: str, no_header: bool = True, **kwargs)
    -
    -classmethod import_schema(schema, srv_options, options, restriction_type, restricts)
    +
    +static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
    -
    -splitgraph.ingestion.csv.fdw.get_bool(params: Dict[str, str], key: str, default: bool = True)bool
    -
    +
    +splitgraph.ingestion.csv.copy_csv_buffer(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = False, **kwargs)
    +

    Copy CSV data from a buffer into a given schema/table

    +
    -
    -splitgraph.ingestion.csv.fdw.make_csv_reader(response: io.IOBase, autodetect_header: bool = False, autodetect_dialect: bool = False, delimiter: str = ',', quotechar: str = '"', header: bool = True, encoding: str = 'utf-8')
    +
    +splitgraph.ingestion.csv.query_to_csv(engine: PsycopgEngine, query, buffer, schema: Optional[str] = None)
    -
    - -
    -
    + + +
    \ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.ingestion.mdx b/content/docs/9500_python-api/splitgraph.ingestion.mdx index d70c0584..f8d6fb10 100644 --- a/content/docs/9500_python-api/splitgraph.ingestion.mdx +++ b/content/docs/9500_python-api/splitgraph.ingestion.mdx @@ -6,20 +6,39 @@ export const meta = { id: "splitgraph.ingestion package" }; -
    -

    Module contents

    -
    +
    - -
    -

    Submodules

    -
    -
    -

    splitgraph.ingestion.common module

    +
    +
    +

    Submodules

    +
    +
    +

    splitgraph.ingestion.common module

    -
    -class splitgraph.ingestion.common.IngestionAdapter
    +
    +class splitgraph.ingestion.common.IngestionAdapter

    Bases: object

    -
    -abstract create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
    +
    +abstract create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
    -
    -abstract data_to_new_table(data, engine, schema: str, table: str, no_header: bool = True, **kwargs)
    +
    +abstract data_to_new_table(data, engine, schema: str, table: str, no_header: bool = True, **kwargs)
    -
    -abstract query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
    +
    +abstract query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
    -
    -to_data(query: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)
    +
    +to_data(query: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)
    -
    -to_table(data, repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True, no_header: bool = False, **kwargs)
    +
    +to_table(data, repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True, no_header: bool = False, **kwargs)
    -
    -splitgraph.ingestion.common.build_commandline_help(json_schema)
    +
    +splitgraph.ingestion.common.add_timestamp_tags(repository: splitgraph.core.repository.Repository, image_hash: str)
    -
    -splitgraph.ingestion.common.dedupe_sg_schema(schema_spec: List[splitgraph.core.types.TableColumn], prefix_len: int = 59)List[splitgraph.core.types.TableColumn]
    +
    +splitgraph.ingestion.common.build_commandline_help(json_schema)
    +
    + +
    +
    +splitgraph.ingestion.common.dedupe_sg_schema(schema_spec: List[splitgraph.core.types.TableColumn], prefix_len: int = 59) List[splitgraph.core.types.TableColumn]

    Some foreign schemas have columns that are longer than 63 characters where the first 63 characters are the same between several columns (e.g. odn.data.socrata.com). This routine renames columns in a schema @@ -86,60 +110,81 @@ to make sure this can’t happen (by giving duplicates a number suffix).

    -
    -splitgraph.ingestion.common.merge_tables(engine: splitgraph.engine.postgres.engine.PsycopgEngine, source_schema: str, source_table: str, source_schema_spec: List[splitgraph.core.types.TableColumn], target_schema: str, target_table: str, target_schema_spec: List[splitgraph.core.types.TableColumn])
    +
    +splitgraph.ingestion.common.generate_column_names(schema_spec: List[splitgraph.core.types.TableColumn], prefix: str = 'col_') List[splitgraph.core.types.TableColumn]
    +

    Replace empty column names with autogenerated ones

    +
    + +
    +
    +splitgraph.ingestion.common.merge_tables(engine: splitgraph.engine.postgres.engine.PsycopgEngine, source_schema: str, source_table: str, source_schema_spec: List[splitgraph.core.types.TableColumn], target_schema: str, target_table: str, target_schema_spec: List[splitgraph.core.types.TableColumn])
    -
    -splitgraph.ingestion.common.schema_compatible(source_schema: List[splitgraph.core.types.TableColumn], target_schema: List[splitgraph.core.types.TableColumn])bool
    +
    +splitgraph.ingestion.common.schema_compatible(source_schema: List[splitgraph.core.types.TableColumn], target_schema: List[splitgraph.core.types.TableColumn]) bool

    Quick check to see if a dataframe with target_schema can be written into source_schema. There are some implicit type conversions that SQLAlchemy/Pandas can do so we don’t want to immediately fail if the column types aren’t exactly the same (eg bigint vs numeric etc). Most errors should be caught by PG itself.

    Schema is a list of (ordinal, name, type, is_pk).

    -
    -
    -

    splitgraph.ingestion.inference module

    + +
    +

    splitgraph.ingestion.inference module

    -
    -splitgraph.ingestion.inference.infer_sg_schema(sample: List[Tuple[str, ]], override_types: Optional[Dict[str, Any]], primary_keys: Optional[List[str]] = None)
    +
    +splitgraph.ingestion.inference.infer_sg_schema(sample: Sequence[List[str]], override_types: Optional[Dict[str, str]] = None, primary_keys: Optional[List[str]] = None)
    -
    -splitgraph.ingestion.inference.parse_boolean(boolean: str)
    +
    +splitgraph.ingestion.inference.parse_bigint(integer: str)
    -
    -
    -

    splitgraph.ingestion.pandas module

    +
    +
    +splitgraph.ingestion.inference.parse_boolean(boolean: str)
    +
    + +
    +
    +splitgraph.ingestion.inference.parse_int(integer: str)
    +
    + +
    +
    +splitgraph.ingestion.inference.parse_json(json_s: str)
    +
    + + +
    +

    splitgraph.ingestion.pandas module

    Routines that ingest/export CSV files to/from Splitgraph images using Pandas

    -
    -class splitgraph.ingestion.pandas.PandasIngestionAdapter
    +
    +class splitgraph.ingestion.pandas.PandasIngestionAdapter

    Bases: splitgraph.ingestion.common.IngestionAdapter

    -
    -static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
    +
    +static create_ingestion_table(data, engine, schema: str, table: str, **kwargs)
    -
    -static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
    +
    +static data_to_new_table(data, engine: PsycopgEngine, schema: str, table: str, no_header: bool = True, **kwargs)
    -
    -static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
    +
    +static query_to_data(engine, query: str, schema: Optional[str] = None, **kwargs)
    -
    -splitgraph.ingestion.pandas.df_to_table(df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True)None
    +
    +splitgraph.ingestion.pandas.df_to_table(df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], repository: splitgraph.core.repository.Repository, table: str, if_exists: str = 'patch', schema_check: bool = True) None

    Writes a Pandas DataFrame to a checked-out Splitgraph table. Doesn’t create a new image.

    Parameters
    @@ -157,13 +202,13 @@ recreated.
    -
    -splitgraph.ingestion.pandas.df_to_table_fast(engine: PsycopgEngine, df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], target_schema: str, target_table: str)
    +
    +splitgraph.ingestion.pandas.df_to_table_fast(engine: PsycopgEngine, df: Union[pandas.core.series.Series, pandas.core.frame.DataFrame], target_schema: str, target_table: str)
    -
    -splitgraph.ingestion.pandas.sql_to_df(sql: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs)pandas.core.frame.DataFrame
    +
    +splitgraph.ingestion.pandas.sql_to_df(sql: str, image: Optional[Union[splitgraph.core.image.Image, str]] = None, repository: Optional[splitgraph.core.repository.Repository] = None, use_lq: bool = False, **kwargs) pandas.core.frame.DataFrame

    Executes an SQL query against a Splitgraph image, returning the result.

    Extra **kwargs are passed to Pandas’ read_sql_query.

    @@ -181,7 +226,9 @@ recreated.
    -
    - -
    -
    + +
    +

    Module contents

    +
    + + \ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.ingestion.singer.mdx b/content/docs/9500_python-api/splitgraph.ingestion.singer.mdx new file mode 100644 index 00000000..da6e99fe --- /dev/null +++ b/content/docs/9500_python-api/splitgraph.ingestion.singer.mdx @@ -0,0 +1,239 @@ + + + +export const meta = { + title: "splitgraph.ingestion.singer package", + id: "splitgraph.ingestion.singer package" +}; + +
    + +
    +

    Subpackages

    +
    +
    +
    +
    +

    Submodules

    +
    +
    +

    splitgraph.ingestion.singer.common module

    +
    +
    +splitgraph.ingestion.singer.common.log_exception(f)
    +

    Emit exceptions with full traceback instead of just the error text

    +
    + +
    +
    +splitgraph.ingestion.singer.common.rollback_at_end(func: collections.abc.Callable) collections.abc.Callable
    +
    + +
    +
    +splitgraph.ingestion.singer.common.store_ingestion_state(repository: splitgraph.core.repository.Repository, image_hash: str, current_state: Optional[Dict[str, Any]], new_state: str)
    +
    + +
    +
    +

    splitgraph.ingestion.singer.data_source module

    +
    +
    +class splitgraph.ingestion.singer.data_source.GenericSingerDataSource(*args, **kwargs)
    +

    Bases: splitgraph.ingestion.singer.data_source.SingerDataSource

    +
    +
    +credentials_schema: Dict[str, Any] = &lbrace;'type': 'object'&rbrace;
    +
    + +
    +
    +classmethod get_description() str
    +
    + +
    +
    +classmethod get_name() str
    +
    + +
    +
    +get_singer_executable()
    +
    + +
    +
    +params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'tap_path': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['tap_path'], 'type': 'object'&rbrace;
    +
    + +
    + +
    +
    +class splitgraph.ingestion.singer.data_source.MySQLSingerDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
    +

    Bases: splitgraph.ingestion.singer.data_source.SingerDataSource

    +
    +
    +build_singer_catalog(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
    +
    + +
    +
    +credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'password': &lbrace;'type': 'string'&rbrace;, 'user': &lbrace;'type': 'string'&rbrace;&rbrace;, 'required': ['user', 'password'], 'type': 'object'&rbrace;
    +
    + +
    +
    +classmethod get_description() str
    +
    + +
    +
    +classmethod get_name() str
    +
    + +
    +
    +get_singer_executable()
    +
    + +
    +
    +params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'host': &lbrace;'type': 'string'&rbrace;, 'port': &lbrace;'type': 'integer'&rbrace;, 'replication_method': &lbrace;'enum': ['INCREMENTAL', 'LOG_BASED', 'FULL TABLE'], 'type': 'string'&rbrace;&rbrace;, 'required': ['host', 'port', 'replication_method'], 'type': 'object'&rbrace;
    +
    + +
    +
    +use_legacy_stream_selection = False
    +
    + +
    +
    +use_properties = True
    +
    + +
    + +
    +
    +class splitgraph.ingestion.singer.data_source.SingerDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)
    +

    Bases: splitgraph.hooks.data_source.base.SyncableDataSource, abc.ABC

    +
    +
    +build_singer_catalog(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, Any]
    +
    + +
    +
    +get_singer_config()
    +
    + +
    +
    +abstract get_singer_executable()
    +
    + +
    +
    +introspect() IntrospectionResult
    +
    + +
    +
    +load(repository: splitgraph.core.repository.Repository, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) str
    +
    + +
    +
    +sync(repository: splitgraph.core.repository.Repository, image_hash: Optional[str] = None, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_state: bool = True) str
    +
    + +
    +
    +use_legacy_stream_selection = False
    +
    + +
    +
    +use_properties = False
    +
    + +
    + +
    +
    +splitgraph.ingestion.singer.data_source.select_streams(catalog: Dict[str, Any], tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, use_legacy_stream_selection=False) Dict[str, Any]
    +
    + +
    +
    +

    splitgraph.ingestion.singer.db_sync module

    +
    +
    +class splitgraph.ingestion.singer.db_sync.DbSyncProxy(*args, **kwargs)
    +

    Bases: target_postgres.db_sync.DbSync

    +
    +
    +create_indices(stream)
    +
    + +
    +
    +create_schema_if_not_exists(table_columns_cache=None)
    +
    + +
    +
    +delete_rows(stream)
    +
    + +
    +
    +load_csv(file, count, size_bytes)
    +
    + +
    +
    +sync_table()
    +
    + +
    + +
    +
    +splitgraph.ingestion.singer.db_sync.db_sync_wrapper(image: splitgraph.core.image.Image, staging_schema: str)
    +
    + +
    +
    +splitgraph.ingestion.singer.db_sync.get_key_properties(stream_message)
    +

    Extract the PK from a stream message. Supports both legacy (“key_properties”) and +new (“metadata”) Singer taps.

    +
    + +
    +
    +splitgraph.ingestion.singer.db_sync.get_sg_schema(stream_schema_message, flattening_max_level=0)
    +
    + +
    +
    +splitgraph.ingestion.singer.db_sync.get_table_name(stream_schema_message)
    +
    + +
    +
    +splitgraph.ingestion.singer.db_sync.run_patched_sync(repository: splitgraph.core.repository.Repository, base_image: Optional[splitgraph.core.image.Image], new_image_hash: str, delete_old: bool, failure: str, input_stream: Optional[BinaryIO] = None, output_stream: Optional[TextIO] = None)
    +
    + +
    +
    +splitgraph.ingestion.singer.db_sync.select_breadcrumb(stream_message, breadcrumb)
    +
    + +
    +
    +

    Module contents

    +
    +
    +
    \ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.ingestion.snowflake.mdx b/content/docs/9500_python-api/splitgraph.ingestion.snowflake.mdx index 7b6c15cd..51f2b179 100644 --- a/content/docs/9500_python-api/splitgraph.ingestion.snowflake.mdx +++ b/content/docs/9500_python-api/splitgraph.ingestion.snowflake.mdx @@ -6,82 +6,92 @@ export const meta = { id: "splitgraph.ingestion.snowflake package" }; -
    -

    Module contents

    +
    + +
    +

    Module contents

    -
    -class splitgraph.ingestion.snowflake.SnowflakeDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
    +
    +class splitgraph.ingestion.snowflake.SnowflakeDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)

    Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

    -
    -commandline_help: str = 'Mount a Snowflake database.\n    \nThis will mount a remote Snowflake schema or a table. You can also get a mounted table to point to the result of a subquery that will be executed on the Snowflake instance. For example:\n\n\x08\n```\n$ sgr mount snowflake test_snowflake -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "password": "password",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "schema": "TPCH_SF100"\n&rbrace;\nEOF\n\n$ sgr mount snowflake test_snowflake_subquery -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "password": "password",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "tables": &lbrace;\n        "balances": &lbrace;\n            "schema": &lbrace;\n                "n_nation": "varchar",\n                "segment": "varchar",\n                "avg_balance": "numeric"\n            &rbrace;,\n            "options": &lbrace;\n                "subquery": "SELECT n_nation AS nation, c_mktsegment AS segment, AVG(c_acctbal) AS avg_balance FROM TPCH_SF100.customer c JOIN TPCH_SF100.nation n ON c_nationkey = n_nationkey"\n            &rbrace;\n        &rbrace;\n    &rbrace;\n&rbrace;\nEOF\n```\n    '
    +
    +commandline_help: str = 'Mount a Snowflake database.\n\nThis will mount a remote Snowflake schema or a table. You can also get a mounted table to point to the result of a subquery that will be executed on the Snowflake instance. For example:\n\n\x08\n```\n$ sgr mount snowflake test_snowflake -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "password": "password",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "schema": "TPCH_SF100"\n    "envvars": &lbrace;"HTTPS_PROXY": "http://proxy.company.com"&rbrace;\n&rbrace;\nEOF\n\x08\n$ sgr mount snowflake test_snowflake_subquery -o@- <<EOF\n&lbrace;\n    "username": "username",\n    "private_key": "MIIEvQIBAD...",\n    "account": "acc-id.west-europe.azure",\n    "database": "SNOWFLAKE_SAMPLE_DATA",\n    "tables": &lbrace;\n        "balances": &lbrace;\n            "schema": &lbrace;\n                "n_nation": "varchar",\n                "segment": "varchar",\n                "avg_balance": "numeric"\n            &rbrace;,\n            "options": &lbrace;\n                "subquery": "SELECT n_nation AS nation, c_mktsegment AS segment, AVG(c_acctbal) AS avg_balance FROM TPCH_SF100.customer c JOIN TPCH_SF100.nation n ON c_nationkey = n_nationkey"\n            &rbrace;\n        &rbrace;\n    &rbrace;\n&rbrace;\nEOF\n```\n    '
    -
    -commandline_kwargs_help: str = 'username: Username. Required.\npassword: Password. Required.\naccount: Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html. Required.\ntables: Tables to mount (default all). If a list, will import only these tables. \nIf a dictionary, must have the format\n    &lbrace;"table_name": &lbrace;"schema": &lbrace;"col_1": "type_1", ...&rbrace;,\n                    "options": &lbrace;[get passed to CREATE FOREIGN TABLE]&rbrace;&rbrace;&rbrace;.\ndatabase: Snowflake database name. Required.\nschema: Snowflake schema.\nwarehouse: Warehouse name.\nrole: Role.\nThe schema parameter is required when subquery isn\'t used.'
    +
    +commandline_kwargs_help: str = "username: Username. Required.\nsecret:\naccount: Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html. Required.\ndatabase: Snowflake database name. Required.\nschema: Snowflake schema.\nwarehouse: Warehouse name.\nrole: Role.\nbatch_size: Default fetch size for remote queries.\nenvvars: Environment variables to set on the engine side.\nThe schema parameter is required when subquery isn't used."
    -
    -credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'account': &lbrace;'description': 'Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html', 'type': 'string'&rbrace;, 'password': &lbrace;'description': 'Password', 'type': 'string'&rbrace;, 'username': &lbrace;'description': 'Username', 'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'password', 'account'], 'type': 'object'&rbrace;
    +
    +credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'account': &lbrace;'description': 'Account Locator, e.g. xy12345.us-east-2.aws. For more information, see https://docs.snowflake.com/en/user-guide/connecting.html', 'type': 'string'&rbrace;, 'secret': &lbrace;'oneOf': [&lbrace;'type': 'object', 'required': ['secret_type', 'password'], 'properties': &lbrace;'secret_type': &lbrace;'type': 'string', 'const': 'password'&rbrace;, 'password': &lbrace;'type': 'string', 'description': 'Password'&rbrace;&rbrace;&rbrace;, &lbrace;'type': 'object', 'required': ['secret_type', 'private_key'], 'properties': &lbrace;'secret_type': &lbrace;'type': 'string', 'const': 'private_key'&rbrace;, 'private_key': &lbrace;'type': 'string', 'description': 'Private key in PEM format'&rbrace;&rbrace;&rbrace;], 'type': 'object'&rbrace;, 'username': &lbrace;'description': 'Username', 'type': 'string'&rbrace;&rbrace;, 'required': ['username', 'account'], 'type': 'object'&rbrace;
    -
    -classmethod get_description()str
    +
    +classmethod get_description() str
    -
    -get_fdw_name()
    +
    +get_fdw_name()
    -
    -classmethod get_name()str
    +
    +classmethod get_name() str
    -
    -get_remote_schema_name()str
    +
    +get_remote_schema_name() str

    Override this if the FDW supports IMPORT FOREIGN SCHEMA

    -
    -get_server_options()
    +
    +get_server_options()
    -
    -get_table_options(table_name: str)Mapping[str, str]
    +
    +get_table_options(table_name: str, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None) Dict[str, str]
    -
    -
    -params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'database': &lbrace;'description': 'Snowflake database name', 'type': 'string'&rbrace;, 'role': &lbrace;'description': 'Role', 'type': 'string'&rbrace;, 'schema': &lbrace;'description': 'Snowflake schema', 'type': 'string'&rbrace;, 'tables': &lbrace;'additionalProperties': &lbrace;'options': &lbrace;'additionalProperties': &lbrace;'type': 'string'&rbrace;, 'type': 'object'&rbrace;&rbrace;, 'type': 'object'&rbrace;, 'warehouse': &lbrace;'description': 'Warehouse name', 'type': 'string'&rbrace;&rbrace;, 'required': ['database'], 'type': 'object'&rbrace;
    +
    +
    +classmethod migrate_credentials(credentials: Credentials) Credentials
    -
    -supports_load = True
    +
    +params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'description': 'Default fetch size for remote queries', 'type': 'integer'&rbrace;, 'database': &lbrace;'description': 'Snowflake database name', 'type': 'string'&rbrace;, 'envvars': &lbrace;'description': 'Environment variables to set on the engine side', 'type': 'object'&rbrace;, 'role': &lbrace;'description': 'Role', 'type': 'string'&rbrace;, 'schema': &lbrace;'description': 'Snowflake schema', 'type': 'string'&rbrace;, 'warehouse': &lbrace;'description': 'Warehouse name', 'type': 'string'&rbrace;&rbrace;, 'required': ['database'], 'type': 'object'&rbrace;
    -
    -supports_mount = True
    +
    +supports_load = True
    -
    -supports_sync = False
    +
    +supports_mount = True
    -
    +
    +
    +supports_sync = False
    +
    -
    +
    +
    +table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'subquery': &lbrace;'description': 'Subquery for this table to run on the server side', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
    +
    + -
    -
    + + +
    \ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.ingestion.socrata.mdx b/content/docs/9500_python-api/splitgraph.ingestion.socrata.mdx index e3bb53c1..73e0dce0 100644 --- a/content/docs/9500_python-api/splitgraph.ingestion.socrata.mdx +++ b/content/docs/9500_python-api/splitgraph.ingestion.socrata.mdx @@ -6,24 +6,22 @@ export const meta = { id: "splitgraph.ingestion.socrata package" }; -
    -

    Module contents

    -
    - -
    -

    Submodules

    -
    -
    -

    splitgraph.ingestion.socrata.fdw module

    +
    + +
    +

    Submodules

    +
    +
    +

    splitgraph.ingestion.socrata.fdw module

    Module imported by Multicorn on the Splitgraph engine server: a foreign data wrapper that communicates to Socrata datasets using sodapy.

    -
    -class splitgraph.ingestion.socrata.fdw.SocrataForeignDataWrapper(fdw_options, fdw_columns)
    +
    +class splitgraph.ingestion.socrata.fdw.SocrataForeignDataWrapper(fdw_options, fdw_columns)

    Bases: object

    -
    -can_sort(sortkeys)
    +
    +can_sort(sortkeys)
    Parameters

    sortkeys – List of SortKey

    @@ -35,19 +33,19 @@ that communicates to Socrata datasets using sodapy.

    -
    -execute(quals, columns, sortkeys=None)
    +
    +execute(quals, columns, sortkeys=None)

    Main Multicorn entry point.

    -
    -explain(quals, columns, sortkeys=None, verbose=False)
    +
    +explain(quals, columns, sortkeys=None, verbose=False)
    -
    -get_rel_size(quals, columns)
    +
    +get_rel_size(quals, columns)

    Method called from the planner to estimate the resulting relation size for a scan. It will help the planner in deciding between different types of plans, @@ -66,110 +64,119 @@ Args:

    -
    -
    -property table_meta
    +
    +
    +property table_meta
    -
    -splitgraph.ingestion.socrata.fdw.to_json(row, columns, column_map)
    +
    +splitgraph.ingestion.socrata.fdw.to_json(row, columns, column_map)
    -
    -
    -

    splitgraph.ingestion.socrata.mount module

    + +
    +

    splitgraph.ingestion.socrata.mount module

    Splitgraph mount handler for Socrata datasets

    -
    -class splitgraph.ingestion.socrata.mount.SocrataDataSource(engine: PostgresEngine, credentials: Optional[Dict[str, Any]] = None, params: Optional[Dict[str, Any]] = None)
    +
    +class splitgraph.ingestion.socrata.mount.SocrataDataSource(engine: PostgresEngine, credentials: Credentials, params: Params, tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None)

    Bases: splitgraph.hooks.data_source.fdw.ForeignDataWrapperDataSource

    -
    -credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'app_token': &lbrace;'description': 'Socrata app token, optional', 'type': ['string', 'null']&rbrace;&rbrace;, 'type': 'object'&rbrace;
    +
    +credentials_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'app_token': &lbrace;'description': 'Socrata app token', 'type': 'string'&rbrace;&rbrace;, 'type': 'object'&rbrace;
    -
    -classmethod from_commandline(engine, commandline_kwargs)splitgraph.ingestion.socrata.mount.SocrataDataSource
    +
    +classmethod from_commandline(engine, commandline_kwargs) splitgraph.ingestion.socrata.mount.SocrataDataSource

    Instantiate an FDW data source from commandline arguments.

    -
    -classmethod get_description()str
    +
    +classmethod get_description() str
    -
    -get_fdw_name()
    +
    +get_fdw_name()
    -
    -classmethod get_name()str
    +
    +classmethod get_name() str
    -
    -get_server_options()
    +
    +get_raw_url(tables: Optional[Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]]] = None, expiry: int = 3600) Dict[str, List[Tuple[str, str]]]
    +

    Get a list of public URLs for each table in this data source, e.g. to export the data +as CSV. These may be temporary (e.g. pre-signed S3 URLs) but should be accessible without +authentication. +:param tables: A TableInfo object overriding the table params of the source +:param expiry: The URL should be valid for at least this many seconds +:return: Dict of table_name -> list of (mimetype, raw URL)

    +
    + +
    +
    +get_server_options()
    -
    -params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'description': 'Amount of rows to fetch from Socrata per request (limit parameter). Maximum 50000.', 'type': 'integer'&rbrace;, 'domain': &lbrace;'description': 'Socrata domain, for example, data.albanyny.gov', 'type': 'string'&rbrace;, 'tables': &lbrace;'type': 'object'&rbrace;&rbrace;, 'required': ['domain'], 'type': 'object'&rbrace;
    -
    -
    tables: A dictionary mapping PostgreSQL table names to Socrata table IDs. For example,

    &lbrace;“salaries”: “xzkq-xp2w”&rbrace;. If skipped, ALL tables in the Socrata endpoint will be mounted.

    -
    -
    -
    +
    +params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'batch_size': &lbrace;'default': 1000, 'description': 'Amount of rows to fetch from Socrata per request (limit parameter)', 'maximum': 50000, 'minimum': 1, 'type': 'integer'&rbrace;, 'domain': &lbrace;'description': 'Socrata domain, for example, data.albanyny.gov', 'type': 'string'&rbrace;&rbrace;, 'required': ['domain'], 'type': 'object'&rbrace;
    +
    -
    -tables: Optional[TableInfo]
    +
    +table_params_schema: Dict[str, Any] = &lbrace;'properties': &lbrace;'socrata_id': &lbrace;'description': 'Socrata dataset ID, e.g. xzkq-xp2w', 'type': 'string'&rbrace;&rbrace;, 'required': ['socrata_id'], 'type': 'object'&rbrace;
    -
    -splitgraph.ingestion.socrata.mount.generate_socrata_mount_queries(sought_ids, datasets, mountpoint, server_id, tables)
    +
    +splitgraph.ingestion.socrata.mount.generate_socrata_mount_queries(sought_ids, datasets, mountpoint, server_id, tables: Union[List[str], Dict[str, Tuple[List[splitgraph.core.types.TableColumn], TableParams]]])
    -
    -
    -

    splitgraph.ingestion.socrata.querying module

    + +
    +

    splitgraph.ingestion.socrata.querying module

    -
    -splitgraph.ingestion.socrata.querying.cols_to_socrata(cols, column_map: Optional[Dict[str, str]] = None)
    +
    +splitgraph.ingestion.socrata.querying.cols_to_socrata(cols, column_map: Optional[Dict[str, str]] = None)
    -
    -splitgraph.ingestion.socrata.querying.estimate_socrata_rows_width(columns, metadata, column_map=None)
    +
    +splitgraph.ingestion.socrata.querying.estimate_socrata_rows_width(columns, metadata, column_map=None)

    Estimate number of rows required for a query and each row’s width from the table metadata.

    -
    -splitgraph.ingestion.socrata.querying.quals_to_socrata(quals, column_map: Optional[Dict[str, str]] = None)
    +
    +splitgraph.ingestion.socrata.querying.quals_to_socrata(quals, column_map: Optional[Dict[str, str]] = None)

    Convert a list of Multicorn quals to a SoQL query

    -
    -splitgraph.ingestion.socrata.querying.socrata_to_sg_schema(metadata: Dict[str, Any])Tuple[List[splitgraph.core.types.TableColumn], Dict[str, str]]
    +
    +splitgraph.ingestion.socrata.querying.socrata_to_sg_schema(metadata: Dict[str, Any]) Tuple[List[splitgraph.core.types.TableColumn], Dict[str, str]]
    -
    -splitgraph.ingestion.socrata.querying.sortkeys_to_socrata(sortkeys, column_map: Optional[Dict[str, str]] = None)
    +
    +splitgraph.ingestion.socrata.querying.sortkeys_to_socrata(sortkeys, column_map: Optional[Dict[str, str]] = None)
    -
    - -
    -
    + +
    +

    Module contents

    +
    + +
    \ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.mdx b/content/docs/9500_python-api/splitgraph.mdx index af676e4d..3bfcb3c5 100644 --- a/content/docs/9500_python-api/splitgraph.mdx +++ b/content/docs/9500_python-api/splitgraph.mdx @@ -6,15 +6,19 @@ export const meta = { id: "splitgraph package" }; -
    -

    Module contents

    -
    +
    -
    -

    Subpackages

    +
    +

    Subpackages

    @@ -69,6 +74,7 @@ export const meta = {
  • splitgraph.core.fragment_manager module
  • splitgraph.core.image module
  • splitgraph.core.image_manager module
  • +
  • splitgraph.core.image_mounting module
  • splitgraph.core.metadata_manager module
  • splitgraph.core.migration module
  • splitgraph.core.object_manager module
  • @@ -116,12 +122,31 @@ export const meta = {
  • splitgraph.ingestion package
  • -
    -
    -

    Submodules

    -
    -
    -

    splitgraph.exceptions module

    +
    +
    +

    Submodules

    +
    +
    +

    splitgraph.exceptions module

    Exceptions that can be raised by the Splitgraph library.

    -
    -exception splitgraph.exceptions.APICompatibilityError
    +
    +exception splitgraph.exceptions.APICompatibilityError

    Bases: splitgraph.exceptions.SplitGraphError

    Exceptions related to API incompatibilities

    -
    -exception splitgraph.exceptions.AuthAPIError
    +
    +exception splitgraph.exceptions.AuthAPIError

    Bases: splitgraph.exceptions.SplitGraphError

    Exceptions raised by the Auth API

    -
    -exception splitgraph.exceptions.CheckoutError
    +
    +exception splitgraph.exceptions.CheckoutError

    Bases: splitgraph.exceptions.SplitGraphError

    Errors related to checking out/committing repositories

    -
    -exception splitgraph.exceptions.DataSourceError
    +
    +exception splitgraph.exceptions.DataSourceError

    Bases: splitgraph.exceptions.SplitGraphError

    Exceptions raised by mount handlers.

    -
    -exception splitgraph.exceptions.DockerUnavailableError
    +
    +exception splitgraph.exceptions.DockerUnavailableError

    Bases: splitgraph.exceptions.SplitGraphError

    Could not connect to the Docker daemon.

    -
    -exception splitgraph.exceptions.EngineInitializationError
    +
    +exception splitgraph.exceptions.EngineInitializationError

    Bases: splitgraph.exceptions.SplitGraphError

    Raised when the engine isn’t initialized (no splitgraph_meta schema or audit triggers)

    -
    -exception splitgraph.exceptions.ExternalHandlerError
    +
    +exception splitgraph.exceptions.EngineSetupError
    +

    Bases: splitgraph.exceptions.SplitGraphError

    +

    Raised on various setup issues with the Splitgraph engine

    +
    + +
    +
    +exception splitgraph.exceptions.ExternalHandlerError

    Bases: splitgraph.exceptions.SplitGraphError

    Exceptions raised by external object handlers.

    -
    -exception splitgraph.exceptions.GQLAPIError
    +
    +exception splitgraph.exceptions.GQLAPIError

    Bases: splitgraph.exceptions.SplitGraphError

    GQL API errors

    -
    -exception splitgraph.exceptions.GQLRepoDoesntExistError
    +
    +exception splitgraph.exceptions.GQLRepoDoesntExistError

    Bases: splitgraph.exceptions.GQLAPIError

    Repository doesn’t exist

    -
    -exception splitgraph.exceptions.GQLUnauthenticatedError
    +
    +exception splitgraph.exceptions.GQLUnauthenticatedError

    Bases: splitgraph.exceptions.GQLAPIError

    Unauthenticated (user not logged in)

    -
    -exception splitgraph.exceptions.GQLUnauthorizedError
    +
    +exception splitgraph.exceptions.GQLUnauthorizedError

    Bases: splitgraph.exceptions.GQLAPIError

    Unauthorized (e.g. repository isn’t writeable by the user)

    -
    -exception splitgraph.exceptions.ImageNotFoundError
    +
    +exception splitgraph.exceptions.ImageNotFoundError

    Bases: splitgraph.exceptions.SplitGraphError

    A Splitgraph image doesn’t exist.

    -
    -exception splitgraph.exceptions.IncompleteObjectDownloadError(reason: Optional[BaseException], successful_objects: List[str])
    +
    +exception splitgraph.exceptions.IncompleteObjectDownloadError(reason: Optional[BaseException], successful_objects: List[str])

    Bases: splitgraph.exceptions.SplitGraphError

    Raised when an error is encountered during download of multiple objects. The handler is supposed to perform any necessary @@ -252,8 +291,8 @@ cleanup and reraise reason at the earliest opportunity.

    -
    -exception splitgraph.exceptions.IncompleteObjectUploadError(reason: Optional[BaseException], successful_objects: List[str], successful_object_urls: List[str])
    +
    +exception splitgraph.exceptions.IncompleteObjectUploadError(reason: Optional[BaseException], successful_objects: List[str], successful_object_urls: List[str])

    Bases: splitgraph.exceptions.SplitGraphError

    Raised when an error is encountered during upload of multiple objects. The handler is supposed to perform any necessary @@ -261,70 +300,84 @@ cleanup and reraise reason at the earliest opportunity.

    -
    -exception splitgraph.exceptions.ObjectCacheError
    +
    +exception splitgraph.exceptions.JSONSchemaValidationError(message: str)
    +

    Bases: splitgraph.exceptions.SplitGraphError

    +

    Error validating the remote schema

    +
    + +
    +
    +exception splitgraph.exceptions.ObjectCacheError

    Bases: splitgraph.exceptions.SplitGraphError

    Issues with the object cache (not enough space)

    -
    -exception splitgraph.exceptions.ObjectIndexingError
    +
    +exception splitgraph.exceptions.ObjectIndexingError

    Bases: splitgraph.exceptions.SplitGraphError

    Errors related to indexing objects

    -
    -exception splitgraph.exceptions.ObjectMountingError
    +
    +exception splitgraph.exceptions.ObjectMountingError

    Bases: splitgraph.exceptions.SplitGraphError

    Errors related to incompatible objects.

    -
    -exception splitgraph.exceptions.ObjectNotFoundError
    +
    +exception splitgraph.exceptions.ObjectNotFoundError

    Bases: splitgraph.exceptions.SplitGraphError

    Raised when a physical object doesn’t exist in the cache.

    -
    -exception splitgraph.exceptions.RepositoryNotFoundError
    +
    +exception splitgraph.exceptions.RepositoryNotFoundError

    Bases: splitgraph.exceptions.SplitGraphError

    A Splitgraph repository doesn’t exist.

    -
    -exception splitgraph.exceptions.SplitGraphError
    +
    +exception splitgraph.exceptions.SplitGraphError

    Bases: Exception

    A generic Splitgraph exception.

    -
    -exception splitgraph.exceptions.SplitfileError
    +
    +exception splitgraph.exceptions.SplitfileError

    Bases: splitgraph.exceptions.SplitGraphError

    Generic error class for Splitfile interpretation/execution errors.

    -
    -exception splitgraph.exceptions.TableNotFoundError
    +
    +exception splitgraph.exceptions.TableNotFoundError

    Bases: splitgraph.exceptions.SplitGraphError

    A table doesn’t exist in an image

    -
    -exception splitgraph.exceptions.UnsupportedSQLError
    +
    +exception splitgraph.exceptions.UnsupportedSQLError

    Bases: splitgraph.exceptions.SplitGraphError

    Raised for unsupported SQL statements, for example, containing schema-qualified tables when the statement is supposed to be used in an SQL/IMPORT Splitfile command.

    -
    +
    +
    +splitgraph.exceptions.get_exception_name(o)
    +
    -
    -
    + +
    +

    Module contents

    +
    + + \ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.splitfile.mdx b/content/docs/9500_python-api/splitgraph.splitfile.mdx index d04b39fc..4fc847a2 100644 --- a/content/docs/9500_python-api/splitgraph.splitfile.mdx +++ b/content/docs/9500_python-api/splitgraph.splitfile.mdx @@ -6,43 +6,22 @@ export const meta = { id: "splitgraph.splitfile package" }; -
    -

    Module contents

    -

    Splitfile interpreter: a set of tools on top of the core Splitgraph versioning and image management to give -the user a Dockerfile-like experience for building Splitgraph images (caching, consistent hashing, a declarative -language).

    -
    +
    -
    -

    Submodules

    -
    -
    -

    splitgraph.splitfile.execution module

    +
    +

    Submodules

    +
    +
    +

    splitgraph.splitfile.execution module

    Functions for executing Splitfiles.

    -
    -
    -class splitgraph.splitfile.execution.ImageMapper(object_engine: splitgraph.engine.postgres.engine.PostgresEngine)
    -

    Bases: object

    -
    -
    -get_provenance_data()Dict[str, Union[str, List[str], List[bool], List[Dict[str, str]]]]
    -
    - -
    -
    -setup_lq_mounts()None
    -
    - -
    -
    -teardown_lq_mounts()None
    +
    +
    +splitgraph.splitfile.execution.checkout_if_changed(repository: splitgraph.core.repository.Repository, image_hash: str) None
    -
    -
    -
    -splitgraph.splitfile.execution.execute_commands(commands: str, params: Optional[Dict[str, str]] = None, output: Optional[splitgraph.core.repository.Repository] = None, output_base: str = '00000000000000000000000000000000')None
    +
    +splitgraph.splitfile.execution.execute_commands(commands: str, params: Optional[Dict[str, str]] = None, output: Optional[splitgraph.core.repository.Repository] = None, output_base: str = '00000000000000000000000000000000') None

    Executes a series of Splitfile commands.

    Parameters
    @@ -59,18 +38,18 @@ on top of it.

    -
    -splitgraph.splitfile.execution.getrandbits(k)x.  Generates an int with k random bits.
    +
    +splitgraph.splitfile.execution.getrandbits(k) x.  Generates an int with k random bits.
    -
    -splitgraph.splitfile.execution.prevalidate_imports(table_names: List[str], table_queries: List[bool])List[str]
    +
    +splitgraph.splitfile.execution.prevalidate_imports(table_names: List[str], table_queries: List[bool]) List[str]
    -
    -splitgraph.splitfile.execution.rebuild_image(image: splitgraph.core.image.Image, source_replacement: Dict[splitgraph.core.repository.Repository, str])None
    +
    +splitgraph.splitfile.execution.rebuild_image(image: splitgraph.core.image.Image, source_replacement: Dict[splitgraph.core.repository.Repository, str]) None

    Recreates the Splitfile used to create a given image and reruns it, replacing its dependencies with a different set of versions.

    @@ -83,7 +62,12 @@ set of versions.

    -
    - -
    -
    + +
    +

    Module contents

    +

    Splitfile interpreter: a set of tools on top of the core Splitgraph versioning and image management to give +the user a Dockerfile-like experience for building Splitgraph images (caching, consistent hashing, a declarative +language).

    +
    + +
    \ No newline at end of file diff --git a/content/docs/9500_python-api/splitgraph.utils.mdx b/content/docs/9500_python-api/splitgraph.utils.mdx new file mode 100644 index 00000000..991e61bb --- /dev/null +++ b/content/docs/9500_python-api/splitgraph.utils.mdx @@ -0,0 +1,69 @@ + + + +export const meta = { + title: "splitgraph.utils package", + id: "splitgraph.utils package" +}; + +
    + +
    +

    Submodules

    +
    +
    +

    splitgraph.utils.docker module

    +
    +
    +splitgraph.utils.docker.copy_dir_to_container(container: Container, source_path: str, target_path: str, exclude_names: Optional[List[str]] = None) None
    +
    + +
    +
    +splitgraph.utils.docker.copy_to_container(container: Container, source_path: Optional[str], target_path: str, data: Optional[bytes] = None) None
    +

    Copy a file into a Docker container

    +
    +
    Parameters
    +
      +
    • container – Container object

    • +
    • source_path – Source file path

    • +
    • target_path – Target file path (in the container)

    • +
    +
    +
    Returns
    +

    +
    +
    +
    + +
    +
    +splitgraph.utils.docker.get_docker_client()
    +

    Wrapper around client.from_env() that also pings the daemon +to make sure it can connect and if not, raises an error.

    +
    + +
    +
    +splitgraph.utils.docker.get_file_from_container(container: Container, source_path: str) IO[bytes]
    +
    + +
    +
    +

    splitgraph.utils.yaml module

    +
    +
    +splitgraph.utils.yaml.safe_dump(obj: Any, stream, **kwargs) None
    +
    + +
    +
    +splitgraph.utils.yaml.safe_load(stream) Any
    +
    + +
    +
    +

    Module contents

    +
    +
    +
    \ No newline at end of file