Query the Data Delivery Network
Query the DDNThe easiest way to query any data on Splitgraph is via the "Data Delivery Network" (DDN). The DDN is a single endpoint that speaks the PostgreSQL wire protocol. Any Splitgraph user can connect to it at data.splitgraph.com:5432
and query any version of over 40,000 datasets that are hosted or proxied by Splitgraph.
For example, you can query the imaged_documents_and_reports
table in this repository, by referencing it like:
"wa-gov/imaged-documents-and-reports-j78t-andi:latest"."imaged_documents_and_reports"
or in a full query, like:
SELECT
":id", -- Socrata column ID
"filing_method", -- This field generally applies only to disclosure reports where "Electronic" indicates filing online. For reports not filed electronically, it's not easy to determine the origin of the reports so they are classified as "other." This includes paper filed reports and all others not filed electronically.
"report_number", -- PDC identifier used for tracking the individual forms that have been submitted to the PDC. The report number is unique to the report it represents. When a report is amended, a new report number is assigned that supersedes the original version of the amended report and the original report records are not included in this dataset. The report number can be cross referenced to other datasets such as the contributions and expenditures datasets. Not all documents in this dataset will contain a report_number, particularly documents that are not disclosure reports.
"report_to", -- This field only applies to disclosure reports that have a specific reporting interval where report_from and report_to describe the interval.
"type", -- Broad categorical description of the type of filer or type of document.
"election_year", -- The election year in the case of candidates and single election committees. The reporting year for all other documents. For documents other than disclosure reports the election year field may be empty.
"filer_name", -- The name of the entity associated with the filer_id or the name of the individual or organization associated with the document when the filer_id is not present. The name may not be consistent across all documents for a single individual. This is most likely due to a name change or and individual choosing to file under a different name.
"legislative_district", -- The Washington State legislative district. This field only applies to candidates where the office is "state senator" or "state representative."
"report_from", -- This field only applies to disclosure reports that have a specific reporting interval where report_from and report_to describe the interval.
"receipt_date", -- The date the document was marked as received. In most cases, this date will be the postmark of a document received by mail.
"processed_date", -- The date that the PDC imaged the document and made it publicly available.
"office", -- The office sought by the candidate. This field only applies to candidates.
"url", -- A link to a PDF version of the original report as it was filed to the PDC. F1 statements of financial affairs must be requested from the PDC. The link provides information on how to make the request. For a specific document, please include the report_number in your request if possible.
"document_description", -- A description of the document type based on the origin code. Most documents have a PDC form identifier as part of the description. Please refer to https://www.pdc.wa.gov/learn/forms for detailed information regarding the specific forms, their use and requirements.
"filer_id", -- The unique id assigned to a candidate or political committee, lobbyist, etc. The filer id is consistent across election years with the exception that candidates running for a second office in the same election year will receive a second filer id. There is no correlation between the two filer ids. For a candidate and single-election-year committee such as a ballot committee, the combination of filer_id and election_year uniquely identifies a campaign.
"origin", -- The coded type of document or report. Please refer to the document_description field for a description of the codes.
"party", -- The political party as declared by the candidate or committee on their form C1 registration. Contains only "Major parties" as recognized by Washington State law. This field only applies to candidates and political committees.
"id" -- PDC internal identifier that corresponds to a single document. This number uniquely identifies a single row.
FROM
"wa-gov/imaged-documents-and-reports-j78t-andi:latest"."imaged_documents_and_reports"
LIMIT 100;
Connecting to the DDN is easy. All you need is an existing SQL client that can connect to Postgres. As long as you have a SQL client ready, you'll be able to query wa-gov/imaged-documents-and-reports-j78t-andi
with SQL in under 60 seconds.
This repository is an "external" repository. That means it's hosted elsewhere, in this case at data.wa.gov. When you querywa-gov/imaged-documents-and-reports-j78t-andi:latest
on the DDN, we "mount" the repository using the socrata
mount handler. The mount handler proxies your SQL query to the upstream data source, translating it from SQL to the relevant language (in this case SoQL).
We also cache query responses on the DDN, but we run the DDN on multiple nodes so a CACHE_HIT
is only guaranteed for subsequent queries that land on the same node.
Query Your Local Engine
bash -c "$(curl -sL https://github.com/splitgraph/splitgraph/releases/latest/download/install.sh)"
Read the installation docs.
Splitgraph Cloud is built around Splitgraph Core (GitHub), which includes a local Splitgraph Engine packaged as a Docker image. Splitgraph Cloud is basically a scaled-up version of that local Engine. When you query the Data Delivery Network or the REST API, we mount the relevant datasets in an Engine on our servers and execute your query on it.
It's possible to run this engine locally. You'll need a Mac, Windows or Linux system to install sgr
, and a Docker installation to run the engine. You don't need to know how to actually use Docker; sgr
can manage the image, container and volume for you.
There are a few ways to ingest data into the local engine.
For external repositories (like this repository), the Splitgraph Engine can "mount" upstream data sources by using sgr mount
. This feature is built around Postgres Foreign Data Wrappers (FDW). You can write custom "mount handlers" for any upstream data source. For an example, we blogged about making a custom mount handler for HackerNews stories.
For hosted datasets, where the author has pushed Splitgraph Images to the repository, you can "clone" and/or "checkout" the data using sgr clone
and sgr checkout
.
Mounting Data
This repository is an external repository. It's not hosted by Splitgraph. It is hosted by data.wa.gov, and Splitgraph indexes it. This means it is not an actual Splitgraph image, so you cannot use sgr clone
to get the data. Instead, you can use the socrata
adapter with the sgr mount
command. Then, if you want, you can import the data and turn it into a Splitgraph image that others can clone.
First, install Splitgraph if you haven't already.
Mount the table with sgr mount
sgr mount socrata \
"wa-gov/imaged-documents-and-reports-j78t-andi" \
--handler-options '{
"domain": "data.wa.gov",
"tables": {
"imaged_documents_and_reports": "j78t-andi"
}
}'
That's it! Now you can query the data in the mounted table like any other Postgres table.
Query the data with your existing tools
Once you've loaded the data into your local Splitgraph engine, you can query it with any of your existing tools. As far as they're concerned, wa-gov/imaged-documents-and-reports-j78t-andi
is just another Postgres schema.