From d3bcecbe206ca0428c2742bb71cd493f5f27e85b Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Fri, 16 May 2025 15:56:27 +0200 Subject: [PATCH 01/39] Remove redirect_from entries from front matter in MDX files --- docs/pages/guides/data-store-cost-saving-guide.mdx | 5 ----- docs/pages/guides/recipes.mdx | 5 ----- .../guides/recipes/access-control/column-based-access.mdx | 5 ----- .../controlling-access-to-cubes-and-views.mdx | 5 ----- .../recipes/access-control/enforcing-mandatory-filters.mdx | 5 ----- .../guides/recipes/access-control/role-based-access.mdx | 5 ----- .../access-control/using-different-schemas-for-tenants.mdx | 5 ----- docs/pages/guides/recipes/analytics/active-users.mdx | 6 ------ docs/pages/guides/recipes/analytics/cohort-retention.mdx | 6 ------ docs/pages/guides/recipes/analytics/event-analytics.mdx | 6 ------ docs/pages/guides/recipes/analytics/funnels.mdx | 6 ------ docs/pages/guides/recipes/auth/auth0-guide.mdx | 6 ------ docs/pages/guides/recipes/auth/aws-cognito.mdx | 6 ------ .../guides/recipes/code-reusability/schema-generation.mdx | 6 ------ .../guides/recipes/data-modeling/dynamic-union-tables.mdx | 6 ------ .../recipes/data-modeling/entity-attribute-value.mdx | 5 ----- .../passing-dynamic-parameters-in-a-query.mdx | 5 ----- docs/pages/guides/recipes/data-modeling/percentiles.mdx | 5 ----- docs/pages/guides/recipes/data-modeling/snapshots.mdx | 5 ----- .../recipes/data-modeling/using-dynamic-measures.mdx | 5 ----- .../recipes/data-sources/multiple-sources-same-schema.mdx | 5 ----- .../data-sources/using-ssl-connections-to-data-source.mdx | 5 ----- .../recipes/queries/getting-unique-values-for-a-field.mdx | 5 ----- docs/pages/guides/recipes/queries/pagination.mdx | 5 ----- ...mentally-building-pre-aggregations-for-a-date-range.mdx | 5 ----- .../query-acceleration/joining-multiple-data-sources.mdx | 5 ----- .../guides/recipes/query-acceleration/non-additivity.mdx | 5 ----- .../query-acceleration/refreshing-select-partitions.mdx | 5 ----- .../using-originalsql-and-rollups-effectively.mdx | 5 ----- .../upgrading-cube/migrating-from-express-to-docker.mdx | 5 ----- docs/pages/guides/style-guide.mdx | 5 ----- docs/pages/product/apis-integrations.mdx | 5 ----- docs/pages/product/apis-integrations/graphql-api.mdx | 5 ----- docs/pages/product/apis-integrations/javascript-sdk.mdx | 5 ----- .../product/apis-integrations/javascript-sdk/angular.mdx | 5 ----- .../product/apis-integrations/javascript-sdk/react.mdx | 5 ----- .../pages/product/apis-integrations/javascript-sdk/vue.mdx | 5 ----- docs/pages/product/apis-integrations/orchestration-api.mdx | 5 ----- .../apis-integrations/orchestration-api/airflow.mdx | 5 ----- .../apis-integrations/orchestration-api/dagster.mdx | 5 ----- .../apis-integrations/orchestration-api/prefect.mdx | 5 ----- docs/pages/product/apis-integrations/queries.mdx | 5 ----- docs/pages/product/apis-integrations/rest-api.mdx | 5 ----- .../product/apis-integrations/rest-api/query-format.mdx | 5 ----- .../apis-integrations/rest-api/real-time-data-fetch.mdx | 5 ----- .../pages/product/apis-integrations/rest-api/reference.mdx | 5 ----- docs/pages/product/apis-integrations/sql-api/joins.mdx | 5 ----- docs/pages/product/apis-integrations/sql-api/security.mdx | 5 ----- docs/pages/product/auth/context.mdx | 5 ----- docs/pages/product/caching.mdx | 5 ----- .../product/caching/getting-started-pre-aggregations.mdx | 5 ----- docs/pages/product/caching/lambda-pre-aggregations.mdx | 5 ----- docs/pages/product/caching/running-in-production.mdx | 5 ----- docs/pages/product/caching/using-pre-aggregations.mdx | 5 ----- docs/pages/product/configuration/data-sources.mdx | 6 ------ .../product/configuration/data-sources/aws-redshift.mdx | 5 ----- .../product/configuration/data-sources/clickhouse.mdx | 5 ----- .../product/configuration/data-sources/databricks-jdbc.mdx | 5 ----- docs/pages/product/configuration/data-sources/druid.mdx | 5 ----- .../product/configuration/data-sources/elasticsearch.mdx | 5 ----- docs/pages/product/configuration/data-sources/firebolt.mdx | 5 ----- .../product/configuration/data-sources/google-bigquery.mdx | 5 ----- docs/pages/product/configuration/data-sources/hive.mdx | 5 ----- .../product/configuration/data-sources/materialize.mdx | 5 ----- docs/pages/product/configuration/data-sources/mongodb.mdx | 5 ----- docs/pages/product/configuration/data-sources/mysql.mdx | 5 ----- docs/pages/product/configuration/data-sources/oracle.mdx | 5 ----- docs/pages/product/configuration/data-sources/pinot.mdx | 5 ----- docs/pages/product/configuration/data-sources/postgres.mdx | 5 ----- docs/pages/product/configuration/data-sources/presto.mdx | 6 ------ docs/pages/product/configuration/data-sources/questdb.mdx | 5 ----- docs/pages/product/configuration/data-sources/sqlite.mdx | 5 ----- docs/pages/product/configuration/data-sources/trino.mdx | 5 ----- docs/pages/product/configuration/multitenancy.mdx | 5 ----- docs/pages/product/configuration/visualization-tools.mdx | 5 ----- .../product/configuration/visualization-tools/appsmith.mdx | 5 ----- .../product/configuration/visualization-tools/bubble.mdx | 5 ----- .../product/configuration/visualization-tools/budibase.mdx | 5 ----- .../product/configuration/visualization-tools/deepnote.mdx | 5 ----- .../product/configuration/visualization-tools/hex.mdx | 5 ----- .../product/configuration/visualization-tools/jupyter.mdx | 5 ----- .../configuration/visualization-tools/observable.mdx | 5 ----- .../product/configuration/visualization-tools/retool.mdx | 5 ----- .../configuration/visualization-tools/streamlit.mdx | 5 ----- .../product/configuration/visualization-tools/tableau.mdx | 5 ----- .../configuration/visualization-tools/thoughtspot.mdx | 5 ----- docs/pages/product/data-modeling/concepts.mdx | 5 ----- .../pages/product/data-modeling/concepts/data-blending.mdx | 7 ------- .../product/data-modeling/concepts/polymorphic-cubes.mdx | 7 ------- .../product/data-modeling/concepts/working-with-joins.mdx | 7 ------- .../dynamic/code-reusability-export-and-import.mdx | 7 ------- .../data-modeling/dynamic/schema-execution-environment.mdx | 6 ------ docs/pages/product/data-modeling/overview.mdx | 5 ----- docs/pages/product/data-modeling/syntax.mdx | 7 ------- docs/pages/product/deployment.mdx | 7 ------- docs/pages/product/deployment/cloud.mdx | 5 ----- docs/pages/product/deployment/cloud/auto-suspension.mdx | 5 ----- .../product/deployment/cloud/continuous-deployment.mdx | 5 ----- docs/pages/product/deployment/cloud/custom-domains.mdx | 5 ----- docs/pages/product/deployment/cloud/deployment-types.mdx | 5 ----- docs/pages/product/deployment/cloud/limits.mdx | 5 ----- docs/pages/product/deployment/cloud/pricing.mdx | 5 ----- docs/pages/product/deployment/cloud/vpc.mdx | 5 ----- docs/pages/product/deployment/cloud/vpc/aws.mdx | 5 ----- docs/pages/product/deployment/cloud/vpc/azure.mdx | 5 ----- docs/pages/product/deployment/cloud/vpc/gcp.mdx | 5 ----- docs/pages/product/deployment/core.mdx | 5 ----- docs/pages/product/deployment/production-checklist.mdx | 5 ----- docs/pages/product/faqs/general.mdx | 5 ----- docs/pages/product/faqs/tips-and-tricks.mdx | 5 ----- docs/pages/product/faqs/troubleshooting.mdx | 5 ----- docs/pages/product/getting-started.mdx | 5 ----- docs/pages/product/getting-started/cloud.mdx | 5 ----- .../product/getting-started/cloud/connect-to-snowflake.mdx | 5 ----- .../product/getting-started/cloud/create-data-model.mdx | 5 ----- docs/pages/product/getting-started/cloud/load-data.mdx | 5 ----- docs/pages/product/getting-started/cloud/query-from-bi.mdx | 5 ----- .../product/getting-started/cloud/query-from-react-app.mdx | 5 ----- docs/pages/product/getting-started/core.mdx | 7 ------- .../product/getting-started/core/add-a-pre-aggregation.mdx | 5 ----- .../product/getting-started/core/create-a-project.mdx | 5 ----- docs/pages/product/getting-started/core/learn-more.mdx | 5 ----- docs/pages/product/getting-started/core/query-data.mdx | 5 ----- .../import-bitbucket-repository-via-ssh.mdx | 5 ----- .../migrate-from-core/import-git-repository-via-ssh.mdx | 5 ----- .../migrate-from-core/import-github-repository.mdx | 5 ----- .../migrate-from-core/import-gitlab-repository-via-ssh.mdx | 5 ----- .../getting-started/migrate-from-core/upload-with-cli.mdx | 5 ----- docs/pages/product/introduction.mdx | 6 ------ docs/pages/product/workspace/cli.mdx | 5 ----- docs/pages/product/workspace/cli/reference.mdx | 5 ----- docs/pages/product/workspace/dev-mode.mdx | 5 ----- docs/pages/product/workspace/monitoring/datadog.mdx | 5 ----- docs/pages/product/workspace/monitoring/grafana-cloud.mdx | 5 ----- docs/pages/product/workspace/playground.mdx | 6 ------ docs/pages/product/workspace/pre-aggregations.mdx | 5 ----- docs/pages/product/workspace/preferences.mdx | 5 ----- docs/pages/product/workspace/query-history.mdx | 5 ----- docs/pages/product/workspace/sql-runner.mdx | 5 ----- docs/pages/product/workspace/sso/okta.mdx | 5 ----- docs/pages/reference/configuration/config.mdx | 5 ----- .../reference/configuration/environment-variables.mdx | 5 ----- docs/pages/reference/data-model/cube.mdx | 6 ------ docs/pages/reference/data-model/dimensions.mdx | 6 ------ docs/pages/reference/data-model/joins.mdx | 6 ------ docs/pages/reference/data-model/measures.mdx | 6 ------ docs/pages/reference/data-model/pre-aggregations.mdx | 6 ------ docs/pages/reference/data-model/segments.mdx | 6 ------ docs/pages/reference/data-model/view.mdx | 5 ----- 149 files changed, 778 deletions(-) diff --git a/docs/pages/guides/data-store-cost-saving-guide.mdx b/docs/pages/guides/data-store-cost-saving-guide.mdx index 6bb64bb004415..d4016b451f95c 100644 --- a/docs/pages/guides/data-store-cost-saving-guide.mdx +++ b/docs/pages/guides/data-store-cost-saving-guide.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /guides/data-store-cost-saving-guide ---- - # Data Store Cost Saving Guide As a semantic layer, Cube supports various [data diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index db4008b7f9399..9131b11c42623 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes ---- - # Recipes These recipes will show you the best practices of using Cube. diff --git a/docs/pages/guides/recipes/access-control/column-based-access.mdx b/docs/pages/guides/recipes/access-control/column-based-access.mdx index 0e2697dad8b3a..356d77d59b290 100644 --- a/docs/pages/guides/recipes/access-control/column-based-access.mdx +++ b/docs/pages/guides/recipes/access-control/column-based-access.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/column-based-access ---- - # Enforcing column-based access ## Use case diff --git a/docs/pages/guides/recipes/access-control/controlling-access-to-cubes-and-views.mdx b/docs/pages/guides/recipes/access-control/controlling-access-to-cubes-and-views.mdx index eb98b75a067cf..3d5a8964d0059 100644 --- a/docs/pages/guides/recipes/access-control/controlling-access-to-cubes-and-views.mdx +++ b/docs/pages/guides/recipes/access-control/controlling-access-to-cubes-and-views.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/controlling-access-to-cubes-and-views ---- - # Controlling access to cubes and views ## Use case diff --git a/docs/pages/guides/recipes/access-control/enforcing-mandatory-filters.mdx b/docs/pages/guides/recipes/access-control/enforcing-mandatory-filters.mdx index 5329af8e7617b..2a71d5fcfb8ee 100644 --- a/docs/pages/guides/recipes/access-control/enforcing-mandatory-filters.mdx +++ b/docs/pages/guides/recipes/access-control/enforcing-mandatory-filters.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/enforcing-mandatory-filters ---- - # Enforcing mandatory filters ## Use case diff --git a/docs/pages/guides/recipes/access-control/role-based-access.mdx b/docs/pages/guides/recipes/access-control/role-based-access.mdx index 6ec754a123f0b..4e88e788c7d01 100644 --- a/docs/pages/guides/recipes/access-control/role-based-access.mdx +++ b/docs/pages/guides/recipes/access-control/role-based-access.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/role-based-access ---- - # Enforcing role-based access ## Use case diff --git a/docs/pages/guides/recipes/access-control/using-different-schemas-for-tenants.mdx b/docs/pages/guides/recipes/access-control/using-different-schemas-for-tenants.mdx index 7aaa462408b3f..e74de4aebf62b 100644 --- a/docs/pages/guides/recipes/access-control/using-different-schemas-for-tenants.mdx +++ b/docs/pages/guides/recipes/access-control/using-different-schemas-for-tenants.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/using-different-schemas-for-tenants ---- - # Using different data models for tenants ## Use case diff --git a/docs/pages/guides/recipes/analytics/active-users.mdx b/docs/pages/guides/recipes/analytics/active-users.mdx index 611b38b3adab5..4257cec16ab32 100644 --- a/docs/pages/guides/recipes/analytics/active-users.mdx +++ b/docs/pages/guides/recipes/analytics/active-users.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /active-users - - /recipes/active-users ---- - # Daily, Weekly, Monthly Active Users (DAU, WAU, MAU) ## Use case diff --git a/docs/pages/guides/recipes/analytics/cohort-retention.mdx b/docs/pages/guides/recipes/analytics/cohort-retention.mdx index 40cf67f7dc523..1b6f22237586d 100644 --- a/docs/pages/guides/recipes/analytics/cohort-retention.mdx +++ b/docs/pages/guides/recipes/analytics/cohort-retention.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /cohort-retention - - /recipes/cohort-retention ---- - # Implementing retention analysis & cohorts This is an advanced topic that assumes good, pre-existing knowledge of SQL and diff --git a/docs/pages/guides/recipes/analytics/event-analytics.mdx b/docs/pages/guides/recipes/analytics/event-analytics.mdx index 274404c4e536f..4e0e090c5c702 100644 --- a/docs/pages/guides/recipes/analytics/event-analytics.mdx +++ b/docs/pages/guides/recipes/analytics/event-analytics.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /event-analytics - - /recipes/event-analytics ---- - # Implementing event analytics diff --git a/docs/pages/guides/recipes/analytics/funnels.mdx b/docs/pages/guides/recipes/analytics/funnels.mdx index cf24eb958826f..8cd047da451ee 100644 --- a/docs/pages/guides/recipes/analytics/funnels.mdx +++ b/docs/pages/guides/recipes/analytics/funnels.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /funnels - - /recipes/funnels ---- - # Implementing funnel analysis diff --git a/docs/pages/guides/recipes/auth/auth0-guide.mdx b/docs/pages/guides/recipes/auth/auth0-guide.mdx index 9f23cab53ed31..66a51e6c53e2a 100644 --- a/docs/pages/guides/recipes/auth/auth0-guide.mdx +++ b/docs/pages/guides/recipes/auth/auth0-guide.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /security/jwt/auth0 - - /recipes/authn-with-auth0 ---- - # Authenticate requests to Cube with Auth0 ## Introduction diff --git a/docs/pages/guides/recipes/auth/aws-cognito.mdx b/docs/pages/guides/recipes/auth/aws-cognito.mdx index 6f16e6035ec67..3a8fb9af3cd9c 100644 --- a/docs/pages/guides/recipes/auth/aws-cognito.mdx +++ b/docs/pages/guides/recipes/auth/aws-cognito.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /security/jwt/aws-cognito - - /recipes/authn-with-aws-cognito ---- - # Authenticate requests to Cube with AWS Cognito ## Introduction diff --git a/docs/pages/guides/recipes/code-reusability/schema-generation.mdx b/docs/pages/guides/recipes/code-reusability/schema-generation.mdx index ea919f4aee7dc..7dcebfa05604b 100644 --- a/docs/pages/guides/recipes/code-reusability/schema-generation.mdx +++ b/docs/pages/guides/recipes/code-reusability/schema-generation.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /schema-generation - - /recipes/schema-generation ---- - # Implementing data model generation diff --git a/docs/pages/guides/recipes/data-modeling/dynamic-union-tables.mdx b/docs/pages/guides/recipes/data-modeling/dynamic-union-tables.mdx index 18748ecd7e714..f43836b6ea9f2 100644 --- a/docs/pages/guides/recipes/data-modeling/dynamic-union-tables.mdx +++ b/docs/pages/guides/recipes/data-modeling/dynamic-union-tables.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /dynamically-union-tables - - /recipes/dynamically-union-tables ---- - # Using dynamic union tables ## Use case diff --git a/docs/pages/guides/recipes/data-modeling/entity-attribute-value.mdx b/docs/pages/guides/recipes/data-modeling/entity-attribute-value.mdx index bfe963513ce1e..3e907a5382ec5 100644 --- a/docs/pages/guides/recipes/data-modeling/entity-attribute-value.mdx +++ b/docs/pages/guides/recipes/data-modeling/entity-attribute-value.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/entity-attribute-value ---- - # Implementing Entity-Attribute-Value Model (EAV) ## Use case diff --git a/docs/pages/guides/recipes/data-modeling/passing-dynamic-parameters-in-a-query.mdx b/docs/pages/guides/recipes/data-modeling/passing-dynamic-parameters-in-a-query.mdx index ab627157b9a38..704c363cd8199 100644 --- a/docs/pages/guides/recipes/data-modeling/passing-dynamic-parameters-in-a-query.mdx +++ b/docs/pages/guides/recipes/data-modeling/passing-dynamic-parameters-in-a-query.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/passing-dynamic-parameters-in-a-query ---- - # Passing dynamic parameters in a query ## Use case diff --git a/docs/pages/guides/recipes/data-modeling/percentiles.mdx b/docs/pages/guides/recipes/data-modeling/percentiles.mdx index bb3a61b1dc42f..cc77f5b34a929 100644 --- a/docs/pages/guides/recipes/data-modeling/percentiles.mdx +++ b/docs/pages/guides/recipes/data-modeling/percentiles.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/percentiles ---- - # Calculating averages and percentiles ## Use case diff --git a/docs/pages/guides/recipes/data-modeling/snapshots.mdx b/docs/pages/guides/recipes/data-modeling/snapshots.mdx index 96ec28ae61945..8856f25a5285e 100644 --- a/docs/pages/guides/recipes/data-modeling/snapshots.mdx +++ b/docs/pages/guides/recipes/data-modeling/snapshots.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/snapshots ---- - # Implementing data snapshots diff --git a/docs/pages/guides/recipes/data-modeling/using-dynamic-measures.mdx b/docs/pages/guides/recipes/data-modeling/using-dynamic-measures.mdx index fccac6be14325..8a421dca6cef8 100644 --- a/docs/pages/guides/recipes/data-modeling/using-dynamic-measures.mdx +++ b/docs/pages/guides/recipes/data-modeling/using-dynamic-measures.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/referencing-dynamic-measures ---- - # Using dynamic measures diff --git a/docs/pages/guides/recipes/data-sources/multiple-sources-same-schema.mdx b/docs/pages/guides/recipes/data-sources/multiple-sources-same-schema.mdx index 24fe3e78e5e74..ae448689fa4fc 100644 --- a/docs/pages/guides/recipes/data-sources/multiple-sources-same-schema.mdx +++ b/docs/pages/guides/recipes/data-sources/multiple-sources-same-schema.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/multiple-sources-same-schema ---- - # Using multiple data sources ## Use case diff --git a/docs/pages/guides/recipes/data-sources/using-ssl-connections-to-data-source.mdx b/docs/pages/guides/recipes/data-sources/using-ssl-connections-to-data-source.mdx index 95b5d9979ab48..7b632b7a0d9b7 100644 --- a/docs/pages/guides/recipes/data-sources/using-ssl-connections-to-data-source.mdx +++ b/docs/pages/guides/recipes/data-sources/using-ssl-connections-to-data-source.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/enable-ssl-connections-to-database ---- - # Using SSL Connections to a data source Cube supports SSL-encrypted connections to various data sources. Please check diff --git a/docs/pages/guides/recipes/queries/getting-unique-values-for-a-field.mdx b/docs/pages/guides/recipes/queries/getting-unique-values-for-a-field.mdx index e296a7cd8519b..6bbe82450efb8 100644 --- a/docs/pages/guides/recipes/queries/getting-unique-values-for-a-field.mdx +++ b/docs/pages/guides/recipes/queries/getting-unique-values-for-a-field.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/getting-unique-values-for-a-field ---- - # Getting unique values for a field ## Use case diff --git a/docs/pages/guides/recipes/queries/pagination.mdx b/docs/pages/guides/recipes/queries/pagination.mdx index c4dc412a07491..eb660774ef0c1 100644 --- a/docs/pages/guides/recipes/queries/pagination.mdx +++ b/docs/pages/guides/recipes/queries/pagination.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/pagination ---- - # Implementing pagination ## Use case diff --git a/docs/pages/guides/recipes/query-acceleration/incrementally-building-pre-aggregations-for-a-date-range.mdx b/docs/pages/guides/recipes/query-acceleration/incrementally-building-pre-aggregations-for-a-date-range.mdx index a7574173fc68c..edb41cc556355 100644 --- a/docs/pages/guides/recipes/query-acceleration/incrementally-building-pre-aggregations-for-a-date-range.mdx +++ b/docs/pages/guides/recipes/query-acceleration/incrementally-building-pre-aggregations-for-a-date-range.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/incrementally-building-pre-aggregations-for-a-date-range ---- - # Incrementally building pre-aggregations for a date range ## Use case diff --git a/docs/pages/guides/recipes/query-acceleration/joining-multiple-data-sources.mdx b/docs/pages/guides/recipes/query-acceleration/joining-multiple-data-sources.mdx index 3c184963c16d7..eab24b9ece4d4 100644 --- a/docs/pages/guides/recipes/query-acceleration/joining-multiple-data-sources.mdx +++ b/docs/pages/guides/recipes/query-acceleration/joining-multiple-data-sources.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/joining-multiple-data-sources ---- - # Joining data from multiple data sources ## Use case diff --git a/docs/pages/guides/recipes/query-acceleration/non-additivity.mdx b/docs/pages/guides/recipes/query-acceleration/non-additivity.mdx index d67c48a395499..0aec0b727de9f 100644 --- a/docs/pages/guides/recipes/query-acceleration/non-additivity.mdx +++ b/docs/pages/guides/recipes/query-acceleration/non-additivity.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/non-additivity ---- - # Accelerating non-additive measures ## Use case diff --git a/docs/pages/guides/recipes/query-acceleration/refreshing-select-partitions.mdx b/docs/pages/guides/recipes/query-acceleration/refreshing-select-partitions.mdx index 46a9695401e85..3fdf05c35d40a 100644 --- a/docs/pages/guides/recipes/query-acceleration/refreshing-select-partitions.mdx +++ b/docs/pages/guides/recipes/query-acceleration/refreshing-select-partitions.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/refreshing-select-partitions ---- - # Refreshing select partitions ## Use case diff --git a/docs/pages/guides/recipes/query-acceleration/using-originalsql-and-rollups-effectively.mdx b/docs/pages/guides/recipes/query-acceleration/using-originalsql-and-rollups-effectively.mdx index 1ffd5f7a3b32d..9d74a214ebc69 100644 --- a/docs/pages/guides/recipes/query-acceleration/using-originalsql-and-rollups-effectively.mdx +++ b/docs/pages/guides/recipes/query-acceleration/using-originalsql-and-rollups-effectively.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/using-originalsql-and-rollups-effectively ---- - # Using `original_sql` and `rollup` pre-aggregations effectively ## Use case diff --git a/docs/pages/guides/recipes/upgrading-cube/migrating-from-express-to-docker.mdx b/docs/pages/guides/recipes/upgrading-cube/migrating-from-express-to-docker.mdx index e129ff1f051d4..a1987eea54863 100644 --- a/docs/pages/guides/recipes/upgrading-cube/migrating-from-express-to-docker.mdx +++ b/docs/pages/guides/recipes/upgrading-cube/migrating-from-express-to-docker.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /recipes/migrating-from-express-to-docker ---- - # Migrating from Express to Docker Since [`v0.23`][link-v-023-release], Cube CLI uses the `docker` template instead diff --git a/docs/pages/guides/style-guide.mdx b/docs/pages/guides/style-guide.mdx index 8224e1cc0177f..5814bb1aeb9ed 100644 --- a/docs/pages/guides/style-guide.mdx +++ b/docs/pages/guides/style-guide.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /style-guide ---- - # Cube Style Guide This style guide includes best practices on data modeling in Cube. diff --git a/docs/pages/product/apis-integrations.mdx b/docs/pages/product/apis-integrations.mdx index 15bc385d12cc2..ab81187931abd 100644 --- a/docs/pages/product/apis-integrations.mdx +++ b/docs/pages/product/apis-integrations.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /apis-integrations ---- - # APIs & integrations With a rich set of APIs, Cube can power and deliver data to all kinds of data diff --git a/docs/pages/product/apis-integrations/graphql-api.mdx b/docs/pages/product/apis-integrations/graphql-api.mdx index 5016433b96625..1cd4319604be9 100644 --- a/docs/pages/product/apis-integrations/graphql-api.mdx +++ b/docs/pages/product/apis-integrations/graphql-api.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /http-api/graphql ---- - # GraphQL API GraphQL API enables Cube to deliver data over the HTTP protocol to diff --git a/docs/pages/product/apis-integrations/javascript-sdk.mdx b/docs/pages/product/apis-integrations/javascript-sdk.mdx index c8ff5038e1b63..20732979bc469 100644 --- a/docs/pages/product/apis-integrations/javascript-sdk.mdx +++ b/docs/pages/product/apis-integrations/javascript-sdk.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /frontend-introduction ---- - # JavaScript SDK Cube is visualization-agnostic, so you can build any user interface for your diff --git a/docs/pages/product/apis-integrations/javascript-sdk/angular.mdx b/docs/pages/product/apis-integrations/javascript-sdk/angular.mdx index 241db9dea978f..609c85b2d4e4e 100644 --- a/docs/pages/product/apis-integrations/javascript-sdk/angular.mdx +++ b/docs/pages/product/apis-integrations/javascript-sdk/angular.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /frontend-introduction/angular ---- - # Angular Cube is visualization-agnostic, so you can build any user interface for your diff --git a/docs/pages/product/apis-integrations/javascript-sdk/react.mdx b/docs/pages/product/apis-integrations/javascript-sdk/react.mdx index 4f6ce1955dbbe..23923ef7baba9 100644 --- a/docs/pages/product/apis-integrations/javascript-sdk/react.mdx +++ b/docs/pages/product/apis-integrations/javascript-sdk/react.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /frontend-introduction/react ---- - # React Cube is visualization-agnostic, so you can build any user interface for your diff --git a/docs/pages/product/apis-integrations/javascript-sdk/vue.mdx b/docs/pages/product/apis-integrations/javascript-sdk/vue.mdx index 85f79927979e4..467d913deba5f 100644 --- a/docs/pages/product/apis-integrations/javascript-sdk/vue.mdx +++ b/docs/pages/product/apis-integrations/javascript-sdk/vue.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /frontend-introduction/vue ---- - # Vue Cube is visualization-agnostic, so you can build any user interface for your diff --git a/docs/pages/product/apis-integrations/orchestration-api.mdx b/docs/pages/product/apis-integrations/orchestration-api.mdx index 69edd6129cf3e..2cd7ad29ebb70 100644 --- a/docs/pages/product/apis-integrations/orchestration-api.mdx +++ b/docs/pages/product/apis-integrations/orchestration-api.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /orchestration-api ---- - # Orchestration API Orchestration API enables Cube to work with data orchestration tools and let diff --git a/docs/pages/product/apis-integrations/orchestration-api/airflow.mdx b/docs/pages/product/apis-integrations/orchestration-api/airflow.mdx index a118a8c2ae838..fb604c9d9eef7 100644 --- a/docs/pages/product/apis-integrations/orchestration-api/airflow.mdx +++ b/docs/pages/product/apis-integrations/orchestration-api/airflow.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /orchestration-api/airflow ---- - # Integration with Apache Airflow [Apache Airflow][airflow] is a popular open-source workflow scheduler commonly diff --git a/docs/pages/product/apis-integrations/orchestration-api/dagster.mdx b/docs/pages/product/apis-integrations/orchestration-api/dagster.mdx index 769c2fbec4c0f..7a6afd224ded8 100644 --- a/docs/pages/product/apis-integrations/orchestration-api/dagster.mdx +++ b/docs/pages/product/apis-integrations/orchestration-api/dagster.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /orchestration-api/dagster ---- - # Integration with Dagster [Dagster][dagster] is a popular open-source data pipeline orchestrator. [Dagster diff --git a/docs/pages/product/apis-integrations/orchestration-api/prefect.mdx b/docs/pages/product/apis-integrations/orchestration-api/prefect.mdx index c6cf6c103ade5..c7d406e4c7a87 100644 --- a/docs/pages/product/apis-integrations/orchestration-api/prefect.mdx +++ b/docs/pages/product/apis-integrations/orchestration-api/prefect.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /orchestration-api/prefect ---- - # Integration with Prefect [Prefect][prefect] is a popular open-source orchestrator for data-intensive diff --git a/docs/pages/product/apis-integrations/queries.mdx b/docs/pages/product/apis-integrations/queries.mdx index 6f171ce22eb88..df063402bc247 100644 --- a/docs/pages/product/apis-integrations/queries.mdx +++ b/docs/pages/product/apis-integrations/queries.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /product/data-modeling/queries ---- - # Querying data APIs After creating a [data model][ref-data-model], you would like to *ask questions diff --git a/docs/pages/product/apis-integrations/rest-api.mdx b/docs/pages/product/apis-integrations/rest-api.mdx index df1f2dc830045..105e9b6c15495 100644 --- a/docs/pages/product/apis-integrations/rest-api.mdx +++ b/docs/pages/product/apis-integrations/rest-api.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /http-api/rest ---- - # REST API REST API enables Cube to deliver data over the HTTP protocol to certain kinds of diff --git a/docs/pages/product/apis-integrations/rest-api/query-format.mdx b/docs/pages/product/apis-integrations/rest-api/query-format.mdx index 44b314b96efb6..2df7a18adbc69 100644 --- a/docs/pages/product/apis-integrations/rest-api/query-format.mdx +++ b/docs/pages/product/apis-integrations/rest-api/query-format.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /query-format ---- - # Query format in the REST API Queries to the REST API are plain JavaScript objects, describing an analytics diff --git a/docs/pages/product/apis-integrations/rest-api/real-time-data-fetch.mdx b/docs/pages/product/apis-integrations/rest-api/real-time-data-fetch.mdx index 7b27465ca2937..c35b34953466e 100644 --- a/docs/pages/product/apis-integrations/rest-api/real-time-data-fetch.mdx +++ b/docs/pages/product/apis-integrations/rest-api/real-time-data-fetch.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /real-time-data-fetch ---- - # Real-Time data fetch Most of databases supported by Cube are retroactive. It means Cube should diff --git a/docs/pages/product/apis-integrations/rest-api/reference.mdx b/docs/pages/product/apis-integrations/rest-api/reference.mdx index 1105f8a8a444d..940146218dbe9 100644 --- a/docs/pages/product/apis-integrations/rest-api/reference.mdx +++ b/docs/pages/product/apis-integrations/rest-api/reference.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /rest-api ---- - # REST API reference The [REST API][ref-rest-api] provides the following endpoints. diff --git a/docs/pages/product/apis-integrations/sql-api/joins.mdx b/docs/pages/product/apis-integrations/sql-api/joins.mdx index 0274c5c9af5bf..aea75eb980d59 100644 --- a/docs/pages/product/apis-integrations/sql-api/joins.mdx +++ b/docs/pages/product/apis-integrations/sql-api/joins.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /backend/sql/reference/joins ---- - ## Views The best practice to query joins using SQL API is to use views. This is the preferred way of diff --git a/docs/pages/product/apis-integrations/sql-api/security.mdx b/docs/pages/product/apis-integrations/sql-api/security.mdx index 1081bc146243d..cf638c97eef60 100644 --- a/docs/pages/product/apis-integrations/sql-api/security.mdx +++ b/docs/pages/product/apis-integrations/sql-api/security.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /backend/sql/security ---- - # Authentication and Authorization Cube can be configured with dynamic username & password verification system by diff --git a/docs/pages/product/auth/context.mdx b/docs/pages/product/auth/context.mdx index 8a2b0e86c8869..7c357eadb7468 100644 --- a/docs/pages/product/auth/context.mdx +++ b/docs/pages/product/auth/context.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /security/context ---- - # Security context Your authentication server issues JWTs to your client application, which, when diff --git a/docs/pages/product/caching.mdx b/docs/pages/product/caching.mdx index 27927423b642e..17fb8de5092ec 100644 --- a/docs/pages/product/caching.mdx +++ b/docs/pages/product/caching.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /caching ---- - # Caching Overview
diff --git a/docs/pages/product/caching/getting-started-pre-aggregations.mdx b/docs/pages/product/caching/getting-started-pre-aggregations.mdx index c02ed564009b6..625ec61271002 100644 --- a/docs/pages/product/caching/getting-started-pre-aggregations.mdx +++ b/docs/pages/product/caching/getting-started-pre-aggregations.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /caching/pre-aggregations/getting-started ---- - # Getting started with pre-aggregations Often at the beginning of an analytical application's lifecycle - when there is diff --git a/docs/pages/product/caching/lambda-pre-aggregations.mdx b/docs/pages/product/caching/lambda-pre-aggregations.mdx index 6d4ad3d675a46..2f28c4901db4d 100644 --- a/docs/pages/product/caching/lambda-pre-aggregations.mdx +++ b/docs/pages/product/caching/lambda-pre-aggregations.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /caching/pre-aggregations/lambda-pre-aggregations ---- - # Lambda pre-aggregations Lambda pre-aggregations follow the diff --git a/docs/pages/product/caching/running-in-production.mdx b/docs/pages/product/caching/running-in-production.mdx index 975b52fb04424..1e2514f946196 100644 --- a/docs/pages/product/caching/running-in-production.mdx +++ b/docs/pages/product/caching/running-in-production.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /caching/running-in-production ---- - # Running in production Cube makes use of two different kinds of cache: diff --git a/docs/pages/product/caching/using-pre-aggregations.mdx b/docs/pages/product/caching/using-pre-aggregations.mdx index 2d694e5025aa7..4fa17a40c2a70 100644 --- a/docs/pages/product/caching/using-pre-aggregations.mdx +++ b/docs/pages/product/caching/using-pre-aggregations.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /caching/using-pre-aggregations ---- - # Using pre-aggregations Pre-aggregations is an implementation of aggregate awareness in Cube. diff --git a/docs/pages/product/configuration/data-sources.mdx b/docs/pages/product/configuration/data-sources.mdx index 3ec81c2d7b0bc..c82208595c53b 100644 --- a/docs/pages/product/configuration/data-sources.mdx +++ b/docs/pages/product/configuration/data-sources.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /connecting-to-the-database - - /config/databases ---- - # Connecting to data sources Choose a data source to get started with below. diff --git a/docs/pages/product/configuration/data-sources/aws-redshift.mdx b/docs/pages/product/configuration/data-sources/aws-redshift.mdx index 2e1f41db413cf..912ed5e3d4b1f 100644 --- a/docs/pages/product/configuration/data-sources/aws-redshift.mdx +++ b/docs/pages/product/configuration/data-sources/aws-redshift.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/databases/aws-redshift ---- - # AWS Redshift ## Prerequisites diff --git a/docs/pages/product/configuration/data-sources/clickhouse.mdx b/docs/pages/product/configuration/data-sources/clickhouse.mdx index 68d598ad2c789..9f3d9820ac094 100644 --- a/docs/pages/product/configuration/data-sources/clickhouse.mdx +++ b/docs/pages/product/configuration/data-sources/clickhouse.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/databases/clickhouse ---- - # ClickHouse [ClickHouse](https://clickhouse.com) is a fast and resource efficient diff --git a/docs/pages/product/configuration/data-sources/databricks-jdbc.mdx b/docs/pages/product/configuration/data-sources/databricks-jdbc.mdx index 35877399c54fb..081b4d7a33f82 100644 --- a/docs/pages/product/configuration/data-sources/databricks-jdbc.mdx +++ b/docs/pages/product/configuration/data-sources/databricks-jdbc.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/databases/databricks/jdbc ---- - # Databricks [Databricks](https://www.databricks.com) is a unified data intelligence platform. diff --git a/docs/pages/product/configuration/data-sources/druid.mdx b/docs/pages/product/configuration/data-sources/druid.mdx index 0eea27a5cf053..f42b152adb371 100644 --- a/docs/pages/product/configuration/data-sources/druid.mdx +++ b/docs/pages/product/configuration/data-sources/druid.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/databases/druid ---- - # Druid diff --git a/docs/pages/product/configuration/data-sources/elasticsearch.mdx b/docs/pages/product/configuration/data-sources/elasticsearch.mdx index 81ab0d2ace6ec..49a84cf6f2a0c 100644 --- a/docs/pages/product/configuration/data-sources/elasticsearch.mdx +++ b/docs/pages/product/configuration/data-sources/elasticsearch.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/databases/elasticsearch ---- - # Elasticsearch diff --git a/docs/pages/product/configuration/data-sources/firebolt.mdx b/docs/pages/product/configuration/data-sources/firebolt.mdx index 5dc1f1e1cc5c8..587e56240019b 100644 --- a/docs/pages/product/configuration/data-sources/firebolt.mdx +++ b/docs/pages/product/configuration/data-sources/firebolt.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/databases/firebolt ---- - # Firebolt diff --git a/docs/pages/product/configuration/data-sources/google-bigquery.mdx b/docs/pages/product/configuration/data-sources/google-bigquery.mdx index 267618f144120..c7943d016aca2 100644 --- a/docs/pages/product/configuration/data-sources/google-bigquery.mdx +++ b/docs/pages/product/configuration/data-sources/google-bigquery.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/databases/google-bigquery ---- - # Google BigQuery ## Prerequisites diff --git a/docs/pages/product/configuration/data-sources/hive.mdx b/docs/pages/product/configuration/data-sources/hive.mdx index a4482dc4141d2..0ae801c3cce9f 100644 --- a/docs/pages/product/configuration/data-sources/hive.mdx +++ b/docs/pages/product/configuration/data-sources/hive.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/databases/hive-sparksql ---- - # Hive / SparkSQL diff --git a/docs/pages/product/configuration/data-sources/materialize.mdx b/docs/pages/product/configuration/data-sources/materialize.mdx index 4534d9fdf2917..a2ab9e1d1f682 100644 --- a/docs/pages/product/configuration/data-sources/materialize.mdx +++ b/docs/pages/product/configuration/data-sources/materialize.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/databases/materialize ---- - # Materialize diff --git a/docs/pages/product/configuration/data-sources/mongodb.mdx b/docs/pages/product/configuration/data-sources/mongodb.mdx index 6a71981a466a7..f62f03c1ff70a 100644 --- a/docs/pages/product/configuration/data-sources/mongodb.mdx +++ b/docs/pages/product/configuration/data-sources/mongodb.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/databases/mongodb ---- - # MongoDB [MongoDB](https://www.mongodb.com) is a popular document database. It can be diff --git a/docs/pages/product/configuration/data-sources/mysql.mdx b/docs/pages/product/configuration/data-sources/mysql.mdx index c45db1a192630..800c4a644bc72 100644 --- a/docs/pages/product/configuration/data-sources/mysql.mdx +++ b/docs/pages/product/configuration/data-sources/mysql.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/databases/mysql ---- - # MySQL ## Prerequisites diff --git a/docs/pages/product/configuration/data-sources/oracle.mdx b/docs/pages/product/configuration/data-sources/oracle.mdx index 8561b59d2d472..f66f04f2f73a7 100644 --- a/docs/pages/product/configuration/data-sources/oracle.mdx +++ b/docs/pages/product/configuration/data-sources/oracle.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/databases/oracle ---- - # Oracle diff --git a/docs/pages/product/configuration/data-sources/pinot.mdx b/docs/pages/product/configuration/data-sources/pinot.mdx index 6331bade4644f..0786a2fe626c0 100644 --- a/docs/pages/product/configuration/data-sources/pinot.mdx +++ b/docs/pages/product/configuration/data-sources/pinot.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/databases/pinot ---- - # Apache Pinot [Apache Pinot][link-pinot] is a real-time distributed OLAP datastore purpose-built diff --git a/docs/pages/product/configuration/data-sources/postgres.mdx b/docs/pages/product/configuration/data-sources/postgres.mdx index f0010e4f7f804..46be81911bb5a 100644 --- a/docs/pages/product/configuration/data-sources/postgres.mdx +++ b/docs/pages/product/configuration/data-sources/postgres.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/databases/postgres ---- - # Postgres ## Prerequisites diff --git a/docs/pages/product/configuration/data-sources/presto.mdx b/docs/pages/product/configuration/data-sources/presto.mdx index a889013134c58..c22db66051cff 100644 --- a/docs/pages/product/configuration/data-sources/presto.mdx +++ b/docs/pages/product/configuration/data-sources/presto.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /config/databases/prestodb - - /config/databases/presto ---- - # Presto ## Prerequisites diff --git a/docs/pages/product/configuration/data-sources/questdb.mdx b/docs/pages/product/configuration/data-sources/questdb.mdx index b628a7b60c63e..3fca7183c16ac 100644 --- a/docs/pages/product/configuration/data-sources/questdb.mdx +++ b/docs/pages/product/configuration/data-sources/questdb.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/databases/questdb ---- - # QuestDB [QuestDB][questdb] is a high-performance [time-series database][time-series-database-glossary] which helps you overcome ingestion bottlenecks. diff --git a/docs/pages/product/configuration/data-sources/sqlite.mdx b/docs/pages/product/configuration/data-sources/sqlite.mdx index f955aaa2bd64e..1f52d708a96c2 100644 --- a/docs/pages/product/configuration/data-sources/sqlite.mdx +++ b/docs/pages/product/configuration/data-sources/sqlite.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/databases/sqlite ---- - # SQLite diff --git a/docs/pages/product/configuration/data-sources/trino.mdx b/docs/pages/product/configuration/data-sources/trino.mdx index 816d01455f958..86dc3586ad740 100644 --- a/docs/pages/product/configuration/data-sources/trino.mdx +++ b/docs/pages/product/configuration/data-sources/trino.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/databases/trino ---- - # Trino ## Prerequisites diff --git a/docs/pages/product/configuration/multitenancy.mdx b/docs/pages/product/configuration/multitenancy.mdx index eb8c1cda9b375..7a886245d9039 100644 --- a/docs/pages/product/configuration/multitenancy.mdx +++ b/docs/pages/product/configuration/multitenancy.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/multitenancy ---- - # Multitenancy Cube supports multitenancy out of the box, both on database and data model diff --git a/docs/pages/product/configuration/visualization-tools.mdx b/docs/pages/product/configuration/visualization-tools.mdx index 82242e684a8f1..59a183d74b32a 100644 --- a/docs/pages/product/configuration/visualization-tools.mdx +++ b/docs/pages/product/configuration/visualization-tools.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/downstream ---- - # Connecting to visualization tools Choose a tool to get started with below. diff --git a/docs/pages/product/configuration/visualization-tools/appsmith.mdx b/docs/pages/product/configuration/visualization-tools/appsmith.mdx index a772f76b6f697..eb0037d17121f 100644 --- a/docs/pages/product/configuration/visualization-tools/appsmith.mdx +++ b/docs/pages/product/configuration/visualization-tools/appsmith.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/downstream/appsmith ---- - # Appsmith [Appsmith](https://www.appsmith.com) is an open-source framework for building diff --git a/docs/pages/product/configuration/visualization-tools/bubble.mdx b/docs/pages/product/configuration/visualization-tools/bubble.mdx index c696cdfcd2223..6a51b9276377f 100644 --- a/docs/pages/product/configuration/visualization-tools/bubble.mdx +++ b/docs/pages/product/configuration/visualization-tools/bubble.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/downstream/bubble ---- - # Bubble [Bubble](https://bubble.io/) is one of the oldest and most comprehensive diff --git a/docs/pages/product/configuration/visualization-tools/budibase.mdx b/docs/pages/product/configuration/visualization-tools/budibase.mdx index 15e5e7f94d44f..8080f7bb39849 100644 --- a/docs/pages/product/configuration/visualization-tools/budibase.mdx +++ b/docs/pages/product/configuration/visualization-tools/budibase.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/downstream/budibase ---- - # Budibase Budibase is a low-code app-building platform that helps developers create diff --git a/docs/pages/product/configuration/visualization-tools/deepnote.mdx b/docs/pages/product/configuration/visualization-tools/deepnote.mdx index 67249a2774e97..6f0ffb0fd056b 100644 --- a/docs/pages/product/configuration/visualization-tools/deepnote.mdx +++ b/docs/pages/product/configuration/visualization-tools/deepnote.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/downstream/deepnote ---- - # Deepnote Deepnote is a data notebook that is built for collaboration and is Jupyter compatible. diff --git a/docs/pages/product/configuration/visualization-tools/hex.mdx b/docs/pages/product/configuration/visualization-tools/hex.mdx index 1f2a4a54120a8..12d819c55f1b1 100644 --- a/docs/pages/product/configuration/visualization-tools/hex.mdx +++ b/docs/pages/product/configuration/visualization-tools/hex.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/downstream/hex ---- - # Hex Hex is a collaborative, AI-powered workspace. diff --git a/docs/pages/product/configuration/visualization-tools/jupyter.mdx b/docs/pages/product/configuration/visualization-tools/jupyter.mdx index b730f0730a1d6..975cddd7c38cc 100644 --- a/docs/pages/product/configuration/visualization-tools/jupyter.mdx +++ b/docs/pages/product/configuration/visualization-tools/jupyter.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/downstream/jupyter ---- - # Jupyter Jupyter Notebook is a web application for creating and sharing computational diff --git a/docs/pages/product/configuration/visualization-tools/observable.mdx b/docs/pages/product/configuration/visualization-tools/observable.mdx index b82a6ff86a6c7..5333641a97812 100644 --- a/docs/pages/product/configuration/visualization-tools/observable.mdx +++ b/docs/pages/product/configuration/visualization-tools/observable.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/downstream/observable ---- - # Observable Observable is a collaborative data notebook. diff --git a/docs/pages/product/configuration/visualization-tools/retool.mdx b/docs/pages/product/configuration/visualization-tools/retool.mdx index 4a19b37f0ae8f..c2970edbc3531 100644 --- a/docs/pages/product/configuration/visualization-tools/retool.mdx +++ b/docs/pages/product/configuration/visualization-tools/retool.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/downstream/retool ---- - # Retool [Retool](https://retool.com/) is the fast way to build internal tools. It lets diff --git a/docs/pages/product/configuration/visualization-tools/streamlit.mdx b/docs/pages/product/configuration/visualization-tools/streamlit.mdx index 104bbeef1fa02..bc51ddb9efa14 100644 --- a/docs/pages/product/configuration/visualization-tools/streamlit.mdx +++ b/docs/pages/product/configuration/visualization-tools/streamlit.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/downstream/streamlit ---- - # Streamlit Streamlit turns data scripts into shareable web apps in minutes. diff --git a/docs/pages/product/configuration/visualization-tools/tableau.mdx b/docs/pages/product/configuration/visualization-tools/tableau.mdx index fc207e3bedb6c..95c9fc4ff6616 100644 --- a/docs/pages/product/configuration/visualization-tools/tableau.mdx +++ b/docs/pages/product/configuration/visualization-tools/tableau.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/downstream/tableau ---- - # Tableau [Tableau](https://www.tableau.com) is a popular visual analytics platform. diff --git a/docs/pages/product/configuration/visualization-tools/thoughtspot.mdx b/docs/pages/product/configuration/visualization-tools/thoughtspot.mdx index a5e6c3399f967..337030b1a7299 100644 --- a/docs/pages/product/configuration/visualization-tools/thoughtspot.mdx +++ b/docs/pages/product/configuration/visualization-tools/thoughtspot.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config/downstream/thoughtspot ---- - # ThoughtSpot [ThoughtSpot][thoughtspot] is an analytics platform that allows users to search and diff --git a/docs/pages/product/data-modeling/concepts.mdx b/docs/pages/product/data-modeling/concepts.mdx index d663e6dadb287..16454e7a27867 100644 --- a/docs/pages/product/data-modeling/concepts.mdx +++ b/docs/pages/product/data-modeling/concepts.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /schema/fundamentals/concepts ---- - # Concepts Cube borrows a lot of terminology from [OLAP diff --git a/docs/pages/product/data-modeling/concepts/data-blending.mdx b/docs/pages/product/data-modeling/concepts/data-blending.mdx index f19c045bd096a..4acc541740514 100644 --- a/docs/pages/product/data-modeling/concepts/data-blending.mdx +++ b/docs/pages/product/data-modeling/concepts/data-blending.mdx @@ -1,10 +1,3 @@ ---- -redirect_from: - - /data-blending - - /recipes/data-blending - - /schema/advanced/data-blending ---- - # Data blending In case you want to plot two measures from different cubes on a single chart, or diff --git a/docs/pages/product/data-modeling/concepts/polymorphic-cubes.mdx b/docs/pages/product/data-modeling/concepts/polymorphic-cubes.mdx index b3aeb0b344ebc..9a5cd407a51e1 100644 --- a/docs/pages/product/data-modeling/concepts/polymorphic-cubes.mdx +++ b/docs/pages/product/data-modeling/concepts/polymorphic-cubes.mdx @@ -1,10 +1,3 @@ ---- -redirect_from: - - /polymorphic-cubes - - /recipes/polymorphic-cubes - - /schema/advanced/polymorphic-cubes ---- - # Polymorphic cubes In programming languages, polymorphism usually means the use of a single symbol diff --git a/docs/pages/product/data-modeling/concepts/working-with-joins.mdx b/docs/pages/product/data-modeling/concepts/working-with-joins.mdx index c2f6516602d00..5582446b5570e 100644 --- a/docs/pages/product/data-modeling/concepts/working-with-joins.mdx +++ b/docs/pages/product/data-modeling/concepts/working-with-joins.mdx @@ -1,10 +1,3 @@ ---- -redirect_from: - - /direction-of-joins - - /many-to-many-relationship - - /schema/fundamentals/joins ---- - # Working with Joins A join creates a relationship between two cubes in your Cube project. Cube diff --git a/docs/pages/product/data-modeling/dynamic/code-reusability-export-and-import.mdx b/docs/pages/product/data-modeling/dynamic/code-reusability-export-and-import.mdx index a5e3933db39bd..f4a9df9d217e6 100644 --- a/docs/pages/product/data-modeling/dynamic/code-reusability-export-and-import.mdx +++ b/docs/pages/product/data-modeling/dynamic/code-reusability-export-and-import.mdx @@ -1,10 +1,3 @@ ---- -redirect_from: - - /export-import - - /recipes/export-import - - /schema/advanced/export-import ---- - # Export and import diff --git a/docs/pages/product/data-modeling/dynamic/schema-execution-environment.mdx b/docs/pages/product/data-modeling/dynamic/schema-execution-environment.mdx index 3202b9fddc080..f9ebe59d0f3f9 100644 --- a/docs/pages/product/data-modeling/dynamic/schema-execution-environment.mdx +++ b/docs/pages/product/data-modeling/dynamic/schema-execution-environment.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /schema-execution-environment - - /schema/reference/execution-environment ---- - # Execution Environment (JavaScript) Cube Data Model Compiler uses [Node.js VM][nodejs-vm] to execute data model diff --git a/docs/pages/product/data-modeling/overview.mdx b/docs/pages/product/data-modeling/overview.mdx index a967f6f03aeb5..1f7a4f29abebd 100644 --- a/docs/pages/product/data-modeling/overview.mdx +++ b/docs/pages/product/data-modeling/overview.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /schema/getting-started ---- - # Getting started with data modeling The data model is used to transform raw data into meaningful business diff --git a/docs/pages/product/data-modeling/syntax.mdx b/docs/pages/product/data-modeling/syntax.mdx index 3eace2bb3b145..224e71715accf 100644 --- a/docs/pages/product/data-modeling/syntax.mdx +++ b/docs/pages/product/data-modeling/syntax.mdx @@ -1,10 +1,3 @@ ---- -redirect_from: - - /schema/fundamentals/working-with-yaml - - /schema/getting-started/yaml - - /data-modeling/syntax ---- - # Syntax Entities within the data model (e.g., cubes, views, etc.) should be placed under diff --git a/docs/pages/product/deployment.mdx b/docs/pages/product/deployment.mdx index 040e016a1da48..8741785ab6725 100644 --- a/docs/pages/product/deployment.mdx +++ b/docs/pages/product/deployment.mdx @@ -1,10 +1,3 @@ ---- -redirect_from: - - /deployment - - /deployment/guide - - /deployment/overview ---- - # Overview This section contains a general overview of deploying a Cube cluster in diff --git a/docs/pages/product/deployment/cloud.mdx b/docs/pages/product/deployment/cloud.mdx index 49601c43eec5a..01c361ec3129c 100644 --- a/docs/pages/product/deployment/cloud.mdx +++ b/docs/pages/product/deployment/cloud.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /deployment/platforms/cube-cloud ---- - # Deploying Cube to Cube Cloud This page explains the basics of deploying Cube to [Cube Cloud][link-cube-cloud], diff --git a/docs/pages/product/deployment/cloud/auto-suspension.mdx b/docs/pages/product/deployment/cloud/auto-suspension.mdx index 3c518f6d4822b..d1a55e49d637c 100644 --- a/docs/pages/product/deployment/cloud/auto-suspension.mdx +++ b/docs/pages/product/deployment/cloud/auto-suspension.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /deployment/cloud/auto-suspension ---- - # Auto-suspension diff --git a/docs/pages/product/deployment/cloud/continuous-deployment.mdx b/docs/pages/product/deployment/cloud/continuous-deployment.mdx index 91b742d6b8683..e6b536671287f 100644 --- a/docs/pages/product/deployment/cloud/continuous-deployment.mdx +++ b/docs/pages/product/deployment/cloud/continuous-deployment.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/deploys ---- - # Continuous deployment This guide covers features and tools you can use to deploy your Cube project to diff --git a/docs/pages/product/deployment/cloud/custom-domains.mdx b/docs/pages/product/deployment/cloud/custom-domains.mdx index 43d409896c7e6..c2e99c3c63d8c 100644 --- a/docs/pages/product/deployment/cloud/custom-domains.mdx +++ b/docs/pages/product/deployment/cloud/custom-domains.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/configuration/custom-domains ---- - # Custom domains By default, Cube Cloud deployments and their API endpoints use auto-generated diff --git a/docs/pages/product/deployment/cloud/deployment-types.mdx b/docs/pages/product/deployment/cloud/deployment-types.mdx index 85bc3c936f128..6bc980be0efe4 100644 --- a/docs/pages/product/deployment/cloud/deployment-types.mdx +++ b/docs/pages/product/deployment/cloud/deployment-types.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/configuration/deployment-types ---- - # Deployment types Cube Cloud provides you with three deployment types: diff --git a/docs/pages/product/deployment/cloud/limits.mdx b/docs/pages/product/deployment/cloud/limits.mdx index 517282a6d6400..d792c6e19be52 100644 --- a/docs/pages/product/deployment/cloud/limits.mdx +++ b/docs/pages/product/deployment/cloud/limits.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/limits ---- - # Limits and quotas in Cube Cloud Cube Cloud implements limits on resource usage on account and deployment levels diff --git a/docs/pages/product/deployment/cloud/pricing.mdx b/docs/pages/product/deployment/cloud/pricing.mdx index e9017aba921c0..3def57d29a4af 100644 --- a/docs/pages/product/deployment/cloud/pricing.mdx +++ b/docs/pages/product/deployment/cloud/pricing.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/pricing ---- - # Pricing in Cube Cloud Cube Cloud pricing is based on resource consumption which we measure diff --git a/docs/pages/product/deployment/cloud/vpc.mdx b/docs/pages/product/deployment/cloud/vpc.mdx index 09bfa426463b7..61b4e099f64ce 100644 --- a/docs/pages/product/deployment/cloud/vpc.mdx +++ b/docs/pages/product/deployment/cloud/vpc.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/configuration/connecting-with-a-vpc ---- - # Connecting with a VPC in Cube Cloud For improved stability and security, Cube Cloud supports connecting to one or diff --git a/docs/pages/product/deployment/cloud/vpc/aws.mdx b/docs/pages/product/deployment/cloud/vpc/aws.mdx index 12d19d420baf4..de84164fbb345 100644 --- a/docs/pages/product/deployment/cloud/vpc/aws.mdx +++ b/docs/pages/product/deployment/cloud/vpc/aws.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/configuration/connecting-with-a-vpc/aws ---- - # Connecting with a VPC on AWS [Dedicated infrastructure][dedicated-infrastructure] in Cube Cloud comes with diff --git a/docs/pages/product/deployment/cloud/vpc/azure.mdx b/docs/pages/product/deployment/cloud/vpc/azure.mdx index bd9ef94c5d4e4..44e4440c06aed 100644 --- a/docs/pages/product/deployment/cloud/vpc/azure.mdx +++ b/docs/pages/product/deployment/cloud/vpc/azure.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/configuration/connecting-with-a-vpc/azure ---- - # Connecting with a VPC on Azure ## Prerequisites diff --git a/docs/pages/product/deployment/cloud/vpc/gcp.mdx b/docs/pages/product/deployment/cloud/vpc/gcp.mdx index 49f981b192ec5..19a8d92a652fe 100644 --- a/docs/pages/product/deployment/cloud/vpc/gcp.mdx +++ b/docs/pages/product/deployment/cloud/vpc/gcp.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/configuration/connecting-with-a-vpc/gcp ---- - # Connecting with a VPC on GCP Work with your Cube sales or customer success team to initiate this process. diff --git a/docs/pages/product/deployment/core.mdx b/docs/pages/product/deployment/core.mdx index 425f08b1e2d7c..73e8356a8b69a 100644 --- a/docs/pages/product/deployment/core.mdx +++ b/docs/pages/product/deployment/core.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /deployment/platforms/docker ---- - # Deploying Cube Core with Docker This guide walks you through deploying Cube with Docker. diff --git a/docs/pages/product/deployment/production-checklist.mdx b/docs/pages/product/deployment/production-checklist.mdx index 44f03ee1c7db6..10ac73469dbc3 100644 --- a/docs/pages/product/deployment/production-checklist.mdx +++ b/docs/pages/product/deployment/production-checklist.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /deployment/production-checklist ---- - # Production checklist diff --git a/docs/pages/product/faqs/general.mdx b/docs/pages/product/faqs/general.mdx index 527e5aa987f69..09e8754add2c5 100644 --- a/docs/pages/product/faqs/general.mdx +++ b/docs/pages/product/faqs/general.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /faqs/general ---- - # General ## Can I try Cube Cloud for free? diff --git a/docs/pages/product/faqs/tips-and-tricks.mdx b/docs/pages/product/faqs/tips-and-tricks.mdx index 893aa87617599..e8c54e0314cbd 100644 --- a/docs/pages/product/faqs/tips-and-tricks.mdx +++ b/docs/pages/product/faqs/tips-and-tricks.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /faqs/tips-and-tricks ---- - # Tips and Tricks ## How can I read from two different database schemas in my database when I'm only able to select one while connecting? diff --git a/docs/pages/product/faqs/troubleshooting.mdx b/docs/pages/product/faqs/troubleshooting.mdx index caecb26fe29a2..88a17b9650178 100644 --- a/docs/pages/product/faqs/troubleshooting.mdx +++ b/docs/pages/product/faqs/troubleshooting.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /faqs/troubleshooting ---- - # Troubleshooting ## Error: Unsupported db type: undefined diff --git a/docs/pages/product/getting-started.mdx b/docs/pages/product/getting-started.mdx index 077103e35a958..3c1e0bce13529 100644 --- a/docs/pages/product/getting-started.mdx +++ b/docs/pages/product/getting-started.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /getting-started ---- - # Getting started with Cube Cube is a cloud-native application, designed to run in a cloud. You can get diff --git a/docs/pages/product/getting-started/cloud.mdx b/docs/pages/product/getting-started/cloud.mdx index 23a67919587c4..5a2bf60c6c154 100644 --- a/docs/pages/product/getting-started/cloud.mdx +++ b/docs/pages/product/getting-started/cloud.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /getting-started/cloud/overview ---- - # Getting started with Cube Cloud and Snowflake This getting started guide will show you how to use Cube Cloud with Snowflake. diff --git a/docs/pages/product/getting-started/cloud/connect-to-snowflake.mdx b/docs/pages/product/getting-started/cloud/connect-to-snowflake.mdx index b4aa3bc060eb6..0189fae48ce31 100644 --- a/docs/pages/product/getting-started/cloud/connect-to-snowflake.mdx +++ b/docs/pages/product/getting-started/cloud/connect-to-snowflake.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /getting-started/cloud/connect-to-snowflake ---- - # Connect to Snowflake In this section, we’ll create a Cube Cloud deployment and connect it to diff --git a/docs/pages/product/getting-started/cloud/create-data-model.mdx b/docs/pages/product/getting-started/cloud/create-data-model.mdx index 813437ae4f139..95b758fdccef6 100644 --- a/docs/pages/product/getting-started/cloud/create-data-model.mdx +++ b/docs/pages/product/getting-started/cloud/create-data-model.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /getting-started/cloud/create-data-model ---- - # Create your first data model Cube follows a dataset-oriented data modeling approach, which is inspired by and diff --git a/docs/pages/product/getting-started/cloud/load-data.mdx b/docs/pages/product/getting-started/cloud/load-data.mdx index 73422f58dda9a..b67dc8ce4a86f 100644 --- a/docs/pages/product/getting-started/cloud/load-data.mdx +++ b/docs/pages/product/getting-started/cloud/load-data.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /getting-started/cloud/load-data ---- - # Load data The following steps will guide you through setting up a Snowflake account and diff --git a/docs/pages/product/getting-started/cloud/query-from-bi.mdx b/docs/pages/product/getting-started/cloud/query-from-bi.mdx index b7cd7773aa255..b1439d93f4658 100644 --- a/docs/pages/product/getting-started/cloud/query-from-bi.mdx +++ b/docs/pages/product/getting-started/cloud/query-from-bi.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /getting-started/cloud/query-from-BI ---- - # Query from a BI tool You can query Cube using a BI or visualization tool through the Cube SQL API. To diff --git a/docs/pages/product/getting-started/cloud/query-from-react-app.mdx b/docs/pages/product/getting-started/cloud/query-from-react-app.mdx index a0f7b04d0bd5f..95f99e6f4d46e 100644 --- a/docs/pages/product/getting-started/cloud/query-from-react-app.mdx +++ b/docs/pages/product/getting-started/cloud/query-from-react-app.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /getting-started/cloud/query-from-react-app ---- - # Query from a React app Cube offers both [REST](/product/apis-integrations/rest-api) and diff --git a/docs/pages/product/getting-started/core.mdx b/docs/pages/product/getting-started/core.mdx index d9bacffc74875..b998bb922fe60 100644 --- a/docs/pages/product/getting-started/core.mdx +++ b/docs/pages/product/getting-started/core.mdx @@ -1,10 +1,3 @@ ---- -redirect_from: - - /getting-started-docker - - /getting-started/docker - - /getting-started/core/overview ---- - # Getting started with Cube Core First, we'll create a new project, connect it to a database and generate a data diff --git a/docs/pages/product/getting-started/core/add-a-pre-aggregation.mdx b/docs/pages/product/getting-started/core/add-a-pre-aggregation.mdx index e13c302211ace..43b6f2b4cd0cb 100644 --- a/docs/pages/product/getting-started/core/add-a-pre-aggregation.mdx +++ b/docs/pages/product/getting-started/core/add-a-pre-aggregation.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /getting-started/core/add-a-pre-aggregation ---- - # Add a pre-aggregation In this step, we'll add a pre-aggregation to optimize the performance of a diff --git a/docs/pages/product/getting-started/core/create-a-project.mdx b/docs/pages/product/getting-started/core/create-a-project.mdx index 5f81c437e70f2..f4fe31b3547d1 100644 --- a/docs/pages/product/getting-started/core/create-a-project.mdx +++ b/docs/pages/product/getting-started/core/create-a-project.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /getting-started/core/create-a-project ---- - # Create a project In this step, we will create a Cube Core project on your computer, connect a diff --git a/docs/pages/product/getting-started/core/learn-more.mdx b/docs/pages/product/getting-started/core/learn-more.mdx index da38be10e82ac..d2e23e578297c 100644 --- a/docs/pages/product/getting-started/core/learn-more.mdx +++ b/docs/pages/product/getting-started/core/learn-more.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /getting-started/core/learn-more ---- - # Learn more Now that you've set up your first project, learn more about what else Cube can diff --git a/docs/pages/product/getting-started/core/query-data.mdx b/docs/pages/product/getting-started/core/query-data.mdx index 1b9964a01cb95..110fca91306fa 100644 --- a/docs/pages/product/getting-started/core/query-data.mdx +++ b/docs/pages/product/getting-started/core/query-data.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /getting-started/core/query-data ---- - # Query data In this step, you will learn how to query your data using the data models you diff --git a/docs/pages/product/getting-started/migrate-from-core/import-bitbucket-repository-via-ssh.mdx b/docs/pages/product/getting-started/migrate-from-core/import-bitbucket-repository-via-ssh.mdx index 2ed67cf2cf68b..74fc147235f23 100644 --- a/docs/pages/product/getting-started/migrate-from-core/import-bitbucket-repository-via-ssh.mdx +++ b/docs/pages/product/getting-started/migrate-from-core/import-bitbucket-repository-via-ssh.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/getting-started/ssh/bitbucket ---- - # Import a Bitbucket repository This guide walks you through setting up Cube Cloud, importing a diff --git a/docs/pages/product/getting-started/migrate-from-core/import-git-repository-via-ssh.mdx b/docs/pages/product/getting-started/migrate-from-core/import-git-repository-via-ssh.mdx index b99816939ad9e..f39cf2beba40d 100644 --- a/docs/pages/product/getting-started/migrate-from-core/import-git-repository-via-ssh.mdx +++ b/docs/pages/product/getting-started/migrate-from-core/import-git-repository-via-ssh.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/getting-started/ssh/git ---- - # Import a Git repository This guide walks you through setting up Cube Cloud, importing a generic Git diff --git a/docs/pages/product/getting-started/migrate-from-core/import-github-repository.mdx b/docs/pages/product/getting-started/migrate-from-core/import-github-repository.mdx index ef67712aca5ca..3457c4ee57a32 100644 --- a/docs/pages/product/getting-started/migrate-from-core/import-github-repository.mdx +++ b/docs/pages/product/getting-started/migrate-from-core/import-github-repository.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/getting-started/github ---- - # Import a GitHub repository This guide walks you through setting up Cube Cloud, importing a [GitHub][github] diff --git a/docs/pages/product/getting-started/migrate-from-core/import-gitlab-repository-via-ssh.mdx b/docs/pages/product/getting-started/migrate-from-core/import-gitlab-repository-via-ssh.mdx index 233425c22a768..9bd23bee59715 100644 --- a/docs/pages/product/getting-started/migrate-from-core/import-gitlab-repository-via-ssh.mdx +++ b/docs/pages/product/getting-started/migrate-from-core/import-gitlab-repository-via-ssh.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/getting-started/ssh/gitlab ---- - # Import a GitLab repository This guide walks you through setting up Cube Cloud, importing a [GitLab][gitlab] diff --git a/docs/pages/product/getting-started/migrate-from-core/upload-with-cli.mdx b/docs/pages/product/getting-started/migrate-from-core/upload-with-cli.mdx index 8bc19bc54a8e8..2b99237efdd09 100644 --- a/docs/pages/product/getting-started/migrate-from-core/upload-with-cli.mdx +++ b/docs/pages/product/getting-started/migrate-from-core/upload-with-cli.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/getting-started/cli ---- - # Import a local project to Cube Cloud with CLI This guide walks you through setting up Cube Cloud, importing an existing Cube diff --git a/docs/pages/product/introduction.mdx b/docs/pages/product/introduction.mdx index 13e49dc50b6d2..bb543c2a61a4d 100644 --- a/docs/pages/product/introduction.mdx +++ b/docs/pages/product/introduction.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /cubejs-introduction - - /introduction ---- - # Introduction Cube is a universal semantic layer that represents the next evolution of OLAP technology for the cloud data platform era. Born in the cloud, Cube bridges the gap left when traditional OLAP capabilities from legacy specialized servers were not fully translated to modern cloud data platforms. diff --git a/docs/pages/product/workspace/cli.mdx b/docs/pages/product/workspace/cli.mdx index 7ae908f8146f5..df28d6a99c8be 100644 --- a/docs/pages/product/workspace/cli.mdx +++ b/docs/pages/product/workspace/cli.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /using-the-cubejs-cli ---- - # CLI The Cube command line interface (CLI) is used for various Cube workflows. It diff --git a/docs/pages/product/workspace/cli/reference.mdx b/docs/pages/product/workspace/cli/reference.mdx index dd9ed59a1982b..db808c5c912c9 100644 --- a/docs/pages/product/workspace/cli/reference.mdx +++ b/docs/pages/product/workspace/cli/reference.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /reference ---- - # CLI command reference With this CLI utility, you can [create](#create) a barebones Cube app, diff --git a/docs/pages/product/workspace/dev-mode.mdx b/docs/pages/product/workspace/dev-mode.mdx index 40d2ecadaaad6..366181358e523 100644 --- a/docs/pages/product/workspace/dev-mode.mdx +++ b/docs/pages/product/workspace/dev-mode.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/workspace/development-api ---- - # Development mode Development mode allows to test and debug the data model in an isolated diff --git a/docs/pages/product/workspace/monitoring/datadog.mdx b/docs/pages/product/workspace/monitoring/datadog.mdx index f9a0a372d7ab2..562afc14af75e 100644 --- a/docs/pages/product/workspace/monitoring/datadog.mdx +++ b/docs/pages/product/workspace/monitoring/datadog.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /monitoring/datadog ---- - # Integration with Datadog [Datadog][datadog] is a popular fully managed observability service. This guide diff --git a/docs/pages/product/workspace/monitoring/grafana-cloud.mdx b/docs/pages/product/workspace/monitoring/grafana-cloud.mdx index f6068a7c27f8e..e711fb5ecf96d 100644 --- a/docs/pages/product/workspace/monitoring/grafana-cloud.mdx +++ b/docs/pages/product/workspace/monitoring/grafana-cloud.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /monitoring/grafana-cloud ---- - # Integration with Grafana Cloud [Grafana Cloud][grafana] is a popular fully managed observability service. This diff --git a/docs/pages/product/workspace/playground.mdx b/docs/pages/product/workspace/playground.mdx index 59319f1a2f571..a6f3fba4fef5a 100644 --- a/docs/pages/product/workspace/playground.mdx +++ b/docs/pages/product/workspace/playground.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /cloud/dev-tools/dev-playground - - /dev-tools/dev-playground ---- - # Playground Playground is a web-based tool that helps validate the data model by executing diff --git a/docs/pages/product/workspace/pre-aggregations.mdx b/docs/pages/product/workspace/pre-aggregations.mdx index e16a21f5a088d..4b58a9971db4d 100644 --- a/docs/pages/product/workspace/pre-aggregations.mdx +++ b/docs/pages/product/workspace/pre-aggregations.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/inspecting-pre-aggregations ---- - # Pre-Aggregations The Pre-Aggregations page in Cube Cloud allows you to inspect all diff --git a/docs/pages/product/workspace/preferences.mdx b/docs/pages/product/workspace/preferences.mdx index 1358391d77407..5c07832d9b9ad 100644 --- a/docs/pages/product/workspace/preferences.mdx +++ b/docs/pages/product/workspace/preferences.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /workspace/preferences ---- - # Preferences As a Cube Cloud user, you can adjust certain features of the workspace to your diff --git a/docs/pages/product/workspace/query-history.mdx b/docs/pages/product/workspace/query-history.mdx index 0690cb92d5d9f..ec7edfe730ce2 100644 --- a/docs/pages/product/workspace/query-history.mdx +++ b/docs/pages/product/workspace/query-history.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/inspecting-queries ---- - # Query History The Query History feature in Cube Cloud is a one-stop shop for all performance diff --git a/docs/pages/product/workspace/sql-runner.mdx b/docs/pages/product/workspace/sql-runner.mdx index 5ad5079b9802e..b083d26a68301 100644 --- a/docs/pages/product/workspace/sql-runner.mdx +++ b/docs/pages/product/workspace/sql-runner.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /cloud/sql-runner ---- - # SQL Runner The SQL Runner is a tool that allows you to execute SQL queries from Cube Cloud diff --git a/docs/pages/product/workspace/sso/okta.mdx b/docs/pages/product/workspace/sso/okta.mdx index 772dd61b14938..75d5039bbf9a1 100644 --- a/docs/pages/product/workspace/sso/okta.mdx +++ b/docs/pages/product/workspace/sso/okta.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /workspace/sso/okta ---- - # Okta Cube Cloud supports authenticating users through Okta, which is useful when you diff --git a/docs/pages/reference/configuration/config.mdx b/docs/pages/reference/configuration/config.mdx index 9feaea5fa23af..d693c7be43414 100644 --- a/docs/pages/reference/configuration/config.mdx +++ b/docs/pages/reference/configuration/config.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /config ---- - # Configuration options Following [configuration options][ref-config-options] can be defined either diff --git a/docs/pages/reference/configuration/environment-variables.mdx b/docs/pages/reference/configuration/environment-variables.mdx index ef5b1f6a1fd6e..0a2c142c2da59 100644 --- a/docs/pages/reference/configuration/environment-variables.mdx +++ b/docs/pages/reference/configuration/environment-variables.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /reference/environment-variables ---- - # Environment variables diff --git a/docs/pages/reference/data-model/cube.mdx b/docs/pages/reference/data-model/cube.mdx index 90ee4bd679073..0dd9508f8a008 100644 --- a/docs/pages/reference/data-model/cube.mdx +++ b/docs/pages/reference/data-model/cube.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /cube - - /schema/reference/cube ---- - # Cubes A `cube` represents a table of data in Cube. diff --git a/docs/pages/reference/data-model/dimensions.mdx b/docs/pages/reference/data-model/dimensions.mdx index a9291ffd6b478..2941b8dedf5a7 100644 --- a/docs/pages/reference/data-model/dimensions.mdx +++ b/docs/pages/reference/data-model/dimensions.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /dimensions - - /schema/reference/dimensions ---- - # Dimensions You can use the `dimensions` parameter within [cubes][ref-ref-cubes] to define dimensions. diff --git a/docs/pages/reference/data-model/joins.mdx b/docs/pages/reference/data-model/joins.mdx index dab74c78ef6ed..4a43c808f8976 100644 --- a/docs/pages/reference/data-model/joins.mdx +++ b/docs/pages/reference/data-model/joins.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /joins - - /schema/reference/joins ---- - # Joins You can use the `joins` parameter within [cubes][ref-ref-cubes] to define joins to other cubes. diff --git a/docs/pages/reference/data-model/measures.mdx b/docs/pages/reference/data-model/measures.mdx index 98c1bc40a623d..1e933da8176a4 100644 --- a/docs/pages/reference/data-model/measures.mdx +++ b/docs/pages/reference/data-model/measures.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /measures - - /schema/reference/measures ---- - # Measures You can use the `measures` parameter within [cubes][ref-ref-cubes] to define measures. diff --git a/docs/pages/reference/data-model/pre-aggregations.mdx b/docs/pages/reference/data-model/pre-aggregations.mdx index 47518e1f54743..71893411469ce 100644 --- a/docs/pages/reference/data-model/pre-aggregations.mdx +++ b/docs/pages/reference/data-model/pre-aggregations.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /pre-aggregations - - /schema/reference/pre-aggregations ---- - # Pre-aggregations You can use the `pre_aggregations` parameter within [cubes][ref-ref-cubes] to define diff --git a/docs/pages/reference/data-model/segments.mdx b/docs/pages/reference/data-model/segments.mdx index e9a903a47f692..eb8cc73555486 100644 --- a/docs/pages/reference/data-model/segments.mdx +++ b/docs/pages/reference/data-model/segments.mdx @@ -1,9 +1,3 @@ ---- -redirect_from: - - /segments - - /schema/reference/segments ---- - # Segments You can use the `segments` parameter within [cubes][ref-ref-cubes] to define segments. diff --git a/docs/pages/reference/data-model/view.mdx b/docs/pages/reference/data-model/view.mdx index 6a7bb0e37263b..2bf357ea96344 100644 --- a/docs/pages/reference/data-model/view.mdx +++ b/docs/pages/reference/data-model/view.mdx @@ -1,8 +1,3 @@ ---- -redirect_from: - - /schema/reference/view ---- - # Views Views sit on top of the data graph of [cubes][ref-ref-cubes] and create a facade of your whole From d546c5c846008f7a24fbb8b823a96008ce13107e Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Fri, 16 May 2025 16:34:09 +0200 Subject: [PATCH 02/39] docs: Restructure configuration reference section - Move configuration reference from /reference/configuration/ to /product/configuration/reference/ - Update internal links and references in documentation files - Add redirects to maintain backward compatibility - Improve formatting and documentation clarity --- .../using-different-schemas-for-tenants.mdx | 6 +-- .../guides/recipes/auth/sql-api-ldap.mdx | 2 +- .../multiple-sources-same-schema.mdx | 4 +- .../custom-data-model-per-tenant.mdx | 6 +-- .../product/apis-integrations/queries.mdx | 4 +- .../product/apis-integrations/rest-api.mdx | 12 ++--- .../apis-integrations/semantic-layer-sync.mdx | 6 +-- .../product/apis-integrations/sql-api.mdx | 4 +- .../apis-integrations/sql-api/security.mdx | 14 +++--- docs/pages/product/auth/context.mdx | 8 ++-- .../product/auth/data-access-policies.mdx | 4 +- .../product/auth/member-level-security.mdx | 2 +- docs/pages/product/auth/methods/jwt.mdx | 4 +- docs/pages/product/auth/methods/kerberos.mdx | 4 +- .../product/auth/methods/name-password.mdx | 4 +- docs/pages/product/auth/methods/ntlm.mdx | 4 +- .../pages/product/auth/row-level-security.mdx | 2 +- docs/pages/product/caching.mdx | 2 +- .../caching/matching-pre-aggregations.mdx | 2 +- .../caching/using-pre-aggregations.mdx | 4 +- docs/pages/product/configuration.mdx | 4 +- docs/pages/product/configuration/_meta.js | 3 +- .../product/configuration/concurrency.mdx | 4 +- .../product/configuration/data-sources.mdx | 2 +- .../data-sources/aws-redshift.mdx | 2 +- .../configuration/multiple-data-sources.mdx | 2 +- .../product/configuration/multitenancy.mdx | 18 +++---- .../product/configuration/reference/_meta.js | 3 ++ .../configuration/reference}/config.mdx | 0 .../data-modeling/dynamic/javascript.mdx | 6 +-- .../dynamic/schema-execution-environment.mdx | 2 +- docs/pages/product/data-modeling/syntax.mdx | 4 +- docs/pages/product/deployment.mdx | 4 +- .../deployment/cloud/deployment-types.mdx | 2 +- docs/pages/product/deployment/core.mdx | 4 +- .../deployment/production-checklist.mdx | 4 +- docs/pages/product/faqs/tips-and-tricks.mdx | 4 +- .../getting-started/core/learn-more.mdx | 2 +- docs/pages/product/workspace/performance.mdx | 2 +- docs/pages/product/workspace/sql-runner.mdx | 4 +- docs/pages/reference/configuration/_meta.js | 1 - .../configuration/environment-variables.mdx | 48 +++++++++---------- .../data-model/context-variables.mdx | 6 +-- docs/pages/reference/data-model/cube.mdx | 8 ++-- .../data-model/data-access-policies.mdx | 2 +- docs/pages/reference/python/cube.mdx | 2 +- docs/redirects.json | 5 ++ 47 files changed, 127 insertions(+), 119 deletions(-) create mode 100644 docs/pages/product/configuration/reference/_meta.js rename docs/pages/{reference/configuration => product/configuration/reference}/config.mdx (100%) diff --git a/docs/pages/guides/recipes/access-control/using-different-schemas-for-tenants.mdx b/docs/pages/guides/recipes/access-control/using-different-schemas-for-tenants.mdx index e74de4aebf62b..00f8f955d893e 100644 --- a/docs/pages/guides/recipes/access-control/using-different-schemas-for-tenants.mdx +++ b/docs/pages/guides/recipes/access-control/using-different-schemas-for-tenants.mdx @@ -23,14 +23,14 @@ model/ Let's configure Cube to use a specific data model path for each tenant. We'll pass the tenant name as a part of [`securityContext`](/product/auth/context#top) into the -[`repositoryFactory`](/reference/configuration/config#repositoryfactory) +[`repositoryFactory`](/product/configuration/reference/config#repositoryfactory) function. We'll also need to override the -[`contextToAppId`](/reference/configuration/config#contexttoappid) function to +[`contextToAppId`](/product/configuration/reference/config#contexttoappid) function to control how the data model compilation result is cached and provide the tenant names via the -[`scheduledRefreshContexts`](/reference/configuration/config#scheduledrefreshcontexts) +[`scheduledRefreshContexts`](/product/configuration/reference/config#scheduledrefreshcontexts) function so a refresh worker can find all existing data models and build pre-aggregations for them, if needed. diff --git a/docs/pages/guides/recipes/auth/sql-api-ldap.mdx b/docs/pages/guides/recipes/auth/sql-api-ldap.mdx index 0524c677ccbe4..3b01382170ff0 100644 --- a/docs/pages/guides/recipes/auth/sql-api-ldap.mdx +++ b/docs/pages/guides/recipes/auth/sql-api-ldap.mdx @@ -36,7 +36,7 @@ Currently, it's recommended to use the [DAX API][ref-dax-api]. ## Configuration To verify the credentials, use the -[`check_sql_auth`](/reference/configuration/config#check_sql_auth) +[`check_sql_auth`](/product/configuration/reference/config#check_sql_auth) configuration option which accepts user name and password as its 2nd and 3rd arguments. You can verify the credentials and either authenticate or fail the request: diff --git a/docs/pages/guides/recipes/data-sources/multiple-sources-same-schema.mdx b/docs/pages/guides/recipes/data-sources/multiple-sources-same-schema.mdx index ae448689fa4fc..6f7253ceaa9c4 100644 --- a/docs/pages/guides/recipes/data-sources/multiple-sources-same-schema.mdx +++ b/docs/pages/guides/recipes/data-sources/multiple-sources-same-schema.mdx @@ -14,9 +14,9 @@ the local database (bootstrapped in the `docker-compose.yml` file) which has the same data model. To enable multitenancy, use the -[`contextToAppId`](/reference/configuration/config#contexttoappid) function to +[`contextToAppId`](/product/configuration/reference/config#contexttoappid) function to provide distinct identifiers for each tenant. Also, implement the -[`driverFactory`](/reference/configuration/config#driverfactory) function where +[`driverFactory`](/product/configuration/reference/config#driverfactory) function where you can select a data source based on the tenant name. [JSON Web Token](/product/auth) includes information about the tenant name in the `tenant` property of the `securityContext`. diff --git a/docs/pages/guides/recipes/multitenancy/custom-data-model-per-tenant.mdx b/docs/pages/guides/recipes/multitenancy/custom-data-model-per-tenant.mdx index e9120696c2737..72b8f48f07e16 100644 --- a/docs/pages/guides/recipes/multitenancy/custom-data-model-per-tenant.mdx +++ b/docs/pages/guides/recipes/multitenancy/custom-data-model-per-tenant.mdx @@ -361,8 +361,8 @@ code that fetches data model files for each tenant. [ref-multitenancy]: /product/configuration/advanced/multitenancy -[ref-scheduled-refresh-contexts]: /reference/configuration/config#scheduled_refresh_contexts -[ref-context-to-app-id]: /reference/configuration/config#context_to_app_id +[ref-scheduled-refresh-contexts]: /product/configuration/reference/config#scheduled_refresh_contexts +[ref-context-to-app-id]: /product/configuration/reference/config#context_to_app_id [ref-config-files]: /product/configuration#cubepy-and-cubejs-files [ref-mls]: /product/auth/member-level-security [ref-cubes-public]: /reference/data-model/cube#public @@ -377,4 +377,4 @@ code that fetches data model files for each tenant. [ref-data-sources]: /product/configuration/advanced/multiple-data-sources [ref-cube-extends]: /reference/data-model/cube#extends [ref-dynamic-data-modeling]: /product/data-modeling/dynamic -[ref-repository-factory]: /reference/configuration/config#repository_factory \ No newline at end of file +[ref-repository-factory]: /product/configuration/reference/config#repository_factory \ No newline at end of file diff --git a/docs/pages/product/apis-integrations/queries.mdx b/docs/pages/product/apis-integrations/queries.mdx index df063402bc247..cf1243b57ea13 100644 --- a/docs/pages/product/apis-integrations/queries.mdx +++ b/docs/pages/product/apis-integrations/queries.mdx @@ -397,9 +397,9 @@ Additionally, note that ungrouped queries have additional requirements for [ref-matching-preaggs-ungrouped]: /product/caching/matching-pre-aggregations#matching-ungrouped-queries [ref-pagination-recipe]: /guides/recipes/queries/pagination [ref-primary-key]: /reference/data-model/dimensions#primary_key -[ref-conf-allow-ungrouped]: /reference/configuration/config#allow_ungrouped_without_primary_key +[ref-conf-allow-ungrouped]: /product/configuration/reference/config#allow_ungrouped_without_primary_key [ref-caching]: /product/caching -[ref-query-rewrite]: /reference/configuration/config#query_rewrite +[ref-query-rewrite]: /product/configuration/reference/config#query_rewrite [ref-ref-sql-api]: /product/apis-integrations/sql-api/reference [blog-compare-date-range]: https://cube.dev/blog/comparing-data-over-different-time-periods [ref-sql-api-streaming]: /product/apis-integrations/sql-api#streaming \ No newline at end of file diff --git a/docs/pages/product/apis-integrations/rest-api.mdx b/docs/pages/product/apis-integrations/rest-api.mdx index 105e9b6c15495..aa7a44cc18112 100644 --- a/docs/pages/product/apis-integrations/rest-api.mdx +++ b/docs/pages/product/apis-integrations/rest-api.mdx @@ -255,12 +255,12 @@ example, the following query will retrieve rows 101-200 from the `Orders` cube: ``` [mdn-cors]: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS -[ref-config-js]: /reference/configuration/config -[ref-config-queryrewrite]: /reference/configuration/config#queryrewrite -[ref-conf-queue-opts]: /reference/configuration/config#queueoptions +[ref-config-js]: /product/configuration/reference/config +[ref-config-queryrewrite]: /product/configuration/reference/config#queryrewrite +[ref-conf-queue-opts]: /product/configuration/reference/config#queueoptions [ref-rest-query-format]: /product/apis-integrations/rest-api/query-format#query-properties [ref-ref-meta-endpoint]: /product/apis-integrations/rest-api/reference#v1meta -[ref-config-cors]: /reference/configuration/config#http +[ref-config-cors]: /product/configuration/reference/config#http [ref-schema-ref-cube-refresh-key]: /reference/data-model/cube#refresh_key [ref-security]: /product/auth @@ -269,9 +269,9 @@ example, the following query will retrieve rows 101-200 from the `Orders` cube: [ref-low-code]: /product/configuration/visualization-tools#low-code-tools-internal-tool-builders [ref-retool]: /product/configuration/visualization-tools/retool -[ref-conf-basepath]: /reference/configuration/config#basepath +[ref-conf-basepath]: /product/configuration/reference/config#basepath [ref-conf-contexttoapiscopes]: - /reference/configuration/config#contexttoapiscopes + /product/configuration/reference/config#contexttoapiscopes [ref-ref-load]: /product/apis-integrations/rest-api/reference#base_pathv1load [ref-ref-meta]: /product/apis-integrations/rest-api/reference#base_pathv1meta [ref-ref-sql]: /product/apis-integrations/rest-api/reference#base_pathv1sql diff --git a/docs/pages/product/apis-integrations/semantic-layer-sync.mdx b/docs/pages/product/apis-integrations/semantic-layer-sync.mdx index a28479fe9a357..28d6f88342bd6 100644 --- a/docs/pages/product/apis-integrations/semantic-layer-sync.mdx +++ b/docs/pages/product/apis-integrations/semantic-layer-sync.mdx @@ -401,9 +401,9 @@ on, i.e., your development mode branch, shared branch, or main branch. [ref-powerbi]: /product/configuration/visualization-tools/powerbi [ref-dax-api]: /product/apis-integrations/dax-api [ref-config-file]: /product/configuration#configuration-options -[ref-config-sls]: /reference/configuration/config#semanticlayersync -[ref-config-contexts]: /reference/configuration/config#scheduledrefreshcontexts -[ref-config-schemaversion]: /reference/configuration/config#schema_version +[ref-config-sls]: /product/configuration/reference/config#semanticlayersync +[ref-config-contexts]: /product/configuration/reference/config#scheduledrefreshcontexts +[ref-config-schemaversion]: /product/configuration/reference/config#schema_version [ref-workspace-sls]: /workspace/bi-integrations [ref-dev-mode]: /product/workspace/dev-mode [ref-auto-sus]: /product/deployment/cloud/auto-suspension \ No newline at end of file diff --git a/docs/pages/product/apis-integrations/sql-api.mdx b/docs/pages/product/apis-integrations/sql-api.mdx index bc8c57355d28e..a1b992fb1be06 100644 --- a/docs/pages/product/apis-integrations/sql-api.mdx +++ b/docs/pages/product/apis-integrations/sql-api.mdx @@ -236,8 +236,8 @@ limit. [ref-mdx-api]: /product/apis-integrations/mdx-api [ref-sls]: /product/apis-integrations/semantic-layer-sync [ref-sql-api-auth]: /product/apis-integrations/sql-api/security -[ref-config-checksqlauth]: /reference/configuration/config#checksqlauth -[ref-config-canswitchsqluser]: /reference/configuration/config#canswitchsqluser +[ref-config-checksqlauth]: /product/configuration/reference/config#checksqlauth +[ref-config-canswitchsqluser]: /product/configuration/reference/config#canswitchsqluser [ref-dataviz-tools]: /product/configuration/visualization-tools [ref-bi]: /product/configuration/visualization-tools#bi-data-exploration-tools [ref-thoughtspot]: /product/configuration/visualization-tools/thoughtspot diff --git a/docs/pages/product/apis-integrations/sql-api/security.mdx b/docs/pages/product/apis-integrations/sql-api/security.mdx index cf638c97eef60..4454d7ee77cff 100644 --- a/docs/pages/product/apis-integrations/sql-api/security.mdx +++ b/docs/pages/product/apis-integrations/sql-api/security.mdx @@ -53,14 +53,14 @@ configuration file: module.exports = { // Create a new appId for each team, this prevents teams from seeing each // other's data - // https://cube.dev/docs/reference/configuration/config#contexttoappid + // https://cube.dev/docs/product/configuration/reference/config#contexttoappid contextToAppId: ({ securityContext }) => { return securityContext.team; }, // Enforce a default value for `team` if one is not provided // in the security context - // https://cube.dev/docs/reference/configuration/config#extendcontext + // https://cube.dev/docs/product/configuration/reference/config#extendcontext extendContext: ({ securityContext }) => { if (!securityContext.team) { securityContext.team = "public"; @@ -162,9 +162,9 @@ SELECT * FROM orders WHERE __user = 'anotheruser'; [preset-docs-rls-inclusive]: https://docs.preset.io/docs/row-level-security-rls#define-inclusive-regular-rls-filter [ref-config-can-switch-sql-user]: - /reference/configuration/config#canswitchsqluser -[ref-config-check-sql-auth]: /reference/configuration/config#checksqlauth -[ref-config-ctx-to-app-id]: /reference/configuration/config#contexttoappid -[ref-config-queryrewrite]: /reference/configuration/config#queryrewrite + /product/configuration/reference/config#canswitchsqluser +[ref-config-check-sql-auth]: /product/configuration/reference/config#checksqlauth +[ref-config-ctx-to-app-id]: /product/configuration/reference/config#contexttoappid +[ref-config-queryrewrite]: /product/configuration/reference/config#queryrewrite [ref-dynamic-schemas]: /product/data-modeling/dynamic -[ref-config-js]: /reference/configuration/config +[ref-config-js]: /product/configuration/reference/config diff --git a/docs/pages/product/auth/context.mdx b/docs/pages/product/auth/context.mdx index 7c357eadb7468..6fcdd23449f77 100644 --- a/docs/pages/product/auth/context.mdx +++ b/docs/pages/product/auth/context.mdx @@ -284,14 +284,14 @@ of your Cube Cloud deployment and using the Enable Cloud Auth Integration -For example, [`query_rewrite`](/reference/configuration/config#query_rewrite) +For example, [`query_rewrite`](/product/configuration/reference/config#query_rewrite) provides a way to inspect, modify, or restrict every query that is being processed by Cube. @@ -183,7 +183,7 @@ mode does the following: [ref-sql-api]: /product/apis-integrations/sql-api [ref-folder-structure]: /product/data-modeling/syntax#folder-structure -[link-config]: /reference/configuration/config +[link-config]: /product/configuration/reference/config [link-dev-playground]: /product/workspace/playground [link-env-vars]: /reference/configuration/environment-variables [link-scheduled-refresh]: diff --git a/docs/pages/product/configuration/_meta.js b/docs/pages/product/configuration/_meta.js index a183902a526e3..c04d9df7b391b 100644 --- a/docs/pages/product/configuration/_meta.js +++ b/docs/pages/product/configuration/_meta.js @@ -3,5 +3,6 @@ module.exports = { "visualization-tools": "Visualization tools", "multiple-data-sources": "Multiple data sources", "concurrency": "Concurrency", - "multitenancy": "Multitenancy" + "multitenancy": "Multitenancy", + "reference": "Reference" } \ No newline at end of file diff --git a/docs/pages/product/configuration/concurrency.mdx b/docs/pages/product/configuration/concurrency.mdx index 2b23880fac625..96670443600c6 100644 --- a/docs/pages/product/configuration/concurrency.mdx +++ b/docs/pages/product/configuration/concurrency.mdx @@ -76,8 +76,8 @@ However, you can override this behvaior in the refresh worker [ref-data-apis]: /product/apis-integrations [ref-data-sources]: /product/configuration/data-sources -[ref-context-to-orchestrator-id]: /reference/configuration/config#context_to_orchestrator_id -[ref-driver-factory]: /reference/configuration/config#driver_factory +[ref-context-to-orchestrator-id]: /product/configuration/reference/config#context_to_orchestrator_id +[ref-driver-factory]: /product/configuration/reference/config#driver_factory [ref-preagg-refresh]: /product/caching/refreshing-pre-aggregations#configuration [ref-athena]: /product/configuration/data-sources/aws-athena [ref-clickhouse]: /product/configuration/data-sources/clickhouse diff --git a/docs/pages/product/configuration/data-sources.mdx b/docs/pages/product/configuration/data-sources.mdx index c82208595c53b..5b778529dfd8a 100644 --- a/docs/pages/product/configuration/data-sources.mdx +++ b/docs/pages/product/configuration/data-sources.mdx @@ -248,7 +248,7 @@ users on the [Enterprise Premier](https://cube.dev/pricing) product tier. [ref-config-multi-data-src]: /product/configuration/advanced/multiple-data-sources -[ref-driver-factory]: /reference/configuration/config#driver_factory +[ref-driver-factory]: /product/configuration/reference/config#driver_factory [ref-duckdb]: /product/configuration/data-sources/duckdb [link-github-packages]: https://github.com/cube-js/cube/tree/master/packages [ref-data-source-concurrency]: /product/configuration/concurrency#data-sources \ No newline at end of file diff --git a/docs/pages/product/configuration/data-sources/aws-redshift.mdx b/docs/pages/product/configuration/data-sources/aws-redshift.mdx index 912ed5e3d4b1f..5fe8def075348 100644 --- a/docs/pages/product/configuration/data-sources/aws-redshift.mdx +++ b/docs/pages/product/configuration/data-sources/aws-redshift.mdx @@ -155,4 +155,4 @@ Database][ref-recipe-enable-ssl]. /guides/recipes/data-sources/using-ssl-connections-to-data-source [ref-schema-ref-types-formats-countdistinctapprox]: /reference/data-model/types-and-formats#count_distinct_approx [self-preaggs-batching]: #batching -[ref-conf-preaggs-schema]: /reference/configuration/config#pre_aggregations_schema \ No newline at end of file +[ref-conf-preaggs-schema]: /product/configuration/reference/config#pre_aggregations_schema \ No newline at end of file diff --git a/docs/pages/product/configuration/multiple-data-sources.mdx b/docs/pages/product/configuration/multiple-data-sources.mdx index 56e11f610a2a4..783c0ac5741e2 100644 --- a/docs/pages/product/configuration/multiple-data-sources.mdx +++ b/docs/pages/product/configuration/multiple-data-sources.mdx @@ -91,7 +91,7 @@ cube(`orders_from_other_data_source`, { [ref-config-ref-env]: /reference/configuration/environment-variables -[ref-config-ref-driverfactory]: /reference/configuration/config#driverfactory +[ref-config-ref-driverfactory]: /product/configuration/reference/config#driverfactory [ref-config-db]: /product/configuration/data-sources [ref-config-multitenancy]: /product/configuration/advanced/multitenancy#multitenancy-multitenancy-vs-multiple-data-sources diff --git a/docs/pages/product/configuration/multitenancy.mdx b/docs/pages/product/configuration/multitenancy.mdx index 7a886245d9039..1a2af8674f650 100644 --- a/docs/pages/product/configuration/multitenancy.mdx +++ b/docs/pages/product/configuration/multitenancy.mdx @@ -371,22 +371,22 @@ input. [ref-config]: /product/configuration#configuration-options -[ref-config-opts]: /reference/configuration/config +[ref-config-opts]: /product/configuration/reference/config [ref-config-db]: /product/configuration/data-sources -[ref-config-driverfactory]: /reference/configuration/config#driver_factory -[ref-config-repofactory]: /reference/configuration/config#repository_factory +[ref-config-driverfactory]: /product/configuration/reference/config#driver_factory +[ref-config-repofactory]: /product/configuration/reference/config#repository_factory [ref-config-preagg-schema]: - /reference/configuration/config#pre_aggregations_schema -[ref-config-ctx-to-appid]: /reference/configuration/config#context_to_app_id + /product/configuration/reference/config#pre_aggregations_schema +[ref-config-ctx-to-appid]: /product/configuration/reference/config#context_to_app_id [ref-config-ctx-to-orch-id]: - /reference/configuration/config#context_to_orchestrator_id + /product/configuration/reference/config#context_to_orchestrator_id [ref-config-multi-data-src]: /product/configuration/advanced/multiple-data-sources -[ref-config-query-rewrite]: /reference/configuration/config#query_rewrite +[ref-config-query-rewrite]: /product/configuration/reference/config#query_rewrite [ref-config-refresh-ctx]: - /reference/configuration/config#scheduled_refresh_contexts + /product/configuration/reference/config#scheduled_refresh_contexts [ref-config-refresh-tz]: - /reference/configuration/config#scheduled_refresh_timezones + /product/configuration/reference/config#scheduled_refresh_timezones [ref-config-security-ctx]: /product/auth/context [ref-security]: /product/auth [ref-cube-datasource]: /reference/data-model/cube#data_source diff --git a/docs/pages/product/configuration/reference/_meta.js b/docs/pages/product/configuration/reference/_meta.js new file mode 100644 index 0000000000000..05287aae770bb --- /dev/null +++ b/docs/pages/product/configuration/reference/_meta.js @@ -0,0 +1,3 @@ +module.exports = { + "config": "Configuration options" +} \ No newline at end of file diff --git a/docs/pages/reference/configuration/config.mdx b/docs/pages/product/configuration/reference/config.mdx similarity index 100% rename from docs/pages/reference/configuration/config.mdx rename to docs/pages/product/configuration/reference/config.mdx diff --git a/docs/pages/product/data-modeling/dynamic/javascript.mdx b/docs/pages/product/data-modeling/dynamic/javascript.mdx index 0a60df940aa04..e344cb5395806 100644 --- a/docs/pages/product/data-modeling/dynamic/javascript.mdx +++ b/docs/pages/product/data-modeling/dynamic/javascript.mdx @@ -164,7 +164,7 @@ module.exports = { }; ``` -[link-config-schema-version]: /reference/configuration/config#schema_version +[link-config-schema-version]: /product/configuration/reference/config#schema_version ## Usage with COMPILE_CONTEXT @@ -228,8 +228,8 @@ data models, as well as ensuring the corresponding database drivers are set up w file][ref-config]. [ref-schema-datasource]: /reference/data-model/cube#data_source -[ref-config-driverfactory]: /reference/configuration/config#driverfactory -[ref-config]: /reference/configuration/config +[ref-config-driverfactory]: /product/configuration/reference/config#driverfactory +[ref-config]: /product/configuration/reference/config For an example scenario where data models may use either MySQL or Postgres databases, you could do the following: diff --git a/docs/pages/product/data-modeling/dynamic/schema-execution-environment.mdx b/docs/pages/product/data-modeling/dynamic/schema-execution-environment.mdx index f9ebe59d0f3f9..c8762ebf59b5a 100644 --- a/docs/pages/product/data-modeling/dynamic/schema-execution-environment.mdx +++ b/docs/pages/product/data-modeling/dynamic/schema-execution-environment.mdx @@ -185,4 +185,4 @@ cube(`users`, { [nodejs-require]: https://nodejs.org/api/modules.html#modules_require_id [ref-dynamic-schemas]: /product/data-modeling/dynamic [self-require]: #require -[ref-schema-path]: /reference/configuration/config#schema_path \ No newline at end of file +[ref-schema-path]: /product/configuration/reference/config#schema_path \ No newline at end of file diff --git a/docs/pages/product/data-modeling/syntax.mdx b/docs/pages/product/data-modeling/syntax.mdx index 224e71715accf..122982da02042 100644 --- a/docs/pages/product/data-modeling/syntax.mdx +++ b/docs/pages/product/data-modeling/syntax.mdx @@ -755,9 +755,9 @@ defining dynamic data models. [ref-dynamic-data-models-jinja]: /product/data-modeling/dynamic/jinja [ref-dynamic-data-models-js]: /product/data-modeling/dynamic/javascript [ref-context-variables]: /reference/data-model/context-variables -[ref-config-model-path]: /reference/configuration/config#schemapath +[ref-config-model-path]: /product/configuration/reference/config#schemapath [ref-config-repository-factory]: - /reference/configuration/config#repositoryfactory + /product/configuration/reference/config#repositoryfactory [ref-subquery]: /product/data-modeling/concepts/calculated-members#subquery-dimensions [wiki-snake-case]: https://en.wikipedia.org/wiki/Snake_case [wiki-yaml]: https://en.wikipedia.org/wiki/YAML diff --git a/docs/pages/product/deployment.mdx b/docs/pages/product/deployment.mdx index 8741785ab6725..eefa9c11ff84e 100644 --- a/docs/pages/product/deployment.mdx +++ b/docs/pages/product/deployment.mdx @@ -248,6 +248,6 @@ services: [ref-deploy-cubecloud]: /product/deployment/cloud [ref-deploy-docker]: /product/deployment/core [ref-config-env]: /reference/configuration/environment-variables -[ref-config-js]: /reference/configuration/config -[ref-conf-ref-schemapath]: /reference/configuration/config#schema_path +[ref-config-js]: /product/configuration/reference/config +[ref-conf-ref-schemapath]: /product/configuration/reference/config#schema_path [gh-pavel]: https://github.com/paveltiunov diff --git a/docs/pages/product/deployment/cloud/deployment-types.mdx b/docs/pages/product/deployment/cloud/deployment-types.mdx index 6bc980be0efe4..142baacd5bebf 100644 --- a/docs/pages/product/deployment/cloud/deployment-types.mdx +++ b/docs/pages/product/deployment/cloud/deployment-types.mdx @@ -174,7 +174,7 @@ and select from the available options: src="https://ucarecdn.com/fbde6a1e-734a-4091-8edd-922dc1ee7e1c/" /> -[ref-ctx-to-app-id]: /reference/configuration/config#context_to_app_id +[ref-ctx-to-app-id]: /product/configuration/reference/config#context_to_app_id [ref-limits]: /product/deployment/cloud/limits#resources [ref-scalability]: /product/deployment/cloud/scalability [ref-multitenancy]: /product/configuration/advanced/multitenancy diff --git a/docs/pages/product/deployment/core.mdx b/docs/pages/product/deployment/core.mdx index 73e8356a8b69a..e9fc089d590d0 100644 --- a/docs/pages/product/deployment/core.mdx +++ b/docs/pages/product/deployment/core.mdx @@ -378,6 +378,6 @@ installed with `npm install` reside, and result in errors like this: [link-nginx]: https://www.nginx.com/ [ref-config-files]: /product/configuration#cubepy-and-cubejs-files [ref-dynamic-data-models]: /product/data-modeling/dynamic -[ref-config-queryrewrite]: /reference/configuration/config#queryrewrite +[ref-config-queryrewrite]: /product/configuration/reference/config#queryrewrite [ref-config-sched-ref-ctx]: - /reference/configuration/config#scheduledrefreshcontexts + /product/configuration/reference/config#scheduledrefreshcontexts diff --git a/docs/pages/product/deployment/production-checklist.mdx b/docs/pages/product/deployment/production-checklist.mdx index 10ac73469dbc3..eafe77ac9da97 100644 --- a/docs/pages/product/deployment/production-checklist.mdx +++ b/docs/pages/product/deployment/production-checklist.mdx @@ -148,10 +148,10 @@ performance numbers can differ as it has different Cube runtime. [ref-caching-cubestore]: /product/caching/running-in-production [ref-conf-ref-env-cachequeue-driver]: /reference/configuration/environment-variables#cubejs_cache_and_queue_driver -[ref-conf-preaggs-schema]: /reference/configuration/config#pre_aggregations_schema +[ref-conf-preaggs-schema]: /product/configuration/reference/config#pre_aggregations_schema [ref-env-vars]: /reference/configuration/environment-variables [ref-schema-ref-preaggs]: /reference/data-model/pre-aggregations [ref-sec-ctx]: /product/auth/context -[ref-config-jwt]: /reference/configuration/config#jwt +[ref-config-jwt]: /product/configuration/reference/config#jwt [ref-api-readyz]: /product/apis-integrations/rest-api/reference#readyz [ref-api-livez]: /product/apis-integrations/rest-api/reference#livez diff --git a/docs/pages/product/faqs/tips-and-tricks.mdx b/docs/pages/product/faqs/tips-and-tricks.mdx index e8c54e0314cbd..ee9d106eeefb6 100644 --- a/docs/pages/product/faqs/tips-and-tricks.mdx +++ b/docs/pages/product/faqs/tips-and-tricks.mdx @@ -110,6 +110,6 @@ With this exception in place we should be able to query all the customers' data via the SQL API without being hindered by the row-level security checks. [ref-cloud-o11y-logs]: /cloud/workspace/logs -[ref-conf-ref-checksqlauth]: /reference/configuration/config#checksqlauth -[ref-conf-ref-queryrewrite]: /reference/configuration/config#queryrewrite +[ref-conf-ref-checksqlauth]: /product/configuration/reference/config#checksqlauth +[ref-conf-ref-queryrewrite]: /product/configuration/reference/config#queryrewrite [ref-sec-ctx]: /product/auth/context diff --git a/docs/pages/product/getting-started/core/learn-more.mdx b/docs/pages/product/getting-started/core/learn-more.mdx index d2e23e578297c..2a6defca15e25 100644 --- a/docs/pages/product/getting-started/core/learn-more.mdx +++ b/docs/pages/product/getting-started/core/learn-more.mdx @@ -27,7 +27,7 @@ For a deeper dive, take a look at the [related recipes][ref-recipes-caching]. Cube uses [JSON Web Tokens](https://jwt.io/) to [authenticate requests for the HTTP APIs](/product/auth), and -[`check_sql_auth`](/reference/configuration/config#check_sql_auth) to +[`check_sql_auth`](/product/configuration/reference/config#check_sql_auth) to [authenticate requests for the SQL API](/product/apis-integrations/sql-api/security). Cube also supports using JWT claims for securing access to data, check out these [related recipes][ref-recipes-access-control]. diff --git a/docs/pages/product/workspace/performance.mdx b/docs/pages/product/workspace/performance.mdx index 6bfab5956ba06..10c15ee4061d8 100644 --- a/docs/pages/product/workspace/performance.mdx +++ b/docs/pages/product/workspace/performance.mdx @@ -157,6 +157,6 @@ for queries and jobs. [ref-multi-cluster]: /product/deployment/cloud/deployment-types#production-multi-cluster [ref-pre-aggregations]: /product/caching/using-pre-aggregations [ref-multitenancy]: /product/configuration/advanced/multitenancy -[ref-context-to-app-id]: /reference/configuration/config#context_to_app_id +[ref-context-to-app-id]: /product/configuration/reference/config#context_to_app_id [ref-cache-types]: /product/caching#cache-type [ref-indexes]: /product/caching/using-pre-aggregations#using-indexes diff --git a/docs/pages/product/workspace/sql-runner.mdx b/docs/pages/product/workspace/sql-runner.mdx index b083d26a68301..c65d88f2cc107 100644 --- a/docs/pages/product/workspace/sql-runner.mdx +++ b/docs/pages/product/workspace/sql-runner.mdx @@ -67,7 +67,7 @@ will be executed with the default security context. If one is provided, then the **Schema Explorer** will reload to reflect the data source available to the security context. -[ref-conf-ref-driverfactory]: /reference/configuration/config#driverfactory +[ref-conf-ref-driverfactory]: /product/configuration/reference/config#driverfactory [ref-recipe-multi-src-same-model]: /guides/recipes/data-sources/multiple-sources-same-schema @@ -104,5 +104,5 @@ in a data model should be a `numeric`). [cubecloud-signup]: https://cubecloud.dev/auth/signup [ref-conf-scheduled-refresh-ctx]: - /reference/configuration/config#scheduledrefreshcontexts + /product/configuration/reference/config#scheduledrefreshcontexts [ref-cube-datasource]: /reference/data-model/cube#data_source \ No newline at end of file diff --git a/docs/pages/reference/configuration/_meta.js b/docs/pages/reference/configuration/_meta.js index 8ea58bba17572..fe8cc4d203831 100644 --- a/docs/pages/reference/configuration/_meta.js +++ b/docs/pages/reference/configuration/_meta.js @@ -1,4 +1,3 @@ module.exports = { - "config": "Configuration options", "environment-variables": "Environment variables" } \ No newline at end of file diff --git a/docs/pages/reference/configuration/environment-variables.mdx b/docs/pages/reference/configuration/environment-variables.mdx index 0a2c142c2da59..09d3d07360895 100644 --- a/docs/pages/reference/configuration/environment-variables.mdx +++ b/docs/pages/reference/configuration/environment-variables.mdx @@ -17,7 +17,7 @@ The secret key used to sign and verify JWTs. Generated on project scaffold with | A valid string | N/A | N/A | See also the [`check_auth` configuration -option](/reference/configuration/config#check_auth). +option](/product/configuration/reference/config#check_auth). ## `CUBEJS_APP` @@ -95,7 +95,7 @@ The cache and queue driver to use for the Cube deployment. | `cubestore`, `memory` | `memory` | `cubestore` | It can be also set using the [`cache_and_queue_driver` configuration -option](/reference/configuration/config#cache_and_queue_driver). +option](/product/configuration/reference/config#cache_and_queue_driver). ## `CUBEJS_CONCURRENCY` @@ -106,7 +106,7 @@ The number of concurrent connections each query queue has to the database. | A valid number | [See database-specific page][ref-config-db] | [See database-specific page][ref-config-db] | It can be also set as `concurrency` in the [`orchestrator_options` configuration -option](/reference/configuration/config#orchestrator_options). +option](/product/configuration/reference/config#orchestrator_options). If you'd like to adjust the concurrency for the refresh worker, use `CUBEJS_REFRESH_WORKER_CONCURRENCY`. @@ -874,7 +874,7 @@ endpoints. | A comma-delimited string with any combination of [API scopes][ref-rest-scopes] | `meta,data,graphql,sql`| `meta,data,graphql,sql`| See also the [`context_to_api_scopes` configuration -option](/reference/configuration/config#context_to_api_scopes). +option](/product/configuration/reference/config#context_to_api_scopes). ## `CUBEJS_DEV_MODE` @@ -941,7 +941,7 @@ Enables [JSON Web Key (JWK)][ietf-jwk-ref]-based authentication in Cube. | A valid URL to a JSON Web Key Set | N/A | N/A | It can be also set as `jwkUrl` in the [`jwt` configuration -option](/reference/configuration/config#jwt). +option](/product/configuration/reference/config#jwt). ## `CUBEJS_JWT_ALGS` @@ -952,7 +952,7 @@ option](/reference/configuration/config#jwt). | `HS256`, `RS256` | N/A | N/A | It can be also set as `algorithms` in the [`jwt` configuration -option](/reference/configuration/config#jwt). +option](/product/configuration/reference/config#jwt). ## `CUBEJS_JWT_AUDIENCE` @@ -964,7 +964,7 @@ JWTs][ietf-jwt-ref-aud]. | A valid `aud` claim | N/A | N/A | It can be also set as `audience` in the [`jwt` configuration -option](/reference/configuration/config#jwt). +option](/product/configuration/reference/config#jwt). ## `CUBEJS_JWT_CLAIMS_NAMESPACE` @@ -975,7 +975,7 @@ A namespace within the decoded JWT under which any custom claims can be found. | A valid string | N/A | N/A | It can be also set as `claimsNamespace` in the [`jwt` configuration -option](/reference/configuration/config#jwt). +option](/product/configuration/reference/config#jwt). ## `CUBEJS_JWT_ISSUER` @@ -987,7 +987,7 @@ JWTs][ietf-jwt-ref-iss]. | A valid `iss` claim | N/A | N/A | It can be also set as `issuer` in the [`jwt` configuration -option](/reference/configuration/config#jwt). +option](/product/configuration/reference/config#jwt). ## `CUBEJS_JWT_KEY` @@ -999,7 +999,7 @@ The secret key used to sign and verify JWTs. Similar to | A valid string | N/A | N/A | It can be also set as `key` in the [`jwt` configuration -option](/reference/configuration/config#jwt). +option](/product/configuration/reference/config#jwt). ## `CUBEJS_JWT_SUBJECT` @@ -1011,7 +1011,7 @@ JWTs][ietf-jwt-ref-sub]. | A valid `sub` claim | N/A | N/A | It can be also set as `subject` in the [`jwt` configuration -option](/reference/configuration/config#jwt). +option](/product/configuration/reference/config#jwt). ## `CUBEJS_LOG_LEVEL` @@ -1022,7 +1022,7 @@ The logging level for Cube. | `error`, `info`, `trace`, `warn` | `warn` | `warn` | See also `CUBESTORE_LOG_LEVEL`. -See also the [`logger` configuration option](/reference/configuration/config#logger). +See also the [`logger` configuration option](/product/configuration/reference/config#logger). ## `CUBEJS_MAX_PARTITIONS_PER_CUBE` @@ -1058,7 +1058,7 @@ If Cube is configured to act as a refresh worker instance using ## `CUBEJS_PRE_AGGREGATIONS_SCHEMA` -The [database schema name](/reference/configuration/config#pre_aggregations_schema) +The [database schema name](/product/configuration/reference/config#pre_aggregations_schema) to use for storing pre-aggregations. | Possible Values | Default in Development | Default in Production | @@ -1066,7 +1066,7 @@ to use for storing pre-aggregations. | A valid string | `dev_pre_aggregations` | `prod_pre_aggregations` | It can be also set using the [`pre_aggregations_schema` configuration -option](/reference/configuration/config#pre_aggregations_schema). +option](/product/configuration/reference/config#pre_aggregations_schema). ## `CUBEJS_PRE_AGGREGATIONS_ALLOW_NON_STRICT_DATE_RANGE_MATCH` @@ -1097,7 +1097,7 @@ mode](/product/caching/using-pre-aggregations#rollup-only-mode) for details. | `true`, `false` | `false` | `false` | It can be also set using the [`orchestrator_options.rollupOnlyMode` configuration -option](/reference/configuration/config#orchestrator_options). +option](/product/configuration/reference/config#orchestrator_options). ## `CUBEJS_SCHEDULED_REFRESH_TIMEZONES` @@ -1109,7 +1109,7 @@ for][ref-config-sched-refresh-timer]. | [A valid timezone from the tz database][wiki-tz-database] | N/A | N/A | It can be also set using the [`scheduled_refresh_time_zones` configuration -option](/reference/configuration/config#scheduled_refresh_time_zones). +option](/product/configuration/reference/config#scheduled_refresh_time_zones). ## `CUBEJS_SCHEMA_PATH` @@ -1126,7 +1126,7 @@ Until v0.35, the default value was `schema`. It can be also set using the [`schema_path` configuration -option](/reference/configuration/config#schema_path). +option](/product/configuration/reference/config#schema_path). ## `CUBEJS_SQL_USER` @@ -1137,7 +1137,7 @@ A username required to access the [SQL API][ref-sql-api]. | A valid string | N/A | N/A | See also the [`check_sql_auth` configuration -option](/reference/configuration/config#check_sql_auth). +option](/product/configuration/reference/config#check_sql_auth). ## `CUBEJS_SQL_PASSWORD` @@ -1148,7 +1148,7 @@ A password required to access the [SQL API][ref-sql-api]. | A valid string | N/A | N/A | See also the [`check_sql_auth` configuration -option](/reference/configuration/config#check_sql_auth). +option](/product/configuration/reference/config#check_sql_auth). ## `CUBEJS_SQL_SUPER_USER` @@ -1160,7 +1160,7 @@ session. | A valid string | N/A | N/A | See also the [`can_switch_sql_user` configuration -option](/reference/configuration/config#can_switch_sql_user). +option](/product/configuration/reference/config#can_switch_sql_user). ## `CUBEJS_ALLOW_UNGROUPED_WITHOUT_PRIMARY_KEY` @@ -1172,7 +1172,7 @@ If `true`, disables the primary key inclusion check for | `true`, `false` | `false` | `false` | It can be also set using the [`allow_ungrouped_without_primary_key` configuration -option](/reference/configuration/config#allow_ungrouped_without_primary_key). +option](/product/configuration/reference/config#allow_ungrouped_without_primary_key). @@ -1723,13 +1723,13 @@ The port for a Cube deployment to listen to API connections on. [ietf-jwt-ref-aud]: https://tools.ietf.org/html/rfc7519#section-4.1.3 [motherduck-docs-svc-token]: https://motherduck.com/docs/authenticating-to-motherduck/#authentication-using-a-service-token -[ref-config]: /reference/configuration/config -[ref-config-conf-ctx-to-appid]: /reference/configuration/config#context_to_app_id +[ref-config]: /product/configuration/reference/config +[ref-config-conf-ctx-to-appid]: /product/configuration/reference/config#context_to_app_id [ref-config-db]: /product/configuration/data-sources [ref-config-multiple-ds-decorating-env]: /product/configuration/advanced/multiple-data-sources#configuring-data-sources-with-environment-variables-decorated-environment-variables [ref-config-sched-refresh-timer]: - /reference/configuration/config#scheduled_refresh_timer + /product/configuration/reference/config#scheduled_refresh_timer [ref-rest-scopes]: /product/apis-integrations/rest-api#configuration-api-scopes [snowflake-docs-account-id]: https://docs.snowflake.com/en/user-guide/admin-account-identifier.html diff --git a/docs/pages/reference/data-model/context-variables.mdx b/docs/pages/reference/data-model/context-variables.mdx index f6f03a5a77e22..4ffaeda77d9a8 100644 --- a/docs/pages/reference/data-model/context-variables.mdx +++ b/docs/pages/reference/data-model/context-variables.mdx @@ -808,9 +808,9 @@ cube(`orders`, { }); ``` -[ref-config-ext-ctx]: /reference/configuration/config#extendcontext -[ref-config-queryrewrite]: /reference/configuration/config#query_rewrite -[ref-config-req-ctx]: /reference/configuration/config#requestcontext +[ref-config-ext-ctx]: /product/configuration/reference/config#extendcontext +[ref-config-queryrewrite]: /product/configuration/reference/config#query_rewrite +[ref-config-req-ctx]: /product/configuration/reference/config#requestcontext [ref-recipe-control-access-cubes-views]: /guides/recipes/access-control/controlling-access-to-cubes-and-views [ref-sec-ctx]: /product/auth/context diff --git a/docs/pages/reference/data-model/cube.mdx b/docs/pages/reference/data-model/cube.mdx index 0dd9508f8a008..ec0274edb41b0 100644 --- a/docs/pages/reference/data-model/cube.mdx +++ b/docs/pages/reference/data-model/cube.mdx @@ -622,10 +622,10 @@ The `measures` parameter is used to configure [measures][ref-ref-measures]. The `access_policy` parameter is used to configure [data access policies][ref-ref-dap]. -[ref-config-driverfactory]: /reference/configuration/config#driverfactory -[ref-config-ext-ctx]: /reference/configuration/config#extend_context -[ref-config-queryrewrite]: /reference/configuration/config#queryrewrite -[ref-config-req-ctx]: /reference/configuration/config#requestcontext +[ref-config-driverfactory]: /product/configuration/reference/config#driverfactory +[ref-config-ext-ctx]: /product/configuration/reference/config#extend_context +[ref-config-queryrewrite]: /product/configuration/reference/config#queryrewrite +[ref-config-req-ctx]: /product/configuration/reference/config#requestcontext [ref-dev-playground]: /product/workspace/playground [ref-recipe-control-access-cubes-views]: /guides/recipes/access-control/controlling-access-to-cubes-and-views diff --git a/docs/pages/reference/data-model/data-access-policies.mdx b/docs/pages/reference/data-model/data-access-policies.mdx index bd97deb75a9ec..a5f1fe26755cd 100644 --- a/docs/pages/reference/data-model/data-access-policies.mdx +++ b/docs/pages/reference/data-model/data-access-policies.mdx @@ -347,7 +347,7 @@ learn more about policy evaluation. [ref-dap-roles]: /product/auth/data-access-policies#data-access-roles [ref-dap-mls]: /product/auth/data-access-policies#member-level-access [ref-dap-rls]: /product/auth/data-access-policies#row-level-access -[ref-context-to-roles]: /reference/configuration/config#context_to_roles +[ref-context-to-roles]: /product/configuration/reference/config#context_to_roles [ref-mls]: /product/auth/member-level-security [ref-rls]: /product/auth/row-level-security [ref-sec-ctx]: /product/auth/context diff --git a/docs/pages/reference/python/cube.mdx b/docs/pages/reference/python/cube.mdx index 541960f8e5c69..17b8ab85c945e 100644 --- a/docs/pages/reference/python/cube.mdx +++ b/docs/pages/reference/python/cube.mdx @@ -144,5 +144,5 @@ def wrap_2(data): [link-jinja-filters]: https://jinja.palletsprojects.com/en/3.1.x/templates/#filters [ref-config-options]: /product/configuration#configuration-options -[ref-ref-config-options]: /reference/configuration/config +[ref-ref-config-options]: /product/configuration/reference/config [ref-model-syntax]: /product/data-modeling/syntax#model-syntax \ No newline at end of file diff --git a/docs/redirects.json b/docs/redirects.json index 96b718040bf13..306dea13baa6a 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1298,5 +1298,10 @@ "source": "/recipes/column-based-access", "destination": "/guides/recipes/access-control/column-based-access", "permanent": true + }, + { + "source": "/reference/configuration/config", + "destination": "/product/configuration/reference/config", + "permanent": true } ] From 0fa373d9f09d36da6196095aeeae6e99dac04475 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Fri, 16 May 2025 16:53:59 +0200 Subject: [PATCH 03/39] docs: Move environment variables page to product/configuration/reference --- docs/.claude/commands/move-page.md | 25 ++++++ docs/CLAUDE.md | 81 +++++++++++++++++++ .../using-ssl-connections-to-data-source.mdx | 2 +- .../product/caching/running-in-production.mdx | 2 +- docs/pages/product/configuration.mdx | 2 +- .../configuration/multiple-data-sources.mdx | 2 +- .../product/configuration/reference/_meta.js | 3 +- .../configuration/reference/config.mdx | 2 +- .../reference}/environment-variables.mdx | 0 docs/pages/product/deployment.mdx | 2 +- .../deployment/production-checklist.mdx | 4 +- docs/pages/reference/configuration/_meta.js | 3 - .../reference/data-model/pre-aggregations.mdx | 2 +- docs/plugins/link-environment-variables.mjs | 2 +- docs/redirects.json | 5 ++ 15 files changed, 123 insertions(+), 14 deletions(-) create mode 100644 docs/.claude/commands/move-page.md create mode 100644 docs/CLAUDE.md rename docs/pages/{reference/configuration => product/configuration/reference}/environment-variables.mdx (100%) delete mode 100644 docs/pages/reference/configuration/_meta.js diff --git a/docs/.claude/commands/move-page.md b/docs/.claude/commands/move-page.md new file mode 100644 index 0000000000000..9f6a4781a7b44 --- /dev/null +++ b/docs/.claude/commands/move-page.md @@ -0,0 +1,25 @@ +# Move documentation page + +I need to move a documentation page from its current location to a new one within our documentation site. Please help me with the full process including: + +1. Moving the source file to the destination directory: + - First, copy the file to the new location + - Only delete the original file after all other steps are completed and verified + +2. Updating relevant _meta.js files to maintain proper navigation: + - Add the page to the destination directory's _meta.js file + - Remove the page from the source directory's _meta.js file + - If the source _meta.js file becomes empty (just contains `module.exports = {}`), delete it + +3. Finding and updating all internal references/links to the moved page: + - Search for references to the old URL path in all files + - Pay special attention to link references at the bottom of files + - Check plugins that might construct URLs programmatically + +4. Adding a redirect from the old URL to the new one: + - Add a new entry at the top of the redirects.json file + - Format should follow existing entries with "permanent": true + +Before starting, ask for: +- Source page path (in URL format, e.g., /reference/configuration/environment-variables) +- Destination page path (in URL format, e.g., /product/configuration/reference/environment-variables) diff --git a/docs/CLAUDE.md b/docs/CLAUDE.md new file mode 100644 index 0000000000000..6750612d693ab --- /dev/null +++ b/docs/CLAUDE.md @@ -0,0 +1,81 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Repository Overview + +This repository contains the documentation site for Cube, a semantic layer for building data applications. The documentation is built using Next.js with the Nextra documentation theme and MDX for content authoring. + +## Project Structure + +- `/pages`: Contains all the documentation content in MDX format +- `/components`: React components used throughout the documentation site + - `/common`: General UI components like buttons, logos, etc. + - `/layouts`: Page layout components + - `/mdx`: Custom components for use within MDX content + - `/overrides`: Components that override Nextra defaults +- `/public`: Static assets (images, icons) +- `/styles`: Global CSS styles +- `/scripts`: Utility scripts for managing content + +## Development Commands + +```bash +# Start development server +npm run dev + +# Build for production +npm run build + +# Start production server +npm run start + +# Utility commands for content management +npm run create-redirects # Create redirect entries +npm run migrate-content # Run content migration scripts +npm run update-links # Update links in content files +``` + +## Technology Stack + +- **Framework**: Next.js with Nextra theme for documentation +- **Content**: MDX (Markdown with JSX) +- **Styling**: CSS/SCSS modules with Tailwind CSS +- **Deployment**: Vercel + +## Content Organization + +The documentation follows a hierarchical structure: + +1. Main sections are defined in `/pages/_meta.js` +2. Each section has its own `_meta.js` file that defines the order and titles of pages +3. Content is written in MDX files with frontmatter + +## Component Usage in MDX + +The documentation uses custom MDX components for specialized content presentation: + +- `` - For highlighting important information +- `` - For code examples in multiple languages +- `` and `` - For creating responsive grids +- `` - For embedding videos +- `` - For displaying screenshots + +## Best Practices + +1. **MDX Content**: + - Use the appropriate custom components for different content types + - Follow the existing section structure when adding new pages + - Include proper frontmatter with title and description + +2. **Component Development**: + - Use CSS/SCSS modules for component styling + - Follow the existing folder structure for new components + - Export components through index files for cleaner imports + +3. **Navigation**: + - Update `_meta.js` files when adding new pages to ensure proper navigation + +## Deployment + +The site is deployed to Vercel. The deployment process is automated via GitHub integration. diff --git a/docs/pages/guides/recipes/data-sources/using-ssl-connections-to-data-source.mdx b/docs/pages/guides/recipes/data-sources/using-ssl-connections-to-data-source.mdx index 7b632b7a0d9b7..587cf67a57a48 100644 --- a/docs/pages/guides/recipes/data-sources/using-ssl-connections-to-data-source.mdx +++ b/docs/pages/guides/recipes/data-sources/using-ssl-connections-to-data-source.mdx @@ -82,4 +82,4 @@ Add the following environment variables: [nodejs-docs-tls-options]: https://nodejs.org/docs/latest/api/tls.html#tls_tls_createsecurecontext_options [ref-config-db]: /product/configuration/data-sources -[ref-env-var]: /reference/configuration/environment-variables +[ref-env-var]: /product/configuration/reference/environment-variables diff --git a/docs/pages/product/caching/running-in-production.mdx b/docs/pages/product/caching/running-in-production.mdx index 1e2514f946196..db9b7d3edb95b 100644 --- a/docs/pages/product/caching/running-in-production.mdx +++ b/docs/pages/product/caching/running-in-production.mdx @@ -425,7 +425,7 @@ It's not supported by Cube or the vendor. [link-wsl2]: https://docs.microsoft.com/en-us/windows/wsl/install-win10 [ref-caching-partitioning]: /product/caching/using-pre-aggregations#partitioning -[ref-config-env]: /reference/configuration/environment-variables +[ref-config-env]: /product/configuration/reference/environment-variables [link-parquet-encryption]: https://parquet.apache.org/docs/file-format/data-pages/encryption/ [link-aes]: https://en.wikipedia.org/wiki/Advanced_Encryption_Standard [ref-cmk]: /product/workspace/encryption-keys diff --git a/docs/pages/product/configuration.mdx b/docs/pages/product/configuration.mdx index ce13f61de3582..056f105a71ff2 100644 --- a/docs/pages/product/configuration.mdx +++ b/docs/pages/product/configuration.mdx @@ -185,7 +185,7 @@ mode does the following: /product/data-modeling/syntax#folder-structure [link-config]: /product/configuration/reference/config [link-dev-playground]: /product/workspace/playground -[link-env-vars]: /reference/configuration/environment-variables +[link-env-vars]: /product/configuration/reference/environment-variables [link-scheduled-refresh]: /reference/data-model/pre-aggregations#scheduled_refresh [ref-dynamic-data-models]: /product/data-modeling/dynamic diff --git a/docs/pages/product/configuration/multiple-data-sources.mdx b/docs/pages/product/configuration/multiple-data-sources.mdx index 783c0ac5741e2..7dcc00979f82e 100644 --- a/docs/pages/product/configuration/multiple-data-sources.mdx +++ b/docs/pages/product/configuration/multiple-data-sources.mdx @@ -90,7 +90,7 @@ cube(`orders_from_other_data_source`, { -[ref-config-ref-env]: /reference/configuration/environment-variables +[ref-config-ref-env]: /product/configuration/reference/environment-variables [ref-config-ref-driverfactory]: /product/configuration/reference/config#driverfactory [ref-config-db]: /product/configuration/data-sources [ref-config-multitenancy]: diff --git a/docs/pages/product/configuration/reference/_meta.js b/docs/pages/product/configuration/reference/_meta.js index 05287aae770bb..8ea58bba17572 100644 --- a/docs/pages/product/configuration/reference/_meta.js +++ b/docs/pages/product/configuration/reference/_meta.js @@ -1,3 +1,4 @@ module.exports = { - "config": "Configuration options" + "config": "Configuration options", + "environment-variables": "Environment variables" } \ No newline at end of file diff --git a/docs/pages/product/configuration/reference/config.mdx b/docs/pages/product/configuration/reference/config.mdx index d693c7be43414..1dce3800e7904 100644 --- a/docs/pages/product/configuration/reference/config.mdx +++ b/docs/pages/product/configuration/reference/config.mdx @@ -1475,7 +1475,7 @@ If not defined, Cube will lookup for environment variable [self-schemapath]: #schema_path [ref-exec-environment-globals]: /product/data-modeling/dynamic/schema-execution-environment#nodejs-globals-processenv-consolelog-and-others -[ref-environment-variables]: /reference/configuration/environment-variables +[ref-environment-variables]: /product/configuration/reference/environment-variables [ref-rest-scopes]: /product/apis-integrations/rest-api#api-scopes [ref-config-options]: /product/configuration#configuration-options [self-orchestrator-id]: #context_to_orchestrator_id diff --git a/docs/pages/reference/configuration/environment-variables.mdx b/docs/pages/product/configuration/reference/environment-variables.mdx similarity index 100% rename from docs/pages/reference/configuration/environment-variables.mdx rename to docs/pages/product/configuration/reference/environment-variables.mdx diff --git a/docs/pages/product/deployment.mdx b/docs/pages/product/deployment.mdx index eefa9c11ff84e..2c405a20b9358 100644 --- a/docs/pages/product/deployment.mdx +++ b/docs/pages/product/deployment.mdx @@ -247,7 +247,7 @@ services: [ref-deploy-prod-list]: /product/deployment/production-checklist [ref-deploy-cubecloud]: /product/deployment/cloud [ref-deploy-docker]: /product/deployment/core -[ref-config-env]: /reference/configuration/environment-variables +[ref-config-env]: /product/configuration/reference/environment-variables [ref-config-js]: /product/configuration/reference/config [ref-conf-ref-schemapath]: /product/configuration/reference/config#schema_path [gh-pavel]: https://github.com/paveltiunov diff --git a/docs/pages/product/deployment/production-checklist.mdx b/docs/pages/product/deployment/production-checklist.mdx index eafe77ac9da97..10a8d13dc0553 100644 --- a/docs/pages/product/deployment/production-checklist.mdx +++ b/docs/pages/product/deployment/production-checklist.mdx @@ -147,9 +147,9 @@ performance numbers can differ as it has different Cube runtime. [ref-config-connect-db]: /connecting-to-the-database [ref-caching-cubestore]: /product/caching/running-in-production [ref-conf-ref-env-cachequeue-driver]: - /reference/configuration/environment-variables#cubejs_cache_and_queue_driver + /product/configuration/reference/environment-variables#cubejs_cache_and_queue_driver [ref-conf-preaggs-schema]: /product/configuration/reference/config#pre_aggregations_schema -[ref-env-vars]: /reference/configuration/environment-variables +[ref-env-vars]: /product/configuration/reference/environment-variables [ref-schema-ref-preaggs]: /reference/data-model/pre-aggregations [ref-sec-ctx]: /product/auth/context [ref-config-jwt]: /product/configuration/reference/config#jwt diff --git a/docs/pages/reference/configuration/_meta.js b/docs/pages/reference/configuration/_meta.js deleted file mode 100644 index fe8cc4d203831..0000000000000 --- a/docs/pages/reference/configuration/_meta.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - "environment-variables": "Environment variables" -} \ No newline at end of file diff --git a/docs/pages/reference/data-model/pre-aggregations.mdx b/docs/pages/reference/data-model/pre-aggregations.mdx index 71893411469ce..511b9d20a326c 100644 --- a/docs/pages/reference/data-model/pre-aggregations.mdx +++ b/docs/pages/reference/data-model/pre-aggregations.mdx @@ -1767,5 +1767,5 @@ cubes: [ref-pre-aggs]: /product/caching/using-pre-aggregations [ref-ref-cubes]: /reference/data-model/cube [ref-custom-granularity]: /reference/data-model/dimensions#granularities -[ref-env-allow-non-strict]: /reference/configuration/environment-variables#cubejs-pre-aggregations-allow-non-strict-date-range-match +[ref-env-allow-non-strict]: /product/configuration/reference/environment-variables#cubejs-pre-aggregations-allow-non-strict-date-range-match [ref-config-downstream-tableau]: /product/configuration/visualization-tools/tableau diff --git a/docs/plugins/link-environment-variables.mjs b/docs/plugins/link-environment-variables.mjs index 95720040e469f..da01ab44f53d1 100644 --- a/docs/plugins/link-environment-variables.mjs +++ b/docs/plugins/link-environment-variables.mjs @@ -41,7 +41,7 @@ export default function retextSentenceSpacing() { children: [currentNode], title: null, type: "link", - url: `/reference/configuration/environment-variables#${value.toLowerCase()}` + url: `/product/configuration/reference/environment-variables#${value.toLowerCase()}` }; node.children.splice(index, 1, newNode); diff --git a/docs/redirects.json b/docs/redirects.json index 306dea13baa6a..5873024447ad7 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/reference/configuration/environment-variables", + "destination": "/product/configuration/reference/environment-variables", + "permanent": true + }, { "source": "/product/configuration/advanced/multiple-data-sources", "destination": "/product/configuration/multiple-data-sources", From cc4b6b50f4d6e199916089fc88bf095c1cb2a5e3 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Fri, 16 May 2025 17:21:25 +0200 Subject: [PATCH 04/39] docs: Move data model reference pages to product/data-modeling/reference --- docs/.claude/commands/move-page.md | 6 +- .../guides/data-store-cost-saving-guide.mdx | 2 +- docs/pages/guides/dbt.mdx | 20 ++--- .../guides/recipes/analytics/active-users.mdx | 2 +- .../recipes/analytics/event-analytics.mdx | 2 +- .../guides/recipes/analytics/funnels.mdx | 2 +- .../recipes/data-exploration/drilldowns.mdx | 2 +- .../recipes/data-modeling/custom-calendar.mdx | 2 +- .../data-modeling/custom-granularity.mdx | 2 +- .../data-modeling/dynamic-union-tables.mdx | 4 +- .../data-modeling/nested-aggregates.mdx | 4 +- .../passing-dynamic-parameters-in-a-query.mdx | 2 +- .../recipes/data-modeling/percentiles.mdx | 2 +- .../data-modeling/period-over-period.mdx | 2 +- .../recipes/data-modeling/snapshots.mdx | 4 +- .../data-modeling/string-time-dimensions.mdx | 2 +- .../custom-data-model-per-tenant.mdx | 16 ++-- .../getting-unique-values-for-a-field.mdx | 2 +- ...ding-pre-aggregations-for-a-date-range.mdx | 4 +- .../joining-multiple-data-sources.mdx | 4 +- .../query-acceleration/non-additivity.mdx | 6 +- .../refreshing-select-partitions.mdx | 10 +-- ...ng-originalsql-and-rollups-effectively.mdx | 8 +- docs/pages/guides/style-guide.mdx | 14 ++-- docs/pages/product/apis-integrations.mdx | 4 +- .../product/apis-integrations/graphql-api.mdx | 4 +- .../graphql-api/reference.mdx | 2 +- .../product/apis-integrations/mdx-api.mdx | 4 +- .../apis-integrations/orchestration-api.mdx | 2 +- .../product/apis-integrations/queries.mdx | 4 +- .../product/apis-integrations/rest-api.mdx | 2 +- .../rest-api/query-format.mdx | 12 +-- .../rest-api/real-time-data-fetch.mdx | 2 +- .../sql-api/query-format.mdx | 24 +++--- docs/pages/product/auth/context.mdx | 4 +- .../product/auth/data-access-policies.mdx | 2 +- .../product/auth/member-level-security.mdx | 12 +-- .../pages/product/auth/row-level-security.mdx | 2 +- docs/pages/product/caching.mdx | 4 +- .../getting-started-pre-aggregations.mdx | 2 +- .../caching/matching-pre-aggregations.mdx | 12 +-- .../product/caching/running-in-production.mdx | 10 +-- .../caching/using-pre-aggregations.mdx | 22 +++--- docs/pages/product/configuration.mdx | 2 +- .../configuration/data-sources/aws-athena.mdx | 2 +- .../data-sources/aws-redshift.mdx | 2 +- .../configuration/data-sources/clickhouse.mdx | 6 +- .../data-sources/databricks-jdbc.mdx | 2 +- .../configuration/data-sources/duckdb.mdx | 2 +- .../data-sources/google-bigquery.mdx | 2 +- .../configuration/data-sources/mongodb.mdx | 2 +- .../configuration/data-sources/ms-fabric.mdx | 2 +- .../configuration/data-sources/ms-sql.mdx | 2 +- .../configuration/data-sources/mysql.mdx | 2 +- .../configuration/data-sources/pinot.mdx | 2 +- .../configuration/data-sources/postgres.mdx | 2 +- .../configuration/data-sources/presto.mdx | 2 +- .../configuration/data-sources/risingwave.mdx | 2 +- .../data-sources/singlestore.mdx | 2 +- .../configuration/data-sources/snowflake.mdx | 2 +- .../configuration/data-sources/trino.mdx | 2 +- .../configuration/multiple-data-sources.mdx | 4 +- .../product/configuration/multitenancy.mdx | 4 +- .../product/configuration/reference/_meta.js | 4 +- .../configuration/reference/config.mdx | 10 +-- .../reference/environment-variables.mdx | 2 +- .../visualization-tools/superset.mdx | 4 +- docs/pages/product/data-modeling/_meta.js | 3 +- docs/pages/product/data-modeling/concepts.mdx | 76 +++++++++---------- .../concepts/calculated-members.mdx | 12 +-- .../code-reusability-extending-cubes.mdx | 6 +- .../concepts/multi-stage-calculations.mdx | 2 +- .../concepts/polymorphic-cubes.mdx | 2 +- .../concepts/working-with-joins.mdx | 6 +- .../data-modeling/dynamic/javascript.mdx | 2 +- docs/pages/product/data-modeling/overview.mdx | 8 +- .../data-modeling/reference}/_meta.js | 0 .../reference}/context-variables.mdx | 2 +- .../data-modeling/reference}/cube.mdx | 14 ++-- .../reference}/data-access-policies.mdx | 4 +- .../data-modeling/reference}/dimensions.mdx | 12 +-- .../data-modeling/reference}/hierarchies.mdx | 4 +- .../data-modeling/reference}/joins.mdx | 4 +- .../data-modeling/reference}/measures.mdx | 6 +- .../reference}/pre-aggregations.mdx | 18 ++--- .../data-modeling/reference}/segments.mdx | 2 +- .../reference}/types-and-formats.mdx | 4 +- .../data-modeling/reference}/view.mdx | 14 ++-- docs/pages/product/data-modeling/syntax.mdx | 6 +- .../deployment/production-checklist.mdx | 2 +- .../cloud/create-data-model.mdx | 2 +- .../getting-started/cloud/query-from-bi.mdx | 2 +- .../databricks/create-data-model.mdx | 2 +- .../databricks/query-from-bi.mdx | 2 +- .../product/workspace/encryption-keys.mdx | 2 +- docs/pages/product/workspace/playground.mdx | 6 +- .../product/workspace/pre-aggregations.mdx | 6 +- .../product/workspace/rollup-designer.mdx | 6 +- docs/pages/product/workspace/sql-runner.mdx | 2 +- docs/pages/product/workspace/visual-model.mdx | 26 +++---- docs/pages/reference/_meta.js | 2 - docs/pages/reference/errors.mdx | 16 ++-- docs/pages/reference/python/cube_dbt.mdx | 12 +-- docs/pages/reference/python/lkml2cube.mdx | 6 +- docs/redirects.json | 60 +++++++++++++++ 105 files changed, 371 insertions(+), 312 deletions(-) rename docs/pages/{reference/data-model => product/data-modeling/reference}/_meta.js (100%) rename docs/pages/{reference/data-model => product/data-modeling/reference}/context-variables.mdx (99%) rename docs/pages/{reference/data-model => product/data-modeling/reference}/cube.mdx (96%) rename docs/pages/{reference/data-model => product/data-modeling/reference}/data-access-policies.mdx (98%) rename docs/pages/{reference/data-model => product/data-modeling/reference}/dimensions.mdx (97%) rename docs/pages/{reference/data-model => product/data-modeling/reference}/hierarchies.mdx (97%) rename docs/pages/{reference/data-model => product/data-modeling/reference}/joins.mdx (99%) rename docs/pages/{reference/data-model => product/data-modeling/reference}/measures.mdx (98%) rename docs/pages/{reference/data-model => product/data-modeling/reference}/pre-aggregations.mdx (98%) rename docs/pages/{reference/data-model => product/data-modeling/reference}/segments.mdx (99%) rename docs/pages/{reference/data-model => product/data-modeling/reference}/types-and-formats.mdx (99%) rename docs/pages/{reference/data-model => product/data-modeling/reference}/view.mdx (95%) diff --git a/docs/.claude/commands/move-page.md b/docs/.claude/commands/move-page.md index 9f6a4781a7b44..3da3d90a073f4 100644 --- a/docs/.claude/commands/move-page.md +++ b/docs/.claude/commands/move-page.md @@ -3,9 +3,9 @@ I need to move a documentation page from its current location to a new one within our documentation site. Please help me with the full process including: 1. Moving the source file to the destination directory: - - First, copy the file to the new location - - Only delete the original file after all other steps are completed and verified - + - Use the `mv` command to move the file to the new location + - Don't leave the original file + 2. Updating relevant _meta.js files to maintain proper navigation: - Add the page to the destination directory's _meta.js file - Remove the page from the source directory's _meta.js file diff --git a/docs/pages/guides/data-store-cost-saving-guide.mdx b/docs/pages/guides/data-store-cost-saving-guide.mdx index d4016b451f95c..97640e0b0e653 100644 --- a/docs/pages/guides/data-store-cost-saving-guide.mdx +++ b/docs/pages/guides/data-store-cost-saving-guide.mdx @@ -144,7 +144,7 @@ when data outside the last partition can be updated. [ref-intro]: /product/introduction [ref-caching]: /product/caching [ref-pre-agg-refresh-key]: - /reference/data-model/pre-aggregations#refresh_key + /product/data-modeling/reference/pre-aggregations#refresh_key [ref-config-apis]: /product/configuration/visualization-tools#ap-is-references [ref-caching-using-pre-aggs]: /product/caching/getting-started-pre-aggregations [ref-query-history]: /product/workspace/query-history diff --git a/docs/pages/guides/dbt.mdx b/docs/pages/guides/dbt.mdx index 80c9d9d040caa..6f0ffe7928888 100644 --- a/docs/pages/guides/dbt.mdx +++ b/docs/pages/guides/dbt.mdx @@ -332,15 +332,15 @@ of the REST API. [self-integration]: /guides/dbt#data-model-integration -[ref-ref-cubes]: /reference/data-model/cube -[ref-ref-dimensions]: /reference/data-model/dimensions -[ref-ref-measures]: /reference/data-model/measures -[ref-ref-joins]: /reference/data-model/joins -[ref-ref-pre-aggs]: /reference/data-model/pre-aggregations -[ref-ref-views]: /reference/data-model/view +[ref-ref-cubes]: /product/data-modeling/reference/cube +[ref-ref-dimensions]: /product/data-modeling/reference/dimensions +[ref-ref-measures]: /product/data-modeling/reference/measures +[ref-ref-joins]: /product/data-modeling/reference/joins +[ref-ref-pre-aggs]: /product/data-modeling/reference/pre-aggregations +[ref-ref-views]: /product/data-modeling/reference/view [ref-apis]: /product/apis-integrations -[ref-time-type]: /reference/data-model/types-and-formats#time-1 -[ref-refresh-keys]: /reference/data-model/cube#refresh_key +[ref-time-type]: /product/data-modeling/reference/types-and-formats#time-1 +[ref-refresh-keys]: /product/data-modeling/reference/cube#refresh_key [ref-pre-aggs]: /product/caching/using-pre-aggregations [ref-pre-aggs-refresh-keys]: /product/caching/using-pre-aggregations#refresh-strategy [ref-orchestration-api]: /product/apis-integrations/orchestration-api @@ -349,8 +349,8 @@ of the REST API. [ref-cube-dbt-as-dimensions]: /reference/python/cube_dbt#modelas_dimensions [ref-cube-dbt-data-type]: /reference/python/cube_dbt#columntype [ref-template-context]: /reference/python/cube#templatecontext-class -[ref-primary-key]: /reference/data-model/dimensions#primary_key -[ref-dimension-types]: /reference/data-model/types-and-formats#dimension-types +[ref-primary-key]: /product/data-modeling/reference/dimensions#primary_key +[ref-dimension-types]: /product/data-modeling/reference/types-and-formats#dimension-types [ref-visual-model]: /product/workspace/visual-model [ref-playground]: /product/workspace/playground [ref-rest-api-meta]: /product/apis-integrations/rest-api/reference#v1meta diff --git a/docs/pages/guides/recipes/analytics/active-users.mdx b/docs/pages/guides/recipes/analytics/active-users.mdx index 4257cec16ab32..f0108ad09f977 100644 --- a/docs/pages/guides/recipes/analytics/active-users.mdx +++ b/docs/pages/guides/recipes/analytics/active-users.mdx @@ -15,7 +15,7 @@ basic metrics. For example, the WAU to MAU ratio, which we can add by using already defined `weekly_active_users` and `monthly_active_users`. To calculate daily, weekly, or monthly active users we’re going to use the -[`rolling_window`](/reference/data-model/measures#rolling_window) +[`rolling_window`](/product/data-modeling/reference/measures#rolling_window) measure parameter. diff --git a/docs/pages/guides/recipes/analytics/event-analytics.mdx b/docs/pages/guides/recipes/analytics/event-analytics.mdx index 4e0e090c5c702..6447875cb1949 100644 --- a/docs/pages/guides/recipes/analytics/event-analytics.mdx +++ b/docs/pages/guides/recipes/analytics/event-analytics.mdx @@ -374,7 +374,7 @@ The next step is to identify the events contained within the session and the events ending the session. It’s required to get metrics such as session duration and events per session, or to identify sessions where specific events occurred (we’re going to use that for funnel analysis later on). We’re going to -[declare a join](/reference/data-model/joins) such that the `events` +[declare a join](/product/data-modeling/reference/joins) such that the `events` cube has a `many_to_one` relation to the `sessions` cube, and specify a condition, such as all users' events from session start (inclusive) till the start of the next session (exclusive) belong to that session. diff --git a/docs/pages/guides/recipes/analytics/funnels.mdx b/docs/pages/guides/recipes/analytics/funnels.mdx index 8cd047da451ee..01aaa0db5fbea 100644 --- a/docs/pages/guides/recipes/analytics/funnels.mdx +++ b/docs/pages/guides/recipes/analytics/funnels.mdx @@ -328,4 +328,4 @@ cube(`PurchaseFunnel`, { [ref-partitioned-rollups]: /product/caching/using-pre-aggregations#time-partitioning [ref-schema-ref-preaggs-origsql]: - /reference/data-model/pre-aggregations#original_sql + /product/data-modeling/reference/pre-aggregations#original_sql diff --git a/docs/pages/guides/recipes/data-exploration/drilldowns.mdx b/docs/pages/guides/recipes/data-exploration/drilldowns.mdx index ed330a0f51e9e..4a86cf0f3a6df 100644 --- a/docs/pages/guides/recipes/data-exploration/drilldowns.mdx +++ b/docs/pages/guides/recipes/data-exploration/drilldowns.mdx @@ -101,4 +101,4 @@ a UI for drilldowns. [ref-cube-client-ref-resultset-drilldown]: /product/apis-integrations/javascript-sdk/reference/cubejs-client-core#drilldown [blog-drilldown-api]: https://cube.dev/blog/introducing-a-drill-down-table-api-in-cubejs/ -[ref-schema-ref-measures]: /reference/data-model/measures \ No newline at end of file +[ref-schema-ref-measures]: /product/data-modeling/reference/measures \ No newline at end of file diff --git a/docs/pages/guides/recipes/data-modeling/custom-calendar.mdx b/docs/pages/guides/recipes/data-modeling/custom-calendar.mdx index 9f66bb075829a..33f245bff65f2 100644 --- a/docs/pages/guides/recipes/data-modeling/custom-calendar.mdx +++ b/docs/pages/guides/recipes/data-modeling/custom-calendar.mdx @@ -215,7 +215,7 @@ Querying this data modal would yield the following result: [link-454]: https://nrf.com/resources/4-5-4-calendar [link-454-official-calendar]: https://2fb5c46100c1b71985e2-011e70369171d43105aff38e48482379.ssl.cf1.rackcdn.com/4-5-4%20calendar/3-Year-Calendar-5-27.pdf -[ref-custom-granularities]: /reference/data-model/dimensions#granularities +[ref-custom-granularities]: /product/data-modeling/reference/dimensions#granularities [ref-custom-granularities-recipe]: /guides/recipes/data-modeling/custom-granularity [ref-proxy-dimensions]: /product/data-modeling/concepts/calculated-members#proxy-dimensions [ref-jinja-macro]: /product/data-modeling/dynamic/jinja#macros \ No newline at end of file diff --git a/docs/pages/guides/recipes/data-modeling/custom-granularity.mdx b/docs/pages/guides/recipes/data-modeling/custom-granularity.mdx index b17ac2c0c10a1..3245c6cb4051c 100644 --- a/docs/pages/guides/recipes/data-modeling/custom-granularity.mdx +++ b/docs/pages/guides/recipes/data-modeling/custom-granularity.mdx @@ -159,7 +159,7 @@ Querying this data modal would yield the following result: -[ref-custom-granularities]: /reference/data-model/dimensions#granularities +[ref-custom-granularities]: /product/data-modeling/reference/dimensions#granularities [ref-default-granularities]: /product/data-modeling/concepts#time-dimensions [wiki-fiscal-year]: https://en.wikipedia.org/wiki/Fiscal_year [ref-playground]: /product/workspace/playground diff --git a/docs/pages/guides/recipes/data-modeling/dynamic-union-tables.mdx b/docs/pages/guides/recipes/data-modeling/dynamic-union-tables.mdx index f43836b6ea9f2..daf00f1c914f2 100644 --- a/docs/pages/guides/recipes/data-modeling/dynamic-union-tables.mdx +++ b/docs/pages/guides/recipes/data-modeling/dynamic-union-tables.mdx @@ -167,6 +167,6 @@ ORDER BY ``` [ref-modeling-syntax]: /product/data-modeling/syntax -[ref-cubes]: /reference/data-model/cube -[ref-cube-sql]: /reference/data-model/cube#sql +[ref-cubes]: /product/data-modeling/reference/cube +[ref-cube-sql]: /product/data-modeling/reference/cube#sql [ref-dynamic-data-modeling]: /product/data-modeling/dynamic \ No newline at end of file diff --git a/docs/pages/guides/recipes/data-modeling/nested-aggregates.mdx b/docs/pages/guides/recipes/data-modeling/nested-aggregates.mdx index 63528bbd87a9a..4c0aa7ee8a59d 100644 --- a/docs/pages/guides/recipes/data-modeling/nested-aggregates.mdx +++ b/docs/pages/guides/recipes/data-modeling/nested-aggregates.mdx @@ -137,6 +137,6 @@ We can verify that it's correct by adding one more dimension to the query: -[ref-measures]: /reference/data-model/measures -[ref-cube]: /reference/data-model/cube +[ref-measures]: /product/data-modeling/reference/measures +[ref-cube]: /product/data-modeling/reference/cube [ref-subquery-dimension]: /product/data-modeling/concepts/calculated-members#subquery-dimensions \ No newline at end of file diff --git a/docs/pages/guides/recipes/data-modeling/passing-dynamic-parameters-in-a-query.mdx b/docs/pages/guides/recipes/data-modeling/passing-dynamic-parameters-in-a-query.mdx index 704c363cd8199..200c9b558c77c 100644 --- a/docs/pages/guides/recipes/data-modeling/passing-dynamic-parameters-in-a-query.mdx +++ b/docs/pages/guides/recipes/data-modeling/passing-dynamic-parameters-in-a-query.mdx @@ -244,4 +244,4 @@ Please feel free to check out the or run it with the `docker-compose up` command. You'll see the result, including queried data, in the console. -[ref-filter-params]: /reference/data-model/context-variables#filter_params +[ref-filter-params]: /product/data-modeling/reference/context-variables#filter_params diff --git a/docs/pages/guides/recipes/data-modeling/percentiles.mdx b/docs/pages/guides/recipes/data-modeling/percentiles.mdx index cc77f5b34a929..4ecf94a6ae37b 100644 --- a/docs/pages/guides/recipes/data-modeling/percentiles.mdx +++ b/docs/pages/guides/recipes/data-modeling/percentiles.mdx @@ -49,7 +49,7 @@ information about users, including their age: ``` Calculating the average age is as simple as defining a measure with the built-in -[`avg` type](/reference/data-model/types-and-formats#avg). +[`avg` type](/product/data-modeling/reference/types-and-formats#avg). Calculating the percentiles would require using database-specific functions. However, almost every database has them under names of `PERCENTILE_CONT` and diff --git a/docs/pages/guides/recipes/data-modeling/period-over-period.mdx b/docs/pages/guides/recipes/data-modeling/period-over-period.mdx index f47d30e2c9f88..685122a5204e4 100644 --- a/docs/pages/guides/recipes/data-modeling/period-over-period.mdx +++ b/docs/pages/guides/recipes/data-modeling/period-over-period.mdx @@ -96,7 +96,7 @@ Here's the result: -[ref-rolling-window]: /reference/data-model/measures#rolling_window +[ref-rolling-window]: /product/data-modeling/reference/measures#rolling_window [ref-calculated-measure]: /product/data-modeling/overview#4-using-calculated-measures [ref-time-dimension-granularity]: /product/apis-integrations/rest-api/query-format#time-dimensions-format [link-tesseract]: https://cube.dev/blog/introducing-next-generation-data-modeling-engine diff --git a/docs/pages/guides/recipes/data-modeling/snapshots.mdx b/docs/pages/guides/recipes/data-modeling/snapshots.mdx index 8856f25a5285e..e4285a672f83d 100644 --- a/docs/pages/guides/recipes/data-modeling/snapshots.mdx +++ b/docs/pages/guides/recipes/data-modeling/snapshots.mdx @@ -152,11 +152,11 @@ in BigQuery. Please note that it makes sense to make the `status_snapshots` cube -[extend](/reference/data-model/cube#extends) the original `statuses` +[extend](/product/data-modeling/reference/cube#extends) the original `statuses` cube in order to reuse the dimension definitions. We only need to add a new dimension that indicates the `date` of a snapshot. We're also referencing the definition of the `statuses` cube with the -[`sql()` property](/reference/data-model/cube#sql). +[`sql()` property](/product/data-modeling/reference/cube#sql). ## Query diff --git a/docs/pages/guides/recipes/data-modeling/string-time-dimensions.mdx b/docs/pages/guides/recipes/data-modeling/string-time-dimensions.mdx index ddbc3adcc1fb1..60663c16d91d0 100644 --- a/docs/pages/guides/recipes/data-modeling/string-time-dimensions.mdx +++ b/docs/pages/guides/recipes/data-modeling/string-time-dimensions.mdx @@ -50,5 +50,5 @@ most likely will. Adding timestamp columns with indexes or transforming the data upstream should strongly be considered in this case. -[ref-time-dimension]: /reference/data-model/types-and-formats#time-1 +[ref-time-dimension]: /product/data-modeling/reference/types-and-formats#time-1 [bq-parse-timestamp]: https://cloud.google.com/bigquery/docs/reference/standard-sql/timestamp_functions#parse_timestamp \ No newline at end of file diff --git a/docs/pages/guides/recipes/multitenancy/custom-data-model-per-tenant.mdx b/docs/pages/guides/recipes/multitenancy/custom-data-model-per-tenant.mdx index 72b8f48f07e16..c136f48f55bb2 100644 --- a/docs/pages/guides/recipes/multitenancy/custom-data-model-per-tenant.mdx +++ b/docs/pages/guides/recipes/multitenancy/custom-data-model-per-tenant.mdx @@ -365,16 +365,16 @@ code that fetches data model files for each tenant. [ref-context-to-app-id]: /product/configuration/reference/config#context_to_app_id [ref-config-files]: /product/configuration#cubepy-and-cubejs-files [ref-mls]: /product/auth/member-level-security -[ref-cubes-public]: /reference/data-model/cube#public -[ref-views-public]: /reference/data-model/view#public -[ref-measures-public]: /reference/data-model/measures#public -[ref-dimensions-public]: /reference/data-model/dimensions#public -[ref-segments-public]: /reference/data-model/segments#public +[ref-cubes-public]: /product/data-modeling/reference/cube#public +[ref-views-public]: /product/data-modeling/reference/view#public +[ref-measures-public]: /product/data-modeling/reference/measures#public +[ref-dimensions-public]: /product/data-modeling/reference/dimensions#public +[ref-segments-public]: /product/data-modeling/reference/segments#public [ref-playground]: /product/workspace/playground [ref-apis]: /product/apis-integrations -[ref-cube-sql-table]: /reference/data-model/cube#sql_table -[ref-cube-data-source]: /reference/data-model/cube#data_source +[ref-cube-sql-table]: /product/data-modeling/reference/cube#sql_table +[ref-cube-data-source]: /product/data-modeling/reference/cube#data_source [ref-data-sources]: /product/configuration/advanced/multiple-data-sources -[ref-cube-extends]: /reference/data-model/cube#extends +[ref-cube-extends]: /product/data-modeling/reference/cube#extends [ref-dynamic-data-modeling]: /product/data-modeling/dynamic [ref-repository-factory]: /product/configuration/reference/config#repository_factory \ No newline at end of file diff --git a/docs/pages/guides/recipes/queries/getting-unique-values-for-a-field.mdx b/docs/pages/guides/recipes/queries/getting-unique-values-for-a-field.mdx index 6bbe82450efb8..2f5e63ff87e77 100644 --- a/docs/pages/guides/recipes/queries/getting-unique-values-for-a-field.mdx +++ b/docs/pages/guides/recipes/queries/getting-unique-values-for-a-field.mdx @@ -5,7 +5,7 @@ We have a dashboard with information about the users, and we'd like to filter them by city. To do so, we need to display all unique values for cities in the dropdown. In the recipe below, we'll learn how to get unique values for -[dimensions](/reference/data-model/dimensions). +[dimensions](/product/data-modeling/reference/dimensions). ## Data modeling diff --git a/docs/pages/guides/recipes/query-acceleration/incrementally-building-pre-aggregations-for-a-date-range.mdx b/docs/pages/guides/recipes/query-acceleration/incrementally-building-pre-aggregations-for-a-date-range.mdx index edb41cc556355..60ece7f7a745c 100644 --- a/docs/pages/guides/recipes/query-acceleration/incrementally-building-pre-aggregations-for-a-date-range.mdx +++ b/docs/pages/guides/recipes/query-acceleration/incrementally-building-pre-aggregations-for-a-date-range.mdx @@ -250,9 +250,9 @@ used to apply the build ranges as defined by `build_range_start` and `build_range_end`. [ref-schema-ref-preagg-buildrange]: - /reference/data-model/pre-aggregations#build_range_start-and-build_range_end + /product/data-modeling/reference/pre-aggregations#build_range_start-and-build_range_end [ref-schema-ref-cube-filterparam]: - /reference/data-model/cube#filter-params + /product/data-modeling/reference/cube#filter-params [self-config-aws-athena]: /config/databases/aws-athena/ [self-config-google-bigquery]: /product/configuration/data-sources/google-bigquery diff --git a/docs/pages/guides/recipes/query-acceleration/joining-multiple-data-sources.mdx b/docs/pages/guides/recipes/query-acceleration/joining-multiple-data-sources.mdx index eab24b9ece4d4..f07c55910f422 100644 --- a/docs/pages/guides/recipes/query-acceleration/joining-multiple-data-sources.mdx +++ b/docs/pages/guides/recipes/query-acceleration/joining-multiple-data-sources.mdx @@ -5,7 +5,7 @@ Let's imagine we store information about products and their suppliers in separate databases. We want to aggregate data from these data sources while having decent performance. In the recipe below, we'll learn how to create a -[rollup join](/reference/data-model/pre-aggregations#rollup_join) +[rollup join](/product/data-modeling/reference/pre-aggregations#rollup_join) between two databases to achieve our goal. ## Configuration @@ -46,7 +46,7 @@ module.exports = { ## Data modeling First, we'll define -[rollup](/reference/data-model/pre-aggregations#rollup) +[rollup](/product/data-modeling/reference/pre-aggregations#rollup) pre-aggregations for `products` and `suppliers`. Note that these pre-aggregations should contain the dimension on which they're joined. In this case, it's the `supplier_id` dimension in the `products` cube, and the `id` diff --git a/docs/pages/guides/recipes/query-acceleration/non-additivity.mdx b/docs/pages/guides/recipes/query-acceleration/non-additivity.mdx index 0aec0b727de9f..fd56ebffd8007 100644 --- a/docs/pages/guides/recipes/query-acceleration/non-additivity.mdx +++ b/docs/pages/guides/recipes/query-acceleration/non-additivity.mdx @@ -6,7 +6,7 @@ We want to run queries against [pre-aggregations](/product/caching#pre-aggregations) only to ensure our application's superior performance. Usually, accelerating a query is as simple as including its measures and dimensions to the pre-aggregation -[definition](/reference/data-model/pre-aggregations#measures). +[definition](/product/data-modeling/reference/pre-aggregations#measures). [Non-additive](/product/caching/getting-started-pre-aggregations#ensuring-pre-aggregations-are-targeted-by-queries-non-additivity) measures (e.g., average values or distinct counts) are a special case. @@ -126,7 +126,7 @@ Let's explore some possible workarounds. ### Replacing with approximate additive measures Often, non-additive `count_distinct` measures can be changed to have the -[`count_distinct_approx` type](/reference/data-model/types-and-formats#count_distinct_approx) +[`count_distinct_approx` type](/product/data-modeling/reference/types-and-formats#count_distinct_approx) which will make them additive and orders of magnitude more performant. This `count_distinct_approx` measures can be used in pre-aggregations. However, there are two drawbacks: @@ -167,7 +167,7 @@ cube(`users`, { ### Decomposing into a formula with additive measures Non-additive `avg` measures can be rewritten as -[calculated measures](/reference/data-model/measures#calculated-measures) +[calculated measures](/product/data-modeling/reference/measures#calculated-measures) that reference additive measures only. Then, this additive measures can be used in pre-aggregations. Please note, however, that you shouldn't include `avg_age` measure in your pre-aggregation as it renders it non-additive. diff --git a/docs/pages/guides/recipes/query-acceleration/refreshing-select-partitions.mdx b/docs/pages/guides/recipes/query-acceleration/refreshing-select-partitions.mdx index 3fdf05c35d40a..1336c8bfa5439 100644 --- a/docs/pages/guides/recipes/query-acceleration/refreshing-select-partitions.mdx +++ b/docs/pages/guides/recipes/query-acceleration/refreshing-select-partitions.mdx @@ -10,8 +10,8 @@ order's status can change after a long period. In this case, we want to rebuild only partitions associated with this order. In the recipe below, we'll learn how to use the -[`refresh_key`](/reference/data-model/pre-aggregations#sql) together -with the [`FITER_PARAMS`](/reference/data-model/cube#filter-params) +[`refresh_key`](/product/data-modeling/reference/pre-aggregations#sql) together +with the [`FITER_PARAMS`](/product/data-modeling/reference/cube#filter-params) for partition separately. ## Data modeling @@ -29,7 +29,7 @@ orders, including number and status: In our case, each order has `created_at` and `updated_at` properties. The `updated_at` property is the last order update timestamp. To create a pre-aggregation with partitions, we need to specify the -[`partition_granularity` property](/reference/data-model/pre-aggregations#partition_granularity). +[`partition_granularity` property](/product/data-modeling/reference/pre-aggregations#partition_granularity). Partitions will be split monthly by the `created_at` dimension. @@ -74,7 +74,7 @@ cube(`orders`, { As you can see, we defined custom a -[`refresh_key`](/reference/data-model/pre-aggregations#sql) that will +[`refresh_key`](/product/data-modeling/reference/pre-aggregations#sql) that will check for new values of the `updated_at` property. The refresh key is evaluated for each partition separately. For example, if we update orders from August and update their `updated_at` property, the current refresh key will update for @@ -102,7 +102,7 @@ Note that the query for two partitions is the same. It's the reason why **all partitions** will be updated. How do we fix this and update only the partition for August? We can use the -[`FILTER_PARAMS`](/reference/data-model/cube#filter-params) for that! +[`FILTER_PARAMS`](/product/data-modeling/reference/cube#filter-params) for that! Let's update our pre-aggregation definition: diff --git a/docs/pages/guides/recipes/query-acceleration/using-originalsql-and-rollups-effectively.mdx b/docs/pages/guides/recipes/query-acceleration/using-originalsql-and-rollups-effectively.mdx index 9d74a214ebc69..64ff3cb7e20b4 100644 --- a/docs/pages/guides/recipes/query-acceleration/using-originalsql-and-rollups-effectively.mdx +++ b/docs/pages/guides/recipes/query-acceleration/using-originalsql-and-rollups-effectively.mdx @@ -85,9 +85,9 @@ With the above data model, the `main` pre-aggregation is built from the `base` pre-aggregation. [ref-schema-ref-preaggs-type-origsql]: - /reference/data-model/pre-aggregations#original_sql + /product/data-modeling/reference/pre-aggregations#original_sql [ref-schema-ref-preaggs-use-origsql]: - /reference/data-model/pre-aggregations#use_original_sql_pre_aggregations -[ref-cubes]: /reference/data-model/cube -[ref-cube-sql]: /reference/data-model/cube#sql + /product/data-modeling/reference/pre-aggregations#use_original_sql_pre_aggregations +[ref-cubes]: /product/data-modeling/reference/cube +[ref-cube-sql]: /product/data-modeling/reference/cube#sql [ref-preaggs]: /product/caching/using-pre-aggregations \ No newline at end of file diff --git a/docs/pages/guides/style-guide.mdx b/docs/pages/guides/style-guide.mdx index 5814bb1aeb9ed..a4170e0395017 100644 --- a/docs/pages/guides/style-guide.mdx +++ b/docs/pages/guides/style-guide.mdx @@ -325,13 +325,13 @@ This style guide was inspired in part by: [ref-syntax-naming]: /product/data-modeling/syntax#naming [ref-syntax-folder-structure]: /product/data-modeling/syntax#folder-structure -[ref-public]: /reference/data-model/cube#public -[ref-sql-table]: /reference/data-model/cube#sql_table -[ref-join-rel]: /reference/data-model/joins#relationship -[ref-cube-params]: /reference/data-model/cube#parameters -[ref-measure-params]: /reference/data-model/measures#parameters -[ref-dimension-params]: /reference/data-model/dimensions#parameters -[ref-view-params]: /reference/data-model/view#parameters +[ref-public]: /product/data-modeling/reference/cube#public +[ref-sql-table]: /product/data-modeling/reference/cube#sql_table +[ref-join-rel]: /product/data-modeling/reference/joins#relationship +[ref-cube-params]: /product/data-modeling/reference/cube#parameters +[ref-measure-params]: /product/data-modeling/reference/measures#parameters +[ref-dimension-params]: /product/data-modeling/reference/dimensions#parameters +[ref-view-params]: /product/data-modeling/reference/view#parameters [self-yaml]: #yaml-style-guide [self-sql]: #sql-style-guide [wiki-cte]: diff --git a/docs/pages/product/apis-integrations.mdx b/docs/pages/product/apis-integrations.mdx index ab81187931abd..b634609e60aa6 100644 --- a/docs/pages/product/apis-integrations.mdx +++ b/docs/pages/product/apis-integrations.mdx @@ -83,8 +83,8 @@ API][ref-orchestration-api]. [ref-cube-cloud-for-excel]: /product/apis-integrations/microsoft-excel [ref-cube-cloud-for-sheets]: /product/apis-integrations/google-sheets [ref-viz-tools]: /product/configuration/visualization-tools -[ref-hierarchies]: /reference/data-model/hierarchies -[ref-folders]: /reference/data-model/view#folders +[ref-hierarchies]: /product/data-modeling/reference/hierarchies +[ref-folders]: /product/data-modeling/reference/view#folders [ref-powerbi]: /product/configuration/visualization-tools/powerbi [ref-excel]: /product/configuration/visualization-tools/excel [ref-sheets]: /product/configuration/visualization-tools/google-sheets diff --git a/docs/pages/product/apis-integrations/graphql-api.mdx b/docs/pages/product/apis-integrations/graphql-api.mdx index 1cd4319604be9..60d21bec6637e 100644 --- a/docs/pages/product/apis-integrations/graphql-api.mdx +++ b/docs/pages/product/apis-integrations/graphql-api.mdx @@ -222,7 +222,7 @@ to our query as follows: ``` [ref-schema-ref-preagg-granularity]: - /reference/data-model/pre-aggregations#granularity + /product/data-modeling/reference/pre-aggregations#granularity [ref-rest-api]: /product/apis-integrations/rest-api [ref-api-scopes]: /product/apis-integrations/rest-api#configuration-api-scopes [ref-cors]: /product/apis-integrations/rest-api#configuration-cors @@ -234,4 +234,4 @@ to our query as follows: [ref-compare-date-range]: /product/apis-integrations/queries#compare-date-range-query [ref-metadata]: /product/apis-integrations/rest-api/reference#v1meta [ref-pivot-config]: /product/apis-integrations/javascript-sdk/reference/cubejs-client-core#pivotconfig -[ref-segments]: /reference/data-model/segments \ No newline at end of file +[ref-segments]: /product/data-modeling/reference/segments \ No newline at end of file diff --git a/docs/pages/product/apis-integrations/graphql-api/reference.mdx b/docs/pages/product/apis-integrations/graphql-api/reference.mdx index 8c138428ac98b..57690bf5ed8fa 100644 --- a/docs/pages/product/apis-integrations/graphql-api/reference.mdx +++ b/docs/pages/product/apis-integrations/graphql-api/reference.mdx @@ -108,7 +108,7 @@ format, e.g., `America/Los_Angeles`. `asc` | `desc` [ref-schema-ref-preagg-granularity]: - /reference/data-model/pre-aggregations#granularity + /product/data-modeling/reference/pre-aggregations#granularity [ref-graphql-api]: /product/apis-integrations/graphql-api [ref-row-limit]: /product/apis-integrations/queries#row-limit [ref-time-zone]: /product/apis-integrations/queries#time-zone diff --git a/docs/pages/product/apis-integrations/mdx-api.mdx b/docs/pages/product/apis-integrations/mdx-api.mdx index 3bae888137c19..1df35ba6749d1 100644 --- a/docs/pages/product/apis-integrations/mdx-api.mdx +++ b/docs/pages/product/apis-integrations/mdx-api.mdx @@ -176,6 +176,6 @@ Authentication and authorization work the same as for the [SQL API](/product/api [link-mdx]: https://learn.microsoft.com/en-us/analysis-services/multidimensional-models/mdx/multidimensional-model-data-access-analysis-services-multidimensional-data?view=asallproducts-allversions#bkmk_querylang [link-pivottable]: https://support.microsoft.com/en-us/office/create-a-pivottable-to-analyze-worksheet-data-a9a84538-bfe9-40a9-a8e9-f99134456576 [ref-cube-cloud-for-excel]: /product/apis-integrations/microsoft-excel -[ref-hierarchies]: /reference/data-model/hierarchies -[ref-folders]: /reference/data-model/view#folders +[ref-hierarchies]: /product/data-modeling/reference/hierarchies +[ref-folders]: /product/data-modeling/reference/view#folders [ref-views]: /product/data-modeling/concepts#views \ No newline at end of file diff --git a/docs/pages/product/apis-integrations/orchestration-api.mdx b/docs/pages/product/apis-integrations/orchestration-api.mdx index 2cd7ad29ebb70..baf9c2303f5f2 100644 --- a/docs/pages/product/apis-integrations/orchestration-api.mdx +++ b/docs/pages/product/apis-integrations/orchestration-api.mdx @@ -66,7 +66,7 @@ rebuild all pre-aggregations or specify the ones to be rebuilt: data from a particular date range. -[ref-scheduled-refresh]: /reference/data-model/pre-aggregations#scheduled_refresh +[ref-scheduled-refresh]: /product/data-modeling/reference/pre-aggregations#scheduled_refresh [cube-ea]: https://cube.dev/use-cases/embedded-analytics [cube-issbi]: https://cube.dev/use-cases/semantic-layer [cube-rta]: https://cube.dev/use-cases/real-time-analytics diff --git a/docs/pages/product/apis-integrations/queries.mdx b/docs/pages/product/apis-integrations/queries.mdx index cf1243b57ea13..a24019ce4743b 100644 --- a/docs/pages/product/apis-integrations/queries.mdx +++ b/docs/pages/product/apis-integrations/queries.mdx @@ -392,11 +392,11 @@ Additionally, note that ungrouped queries have additional requirements for [ref-rest-api-query-format-options]: /product/apis-integrations/rest-api/query-format#query-properties [ref-rest-api-query-format-options-tdf]: /product/apis-integrations/rest-api/query-format#time-dimensions-format [ref-ref-graphql-api-args]: /product/apis-integrations/graphql-api/reference#cubequeryargs -[ref-sql-utils]: /reference/data-model/context-variables#sql_utils +[ref-sql-utils]: /product/data-modeling/reference/context-variables#sql_utils [ref-matching-preaggs-time-dimensions]: /product/caching/matching-pre-aggregations#matching-time-dimensions [ref-matching-preaggs-ungrouped]: /product/caching/matching-pre-aggregations#matching-ungrouped-queries [ref-pagination-recipe]: /guides/recipes/queries/pagination -[ref-primary-key]: /reference/data-model/dimensions#primary_key +[ref-primary-key]: /product/data-modeling/reference/dimensions#primary_key [ref-conf-allow-ungrouped]: /product/configuration/reference/config#allow_ungrouped_without_primary_key [ref-caching]: /product/caching [ref-query-rewrite]: /product/configuration/reference/config#query_rewrite diff --git a/docs/pages/product/apis-integrations/rest-api.mdx b/docs/pages/product/apis-integrations/rest-api.mdx index aa7a44cc18112..7680373105eea 100644 --- a/docs/pages/product/apis-integrations/rest-api.mdx +++ b/docs/pages/product/apis-integrations/rest-api.mdx @@ -262,7 +262,7 @@ example, the following query will retrieve rows 101-200 from the `Orders` cube: [ref-ref-meta-endpoint]: /product/apis-integrations/rest-api/reference#v1meta [ref-config-cors]: /product/configuration/reference/config#http [ref-schema-ref-cube-refresh-key]: - /reference/data-model/cube#refresh_key + /product/data-modeling/reference/cube#refresh_key [ref-security]: /product/auth [ref-notebooks]: /product/configuration/visualization-tools#notebooks [ref-observable]: /product/configuration/visualization-tools/observable diff --git a/docs/pages/product/apis-integrations/rest-api/query-format.mdx b/docs/pages/product/apis-integrations/rest-api/query-format.mdx index 2df7a18adbc69..979b847749e32 100644 --- a/docs/pages/product/apis-integrations/rest-api/query-format.mdx +++ b/docs/pages/product/apis-integrations/rest-api/query-format.mdx @@ -134,7 +134,7 @@ results after the measure has been calculated. Only some operators are available for measures. For dimensions, the available operators depend on the -[type of the dimension](/reference/data-model/types-and-formats#dimension-types). +[type of the dimension](/product/data-modeling/reference/types-and-formats#dimension-types). ### `equals` @@ -613,13 +613,13 @@ refer to its documentation for more examples. [ref-client-core-resultset-drilldown]: /product/apis-integrations/javascript-sdk/reference/cubejs-client-core#drilldown [ref-schema-ref-preaggs-refreshkey]: - /reference/data-model/pre-aggregations#refresh_key + /product/data-modeling/reference/pre-aggregations#refresh_key [ref-schema-ref-preaggs-refreshkey-every]: - /reference/data-model/pre-aggregations#every + /product/data-modeling/reference/pre-aggregations#every [ref-schema-ref-preaggs-dimensions]: - /reference/data-model/pre-aggregations#dimensions + /product/data-modeling/reference/pre-aggregations#dimensions [ref-schema-ref-preaggs-time-dimension]: - /reference/data-model/pre-aggregations#time_dimension + /product/data-modeling/reference/pre-aggregations#time_dimension [ref-relative-date-range]: #relative-date-range [chrono-website]: https://github.com/wanasit/chrono [ref-row-limit]: /product/apis-integrations/queries#row-limit @@ -629,4 +629,4 @@ refer to its documentation for more examples. [ref-ungrouped-query]: /product/apis-integrations/queries#ungrouped-query [ref-default-order]: /product/apis-integrations/queries#order [ref-default-granularities]: /product/data-modeling/concepts#time-dimensions -[ref-custom-granularities]: /reference/data-model/dimensions#granularities \ No newline at end of file +[ref-custom-granularities]: /product/data-modeling/reference/dimensions#granularities \ No newline at end of file diff --git a/docs/pages/product/apis-integrations/rest-api/real-time-data-fetch.mdx b/docs/pages/product/apis-integrations/rest-api/real-time-data-fetch.mdx index c35b34953466e..f091260e68b8c 100644 --- a/docs/pages/product/apis-integrations/rest-api/real-time-data-fetch.mdx +++ b/docs/pages/product/apis-integrations/rest-api/real-time-data-fetch.mdx @@ -107,5 +107,5 @@ As in the case of a regular data fetch, real-time data fetch obeys provide a desired refresh rate, `refresh_key` should reflect the rate of change of the underlying data set; the querying time should also be much less than the desired refresh rate. Please use the -[`every`](/reference/data-model/cube#refresh_key) parameter to adjust +[`every`](/product/data-modeling/reference/cube#refresh_key) parameter to adjust the refresh interval. diff --git a/docs/pages/product/apis-integrations/sql-api/query-format.mdx b/docs/pages/product/apis-integrations/sql-api/query-format.mdx index f93a19a4197ed..526b5dfeb5e85 100644 --- a/docs/pages/product/apis-integrations/sql-api/query-format.mdx +++ b/docs/pages/product/apis-integrations/sql-api/query-format.mdx @@ -61,17 +61,17 @@ correspond to [measure types][ref-measure-types]: | Measure type in Cube | Aggregate function in an aggregated query | | --- | --- | -| [`avg`](/reference/data-model/types-and-formats#avg) | `MEASURE` or `AVG` | -| [`boolean`](/reference/data-model/types-and-formats#boolean) | `MEASURE` | -| [`count`](/reference/data-model/types-and-formats#count) | `MEASURE` or `COUNT` | -| [`count_distinct`](/reference/data-model/types-and-formats#count_distinct) | `MEASURE` or `COUNT(DISTINCT …)` | -| [`count_distinct_approx`](/reference/data-model/types-and-formats#count_distinct_approx) | `MEASURE` or `COUNT(DISTINCT …)` | -| [`max`](/reference/data-model/types-and-formats#max) | `MEASURE` or `MAX` | -| [`min`](/reference/data-model/types-and-formats#min) | `MEASURE` or `MIN` | -| [`number`](/reference/data-model/types-and-formats#number) | `MEASURE` or any other function from this table | -| [`string`](/reference/data-model/types-and-formats#string) | `MEASURE` or `STRING_AGG` | -| [`sum`](/reference/data-model/types-and-formats#sum) | `MEASURE` or `SUM` | -| [`time`](/reference/data-model/types-and-formats#time) | `MEASURE` or `MAX` or `MIN` | +| [`avg`](/product/data-modeling/reference/types-and-formats#avg) | `MEASURE` or `AVG` | +| [`boolean`](/product/data-modeling/reference/types-and-formats#boolean) | `MEASURE` | +| [`count`](/product/data-modeling/reference/types-and-formats#count) | `MEASURE` or `COUNT` | +| [`count_distinct`](/product/data-modeling/reference/types-and-formats#count_distinct) | `MEASURE` or `COUNT(DISTINCT …)` | +| [`count_distinct_approx`](/product/data-modeling/reference/types-and-formats#count_distinct_approx) | `MEASURE` or `COUNT(DISTINCT …)` | +| [`max`](/product/data-modeling/reference/types-and-formats#max) | `MEASURE` or `MAX` | +| [`min`](/product/data-modeling/reference/types-and-formats#min) | `MEASURE` or `MIN` | +| [`number`](/product/data-modeling/reference/types-and-formats#number) | `MEASURE` or any other function from this table | +| [`string`](/product/data-modeling/reference/types-and-formats#string) | `MEASURE` or `STRING_AGG` | +| [`sum`](/product/data-modeling/reference/types-and-formats#sum) | `MEASURE` or `SUM` | +| [`time`](/product/data-modeling/reference/types-and-formats#time) | `MEASURE` or `MAX` or `MIN` | @@ -438,7 +438,7 @@ As you can see, the sorting operation is done after the regular query and the pr [ref-queries-wpd]: /product/apis-integrations/queries#query-with-pushdown [ref-ungrouped-queries]: /product/apis-integrations/queries#ungrouped-query [ref-data-model-concepts]: /product/data-modeling/concepts -[ref-measure-types]: /reference/data-model/types-and-formats#measure-types +[ref-measure-types]: /product/data-modeling/reference/types-and-formats#measure-types [ref-query-default-limit]: /product/apis-integrations/queries#row-limit [ref-ref-sql-api]: /product/apis-integrations/sql-api/reference diff --git a/docs/pages/product/auth/context.mdx b/docs/pages/product/auth/context.mdx index 6fcdd23449f77..6a694a8069235 100644 --- a/docs/pages/product/auth/context.mdx +++ b/docs/pages/product/auth/context.mdx @@ -288,8 +288,8 @@ of your Cube Cloud deployment and using the Enable Cloud Auth Integration diff --git a/docs/pages/product/configuration/multitenancy.mdx b/docs/pages/product/configuration/multitenancy.mdx index 1a2af8674f650..7bad242f647a7 100644 --- a/docs/pages/product/configuration/multitenancy.mdx +++ b/docs/pages/product/configuration/multitenancy.mdx @@ -389,5 +389,5 @@ input. /product/configuration/reference/config#scheduled_refresh_timezones [ref-config-security-ctx]: /product/auth/context [ref-security]: /product/auth -[ref-cube-datasource]: /reference/data-model/cube#data_source -[ref-cube-security-ctx]: /reference/data-model/context-variables#compile_context +[ref-cube-datasource]: /product/data-modeling/reference/cube#data_source +[ref-cube-security-ctx]: /product/data-modeling/reference/context-variables#compile_context diff --git a/docs/pages/product/configuration/reference/_meta.js b/docs/pages/product/configuration/reference/_meta.js index 8ea58bba17572..1ebae9f643406 100644 --- a/docs/pages/product/configuration/reference/_meta.js +++ b/docs/pages/product/configuration/reference/_meta.js @@ -1,4 +1,4 @@ module.exports = { - "config": "Configuration options", - "environment-variables": "Environment variables" + "environment-variables": "Environment variables", + "config": "Configuration options" } \ No newline at end of file diff --git a/docs/pages/product/configuration/reference/config.mdx b/docs/pages/product/configuration/reference/config.mdx index 1dce3800e7904..2465b449007f2 100644 --- a/docs/pages/product/configuration/reference/config.mdx +++ b/docs/pages/product/configuration/reference/config.mdx @@ -1457,19 +1457,19 @@ If not defined, Cube will lookup for environment variable [ref-rest-api]: /product/apis-integrations/rest-api [ref-sql-api]: /product/apis-integrations/sql-api [ref-pre-aggregations-refresh-key]: - /reference/data-model/pre-aggregations#refresh_key + /product/data-modeling/reference/pre-aggregations#refresh_key [ref-schema-cube-ref-refresh-key]: - /reference/data-model/cube#refresh_key -[ref-schema-cube-ref-ctx-sec-ctx]: /reference/data-model/context-variables#security_context + /product/data-modeling/reference/cube#refresh_key +[ref-schema-cube-ref-ctx-sec-ctx]: /product/data-modeling/reference/context-variables#security_context [ref-schema-ref-preaggs-rollup]: - /reference/data-model/pre-aggregations#rollup + /product/data-modeling/reference/pre-aggregations#rollup [ref-sec]: /product/auth [ref-sec-ctx]: /product/auth/context [self-opts-checkauth]: #checkauth [self-pre-aggregations-schema]: #pre_aggregations_schema [self-opts-ctx-to-appid]: #context_to_app_id [self-driver-factory]: #driver_factory -[ref-schema-ref-datasource]: /reference/data-model/cube#data_source +[ref-schema-ref-datasource]: /product/data-modeling/reference/cube#data_source [self-repofactory]: #repository_factory [self-schemafilerepo]: #schema_file_repository [self-schemapath]: #schema_path diff --git a/docs/pages/product/configuration/reference/environment-variables.mdx b/docs/pages/product/configuration/reference/environment-variables.mdx index 09d3d07360895..2d9e56e19d60f 100644 --- a/docs/pages/product/configuration/reference/environment-variables.mdx +++ b/docs/pages/product/configuration/reference/environment-variables.mdx @@ -1746,6 +1746,6 @@ The port for a Cube deployment to listen to API connections on. [ref-sql-api-streaming]: /product/apis-integrations/sql-api#streaming [ref-row-limit]: /product/apis-integrations/queries#row-limit [mysql-server-tz-support]: https://dev.mysql.com/doc/refman/8.4/en/time-zone-support.html -[ref-schema-ref-preagg-allownonstrict]: /reference/data-model/pre-aggregations#allow_non_strict_date_range_match +[ref-schema-ref-preagg-allownonstrict]: /product/data-modeling/reference/pre-aggregations#allow_non_strict_date_range_match [link-tesseract]: https://cube.dev/blog/introducing-next-generation-data-modeling-engine [ref-multi-stage-calculations]: /product/data-modeling/concepts/multi-stage-calculations \ No newline at end of file diff --git a/docs/pages/product/configuration/visualization-tools/superset.mdx b/docs/pages/product/configuration/visualization-tools/superset.mdx index d0d06a477704c..3921b270cb02d 100644 --- a/docs/pages/product/configuration/visualization-tools/superset.mdx +++ b/docs/pages/product/configuration/visualization-tools/superset.mdx @@ -114,13 +114,13 @@ We can select the `COUNT(*)` as a metric and `created_at` as the time column with a time grain of `month`. The `COUNT(*)` aggregate function is being mapped to a measure of type -[count](/reference/data-model/types-and-formats#count) in Cube's +[count](/product/data-modeling/reference/types-and-formats#count) in Cube's **Orders** data model file. [ref-getting-started]: /product/getting-started/cloud [ref-schema-ref-preagg-allownonstrict]: - /reference/data-model/pre-aggregations#allow_non_strict_date_range_match + /product/data-modeling/reference/pre-aggregations#allow_non_strict_date_range_match [superset]: https://superset.apache.org/ [superset-docs-installation-docker]: https://superset.apache.org/docs/installation/installing-superset-using-docker-compose diff --git a/docs/pages/product/data-modeling/_meta.js b/docs/pages/product/data-modeling/_meta.js index 279a8a6d109e1..7540fc627291d 100644 --- a/docs/pages/product/data-modeling/_meta.js +++ b/docs/pages/product/data-modeling/_meta.js @@ -2,5 +2,6 @@ module.exports = { "overview": "Overview", "concepts": "Concepts", "syntax": "Syntax", - "dynamic": "Dynamic data models" + "dynamic": "Dynamic data models", + "reference": "Reference" } \ No newline at end of file diff --git a/docs/pages/product/data-modeling/concepts.mdx b/docs/pages/product/data-modeling/concepts.mdx index 16454e7a27867..9322ed82f8caa 100644 --- a/docs/pages/product/data-modeling/concepts.mdx +++ b/docs/pages/product/data-modeling/concepts.mdx @@ -312,10 +312,10 @@ data types in SQL are mapped to dimension types in the following way: | Data type in SQL | Dimension type in Cube | | --- | --- | -| `timestamp`, `date`, `time` | [`time`](/reference/data-model/types-and-formats#time-1) | -| `text`, `varchar` | [`string`](/reference/data-model/types-and-formats#string-1) | -| `integer`, `bigint`, `decimal` | [`number`](/reference/data-model/types-and-formats#number-1) | -| `boolean` | [`boolean`](/reference/data-model/types-and-formats#boolean-1) | +| `timestamp`, `date`, `time` | [`time`](/product/data-modeling/reference/types-and-formats#time-1) | +| `text`, `varchar` | [`string`](/product/data-modeling/reference/types-and-formats#string-1) | +| `integer`, `bigint`, `decimal` | [`number`](/product/data-modeling/reference/types-and-formats#number-1) | +| `boolean` | [`boolean`](/product/data-modeling/reference/types-and-formats#boolean-1) | @@ -484,17 +484,17 @@ aggregate functions in SQL are mapped to measure types in the following way: | Aggregate function in SQL | Measure type in Cube | | --- | --- | -| `AVG` | [`avg`](/reference/data-model/types-and-formats#avg) | -| `BOOL_AND`, `BOOL_OR` | [`boolean`](/reference/data-model/types-and-formats#boolean) | -| `COUNT` | [`count`](/reference/data-model/types-and-formats#count) | -| `COUNT(DISTINCT …)` | [`count_distinct`](/reference/data-model/types-and-formats#count_distinct) | -| `APPROX_COUNT_DISTINCT` | [`count_distinct_approx`](/reference/data-model/types-and-formats#count_distinct_approx) | -| `MAX` | [`max`](/reference/data-model/types-and-formats#max) | -| `MIN` | [`min`](/reference/data-model/types-and-formats#min) | -| `PERCENTILE_CONT`, `MEDIAN` | [`number`](/reference/data-model/types-and-formats#number) | -| `STRING_AGG`, `LISTAGG` | [`string`](/reference/data-model/types-and-formats#string) | -| `SUM` | [`sum`](/reference/data-model/types-and-formats#sum) | -| Any function returning a timestamp, e.g., `MAX(time)` | [`time`](/reference/data-model/types-and-formats#time) | +| `AVG` | [`avg`](/product/data-modeling/reference/types-and-formats#avg) | +| `BOOL_AND`, `BOOL_OR` | [`boolean`](/product/data-modeling/reference/types-and-formats#boolean) | +| `COUNT` | [`count`](/product/data-modeling/reference/types-and-formats#count) | +| `COUNT(DISTINCT …)` | [`count_distinct`](/product/data-modeling/reference/types-and-formats#count_distinct) | +| `APPROX_COUNT_DISTINCT` | [`count_distinct_approx`](/product/data-modeling/reference/types-and-formats#count_distinct_approx) | +| `MAX` | [`max`](/product/data-modeling/reference/types-and-formats#max) | +| `MIN` | [`min`](/product/data-modeling/reference/types-and-formats#min) | +| `PERCENTILE_CONT`, `MEDIAN` | [`number`](/product/data-modeling/reference/types-and-formats#number) | +| `STRING_AGG`, `LISTAGG` | [`string`](/product/data-modeling/reference/types-and-formats#string) | +| `SUM` | [`sum`](/product/data-modeling/reference/types-and-formats#sum) | +| Any function returning a timestamp, e.g., `MAX(time)` | [`time`](/product/data-modeling/reference/types-and-formats#time) | @@ -513,11 +513,11 @@ matching][ref-matching-preaggs]. Additivity of a measure depends on its [type](#measure-types). Only measures with the following types are considered *additive*: -[`count`](/reference/data-model/types-and-formats#count), -[`count_distinct_approx`](/reference/data-model/types-and-formats#count_distinct_approx), -[`min`](/reference/data-model/types-and-formats#min), -[`max`](/reference/data-model/types-and-formats#max), -[`sum`](/reference/data-model/types-and-formats#sum). +[`count`](/product/data-modeling/reference/types-and-formats#count), +[`count_distinct_approx`](/product/data-modeling/reference/types-and-formats#count_distinct_approx), +[`min`](/product/data-modeling/reference/types-and-formats#min), +[`max`](/product/data-modeling/reference/types-and-formats#max), +[`sum`](/product/data-modeling/reference/types-and-formats#sum). Measures with all other types are considered *non-additive*. #### Example @@ -772,20 +772,20 @@ See the reference documentaton for the full list of pre-aggregation [ref-caching-preaggs-intro]: /product/caching/getting-started-pre-aggregations [ref-caching-use-preaggs-partition-time]: /product/caching/using-pre-aggregations#partitioning -[ref-ref-dimension-types]: /reference/data-model/types-and-formats#dimension-types -[ref-ref-measure-types]: /reference/data-model/types-and-formats#measure-types -[ref-ref-join-types]: /reference/data-model/joins#relationship -[ref-schema-ref-sql]: /reference/data-model/cube#sql -[ref-schema-ref-sql-table]: /reference/data-model/cube#sql_table +[ref-ref-dimension-types]: /product/data-modeling/reference/types-and-formats#dimension-types +[ref-ref-measure-types]: /product/data-modeling/reference/types-and-formats#measure-types +[ref-ref-join-types]: /product/data-modeling/reference/joins#relationship +[ref-schema-ref-sql]: /product/data-modeling/reference/cube#sql +[ref-schema-ref-sql-table]: /product/data-modeling/reference/cube#sql_table [ref-tutorial-incremental-preagg]: - /reference/data-model/pre-aggregations#incremental -[ref-cubes]: /reference/data-model/cube -[ref-views]: /reference/data-model/view -[ref-dimensions]: /reference/data-model/dimensions -[ref-measures]: /reference/data-model/measures -[ref-joins]: /reference/data-model/joins -[ref-segments]: /reference/data-model/segments -[ref-preaggs]: /reference/data-model/pre-aggregations + /product/data-modeling/reference/pre-aggregations#incremental +[ref-cubes]: /product/data-modeling/reference/cube +[ref-views]: /product/data-modeling/reference/view +[ref-dimensions]: /product/data-modeling/reference/dimensions +[ref-measures]: /product/data-modeling/reference/measures +[ref-joins]: /product/data-modeling/reference/joins +[ref-segments]: /product/data-modeling/reference/segments +[ref-preaggs]: /product/data-modeling/reference/pre-aggregations [ref-extending-cubes]: /product/data-modeling/concepts/code-reusability-extending-cubes [ref-polymorphic-cubes]: /product/data-modeling/concepts/polymorphic-cubes [ref-data-blending]: /product/data-modeling/concepts/data-blending @@ -802,12 +802,12 @@ See the reference documentaton for the full list of pre-aggregation [ref-calculated-measures]: /product/data-modeling/overview#4-using-calculated-measures [ref-multitenancy]: /product/configuration/advanced/multitenancy [ref-pmc]: /product/deployment/cloud/deployment-types#production-multi-cluster -[ref-ref-time-dimensions]: /reference/data-model/types-and-formats#time-1 -[ref-ref-dimension-granularities]: /reference/data-model/dimensions#granularities -[ref-ref-primary-key]: /reference/data-model/dimensions#primary_key +[ref-ref-time-dimensions]: /product/data-modeling/reference/types-and-formats#time-1 +[ref-ref-dimension-granularities]: /product/data-modeling/reference/dimensions#granularities +[ref-ref-primary-key]: /product/data-modeling/reference/dimensions#primary_key [ref-custom-granularity-recipe]: /guides/recipes/data-modeling/custom-granularity [ref-proxy-granularity]: /product/data-modeling/concepts/calculated-members#time-dimension-granularity [ref-mls]: /product/auth/member-level-security -[ref-ref-hierarchies]: /reference/data-model/hierarchies -[ref-ref-folders]: /reference/data-model/view#folders +[ref-ref-hierarchies]: /product/data-modeling/reference/hierarchies +[ref-ref-folders]: /product/data-modeling/reference/view#folders [ref-multi-stage-calculations]: /product/data-modeling/concepts/multi-stage-calculations \ No newline at end of file diff --git a/docs/pages/product/data-modeling/concepts/calculated-members.mdx b/docs/pages/product/data-modeling/concepts/calculated-members.mdx index b57d515bf681e..c1e6b14be9cbf 100644 --- a/docs/pages/product/data-modeling/concepts/calculated-members.mdx +++ b/docs/pages/product/data-modeling/concepts/calculated-members.mdx @@ -555,15 +555,15 @@ GROUP BY 1, 2 [ref-references]: /product/data-modeling/syntax#references [ref-sql-expressions]: /product/data-modeling/syntax#sql-expressions [ref-joins]: /product/data-modeling/concepts/working-with-joins -[ref-ref-subquery]: /reference/data-model/dimensions#sub_query -[ref-schema-ref-measures]: /reference/data-model/measures -[ref-schema-ref-dimensions]: /reference/data-model/dimensions -[ref-schema-ref-joins]: /reference/data-model/joins +[ref-ref-subquery]: /product/data-modeling/reference/dimensions#sub_query +[ref-schema-ref-measures]: /product/data-modeling/reference/measures +[ref-schema-ref-dimensions]: /product/data-modeling/reference/dimensions +[ref-schema-ref-joins]: /product/data-modeling/reference/joins [ref-decomposition-recipe]: /guides/recipes/query-acceleration/non-additivity#decomposing-into-a-formula-with-additive-measures [ref-nested-aggregates-recipe]: /guides/recipes/data-modeling/nested-aggregates [ref-non-additive]: /product/data-modeling/concepts#measure-additivity [link-postgres-division]: https://www.postgresql.org/docs/current/functions-math.html#FUNCTIONS-MATH [wiki-correlated-subquery]: https://en.wikipedia.org/wiki/Correlated_subquery -[ref-time-dimension]: /reference/data-model/types-and-formats#time-1 +[ref-time-dimension]: /product/data-modeling/reference/types-and-formats#time-1 [ref-default-granularities]: /product/data-modeling/concepts#time-dimensions -[ref-custom-granularities]: /reference/data-model/dimensions#granularities \ No newline at end of file +[ref-custom-granularities]: /product/data-modeling/reference/dimensions#granularities \ No newline at end of file diff --git a/docs/pages/product/data-modeling/concepts/code-reusability-extending-cubes.mdx b/docs/pages/product/data-modeling/concepts/code-reusability-extending-cubes.mdx index b6978278069fe..84d296d122a79 100644 --- a/docs/pages/product/data-modeling/concepts/code-reusability-extending-cubes.mdx +++ b/docs/pages/product/data-modeling/concepts/code-reusability-extending-cubes.mdx @@ -202,7 +202,7 @@ cube(`base_events`, { [ref-schema-concepts-cubes]: /product/data-modeling/concepts#cubes -[ref-cube-extends]: /reference/data-model/cube#extends -[ref-view-extends]: /reference/data-model/view#extends -[ref-schema-ref-cube-filter-params]: /reference/data-model/cube#filter-params +[ref-cube-extends]: /product/data-modeling/reference/cube#extends +[ref-view-extends]: /product/data-modeling/reference/view#extends +[ref-schema-ref-cube-filter-params]: /product/data-modeling/reference/cube#filter-params [ref-cube-variable]: /product/data-modeling/syntax#cube-variable \ No newline at end of file diff --git a/docs/pages/product/data-modeling/concepts/multi-stage-calculations.mdx b/docs/pages/product/data-modeling/concepts/multi-stage-calculations.mdx index 9755857933266..9950969194adb 100644 --- a/docs/pages/product/data-modeling/concepts/multi-stage-calculations.mdx +++ b/docs/pages/product/data-modeling/concepts/multi-stage-calculations.mdx @@ -458,5 +458,5 @@ Query and result: [link-tesseract]: https://cube.dev/blog/introducing-next-generation-data-modeling-engine [ref-measures]: /product/data-modeling/concepts#measures [ref-dimensions]: /product/data-modeling/concepts#dimensions -[ref-rolling-window]: /reference/data-model/measures#rolling_window +[ref-rolling-window]: /product/data-modeling/reference/measures#rolling_window [link-cte]: https://en.wikipedia.org/wiki/Hierarchical_and_recursive_queries_in_SQL#Common_table_expression \ No newline at end of file diff --git a/docs/pages/product/data-modeling/concepts/polymorphic-cubes.mdx b/docs/pages/product/data-modeling/concepts/polymorphic-cubes.mdx index 9a5cd407a51e1..9fcf4bfde2c87 100644 --- a/docs/pages/product/data-modeling/concepts/polymorphic-cubes.mdx +++ b/docs/pages/product/data-modeling/concepts/polymorphic-cubes.mdx @@ -165,6 +165,6 @@ cube(`lessons`, { [ref-schema-advanced-extend]: /product/data-modeling/concepts/code-reusability-extending-cubes -[ref-schema-ref-cubes-extends]: /reference/data-model/cube#extends +[ref-schema-ref-cubes-extends]: /product/data-modeling/reference/cube#extends [ref-cube-sql-func]: /product/data-modeling/syntax#cubesql-function \ No newline at end of file diff --git a/docs/pages/product/data-modeling/concepts/working-with-joins.mdx b/docs/pages/product/data-modeling/concepts/working-with-joins.mdx index 5582446b5570e..625dfcb359776 100644 --- a/docs/pages/product/data-modeling/concepts/working-with-joins.mdx +++ b/docs/pages/product/data-modeling/concepts/working-with-joins.mdx @@ -1045,9 +1045,9 @@ also shows that you can reach `companies` from `cubes` by going left to right. -[ref-schema-ref-view]: /reference/data-model/view -[ref-schema-ref-joins]: /reference/data-model/joins -[ref-schema-ref-joins-relationship]: /reference/data-model/joins#relationship +[ref-schema-ref-view]: /product/data-modeling/reference/view +[ref-schema-ref-joins]: /product/data-modeling/reference/joins +[ref-schema-ref-joins-relationship]: /product/data-modeling/reference/joins#relationship [self-many-to-many-no-assoc-table]: #many-to-many-relationship-without-an-associative-table [self-join-direction]: /product/data-modeling/concepts/working-with-joins#directions-of-joins [ref-visual-model]: /product/workspace/visual-model \ No newline at end of file diff --git a/docs/pages/product/data-modeling/dynamic/javascript.mdx b/docs/pages/product/data-modeling/dynamic/javascript.mdx index e344cb5395806..893390ce5f124 100644 --- a/docs/pages/product/data-modeling/dynamic/javascript.mdx +++ b/docs/pages/product/data-modeling/dynamic/javascript.mdx @@ -227,7 +227,7 @@ data models, as well as ensuring the corresponding database drivers are set up w [`driverFactory()`][ref-config-driverfactory] in your [`cube.js` configuration file][ref-config]. -[ref-schema-datasource]: /reference/data-model/cube#data_source +[ref-schema-datasource]: /product/data-modeling/reference/cube#data_source [ref-config-driverfactory]: /product/configuration/reference/config#driverfactory [ref-config]: /product/configuration/reference/config diff --git a/docs/pages/product/data-modeling/overview.mdx b/docs/pages/product/data-modeling/overview.mdx index 1f7a4f29abebd..58b87d7fc04d7 100644 --- a/docs/pages/product/data-modeling/overview.mdx +++ b/docs/pages/product/data-modeling/overview.mdx @@ -298,10 +298,10 @@ As with other measures, `paying_percentage` can be used with dimensions. 3. [Data model reference documentation][ref-schema-cube] [ref-backend-restapi]: /product/apis-integrations/rest-api/reference -[ref-schema-cube]: /reference/data-model/cube -[ref-schema-measures]: /reference/data-model/measures -[ref-schema-dimensions]: /reference/data-model/dimensions -[ref-schema-types-formats]: /reference/data-model/types-and-formats +[ref-schema-cube]: /product/data-modeling/reference/cube +[ref-schema-measures]: /product/data-modeling/reference/measures +[ref-schema-dimensions]: /product/data-modeling/reference/dimensions +[ref-schema-types-formats]: /product/data-modeling/reference/types-and-formats [ref-backend-query-format]: /product/apis-integrations/rest-api/query-format [ref-demo-deployment]: /product/deployment/cloud/deployments#demo-deployments [ref-apis]: /product/apis-integrations diff --git a/docs/pages/reference/data-model/_meta.js b/docs/pages/product/data-modeling/reference/_meta.js similarity index 100% rename from docs/pages/reference/data-model/_meta.js rename to docs/pages/product/data-modeling/reference/_meta.js diff --git a/docs/pages/reference/data-model/context-variables.mdx b/docs/pages/product/data-modeling/reference/context-variables.mdx similarity index 99% rename from docs/pages/reference/data-model/context-variables.mdx rename to docs/pages/product/data-modeling/reference/context-variables.mdx index 4ffaeda77d9a8..d5a09d5d0b7a3 100644 --- a/docs/pages/reference/data-model/context-variables.mdx +++ b/docs/pages/product/data-modeling/reference/context-variables.mdx @@ -814,7 +814,7 @@ cube(`orders`, { [ref-recipe-control-access-cubes-views]: /guides/recipes/access-control/controlling-access-to-cubes-and-views [ref-sec-ctx]: /product/auth/context -[ref-ref-cubes]: /reference/data-model/cube +[ref-ref-cubes]: /product/data-modeling/reference/cube [ref-syntax-references]: /product/data-modeling/syntax#references [ref-dynamic-data-models]: /product/data-modeling/dynamic/jinja [ref-query-filter]: /product/apis-integrations/rest-api/query-format#query-properties diff --git a/docs/pages/reference/data-model/cube.mdx b/docs/pages/product/data-modeling/reference/cube.mdx similarity index 96% rename from docs/pages/reference/data-model/cube.mdx rename to docs/pages/product/data-modeling/reference/cube.mdx index ec0274edb41b0..6fa96614e9f2c 100644 --- a/docs/pages/reference/data-model/cube.mdx +++ b/docs/pages/product/data-modeling/reference/cube.mdx @@ -635,12 +635,12 @@ The `access_policy` parameter is used to configure [data access policies][ref-re [ref-naming]: /product/data-modeling/syntax#naming [ref-playground]: /product/workspace/playground [ref-apis]: /product/apis-integrations -[ref-ref-measures]: /reference/data-model/measures -[ref-ref-dimensions]: /reference/data-model/dimensions -[ref-ref-hierarchies]: /reference/data-model/hierarchies -[ref-ref-segments]: /reference/data-model/segments -[ref-ref-joins]: /reference/data-model/joins -[ref-ref-pre-aggs]: /reference/data-model/pre-aggregations -[ref-ref-dap]: /reference/data-model/data-access-policies +[ref-ref-measures]: /product/data-modeling/reference/measures +[ref-ref-dimensions]: /product/data-modeling/reference/dimensions +[ref-ref-hierarchies]: /product/data-modeling/reference/hierarchies +[ref-ref-segments]: /product/data-modeling/reference/segments +[ref-ref-joins]: /product/data-modeling/reference/joins +[ref-ref-pre-aggs]: /product/data-modeling/reference/pre-aggregations +[ref-ref-dap]: /product/data-modeling/reference/data-access-policies [ref-syntax-cube-sql]: /product/data-modeling/syntax#cubesql-function [ref-extension]: /product/data-modeling/concepts/code-reusability-extending-cubes \ No newline at end of file diff --git a/docs/pages/reference/data-model/data-access-policies.mdx b/docs/pages/product/data-modeling/reference/data-access-policies.mdx similarity index 98% rename from docs/pages/reference/data-model/data-access-policies.mdx rename to docs/pages/product/data-modeling/reference/data-access-policies.mdx index a5f1fe26755cd..e965f571737cb 100644 --- a/docs/pages/reference/data-model/data-access-policies.mdx +++ b/docs/pages/product/data-modeling/reference/data-access-policies.mdx @@ -341,8 +341,8 @@ configured via the `query_rewrite` configuration option. See [row-level access][ learn more about policy evaluation. -[ref-ref-cubes]: /reference/data-model/cube -[ref-ref-views]: /reference/data-model/view +[ref-ref-cubes]: /product/data-modeling/reference/cube +[ref-ref-views]: /product/data-modeling/reference/view [ref-dap]: /product/auth/data-access-policies [ref-dap-roles]: /product/auth/data-access-policies#data-access-roles [ref-dap-mls]: /product/auth/data-access-policies#member-level-access diff --git a/docs/pages/reference/data-model/dimensions.mdx b/docs/pages/product/data-modeling/reference/dimensions.mdx similarity index 97% rename from docs/pages/reference/data-model/dimensions.mdx rename to docs/pages/product/data-modeling/reference/dimensions.mdx index 2941b8dedf5a7..4f26472a6bbce 100644 --- a/docs/pages/reference/data-model/dimensions.mdx +++ b/docs/pages/product/data-modeling/reference/dimensions.mdx @@ -701,19 +701,19 @@ cube(`orders`, { -[ref-ref-cubes]: /reference/data-model/cube -[ref-schema-ref-joins]: /reference/data-model/joins +[ref-ref-cubes]: /product/data-modeling/reference/cube +[ref-schema-ref-joins]: /product/data-modeling/reference/joins [ref-subquery]: /product/data-modeling/concepts/calculated-members#subquery-dimensions [self-subquery]: #sub-query [ref-naming]: /product/data-modeling/syntax#naming [ref-schema-ref-dims-types]: - /reference/data-model/types-and-formats#dimension-types + /product/data-modeling/reference/types-and-formats#dimension-types [ref-schema-ref-dims-formats]: - /reference/data-model/types-and-formats#dimension-formats + /product/data-modeling/reference/types-and-formats#dimension-formats [ref-playground]: /product/workspace/playground [ref-apis]: /product/apis-integrations -[ref-time-dimensions]: /reference/data-model/types-and-formats#time-1 +[ref-time-dimensions]: /product/data-modeling/reference/types-and-formats#time-1 [link-date-time-string]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#date_time_string_format [ref-custom-granularity-recipe]: /guides/recipes/data-modeling/custom-granularity -[ref-ref-hierarchies]: /reference/data-model/hierarchies +[ref-ref-hierarchies]: /product/data-modeling/reference/hierarchies [ref-data-sources]: /product/configuration/data-sources \ No newline at end of file diff --git a/docs/pages/reference/data-model/hierarchies.mdx b/docs/pages/product/data-modeling/reference/hierarchies.mdx similarity index 97% rename from docs/pages/reference/data-model/hierarchies.mdx rename to docs/pages/product/data-modeling/reference/hierarchies.mdx index 8f7313ecd9245..7637548f3eb2f 100644 --- a/docs/pages/reference/data-model/hierarchies.mdx +++ b/docs/pages/product/data-modeling/reference/hierarchies.mdx @@ -303,8 +303,8 @@ cubes: -[ref-ref-cubes]: /reference/data-model/cube -[ref-ref-dimensions]: /reference/data-model/dimensions +[ref-ref-cubes]: /product/data-modeling/reference/cube +[ref-ref-dimensions]: /product/data-modeling/reference/dimensions [ref-naming]: /product/data-modeling/syntax#naming [ref-apis-support]: /product/apis-integrations#data-modeling [ref-playground]: /product/workspace/playground#viewing-the-data-model diff --git a/docs/pages/reference/data-model/joins.mdx b/docs/pages/product/data-modeling/reference/joins.mdx similarity index 99% rename from docs/pages/reference/data-model/joins.mdx rename to docs/pages/product/data-modeling/reference/joins.mdx index 4a43c808f8976..bdc7df75010a9 100644 --- a/docs/pages/reference/data-model/joins.mdx +++ b/docs/pages/product/data-modeling/reference/joins.mdx @@ -658,12 +658,12 @@ Cube makes join trees as predictable and stable as possible, but this isn't guar Please use views to address join predictability and stability. -[ref-ref-cubes]: /reference/data-model/cube +[ref-ref-cubes]: /product/data-modeling/reference/cube [ref-restapi-query-filter-op-set]: /product/apis-integrations/rest-api/query-format#set [ref-schema-fundamentals-join-dir]: /product/data-modeling/concepts/working-with-joins#directions-of-joins -[ref-schema-cube-sql]: /reference/data-model/cube#sql +[ref-schema-cube-sql]: /product/data-modeling/reference/cube#sql [ref-schema-data-blenging]: /product/data-modeling/concepts/data-blending#data-blending [ref-naming]: /product/data-modeling/syntax#naming diff --git a/docs/pages/reference/data-model/measures.mdx b/docs/pages/product/data-modeling/reference/measures.mdx similarity index 98% rename from docs/pages/reference/data-model/measures.mdx rename to docs/pages/product/data-modeling/reference/measures.mdx index 1e933da8176a4..717c0ea6fc2ad 100644 --- a/docs/pages/reference/data-model/measures.mdx +++ b/docs/pages/product/data-modeling/reference/measures.mdx @@ -538,11 +538,11 @@ You can create calculated measures from several joined cubes. In this case, a join will be created automatically. -[ref-ref-cubes]: /reference/data-model/cube +[ref-ref-cubes]: /product/data-modeling/reference/cube [ref-schema-ref-types-formats-measures-types]: - /reference/data-model/types-and-formats#measure-types + /product/data-modeling/reference/types-and-formats#measure-types [ref-schema-ref-types-formats-measures-formats]: - /reference/data-model/types-and-formats#measure-formats + /product/data-modeling/reference/types-and-formats#measure-formats [ref-drilldowns]: /guides/recipes/data-exploration/drilldowns [ref-naming]: /product/data-modeling/syntax#naming [ref-playground]: /product/workspace/playground diff --git a/docs/pages/reference/data-model/pre-aggregations.mdx b/docs/pages/product/data-modeling/reference/pre-aggregations.mdx similarity index 98% rename from docs/pages/reference/data-model/pre-aggregations.mdx rename to docs/pages/product/data-modeling/reference/pre-aggregations.mdx index 511b9d20a326c..9fcd0404588ee 100644 --- a/docs/pages/reference/data-model/pre-aggregations.mdx +++ b/docs/pages/product/data-modeling/reference/pre-aggregations.mdx @@ -1734,18 +1734,18 @@ cubes: [ref-config-downstream-superset]: /product/configuration/visualization-tools/superset [ref-config-driverfactory]: /config/#driver-factory -[ref-cube-refreshkey]: /reference/data-model/cube#refresh_key +[ref-cube-refreshkey]: /product/data-modeling/reference/cube#refresh_key [ref-production-checklist-refresh]: /product/deployment/production-checklist#set-up-refresh-worker [ref-recipe-funnels]: /guides/recipes/analytics/funnels -[ref-sqlalias]: /reference/data-model/cube#sql_alias +[ref-sqlalias]: /product/data-modeling/reference/cube#sql_alias [ref-schema-ref-cube-datasource]: - /reference/data-model/cube#data_source -[ref-schema-dimensions]: /reference/data-model/dimensions -[ref-schema-measures]: /reference/data-model/measures -[ref-schema-segments]: /reference/data-model/segments + /product/data-modeling/reference/cube#data_source +[ref-schema-dimensions]: /product/data-modeling/reference/dimensions +[ref-schema-measures]: /product/data-modeling/reference/measures +[ref-schema-segments]: /product/data-modeling/reference/segments [ref-schema-types-dim-time]: - /reference/data-model/types-and-formats#time-1 + /product/data-modeling/reference/types-and-formats#time-1 [ref-naming]: /product/data-modeling/syntax#naming [self-granularity]: #granularity [self-incremental]: #incremental @@ -1765,7 +1765,7 @@ cubes: [ref-indexes]: /product/caching/using-pre-aggregations#using-indexes [ref-aggregating-indexes]: /product/caching/using-pre-aggregations#aggregating-indexes [ref-pre-aggs]: /product/caching/using-pre-aggregations -[ref-ref-cubes]: /reference/data-model/cube -[ref-custom-granularity]: /reference/data-model/dimensions#granularities +[ref-ref-cubes]: /product/data-modeling/reference/cube +[ref-custom-granularity]: /product/data-modeling/reference/dimensions#granularities [ref-env-allow-non-strict]: /product/configuration/reference/environment-variables#cubejs-pre-aggregations-allow-non-strict-date-range-match [ref-config-downstream-tableau]: /product/configuration/visualization-tools/tableau diff --git a/docs/pages/reference/data-model/segments.mdx b/docs/pages/product/data-modeling/reference/segments.mdx similarity index 99% rename from docs/pages/reference/data-model/segments.mdx rename to docs/pages/product/data-modeling/reference/segments.mdx index eb8cc73555486..26a13614947d9 100644 --- a/docs/pages/reference/data-model/segments.mdx +++ b/docs/pages/product/data-modeling/reference/segments.mdx @@ -331,7 +331,7 @@ cubes: -[ref-ref-cubes]: /reference/data-model/cube +[ref-ref-cubes]: /product/data-modeling/reference/cube [ref-backend-query]: /product/apis-integrations/rest-api/query-format [ref-schema-gen]: /guides/recipes/code-reusability/schema-generation [ref-naming]: /product/data-modeling/syntax#naming diff --git a/docs/pages/reference/data-model/types-and-formats.mdx b/docs/pages/product/data-modeling/reference/types-and-formats.mdx similarity index 99% rename from docs/pages/reference/data-model/types-and-formats.mdx rename to docs/pages/product/data-modeling/reference/types-and-formats.mdx index f7711ce6f8c69..88301e9cd87a2 100644 --- a/docs/pages/reference/data-model/types-and-formats.mdx +++ b/docs/pages/product/data-modeling/reference/types-and-formats.mdx @@ -1001,7 +1001,7 @@ cubes: [ref-string-time-dims]: /guides/recipes/data-modeling/string-time-dimensions [ref-schema-ref-preaggs-rollup]: - /reference/data-model/pre-aggregations#rollup + /product/data-modeling/reference/pre-aggregations#rollup [ref-schema-ref-calc-measures]: - /reference/data-model/measures#calculated-measures + /product/data-modeling/reference/measures#calculated-measures [ref-drilldowns]: /guides/recipes/data-exploration/drilldowns diff --git a/docs/pages/reference/data-model/view.mdx b/docs/pages/product/data-modeling/reference/view.mdx similarity index 95% rename from docs/pages/reference/data-model/view.mdx rename to docs/pages/product/data-modeling/reference/view.mdx index 2bf357ea96344..13f752c11b9af 100644 --- a/docs/pages/reference/data-model/view.mdx +++ b/docs/pages/product/data-modeling/reference/view.mdx @@ -451,14 +451,14 @@ The `access_policy` parameter is used to configure [data access policies][ref-re /product/data-modeling/concepts/working-with-joins#directions-of-joins [ref-naming]: /product/data-modeling/syntax#naming [ref-apis]: /product/apis-integrations -[ref-ref-cubes]: /reference/data-model/cube -[ref-ref-dap]: /reference/data-model/data-access-policies +[ref-ref-cubes]: /product/data-modeling/reference/cube +[ref-ref-dap]: /product/data-modeling/reference/data-access-policies [ref-apis-support]: /product/apis-integrations#data-modeling [ref-playground]: /product/workspace/playground#viewing-the-data-model [ref-viz-tools]: /product/configuration/visualization-tools [ref-extension]: /product/data-modeling/concepts/code-reusability-extending-cubes -[ref-dim-name]: /reference/data-model/dimensions#name -[ref-dim-title]: /reference/data-model/dimensions#title -[ref-dim-description]: /reference/data-model/dimensions#description -[ref-dim-format]: /reference/data-model/dimensions#format -[ref-dim-meta]: /reference/data-model/dimensions#meta +[ref-dim-name]: /product/data-modeling/reference/dimensions#name +[ref-dim-title]: /product/data-modeling/reference/dimensions#title +[ref-dim-description]: /product/data-modeling/reference/dimensions#description +[ref-dim-format]: /product/data-modeling/reference/dimensions#format +[ref-dim-meta]: /product/data-modeling/reference/dimensions#meta diff --git a/docs/pages/product/data-modeling/syntax.mdx b/docs/pages/product/data-modeling/syntax.mdx index 122982da02042..da8b5e6964a77 100644 --- a/docs/pages/product/data-modeling/syntax.mdx +++ b/docs/pages/product/data-modeling/syntax.mdx @@ -754,7 +754,7 @@ defining dynamic data models. [ref-dynamic-data-models]: /product/data-modeling/dynamic [ref-dynamic-data-models-jinja]: /product/data-modeling/dynamic/jinja [ref-dynamic-data-models-js]: /product/data-modeling/dynamic/javascript -[ref-context-variables]: /reference/data-model/context-variables +[ref-context-variables]: /product/data-modeling/reference/context-variables [ref-config-model-path]: /product/configuration/reference/config#schemapath [ref-config-repository-factory]: /product/configuration/reference/config#repositoryfactory @@ -764,9 +764,9 @@ defining dynamic data models. [link-snowflake-listagg]: https://docs.snowflake.com/en/sql-reference/functions/listagg [link-bigquery-stringagg]: https://cloud.google.com/bigquery/docs/reference/standard-sql/functions-and-operators#string_agg [link-sql-udf]: https://en.wikipedia.org/wiki/User-defined_function#Databases -[ref-time-dimension]: /reference/data-model/types-and-formats#time-1 +[ref-time-dimension]: /product/data-modeling/reference/types-and-formats#time-1 [ref-default-granularities]: /product/data-modeling/concepts#time-dimensions -[ref-custom-granularities]: /reference/data-model/dimensions#granularities +[ref-custom-granularities]: /product/data-modeling/reference/dimensions#granularities [ref-style-guide]: /guides/style-guide [ref-polymorphism]: /product/data-modeling/concepts/polymorphic-cubes [ref-data-blending]: /product/data-modeling/concepts/data-blending diff --git a/docs/pages/product/deployment/production-checklist.mdx b/docs/pages/product/deployment/production-checklist.mdx index 10a8d13dc0553..2ee8dd76318a0 100644 --- a/docs/pages/product/deployment/production-checklist.mdx +++ b/docs/pages/product/deployment/production-checklist.mdx @@ -150,7 +150,7 @@ performance numbers can differ as it has different Cube runtime. /product/configuration/reference/environment-variables#cubejs_cache_and_queue_driver [ref-conf-preaggs-schema]: /product/configuration/reference/config#pre_aggregations_schema [ref-env-vars]: /product/configuration/reference/environment-variables -[ref-schema-ref-preaggs]: /reference/data-model/pre-aggregations +[ref-schema-ref-preaggs]: /product/data-modeling/reference/pre-aggregations [ref-sec-ctx]: /product/auth/context [ref-config-jwt]: /product/configuration/reference/config#jwt [ref-api-readyz]: /product/apis-integrations/rest-api/reference#readyz diff --git a/docs/pages/product/getting-started/cloud/create-data-model.mdx b/docs/pages/product/getting-started/cloud/create-data-model.mdx index 95b758fdccef6..2fe7f7fc6bbe6 100644 --- a/docs/pages/product/getting-started/cloud/create-data-model.mdx +++ b/docs/pages/product/getting-started/cloud/create-data-model.mdx @@ -84,7 +84,7 @@ Let's add an additional measure to the `orders` cube to calculate only three possible statuses: **processing**, **shipped**, or **completed**. We will create a new measure `completed_count` by using a filter on that dimension. To do this, we will use a -[filter parameter](/reference/data-model/measures#filters) of the +[filter parameter](/product/data-modeling/reference/measures#filters) of the measure and [refer][ref-member-references] to the existing dimension. Add the following measure definition to your `model/cubes/orders.yml` file. It diff --git a/docs/pages/product/getting-started/cloud/query-from-bi.mdx b/docs/pages/product/getting-started/cloud/query-from-bi.mdx index b1439d93f4658..9a61f41d04c13 100644 --- a/docs/pages/product/getting-started/cloud/query-from-bi.mdx +++ b/docs/pages/product/getting-started/cloud/query-from-bi.mdx @@ -16,7 +16,7 @@ in Cube, such as cubes, views, measures, and dimensions. Semantic Layer Sync will synchronize all public cubes and views with connected BI tools. We recommend making your cubes private and only exposing views. Both cubes and views are public by default. To make cubes private, set the -[public](/reference/data-model/cube#public) parameter to `false`. +[public](/product/data-modeling/reference/cube#public) parameter to `false`. ```yaml cubes: diff --git a/docs/pages/product/getting-started/databricks/create-data-model.mdx b/docs/pages/product/getting-started/databricks/create-data-model.mdx index f5e5d84131f49..46c65fd051760 100644 --- a/docs/pages/product/getting-started/databricks/create-data-model.mdx +++ b/docs/pages/product/getting-started/databricks/create-data-model.mdx @@ -84,7 +84,7 @@ Let's add an additional measure to the `orders` cube to calculate only three possible statuses: **processing**, **shipped**, or **completed**. We will create a new measure `completed_count` by using a filter on that dimension. To do this, we will use a -[filter parameter](/reference/data-model/measures#filters) of the +[filter parameter](/product/data-modeling/reference/measures#filters) of the measure and [refer][ref-member-references] to the existing dimension. Add the following measure definition to your `model/cubes/orders.yml` file. It diff --git a/docs/pages/product/getting-started/databricks/query-from-bi.mdx b/docs/pages/product/getting-started/databricks/query-from-bi.mdx index 4be63a50707eb..1712e2c111de0 100644 --- a/docs/pages/product/getting-started/databricks/query-from-bi.mdx +++ b/docs/pages/product/getting-started/databricks/query-from-bi.mdx @@ -16,7 +16,7 @@ in Cube, such as cubes, views, measures, and dimensions. Semantic Layer Sync will synchronize all public cubes and views with connected BI tools. We recommend making your cubes private and only exposing views. Both cubes and views are public by default. To make cubes private, set the -[public](/reference/data-model/cube#public) parameter to `false`. +[public](/product/data-modeling/reference/cube#public) parameter to `false`. ```yaml cubes: diff --git a/docs/pages/product/workspace/encryption-keys.mdx b/docs/pages/product/workspace/encryption-keys.mdx index e431f43cd1950..bef74f26be39b 100644 --- a/docs/pages/product/workspace/encryption-keys.mdx +++ b/docs/pages/product/workspace/encryption-keys.mdx @@ -86,5 +86,5 @@ To drop an encryption key, click Delete next to it. [link-base64]: https://datatracker.ietf.org/doc/html/rfc4648#section-4 [ref-pre-aggs-refresh-strategy]: /product/caching/using-pre-aggregations#refresh-strategy [ref-pre-aggs-build-manually]: /product/workspace/pre-aggregations -[ref-pre-aggs-incremental]: /reference/data-model/pre-aggregations#incremental +[ref-pre-aggs-incremental]: /product/data-modeling/reference/pre-aggregations#incremental [ref-sql-runner]: /product/workspace/sql-runner \ No newline at end of file diff --git a/docs/pages/product/workspace/playground.mdx b/docs/pages/product/workspace/playground.mdx index a6f3fba4fef5a..8e70f9c3cc13e 100644 --- a/docs/pages/product/workspace/playground.mdx +++ b/docs/pages/product/workspace/playground.mdx @@ -206,9 +206,9 @@ manually. [ref-multiple-data-sources]: /product/configuration/advanced/multiple-data-sources [ref-queries]: /product/apis-integrations/queries [ref-data-modeling]: /product/data-modeling -[ref-data-model-title]: /reference/data-model/measures#title -[ref-data-model-description]: /reference/data-model/measures#description -[ref-data-model-public]: /reference/data-model/measures#public +[ref-data-model-title]: /product/data-modeling/reference/measures#title +[ref-data-model-description]: /product/data-modeling/reference/measures#description +[ref-data-model-public]: /product/data-modeling/reference/measures#public [ref-rest-api]: /product/apis-integrations/rest-api [ref-graphql-api]: /product/apis-integrations/graphql-api [ref-sql-api]: /product/apis-integrations/sql-api diff --git a/docs/pages/product/workspace/pre-aggregations.mdx b/docs/pages/product/workspace/pre-aggregations.mdx index 4b58a9971db4d..6595f54db7426 100644 --- a/docs/pages/product/workspace/pre-aggregations.mdx +++ b/docs/pages/product/workspace/pre-aggregations.mdx @@ -117,8 +117,8 @@ To see more information about a specific build, click on it: [ref-caching-gs-preaggs]: /product/caching/getting-started-pre-aggregations [ref-caching-using-preaggs-refresh]: /product/caching/using-pre-aggregations#refresh-strategy -[ref-model-ref-preaggs]: /reference/data-model/pre-aggregations +[ref-model-ref-preaggs]: /product/data-modeling/reference/pre-aggregations [ref-model-ref-preaggs-index]: - /reference/data-model/pre-aggregations#indexes + /product/data-modeling/reference/pre-aggregations#indexes [ref-model-ref-preaggs-partition-granularity]: - /reference/data-model/pre-aggregations#partition_granularity + /product/data-modeling/reference/pre-aggregations#partition_granularity diff --git a/docs/pages/product/workspace/rollup-designer.mdx b/docs/pages/product/workspace/rollup-designer.mdx index e59cd43901f94..d8d7f906edec7 100644 --- a/docs/pages/product/workspace/rollup-designer.mdx +++ b/docs/pages/product/workspace/rollup-designer.mdx @@ -58,9 +58,9 @@ Click Add to the Data Model to add the pre-aggregation to the data model. [ref-caching-preaggs-gs]: /product/caching/getting-started-pre-aggregations -[ref-preaggs-ref-refreshkey]: /reference/data-model/pre-aggregations#refresh_key -[ref-preaggs-ref-partitiongranularity]: /reference/data-model/pre-aggregations#partition_granularity -[ref-preaggs-ref-indexes]: /reference/data-model/pre-aggregations#indexes +[ref-preaggs-ref-refreshkey]: /product/data-modeling/reference/pre-aggregations#refresh_key +[ref-preaggs-ref-partitiongranularity]: /product/data-modeling/reference/pre-aggregations#partition_granularity +[ref-preaggs-ref-indexes]: /product/data-modeling/reference/pre-aggregations#indexes [ref-playground]: /product/workspace/playground [ref-query-history]: /product/workspace/query-history [ref-data-model]: /product/workspace/data-model \ No newline at end of file diff --git a/docs/pages/product/workspace/sql-runner.mdx b/docs/pages/product/workspace/sql-runner.mdx index c65d88f2cc107..9afb996fb701a 100644 --- a/docs/pages/product/workspace/sql-runner.mdx +++ b/docs/pages/product/workspace/sql-runner.mdx @@ -105,4 +105,4 @@ in a data model should be a `numeric`). [cubecloud-signup]: https://cubecloud.dev/auth/signup [ref-conf-scheduled-refresh-ctx]: /product/configuration/reference/config#scheduledrefreshcontexts -[ref-cube-datasource]: /reference/data-model/cube#data_source \ No newline at end of file +[ref-cube-datasource]: /product/data-modeling/reference/cube#data_source \ No newline at end of file diff --git a/docs/pages/product/workspace/visual-model.mdx b/docs/pages/product/workspace/visual-model.mdx index 26bc72c6bccc2..57b8d0464ea37 100644 --- a/docs/pages/product/workspace/visual-model.mdx +++ b/docs/pages/product/workspace/visual-model.mdx @@ -141,16 +141,16 @@ allow editing of [dynamic data models][ref-dynamic-data-models] or models which [ref-data-modeling]: /product/data-modeling/overview [ref-data-model]: /product/workspace/data-model -[ref-meta]: /reference/data-model/cube#meta -[ref-segments]: /reference/data-model/segments -[ref-hierarchies]: /reference/data-model/hierarchies -[ref-folders]: /reference/data-model/view#folders -[ref-refresh-keys]: /reference/data-model/cube#refresh_key -[ref-pre-aggregations]: /reference/data-model/pre-aggregations -[ref-sub-query]: /reference/data-model/dimensions#sub_query -[ref-granularities]: /reference/data-model/dimensions#granularities -[ref-drill-members]: /reference/data-model/measures#drill_members -[ref-rolling-window]: /reference/data-model/measures#rolling_window +[ref-meta]: /product/data-modeling/reference/cube#meta +[ref-segments]: /product/data-modeling/reference/segments +[ref-hierarchies]: /product/data-modeling/reference/hierarchies +[ref-folders]: /product/data-modeling/reference/view#folders +[ref-refresh-keys]: /product/data-modeling/reference/cube#refresh_key +[ref-pre-aggregations]: /product/data-modeling/reference/pre-aggregations +[ref-sub-query]: /product/data-modeling/reference/dimensions#sub_query +[ref-granularities]: /product/data-modeling/reference/dimensions#granularities +[ref-drill-members]: /product/data-modeling/reference/measures#drill_members +[ref-rolling-window]: /product/data-modeling/reference/measures#rolling_window [ref-dynamic-data-models]: /product/data-modeling/dynamic [ref-jinja]: /product/data-modeling/dynamic/jinja [ref-continuous-deployment]: /product/deployment/cloud/continuous-deployment @@ -158,7 +158,7 @@ allow editing of [dynamic data models][ref-dynamic-data-models] or models which [ref-dev-mode]: /product/workspace/dev-mode [ref-environments]: /product/workspace/environments [ref-playground]: /product/workspace/playground -[ref-cubes]: /reference/data-model/cube -[ref-joins]: /reference/data-model/joins -[ref-join-types]: /reference/data-model/joins#relationship +[ref-cubes]: /product/data-modeling/reference/cube +[ref-joins]: /product/data-modeling/reference/joins +[ref-join-types]: /product/data-modeling/reference/joins#relationship [wiki-erd]: https://en.wikipedia.org/wiki/Entity–relationship_model \ No newline at end of file diff --git a/docs/pages/reference/_meta.js b/docs/pages/reference/_meta.js index 360a9e04d39c4..1d647053bbb08 100644 --- a/docs/pages/reference/_meta.js +++ b/docs/pages/reference/_meta.js @@ -1,6 +1,4 @@ module.exports = { - "configuration": "Configuration", - "data-model": "Data modeling", "python": "Python packages", "errors": "Error messages" } \ No newline at end of file diff --git a/docs/pages/reference/errors.mdx b/docs/pages/reference/errors.mdx index 23729c9e76f94..d6e508a4bf7b9 100644 --- a/docs/pages/reference/errors.mdx +++ b/docs/pages/reference/errors.mdx @@ -29,12 +29,12 @@ Can't find join path to join 'cube_a', 'cube_b' Error message above indicates that a query failed because it includes members from cubes that can't be joined in order to generate a valid query to the upstream data source. -**Please check that you've defined necessary [joins](/reference/data-model/joins) +**Please check that you've defined necessary [joins](/product/data-modeling/reference/joins) and that they have [correct directions](/product/data-modeling/concepts/working-with-joins#transitive-join-pitfalls).** -Also, please consider using [views](/reference/data-model/view) since they +Also, please consider using [views](/product/data-modeling/reference/view) since they incapsulate join paths and completely remove the possibility of the error in question. -You might also consider setting [`public: false`](/reference/data-model/cube#public) +You might also consider setting [`public: false`](/product/data-modeling/reference/cube#public) on your cubes to hide them from end users. If you’re building a custom data application, you might use the [`meta` endpoint](/product/apis-integrations/rest-api/reference#v1meta) @@ -48,7 +48,7 @@ Can't parse timestamp: 2023-11-07T14:33:23.16.000 ``` Error message above indicates that the data source was unable to recognize -the value of a [time dimension](/reference/data-model/types-and-formats#time-1) +the value of a [time dimension](/product/data-modeling/reference/types-and-formats#time-1) as a timestamp. **Please check that the [SQL expression](/product/data-modeling/syntax#sql-expressions) @@ -64,16 +64,16 @@ cube_a cube: primary key for 'cube_a' is required when join is defined in order to make aggregates work properly ``` -Error message above indicates that you have a [cube](/reference/data-model/cube) -with [joins](/reference/data-model/joins) and -[pre-aggregations](/reference/data-model/pre-aggregations). However, that cube +Error message above indicates that you have a [cube](/product/data-modeling/reference/cube) +with [joins](/product/data-modeling/reference/joins) and +[pre-aggregations](/product/data-modeling/reference/pre-aggregations). However, that cube doesn't have a primary key. When generating SQL queries, Cube uses primary keys to avoid fanouts. A fanout happens when two tables are joined and a single value gets duplicated in the end result, meaning that some values can be double counted. -**Please define a [primary key](/reference/data-model/dimensions#primary_key) dimension in this cube to make joins and pre-aggregations work correctly.** +**Please define a [primary key](/product/data-modeling/reference/dimensions#primary_key) dimension in this cube to make joins and pre-aggregations work correctly.** If your data doesn't have a natural primary key, e.g., `id`, you can define a composite primary key by concatenating most or all of the columns in the table, e.g.: diff --git a/docs/pages/reference/python/cube_dbt.mdx b/docs/pages/reference/python/cube_dbt.mdx index 1941f6d1cfaa8..a4490d3809665 100644 --- a/docs/pages/reference/python/cube_dbt.mdx +++ b/docs/pages/reference/python/cube_dbt.mdx @@ -506,13 +506,13 @@ cubes: [link-dbt-manifest]: https://docs.getdbt.com/reference/artifacts/manifest-json [link-dbt-materializations]: https://docs.getdbt.com/docs/build/materializations -[ref-cubes]: /reference/data-model/cube +[ref-cubes]: /product/data-modeling/reference/cube [ref-model-syntax]: /product/data-modeling/syntax#model-syntax -[ref-cube-sql-table]: /reference/data-model/cube#sql_table -[ref-dimension-sql]: /reference/data-model/dimensions#sql -[ref-dimension-type]: /reference/data-model/dimensions#type -[ref-dimension-meta]: /reference/data-model/dimensions#meta -[ref-dimension-types]: /reference/data-model/types-and-formats#dimension-types +[ref-cube-sql-table]: /product/data-modeling/reference/cube#sql_table +[ref-dimension-sql]: /product/data-modeling/reference/dimensions#sql +[ref-dimension-type]: /product/data-modeling/reference/dimensions#type +[ref-dimension-meta]: /product/data-modeling/reference/dimensions#meta +[ref-dimension-types]: /product/data-modeling/reference/types-and-formats#dimension-types [self-column-pk]: #columnprimary_key [self-column-as-dimension]: #columnas_dimension \ No newline at end of file diff --git a/docs/pages/reference/python/lkml2cube.mdx b/docs/pages/reference/python/lkml2cube.mdx index 87d9c9b0b2836..e68d0d2e02455 100644 --- a/docs/pages/reference/python/lkml2cube.mdx +++ b/docs/pages/reference/python/lkml2cube.mdx @@ -74,6 +74,6 @@ lkml2cube views path/to/file.explore.lkml --outputdir ./ [link-lkml2cube-pypi]: https://pypi.org/project/lkml2cube/ [link-cube-repo-issues]: https://github.com/cube-js/cube/issues -[ref-cubes]: /reference/data-model/cube -[ref-views]: /reference/data-model/view -[ref-joins]: /reference/data-model/joins \ No newline at end of file +[ref-cubes]: /product/data-modeling/reference/cube +[ref-views]: /product/data-modeling/reference/view +[ref-joins]: /product/data-modeling/reference/joins \ No newline at end of file diff --git a/docs/redirects.json b/docs/redirects.json index 5873024447ad7..ee2c099bde187 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,64 @@ [ + { + "source": "/reference/data-model", + "destination": "/product/data-modeling/reference", + "permanent": true + }, + { + "source": "/reference/data-model/cube", + "destination": "/product/data-modeling/reference/cube", + "permanent": true + }, + { + "source": "/reference/data-model/dimensions", + "destination": "/product/data-modeling/reference/dimensions", + "permanent": true + }, + { + "source": "/reference/data-model/measures", + "destination": "/product/data-modeling/reference/measures", + "permanent": true + }, + { + "source": "/reference/data-model/joins", + "destination": "/product/data-modeling/reference/joins", + "permanent": true + }, + { + "source": "/reference/data-model/segments", + "destination": "/product/data-modeling/reference/segments", + "permanent": true + }, + { + "source": "/reference/data-model/types-and-formats", + "destination": "/product/data-modeling/reference/types-and-formats", + "permanent": true + }, + { + "source": "/reference/data-model/view", + "destination": "/product/data-modeling/reference/view", + "permanent": true + }, + { + "source": "/reference/data-model/hierarchies", + "destination": "/product/data-modeling/reference/hierarchies", + "permanent": true + }, + { + "source": "/reference/data-model/context-variables", + "destination": "/product/data-modeling/reference/context-variables", + "permanent": true + }, + { + "source": "/reference/data-model/data-access-policies", + "destination": "/product/data-modeling/reference/data-access-policies", + "permanent": true + }, + { + "source": "/reference/data-model/pre-aggregations", + "destination": "/product/data-modeling/reference/pre-aggregations", + "permanent": true + }, { "source": "/reference/configuration/environment-variables", "destination": "/product/configuration/reference/environment-variables", From 28ea2e6d33e8fc03b364815167aa95ac191406b5 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Fri, 16 May 2025 17:32:06 +0200 Subject: [PATCH 05/39] docs: Move cube_dbt page to product/data-modeling/reference --- docs/pages/guides/dbt.mdx | 8 ++++---- docs/pages/product/data-modeling/dynamic/jinja.mdx | 4 ++-- docs/pages/product/data-modeling/reference/_meta.js | 3 ++- .../data-modeling/reference}/cube_dbt.mdx | 0 docs/pages/reference/python/_meta.js | 1 - docs/redirects.json | 5 +++++ 6 files changed, 13 insertions(+), 8 deletions(-) rename docs/pages/{reference/python => product/data-modeling/reference}/cube_dbt.mdx (100%) diff --git a/docs/pages/guides/dbt.mdx b/docs/pages/guides/dbt.mdx index 6f0ffe7928888..6e01650841f14 100644 --- a/docs/pages/guides/dbt.mdx +++ b/docs/pages/guides/dbt.mdx @@ -344,10 +344,10 @@ of the REST API. [ref-pre-aggs]: /product/caching/using-pre-aggregations [ref-pre-aggs-refresh-keys]: /product/caching/using-pre-aggregations#refresh-strategy [ref-orchestration-api]: /product/apis-integrations/orchestration-api -[ref-cube-dbt]: /reference/python/cube_dbt -[ref-cube-dbt-as-cube]: /reference/python/cube_dbt#modelas_cube -[ref-cube-dbt-as-dimensions]: /reference/python/cube_dbt#modelas_dimensions -[ref-cube-dbt-data-type]: /reference/python/cube_dbt#columntype +[ref-cube-dbt]: /product/data-modeling/reference/cube_dbt +[ref-cube-dbt-as-cube]: /product/data-modeling/reference/cube_dbt#modelas_cube +[ref-cube-dbt-as-dimensions]: /product/data-modeling/reference/cube_dbt#modelas_dimensions +[ref-cube-dbt-data-type]: /product/data-modeling/reference/cube_dbt#columntype [ref-template-context]: /reference/python/cube#templatecontext-class [ref-primary-key]: /product/data-modeling/reference/dimensions#primary_key [ref-dimension-types]: /product/data-modeling/reference/types-and-formats#dimension-types diff --git a/docs/pages/product/data-modeling/dynamic/jinja.mdx b/docs/pages/product/data-modeling/dynamic/jinja.mdx index 56fec362d4e58..7b239010c8eee 100644 --- a/docs/pages/product/data-modeling/dynamic/jinja.mdx +++ b/docs/pages/product/data-modeling/dynamic/jinja.mdx @@ -293,10 +293,10 @@ image][ref-docker-image-extension]. https://jinja.palletsprojects.com/en/3.1.x/templates/#macros [jinja-docs-autoescaping]: https://jinja.palletsprojects.com/en/3.1.x/api/#autoescaping [jinja-docs-filters-safe]: https://jinja.palletsprojects.com/en/3.1.x/templates/#jinja-filters.safe -[ref-cube-dbt]: /reference/python/cube_dbt +[ref-cube-dbt]: /product/data-modeling/reference/cube_dbt [ref-visual-model]: /product/workspace/visual-model [ref-docker-image-extension]: /product/deployment/core#extend-the-docker-image [ref-cube-package]: /reference/python/cube [ref-cube-template-context]: /reference/python/cube#templatecontext-class -[ref-cube-dbt-package]: /reference/python/cube_dbt +[ref-cube-dbt-package]: /product/data-modeling/reference/cube_dbt [ref-cube-with-dbt]: /guides/dbt \ No newline at end of file diff --git a/docs/pages/product/data-modeling/reference/_meta.js b/docs/pages/product/data-modeling/reference/_meta.js index 66735c5ec41c5..743c54b53e8e0 100644 --- a/docs/pages/product/data-modeling/reference/_meta.js +++ b/docs/pages/product/data-modeling/reference/_meta.js @@ -9,5 +9,6 @@ module.exports = { "pre-aggregations": "Pre-aggregations", "data-access-policies": "Data access policies", "types-and-formats": "Types and formats", - "context-variables": "Context variables" + "context-variables": "Context variables", + "cube_dbt": "cube_dbt package" } \ No newline at end of file diff --git a/docs/pages/reference/python/cube_dbt.mdx b/docs/pages/product/data-modeling/reference/cube_dbt.mdx similarity index 100% rename from docs/pages/reference/python/cube_dbt.mdx rename to docs/pages/product/data-modeling/reference/cube_dbt.mdx diff --git a/docs/pages/reference/python/_meta.js b/docs/pages/reference/python/_meta.js index 0afdd37172884..39c20e16789dd 100644 --- a/docs/pages/reference/python/_meta.js +++ b/docs/pages/reference/python/_meta.js @@ -1,5 +1,4 @@ module.exports = { "cube": "cube", - "cube_dbt": "cube_dbt", "lkml2cube": "lkml2cube", } \ No newline at end of file diff --git a/docs/redirects.json b/docs/redirects.json index ee2c099bde187..e231b27adb93b 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/reference/python/cube_dbt", + "destination": "/product/data-modeling/reference/cube_dbt", + "permanent": true + }, { "source": "/reference/data-model", "destination": "/product/data-modeling/reference", From 145ff9207262602adf38acf87b01fb862002d63d Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Fri, 16 May 2025 17:38:29 +0200 Subject: [PATCH 06/39] docs: Move lkml2cube page to product/data-modeling/reference --- docs/pages/product/data-modeling/reference/_meta.js | 3 ++- .../python => product/data-modeling/reference}/lkml2cube.mdx | 0 docs/pages/reference/python/_meta.js | 3 +-- docs/redirects.json | 5 +++++ 4 files changed, 8 insertions(+), 3 deletions(-) rename docs/pages/{reference/python => product/data-modeling/reference}/lkml2cube.mdx (100%) diff --git a/docs/pages/product/data-modeling/reference/_meta.js b/docs/pages/product/data-modeling/reference/_meta.js index 743c54b53e8e0..d80bbe9331b8b 100644 --- a/docs/pages/product/data-modeling/reference/_meta.js +++ b/docs/pages/product/data-modeling/reference/_meta.js @@ -10,5 +10,6 @@ module.exports = { "data-access-policies": "Data access policies", "types-and-formats": "Types and formats", "context-variables": "Context variables", - "cube_dbt": "cube_dbt package" + "cube_dbt": "cube_dbt package", + "lkml2cube": "lkml2cube package" } \ No newline at end of file diff --git a/docs/pages/reference/python/lkml2cube.mdx b/docs/pages/product/data-modeling/reference/lkml2cube.mdx similarity index 100% rename from docs/pages/reference/python/lkml2cube.mdx rename to docs/pages/product/data-modeling/reference/lkml2cube.mdx diff --git a/docs/pages/reference/python/_meta.js b/docs/pages/reference/python/_meta.js index 39c20e16789dd..216caaaaa4b68 100644 --- a/docs/pages/reference/python/_meta.js +++ b/docs/pages/reference/python/_meta.js @@ -1,4 +1,3 @@ module.exports = { - "cube": "cube", - "lkml2cube": "lkml2cube", + "cube": "cube" } \ No newline at end of file diff --git a/docs/redirects.json b/docs/redirects.json index e231b27adb93b..7fc1ddaa410d2 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/reference/python/lkml2cube", + "destination": "/product/data-modeling/reference/lkml2cube", + "permanent": true + }, { "source": "/reference/python/cube_dbt", "destination": "/product/data-modeling/reference/cube_dbt", From c12873cf39190acfc50195053c984e00195db5aa Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Fri, 16 May 2025 22:12:17 +0200 Subject: [PATCH 07/39] docs: Move Python cube package to data modeling reference section --- docs/.claude/commands/move-page.md | 22 +++++----- docs/pages/guides/dbt.mdx | 2 +- .../environment-variables.mdx | 2 +- docs/pages/product/configuration.mdx | 10 +++-- .../product/data-modeling/dynamic/jinja.mdx | 4 +- .../product/data-modeling/reference/_meta.js | 1 + .../data-modeling/reference/cube-package.mdx} | 0 docs/pages/reference/_meta.js | 3 +- docs/pages/reference/python/_meta.js | 3 -- docs/redirects.json | 40 +++---------------- 10 files changed, 29 insertions(+), 58 deletions(-) rename docs/pages/{reference/python/cube.mdx => product/data-modeling/reference/cube-package.mdx} (100%) delete mode 100644 docs/pages/reference/python/_meta.js diff --git a/docs/.claude/commands/move-page.md b/docs/.claude/commands/move-page.md index 3da3d90a073f4..d956200fe0f4e 100644 --- a/docs/.claude/commands/move-page.md +++ b/docs/.claude/commands/move-page.md @@ -3,22 +3,24 @@ I need to move a documentation page from its current location to a new one within our documentation site. Please help me with the full process including: 1. Moving the source file to the destination directory: - - Use the `mv` command to move the file to the new location - - Don't leave the original file + - If there's a file with the same name in the destination directory, ask for the new name and rename the source file before moving it + - Use the `mv` command to move the file to the new location 2. Updating relevant _meta.js files to maintain proper navigation: - - Add the page to the destination directory's _meta.js file - - Remove the page from the source directory's _meta.js file - - If the source _meta.js file becomes empty (just contains `module.exports = {}`), delete it + - Add the page to the destination directory's _meta.js file + - Remove the page from the source directory's _meta.js file + - If the source _meta.js file becomes empty (just contains `module.exports = {}`) + - Delete it + - Delete the directory where that _meta.js file was from the _meta.js file in its parent directory 3. Finding and updating all internal references/links to the moved page: - - Search for references to the old URL path in all files - - Pay special attention to link references at the bottom of files - - Check plugins that might construct URLs programmatically + - Search for references to the old URL path in all files + - Pay special attention to link references at the bottom of files + - Check plugins that might construct URLs programmatically 4. Adding a redirect from the old URL to the new one: - - Add a new entry at the top of the redirects.json file - - Format should follow existing entries with "permanent": true + - Add a new entry at the top of the redirects.json file + - Format should follow existing entries with "permanent": true Before starting, ask for: - Source page path (in URL format, e.g., /reference/configuration/environment-variables) diff --git a/docs/pages/guides/dbt.mdx b/docs/pages/guides/dbt.mdx index 6e01650841f14..4bae81bdb8f9f 100644 --- a/docs/pages/guides/dbt.mdx +++ b/docs/pages/guides/dbt.mdx @@ -348,7 +348,7 @@ of the REST API. [ref-cube-dbt-as-cube]: /product/data-modeling/reference/cube_dbt#modelas_cube [ref-cube-dbt-as-dimensions]: /product/data-modeling/reference/cube_dbt#modelas_dimensions [ref-cube-dbt-data-type]: /product/data-modeling/reference/cube_dbt#columntype -[ref-template-context]: /reference/python/cube#templatecontext-class +[ref-template-context]: /product/data-modeling/reference/cube-package#templatecontext-class [ref-primary-key]: /product/data-modeling/reference/dimensions#primary_key [ref-dimension-types]: /product/data-modeling/reference/types-and-formats#dimension-types [ref-visual-model]: /product/workspace/visual-model diff --git a/docs/pages/guides/recipes/code-reusability/environment-variables.mdx b/docs/pages/guides/recipes/code-reusability/environment-variables.mdx index 771ea94934185..db072c97be00c 100644 --- a/docs/pages/guides/recipes/code-reusability/environment-variables.mdx +++ b/docs/pages/guides/recipes/code-reusability/environment-variables.mdx @@ -158,5 +158,5 @@ cube(`my_cube`, { [ref-config-files]: /product/configuration#cubepy-and-cubejs-files [ref-docker-compose-config]: /product/deployment/core#configuration [ref-python-globals]: /product/data-modeling/dynamic/jinja#python -[ref-template-context]: /reference/python/cube#templatecontext-class +[ref-template-context]: /product/data-modeling/reference/cube-package#templatecontext-class [ref-nodejs-globals]: /product/data-modeling/dynamic/schema-execution-environment#nodejs-globals-processenv-consolelog-and-others \ No newline at end of file diff --git a/docs/pages/product/configuration.mdx b/docs/pages/product/configuration.mdx index 41e04539529bf..6310607ab1cdc 100644 --- a/docs/pages/product/configuration.mdx +++ b/docs/pages/product/configuration.mdx @@ -72,7 +72,7 @@ def query_rewrite(query: dict, ctx: dict) -> dict: 'values': [ctx['securityContext']['order_id']] }) return query - + ``` ```javascript @@ -98,7 +98,8 @@ module.exports = { Both ways are equivalent; when in doubt, use Python. -Here is a minimal correct `cube.py` file. Note that the `config` object must be imported: +Here is a minimal correct `cube.py` file. Note that the [`config` +object][ref-cube-package-config] must be imported: ```python from cube import config @@ -134,7 +135,7 @@ Model][ref-visual-model] pages. Cube uses Python and Node.js as runtime environments for the code of configuration and [dynamic data models][ref-dynamic-data-models]. You can look current versions up on GitHub: [Python][link-current-python-version], -[Node.js][link-current-nodejs-version]. +[Node.js][link-current-nodejs-version]. It's recommended to use `requirements.txt` and `package.json` files to specify dependencies for your Python and JavaScript code, respectively. @@ -197,4 +198,5 @@ mode does the following: [ref-data-model]: /product/workspace/data-model [ref-visual-model]: /product/workspace/visual-model [ref-python]: /product/data-modeling/dynamic/jinja#python -[ref-javascript]: /product/data-modeling/dynamic/javascript \ No newline at end of file +[ref-javascript]: /product/data-modeling/dynamic/javascript +[ref-cube-package-config]: /product/data-modeling/reference/cube-package#config-object diff --git a/docs/pages/product/data-modeling/dynamic/jinja.mdx b/docs/pages/product/data-modeling/dynamic/jinja.mdx index 7b239010c8eee..d5707c38fedca 100644 --- a/docs/pages/product/data-modeling/dynamic/jinja.mdx +++ b/docs/pages/product/data-modeling/dynamic/jinja.mdx @@ -296,7 +296,7 @@ image][ref-docker-image-extension]. [ref-cube-dbt]: /product/data-modeling/reference/cube_dbt [ref-visual-model]: /product/workspace/visual-model [ref-docker-image-extension]: /product/deployment/core#extend-the-docker-image -[ref-cube-package]: /reference/python/cube -[ref-cube-template-context]: /reference/python/cube#templatecontext-class +[ref-cube-package]: /product/data-modeling/reference/cube-package +[ref-cube-template-context]: /product/data-modeling/reference/cube-package#templatecontext-class [ref-cube-dbt-package]: /product/data-modeling/reference/cube_dbt [ref-cube-with-dbt]: /guides/dbt \ No newline at end of file diff --git a/docs/pages/product/data-modeling/reference/_meta.js b/docs/pages/product/data-modeling/reference/_meta.js index d80bbe9331b8b..548760eb8c7ba 100644 --- a/docs/pages/product/data-modeling/reference/_meta.js +++ b/docs/pages/product/data-modeling/reference/_meta.js @@ -10,6 +10,7 @@ module.exports = { "data-access-policies": "Data access policies", "types-and-formats": "Types and formats", "context-variables": "Context variables", + "cube-package": "cube package", "cube_dbt": "cube_dbt package", "lkml2cube": "lkml2cube package" } \ No newline at end of file diff --git a/docs/pages/reference/python/cube.mdx b/docs/pages/product/data-modeling/reference/cube-package.mdx similarity index 100% rename from docs/pages/reference/python/cube.mdx rename to docs/pages/product/data-modeling/reference/cube-package.mdx diff --git a/docs/pages/reference/_meta.js b/docs/pages/reference/_meta.js index 1d647053bbb08..b73cf842520b4 100644 --- a/docs/pages/reference/_meta.js +++ b/docs/pages/reference/_meta.js @@ -1,4 +1,3 @@ module.exports = { - "python": "Python packages", "errors": "Error messages" -} \ No newline at end of file +} diff --git a/docs/pages/reference/python/_meta.js b/docs/pages/reference/python/_meta.js deleted file mode 100644 index 216caaaaa4b68..0000000000000 --- a/docs/pages/reference/python/_meta.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - "cube": "cube" -} \ No newline at end of file diff --git a/docs/redirects.json b/docs/redirects.json index 7fc1ddaa410d2..30dd119d6e082 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/reference/python/cube", + "destination": "/product/data-modeling/reference/cube-package", + "permanent": true + }, { "source": "/reference/python/lkml2cube", "destination": "/product/data-modeling/reference/lkml2cube", @@ -194,11 +199,6 @@ "destination": "/guides/dbt", "permanent": true }, - { - "source": "/product/data-modeling/reference/pre-aggregations", - "destination": "/reference/data-model/pre-aggregations", - "permanent": true - }, { "source": "/product/data-modeling/advanced/jinja", "destination": "/product/data-modeling/dynamic/jinja", @@ -214,16 +214,6 @@ "destination": "/product/data-modeling/dynamic", "permanent": true }, - { - "source": "/product/data-modeling/reference/measures", - "destination": "/reference/data-model/measures", - "permanent": true - }, - { - "source": "/product/data-modeling/reference/joins", - "destination": "/reference/data-model/joins", - "permanent": true - }, { "source": "/product/data-modeling/fundamentals/syntax", "destination": "/product/data-modeling/syntax", @@ -234,31 +224,11 @@ "destination": "/product/data-modeling/dynamic/schema-execution-environment", "permanent": true }, - { - "source": "/product/data-modeling/reference/types-and-formats", - "destination": "/reference/data-model/types-and-formats", - "permanent": true - }, - { - "source": "/product/data-modeling/reference/cube", - "destination": "/reference/data-model/cube", - "permanent": true - }, { "source": "/product/data-modeling/fundamentals/concepts", "destination": "/product/data-modeling/concepts", "permanent": true }, - { - "source": "/product/data-modeling/reference/dimensions", - "destination": "/reference/data-model/dimensions", - "permanent": true - }, - { - "source": "/product/data-modeling/reference/view", - "destination": "/reference/data-model/view", - "permanent": true - }, { "source": "/product/data-modeling/advanced/code-reusability-extending-cubes", "destination": "/product/data-modeling/concepts/code-reusability-extending-cubes", From 1408b9e370843e66d9b03542e88cb0336249b48d Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Fri, 16 May 2025 22:44:34 +0200 Subject: [PATCH 08/39] docs: Move error reference sections to respective pages --- .../caching/refreshing-pre-aggregations.mdx | 28 ++++- .../concepts/working-with-joins.mdx | 80 +++++++++++-- docs/pages/product/data-modeling/syntax.mdx | 23 +++- docs/pages/reference/_meta.js | 3 - docs/pages/reference/errors.mdx | 112 ------------------ docs/redirects.json | 5 + 6 files changed, 122 insertions(+), 129 deletions(-) delete mode 100644 docs/pages/reference/_meta.js delete mode 100644 docs/pages/reference/errors.mdx diff --git a/docs/pages/product/caching/refreshing-pre-aggregations.mdx b/docs/pages/product/caching/refreshing-pre-aggregations.mdx index f8e248f1402ea..3df61e87e0d3a 100644 --- a/docs/pages/product/caching/refreshing-pre-aggregations.mdx +++ b/docs/pages/product/caching/refreshing-pre-aggregations.mdx @@ -17,5 +17,31 @@ behavior: - `CUBEJS_SCHEDULED_REFRESH_QUERIES_PER_APP_ID` - `CUBEJS_DROP_PRE_AGG_WITHOUT_TOUCH` +## Troubleshooting -[ref-multitenancy]: /product/configuration/advanced/multitenancy \ No newline at end of file +### `Refresh scheduler interval error` + +Sometimes, you might come across the following error: + +```json +{ + "message": "Refresh Scheduler Interval Error", + "error": "Previous interval #2 was not finished with 60000 interval" +} +``` + +It indicates that your refresh worker is overloaded. You probably have a lot of +[tenants][ref-multitenancy], a lot of [pre-aggregations][ref-preaggs] to refresh, +or both. + +If you're using [multitenancy][ref-multitenancy], you'd need to deploy several Cube +clusters (each one per a reduced set of tenants) so there will be multiple refresh +workers which will work only on a subset of your tenants. + +If you're using Cube Cloud, you can use a [production multi-cluster][ref-production-multi-cluster] +that would automatically do this for you. + + +[ref-multitenancy]: /product/configuration/advanced/multitenancy +[ref-preaggs]: /product/caching/using-pre-aggregations +[ref-production-multi-cluster]: /product/deployment/cloud/deployment-types#production-multi-cluster diff --git a/docs/pages/product/data-modeling/concepts/working-with-joins.mdx b/docs/pages/product/data-modeling/concepts/working-with-joins.mdx index 625dfcb359776..caa3a4f62f94d 100644 --- a/docs/pages/product/data-modeling/concepts/working-with-joins.mdx +++ b/docs/pages/product/data-modeling/concepts/working-with-joins.mdx @@ -825,7 +825,58 @@ We can then query the cube as follows: } ``` -## Transitive join pitfalls +## Troubleshooting + +### `Can't find join path` + +Sometimes, you might come across the following error message: `Can't find join path to +join 'cube_a', 'cube_b'`. + +It indicates that a query failed because it includes members from cubes that can't be +joined in order to generate a valid query to the upstream data source. +Please check that you've defined necessary joins and that they have [correct +directions](#transitive-join-pitfalls). + +Also, please consider using [views][ref-schema-ref-view] since they +incapsulate join paths and completely remove the possibility of the error in question. +You might also consider setting the [`public` parameter][ref-cube-public] to `false` +on your cubes to hide them from end users. + +If you’re building a custom data application, you might use the [`meta` endpoint][ref-rest-meta] +of the REST API. It groups cubes into `connectedComponents` to help select those ones +that can be joined together. + +### `Primary key is required when join is defined` + +Sometimes, you might come across the following error message: `cube_a cube: primary key +for 'cube_a' is required when join is defined in order to make aggregates work properly`. + +It indicates that you have a [cube][ref-cube] with joins and [pre-aggregations][ref-preaggs]. +However, that cube doesn't have a primary key. + +When generating SQL queries, Cube uses primary keys to avoid fanouts. A fanout happens +when two tables are joined and a single value gets duplicated in the end result, meaning +that some values can be double counted. + +Please define a [primary key][ref-primary-key] dimension in this cube to make joins and +pre-aggregations work correctly. + +If your data doesn't have a natural primary key, e.g., `id`, you can define a composite +primary key by concatenating most or all of the columns in the table. Example: + +```yml +cubes: + - name: cube_a + # ... + + dimensions: + - name: composite_key + sql: CONCAT(column_a, '-', column_b, '-', column_c) + type: string + primary_key: true +``` + +### Transitive join pitfalls Let's consider an example where we have a many-to-many relationship between `users` and `companies` through the `companies_to_users` cube: @@ -912,47 +963,47 @@ cubes: SELECT 1 AS id, 'Ali' AS name UNION ALL SELECT 2 AS id, 'Bob' AS name UNION ALL SELECT 3 AS id, 'Eve' AS name - + measures: - name: count type: count - + dimensions: - name: id sql: id type: string primary_key: true - + - name: companies sql: > SELECT 11 AS id, 'Acme Corporation' AS name UNION ALL SELECT 12 AS id, 'Stark Industries' AS name - + dimensions: - name: id sql: id type: string primary_key: true - + - name: name sql: name type: string - + - name: companies_to_users sql: > SELECT 11 AS company_id, 1 AS user_id UNION ALL SELECT 11 AS company_id, 2 AS user_id UNION ALL SELECT 12 AS company_id, 3 AS user_id - + joins: - name: users sql: "{CUBE}.user_id = {users.id}" relationship: one_to_many - + - name: companies sql: "{CUBE}.company_id = {companies.id}" relationship: one_to_many - + dimensions: - name: id # Joins require a primary key, so we'll create one on-the-fly @@ -1029,7 +1080,7 @@ cubes: # - name: users # sql: "{CUBE}.user_id = {users.id}" # relationship: one_to_many - + - name: companies sql: "{CUBE}.company_id = {companies.id}" relationship: one_to_many @@ -1050,4 +1101,9 @@ also shows that you can reach `companies` from `cubes` by going left to right. [ref-schema-ref-joins-relationship]: /product/data-modeling/reference/joins#relationship [self-many-to-many-no-assoc-table]: #many-to-many-relationship-without-an-associative-table [self-join-direction]: /product/data-modeling/concepts/working-with-joins#directions-of-joins -[ref-visual-model]: /product/workspace/visual-model \ No newline at end of file +[ref-visual-model]: /product/workspace/visual-model +[ref-cube]: /product/data-modeling/reference/cube +[ref-cube-public]: /product/data-modeling/reference/cube#public +[ref-rest-meta]: /product/apis-integrations/rest-api/reference#v1meta +[ref-preaggs]: /product/data-modeling/concepts#pre-aggregations +[ref-primary-key]: /product/data-modeling/reference/dimensions#primary_key diff --git a/docs/pages/product/data-modeling/syntax.mdx b/docs/pages/product/data-modeling/syntax.mdx index da8b5e6964a77..299e022281a7d 100644 --- a/docs/pages/product/data-modeling/syntax.mdx +++ b/docs/pages/product/data-modeling/syntax.mdx @@ -746,6 +746,25 @@ variables][ref-context-variables] within your data model. They are generally useful for two purposes: optimizing generated SQL queries and defining dynamic data models. +## Troubleshooting + +### `Can't parse timestamp` + +Sometimes, you might come across the following error message: `Can't parse timestamp: +2023-11-07T14:33:23.16.000`. + +It indicates that the data source was unable to recognize the value of a [time +dimension][ref-time-dimension] as a timestamp. Please check that the [SQL +expression](#sql-expressions) of this time dimension evaluates to a `TIMESTAMP` type. + + + +Check [this recipe][ref-recipe-string-time-dimensions] to see how you can work around +string values in time dimensions. + + + + [self-folder-structure]: #folder-structure [self-naming]: #naming [self-syntax]: #code-syntax @@ -772,4 +791,6 @@ defining dynamic data models. [ref-data-blending]: /product/data-modeling/concepts/data-blending [link-js-template-literals]: https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/Strings#embedding_javascript [link-python-reserved-words]: https://docs.python.org/3/reference/lexical_analysis.html#keywords -[ref-dax-api-date-hierarchies]: /product/apis-integrations/dax-api#date-hierarchies \ No newline at end of file +[ref-dax-api-date-hierarchies]: /product/apis-integrations/dax-api#date-hierarchies +[ref-time-dimension]: /product/data-modeling/concepts#time-dimensions +[ref-recipe-string-time-dimensions]: /guides/recipes/data-modeling/string-time-dimensions diff --git a/docs/pages/reference/_meta.js b/docs/pages/reference/_meta.js deleted file mode 100644 index b73cf842520b4..0000000000000 --- a/docs/pages/reference/_meta.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - "errors": "Error messages" -} diff --git a/docs/pages/reference/errors.mdx b/docs/pages/reference/errors.mdx deleted file mode 100644 index d6e508a4bf7b9..0000000000000 --- a/docs/pages/reference/errors.mdx +++ /dev/null @@ -1,112 +0,0 @@ -# Error message reference - -Working with Cube, you might encounter various error messages in logs and API responses. -This page lists some of them with some practical advice on mitigation. - -## `Aggregate function calls cannot be nested` - -``` -Aggregate function calls cannot be nested -``` - -Error message above comes from an upsream data source and indicates that -there's a nested aggregation in a query, e.g., that there's a measure -with an aggregation that references another measure with an aggregation. - -**Please check your data model for such cases.** - -Nested aggregations are indeed useful in some cases. Please [see a -recipe](/guides/recipes/data-modeling/nested-aggregates) that explains -how to model them. - - -## `Can't find join path` - -``` -Can't find join path to join 'cube_a', 'cube_b' -``` - -Error message above indicates that a query failed because it includes members from cubes -that can't be joined in order to generate a valid query to the upstream data source. - -**Please check that you've defined necessary [joins](/product/data-modeling/reference/joins) -and that they have [correct directions](/product/data-modeling/concepts/working-with-joins#transitive-join-pitfalls).** - -Also, please consider using [views](/product/data-modeling/reference/view) since they -incapsulate join paths and completely remove the possibility of the error in question. -You might also consider setting [`public: false`](/product/data-modeling/reference/cube#public) -on your cubes to hide them from end users. - -If you’re building a custom data application, you might use the [`meta` endpoint](/product/apis-integrations/rest-api/reference#v1meta) -of the REST API. It groups cubes into `connectedComponents` to help select those ones -that can be joined together. - -## `Can't parse timestamp` - -``` -Can't parse timestamp: 2023-11-07T14:33:23.16.000 -``` - -Error message above indicates that the data source was unable to recognize -the value of a [time dimension](/product/data-modeling/reference/types-and-formats#time-1) -as a timestamp. - -**Please check that the [SQL expression](/product/data-modeling/syntax#sql-expressions) -of this time dimension evaluates to a `TIMESTAMP` type.** - -Also, check this recipe to see how you can [work around string values in -time dimensions](/guides/recipes/data-modeling/string-time-dimensions). - -## `Primary key is required when join is defined` - -``` -cube_a cube: primary key for 'cube_a' is required when join is defined -in order to make aggregates work properly -``` - -Error message above indicates that you have a [cube](/product/data-modeling/reference/cube) -with [joins](/product/data-modeling/reference/joins) and -[pre-aggregations](/product/data-modeling/reference/pre-aggregations). However, that cube -doesn't have a primary key. - -When generating SQL queries, Cube uses primary keys to avoid fanouts. -A fanout happens when two tables are joined and a single value gets duplicated in the end result, -meaning that some values can be double counted. - -**Please define a [primary key](/product/data-modeling/reference/dimensions#primary_key) dimension in this cube to make joins and pre-aggregations work correctly.** - -If your data doesn't have a natural primary key, e.g., `id`, you can define a composite -primary key by concatenating most or all of the columns in the table, e.g.: - - -```yml -cubes: - - name: cube_a - # ... - - dimensions: - - name: composite_key - sql: CONCAT(column_a, '-', column_b, '-', column_c) - type: string - primary_key: true -``` - -## `Refresh Scheduler Interval Error` - -```json -{ - "message": "Refresh Scheduler Interval Error", - "error": "Previous interval #2 was not finished with 60000 interval" -} -``` - -Error message above indicates that your refresh worker is overloaded. You probably have -a lot of [tenants](/product/configuration/advanced/multitenancy), a lot of -[pre-aggregations](/product/caching/using-pre-aggregations) to refresh, or both. - -**If you're using [multitenancy](/product/configuration/advanced/multitenancy), you'd need -to deploy several Cube clusters (each one per a reduced set of tenants) so there will be -multiple refresh workers which will work only on a subset of your tenants.** - -If you're using Cube Cloud, you can use a [production multi-cluster](/product/deployment/cloud/deployment-types#production-multi-cluster) -that would automatically do this for you. \ No newline at end of file diff --git a/docs/redirects.json b/docs/redirects.json index 30dd119d6e082..f13d6ab077f68 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/reference", + "destination": "/", + "permanent": true + }, { "source": "/reference/python/cube", "destination": "/product/data-modeling/reference/cube-package", From c945d4e6790b1c7dc57b6ce2874ae84a723ebc39 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Fri, 16 May 2025 22:50:21 +0200 Subject: [PATCH 09/39] docs: Remove reference section from navigation --- docs/pages/_meta.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/docs/pages/_meta.js b/docs/pages/_meta.js index dddc3a1b1261c..51268106d07ca 100644 --- a/docs/pages/_meta.js +++ b/docs/pages/_meta.js @@ -32,11 +32,6 @@ module.exports = { title: "Documentation", }, - reference: { - type: "page", - title: "Reference", - }, - guides: { type: "page", title: "Guides", From 9b777e6e23ac6c88031768b5681ec1eed289fb18 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Fri, 16 May 2025 22:59:47 +0200 Subject: [PATCH 10/39] docs: Move active users recipe to data modeling section --- docs/pages/guides/recipes.mdx | 2 +- docs/pages/guides/recipes/analytics/_meta.js | 1 - docs/pages/product/data-modeling/_meta.js | 3 ++- docs/pages/product/data-modeling/recipes/_meta.js | 3 +++ .../data-modeling/recipes}/active-users.mdx | 0 docs/redirects.json | 5 +++++ 6 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 docs/pages/product/data-modeling/recipes/_meta.js rename docs/pages/{guides/recipes/analytics => product/data-modeling/recipes}/active-users.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index 9131b11c42623..d09f780a6b0ad 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -4,7 +4,7 @@ These recipes will show you the best practices of using Cube. ### Analytics -- [Calculating daily, weekly, monthly active users](/guides/recipes/analytics/active-users) +- [Calculating daily, weekly, monthly active users](/product/data-modeling/recipes/active-users) - [Calculating the internal rate of return (XIRR)](/guides/recipes/analytics/xirr) - [Implementing event analytics](/guides/recipes/analytics/event-analytics) - [Implementing funnel analysis](/guides/recipes/analytics/funnels) diff --git a/docs/pages/guides/recipes/analytics/_meta.js b/docs/pages/guides/recipes/analytics/_meta.js index ab5c197514aed..b3dce8afb4883 100644 --- a/docs/pages/guides/recipes/analytics/_meta.js +++ b/docs/pages/guides/recipes/analytics/_meta.js @@ -1,5 +1,4 @@ module.exports = { - "active-users": "Daily, Weekly, Monthly Active Users (DAU, WAU, MAU)", "xirr": "XIRR", "event-analytics": "Implementing event analytics", "cohort-retention": "Implementing retention analysis & cohorts", diff --git a/docs/pages/product/data-modeling/_meta.js b/docs/pages/product/data-modeling/_meta.js index 7540fc627291d..42a49700843ff 100644 --- a/docs/pages/product/data-modeling/_meta.js +++ b/docs/pages/product/data-modeling/_meta.js @@ -3,5 +3,6 @@ module.exports = { "concepts": "Concepts", "syntax": "Syntax", "dynamic": "Dynamic data models", - "reference": "Reference" + "reference": "Reference", + "recipes": "Recipes" } \ No newline at end of file diff --git a/docs/pages/product/data-modeling/recipes/_meta.js b/docs/pages/product/data-modeling/recipes/_meta.js new file mode 100644 index 0000000000000..69614f7459878 --- /dev/null +++ b/docs/pages/product/data-modeling/recipes/_meta.js @@ -0,0 +1,3 @@ +module.exports = { + "active-users": "Active users" +} diff --git a/docs/pages/guides/recipes/analytics/active-users.mdx b/docs/pages/product/data-modeling/recipes/active-users.mdx similarity index 100% rename from docs/pages/guides/recipes/analytics/active-users.mdx rename to docs/pages/product/data-modeling/recipes/active-users.mdx diff --git a/docs/redirects.json b/docs/redirects.json index f13d6ab077f68..7751fc1d89ee2 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/recipes/analytics/active-users", + "destination": "/product/data-modeling/recipes/active-users", + "permanent": true + }, { "source": "/reference", "destination": "/", From 2148075f2624ecaee91863be2674c63cd867e0dd Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Fri, 16 May 2025 23:08:57 +0200 Subject: [PATCH 11/39] docs: Move event analytics recipe to data modeling section --- docs/pages/guides/recipes.mdx | 2 +- docs/pages/guides/recipes/analytics/_meta.js | 1 - docs/pages/product/data-modeling/recipes/_meta.js | 3 ++- .../data-modeling/recipes}/event-analytics.mdx | 0 docs/redirects.json | 5 +++++ 5 files changed, 8 insertions(+), 3 deletions(-) rename docs/pages/{guides/recipes/analytics => product/data-modeling/recipes}/event-analytics.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index d09f780a6b0ad..bd38ffa9208a9 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -6,7 +6,7 @@ These recipes will show you the best practices of using Cube. - [Calculating daily, weekly, monthly active users](/product/data-modeling/recipes/active-users) - [Calculating the internal rate of return (XIRR)](/guides/recipes/analytics/xirr) -- [Implementing event analytics](/guides/recipes/analytics/event-analytics) +- [Implementing event analytics](/product/data-modeling/recipes/event-analytics) - [Implementing funnel analysis](/guides/recipes/analytics/funnels) - [Implementing retention analysis & cohorts](/guides/recipes/analytics/cohort-retention) diff --git a/docs/pages/guides/recipes/analytics/_meta.js b/docs/pages/guides/recipes/analytics/_meta.js index b3dce8afb4883..b793cc4fa7b41 100644 --- a/docs/pages/guides/recipes/analytics/_meta.js +++ b/docs/pages/guides/recipes/analytics/_meta.js @@ -1,6 +1,5 @@ module.exports = { "xirr": "XIRR", - "event-analytics": "Implementing event analytics", "cohort-retention": "Implementing retention analysis & cohorts", "funnels": "Implementing Funnel Analysis" } \ No newline at end of file diff --git a/docs/pages/product/data-modeling/recipes/_meta.js b/docs/pages/product/data-modeling/recipes/_meta.js index 69614f7459878..ee1598a6a9224 100644 --- a/docs/pages/product/data-modeling/recipes/_meta.js +++ b/docs/pages/product/data-modeling/recipes/_meta.js @@ -1,3 +1,4 @@ module.exports = { - "active-users": "Active users" + "active-users": "Active users", + "event-analytics": "Event analytics" } diff --git a/docs/pages/guides/recipes/analytics/event-analytics.mdx b/docs/pages/product/data-modeling/recipes/event-analytics.mdx similarity index 100% rename from docs/pages/guides/recipes/analytics/event-analytics.mdx rename to docs/pages/product/data-modeling/recipes/event-analytics.mdx diff --git a/docs/redirects.json b/docs/redirects.json index 7751fc1d89ee2..c0ddf280718b3 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/recipes/analytics/event-analytics", + "destination": "/product/data-modeling/recipes/event-analytics", + "permanent": true + }, { "source": "/guides/recipes/analytics/active-users", "destination": "/product/data-modeling/recipes/active-users", From 3ffc6823263fd51f99befc32118cc47e1b05e501 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Fri, 16 May 2025 23:12:33 +0200 Subject: [PATCH 12/39] docs: Move cohort retention recipe to data modeling section --- docs/pages/guides/recipes.mdx | 2 +- docs/pages/guides/recipes/analytics/_meta.js | 1 - docs/pages/product/data-modeling/recipes/_meta.js | 3 ++- .../data-modeling/recipes}/cohort-retention.mdx | 0 docs/redirects.json | 5 +++++ 5 files changed, 8 insertions(+), 3 deletions(-) rename docs/pages/{guides/recipes/analytics => product/data-modeling/recipes}/cohort-retention.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index bd38ffa9208a9..f9035a4b6553c 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -8,7 +8,7 @@ These recipes will show you the best practices of using Cube. - [Calculating the internal rate of return (XIRR)](/guides/recipes/analytics/xirr) - [Implementing event analytics](/product/data-modeling/recipes/event-analytics) - [Implementing funnel analysis](/guides/recipes/analytics/funnels) -- [Implementing retention analysis & cohorts](/guides/recipes/analytics/cohort-retention) +- [Implementing retention analysis & cohorts](/product/data-modeling/recipes/cohort-retention) ### Authentication & Authorization diff --git a/docs/pages/guides/recipes/analytics/_meta.js b/docs/pages/guides/recipes/analytics/_meta.js index b793cc4fa7b41..561a3a4c883af 100644 --- a/docs/pages/guides/recipes/analytics/_meta.js +++ b/docs/pages/guides/recipes/analytics/_meta.js @@ -1,5 +1,4 @@ module.exports = { "xirr": "XIRR", - "cohort-retention": "Implementing retention analysis & cohorts", "funnels": "Implementing Funnel Analysis" } \ No newline at end of file diff --git a/docs/pages/product/data-modeling/recipes/_meta.js b/docs/pages/product/data-modeling/recipes/_meta.js index ee1598a6a9224..2afdc75b6dee6 100644 --- a/docs/pages/product/data-modeling/recipes/_meta.js +++ b/docs/pages/product/data-modeling/recipes/_meta.js @@ -1,4 +1,5 @@ module.exports = { "active-users": "Active users", - "event-analytics": "Event analytics" + "event-analytics": "Event analytics", + "cohort-retention": "Retention analysis" } diff --git a/docs/pages/guides/recipes/analytics/cohort-retention.mdx b/docs/pages/product/data-modeling/recipes/cohort-retention.mdx similarity index 100% rename from docs/pages/guides/recipes/analytics/cohort-retention.mdx rename to docs/pages/product/data-modeling/recipes/cohort-retention.mdx diff --git a/docs/redirects.json b/docs/redirects.json index c0ddf280718b3..9650c04c9ba4f 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/recipes/analytics/cohort-retention", + "destination": "/product/data-modeling/recipes/cohort-retention", + "permanent": true + }, { "source": "/guides/recipes/analytics/event-analytics", "destination": "/product/data-modeling/recipes/event-analytics", From 9ef80f94e7d86c7390d29f8326dc41e0a06a7ec6 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Fri, 16 May 2025 23:15:56 +0200 Subject: [PATCH 13/39] docs: Move funnel analysis recipe to data modeling section --- docs/pages/guides/recipes.mdx | 2 +- docs/pages/guides/recipes/analytics/_meta.js | 3 +-- docs/pages/product/data-modeling/recipes/_meta.js | 1 + .../analytics => product/data-modeling/recipes}/funnels.mdx | 0 .../product/data-modeling/reference/pre-aggregations.mdx | 2 +- docs/redirects.json | 5 +++++ 6 files changed, 9 insertions(+), 4 deletions(-) rename docs/pages/{guides/recipes/analytics => product/data-modeling/recipes}/funnels.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index f9035a4b6553c..6f5138a07e9ce 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -7,7 +7,7 @@ These recipes will show you the best practices of using Cube. - [Calculating daily, weekly, monthly active users](/product/data-modeling/recipes/active-users) - [Calculating the internal rate of return (XIRR)](/guides/recipes/analytics/xirr) - [Implementing event analytics](/product/data-modeling/recipes/event-analytics) -- [Implementing funnel analysis](/guides/recipes/analytics/funnels) +- [Implementing funnel analysis](/product/data-modeling/recipes/funnels) - [Implementing retention analysis & cohorts](/product/data-modeling/recipes/cohort-retention) ### Authentication & Authorization diff --git a/docs/pages/guides/recipes/analytics/_meta.js b/docs/pages/guides/recipes/analytics/_meta.js index 561a3a4c883af..5e58e48b5a231 100644 --- a/docs/pages/guides/recipes/analytics/_meta.js +++ b/docs/pages/guides/recipes/analytics/_meta.js @@ -1,4 +1,3 @@ module.exports = { - "xirr": "XIRR", - "funnels": "Implementing Funnel Analysis" + "xirr": "XIRR" } \ No newline at end of file diff --git a/docs/pages/product/data-modeling/recipes/_meta.js b/docs/pages/product/data-modeling/recipes/_meta.js index 2afdc75b6dee6..1418f156bedb4 100644 --- a/docs/pages/product/data-modeling/recipes/_meta.js +++ b/docs/pages/product/data-modeling/recipes/_meta.js @@ -1,5 +1,6 @@ module.exports = { "active-users": "Active users", "event-analytics": "Event analytics", + "funnels": "Funnel analysis", "cohort-retention": "Retention analysis" } diff --git a/docs/pages/guides/recipes/analytics/funnels.mdx b/docs/pages/product/data-modeling/recipes/funnels.mdx similarity index 100% rename from docs/pages/guides/recipes/analytics/funnels.mdx rename to docs/pages/product/data-modeling/recipes/funnels.mdx diff --git a/docs/pages/product/data-modeling/reference/pre-aggregations.mdx b/docs/pages/product/data-modeling/reference/pre-aggregations.mdx index 9fcd0404588ee..fc2755becee8c 100644 --- a/docs/pages/product/data-modeling/reference/pre-aggregations.mdx +++ b/docs/pages/product/data-modeling/reference/pre-aggregations.mdx @@ -1737,7 +1737,7 @@ cubes: [ref-cube-refreshkey]: /product/data-modeling/reference/cube#refresh_key [ref-production-checklist-refresh]: /product/deployment/production-checklist#set-up-refresh-worker -[ref-recipe-funnels]: /guides/recipes/analytics/funnels +[ref-recipe-funnels]: /product/data-modeling/recipes/funnels [ref-sqlalias]: /product/data-modeling/reference/cube#sql_alias [ref-schema-ref-cube-datasource]: /product/data-modeling/reference/cube#data_source diff --git a/docs/redirects.json b/docs/redirects.json index 9650c04c9ba4f..73741831f1157 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/recipes/analytics/funnels", + "destination": "/product/data-modeling/recipes/funnels", + "permanent": true + }, { "source": "/guides/recipes/analytics/cohort-retention", "destination": "/product/data-modeling/recipes/cohort-retention", From cb04bc08f3c2b49705f1698cbf3534dd2a02a8d4 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Fri, 16 May 2025 23:21:01 +0200 Subject: [PATCH 14/39] docs: Move XIRR recipe to data modeling section --- docs/pages/guides/recipes.mdx | 2 +- docs/pages/guides/recipes/_meta.js | 1 - docs/pages/guides/recipes/analytics/_meta.js | 3 --- docs/pages/product/apis-integrations/dax-api/reference.mdx | 2 +- docs/pages/product/apis-integrations/sql-api/reference.mdx | 2 +- docs/pages/product/data-modeling/recipes/_meta.js | 3 ++- .../analytics => product/data-modeling/recipes}/xirr.mdx | 0 docs/redirects.json | 5 +++++ 8 files changed, 10 insertions(+), 8 deletions(-) delete mode 100644 docs/pages/guides/recipes/analytics/_meta.js rename docs/pages/{guides/recipes/analytics => product/data-modeling/recipes}/xirr.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index 6f5138a07e9ce..1ac41e8d5d10f 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -5,7 +5,7 @@ These recipes will show you the best practices of using Cube. ### Analytics - [Calculating daily, weekly, monthly active users](/product/data-modeling/recipes/active-users) -- [Calculating the internal rate of return (XIRR)](/guides/recipes/analytics/xirr) +- [Calculating the internal rate of return (XIRR)](/product/data-modeling/recipes/xirr) - [Implementing event analytics](/product/data-modeling/recipes/event-analytics) - [Implementing funnel analysis](/product/data-modeling/recipes/funnels) - [Implementing retention analysis & cohorts](/product/data-modeling/recipes/cohort-retention) diff --git a/docs/pages/guides/recipes/_meta.js b/docs/pages/guides/recipes/_meta.js index d5048756a4f09..8666f4c050d73 100644 --- a/docs/pages/guides/recipes/_meta.js +++ b/docs/pages/guides/recipes/_meta.js @@ -1,5 +1,4 @@ module.exports = { - "analytics": "Analytics", "access-control": "Access control", "auth": "Authentication & Authorization", "data-modeling": "Data modeling", diff --git a/docs/pages/guides/recipes/analytics/_meta.js b/docs/pages/guides/recipes/analytics/_meta.js deleted file mode 100644 index 5e58e48b5a231..0000000000000 --- a/docs/pages/guides/recipes/analytics/_meta.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - "xirr": "XIRR" -} \ No newline at end of file diff --git a/docs/pages/product/apis-integrations/dax-api/reference.mdx b/docs/pages/product/apis-integrations/dax-api/reference.mdx index 8800ed1df1f0d..658a9e2ea4714 100644 --- a/docs/pages/product/apis-integrations/dax-api/reference.mdx +++ b/docs/pages/product/apis-integrations/dax-api/reference.mdx @@ -106,7 +106,7 @@ of the DAX documentation. -See the [XIRR recipe](/guides/recipes/analytics/xirr) for more details. +See the [XIRR recipe](/product/data-modeling/recipes/xirr) for more details. diff --git a/docs/pages/product/apis-integrations/sql-api/reference.mdx b/docs/pages/product/apis-integrations/sql-api/reference.mdx index aeb9235ac3453..734a00f8576d1 100644 --- a/docs/pages/product/apis-integrations/sql-api/reference.mdx +++ b/docs/pages/product/apis-integrations/sql-api/reference.mdx @@ -416,7 +416,7 @@ of the PostgreSQL documentation. -See the [XIRR recipe](/guides/recipes/analytics/xirr) for more details. +See the [XIRR recipe](/product/data-modeling/recipes/xirr) for more details. diff --git a/docs/pages/product/data-modeling/recipes/_meta.js b/docs/pages/product/data-modeling/recipes/_meta.js index 1418f156bedb4..01a637951b880 100644 --- a/docs/pages/product/data-modeling/recipes/_meta.js +++ b/docs/pages/product/data-modeling/recipes/_meta.js @@ -2,5 +2,6 @@ module.exports = { "active-users": "Active users", "event-analytics": "Event analytics", "funnels": "Funnel analysis", - "cohort-retention": "Retention analysis" + "cohort-retention": "Retention analysis", + "xirr": "Rate of return" } diff --git a/docs/pages/guides/recipes/analytics/xirr.mdx b/docs/pages/product/data-modeling/recipes/xirr.mdx similarity index 100% rename from docs/pages/guides/recipes/analytics/xirr.mdx rename to docs/pages/product/data-modeling/recipes/xirr.mdx diff --git a/docs/redirects.json b/docs/redirects.json index 73741831f1157..e7c466c390c29 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/recipes/analytics/xirr", + "destination": "/product/data-modeling/recipes/xirr", + "permanent": true + }, { "source": "/guides/recipes/analytics/funnels", "destination": "/product/data-modeling/recipes/funnels", From 770e73d111110de2de9542b85d7515c1b077df1e Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 13:01:50 +0200 Subject: [PATCH 15/39] docs: Move mandatory filters recipe to auth section --- docs/pages/guides/recipes.mdx | 2 +- .../guides/recipes/access-control/_meta.js | 1 - docs/pages/product/auth/_meta.js | 3 +- docs/pages/product/auth/recipes/_meta.js | 3 + .../recipes/enforcing-mandatory-filters.mdx | 133 ++++++++++++++++++ docs/redirects.json | 5 + 6 files changed, 144 insertions(+), 3 deletions(-) create mode 100644 docs/pages/product/auth/recipes/_meta.js create mode 100644 docs/pages/product/auth/recipes/enforcing-mandatory-filters.mdx diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index 1ac41e8d5d10f..7b016577f11bb 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -47,7 +47,7 @@ These recipes will show you the best practices of using Cube. - [Enforcing role-based access](/guides/recipes/access-control/role-based-access) - [Enforcing column-based access](/guides/recipes/access-control/column-based-access) -- [Enforcing mandatory filters](/guides/recipes/access-control/enforcing-mandatory-filters) +- [Enforcing mandatory filters](/product/auth/recipes/enforcing-mandatory-filters) - [Controlling access to cubes and views](/guides/recipes/access-control/controlling-access-to-cubes-and-views) ### Multitenancy diff --git a/docs/pages/guides/recipes/access-control/_meta.js b/docs/pages/guides/recipes/access-control/_meta.js index 309b053faef32..9b6767ac76e90 100644 --- a/docs/pages/guides/recipes/access-control/_meta.js +++ b/docs/pages/guides/recipes/access-control/_meta.js @@ -1,5 +1,4 @@ module.exports = { - "enforcing-mandatory-filters": "Enforcing mandatory filters", "column-based-access": "Enforcing column-based access", "role-based-access": "Enforcing role-based access", "controlling-access-to-cubes-and-views": "Controlling access to cubes and views", diff --git a/docs/pages/product/auth/_meta.js b/docs/pages/product/auth/_meta.js index 0285fb2eb41ea..47798ab3c9c24 100644 --- a/docs/pages/product/auth/_meta.js +++ b/docs/pages/product/auth/_meta.js @@ -3,5 +3,6 @@ module.exports = { "context": "Security context", "member-level-security": "Member-level security", "row-level-security": "Row-level security", - "data-access-policies": "Data access policies" + "data-access-policies": "Data access policies", + "recipes": "Recipes" } \ No newline at end of file diff --git a/docs/pages/product/auth/recipes/_meta.js b/docs/pages/product/auth/recipes/_meta.js new file mode 100644 index 0000000000000..edcb00e84dc0e --- /dev/null +++ b/docs/pages/product/auth/recipes/_meta.js @@ -0,0 +1,3 @@ +module.exports = { + "enforcing-mandatory-filters": "Mandatory filters" +} diff --git a/docs/pages/product/auth/recipes/enforcing-mandatory-filters.mdx b/docs/pages/product/auth/recipes/enforcing-mandatory-filters.mdx new file mode 100644 index 0000000000000..2a71d5fcfb8ee --- /dev/null +++ b/docs/pages/product/auth/recipes/enforcing-mandatory-filters.mdx @@ -0,0 +1,133 @@ +# Enforcing mandatory filters + +## Use case + +Let's imagine that on New Year's Eve, December 30th, 2019, we renamed our store, +changed the design, and started selling completely different products. At the +same time, we decided to reuse the database for the new store. So, we'd like to +only show orders created after December 30th, 2019. In the recipe below, we'll +learn how to add mandatory filters to all queries. + +## Configuration + +To enforce mandatory filters we'll use the +[`queryRewrite`](/product/auth/context#using-queryrewrite) parameter in the +`cube.js` configuration file. + +To solve this, we add a filter that will apply to all queries. This will make +sure we only show orders created after December 30th, 2019. + +```javascript +module.exports = { + queryRewrite: (query) => { + query.filters.push({ + member: `orders.created_at`, + operator: "afterDate", + values: ["2019-12-30"], + }); + + return query; + }, +}; +``` + +## Query + +To get the orders we will send two queries with filters by status: + +```bash +# Completed orders +curl cube:4000/cubejs-api/v1/load \ + -H "Authorization: eeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoib3BlcmF0b3IiLCJpYXQiOjE2Mjg3NDUwNDUsImV4cCI6MTgwMTU0NTA0NX0.VErb2t7Bc43ryRwaOiEgXuU5KiolCT-69eI_i2pRq4o" \ + 'query={"measures": [], "order": [["Users.created_at", "asc"]], "dimensions": ["orders.number", "orders.created_at"], + "filters": [ + { + "member": "orders.status", + "operator": "equals", + "values": ["completed"] + } + ], + "limit": 5 + }' +``` + +```bash +# Shipped orders +curl cube:4000/cubejs-api/v1/load \ + -H "Authorization: eeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoib3BlcmF0b3IiLCJpYXQiOjE2Mjg3NDUwNDUsImV4cCI6MTgwMTU0NTA0NX0.VErb2t7Bc43ryRwaOiEgXuU5KiolCT-69eI_i2pRq4o" \ + 'query={"measures": [], "order": [["orders.created_at", "asc"]], "dimensions": ["orders.number", "orders.created_at"], + "filters": [ + { + "member": "orders.status", + "operator": "equals", + "values": ["shipped"] + } + ], + "limit": 5 + }' +``` + +## Result + +We have received orders created after December 30th, 2019. + +Completed orders: + +```javascript +[ + { + "orders.number": 78, + "orders.created_at": "2020-01-01T00:00:00.000", + }, + { + "orders.number": 43, + "orders.created_at": "2020-01-02T00:00:00.000", + }, + { + "orders.number": 87, + "orders.created_at": "2020-01-04T00:00:00.000", + }, + { + "orders.number": 45, + "orders.created_at": "2020-01-04T00:00:00.000", + }, + { + "orders.number": 28, + "orders.created_at": "2020-01-05T00:00:00.000", + }, +]; +``` + +Shipped orders: + +```javascript +[ + { + "orders.number": 57, + "orders.created_at": "2019-12-31T00:00:00.000", + }, + { + "orders.number": 38, + "orders.created_at": "2020-01-01T00:00:00.000", + }, + { + "orders.number": 10, + "orders.created_at": "2020-01-02T00:00:00.000", + }, + { + "orders.number": 19, + "orders.created_at": "2020-01-02T00:00:00.000", + }, + { + "orders.number": 15, + "orders.created_at": "2020-01-02T00:00:00.000", + }, +]; +``` + +## Source code + +Please feel free to check out the +[full source code](https://github.com/cube-js/cube/tree/master/examples/recipes/mandatory-filters) +or run it with the `docker-compose up` command. You'll see the result, including +queried data, in the console. diff --git a/docs/redirects.json b/docs/redirects.json index e7c466c390c29..acf50c92ec151 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/recipes/access-control/enforcing-mandatory-filters", + "destination": "/product/auth/recipes/enforcing-mandatory-filters", + "permanent": true + }, { "source": "/guides/recipes/analytics/xirr", "destination": "/product/data-modeling/recipes/xirr", From 90e6e9e08f8d5edb900cdd01ae47a269b5fddaf7 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 13:06:58 +0200 Subject: [PATCH 16/39] docs: Move column-based access recipe to auth section --- docs/pages/guides/recipes.mdx | 2 +- docs/pages/guides/recipes/access-control/_meta.js | 1 - docs/pages/product/auth/recipes/_meta.js | 3 ++- .../auth/recipes}/column-based-access.mdx | 0 docs/redirects.json | 5 +++++ 5 files changed, 8 insertions(+), 3 deletions(-) rename docs/pages/{guides/recipes/access-control => product/auth/recipes}/column-based-access.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index 7b016577f11bb..1956b47617fe6 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -46,7 +46,7 @@ These recipes will show you the best practices of using Cube. ### Access control - [Enforcing role-based access](/guides/recipes/access-control/role-based-access) -- [Enforcing column-based access](/guides/recipes/access-control/column-based-access) +- [Enforcing column-based access](/product/auth/recipes/column-based-access) - [Enforcing mandatory filters](/product/auth/recipes/enforcing-mandatory-filters) - [Controlling access to cubes and views](/guides/recipes/access-control/controlling-access-to-cubes-and-views) diff --git a/docs/pages/guides/recipes/access-control/_meta.js b/docs/pages/guides/recipes/access-control/_meta.js index 9b6767ac76e90..ceb61b8fc3e2a 100644 --- a/docs/pages/guides/recipes/access-control/_meta.js +++ b/docs/pages/guides/recipes/access-control/_meta.js @@ -1,5 +1,4 @@ module.exports = { - "column-based-access": "Enforcing column-based access", "role-based-access": "Enforcing role-based access", "controlling-access-to-cubes-and-views": "Controlling access to cubes and views", "using-different-schemas-for-tenants": "Using different data models for tenants" diff --git a/docs/pages/product/auth/recipes/_meta.js b/docs/pages/product/auth/recipes/_meta.js index edcb00e84dc0e..6d650d18dc6dd 100644 --- a/docs/pages/product/auth/recipes/_meta.js +++ b/docs/pages/product/auth/recipes/_meta.js @@ -1,3 +1,4 @@ module.exports = { - "enforcing-mandatory-filters": "Mandatory filters" + "enforcing-mandatory-filters": "Mandatory filters", + "column-based-access": "Column-based access" } diff --git a/docs/pages/guides/recipes/access-control/column-based-access.mdx b/docs/pages/product/auth/recipes/column-based-access.mdx similarity index 100% rename from docs/pages/guides/recipes/access-control/column-based-access.mdx rename to docs/pages/product/auth/recipes/column-based-access.mdx diff --git a/docs/redirects.json b/docs/redirects.json index acf50c92ec151..02d7ee3239a18 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/recipes/access-control/column-based-access", + "destination": "/product/auth/recipes/column-based-access", + "permanent": true + }, { "source": "/guides/recipes/access-control/enforcing-mandatory-filters", "destination": "/product/auth/recipes/enforcing-mandatory-filters", From 1e492e22e380aa14014cc897e0fb6923fb84af48 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 13:12:42 +0200 Subject: [PATCH 17/39] docs: Move role-based access recipe to auth section --- docs/pages/guides/recipes.mdx | 2 +- docs/pages/guides/recipes/access-control/_meta.js | 1 - docs/pages/product/auth/recipes/_meta.js | 3 ++- .../auth/recipes}/role-based-access.mdx | 0 docs/redirects.json | 5 +++++ 5 files changed, 8 insertions(+), 3 deletions(-) rename docs/pages/{guides/recipes/access-control => product/auth/recipes}/role-based-access.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index 1956b47617fe6..6c6066f2d967b 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -45,7 +45,7 @@ These recipes will show you the best practices of using Cube. ### Access control -- [Enforcing role-based access](/guides/recipes/access-control/role-based-access) +- [Enforcing role-based access](/product/auth/recipes/role-based-access) - [Enforcing column-based access](/product/auth/recipes/column-based-access) - [Enforcing mandatory filters](/product/auth/recipes/enforcing-mandatory-filters) - [Controlling access to cubes and views](/guides/recipes/access-control/controlling-access-to-cubes-and-views) diff --git a/docs/pages/guides/recipes/access-control/_meta.js b/docs/pages/guides/recipes/access-control/_meta.js index ceb61b8fc3e2a..350254498bf58 100644 --- a/docs/pages/guides/recipes/access-control/_meta.js +++ b/docs/pages/guides/recipes/access-control/_meta.js @@ -1,5 +1,4 @@ module.exports = { - "role-based-access": "Enforcing role-based access", "controlling-access-to-cubes-and-views": "Controlling access to cubes and views", "using-different-schemas-for-tenants": "Using different data models for tenants" } \ No newline at end of file diff --git a/docs/pages/product/auth/recipes/_meta.js b/docs/pages/product/auth/recipes/_meta.js index 6d650d18dc6dd..5ab40bf1dbb3e 100644 --- a/docs/pages/product/auth/recipes/_meta.js +++ b/docs/pages/product/auth/recipes/_meta.js @@ -1,4 +1,5 @@ module.exports = { "enforcing-mandatory-filters": "Mandatory filters", - "column-based-access": "Column-based access" + "column-based-access": "Column-based access", + "role-based-access": "Role-based access" } diff --git a/docs/pages/guides/recipes/access-control/role-based-access.mdx b/docs/pages/product/auth/recipes/role-based-access.mdx similarity index 100% rename from docs/pages/guides/recipes/access-control/role-based-access.mdx rename to docs/pages/product/auth/recipes/role-based-access.mdx diff --git a/docs/redirects.json b/docs/redirects.json index 02d7ee3239a18..5c7b00846c39f 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/recipes/access-control/role-based-access", + "destination": "/product/auth/recipes/role-based-access", + "permanent": true + }, { "source": "/guides/recipes/access-control/column-based-access", "destination": "/product/auth/recipes/column-based-access", From 7c2ceec8ade2eb882134d1e1ec6da30c65810399 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 13:19:09 +0200 Subject: [PATCH 18/39] docs: Move controlling-access-to-cubes-and-views recipe to auth section --- docs/pages/guides/recipes.mdx | 2 +- docs/pages/guides/recipes/access-control/_meta.js | 1 - docs/pages/product/auth/recipes/_meta.js | 3 ++- .../recipes}/controlling-access-to-cubes-and-views.mdx | 0 .../product/data-modeling/reference/context-variables.mdx | 2 +- docs/pages/product/data-modeling/reference/cube.mdx | 2 +- docs/pages/product/data-modeling/reference/view.mdx | 4 ++-- docs/redirects.json | 7 ++++++- 8 files changed, 13 insertions(+), 8 deletions(-) rename docs/pages/{guides/recipes/access-control => product/auth/recipes}/controlling-access-to-cubes-and-views.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index 6c6066f2d967b..50cc60de37a06 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -48,7 +48,7 @@ These recipes will show you the best practices of using Cube. - [Enforcing role-based access](/product/auth/recipes/role-based-access) - [Enforcing column-based access](/product/auth/recipes/column-based-access) - [Enforcing mandatory filters](/product/auth/recipes/enforcing-mandatory-filters) -- [Controlling access to cubes and views](/guides/recipes/access-control/controlling-access-to-cubes-and-views) +- [Controlling access to cubes and views](/product/auth/recipes/controlling-access-to-cubes-and-views) ### Multitenancy diff --git a/docs/pages/guides/recipes/access-control/_meta.js b/docs/pages/guides/recipes/access-control/_meta.js index 350254498bf58..7a3edacef49c2 100644 --- a/docs/pages/guides/recipes/access-control/_meta.js +++ b/docs/pages/guides/recipes/access-control/_meta.js @@ -1,4 +1,3 @@ module.exports = { - "controlling-access-to-cubes-and-views": "Controlling access to cubes and views", "using-different-schemas-for-tenants": "Using different data models for tenants" } \ No newline at end of file diff --git a/docs/pages/product/auth/recipes/_meta.js b/docs/pages/product/auth/recipes/_meta.js index 5ab40bf1dbb3e..0c851e8f92c30 100644 --- a/docs/pages/product/auth/recipes/_meta.js +++ b/docs/pages/product/auth/recipes/_meta.js @@ -1,5 +1,6 @@ module.exports = { "enforcing-mandatory-filters": "Mandatory filters", "column-based-access": "Column-based access", - "role-based-access": "Role-based access" + "role-based-access": "Role-based access", + "controlling-access-to-cubes-and-views": "Access to cubes/views" } diff --git a/docs/pages/guides/recipes/access-control/controlling-access-to-cubes-and-views.mdx b/docs/pages/product/auth/recipes/controlling-access-to-cubes-and-views.mdx similarity index 100% rename from docs/pages/guides/recipes/access-control/controlling-access-to-cubes-and-views.mdx rename to docs/pages/product/auth/recipes/controlling-access-to-cubes-and-views.mdx diff --git a/docs/pages/product/data-modeling/reference/context-variables.mdx b/docs/pages/product/data-modeling/reference/context-variables.mdx index d5a09d5d0b7a3..5ba7e44a0cd56 100644 --- a/docs/pages/product/data-modeling/reference/context-variables.mdx +++ b/docs/pages/product/data-modeling/reference/context-variables.mdx @@ -812,7 +812,7 @@ cube(`orders`, { [ref-config-queryrewrite]: /product/configuration/reference/config#query_rewrite [ref-config-req-ctx]: /product/configuration/reference/config#requestcontext [ref-recipe-control-access-cubes-views]: - /guides/recipes/access-control/controlling-access-to-cubes-and-views + /product/auth/recipes/controlling-access-to-cubes-and-views [ref-sec-ctx]: /product/auth/context [ref-ref-cubes]: /product/data-modeling/reference/cube [ref-syntax-references]: /product/data-modeling/syntax#references diff --git a/docs/pages/product/data-modeling/reference/cube.mdx b/docs/pages/product/data-modeling/reference/cube.mdx index 6fa96614e9f2c..1043edb1df091 100644 --- a/docs/pages/product/data-modeling/reference/cube.mdx +++ b/docs/pages/product/data-modeling/reference/cube.mdx @@ -628,7 +628,7 @@ The `access_policy` parameter is used to configure [data access policies][ref-re [ref-config-req-ctx]: /product/configuration/reference/config#requestcontext [ref-dev-playground]: /product/workspace/playground [ref-recipe-control-access-cubes-views]: - /guides/recipes/access-control/controlling-access-to-cubes-and-views + /product/auth/recipes/controlling-access-to-cubes-and-views [ref-restapi-meta]: /product/apis-integrations/rest-api/reference#v1meta [ref-restapi-sql]: /product/apis-integrations/rest-api/reference#v1sql [ref-sec-ctx]: /product/auth/context diff --git a/docs/pages/product/data-modeling/reference/view.mdx b/docs/pages/product/data-modeling/reference/view.mdx index 13f752c11b9af..62cd2ef3482df 100644 --- a/docs/pages/product/data-modeling/reference/view.mdx +++ b/docs/pages/product/data-modeling/reference/view.mdx @@ -146,7 +146,7 @@ view(`orders`, { You can also use `COMPILE_CONTEXT` for dynamic visibility if necessary, check out our -[Controlling access to cubes and views ](/guides/recipes/access-control/controlling-access-to-cubes-and-views) +[Controlling access to cubes and views ](/product/auth/recipes/controlling-access-to-cubes-and-views) recipe. @@ -446,7 +446,7 @@ views: The `access_policy` parameter is used to configure [data access policies][ref-ref-dap]. [ref-recipe-control-access-cubes-views]: - /guides/recipes/access-control/controlling-access-to-cubes-and-views + /product/auth/recipes/controlling-access-to-cubes-and-views [ref-schema-joins-direction]: /product/data-modeling/concepts/working-with-joins#directions-of-joins [ref-naming]: /product/data-modeling/syntax#naming diff --git a/docs/redirects.json b/docs/redirects.json index 5c7b00846c39f..a6fe76c0e7a57 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/recipes/access-control/controlling-access-to-cubes-and-views", + "destination": "/product/auth/recipes/controlling-access-to-cubes-and-views", + "permanent": true + }, { "source": "/guides/recipes/access-control/role-based-access", "destination": "/product/auth/recipes/role-based-access", @@ -1381,7 +1386,7 @@ }, { "source": "/recipes/controlling-access-to-cubes-and-views", - "destination": "/guides/recipes/access-control/controlling-access-to-cubes-and-views", + "destination": "/product/auth/recipes/controlling-access-to-cubes-and-views", "permanent": true }, { From 1caa5120f6373969a25d772bd351de19f6ba61dd Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 13:26:41 +0200 Subject: [PATCH 19/39] docs: Move multitenancy recipe to configuration section --- docs/pages/guides/recipes.mdx | 2 +- docs/pages/guides/recipes/_meta.js | 1 - .../guides/recipes/access-control/_meta.js | 3 - .../enforcing-mandatory-filters.mdx | 133 ------------------ docs/pages/product/configuration/_meta.js | 1 + .../product/configuration/recipes/_meta.js | 3 + .../using-different-schemas-for-tenants.mdx | 0 docs/redirects.json | 7 +- 8 files changed, 11 insertions(+), 139 deletions(-) delete mode 100644 docs/pages/guides/recipes/access-control/_meta.js delete mode 100644 docs/pages/guides/recipes/access-control/enforcing-mandatory-filters.mdx create mode 100644 docs/pages/product/configuration/recipes/_meta.js rename docs/pages/{guides/recipes/access-control => product/configuration/recipes}/using-different-schemas-for-tenants.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index 50cc60de37a06..f6e3105efdd50 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -33,7 +33,7 @@ These recipes will show you the best practices of using Cube. - [Implementing custom calendars](/guides/recipes/data-modeling/custom-calendar) - [Implementing Entity-Attribute-Value model](/guides/recipes/data-modeling/entity-attribute-value) - [Implementing data snapshots](/guides/recipes/data-modeling/snapshots) -- [Using different data models for tenants](/guides/recipes/access-control/using-different-schemas-for-tenants) +- [Using different data models for tenants](/product/configuration/recipes/using-different-schemas-for-tenants) - [Using dynamic measures](/guides/recipes/data-modeling/using-dynamic-measures) - [Using dynamic union tables](/guides/recipes/data-modeling/dynamic-union-tables) - [Working around string time dimensions](/guides/recipes/data-modeling/string-time-dimensions) diff --git a/docs/pages/guides/recipes/_meta.js b/docs/pages/guides/recipes/_meta.js index 8666f4c050d73..3e565902889f3 100644 --- a/docs/pages/guides/recipes/_meta.js +++ b/docs/pages/guides/recipes/_meta.js @@ -1,5 +1,4 @@ module.exports = { - "access-control": "Access control", "auth": "Authentication & Authorization", "data-modeling": "Data modeling", "code-reusability": "Code reusability", diff --git a/docs/pages/guides/recipes/access-control/_meta.js b/docs/pages/guides/recipes/access-control/_meta.js deleted file mode 100644 index 7a3edacef49c2..0000000000000 --- a/docs/pages/guides/recipes/access-control/_meta.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - "using-different-schemas-for-tenants": "Using different data models for tenants" -} \ No newline at end of file diff --git a/docs/pages/guides/recipes/access-control/enforcing-mandatory-filters.mdx b/docs/pages/guides/recipes/access-control/enforcing-mandatory-filters.mdx deleted file mode 100644 index 2a71d5fcfb8ee..0000000000000 --- a/docs/pages/guides/recipes/access-control/enforcing-mandatory-filters.mdx +++ /dev/null @@ -1,133 +0,0 @@ -# Enforcing mandatory filters - -## Use case - -Let's imagine that on New Year's Eve, December 30th, 2019, we renamed our store, -changed the design, and started selling completely different products. At the -same time, we decided to reuse the database for the new store. So, we'd like to -only show orders created after December 30th, 2019. In the recipe below, we'll -learn how to add mandatory filters to all queries. - -## Configuration - -To enforce mandatory filters we'll use the -[`queryRewrite`](/product/auth/context#using-queryrewrite) parameter in the -`cube.js` configuration file. - -To solve this, we add a filter that will apply to all queries. This will make -sure we only show orders created after December 30th, 2019. - -```javascript -module.exports = { - queryRewrite: (query) => { - query.filters.push({ - member: `orders.created_at`, - operator: "afterDate", - values: ["2019-12-30"], - }); - - return query; - }, -}; -``` - -## Query - -To get the orders we will send two queries with filters by status: - -```bash -# Completed orders -curl cube:4000/cubejs-api/v1/load \ - -H "Authorization: eeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoib3BlcmF0b3IiLCJpYXQiOjE2Mjg3NDUwNDUsImV4cCI6MTgwMTU0NTA0NX0.VErb2t7Bc43ryRwaOiEgXuU5KiolCT-69eI_i2pRq4o" \ - 'query={"measures": [], "order": [["Users.created_at", "asc"]], "dimensions": ["orders.number", "orders.created_at"], - "filters": [ - { - "member": "orders.status", - "operator": "equals", - "values": ["completed"] - } - ], - "limit": 5 - }' -``` - -```bash -# Shipped orders -curl cube:4000/cubejs-api/v1/load \ - -H "Authorization: eeyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoib3BlcmF0b3IiLCJpYXQiOjE2Mjg3NDUwNDUsImV4cCI6MTgwMTU0NTA0NX0.VErb2t7Bc43ryRwaOiEgXuU5KiolCT-69eI_i2pRq4o" \ - 'query={"measures": [], "order": [["orders.created_at", "asc"]], "dimensions": ["orders.number", "orders.created_at"], - "filters": [ - { - "member": "orders.status", - "operator": "equals", - "values": ["shipped"] - } - ], - "limit": 5 - }' -``` - -## Result - -We have received orders created after December 30th, 2019. - -Completed orders: - -```javascript -[ - { - "orders.number": 78, - "orders.created_at": "2020-01-01T00:00:00.000", - }, - { - "orders.number": 43, - "orders.created_at": "2020-01-02T00:00:00.000", - }, - { - "orders.number": 87, - "orders.created_at": "2020-01-04T00:00:00.000", - }, - { - "orders.number": 45, - "orders.created_at": "2020-01-04T00:00:00.000", - }, - { - "orders.number": 28, - "orders.created_at": "2020-01-05T00:00:00.000", - }, -]; -``` - -Shipped orders: - -```javascript -[ - { - "orders.number": 57, - "orders.created_at": "2019-12-31T00:00:00.000", - }, - { - "orders.number": 38, - "orders.created_at": "2020-01-01T00:00:00.000", - }, - { - "orders.number": 10, - "orders.created_at": "2020-01-02T00:00:00.000", - }, - { - "orders.number": 19, - "orders.created_at": "2020-01-02T00:00:00.000", - }, - { - "orders.number": 15, - "orders.created_at": "2020-01-02T00:00:00.000", - }, -]; -``` - -## Source code - -Please feel free to check out the -[full source code](https://github.com/cube-js/cube/tree/master/examples/recipes/mandatory-filters) -or run it with the `docker-compose up` command. You'll see the result, including -queried data, in the console. diff --git a/docs/pages/product/configuration/_meta.js b/docs/pages/product/configuration/_meta.js index c04d9df7b391b..039492676b656 100644 --- a/docs/pages/product/configuration/_meta.js +++ b/docs/pages/product/configuration/_meta.js @@ -4,5 +4,6 @@ module.exports = { "multiple-data-sources": "Multiple data sources", "concurrency": "Concurrency", "multitenancy": "Multitenancy", + "recipes": "Recipes", "reference": "Reference" } \ No newline at end of file diff --git a/docs/pages/product/configuration/recipes/_meta.js b/docs/pages/product/configuration/recipes/_meta.js new file mode 100644 index 0000000000000..487bb0915da6a --- /dev/null +++ b/docs/pages/product/configuration/recipes/_meta.js @@ -0,0 +1,3 @@ +module.exports = { + "using-different-schemas-for-tenants": "Different data models for tenants" +} diff --git a/docs/pages/guides/recipes/access-control/using-different-schemas-for-tenants.mdx b/docs/pages/product/configuration/recipes/using-different-schemas-for-tenants.mdx similarity index 100% rename from docs/pages/guides/recipes/access-control/using-different-schemas-for-tenants.mdx rename to docs/pages/product/configuration/recipes/using-different-schemas-for-tenants.mdx diff --git a/docs/redirects.json b/docs/redirects.json index a6fe76c0e7a57..61b9675a97dd3 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/recipes/access-control/using-different-schemas-for-tenants", + "destination": "/product/configuration/recipes/using-different-schemas-for-tenants", + "permanent": true + }, { "source": "/guides/recipes/access-control/controlling-access-to-cubes-and-views", "destination": "/product/auth/recipes/controlling-access-to-cubes-and-views", @@ -1376,7 +1381,7 @@ }, { "source": "/recipes/using-different-schemas-for-tenants", - "destination": "/guides/recipes/access-control/using-different-schemas-for-tenants", + "destination": "/product/configuration/recipes/using-different-schemas-for-tenants", "permanent": true }, { From 792fda95f92994d381b787fa6e9726d201c80887 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 13:31:00 +0200 Subject: [PATCH 20/39] docs: Move SQL API LDAP recipe to auth section --- docs/pages/guides/recipes.mdx | 2 +- docs/pages/guides/recipes/auth/_meta.js | 1 - docs/pages/product/apis-integrations/sql-api/security.mdx | 2 +- docs/pages/product/auth/recipes/_meta.js | 3 ++- .../recipes/auth => product/auth/recipes}/sql-api-ldap.mdx | 0 docs/pages/product/configuration/reference/config.mdx | 2 +- docs/redirects.json | 5 +++++ 7 files changed, 10 insertions(+), 5 deletions(-) rename docs/pages/{guides/recipes/auth => product/auth/recipes}/sql-api-ldap.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index f6e3105efdd50..86b40956f1cad 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -12,7 +12,7 @@ These recipes will show you the best practices of using Cube. ### Authentication & Authorization -- [Authenticate requests to the SQL API with LDAP](/guides/recipes/auth/sql-api-ldap) +- [Authenticate requests to the SQL API with LDAP](/product/auth/recipes/sql-api-ldap) - [Authenticate requests to the REST API with Auth0](/guides/recipes/auth/auth0-guide) - [Authenticate requests to the REST API with AWS Cognito](/guides/recipes/auth/aws-cognito) - [Authenticate requests to the REST API with Firebase](https://medium.com/@ivo.hohlweck/use-firebase-auth-for-cubejs-a609f213ac67) diff --git a/docs/pages/guides/recipes/auth/_meta.js b/docs/pages/guides/recipes/auth/_meta.js index 0d9aab0e61954..4ecea5656d704 100644 --- a/docs/pages/guides/recipes/auth/_meta.js +++ b/docs/pages/guides/recipes/auth/_meta.js @@ -1,5 +1,4 @@ module.exports = { - "sql-api-ldap": "SQL API and LDAP", "auth0-guide": "REST API and Auth0", "aws-cognito": "REST API and AWS Cognito" } \ No newline at end of file diff --git a/docs/pages/product/apis-integrations/sql-api/security.mdx b/docs/pages/product/apis-integrations/sql-api/security.mdx index 4454d7ee77cff..4273055e05e43 100644 --- a/docs/pages/product/apis-integrations/sql-api/security.mdx +++ b/docs/pages/product/apis-integrations/sql-api/security.mdx @@ -23,7 +23,7 @@ module.exports = { }; ``` -Check [this recipe](/guides/recipes/auth/sql-api-ldap) for an example of +Check [this recipe](/product/auth/recipes/sql-api-ldap) for an example of using `check_sql_auth` to authenticate requests to the SQL API with LDAP. ## Security Context (Row-Level Security) diff --git a/docs/pages/product/auth/recipes/_meta.js b/docs/pages/product/auth/recipes/_meta.js index 0c851e8f92c30..f6fe968b643ea 100644 --- a/docs/pages/product/auth/recipes/_meta.js +++ b/docs/pages/product/auth/recipes/_meta.js @@ -2,5 +2,6 @@ module.exports = { "enforcing-mandatory-filters": "Mandatory filters", "column-based-access": "Column-based access", "role-based-access": "Role-based access", - "controlling-access-to-cubes-and-views": "Access to cubes/views" + "controlling-access-to-cubes-and-views": "Access to cubes/views", + "sql-api-ldap": "SQL API and LDAP" } diff --git a/docs/pages/guides/recipes/auth/sql-api-ldap.mdx b/docs/pages/product/auth/recipes/sql-api-ldap.mdx similarity index 100% rename from docs/pages/guides/recipes/auth/sql-api-ldap.mdx rename to docs/pages/product/auth/recipes/sql-api-ldap.mdx diff --git a/docs/pages/product/configuration/reference/config.mdx b/docs/pages/product/configuration/reference/config.mdx index 2465b449007f2..7c4aae449c9d3 100644 --- a/docs/pages/product/configuration/reference/config.mdx +++ b/docs/pages/product/configuration/reference/config.mdx @@ -1253,7 +1253,7 @@ module.exports = { -Check [this recipe](/guides/recipes/auth/sql-api-ldap) for an example of +Check [this recipe](/product/auth/recipes/sql-api-ldap) for an example of using `check_sql_auth` to authenticate requests to the SQL API with LDAP. ### `can_switch_sql_user` diff --git a/docs/redirects.json b/docs/redirects.json index 61b9675a97dd3..744fad492a105 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/recipes/auth/sql-api-ldap", + "destination": "/product/auth/recipes/sql-api-ldap", + "permanent": true + }, { "source": "/guides/recipes/access-control/using-different-schemas-for-tenants", "destination": "/product/configuration/recipes/using-different-schemas-for-tenants", From 52c6d907ebaba28ef374a7e6c15585154f3a006b Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 13:41:47 +0200 Subject: [PATCH 21/39] docs: Move Auth0 and AWS Cognito guides to auth section --- docs/pages/guides/recipes.mdx | 4 ++-- docs/pages/guides/recipes/_meta.js | 1 - docs/pages/guides/recipes/auth/_meta.js | 4 ---- docs/pages/product/auth/methods/jwt.mdx | 4 ++-- docs/pages/product/auth/recipes/_meta.js | 4 +++- .../auth/recipes}/auth0-guide.mdx | 0 .../auth/recipes}/aws-cognito.mdx | 0 .../product/deployment/cloud/providers/aws.mdx | 2 +- docs/redirects.json | 18 ++++++++++++++---- 9 files changed, 22 insertions(+), 15 deletions(-) delete mode 100644 docs/pages/guides/recipes/auth/_meta.js rename docs/pages/{guides/recipes/auth => product/auth/recipes}/auth0-guide.mdx (100%) rename docs/pages/{guides/recipes/auth => product/auth/recipes}/aws-cognito.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index 86b40956f1cad..694e1f14d81e3 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -13,8 +13,8 @@ These recipes will show you the best practices of using Cube. ### Authentication & Authorization - [Authenticate requests to the SQL API with LDAP](/product/auth/recipes/sql-api-ldap) -- [Authenticate requests to the REST API with Auth0](/guides/recipes/auth/auth0-guide) -- [Authenticate requests to the REST API with AWS Cognito](/guides/recipes/auth/aws-cognito) +- [Authenticate requests to the REST API with Auth0](/product/auth/recipes/auth0-guide) +- [Authenticate requests to the REST API with AWS Cognito](/product/auth/recipes/aws-cognito) - [Authenticate requests to the REST API with Firebase](https://medium.com/@ivo.hohlweck/use-firebase-auth-for-cubejs-a609f213ac67) ### Data sources diff --git a/docs/pages/guides/recipes/_meta.js b/docs/pages/guides/recipes/_meta.js index 3e565902889f3..0faee4e4cdeb7 100644 --- a/docs/pages/guides/recipes/_meta.js +++ b/docs/pages/guides/recipes/_meta.js @@ -1,5 +1,4 @@ module.exports = { - "auth": "Authentication & Authorization", "data-modeling": "Data modeling", "code-reusability": "Code reusability", "multitenancy": "Multitenancy", diff --git a/docs/pages/guides/recipes/auth/_meta.js b/docs/pages/guides/recipes/auth/_meta.js deleted file mode 100644 index 4ecea5656d704..0000000000000 --- a/docs/pages/guides/recipes/auth/_meta.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - "auth0-guide": "REST API and Auth0", - "aws-cognito": "REST API and AWS Cognito" -} \ No newline at end of file diff --git a/docs/pages/product/auth/methods/jwt.mdx b/docs/pages/product/auth/methods/jwt.mdx index 6f734a2ca3186..f654abd482308 100644 --- a/docs/pages/product/auth/methods/jwt.mdx +++ b/docs/pages/product/auth/methods/jwt.mdx @@ -243,6 +243,6 @@ module.exports = { [link-jwk-ref]: https://tools.ietf.org/html/rfc7517#section-4 [ref-config-check-auth]: /product/configuration/reference/config#check_auth [ref-config-jwt]: /product/configuration/reference/config#jwt -[ref-recipe-auth0]: /guides/recipes/auth/auth0-guide -[ref-recipe-cognito]: /guides/recipes/auth/aws-cognito +[ref-recipe-auth0]: /product/auth/recipes/auth0-guide +[ref-recipe-cognito]: /product/auth/recipes/aws-cognito [ref-sec-ctx]: /product/auth/context \ No newline at end of file diff --git a/docs/pages/product/auth/recipes/_meta.js b/docs/pages/product/auth/recipes/_meta.js index f6fe968b643ea..e3dfd04731239 100644 --- a/docs/pages/product/auth/recipes/_meta.js +++ b/docs/pages/product/auth/recipes/_meta.js @@ -3,5 +3,7 @@ module.exports = { "column-based-access": "Column-based access", "role-based-access": "Role-based access", "controlling-access-to-cubes-and-views": "Access to cubes/views", - "sql-api-ldap": "SQL API and LDAP" + "sql-api-ldap": "SQL API and LDAP", + "auth0-guide": "REST API and Auth0", + "aws-cognito": "REST API and AWS Cognito" } diff --git a/docs/pages/guides/recipes/auth/auth0-guide.mdx b/docs/pages/product/auth/recipes/auth0-guide.mdx similarity index 100% rename from docs/pages/guides/recipes/auth/auth0-guide.mdx rename to docs/pages/product/auth/recipes/auth0-guide.mdx diff --git a/docs/pages/guides/recipes/auth/aws-cognito.mdx b/docs/pages/product/auth/recipes/aws-cognito.mdx similarity index 100% rename from docs/pages/guides/recipes/auth/aws-cognito.mdx rename to docs/pages/product/auth/recipes/aws-cognito.mdx diff --git a/docs/pages/product/deployment/cloud/providers/aws.mdx b/docs/pages/product/deployment/cloud/providers/aws.mdx index b64687f527e8f..a703a6ed682de 100644 --- a/docs/pages/product/deployment/cloud/providers/aws.mdx +++ b/docs/pages/product/deployment/cloud/providers/aws.mdx @@ -37,7 +37,7 @@ Cube Cloud integrates with the following [data visualization tools](/product/con ## Authentication -[Amazon Cognito](https://aws.amazon.com/pm/cognito/) can be used for [authentication of API requests](/guides/recipes/auth/aws-cognito). +[Amazon Cognito](https://aws.amazon.com/pm/cognito/) can be used for [authentication of API requests](/product/auth/recipes/aws-cognito). ## Monitoring diff --git a/docs/redirects.json b/docs/redirects.json index 744fad492a105..a0407e3b949e5 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,14 @@ [ + { + "source": "/guides/recipes/auth/aws-cognito", + "destination": "/product/auth/recipes/aws-cognito", + "permanent": true + }, + { + "source": "/guides/recipes/auth/auth0-guide", + "destination": "/product/auth/recipes/auth0-guide", + "permanent": true + }, { "source": "/guides/recipes/auth/sql-api-ldap", "destination": "/product/auth/recipes/sql-api-ldap", @@ -1281,22 +1291,22 @@ }, { "source": "/recipes/authn-with-auth0", - "destination": "/guides/recipes/auth/auth0-guide", + "destination": "/product/auth/recipes/auth0-guide", "permanent": true }, { "source": "/security/jwt/auth0", - "destination": "/guides/recipes/auth/auth0-guide", + "destination": "/product/auth/recipes/auth0-guide", "permanent": true }, { "source": "/recipes/authn-with-aws-cognito", - "destination": "/guides/recipes/auth/aws-cognito", + "destination": "/product/auth/recipes/aws-cognito", "permanent": true }, { "source": "/security/jwt/aws-cognito", - "destination": "/guides/recipes/auth/aws-cognito", + "destination": "/product/auth/recipes/aws-cognito", "permanent": true }, { From 1c723e7c13aee22fd23b52e5309ef13d257cd0ef Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 13:50:21 +0200 Subject: [PATCH 22/39] docs: Move data modeling recipes to proper section --- docs/pages/guides/recipes.mdx | 26 ++++---- docs/pages/guides/recipes/_meta.js | 1 - .../guides/recipes/data-modeling/_meta.js | 14 ----- .../query-acceleration/non-additivity.mdx | 2 +- .../caching/matching-pre-aggregations.mdx | 2 +- docs/pages/product/data-modeling/concepts.mdx | 2 +- .../concepts/calculated-members.mdx | 4 +- .../code-reusability-export-and-import.mdx | 2 +- .../product/data-modeling/recipes/_meta.js | 12 ++++ .../recipes}/custom-calendar.mdx | 2 +- .../recipes}/custom-granularity.mdx | 0 .../recipes}/dynamic-union-tables.mdx | 0 .../recipes}/entity-attribute-value.mdx | 0 .../recipes}/filtered-aggregates.mdx | 0 .../recipes}/nested-aggregates.mdx | 0 .../passing-dynamic-parameters-in-a-query.mdx | 0 .../data-modeling/recipes}/percentiles.mdx | 0 .../recipes}/period-over-period.mdx | 0 .../data-modeling/recipes}/snapshots.mdx | 0 .../recipes}/string-time-dimensions.mdx | 0 .../recipes}/using-dynamic-measures.mdx | 0 .../data-modeling/reference/dimensions.mdx | 2 +- .../reference/types-and-formats.mdx | 2 +- docs/pages/product/data-modeling/syntax.mdx | 2 +- docs/redirects.json | 60 +++++++++++++++++++ 25 files changed, 95 insertions(+), 38 deletions(-) delete mode 100644 docs/pages/guides/recipes/data-modeling/_meta.js rename docs/pages/{guides/recipes/data-modeling => product/data-modeling/recipes}/custom-calendar.mdx (98%) rename docs/pages/{guides/recipes/data-modeling => product/data-modeling/recipes}/custom-granularity.mdx (100%) rename docs/pages/{guides/recipes/data-modeling => product/data-modeling/recipes}/dynamic-union-tables.mdx (100%) rename docs/pages/{guides/recipes/data-modeling => product/data-modeling/recipes}/entity-attribute-value.mdx (100%) rename docs/pages/{guides/recipes/data-modeling => product/data-modeling/recipes}/filtered-aggregates.mdx (100%) rename docs/pages/{guides/recipes/data-modeling => product/data-modeling/recipes}/nested-aggregates.mdx (100%) rename docs/pages/{guides/recipes/data-modeling => product/data-modeling/recipes}/passing-dynamic-parameters-in-a-query.mdx (100%) rename docs/pages/{guides/recipes/data-modeling => product/data-modeling/recipes}/percentiles.mdx (100%) rename docs/pages/{guides/recipes/data-modeling => product/data-modeling/recipes}/period-over-period.mdx (100%) rename docs/pages/{guides/recipes/data-modeling => product/data-modeling/recipes}/snapshots.mdx (100%) rename docs/pages/{guides/recipes/data-modeling => product/data-modeling/recipes}/string-time-dimensions.mdx (100%) rename docs/pages/{guides/recipes/data-modeling => product/data-modeling/recipes}/using-dynamic-measures.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index 694e1f14d81e3..7a414a9e60c4d 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -25,18 +25,18 @@ These recipes will show you the best practices of using Cube. ### Data modeling -- [Calculating average and percentiles](/guides/recipes/data-modeling/percentiles) -- [Calculating nested aggregates](/guides/recipes/data-modeling/nested-aggregates) -- [Calculating filtered aggregates](/guides/recipes/data-modeling/filtered-aggregates) -- [Calculating period-over-period changes](/guides/recipes/data-modeling/period-over-period) -- [Implementing custom time dimension granularities](/guides/recipes/data-modeling/custom-granularity) -- [Implementing custom calendars](/guides/recipes/data-modeling/custom-calendar) -- [Implementing Entity-Attribute-Value model](/guides/recipes/data-modeling/entity-attribute-value) -- [Implementing data snapshots](/guides/recipes/data-modeling/snapshots) +- [Calculating average and percentiles](/product/data-modeling/recipes/percentiles) +- [Calculating nested aggregates](/product/data-modeling/recipes/nested-aggregates) +- [Calculating filtered aggregates](/product/data-modeling/recipes/filtered-aggregates) +- [Calculating period-over-period changes](/product/data-modeling/recipes/period-over-period) +- [Implementing custom time dimension granularities](/product/data-modeling/recipes/custom-granularity) +- [Implementing custom calendars](/product/data-modeling/recipes/custom-calendar) +- [Implementing Entity-Attribute-Value model](/product/data-modeling/recipes/entity-attribute-value) +- [Implementing data snapshots](/product/data-modeling/recipes/snapshots) - [Using different data models for tenants](/product/configuration/recipes/using-different-schemas-for-tenants) -- [Using dynamic measures](/guides/recipes/data-modeling/using-dynamic-measures) -- [Using dynamic union tables](/guides/recipes/data-modeling/dynamic-union-tables) -- [Working around string time dimensions](/guides/recipes/data-modeling/string-time-dimensions) +- [Using dynamic measures](/product/data-modeling/recipes/using-dynamic-measures) +- [Using dynamic union tables](/product/data-modeling/recipes/dynamic-union-tables) +- [Working around string time dimensions](/product/data-modeling/recipes/string-time-dimensions) ### Code reusability @@ -59,11 +59,11 @@ These recipes will show you the best practices of using Cube. - [Getting unique values for a field](/guides/recipes/queries/getting-unique-values-for-a-field) - [Implementing custom sorting](/guides/recipes/queries/sorting) - [Implementing pagination](/guides/recipes/queries/pagination) -- [Passing dynamic parameters in a query](/guides/recipes/data-modeling/passing-dynamic-parameters-in-a-query) +- [Passing dynamic parameters in a query](/product/data-modeling/recipes/passing-dynamic-parameters-in-a-query) ### Query acceleration -- [Accelerating non-additive measures](/guides/recipes/query-acceleration/non-additivity) +- [Accelerating non-additive measures](/product/data-modeling/recipes/non-additivity) - [Building pre-aggregations for a date range incrementally](/guides/recipes/query-acceleration/incrementally-building-pre-aggregations-for-a-date-range) - [Disabling pre-aggregations](/guides/recipes/query-acceleration/disabling-pre-aggregations) - [Using originalSql and rollup pre-aggregations effectively](/guides/recipes/query-acceleration/using-originalsql-and-rollups-effectively) diff --git a/docs/pages/guides/recipes/_meta.js b/docs/pages/guides/recipes/_meta.js index 0faee4e4cdeb7..7b1cc4701b095 100644 --- a/docs/pages/guides/recipes/_meta.js +++ b/docs/pages/guides/recipes/_meta.js @@ -1,5 +1,4 @@ module.exports = { - "data-modeling": "Data modeling", "code-reusability": "Code reusability", "multitenancy": "Multitenancy", "data-sources": "Data sources", diff --git a/docs/pages/guides/recipes/data-modeling/_meta.js b/docs/pages/guides/recipes/data-modeling/_meta.js deleted file mode 100644 index b28c8a20afe31..0000000000000 --- a/docs/pages/guides/recipes/data-modeling/_meta.js +++ /dev/null @@ -1,14 +0,0 @@ -module.exports = { - "percentiles": "Calculating averages and percentiles", - "nested-aggregates": "Calculating nested aggregates", - "filtered-aggregates": "Calculating filtered aggregates", - "period-over-period": "Calculating period-over-period changes", - "custom-granularity": "Implementing custom time dimension granularities", - "custom-calendar": "Implementing custom calendars", - "snapshots": "Implementing data snapshots", - "entity-attribute-value": "Implementing Entity-Attribute-Value Model (EAV)", - "passing-dynamic-parameters-in-a-query": "Passing dynamic parameters in a query", - "using-dynamic-measures": "Using dynamic measures", - "dynamic-union-tables": "Using dynamic union tables", - "string-time-dimensions": "Working around string time dimensions" -} \ No newline at end of file diff --git a/docs/pages/guides/recipes/query-acceleration/non-additivity.mdx b/docs/pages/guides/recipes/query-acceleration/non-additivity.mdx index fd56ebffd8007..2b302a6a6e4b8 100644 --- a/docs/pages/guides/recipes/query-acceleration/non-additivity.mdx +++ b/docs/pages/guides/recipes/query-acceleration/non-additivity.mdx @@ -21,7 +21,7 @@ age: - count of unique age values (`distinct_ages`) - average age (`avg_age`) -- 90th [percentile](/guides/recipes/data-modeling/percentiles) of age +- 90th [percentile](/product/data-modeling/recipes/percentiles) of age (`p90_age`) diff --git a/docs/pages/product/caching/matching-pre-aggregations.mdx b/docs/pages/product/caching/matching-pre-aggregations.mdx index 6a03b5349ecc6..a6bb8a60b4f6b 100644 --- a/docs/pages/product/caching/matching-pre-aggregations.mdx +++ b/docs/pages/product/caching/matching-pre-aggregations.mdx @@ -130,7 +130,7 @@ configuration option. [ref-leaf-measures]: /product/data-modeling/concepts#leaf-measures [ref-calculated-measures]: /product/data-modeling/overview#4-using-calculated-measures [ref-non-strict-date-range-match]: /product/data-modeling/reference/pre-aggregations#allow_non_strict_date_range_match -[ref-non-additive-recipe]: /guides/recipes/query-acceleration/non-additivity +[ref-non-additive-recipe]: /product/data-modeling/recipes/non-additivity [ref-conf-scheduled-refresh-time-zones]: /product/configuration/reference/config#scheduled_refresh_time_zones [ref-ungrouped-queries]: /product/apis-integrations/queries#ungrouped-query [ref-primary-key]: /product/data-modeling/reference/dimensions#primary_key diff --git a/docs/pages/product/data-modeling/concepts.mdx b/docs/pages/product/data-modeling/concepts.mdx index 9322ed82f8caa..4cb174830ba3a 100644 --- a/docs/pages/product/data-modeling/concepts.mdx +++ b/docs/pages/product/data-modeling/concepts.mdx @@ -805,7 +805,7 @@ See the reference documentaton for the full list of pre-aggregation [ref-ref-time-dimensions]: /product/data-modeling/reference/types-and-formats#time-1 [ref-ref-dimension-granularities]: /product/data-modeling/reference/dimensions#granularities [ref-ref-primary-key]: /product/data-modeling/reference/dimensions#primary_key -[ref-custom-granularity-recipe]: /guides/recipes/data-modeling/custom-granularity +[ref-custom-granularity-recipe]: /product/data-modeling/recipes/custom-granularity [ref-proxy-granularity]: /product/data-modeling/concepts/calculated-members#time-dimension-granularity [ref-mls]: /product/auth/member-level-security [ref-ref-hierarchies]: /product/data-modeling/reference/hierarchies diff --git a/docs/pages/product/data-modeling/concepts/calculated-members.mdx b/docs/pages/product/data-modeling/concepts/calculated-members.mdx index c1e6b14be9cbf..ed509c1d02c78 100644 --- a/docs/pages/product/data-modeling/concepts/calculated-members.mdx +++ b/docs/pages/product/data-modeling/concepts/calculated-members.mdx @@ -559,8 +559,8 @@ GROUP BY 1, 2 [ref-schema-ref-measures]: /product/data-modeling/reference/measures [ref-schema-ref-dimensions]: /product/data-modeling/reference/dimensions [ref-schema-ref-joins]: /product/data-modeling/reference/joins -[ref-decomposition-recipe]: /guides/recipes/query-acceleration/non-additivity#decomposing-into-a-formula-with-additive-measures -[ref-nested-aggregates-recipe]: /guides/recipes/data-modeling/nested-aggregates +[ref-decomposition-recipe]: /product/data-modeling/recipes/non-additivity#decomposing-into-a-formula-with-additive-measures +[ref-nested-aggregates-recipe]: /product/data-modeling/recipes/nested-aggregates [ref-non-additive]: /product/data-modeling/concepts#measure-additivity [link-postgres-division]: https://www.postgresql.org/docs/current/functions-math.html#FUNCTIONS-MATH [wiki-correlated-subquery]: https://en.wikipedia.org/wiki/Correlated_subquery diff --git a/docs/pages/product/data-modeling/dynamic/code-reusability-export-and-import.mdx b/docs/pages/product/data-modeling/dynamic/code-reusability-export-and-import.mdx index f4a9df9d217e6..253e7ec22334c 100644 --- a/docs/pages/product/data-modeling/dynamic/code-reusability-export-and-import.mdx +++ b/docs/pages/product/data-modeling/dynamic/code-reusability-export-and-import.mdx @@ -118,4 +118,4 @@ export const capitalize = (s) => s.charAt(0).toUpperCase() + s.slice(1); https://developer.mozilla.org/en-US/docs/web/javascript/reference/statements/export [mdn-js-es6-import]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/import -[ref-schema-string-time-dims]: /guides/recipes/data-modeling/string-time-dimensions +[ref-schema-string-time-dims]: /product/data-modeling/recipes/string-time-dimensions diff --git a/docs/pages/product/data-modeling/recipes/_meta.js b/docs/pages/product/data-modeling/recipes/_meta.js index 01a637951b880..088f911d7efd0 100644 --- a/docs/pages/product/data-modeling/recipes/_meta.js +++ b/docs/pages/product/data-modeling/recipes/_meta.js @@ -1,4 +1,16 @@ module.exports = { + "percentiles": "Averages and percentiles", + "nested-aggregates": "Nested aggregates", + "filtered-aggregates": "Filtered aggregates", + "period-over-period": "Period-over-period changes", + "passing-dynamic-parameters-in-a-query": "Dynamic parameters", + "using-dynamic-measures": "Dynamic measures", + "dynamic-union-tables": "Dynamic union tables", + "string-time-dimensions": "String time dimensions", + "custom-granularity": "Custom time dimension granularities", + "custom-calendar": "Custom calendars", + "entity-attribute-value": "EAV model", + "snapshots": "Data snapshots", "active-users": "Active users", "event-analytics": "Event analytics", "funnels": "Funnel analysis", diff --git a/docs/pages/guides/recipes/data-modeling/custom-calendar.mdx b/docs/pages/product/data-modeling/recipes/custom-calendar.mdx similarity index 98% rename from docs/pages/guides/recipes/data-modeling/custom-calendar.mdx rename to docs/pages/product/data-modeling/recipes/custom-calendar.mdx index 33f245bff65f2..cb456603cf6ab 100644 --- a/docs/pages/guides/recipes/data-modeling/custom-calendar.mdx +++ b/docs/pages/product/data-modeling/recipes/custom-calendar.mdx @@ -216,6 +216,6 @@ Querying this data modal would yield the following result: [link-454]: https://nrf.com/resources/4-5-4-calendar [link-454-official-calendar]: https://2fb5c46100c1b71985e2-011e70369171d43105aff38e48482379.ssl.cf1.rackcdn.com/4-5-4%20calendar/3-Year-Calendar-5-27.pdf [ref-custom-granularities]: /product/data-modeling/reference/dimensions#granularities -[ref-custom-granularities-recipe]: /guides/recipes/data-modeling/custom-granularity +[ref-custom-granularities-recipe]: /product/data-modeling/recipes/custom-granularity [ref-proxy-dimensions]: /product/data-modeling/concepts/calculated-members#proxy-dimensions [ref-jinja-macro]: /product/data-modeling/dynamic/jinja#macros \ No newline at end of file diff --git a/docs/pages/guides/recipes/data-modeling/custom-granularity.mdx b/docs/pages/product/data-modeling/recipes/custom-granularity.mdx similarity index 100% rename from docs/pages/guides/recipes/data-modeling/custom-granularity.mdx rename to docs/pages/product/data-modeling/recipes/custom-granularity.mdx diff --git a/docs/pages/guides/recipes/data-modeling/dynamic-union-tables.mdx b/docs/pages/product/data-modeling/recipes/dynamic-union-tables.mdx similarity index 100% rename from docs/pages/guides/recipes/data-modeling/dynamic-union-tables.mdx rename to docs/pages/product/data-modeling/recipes/dynamic-union-tables.mdx diff --git a/docs/pages/guides/recipes/data-modeling/entity-attribute-value.mdx b/docs/pages/product/data-modeling/recipes/entity-attribute-value.mdx similarity index 100% rename from docs/pages/guides/recipes/data-modeling/entity-attribute-value.mdx rename to docs/pages/product/data-modeling/recipes/entity-attribute-value.mdx diff --git a/docs/pages/guides/recipes/data-modeling/filtered-aggregates.mdx b/docs/pages/product/data-modeling/recipes/filtered-aggregates.mdx similarity index 100% rename from docs/pages/guides/recipes/data-modeling/filtered-aggregates.mdx rename to docs/pages/product/data-modeling/recipes/filtered-aggregates.mdx diff --git a/docs/pages/guides/recipes/data-modeling/nested-aggregates.mdx b/docs/pages/product/data-modeling/recipes/nested-aggregates.mdx similarity index 100% rename from docs/pages/guides/recipes/data-modeling/nested-aggregates.mdx rename to docs/pages/product/data-modeling/recipes/nested-aggregates.mdx diff --git a/docs/pages/guides/recipes/data-modeling/passing-dynamic-parameters-in-a-query.mdx b/docs/pages/product/data-modeling/recipes/passing-dynamic-parameters-in-a-query.mdx similarity index 100% rename from docs/pages/guides/recipes/data-modeling/passing-dynamic-parameters-in-a-query.mdx rename to docs/pages/product/data-modeling/recipes/passing-dynamic-parameters-in-a-query.mdx diff --git a/docs/pages/guides/recipes/data-modeling/percentiles.mdx b/docs/pages/product/data-modeling/recipes/percentiles.mdx similarity index 100% rename from docs/pages/guides/recipes/data-modeling/percentiles.mdx rename to docs/pages/product/data-modeling/recipes/percentiles.mdx diff --git a/docs/pages/guides/recipes/data-modeling/period-over-period.mdx b/docs/pages/product/data-modeling/recipes/period-over-period.mdx similarity index 100% rename from docs/pages/guides/recipes/data-modeling/period-over-period.mdx rename to docs/pages/product/data-modeling/recipes/period-over-period.mdx diff --git a/docs/pages/guides/recipes/data-modeling/snapshots.mdx b/docs/pages/product/data-modeling/recipes/snapshots.mdx similarity index 100% rename from docs/pages/guides/recipes/data-modeling/snapshots.mdx rename to docs/pages/product/data-modeling/recipes/snapshots.mdx diff --git a/docs/pages/guides/recipes/data-modeling/string-time-dimensions.mdx b/docs/pages/product/data-modeling/recipes/string-time-dimensions.mdx similarity index 100% rename from docs/pages/guides/recipes/data-modeling/string-time-dimensions.mdx rename to docs/pages/product/data-modeling/recipes/string-time-dimensions.mdx diff --git a/docs/pages/guides/recipes/data-modeling/using-dynamic-measures.mdx b/docs/pages/product/data-modeling/recipes/using-dynamic-measures.mdx similarity index 100% rename from docs/pages/guides/recipes/data-modeling/using-dynamic-measures.mdx rename to docs/pages/product/data-modeling/recipes/using-dynamic-measures.mdx diff --git a/docs/pages/product/data-modeling/reference/dimensions.mdx b/docs/pages/product/data-modeling/reference/dimensions.mdx index 4f26472a6bbce..57222b80c4390 100644 --- a/docs/pages/product/data-modeling/reference/dimensions.mdx +++ b/docs/pages/product/data-modeling/reference/dimensions.mdx @@ -714,6 +714,6 @@ cube(`orders`, { [ref-apis]: /product/apis-integrations [ref-time-dimensions]: /product/data-modeling/reference/types-and-formats#time-1 [link-date-time-string]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#date_time_string_format -[ref-custom-granularity-recipe]: /guides/recipes/data-modeling/custom-granularity +[ref-custom-granularity-recipe]: /product/data-modeling/recipes/custom-granularity [ref-ref-hierarchies]: /product/data-modeling/reference/hierarchies [ref-data-sources]: /product/configuration/data-sources \ No newline at end of file diff --git a/docs/pages/product/data-modeling/reference/types-and-formats.mdx b/docs/pages/product/data-modeling/reference/types-and-formats.mdx index 88301e9cd87a2..9cb110aeac899 100644 --- a/docs/pages/product/data-modeling/reference/types-and-formats.mdx +++ b/docs/pages/product/data-modeling/reference/types-and-formats.mdx @@ -999,7 +999,7 @@ cubes: -[ref-string-time-dims]: /guides/recipes/data-modeling/string-time-dimensions +[ref-string-time-dims]: /product/data-modeling/recipes/string-time-dimensions [ref-schema-ref-preaggs-rollup]: /product/data-modeling/reference/pre-aggregations#rollup [ref-schema-ref-calc-measures]: diff --git a/docs/pages/product/data-modeling/syntax.mdx b/docs/pages/product/data-modeling/syntax.mdx index 299e022281a7d..d50986a5aafb7 100644 --- a/docs/pages/product/data-modeling/syntax.mdx +++ b/docs/pages/product/data-modeling/syntax.mdx @@ -793,4 +793,4 @@ string values in time dimensions. [link-python-reserved-words]: https://docs.python.org/3/reference/lexical_analysis.html#keywords [ref-dax-api-date-hierarchies]: /product/apis-integrations/dax-api#date-hierarchies [ref-time-dimension]: /product/data-modeling/concepts#time-dimensions -[ref-recipe-string-time-dimensions]: /guides/recipes/data-modeling/string-time-dimensions +[ref-recipe-string-time-dimensions]: /product/data-modeling/recipes/string-time-dimensions diff --git a/docs/redirects.json b/docs/redirects.json index a0407e3b949e5..df09bf7ed13bb 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,64 @@ [ + { + "source": "/guides/recipes/data-modeling/percentiles", + "destination": "/product/data-modeling/recipes/percentiles", + "permanent": true + }, + { + "source": "/guides/recipes/data-modeling/nested-aggregates", + "destination": "/product/data-modeling/recipes/nested-aggregates", + "permanent": true + }, + { + "source": "/guides/recipes/data-modeling/filtered-aggregates", + "destination": "/product/data-modeling/recipes/filtered-aggregates", + "permanent": true + }, + { + "source": "/guides/recipes/data-modeling/period-over-period", + "destination": "/product/data-modeling/recipes/period-over-period", + "permanent": true + }, + { + "source": "/guides/recipes/data-modeling/custom-granularity", + "destination": "/product/data-modeling/recipes/custom-granularity", + "permanent": true + }, + { + "source": "/guides/recipes/data-modeling/custom-calendar", + "destination": "/product/data-modeling/recipes/custom-calendar", + "permanent": true + }, + { + "source": "/guides/recipes/data-modeling/snapshots", + "destination": "/product/data-modeling/recipes/snapshots", + "permanent": true + }, + { + "source": "/guides/recipes/data-modeling/entity-attribute-value", + "destination": "/product/data-modeling/recipes/entity-attribute-value", + "permanent": true + }, + { + "source": "/guides/recipes/data-modeling/passing-dynamic-parameters-in-a-query", + "destination": "/product/data-modeling/recipes/passing-dynamic-parameters-in-a-query", + "permanent": true + }, + { + "source": "/guides/recipes/data-modeling/using-dynamic-measures", + "destination": "/product/data-modeling/recipes/using-dynamic-measures", + "permanent": true + }, + { + "source": "/guides/recipes/data-modeling/dynamic-union-tables", + "destination": "/product/data-modeling/recipes/dynamic-union-tables", + "permanent": true + }, + { + "source": "/guides/recipes/data-modeling/string-time-dimensions", + "destination": "/product/data-modeling/recipes/string-time-dimensions", + "permanent": true + }, { "source": "/guides/recipes/auth/aws-cognito", "destination": "/product/auth/recipes/aws-cognito", From eb15397a64b08bd8036a64953103651f2a2fee90 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 14:05:20 +0200 Subject: [PATCH 23/39] docs: Move code reusability recipes to data modeling section --- docs/pages/guides/recipes.mdx | 4 ++-- docs/pages/guides/recipes/_meta.js | 1 - docs/pages/guides/recipes/code-reusability/_meta.js | 4 ---- .../query-acceleration/disabling-pre-aggregations.mdx | 4 ++-- docs/pages/product/data-modeling/recipes/_meta.js | 4 +++- .../data-modeling/recipes}/environment-variables.mdx | 0 .../data-modeling/recipes}/schema-generation.mdx | 0 .../pages/product/data-modeling/reference/segments.mdx | 2 +- docs/redirects.json | 10 ++++++++++ 9 files changed, 18 insertions(+), 11 deletions(-) delete mode 100644 docs/pages/guides/recipes/code-reusability/_meta.js rename docs/pages/{guides/recipes/code-reusability => product/data-modeling/recipes}/environment-variables.mdx (100%) rename docs/pages/{guides/recipes/code-reusability => product/data-modeling/recipes}/schema-generation.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index 7a414a9e60c4d..3d702f752df24 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -40,8 +40,8 @@ These recipes will show you the best practices of using Cube. ### Code reusability -- [Implementing data model generation](/guides/recipes/code-reusability/schema-generation) -- [Referencing environment variables](/guides/recipes/code-reusability/environment-variables) +- [Implementing data model generation](/product/data-modeling/recipes/schema-generation) +- [Referencing environment variables](/product/data-modeling/recipes/environment-variables) ### Access control diff --git a/docs/pages/guides/recipes/_meta.js b/docs/pages/guides/recipes/_meta.js index 7b1cc4701b095..ab7178d942020 100644 --- a/docs/pages/guides/recipes/_meta.js +++ b/docs/pages/guides/recipes/_meta.js @@ -1,5 +1,4 @@ module.exports = { - "code-reusability": "Code reusability", "multitenancy": "Multitenancy", "data-sources": "Data sources", "queries": "Queries", diff --git a/docs/pages/guides/recipes/code-reusability/_meta.js b/docs/pages/guides/recipes/code-reusability/_meta.js deleted file mode 100644 index 66edac75107d9..0000000000000 --- a/docs/pages/guides/recipes/code-reusability/_meta.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - "schema-generation": "Implementing data model generation", - "environment-variables": "Referencing environment variables", -} \ No newline at end of file diff --git a/docs/pages/guides/recipes/query-acceleration/disabling-pre-aggregations.mdx b/docs/pages/guides/recipes/query-acceleration/disabling-pre-aggregations.mdx index c699ada720742..739c46ed59174 100644 --- a/docs/pages/guides/recipes/query-acceleration/disabling-pre-aggregations.mdx +++ b/docs/pages/guides/recipes/query-acceleration/disabling-pre-aggregations.mdx @@ -81,6 +81,6 @@ the reason why `measures` are defined as such above. [ref-pre-aggs]: /product/caching#pre-aggregations -[ref-env-vars-recipe-yaml]: /guides/recipes/code-reusability/environment-variables#yaml-files -[ref-env-vars-recipe-js]: /guides/recipes/code-reusability/environment-variables#javascript-files +[ref-env-vars-recipe-yaml]: /product/data-modeling/recipes/environment-variables#yaml-files +[ref-env-vars-recipe-js]: /product/data-modeling/recipes/environment-variables#javascript-files [ref-context-symbols-transpilation]: /product/data-modeling/dynamic/schema-execution-environment#context-symbols-transpile diff --git a/docs/pages/product/data-modeling/recipes/_meta.js b/docs/pages/product/data-modeling/recipes/_meta.js index 088f911d7efd0..ac76977fb78ad 100644 --- a/docs/pages/product/data-modeling/recipes/_meta.js +++ b/docs/pages/product/data-modeling/recipes/_meta.js @@ -4,6 +4,7 @@ module.exports = { "filtered-aggregates": "Filtered aggregates", "period-over-period": "Period-over-period changes", "passing-dynamic-parameters-in-a-query": "Dynamic parameters", + "schema-generation": "Data model generation", "using-dynamic-measures": "Dynamic measures", "dynamic-union-tables": "Dynamic union tables", "string-time-dimensions": "String time dimensions", @@ -15,5 +16,6 @@ module.exports = { "event-analytics": "Event analytics", "funnels": "Funnel analysis", "cohort-retention": "Retention analysis", - "xirr": "Rate of return" + "xirr": "Rate of return", + "environment-variables": "Environment variables" } diff --git a/docs/pages/guides/recipes/code-reusability/environment-variables.mdx b/docs/pages/product/data-modeling/recipes/environment-variables.mdx similarity index 100% rename from docs/pages/guides/recipes/code-reusability/environment-variables.mdx rename to docs/pages/product/data-modeling/recipes/environment-variables.mdx diff --git a/docs/pages/guides/recipes/code-reusability/schema-generation.mdx b/docs/pages/product/data-modeling/recipes/schema-generation.mdx similarity index 100% rename from docs/pages/guides/recipes/code-reusability/schema-generation.mdx rename to docs/pages/product/data-modeling/recipes/schema-generation.mdx diff --git a/docs/pages/product/data-modeling/reference/segments.mdx b/docs/pages/product/data-modeling/reference/segments.mdx index 26a13614947d9..d4bb8ba557efd 100644 --- a/docs/pages/product/data-modeling/reference/segments.mdx +++ b/docs/pages/product/data-modeling/reference/segments.mdx @@ -333,7 +333,7 @@ cubes: [ref-ref-cubes]: /product/data-modeling/reference/cube [ref-backend-query]: /product/apis-integrations/rest-api/query-format -[ref-schema-gen]: /guides/recipes/code-reusability/schema-generation +[ref-schema-gen]: /product/data-modeling/recipes/schema-generation [ref-naming]: /product/data-modeling/syntax#naming [ref-playground]: /product/workspace/playground [ref-apis]: /product/apis-integrations \ No newline at end of file diff --git a/docs/redirects.json b/docs/redirects.json index df09bf7ed13bb..5b82943663803 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,14 @@ [ + { + "source": "/guides/recipes/code-reusability/environment-variables", + "destination": "/product/data-modeling/recipes/environment-variables", + "permanent": true + }, + { + "source": "/guides/recipes/code-reusability/schema-generation", + "destination": "/product/data-modeling/recipes/schema-generation", + "permanent": true + }, { "source": "/guides/recipes/data-modeling/percentiles", "destination": "/product/data-modeling/recipes/percentiles", From 5c9b1740213d035d54a4a4f32bbca4eca0876db9 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 14:11:00 +0200 Subject: [PATCH 24/39] docs: Move multitenancy recipe to configuration recipes section --- docs/pages/guides/recipes.mdx | 2 +- docs/pages/guides/recipes/_meta.js | 1 - docs/pages/guides/recipes/multitenancy/_meta.js | 3 --- docs/pages/product/configuration/recipes/_meta.js | 3 ++- .../configuration/recipes}/custom-data-model-per-tenant.mdx | 0 docs/redirects.json | 5 +++++ 6 files changed, 8 insertions(+), 6 deletions(-) delete mode 100644 docs/pages/guides/recipes/multitenancy/_meta.js rename docs/pages/{guides/recipes/multitenancy => product/configuration/recipes}/custom-data-model-per-tenant.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index 3d702f752df24..b3501a4aca41c 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -52,7 +52,7 @@ These recipes will show you the best practices of using Cube. ### Multitenancy -- [Providing a custom data model for each tenant](/guides/recipes/multitenancy/custom-data-model-per-tenant) +- [Providing a custom data model for each tenant](/product/configuration/recipes/custom-data-model-per-tenant) ### Queries diff --git a/docs/pages/guides/recipes/_meta.js b/docs/pages/guides/recipes/_meta.js index ab7178d942020..c94aecb5cfd4b 100644 --- a/docs/pages/guides/recipes/_meta.js +++ b/docs/pages/guides/recipes/_meta.js @@ -1,5 +1,4 @@ module.exports = { - "multitenancy": "Multitenancy", "data-sources": "Data sources", "queries": "Queries", "query-acceleration": "Query acceleration", diff --git a/docs/pages/guides/recipes/multitenancy/_meta.js b/docs/pages/guides/recipes/multitenancy/_meta.js deleted file mode 100644 index f6b007dbb9f31..0000000000000 --- a/docs/pages/guides/recipes/multitenancy/_meta.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - "custom-data-model-per-tenant": "Providing custom data model for each tenant" -} \ No newline at end of file diff --git a/docs/pages/product/configuration/recipes/_meta.js b/docs/pages/product/configuration/recipes/_meta.js index 487bb0915da6a..58608ccb9f337 100644 --- a/docs/pages/product/configuration/recipes/_meta.js +++ b/docs/pages/product/configuration/recipes/_meta.js @@ -1,3 +1,4 @@ module.exports = { - "using-different-schemas-for-tenants": "Different data models for tenants" + "using-different-schemas-for-tenants": "Different data models for tenants", + "custom-data-model-per-tenant": "Custom data model for each tenant" } diff --git a/docs/pages/guides/recipes/multitenancy/custom-data-model-per-tenant.mdx b/docs/pages/product/configuration/recipes/custom-data-model-per-tenant.mdx similarity index 100% rename from docs/pages/guides/recipes/multitenancy/custom-data-model-per-tenant.mdx rename to docs/pages/product/configuration/recipes/custom-data-model-per-tenant.mdx diff --git a/docs/redirects.json b/docs/redirects.json index 5b82943663803..adae22672e3b0 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/recipes/multitenancy/custom-data-model-per-tenant", + "destination": "/product/configuration/recipes/custom-data-model-per-tenant", + "permanent": true + }, { "source": "/guides/recipes/code-reusability/environment-variables", "destination": "/product/data-modeling/recipes/environment-variables", From 65371cc7fc21166804e87fa1481f5f0b7c9f6d8f Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 14:15:13 +0200 Subject: [PATCH 25/39] docs: move environment variables recipe to configuration section --- docs/pages/guides/recipes.mdx | 2 +- .../query-acceleration/disabling-pre-aggregations.mdx | 4 ++-- docs/pages/product/configuration/recipes/_meta.js | 1 + .../recipes/environment-variables.mdx | 0 docs/pages/product/data-modeling/recipes/_meta.js | 3 +-- docs/redirects.json | 7 ++++++- 6 files changed, 11 insertions(+), 6 deletions(-) rename docs/pages/product/{data-modeling => configuration}/recipes/environment-variables.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index b3501a4aca41c..3c4996d5e512a 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -41,7 +41,7 @@ These recipes will show you the best practices of using Cube. ### Code reusability - [Implementing data model generation](/product/data-modeling/recipes/schema-generation) -- [Referencing environment variables](/product/data-modeling/recipes/environment-variables) +- [Referencing environment variables](/product/configuration/recipes/environment-variables) ### Access control diff --git a/docs/pages/guides/recipes/query-acceleration/disabling-pre-aggregations.mdx b/docs/pages/guides/recipes/query-acceleration/disabling-pre-aggregations.mdx index 739c46ed59174..d8c7f2a4fec35 100644 --- a/docs/pages/guides/recipes/query-acceleration/disabling-pre-aggregations.mdx +++ b/docs/pages/guides/recipes/query-acceleration/disabling-pre-aggregations.mdx @@ -81,6 +81,6 @@ the reason why `measures` are defined as such above. [ref-pre-aggs]: /product/caching#pre-aggregations -[ref-env-vars-recipe-yaml]: /product/data-modeling/recipes/environment-variables#yaml-files -[ref-env-vars-recipe-js]: /product/data-modeling/recipes/environment-variables#javascript-files +[ref-env-vars-recipe-yaml]: /product/configuration/recipes/environment-variables#yaml-files +[ref-env-vars-recipe-js]: /product/configuration/recipes/environment-variables#javascript-files [ref-context-symbols-transpilation]: /product/data-modeling/dynamic/schema-execution-environment#context-symbols-transpile diff --git a/docs/pages/product/configuration/recipes/_meta.js b/docs/pages/product/configuration/recipes/_meta.js index 58608ccb9f337..1874230937cd9 100644 --- a/docs/pages/product/configuration/recipes/_meta.js +++ b/docs/pages/product/configuration/recipes/_meta.js @@ -1,4 +1,5 @@ module.exports = { + "environment-variables": "Environment variables", "using-different-schemas-for-tenants": "Different data models for tenants", "custom-data-model-per-tenant": "Custom data model for each tenant" } diff --git a/docs/pages/product/data-modeling/recipes/environment-variables.mdx b/docs/pages/product/configuration/recipes/environment-variables.mdx similarity index 100% rename from docs/pages/product/data-modeling/recipes/environment-variables.mdx rename to docs/pages/product/configuration/recipes/environment-variables.mdx diff --git a/docs/pages/product/data-modeling/recipes/_meta.js b/docs/pages/product/data-modeling/recipes/_meta.js index ac76977fb78ad..f95f5049d17ae 100644 --- a/docs/pages/product/data-modeling/recipes/_meta.js +++ b/docs/pages/product/data-modeling/recipes/_meta.js @@ -16,6 +16,5 @@ module.exports = { "event-analytics": "Event analytics", "funnels": "Funnel analysis", "cohort-retention": "Retention analysis", - "xirr": "Rate of return", - "environment-variables": "Environment variables" + "xirr": "Rate of return" } diff --git a/docs/redirects.json b/docs/redirects.json index adae22672e3b0..f4e03cd105ed3 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/product/data-modeling/recipes/environment-variables", + "destination": "/product/configuration/recipes/environment-variables", + "permanent": true + }, { "source": "/guides/recipes/multitenancy/custom-data-model-per-tenant", "destination": "/product/configuration/recipes/custom-data-model-per-tenant", @@ -6,7 +11,7 @@ }, { "source": "/guides/recipes/code-reusability/environment-variables", - "destination": "/product/data-modeling/recipes/environment-variables", + "destination": "/product/configuration/recipes/environment-variables", "permanent": true }, { From 73c2d54737c22d6e3f1bb6e5d9c96010ecc9d3c0 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 15:23:33 +0200 Subject: [PATCH 26/39] docs: move data sources recipes to configuration section --- docs/pages/guides/recipes.mdx | 4 ++-- docs/pages/guides/recipes/_meta.js | 1 - docs/pages/guides/recipes/data-sources/_meta.js | 4 ---- .../configuration/data-sources/aws-redshift.mdx | 2 +- .../product/configuration/data-sources/clickhouse.mdx | 2 +- .../product/configuration/data-sources/materialize.mdx | 2 +- .../product/configuration/data-sources/mongodb.mdx | 2 +- .../product/configuration/data-sources/ms-fabric.mdx | 2 +- .../product/configuration/data-sources/ms-sql.mdx | 2 +- .../pages/product/configuration/data-sources/mysql.mdx | 2 +- .../product/configuration/data-sources/oracle.mdx | 2 +- .../pages/product/configuration/data-sources/pinot.mdx | 2 +- .../product/configuration/data-sources/postgres.mdx | 2 +- .../product/configuration/data-sources/presto.mdx | 2 +- .../pages/product/configuration/data-sources/trino.mdx | 2 +- .../product/configuration/data-sources/vertica.mdx | 2 +- docs/pages/product/configuration/recipes/_meta.js | 4 +++- .../recipes}/multiple-sources-same-schema.mdx | 0 .../recipes}/using-ssl-connections-to-data-source.mdx | 0 docs/pages/product/workspace/sql-runner.mdx | 2 +- docs/redirects.json | 10 ++++++++++ 21 files changed, 29 insertions(+), 22 deletions(-) delete mode 100644 docs/pages/guides/recipes/data-sources/_meta.js rename docs/pages/{guides/recipes/data-sources => product/configuration/recipes}/multiple-sources-same-schema.mdx (100%) rename docs/pages/{guides/recipes/data-sources => product/configuration/recipes}/using-ssl-connections-to-data-source.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index 3c4996d5e512a..d597dc8c2b47f 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -19,8 +19,8 @@ These recipes will show you the best practices of using Cube. ### Data sources -- [Using multiple data sources](/guides/recipes/data-sources/multiple-sources-same-schema) -- [Using SSL connections to a data source](/guides/recipes/data-sources/using-ssl-connections-to-data-source) +- [Using multiple data sources](/product/configuration/recipes/multiple-sources-same-schema) +- [Using SSL connections to a data source](/product/configuration/recipes/using-ssl-connections-to-data-source) - [Joining data from multiple data sources](/guides/recipes/query-acceleration/joining-multiple-data-sources) ### Data modeling diff --git a/docs/pages/guides/recipes/_meta.js b/docs/pages/guides/recipes/_meta.js index c94aecb5cfd4b..6e368dab2a098 100644 --- a/docs/pages/guides/recipes/_meta.js +++ b/docs/pages/guides/recipes/_meta.js @@ -1,5 +1,4 @@ module.exports = { - "data-sources": "Data sources", "queries": "Queries", "query-acceleration": "Query acceleration", "data-exploration": "Data exploration", diff --git a/docs/pages/guides/recipes/data-sources/_meta.js b/docs/pages/guides/recipes/data-sources/_meta.js deleted file mode 100644 index 453a04820e250..0000000000000 --- a/docs/pages/guides/recipes/data-sources/_meta.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - "multiple-sources-same-schema": "Using multiple data sources", - "using-ssl-connections-to-data-source": "Using SSL Connections to a data source" -} \ No newline at end of file diff --git a/docs/pages/product/configuration/data-sources/aws-redshift.mdx b/docs/pages/product/configuration/data-sources/aws-redshift.mdx index 0fbb4fc086e15..f38e523c9629d 100644 --- a/docs/pages/product/configuration/data-sources/aws-redshift.mdx +++ b/docs/pages/product/configuration/data-sources/aws-redshift.mdx @@ -152,7 +152,7 @@ Database][ref-recipe-enable-ssl]. [ref-caching-using-preaggs-build-strats]: /product/caching/using-pre-aggregations#pre-aggregation-build-strategies [ref-recipe-enable-ssl]: - /guides/recipes/data-sources/using-ssl-connections-to-data-source + /product/configuration/recipes/using-ssl-connections-to-data-source [ref-schema-ref-types-formats-countdistinctapprox]: /product/data-modeling/reference/types-and-formats#count_distinct_approx [self-preaggs-batching]: #batching [ref-conf-preaggs-schema]: /product/configuration/reference/config#pre_aggregations_schema \ No newline at end of file diff --git a/docs/pages/product/configuration/data-sources/clickhouse.mdx b/docs/pages/product/configuration/data-sources/clickhouse.mdx index 83c1f6d9e8a41..54064336e79fd 100644 --- a/docs/pages/product/configuration/data-sources/clickhouse.mdx +++ b/docs/pages/product/configuration/data-sources/clickhouse.mdx @@ -136,7 +136,7 @@ You can connect to a ClickHouse database with compression enabled, by setting [ref-caching-using-preaggs-build-strats]: /product/caching/using-pre-aggregations#pre-aggregation-build-strategies [ref-recipe-enable-ssl]: - /guides/recipes/data-sources/using-ssl-connections-to-data-source + /product/configuration/recipes/using-ssl-connections-to-data-source [ref-caching-large-preaggs]: /product/caching/using-pre-aggregations#export-bucket [ref-schema-ref-types-formats-countdistinctapprox]: /product/data-modeling/reference/types-and-formats#count_distinct_approx diff --git a/docs/pages/product/configuration/data-sources/materialize.mdx b/docs/pages/product/configuration/data-sources/materialize.mdx index a2ab9e1d1f682..660ab25ee1272 100644 --- a/docs/pages/product/configuration/data-sources/materialize.mdx +++ b/docs/pages/product/configuration/data-sources/materialize.mdx @@ -52,4 +52,4 @@ Database][ref-recipe-enable-ssl]. [materialize]: https://materialize.com/docs/ [materialize-slack]: https://materialize.com/s/chat [ref-recipe-enable-ssl]: - /guides/recipes/data-sources/using-ssl-connections-to-data-source + /product/configuration/recipes/using-ssl-connections-to-data-source diff --git a/docs/pages/product/configuration/data-sources/mongodb.mdx b/docs/pages/product/configuration/data-sources/mongodb.mdx index f4747f063e52f..6da49ccbf087d 100644 --- a/docs/pages/product/configuration/data-sources/mongodb.mdx +++ b/docs/pages/product/configuration/data-sources/mongodb.mdx @@ -119,7 +119,7 @@ Database][ref-recipe-enable-ssl]. [ref-caching-using-preaggs-build-strats]: /product/caching/using-pre-aggregations#pre-aggregation-build-strategies [ref-recipe-enable-ssl]: - /guides/recipes/data-sources/using-ssl-connections-to-data-source + /product/configuration/recipes/using-ssl-connections-to-data-source [ref-schema-ref-types-formats-countdistinctapprox]: /product/data-modeling/reference/types-and-formats#count_distinct_approx [self-preaggs-batching]: #batching [link-bi-connector]: https://www.mongodb.com/docs/bi-connector/current/ \ No newline at end of file diff --git a/docs/pages/product/configuration/data-sources/ms-fabric.mdx b/docs/pages/product/configuration/data-sources/ms-fabric.mdx index c95dceb287304..05effe23cb49e 100644 --- a/docs/pages/product/configuration/data-sources/ms-fabric.mdx +++ b/docs/pages/product/configuration/data-sources/ms-fabric.mdx @@ -106,6 +106,6 @@ Microsoft Fabric does not support export buckets. [ref-caching-using-preaggs-build-strats]: /product/caching/using-pre-aggregations#pre-aggregation-build-strategies [ref-recipe-enable-ssl]: - /guides/recipes/data-sources/using-ssl-connections-to-data-source + /product/configuration/recipes/using-ssl-connections-to-data-source [ref-schema-ref-types-formats-countdistinctapprox]: /product/data-modeling/reference/types-and-formats#count_distinct_approx [self-preaggs-simple]: #simple \ No newline at end of file diff --git a/docs/pages/product/configuration/data-sources/ms-sql.mdx b/docs/pages/product/configuration/data-sources/ms-sql.mdx index 5e3b7fe10a0b0..ea98de74350ac 100644 --- a/docs/pages/product/configuration/data-sources/ms-sql.mdx +++ b/docs/pages/product/configuration/data-sources/ms-sql.mdx @@ -104,6 +104,6 @@ module.exports = { [ref-caching-using-preaggs-build-strats]: /product/caching/using-pre-aggregations#pre-aggregation-build-strategies [ref-recipe-enable-ssl]: - /guides/recipes/data-sources/using-ssl-connections-to-data-source + /product/configuration/recipes/using-ssl-connections-to-data-source [ref-schema-ref-types-formats-countdistinctapprox]: /product/data-modeling/reference/types-and-formats#count_distinct_approx [self-preaggs-simple]: #simple diff --git a/docs/pages/product/configuration/data-sources/mysql.mdx b/docs/pages/product/configuration/data-sources/mysql.mdx index 54075c5b90ff7..46b714c837bb3 100644 --- a/docs/pages/product/configuration/data-sources/mysql.mdx +++ b/docs/pages/product/configuration/data-sources/mysql.mdx @@ -107,7 +107,7 @@ For additional details, check the [relevant issue](https://github.com/cube-js/cu [ref-caching-using-preaggs-build-strats]: /product/caching/using-pre-aggregations#pre-aggregation-build-strategies [ref-recipe-enable-ssl]: - /guides/recipes/data-sources/using-ssl-connections-to-data-source + /product/configuration/recipes/using-ssl-connections-to-data-source [ref-schema-ref-types-formats-countdistinctapprox]: /product/data-modeling/reference/types-and-formats#count_distinct_approx [self-preaggs-batching]: #batching [self-ssl]: #ssl diff --git a/docs/pages/product/configuration/data-sources/oracle.mdx b/docs/pages/product/configuration/data-sources/oracle.mdx index f66f04f2f73a7..bd3d31a217294 100644 --- a/docs/pages/product/configuration/data-sources/oracle.mdx +++ b/docs/pages/product/configuration/data-sources/oracle.mdx @@ -46,4 +46,4 @@ Database][ref-recipe-enable-ssl]. [oracle]: https://www.oracle.com/uk/index.html [ref-recipe-enable-ssl]: - /guides/recipes/data-sources/using-ssl-connections-to-data-source + /product/configuration/recipes/using-ssl-connections-to-data-source diff --git a/docs/pages/product/configuration/data-sources/pinot.mdx b/docs/pages/product/configuration/data-sources/pinot.mdx index f94e04b7bc94c..a52dac924ee82 100644 --- a/docs/pages/product/configuration/data-sources/pinot.mdx +++ b/docs/pages/product/configuration/data-sources/pinot.mdx @@ -101,6 +101,6 @@ Cube does not require any additional configuration to enable SSL as Pinot connec [pinot-docs-approx-agg-fns]: https://docs.pinot.apache.org/users/user-guide-query/query-syntax/how-to-handle-unique-counting [ref-recipe-enable-ssl]: - /guides/recipes/data-sources/using-ssl-connections-to-data-source + /product/configuration/recipes/using-ssl-connections-to-data-source [ref-schema-ref-types-formats-countdistinctapprox]: /product/data-modeling/reference/types-and-formats#count_distinct_approx [link-startree]: https://startree.ai \ No newline at end of file diff --git a/docs/pages/product/configuration/data-sources/postgres.mdx b/docs/pages/product/configuration/data-sources/postgres.mdx index 6b8ed82125d78..cbdbf85e2369e 100644 --- a/docs/pages/product/configuration/data-sources/postgres.mdx +++ b/docs/pages/product/configuration/data-sources/postgres.mdx @@ -125,7 +125,7 @@ module.exports = { [ref-caching-using-preaggs-build-strats]: /product/caching/using-pre-aggregations#pre-aggregation-build-strategies [ref-recipe-enable-ssl]: - /guides/recipes/data-sources/using-ssl-connections-to-data-source + /product/configuration/recipes/using-ssl-connections-to-data-source [ref-schema-ref-types-formats-countdistinctapprox]: /product/data-modeling/reference/types-and-formats#count_distinct_approx [self-preaggs-batching]: #batching [self-ssl]: #ssl diff --git a/docs/pages/product/configuration/data-sources/presto.mdx b/docs/pages/product/configuration/data-sources/presto.mdx index e25b9fd7a4f98..5e1953f14c9f6 100644 --- a/docs/pages/product/configuration/data-sources/presto.mdx +++ b/docs/pages/product/configuration/data-sources/presto.mdx @@ -58,5 +58,5 @@ Database][ref-recipe-enable-ssl]. [presto-docs-approx-agg-fns]: https://prestodb.io/docs/current/functions/aggregate.html [ref-recipe-enable-ssl]: - /guides/recipes/data-sources/using-ssl-connections-to-data-source + /product/configuration/recipes/using-ssl-connections-to-data-source [ref-schema-ref-types-formats-countdistinctapprox]: /product/data-modeling/reference/types-and-formats#count_distinct_approx diff --git a/docs/pages/product/configuration/data-sources/trino.mdx b/docs/pages/product/configuration/data-sources/trino.mdx index 0ff277f25c935..8605955f09594 100644 --- a/docs/pages/product/configuration/data-sources/trino.mdx +++ b/docs/pages/product/configuration/data-sources/trino.mdx @@ -58,5 +58,5 @@ Database][ref-recipe-enable-ssl]. [trino-docs-approx-agg-fns]: https://trino.io/docs/current/functions/aggregate.html#approximate-aggregate-functions [ref-recipe-enable-ssl]: - /guides/recipes/data-sources/using-ssl-connections-to-data-source + /product/configuration/recipes/using-ssl-connections-to-data-source [ref-schema-ref-types-formats-countdistinctapprox]: /product/data-modeling/reference/types-and-formats#count_distinct_approx diff --git a/docs/pages/product/configuration/data-sources/vertica.mdx b/docs/pages/product/configuration/data-sources/vertica.mdx index f7a9fb5f19001..978a08178796c 100644 --- a/docs/pages/product/configuration/data-sources/vertica.mdx +++ b/docs/pages/product/configuration/data-sources/vertica.mdx @@ -48,5 +48,5 @@ Database][ref-recipe-enable-ssl]. [opentext-adb]: https://www.opentext.com/products/analytics-database?o=vert [vertica]: https://www.vertica.com/documentation/vertica/all/ -[ref-recipe-enable-ssl]:/guides/recipes/data-sources/using-ssl-connections-to-data-source +[ref-recipe-enable-ssl]:/product/configuration/recipes/using-ssl-connections-to-data-source diff --git a/docs/pages/product/configuration/recipes/_meta.js b/docs/pages/product/configuration/recipes/_meta.js index 1874230937cd9..eff431ccb6bde 100644 --- a/docs/pages/product/configuration/recipes/_meta.js +++ b/docs/pages/product/configuration/recipes/_meta.js @@ -1,5 +1,7 @@ module.exports = { "environment-variables": "Environment variables", "using-different-schemas-for-tenants": "Different data models for tenants", - "custom-data-model-per-tenant": "Custom data model for each tenant" + "custom-data-model-per-tenant": "Custom data model for each tenant", + "multiple-sources-same-schema": "Multiple data sources", + "using-ssl-connections-to-data-source": "SSL with data sources" } diff --git a/docs/pages/guides/recipes/data-sources/multiple-sources-same-schema.mdx b/docs/pages/product/configuration/recipes/multiple-sources-same-schema.mdx similarity index 100% rename from docs/pages/guides/recipes/data-sources/multiple-sources-same-schema.mdx rename to docs/pages/product/configuration/recipes/multiple-sources-same-schema.mdx diff --git a/docs/pages/guides/recipes/data-sources/using-ssl-connections-to-data-source.mdx b/docs/pages/product/configuration/recipes/using-ssl-connections-to-data-source.mdx similarity index 100% rename from docs/pages/guides/recipes/data-sources/using-ssl-connections-to-data-source.mdx rename to docs/pages/product/configuration/recipes/using-ssl-connections-to-data-source.mdx diff --git a/docs/pages/product/workspace/sql-runner.mdx b/docs/pages/product/workspace/sql-runner.mdx index 9afb996fb701a..e0e7d95f33b7a 100644 --- a/docs/pages/product/workspace/sql-runner.mdx +++ b/docs/pages/product/workspace/sql-runner.mdx @@ -69,7 +69,7 @@ security context. [ref-conf-ref-driverfactory]: /product/configuration/reference/config#driverfactory [ref-recipe-multi-src-same-model]: - /guides/recipes/data-sources/multiple-sources-same-schema + /product/configuration/recipes/multiple-sources-same-schema ### Scheduled Refresh Contexts diff --git a/docs/redirects.json b/docs/redirects.json index f4e03cd105ed3..31fd3ee98bb12 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,14 @@ [ + { + "source": "/guides/recipes/data-sources/multiple-sources-same-schema", + "destination": "/product/configuration/recipes/multiple-sources-same-schema", + "permanent": true + }, + { + "source": "/guides/recipes/data-sources/using-ssl-connections-to-data-source", + "destination": "/product/configuration/recipes/using-ssl-connections-to-data-source", + "permanent": true + }, { "source": "/product/data-modeling/recipes/environment-variables", "destination": "/product/configuration/recipes/environment-variables", From 8d9db00bfa19f4c5e72df981f1430e5971e517ec Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 15:33:16 +0200 Subject: [PATCH 27/39] docs: move queries recipes to APIs & Integrations section --- docs/pages/guides/recipes.mdx | 6 +++--- docs/pages/guides/recipes/_meta.js | 1 - docs/pages/guides/recipes/queries/_meta.js | 5 ----- docs/pages/product/apis-integrations/_meta.js | 1 + .../apis-integrations/graphql-api/reference.mdx | 2 +- docs/pages/product/apis-integrations/queries.mdx | 2 +- .../product/apis-integrations/recipes/_meta.js | 5 +++++ .../getting-unique-values-for-a-field.mdx | 0 .../apis-integrations/recipes}/pagination.mdx | 0 .../apis-integrations/recipes}/sorting.mdx | 0 docs/redirects.json | 15 +++++++++++++++ 11 files changed, 26 insertions(+), 11 deletions(-) delete mode 100644 docs/pages/guides/recipes/queries/_meta.js create mode 100644 docs/pages/product/apis-integrations/recipes/_meta.js rename docs/pages/{guides/recipes/queries => product/apis-integrations/recipes}/getting-unique-values-for-a-field.mdx (100%) rename docs/pages/{guides/recipes/queries => product/apis-integrations/recipes}/pagination.mdx (100%) rename docs/pages/{guides/recipes/queries => product/apis-integrations/recipes}/sorting.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index d597dc8c2b47f..2d92072439200 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -56,9 +56,9 @@ These recipes will show you the best practices of using Cube. ### Queries -- [Getting unique values for a field](/guides/recipes/queries/getting-unique-values-for-a-field) -- [Implementing custom sorting](/guides/recipes/queries/sorting) -- [Implementing pagination](/guides/recipes/queries/pagination) +- [Getting unique values for a field](/product/apis-integrations/recipes/getting-unique-values-for-a-field) +- [Implementing custom sorting](/product/apis-integrations/recipes/sorting) +- [Implementing pagination](/product/apis-integrations/recipes/pagination) - [Passing dynamic parameters in a query](/product/data-modeling/recipes/passing-dynamic-parameters-in-a-query) ### Query acceleration diff --git a/docs/pages/guides/recipes/_meta.js b/docs/pages/guides/recipes/_meta.js index 6e368dab2a098..f75116e5bc225 100644 --- a/docs/pages/guides/recipes/_meta.js +++ b/docs/pages/guides/recipes/_meta.js @@ -1,5 +1,4 @@ module.exports = { - "queries": "Queries", "query-acceleration": "Query acceleration", "data-exploration": "Data exploration", "upgrading-cube": "Upgrading Cube" diff --git a/docs/pages/guides/recipes/queries/_meta.js b/docs/pages/guides/recipes/queries/_meta.js deleted file mode 100644 index 3fd7d156c769f..0000000000000 --- a/docs/pages/guides/recipes/queries/_meta.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - "getting-unique-values-for-a-field": "Getting unique values for a field", - "sorting": "Implementing custom sorting", - "pagination": "Implementing pagination" -} \ No newline at end of file diff --git a/docs/pages/product/apis-integrations/_meta.js b/docs/pages/product/apis-integrations/_meta.js index 0da2dbae8d9d8..4c85963283551 100644 --- a/docs/pages/product/apis-integrations/_meta.js +++ b/docs/pages/product/apis-integrations/_meta.js @@ -1,5 +1,6 @@ module.exports = { "queries": "Queries", + "recipes": "Recipes", "dax-api": "DAX API", "mdx-api": "MDX API", "microsoft-excel": "Cube Cloud for Excel", diff --git a/docs/pages/product/apis-integrations/graphql-api/reference.mdx b/docs/pages/product/apis-integrations/graphql-api/reference.mdx index 57690bf5ed8fa..ab42e9074e691 100644 --- a/docs/pages/product/apis-integrations/graphql-api/reference.mdx +++ b/docs/pages/product/apis-integrations/graphql-api/reference.mdx @@ -31,7 +31,7 @@ format, e.g., `America/Los_Angeles`. - **`ungrouped` (`Boolean`):** If set to `true`, Cube will run an [ungrouped query][ref-ungrouped-query]. -[ref-recipe-pagination]: /guides/recipes/queries/pagination +[ref-recipe-pagination]: /product/apis-integrations/recipes/pagination ## `RootWhereInput` diff --git a/docs/pages/product/apis-integrations/queries.mdx b/docs/pages/product/apis-integrations/queries.mdx index a24019ce4743b..b29f96f0173f4 100644 --- a/docs/pages/product/apis-integrations/queries.mdx +++ b/docs/pages/product/apis-integrations/queries.mdx @@ -395,7 +395,7 @@ Additionally, note that ungrouped queries have additional requirements for [ref-sql-utils]: /product/data-modeling/reference/context-variables#sql_utils [ref-matching-preaggs-time-dimensions]: /product/caching/matching-pre-aggregations#matching-time-dimensions [ref-matching-preaggs-ungrouped]: /product/caching/matching-pre-aggregations#matching-ungrouped-queries -[ref-pagination-recipe]: /guides/recipes/queries/pagination +[ref-pagination-recipe]: /product/apis-integrations/recipes/pagination [ref-primary-key]: /product/data-modeling/reference/dimensions#primary_key [ref-conf-allow-ungrouped]: /product/configuration/reference/config#allow_ungrouped_without_primary_key [ref-caching]: /product/caching diff --git a/docs/pages/product/apis-integrations/recipes/_meta.js b/docs/pages/product/apis-integrations/recipes/_meta.js new file mode 100644 index 0000000000000..0d7e6491d1ccc --- /dev/null +++ b/docs/pages/product/apis-integrations/recipes/_meta.js @@ -0,0 +1,5 @@ +module.exports = { + "getting-unique-values-for-a-field": "Unique values", + "sorting": "Custom sorting", + "pagination": "Pagination" +} diff --git a/docs/pages/guides/recipes/queries/getting-unique-values-for-a-field.mdx b/docs/pages/product/apis-integrations/recipes/getting-unique-values-for-a-field.mdx similarity index 100% rename from docs/pages/guides/recipes/queries/getting-unique-values-for-a-field.mdx rename to docs/pages/product/apis-integrations/recipes/getting-unique-values-for-a-field.mdx diff --git a/docs/pages/guides/recipes/queries/pagination.mdx b/docs/pages/product/apis-integrations/recipes/pagination.mdx similarity index 100% rename from docs/pages/guides/recipes/queries/pagination.mdx rename to docs/pages/product/apis-integrations/recipes/pagination.mdx diff --git a/docs/pages/guides/recipes/queries/sorting.mdx b/docs/pages/product/apis-integrations/recipes/sorting.mdx similarity index 100% rename from docs/pages/guides/recipes/queries/sorting.mdx rename to docs/pages/product/apis-integrations/recipes/sorting.mdx diff --git a/docs/redirects.json b/docs/redirects.json index 31fd3ee98bb12..bb0dc25dfabf2 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,19 @@ [ + { + "source": "/guides/recipes/queries/getting-unique-values-for-a-field", + "destination": "/product/apis-integrations/recipes/getting-unique-values-for-a-field", + "permanent": true + }, + { + "source": "/guides/recipes/queries/sorting", + "destination": "/product/apis-integrations/recipes/sorting", + "permanent": true + }, + { + "source": "/guides/recipes/queries/pagination", + "destination": "/product/apis-integrations/recipes/pagination", + "permanent": true + }, { "source": "/guides/recipes/data-sources/multiple-sources-same-schema", "destination": "/product/configuration/recipes/multiple-sources-same-schema", From 27ae16a50c21e3b1d795f8a9126a2adc07ac6dc5 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 15:39:52 +0200 Subject: [PATCH 28/39] docs: Move query acceleration recipes to caching section --- docs/pages/guides/recipes.mdx | 10 +++---- docs/pages/guides/recipes/_meta.js | 1 - docs/pages/product/caching/_meta.js | 3 +- .../caching/recipes}/_meta.js | 8 ++--- .../recipes}/disabling-pre-aggregations.mdx | 0 ...ding-pre-aggregations-for-a-date-range.mdx | 0 .../joining-multiple-data-sources.mdx | 0 .../caching/recipes}/non-additivity.mdx | 0 .../recipes}/refreshing-select-partitions.mdx | 0 ...ng-originalsql-and-rollups-effectively.mdx | 0 docs/redirects.json | 30 +++++++++++++++++++ 11 files changed, 41 insertions(+), 11 deletions(-) rename docs/pages/{guides/recipes/query-acceleration => product/caching/recipes}/_meta.js (62%) rename docs/pages/{guides/recipes/query-acceleration => product/caching/recipes}/disabling-pre-aggregations.mdx (100%) rename docs/pages/{guides/recipes/query-acceleration => product/caching/recipes}/incrementally-building-pre-aggregations-for-a-date-range.mdx (100%) rename docs/pages/{guides/recipes/query-acceleration => product/caching/recipes}/joining-multiple-data-sources.mdx (100%) rename docs/pages/{guides/recipes/query-acceleration => product/caching/recipes}/non-additivity.mdx (100%) rename docs/pages/{guides/recipes/query-acceleration => product/caching/recipes}/refreshing-select-partitions.mdx (100%) rename docs/pages/{guides/recipes/query-acceleration => product/caching/recipes}/using-originalsql-and-rollups-effectively.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index 2d92072439200..abfc3f70d8b6e 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -21,7 +21,7 @@ These recipes will show you the best practices of using Cube. - [Using multiple data sources](/product/configuration/recipes/multiple-sources-same-schema) - [Using SSL connections to a data source](/product/configuration/recipes/using-ssl-connections-to-data-source) -- [Joining data from multiple data sources](/guides/recipes/query-acceleration/joining-multiple-data-sources) +- [Joining data from multiple data sources](/product/caching/recipes/joining-multiple-data-sources) ### Data modeling @@ -64,10 +64,10 @@ These recipes will show you the best practices of using Cube. ### Query acceleration - [Accelerating non-additive measures](/product/data-modeling/recipes/non-additivity) -- [Building pre-aggregations for a date range incrementally](/guides/recipes/query-acceleration/incrementally-building-pre-aggregations-for-a-date-range) -- [Disabling pre-aggregations](/guides/recipes/query-acceleration/disabling-pre-aggregations) -- [Using originalSql and rollup pre-aggregations effectively](/guides/recipes/query-acceleration/using-originalsql-and-rollups-effectively) -- [Refreshing select partitions of a pre-aggregation](/guides/recipes/query-acceleration/refreshing-select-partitions) +- [Building pre-aggregations for a date range incrementally](/product/caching/recipes/incrementally-building-pre-aggregations-for-a-date-range) +- [Disabling pre-aggregations](/product/caching/recipes/disabling-pre-aggregations) +- [Using originalSql and rollup pre-aggregations effectively](/product/caching/recipes/using-originalsql-and-rollups-effectively) +- [Refreshing select partitions of a pre-aggregation](/product/caching/recipes/refreshing-select-partitions) ### Data exploration diff --git a/docs/pages/guides/recipes/_meta.js b/docs/pages/guides/recipes/_meta.js index f75116e5bc225..7ed28d8b91cb8 100644 --- a/docs/pages/guides/recipes/_meta.js +++ b/docs/pages/guides/recipes/_meta.js @@ -1,5 +1,4 @@ module.exports = { - "query-acceleration": "Query acceleration", "data-exploration": "Data exploration", "upgrading-cube": "Upgrading Cube" } \ No newline at end of file diff --git a/docs/pages/product/caching/_meta.js b/docs/pages/product/caching/_meta.js index 2d7b0cafbb8a3..305163bab1e04 100644 --- a/docs/pages/product/caching/_meta.js +++ b/docs/pages/product/caching/_meta.js @@ -4,5 +4,6 @@ module.exports = { "matching-pre-aggregations": "Matching pre-aggregations", "refreshing-pre-aggregations": "Refreshing pre-aggregations", "lambda-pre-aggregations": "Lambda pre-aggregations", - "running-in-production": "Running in production" + "running-in-production": "Running in production", + "recipes": "Recipes" } \ No newline at end of file diff --git a/docs/pages/guides/recipes/query-acceleration/_meta.js b/docs/pages/product/caching/recipes/_meta.js similarity index 62% rename from docs/pages/guides/recipes/query-acceleration/_meta.js rename to docs/pages/product/caching/recipes/_meta.js index 7d6fb1ab93296..3f2997bd3b466 100644 --- a/docs/pages/guides/recipes/query-acceleration/_meta.js +++ b/docs/pages/product/caching/recipes/_meta.js @@ -1,8 +1,8 @@ module.exports = { - "non-additivity": "Accelerating non-additive measures", - "incrementally-building-pre-aggregations-for-a-date-range": "Building pre-aggregations for a date range incrementally", + "non-additivity": "Non-additive measures", + "incrementally-building-pre-aggregations-for-a-date-range": "Incremental pre-aggregations", "disabling-pre-aggregations": "Disabling pre-aggregations", "using-originalsql-and-rollups-effectively": "Using original_sql and rollup pre-aggregations effectively", "refreshing-select-partitions": "Refreshing select partitions", - "joining-multiple-data-sources": "Joining data from multiple data sources", -} \ No newline at end of file + "joining-multiple-data-sources": "Joining data from multiple data sources" +} diff --git a/docs/pages/guides/recipes/query-acceleration/disabling-pre-aggregations.mdx b/docs/pages/product/caching/recipes/disabling-pre-aggregations.mdx similarity index 100% rename from docs/pages/guides/recipes/query-acceleration/disabling-pre-aggregations.mdx rename to docs/pages/product/caching/recipes/disabling-pre-aggregations.mdx diff --git a/docs/pages/guides/recipes/query-acceleration/incrementally-building-pre-aggregations-for-a-date-range.mdx b/docs/pages/product/caching/recipes/incrementally-building-pre-aggregations-for-a-date-range.mdx similarity index 100% rename from docs/pages/guides/recipes/query-acceleration/incrementally-building-pre-aggregations-for-a-date-range.mdx rename to docs/pages/product/caching/recipes/incrementally-building-pre-aggregations-for-a-date-range.mdx diff --git a/docs/pages/guides/recipes/query-acceleration/joining-multiple-data-sources.mdx b/docs/pages/product/caching/recipes/joining-multiple-data-sources.mdx similarity index 100% rename from docs/pages/guides/recipes/query-acceleration/joining-multiple-data-sources.mdx rename to docs/pages/product/caching/recipes/joining-multiple-data-sources.mdx diff --git a/docs/pages/guides/recipes/query-acceleration/non-additivity.mdx b/docs/pages/product/caching/recipes/non-additivity.mdx similarity index 100% rename from docs/pages/guides/recipes/query-acceleration/non-additivity.mdx rename to docs/pages/product/caching/recipes/non-additivity.mdx diff --git a/docs/pages/guides/recipes/query-acceleration/refreshing-select-partitions.mdx b/docs/pages/product/caching/recipes/refreshing-select-partitions.mdx similarity index 100% rename from docs/pages/guides/recipes/query-acceleration/refreshing-select-partitions.mdx rename to docs/pages/product/caching/recipes/refreshing-select-partitions.mdx diff --git a/docs/pages/guides/recipes/query-acceleration/using-originalsql-and-rollups-effectively.mdx b/docs/pages/product/caching/recipes/using-originalsql-and-rollups-effectively.mdx similarity index 100% rename from docs/pages/guides/recipes/query-acceleration/using-originalsql-and-rollups-effectively.mdx rename to docs/pages/product/caching/recipes/using-originalsql-and-rollups-effectively.mdx diff --git a/docs/redirects.json b/docs/redirects.json index bb0dc25dfabf2..fe1dafa994cc2 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,34 @@ [ + { + "source": "/guides/recipes/query-acceleration/non-additivity", + "destination": "/product/caching/recipes/non-additivity", + "permanent": true + }, + { + "source": "/guides/recipes/query-acceleration/incrementally-building-pre-aggregations-for-a-date-range", + "destination": "/product/caching/recipes/incrementally-building-pre-aggregations-for-a-date-range", + "permanent": true + }, + { + "source": "/guides/recipes/query-acceleration/disabling-pre-aggregations", + "destination": "/product/caching/recipes/disabling-pre-aggregations", + "permanent": true + }, + { + "source": "/guides/recipes/query-acceleration/using-originalsql-and-rollups-effectively", + "destination": "/product/caching/recipes/using-originalsql-and-rollups-effectively", + "permanent": true + }, + { + "source": "/guides/recipes/query-acceleration/refreshing-select-partitions", + "destination": "/product/caching/recipes/refreshing-select-partitions", + "permanent": true + }, + { + "source": "/guides/recipes/query-acceleration/joining-multiple-data-sources", + "destination": "/product/caching/recipes/joining-multiple-data-sources", + "permanent": true + }, { "source": "/guides/recipes/queries/getting-unique-values-for-a-field", "destination": "/product/apis-integrations/recipes/getting-unique-values-for-a-field", From 3bb27f8202950ae2b99e41b56cccb9af1a75cf23 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 15:45:35 +0200 Subject: [PATCH 29/39] docs: Move Query History export recipe to workspace section --- docs/pages/guides/recipes.mdx | 2 +- docs/pages/guides/recipes/data-exploration/_meta.js | 3 +-- docs/pages/product/workspace/_meta.js | 1 + docs/pages/product/workspace/monitoring.mdx | 2 +- docs/pages/product/workspace/recipes/_meta.js | 3 +++ .../workspace/recipes}/query-history-export.mdx | 0 docs/redirects.json | 5 +++++ 7 files changed, 12 insertions(+), 4 deletions(-) create mode 100644 docs/pages/product/workspace/recipes/_meta.js rename docs/pages/{guides/recipes/data-exploration => product/workspace/recipes}/query-history-export.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index abfc3f70d8b6e..e81cf181d61e0 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -73,7 +73,7 @@ These recipes will show you the best practices of using Cube. - [Building UI with drilldowns](/guides/recipes/data-exploration/drilldowns) - [Retrieving numeric values on the front-end](/guides/recipes/data-exploration/cast-numerics) -- [Analyzing data from Query History export](/guides/recipes/data-exploration/query-history-export) +- [Analyzing data from Query History export](/product/workspace/recipes/query-history-export) ### Upgrading Cube diff --git a/docs/pages/guides/recipes/data-exploration/_meta.js b/docs/pages/guides/recipes/data-exploration/_meta.js index d29114c8c7a4c..b616aa1b7c9be 100644 --- a/docs/pages/guides/recipes/data-exploration/_meta.js +++ b/docs/pages/guides/recipes/data-exploration/_meta.js @@ -1,5 +1,4 @@ module.exports = { "drilldowns": "Building UI with drilldowns", - "cast-numerics": "Retrieving numeric values on the front-end", - "query-history-export": "Analyzing data from Query History export" + "cast-numerics": "Retrieving numeric values on the front-end" } \ No newline at end of file diff --git a/docs/pages/product/workspace/_meta.js b/docs/pages/product/workspace/_meta.js index 6252465843bf0..b15efafcc7fec 100644 --- a/docs/pages/product/workspace/_meta.js +++ b/docs/pages/product/workspace/_meta.js @@ -20,4 +20,5 @@ module.exports = { "preferences": "Preferences", "cli": "CLI", "semantic-catalog": "Semantic Catalog", + "recipes": "Recipes", } diff --git a/docs/pages/product/workspace/monitoring.mdx b/docs/pages/product/workspace/monitoring.mdx index 02095fdf0eade..82e22c4500d42 100644 --- a/docs/pages/product/workspace/monitoring.mdx +++ b/docs/pages/product/workspace/monitoring.mdx @@ -370,4 +370,4 @@ Query History export. [ref-apis]: /product/apis-integrations [ref-security-context]: /product/auth/context [ref-cache-type]: /product/caching#cache-type -[ref-query-history-export-recipe]: /guides/recipes/data-exploration/query-history-export \ No newline at end of file +[ref-query-history-export-recipe]: /product/workspace/recipes/query-history-export \ No newline at end of file diff --git a/docs/pages/product/workspace/recipes/_meta.js b/docs/pages/product/workspace/recipes/_meta.js new file mode 100644 index 0000000000000..346f17163f516 --- /dev/null +++ b/docs/pages/product/workspace/recipes/_meta.js @@ -0,0 +1,3 @@ +module.exports = { + "query-history-export": "Exporting Query History", +} \ No newline at end of file diff --git a/docs/pages/guides/recipes/data-exploration/query-history-export.mdx b/docs/pages/product/workspace/recipes/query-history-export.mdx similarity index 100% rename from docs/pages/guides/recipes/data-exploration/query-history-export.mdx rename to docs/pages/product/workspace/recipes/query-history-export.mdx diff --git a/docs/redirects.json b/docs/redirects.json index fe1dafa994cc2..924642f1116d7 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/recipes/data-exploration/query-history-export", + "destination": "/product/workspace/recipes/query-history-export", + "permanent": true + }, { "source": "/guides/recipes/query-acceleration/non-additivity", "destination": "/product/caching/recipes/non-additivity", From 7ff954e3890efce6ad21f6a5750950848fc4b8f1 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 15:49:29 +0200 Subject: [PATCH 30/39] docs: Move data exploration recipes to APIs & Integrations section --- docs/pages/guides/recipes.mdx | 4 ++-- docs/pages/guides/recipes/_meta.js | 1 - docs/pages/guides/recipes/data-exploration/_meta.js | 4 ---- docs/pages/product/apis-integrations/recipes/_meta.js | 4 +++- .../apis-integrations/recipes}/cast-numerics.mdx | 0 .../apis-integrations/recipes}/drilldowns.mdx | 0 .../pages/product/data-modeling/reference/measures.mdx | 2 +- docs/redirects.json | 10 ++++++++++ 8 files changed, 16 insertions(+), 9 deletions(-) delete mode 100644 docs/pages/guides/recipes/data-exploration/_meta.js rename docs/pages/{guides/recipes/data-exploration => product/apis-integrations/recipes}/cast-numerics.mdx (100%) rename docs/pages/{guides/recipes/data-exploration => product/apis-integrations/recipes}/drilldowns.mdx (100%) diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index e81cf181d61e0..a55915c9cbb66 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -71,8 +71,8 @@ These recipes will show you the best practices of using Cube. ### Data exploration -- [Building UI with drilldowns](/guides/recipes/data-exploration/drilldowns) -- [Retrieving numeric values on the front-end](/guides/recipes/data-exploration/cast-numerics) +- [Building UI with drilldowns](/product/apis-integrations/recipes/drilldowns) +- [Retrieving numeric values on the front-end](/product/apis-integrations/recipes/cast-numerics) - [Analyzing data from Query History export](/product/workspace/recipes/query-history-export) ### Upgrading Cube diff --git a/docs/pages/guides/recipes/_meta.js b/docs/pages/guides/recipes/_meta.js index 7ed28d8b91cb8..c2ea9636c6e86 100644 --- a/docs/pages/guides/recipes/_meta.js +++ b/docs/pages/guides/recipes/_meta.js @@ -1,4 +1,3 @@ module.exports = { - "data-exploration": "Data exploration", "upgrading-cube": "Upgrading Cube" } \ No newline at end of file diff --git a/docs/pages/guides/recipes/data-exploration/_meta.js b/docs/pages/guides/recipes/data-exploration/_meta.js deleted file mode 100644 index b616aa1b7c9be..0000000000000 --- a/docs/pages/guides/recipes/data-exploration/_meta.js +++ /dev/null @@ -1,4 +0,0 @@ -module.exports = { - "drilldowns": "Building UI with drilldowns", - "cast-numerics": "Retrieving numeric values on the front-end" -} \ No newline at end of file diff --git a/docs/pages/product/apis-integrations/recipes/_meta.js b/docs/pages/product/apis-integrations/recipes/_meta.js index 0d7e6491d1ccc..870bfd3b290fe 100644 --- a/docs/pages/product/apis-integrations/recipes/_meta.js +++ b/docs/pages/product/apis-integrations/recipes/_meta.js @@ -1,5 +1,7 @@ module.exports = { "getting-unique-values-for-a-field": "Unique values", + "cast-numerics": "Numeric values", "sorting": "Custom sorting", - "pagination": "Pagination" + "pagination": "Pagination", + "drilldowns": "Drilldowns" } diff --git a/docs/pages/guides/recipes/data-exploration/cast-numerics.mdx b/docs/pages/product/apis-integrations/recipes/cast-numerics.mdx similarity index 100% rename from docs/pages/guides/recipes/data-exploration/cast-numerics.mdx rename to docs/pages/product/apis-integrations/recipes/cast-numerics.mdx diff --git a/docs/pages/guides/recipes/data-exploration/drilldowns.mdx b/docs/pages/product/apis-integrations/recipes/drilldowns.mdx similarity index 100% rename from docs/pages/guides/recipes/data-exploration/drilldowns.mdx rename to docs/pages/product/apis-integrations/recipes/drilldowns.mdx diff --git a/docs/pages/product/data-modeling/reference/measures.mdx b/docs/pages/product/data-modeling/reference/measures.mdx index 717c0ea6fc2ad..e65b849aaa566 100644 --- a/docs/pages/product/data-modeling/reference/measures.mdx +++ b/docs/pages/product/data-modeling/reference/measures.mdx @@ -543,7 +543,7 @@ join will be created automatically. /product/data-modeling/reference/types-and-formats#measure-types [ref-schema-ref-types-formats-measures-formats]: /product/data-modeling/reference/types-and-formats#measure-formats -[ref-drilldowns]: /guides/recipes/data-exploration/drilldowns +[ref-drilldowns]: /product/apis-integrations/recipes/drilldowns [ref-naming]: /product/data-modeling/syntax#naming [ref-playground]: /product/workspace/playground [ref-apis]: /product/apis-integrations diff --git a/docs/redirects.json b/docs/redirects.json index 924642f1116d7..94ab91618acfb 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,14 @@ [ + { + "source": "/guides/recipes/data-exploration/drilldowns", + "destination": "/product/apis-integrations/recipes/drilldowns", + "permanent": true + }, + { + "source": "/guides/recipes/data-exploration/cast-numerics", + "destination": "/product/apis-integrations/recipes/cast-numerics", + "permanent": true + }, { "source": "/guides/recipes/data-exploration/query-history-export", "destination": "/product/workspace/recipes/query-history-export", From f5d176bb242ba7bd4253180129bb03b32c701783 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 15:54:06 +0200 Subject: [PATCH 31/39] docs: Remove migrating-from-express-to-docker page --- docs/pages/guides/recipes.mdx | 1 - docs/pages/guides/recipes/_meta.js | 3 - .../migrating-from-express-to-docker.mdx | 94 ------------------- docs/redirects.json | 5 + 4 files changed, 5 insertions(+), 98 deletions(-) delete mode 100644 docs/pages/guides/recipes/_meta.js delete mode 100644 docs/pages/guides/recipes/upgrading-cube/migrating-from-express-to-docker.mdx diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx index a55915c9cbb66..0bc0f27de3ee3 100644 --- a/docs/pages/guides/recipes.mdx +++ b/docs/pages/guides/recipes.mdx @@ -78,4 +78,3 @@ These recipes will show you the best practices of using Cube. ### Upgrading Cube - [Migrating from Redis to Cube Store](https://cube.dev/blog/how-you-win-by-using-cube-store-part-1#how-to-migrate-to-cube-store) -- [Migrating from Express to Docker](/guides/recipes/upgrading-cube/migrating-from-express-to-docker) diff --git a/docs/pages/guides/recipes/_meta.js b/docs/pages/guides/recipes/_meta.js deleted file mode 100644 index c2ea9636c6e86..0000000000000 --- a/docs/pages/guides/recipes/_meta.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - "upgrading-cube": "Upgrading Cube" -} \ No newline at end of file diff --git a/docs/pages/guides/recipes/upgrading-cube/migrating-from-express-to-docker.mdx b/docs/pages/guides/recipes/upgrading-cube/migrating-from-express-to-docker.mdx deleted file mode 100644 index a1987eea54863..0000000000000 --- a/docs/pages/guides/recipes/upgrading-cube/migrating-from-express-to-docker.mdx +++ /dev/null @@ -1,94 +0,0 @@ -# Migrating from Express to Docker - -Since [`v0.23`][link-v-023-release], Cube CLI uses the `docker` template instead -of `express` as a default for project creation, and it is the recommended route -for production. To migrate you should move all Cube dependencies in -`package.json` to `devDependencies` and leave dependencies that you use to -configure Cube in `dependencies`. - -For example, your existing `package.json` might look something like: - -```json -{ - "name": "cube-app", - "version": "0.0.1", - "private": true, - "scripts": { - "dev": "node index.js" - }, - "dependencies": { - "@cubejs-backend/postgres-driver": "^0.20.0", - "@cubejs-backend/server": "^0.20.0" - } -} -``` - -It should become: - -```json -{ - "name": "cube-app", - "version": "0.0.1", - "private": true, - "scripts": { - "dev": "./node_modules/.bin/cubejs-server server" - }, - "dependencies": {}, - "devDependencies": { - "@cubejs-backend/postgres-driver": "^0.23.6", - "@cubejs-backend/server": "^0.23.7" - } -} -``` - -You should also rename your `index.js` file to `cube.js` and replace the -`CubejsServer.create()` call with export of configuration using -`module.exports`. - -For an `index.js` like the following: - -```javascript -const CubeServer = require("@cubejs-backend/server"); - -const server = new CubeServer({ - logger: (msg, params) => { - console.log(`${msg}: ${JSON.stringify(params)}`); - }, -}); - -server - .listen() - .then(({ version, port }) => { - console.log(`🚀 Cube API server (${version}) is listening on ${port}`); - }) - .catch((e) => { - console.error("Fatal error during server start: "); - console.error(e.stack || e); - }); -``` - -It should be renamed to `cube.js` and its' contents should look like: - -```javascript -module.exports = { - logger: (msg, params) => { - console.log(`${msg}: ${JSON.stringify(params)}`); - }, -}; -``` - -Finally, add a `docker-compose.yml` file alongside the `cube.js` configuration -file: - -```yaml -services: - cube: - image: cubejs/cube:latest - ports: - - 4000:4000 - env_file: .env - volumes: - - .:/cube/conf -``` - -[link-v-023-release]: https://github.com/cube-js/cube/releases/tag/v0.23.0 diff --git a/docs/redirects.json b/docs/redirects.json index 94ab91618acfb..17e20349a267f 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/recipes/upgrading-cube/migrating-from-express-to-docker", + "destination": "https://cube.dev/blog/how-you-win-by-using-cube-store-part-1#how-to-migrate-to-cube-store", + "permanent": true + }, { "source": "/guides/recipes/data-exploration/drilldowns", "destination": "/product/apis-integrations/recipes/drilldowns", From 0c292c1f6398bbd9a060263bc7f1bc1fe10fcd2e Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 15:57:36 +0200 Subject: [PATCH 32/39] docs: Move dbt guide to data modeling recipes section --- docs/pages/guides/_meta.js | 1 - docs/pages/product/data-modeling/dynamic/jinja.mdx | 2 +- docs/pages/product/data-modeling/recipes/_meta.js | 3 ++- docs/pages/{guides => product/data-modeling/recipes}/dbt.mdx | 2 +- docs/redirects.json | 5 +++++ 5 files changed, 9 insertions(+), 4 deletions(-) rename docs/pages/{guides => product/data-modeling/recipes}/dbt.mdx (99%) diff --git a/docs/pages/guides/_meta.js b/docs/pages/guides/_meta.js index 5446fe5fc9e96..17078e8632a25 100644 --- a/docs/pages/guides/_meta.js +++ b/docs/pages/guides/_meta.js @@ -1,6 +1,5 @@ module.exports = { "recipes": "Recipes", - "dbt": "Using Cube with dbt", "designing-metrics": "Designing Metrics", "style-guide": "Style guide", "data-store-cost-saving-guide": "Cost saving guide" diff --git a/docs/pages/product/data-modeling/dynamic/jinja.mdx b/docs/pages/product/data-modeling/dynamic/jinja.mdx index d5707c38fedca..92338b4f817b6 100644 --- a/docs/pages/product/data-modeling/dynamic/jinja.mdx +++ b/docs/pages/product/data-modeling/dynamic/jinja.mdx @@ -299,4 +299,4 @@ image][ref-docker-image-extension]. [ref-cube-package]: /product/data-modeling/reference/cube-package [ref-cube-template-context]: /product/data-modeling/reference/cube-package#templatecontext-class [ref-cube-dbt-package]: /product/data-modeling/reference/cube_dbt -[ref-cube-with-dbt]: /guides/dbt \ No newline at end of file +[ref-cube-with-dbt]: /product/data-modeling/recipes/dbt \ No newline at end of file diff --git a/docs/pages/product/data-modeling/recipes/_meta.js b/docs/pages/product/data-modeling/recipes/_meta.js index f95f5049d17ae..7dcc81ad5f882 100644 --- a/docs/pages/product/data-modeling/recipes/_meta.js +++ b/docs/pages/product/data-modeling/recipes/_meta.js @@ -16,5 +16,6 @@ module.exports = { "event-analytics": "Event analytics", "funnels": "Funnel analysis", "cohort-retention": "Retention analysis", - "xirr": "Rate of return" + "xirr": "Rate of return", + "dbt": "Using Cube with dbt" } diff --git a/docs/pages/guides/dbt.mdx b/docs/pages/product/data-modeling/recipes/dbt.mdx similarity index 99% rename from docs/pages/guides/dbt.mdx rename to docs/pages/product/data-modeling/recipes/dbt.mdx index 4bae81bdb8f9f..c554c762571e7 100644 --- a/docs/pages/guides/dbt.mdx +++ b/docs/pages/product/data-modeling/recipes/dbt.mdx @@ -330,7 +330,7 @@ of the REST API. [dbt-manifest]: https://docs.getdbt.com/reference/artifacts/manifest-json [dbt-deprecation]: https://docs.getdbt.com/blog/deprecating-dbt-metrics -[self-integration]: /guides/dbt#data-model-integration +[self-integration]: /product/data-modeling/recipes/dbt#data-model-integration [ref-ref-cubes]: /product/data-modeling/reference/cube [ref-ref-dimensions]: /product/data-modeling/reference/dimensions diff --git a/docs/redirects.json b/docs/redirects.json index 17e20349a267f..0ca8d2eeb7678 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/dbt", + "destination": "/product/data-modeling/recipes/dbt", + "permanent": true + }, { "source": "/guides/recipes/upgrading-cube/migrating-from-express-to-docker", "destination": "https://cube.dev/blog/how-you-win-by-using-cube-store-part-1#how-to-migrate-to-cube-store", From 0ae3957276cfc832ad48f90a85573b80b09dbb50 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 16:01:01 +0200 Subject: [PATCH 33/39] docs: Move designing-metrics guide to data modeling recipes section --- docs/pages/guides/_meta.js | 1 - docs/pages/product/data-modeling/recipes/_meta.js | 1 + .../data-modeling/recipes}/designing-metrics.mdx | 0 docs/redirects.json | 5 +++++ 4 files changed, 6 insertions(+), 1 deletion(-) rename docs/pages/{guides => product/data-modeling/recipes}/designing-metrics.mdx (100%) diff --git a/docs/pages/guides/_meta.js b/docs/pages/guides/_meta.js index 17078e8632a25..4da5d0b1060c5 100644 --- a/docs/pages/guides/_meta.js +++ b/docs/pages/guides/_meta.js @@ -1,6 +1,5 @@ module.exports = { "recipes": "Recipes", - "designing-metrics": "Designing Metrics", "style-guide": "Style guide", "data-store-cost-saving-guide": "Cost saving guide" } \ No newline at end of file diff --git a/docs/pages/product/data-modeling/recipes/_meta.js b/docs/pages/product/data-modeling/recipes/_meta.js index 7dcc81ad5f882..37d8549fb7209 100644 --- a/docs/pages/product/data-modeling/recipes/_meta.js +++ b/docs/pages/product/data-modeling/recipes/_meta.js @@ -1,4 +1,5 @@ module.exports = { + "designing-metrics": "Designing metrics", "percentiles": "Averages and percentiles", "nested-aggregates": "Nested aggregates", "filtered-aggregates": "Filtered aggregates", diff --git a/docs/pages/guides/designing-metrics.mdx b/docs/pages/product/data-modeling/recipes/designing-metrics.mdx similarity index 100% rename from docs/pages/guides/designing-metrics.mdx rename to docs/pages/product/data-modeling/recipes/designing-metrics.mdx diff --git a/docs/redirects.json b/docs/redirects.json index 0ca8d2eeb7678..99805a670774e 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/designing-metrics", + "destination": "/product/data-modeling/recipes/designing-metrics", + "permanent": true + }, { "source": "/guides/dbt", "destination": "/product/data-modeling/recipes/dbt", From d9fba348d61868fa84413f557d2832c42c567706 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 16:03:35 +0200 Subject: [PATCH 34/39] docs: Move style guide to data modeling recipes section --- docs/pages/guides/_meta.js | 1 - docs/pages/product/data-modeling/recipes/_meta.js | 1 + .../data-modeling/recipes}/style-guide.mdx | 0 docs/pages/product/data-modeling/syntax.mdx | 2 +- docs/redirects.json | 5 +++++ 5 files changed, 7 insertions(+), 2 deletions(-) rename docs/pages/{guides => product/data-modeling/recipes}/style-guide.mdx (100%) diff --git a/docs/pages/guides/_meta.js b/docs/pages/guides/_meta.js index 4da5d0b1060c5..6fc46a73b521c 100644 --- a/docs/pages/guides/_meta.js +++ b/docs/pages/guides/_meta.js @@ -1,5 +1,4 @@ module.exports = { "recipes": "Recipes", - "style-guide": "Style guide", "data-store-cost-saving-guide": "Cost saving guide" } \ No newline at end of file diff --git a/docs/pages/product/data-modeling/recipes/_meta.js b/docs/pages/product/data-modeling/recipes/_meta.js index 37d8549fb7209..70dcbbc2fb661 100644 --- a/docs/pages/product/data-modeling/recipes/_meta.js +++ b/docs/pages/product/data-modeling/recipes/_meta.js @@ -1,4 +1,5 @@ module.exports = { + "style-guide": "Style guide", "designing-metrics": "Designing metrics", "percentiles": "Averages and percentiles", "nested-aggregates": "Nested aggregates", diff --git a/docs/pages/guides/style-guide.mdx b/docs/pages/product/data-modeling/recipes/style-guide.mdx similarity index 100% rename from docs/pages/guides/style-guide.mdx rename to docs/pages/product/data-modeling/recipes/style-guide.mdx diff --git a/docs/pages/product/data-modeling/syntax.mdx b/docs/pages/product/data-modeling/syntax.mdx index d50986a5aafb7..e720841da8fc6 100644 --- a/docs/pages/product/data-modeling/syntax.mdx +++ b/docs/pages/product/data-modeling/syntax.mdx @@ -786,7 +786,7 @@ string values in time dimensions. [ref-time-dimension]: /product/data-modeling/reference/types-and-formats#time-1 [ref-default-granularities]: /product/data-modeling/concepts#time-dimensions [ref-custom-granularities]: /product/data-modeling/reference/dimensions#granularities -[ref-style-guide]: /guides/style-guide +[ref-style-guide]: /product/data-modeling/recipes/style-guide [ref-polymorphism]: /product/data-modeling/concepts/polymorphic-cubes [ref-data-blending]: /product/data-modeling/concepts/data-blending [link-js-template-literals]: https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/Scripting/Strings#embedding_javascript diff --git a/docs/redirects.json b/docs/redirects.json index 99805a670774e..bfdfbab8f506c 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/style-guide", + "destination": "/product/data-modeling/recipes/style-guide", + "permanent": true + }, { "source": "/guides/designing-metrics", "destination": "/product/data-modeling/recipes/designing-metrics", From 9874e59f8669e5d81c53103214d2373dc24d26fc Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 16:08:49 +0200 Subject: [PATCH 35/39] docs: Move data store cost saving guide to configuration recipes section --- docs/pages/guides/_meta.js | 3 +-- docs/pages/product/configuration/_meta.js | 6 +++--- docs/pages/product/configuration/recipes/_meta.js | 3 ++- .../configuration/recipes}/data-store-cost-saving-guide.mdx | 0 docs/redirects.json | 5 +++++ 5 files changed, 11 insertions(+), 6 deletions(-) rename docs/pages/{guides => product/configuration/recipes}/data-store-cost-saving-guide.mdx (100%) diff --git a/docs/pages/guides/_meta.js b/docs/pages/guides/_meta.js index 6fc46a73b521c..6aac1783afbdc 100644 --- a/docs/pages/guides/_meta.js +++ b/docs/pages/guides/_meta.js @@ -1,4 +1,3 @@ module.exports = { - "recipes": "Recipes", - "data-store-cost-saving-guide": "Cost saving guide" + "recipes": "Recipes" } \ No newline at end of file diff --git a/docs/pages/product/configuration/_meta.js b/docs/pages/product/configuration/_meta.js index 039492676b656..8c6eea85e8312 100644 --- a/docs/pages/product/configuration/_meta.js +++ b/docs/pages/product/configuration/_meta.js @@ -4,6 +4,6 @@ module.exports = { "multiple-data-sources": "Multiple data sources", "concurrency": "Concurrency", "multitenancy": "Multitenancy", - "recipes": "Recipes", - "reference": "Reference" -} \ No newline at end of file + "reference": "Reference", + "recipes": "Recipes" +} diff --git a/docs/pages/product/configuration/recipes/_meta.js b/docs/pages/product/configuration/recipes/_meta.js index eff431ccb6bde..2e6f6b92ffce4 100644 --- a/docs/pages/product/configuration/recipes/_meta.js +++ b/docs/pages/product/configuration/recipes/_meta.js @@ -3,5 +3,6 @@ module.exports = { "using-different-schemas-for-tenants": "Different data models for tenants", "custom-data-model-per-tenant": "Custom data model for each tenant", "multiple-sources-same-schema": "Multiple data sources", - "using-ssl-connections-to-data-source": "SSL with data sources" + "using-ssl-connections-to-data-source": "SSL with data sources", + "data-store-cost-saving-guide": "Data store cost saving guide" } diff --git a/docs/pages/guides/data-store-cost-saving-guide.mdx b/docs/pages/product/configuration/recipes/data-store-cost-saving-guide.mdx similarity index 100% rename from docs/pages/guides/data-store-cost-saving-guide.mdx rename to docs/pages/product/configuration/recipes/data-store-cost-saving-guide.mdx diff --git a/docs/redirects.json b/docs/redirects.json index bfdfbab8f506c..9f588dcdafd36 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,9 @@ [ + { + "source": "/guides/data-store-cost-saving-guide", + "destination": "/product/configuration/recipes/data-store-cost-saving-guide", + "permanent": true + }, { "source": "/guides/style-guide", "destination": "/product/data-modeling/recipes/style-guide", From f3a5118272696a5e0267922a1f145d6419ca9967 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 16:17:24 +0200 Subject: [PATCH 36/39] docs: Remove guides section --- docs/pages/_meta.js | 5 -- docs/pages/guides/_meta.js | 3 - docs/pages/guides/recipes.mdx | 80 ------------------- .../reference/types-and-formats.mdx | 2 +- .../getting-started/core/learn-more.mdx | 11 +-- docs/redirects.json | 10 +++ 6 files changed, 12 insertions(+), 99 deletions(-) delete mode 100644 docs/pages/guides/_meta.js delete mode 100644 docs/pages/guides/recipes.mdx diff --git a/docs/pages/_meta.js b/docs/pages/_meta.js index 51268106d07ca..827521c00be77 100644 --- a/docs/pages/_meta.js +++ b/docs/pages/_meta.js @@ -31,9 +31,4 @@ module.exports = { type: "page", title: "Documentation", }, - - guides: { - type: "page", - title: "Guides", - }, }; diff --git a/docs/pages/guides/_meta.js b/docs/pages/guides/_meta.js deleted file mode 100644 index 6aac1783afbdc..0000000000000 --- a/docs/pages/guides/_meta.js +++ /dev/null @@ -1,3 +0,0 @@ -module.exports = { - "recipes": "Recipes" -} \ No newline at end of file diff --git a/docs/pages/guides/recipes.mdx b/docs/pages/guides/recipes.mdx deleted file mode 100644 index 0bc0f27de3ee3..0000000000000 --- a/docs/pages/guides/recipes.mdx +++ /dev/null @@ -1,80 +0,0 @@ -# Recipes - -These recipes will show you the best practices of using Cube. - -### Analytics - -- [Calculating daily, weekly, monthly active users](/product/data-modeling/recipes/active-users) -- [Calculating the internal rate of return (XIRR)](/product/data-modeling/recipes/xirr) -- [Implementing event analytics](/product/data-modeling/recipes/event-analytics) -- [Implementing funnel analysis](/product/data-modeling/recipes/funnels) -- [Implementing retention analysis & cohorts](/product/data-modeling/recipes/cohort-retention) - -### Authentication & Authorization - -- [Authenticate requests to the SQL API with LDAP](/product/auth/recipes/sql-api-ldap) -- [Authenticate requests to the REST API with Auth0](/product/auth/recipes/auth0-guide) -- [Authenticate requests to the REST API with AWS Cognito](/product/auth/recipes/aws-cognito) -- [Authenticate requests to the REST API with Firebase](https://medium.com/@ivo.hohlweck/use-firebase-auth-for-cubejs-a609f213ac67) - -### Data sources - -- [Using multiple data sources](/product/configuration/recipes/multiple-sources-same-schema) -- [Using SSL connections to a data source](/product/configuration/recipes/using-ssl-connections-to-data-source) -- [Joining data from multiple data sources](/product/caching/recipes/joining-multiple-data-sources) - -### Data modeling - -- [Calculating average and percentiles](/product/data-modeling/recipes/percentiles) -- [Calculating nested aggregates](/product/data-modeling/recipes/nested-aggregates) -- [Calculating filtered aggregates](/product/data-modeling/recipes/filtered-aggregates) -- [Calculating period-over-period changes](/product/data-modeling/recipes/period-over-period) -- [Implementing custom time dimension granularities](/product/data-modeling/recipes/custom-granularity) -- [Implementing custom calendars](/product/data-modeling/recipes/custom-calendar) -- [Implementing Entity-Attribute-Value model](/product/data-modeling/recipes/entity-attribute-value) -- [Implementing data snapshots](/product/data-modeling/recipes/snapshots) -- [Using different data models for tenants](/product/configuration/recipes/using-different-schemas-for-tenants) -- [Using dynamic measures](/product/data-modeling/recipes/using-dynamic-measures) -- [Using dynamic union tables](/product/data-modeling/recipes/dynamic-union-tables) -- [Working around string time dimensions](/product/data-modeling/recipes/string-time-dimensions) - -### Code reusability - -- [Implementing data model generation](/product/data-modeling/recipes/schema-generation) -- [Referencing environment variables](/product/configuration/recipes/environment-variables) - -### Access control - -- [Enforcing role-based access](/product/auth/recipes/role-based-access) -- [Enforcing column-based access](/product/auth/recipes/column-based-access) -- [Enforcing mandatory filters](/product/auth/recipes/enforcing-mandatory-filters) -- [Controlling access to cubes and views](/product/auth/recipes/controlling-access-to-cubes-and-views) - -### Multitenancy - -- [Providing a custom data model for each tenant](/product/configuration/recipes/custom-data-model-per-tenant) - -### Queries - -- [Getting unique values for a field](/product/apis-integrations/recipes/getting-unique-values-for-a-field) -- [Implementing custom sorting](/product/apis-integrations/recipes/sorting) -- [Implementing pagination](/product/apis-integrations/recipes/pagination) -- [Passing dynamic parameters in a query](/product/data-modeling/recipes/passing-dynamic-parameters-in-a-query) - -### Query acceleration - -- [Accelerating non-additive measures](/product/data-modeling/recipes/non-additivity) -- [Building pre-aggregations for a date range incrementally](/product/caching/recipes/incrementally-building-pre-aggregations-for-a-date-range) -- [Disabling pre-aggregations](/product/caching/recipes/disabling-pre-aggregations) -- [Using originalSql and rollup pre-aggregations effectively](/product/caching/recipes/using-originalsql-and-rollups-effectively) -- [Refreshing select partitions of a pre-aggregation](/product/caching/recipes/refreshing-select-partitions) - -### Data exploration - -- [Building UI with drilldowns](/product/apis-integrations/recipes/drilldowns) -- [Retrieving numeric values on the front-end](/product/apis-integrations/recipes/cast-numerics) -- [Analyzing data from Query History export](/product/workspace/recipes/query-history-export) - -### Upgrading Cube - -- [Migrating from Redis to Cube Store](https://cube.dev/blog/how-you-win-by-using-cube-store-part-1#how-to-migrate-to-cube-store) diff --git a/docs/pages/product/data-modeling/reference/types-and-formats.mdx b/docs/pages/product/data-modeling/reference/types-and-formats.mdx index 9cb110aeac899..a96aeaf3a0945 100644 --- a/docs/pages/product/data-modeling/reference/types-and-formats.mdx +++ b/docs/pages/product/data-modeling/reference/types-and-formats.mdx @@ -1004,4 +1004,4 @@ cubes: /product/data-modeling/reference/pre-aggregations#rollup [ref-schema-ref-calc-measures]: /product/data-modeling/reference/measures#calculated-measures -[ref-drilldowns]: /guides/recipes/data-exploration/drilldowns +[ref-drilldowns]: /product/apis-integrations/recipes/drilldowns diff --git a/docs/pages/product/getting-started/core/learn-more.mdx b/docs/pages/product/getting-started/core/learn-more.mdx index 2a6defca15e25..b69ad74f0ea5c 100644 --- a/docs/pages/product/getting-started/core/learn-more.mdx +++ b/docs/pages/product/getting-started/core/learn-more.mdx @@ -6,9 +6,7 @@ do for you. ## Data Modeling Learn more about [data modeling](/product/data-modeling/concepts) -and how to effectively define metrics in your data models. Advanced users: check -out [related recipes][ref-recipes-data-modeling] for tackling specific data -modeling problems. +and how to effectively define metrics in your data models. ## Querying @@ -21,7 +19,6 @@ Cube can be queried in a variety of ways. Explore how to use Learn more about the [two-level cache](/product/caching) and how [pre-aggregations help speed up queries](/product/caching/getting-started-pre-aggregations). -For a deeper dive, take a look at the [related recipes][ref-recipes-caching]. ## Access Control @@ -29,9 +26,3 @@ Cube uses [JSON Web Tokens](https://jwt.io/) to [authenticate requests for the HTTP APIs](/product/auth), and [`check_sql_auth`](/product/configuration/reference/config#check_sql_auth) to [authenticate requests for the SQL API](/product/apis-integrations/sql-api/security). -Cube also supports using JWT claims for securing access to data, check out these -[related recipes][ref-recipes-access-control]. - -[ref-recipes-data-modeling]: /guides/recipes#data-modeling -[ref-recipes-caching]: /guides/recipes#query-acceleration -[ref-recipes-access-control]: /guides/recipes#access-control \ No newline at end of file diff --git a/docs/redirects.json b/docs/redirects.json index 9f588dcdafd36..bd68fb60d74f3 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -1,4 +1,14 @@ [ + { + "source": "/guides", + "destination": "/product/introduction", + "permanent": true + }, + { + "source": "/guides/recipes", + "destination": "/product/introduction", + "permanent": true + }, { "source": "/guides/data-store-cost-saving-guide", "destination": "/product/configuration/recipes/data-store-cost-saving-guide", From 6d62ec36c9e4735cdfca4614d6fc7f58883c9d58 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 16:25:50 +0200 Subject: [PATCH 37/39] docs: Remove FAQs section and update distribution page --- docs/pages/product/_meta.js | 3 +- docs/pages/product/distribution.mdx | 6 +- docs/pages/product/faqs/general.mdx | 9 -- docs/pages/product/faqs/tips-and-tricks.mdx | 115 -------------------- docs/pages/product/faqs/troubleshooting.mdx | 55 ---------- 5 files changed, 4 insertions(+), 184 deletions(-) delete mode 100644 docs/pages/product/faqs/general.mdx delete mode 100644 docs/pages/product/faqs/tips-and-tricks.mdx delete mode 100644 docs/pages/product/faqs/troubleshooting.mdx diff --git a/docs/pages/product/_meta.js b/docs/pages/product/_meta.js index fd3fb9b793fbd..a401e8bbe2ec9 100644 --- a/docs/pages/product/_meta.js +++ b/docs/pages/product/_meta.js @@ -8,6 +8,5 @@ module.exports = { "apis-integrations": "APIs & integrations", "workspace": "Workspace", "deployment": "Deployment", - "distribution": "Distribution", - "faqs": "FAQs" + "distribution": "Distribution" } \ No newline at end of file diff --git a/docs/pages/product/distribution.mdx b/docs/pages/product/distribution.mdx index b5962c8b1ca99..d6251b7b24fbb 100644 --- a/docs/pages/product/distribution.mdx +++ b/docs/pages/product/distribution.mdx @@ -3,7 +3,7 @@ This page explains the difference between [Cube Core and Cube Cloud](#cube-core-and-cube-cloud), provides links to ready-to-use [artifacts](#artifacts), and explains the [versioning model](#versions) and the release cycle, including the [long-term -support](#long-term-support) (LTS). +support](#long-term-support) (LTS). ## Cube Core and Cube Cloud @@ -26,8 +26,8 @@ this documentation. -You are welcome to either [sign up for Cube Cloud][link-sign-up] or -[self-host][ref-deployment] a Cube Core deployment. +You are welcome to either [sign up for Cube Cloud][link-sign-up] and start using it +for free. You can also [self-host][ref-deployment] a Cube Core deployment. ## Artifacts diff --git a/docs/pages/product/faqs/general.mdx b/docs/pages/product/faqs/general.mdx deleted file mode 100644 index 09e8754add2c5..0000000000000 --- a/docs/pages/product/faqs/general.mdx +++ /dev/null @@ -1,9 +0,0 @@ -# General - -## Can I try Cube Cloud for free? - -Yes. Cube Cloud provides free -[development instances](/product/deployment/cloud/deployment-types#development-instance) -and a set of [paid product tiers](https://cube.dev/pricing). Each tier comes with -additional features, however, you're welcome to use development instances -indefinitely if they satisfy your needs. diff --git a/docs/pages/product/faqs/tips-and-tricks.mdx b/docs/pages/product/faqs/tips-and-tricks.mdx deleted file mode 100644 index ee9d106eeefb6..0000000000000 --- a/docs/pages/product/faqs/tips-and-tricks.mdx +++ /dev/null @@ -1,115 +0,0 @@ -# Tips and Tricks - -## How can I read from two different database schemas in my database when I'm only able to select one while connecting? - -Use your first schema when setting up your database connection in Cube Cloud. - -To use your second database schema, update the `CUBE_DB_NAME` environment -variable in **Settings > Configuration**. Change `CUBE_DB_NAME` to the name of -your second schema. - -This will trigger a new build. Once it's completed click on Data -Model in the left hand side navigation, and then in the upper-right -corner, click the three-dot menu and select Generate Data Model. You -should be able to see the name of the second schema from your database and -generate new models. - -## Can I track my customers' query usage? - -You can track query usage by user (or other dimension) by setting up [Log -Export][ref-cloud-o11y-logs] and parsing the necessary information. - -## Can I bypass Row-Level Security when using the SQL API? - -There may be times when you want the permissions through Cube's REST API to be -different from the permissions of the SQL API. - -For example, perhaps your customers use the REST API to access their own data. -You might use row-level security to prevent them from seeing any data associated -with other customers. - -For your internal analytics, you could provide access to your Data Analysts via -the SQL API. Since this is for your internal use, you will need access to all -the data rather than a single customer's. To give yourself higher permissions -through the SQL API, you could create an exception for the usual Row-Level -Security checks. - -In the following data models, we have created some example Row-Level Security -rules and an exception for querying data via the SQL API. - -### Defining basic RLS - -First, in the `cube.js` configuration file, we'll define the -[`queryRewrite()`][ref-conf-ref-queryrewrite] property to push a filter to each -query depending on the `tenantId` within the [Security Context][ref-sec-ctx]. - -```javascript -module.exports = { - queryRewrite: (query, { securityContext }) => { - if (!securityContext.tenantId) { - throw new Error("No id found in Security Context!"); - } else { - query.filters.push({ - member: "orders.tenant_id", - operator: "equals", - values: [securityContext.tenantId], - }); - - return query; - } - }, -}; -``` - -With this logic, each tenant can see their data and nothing else. - -### Bypassing RLS for queries created with the SQL API - -When we want to bypass the RLS we defined above, we need to create a sort of -"superuser" only accessible when authenticating via the SQL API. We need to -define two new things for this to work: - -1. Leverage the [`checkSqlAuth()`][ref-conf-ref-checksqlauth] configuration - option to inject a new property into the Security Context that defines a - superuser. In this case, we'll call it `isSuperUser`. - -2. Handle the new `isSuperUser` property in our previously defined - `queryRewrite` to bypass the filter push. - -```javascript -module.exports = { - // Create a "superuser" security context for the SQL API - checkSqlAuth: async (req, username) => { - if (username === process.env.CUBEJS_SQL_USER) { - return { - password: process.env.CUBEJS_SQL_PASSWORD, - securityContext: { isSuperUser: true }, - }; - } - }, - queryRewrite: (query, { securityContext }) => { - // Bypass row-level-security when connected from the SQL API - if (securityContext.isSuperUser) { - return query; - } else if (!securityContext.tenantId) { - throw new Error("No id found in Security Context!"); - } else { - query.filters.push({ - member: "orders.tenant_id", - operator: "equals", - values: [securityContext.tenantId], - }); - - return query; - } - }, -}; -``` - -With this exception in place we should be able to query all the customers' data -via the SQL API without being hindered by the row-level security checks. - -[ref-cloud-o11y-logs]: /cloud/workspace/logs -[ref-conf-ref-checksqlauth]: /product/configuration/reference/config#checksqlauth -[ref-conf-ref-queryrewrite]: /product/configuration/reference/config#queryrewrite -[ref-sec-ctx]: /product/auth/context diff --git a/docs/pages/product/faqs/troubleshooting.mdx b/docs/pages/product/faqs/troubleshooting.mdx deleted file mode 100644 index 88a17b9650178..0000000000000 --- a/docs/pages/product/faqs/troubleshooting.mdx +++ /dev/null @@ -1,55 +0,0 @@ -# Troubleshooting - -## Error: Unsupported db type: undefined - -This error message might mean that there's no `CUBEJS_DB_TYPE` defined. Please -visit **Settings > Configuration** and define this environment variable. - -If this doesn't help, please reach out to us in our support chat, we'd be happy -to help! - -## Error: Internal: deadline has elapsed OR Error: Query execution timeout after 10 min of waiting - -This error happens when a query remains queued for an excessive amount of time. -To troubleshoot, try increasing concurrency and/or timeout limits. The default -concurrency is 4 for most data warehouses and the default timeout is 10 minutes. -You can increase these values by adjusting the `CUBEJS_CONCURRENCY` or -`CUBEJS_DB_QUERY_TIMEOUT` environment variables in **Settings > Configuration**. If -your timeout limit is already high, we recommend either adding a pre-aggregation -or refactoring your SQL for better efficiency. - -If these methods don't help, please reach out to us in our support chat! - -## Error: Error during create table: CREATE TABLE with pre-aggregations - -This usually means Cube can't create a pre-aggregation table, which could be due -to a few different reasons. Further down the error log, you should see more -details which will help narrow down the scope of the issue. - -If you see `has a key that already exists in Name index` message, it means that your -multitenancy setup is missing the `pre_aggregations_schema` configuration setting in your `cube.py` file. - -For any other error types, feel free to reach out to us in our support chat. - -## Warning: There were queries in these timezones which are not added in the CUBEJS_SCHEDULED_REFRESH_TIMEZONES environment variable. - -If you want your query to use pre-aggregations, you must define all necessary -timezones using either the `CUBEJS_SCHEDULED_REFRESH_TIMEZONES` environment -variable, or in the `scheduled_refresh_time_zones` configuration option in the `cube.py` file. - -Without this configuration, Cube will default to `UTC`. The warning reflects -Cube's inability to find the query's timezone in the desired pre-aggregation. - -## Cube Cloud API is down after upgrading the version of Cube - -You may roll back to a previous Cube version at any time in **Settings > -Configuration**. - -We always recommend testing new Cube versions in your staging environment before -updating your production environment. We do not recommend setting your -production deployment to the latest version since it will automatically upgrade -to the latest version every time it's released on the next build or settings -update. - -[ref-caching-using-preaggs-export-bucket]: - /product/caching/using-pre-aggregations#pre-aggregation-build-strategies-export-bucket From f81b1ae1ccff11671f232341732a32d05a4ddc97 Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Mon, 19 May 2025 17:02:11 +0200 Subject: [PATCH 38/39] docs: Merge tenant data model recipes into single page --- docs/pages/product/configuration.mdx | 17 ++ .../product/configuration/multitenancy.mdx | 10 + .../product/configuration/recipes/_meta.js | 9 +- .../recipes/custom-data-model-per-tenant.mdx | 147 +++++++++++++++ .../recipes/data-store-cost-saving-guide.mdx | 4 +- .../recipes/multiple-sources-same-schema.mdx | 2 +- .../using-different-schemas-for-tenants.mdx | 174 ------------------ .../using-ssl-connections-to-data-source.mdx | 26 +-- .../deployment/production-checklist.mdx | 11 ++ docs/redirects.json | 4 +- 10 files changed, 204 insertions(+), 200 deletions(-) delete mode 100644 docs/pages/product/configuration/recipes/using-different-schemas-for-tenants.mdx diff --git a/docs/pages/product/configuration.mdx b/docs/pages/product/configuration.mdx index 6310607ab1cdc..f4545a0de9668 100644 --- a/docs/pages/product/configuration.mdx +++ b/docs/pages/product/configuration.mdx @@ -16,8 +16,19 @@ to; changing that list would require the deployment to restart. + + See the [environment variables reference][link-env-vars] for all supported options. + + + + +See [this recipe][ref-env-var-recipe] if you'd like to reference environment variables +in code. + + + ### Cube Core You can set environment variables in any way [supported by @@ -47,8 +58,13 @@ processed by Cube. Configuration options take precedence over environment variables. + + + See the [configuration options reference][link-config] for all supported options. + + ### `cube.py` and `cube.js` files Configuration options can be defined either using Python, in a `cube.py` file, @@ -200,3 +216,4 @@ mode does the following: [ref-python]: /product/data-modeling/dynamic/jinja#python [ref-javascript]: /product/data-modeling/dynamic/javascript [ref-cube-package-config]: /product/data-modeling/reference/cube-package#config-object +[ref-env-var-recipe]: /product/configuration/recipes/environment-variables \ No newline at end of file diff --git a/docs/pages/product/configuration/multitenancy.mdx b/docs/pages/product/configuration/multitenancy.mdx index 7bad242f647a7..5a014d6954eae 100644 --- a/docs/pages/product/configuration/multitenancy.mdx +++ b/docs/pages/product/configuration/multitenancy.mdx @@ -29,6 +29,14 @@ Token][ref-security]. There are several multitenancy setup scenarios that can be achieved by using combinations of these configuration options. + + +See the following recipes: +- If you'd like to provide a [custom data source][ref-per-tenant-data-source-recipe] for each tenant. +- If you'd like to provide a [custom data model][ref-per-tenant-data-model-recipe] for each tenant. + + + ### Multitenancy vs Multiple Data Sources In cases where your Cube data model is spread across multiple different data @@ -391,3 +399,5 @@ input. [ref-security]: /product/auth [ref-cube-datasource]: /product/data-modeling/reference/cube#data_source [ref-cube-security-ctx]: /product/data-modeling/reference/context-variables#compile_context +[ref-per-tenant-data-source-recipe]: /product/configuration/recipes/multiple-sources-same-schema +[ref-per-tenant-data-model-recipe]: /product/configuration/recipes/custom-data-model-per-tenant \ No newline at end of file diff --git a/docs/pages/product/configuration/recipes/_meta.js b/docs/pages/product/configuration/recipes/_meta.js index 2e6f6b92ffce4..5ba3953611505 100644 --- a/docs/pages/product/configuration/recipes/_meta.js +++ b/docs/pages/product/configuration/recipes/_meta.js @@ -1,8 +1,7 @@ module.exports = { "environment-variables": "Environment variables", - "using-different-schemas-for-tenants": "Different data models for tenants", - "custom-data-model-per-tenant": "Custom data model for each tenant", - "multiple-sources-same-schema": "Multiple data sources", - "using-ssl-connections-to-data-source": "SSL with data sources", - "data-store-cost-saving-guide": "Data store cost saving guide" + "using-ssl-connections-to-data-source": "SSL", + "data-store-cost-saving-guide": "Data source usage", + "multiple-sources-same-schema": "Per-tenant data sources", + "custom-data-model-per-tenant": "Per-tenant data models" } diff --git a/docs/pages/product/configuration/recipes/custom-data-model-per-tenant.mdx b/docs/pages/product/configuration/recipes/custom-data-model-per-tenant.mdx index c136f48f55bb2..337355c39ba36 100644 --- a/docs/pages/product/configuration/recipes/custom-data-model-per-tenant.mdx +++ b/docs/pages/product/configuration/recipes/custom-data-model-per-tenant.mdx @@ -348,6 +348,153 @@ module.exports = { +#### Example + +Here's an example of how to use this approach. Let's say we have a folder structure +as follows: + +```tree +model/ +├── avocado/ +│ └── cubes +│ └── Products.js +└── mango/ + └── cubes + └── Products.js +``` + +Let's configure Cube to use a specific data model path for each tenant using the +`repositoryFactory` function along with `contextToAppId` and `scheduledRefreshContexts`: + +```javascript +const { FileRepository } = require("@cubejs-backend/server-core"); + +module.exports = { + contextToAppId: ({ securityContext }) => + `CUBE_APP_${securityContext.tenant}`, + + repositoryFactory: ({ securityContext }) => + new FileRepository(`model/${securityContext.tenant}`), + + scheduledRefreshContexts: () => [ + { securityContext: { tenant: "avocado" } }, + { securityContext: { tenant: "mango" } }, + ], +}; +``` + +In this example, we'll filter products differently for each tenant. For the `avocado` +tenant, we'll show products with odd `id` values, and for the `mango` tenant, we'll show +products with even `id` values. + +This is the `products` cube for the `avocado` tenant: + + + +```yaml +cubes: + - name: products + sql: > + SELECT * FROM public.Products WHERE MOD (id, 2) = 1 +``` + +```javascript +cube(`products`, { + sql: `SELECT * + FROM public.Products + WHERE MOD (id, 2) = 1`, + + // ... +}); +``` + + + +This is the `products` cube for the `mango` tenant: + + + +```yaml +cubes: + - name: products + sql: > + SELECT * FROM public.Products WHERE MOD (id, 2) = 0 +``` + +```javascript +cube(`products`, { + sql: `SELECT * + FROM public.Products + WHERE MOD (id, 2) = 0`, + + // ... +}); +``` + + + +To fetch the products for different tenants, we send the same query but with different +JWTs: + +```json +{ + "sub": "1234567890", + "tenant": "Avocado", + "iat": 1000000000, + "exp": 5000000000 +} +``` + +```json5 +{ + sub: "1234567890", + tenant: "Mango", + iat: 1000000000, + exp: 5000000000, +} +``` + +This approach produces different results for each tenant as expected: + +```json5 +// Avocado products +[ + { + "products.id": 1, + "products.name": "Generic Fresh Keyboard", + }, + { + "products.id": 3, + "products.name": "Practical Wooden Keyboard", + }, + { + "products.id": 5, + "products.name": "Handcrafted Rubber Chicken", + }, +] +``` + +```json5 +// Mango products: +[ + { + "products.id": 2, + "products.name": "Gorgeous Cotton Sausages", + }, + { + "products.id": 4, + "products.name": "Handmade Wooden Soap", + }, + { + "products.id": 6, + "products.name": "Handcrafted Plastic Chair", + }, +] +``` + +You can find a working example of this approach on [GitHub](https://github.com/cube-js/cube/tree/master/examples/recipes/using-different-schemas-for-tenants). +Run it with the `docker-compose up` command to see the results in your console. + ### Loading externally Finally, you can maintain independent data models for each tenant that you would diff --git a/docs/pages/product/configuration/recipes/data-store-cost-saving-guide.mdx b/docs/pages/product/configuration/recipes/data-store-cost-saving-guide.mdx index 97640e0b0e653..3aa8c3a70610b 100644 --- a/docs/pages/product/configuration/recipes/data-store-cost-saving-guide.mdx +++ b/docs/pages/product/configuration/recipes/data-store-cost-saving-guide.mdx @@ -1,4 +1,4 @@ -# Data Store Cost Saving Guide +# Optimizing data source usage As a semantic layer, Cube supports various [data sources][ref-config-data-sources], including cloud-based data warehouses and @@ -8,7 +8,7 @@ and business intelligence. Depending on the upstream data source and the use case, Cube can be configured in a way that provides the best economic effect and maximizes cost savings. -## Reducing Data Store Usage +## Reducing data store usage Cloud-based data stores commonly use two pricing models: _on-demand_, when you get charged for the storage and compute resources used to process each query, or diff --git a/docs/pages/product/configuration/recipes/multiple-sources-same-schema.mdx b/docs/pages/product/configuration/recipes/multiple-sources-same-schema.mdx index 6f7253ceaa9c4..ac775f80fa946 100644 --- a/docs/pages/product/configuration/recipes/multiple-sources-same-schema.mdx +++ b/docs/pages/product/configuration/recipes/multiple-sources-same-schema.mdx @@ -1,4 +1,4 @@ -# Using multiple data sources +# Providing a custom data source for each tenant ## Use case diff --git a/docs/pages/product/configuration/recipes/using-different-schemas-for-tenants.mdx b/docs/pages/product/configuration/recipes/using-different-schemas-for-tenants.mdx deleted file mode 100644 index 00f8f955d893e..0000000000000 --- a/docs/pages/product/configuration/recipes/using-different-schemas-for-tenants.mdx +++ /dev/null @@ -1,174 +0,0 @@ -# Using different data models for tenants - -## Use case - -We want to provide different data models to different tenants. In the recipe -below, we'll learn how to switch between multiple data models based on the -tenant. - -## Configuration - -We have a folder structure as follows: - -```tree -model/ -├── avocado/ -│ └── cubes -│ └── Products.js -└── mango/ - └── cubes - └── Products.js -``` - -Let's configure Cube to use a specific data model path for each tenant. We'll -pass the tenant name as a part of [`securityContext`](/product/auth/context#top) -into the -[`repositoryFactory`](/product/configuration/reference/config#repositoryfactory) -function. - -We'll also need to override the -[`contextToAppId`](/product/configuration/reference/config#contexttoappid) function to -control how the data model compilation result is cached and provide the tenant -names via the -[`scheduledRefreshContexts`](/product/configuration/reference/config#scheduledrefreshcontexts) -function so a refresh worker can find all existing data models and build -pre-aggregations for them, if needed. - -Our `cube.js` file will look like this: - -```javascript -const { FileRepository } = require("@cubejs-backend/server-core"); - -module.exports = { - contextToAppId: ({ securityContext }) => - `CUBE_APP_${securityContext.tenant}`, - - repositoryFactory: ({ securityContext }) => - new FileRepository(`model/${securityContext.tenant}`), - - scheduledRefreshContexts: () => [ - { securityContext: { tenant: "avocado" } }, - { securityContext: { tenant: "mango" } }, - ], -}; -``` - -## Data modeling - -In this example, we'd like to get products with odd `id` values for the -`avocado` tenant and with even `id` values the `mango` tenant: - -This is the `products` cube for the `avocado` tenant: - - - -```yaml -cubes: - - name: products - sql: > - SELECT * FROM public.Products WHERE MOD (id, 2) = 1 -``` - -```javascript -cube(`products`, { - sql: `SELECT * - FROM public.Products - WHERE MOD (id, 2) = 1`, - - // ... -}); -``` - - - -This is the `products` cube for the `mango` tenant: - - - -```yaml -cubes: - - name: products - sql: > - SELECT * FROM public.Products WHERE MOD (id, 2) = 0 -``` - -```javascript -cube(`products`, { - sql: `SELECT * - FROM public.Products - WHERE MOD (id, 2) = 0`, - - // ... -}); -``` - - - -## Query - -To fetch the products, we will send two identical queries with different JWTs: - -```json -{ - "sub": "1234567890", - "tenant": "Avocado", - "iat": 1000000000, - "exp": 5000000000 -} -``` - -```json5 -{ - sub: "1234567890", - tenant: "Mango", - iat: 1000000000, - exp: 5000000000, -} -``` - -## Result - -We will receive different data for each tenant, as expected: - -```json5 -// Avocado products -[ - { - "products.id": 1, - "products.name": "Generic Fresh Keyboard", - }, - { - "products.id": 3, - "products.name": "Practical Wooden Keyboard", - }, - { - "products.id": 5, - "products.name": "Handcrafted Rubber Chicken", - }, -] -``` - -```json5 -// Mango products: -[ - { - "products.id": 2, - "products.name": "Gorgeous Cotton Sausages", - }, - { - "products.id": 4, - "products.name": "Handmade Wooden Soap", - }, - { - "products.id": 6, - "products.name": "Handcrafted Plastic Chair", - }, -] -``` - -## Source code - -Please feel free to check out the -[full source code](https://github.com/cube-js/cube/tree/master/examples/recipes/using-different-schemas-for-tenants) -or run it with the `docker-compose up` command. You'll see the result, including -queried data, in the console. diff --git a/docs/pages/product/configuration/recipes/using-ssl-connections-to-data-source.mdx b/docs/pages/product/configuration/recipes/using-ssl-connections-to-data-source.mdx index 587cf67a57a48..134d89b0d82e3 100644 --- a/docs/pages/product/configuration/recipes/using-ssl-connections-to-data-source.mdx +++ b/docs/pages/product/configuration/recipes/using-ssl-connections-to-data-source.mdx @@ -1,12 +1,18 @@ -# Using SSL Connections to a data source +# Using SSL connections to a data source + +## Use case Cube supports SSL-encrypted connections to various data sources. Please check the documentation for a particular [data source][ref-config-db] for specific instructions. -## Cube Core +## Configuration + +Generally, you can enable SSL via the `CUBEJS_DB_SSL` environment variable. -To enable it, set the `CUBEJS_DB_SSL` environment variable to `true`. Cube can +### Cube Core + +To enable SSL, set the `CUBEJS_DB_SSL` environment variable to `true`. Cube can also be configured to use custom connection settings. For example, to use a custom certificate authority and certificates, you could do the following: @@ -41,10 +47,7 @@ KmZIuh7+XpXzJ1MN0SBZXgXH -----END CERTIFICATE-----" ``` -For a complete list of SSL-related environment variables, consult the -[Environment Variables Reference][ref-env-var]. - -## Cube Cloud +### Cube Cloud When setting up a new deployment, select the SSL checkbox when entering database credentials: @@ -57,14 +60,6 @@ credentials: To use custom SSL certificates between Cube Cloud and your database server, go to the Configuration tab in the Settings screen: - - -Depending on how SSL is configured on your database server, you may need to -specify additional environment variables, please check the [Environment -Variables reference][ref-config-env-vars] for more information. - - - + +See [this recipe][ref-data-store-cost-saving-guide] to learn how to optimize +data source usage. + + + + [blog-migrate-to-cube-cloud]: https://cube.dev/blog/migrating-from-self-hosted-to-cube-cloud/ [link-caddy]: https://caddyserver.com/ @@ -155,3 +165,4 @@ performance numbers can differ as it has different Cube runtime. [ref-config-jwt]: /product/configuration/reference/config#jwt [ref-api-readyz]: /product/apis-integrations/rest-api/reference#readyz [ref-api-livez]: /product/apis-integrations/rest-api/reference#livez +[ref-data-store-cost-saving-guide]: /product/configuration/recipes/data-store-cost-saving-guide \ No newline at end of file diff --git a/docs/redirects.json b/docs/redirects.json index bd68fb60d74f3..1de1094290f65 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -201,7 +201,7 @@ }, { "source": "/guides/recipes/access-control/using-different-schemas-for-tenants", - "destination": "/product/configuration/recipes/using-different-schemas-for-tenants", + "destination": "/product/configuration/recipes/custom-data-model-per-tenant#loading-from-disk", "permanent": true }, { @@ -1581,7 +1581,7 @@ }, { "source": "/recipes/using-different-schemas-for-tenants", - "destination": "/product/configuration/recipes/using-different-schemas-for-tenants", + "destination": "/product/configuration/recipes/custom-data-model-per-tenant#loading-from-disk", "permanent": true }, { From 8b1ab743fc47a4d591b263f5b01760644fddf4fe Mon Sep 17 00:00:00 2001 From: Igor Lukanin Date: Tue, 20 May 2025 21:59:39 +0200 Subject: [PATCH 39/39] Fixes --- docs/pages/product/apis-integrations/_meta.js | 2 +- .../caching/matching-pre-aggregations.mdx | 11 ++- .../caching/recipes/non-additivity.mdx | 6 +- .../caching/using-pre-aggregations.mdx | 13 +++- docs/pages/product/data-modeling/concepts.mdx | 37 +++++++++- .../concepts/calculated-members.mdx | 12 +++- .../product/data-modeling/recipes/_meta.js | 3 +- .../recipes/designing-metrics.mdx | 42 +++--------- .../recipes/schema-generation.mdx | 67 ------------------- .../data-modeling/recipes/style-guide.mdx | 2 +- .../recipes/using-dynamic-measures.mdx | 26 +++---- docs/pages/product/data-modeling/syntax.mdx | 8 ++- docs/redirects.json | 6 +- 13 files changed, 98 insertions(+), 137 deletions(-) delete mode 100644 docs/pages/product/data-modeling/recipes/schema-generation.mdx diff --git a/docs/pages/product/apis-integrations/_meta.js b/docs/pages/product/apis-integrations/_meta.js index 4c85963283551..477ff1a68ab27 100644 --- a/docs/pages/product/apis-integrations/_meta.js +++ b/docs/pages/product/apis-integrations/_meta.js @@ -1,6 +1,5 @@ module.exports = { "queries": "Queries", - "recipes": "Recipes", "dax-api": "DAX API", "mdx-api": "MDX API", "microsoft-excel": "Cube Cloud for Excel", @@ -11,4 +10,5 @@ module.exports = { "graphql-api": "GraphQL API", "javascript-sdk": "JavaScript SDK", "orchestration-api": "Orchestration API", + "recipes": "Recipes" }; diff --git a/docs/pages/product/caching/matching-pre-aggregations.mdx b/docs/pages/product/caching/matching-pre-aggregations.mdx index a6bb8a60b4f6b..7f1e132bb4845 100644 --- a/docs/pages/product/caching/matching-pre-aggregations.mdx +++ b/docs/pages/product/caching/matching-pre-aggregations.mdx @@ -112,8 +112,13 @@ pitfalls](#common-pitfalls) to understand why that part was an issue. ### Common pitfalls - Most commonly, a query would not match a pre-aggregation because they contain -[non-additive measures][ref-measure-additivity]. See [this -recipe][ref-non-additive-recipe] for workarounds. +[non-additive measures][ref-measure-additivity]. + + + + See [this recipe][ref-non-additive-recipe] for workarounds. + + - If a query uses any time zone other than `UTC`, please check the section on [matching time dimensions](#matching-time-dimensions) and the @@ -130,7 +135,7 @@ configuration option. [ref-leaf-measures]: /product/data-modeling/concepts#leaf-measures [ref-calculated-measures]: /product/data-modeling/overview#4-using-calculated-measures [ref-non-strict-date-range-match]: /product/data-modeling/reference/pre-aggregations#allow_non_strict_date_range_match -[ref-non-additive-recipe]: /product/data-modeling/recipes/non-additivity +[ref-non-additive-recipe]: /product/caching/recipes/non-additivity [ref-conf-scheduled-refresh-time-zones]: /product/configuration/reference/config#scheduled_refresh_time_zones [ref-ungrouped-queries]: /product/apis-integrations/queries#ungrouped-query [ref-primary-key]: /product/data-modeling/reference/dimensions#primary_key diff --git a/docs/pages/product/caching/recipes/non-additivity.mdx b/docs/pages/product/caching/recipes/non-additivity.mdx index 2b302a6a6e4b8..088618704e55c 100644 --- a/docs/pages/product/caching/recipes/non-additivity.mdx +++ b/docs/pages/product/caching/recipes/non-additivity.mdx @@ -21,8 +21,7 @@ age: - count of unique age values (`distinct_ages`) - average age (`avg_age`) -- 90th [percentile](/product/data-modeling/recipes/percentiles) of age - (`p90_age`) +- 90th [percentile][ref-percentile-recipe] of age (`p90_age`) @@ -244,3 +243,6 @@ Please feel free to check out the [full source code](https://github.com/cube-js/cube/tree/master/examples/recipes/non-additivity) or run it with the `docker-compose up` command. You'll see the result, including queried data, in the console. + + +[ref-percentile-recipe]: /product/data-modeling/recipes/percentiles \ No newline at end of file diff --git a/docs/pages/product/caching/using-pre-aggregations.mdx b/docs/pages/product/caching/using-pre-aggregations.mdx index 9559980b5d919..70cbbf974e3db 100644 --- a/docs/pages/product/caching/using-pre-aggregations.mdx +++ b/docs/pages/product/caching/using-pre-aggregations.mdx @@ -182,13 +182,21 @@ new results, then the pre-aggregation will be refreshed. [Partitioning][wiki-partitioning] is an extremely effective optimization for accelerating pre-aggregations build and refresh time. It effectively "shards" -the data between multiple tables, splitting them by a defined attribute. Cube -can be configured to incrementally refresh only the last set of partitions +the data between multiple tables, splitting them by a defined attribute. + +Cube can be configured to incrementally refresh only the last set of partitions through the `updateWindow` property. This leads to faster refresh times due to unnecessary data not being reloaded, and even reduced cost for some databases like [BigQuery](/product/configuration/data-sources/google-bigquery) or [AWS Athena](/product/configuration/data-sources/aws-athena). + + +See [this recipe][ref-incremental-refresh-recipe] for an example of optimized +incremental refresh. + + + Any `rollup` pre-aggregation can be partitioned by time using the `partition_granularity` property in [a pre-aggregation definition][ref-schema-ref-preaggs]. In the example below, the @@ -1065,3 +1073,4 @@ or a decimal type, depending on the nature of your data. [ref-cube-store]: /product/caching/running-in-production#architecture [ref-cube-store-storage]: /product/caching/running-in-production#storage [ref-member-sql]: /product/data-modeling/reference/dimensions#sql +[ref-incremental-refresh-recipe]: /product/caching/recipes/incrementally-building-pre-aggregations-for-a-date-range \ No newline at end of file diff --git a/docs/pages/product/data-modeling/concepts.mdx b/docs/pages/product/data-modeling/concepts.mdx index 4cb174830ba3a..52d8d4fa0b723 100644 --- a/docs/pages/product/data-modeling/concepts.mdx +++ b/docs/pages/product/data-modeling/concepts.mdx @@ -27,6 +27,16 @@ We'll use a sample e-commerce database with two tables, `orders` and | 4 | 71 | 4 | 8 | 223 | 2019-12-23 00:00:00.000000 | | 5 | 64 | 5 | 5 | 75 | 2019-04-20 00:00:00.000000 | +We'll be following the [entity-first](#entity-first-approach) approach to +designing the data model. + + + +See [this recipe][ref-entities-vs-metrics-recipe] to learn about entity-first and +metrics-first approaches. + + + ## Cubes _Cubes_ represent datasets in Cube and are conceptually similar to [views in @@ -50,6 +60,13 @@ cubes: + + +If you're using dbt, see [this recipe][ref-cube-with-dbt] to streamline defining cubes +on top of dbt models. + + + You can also use the [`sql` property][ref-schema-ref-sql] to accommodate more complex SQL queries: @@ -338,8 +355,9 @@ you need to use weeks starting on Sunday, fiscal years, etc. -See [this recipe][ref-custom-granularity-recipe] for more custom granularity -examples. +See the following recipes: +- For a [custom granularity][ref-custom-granularity-recipe] example. +- For a [custom calendar][ref-custom-calendar-recipe] example. @@ -502,6 +520,14 @@ See the [measure type reference][ref-ref-measure-types] for details. + + +See the following recipes: +- To learn how to define [average and percentile measures][ref-avg-and-percentile-recipe], +- To learn how to calculate [period-over-period changes][ref-period-over-period-recipe]. + + + ### Measure additivity Additivity is a property of measures that detemines whether measure values, @@ -810,4 +836,9 @@ See the reference documentaton for the full list of pre-aggregation [ref-mls]: /product/auth/member-level-security [ref-ref-hierarchies]: /product/data-modeling/reference/hierarchies [ref-ref-folders]: /product/data-modeling/reference/view#folders -[ref-multi-stage-calculations]: /product/data-modeling/concepts/multi-stage-calculations \ No newline at end of file +[ref-multi-stage-calculations]: /product/data-modeling/concepts/multi-stage-calculations +[ref-entities-vs-metrics-recipe]: /product/data-modeling/recipes/designing-metrics +[ref-avg-and-percentile-recipe]: /product/data-modeling/recipes/percentiles +[ref-period-over-period-recipe]: /product/data-modeling/recipes/period-over-period +[ref-custom-calendar-recipe]: /product/data-modeling/recipes/custom-calendar +[ref-cube-with-dbt]: /product/data-modeling/recipes/dbt \ No newline at end of file diff --git a/docs/pages/product/data-modeling/concepts/calculated-members.mdx b/docs/pages/product/data-modeling/concepts/calculated-members.mdx index ed509c1d02c78..b4a41d30f2f0c 100644 --- a/docs/pages/product/data-modeling/concepts/calculated-members.mdx +++ b/docs/pages/product/data-modeling/concepts/calculated-members.mdx @@ -388,7 +388,16 @@ GROUP BY 1, 2, 3 **Subquery dimensions reference measures from other cubes.** Subquery dimensions provide a way to define measures that aggregate values of other measures. They can be -useful to calculate [nested aggregates][ref-nested-aggregates-recipe]. +useful to calculate nested and filtered aggregates. + + + +See the following recipes: + +- To learn how to calculate [nested aggregates][ref-nested-aggregates-recipe]. +- To learn how to calculate [filtered aggregates][ref-filtered-aggregates-recipe]. + + If you have `first_cube` that is [joined][ref-joins] to `second_cube`, you can use a subquery dimension to bring `second_cube.measure` to `first_cube` as `dimension` (or @@ -561,6 +570,7 @@ GROUP BY 1, 2 [ref-schema-ref-joins]: /product/data-modeling/reference/joins [ref-decomposition-recipe]: /product/data-modeling/recipes/non-additivity#decomposing-into-a-formula-with-additive-measures [ref-nested-aggregates-recipe]: /product/data-modeling/recipes/nested-aggregates +[ref-filtered-aggregates-recipe]: /product/data-modeling/recipes/filtered-aggregates [ref-non-additive]: /product/data-modeling/concepts#measure-additivity [link-postgres-division]: https://www.postgresql.org/docs/current/functions-math.html#FUNCTIONS-MATH [wiki-correlated-subquery]: https://en.wikipedia.org/wiki/Correlated_subquery diff --git a/docs/pages/product/data-modeling/recipes/_meta.js b/docs/pages/product/data-modeling/recipes/_meta.js index 70dcbbc2fb661..b541d8d869c18 100644 --- a/docs/pages/product/data-modeling/recipes/_meta.js +++ b/docs/pages/product/data-modeling/recipes/_meta.js @@ -6,8 +6,7 @@ module.exports = { "filtered-aggregates": "Filtered aggregates", "period-over-period": "Period-over-period changes", "passing-dynamic-parameters-in-a-query": "Dynamic parameters", - "schema-generation": "Data model generation", - "using-dynamic-measures": "Dynamic measures", + "using-dynamic-measures": "Dynamic data modeling", "dynamic-union-tables": "Dynamic union tables", "string-time-dimensions": "String time dimensions", "custom-granularity": "Custom time dimension granularities", diff --git a/docs/pages/product/data-modeling/recipes/designing-metrics.mdx b/docs/pages/product/data-modeling/recipes/designing-metrics.mdx index f381ccdd1008a..4fd90e5a1aea5 100644 --- a/docs/pages/product/data-modeling/recipes/designing-metrics.mdx +++ b/docs/pages/product/data-modeling/recipes/designing-metrics.mdx @@ -1,10 +1,11 @@ -# Designing Metrics +# Designing metrics -Cube is a dataset-centric semantic layer, where all primary objects, cubes and views, are table-like datasets. -When designing how your semantic layer will be exposed and consumed by end users, you can follow either entity-first approach or metrics-first. -In both cases, views will be used to build the semantic layer interface. +Cube is a dataset-centric semantic layer, where all primary objects (cubes and views) +are table-like datasets. When designing how your semantic layer will be exposed and +consumed by end users, you can follow either an [entity-first](#entity-first-approach) +or a [metrics-first](#metrics-first-approach) approach. -## Entity-first +## Entity-first approach In entity-first approach, views are built around entities in your data model. Views are built as denormalzied tables, bringing measures and dimensions from different cubes needed to fully decscribe the entity. @@ -83,7 +84,8 @@ views: Views are exposed as tables in Cube SQL API, dimensions can be queried as is -## Metrics-first +## Metrics-first approach + In metrics-first approach, views are built around measures, or metrics, in your data model. Views are built as denormalzied tables, containing one measure and all the relevant dimensions from different cubes. These include all the dimensions you would group or filter by, and up to one time dimension. Views are usually named after that single measure. @@ -141,30 +143,4 @@ views: - status - shipped_at -``` - -## Integrations with BI Tools -Some metrics-based BI tools will specify requirements for the views or be able to accept additional metadata to enrich the experience. -Below is an example of using the `meta` property to do this. - -```yaml -views: - - name: order_count_by_order_date - description: For finance team to track orders on accrual/earned basis. - meta: - type: metric - owner: alice@acme.com - - cubes: - - join_path: orders - includes: - # MEASURE - - order_count - - # TIME - - created_at - - # DIMENSIONS - - status - - city -``` +``` \ No newline at end of file diff --git a/docs/pages/product/data-modeling/recipes/schema-generation.mdx b/docs/pages/product/data-modeling/recipes/schema-generation.mdx deleted file mode 100644 index 7dcebfa05604b..0000000000000 --- a/docs/pages/product/data-modeling/recipes/schema-generation.mdx +++ /dev/null @@ -1,67 +0,0 @@ -# Implementing data model generation - - - -This functionality only works with data models written in JavaScript, not YAML. -For more information, check out the [Data Modeling Syntax][ref-modeling-syntax] -page. - - - -Cube supports two ways to define data model files: with YAML or JavaScript -syntax. If you opt for JavaScript syntax, you can use the full power of this -programming language to configure your data model. In this guide we generate -several measure definitions based on an array of strings. - -One example, based on a real world scenario, is when you have a single `events` -table containing an `event_type` and `user_id` column. Based on this table you -want to create a separate user count measure for each event. - -It can be done as simple as - -```javascript -const events = ["app_engagement", "login", "purchase"]; - -cube(`events`, { - sql_table: `events`, - - measures: Object.assign( - { - count: { - type: `count`, - }, - }, - events - .map((e) => ({ - [`${e}_user_count`]: { - type: `count_distinct`, - sql: `user_id`, - filters: [ - { - sql: `${CUBE}.event_type = '${e}'`, - }, - ], - }, - })) - .reduce((a, b) => Object.assign(a, b)) - ), -}); -``` - -In this case we use standard JavaScript functions -[`Object.assign`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign), -[`Array.map`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) -and -[`Array.reduce`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce) -to add user count measure definitions based on `events` array. This approach -allows you to maintain list of events in very concise manner without boilerplate -code. This configuration can be reused using [export / import -feature][ref-export-import]. - -Please refer to the -[`asyncModule()`](/product/data-modeling/dynamic/schema-execution-environment#async-module) -documentation to learn how to use databases and other data sources for data -model generation. - -[ref-modeling-syntax]: /product/data-modeling/syntax -[ref-export-import]: /product/data-modeling/dynamic/code-reusability-export-and-import \ No newline at end of file diff --git a/docs/pages/product/data-modeling/recipes/style-guide.mdx b/docs/pages/product/data-modeling/recipes/style-guide.mdx index a4170e0395017..b0c3d56a92813 100644 --- a/docs/pages/product/data-modeling/recipes/style-guide.mdx +++ b/docs/pages/product/data-modeling/recipes/style-guide.mdx @@ -1,4 +1,4 @@ -# Cube Style Guide +# Cube style guide This style guide includes best practices on data modeling in Cube. diff --git a/docs/pages/product/data-modeling/recipes/using-dynamic-measures.mdx b/docs/pages/product/data-modeling/recipes/using-dynamic-measures.mdx index 8a421dca6cef8..f615a6407464c 100644 --- a/docs/pages/product/data-modeling/recipes/using-dynamic-measures.mdx +++ b/docs/pages/product/data-modeling/recipes/using-dynamic-measures.mdx @@ -1,23 +1,12 @@ -# Using dynamic measures - - - -This functionality only works with data models written in JavaScript, not YAML. -For more information, check out the [Data Modeling Syntax][ref-modeling-syntax] -page. - - +# Generating the data model dynamically ## Use case -We want to understand the distribution of orders by their statuses. Let's -imagine that new order statuses can be added in the future, or we get a list of -statuses from an external API. To calculate the orders percentage distribution, -we need to create several -[measures](/product/data-modeling/concepts#measures) that refer to -each other. But we don't want to manually change the data model for each new -status. To solve this, we will create a [data model -dynamically](/product/data-modeling/dynamic). +Let's assume that we want to understand the distribution of orders by their statuses. +Let's imagine that new order statuses can be added in the future, or we get a list of +statuses from an external API. To calculate the orders percentage distribution, we need +to create several [measures][ref-measures] that refer to each other. But we don't want +to manually change the data model for each new status. ## Data modeling @@ -97,4 +86,5 @@ Please feel free to check out the or run it with the `docker-compose up` command. You'll see the result, including queried data, in the console. -[ref-modeling-syntax]: /product/data-modeling/syntax + +[ref-measures]: /product/data-modeling/concepts#measures \ No newline at end of file diff --git a/docs/pages/product/data-modeling/syntax.mdx b/docs/pages/product/data-modeling/syntax.mdx index e720841da8fc6..78c1192d5a3c9 100644 --- a/docs/pages/product/data-modeling/syntax.mdx +++ b/docs/pages/product/data-modeling/syntax.mdx @@ -62,10 +62,16 @@ models][ref-dynamic-data-models] programmatically. YAML data models use [Jinja and Python][ref-dynamic-data-models-jinja] whereas JavaScript data models use [JavaScript][ref-dynamic-data-models-js]. -It is [recommended][ref-style-guide] to default to YAML syntax because of its +It is recommended to default to YAML syntax because of its simplicity and readability. However, JavaScript might provide more flexibility for dynamic data modeling. + + +See [Cube style guide][ref-style-guide] for more recommendations on syntax and structure. + + + ## Naming Common rules apply to names of entities within the data model. All names must: diff --git a/docs/redirects.json b/docs/redirects.json index 1de1094290f65..40795a32e0856 100644 --- a/docs/redirects.json +++ b/docs/redirects.json @@ -121,7 +121,7 @@ }, { "source": "/guides/recipes/code-reusability/schema-generation", - "destination": "/product/data-modeling/recipes/schema-generation", + "destination": "/product/data-modeling/recipes/using-dynamic-measures", "permanent": true }, { @@ -1531,12 +1531,12 @@ }, { "source": "/recipes/schema-generation", - "destination": "/guides/recipes/code-reusability/schema-generation", + "destination": "/guides/recipes/code-reusability/using-dynamic-measures", "permanent": true }, { "source": "/schema-generation", - "destination": "/guides/recipes/code-reusability/schema-generation", + "destination": "/guides/recipes/code-reusability/using-dynamic-measures", "permanent": true }, {