{"version":1,"pages":[{"id":"kzTlst3tKo255yz4YpDi","title":"CSV, Excel and JSONL Ingestion","pathname":"/","siteSpaceId":"sitesp_UHs7l","description":"Stop writing custom import and validation scripts. CsvPath Framework automates CSV and Excel ingestion and data quality checks. Open source. Python."},{"id":"KIuIVHxJb37AroyS6ScF","title":"DATA PREBOARDING","pathname":"/data-preboarding","siteSpaceId":"sitesp_UHs7l","description":"Why we all need to care about data preboarding and the trusted publisher model"},{"id":"CyH2xJQs9yWJ1S8BYNav","title":"Quickstart","pathname":"/getting-started/quickstart","siteSpaceId":"sitesp_UHs7l","description":"Get started managing CSV/Excel file validation and ingestion with less manual effort, lower risk, and greater predictability.","breadcrumbs":[{"label":"Getting Started"}]},{"id":"ckifIYNlQ5343gHHA0Fb","title":"Get the FlightPath Data app","pathname":"/getting-started/get-the-flightpath-data-app","siteSpaceId":"sitesp_UHs7l","description":"FlightPath is a purpose-built CSV and Excel preboarding frontend to CsvPath Framework","breadcrumbs":[{"label":"Getting Started"}]},{"id":"gk1CTpwsYwH50s2lUvIf","title":"The FlightPath Data Examples","pathname":"/getting-started/the-flightpath-data-examples","siteSpaceId":"sitesp_UHs7l","description":"The built-in examples that ship with FlightPath Data to help you start processing your CSV/Excel files fast.","breadcrumbs":[{"label":"Getting Started"}]},{"id":"rhElprfIt8L3hkpouRKB","title":"Counting","pathname":"/getting-started/the-flightpath-data-examples/counting","siteSpaceId":"sitesp_UHs7l","description":"CsvPath Validation Language examples of counting CSV data","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"}]},{"id":"PNbyEDD83irmxeDNV7mG","title":"Track values","pathname":"/getting-started/the-flightpath-data-examples/counting/track-values","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Counting"}]},{"id":"r7nOjpXqZ0iaL7EnUpBh","title":"Counters","pathname":"/getting-started/the-flightpath-data-examples/counting/counters","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Counting"}]},{"id":"DJD7mYDyFY4bQKnvaKFk","title":"Tallying","pathname":"/getting-started/the-flightpath-data-examples/counting/tallying","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Counting"}]},{"id":"2pW2ZtpPfcEbfSb2VVBN","title":"Summing up","pathname":"/getting-started/the-flightpath-data-examples/counting/summing-up","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Counting"}]},{"id":"lwTYjYWqkIkb9DOlhdu2","title":"Thresholds","pathname":"/getting-started/the-flightpath-data-examples/counting/thresholds","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Counting"}]},{"id":"96gDvNOP95ZTslzPm1kW","title":"Duplicates","pathname":"/getting-started/the-flightpath-data-examples/duplicates","siteSpaceId":"sitesp_UHs7l","description":"CsvPath Validation Language examples of handling duplicate CSV/Excel data","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"}]},{"id":"GTRynBPDgU39e6kTSnaf","title":"Unique lines by headers","pathname":"/getting-started/the-flightpath-data-examples/duplicates/unique-lines-by-headers","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Duplicates"}]},{"id":"KMIsnDjCd3XWpRi5lWrg","title":"Last duplicate seen","pathname":"/getting-started/the-flightpath-data-examples/duplicates/last-duplicate-seen","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Duplicates"}]},{"id":"S83l1iWkChX23J2FbfzL","title":"Percent overlapping","pathname":"/getting-started/the-flightpath-data-examples/duplicates/percent-overlapping","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Duplicates"}]},{"id":"PEaFvEdEHG5pAwTE34yw","title":"Duplicate lines","pathname":"/getting-started/the-flightpath-data-examples/duplicates/duplicate-lines","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Duplicates"}]},{"id":"g3E22TCppzt9lgiBLuL3","title":"Headers","pathname":"/getting-started/the-flightpath-data-examples/headers","siteSpaceId":"sitesp_UHs7l","description":"CsvPath Validation Language examples for managing CSV/Excel file headers","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"}]},{"id":"ifbobwNFTJute4py8IZl","title":"Collect matching lines","pathname":"/getting-started/the-flightpath-data-examples/headers/collect-matching-lines","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Headers"}]},{"id":"mKFLIbplEituTbLRu2pP","title":"Replace values","pathname":"/getting-started/the-flightpath-data-examples/headers/replace-values","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Headers"}]},{"id":"VQ2AKZu53tSkefKEFpMF","title":"Insert and append","pathname":"/getting-started/the-flightpath-data-examples/headers/insert-and-append","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Headers"}]},{"id":"lEhWeRrvR1RcnwOtfZiI","title":"No blanks","pathname":"/getting-started/the-flightpath-data-examples/headers/no-blanks","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Headers"}]},{"id":"YlRCtylburamPMrCb0LS","title":"Reset headers","pathname":"/getting-started/the-flightpath-data-examples/headers/reset-headers","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Headers"}]},{"id":"IJoyU4fDjYM5yuX7GOiq","title":"Name check","pathname":"/getting-started/the-flightpath-data-examples/headers/name-check","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Headers"}]},{"id":"m08UwllDvJ3RkM7dp3V2","title":"Position check","pathname":"/getting-started/the-flightpath-data-examples/headers/position-check","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Headers"}]},{"id":"w6IgtU5GGX8wZbsoXcdT","title":"More header checks","pathname":"/getting-started/the-flightpath-data-examples/headers/more-header-checks","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Headers"}]},{"id":"QiUYA5LgxMSrApyVvypm","title":"End","pathname":"/getting-started/the-flightpath-data-examples/headers/end","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Headers"}]},{"id":"72OPbCSl3JT14phUnBOI","title":"Lookups","pathname":"/getting-started/the-flightpath-data-examples/lookups","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"}]},{"id":"NXiwj5hnHyW4TXf4Ul8D","title":"index_zipcodes.csvpaths","pathname":"/getting-started/the-flightpath-data-examples/lookups/index_zipcodes.csvpaths","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Lookups"}]},{"id":"VuXye7JnNFLCEv7G3hrr","title":"zipcode_lookup.csvpaths","pathname":"/getting-started/the-flightpath-data-examples/lookups/zipcode_lookup.csvpaths","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Lookups"}]},{"id":"SBb4ycEoDwzfudaxewbp","title":"Math","pathname":"/getting-started/the-flightpath-data-examples/math","siteSpaceId":"sitesp_UHs7l","description":"CsvPath Validation Language examples of using math functions in processing CSV/Excel files","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"}]},{"id":"PnC2uOJ3dqz6Fleb8VEe","title":"Averaging across groups","pathname":"/getting-started/the-flightpath-data-examples/math/averaging-across-groups","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Math"}]},{"id":"edrusXNXrogfmiYJHYjI","title":"Sum","pathname":"/getting-started/the-flightpath-data-examples/math/sum","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Math"}]},{"id":"LllxMk03n63TnVA4h3k7","title":"Subtract","pathname":"/getting-started/the-flightpath-data-examples/math/subtract","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Math"}]},{"id":"uF0PmTMNWqS5nltKmv9S","title":"Min and max","pathname":"/getting-started/the-flightpath-data-examples/math/min-and-max","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Math"}]},{"id":"PnJG6IqcMyP2IQE5KwqB","title":"Running median and average","pathname":"/getting-started/the-flightpath-data-examples/math/running-median-and-average","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Math"}]},{"id":"mnBqOfTU8wNBPpfaZTUl","title":"Percents","pathname":"/getting-started/the-flightpath-data-examples/math/percents","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Math"}]},{"id":"oXTCzoDDM7ZroJrLFi6a","title":"Above average","pathname":"/getting-started/the-flightpath-data-examples/math/above-average","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Math"}]},{"id":"WLmy5nqgUsEfTonfIkNn","title":"Schemas","pathname":"/getting-started/the-flightpath-data-examples/schemas","siteSpaceId":"sitesp_UHs7l","description":"Examples of using CsvPath Validation Language schemas to validate CSV and Excel data","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"}]},{"id":"D50nCqDAu9ymrTUzg8tL","title":"Intersection","pathname":"/getting-started/the-flightpath-data-examples/schemas/intersection","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Schemas"}]},{"id":"GdD5HxtaBAvaqJ1p0gNP","title":"Three entity schema","pathname":"/getting-started/the-flightpath-data-examples/schemas/three-entity-schema","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Schemas"}]},{"id":"gHZUXW2entEfBlEVrJLe","title":"Three entity schema v2","pathname":"/getting-started/the-flightpath-data-examples/schemas/three-entity-schema-v2","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Schemas"}]},{"id":"PYoDcxE4bMmp8B72hnio","title":"Three entity schema v3","pathname":"/getting-started/the-flightpath-data-examples/schemas/three-entity-schema-v3","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Schemas"}]},{"id":"Jkmpe68bkHadBFnCq97a","title":"Three entity schema v4","pathname":"/getting-started/the-flightpath-data-examples/schemas/three-entity-schema-v4","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Getting Started"},{"label":"The FlightPath Data Examples"},{"label":"Schemas"}]},{"id":"VwktzMBBr8JBMQVxrYxz","title":"More CSV and Excel Validation","pathname":"/getting-started/more-csv-and-excel-validation","siteSpaceId":"sitesp_UHs7l","description":"Preboarding without validation is like pizza without cheese","breadcrumbs":[{"label":"Getting Started"}]},{"id":"YHWnZFiqjj9piosLJvA5","title":"Your First Validation, The Lazy Way","pathname":"/getting-started/more-csv-and-excel-validation/your-first-validation-the-lazy-way","siteSpaceId":"sitesp_UHs7l","description":"Start here if you want a code-free introduction!","breadcrumbs":[{"label":"Getting Started"},{"label":"More CSV and Excel Validation"}]},{"id":"1T4pCzl8YXEAxE1fc1YX","title":"Your First Validation, The Easy Way","pathname":"/getting-started/more-csv-and-excel-validation/your-first-validation-the-easy-way","siteSpaceId":"sitesp_UHs7l","description":"CsvPath is a very flexible language. There is often a simpler way than you first thought.","breadcrumbs":[{"label":"Getting Started"},{"label":"More CSV and Excel Validation"}]},{"id":"JjjojIyKxaiBPzzLwvtg","title":"Your First Validation, The Hard Way","pathname":"/getting-started/more-csv-and-excel-validation/your-first-validation","siteSpaceId":"sitesp_UHs7l","description":"Super simple rules to demonstrate how validation works","breadcrumbs":[{"label":"Getting Started"},{"label":"More CSV and Excel Validation"}]},{"id":"YO3ZDytWjc9mf3SVq5AN","title":"DataOps Integrations","pathname":"/getting-started/dataops-integrations","siteSpaceId":"sitesp_UHs7l","description":"CsvPath has built-in integrations for storage, observability, formats, and more","breadcrumbs":[{"label":"Getting Started"}]},{"id":"1OaxasE6wRhiFreRyVsN","title":"OpenTelemetry","pathname":"/getting-started/dataops-integrations/opentelemetry","siteSpaceId":"sitesp_UHs7l","description":"Observability for the masses","breadcrumbs":[{"label":"Getting Started"},{"label":"DataOps Integrations"}]},{"id":"TrPEPbsld0liyrDcAIr0","title":"OpenLineage","pathname":"/getting-started/dataops-integrations/openlineage","siteSpaceId":"sitesp_UHs7l","description":"Get started with Edge Data Governance the easy way. The instructions on this page should take you 15 to 45 minutes, depending on network speeds, docker startup times, etc.","breadcrumbs":[{"label":"Getting Started"},{"label":"DataOps Integrations"}]},{"id":"3285CzuPnmskR9MtOSOD","title":"A Helping Hand","pathname":"/getting-started/a-helping-hand","siteSpaceId":"sitesp_UHs7l","description":"We're here to help","breadcrumbs":[{"label":"Getting Started"}]},{"id":"OzCMPfq3muDqYebD8gLX","title":"How-tos","pathname":"/topics/how-tos","siteSpaceId":"sitesp_UHs7l","description":"Quick examples to help you get started using CsvPath Framework","breadcrumbs":[{"label":"Topics"}]},{"id":"tUWFGcMnyj2fvdQZvKfC","title":"Storage Backends","pathname":"/topics/how-tos/storage-backends","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"IrgJ14CP8NH05jK4SAzA","title":"AWS S3","pathname":"/topics/how-tos/storage-backends/aws-s3","siteSpaceId":"sitesp_UHs7l","description":"CsvPath's three file stores can be local or on S3. Mix and match!","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"},{"label":"Storage Backends"}]},{"id":"vDYkkX8d6XNbUWKkhqDz","title":"Azure","pathname":"/topics/how-tos/storage-backends/azure","siteSpaceId":"sitesp_UHs7l","description":"Trusted publishing using Azure blobs is really quite straightforward.","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"},{"label":"Storage Backends"}]},{"id":"VzzI35WOt4zaNuuPZLSf","title":"Google Cloud Storage","pathname":"/topics/how-tos/storage-backends/google-cloud-storage","siteSpaceId":"sitesp_UHs7l","description":"Trusted publishing using Azure blobs is really quite straightforward.","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"},{"label":"Storage Backends"}]},{"id":"ft1vq7EuqGpGiitm4bCx","title":"HTTPS","pathname":"/topics/how-tos/storage-backends/https","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"},{"label":"Storage Backends"}]},{"id":"fLpysuPO2jzCQ9Inbk3H","title":"S3, SFTP, Google Cloud, or Azure","pathname":"/topics/how-tos/storage-backends/s3-sftp-google-cloud-or-azure","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"},{"label":"Storage Backends"}]},{"id":"WSqM567WYV1AU0spD0ip","title":"Parquet","pathname":"/topics/how-tos/parquet","siteSpaceId":"sitesp_UHs7l","description":"How to use CsvPath Framework to output Parquet files","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"Nc0hGUvUYrAjKWhgO3eW","title":"Sqlite","pathname":"/topics/how-tos/sqlite","siteSpaceId":"sitesp_UHs7l","description":"Capturing run events to Sqlite can make searching for answers faster","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"2pcx53IxCgPrOp6fTBLQ","title":"Postgres and MySQL","pathname":"/topics/how-tos/postgres-and-mysql","siteSpaceId":"sitesp_UHs7l","description":"Some multi-user archives may benefit from capturing events to the database","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"20Z4LtpKD1y32AubOiQn","title":"File System Transfers","pathname":"/topics/how-tos/file-system-transfers","siteSpaceId":"sitesp_UHs7l","description":"Exporting files from CsvPath Framework runs to other filesystem locations","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"lI4PJPNNjpvLPs7Q07QR","title":"AWS Lambda","pathname":"/topics/how-tos/aws-lambda","siteSpaceId":"sitesp_UHs7l","description":"Setup a Lambda to automatically process files arriving to an S3 bucket","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"dFszgpHFCdC5mRexA7SV","title":"Webhooks","pathname":"/topics/how-tos/webhooks","siteSpaceId":"sitesp_UHs7l","description":"Calling a webhook at the end of a named-paths group run is a straightforward way to integrate systems","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"scrOXCn9biqxfej2OPsf","title":"Airflow","pathname":"/topics/how-tos/airflow","siteSpaceId":"sitesp_UHs7l","description":"An Easy Way To Add FlightPath Server API To Your Airflow Project","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"iGwPLci4k9cSZoMfjK1R","title":"Slack","pathname":"/topics/how-tos/slack","siteSpaceId":"sitesp_UHs7l","description":"Send yourself notifications about CsvPath runs via Slack webhooks","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"CNU7otZjcFmge32XTVNw","title":"Scripts","pathname":"/topics/how-tos/scripts","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"cPiy77nIbglbGoDlzqZ8","title":"File Arrival Activation","pathname":"/topics/how-tos/file-arrival-activation","siteSpaceId":"sitesp_UHs7l","description":"Automatically run a named-paths group when a new file arrives","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"2UvcgeJPIezITioBTzsy","title":"Rewind / Replay","pathname":"/topics/how-tos/rewind-replay","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"YhSGAV0crAJp1jyFdbvh","title":"Replay Using References","pathname":"/topics/how-tos/rewind-replay/replay-using-references","siteSpaceId":"sitesp_UHs7l","description":"Options for when you need to rerun a named-path group","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"},{"label":"Rewind / Replay"}]},{"id":"bq3Rd9ccuQu33p8Nya5z","title":"Doing rewind / replay, part 1","pathname":"/topics/how-tos/rewind-replay/doing-rewind-replay-part-1","siteSpaceId":"sitesp_UHs7l","description":"How to start a run from an intermediate point in a past run","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"},{"label":"Rewind / Replay"}]},{"id":"Lj67NOykXFyHgAn6nfFF","title":"Doing rewind / replay, part 2","pathname":"/topics/how-tos/rewind-replay/doing-rewind-replay-part-2","siteSpaceId":"sitesp_UHs7l","description":"Can we achieve the same goals using only the CLI? Yes!","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"},{"label":"Rewind / Replay"}]},{"id":"yA3ptoZ01wtRUJgZFmuz","title":"Referring to named-file versions","pathname":"/topics/how-tos/rewind-replay/referring-to-named-file-versions","siteSpaceId":"sitesp_UHs7l","description":"It's common to need to rerun an older file version again -- and easy to do.","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"},{"label":"Rewind / Replay"}]},{"id":"CrlsgH3WfnAzIcump4rW","title":"SFTP Export","pathname":"/topics/how-tos/sftp-export","siteSpaceId":"sitesp_UHs7l","description":"Forward your results from CsvPath's archive to an SFTP account","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"J3b8kpxYK0QvwKlfDmJl","title":"SFTPPlus","pathname":"/topics/how-tos/sftpplus","siteSpaceId":"sitesp_UHs7l","description":"Create an effective automated MFT solution in minutes","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"hTzFC0ZIBz0BW9aoaSCs","title":"SFTPPlus Implementation Checklist","pathname":"/topics/how-tos/sftpplus/sftpplus-implementation-checklist","siteSpaceId":"sitesp_UHs7l","description":"A checklist for implementing SFTPPlus + CsvPath","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"},{"label":"SFTPPlus"}]},{"id":"IRSAHdsL3dkRYNUfa7lH","title":"CKAN","pathname":"/topics/how-tos/ckan","siteSpaceId":"sitesp_UHs7l","description":"How to use CsvPath to publish data products to CKAN with confidence","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"Qs0zoPJcVEGAY1rRjK3s","title":"CKAN CsvPath Setup","pathname":"/topics/how-tos/ckan/ckan-csvpath-setup","siteSpaceId":"sitesp_UHs7l","description":"CsvPath is integrated with CKAN, the leading open source data portal.","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"},{"label":"CKAN"}]},{"id":"nlN1HwVuG94k9WAN6Pew","title":"Jenkins","pathname":"/topics/how-tos/jenkins","siteSpaceId":"sitesp_UHs7l","description":"An example of using a simple automation tool to feed data to CsvPath","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"KCdvIAlw0KtMKPsDI6WH","title":"config.ini","pathname":"/topics/how-tos/config.ini","siteSpaceId":"sitesp_UHs7l","description":"Configuring CsvPaths is easy. The first step is adding it to your project using your Python dependency management tool of choice. Then create a simple test harness file and run it.","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"e9ZWX0DNQ22wJTCZjyW7","title":"Debugging","pathname":"/topics/how-tos/debugging","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"KD6KnECucDnQMrN7531G","title":"Creating a Derived File","pathname":"/topics/how-tos/creating-a-derived-file","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"u35WsMAeRsbQezGwPesv","title":"A Longer Example","pathname":"/topics/how-tos/a-longer-example","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"}]},{"id":"a0zL61AyLSkHR7aP6eIr","title":"Another Example, Part 1","pathname":"/topics/how-tos/a-longer-example/another-example-part-1","siteSpaceId":"sitesp_UHs7l","description":"","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"},{"label":"A Longer Example"}]},{"id":"Kk56wlU2GjA1Bt0JWuHV","title":"Another Example, Part 2","pathname":"/topics/how-tos/a-longer-example/another-example-part-2","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"How-tos"},{"label":"A Longer Example"}]},{"id":"oyjNMOFhtfihvHQ5ixpp","title":"Practical Stuff","pathname":"/topics/practical-stuff","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"}]},{"id":"DSQqnsAqJPnIRyPgQJ1S","title":"Language Basics","pathname":"/topics/practical-stuff/language","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Practical Stuff"}]},{"id":"wQaMDcGavDo3r0U26Je5","title":"CsvPath Framework Cheatsheet","pathname":"/topics/practical-stuff/csvpath-framework-cheatsheet","siteSpaceId":"sitesp_UHs7l","description":"A super high-level cheatsheet for concepts and approaches","breadcrumbs":[{"label":"Topics"},{"label":"Practical Stuff"}]},{"id":"AA8ooStPwB9yZs0FclAl","title":"The CLI","pathname":"/topics/practical-stuff/the-cli","siteSpaceId":"sitesp_UHs7l","description":"CsvPath's command line interface is a productivity booster","breadcrumbs":[{"label":"Topics"},{"label":"Practical Stuff"}]},{"id":"3ajNtWFAjaVXR9Ef2Oys","title":"Working With Error Messages","pathname":"/topics/practical-stuff/working-with-error-messages","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Practical Stuff"}]},{"id":"IcL5XiEJZn13LDpxkyi4","title":"The Modes","pathname":"/topics/practical-stuff/the-modes","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Practical Stuff"}]},{"id":"ZXxfwYY21Yz9PCv9X7ja","title":"The Reference Data Types","pathname":"/topics/practical-stuff/the_reference_data_types","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Practical Stuff"}]},{"id":"pPuOt3O5hDz71c23bGVn","title":"Manifests and Metadata","pathname":"/topics/practical-stuff/manifests-and-metadata","siteSpaceId":"sitesp_UHs7l","description":"The CsvPath Library is all about the structure you need to trust the data you process","breadcrumbs":[{"label":"Topics"},{"label":"Practical Stuff"}]},{"id":"Zy79zsq8dpY7KjTbFZ0K","title":"Serial Or Breadth-first Runs?","pathname":"/topics/practical-stuff/serial-or-breadth-first-runs","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Practical Stuff"}]},{"id":"kvgtjQXem2xkZrkzO0eW","title":"Namespacing With the Archive","pathname":"/topics/practical-stuff/namespacing-with-the-archive","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Practical Stuff"}]},{"id":"SFvBj4wW9ltUFFnjRiwz","title":"Higher-level Topics","pathname":"/topics/higher-level-topics","siteSpaceId":"sitesp_UHs7l","description":"Topics and ideas. Watch this space!","breadcrumbs":[{"label":"Topics"}]},{"id":"Mh7nN60SoDAFU1ZPXyvU","title":"Organizing Inbound Data","pathname":"/topics/higher-level-topics/organizing-inbound-data","siteSpaceId":"sitesp_UHs7l","description":"Organizing your preboarding data layout upfront makes the onboarding process efficient","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"}]},{"id":"3jnAvWpTJ4n3jGLBfFo9","title":"Dataflow Diagram","pathname":"/topics/higher-level-topics/organizing-inbound-data/dataflow-diagram","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"}]},{"id":"zLoHtPCx6fbrzBHeqoWG","title":"The Three Data Spaces","pathname":"/topics/higher-level-topics/organizing-inbound-data/the-three-data-spaces","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"}]},{"id":"iFt7BELkNnWQGFkqY7TX","title":"Source Staging","pathname":"/topics/higher-level-topics/organizing-inbound-data/the-three-data-spaces/source-staging","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"The Three Data Spaces"}]},{"id":"Yi1SCwvnCf2zpHQvcR9L","title":"Validation Assets","pathname":"/topics/higher-level-topics/organizing-inbound-data/the-three-data-spaces/validation-assets","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"The Three Data Spaces"}]},{"id":"JKad6hIWxcr2rzkJMyFu","title":"Trusted Publishing","pathname":"/topics/higher-level-topics/organizing-inbound-data/the-three-data-spaces/trusted-publishing","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"The Three Data Spaces"}]},{"id":"dFedHdMx7HSjr8UPwK26","title":"How Data Progresses Through CsvPath Framework","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"}]},{"id":"NUrFTKjR9F2XFKBuB1UG","title":"Staging","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/staging","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"}]},{"id":"5HGCcX9ruYph0cKQgn0F","title":"Data Identity","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/staging/data-identity","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"},{"label":"Staging"}]},{"id":"xqno2AbAkM9t9neKB8To","title":"Handling Variability","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/staging/handling-variability","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"},{"label":"Staging"}]},{"id":"jQjBrl8n9FOAHClbhVPk","title":"Templates","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/staging/handling-variability/templates","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"},{"label":"Staging"},{"label":"Handling Variability"}]},{"id":"PhDDqwqHiDRNxox1fD9J","title":"Named-file Reference Queries","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/staging/handling-variability/named-file-reference-queries","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"},{"label":"Staging"},{"label":"Handling Variability"}]},{"id":"E2F1KmP0os5l9yVvTTDE","title":"Registration API and CLI","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/staging/registration-api-and-cli","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"},{"label":"Staging"}]},{"id":"lLoVDxq3oAGFsIiH9rqU","title":"Loading","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/staging/registration-api-and-cli/loading","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"},{"label":"Staging"},{"label":"Registration API and CLI"}]},{"id":"du6U5vG9vHAgNOIixM8G","title":"Going CLI-only","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/staging/registration-api-and-cli/going-cli-only","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"},{"label":"Staging"},{"label":"Registration API and CLI"}]},{"id":"ji2MCHTgg0mE0QwvgG8o","title":"Validation and Upgrading","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/validation-and-upgrading","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"}]},{"id":"jidAV2I1iokwEKAyQDOv","title":"Templates","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/validation-and-upgrading/templates","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"},{"label":"Validation and Upgrading"}]},{"id":"LOPXYEo3J62JN1npYFhj","title":"Run Using the API","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/validation-and-upgrading/run-using-the-api","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"},{"label":"Validation and Upgrading"}]},{"id":"4wj3GblP9YpkOIKmA9aK","title":"Running In the CLI","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/validation-and-upgrading/running-in-the-cli","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"},{"label":"Validation and Upgrading"}]},{"id":"8S9n8xXcFy0clm9XSnVu","title":"Named-paths Reference Queries","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/validation-and-upgrading/named-paths-reference-queries","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"},{"label":"Validation and Upgrading"}]},{"id":"wfYSr0qyTEvhRw0HzVAv","title":"Publishing","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/publishing","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"}]},{"id":"pbCh9ak0FxnjzvOcphbd","title":"Inspect Run Results","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/publishing/inspect-run-results","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"},{"label":"Publishing"}]},{"id":"3KNSq8tTX7GPFYfUF5KD","title":"Result API","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/publishing/inspect-run-results/result-api","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"},{"label":"Publishing"},{"label":"Inspect Run Results"}]},{"id":"w4VtXIDZIJmXFxzNaUF7","title":"More Templates and References","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/publishing/inspect-run-results/more-templates-and-references","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"},{"label":"Publishing"},{"label":"Inspect Run Results"}]},{"id":"quk8jHTQLbMGDlIha7h7","title":"Export Data and Metadata","pathname":"/topics/higher-level-topics/organizing-inbound-data/how-data-progresses-through-csvpath-framework/publishing/export-data-and-metadata","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Organizing Inbound Data"},{"label":"How Data Progresses Through CsvPath Framework"},{"label":"Publishing"}]},{"id":"mWgM7gDJtDpgsEHBaxCX","title":"Why CsvPath?","pathname":"/topics/higher-level-topics/why-csvpath","siteSpaceId":"sitesp_UHs7l","description":"As has been said on other pages, in technology there are always multiple ways to get to a result. So why should you use CsvPath when there are other options?","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"}]},{"id":"oa0XskrCEgbVlYaOnehE","title":"CsvPath Use Cases","pathname":"/topics/higher-level-topics/csvpath_use_cases","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"}]},{"id":"AgVrG4Xd1SyGIcHTqHbq","title":"Paths To Production","pathname":"/topics/higher-level-topics/paths-to-production","siteSpaceId":"sitesp_UHs7l","description":"There are many paths. What's the simplest thing that could possibly work?","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"}]},{"id":"ejl68GrV04WfEVzbYhTD","title":"Solution Storming","pathname":"/topics/higher-level-topics/solution-storming","siteSpaceId":"sitesp_UHs7l","description":"Let's figure out how CsvPath can make a difference for your use case.","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"}]},{"id":"8qyea4KZHXK0UlZFPDRh","title":"Data, Validation Files, and Storage","pathname":"/topics/higher-level-topics/data-validation-files-and-storage","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"}]},{"id":"QwHFLVleY7QejI9V4gc3","title":"Named Files and Paths","pathname":"/topics/higher-level-topics/data-validation-files-and-storage/named_files_and_paths","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Data, Validation Files, and Storage"}]},{"id":"acsphobiCNcV8zAyRGnv","title":"Where Do I Find Results?","pathname":"/topics/higher-level-topics/data-validation-files-and-storage/where-do-i-find-results","siteSpaceId":"sitesp_UHs7l","description":"CsvPath serializes results for your future use","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Data, Validation Files, and Storage"}]},{"id":"qQlb5VAuMzfGKVjo4eLd","title":"Storage Backends","pathname":"/topics/higher-level-topics/data-validation-files-and-storage/storage-backends","siteSpaceId":"sitesp_UHs7l","description":"You have a few simple choices for where to store your assets","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Data, Validation Files, and Storage"}]},{"id":"35tcl7KNMrOh8Nuu5TXp","title":"File Management","pathname":"/topics/higher-level-topics/data-validation-files-and-storage/file-management","siteSpaceId":"sitesp_UHs7l","description":"","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Data, Validation Files, and Storage"}]},{"id":"ntmLvdyGMLV9oVT5aFGZ","title":"Validation","pathname":"/topics/higher-level-topics/validation","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"}]},{"id":"IXlN7Y9lgRUmbmCkmrQ5","title":"Schemas Or Rules?","pathname":"/topics/higher-level-topics/validation/schemas-or-rules","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Validation"}]},{"id":"cEHgDv7NGBquDGHeLyQ4","title":"Validation Strategies","pathname":"/topics/higher-level-topics/validation/validation_strategies","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Validation"}]},{"id":"RuOuAAeZb2LrZ1n6EhPG","title":"Python","pathname":"/topics/higher-level-topics/python","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"}]},{"id":"RCE8n3MfcJ6pSIGwqfLD","title":"Python vs. CsvPath","pathname":"/topics/higher-level-topics/python/python-vs.-csvpath","siteSpaceId":"sitesp_UHs7l","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Python"}]},{"id":"OzW61v2omHodkI3qvdsh","title":"Python Starters","pathname":"/topics/higher-level-topics/python/python-starters","siteSpaceId":"sitesp_UHs7l","description":"A few really basic scripts to get you started","breadcrumbs":[{"label":"Topics"},{"label":"Higher-level Topics"},{"label":"Python"}]},{"id":"1KltBY2Ev4KAaALLWeBF","title":"Glossary","pathname":"/topics/glossary","siteSpaceId":"sitesp_UHs7l","description":"CsvPath is a Data Preboarding Framework enabling Edge Governance and Trusted Publishing through the Architectural Pattern called Collect, Store, Validate, Publish. Phew — so many buzzwords!","breadcrumbs":[{"label":"Topics"}]},{"id":"Kya5BzTwd0bVjwy6mYow","title":"Release Notes","pathname":"/topics/release-notes","siteSpaceId":"sitesp_UHs7l","description":"High-level descriptions of point releases","breadcrumbs":[{"label":"Topics"}]},{"id":"KiGhRNOz8kwH4bBvkmGN","title":"Privacy Policy","pathname":"/privacy-policy","siteSpaceId":"sitesp_UHs7l"}]}