wa-gov/loans-to-candidates-and-political-committees-d2ig-r3q4
Icon for Socrata external plugin

Query the Data Delivery Network

Query the DDN

The 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 loans_to_candidates_and_political_committees table in this repository, by referencing it like:

"wa-gov/loans-to-candidates-and-political-committees-d2ig-r3q4:latest"."loans_to_candidates_and_political_committees"

or in a full query, like:

SELECT
    ":id", -- Socrata column ID
    "description", -- This column is not populated yet. The reported description of the loan. In the case of a carry-forward loan, this will contain the committee name and election year of the campaign that originally incurred the loan.
    "lenders_employer", -- The name of the lender's/endorser's (guarantor'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. 
    "lenders_zip", -- The lender's or endorser's (guarantor's) zip code.
    "lenders_state", -- The lender's or endorser's (guarantor's) state.
    "jurisdiction_county", -- The county associated with the jurisdiction of a candidate or local ballot initiative. Multi-county jurisdictions are reported as the primary county. This field will be empty for political committees and when a candidate jurisdiction is statewide. 
    "jurisdiction", -- The political jurisdiction associated with the office of a candidate or a local ballot initiative.. 
    "office", -- The office sought by the candidate. Does not apply to political committees. 
    "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. 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. 
    "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.
    "id", -- PDC internal identifier that corresponds to a loan record. 
    "loan_due_date", -- The date specified in the loan agreement when loan re-payment is expected if any.
    "filer_name", -- The candidate or committee name as reported on the form C1 candidate or C1PC political 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. 
    "report_number", -- PDC identifier used for tracking the loan records. 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.
    "receipt_date", -- The date the loan was received.
    "election_year", -- The election year in the case of candidates and single election committees. The reporting year in the case of continuing political committees. 
    "repayment_schedule", -- The agreement between the lender and the committee as to when the loan will be repaid.
    "lenders_occupation", -- The occupation of the lender. A loan is a contribution until it is repaid. This field only applies to contributions by individuals and only when an individual gives a campaign or committee funds that exceed the aggregate limit for the election cycle (calendar year for continuing political committees). 
    "carry_forward_loan", -- This column is not populated yet. If the loan in this row has been carried forward from a previous campaign, this field will be marked True. The amount of the carry-forward loan represents the outstanding balance that was owed at the end of the previous campaign, and is now being assumed by the current campaign.
    "lenders_address", -- The lender's or endorser's (guarantor's) address.
    "jurisdiction_type", -- The type of jurisdiction this office is: Statewide, Local, etc. 
    "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. 
    "employers_city", -- City of the lender's/endorser's (guarantor's) employer. Refer to the occupation field to see when this field applies.
    "lenders_name", -- The name of the individual or organization making or endorsing the loan as reported.
    "lenders_city", -- The lender's or endorser's (guarantor's) city.
    "amount", -- The amount of the reported transaction.
    "legislative_district", -- The Washington State legislative district. This field only applies to candidates where the office is "state senator" or "state representative." 
    "employers_state", -- State of the lender/endorser's (guarantor's) employer. Refer to the occupation field to see when this field applies. 
    "primary_general", -- Candidates subject to contribution limits must specify whether a loan 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. 
    "lender_or_endorser", -- A loan always has a lender; a loan can also be endorsed by another entity. This column specifies either "Lender" or "Endorser" (guarantor).
    "cash_or_in_kind", -- The type of loan this is. A loan can be given in cash where re-payment in cash is expected. A loan can be in-kind where something of value is given to the campaign and cash re-payment is expected.
    "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. 
    "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. 
    "transaction_type", -- An explanation of this row. The row could represent a loan "Received", a loan "Payment", loan "Interest, or loan "Forgiven".
    "endorser_liable_amount", -- If the loan is endorsed by another entity, the amount the endorser (guarantor) is responsible for is listed here. Loan endorsements are rare occurrences. This column is reported as "0" if there is no endorser.  
    "origin", -- The form, schedule or section where the record was reported. L.1 represents a loan received. L.2 represents a loan repayment amount L.3 represents a loan forgiven amount. Please see https://www.pdc.wa.gov/learn/forms for a list of forms and instructions. Schedule L to the C3 or C4 is the loan form.
    "url" -- A link to a PDF version of the original report as it was filed to the PDC. 
FROM
    "wa-gov/loans-to-candidates-and-political-committees-d2ig-r3q4:latest"."loans_to_candidates_and_political_committees"
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/loans-to-candidates-and-political-committees-d2ig-r3q4 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/loans-to-candidates-and-political-committees-d2ig-r3q4: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

Install Splitgraph Locally
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; sgrcan 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 cloneand 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/loans-to-candidates-and-political-committees-d2ig-r3q4" \
  --handler-options '{
    "domain": "data.wa.gov",
    "tables": {
        "loans_to_candidates_and_political_committees": "d2ig-r3q4"
    }
}'

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/loans-to-candidates-and-political-committees-d2ig-r3q4 is just another Postgres schema.