Switch

Note

switch is currently experimental and may change behavior in the near future

PRQL uses switch for both SQL’s CASE and IF statements. Here’s an example:

PRQL

from employees
derive distance = switch [
  city == "Calgary" -> 0,
  city == "Edmonton" -> 300,
]

SQL

SELECT
  *,
  CASE
    WHEN city = 'Calgary' THEN 0
    WHEN city = 'Edmonton' THEN 300
    ELSE NULL
  END AS distance
FROM
  employees

If no condition is met, the value takes a null value. To set a default, use a true condition:

PRQL

from employees
derive distance = switch [
  city == "Calgary" -> 0,
  city == "Edmonton" -> 300,
  true -> "Unknown",
]

SQL

SELECT
  *,
  CASE
    WHEN city = 'Calgary' THEN 0
    WHEN city = 'Edmonton' THEN 300
    ELSE 'Unknown'
  END AS distance
FROM
  employees