Skip to content

Clickhouse: incorrect query when filtering on 'string' measure with 'equals' operatorΒ #7328

@elqx

Description

@elqx

Describe the bug
Cube generates incorrect query when measure of type 'string' is used as a filter with operator 'equals'. This applies to Clickhouse driver. Despite the measure being of type 'string', the generated HAVING clause tries to compare string value to the value of toFloat64(?).

To Reproduce
Steps to reproduce the behavior:

  1. Use Clickhouse driver
  2. Use the Cube schema that I provided below
  3. Run the query with a filter on 'string' measure and operator 'equals' (see attached screenshots)

Expected behavior
The correct query should be generated. Cube should not use the toFloat64 function.

Screenshots
image

image

Minimally reproducible Cube Schema

cube(`cubeA`, {
    
    sql: `
        select 1 as id, 100 as number
    `,

    dimensions: {
        id: {
            type: 'number',
            sql: 'id',
            primary_key: true
        },
        number: {
            type: 'number',
            sql: 'number'
        }
    },
   
    measures: {
      high_or_low: {
        type: `string`,
        sql: `CASE WHEN ${CUBE.number} > 100 THEN 'high' ELSE 'low' END`
      },
    },
  });

Version:
0.34.10

Metadata

Metadata

Assignees

No one assigned

    Labels

    driver:clickhouseIssues related to the ClickHouse driverhelp wantedCommunity contributions are welcome.

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions