tests/testthat/_snaps/compile.md

PRQL query

Code
  cat(prql_compile("from a | select {b}"))
Output
  SELECT
    b
  FROM
    a

  -- Generated by PRQL compiler version:0.13.4 (https://prql-lang.org)
Code
  cat(prql_compile("from a | select {b}", target = NULL, format = FALSE,
    signature_comment = FALSE))
Output
  SELECT b FROM a
Code
  cat(prql_compile(
    "from star_wars\n    select {star_wars.*}\n    select !{jar_jar_binks, midichlorians}",
    "sql.duckdb", format = TRUE, signature_comment = TRUE))
Output
  SELECT
    * EXCLUDE (jar_jar_binks, midichlorians)
  FROM
    star_wars

  -- Generated by PRQL compiler version:0.13.4 target:sql.duckdb (https://prql-lang.org)

Syntax error query=Mississippi has four S’s and four I’s.

Code
  cat(prql_compile(query, "sql.any", format = TRUE, signature_comment = FALSE))
Condition
  Error:
  ! Error:
     ╭─[:1:23]
     │
   1 │ Mississippi has four S’s and four I’s.
     │                       ┬
     │                       ╰── unexpected ’
  ───╯
  Error:
     ╭─[:1:36]
     │
   1 │ Mississippi has four S’s and four I’s.
     │                                    ┬
     │                                    ╰── unexpected ’
  ───╯
  Error:
     ╭─[:1:39]
     │
   1 │ Mississippi has four S’s and four I’s.
     │                                       │
     │                                       ╰─ Expected * or an identifier, but didn't find anything before the end.
  ───╯

Syntax error query=from a | select [b]

Code
  cat(prql_compile(query, "sql.any", format = TRUE, signature_comment = FALSE))
Condition
  Error:
  ! Error:
     ╭─[:1:17]
     │
   1 │ from a | select [b]
     │                 ─┬─
     │                  ╰─── unexpected array of values (not supported here)
  ───╯

Syntax error query=from a | select {{{b

Code
  cat(prql_compile(query, "sql.any", format = TRUE, signature_comment = FALSE))
Condition
  Error:
  ! Error:
     ╭─[:1:21]
     │
   1 │ from a | select {{{b
     │                     │
     │                     ╰─ unexpected end of input while parsing tuple
  ───╯

Targets target=sql.any

Code
  cat(prql_compile(query, target, format = TRUE, signature_comment = FALSE))
Output
  SELECT
    origin,
    dest,
    COUNT(*) AS num_flts,
    ROUND(AVG(arr_delay), 0) AS avg_delay
  FROM
    flights
  WHERE
    distance BETWEEN 200 AND 300
    AND air_time IS NOT NULL
  GROUP BY
    origin,
    dest
  ORDER BY
    origin DESC,
    avg_delay
  LIMIT
    2

Targets target=sql.ansi

Code
  cat(prql_compile(query, target, format = TRUE, signature_comment = FALSE))
Output
  SELECT
    origin,
    dest,
    COUNT(*) AS num_flts,
    ROUND(AVG(arr_delay), 0) AS avg_delay
  FROM
    flights
  WHERE
    distance BETWEEN 200 AND 300
    AND air_time IS NOT NULL
  GROUP BY
    origin,
    dest
  ORDER BY
    origin DESC,
    avg_delay
  LIMIT
    2

Targets target=sql.bigquery

Code
  cat(prql_compile(query, target, format = TRUE, signature_comment = FALSE))
Output
  SELECT
    origin,
    dest,
    COUNT(*) AS num_flts,
    ROUND(AVG(arr_delay), 0) AS avg_delay
  FROM
    flights
  WHERE
    distance BETWEEN 200 AND 300
    AND air_time IS NOT NULL
  GROUP BY
    origin,
    dest
  ORDER BY
    origin DESC,
    avg_delay
  LIMIT
    2

Targets target=sql.clickhouse

Code
  cat(prql_compile(query, target, format = TRUE, signature_comment = FALSE))
Output
  SELECT
    origin,
    dest,
    COUNT(*) AS num_flts,
    ROUND(AVG(arr_delay), 0) AS avg_delay
  FROM
    flights
  WHERE
    distance BETWEEN 200 AND 300
    AND air_time IS NOT NULL
  GROUP BY
    origin,
    dest
  ORDER BY
    origin DESC,
    avg_delay
  LIMIT
    2

Targets target=sql.duckdb

Code
  cat(prql_compile(query, target, format = TRUE, signature_comment = FALSE))
Output
  SELECT
    origin,
    dest,
    COUNT(*) AS num_flts,
    ROUND(AVG(arr_delay), 0) AS avg_delay
  FROM
    flights
  WHERE
    distance BETWEEN 200 AND 300
    AND air_time IS NOT NULL
  GROUP BY
    origin,
    dest
  ORDER BY
    origin DESC,
    avg_delay
  LIMIT
    2

Targets target=sql.generic

Code
  cat(prql_compile(query, target, format = TRUE, signature_comment = FALSE))
Output
  SELECT
    origin,
    dest,
    COUNT(*) AS num_flts,
    ROUND(AVG(arr_delay), 0) AS avg_delay
  FROM
    flights
  WHERE
    distance BETWEEN 200 AND 300
    AND air_time IS NOT NULL
  GROUP BY
    origin,
    dest
  ORDER BY
    origin DESC,
    avg_delay
  LIMIT
    2

Targets target=sql.glaredb

Code
  cat(prql_compile(query, target, format = TRUE, signature_comment = FALSE))
Output
  SELECT
    origin,
    dest,
    COUNT(*) AS num_flts,
    ROUND((AVG(arr_delay))::numeric, 0) AS avg_delay
  FROM
    flights
  WHERE
    distance BETWEEN 200 AND 300
    AND air_time IS NOT NULL
  GROUP BY
    origin,
    dest
  ORDER BY
    origin DESC,
    avg_delay
  LIMIT
    2

Targets target=sql.mssql

Code
  cat(prql_compile(query, target, format = TRUE, signature_comment = FALSE))
Output
  SELECT
    origin,
    dest,
    COUNT(*) AS num_flts,
    ROUND(AVG(arr_delay), 0) AS avg_delay
  FROM
    flights
  WHERE
    distance BETWEEN 200 AND 300
    AND air_time IS NOT NULL
  GROUP BY
    origin,
    dest
  ORDER BY
    origin DESC,
    avg_delay OFFSET 0 ROWS
  FETCH FIRST
    2 ROWS ONLY

Targets target=sql.mysql

Code
  cat(prql_compile(query, target, format = TRUE, signature_comment = FALSE))
Output
  SELECT
    origin,
    dest,
    COUNT(*) AS num_flts,
    ROUND(AVG(arr_delay), 0) AS avg_delay
  FROM
    flights
  WHERE
    distance BETWEEN 200 AND 300
    AND air_time IS NOT NULL
  GROUP BY
    origin,
    dest
  ORDER BY
    origin DESC,
    avg_delay
  LIMIT
    2

Targets target=sql.postgres

Code
  cat(prql_compile(query, target, format = TRUE, signature_comment = FALSE))
Output
  SELECT
    origin,
    dest,
    COUNT(*) AS num_flts,
    ROUND((AVG(arr_delay))::numeric, 0) AS avg_delay
  FROM
    flights
  WHERE
    distance BETWEEN 200 AND 300
    AND air_time IS NOT NULL
  GROUP BY
    origin,
    dest
  ORDER BY
    origin DESC,
    avg_delay
  LIMIT
    2

Targets target=sql.sqlite

Code
  cat(prql_compile(query, target, format = TRUE, signature_comment = FALSE))
Output
  SELECT
    origin,
    dest,
    COUNT(*) AS num_flts,
    ROUND(AVG(arr_delay), 0) AS avg_delay
  FROM
    flights
  WHERE
    distance BETWEEN 200 AND 300
    AND air_time IS NOT NULL
  GROUP BY
    origin,
    dest
  ORDER BY
    origin DESC,
    avg_delay
  LIMIT
    2

Targets target=sql.snowflake

Code
  cat(prql_compile(query, target, format = TRUE, signature_comment = FALSE))
Output
  SELECT
    origin,
    dest,
    COUNT(*) AS num_flts,
    ROUND(AVG(arr_delay), 0) AS avg_delay
  FROM
    flights
  WHERE
    distance BETWEEN 200 AND 300
    AND air_time IS NOT NULL
  GROUP BY
    origin,
    dest
  ORDER BY
    origin DESC,
    avg_delay
  LIMIT
    2

prqlc's version

Code
  prql_version()
Output
  [1] '0.13.4'

display display=plain

Code
  tryCatch(prql_compile(query, format = TRUE, display = display), error = function(
    e) cli::ansi_html(e))
Output
  [1] "Error: Error:\n   ╭─[:3:1]\n   │\n 3 │ select\n   │ ───┬──\n   │    ╰──── main expected type `relation`, but found type `func relation -> relation`\n   │\n   │ Help: Have you forgotten an argument to function std.select?\n   │\n   │ Note: Type `relation` expands to `[{..}]`\n───╯\n\n"

display display=bar

Code
  tryCatch(prql_compile(query, format = TRUE, display = display), error = function(
    e) cli::ansi_html(e))
Output
  [1] "Error: Error: `display` must be one of `plain` or `ansi_color`. got: bar\n\n"


Try the prqlr package in your browser

Any scripts or data that you put into this service are public.

prqlr documentation built on April 12, 2025, 1:47 a.m.