malloydata / malloy

Malloy is an experimental language for describing data relationships and transformations.
http://www.malloydata.dev
MIT License
1.96k stars 76 forks source link

Query w/ `select` and `calculate: ... { partition_by: ... }` fails in BigQuery #1604

Open carlineng opened 8 months ago

carlineng commented 8 months ago

What happens?

In BigQuery, we are getting a PROJECT cannot be used on queries with turtles when attempgint to run the following query:

run: events -> {
    where: trim(event_name) = "purchase"
    select: event_date
    select: event_name
    calculate: prev_occur is lag(event_date) {
        partition_by: event_name
        order_by: event_date asc
    }
    order_by: event_name asc, event_date asc
}

image

This same pattern DOES work on DuckDB though... running this query in the ECommerce DuckDB sample data produces correct results:

run: order_items -> {
    select: 
      user_id
      created_at

    calculate: prev_occur is lag(created_at) {
        partition_by: user_id
        order_by: created_at asc
    }
    order_by: user_id asc, created_at asc
}

To Reproduce

Using the BigQuery GA4 sample dataset, run the following query:

run: events -> {
    where: trim(event_name) = "purchase"
    select: event_date
    select: event_name
    calculate: prev_occur is lag(event_date) {
        partition_by: event_name
        order_by: event_date asc
    }
    order_by: event_name asc, event_date asc
}

OS:

macOS

Malloy Client:

VS Code

Malloy Client Version:

v0.3.1706811226

Database Connection:

BigQuery