Skip to main content
Version: 1.0.0

Advanced Examples

All examples on this and subsequent pages use the sample healthcare dataset available in the project repository.

By combining the concepts from the previous pages—such as aliasing, filtering, aggregations, and joins—you can build sophisticated data products to answer complex business questions. This page provides examples of how to combine these operations.

Combining Multiple Filters​

You can apply multiple filter criteria by adding more objects to the selections and wildcards lists. By default, all conditions are combined with an AND operator.

Example​

This example finds male patients who live in Boston. It applies two separate selections filters: one for city and one for gender.

product_spec = {
"name": "male_patients_in_boston",
"fields": [
{"id": "patients.first", "name": "first_name"},
{"id": "patients.last", "name": "last_name"},
{"id": "patients.city", "name": "city"},
{"id": "patients.gender", "name": "gender"},
],
"filter": {
"selections": [
{"id": "patients.city", "values": ["Boston"]},
{"id": "patients.gender", "values": ["M"]},
],
"limit": 10,
},
}

Generated SQL​

SELECT
"patients"."first" as first_name,
"patients"."last" as last_name,
"patients"."city" as city,
"patients"."gender" as gender
FROM patients
WHERE ("patients"."city" IN ('Boston',))
AND ("patients"."gender" IN ('M',))
LIMIT 10

Joining and Filtering Across Tables​

The real power of the DataProduct becomes apparent when you combine joins with filters that span multiple tables.

Example​

This example answers a complex question: "Show me the names of patients from Boston who have been diagnosed with a condition containing the word 'fracture'."

To do this, it:

  1. Selects fields from both patients and conditions, triggering an implicit join.
  2. Filters on patients.city using a selection.
  3. Filters on conditions.description using a wildcard.
product_spec = {
"name": "conditions_of_boston_patients",
"fields": [
{"id": "patients.first", "name": "first_name"},
{"id": "patients.last", "name": "last_name"},
{"id": "conditions.description", "name": "condition"},
],
"filter": {
"selections": [
{"id": "patients.city", "values": ["Boston"]},
],
"wildcards": [
{
"id": "conditions.description",
"value": "fracture",
"option": "contains",
}
],
"limit": 10,
},
}

Generated SQL​

The builder correctly joins the tables and applies both WHERE clauses.

SELECT
"patients"."first" as first_name,
"patients"."last" as last_name,
"conditions"."description" as condition
FROM conditions
LEFT JOIN patients
ON "conditions"."patient" = "patients"."id"
WHERE ("patients"."city" IN ('Boston',))
AND "conditions"."description" LIKE '%fracture%'
LIMIT 10