prql-compiler 0.3.1

PRQL is a modern language for transforming data — a simple, powerful, pipelined SQL replacement.
Documentation
---
source: prql-compiler/src/parser.rs
expression: "stmts_of_string(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] (\naggregate [               # `by` are the columns to group by.\n                   average salary,            # These are aggregation calcs run on each group.\n                   sum salary,\n                   average gross_salary,\n                   sum gross_salary,\n                   average gross_cost,\n  sum_gross_cost = sum gross_cost,\n  ct             = count,\n] )\nsort sum_gross_cost\nfilter ct > 200\ntake 20\n    \"#.trim())?"
---
- Pipeline:
    Pipeline:
      exprs:
        - FuncCall:
            name:
              Ident:
                - from
            args:
              - Ident:
                  - employees
            named_args: {}
        - FuncCall:
            name:
              Ident:
                - filter
            args:
              - Binary:
                  left:
                    Ident:
                      - country
                  op: Eq
                  right:
                    Literal:
                      String: USA
            named_args: {}
        - FuncCall:
            name:
              Ident:
                - derive
            args:
              - List:
                  - 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
            named_args: {}
        - FuncCall:
            name:
              Ident:
                - filter
            args:
              - Binary:
                  left:
                    Ident:
                      - gross_cost
                  op: Gt
                  right:
                    Literal:
                      Integer: 0
            named_args: {}
        - FuncCall:
            name:
              Ident:
                - group
            args:
              - List:
                  - Ident:
                      - title
                  - Ident:
                      - country
              - FuncCall:
                  name:
                    Ident:
                      - aggregate
                  args:
                    - List:
                        - FuncCall:
                            name:
                              Ident:
                                - average
                            args:
                              - Ident:
                                  - salary
                            named_args: {}
                        - FuncCall:
                            name:
                              Ident:
                                - sum
                            args:
                              - Ident:
                                  - salary
                            named_args: {}
                        - FuncCall:
                            name:
                              Ident:
                                - average
                            args:
                              - Ident:
                                  - gross_salary
                            named_args: {}
                        - FuncCall:
                            name:
                              Ident:
                                - sum
                            args:
                              - Ident:
                                  - gross_salary
                            named_args: {}
                        - FuncCall:
                            name:
                              Ident:
                                - average
                            args:
                              - Ident:
                                  - gross_cost
                            named_args: {}
                        - FuncCall:
                            name:
                              Ident:
                                - sum
                            args:
                              - Ident:
                                  - gross_cost
                            named_args: {}
                          alias: sum_gross_cost
                        - Ident:
                            - count
                          alias: ct
                  named_args: {}
            named_args: {}
        - FuncCall:
            name:
              Ident:
                - sort
            args:
              - Ident:
                  - sum_gross_cost
            named_args: {}
        - FuncCall:
            name:
              Ident:
                - filter
            args:
              - Binary:
                  left:
                    Ident:
                      - ct
                  op: Gt
                  right:
                    Literal:
                      Integer: 200
            named_args: {}
        - FuncCall:
            name:
              Ident:
                - take
            args:
              - Literal:
                  Integer: 20
            named_args: {}