prqlc-parser 0.12.2

A parser for the PRQL query language.
Documentation
---
source: prqlc/prqlc-parser/src/test.rs
expression: "parse_single(r#\"\nfrom employees\nfilter country == \"USA\"                      # Each line transforms the previous result.\nderive {                                     # This adds columns / variables.\n  gross_salary = salary + payroll_tax,\n  gross_cost = gross_salary + benefits_cost  # Variables can use other variables.\n}\nfilter gross_cost > 0\ngroup {title, country} (                     # For each group use a nested pipeline\n  aggregate {                                # Aggregate each group to a single row\n    average salary,\n    average gross_salary,\n    sum salary,\n    sum gross_salary,\n    average gross_cost,\n    sum_gross_cost = sum gross_cost,\n    ct = count salary,\n  }\n)\nsort sum_gross_cost\nfilter ct > 200\ntake 20\n        \"#).unwrap()"
---
- VarDef:
    kind: Main
    name: main
    value:
      Pipeline:
        exprs:
          - FuncCall:
              name:
                Ident: from
              args:
                - Ident: employees
          - FuncCall:
              name:
                Ident: filter
              args:
                - Binary:
                    left:
                      Ident: country
                    op: Eq
                    right:
                      Literal:
                        String: USA
          - FuncCall:
              name:
                Ident: derive
              args:
                - Tuple:
                    - Binary:
                        left:
                          Ident: salary
                        op: Add
                        right:
                          Ident: payroll_tax
                      alias: gross_salary
                    - Binary:
                        left:
                          Ident: gross_salary
                        op: Add
                        right:
                          Ident: benefits_cost
                      alias: gross_cost
          - FuncCall:
              name:
                Ident: filter
              args:
                - Binary:
                    left:
                      Ident: gross_cost
                    op: Gt
                    right:
                      Literal:
                        Integer: 0
          - FuncCall:
              name:
                Ident: group
              args:
                - Tuple:
                    - Ident: title
                    - Ident: country
                - FuncCall:
                    name:
                      Ident: aggregate
                    args:
                      - Tuple:
                          - FuncCall:
                              name:
                                Ident: average
                              args:
                                - Ident: salary
                          - FuncCall:
                              name:
                                Ident: average
                              args:
                                - Ident: gross_salary
                          - FuncCall:
                              name:
                                Ident: sum
                              args:
                                - Ident: salary
                          - FuncCall:
                              name:
                                Ident: sum
                              args:
                                - Ident: gross_salary
                          - FuncCall:
                              name:
                                Ident: average
                              args:
                                - Ident: gross_cost
                          - FuncCall:
                              name:
                                Ident: sum
                              args:
                                - Ident: gross_cost
                            alias: sum_gross_cost
                          - FuncCall:
                              name:
                                Ident: count
                              args:
                                - Ident: salary
                            alias: ct
          - FuncCall:
              name:
                Ident: sort
              args:
                - Ident: sum_gross_cost
          - FuncCall:
              name:
                Ident: filter
              args:
                - Binary:
                    left:
                      Ident: ct
                    op: Gt
                    right:
                      Literal:
                        Integer: 200
          - FuncCall:
              name:
                Ident: take
              args:
                - Literal:
                    Integer: 20
  span: "0:1-714"