Case

Note

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

Info

case was previously (PRQL 0.4 to 0.5) called switch and renamed to case in PRQL 0.6.0.

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

PRQL

  1. from employees
  2. derive distance = case [
  3. city == "Calgary" => 0,
  4. city == "Edmonton" => 300,
  5. ]

SQL

  1. SELECT
  2. *,
  3. CASE
  4. WHEN city = 'Calgary' THEN 0
  5. WHEN city = 'Edmonton' THEN 300
  6. ELSE NULL
  7. END AS distance
  8. FROM
  9. employees

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

PRQL

  1. from employees
  2. derive distance = case [
  3. city == "Calgary" => 0,
  4. city == "Edmonton" => 300,
  5. true => "Unknown",
  6. ]

SQL

  1. SELECT
  2. *,
  3. CASE
  4. WHEN city = 'Calgary' THEN 0
  5. WHEN city = 'Edmonton' THEN 300
  6. ELSE 'Unknown'
  7. END AS distance
  8. FROM
  9. employees