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 contributions_to_candidates_and_political
table in this repository, by referencing it like:
"wa-gov/contributions-to-candidates-and-political-kv7h-kjye:latest"."contributions_to_candidates_and_political"
or in a full query, like:
SELECT
":id", -- Socrata column ID
"for_or_against", -- Ballot initiative committees are formed to either support or oppose an initiative. This field represents whether a committee “supports” (for) or “opposes” (against) a ballot initiative.
"origin", -- The form, schedule or section where the record was reported. Please see https://www.pdc.wa.gov/learn/forms for a list of forms and instructions. AUB (Form C3, schedule AU, auction buyer); AUD (Form C3, schedule AU, auction donor); C.1 (Form C4, schedule C1 correction); C3 (Form C3 cash contribution); C3.1A (Form C3, anonymous contributions); C3.1B (Form C3, candidate personal funds); C3.1D (Form C3, miscellaneous receipts) C3.1E (Form C3, small contributions); C4 (Form C4, in-kind contribution);
"committee_id", -- The unique identifier of a committee. For a continuing committee, this id will be the same for all the years that the committee is registered. Single year committees and candidate committees will have a unique id for each year even though the candidate or committee organization might be the same across years. Surplus accounts will have a single committee id across all years.
"filer_id", -- The unique id assigned to a candidate or political committee. The filer id is consistent across election years with the exception that an individual 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.
"type", -- Indicates if this record is for a candidate or a political committee. In the case of a political committee, it may be either a continuing political committee, party committee or single election year committee.
"filer_name", -- The candidate or committee name as reported on the form C1 candidate or committee registration form. The name will be consistent across all records for the same filer id and election year but may differ across years due to candidates or committees changing their name.
"office", -- The office sought by the candidate. Does not apply to political committees.
"legislative_district", -- The Washington State legislative district. This field only applies to candidates where the office is "state senator" or "state representative."
"position", -- The position associated with an office. This field typically applies to judicial and local office that have multiple positions or seats. This field does not apply to political committees.
"url", -- A link to a PDF version of the original report as it was filed to the PDC.
"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.
"contributor_location", -- The geocoded location of the contributor as reported. The quality of the geocoded location is dependent on how many of the address fields are available and is calculated using a third-party service. The PDC has not verified the results of the geocoding. Please refer to the recipient_name field for more information regarding address fields.
"ballot_number", -- If the committee is a Statewide Ballot Initiative Committee a ballot number will appear once a ballot number is assigned by the Secretary of State. Local Ballot Initiatives will not have a ballot number. This field will contain a number only if the Secretary of State issues a number.
"jurisdiction", -- The political jurisdiction associated with the office of a candidate.
"jurisdiction_county", -- The county associated with the jurisdiction of a candidate. Multi-county jurisdictions as reported as the primary county. This field will be empty for political committees and when a candidate jurisdiction is statewide.
"contributor_state", -- The state of the individual or organization making the contribution. Contributions from outside the United States may contain foreign postal region codes in this field. Refer to the contributor name field for more information on when this information is required.
"contributor_zip", -- The US zip code of the individual or organization making the contribution. Contributions from outside the United States may contain foreign postal codes in this field. Refer to the contributor name field for more information on when this information is required.
"contributor_occupation", -- The occupation of the contributor. This field currently applies to contributions by individuals and only when an individual gives a campaign or committee more than $250 in the aggregate for the election cycle (calendar year for continuing political committees). As part of inflationary rule changes the dollar amount increased on April 1, 2023 from $100 in the aggregate to $250 in the aggregate.
"contributor_employer_name", -- The name of the contributor's employer. The names appearing here have not been normalized and the same entity may be represented by different names in the dataset. Refer to the contributor occupation field to see when this field applies.
"contributor_employer_city", -- City of the contributor's employer. Refer to the contributor occupation field to see when this field applies.
"jurisdiction_type", -- The type of jurisdiction this office is: Statewide, Local, etc.
"contributor_employer_state", -- State of the contributor's employer. Refer to the contributor occupation field to see when this field applies.
"election_year", -- The election year in the case of candidates and single election committees. The reporting year in the case of continuing political committees.
"amount", -- The amount of the cash or in-kind contribution. On corrections records, this field is the amount of the adjustment.
"cash_or_in_kind", -- What kind of contribution this is, if known.
"receipt_date", -- The date that the contribution was received.
"description", -- The reported description of the transaction. This field does not apply to cash contributions. Not all in-kind contributions and corrections will contain a description. In the case of corrections, the PDC has added a notation regarding the amounts reported on the form Schedule C. A C3 contains not only detailed contributions it also contains none detailed cash - this column will contain the descriptions: 'Anonymous - Cash'; 'Candidates Personal Funds - Does not include candidate loans'; 'Miscellaneous Receipts', 'Contributions of $100 or less contributed by: ____ persons'. As part of inflationary rule changes the dollar amount increased on April 1, 2023 from $25 or less to $150 or less.
"memo", -- The optional memo field associated with the transaction. In most cases this field will be blank.
"primary_general", -- Candidates subject to contribution limits must specify whether a contribution is designated for the primary or the general election. Contributions to candidates not subject to limits, political committees and continuing political committees apply to the full election cycle.
"code", -- When a contribution is received, the code field denotes the type of entity that made the contribution. These types are determined by the filer. The field values correspond to the selected code: A: Anonymous; B: Business; C: PAC; I: Individual; L: Caucus; O: Other; P: Bona Fide Party; S: Self Pers. Fund; T: Minor Party; U: Union.
"contributor_category", -- Indicates if the contributor is an "Individual" or "Organization". When a contribution is received, the code field denotes the type of entity that made the contribution. These types are determined by the filer. The field values correspond to the selected code: A: Anonymous; B: Business; C: PAC; I: Individual; L: Caucus; O: Other; P: Bona Fide Party; S: Self Pers. Fund; T: Minor Party; U: Union. Codes B, C, F, L, O, P, M and U are assigned the category "Organization" and all others are assigned the category "Individual".
"contributor_name", -- The name of the individual or organization making the contribution as reported. The names appearing here have not been normalized and the same entity may be represented by different names in the dataset. This field currently applies to contributions where the aggregate total of all contributions from this contributor to this candidate or committee exceeds $100 for the election cycle (calendar year for continuing committees). As part of inflationary rule changes the dollar amount increased on April 1, 2023 from $25 to $100.
"contributor_address", -- The street address of the individual or organization making the contribution. Refer to the contributor name field for more information on when this information is required.
"contributor_city", -- The city of the individual or organization making the contribution. Refer to the contributor name field for more information on when this information is required.
"id", -- PDC internal identifier that corresponds to a single contribution or correction record. When combined with the origin value, this number uniquely identifies a single row.
"report_number" -- PDC identifier used for tracking the individual form C3, C4 or C4 schedule C. Multiple contributions or corrections will correspond to the same report number when they were reported to the PDC at the same time. 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.
FROM
"wa-gov/contributions-to-candidates-and-political-kv7h-kjye:latest"."contributions_to_candidates_and_political"
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/contributions-to-candidates-and-political-kv7h-kjye
with SQL in under 60 seconds.
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, 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 (like this repository), where the author has pushed Splitgraph Images to the repository, you can "clone" and/or "checkout" the data using sgr clone
and sgr checkout
.
Cloning Data
Because wa-gov/contributions-to-candidates-and-political-kv7h-kjye:latest
is a Splitgraph Image, you can clone the data from Spltgraph Cloud to your local engine, where you can query it like any other Postgres database, using any of your existing tools.
First, install Splitgraph if you haven't already.
Clone the metadata with sgr clone
This will be quick, and does not download the actual data.
sgr clone wa-gov/contributions-to-candidates-and-political-kv7h-kjye
Checkout the data
Once you've cloned the data, you need to "checkout" the tag that you want. For example, to checkout the latest
tag:
sgr checkout wa-gov/contributions-to-candidates-and-political-kv7h-kjye:latest
This will download all the objects for the latest
tag of wa-gov/contributions-to-candidates-and-political-kv7h-kjye
and load them into the Splitgraph Engine. Depending on your connection speed and the size of the data, you will need to wait for the checkout to complete. Once it's complete, you will be able to query the data like you would any other Postgres database.
Alternatively, use "layered checkout" to avoid downloading all the data
The data in wa-gov/contributions-to-candidates-and-political-kv7h-kjye:latest
is 0 bytes. If this is too big to download all at once, or perhaps you only need to query a subset of it, you can use a layered checkout.:
sgr checkout --layered wa-gov/contributions-to-candidates-and-political-kv7h-kjye:latest
This will not download all the data, but it will create a schema comprised of foreign tables, that you can query as you would any other data. Splitgraph will lazily download the required objects as you query the data. In some cases, this might be faster or more efficient than a regular checkout.
Read the layered querying documentation to learn about when and why you might want to use layered queries.
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/contributions-to-candidates-and-political-kv7h-kjye
is just another Postgres schema.