diff --git a/docs-mintlify/docs/data-modeling/concepts/calculated-members.mdx b/docs-mintlify/docs/data-modeling/concepts/calculated-members.mdx index 62257a87e3cc9..1288e1bdce365 100644 --- a/docs-mintlify/docs/data-modeling/concepts/calculated-members.mdx +++ b/docs-mintlify/docs/data-modeling/concepts/calculated-members.mdx @@ -207,7 +207,7 @@ cube(`users`, { }, purchases_to_users_ratio: { - sql: `100.0 * ${orders.purchases} / ${CUBE.count}`, + sql: `1.0 * ${orders.purchases} / ${CUBE.count}`, type: `number`, format: `percent` } diff --git a/docs-mintlify/docs/data-modeling/overview.mdx b/docs-mintlify/docs/data-modeling/overview.mdx index 71c11245e1b5c..4c03bdb4a9de9 100644 --- a/docs-mintlify/docs/data-modeling/overview.mdx +++ b/docs-mintlify/docs/data-modeling/overview.mdx @@ -286,7 +286,7 @@ measure via an API, the following SQL will be generated: ```sql SELECT - 100.0 * COUNT( + 1.0 * COUNT( CASE WHEN (users.paying = 'true') THEN users.id END ) / COUNT(users.id) AS paying_percentage FROM users diff --git a/docs-mintlify/docs/getting-started/cloud/create-data-model.mdx b/docs-mintlify/docs/getting-started/cloud/create-data-model.mdx index 59739c097d5b4..1c125c2de57a2 100644 --- a/docs-mintlify/docs/getting-started/cloud/create-data-model.mdx +++ b/docs-mintlify/docs/getting-started/cloud/create-data-model.mdx @@ -109,7 +109,7 @@ within the `measures` block. ```yaml - name: completed_percentage type: number - sql: "(100.0 * {CUBE.completed_count} / NULLIF({CUBE.count}, 0))" + sql: "(1.0 * {CUBE.completed_count} / NULLIF({CUBE.count}, 0))" format: percent ``` @@ -156,7 +156,7 @@ cubes: - name: completed_percentage type: number - sql: "(100.0 * {CUBE.completed_count} / NULLIF({CUBE.count}, 0))" + sql: "(1.0 * {CUBE.completed_count} / NULLIF({CUBE.count}, 0))" format: percent ``` diff --git a/docs-mintlify/recipes/data-modeling/cohort-retention.mdx b/docs-mintlify/recipes/data-modeling/cohort-retention.mdx index 4a66106a37678..28cfd4fd63db0 100644 --- a/docs-mintlify/recipes/data-modeling/cohort-retention.mdx +++ b/docs-mintlify/recipes/data-modeling/cohort-retention.mdx @@ -139,7 +139,7 @@ cubes: - users.email - name: percentage_of_active - sql: "100.0 * {total_active_count} / NULLIF({total_count}, 0)" + sql: "1.0 * {total_active_count} / NULLIF({total_count}, 0)" type: number format: percent drill_members: @@ -168,7 +168,7 @@ cube(`monthly_retention`, { }, percentage_of_active: { - sql: `100.0 * ${total_active_count} / NULLIF(${total_count}, 0)`, + sql: `1.0 * ${total_active_count} / NULLIF(${total_count}, 0)`, type: `number`, format: `percent`, drill_members: [ diff --git a/docs-mintlify/recipes/data-modeling/event-analytics.mdx b/docs-mintlify/recipes/data-modeling/event-analytics.mdx index 29a9e075b08dd..929f1e4fb56a0 100644 --- a/docs-mintlify/recipes/data-modeling/event-analytics.mdx +++ b/docs-mintlify/recipes/data-modeling/event-analytics.mdx @@ -739,7 +739,7 @@ cubes: - - sql: "{is_bounced} = 'True' - name: bounce_rate - sql: "100.00 * {bounced_count} / NULLIF({count}, 0)" + sql: "1.0 * {bounced_count} / NULLIF({count}, 0)" type: number format: percent ``` @@ -770,7 +770,7 @@ cube("sessions", { }, bounce_rate: { - sql: `100.00 * ${bounced_count} / NULLIF(${count}, 0)`, + sql: `1.0 * ${bounced_count} / NULLIF(${count}, 0)`, type: `number`, format: `percent` } @@ -846,7 +846,7 @@ cube("sessions", { repeat_percent: { description: `Percent of Repeat Sessions`, - sql: `100.00 * ${repeat_count} / NULLIF(${count}, 0)`, + sql: `1.0 * ${repeat_count} / NULLIF(${count}, 0)`, type: `number`, format: `percent` } @@ -875,7 +875,7 @@ cubes: - name: repeat_percent description: Percent of Repeat Sessions - sql: "100.00 * {repeat_count} / NULLIF({count}, 0)" + sql: "1.0 * {repeat_count} / NULLIF({count}, 0)" type: number format: percent diff --git a/docs-mintlify/recipes/data-modeling/using-dynamic-measures.mdx b/docs-mintlify/recipes/data-modeling/using-dynamic-measures.mdx index 75ed985dd8399..ce31291f272cd 100644 --- a/docs-mintlify/recipes/data-modeling/using-dynamic-measures.mdx +++ b/docs-mintlify/recipes/data-modeling/using-dynamic-measures.mdx @@ -41,7 +41,7 @@ const createPercentageMeasure = (status) => ({ sql: (CUBE) => `ROUND(${CUBE[`total_${status}_orders`]}::NUMERIC / ${ CUBE.total_orders - }::NUMERIC * 100.0, 2)` + }::NUMERIC, 2)` } }) diff --git a/docs-mintlify/reference/core-data-apis/sql-api/query-format.mdx b/docs-mintlify/reference/core-data-apis/sql-api/query-format.mdx index 4ffb6d7cc23e6..6dc2a5ab976c2 100644 --- a/docs-mintlify/reference/core-data-apis/sql-api/query-format.mdx +++ b/docs-mintlify/reference/core-data-apis/sql-api/query-format.mdx @@ -256,7 +256,7 @@ cubes: - name: completed_percentage type: number - sql: "(100.0 * {CUBE.completed_count} / NULLIF({CUBE.count}, 0))" + sql: "(1.0 * {CUBE.completed_count} / NULLIF({CUBE.count}, 0))" format: percent ``` diff --git a/docs/content/product/apis-integrations/core-data-apis/sql-api/query-format.mdx b/docs/content/product/apis-integrations/core-data-apis/sql-api/query-format.mdx index e0549e94196b3..bb77c7cfbf373 100644 --- a/docs/content/product/apis-integrations/core-data-apis/sql-api/query-format.mdx +++ b/docs/content/product/apis-integrations/core-data-apis/sql-api/query-format.mdx @@ -256,7 +256,7 @@ cubes: - name: completed_percentage type: number - sql: "(100.0 * {CUBE.completed_count} / NULLIF({CUBE.count}, 0))" + sql: "(1.0 * {CUBE.completed_count} / NULLIF({CUBE.count}, 0))" format: percent ``` diff --git a/docs/content/product/data-modeling/concepts/calculated-members.mdx b/docs/content/product/data-modeling/concepts/calculated-members.mdx index 9c4c71eb729fd..071557ef3ec79 100644 --- a/docs/content/product/data-modeling/concepts/calculated-members.mdx +++ b/docs/content/product/data-modeling/concepts/calculated-members.mdx @@ -158,7 +158,7 @@ cube(`users`, { }, purchases_to_users_ratio: { - sql: `100.0 * ${orders.purchases} / ${CUBE.count}`, + sql: `1.0 * ${orders.purchases} / ${CUBE.count}`, type: `number`, format: `percent` } diff --git a/docs/content/product/data-modeling/overview.mdx b/docs/content/product/data-modeling/overview.mdx index bf9ac86d5e32a..d8a091e313cb0 100644 --- a/docs/content/product/data-modeling/overview.mdx +++ b/docs/content/product/data-modeling/overview.mdx @@ -283,7 +283,7 @@ measure via an API, the following SQL will be generated: ```sql SELECT - 100.0 * COUNT( + 1.0 * COUNT( CASE WHEN (users.paying = 'true') THEN users.id END ) / COUNT(users.id) AS paying_percentage FROM users diff --git a/docs/content/product/data-modeling/recipes/cohort-retention.mdx b/docs/content/product/data-modeling/recipes/cohort-retention.mdx index d298ba8ad9fe6..01f4b9279b770 100644 --- a/docs/content/product/data-modeling/recipes/cohort-retention.mdx +++ b/docs/content/product/data-modeling/recipes/cohort-retention.mdx @@ -139,7 +139,7 @@ cubes: - users.email - name: percentage_of_active - sql: "100.0 * {total_active_count} / NULLIF({total_count}, 0)" + sql: "1.0 * {total_active_count} / NULLIF({total_count}, 0)" type: number format: percent drill_members: @@ -168,7 +168,7 @@ cube(`monthly_retention`, { }, percentage_of_active: { - sql: `100.0 * ${total_active_count} / NULLIF(${total_count}, 0)`, + sql: `1.0 * ${total_active_count} / NULLIF(${total_count}, 0)`, type: `number`, format: `percent`, drill_members: [ diff --git a/docs/content/product/data-modeling/recipes/event-analytics.mdx b/docs/content/product/data-modeling/recipes/event-analytics.mdx index e047accf8136d..9f2f5cf8745aa 100644 --- a/docs/content/product/data-modeling/recipes/event-analytics.mdx +++ b/docs/content/product/data-modeling/recipes/event-analytics.mdx @@ -742,7 +742,7 @@ cube("sessions", { }, bounce_rate: { - sql: `100.00 * ${bounced_count} / NULLIF(${count}, 0)`, + sql: `1.0 * ${bounced_count} / NULLIF(${count}, 0)`, type: `number`, format: `percent` } @@ -770,7 +770,7 @@ cubes: - - sql: "{is_bounced} = 'True' - name: bounce_rate - sql: "100.00 * {bounced_count} / NULLIF({count}, 0)" + sql: "1.0 * {bounced_count} / NULLIF({count}, 0)" type: number format: percent ``` @@ -843,7 +843,7 @@ cube("sessions", { repeat_percent: { description: `Percent of Repeat Sessions`, - sql: `100.00 * ${repeat_count} / NULLIF(${count}, 0)`, + sql: `1.0 * ${repeat_count} / NULLIF(${count}, 0)`, type: `number`, format: `percent` } @@ -872,7 +872,7 @@ cubes: - name: repeat_percent description: Percent of Repeat Sessions - sql: "100.00 * {repeat_count} / NULLIF({count}, 0)" + sql: "1.0 * {repeat_count} / NULLIF({count}, 0)" type: number format: percent diff --git a/docs/content/product/data-modeling/recipes/using-dynamic-measures.mdx b/docs/content/product/data-modeling/recipes/using-dynamic-measures.mdx index a4e4c307857dd..5e3237d20d016 100644 --- a/docs/content/product/data-modeling/recipes/using-dynamic-measures.mdx +++ b/docs/content/product/data-modeling/recipes/using-dynamic-measures.mdx @@ -38,7 +38,7 @@ const createPercentageMeasure = (status) => ({ sql: (CUBE) => `ROUND(${CUBE[`total_${status}_orders`]}::NUMERIC / ${ CUBE.total_orders - }::NUMERIC * 100.0, 2)` + }::NUMERIC, 2)` } }) diff --git a/docs/content/product/getting-started/cloud/create-data-model.mdx b/docs/content/product/getting-started/cloud/create-data-model.mdx index c591c8b988826..79793dd372823 100644 --- a/docs/content/product/getting-started/cloud/create-data-model.mdx +++ b/docs/content/product/getting-started/cloud/create-data-model.mdx @@ -107,7 +107,7 @@ within the `measures` block. ```yaml - name: completed_percentage type: number - sql: "(100.0 * {CUBE.completed_count} / NULLIF({CUBE.count}, 0))" + sql: "(1.0 * {CUBE.completed_count} / NULLIF({CUBE.count}, 0))" format: percent ``` @@ -154,7 +154,7 @@ cubes: - name: completed_percentage type: number - sql: "(100.0 * {CUBE.completed_count} / NULLIF({CUBE.count}, 0))" + sql: "(1.0 * {CUBE.completed_count} / NULLIF({CUBE.count}, 0))" format: percent ``` diff --git a/examples/recipes/active-users/schema/ActiveUsers.js b/examples/recipes/active-users/schema/ActiveUsers.js index 2e87fc5d4a6e6..b455206fb0c1d 100644 --- a/examples/recipes/active-users/schema/ActiveUsers.js +++ b/examples/recipes/active-users/schema/ActiveUsers.js @@ -31,7 +31,7 @@ cube(`ActiveUsers`, { wauToMau: { title: `WAU to MAU`, - sql: `100.000 * ${weeklyActiveUsers} / NULLIF(${monthlyActiveUsers}, 0)`, + sql: `1.0 * ${weeklyActiveUsers} / NULLIF(${monthlyActiveUsers}, 0)`, type: `number`, format: `percent`, }, diff --git a/examples/recipes/referencing-dynamic-measures/schema/Orders.js b/examples/recipes/referencing-dynamic-measures/schema/Orders.js index 56363fe9208e8..dc960ca1b39f2 100644 --- a/examples/recipes/referencing-dynamic-measures/schema/Orders.js +++ b/examples/recipes/referencing-dynamic-measures/schema/Orders.js @@ -22,7 +22,7 @@ const createPercentageMeasure = (status) => ({ format: `percent`, title: `Percentage of ${status} orders`, sql: (CUBE) => - `ROUND(${CUBE[`Total_${status}_orders`]}::numeric / ${CUBE.totalOrders}::numeric * 100.0, 2)`, + `ROUND(${CUBE[`Total_${status}_orders`]}::numeric / ${CUBE.totalOrders}::numeric, 2)`, }, }); diff --git a/packages/cubejs-schema-compiler/src/extensions/Funnels.ts b/packages/cubejs-schema-compiler/src/extensions/Funnels.ts index d5a8d5bce714b..b24861ef9d12e 100644 --- a/packages/cubejs-schema-compiler/src/extensions/Funnels.ts +++ b/packages/cubejs-schema-compiler/src/extensions/Funnels.ts @@ -45,7 +45,7 @@ ${eventJoin.join('\nLEFT JOIN\n')} shown: false }, conversionsPercent: { - sql: (conversions, firstStepConversions) => `CASE WHEN ${firstStepConversions} > 0 THEN 100.0 * ${conversions} / ${firstStepConversions} ELSE NULL END`, + sql: (conversions, firstStepConversions) => `CASE WHEN ${firstStepConversions} > 0 THEN 1.0 * ${conversions} / ${firstStepConversions} ELSE NULL END`, type: 'number', format: 'percent' } diff --git a/packages/cubejs-schema-compiler/test/unit/fixtures/calendar_orders.yml b/packages/cubejs-schema-compiler/test/unit/fixtures/calendar_orders.yml index c0ffd1e03c45f..6710462892c44 100644 --- a/packages/cubejs-schema-compiler/test/unit/fixtures/calendar_orders.yml +++ b/packages/cubejs-schema-compiler/test/unit/fixtures/calendar_orders.yml @@ -59,7 +59,7 @@ cubes: - sql: "{CUBE}.status = 'completed'" - name: completed_percentage - sql: "({completed_count} / NULLIF({count}, 0)) * 100.0" + sql: "1.0 * {completed_count} / NULLIF({count}, 0)" type: number format: percent